Skip to main content

Framework for writing Python package audits

Project description

ci CodeQL readthedocs.org python3.8 pypi codecov.io mit black

The pyaud framework is designed for writing modular audits for Python packages

Audits can be run to fail, such as when using CI, or include a fix
Fixes can be written for whole directories or individual files
Plugins can be written for manipulating files
Supports single script plugins

Install

Dependencies

python3.8 (see pyenv)
pip

PyPi

pip install pyaud

Development

poetry install

Usage

usage: pyaud [-h] [-c] [-d] [-f] [-s] [-v] [--rcfile RCFILE] MODULE

positional arguments:
  MODULE           choice of module: [modules] to list all

optional arguments:
  -h, --help       show this help message and exit
  -c, --clean      clean unversioned files prior to any process
  -d, --deploy     include test and docs deployment after audit
  -s, --suppress   continue without stopping for errors
  -v, --verbose    incrementally increase logging verbosity
  --rcfile RCFILE  select file to override config hierarchy

Plugins

pyaud will search for a plugins package in the project root

This package can contain any number of Python modules
For writing plugins see docs

The following plugins are usable out of the box:

audit           -- Read from [audit] key in config
clean           -- Remove all unversioned package files recursively
coverage        -- Run package unit-tests with `pytest` and `coverage`
deploy          -- Deploy package documentation and test coverage
deploy-cov      -- Upload coverage data to `Codecov`
deploy-docs     -- Deploy package documentation to `gh-pages`
docs            -- Compile package documentation with `Sphinx`
files           -- Audit project data files
format          -- Audit code against `Black`
format-docs     -- Format docstrings with `docformatter`
format-str      -- Format f-strings with `flynt`
generate-rcfile -- Print rcfile to stdout
imports         -- Audit imports with `isort`
lint            -- Lint code with `pylint`
readme          -- Parse, test, and assert RST code-blocks
requirements    -- Audit requirements.txt with Pipfile.lock
tests           -- Run the package unit-tests with `pytest`
toc             -- Audit docs/<NAME>.rst toc-file
typecheck       -- Typecheck code with `mypy`
unused          -- Audit unused code with `vulture`
whitelist       -- Check whitelist.py file with `vulture`

Environment

Default environment variables:

PYAUD_WHITELIST     = "whitelist.py"
PYAUD_COVERAGE_XML  = "coverage.xml"
PYAUD_REQUIREMENTS  = "requirements.txt"
PYAUD_GH_NAME       = ""
PYAUD_GH_EMAIL      = ""
PYAUD_GH_TOKEN      = ""
PYAUD_GH_REMOTE     = ""

Environment variables should be placed in an .env file in the project root and override all config files

Configure

Configuration of settings can be made with the following toml syntax files (overriding in this order):

~/.config/pyaud/pyaud.toml
~/.pyaudrc
.pyaudrc
pyproject.toml

Example config:

[clean]
exclude = ["*.egg*", ".mypy_cache", ".env", "instance"]

[logging]
version = 1
disable_existing_loggers = true

[indexing]
exclude = ["whitelist.py", "conf.py", "setup.py"]

[packages]
exclude = ["tests"]
name = "pyaud"

[audit]
modules = [
    "format",
    "format-docs",
    "format-str",
    "imports",
    "typecheck",
    "unused",
    "lint",
    "coverage",
    "readme",
    "docs",
]

[logging.root]
level = "INFO"
handlers = ["default"]
propagate = false

[logging.formatters.standard]
format = "%(asctime)s %(levelname)s %(name)s %(message)s"

[logging.handlers.default]
class = "logging.handlers.TimedRotatingFileHandler"
formatter = "standard"
when = "d"
backupCount = 60
filename = "~/.cache/pyaud/log/pyaud.log"

Prefix each key with tool.pyaud when using pyproject.toml

[tool.pyaud.clean]
exclude = ["*.egg*", ".mypy_cache", ".env", "instance"]

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyaud-3.13.3.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyaud-3.13.3-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

Details for the file pyaud-3.13.3.tar.gz.

File metadata

  • Download URL: pyaud-3.13.3.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.11+ Linux/5.16.18-200.fc35.x86_64

File hashes

Hashes for pyaud-3.13.3.tar.gz
Algorithm Hash digest
SHA256 92ae84acbe6263a2a067f550bce402077727787203facccee31c488c6fb9d07e
MD5 f28e18d88dfbc0a836591f33a2afaeeb
BLAKE2b-256 1e3d95feeef8537eec1f1c60c269856e3610830b46bb17815a910d7fd41e3b63

See more details on using hashes here.

File details

Details for the file pyaud-3.13.3-py3-none-any.whl.

File metadata

  • Download URL: pyaud-3.13.3-py3-none-any.whl
  • Upload date:
  • Size: 26.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.11+ Linux/5.16.18-200.fc35.x86_64

File hashes

Hashes for pyaud-3.13.3-py3-none-any.whl
Algorithm Hash digest
SHA256 852515b6cc28edde3a16cec25c1e0c6d1542ff7238f7c8797ead8a1c091e0dcc
MD5 e7c4d421e597d5b89e8d10dfad889001
BLAKE2b-256 990bc914045e0e301bc9d286b55299bfbe571c9cff789bcaf63c13fdae76ba2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page