pythoncharmers-meta 0.4.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,46 +1,78 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythoncharmers-meta
3
- Version: 0.4.2
3
+ Version: 0.5.0
4
4
  Summary: Meta package with dependencies for Python Charmers training courses
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
7
7
  Requires-Dist: black>=24.8.0
8
8
  Requires-Dist: diskcache>=5.6.3
9
- Requires-Dist: duckdb>=1.1.3
10
- Requires-Dist: ftputil>=5.1.0
11
- Requires-Dist: h5py>=3.11.0
12
9
  Requires-Dist: humanize>=4.10.0
13
10
  Requires-Dist: hvplot>=0.10.0
14
- Requires-Dist: ibis-framework[duckdb,polars,sqlite]>=9.5.0
15
11
  Requires-Dist: ipython>=8.12.3
16
12
  Requires-Dist: isort>=5.13.2
17
13
  Requires-Dist: keyring>=25.4.1
18
14
  Requires-Dist: keyrings-cryptfile>=1.3.9
19
- Requires-Dist: line-profiler>=4.1.3
20
15
  Requires-Dist: loguru>=0.7.2
21
16
  Requires-Dist: logzero>=1.7.0
22
17
  Requires-Dist: lxml>=5.3.0
23
18
  Requires-Dist: matplotlib>=3.9.2
24
- Requires-Dist: memory-profiler>=0.61.0
19
+ Requires-Dist: more-itertools>=10.6.0
25
20
  Requires-Dist: mypy>=1.11.2
26
21
  Requires-Dist: natural>=0.2.0
27
22
  Requires-Dist: numexpr>=2.10.1
28
- Requires-Dist: numpy>=2.1.3
23
+ Requires-Dist: numpy<2.2.0,>=2.1.3
29
24
  Requires-Dist: openpyxl>=3.1.5
30
- Requires-Dist: pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3
25
+ Requires-Dist: pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,postgresql,sql-other,xml]>=2.2.3
31
26
  Requires-Dist: parse>=1.20.2
32
27
  Requires-Dist: plotly<6.0.0,>=5.24.0
33
- Requires-Dist: polars>=1.22.0
28
+ Requires-Dist: polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.22.0
34
29
  Requires-Dist: psutil>=6.0.0
35
30
  Requires-Dist: pydantic>=2.9.2
36
- Requires-Dist: pyjanitor>=0.30.0
31
+ Requires-Dist: pytest>=8.3.5
37
32
  Requires-Dist: requests>=2.32.3
33
+ Requires-Dist: rich>=13.9.4
34
+ Requires-Dist: ruff>=0.11.1
38
35
  Requires-Dist: schedule>=1.2.2
39
- Requires-Dist: scipy>=1.15.2
40
36
  Requires-Dist: sqlalchemy>=2.0.35
41
- Requires-Dist: statsmodels>=0.14.4
42
37
  Requires-Dist: streamlit>=1.39.0
43
38
  Requires-Dist: toolz>=0.12.1
39
+ Requires-Dist: tqdm>=4.67.1
40
+ Provides-Extra: analytics
41
+ Requires-Dist: altair>=5.4.1; extra == 'analytics'
42
+ Requires-Dist: bokeh>=3.4.3; extra == 'analytics'
43
+ Requires-Dist: bottleneck>=1.4.0; extra == 'analytics'
44
+ Requires-Dist: connectorx>=0.4.1; extra == 'analytics'
45
+ Requires-Dist: dask>=2025.2.0; extra == 'analytics'
46
+ Requires-Dist: distributed>=2024.9.1; extra == 'analytics'
47
+ Requires-Dist: duckdb>=1.1.3; extra == 'analytics'
48
+ Requires-Dist: fastexcel>=0.12.1; extra == 'analytics'
49
+ Requires-Dist: formulaic>=1.1.1; extra == 'analytics'
50
+ Requires-Dist: glum>=3.1.2; extra == 'analytics'
51
+ Requires-Dist: graphviz>=0.20.3; extra == 'analytics'
52
+ Requires-Dist: holoviews>=1.19.1; extra == 'analytics'
53
+ Requires-Dist: hvplot>=0.10.0; extra == 'analytics'
54
+ Requires-Dist: ibis-framework[duckdb,polars,sqlite]>=9.5.0; extra == 'analytics'
55
+ Requires-Dist: matplotlib>=3.9.2; extra == 'analytics'
56
+ Requires-Dist: networkx>=3.3; extra == 'analytics'
57
+ Requires-Dist: numba>=0.61.0; extra == 'analytics'
58
+ Requires-Dist: pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3; extra == 'analytics'
59
+ Requires-Dist: pyod>=2.0.1; extra == 'analytics'
60
+ Requires-Dist: scikit-learn>=1.6.1; extra == 'analytics'
61
+ Requires-Dist: scipy>=1.15.2; extra == 'analytics'
62
+ Requires-Dist: seaborn>=0.13.2; extra == 'analytics'
63
+ Requires-Dist: sqlalchemy>=2.0.35; extra == 'analytics'
64
+ Requires-Dist: statsmodels>=0.14.4; extra == 'analytics'
65
+ Requires-Dist: streamlit>=1.39.0; extra == 'analytics'
66
+ Requires-Dist: tables>=3.10.1; extra == 'analytics'
67
+ Requires-Dist: textblob>=0.19.0; extra == 'analytics'
68
+ Provides-Extra: db
69
+ Requires-Dist: duckdb>=1.1.3; extra == 'db'
70
+ Requires-Dist: ibis-framework[duckdb,mysql,polars,postgres,sqlite]>=9.5.0; extra == 'db'
71
+ Requires-Dist: pandas[mysql,postgresql,sql-other]>=2.2.3; extra == 'db'
72
+ Requires-Dist: polars[database]>=1.22.0; extra == 'db'
73
+ Requires-Dist: pyodbc>=5.2.0; extra == 'db'
74
+ Requires-Dist: redis>=5.2.1; extra == 'db'
75
+ Requires-Dist: sqlalchemy>=2.0.38; extra == 'db'
44
76
  Provides-Extra: dl
45
77
  Requires-Dist: dataset>=1.5.2; extra == 'dl'
46
78
  Requires-Dist: diskcache>=5.6.3; extra == 'dl'
@@ -97,45 +129,94 @@ Requires-Dist: xgboost>=2.1.1; extra == 'ml'
97
129
  Requires-Dist: yellowbrick>=1.5; extra == 'ml'
98
130
  Provides-Extra: net
99
131
  Requires-Dist: aiobotocore>=2.15.1; extra == 'net'
132
+ Requires-Dist: aiofile>=3.9.0; extra == 'net'
100
133
  Requires-Dist: aiofiles>=24.1.0; extra == 'net'
134
+ Requires-Dist: aiometer>=0.5.0; extra == 'net'
101
135
  Requires-Dist: aiopath>=0.6.11; extra == 'net'
102
136
  Requires-Dist: anyio>=3.7.1; extra == 'net'
137
+ Requires-Dist: boto3>=1.36.3; extra == 'net'
138
+ Requires-Dist: botocore>=1.36.3; extra == 'net'
139
+ Requires-Dist: celery>=5.4.0; extra == 'net'
103
140
  Requires-Dist: cryptography>=43.0.0; extra == 'net'
141
+ Requires-Dist: dask>=2025.2.0; extra == 'net'
104
142
  Requires-Dist: distributed>=2024.9.1; extra == 'net'
143
+ Requires-Dist: fastapi>=0.115.8; extra == 'net'
144
+ Requires-Dist: ftputil>=5.1.0; extra == 'net'
105
145
  Requires-Dist: httpx>=0.27.2; extra == 'net'
146
+ Requires-Dist: locust>=2.33.2; extra == 'net'
106
147
  Requires-Dist: networkx>=3.3; extra == 'net'
148
+ Requires-Dist: pandas[aws,fss]>=2.2.3; extra == 'net'
149
+ Requires-Dist: passlib>=1.7.4; extra == 'net'
150
+ Requires-Dist: pathos>=0.3.3; extra == 'net'
151
+ Requires-Dist: polars[async,fsspec]>=1.22.0; extra == 'net'
107
152
  Requires-Dist: psutil>=6.0.0; extra == 'net'
108
153
  Requires-Dist: pyshark>=0.6; extra == 'net'
154
+ Requires-Dist: pytest-repeat>=0.9.3; extra == 'net'
109
155
  Requires-Dist: pyzmq>=26.2.0; extra == 'net'
156
+ Requires-Dist: redis>=5.2.1; extra == 'net'
110
157
  Requires-Dist: s3fs>=2024.9.0; extra == 'net'
111
158
  Requires-Dist: textfsm>=1.1.3; extra == 'net'
159
+ Requires-Dist: unsync>=1.4.0; extra == 'net'
160
+ Requires-Dist: uvicorn>=0.34.0; extra == 'net'
112
161
  Provides-Extra: scieng
113
162
  Requires-Dist: altair>=5.4.1; extra == 'scieng'
114
163
  Requires-Dist: bokeh>=3.4.3; extra == 'scieng'
115
164
  Requires-Dist: bottleneck>=1.4.0; extra == 'scieng'
116
165
  Requires-Dist: connectorx>=0.4.1; extra == 'scieng'
117
166
  Requires-Dist: dask-image>=2024.5.3; extra == 'scieng'
118
- Requires-Dist: dask>=2024.8.2; extra == 'scieng'
167
+ Requires-Dist: dask>=2025.2.0; extra == 'scieng'
119
168
  Requires-Dist: distributed>=2024.9.1; extra == 'scieng'
169
+ Requires-Dist: duckdb>=1.1.3; extra == 'scieng'
120
170
  Requires-Dist: fastexcel>=0.12.1; extra == 'scieng'
171
+ Requires-Dist: formulaic>=1.1.1; extra == 'scieng'
172
+ Requires-Dist: glum>=3.1.2; extra == 'scieng'
121
173
  Requires-Dist: graphviz>=0.20.3; extra == 'scieng'
174
+ Requires-Dist: h5py>=3.11.0; extra == 'scieng'
122
175
  Requires-Dist: holoviews>=1.19.1; extra == 'scieng'
123
176
  Requires-Dist: hvplot>=0.10.0; extra == 'scieng'
177
+ Requires-Dist: matplotlib>=3.9.2; extra == 'scieng'
124
178
  Requires-Dist: networkx>=3.3; extra == 'scieng'
125
179
  Requires-Dist: numba>=0.61.0; extra == 'scieng'
180
+ Requires-Dist: pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,sql-other,xml]>=2.2.3; extra == 'scieng'
126
181
  Requires-Dist: pint>=0.24.3; extra == 'scieng'
127
182
  Requires-Dist: pyod>=2.0.1; extra == 'scieng'
128
183
  Requires-Dist: scikit-image>=0.24.0; extra == 'scieng'
184
+ Requires-Dist: scipy>=1.15.2; extra == 'scieng'
129
185
  Requires-Dist: seaborn>=0.13.2; extra == 'scieng'
186
+ Requires-Dist: statsmodels>=0.14.4; extra == 'scieng'
187
+ Requires-Dist: streamlit>=1.39.0; extra == 'scieng'
188
+ Requires-Dist: sympy>=1.13.3; extra == 'scieng'
130
189
  Requires-Dist: tables>=3.10.1; extra == 'scieng'
131
190
  Requires-Dist: zarr>=2.18.3; extra == 'scieng'
191
+ Provides-Extra: testing
192
+ Requires-Dist: bandit>=1.8.3; extra == 'testing'
193
+ Requires-Dist: black>=25.1.0; extra == 'testing'
194
+ Requires-Dist: dodgy>=0.2.1; extra == 'testing'
195
+ Requires-Dist: flake8-async>=25.3.1; extra == 'testing'
196
+ Requires-Dist: flake8-import-order>=0.18.2; extra == 'testing'
197
+ Requires-Dist: flake8>=7.1.2; extra == 'testing'
198
+ Requires-Dist: hypothesis>=6.129.4; extra == 'testing'
199
+ Requires-Dist: isort>=6.0.0; extra == 'testing'
200
+ Requires-Dist: line-profiler>=4.1.3; extra == 'testing'
201
+ Requires-Dist: memory-profiler>=0.61.0; extra == 'testing'
202
+ Requires-Dist: mkdocs>=1.6.1; extra == 'testing'
203
+ Requires-Dist: pycodestyle>=2.12.1; extra == 'testing'
204
+ Requires-Dist: pylint>=3.3.6; extra == 'testing'
205
+ Requires-Dist: pyt>=1.0.5; extra == 'testing'
206
+ Requires-Dist: pytest-cov>=6.0.0; extra == 'testing'
207
+ Requires-Dist: pytest-repeat>=0.9.3; extra == 'testing'
208
+ Requires-Dist: pytest-xdist>=3.6.1; extra == 'testing'
209
+ Requires-Dist: pytest>=8.3.5; extra == 'testing'
210
+ Requires-Dist: sphinx>=8.1.3; extra == 'testing'
132
211
  Provides-Extra: web
133
212
  Requires-Dist: alembic>=1.13.2; extra == 'web'
134
213
  Requires-Dist: cryptography>=43.0.0; extra == 'web'
135
214
  Requires-Dist: django>=5.1.1; extra == 'web'
136
- Requires-Dist: fastapi>=0.112.3; extra == 'web'
215
+ Requires-Dist: fastapi>=0.115.8; extra == 'web'
137
216
  Requires-Dist: flask>=3.0.3; extra == 'web'
138
217
  Requires-Dist: httpx>=0.27.2; extra == 'web'
218
+ Requires-Dist: passlib>=1.7.4; extra == 'web'
219
+ Requires-Dist: sqlalchemy>=2.0.35; extra == 'web'
139
220
  Description-Content-Type: text/markdown
140
221
 
141
222
  # Python Charmers meta-package
@@ -165,12 +246,15 @@ uv pip install pythoncharmers-meta
165
246
 
166
247
  The following sets of optional packages ("extras") are available:
167
248
 
168
- - `gis`
169
- - `ml`
170
- - `dl`
171
- - `scieng`
172
- - `net`
173
- - `web`
249
+ - `analytics`: data analytics
250
+ - `db`: packages for interfacing with various databases
251
+ - `dl`: deep learning
252
+ - `gis`: geospatial analysis
253
+ - `ml`: "classical" machine learning
254
+ - `scieng`: scientific and engineering computing
255
+ - `net`: network engineering, concurrency
256
+ - `testing`: testing, linting, doc generation
257
+ - `web`: web dev
174
258
 
175
259
  You can add them like this:
176
260
 
@@ -25,12 +25,15 @@ uv pip install pythoncharmers-meta
25
25
 
26
26
  The following sets of optional packages ("extras") are available:
27
27
 
28
- - `gis`
29
- - `ml`
30
- - `dl`
31
- - `scieng`
32
- - `net`
33
- - `web`
28
+ - `analytics`: data analytics
29
+ - `db`: packages for interfacing with various databases
30
+ - `dl`: deep learning
31
+ - `gis`: geospatial analysis
32
+ - `ml`: "classical" machine learning
33
+ - `scieng`: scientific and engineering computing
34
+ - `net`: network engineering, concurrency
35
+ - `testing`: testing, linting, doc generation
36
+ - `web`: web dev
34
37
 
35
38
  You can add them like this:
36
39
 
@@ -1,29 +1,25 @@
1
1
  [project]
2
2
  name = "pythoncharmers-meta"
3
- version = "0.4.2"
3
+ version = "0.5.0"
4
4
  description = "Meta package with dependencies for Python Charmers training courses"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
7
7
  dependencies = [
8
8
  "ipython>=8.12.3",
9
- "polars>=1.22.0",
9
+ "polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.22.0",
10
10
  "matplotlib>=3.9.2",
11
11
  "plotly>=5.24.0,<6.0.0",
12
- "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3",
12
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,postgresql,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
13
13
  "numexpr>=2.10.1",
14
- "h5py>=3.11.0",
15
14
  "mypy>=1.11.2",
16
- "statsmodels>=0.14.4",
17
15
  "loguru>=0.7.2",
18
16
  "psutil>=6.0.0",
19
- "memory-profiler>=0.61.0",
20
- "line-profiler>=4.1.3",
21
17
  "streamlit>=1.39.0",
22
18
  "schedule>=1.2.2",
23
19
  "requests>=2.32.3",
24
20
  "hvplot>=0.10.0",
25
- "numpy>=2.1.3",
26
- "scipy>=1.15.2",
21
+ # Numba requires NumPy 2.1 or less:
22
+ "numpy>=2.1.3,<2.2.0",
27
23
  "black>=24.8.0",
28
24
  "isort>=5.13.2",
29
25
  "toolz>=0.12.1",
@@ -36,12 +32,13 @@ dependencies = [
36
32
  "keyrings-cryptfile>=1.3.9",
37
33
  "keyring>=25.4.1",
38
34
  "diskcache>=5.6.3",
39
- "duckdb>=1.1.3",
40
- "ibis-framework[duckdb,polars,sqlite]>=9.5.0",
41
- "ftputil>=5.1.0",
42
35
  "lxml>=5.3.0",
43
36
  "pydantic>=2.9.2",
44
- "pyjanitor>=0.30.0",
37
+ "pytest>=8.3.5",
38
+ "more-itertools>=10.6.0",
39
+ "ruff>=0.11.1",
40
+ "rich>=13.9.4",
41
+ "tqdm>=4.67.1",
45
42
  ]
46
43
 
47
44
  [project.optional-dependencies]
@@ -89,46 +86,81 @@ ml = [
89
86
  web = [
90
87
  "flask>=3.0.3",
91
88
  "httpx>=0.27.2",
92
- "fastapi>=0.112.3",
89
+ "fastapi>=0.115.8",
93
90
  "alembic>=1.13.2",
94
91
  "django>=5.1.1",
95
92
  "cryptography>=43.0.0",
93
+ "passlib>=1.7.4",
94
+ "sqlalchemy>=2.0.35",
95
+ ]
96
+ analytics = [
97
+ "duckdb>=1.1.3",
98
+ "ibis-framework[duckdb,polars,sqlite]>=9.5.0",
99
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3",
100
+ "sqlalchemy>=2.0.35",
101
+ "numba>=0.61.0",
102
+ "matplotlib>=3.9.2",
103
+ "scipy>=1.15.2",
104
+ "statsmodels>=0.14.4",
105
+ "seaborn>=0.13.2",
106
+ "fastexcel>=0.12.1",
107
+ "connectorx>=0.4.1",
108
+ "dask>=2025.2.0",
109
+ "hvplot>=0.10.0",
110
+ "networkx>=3.3",
111
+ "holoviews>=1.19.1",
112
+ "bokeh>=3.4.3",
113
+ "pyod>=2.0.1",
114
+ "tables>=3.10.1",
115
+ "altair>=5.4.1",
116
+ "bottleneck>=1.4.0",
117
+ "graphviz>=0.20.3",
118
+ "distributed>=2024.9.1",
119
+ "streamlit>=1.39.0",
120
+ "glum>=3.1.2",
121
+ "scikit-learn>=1.6.1",
122
+ "formulaic>=1.1.1",
123
+ "textblob>=0.19.0",
96
124
  ]
97
125
  scieng = [
126
+ "h5py>=3.11.0",
127
+ "duckdb>=1.1.3",
128
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
98
129
  "numba>=0.61.0",
130
+ "scipy>=1.15.2",
131
+ "statsmodels>=0.14.4",
99
132
  "seaborn>=0.13.2",
100
133
  "fastexcel>=0.12.1",
101
134
  "connectorx>=0.4.1",
102
135
  "pint>=0.24.3",
103
136
  "scikit-image>=0.24.0",
104
- "dask>=2024.8.2",
105
- # "matplotlib>=3.9.2",
106
- # "plotly>=5.24.1",
137
+ "dask>=2025.2.0",
138
+ "matplotlib>=3.9.2",
107
139
  "hvplot>=0.10.0",
108
140
  "networkx>=3.3",
109
- # "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,mysql,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3",
110
- # "numba>=0.60.0",
111
141
  "dask-image>=2024.5.3",
112
142
  "holoviews>=1.19.1",
113
143
  "bokeh>=3.4.3",
114
- # "streamlit>=1.39.0",
144
+ "streamlit>=1.39.0",
115
145
  "pyod>=2.0.1",
116
146
  "tables>=3.10.1",
117
- # "graphviz>=0.20.3",
147
+ "graphviz>=0.20.3",
118
148
  "altair>=5.4.1",
119
149
  "bottleneck>=1.4.0",
120
150
  "graphviz>=0.20.3",
121
151
  "zarr>=2.18.3",
122
152
  "distributed>=2024.9.1",
153
+ "glum>=3.1.2",
154
+ "formulaic>=1.1.1",
155
+ "sympy>=1.13.3",
123
156
  ]
124
157
  net = [
158
+ "pandas[aws,fss]>=2.2.3",
125
159
  "cryptography>=43.0.0",
126
- # "requests>=2.32.3",
127
160
  "networkx>=3.3",
128
161
  "psutil>=6.0.0",
129
162
  "textfsm>=1.1.3",
130
163
  "pyshark>=0.6",
131
- # "schedule>=1.2.2",
132
164
  "pyzmq>=26.2.0",
133
165
  "aiopath>=0.6.11",
134
166
  "aiofiles>=24.1.0",
@@ -137,6 +169,22 @@ net = [
137
169
  "s3fs>=2024.9.0",
138
170
  "aiobotocore>=2.15.1",
139
171
  "distributed>=2024.9.1",
172
+ "fastapi>=0.115.8",
173
+ "uvicorn>=0.34.0",
174
+ "locust>=2.33.2",
175
+ "aiometer>=0.5.0",
176
+ "unsync>=1.4.0",
177
+ "pathos>=0.3.3",
178
+ "celery>=5.4.0",
179
+ "redis>=5.2.1",
180
+ "pytest-repeat>=0.9.3",
181
+ "aiofile>=3.9.0",
182
+ "botocore>=1.36.3",
183
+ "boto3>=1.36.3",
184
+ "passlib>=1.7.4",
185
+ "ftputil>=5.1.0",
186
+ "dask>=2025.2.0",
187
+ "polars[async,fsspec]>=1.22.0",
140
188
  ]
141
189
  dl = [
142
190
  "dataset>=1.5.2",
@@ -154,7 +202,38 @@ dl = [
154
202
  "xgboost>=2.1.1",
155
203
  "yellowbrick>=1.5",
156
204
  ]
205
+ testing = [
206
+ "memory-profiler>=0.61.0",
207
+ "line-profiler>=4.1.3",
208
+ "hypothesis>=6.129.4",
209
+ "pycodestyle>=2.12.1",
210
+ "pylint>=3.3.6",
211
+ "pytest>=8.3.5",
212
+ "pytest-cov>=6.0.0",
213
+ "pytest-repeat>=0.9.3",
214
+ "pytest-xdist>=3.6.1",
215
+ "sphinx>=8.1.3",
216
+ "mkdocs>=1.6.1",
217
+ "flake8-async>=25.3.1",
218
+ "flake8-import-order>=0.18.2",
219
+ "isort>=6.0.0",
220
+ "bandit>=1.8.3",
221
+ "dodgy>=0.2.1",
222
+ "pyt>=1.0.5",
223
+ "black>=25.1.0",
224
+ "flake8>=7.1.2",
225
+ ]
226
+ db = [
227
+ "pandas[mysql,postgresql,sql-other]>=2.2.3",
228
+ "redis>=5.2.1",
229
+ "sqlalchemy>=2.0.38",
230
+ "duckdb>=1.1.3",
231
+ "ibis-framework[duckdb,mysql,polars,postgres,sqlite]>=9.5.0",
232
+ "pyodbc>=5.2.0",
233
+ "polars[database]>=1.22.0",
234
+ ]
157
235
 
158
236
  [build-system]
159
237
  requires = ["hatchling"]
160
238
  build-backend = "hatchling.build"
239
+