1{
2 lib,
3 asn1crypto,
4 buildPythonPackage,
5 certifi,
6 cffi,
7 charset-normalizer,
8 cryptography,
9 cython,
10 fetchFromGitHub,
11 filelock,
12 idna,
13 keyring,
14 packaging,
15 pandas,
16 platformdirs,
17 pyarrow,
18 pyjwt,
19 pyopenssl,
20 pytest-xdist,
21 pytestCheckHook,
22 pythonOlder,
23 pytz,
24 requests,
25 setuptools,
26 sortedcontainers,
27 tomlkit,
28 typing-extensions,
29}:
30
31buildPythonPackage rec {
32 pname = "snowflake-connector-python";
33 version = "3.12.4";
34 pyproject = true;
35
36 disabled = pythonOlder "3.8";
37
38 src = fetchFromGitHub {
39 owner = "snowflakedb";
40 repo = "snowflake-connector-python";
41 rev = "refs/tags/v${version}";
42 hash = "sha256-6poMWKQB/NR40W39KDJwBgYGeAHsr4f1GJhPxYiTc1k=";
43 };
44
45 build-system = [
46 cython
47 setuptools
48 ];
49
50 dependencies = [
51 asn1crypto
52 certifi
53 cffi
54 charset-normalizer
55 cryptography
56 filelock
57 idna
58 packaging
59 platformdirs
60 pyjwt
61 pyopenssl
62 pytz
63 requests
64 sortedcontainers
65 tomlkit
66 typing-extensions
67 ];
68
69 optional-dependencies = {
70 pandas = [
71 pandas
72 pyarrow
73 ];
74 secure-local-storage = [ keyring ];
75 };
76
77 preCheck = ''
78 export HOME=$(mktemp -d)
79 '';
80
81 nativeCheckInputs = [
82 pytest-xdist
83 pytestCheckHook
84 ];
85
86 disabledTestPaths = [
87 # Tests require encrypted secrets, see
88 # https://github.com/snowflakedb/snowflake-connector-python/tree/master/.github/workflows/parameters
89 "test/extras/simple_select1.py"
90 "test/integ"
91 # error getting schema from stream, error code: 0, error info: Expected to
92 # be able to read 19504 bytes for message body but got 19503
93 "test/unit/test_connection.py"
94 "test/unit/test_cursor.py"
95 "test/unit/test_error_arrow_stream.py"
96 "test/unit/test_ocsp.py"
97 "test/unit/test_retry_network.py"
98 "test/unit/test_s3_util.py"
99 ];
100
101 disabledTests = [
102 # Tests connect to the internet
103 "test_status_when_num_of_chunks_is_zero"
104 "test_test_socket_get_cert"
105 ];
106
107 pythonImportsCheck = [
108 "snowflake"
109 "snowflake.connector"
110 ];
111
112 meta = with lib; {
113 description = "Snowflake Connector for Python";
114 homepage = "https://github.com/snowflakedb/snowflake-connector-python";
115 changelog = "https://github.com/snowflakedb/snowflake-connector-python/blob/v${version}/DESCRIPTION.md";
116 license = licenses.asl20;
117 maintainers = [ ];
118 };
119}