Python package to simplify development. Includes functionality for task running, testing, linting, documenting, and more
Project description
calcipy
calcipy
is a Python package that implements best practices such as code style (linting, auto-fixes), documentation, CI/CD, and logging. Like the calcium carbonate in hard coral, packages can be built on the calcipy
foundation.
calcipy
has some configurability, but is tailored for my particular use cases. If you want the same sort of functionality, there are a number of alternatives to consider:
- pyscaffold is a much more mature project that aims for the same goals, but with a slightly different approach and tech stack (tox vs. nox, cookiecutter vs. copier, etc.)
- tidypy, pylama, and codecheck offer similar functionality of bundling and running static checkers, but makes far fewer assumptions
- pytoil is a general CLI tool for developer automation
- And many more such as pyta, prospector, wemake-python-styleguide / cjolowicz/cookiecutter-hypermodern-python, formate, johnthagen/python-blueprint, oxsecurity/megalinter, etc.
Installation
Calcipy needs a few static files managed using copier and a template project: kyleking/calcipy_template
You can quickly use the template to create a new project or add calcipy to an existing one:
# Install copier. pipx is recommended
pipx install copier
# To create a new project
copier copy gh:KyleKing/calcipy_template new_project
cd new_project
# Or convert/update an existing one
cd my_project
copier copy gh:KyleKing/calcipy_template .
copier update
See ./Advanced_Configuration.md for documentation on the configurable aspects of calcipy
Calcipy CLI
Additionally, calcipy
can be run as a CLI application without adding the package as a dependency.
Quick Start:
pipx install calcipy
# Use 'tags' to create a CODE_TAG_SUMMARY of the specified directory
calcipy tags --help
calcipy tags --base-dir=~/path/to/my_project
# See additional documentation from the CLI help
> calcipy
Subcommands:
main Main task pipeline.
other Run tasks that are otherwise not exercised in main.
release Release pipeline.
cl.bump Bumps project version based on commits & settings in pyproject.toml.
cl.write Write a Changelog file with the raw Git history.
doc.build Build documentation with mkdocs.
doc.deploy Deploy docs to the Github `gh-pages` branch.
doc.watch Serve local documentation for local editing.
lint.autopep8 Run autopep8.
lint.check (lint) Run ruff as check-only.
lint.fix Run ruff and apply fixes.
lint.flake8 Run ruff and apply fixes.
lint.pre-commit Run pre-commit.
lint.pylint Run ruff and apply fixes.
lint.security Attempt to identify possible security vulnerabilities.
lint.watch Run ruff as check-only.
nox.noxfile (nox) Run nox from the local noxfile.
pack.check-licenses Check licenses for compatibility with `licensecheck`.
pack.lock Ensure poetry.lock is up-to-date.
pack.publish Build the distributed format(s) and publish.
stale.check-for-stale-packages (stale) Identify stale dependencies.
tags.collect-code-tags (tags) Create a `CODE_TAG_SUMMARY.md` with a table for TODO- and FIXME-style code comments.
test.coverage Generate useful coverage outputs after running pytest.
test.pytest (test) Run pytest with default arguments.
test.step Run pytest optimized to stop on first error.
test.watch Run pytest with polling and optimized to stop on first error.
types.mypy Run mypy.
types.pyright Run pyright.
Global Task Options:
working_dir Set the cwd for the program. Example: "../run --working-dir .. lint test"
*file_args List of Paths available globally to all tasks. Will resolve paths with working_dir
verbose Globally configure logger verbosity (-vvv for most verbose)
Calcipy Pre-Commit
calcipy
can also be used as a pre-commit
task by adding the below snippet to your pre-commit
file:
repos:
- repo: https://github.com/KyleKing/calcipy
rev: main
hooks:
- id: tags
- id: lint-fix
- id: types
Project Status
See the Open Issues
and/or the CODE_TAG_SUMMARY. For release history, see the CHANGELOG.
Contributing
We welcome pull requests! For your pull request to be accepted smoothly, we suggest that you first open a GitHub issue to discuss your idea. For resources on getting started with the code base, see the below documentation:
Code of Conduct
We follow the Contributor Covenant Code of Conduct.
Open Source Status
We try to reasonably meet most aspects of the "OpenSSF scorecard" from Open Source Insights
Responsible Disclosure
If you have any security issue to report, please contact the project maintainers privately. You can reach us at dev.act.kyle@gmail.com.
License
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
Built Distribution
Hashes for calcipy-1.0.0rc6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afbeebcfa6783d1d124d5846c913e265c7a2de872b9a0c13e486dcfda7128c5e |
|
MD5 | 06a76dcd4eab994fae776a35b032dd0e |
|
BLAKE2b-256 | 0e8e84d48bd049124546e534f606f3ec926a34815f18223bed66be607b322917 |