[project] name = "tcga-downloader" version = "0.1.0" description = "TCGA public data downloader" requires-python = ">=3.11" dependencies = ["requests>=2.31", "questionary>=2.0.0"] [project.optional-dependencies] dev = [ "pytest>=7.4", "pytest-cov>=5.0", "black>=24.0", "ruff>=0.1.0", "mypy>=1.8.0", "types-requests", "questionary>=2.0.0", "tqdm>=4.66.0", ] yaml = ["pyyaml>=6.0"] [project.scripts] tcga-downloader = "tcga_downloader.cli:main" [tool.black] line-length = 100 target-version = ['py311', 'py312'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist )/ ''' [tool.ruff] target-version = "py311" line-length = 100 lint.select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "ARG", # flake8-unused-arguments "SIM", # flake8-simplify ] lint.ignore = [ "E501", # line too long (handled by black) "B008", # do not perform function calls in argument defaults "C901", # too complex ] [tool.ruff.lint.isort] known-first-party = ["tcga_downloader"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false disallow_incomplete_defs = false check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true strict_equality = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = "-v --tb=short --strict-markers" markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests", ] [tool.coverage.run] source = ["tcga_downloader"] omit = [ "*/tests/*", "*/__pycache__/*", "*/site-packages/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "if typing.TYPE_CHECKING:", ]