Files
foundry/pyproject.toml
Jasper Butcher 5e7b739ed3 Add initial RFD3 Files and passing tests
* Add initial files

* add files

* Move projects.aa_design -> rfd3

* Make format

* Delete test files

* Add configs

* Mc

* Fixed tests

* remove test files
2025-11-11 10:07:43 -08:00

178 lines
4.3 KiB
TOML

[project]
name = "modelforge"
dynamic = ["version"]
description = "Shared utilities and training infrastructure for biomolecular structure prediction models."
readme = "README.md"
requires-python = ">=3.12"
authors = [
{ name = "Institute for Protein Design", email = "contact@ipd.uw.edu" },
]
license = { file = "LICENSE.md" }
classifiers = [
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Natural Language :: English",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering :: Bio-Informatics",
"License :: OSI Approved :: BSD License",
]
dependencies = [
# ... configuration & CLI
"rootutils>=1.0.7,<1.1",
"hydra-core>=1.3.0,<1.4",
"environs>=11.0.0,<12",
# ... logging
"wandb>=0.15.10,<1",
"rich>=13.9.4",
# ... typing & documentation
"jaxtyping>=0.2.17,<1",
"beartype>=0.18.0,<1",
"typer>=0.9.0,<1",
# ... ml tools (core)
"torch>=2.2.0,<3",
"lightning>=2.5.0",
"loralib>=0.1.1",
"einops>=0.8.0,<1",
"einx>=0.1.0,<1",
"opt_einsum>=3.4.0,<4",
"dm-tree>=0.1.6,<1",
]
[project.optional-dependencies]
rfd3 = [
"pydantic>=2.8",
]
rf3 = [
"cuequivariance_ops_cu12>=0.6.1; sys_platform == 'linux'",
"cuequivariance_ops_torch_cu12>=0.6.1; sys_platform == 'linux'",
"cuequivariance_torch>=0.6.1; sys_platform == 'linux'",
]
all = [
"modelforge[rfd3]",
"modelforge[rf3]",
]
dev = [
# Linters & formatters
"assertpy",
"ruff==0.8.3",
"ipdb",
# Debugger/interactive
"debugpy>=1.8.5,<2",
"ipykernel>=6.29.4,<7",
# Testing tools
"pytest>=8.2.0,<9", # testing framework
"pytest-testmon>=2.1.1,<3", # run only tests related to changed code
"pytest-xdist>=3.6.1,<4", # run tests in parallel
"pytest-dotenv>=0.5.2,<1", # load environment variables from .env file
"pytest-cov>=4.1.0,<5", # generate coverage report
"pytest-benchmark>=5.0.0,<6", # benchmark tests for speed
"atomworks==1.0.2",
]
[project.scripts]
rf3 = "rf3.cli:app"
rfd3 = "rfd3.cli:app"
# Build settings ----------------------------------------------------------------------
[build-system]
requires = [
"hatchling",
"hatch-vcs == 0.4",
]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "vcs"
fallback-version = "0.0.0"
[tool.hatch.build.hooks.vcs]
version-file = "src/modelhub/version.py"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = [
"src/modelhub",
"models/rf3/src/rf3",
"models/rfd3/src/rfd3",
]
# Formatting & linting settings -------------------------------------------------------
[tool.ruff]
line-length = 88
indent-width = 4
target-version = "py310"
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".git-rewrite",
".hg",
".ipynb_checkpoints",
".mypy_cache",
".nox",
".pants.d",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
".vscode",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"site-packages",
"env",
".venv",
"venv",
"*.ipynb",
"dev.py",
"archive",
]
[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"
# Like Black, indent with spaces, rather than tabs.
indent-style = "space"
# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false
# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"
# Enable auto-formatting of code examples in docstrings. Markdown,
# reStructuredText code/literal blocks and doctests are all supported.
docstring-code-format = true
docstring-code-line-length = 88
[tool.ruff.lint]
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
# Sort imports
extend-select = ["I", "F401"]
ignore = [
"F722", # for jaxtyping shape annotation
"F821", # temporary to avoid jaxtyping warnings, see: https://github.com/astral-sh/ruff/issues/17386
"E741", # enable us to use variables like "L"
]
[tool.pyright]
typeCheckingMode = "off"