[build-system] requires = ["hatchling>=1.24"] build-backend = "hatchling.build" [project] name = "simurg" description = "SimurgArray: open research toolkit for Illumina Infinium genotyping BeadChip data" readme = "README.md" license = { text = "MIT" } requires-python = ">=3.12" authors = [{ name = "Kemal Yaylali" }] dynamic = ["version"] dependencies = [ "numpy>=1.26", # all numerics "typer>=0.12", # CLI "rich>=13", # progress / human-readable output "pyyaml>=6", # --config files "pyarrow>=15", # canonical columnar model and Parquet outputs (plan ยง5) ] [project.optional-dependencies] dev = [ "pytest>=8", "pytest-benchmark>=4", "hypothesis>=6.100", "ruff>=0.6", "mypy>=1.11", "types-PyYAML", ] [project.scripts] simurg = "simurg.cli.main:app" [tool.hatch.version] path = "src/simurg/__init__.py" [tool.hatch.build.targets.wheel] packages = ["src/simurg"] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q --strict-markers" markers = [ "data: needs downloaded datasets under data/ (skipped when absent)", "oracle: compares against a reference implementation under refs/ (skipped when absent)", "slow: long-running test", ] [tool.ruff] line-length = 120 target-version = "py312" src = ["src", "tests"] [tool.ruff.lint] select = ["E", "F", "W", "I", "B", "UP", "N", "SIM", "RUF"] ignore = ["N802", "N806", "RUF001", "RUF002", "RUF003"] [tool.ruff.lint.per-file-ignores] "tests/**" = ["E501"] [tool.mypy] python_version = "3.12" strict = true files = ["src/simurg"] ignore_missing_imports = true