[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "biomni" dynamic = ["version"] description = "Biomni" readme = "README.md" license = "Apache-2.0" license-files = ["LICENSE"] authors = [ {name = "Biomni Team", email = "kexinh@cs.stanford.edu"} ] requires-python = ">=3.11" dependencies = ["pydantic", "langchain", "python-dotenv"] [project.urls] Homepage = "https://github.com/snap-stanford/biomni" Repository = "https://github.com/snap-stanford/biomni" [project.optional-dependencies] gradio = ["gradio>=5.0,<6.0"] [tool.setuptools] include-package-data = true [tool.setuptools.dynamic] version = {attr = "biomni.version.__version__"} [tool.setuptools.packages.find] exclude = ["test*", "tutorials*"] [tool.ruff] src = ["src"] line-length = 120 [tool.ruff.format] docstring-code-format = true [tool.ruff.lint] select = [ "F", # Errors detected by Pyflakes "E", # Error detected by Pycodestyle "W", # Warning detected by Pycodestyle "I", # isort #"D", # pydocstyle "B", # flake8-bugbear "TID", # flake8-tidy-imports "C4", # flake8-comprehensions "BLE", # flake8-blind-except "UP", # pyupgrade "RUF100", # Report unused noqa directives "TCH", # Typing imports #"NPY", # Numpy specific rules #"PTH", # Use pathlib #"PL" # pylint ] ignore = [ # line too long -> we accept long comment lines; black gets rid of long code lines "E501", # Do not assign a lambda expression, use a def -> lambda expression assignments are convenient "E731", # allow I, O, l as variable names -> I is the identity matrix "E741", # Missing docstring in public package "D104", # Missing docstring in public module "D100", # Missing docstring in __init__ "D107", # Errors from function calls in argument defaults. These are fine when the result is immutable. "B008", # __magic__ methods are are often self-explanatory, allow missing docstrings "D105", # first line should end with a period [Bug: doesn't work with single-line docstrings] "D400", # First line should be in imperative mood; try rephrasing "D401", ## Disable one in each pair of mutually incompatible rules # We don’t want a blank line before a class docstring "D203", # We want docstrings to start immediately after the opening triple quote "D213", # camcelcase imported as lowercase "N813", # module import not at top level of file "E402", # Too many arguments in function definition "PLR0913", # Too many branches "PLR0912", # magic value used in comparison "PLR2004", # Too many statements "PLR0915", # Extracting value from dictionary without calling `.items()` - clashes with sim "PLC0206", # import should be at top of file "PLC0415", # do not catch blind exception "BLE001", # strip with multi characters "B005" ]