Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python-modules / snowflake-connector-python / default.nix
blobfc3974db138bdce1da127be0ebd3449a1058413c
1 { lib
2 , asn1crypto
3 , buildPythonPackage
4 , pythonRelaxDepsHook
5 , certifi
6 , cffi
7 , charset-normalizer
8 , fetchPypi
9 , filelock
10 , idna
11 , keyring
12 , oscrypto
13 , packaging
14 , platformdirs
15 , pycryptodomex
16 , pyjwt
17 , pyopenssl
18 , pythonOlder
19 , pytz
20 , requests
21 , setuptools
22 , sortedcontainers
23 , tomlkit
24 , typing-extensions
25 , wheel
28 buildPythonPackage rec {
29   pname = "snowflake-connector-python";
30   version = "3.3.1";
31   format = "pyproject";
33   disabled = pythonOlder "3.7";
35   src = fetchPypi {
36     inherit pname version;
37     hash = "sha256-u2ZyK9ZKvNdqarBqZCPWdLy3Kfm6ORBWl375Lzg6rbg=";
38   };
40   # snowflake-connector-python requires arrow 10.0.1, which we don't have in
41   # nixpkgs, so we cannot build the C extensions that use it. thus, patch out
42   # cython and pyarrow from the build dependencies
43   #
44   # keep an eye on following issue for improvements to this situation:
45   #
46   #   https://github.com/snowflakedb/snowflake-connector-python/issues/1144
47   #
48   postPatch = ''
49     substituteInPlace pyproject.toml \
50       --replace '"cython",' "" \
51       --replace '"pyarrow>=10.0.1,<10.1.0",' ""
52   '';
54   nativeBuildInputs = [
55     pythonRelaxDepsHook
56     setuptools
57     wheel
58   ];
60   pythonRelaxDeps = [
61     "pyOpenSSL"
62     "charset-normalizer"
63     "cryptography"
64     "platformdirs"
65   ];
67   propagatedBuildInputs = [
68     asn1crypto
69     certifi
70     cffi
71     charset-normalizer
72     filelock
73     idna
74     oscrypto
75     packaging
76     platformdirs
77     pycryptodomex
78     pyjwt
79     pyopenssl
80     pytz
81     requests
82     sortedcontainers
83     tomlkit
84     typing-extensions
85   ];
87   passthru.optional-dependencies = {
88     secure-local-storage = [ keyring ];
89   };
91   # Tests require encrypted secrets, see
92   # https://github.com/snowflakedb/snowflake-connector-python/tree/master/.github/workflows/parameters
93   doCheck = false;
95   pythonImportsCheck = [
96     "snowflake"
97     "snowflake.connector"
98   ];
100   meta = with lib; {
101     changelog = "https://github.com/snowflakedb/snowflake-connector-python/blob/v${version}/DESCRIPTION.md";
102     description = "Snowflake Connector for Python";
103     homepage = "https://github.com/snowflakedb/snowflake-connector-python";
104     license = licenses.asl20;
105     maintainers = with maintainers; [ ];
106   };