pythoncharmers-meta 0.7.16__tar.gz → 0.8.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.
- pythoncharmers_meta-0.8.0/PKG-INFO +320 -0
- pythoncharmers_meta-0.8.0/pyproject.toml +299 -0
- pythoncharmers_meta-0.8.0/uv.lock +21174 -0
- pythoncharmers_meta-0.7.16/PKG-INFO +0 -320
- pythoncharmers_meta-0.7.16/pyproject.toml +0 -298
- pythoncharmers_meta-0.7.16/uv.lock +0 -11710
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/.gitignore +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/LICENSE +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/MD_MAGIC.md +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/README.md +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/src/pythoncharmers_meta/__init__.py +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/src/pythoncharmers_meta/ai_magic.py +0 -0
- {pythoncharmers_meta-0.7.16 → pythoncharmers_meta-0.8.0}/src/pythoncharmers_meta/nb_magic.py +0 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: pythoncharmers-meta
|
|
3
|
+
Version: 0.8.0
|
|
4
|
+
Summary: Meta package with dependencies for Python Charmers training courses
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Requires-Dist: black>=26.5.1
|
|
8
|
+
Requires-Dist: diskcache>=5.6.3
|
|
9
|
+
Requires-Dist: humanize>=4.16.0
|
|
10
|
+
Requires-Dist: hvplot>=0.12.2
|
|
11
|
+
Requires-Dist: ipython>=8.39.0
|
|
12
|
+
Requires-Dist: ipywidgets>=8.1.9
|
|
13
|
+
Requires-Dist: isort>=9.0.1
|
|
14
|
+
Requires-Dist: keyring>=25.7.0
|
|
15
|
+
Requires-Dist: keyrings-cryptfile>=1.3.9
|
|
16
|
+
Requires-Dist: llm>=0.32.1
|
|
17
|
+
Requires-Dist: loguru>=0.7.2
|
|
18
|
+
Requires-Dist: logzero>=1.7.0
|
|
19
|
+
Requires-Dist: lxml>=6.1.3
|
|
20
|
+
Requires-Dist: matplotlib>=3.10.9
|
|
21
|
+
Requires-Dist: more-itertools>=11.1.0
|
|
22
|
+
Requires-Dist: mypy>=2.3.1
|
|
23
|
+
Requires-Dist: natural>=0.2.0
|
|
24
|
+
Requires-Dist: nbformat>=5.11.1
|
|
25
|
+
Requires-Dist: numba>=0.62.1
|
|
26
|
+
Requires-Dist: numexpr>=2.14.1
|
|
27
|
+
Requires-Dist: numpy>=2.2.0
|
|
28
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
29
|
+
Requires-Dist: pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,xml]>=2.3.3
|
|
30
|
+
Requires-Dist: parse>=1.22.2
|
|
31
|
+
Requires-Dist: plotly!=6.0.*,>=7.1.0
|
|
32
|
+
Requires-Dist: polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.44.2
|
|
33
|
+
Requires-Dist: psutil>=7.2.2
|
|
34
|
+
Requires-Dist: pydantic>=2.13.5
|
|
35
|
+
Requires-Dist: pytest>=9.1.1
|
|
36
|
+
Requires-Dist: requests>=2.34.2
|
|
37
|
+
Requires-Dist: rich>=15.0.0
|
|
38
|
+
Requires-Dist: ruff>=0.16.9
|
|
39
|
+
Requires-Dist: schedule>=1.2.2
|
|
40
|
+
Requires-Dist: streamlit>=1.56.0
|
|
41
|
+
Requires-Dist: toolz>=1.1.0
|
|
42
|
+
Requires-Dist: tqdm>=4.70.1
|
|
43
|
+
Requires-Dist: ty>=0.0.84
|
|
44
|
+
Requires-Dist: typer>=0.27.2
|
|
45
|
+
Requires-Dist: zstandard>=0.25.0
|
|
46
|
+
Provides-Extra: analytics
|
|
47
|
+
Requires-Dist: altair>=6.2.2; extra == 'analytics'
|
|
48
|
+
Requires-Dist: bokeh>=3.9.2; extra == 'analytics'
|
|
49
|
+
Requires-Dist: bottleneck>=1.6.0; extra == 'analytics'
|
|
50
|
+
Requires-Dist: connectorx>=0.4.6; extra == 'analytics'
|
|
51
|
+
Requires-Dist: darts[notorch]>=0.46.0; extra == 'analytics'
|
|
52
|
+
Requires-Dist: dask>=2026.8.0; extra == 'analytics'
|
|
53
|
+
Requires-Dist: distributed>=2026.8.0; extra == 'analytics'
|
|
54
|
+
Requires-Dist: duckdb>=1.5.5; extra == 'analytics'
|
|
55
|
+
Requires-Dist: fastexcel>=0.21.0; extra == 'analytics'
|
|
56
|
+
Requires-Dist: formulaic>=1.2.2; extra == 'analytics'
|
|
57
|
+
Requires-Dist: glum>=3.4.1; extra == 'analytics'
|
|
58
|
+
Requires-Dist: graphviz>=0.21; extra == 'analytics'
|
|
59
|
+
Requires-Dist: holoviews>=1.23.2; extra == 'analytics'
|
|
60
|
+
Requires-Dist: hvplot>=0.12.2; extra == 'analytics'
|
|
61
|
+
Requires-Dist: ibis-framework[duckdb,polars,sqlite]>=12.0.0; extra == 'analytics'
|
|
62
|
+
Requires-Dist: matplotlib>=3.10.9; extra == 'analytics'
|
|
63
|
+
Requires-Dist: networkx>=3.3; extra == 'analytics'
|
|
64
|
+
Requires-Dist: numba>=0.62.1; extra == 'analytics'
|
|
65
|
+
Requires-Dist: pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,spss,xml]>=2.3.3; extra == 'analytics'
|
|
66
|
+
Requires-Dist: pandera[mypy,pandas,polars]>=0.33.1; extra == 'analytics'
|
|
67
|
+
Requires-Dist: pyod>=3.6.6; extra == 'analytics'
|
|
68
|
+
Requires-Dist: scikit-learn>=1.7.2; extra == 'analytics'
|
|
69
|
+
Requires-Dist: scipy>=1.15.3; extra == 'analytics'
|
|
70
|
+
Requires-Dist: seaborn>=0.13.2; extra == 'analytics'
|
|
71
|
+
Requires-Dist: statsmodels>=0.15.0; extra == 'analytics'
|
|
72
|
+
Requires-Dist: streamlit>=1.56.0; extra == 'analytics'
|
|
73
|
+
Requires-Dist: tables>=3.10.1; extra == 'analytics'
|
|
74
|
+
Requires-Dist: textblob>=0.20.1; extra == 'analytics'
|
|
75
|
+
Requires-Dist: textdistance[levenshtein]>=4.6.3; extra == 'analytics'
|
|
76
|
+
Provides-Extra: bio
|
|
77
|
+
Requires-Dist: anndata>=0.11.4; extra == 'bio'
|
|
78
|
+
Requires-Dist: biopython>=1.88; extra == 'bio'
|
|
79
|
+
Requires-Dist: igraph>=1.0.0; extra == 'bio'
|
|
80
|
+
Requires-Dist: leidenalg>=0.12.0; extra == 'bio'
|
|
81
|
+
Requires-Dist: paramiko>=5.0.0; extra == 'bio'
|
|
82
|
+
Requires-Dist: pooch>=1.9.0; extra == 'bio'
|
|
83
|
+
Requires-Dist: scanpy>=1.11.5; extra == 'bio'
|
|
84
|
+
Requires-Dist: scikit-image>=0.25.2; extra == 'bio'
|
|
85
|
+
Requires-Dist: scikit-misc>=0.5.2; extra == 'bio'
|
|
86
|
+
Requires-Dist: tqdm>=4.70.1; extra == 'bio'
|
|
87
|
+
Provides-Extra: db
|
|
88
|
+
Requires-Dist: duckdb>=1.5.5; extra == 'db'
|
|
89
|
+
Requires-Dist: ibis-framework[duckdb,polars,sqlite]>=12.0.0; extra == 'db'
|
|
90
|
+
Requires-Dist: pandas[sql-other]>=2.3.3; extra == 'db'
|
|
91
|
+
Requires-Dist: polars[database]>=1.44.2; extra == 'db'
|
|
92
|
+
Requires-Dist: pyodbc>=5.3.0; extra == 'db'
|
|
93
|
+
Requires-Dist: redis>=8.1.0; extra == 'db'
|
|
94
|
+
Requires-Dist: sqlalchemy>=2.0.54; extra == 'db'
|
|
95
|
+
Provides-Extra: dl
|
|
96
|
+
Requires-Dist: albumentations>=2.0.8; extra == 'dl'
|
|
97
|
+
Requires-Dist: darts[torch]>=0.46.0; extra == 'dl'
|
|
98
|
+
Requires-Dist: dataset>=2.0.0; extra == 'dl'
|
|
99
|
+
Requires-Dist: datasets>=5.0.1; extra == 'dl'
|
|
100
|
+
Requires-Dist: diskcache>=5.6.3; extra == 'dl'
|
|
101
|
+
Requires-Dist: eli5>=0.15.0; extra == 'dl'
|
|
102
|
+
Requires-Dist: evaluate>=0.4.6; extra == 'dl'
|
|
103
|
+
Requires-Dist: joblib>=1.6.0; extra == 'dl'
|
|
104
|
+
Requires-Dist: lightning>=2.6.6; extra == 'dl'
|
|
105
|
+
Requires-Dist: prophet>=1.4.0; extra == 'dl'
|
|
106
|
+
Requires-Dist: pyod>=3.6.6; extra == 'dl'
|
|
107
|
+
Requires-Dist: scikit-learn>=1.7.2; extra == 'dl'
|
|
108
|
+
Requires-Dist: skorch>=1.4.0; extra == 'dl'
|
|
109
|
+
Requires-Dist: skrub>=0.10.1; extra == 'dl'
|
|
110
|
+
Requires-Dist: tensorboard>=2.21.0; extra == 'dl'
|
|
111
|
+
Requires-Dist: textdistance[levenshtein]>=4.6.3; extra == 'dl'
|
|
112
|
+
Requires-Dist: torch>=2.2.2; extra == 'dl'
|
|
113
|
+
Requires-Dist: torchaudio>=2.2.2; extra == 'dl'
|
|
114
|
+
Requires-Dist: torchvision>=0.17.2; extra == 'dl'
|
|
115
|
+
Requires-Dist: transformers[torch]>=5.0.0; extra == 'dl'
|
|
116
|
+
Requires-Dist: xgboost>=3.2.0; extra == 'dl'
|
|
117
|
+
Requires-Dist: yellowbrick2>=2.0.2; extra == 'dl'
|
|
118
|
+
Provides-Extra: docs
|
|
119
|
+
Requires-Dist: black>=26.5.1; extra == 'docs'
|
|
120
|
+
Requires-Dist: jupyter; extra == 'docs'
|
|
121
|
+
Requires-Dist: jupyter-cache; extra == 'docs'
|
|
122
|
+
Requires-Dist: kaleido>=1.4.0; extra == 'docs'
|
|
123
|
+
Requires-Dist: nbclient>=0.11.0; extra == 'docs'
|
|
124
|
+
Provides-Extra: gis
|
|
125
|
+
Requires-Dist: cartopy>=0.25.0; extra == 'gis'
|
|
126
|
+
Requires-Dist: cftime>=1.6.5; extra == 'gis'
|
|
127
|
+
Requires-Dist: contextily>=1.7.1; extra == 'gis'
|
|
128
|
+
Requires-Dist: dask-image>=2026.5.0; extra == 'gis'
|
|
129
|
+
Requires-Dist: datashader>=0.19.1; extra == 'gis'
|
|
130
|
+
Requires-Dist: descartes>=1.1.0; extra == 'gis'
|
|
131
|
+
Requires-Dist: fiona>=1.10.0; extra == 'gis'
|
|
132
|
+
Requires-Dist: folium>=0.20.0; extra == 'gis'
|
|
133
|
+
Requires-Dist: geoalchemy>=0.7.2; extra == 'gis'
|
|
134
|
+
Requires-Dist: geopandas>=1.1.4; extra == 'gis'
|
|
135
|
+
Requires-Dist: geopy>=2.5.0; extra == 'gis'
|
|
136
|
+
Requires-Dist: graphviz>=0.21; extra == 'gis'
|
|
137
|
+
Requires-Dist: h5netcdf>=1.8.1; extra == 'gis'
|
|
138
|
+
Requires-Dist: iris>=1.0.7; extra == 'gis'
|
|
139
|
+
Requires-Dist: netcdf4>=1.7.3; extra == 'gis'
|
|
140
|
+
Requires-Dist: networkx>=3.3; extra == 'gis'
|
|
141
|
+
Requires-Dist: pint>=0.24.3; extra == 'gis'
|
|
142
|
+
Requires-Dist: psycopg2-binary>=2.9.13; extra == 'gis'
|
|
143
|
+
Requires-Dist: pydantic-geojson>=0.3.2; extra == 'gis'
|
|
144
|
+
Requires-Dist: pydap>=3.5.9; extra == 'gis'
|
|
145
|
+
Requires-Dist: pyproj>=3.7.1; extra == 'gis'
|
|
146
|
+
Requires-Dist: pysal>=25.1; extra == 'gis'
|
|
147
|
+
Requires-Dist: rasterio>=1.4.4; extra == 'gis'
|
|
148
|
+
Requires-Dist: rioxarray>=0.19.0; extra == 'gis'
|
|
149
|
+
Requires-Dist: scikit-image>=0.25.2; extra == 'gis'
|
|
150
|
+
Requires-Dist: scipy>=1.15.3; extra == 'gis'
|
|
151
|
+
Requires-Dist: shapely>=2.1.2; extra == 'gis'
|
|
152
|
+
Requires-Dist: xarray>=2025.6.1; extra == 'gis'
|
|
153
|
+
Requires-Dist: zarr>=2.18.3; extra == 'gis'
|
|
154
|
+
Provides-Extra: ml
|
|
155
|
+
Requires-Dist: eli5>=0.15.0; extra == 'ml'
|
|
156
|
+
Requires-Dist: formulaic>=1.2.2; extra == 'ml'
|
|
157
|
+
Requires-Dist: glum>=3.4.1; extra == 'ml'
|
|
158
|
+
Requires-Dist: joblib>=1.6.0; extra == 'ml'
|
|
159
|
+
Requires-Dist: pyod>=3.6.6; extra == 'ml'
|
|
160
|
+
Requires-Dist: readability>=0.3.2; extra == 'ml'
|
|
161
|
+
Requires-Dist: scikit-learn>=1.7.2; extra == 'ml'
|
|
162
|
+
Requires-Dist: seaborn>=0.13.2; extra == 'ml'
|
|
163
|
+
Requires-Dist: skorch>=1.4.0; extra == 'ml'
|
|
164
|
+
Requires-Dist: skrub>=0.10.1; extra == 'ml'
|
|
165
|
+
Requires-Dist: textdistance[levenshtein]>=4.6.3; extra == 'ml'
|
|
166
|
+
Requires-Dist: xgboost>=3.2.0; extra == 'ml'
|
|
167
|
+
Requires-Dist: yellowbrick2>=2.0.2; extra == 'ml'
|
|
168
|
+
Provides-Extra: net
|
|
169
|
+
Requires-Dist: aiobotocore>=3.9.1; extra == 'net'
|
|
170
|
+
Requires-Dist: aiofile>=3.9.0; extra == 'net'
|
|
171
|
+
Requires-Dist: aiofiles>=25.1.0; extra == 'net'
|
|
172
|
+
Requires-Dist: aiometer>=1.0.0; extra == 'net'
|
|
173
|
+
Requires-Dist: aiopath>=0.6.11; extra == 'net'
|
|
174
|
+
Requires-Dist: anyio>=3.7.1; extra == 'net'
|
|
175
|
+
Requires-Dist: boto3>=1.43.75; extra == 'net'
|
|
176
|
+
Requires-Dist: botocore>=1.43.75; extra == 'net'
|
|
177
|
+
Requires-Dist: celery>=5.6.3; extra == 'net'
|
|
178
|
+
Requires-Dist: cryptography>=50.0.1; extra == 'net'
|
|
179
|
+
Requires-Dist: dask>=2026.8.0; extra == 'net'
|
|
180
|
+
Requires-Dist: distributed>=2026.8.0; extra == 'net'
|
|
181
|
+
Requires-Dist: fastapi>=0.141.1; extra == 'net'
|
|
182
|
+
Requires-Dist: ftputil>=5.2.0; extra == 'net'
|
|
183
|
+
Requires-Dist: httpx>=0.27.2; extra == 'net'
|
|
184
|
+
Requires-Dist: locust>=2.46.0; extra == 'net'
|
|
185
|
+
Requires-Dist: networkx>=3.3; extra == 'net'
|
|
186
|
+
Requires-Dist: pandas[aws,fss]>=2.3.3; extra == 'net'
|
|
187
|
+
Requires-Dist: passlib>=1.7.4; extra == 'net'
|
|
188
|
+
Requires-Dist: pathos>=0.3.5; extra == 'net'
|
|
189
|
+
Requires-Dist: polars[async,fsspec]>=1.44.2; extra == 'net'
|
|
190
|
+
Requires-Dist: psutil>=7.2.2; extra == 'net'
|
|
191
|
+
Requires-Dist: pyshark>=0.6; extra == 'net'
|
|
192
|
+
Requires-Dist: pytest-repeat>=0.9.4; extra == 'net'
|
|
193
|
+
Requires-Dist: pyzmq>=27.2.0; extra == 'net'
|
|
194
|
+
Requires-Dist: redis>=8.1.0; extra == 'net'
|
|
195
|
+
Requires-Dist: s3fs>=2026.6.0; extra == 'net'
|
|
196
|
+
Requires-Dist: textfsm>=2.1.0; extra == 'net'
|
|
197
|
+
Requires-Dist: unsync>=1.4.0; extra == 'net'
|
|
198
|
+
Requires-Dist: uvicorn>=0.54.0; extra == 'net'
|
|
199
|
+
Provides-Extra: scieng
|
|
200
|
+
Requires-Dist: altair>=6.2.2; extra == 'scieng'
|
|
201
|
+
Requires-Dist: bokeh>=3.9.2; extra == 'scieng'
|
|
202
|
+
Requires-Dist: bottleneck>=1.6.0; extra == 'scieng'
|
|
203
|
+
Requires-Dist: connectorx>=0.4.6; extra == 'scieng'
|
|
204
|
+
Requires-Dist: dask-image>=2026.5.0; extra == 'scieng'
|
|
205
|
+
Requires-Dist: dask>=2026.8.0; extra == 'scieng'
|
|
206
|
+
Requires-Dist: distributed>=2026.8.0; extra == 'scieng'
|
|
207
|
+
Requires-Dist: duckdb>=1.5.5; extra == 'scieng'
|
|
208
|
+
Requires-Dist: fastexcel>=0.21.0; extra == 'scieng'
|
|
209
|
+
Requires-Dist: formulaic>=1.2.2; extra == 'scieng'
|
|
210
|
+
Requires-Dist: glum>=3.4.1; extra == 'scieng'
|
|
211
|
+
Requires-Dist: graphviz>=0.21; extra == 'scieng'
|
|
212
|
+
Requires-Dist: h5py>=3.16.0; extra == 'scieng'
|
|
213
|
+
Requires-Dist: holoviews>=1.23.2; extra == 'scieng'
|
|
214
|
+
Requires-Dist: hvplot>=0.12.2; extra == 'scieng'
|
|
215
|
+
Requires-Dist: matplotlib>=3.10.9; extra == 'scieng'
|
|
216
|
+
Requires-Dist: networkx>=3.3; extra == 'scieng'
|
|
217
|
+
Requires-Dist: numba>=0.62.1; extra == 'scieng'
|
|
218
|
+
Requires-Dist: pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,spss,xml]>=2.3.3; extra == 'scieng'
|
|
219
|
+
Requires-Dist: pint>=0.24.3; extra == 'scieng'
|
|
220
|
+
Requires-Dist: pooch>=1.9.0; extra == 'scieng'
|
|
221
|
+
Requires-Dist: pyod>=3.6.6; extra == 'scieng'
|
|
222
|
+
Requires-Dist: scikit-image>=0.25.2; extra == 'scieng'
|
|
223
|
+
Requires-Dist: scipy>=1.15.3; extra == 'scieng'
|
|
224
|
+
Requires-Dist: seaborn>=0.13.2; extra == 'scieng'
|
|
225
|
+
Requires-Dist: statsmodels>=0.15.0; extra == 'scieng'
|
|
226
|
+
Requires-Dist: streamlit>=1.56.0; extra == 'scieng'
|
|
227
|
+
Requires-Dist: sympy>=1.14.0; extra == 'scieng'
|
|
228
|
+
Requires-Dist: tables>=3.10.1; extra == 'scieng'
|
|
229
|
+
Requires-Dist: zarr>=2.18.3; extra == 'scieng'
|
|
230
|
+
Provides-Extra: testing
|
|
231
|
+
Requires-Dist: bandit>=1.9.4; extra == 'testing'
|
|
232
|
+
Requires-Dist: black>=26.5.1; extra == 'testing'
|
|
233
|
+
Requires-Dist: dodgy>=0.2.1; extra == 'testing'
|
|
234
|
+
Requires-Dist: flake8-async>=26.8.1; extra == 'testing'
|
|
235
|
+
Requires-Dist: flake8-import-order>=0.19.2; extra == 'testing'
|
|
236
|
+
Requires-Dist: flake8>=7.4.1; extra == 'testing'
|
|
237
|
+
Requires-Dist: gprof2dot>=2025.4.14; extra == 'testing'
|
|
238
|
+
Requires-Dist: hypothesis>=6.168.1; extra == 'testing'
|
|
239
|
+
Requires-Dist: isort>=9.0.1; extra == 'testing'
|
|
240
|
+
Requires-Dist: line-profiler>=5.0.2; extra == 'testing'
|
|
241
|
+
Requires-Dist: memory-profiler>=0.61.0; extra == 'testing'
|
|
242
|
+
Requires-Dist: mkdocs>=1.6.1; extra == 'testing'
|
|
243
|
+
Requires-Dist: py-spy>=0.4.2; extra == 'testing'
|
|
244
|
+
Requires-Dist: pycodestyle>=2.15.0; extra == 'testing'
|
|
245
|
+
Requires-Dist: pyinstrument>=5.1.3; extra == 'testing'
|
|
246
|
+
Requires-Dist: pylint>=4.0.9; extra == 'testing'
|
|
247
|
+
Requires-Dist: pyt>=1.4.0; extra == 'testing'
|
|
248
|
+
Requires-Dist: pytest-cov>=7.1.0; extra == 'testing'
|
|
249
|
+
Requires-Dist: pytest-repeat>=0.9.4; extra == 'testing'
|
|
250
|
+
Requires-Dist: pytest-xdist>=3.8.0; extra == 'testing'
|
|
251
|
+
Requires-Dist: pytest>=9.1.1; extra == 'testing'
|
|
252
|
+
Requires-Dist: scalene>=2.3.0; extra == 'testing'
|
|
253
|
+
Requires-Dist: snakeviz>=2.2.2; extra == 'testing'
|
|
254
|
+
Requires-Dist: sphinx>=8.1.3; extra == 'testing'
|
|
255
|
+
Provides-Extra: web
|
|
256
|
+
Requires-Dist: alembic>=1.20.0; extra == 'web'
|
|
257
|
+
Requires-Dist: beautifulsoup4>=4.15.0; extra == 'web'
|
|
258
|
+
Requires-Dist: cryptography>=50.0.1; extra == 'web'
|
|
259
|
+
Requires-Dist: django>=5.2.17; extra == 'web'
|
|
260
|
+
Requires-Dist: fastapi>=0.141.1; extra == 'web'
|
|
261
|
+
Requires-Dist: flask>=3.1.3; extra == 'web'
|
|
262
|
+
Requires-Dist: httpx>=0.27.2; extra == 'web'
|
|
263
|
+
Requires-Dist: jinja2>=3.1.6; extra == 'web'
|
|
264
|
+
Requires-Dist: passlib>=1.7.4; extra == 'web'
|
|
265
|
+
Requires-Dist: scrapy>=2.19.0; extra == 'web'
|
|
266
|
+
Description-Content-Type: text/markdown
|
|
267
|
+
|
|
268
|
+
# Python Charmers meta-package
|
|
269
|
+
|
|
270
|
+
This is a meta-package for [Python Charmers](https://pythoncharmers.com)
|
|
271
|
+
training participants. This depends on many packages used in Python Charmers
|
|
272
|
+
training courses.
|
|
273
|
+
|
|
274
|
+
This package is intended to be used from a Python Charmers Hub in the cloud
|
|
275
|
+
like https://cpuhub.pythoncharmers.com.
|
|
276
|
+
|
|
277
|
+
## Installation
|
|
278
|
+
|
|
279
|
+
Install it like this:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
pip install pythoncharmers-meta
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
or, if you have [uv](https://docs.astral.sh/uv/), this will be much faster:
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
uv pip install pythoncharmers-meta
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Optional packages (extras)
|
|
292
|
+
|
|
293
|
+
The following sets of optional packages ("extras") are available:
|
|
294
|
+
|
|
295
|
+
- `analytics`: data analytics
|
|
296
|
+
- `db`: packages for interfacing with various databases
|
|
297
|
+
- `gis`: geospatial analysis
|
|
298
|
+
- `ml`: "classical" machine learning
|
|
299
|
+
- `dl`: deep learning (a strict superset of [ml])
|
|
300
|
+
- `net`: network engineering, concurrency
|
|
301
|
+
- `scieng`: scientific and engineering computing
|
|
302
|
+
- `testing`: testing, linting, doc generation
|
|
303
|
+
- `web`: web dev
|
|
304
|
+
|
|
305
|
+
This extra helps with building course notes:
|
|
306
|
+
|
|
307
|
+
- `docs`
|
|
308
|
+
|
|
309
|
+
You can add them like this:
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
uv pip install "pythoncharmers-meta[gis, ml]" --reinstall
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Cutting a new release
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
uv build
|
|
319
|
+
uvx twine upload dist/*
|
|
320
|
+
```
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "pythoncharmers-meta"
|
|
3
|
+
version = "0.8.0"
|
|
4
|
+
description = "Meta package with dependencies for Python Charmers training courses"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"black>=26.5.1",
|
|
9
|
+
"diskcache>=5.6.3",
|
|
10
|
+
"humanize>=4.16.0",
|
|
11
|
+
"hvplot>=0.12.2",
|
|
12
|
+
"ipython>=8.39.0",
|
|
13
|
+
"ipywidgets>=8.1.9",
|
|
14
|
+
"isort>=9.0.1",
|
|
15
|
+
"keyring>=25.7.0",
|
|
16
|
+
"keyrings-cryptfile>=1.3.9",
|
|
17
|
+
"llm>=0.32.1",
|
|
18
|
+
"loguru>=0.7.2",
|
|
19
|
+
"logzero>=1.7.0",
|
|
20
|
+
"lxml>=6.1.3",
|
|
21
|
+
"matplotlib>=3.10.9",
|
|
22
|
+
"more-itertools>=11.1.0",
|
|
23
|
+
"mypy>=2.3.1",
|
|
24
|
+
"natural>=0.2.0",
|
|
25
|
+
"nbformat>=5.11.1",
|
|
26
|
+
"numba>=0.62.1",
|
|
27
|
+
"numexpr>=2.14.1",
|
|
28
|
+
# "numpy<2.3.0",
|
|
29
|
+
"numpy>=2.2.0",
|
|
30
|
+
"openpyxl>=3.1.5",
|
|
31
|
+
"pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,xml]>=2.3.3",
|
|
32
|
+
"parse>=1.22.2",
|
|
33
|
+
"plotly>=7.1.0,!=6.0.*",
|
|
34
|
+
"polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.44.2",
|
|
35
|
+
"psutil>=7.2.2",
|
|
36
|
+
"pydantic>=2.13.5",
|
|
37
|
+
"pytest>=9.1.1",
|
|
38
|
+
"requests>=2.34.2",
|
|
39
|
+
"rich>=15.0.0",
|
|
40
|
+
"ruff>=0.16.9",
|
|
41
|
+
"schedule>=1.2.2",
|
|
42
|
+
# "sqlalchemy>=2.0.35",
|
|
43
|
+
"streamlit>=1.56.0",
|
|
44
|
+
"toolz>=1.1.0",
|
|
45
|
+
"tqdm>=4.70.1",
|
|
46
|
+
"ty>=0.0.84",
|
|
47
|
+
"typer>=0.27.2",
|
|
48
|
+
"zstandard>=0.25.0"
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
[project.optional-dependencies]
|
|
52
|
+
gis = [
|
|
53
|
+
"cartopy>=0.25.0",
|
|
54
|
+
"cftime>=1.6.5",
|
|
55
|
+
"contextily>=1.7.1",
|
|
56
|
+
"dask-image>=2026.5.0",
|
|
57
|
+
"datashader>=0.19.1",
|
|
58
|
+
"descartes>=1.1.0",
|
|
59
|
+
"fiona>=1.10.0",
|
|
60
|
+
"folium>=0.20.0",
|
|
61
|
+
"geoalchemy>=0.7.2",
|
|
62
|
+
"geopandas>=1.1.4",
|
|
63
|
+
"geopy>=2.5.0",
|
|
64
|
+
"graphviz>=0.21",
|
|
65
|
+
"h5netcdf>=1.8.1",
|
|
66
|
+
"iris>=1.0.7",
|
|
67
|
+
"netcdf4>=1.7.3",
|
|
68
|
+
"networkx>=3.3",
|
|
69
|
+
"pint>=0.24.3",
|
|
70
|
+
"psycopg2-binary>=2.9.13",
|
|
71
|
+
"pydantic-geojson>=0.3.2",
|
|
72
|
+
"pydap>=3.5.9",
|
|
73
|
+
"pyproj>=3.7.1",
|
|
74
|
+
"pysal>=25.1",
|
|
75
|
+
"rasterio>=1.4.4",
|
|
76
|
+
"rioxarray>=0.19.0",
|
|
77
|
+
"scikit-image>=0.25.2",
|
|
78
|
+
"scipy>=1.15.3",
|
|
79
|
+
"shapely>=2.1.2",
|
|
80
|
+
"xarray>=2025.6.1",
|
|
81
|
+
"zarr>=2.18.3",
|
|
82
|
+
]
|
|
83
|
+
ml = [
|
|
84
|
+
"eli5>=0.15.0",
|
|
85
|
+
"formulaic>=1.2.2",
|
|
86
|
+
"glum>=3.4.1",
|
|
87
|
+
"joblib>=1.6.0",
|
|
88
|
+
"pyod>=3.6.6",
|
|
89
|
+
"readability>=0.3.2",
|
|
90
|
+
"scikit-learn>=1.7.2",
|
|
91
|
+
"seaborn>=0.13.2",
|
|
92
|
+
"skorch>=1.4.0",
|
|
93
|
+
"skrub>=0.10.1",
|
|
94
|
+
"textdistance[Levenshtein]>=4.6.3",
|
|
95
|
+
"xgboost>=3.2.0",
|
|
96
|
+
"yellowbrick2 >=2.0.2"
|
|
97
|
+
]
|
|
98
|
+
web = [
|
|
99
|
+
"alembic>=1.20.0",
|
|
100
|
+
"beautifulsoup4>=4.15.0",
|
|
101
|
+
"cryptography>=50.0.1",
|
|
102
|
+
"django>=5.2.17",
|
|
103
|
+
"fastapi>=0.141.1",
|
|
104
|
+
"flask>=3.1.3",
|
|
105
|
+
"httpx>=0.27.2",
|
|
106
|
+
"jinja2>=3.1.6",
|
|
107
|
+
"passlib>=1.7.4",
|
|
108
|
+
"scrapy>=2.19.0",
|
|
109
|
+
# "sqlalchemy>=2.0.35",
|
|
110
|
+
]
|
|
111
|
+
analytics = [
|
|
112
|
+
"altair>=6.2.2",
|
|
113
|
+
"bokeh>=3.9.2",
|
|
114
|
+
"bottleneck>=1.6.0",
|
|
115
|
+
"connectorx>=0.4.6",
|
|
116
|
+
"darts[notorch]>=0.46.0",
|
|
117
|
+
"dask>=2026.8.0",
|
|
118
|
+
"distributed>=2026.8.0",
|
|
119
|
+
"duckdb>=1.5.5",
|
|
120
|
+
"fastexcel>=0.21.0",
|
|
121
|
+
"formulaic>=1.2.2",
|
|
122
|
+
"glum>=3.4.1",
|
|
123
|
+
"graphviz>=0.21",
|
|
124
|
+
"holoviews>=1.23.2",
|
|
125
|
+
"hvplot>=0.12.2",
|
|
126
|
+
"ibis-framework[duckdb,polars,sqlite]>=12.0.0",
|
|
127
|
+
"matplotlib>=3.10.9",
|
|
128
|
+
"networkx>=3.3",
|
|
129
|
+
"numba>=0.62.1",
|
|
130
|
+
"pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,spss,xml]>=2.3.3",
|
|
131
|
+
"pandera[mypy,pandas,polars]>=0.33.1",
|
|
132
|
+
"pyod>=3.6.6",
|
|
133
|
+
"scikit-learn>=1.7.2",
|
|
134
|
+
"scipy>=1.15.3",
|
|
135
|
+
"seaborn>=0.13.2",
|
|
136
|
+
"statsmodels>=0.15.0",
|
|
137
|
+
"streamlit>=1.56.0",
|
|
138
|
+
"tables>=3.10.1",
|
|
139
|
+
"textblob>=0.20.1",
|
|
140
|
+
"textdistance[Levenshtein]>=4.6.3",
|
|
141
|
+
# "sqlalchemy[asyncio]>=2.0.35",
|
|
142
|
+
]
|
|
143
|
+
scieng = [
|
|
144
|
+
"altair>=6.2.2",
|
|
145
|
+
"bokeh>=3.9.2",
|
|
146
|
+
"bottleneck>=1.6.0",
|
|
147
|
+
"connectorx>=0.4.6",
|
|
148
|
+
"dask-image>=2026.5.0",
|
|
149
|
+
"dask>=2026.8.0",
|
|
150
|
+
"distributed>=2026.8.0",
|
|
151
|
+
"duckdb>=1.5.5",
|
|
152
|
+
"fastexcel>=0.21.0",
|
|
153
|
+
"formulaic>=1.2.2",
|
|
154
|
+
"glum>=3.4.1",
|
|
155
|
+
"graphviz>=0.21",
|
|
156
|
+
"h5py>=3.16.0",
|
|
157
|
+
"holoviews>=1.23.2",
|
|
158
|
+
"hvplot>=0.12.2",
|
|
159
|
+
"matplotlib>=3.10.9",
|
|
160
|
+
"networkx>=3.3",
|
|
161
|
+
"numba>=0.62.1",
|
|
162
|
+
"pandas[aws,compression,computation,excel,feather,fss,hdf5,html,output-formatting,parquet,performance,plot,spss,xml]>=2.3.3",
|
|
163
|
+
"pint>=0.24.3",
|
|
164
|
+
"pooch>=1.9.0",
|
|
165
|
+
"pyod>=3.6.6",
|
|
166
|
+
"scikit-image>=0.25.2",
|
|
167
|
+
"scipy>=1.15.3",
|
|
168
|
+
"seaborn>=0.13.2",
|
|
169
|
+
"statsmodels>=0.15.0",
|
|
170
|
+
"streamlit>=1.56.0",
|
|
171
|
+
"sympy>=1.14.0",
|
|
172
|
+
"tables>=3.10.1",
|
|
173
|
+
"zarr>=2.18.3",
|
|
174
|
+
]
|
|
175
|
+
net = [
|
|
176
|
+
"aiobotocore>=3.9.1",
|
|
177
|
+
"aiofile>=3.9.0",
|
|
178
|
+
"aiofiles>=25.1.0",
|
|
179
|
+
"aiometer>=1.0.0",
|
|
180
|
+
"aiopath>=0.6.11",
|
|
181
|
+
"anyio>=3.7.1",
|
|
182
|
+
"boto3>=1.43.75",
|
|
183
|
+
"botocore>=1.43.75",
|
|
184
|
+
"celery>=5.6.3",
|
|
185
|
+
"cryptography>=50.0.1",
|
|
186
|
+
"dask>=2026.8.0",
|
|
187
|
+
"distributed>=2026.8.0",
|
|
188
|
+
"fastapi>=0.141.1",
|
|
189
|
+
"ftputil>=5.2.0",
|
|
190
|
+
"httpx>=0.27.2",
|
|
191
|
+
"locust>=2.46.0",
|
|
192
|
+
"networkx>=3.3",
|
|
193
|
+
"pandas[aws,fss]>=2.3.3",
|
|
194
|
+
"passlib>=1.7.4",
|
|
195
|
+
"pathos>=0.3.5",
|
|
196
|
+
"polars[async,fsspec]>=1.44.2",
|
|
197
|
+
"psutil>=7.2.2",
|
|
198
|
+
"pyshark>=0.6",
|
|
199
|
+
"pytest-repeat>=0.9.4",
|
|
200
|
+
"pyzmq>=27.2.0",
|
|
201
|
+
"redis>=8.1.0",
|
|
202
|
+
"s3fs>=2026.6.0",
|
|
203
|
+
"textfsm>=2.1.0",
|
|
204
|
+
"unsync>=1.4.0",
|
|
205
|
+
"uvicorn>=0.54.0",
|
|
206
|
+
]
|
|
207
|
+
dl = [
|
|
208
|
+
"albumentations>=2.0.8",
|
|
209
|
+
"darts[torch]>=0.46.0",
|
|
210
|
+
"dataset>=2.0.0",
|
|
211
|
+
"datasets>=5.0.1",
|
|
212
|
+
"diskcache>=5.6.3",
|
|
213
|
+
"eli5>=0.15.0",
|
|
214
|
+
"evaluate>=0.4.6",
|
|
215
|
+
"joblib>=1.6.0",
|
|
216
|
+
"lightning>=2.6.6",
|
|
217
|
+
"prophet>=1.4.0",
|
|
218
|
+
"pyod>=3.6.6",
|
|
219
|
+
"scikit-learn>=1.7.2",
|
|
220
|
+
"skorch>=1.4.0",
|
|
221
|
+
"skrub>=0.10.1",
|
|
222
|
+
"tensorboard>=2.21.0",
|
|
223
|
+
"textdistance[Levenshtein]>=4.6.3",
|
|
224
|
+
"torch>=2.2.2",
|
|
225
|
+
"torchaudio>=2.2.2",
|
|
226
|
+
"torchvision>=0.17.2",
|
|
227
|
+
"transformers[torch]>=5.0.0",
|
|
228
|
+
"xgboost>=3.2.0",
|
|
229
|
+
"yellowbrick2 >=2.0.2"
|
|
230
|
+
]
|
|
231
|
+
testing = [
|
|
232
|
+
"bandit>=1.9.4",
|
|
233
|
+
"black>=26.5.1",
|
|
234
|
+
"dodgy>=0.2.1",
|
|
235
|
+
"flake8-async>=26.8.1",
|
|
236
|
+
"flake8-import-order>=0.19.2",
|
|
237
|
+
"flake8>=7.4.1",
|
|
238
|
+
"gprof2dot>=2025.4.14",
|
|
239
|
+
"hypothesis>=6.168.1",
|
|
240
|
+
"isort>=9.0.1",
|
|
241
|
+
"line-profiler>=5.0.2",
|
|
242
|
+
"memory-profiler>=0.61.0",
|
|
243
|
+
"mkdocs>=1.6.1",
|
|
244
|
+
"py-spy>=0.4.2",
|
|
245
|
+
"pycodestyle>=2.15.0",
|
|
246
|
+
"pyinstrument>=5.1.3",
|
|
247
|
+
"pylint>=4.0.9",
|
|
248
|
+
"pyt>=1.4.0",
|
|
249
|
+
"pytest-cov>=7.1.0",
|
|
250
|
+
"pytest-repeat>=0.9.4",
|
|
251
|
+
"pytest-xdist>=3.8.0",
|
|
252
|
+
"pytest>=9.1.1",
|
|
253
|
+
"scalene>=2.3.0",
|
|
254
|
+
"snakeviz>=2.2.2",
|
|
255
|
+
"sphinx>=8.1.3",
|
|
256
|
+
]
|
|
257
|
+
db = [
|
|
258
|
+
"duckdb>=1.5.5",
|
|
259
|
+
"ibis-framework[duckdb,polars,sqlite]>=12.0.0",
|
|
260
|
+
"pandas[sql-other]>=2.3.3",
|
|
261
|
+
"polars[database]>=1.44.2",
|
|
262
|
+
"pyodbc>=5.3.0",
|
|
263
|
+
"redis>=8.1.0",
|
|
264
|
+
"sqlalchemy>=2.0.54",
|
|
265
|
+
]
|
|
266
|
+
bio = [
|
|
267
|
+
"anndata>=0.11.4",
|
|
268
|
+
"biopython>=1.88",
|
|
269
|
+
"igraph>=1.0.0",
|
|
270
|
+
"leidenalg>=0.12.0",
|
|
271
|
+
"paramiko>=5.0.0",
|
|
272
|
+
"pooch>=1.9.0",
|
|
273
|
+
"scanpy>=1.11.5",
|
|
274
|
+
"scikit-image>=0.25.2",
|
|
275
|
+
"scikit-misc>=0.5.2",
|
|
276
|
+
"tqdm>=4.70.1",
|
|
277
|
+
]
|
|
278
|
+
# The 'docs' extra includes support for building course notes using Quarto:
|
|
279
|
+
docs = [
|
|
280
|
+
"nbclient>=0.11.0",
|
|
281
|
+
"jupyter",
|
|
282
|
+
"jupyter-cache",
|
|
283
|
+
"black>=26.5.1",
|
|
284
|
+
"kaleido>=1.4.0"
|
|
285
|
+
]
|
|
286
|
+
|
|
287
|
+
[build-system]
|
|
288
|
+
requires = ["hatchling"]
|
|
289
|
+
build-backend = "hatchling.build"
|
|
290
|
+
|
|
291
|
+
[tool.uv]
|
|
292
|
+
# Require Intel Mac wheels for Python 3.10–3.12; PyTorch has no Intel Mac
|
|
293
|
+
# wheels for newer Python versions.
|
|
294
|
+
required-environments = [
|
|
295
|
+
"sys_platform == 'darwin' and platform_machine == 'x86_64' and python_version < '3.13'"
|
|
296
|
+
]
|
|
297
|
+
constraint-dependencies = [
|
|
298
|
+
"configargparse>=1.7.1",
|
|
299
|
+
]
|