dayhoff-tools 1.0.9__tar.gz → 1.0.14__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.
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/PKG-INFO +14 -8
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/cli/main.py +2 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/cli/utility_commands.py +173 -43
- dayhoff_tools-1.0.14/pyproject.toml +73 -0
- dayhoff_tools-1.0.9/pyproject.toml +0 -53
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/README.md +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/__init__.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/chemistry/standardizer.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/chemistry/utils.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/cli/__init__.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/cli/cloud_commands.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/cli/swarm_commands.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/base.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/deploy_aws.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/deploy_utils.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/job_runner.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/processors.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/deployment/swarm.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/embedders.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/fasta.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/file_ops.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/gcp.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/h5.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/kegg.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/logs.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/mmseqs.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/sqlite.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/structure.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/uniprot.py +0 -0
- {dayhoff_tools-1.0.9 → dayhoff_tools-1.0.14}/dayhoff_tools/warehouse.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: dayhoff-tools
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.14
|
4
4
|
Summary: Common tools for all the repos at Dayhoff Labs
|
5
5
|
Author: Daniel Martin-Alarcon
|
6
6
|
Author-email: dma@dayhofflabs.com
|
@@ -10,16 +10,22 @@ Classifier: Programming Language :: Python :: 3.10
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
13
|
-
Provides-Extra:
|
14
|
-
Requires-Dist: biopython (>=1.84) ; extra == "
|
15
|
-
Requires-Dist: boto3 (>=1.36.8) ; extra == "
|
16
|
-
Requires-Dist: docker (>=7.1.0) ; extra == "
|
17
|
-
Requires-Dist: fair-esm (>=2.0.0) ; extra == "
|
13
|
+
Provides-Extra: full
|
14
|
+
Requires-Dist: biopython (>=1.84) ; extra == "full"
|
15
|
+
Requires-Dist: boto3 (>=1.36.8) ; extra == "full"
|
16
|
+
Requires-Dist: docker (>=7.1.0) ; extra == "full"
|
17
|
+
Requires-Dist: fair-esm (>=2.0.0) ; extra == "full"
|
18
18
|
Requires-Dist: firebase-admin (>=6.5.0)
|
19
|
-
Requires-Dist: h5py (>=3.11.0) ; extra == "
|
19
|
+
Requires-Dist: h5py (>=3.11.0) ; extra == "full"
|
20
|
+
Requires-Dist: pandas (>=2.2.3) ; extra == "full"
|
20
21
|
Requires-Dist: pyyaml (>=6.0)
|
21
|
-
Requires-Dist: questionary (>=2.0.1) ; extra == "
|
22
|
+
Requires-Dist: questionary (>=2.0.1) ; extra == "full"
|
23
|
+
Requires-Dist: rdkit-pypi (>=2022.9.5) ; extra == "full"
|
22
24
|
Requires-Dist: requests (>=2.31.0)
|
25
|
+
Requires-Dist: sqlalchemy (>=2.0.40,<3.0.0) ; extra == "full"
|
26
|
+
Requires-Dist: torch (==2.4.0+cu121) ; extra == "full"
|
27
|
+
Requires-Dist: torchvision (==0.19.0+cu121) ; extra == "full"
|
28
|
+
Requires-Dist: transformers (==4.36.2) ; extra == "full"
|
23
29
|
Requires-Dist: typer (>=0.9.0)
|
24
30
|
Description-Content-Type: text/markdown
|
25
31
|
|
@@ -11,12 +11,14 @@ from dayhoff_tools.cli.utility_commands import (
|
|
11
11
|
rebuild_devcontainer_file,
|
12
12
|
test_github_actions_locally,
|
13
13
|
update_dayhoff_tools,
|
14
|
+
sync_dependencies,
|
14
15
|
)
|
15
16
|
|
16
17
|
app = typer.Typer()
|
17
18
|
|
18
19
|
# Utility commands
|
19
20
|
app.command("clean")(delete_local_branch)
|
21
|
+
app.command("deps")(sync_dependencies)
|
20
22
|
app.command("gha")(test_github_actions_locally)
|
21
23
|
app.command("rebuild")(rebuild_devcontainer_file)
|
22
24
|
app.command("update")(update_dayhoff_tools)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
import os
|
4
4
|
import re
|
5
|
+
import shutil
|
5
6
|
import subprocess
|
6
7
|
import sys
|
7
8
|
from pathlib import Path
|
@@ -182,16 +183,16 @@ def get_current_version_from_toml(file_path="pyproject.toml"):
|
|
182
183
|
|
183
184
|
|
184
185
|
def build_and_upload_wheel(bump_part: str = "patch"):
|
185
|
-
"""Build a Python wheel and upload to PyPI.
|
186
|
+
"""Build a Python wheel and upload to PyPI using UV.
|
186
187
|
|
187
|
-
Automatically increments the version number in pyproject.toml before building
|
188
|
-
|
189
|
-
For example: 1.2.3 -> 1.2.4 (patch), 1.3.0 (minor), 2.0.0 (major)
|
188
|
+
Automatically increments the version number in pyproject.toml before building
|
189
|
+
based on the bump_part argument ('major', 'minor', 'patch').
|
190
190
|
|
191
|
-
Expects
|
191
|
+
Expects PyPI authentication to be configured via the environment variable:
|
192
|
+
- UV_PUBLISH_TOKEN
|
192
193
|
|
193
194
|
Args:
|
194
|
-
bump_part (str): The part of the version to bump
|
195
|
+
bump_part (str): The part of the version to bump. Defaults to 'patch'.
|
195
196
|
"""
|
196
197
|
if bump_part not in ["major", "minor", "patch"]:
|
197
198
|
print(
|
@@ -199,69 +200,198 @@ def build_and_upload_wheel(bump_part: str = "patch"):
|
|
199
200
|
)
|
200
201
|
return
|
201
202
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
203
|
+
# --- Authentication Setup ---
|
204
|
+
token = os.environ.get("UV_PUBLISH_TOKEN")
|
205
|
+
|
206
|
+
if not token:
|
207
|
+
print("Error: PyPI authentication not configured.")
|
208
|
+
print(
|
209
|
+
"Please set the UV_PUBLISH_TOKEN environment variable with your PyPI API token."
|
210
|
+
)
|
206
211
|
return
|
207
212
|
|
213
|
+
# Build the command with token authentication
|
214
|
+
publish_cmd = ["uv", "publish", "--token", token]
|
215
|
+
print("Using UV_PUBLISH_TOKEN for authentication.")
|
216
|
+
|
217
|
+
pyproject_path = "pyproject.toml"
|
218
|
+
current_version = None # Initialize in case the first try block fails
|
219
|
+
|
208
220
|
try:
|
209
|
-
#
|
210
|
-
|
221
|
+
# --- Clean dist directory ---
|
222
|
+
dist_dir = Path("dist")
|
223
|
+
if dist_dir.exists():
|
224
|
+
print(f"Removing existing build directory: {dist_dir}")
|
225
|
+
shutil.rmtree(dist_dir)
|
226
|
+
# --- End Clean dist directory ---
|
227
|
+
|
228
|
+
# --- Version Bumping Logic ---
|
229
|
+
current_version = get_current_version_from_toml(pyproject_path)
|
211
230
|
print(f"Current version: {current_version}")
|
212
231
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
232
|
+
try:
|
233
|
+
major, minor, patch = map(int, current_version.split("."))
|
234
|
+
except ValueError:
|
235
|
+
print(
|
236
|
+
f"Error: Could not parse version '{current_version}'. Expected format X.Y.Z"
|
237
|
+
)
|
238
|
+
return
|
239
|
+
|
240
|
+
if bump_part == "major":
|
241
|
+
major += 1
|
242
|
+
minor = 0
|
243
|
+
patch = 0
|
244
|
+
elif bump_part == "minor":
|
245
|
+
minor += 1
|
246
|
+
patch = 0
|
247
|
+
else: # patch
|
248
|
+
patch += 1
|
249
|
+
|
250
|
+
new_version = f"{major}.{minor}.{patch}"
|
251
|
+
print(f"Bumping {bump_part} version to: {new_version}")
|
252
|
+
|
253
|
+
# Read pyproject.toml
|
254
|
+
with open(pyproject_path, "r") as f:
|
255
|
+
content = f.read()
|
220
256
|
|
221
|
-
#
|
222
|
-
|
223
|
-
|
224
|
-
["poetry", "config", "keyring.enabled", "false"],
|
225
|
-
check=True,
|
226
|
-
capture_output=True,
|
257
|
+
# Replace the version string
|
258
|
+
pattern = re.compile(
|
259
|
+
f'^version\s*=\s*"{re.escape(current_version)}"', re.MULTILINE
|
227
260
|
)
|
228
|
-
|
229
|
-
|
230
|
-
print("Configuring Poetry with PyPI token...")
|
231
|
-
subprocess.run(
|
232
|
-
["poetry", "config", "pypi-token.pypi", pypi_token],
|
233
|
-
check=True,
|
234
|
-
capture_output=True, # Hide token from output
|
261
|
+
new_content, num_replacements = pattern.subn(
|
262
|
+
f'version = "{new_version}"', content
|
235
263
|
)
|
236
264
|
|
237
|
-
|
238
|
-
|
265
|
+
if num_replacements == 0:
|
266
|
+
print(
|
267
|
+
f"Error: Could not find 'version = \"{current_version}\"' in {pyproject_path}"
|
268
|
+
)
|
269
|
+
return # Exit before build/publish if version wasn't updated
|
270
|
+
if num_replacements > 1:
|
271
|
+
print(
|
272
|
+
f"Warning: Found multiple version lines for '{current_version}'. Only the first was updated."
|
273
|
+
)
|
274
|
+
|
275
|
+
# Write the updated content back
|
276
|
+
with open(pyproject_path, "w") as f:
|
277
|
+
f.write(new_content)
|
278
|
+
print(f"Updated {pyproject_path} with version {new_version}")
|
279
|
+
# --- End Version Bumping Logic ---
|
280
|
+
|
281
|
+
# Build wheel and sdist
|
282
|
+
print("Building wheel and sdist using uv build...")
|
283
|
+
subprocess.run(["uv", "build"], check=True)
|
284
|
+
|
285
|
+
# Upload using uv publish with explicit arguments
|
286
|
+
print("Uploading to PyPI using uv publish...")
|
239
287
|
subprocess.run(
|
240
|
-
|
241
|
-
"poetry",
|
242
|
-
"publish",
|
243
|
-
"--build",
|
244
|
-
],
|
288
|
+
publish_cmd, # Use the command list built earlier
|
245
289
|
check=True,
|
246
290
|
)
|
247
291
|
|
248
292
|
print(f"Successfully built and uploaded version {new_version} to PyPI")
|
249
293
|
|
294
|
+
except FileNotFoundError:
|
295
|
+
print(f"Error: {pyproject_path} not found.")
|
296
|
+
# No version change happened, so no rollback needed
|
250
297
|
except subprocess.CalledProcessError as e:
|
251
298
|
print(f"Error during build/upload: {e}")
|
299
|
+
# Attempt to roll back version change only if it was bumped successfully
|
300
|
+
if current_version and new_version:
|
301
|
+
try:
|
302
|
+
print(
|
303
|
+
f"Attempting to revert version in {pyproject_path} back to {current_version}..."
|
304
|
+
)
|
305
|
+
with open(pyproject_path, "r") as f:
|
306
|
+
content_revert = f.read()
|
307
|
+
# Use new_version in pattern for reverting
|
308
|
+
pattern_revert = re.compile(
|
309
|
+
f'^version\s*=\s*"{re.escape(new_version)}"', re.MULTILINE
|
310
|
+
)
|
311
|
+
reverted_content, num_revert = pattern_revert.subn(
|
312
|
+
f'version = "{current_version}"', content_revert
|
313
|
+
)
|
314
|
+
if num_revert > 0:
|
315
|
+
with open(pyproject_path, "w") as f:
|
316
|
+
f.write(reverted_content)
|
317
|
+
print(f"Successfully reverted version in {pyproject_path}.")
|
318
|
+
else:
|
319
|
+
print(
|
320
|
+
f"Warning: Could not find version {new_version} to revert in {pyproject_path}."
|
321
|
+
)
|
322
|
+
except Exception as revert_e:
|
323
|
+
print(
|
324
|
+
f"Warning: Failed to revert version change in {pyproject_path}: {revert_e}"
|
325
|
+
)
|
252
326
|
except Exception as e:
|
253
327
|
print(f"An unexpected error occurred: {e}")
|
328
|
+
# Also attempt rollback here if version was bumped
|
329
|
+
if current_version and "new_version" in locals() and new_version:
|
330
|
+
try:
|
331
|
+
print(
|
332
|
+
f"Attempting to revert version in {pyproject_path} back to {current_version} due to unexpected error..."
|
333
|
+
)
|
334
|
+
# (Same revert logic as above)
|
335
|
+
with open(pyproject_path, "r") as f:
|
336
|
+
content_revert = f.read()
|
337
|
+
pattern_revert = re.compile(
|
338
|
+
f'^version\s*=\s*"{re.escape(new_version)}"', re.MULTILINE
|
339
|
+
)
|
340
|
+
reverted_content, num_revert = pattern_revert.subn(
|
341
|
+
f'version = "{current_version}"', content_revert
|
342
|
+
)
|
343
|
+
if num_revert > 0:
|
344
|
+
with open(pyproject_path, "w") as f:
|
345
|
+
f.write(reverted_content)
|
346
|
+
print(f"Successfully reverted version in {pyproject_path}.")
|
347
|
+
else:
|
348
|
+
print(
|
349
|
+
f"Warning: Could not find version {new_version} to revert in {pyproject_path}."
|
350
|
+
)
|
351
|
+
except Exception as revert_e:
|
352
|
+
print(
|
353
|
+
f"Warning: Failed to revert version change in {pyproject_path}: {revert_e}"
|
354
|
+
)
|
254
355
|
|
255
356
|
|
256
357
|
def update_dayhoff_tools():
|
257
|
-
"""Update the dayhoff-tools package to the latest version using
|
358
|
+
"""Update the dayhoff-tools package to the latest version using uv.
|
359
|
+
|
360
|
+
Runs `uv add dayhoff-tools@latest` which updates pyproject.toml and uv.lock.
|
361
|
+
"""
|
258
362
|
try:
|
259
|
-
print("Updating dayhoff-tools to the latest version...")
|
260
|
-
|
363
|
+
print("Updating dayhoff-tools to the latest version using uv...")
|
364
|
+
# Use uv add to update the package and lock file
|
365
|
+
subprocess.run(["uv", "add", "dayhoff-tools@latest"], check=True)
|
261
366
|
print("Update complete!")
|
262
367
|
except subprocess.CalledProcessError as e:
|
263
368
|
print(f"Error occurred while updating: {e}")
|
264
369
|
sys.exit(1)
|
265
370
|
except FileNotFoundError:
|
266
|
-
print("Error: '
|
371
|
+
print("Error: 'uv' command not found. Is uv installed and in PATH?")
|
372
|
+
sys.exit(1)
|
373
|
+
|
374
|
+
|
375
|
+
def sync_dependencies():
|
376
|
+
"""Update uv.lock and sync dependencies based on pyproject.toml.
|
377
|
+
|
378
|
+
Runs `uv lock` followed by `uv sync --all-groups --no-install-project`.
|
379
|
+
This ensures the lock file is up-to-date and installs all declared
|
380
|
+
dependencies without building/installing the local project itself.
|
381
|
+
"""
|
382
|
+
try:
|
383
|
+
print("Updating lock file (uv lock)...")
|
384
|
+
subprocess.run(["uv", "lock"], check=True)
|
385
|
+
|
386
|
+
print("Syncing dependencies (uv sync --all-groups --no-install-project)...")
|
387
|
+
subprocess.run(
|
388
|
+
["uv", "sync", "--all-groups", "--no-install-project"], check=True
|
389
|
+
)
|
390
|
+
|
391
|
+
print("Dependencies synced successfully.")
|
392
|
+
except subprocess.CalledProcessError as e:
|
393
|
+
print(f"Error occurred during dependency sync: {e}")
|
394
|
+
sys.exit(1)
|
395
|
+
except FileNotFoundError:
|
396
|
+
print("Error: 'uv' command not found. Is uv installed and in PATH?")
|
267
397
|
sys.exit(1)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = ["poetry-core>=2.0"]
|
3
|
+
build-backend = "poetry.core.masonry.api"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "dayhoff-tools"
|
7
|
+
version = "1.0.14"
|
8
|
+
description = "Common tools for all the repos at Dayhoff Labs"
|
9
|
+
authors = [
|
10
|
+
{name = "Daniel Martin-Alarcon", email = "dma@dayhofflabs.com"}
|
11
|
+
]
|
12
|
+
readme = "README.md"
|
13
|
+
# Just enough deps to use the job_runner
|
14
|
+
dependencies = [
|
15
|
+
"firebase-admin>=6.5.0",
|
16
|
+
"pyyaml>=6.0",
|
17
|
+
"requests>=2.31.0",
|
18
|
+
"typer>=0.9.0",
|
19
|
+
]
|
20
|
+
requires-python = ">=3.10,<4.0"
|
21
|
+
|
22
|
+
[project.optional-dependencies]
|
23
|
+
# Deps we expect to need to bring to new repos
|
24
|
+
full = [
|
25
|
+
"biopython>=1.84",
|
26
|
+
"boto3>=1.36.8",
|
27
|
+
"docker>=7.1.0",
|
28
|
+
"fair-esm>=2.0.0",
|
29
|
+
"h5py>=3.11.0",
|
30
|
+
"pandas>=2.2.3",
|
31
|
+
"questionary>=2.0.1",
|
32
|
+
"rdkit-pypi>=2022.9.5",
|
33
|
+
"sqlalchemy (>=2.0.40,<3.0.0)",
|
34
|
+
"transformers==4.36.2",
|
35
|
+
"torch==2.4.0+cu121",
|
36
|
+
"torchvision==0.19.0+cu121",
|
37
|
+
]
|
38
|
+
|
39
|
+
# Specific configuration for PyTorch source
|
40
|
+
[[tool.uv.index]]
|
41
|
+
name = "torch-cuda"
|
42
|
+
url = "https://download.pytorch.org/whl/cu121"
|
43
|
+
explicit = true
|
44
|
+
|
45
|
+
[tool.uv.sources]
|
46
|
+
torch = { index = "torch-cuda" }
|
47
|
+
torchvision = { index = "torch-cuda" }
|
48
|
+
|
49
|
+
[dependency-groups] # Top-level table for groups
|
50
|
+
common = [
|
51
|
+
"black>=25.1.0,<26",
|
52
|
+
"boto3>=1.36.8",
|
53
|
+
"colorlog>=6.8.2,<7",
|
54
|
+
"docker>=7.1.0",
|
55
|
+
"dvc>=3.48.2,<4",
|
56
|
+
"dvc-gs>=3.0.1,<4",
|
57
|
+
"flake8>=7.0.0,<8",
|
58
|
+
"google-cloud-storage>=2.14.0",
|
59
|
+
"ipykernel>=6.29.5,<7",
|
60
|
+
"ipywidgets>=8.1.3,<9",
|
61
|
+
"isort>=5.13.2,<6",
|
62
|
+
"nbformat>=5.10.4",
|
63
|
+
"numpy<2.0.0",
|
64
|
+
"pandas (>=2.2.3,<3.0.0)",
|
65
|
+
"pylance>=0.10.2,<1",
|
66
|
+
"pylint>=3.1.0,<4",
|
67
|
+
"pytest>=8.0.2,<9",
|
68
|
+
"pytest-cov>=4.1.0,<5",
|
69
|
+
"pytest-mock>=3.12.0,<4",
|
70
|
+
]
|
71
|
+
|
72
|
+
[project.scripts]
|
73
|
+
dh = "dayhoff_tools.cli.main:app"
|
@@ -1,53 +0,0 @@
|
|
1
|
-
[build-system]
|
2
|
-
requires = ["poetry-core>=2.0"]
|
3
|
-
build-backend = "poetry.core.masonry.api"
|
4
|
-
|
5
|
-
[project]
|
6
|
-
name = "dayhoff-tools"
|
7
|
-
version = "1.0.9"
|
8
|
-
description = "Common tools for all the repos at Dayhoff Labs"
|
9
|
-
authors = [
|
10
|
-
{name = "Daniel Martin-Alarcon", email = "dma@dayhofflabs.com"}
|
11
|
-
]
|
12
|
-
readme = "README.md"
|
13
|
-
# Just enough deps to use the job_runner
|
14
|
-
dependencies = [
|
15
|
-
"firebase-admin>=6.5.0",
|
16
|
-
"pyyaml>=6.0",
|
17
|
-
"requests>=2.31.0",
|
18
|
-
"typer>=0.9.0",
|
19
|
-
]
|
20
|
-
|
21
|
-
[project.optional-dependencies]
|
22
|
-
# Deps we expect to need to bring to new repos
|
23
|
-
core = [
|
24
|
-
"biopython>=1.84",
|
25
|
-
"boto3>=1.36.8",
|
26
|
-
"docker>=7.1.0",
|
27
|
-
"fair-esm>=2.0.0",
|
28
|
-
"h5py>=3.11.0",
|
29
|
-
"questionary>=2.0.1",
|
30
|
-
]
|
31
|
-
|
32
|
-
[tool.poetry.group.dev.dependencies]
|
33
|
-
black = "^25.1.0"
|
34
|
-
colorlog = "^6.8.2"
|
35
|
-
dvc = "^3.48.2"
|
36
|
-
dvc-gs = "^3.0.1"
|
37
|
-
flake8 = "^7.0.0"
|
38
|
-
isort = "^5.13.2"
|
39
|
-
pylance = "^0.10.2"
|
40
|
-
pylint = "^3.1.0"
|
41
|
-
pytest = "^8.0.2"
|
42
|
-
pytest-cov = "^4.1.0"
|
43
|
-
pytest-mock = "^3.12.0"
|
44
|
-
ipykernel = "^6.29.5"
|
45
|
-
|
46
|
-
[project.scripts]
|
47
|
-
dh = "dayhoff_tools.cli.main:app"
|
48
|
-
|
49
|
-
[tool.poetry]
|
50
|
-
package-mode = true
|
51
|
-
|
52
|
-
[tool.poetry.dependencies]
|
53
|
-
python = ">=3.10,<4.0"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|