[project] # we prefix the package name with `sbb-` to defend against dependency confusion, see https://confluence.sbb.ch/x/Fxa9lg name = "sbb-{{ name }}" description = "{{ description }}" authors = {{ authors }} readme = "README.md" license = "Proprietary" dynamic = ["version", "dependencies"] requires-python = "~= {{ python_version }}.0" # = fix minor version to {{ python_version }}.* [project.urls] repository = "https://code.sbb.ch/projects/{{ bitbucket_organization }}/repos/{{ name }}" documentation = "https://code.sbb.ch/projects/{{ bitbucket_organization }}/repos/{{ name }}/browse/README.md" [project.scripts] entrypoint = '{{ package_name }}.main:cli' [tool.poetry] version = "0.0.0" # Version is ignored and set by Tekton. Use pipeline to increase. requires-poetry = ">=2.0" packages = [{include = "{{ package_name }}", from = "src"}] [tool.poetry.dependencies] numpy = "~2.3.0" # NumPy is the fundamental package for array computing with Python. [tool.poetry.group.dev.dependencies] coverage = {extras = ["toml"], version = "~7.10.4"} # Code coverage measurement for Python unittest-xml-reporting = "~3.2" # unittest-based test runner with Ant/JUnit like XML reporting. pre-commit = "~4.3.0" # A framework for managing and maintaining multi-language pre-commit hooks. pre-commit-hooks = "~5.0.0" # Some out-of-the-box hooks for pre-commit. mypy = "~1.18.0" # Tool for static type-checking ruff = "~0.13.0" # Extremely fast python linter and formatter {%- if use_ggshield %} ggshield = "^1.23.0" # Tool to check for leaked secrets {% endif %} [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.mypy] python_version = "{{ python_version }}" plugins = "numpy.typing.mypy_plugin" strict = true [tool.coverage.run] command_line = "-m xmlrunner discover --output-file junittest.xml" [tool.ruff] line-length = 140 indent-width = 4 exclude = [ ".git", ".git-rewrite", ".ipynb_checkpoints", ".mypy_cache", ".pyenv", ".pytype", ".ruff_cache", ".venv", ".vscode", "**/*.yaml", "**/*.yml" ] [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" [tool.ruff.lint] select = [ "D", "E", "W", # Pydocstyle rules "I", # Isort rules "PL", # Pylint rules "F", # Pyflake "N", # Pep8-naming "G", # Flake8-logging-format "ARG", # Flake8-unused-arguments "RUF100", # fail on unused noqa ] ignore=[] fixable = ["I"] [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["D", "E", "W"] # Ignore Pydocstyle warnings & errors in "test/*" directory [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.lint.pylint] max-args = 8