Metadata-Version: 2.1
Name: bastet
Version: 0.0.20.dev12
Summary: Bastet Python Developers Tools (https://github.com/mewbotorg/bastet)
Author-email: MewBot Org <mewbot@quicksilver.london>
Maintainer-email: MewBot Org <mewbot@quicksilver.london>
Project-URL: Source, https://github.com/mewbotorg/bastet
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: clint >=0.5.1
Requires-Dist: gitignore-parser >=0.1.11
Requires-Dist: reuse >=2.1
Requires-Dist: black >=23.1.0
Requires-Dist: flake8 >=6.0.0
Requires-Dist: pylint >=2.16.0
Requires-Dist: pydocstyle >=6.3.0
Requires-Dist: isort >=5.12.0
Requires-Dist: ruff >=0.2.1
Requires-Dist: mypy >=0.991
Requires-Dist: bandit >=1.7.5
Provides-Extra: dev
Requires-Dist: pytest >=7.1.1 ; extra == 'dev'
Requires-Dist: pytest-asyncio ~=0.21.1 ; extra == 'dev'
Requires-Dist: pytest-cov >=3.0.0 ; extra == 'dev'
Requires-Dist: pytest-xdist >=2.5.0 ; extra == 'dev'

<!--
SPDX-FileCopyrightText: 2023 Mewbot Developers <mewbot@quicksilver.london>

SPDX-License-Identifier: BSD-2-Clause
-->

# Bastet

> Bastet, the cat god, takes all of our tests and puts them in one basket.

Bastet is another attempt to simplify linting and testing python projects.
It runs a range of linting tools, parses the output, and outputs reports
in different formats based on the use case.

The aim of these tools is that, if you run them on a code base, you should
end up with something which conforms to your organisations style guidelines,
and passes a variety of 

## Functionality

While developing mewbot we built a number of tools to assist with development.

This mostly consist of tool chains for:

 - Automatically reformatting code.
 - Managing license / copyright information. 
 - Running static analysis tooling.
 - Checking the code base against style requirements.

And it can output in a variety of ways:

 - Simple lists of issues for local development.
 - CI output format for GitHub workflows
 - Reports for ingestion by Sonar.

## Usage

The dev tools uses path based auto-discovery to locate the relevant code.
Python modules will be discovered in folders called `src` and `test`
which are not exclude by version control.

If your project is in that `src-dir` layout, you can install `bastet`
and then run any of the toolchains.

```sh
pip install bastet

bastet        # Runs all the tests

# You can also run just some sections
bastet format # Automated formatting, using black/isort/ruff
bastet lint   # Code style and type linting, using black/flake8/ruff/mypy/pylint
bastet audit  # Audit and security checks, using bandit
bastet --help # See the command line options
```

We also recommend that you set up `mewbot-prefilght` as a
[pre-commit or pre-push hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks).

## Configuration

The default unconfirmed mode of Bastet is to run all of its tools (be they
code formatting, linting, or auditing) and outputting a list of issues.

The [recommended `pyproject.toml`](examples/pyproject.toml) to set up your
project can be found in the `examples` folder. It enables all of the `ruff`
linting rules, excluding a few which conflict with each other.
It also disables the `black` and `isort` formatting tools, which `ruff`
provides an implementation of.

### Advance Config and Debug

You can check what the configuration is doing with `--debug` the debug flag on
a run, or by running `python -m bastet.config` to just run the configuration steps.
