/ pyproject.toml
pyproject.toml
  1  [build-system]
  2  requires = ["hatchling>=1.0.0"]
  3  build-backend = "hatchling.build"
  4  
  5  [tool.black]
  6  line-length = 88
  7  target-version = ['py39']
  8  include = '\.pyi?$'
  9  exclude = '''
 10  
 11  (
 12    /(
 13        \.eggs         # exclude a few common directories in the
 14      | \.git          # root of the project
 15      | \.hg
 16      | \.mypy_cache
 17      | \.tox
 18      | \.venv
 19      | _build
 20      | buck-out
 21      | build
 22      | dist
 23    )/
 24    | foo.py           # also separately exclude a file named foo.py in
 25                       # the root of the project
 26  )
 27  '''
 28  
 29  [tool.interrogate]
 30  ignore-init-method = true
 31  ignore-init-module = false
 32  ignore-magic = false
 33  ignore-semiprivate = false
 34  ignore-private = false
 35  ignore-property-decorators = false
 36  ignore-module = false
 37  fail-under = 100
 38  exclude = ["setup.py", "docs", "build", "examples"]
 39  ignore-regex = ["^get$", "^mock_.*", ".*BaseClass.*"]
 40  verbose = 2
 41  quiet = false
 42  whitelist-regex = []
 43  color = true
 44  
 45  [tool.pytest.ini_options]
 46  addopts = "-v --cov --cov-report term-missing --durations=10"
 47  testpaths = [
 48      "tests",
 49  ]
 50  
 51  [tool.isort]
 52  profile = "black"
 53  
 54  [tool.ruff]
 55  # See https://docs.astral.sh/ruff/rules/ for a list of rules.
 56  # See https://docs.astral.sh/ruff/configuration/#using-pyprojecttoml for configuration documentation
 57  select = ["E", "F", "I"]
 58  
 59  [project]
 60  name = "fast-seqfunc"
 61  version = "0.0.1"
 62  # NOTE: move dependencies into this section if you need to distribute the project as a Python package.
 63  requires-python = ">=3.10"
 64  dependencies = [
 65      "typer>=0.9.0",
 66      "numpy>=1.22.0",
 67      "pandas>=1.5.0",
 68      "scikit-learn>=1.2.0",
 69      "loguru>=0.7.0",
 70      "pycaret>=2.2.3,<4",
 71      "lazy-loader>=0.4,<0.5"
 72  ]
 73  readme = "README.md"
 74  
 75  [project.scripts]
 76  fast-seqfunc = "fast_seqfunc.cli:app"
 77  
 78  
 79  [tool.coverage.run]
 80  omit = [
 81      "tests/*",
 82  ]
 83  
 84  [tool.pixi.project]
 85  channels = ["conda-forge"]
 86  platforms = ["osx-arm64", "linux-64"]
 87  
 88  [tool.pixi.pypi-dependencies]
 89  fast-seqfunc = { path = ".", editable = true }
 90  
 91  # NOTE: Core dependencies (needed for running the program) go here.
 92  [tool.pixi.dependencies]
 93  pycaret = ">=2.2.3,<4"
 94  typer = ">=0.9.0"
 95  numpy = ">=1.22.0"
 96  pandas = ">=1.5.0"
 97  scikit-learn = ">=1.2.0"
 98  loguru = ">=0.7.0"
 99  seaborn = ">=0.13.2,<0.14"
100  
101  # NOTE: Testing dependencies (not needed for running program) go here.
102  [tool.pixi.feature.tests.dependencies]
103  pytest = "*"
104  pytest-cov = "*"
105  hypothesis = "*"
106  
107  # NOTE: Docs dependencies (needed for documentation and notebooks) go here.
108  [tool.pixi.feature.docs.dependencies]
109  mkdocs = "*"
110  mkdocs-material = "*"
111  mknotebooks = "*"
112  
113  [tool.pixi.feature.notebook.dependencies]
114  ipykernel = "*"
115  ipython = "*"
116  jupyter = "*"
117  pixi-kernel = "*"
118  
119  [tool.pixi.feature.devtools.dependencies]
120  pre-commit = "*"
121  
122  # NOTE: CUDA feature is inspired by https://github.com/prefix-dev/pixi/issues/1051#issuecomment-2088820974
123  [tool.pixi.feature.cuda]
124  system-requirements = { cuda = "12" }
125  
126  [tool.pixi.feature.cuda.target.linux-64.dependencies]
127  jaxlib = { version = "*", build = "*cuda12*" }
128  
129  [tool.pixi.feature.tests.tasks]
130  test = "pytest"
131  
132  [tool.pixi.feature.devtools.tasks]
133  lint = "pre-commit run --all-files"
134  commit = "git commit"
135  
136  [tool.pixi.feature.docs.tasks]
137  build-docs = "mkdocs build"
138  serve-docs = "mkdocs serve"
139  
140  [tool.pixi.feature.setup.tasks]
141  setup = "pre-commit autoupdate && pre-commit install --install-hooks"
142  update = "pre-commit autoupdate"
143  
144  [tool.pixi.environments]
145  default = { features = ["tests", "devtools", "notebook", "setup"] }
146  docs = { features = ["docs"] }
147  tests = { features = ["tests", "setup"] }
148  cuda = { features = ["tests", "devtools", "notebook", "setup", "cuda"] }