Skip to content

chore: add dev tooling, CI workflow, and project configuration#40

Closed
tboy1337 wants to merge 12 commits into
masterking32:mainfrom
tboy1337:chore/dev-tooling-and-ci
Closed

chore: add dev tooling, CI workflow, and project configuration#40
tboy1337 wants to merge 12 commits into
masterking32:mainfrom
tboy1337:chore/dev-tooling-and-ci

Conversation

@tboy1337
Copy link
Copy Markdown
Contributor

@tboy1337 tboy1337 commented Mar 13, 2026

Summary

  • Add pyproject.toml with project metadata and black/isort config
  • Add pytest.ini with test discovery settings, asyncio auto-mode, and 30 s per-test timeout
  • Add .coveragerc with branch coverage enabled, 90 % minimum threshold, and dns_utils as source
  • Add mypy.ini with strict type checking; per-module relaxations for existing untyped code and test files
  • Add .pylintrc configuring pylint for the project, disabling noisy rules not applicable to this codebase
  • Add
    equirements-dev.txt listing all development dependencies (pytest plugins, hypothesis, mypy, pylint, black, isort, autopep8)
  • Update requirements.txt to remove a duplicate cryptography entry and reorder entries
  • Update .gitignore to exclude .hypothesis/ and .coverage
  • Add .github/workflows/test.yml running the full pytest suite with coverage on Python 3.10, uploading coverage.xml as an artifact
  • Update dns_utils/config_loader.py with # pragma: no cover on the Python < 3.11 tomllib fallback branch and # type: ignore on the conditional re-import

Notes

The mypy.ini marks several large existing modules as ignore_errors = true to avoid noisy false-positives on inherited code that predates strict typing. Full annotation of those modules is tracked separately.

The companion source-code PRs (chore/modernize-type-hints, fix/arq-io-loop) should be reviewed alongside this one.

Add project infrastructure for static analysis, testing, and CI:

- pyproject.toml: project metadata, black and isort configuration
- pytest.ini: test discovery, asyncio_mode=auto, 30 s timeout
- .coveragerc: branch coverage, 90 % minimum, source = dns_utils
- mypy.ini: strict type checking with per-module relaxations for
  existing untyped modules and test files
- .pylintrc: pylint configuration, disable noisy rules, set good-names
- requirements-dev.txt: pin all dev dependencies (pytest, hypothesis,
  mypy, pylint, black, isort, autopep8, coverage plugins)
- requirements.txt: remove duplicate cryptography entry, reorder
- .gitignore: add .hypothesis/ and .coverage to ignored paths
- .github/workflows/test.yml: GitHub Actions CI running pytest with
  coverage on Python 3.10, uploads coverage.xml as artifact
- dns_utils/config_loader.py: add pragma: no cover on ImportError
  fallback branch and type: ignore annotations for tomllib re-import

Made-with: Cursor
- .coveragerc: removed unused exclusion pattern.
- .pylintrc: cleaned up disabled rules for better linting.
- mypy.ini: simplified error handling for test files.
- pyproject.toml: updated build backend and removed unnecessary dependencies.
- requirements-dev.txt: pinned versions for development dependencies to ensure compatibility.
- .github/workflows/test.yml: added formatting and type checking steps to CI workflow.
- dns_utils/config_loader.py: updated function signature for load_config to use type hints.
- Removed version pinning for development dependencies to allow for more flexibility in updates.
- Removed black, isort, and mypy checks from the GitHub Actions CI configuration in .github/workflows/test.yml.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant