1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 6 # build-system 7 setuptools, 8 9 # dependencies 10 greenlet, 11 12 # optionals 13 aiomysql, 14 aiosqlite, 15 asyncmy, 16 asyncpg, 17 cx-oracle, 18 mariadb, 19 mypy, 20 mysql-connector, 21 mysqlclient, 22 pg8000, 23 psycopg2, 24 psycopg2cffi, 25 # TODO: pymssql 26 pymysql, 27 pyodbc, 28 # TODO: sqlcipher3 29 typing-extensions, 30 31 # tests 32 mock, 33 pytest-xdist, 34 pytestCheckHook, 35}: 36 37buildPythonPackage rec { 38 pname = "sqlalchemy"; 39 version = "1.4.52"; 40 pyproject = true; 41 42 src = fetchFromGitHub { 43 owner = "sqlalchemy"; 44 repo = "sqlalchemy"; 45 rev = "rel_${lib.replaceStrings [ "." ] [ "_" ] version}"; 46 hash = "sha256-3JiPDOI6KDQwtBtISvHi3d+Rdm0pz1d9cnZu3+f4jYE="; 47 }; 48 49 postPatch = '' 50 sed -i '/tag_build = dev/d' setup.cfg 51 ''; 52 53 nativeBuildInputs = [ setuptools ]; 54 55 propagatedBuildInputs = [ greenlet ]; 56 57 passthru.optional-dependencies = lib.fix (self: { 58 asyncio = [ greenlet ]; 59 mypy = [ mypy ]; 60 mssql = [ pyodbc ]; 61 mssql_pymysql = [ 62 # TODO: pymssql 63 ]; 64 mssql_pyodbc = [ pyodbc ]; 65 mysql = [ mysqlclient ]; 66 mysql_connector = [ mysql-connector ]; 67 mariadb_connector = [ mariadb ]; 68 oracle = [ cx-oracle ]; 69 postgresql = [ psycopg2 ]; 70 postgresql_pg8000 = [ pg8000 ]; 71 postgresql_asyncpg = [ asyncpg ] ++ self.asyncio; 72 postgresql_psycopg2binary = [ psycopg2 ]; 73 postgresql_psycopg2cffi = [ psycopg2cffi ]; 74 pymysql = [ pymysql ]; 75 aiomysql = [ aiomysql ] ++ self.asyncio; 76 asyncmy = [ asyncmy ] ++ self.asyncio; 77 aiosqlite = [ 78 aiosqlite 79 typing-extensions 80 ] ++ self.asyncio; 81 sqlcipher = [ 82 # TODO: sqlcipher3 83 ]; 84 }); 85 86 nativeCheckInputs = [ 87 pytest-xdist 88 pytestCheckHook 89 mock 90 ]; 91 92 disabledTestPaths = [ 93 # typing correctness, not interesting 94 "test/ext/mypy" 95 # slow and high memory usage, not interesting 96 "test/aaa_profiling" 97 ]; 98 99 pythonImportsCheck = [ "sqlalchemy" ]; 100 101 meta = with lib; { 102 changelog = "https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_${ 103 builtins.replaceStrings [ "." ] [ "_" ] version 104 }"; 105 description = "The Database Toolkit for Python"; 106 homepage = "https://github.com/sqlalchemy/sqlalchemy"; 107 license = licenses.mit; 108 }; 109}