pythoncharmers-meta 0.6.0__tar.gz → 0.6.1__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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythoncharmers-meta
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: Meta package with dependencies for Python Charmers training courses
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -68,6 +68,13 @@ Requires-Dist: streamlit>=1.45.0; extra == 'analytics'
68
68
  Requires-Dist: tables>=3.10.1; extra == 'analytics'
69
69
  Requires-Dist: textblob>=0.19.0; extra == 'analytics'
70
70
  Requires-Dist: textdistance[levenshtein]>=4.6.3; extra == 'analytics'
71
+ Provides-Extra: bio
72
+ Requires-Dist: anndata>=0.11.4; extra == 'bio'
73
+ Requires-Dist: biopython>=1.85; extra == 'bio'
74
+ Requires-Dist: paramiko>=3.5.1; extra == 'bio'
75
+ Requires-Dist: pooch>=1.8.2; extra == 'bio'
76
+ Requires-Dist: scanpy>=1.11.2; extra == 'bio'
77
+ Requires-Dist: tqdm>=4.67.1; extra == 'bio'
71
78
  Provides-Extra: db
72
79
  Requires-Dist: duckdb>=1.1.3; extra == 'db'
73
80
  Requires-Dist: ibis-framework[duckdb,polars,sqlite]>=10.5.0; extra == 'db'
@@ -1,199 +1,197 @@
1
1
  [project]
2
2
  name = "pythoncharmers-meta"
3
- version = "0.6.0"
3
+ version = "0.6.1"
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
+ "black>=24.8.0",
9
+ "diskcache>=5.6.3",
10
+ "humanize>=4.10.0",
11
+ "hvplot>=0.10.0",
8
12
  "ipython>=8.12.3",
9
- "polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.29.0",
13
+ "isort>=5.13.2",
14
+ "keyring>=25.4.1",
15
+ "keyrings-cryptfile>=1.3.9",
16
+ "llm>=0.26",
17
+ "loguru>=0.7.2",
18
+ "logzero>=1.7.0",
19
+ "lxml>=5.3.0",
10
20
  "matplotlib>=3.9.2",
11
- "plotly>=5.24.0,!=6.0.*",
12
- "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
13
- "numexpr>=2.10.1",
21
+ "more-itertools>=10.6.0",
14
22
  "mypy>=1.11.2",
15
- "loguru>=0.7.2",
16
- "psutil>=6.0.0",
17
- "streamlit>=1.45.0",
18
- "schedule>=1.2.2",
19
- "requests>=2.32.3",
20
- "hvplot>=0.10.0",
21
- # Numba requires NumPy 2.1 or less:
23
+ "natural>=0.2.0",
24
+ "nbformat>=5.10.4",
25
+ "numba>=0.61.2",
26
+ "numexpr>=2.10.1",
22
27
  "numpy<2.3.0",
23
- "black>=24.8.0",
24
- "isort>=5.13.2",
25
- "toolz>=0.12.1",
26
- "logzero>=1.7.0",
27
- # "sqlalchemy>=2.0.35",
28
28
  "openpyxl>=3.1.5",
29
- "natural>=0.2.0",
29
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
30
30
  "parse>=1.20.2",
31
- "humanize>=4.10.0",
32
- "keyrings-cryptfile>=1.3.9",
33
- "keyring>=25.4.1",
34
- "diskcache>=5.6.3",
35
- "lxml>=5.3.0",
31
+ "plotly>=5.24.0,!=6.0.*",
32
+ "polars[excel,graph,numpy,plot,pyarrow,pydantic,style,timezone]>=1.29.0",
33
+ "psutil>=6.0.0",
36
34
  "pydantic>=2.9.2",
37
35
  "pytest>=8.3.5",
38
- "more-itertools>=10.6.0",
39
- "ruff>=0.11.1",
36
+ "requests>=2.32.3",
40
37
  "rich>=13.9.4",
38
+ "ruff>=0.11.1",
39
+ "schedule>=1.2.2",
40
+ "streamlit>=1.45.0",
41
+ "toolz>=0.12.1",
41
42
  "tqdm>=4.67.1",
42
- "numba>=0.61.2",
43
- "llm>=0.26",
44
- "nbformat>=5.10.4",
43
+ # "sqlalchemy>=2.0.35",
45
44
  ]
46
45
 
47
46
  [project.optional-dependencies]
48
47
  gis = [
49
- "rasterio>=1.3.11",
50
- "xarray>=2024.9.0",
51
- "geopandas>=1.0.1",
52
- "folium>=0.17.0",
53
- "shapely>=2.0.6",
54
- "datashader>=0.16.3",
55
- "fiona>=1.10.0",
56
48
  "cartopy>=0.23.0",
57
- "pyproj>=3.6.1",
58
- "pysal>=24.7",
59
- "rioxarray>=0.17.0",
60
- "scikit-image>=0.24.0",
61
- "netcdf4>=1.7.1.post2",
62
- "networkx>=3.3",
49
+ "cftime>=1.6.4",
50
+ "contextily>=1.6.2",
63
51
  "dask-image>=2024.5.3",
52
+ "datashader>=0.16.3",
53
+ "descartes>=1.1.0",
54
+ "fiona>=1.10.0",
55
+ "folium>=0.17.0",
56
+ "geoalchemy>=0.7.2",
57
+ "geopandas>=1.0.1",
58
+ "geopy>=2.4.1",
64
59
  "graphviz>=0.20.3",
65
- "zarr>=2.18.3",
66
60
  "h5netcdf>=1.3.0",
67
- "pydap>=3.5",
68
- "scipy>=1.15",
69
- "cftime>=1.6.4",
70
61
  "iris>=1.0.7",
62
+ "netcdf4>=1.7.1.post2",
63
+ "networkx>=3.3",
71
64
  "pint>=0.24.3",
72
65
  "psycopg2-binary>=2.9.10",
73
- "geoalchemy>=0.7.2",
74
- "geopy>=2.4.1",
75
- "contextily>=1.6.2",
76
- "descartes>=1.1.0",
77
66
  "pydantic-geojson>=0.2.0",
67
+ "pydap>=3.5",
68
+ "pyproj>=3.6.1",
69
+ "pysal>=24.7",
70
+ "rasterio>=1.3.11",
71
+ "rioxarray>=0.17.0",
72
+ "scikit-image>=0.24.0",
73
+ "scipy>=1.15",
74
+ "shapely>=2.0.6",
75
+ "xarray>=2024.9.0",
76
+ "zarr>=2.18.3",
78
77
  ]
79
78
  ml = [
80
- "scikit-learn>=1.6.1",
81
- "yellowbrick>=1.5",
82
- "xgboost>=2.1.1",
83
79
  "eli5>=0.15.0",
80
+ "joblib>=1.4.2",
84
81
  "pyod>=2.0.5",
85
- "textdistance[Levenshtein]>=4.6.3",
82
+ "scikit-learn>=1.6.1",
86
83
  "skorch>=1.0.0",
87
- "joblib>=1.4.2",
84
+ "textdistance[Levenshtein]>=4.6.3",
85
+ "xgboost>=2.1.1",
86
+ "yellowbrick>=1.5",
88
87
  ]
89
88
  web = [
90
- "flask>=3.0.3",
91
- "httpx>=0.27.2",
92
- "fastapi>=0.115.8",
93
89
  "alembic>=1.13.2",
94
- "django>=5.1.1",
90
+ "beautifulsoup4>=4.13.3",
95
91
  "cryptography>=43.0.0",
92
+ "django>=5.1.1",
93
+ "fastapi>=0.115.8",
94
+ "flask>=3.0.3",
95
+ "httpx>=0.27.2",
96
+ "jinja2>=3.1.5",
96
97
  "passlib>=1.7.4",
97
- "sqlalchemy>=2.0.35",
98
98
  "scrapy>=2.12.0",
99
- "beautifulsoup4>=4.13.3",
100
- "jinja2>=3.1.5",
99
+ "sqlalchemy>=2.0.35",
101
100
  ]
102
101
  analytics = [
103
- "duckdb>=1.1.3",
104
- "ibis-framework[duckdb,polars,sqlite]>=10.5.0",
105
- "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3",
106
- # "sqlalchemy[asyncio]>=2.0.35",
107
- "numba>=0.61.0",
108
- "matplotlib>=3.9.2",
109
- "scipy>=1.15.2",
110
- "statsmodels>=0.14.4",
111
- "seaborn>=0.13.2",
112
- "fastexcel>=0.12.1",
102
+ "altair>=5.4.1",
103
+ "bokeh>=3.4.3",
104
+ "bottleneck>=1.4.0",
113
105
  "connectorx>=0.4.1",
114
106
  "dask>=2025.2.0",
107
+ "distributed>=2024.9.1",
108
+ "duckdb>=1.1.3",
109
+ "fastexcel>=0.12.1",
110
+ "formulaic>=1.1.1",
111
+ "glum>=3.1.2",
112
+ "graphviz>=0.20.3",
113
+ "holoviews>=1.19.1",
115
114
  "hvplot>=0.10.0",
115
+ "ibis-framework[duckdb,polars,sqlite]>=10.5.0",
116
+ "matplotlib>=3.9.2",
116
117
  "networkx>=3.3",
117
- "holoviews>=1.19.1",
118
- "bokeh>=3.4.3",
118
+ "numba>=0.61.0",
119
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,spss,sql-other,xml]>=2.2.3",
120
+ "pandera[mypy,pandas,polars]>=0.24.0",
119
121
  "pyod>=2.0.5",
120
- "tables>=3.10.1",
121
- "altair>=5.4.1",
122
- "bottleneck>=1.4.0",
123
- "graphviz>=0.20.3",
124
- "distributed>=2024.9.1",
125
- "streamlit>=1.45.0",
126
- "glum>=3.1.2",
127
122
  "scikit-learn>=1.6.1",
128
- "formulaic>=1.1.1",
123
+ "scipy>=1.15.2",
124
+ "seaborn>=0.13.2",
125
+ "statsmodels>=0.14.4",
126
+ "streamlit>=1.45.0",
127
+ "tables>=3.10.1",
129
128
  "textblob>=0.19.0",
130
129
  "textdistance[Levenshtein]>=4.6.3",
131
- "pandera[mypy,pandas,polars]>=0.24.0",
130
+ # "sqlalchemy[asyncio]>=2.0.35",
132
131
  ]
133
132
  scieng = [
134
- "pooch>=1.8.2",
135
- "h5py>=3.11.0",
136
- "duckdb>=1.1.3",
137
- "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
138
- "numba>=0.61.0",
139
- "scipy>=1.15.2",
140
- "statsmodels>=0.14.4",
141
- "seaborn>=0.13.2",
142
- "fastexcel>=0.12.1",
133
+ "altair>=5.4.1",
134
+ "bokeh>=3.4.3",
135
+ "bottleneck>=1.4.0",
143
136
  "connectorx>=0.4.1",
144
- "pint>=0.24.3",
145
- "scikit-image>=0.24.0",
137
+ "dask-image>=2024.5.3",
146
138
  "dask>=2025.2.0",
147
- "matplotlib>=3.9.2",
139
+ "distributed>=2024.9.1",
140
+ "duckdb>=1.1.3",
141
+ "fastexcel>=0.12.1",
142
+ "formulaic>=1.1.1",
143
+ "glum>=3.1.2",
144
+ "graphviz>=0.20.3",
145
+ "h5py>=3.11.0",
146
+ "holoviews>=1.19.1",
148
147
  "hvplot>=0.10.0",
148
+ "matplotlib>=3.9.2",
149
149
  "networkx>=3.3",
150
- "dask-image>=2024.5.3",
151
- "holoviews>=1.19.1",
152
- "bokeh>=3.4.3",
153
- "streamlit>=1.45.0",
150
+ "numba>=0.61.0",
151
+ "pandas[aws,compression,computation,consortium-standard,excel,feather,fss,hdf5,html,output-formatting,parquet,plot,sql-other,xml]>=2.2.3",
152
+ "pint>=0.24.3",
153
+ "pooch>=1.8.2",
154
154
  "pyod>=2.0.5",
155
+ "scikit-image>=0.24.0",
156
+ "scipy>=1.15.2",
157
+ "seaborn>=0.13.2",
158
+ "statsmodels>=0.14.4",
159
+ "streamlit>=1.45.0",
160
+ "sympy>=1.13.3",
155
161
  "tables>=3.10.1",
156
- "graphviz>=0.20.3",
157
- "altair>=5.4.1",
158
- "bottleneck>=1.4.0",
159
- "graphviz>=0.20.3",
160
162
  "zarr>=2.18.3",
161
- "distributed>=2024.9.1",
162
- "glum>=3.1.2",
163
- "formulaic>=1.1.1",
164
- "sympy>=1.13.3",
165
163
  ]
166
164
  net = [
167
- "pandas[aws,fss]>=2.2.3",
168
- "cryptography>=43.0.0",
169
- "networkx>=3.3",
170
- "psutil>=6.0.0",
171
- "textfsm>=1.1.3",
172
- "pyshark>=0.6",
173
- "pyzmq>=26.2.0",
174
- "aiopath>=0.6.11",
165
+ "aiobotocore>=2.15.1",
166
+ "aiofile>=3.9.0",
175
167
  "aiofiles>=24.1.0",
168
+ "aiometer>=0.5.0",
169
+ "aiopath>=0.6.11",
176
170
  "anyio>=3.7.1",
177
- "httpx>=0.27.2",
178
- "s3fs>=2024.9.0",
179
- "aiobotocore>=2.15.1",
171
+ "boto3>=1.36.3",
172
+ "botocore>=1.36.3",
173
+ "celery>=5.4.0",
174
+ "cryptography>=43.0.0",
175
+ "dask>=2025.2.0",
180
176
  "distributed>=2024.9.1",
181
177
  "fastapi>=0.115.8",
182
- "uvicorn>=0.34.0",
178
+ "ftputil>=5.1.0",
179
+ "httpx>=0.27.2",
183
180
  "locust>=2.33.2",
184
- "aiometer>=0.5.0",
185
- "unsync>=1.4.0",
186
- "pathos>=0.3.3",
187
- "celery>=5.4.0",
188
- "redis>=5.2.1",
189
- "pytest-repeat>=0.9.3",
190
- "aiofile>=3.9.0",
191
- "botocore>=1.36.3",
192
- "boto3>=1.36.3",
181
+ "networkx>=3.3",
182
+ "pandas[aws,fss]>=2.2.3",
193
183
  "passlib>=1.7.4",
194
- "ftputil>=5.1.0",
195
- "dask>=2025.2.0",
184
+ "pathos>=0.3.3",
196
185
  "polars[async,fsspec]>=1.29.0",
186
+ "psutil>=6.0.0",
187
+ "pyshark>=0.6",
188
+ "pytest-repeat>=0.9.3",
189
+ "pyzmq>=26.2.0",
190
+ "redis>=5.2.1",
191
+ "s3fs>=2024.9.0",
192
+ "textfsm>=1.1.3",
193
+ "unsync>=1.4.0",
194
+ "uvicorn>=0.34.0",
197
195
  ]
198
196
  dl = [
199
197
  "dataset>=1.5.2",
@@ -213,39 +211,47 @@ dl = [
213
211
  "yellowbrick>=1.5",
214
212
  ]
215
213
  testing = [
216
- "memory-profiler>=0.61.0",
217
- "line-profiler>=4.1.3",
214
+ "bandit>=1.8.3",
215
+ "black>=25.1.0",
216
+ "dodgy>=0.2.1",
217
+ "flake8-async>=25.3.1",
218
+ "flake8-import-order>=0.18.2",
219
+ "flake8>=7.1.2",
220
+ "gprof2dot>=2024.6.6",
218
221
  "hypothesis>=6.129.4",
222
+ "isort>=6.0.0",
223
+ "line-profiler>=4.1.3",
224
+ "memory-profiler>=0.61.0",
225
+ "mkdocs>=1.6.1",
226
+ "py-spy>=0.4.0",
219
227
  "pycodestyle>=2.12.1",
228
+ "pyinstrument>=5.0.1",
220
229
  "pylint>=3.3.6",
221
- "pytest>=8.3.5",
230
+ "pyt>=1.0.5",
222
231
  "pytest-cov>=6.0.0",
223
232
  "pytest-repeat>=0.9.3",
224
233
  "pytest-xdist>=3.6.1",
225
- "sphinx>=8.1.3",
226
- "mkdocs>=1.6.1",
227
- "flake8-async>=25.3.1",
228
- "flake8-import-order>=0.18.2",
229
- "isort>=6.0.0",
230
- "bandit>=1.8.3",
231
- "dodgy>=0.2.1",
232
- "pyt>=1.0.5",
233
- "black>=25.1.0",
234
- "flake8>=7.1.2",
234
+ "pytest>=8.3.5",
235
235
  "scalene>=1.5.51",
236
236
  "snakeviz>=2.2.2",
237
- "py-spy>=0.4.0",
238
- "pyinstrument>=5.0.1",
239
- "gprof2dot>=2024.6.6",
237
+ "sphinx>=8.1.3",
240
238
  ]
241
239
  db = [
242
- "pandas[sql-other]>=2.2.3",
243
- "redis>=5.2.1",
244
- "sqlalchemy>=2.0.38",
245
240
  "duckdb>=1.1.3",
246
241
  "ibis-framework[duckdb,polars,sqlite]>=10.5.0",
247
- "pyodbc>=5.2.0",
242
+ "pandas[sql-other]>=2.2.3",
248
243
  "polars[database]>=1.29.0",
244
+ "pyodbc>=5.2.0",
245
+ "redis>=5.2.1",
246
+ "sqlalchemy>=2.0.38",
247
+ ]
248
+ bio = [
249
+ "anndata>=0.11.4",
250
+ "biopython>=1.85",
251
+ "paramiko>=3.5.1",
252
+ "pooch>=1.8.2",
253
+ "scanpy>=1.11.2",
254
+ "tqdm>=4.67.1",
249
255
  ]
250
256
 
251
257
  [build-system]
@@ -348,6 +348,25 @@ wheels = [
348
348
  { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944, upload-time = "2024-11-12T19:55:41.782Z" },
349
349
  ]
350
350
 
351
+ [[package]]
352
+ name = "anndata"
353
+ version = "0.11.4"
354
+ source = { registry = "https://pypi.org/simple" }
355
+ dependencies = [
356
+ { name = "array-api-compat" },
357
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
358
+ { name = "h5py" },
359
+ { name = "natsort" },
360
+ { name = "numpy" },
361
+ { name = "packaging" },
362
+ { name = "pandas" },
363
+ { name = "scipy" },
364
+ ]
365
+ sdist = { url = "https://files.pythonhosted.org/packages/6e/bb/895fa2e9f8cd6d1c058aa90759da715037d0f11e23713e692537555549d7/anndata-0.11.4.tar.gz", hash = "sha256:4ce08d09d2ccb5f37d32790363bbcc7fc1b79863842296ae4badfaf48c736e24", size = 541143, upload-time = "2025-03-26T11:38:54.566Z" }
366
+ wheels = [
367
+ { url = "https://files.pythonhosted.org/packages/0a/4b/ab615fea52e34579d5c6c7dba86b4f9d7f3cdb6a170b348ec49f34cf4355/anndata-0.11.4-py3-none-any.whl", hash = "sha256:fefebb1480316dfa5a23924aa9f74781d447484421bb0c788b0b2ca5e3b339d2", size = 144472, upload-time = "2025-03-26T11:38:52.547Z" },
368
+ ]
369
+
351
370
  [[package]]
352
371
  name = "annotated-types"
353
372
  version = "0.7.0"
@@ -413,6 +432,15 @@ wheels = [
413
432
  { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" },
414
433
  ]
415
434
 
435
+ [[package]]
436
+ name = "array-api-compat"
437
+ version = "1.12.0"
438
+ source = { registry = "https://pypi.org/simple" }
439
+ sdist = { url = "https://files.pythonhosted.org/packages/8d/bd/9fa5c7c5621698d5632cc852a79fbbdc28024462c9396698e5fdcb395f37/array_api_compat-1.12.0.tar.gz", hash = "sha256:585bc615f650de53ac24b7c012baecfcdd810f50df3573be47e6dd9fa20df974", size = 99883, upload-time = "2025-05-16T08:49:59.897Z" }
440
+ wheels = [
441
+ { url = "https://files.pythonhosted.org/packages/e0/b1/0542e0cab6f49f151a2d7a42400f84f706fc0b64e85dc1f56708b2e9fd37/array_api_compat-1.12.0-py3-none-any.whl", hash = "sha256:a0b4795b6944a9507fde54679f9350e2ad2b1e2acf4a2408a098cdc27f890a8b", size = 58156, upload-time = "2025-05-16T08:49:58.129Z" },
442
+ ]
443
+
416
444
  [[package]]
417
445
  name = "asciitree"
418
446
  version = "0.3.3"
@@ -530,6 +558,64 @@ wheels = [
530
558
  { url = "https://files.pythonhosted.org/packages/88/85/db74b9233e0aa27ec96891045c5e920a64dd5cbccd50f8e64e9460f48d35/bandit-1.8.3-py3-none-any.whl", hash = "sha256:28f04dc0d258e1dd0f99dee8eefa13d1cb5e3fde1a5ab0c523971f97b289bcd8", size = 129078, upload-time = "2025-02-17T05:24:54.068Z" },
531
559
  ]
532
560
 
561
+ [[package]]
562
+ name = "bcrypt"
563
+ version = "4.3.0"
564
+ source = { registry = "https://pypi.org/simple" }
565
+ sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697, upload-time = "2025-02-28T01:24:09.174Z" }
566
+ wheels = [
567
+ { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719, upload-time = "2025-02-28T01:22:34.539Z" },
568
+ { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001, upload-time = "2025-02-28T01:22:38.078Z" },
569
+ { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451, upload-time = "2025-02-28T01:22:40.787Z" },
570
+ { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792, upload-time = "2025-02-28T01:22:43.144Z" },
571
+ { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752, upload-time = "2025-02-28T01:22:45.56Z" },
572
+ { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762, upload-time = "2025-02-28T01:22:47.023Z" },
573
+ { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384, upload-time = "2025-02-28T01:22:49.221Z" },
574
+ { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329, upload-time = "2025-02-28T01:22:51.603Z" },
575
+ { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241, upload-time = "2025-02-28T01:22:53.283Z" },
576
+ { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617, upload-time = "2025-02-28T01:22:55.461Z" },
577
+ { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751, upload-time = "2025-02-28T01:22:57.81Z" },
578
+ { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965, upload-time = "2025-02-28T01:22:59.181Z" },
579
+ { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316, upload-time = "2025-02-28T01:23:00.763Z" },
580
+ { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752, upload-time = "2025-02-28T01:23:02.908Z" },
581
+ { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019, upload-time = "2025-02-28T01:23:05.838Z" },
582
+ { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174, upload-time = "2025-02-28T01:23:07.274Z" },
583
+ { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870, upload-time = "2025-02-28T01:23:09.151Z" },
584
+ { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601, upload-time = "2025-02-28T01:23:11.461Z" },
585
+ { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660, upload-time = "2025-02-28T01:23:12.989Z" },
586
+ { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083, upload-time = "2025-02-28T01:23:14.5Z" },
587
+ { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237, upload-time = "2025-02-28T01:23:16.686Z" },
588
+ { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737, upload-time = "2025-02-28T01:23:18.897Z" },
589
+ { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741, upload-time = "2025-02-28T01:23:21.041Z" },
590
+ { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472, upload-time = "2025-02-28T01:23:23.183Z" },
591
+ { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606, upload-time = "2025-02-28T01:23:25.361Z" },
592
+ { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867, upload-time = "2025-02-28T01:23:26.875Z" },
593
+ { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589, upload-time = "2025-02-28T01:23:28.381Z" },
594
+ { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794, upload-time = "2025-02-28T01:23:30.187Z" },
595
+ { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969, upload-time = "2025-02-28T01:23:31.945Z" },
596
+ { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158, upload-time = "2025-02-28T01:23:34.161Z" },
597
+ { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285, upload-time = "2025-02-28T01:23:35.765Z" },
598
+ { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583, upload-time = "2025-02-28T01:23:38.021Z" },
599
+ { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896, upload-time = "2025-02-28T01:23:39.575Z" },
600
+ { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492, upload-time = "2025-02-28T01:23:40.901Z" },
601
+ { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213, upload-time = "2025-02-28T01:23:42.653Z" },
602
+ { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162, upload-time = "2025-02-28T01:23:43.964Z" },
603
+ { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856, upload-time = "2025-02-28T01:23:46.011Z" },
604
+ { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726, upload-time = "2025-02-28T01:23:47.575Z" },
605
+ { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664, upload-time = "2025-02-28T01:23:49.059Z" },
606
+ { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128, upload-time = "2025-02-28T01:23:50.399Z" },
607
+ { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598, upload-time = "2025-02-28T01:23:51.775Z" },
608
+ { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799, upload-time = "2025-02-28T01:23:53.139Z" },
609
+ { url = "https://files.pythonhosted.org/packages/55/2d/0c7e5ab0524bf1a443e34cdd3926ec6f5879889b2f3c32b2f5074e99ed53/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1", size = 275367, upload-time = "2025-02-28T01:23:54.578Z" },
610
+ { url = "https://files.pythonhosted.org/packages/10/4f/f77509f08bdff8806ecc4dc472b6e187c946c730565a7470db772d25df70/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d", size = 280644, upload-time = "2025-02-28T01:23:56.547Z" },
611
+ { url = "https://files.pythonhosted.org/packages/35/18/7d9dc16a3a4d530d0a9b845160e9e5d8eb4f00483e05d44bb4116a1861da/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492", size = 274881, upload-time = "2025-02-28T01:23:57.935Z" },
612
+ { url = "https://files.pythonhosted.org/packages/df/c4/ae6921088adf1e37f2a3a6a688e72e7d9e45fdd3ae5e0bc931870c1ebbda/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90", size = 280203, upload-time = "2025-02-28T01:23:59.331Z" },
613
+ { url = "https://files.pythonhosted.org/packages/4c/b1/1289e21d710496b88340369137cc4c5f6ee036401190ea116a7b4ae6d32a/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a", size = 275103, upload-time = "2025-02-28T01:24:00.764Z" },
614
+ { url = "https://files.pythonhosted.org/packages/94/41/19be9fe17e4ffc5d10b7b67f10e459fc4eee6ffe9056a88de511920cfd8d/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce", size = 280513, upload-time = "2025-02-28T01:24:02.243Z" },
615
+ { url = "https://files.pythonhosted.org/packages/aa/73/05687a9ef89edebdd8ad7474c16d8af685eb4591c3c38300bb6aad4f0076/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8", size = 274685, upload-time = "2025-02-28T01:24:04.512Z" },
616
+ { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" },
617
+ ]
618
+
533
619
  [[package]]
534
620
  name = "beautifulsoup4"
535
621
  version = "4.13.3"
@@ -552,6 +638,42 @@ wheels = [
552
638
  { url = "https://files.pythonhosted.org/packages/30/da/43b15f28fe5f9e027b41c539abc5469052e9d48fd75f8ff094ba2a0ae767/billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb", size = 86766, upload-time = "2024-09-21T13:40:20.188Z" },
553
639
  ]
554
640
 
641
+ [[package]]
642
+ name = "biopython"
643
+ version = "1.85"
644
+ source = { registry = "https://pypi.org/simple" }
645
+ dependencies = [
646
+ { name = "numpy" },
647
+ ]
648
+ sdist = { url = "https://files.pythonhosted.org/packages/db/ca/1d5fab0fedaf5c2f376d9746d447cdce04241c433602c3861693361ce54c/biopython-1.85.tar.gz", hash = "sha256:5dafab74059de4e78f49f6b5684eddae6e7ce46f09cfa059c1d1339e8b1ea0a6", size = 19909902, upload-time = "2025-01-15T15:06:51.997Z" }
649
+ wheels = [
650
+ { url = "https://files.pythonhosted.org/packages/79/de/79824470fdc5c2aedeb1bab637d24eab654a7e9fbb7070f779fd944fd1ca/biopython-1.85-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6308053a61f3bdbb11504ece4cf24e264c6f1d6fad278f7e59e6b84b0d9a7b4", size = 2787511, upload-time = "2025-01-15T15:11:56.656Z" },
651
+ { url = "https://files.pythonhosted.org/packages/4b/d6/3c90df2ebc4f2a522235f4391392253e528f19f5fb6a52396a2316e17064/biopython-1.85-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:434dd23e972b0c89e128f2ebbd16b38075d609184f4f1fd16368035f923019c2", size = 2765456, upload-time = "2025-01-15T15:12:05.177Z" },
652
+ { url = "https://files.pythonhosted.org/packages/ff/d7/34233c4ee906b088b199eb2af9c4107384a547d44b5960257ef2bf2cc3c8/biopython-1.85-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a08d082e85778259a83501063871e00ba57336136403b75050eea14d523c00a", size = 3225137, upload-time = "2025-01-15T15:12:15.847Z" },
653
+ { url = "https://files.pythonhosted.org/packages/ae/6b/e7a5ae49ef7e8f81720593db22e884c1c8e3504e0e235da0395758a5c7d0/biopython-1.85-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93464e629950e4df87d810125dc4e904538a4344b924f340908ea5bc95db986", size = 3245258, upload-time = "2025-01-15T15:12:21.012Z" },
654
+ { url = "https://files.pythonhosted.org/packages/68/2c/0035656dbe51ac0bbe81321172b43c37b38408f8d136abaac443e9f44b62/biopython-1.85-cp310-cp310-win32.whl", hash = "sha256:f2f45ab3f1e43fdaa697fd753148999090298623278097c19c2c3c0ba134e57c", size = 2786505, upload-time = "2025-01-15T15:12:26.545Z" },
655
+ { url = "https://files.pythonhosted.org/packages/32/a4/f20d5830dbd8654c13e763daef429fa32ef0b2b09749ac427d045cc81976/biopython-1.85-cp310-cp310-win_amd64.whl", hash = "sha256:7c8326cd2825ba166abecaf72843b9b15823affd6cec04fde65f0d2526767da4", size = 2820961, upload-time = "2025-01-15T15:12:32.364Z" },
656
+ { url = "https://files.pythonhosted.org/packages/c3/73/c3a1323a3fe0d07212b09c04fb903e2cbb98aebfbb58e55e8717473e1bc0/biopython-1.85-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db8822adab0cd75a6e6ae845acf312addd8eab5f9b731c191454b961fc2c2cdc", size = 2787585, upload-time = "2025-01-15T15:12:36.927Z" },
657
+ { url = "https://files.pythonhosted.org/packages/ff/cf/299524e896fa49beb7588143e1509cce4848572215ebafb8eea83a861820/biopython-1.85-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e2bbe58cc1a592b239ef6d68396745d3fbfaafc668ce38283871d8ff070dbab", size = 2765608, upload-time = "2025-01-15T15:12:43.853Z" },
658
+ { url = "https://files.pythonhosted.org/packages/b1/dd/be3e95b72a35ee6d52c84412e15af828951e5c69175080d4619985fd54ce/biopython-1.85-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5916eb56df7ecd4a3babc07a48d4894c40cfb45dc18ccda1c148d0131017ce04", size = 3237552, upload-time = "2025-01-15T15:12:49.046Z" },
659
+ { url = "https://files.pythonhosted.org/packages/25/9c/612821b946930b6caa5d795cfe4169ed6a522562eced9776914be7efaf21/biopython-1.85-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0cec8833bf3036049129944ee5382dd576dac9670c3814ff2314b52aa94f199", size = 3257287, upload-time = "2025-01-15T15:12:56.168Z" },
660
+ { url = "https://files.pythonhosted.org/packages/a1/77/316e51dd42fd8225429574a268bdc627ce4f42067a3976c4c8c457a42023/biopython-1.85-cp311-cp311-win32.whl", hash = "sha256:cf88a4c8d8af13138be115949639a5e4a201618185a72ff09adbe175b7946b28", size = 2786411, upload-time = "2025-01-15T15:13:02.754Z" },
661
+ { url = "https://files.pythonhosted.org/packages/f2/11/3c4e8c049b91998bbbd51ddebc6f790b1aa66211babfbf5ff008a72fb1f9/biopython-1.85-cp311-cp311-win_amd64.whl", hash = "sha256:d3c99db65d57ae4fc5034e42ac6cd8ddce069e664903f04c8a4f684d7609d6fa", size = 2820912, upload-time = "2025-01-15T15:13:10.499Z" },
662
+ { url = "https://files.pythonhosted.org/packages/a3/25/e46f05359df7f0049c3adc5eaeb9aee0f5fbde1d959d05c78eb1de8f4d12/biopython-1.85-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc5b981b9e3060db7c355b6145dfe3ce0b6572e1601b31211f6d742b10543874", size = 2789327, upload-time = "2025-01-15T15:13:17.086Z" },
663
+ { url = "https://files.pythonhosted.org/packages/54/5b/8b3b029c94c63ab4c1781d141615b4a837e658422381d460c5573d5d8262/biopython-1.85-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6fe47d704c2d3afac99aeb461219ec5f00273120d2d99835dc0a9a617f520141", size = 2765805, upload-time = "2025-01-15T15:13:26.92Z" },
664
+ { url = "https://files.pythonhosted.org/packages/69/0a/9a8a38eff03c4607b9cec8d0e08c76b346b1cee1f77bc6d00efebfc7ec83/biopython-1.85-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54e495239e623660ad367498c2f7a1a294b1997ba603f2ceafb36fd18f0eba6", size = 3249276, upload-time = "2025-01-15T15:13:36.639Z" },
665
+ { url = "https://files.pythonhosted.org/packages/b4/0d/b7a0f10f5100dcf51ae36ba31490169bfa45617323bd82af43e1fb0098fb/biopython-1.85-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d024ad48997ad53d53a77da24b072aaba8a550bd816af8f2e7e606a9918a3b43", size = 3268869, upload-time = "2025-01-15T15:13:44.009Z" },
666
+ { url = "https://files.pythonhosted.org/packages/07/51/646a4b7bdb4c1153786a70d33588ed09178bfcdda0542dfdc976294f4312/biopython-1.85-cp312-cp312-win32.whl", hash = "sha256:6985e17a2911defcbd30275a12f5ed5de2765e4bc91a60439740d572fdbfdf43", size = 2787011, upload-time = "2025-01-15T15:13:48.958Z" },
667
+ { url = "https://files.pythonhosted.org/packages/c1/84/c583fa2ac6e7d392d24ebdc5c99e95e517507de22cf143efb6cf1fc93ff5/biopython-1.85-cp312-cp312-win_amd64.whl", hash = "sha256:d6f8efb2db03f2ec115c5e8c764dbadf635e0c9ecd4c0e91fc8216c1b62f85f5", size = 2820972, upload-time = "2025-01-15T15:13:54.475Z" },
668
+ { url = "https://files.pythonhosted.org/packages/c3/3f/65814bf221f0bfdd2633830e573ac8594794686f54110571dce98cc32fd3/biopython-1.85-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bae6f17262f20e9587d419ba5683e9dc93a31ee1858b98fa0cff203694d5b786", size = 2789844, upload-time = "2025-01-15T15:14:01.171Z" },
669
+ { url = "https://files.pythonhosted.org/packages/be/61/1443ce34226e261c20ae4a154b2bab72c109cf31415c92c54c1aada36b00/biopython-1.85-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b1e4918e6399ab0183dd863527fec18b53b7c61b6f0ef95db84b4adfa430ce75", size = 2765767, upload-time = "2025-01-15T15:14:07.096Z" },
670
+ { url = "https://files.pythonhosted.org/packages/53/51/bec4c763c704e2715691bb087cfab5907804a1bbef5873588698cece1a30/biopython-1.85-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86e487b6fe0f20a2b0138cb53f3d4dc26a7e4060ac4cb6fb1d19e194d445ef46", size = 3248867, upload-time = "2025-01-15T15:14:12.822Z" },
671
+ { url = "https://files.pythonhosted.org/packages/9e/a4/552f20253a7c95988067c4955831bd17dd9b864fd5c215d15c2f63f2d415/biopython-1.85-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:327184048b5a50634ae0970119bcb8a35b76d7cefb2658a01f772915f2fb7686", size = 3268479, upload-time = "2025-01-15T15:14:20.414Z" },
672
+ { url = "https://files.pythonhosted.org/packages/97/f4/6dfc6ef3e0997f792f93893551d4a9bf7f6052a70d34f4e1b1e5e4a359f6/biopython-1.85-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66b08905fb1b3f5194f908aaf04bbad474c4e3eaebad6d9f889a04e64dd1faf4", size = 3192338, upload-time = "2025-01-15T15:14:26.843Z" },
673
+ { url = "https://files.pythonhosted.org/packages/9d/8c/73da6588fab3a7d734118f21ac619c0a949f51d3cf7b1b8343d175c33460/biopython-1.85-cp313-cp313-win32.whl", hash = "sha256:5a236ab1e2797c7dcf1577d80fdaafabead2908bc338eaed0aa1509dab769fef", size = 2787017, upload-time = "2025-01-15T15:14:33.802Z" },
674
+ { url = "https://files.pythonhosted.org/packages/60/ff/fe8f03ac0ccc7219e0959010750c6ac1a5b1411c91c7f4ec3a37d8313673/biopython-1.85-cp313-cp313-win_amd64.whl", hash = "sha256:1b61593765e9ebdb71d73307d55fd4b46eb976608d329ae6803c084d90ed34c7", size = 2821012, upload-time = "2025-01-15T15:14:40.825Z" },
675
+ ]
676
+
555
677
  [[package]]
556
678
  name = "black"
557
679
  version = "25.1.0"
@@ -3352,6 +3474,15 @@ wheels = [
3352
3474
  { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" },
3353
3475
  ]
3354
3476
 
3477
+ [[package]]
3478
+ name = "legacy-api-wrap"
3479
+ version = "1.4.1"
3480
+ source = { registry = "https://pypi.org/simple" }
3481
+ sdist = { url = "https://files.pythonhosted.org/packages/a4/07/fbc3cf8cf3759c5f234af9d94761f09f41e6d0aa912b2a9dfda19a48855a/legacy_api_wrap-1.4.1.tar.gz", hash = "sha256:9c40d67aa8312fec8763e87cbf28fea4b67710c79ca7a18137b573d150f3b2b4", size = 11003, upload-time = "2024-11-22T13:40:06.911Z" }
3482
+ wheels = [
3483
+ { url = "https://files.pythonhosted.org/packages/3c/1d/9324c70629dfe4395f9122ab331cf245d3cce6ded851aa8a0a8ae264c4e6/legacy_api_wrap-1.4.1-py3-none-any.whl", hash = "sha256:8ba214242e836cebfd3b64c1a1653fce955abb0f9e4c7dffb51f2ad014def0eb", size = 9986, upload-time = "2024-11-22T13:40:05.265Z" },
3484
+ ]
3485
+
3355
3486
  [[package]]
3356
3487
  name = "legacy-cgi"
3357
3488
  version = "2.6.2"
@@ -4283,6 +4414,15 @@ wheels = [
4283
4414
  { url = "https://files.pythonhosted.org/packages/15/fc/420680ad8b0cf81372eee7a213a7b7173ec5a628f0d5b2426047fe55c3b3/narwhals-1.26.0-py3-none-any.whl", hash = "sha256:4af8bbdea9e45638bb9a981568a8dfa880e40eb7dcf740d19fd32aea79223c6f", size = 306574, upload-time = "2025-02-10T12:14:32.149Z" },
4284
4415
  ]
4285
4416
 
4417
+ [[package]]
4418
+ name = "natsort"
4419
+ version = "8.4.0"
4420
+ source = { registry = "https://pypi.org/simple" }
4421
+ sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" }
4422
+ wheels = [
4423
+ { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" },
4424
+ ]
4425
+
4286
4426
  [[package]]
4287
4427
  name = "natural"
4288
4428
  version = "0.2.0"
@@ -4816,6 +4956,20 @@ wheels = [
4816
4956
  { url = "https://files.pythonhosted.org/packages/99/56/370a6636e072a037b52499edd8928942df7f887974fc54444ece5152d26a/param-2.2.0-py3-none-any.whl", hash = "sha256:777f8c7b66ab820b70ea5ad09faaa6818308220caae89da3b5c5f359faa72a5e", size = 119008, upload-time = "2024-12-16T22:40:11.12Z" },
4817
4957
  ]
4818
4958
 
4959
+ [[package]]
4960
+ name = "paramiko"
4961
+ version = "3.5.1"
4962
+ source = { registry = "https://pypi.org/simple" }
4963
+ dependencies = [
4964
+ { name = "bcrypt" },
4965
+ { name = "cryptography" },
4966
+ { name = "pynacl" },
4967
+ ]
4968
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110, upload-time = "2025-02-04T02:37:59.783Z" }
4969
+ wheels = [
4970
+ { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" },
4971
+ ]
4972
+
4819
4973
  [[package]]
4820
4974
  name = "parse"
4821
4975
  version = "1.20.2"
@@ -5792,6 +5946,42 @@ wheels = [
5792
5946
  { url = "https://files.pythonhosted.org/packages/31/21/9537fc94aee9ec7316a230a49895266cf02d78aa29b0a2efbc39566e0935/pylint-3.3.6-py3-none-any.whl", hash = "sha256:8b7c2d3e86ae3f94fb27703d521dd0b9b6b378775991f504d7c3a6275aa0a6a6", size = 522462, upload-time = "2025-03-20T11:25:36.13Z" },
5793
5947
  ]
5794
5948
 
5949
+ [[package]]
5950
+ name = "pynacl"
5951
+ version = "1.5.0"
5952
+ source = { registry = "https://pypi.org/simple" }
5953
+ dependencies = [
5954
+ { name = "cffi" },
5955
+ ]
5956
+ sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload-time = "2022-01-07T22:05:41.134Z" }
5957
+ wheels = [
5958
+ { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload-time = "2022-01-07T22:05:49.156Z" },
5959
+ { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload-time = "2022-01-07T22:05:50.989Z" },
5960
+ { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload-time = "2022-01-07T22:05:52.539Z" },
5961
+ { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload-time = "2022-01-07T22:05:54.251Z" },
5962
+ { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload-time = "2022-01-07T22:05:56.056Z" },
5963
+ { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload-time = "2022-01-07T22:05:57.434Z" },
5964
+ { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload-time = "2022-01-07T22:05:58.665Z" },
5965
+ { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload-time = "2022-01-07T22:06:00.085Z" },
5966
+ { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload-time = "2022-01-07T22:06:01.861Z" },
5967
+ ]
5968
+
5969
+ [[package]]
5970
+ name = "pynndescent"
5971
+ version = "0.5.13"
5972
+ source = { registry = "https://pypi.org/simple" }
5973
+ dependencies = [
5974
+ { name = "joblib" },
5975
+ { name = "llvmlite" },
5976
+ { name = "numba" },
5977
+ { name = "scikit-learn" },
5978
+ { name = "scipy" },
5979
+ ]
5980
+ sdist = { url = "https://files.pythonhosted.org/packages/7e/58/560a4db5eb3794d922fe55804b10326534ded3d971e1933c1eef91193f5e/pynndescent-0.5.13.tar.gz", hash = "sha256:d74254c0ee0a1eeec84597d5fe89fedcf778593eeabe32c2f97412934a9800fb", size = 2975955, upload-time = "2024-06-17T15:48:32.914Z" }
5981
+ wheels = [
5982
+ { url = "https://files.pythonhosted.org/packages/d2/53/d23a97e0a2c690d40b165d1062e2c4ccc796be458a1ce59f6ba030434663/pynndescent-0.5.13-py3-none-any.whl", hash = "sha256:69aabb8f394bc631b6ac475a1c7f3994c54adf3f51cd63b2730fefba5771b949", size = 56850, upload-time = "2024-06-17T15:48:31.184Z" },
5983
+ ]
5984
+
5795
5985
  [[package]]
5796
5986
  name = "pyod"
5797
5987
  version = "2.0.5"
@@ -6197,7 +6387,7 @@ wheels = [
6197
6387
 
6198
6388
  [[package]]
6199
6389
  name = "pythoncharmers-meta"
6200
- version = "0.6.0"
6390
+ version = "0.6.1"
6201
6391
  source = { editable = "." }
6202
6392
  dependencies = [
6203
6393
  { name = "black" },
@@ -6268,6 +6458,14 @@ analytics = [
6268
6458
  { name = "textblob" },
6269
6459
  { name = "textdistance", extra = ["levenshtein"] },
6270
6460
  ]
6461
+ bio = [
6462
+ { name = "anndata" },
6463
+ { name = "biopython" },
6464
+ { name = "paramiko" },
6465
+ { name = "pooch" },
6466
+ { name = "scanpy" },
6467
+ { name = "tqdm" },
6468
+ ]
6271
6469
  db = [
6272
6470
  { name = "duckdb" },
6273
6471
  { name = "ibis-framework", extra = ["duckdb", "polars", "sqlite"] },
@@ -6449,9 +6647,11 @@ requires-dist = [
6449
6647
  { name = "alembic", marker = "extra == 'web'", specifier = ">=1.13.2" },
6450
6648
  { name = "altair", marker = "extra == 'analytics'", specifier = ">=5.4.1" },
6451
6649
  { name = "altair", marker = "extra == 'scieng'", specifier = ">=5.4.1" },
6650
+ { name = "anndata", marker = "extra == 'bio'", specifier = ">=0.11.4" },
6452
6651
  { name = "anyio", marker = "extra == 'net'", specifier = ">=3.7.1" },
6453
6652
  { name = "bandit", marker = "extra == 'testing'", specifier = ">=1.8.3" },
6454
6653
  { name = "beautifulsoup4", marker = "extra == 'web'", specifier = ">=4.13.3" },
6654
+ { name = "biopython", marker = "extra == 'bio'", specifier = ">=1.85" },
6455
6655
  { name = "black", specifier = ">=24.8.0" },
6456
6656
  { name = "black", marker = "extra == 'testing'", specifier = ">=25.1.0" },
6457
6657
  { name = "bokeh", marker = "extra == 'analytics'", specifier = ">=3.4.3" },
@@ -6566,6 +6766,7 @@ requires-dist = [
6566
6766
  { name = "pandas", extras = ["aws", "fss"], marker = "extra == 'net'", specifier = ">=2.2.3" },
6567
6767
  { name = "pandas", extras = ["sql-other"], marker = "extra == 'db'", specifier = ">=2.2.3" },
6568
6768
  { name = "pandera", extras = ["mypy", "pandas", "polars"], marker = "extra == 'analytics'", specifier = ">=0.24.0" },
6769
+ { name = "paramiko", marker = "extra == 'bio'", specifier = ">=3.5.1" },
6569
6770
  { name = "parse", specifier = ">=1.20.2" },
6570
6771
  { name = "passlib", marker = "extra == 'net'", specifier = ">=1.7.4" },
6571
6772
  { name = "passlib", marker = "extra == 'web'", specifier = ">=1.7.4" },
@@ -6576,6 +6777,7 @@ requires-dist = [
6576
6777
  { name = "polars", extras = ["async", "fsspec"], marker = "extra == 'net'", specifier = ">=1.29.0" },
6577
6778
  { name = "polars", extras = ["database"], marker = "extra == 'db'", specifier = ">=1.29.0" },
6578
6779
  { name = "polars", extras = ["excel", "graph", "numpy", "plot", "pyarrow", "pydantic", "style", "timezone"], specifier = ">=1.29.0" },
6780
+ { name = "pooch", marker = "extra == 'bio'", specifier = ">=1.8.2" },
6579
6781
  { name = "pooch", marker = "extra == 'scieng'", specifier = ">=1.8.2" },
6580
6782
  { name = "prophet", marker = "extra == 'dl'", specifier = ">=1.1.6" },
6581
6783
  { name = "psutil", specifier = ">=6.0.0" },
@@ -6613,6 +6815,7 @@ requires-dist = [
6613
6815
  { name = "ruff", specifier = ">=0.11.1" },
6614
6816
  { name = "s3fs", marker = "extra == 'net'", specifier = ">=2024.9.0" },
6615
6817
  { name = "scalene", marker = "extra == 'testing'", specifier = ">=1.5.51" },
6818
+ { name = "scanpy", marker = "extra == 'bio'", specifier = ">=1.11.2" },
6616
6819
  { name = "schedule", specifier = ">=1.2.2" },
6617
6820
  { name = "scikit-image", marker = "extra == 'gis'", specifier = ">=0.24.0" },
6618
6821
  { name = "scikit-image", marker = "extra == 'scieng'", specifier = ">=0.24.0" },
@@ -6648,6 +6851,7 @@ requires-dist = [
6648
6851
  { name = "textfsm", marker = "extra == 'net'", specifier = ">=1.1.3" },
6649
6852
  { name = "toolz", specifier = ">=0.12.1" },
6650
6853
  { name = "tqdm", specifier = ">=4.67.1" },
6854
+ { name = "tqdm", marker = "extra == 'bio'", specifier = ">=4.67.1" },
6651
6855
  { name = "transformers", marker = "extra == 'dl'", specifier = ">=4.49.0" },
6652
6856
  { name = "unsync", marker = "extra == 'net'", specifier = ">=1.4.0" },
6653
6857
  { name = "uvicorn", marker = "extra == 'net'", specifier = ">=0.34.0" },
@@ -6659,7 +6863,7 @@ requires-dist = [
6659
6863
  { name = "zarr", marker = "extra == 'gis'", specifier = ">=2.18.3" },
6660
6864
  { name = "zarr", marker = "extra == 'scieng'", specifier = ">=2.18.3" },
6661
6865
  ]
6662
- provides-extras = ["gis", "ml", "web", "analytics", "scieng", "net", "dl", "testing", "db"]
6866
+ provides-extras = ["gis", "ml", "web", "analytics", "scieng", "net", "dl", "testing", "db", "bio"]
6663
6867
 
6664
6868
  [[package]]
6665
6869
  name = "pytz"
@@ -7379,6 +7583,38 @@ wheels = [
7379
7583
  { url = "https://files.pythonhosted.org/packages/09/62/a3ea6afe4498a3cc2d45c7e544a766ff44449cc25596cbbea43df6c56d01/scalene-1.5.51-cp313-cp313-win_amd64.whl", hash = "sha256:bdb261a2f7f17724fe27e4c7d703136a75dd45da940c18db7c6cbe8937d5315f", size = 862381, upload-time = "2025-01-27T22:23:03.93Z" },
7380
7584
  ]
7381
7585
 
7586
+ [[package]]
7587
+ name = "scanpy"
7588
+ version = "1.11.2"
7589
+ source = { registry = "https://pypi.org/simple" }
7590
+ dependencies = [
7591
+ { name = "anndata" },
7592
+ { name = "h5py" },
7593
+ { name = "joblib" },
7594
+ { name = "legacy-api-wrap" },
7595
+ { name = "matplotlib" },
7596
+ { name = "natsort" },
7597
+ { name = "networkx" },
7598
+ { name = "numba" },
7599
+ { name = "numpy" },
7600
+ { name = "packaging" },
7601
+ { name = "pandas" },
7602
+ { name = "patsy" },
7603
+ { name = "pynndescent" },
7604
+ { name = "scikit-learn" },
7605
+ { name = "scipy" },
7606
+ { name = "seaborn" },
7607
+ { name = "session-info2" },
7608
+ { name = "statsmodels" },
7609
+ { name = "tqdm" },
7610
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
7611
+ { name = "umap-learn" },
7612
+ ]
7613
+ sdist = { url = "https://files.pythonhosted.org/packages/fc/a9/4f619c500e75267897d5d65ee8c864355a1693d22da03af09d90f43dc717/scanpy-1.11.2.tar.gz", hash = "sha256:cde3a142aa12bd3a6894756d50c245cd6ec7776bba4b244c5099b0666f7455bd", size = 14087080, upload-time = "2025-05-28T12:41:21.216Z" }
7614
+ wheels = [
7615
+ { url = "https://files.pythonhosted.org/packages/f5/7b/f58f238bc3062aa7cd17a1c26bbe539233c3776bd6acd819545c269731ad/scanpy-1.11.2-py3-none-any.whl", hash = "sha256:a97d5b74c1ae2d60caf504fd530a83f2e61e46d889f8d19f797a2bbc2d64dff3", size = 2100108, upload-time = "2025-05-28T12:41:19.267Z" },
7616
+ ]
7617
+
7382
7618
  [[package]]
7383
7619
  name = "schedule"
7384
7620
  version = "1.2.2"
@@ -7616,6 +7852,15 @@ wheels = [
7616
7852
  { url = "https://files.pythonhosted.org/packages/08/2c/ca6dd598b384bc1ce581e24aaae0f2bed4ccac57749d5c3befbb5e742081/service_identity-24.2.0-py3-none-any.whl", hash = "sha256:6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85", size = 11364, upload-time = "2024-10-26T07:21:56.302Z" },
7617
7853
  ]
7618
7854
 
7855
+ [[package]]
7856
+ name = "session-info2"
7857
+ version = "0.1.2"
7858
+ source = { registry = "https://pypi.org/simple" }
7859
+ sdist = { url = "https://files.pythonhosted.org/packages/c9/68/b38d41c69044fdd2b73595fdbc854c5e3df964f26adf1fbd5c041bea30c9/session_info2-0.1.2.tar.gz", hash = "sha256:bdb75885128333611e0cf4357f31a0b5869bcb7889b93251ed8571aa4e4ad0b6", size = 22037, upload-time = "2024-12-17T12:27:47.635Z" }
7860
+ wheels = [
7861
+ { url = "https://files.pythonhosted.org/packages/db/98/9578ce1d8ae951cf44e6b7434854824f0eae12d54b270e80014f8ab1971c/session_info2-0.1.2-py3-none-any.whl", hash = "sha256:8f5c010b621930556eee640f6a71d76f0c746ed1194b27ad227e6fe6e61883d4", size = 14716, upload-time = "2024-12-17T12:27:46.367Z" },
7862
+ ]
7863
+
7619
7864
  [[package]]
7620
7865
  name = "setuptools"
7621
7866
  version = "75.8.0"
@@ -8695,6 +8940,23 @@ wheels = [
8695
8940
  { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229, upload-time = "2024-02-09T16:52:00.371Z" },
8696
8941
  ]
8697
8942
 
8943
+ [[package]]
8944
+ name = "umap-learn"
8945
+ version = "0.5.7"
8946
+ source = { registry = "https://pypi.org/simple" }
8947
+ dependencies = [
8948
+ { name = "numba" },
8949
+ { name = "numpy" },
8950
+ { name = "pynndescent" },
8951
+ { name = "scikit-learn" },
8952
+ { name = "scipy" },
8953
+ { name = "tqdm" },
8954
+ ]
8955
+ sdist = { url = "https://files.pythonhosted.org/packages/6f/d4/9ed627905f7993349671283b3c5bf2d9f543ef79229fa1c7e01324eb900c/umap-learn-0.5.7.tar.gz", hash = "sha256:b2a97973e4c6ffcebf241100a8de589a4c84126a832ab40f296c6d9fcc5eb19e", size = 92680, upload-time = "2024-10-28T18:05:57.093Z" }
8956
+ wheels = [
8957
+ { url = "https://files.pythonhosted.org/packages/3c/8f/671c0e1f2572ba625cbcc1faeba9435e00330c3d6962858711445cf1e817/umap_learn-0.5.7-py3-none-any.whl", hash = "sha256:6a7e0be2facfa365a5ed6588447102bdbef32a0ef449535c25c97ea7e680073c", size = 88815, upload-time = "2024-10-28T18:05:55.333Z" },
8958
+ ]
8959
+
8698
8960
  [[package]]
8699
8961
  name = "unsync"
8700
8962
  version = "1.4.0"