Metadata-Version: 2.1
Name: calcipy
Version: 0.2.0
Summary: Python package to simplify development. Includes functionality for task running, testing, linting, documenting, and more
Home-page: https://github.com/kyleking/calcipy
License: MIT
Keywords: python-poetry,doit,nox,flake8
Author: Kyle King
Author-email: dev.act.kyle@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Flake8
Classifier: Framework :: Pytest
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Provides-Extra: commitizen_legacy
Provides-Extra: dev
Provides-Extra: lint
Provides-Extra: serializers
Provides-Extra: test
Requires-Dist: add-trailing-comma; extra == "lint"
Requires-Dist: attrs
Requires-Dist: autopep8; extra == "lint"
Requires-Dist: beartype
Requires-Dist: better-exceptions; extra == "dev"
Requires-Dist: cohesion; extra == "lint"
Requires-Dist: commitizen; extra == "dev"
Requires-Dist: cz_legacy; extra == "commitizen_legacy"
Requires-Dist: darglint; extra == "lint"
Requires-Dist: decorator
Requires-Dist: demjson; extra == "lint"
Requires-Dist: diff-cover; extra == "test"
Requires-Dist: dlint; extra == "lint"
Requires-Dist: doit
Requires-Dist: flake8-2020; extra == "lint"
Requires-Dist: flake8-SQL; extra == "lint"
Requires-Dist: flake8-aaa; extra == "lint"
Requires-Dist: flake8-annotations; extra == "lint"
Requires-Dist: flake8-assertive; extra == "lint"
Requires-Dist: flake8-bandit; extra == "lint"
Requires-Dist: flake8-blind-except; extra == "lint"
Requires-Dist: flake8-breakpoint; extra == "lint"
Requires-Dist: flake8-broken-line; extra == "lint"
Requires-Dist: flake8-bugbear; extra == "lint"
Requires-Dist: flake8-builtins; extra == "lint"
Requires-Dist: flake8-cognitive-complexity; extra == "lint"
Requires-Dist: flake8-commas; extra == "lint"
Requires-Dist: flake8-comprehensions; extra == "lint"
Requires-Dist: flake8-debugger; extra == "lint"
Requires-Dist: flake8-docstrings; extra == "lint"
Requires-Dist: flake8-eradicate; extra == "lint"
Requires-Dist: flake8-expression-complexity; extra == "lint"
Requires-Dist: flake8-fixme; extra == "lint"
Requires-Dist: flake8-functions (<0.0.4); extra == "lint"
Requires-Dist: flake8-isort; extra == "lint"
Requires-Dist: flake8-logging-format; extra == "lint"
Requires-Dist: flake8-markdown; extra == "lint"
Requires-Dist: flake8-mock; extra == "lint"
Requires-Dist: flake8-pep3101; extra == "lint"
Requires-Dist: flake8-plone-hasattr; extra == "lint"
Requires-Dist: flake8-print; extra == "lint"
Requires-Dist: flake8-printf-formatting; extra == "lint"
Requires-Dist: flake8-pytest-style; extra == "lint"
Requires-Dist: flake8-quotes; extra == "lint"
Requires-Dist: flake8-return; extra == "lint"
Requires-Dist: flake8-string-format; extra == "lint"
Requires-Dist: flake8-tuple; extra == "lint"
Requires-Dist: flake8-variables-names; extra == "lint"
Requires-Dist: flake8; extra == "lint"
Requires-Dist: hacking (>=4,<5); extra == "lint"
Requires-Dist: isort (>=5,<6); extra == "lint"
Requires-Dist: licensecheck; extra == "lint"
Requires-Dist: loguru
Requires-Dist: lxml; extra == "test"
Requires-Dist: markdown-include; extra == "dev"
Requires-Dist: mkdocs-material; extra == "dev"
Requires-Dist: mypy; extra == "test"
Requires-Dist: nox-poetry; extra == "test"
Requires-Dist: pandas-vet; extra == "lint"
Requires-Dist: pdbpp; (sys_platform != "win32" or python_version < "3.9") and (extra == "dev")
Requires-Dist: pdocs; extra == "dev"
Requires-Dist: pendulum
Requires-Dist: pep8-naming; extra == "lint"
Requires-Dist: pre-commit
Requires-Dist: preconvert; extra == "serializers"
Requires-Dist: preconvert_numpy; extra == "serializers"
Requires-Dist: proselint; extra == "lint"
Requires-Dist: pyrate_limiter
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-html; extra == "test"
Requires-Dist: pytest-randomly; extra == "test"
Requires-Dist: pytest-recording; extra == "test"
Requires-Dist: pytest-watch; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: python-box
Requires-Dist: pyupgrade; extra == "dev"
Requires-Dist: pyyaml
Requires-Dist: radon; extra == "lint"
Requires-Dist: requests
Requires-Dist: sty (>=1.0.0rc1,<2.0.0)
Requires-Dist: toml
Requires-Dist: transitions
Requires-Dist: vulture; extra == "lint"
Requires-Dist: yamllint; extra == "lint"
Project-URL: Bug Tracker, https://github.com/kyleking/calcipy/issues
Project-URL: Documentation, https://github.com/kyleking/calcipy/docs
Project-URL: Repository, https://github.com/kyleking/calcipy
Description-Content-Type: text/markdown

# calcipy

![./calcipy.svg](./calcipy.svg)

`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 still very opinionated for my particular use cases. There are a number of alternatives to consider:

- [tidypy](https://github.com/jayclassless/tidypy#features) offers similar functionality of bundling and running static checkers, but makes far fewer assumptions about the project itself (and has a really nice progress indicator!)
- [black](https://black.readthedocs.io/en/stable/) is an opinionated, but really popular formatter
- And many more such as [prospector](https://github.com/PyCQA/prospector), [wemake-python-styleguide](https://github.com/wemake-services/wemake-python-styleguide) / [cjolowicz/cookiecutter-hypermodern-python](https://github.com/cjolowicz/cookiecutter-hypermodern-python), etc.

## Installation

Create a new project with [kyleking/calcipy_template](https://github.com/KyleKing/calcipy_template/)

```sh
# See above link for latest documentation, but this snippet should work
pipx install copier
copier copy gh:KyleKing/calcipy_template new_project
cd new_project
# Static files can then be kept in sync with "copier update"!
```

!!! tip
    Note: If needed, the latest version of calcipy can be installed from git by modifying the `pyproject.toml`:

    ```toml
    [tool.poetry.dependencies.calcipy]
    git = "https://github.com/kyleking/calcipy.git"
    branch = "dev/development"
    rev = "56802cf"  # Always pin to a commit
    develop = true  # Optional: will reinstall each time

    [tool.poetry.dev-dependencies.calcipy]
    git = "https://github.com/kyleking/calcipy.git"
    branch = "dev/development"
    extras = [ "dev", "lint", "test",]
    ```

## Usage

1. Run `poetry install`
2. Check that `poetry run doit` works
3. Run `poetry run doit list` to see available tasks

If you have any questions, please [start a Discussion on Github](https://github.com/KyleKing/calcipy/discussions/)

For more examples, see other projects that use `calcipy`:

- [KyleKing/cz_legacy](https://github.com/KyleKing/cz_legacy) - *Published*
- [KyleKing/dash_charts](https://github.com/KyleKing/dash_charts) - *WIP*
- [KyleKing/PiAlarm](https://github.com/KyleKing/PiAlarm) - *On Hold*
- [KyleKing/Goodreads_Library_Availability](https://github.com/KyleKing/Goodreads_Library_Availability) - *On Hold*
- See other [projects tagged with the topic "calcipy"](https://github.com/topics/calcipy)
- Also see: [Scripts](https://github.com/kyleking/calcipy/scripts) or [Tests](https://github.com/kyleking/calcipy/tests)

## Upgrades

Review the [./docs/CHANGELOG.md](./docs/CHANGELOG.md) before updating. Calcipy uses semantic versioning so once `^1.0.0`, breaking changes will only occur during major releases; however, while an alpha-release (`0.#.#`), the project may have breaking changes on minor increments until stable.

```sh
# Update dependencies
poetry update

# Update files
copier update
```

## Roadmap

See the `Open Issues` and `Milestones` for current status and [./docs/CODE_TAG_SUMMARY.md](./docs/CODE_TAG_SUMMARY.md) for annotations in the source code.

For release history, see the [./docs/CHANGELOG.md](./docs/CHANGELOG.md)

## Contributing

See the Developer Guide, Contribution Guidelines, etc

- [./docs/DEVELOPER_GUIDE.md](./docs/DEVELOPER_GUIDE.md)
- [./docs/STYLE_GUIDE.md](./docs/STYLE_GUIDE.md)
- [./docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md)
- [./docs/CODE_OF_CONDUCT.md](./docs/CODE_OF_CONDUCT.md)
- [./docs/SECURITY.md](./docs/SECURITY.md)

## License

[LICENSE](https://github.com/kyleking/calcipy/LICENSE)

