pyproject.toml (79 lines of code) (raw):
[tool.ruff]
# Ruff is an extremely fast Python linter, written in Rust, that integrates with your favorite editors
line-length = 99
exclude = ["build", "dist", "__pycache__", ".git"]
# Select specific linting rules to enforce:
# "D" - Docstring-related rules (e.g., presence and format of docstrings)
# "E4" - Indentation and formatting issues (e.g., multiple imports on one line)
# "E7" - Syntax errors or incorrect use of Python constructs (e.g., multiple statements on one line)
# "E9" - Runtime errors (e.g., SyntaxError, IOError)
# "F" - General flake8 rules (e.g., module imported but unused)
lint.select = ["D", "E4", "E7", "E9", "F"]
# Add specific linting rules to the selection
# D212 - Multi-line docstring summary should start at the first line
lint.extend-select = ["D212"]
# Ignore specific docstring and formatting rules:
# D105 - Docstrings for magic methods
# D107 - Docstrings for __init__
# D203 - Conflicts with D211
# D205 - 1 blank line required between summary line and description
# D400 - First line should end with a period
lint.ignore = ["D105", "D107", "D203", "D205", "D400"]
# Extend ignore to include:
# E203 - Whitespace before ':'
lint.extend-ignore = ["E203"]
# Ignore specific issues per file:
# F401 - Module imported but unused in __init__.py
lint.per-file-ignores = { "__init__.py" = ["F401"] }
# Enforce PEP 257 conventions for docstrings
lint.pydocstyle = { convention = "pep257" }
[tool.bandit]
# Bandit is a tool designed to find common security issues in Python code.
# Skipping specific checks for:
# B101 - Use of assert detected. Assert statements are not suitable for production code.
# B104 - Possible binding to all interfaces. This can pose a security risk.
# B311 - Standard pseudo-random generators are not suitable for security/cryptographic purposes.
# B404 - Importing subprocess module which can be dangerous.
skips = ["B101", "B104", "B311", "B404"]
[tool.mypy]
# MyPy is a static type checker for Python.
python_version = "3.12"
disallow_untyped_calls = true
follow_imports = "normal"
ignore_missing_imports = true
pretty = true
show_error_codes = true
strict_optional = true
warn_no_return = true
warn_redundant_casts = true
warn_return_any = true
warn_unused_ignores = true
warn_unreachable = true
[tool.poetry]
name = "ecosystem-test-scripts"
version = "0.1.0"
description = "Python scripts for the Ecosystem Test Engineering team"
authors = ["Ecosystem Test Engineering"]
readme = "README.md"
license = "Mozilla Public License Version 2.0"
package-mode = false
[tool.poetry.dependencies]
python = "^3.12"
setuptools = ">=76.0.0"
[tool.poetry.group.metric_reporter.dependencies]
google-cloud-bigquery = "^3.30.0"
google-cloud-storage = "^3.1.0"
pydantic = "^2.10.6"
python-dateutil = "^2.9.0.post0"
types-python-dateutil = "^2.9.0.20241206"
xmltodict = "^0.14.2"
[tool.poetry.group.dev.dependencies]
bandit = "^1.8.3"
mypy = "^1.15.0"
pytest = "^8.3.5"
pytest-cov = "^4.1.0"
pytest-mock = "^3.14.0"
ruff = "^0.5.7"
[build-system]
requires = ["poetry-core>=2.0.1"]
build-backend = "poetry.core.masonry.api"