calcipy


Namecalcipy JSON
Version 2.1.0 PyPI version JSON
download
home_pagehttps://github.com/kyleking/calcipy
SummaryPython package to simplify development
upload_time2024-04-17 15:21:49
maintainerNone
docs_urlNone
authorKyle King
requires_python<4.0.0,>=3.9.13
licenseMIT
keywords nox python-poetry
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # calcipy

![./calcipy-banner-wide.svg](https://raw.githubusercontent.com/KyleKing/calcipy/main/docs/calcipy-banner-wide.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 tailored for my particular use cases. If you want the same sort of functionality, there are a number of alternatives to consider:

- [pyscaffold](https://github.com/pyscaffold/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](https://github.com/jayclassless/tidypy#features), [pylama](https://github.com/klen/pylama), and [codecheck](https://pypi.org/project/codecheck/) offer similar functionality of bundling and running static checkers, but makes far fewer assumptions
- [pytoil](https://github.com/FollowTheProcess/pytoil) is a general CLI tool for developer automation
- And many more such as [pyta](https://github.com/pyta-uoft/pyta), [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), [formate](https://github.com/python-formate/formate), [johnthagen/python-blueprint](https://github.com/johnthagen/python-blueprint), [oxsecurity/megalinter](https://github.com/oxsecurity/megalinter), etc.

## Installation

Calcipy needs a few static files managed using copier and a template project: [kyleking/calcipy_template](https://github.com/KyleKing/calcipy_template/)

You can quickly use the template to create a new project or add calcipy to an existing one:

```sh
# 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
```

### Calcipy CLI

Additionally, `calcipy` can be run as a CLI application without adding the package as a dependency.

Quick Start:

```sh
# For the CLI, only install a few of the extras which can be used from a few different CLI commands
pipx install 'calcipy[flake8,lint,tags]'

# Use 'tags' to create a CODE_TAG_SUMMARY of the specified directory
calcipy-tags tags --help
calcipy-tags tags --base-dir=~/path/to/my_project

# You can list all provided CLI commands with
pipx list
```

```txt
venvs are in ~/.local/pipx/venvs
apps are exposed on your $PATH at ~/.local/bin
   package calcipy 1.4.0, installed using Python 3.11.4
    - calcipy
    - calcipy-lint
    - calcipy-pack
    - calcipy-tags
    - calcipy-types
```

Note: the CLI output below is compressed for readability, but you can try running each of these commands locally to see the most up-to-date documentation and the full set of options. The "Usage", "Core options", and "Global Task Options" are the same for each subsequent command, so they are excluded for brevity.

```txt
> calcipy-lint
Usage: calcipy-lint [--core-opts] <subcommand> [--subcommand-opts] ...

Core options:

  --complete                         Print tab-completion candidates for given parse remainder.
  --hide=STRING                      Set default value of run()'s 'hide' kwarg.
  --print-completion-script=STRING   Print the tab-completion script for your preferred shell (bash|zsh|fish).
  --prompt-for-sudo-password         Prompt user at start of session for the sudo.password config value.
  --write-pyc                        Enable creation of .pyc files.
  -d, --debug                        Enable debug output.
  -D INT, --list-depth=INT           When listing tasks, only show the first INT levels.
  -e, --echo                         Echo executed commands before running.
  -f STRING, --config=STRING         Runtime configuration file to use.
  -F STRING, --list-format=STRING    Change the display format used when listing tasks. Should be one of: flat (default), nested, json.
  -h [STRING], --help[=STRING]       Show core or per-task help and exit.
  -l [STRING], --list[=STRING]       List available tasks, optionally limited to a namespace.
  -p, --pty                          Use a pty when executing shell commands.
  -R, --dry                          Echo commands instead of running.
  -T INT, --command-timeout=INT      Specify a global command execution timeout, in seconds.
  -V, --version                      Show version and exit.
  -w, --warn-only                    Warn, instead of failing, when shell commands fail.

Subcommands:

  lint.autopep8       Run autopep8.
  lint.check (lint)   Run ruff as check-only.
  lint.fix            Run ruff and apply fixes.
  lint.flake8         Run flake8.
  lint.pre-commit     Run pre-commit.
  lint.pylint         Run pylint.
  lint.security       Attempt to identify possible security vulnerabilities.
  lint.watch          Run ruff as check-only.

Global Task Options:

  *file_args             List of Paths available globally to all tasks. Will resolve paths with working_dir
  --keep-going           Continue running tasks even on failure
  --working_dir=STRING   Set the cwd for the program. Example: "../run --working-dir .. lint test"
  -v,-vv,-vvv            Globally configure logger verbosity (-vvv for most verbose)

> calcipy-pack

Subcommands:

  pack.check-licenses   Check licenses for compatibility with `licensecheck`.
  pack.install-extras   Run poetry install with all extras.
  pack.lock             Ensure poetry.lock is  up-to-date.
  pack.publish          Build the distributed format(s) and publish.

> calcipy-tags

Subcommands:

  tags.collect-code-tags (tags)   Create a `CODE_TAG_SUMMARY.md` with a table          for TODO- and FIXME-style code comments.

> calcipy-types

Subcommands:

  types.basedpyright   Run basedpyright.
  types.mypy      Run mypy.
  types.pyright   Run pyright.
```

### Calcipy Pre-Commit

`calcipy` can also be used as a `pre-commit` task by adding the below snippet to your `pre-commit` file:

```yaml
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:

- [DEVELOPER_GUIDE]
- [STYLE_GUIDE]

## Code of Conduct

We follow the [Contributor Covenant Code of Conduct][contributor-covenant].

### Open Source Status

We try to reasonably meet most aspects of the "OpenSSF scorecard" from [Open Source Insights](https://deps.dev/pypi/calcipy)

## 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](mailto:dev.act.kyle@gmail.com).

## License

[LICENSE]

[changelog]: https://calcipy.kyleking.me/docs/CHANGELOG
[code_tag_summary]: https://calcipy.kyleking.me/docs/CODE_TAG_SUMMARY
[contributor-covenant]: https://www.contributor-covenant.org
[developer_guide]: https://calcipy.kyleking.me/docs/DEVELOPER_GUIDE
[license]: https://github.com/kyleking/calcipy/blob/main/LICENSE
[style_guide]: https://calcipy.kyleking.me/docs/STYLE_GUIDE

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kyleking/calcipy",
    "name": "calcipy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0.0,>=3.9.13",
    "maintainer_email": null,
    "keywords": "nox, python-poetry",
    "author": "Kyle King",
    "author_email": "dev.act.kyle@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/74/60/277f315fe94ea77ebabbe18867d271eec68d37b755d2094bcf78b3e677c8/calcipy-2.1.0.tar.gz",
    "platform": null,
    "description": "# calcipy\n\n![./calcipy-banner-wide.svg](https://raw.githubusercontent.com/KyleKing/calcipy/main/docs/calcipy-banner-wide.svg)\n\n`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.\n\n`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:\n\n- [pyscaffold](https://github.com/pyscaffold/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.)\n- [tidypy](https://github.com/jayclassless/tidypy#features), [pylama](https://github.com/klen/pylama), and [codecheck](https://pypi.org/project/codecheck/) offer similar functionality of bundling and running static checkers, but makes far fewer assumptions\n- [pytoil](https://github.com/FollowTheProcess/pytoil) is a general CLI tool for developer automation\n- And many more such as [pyta](https://github.com/pyta-uoft/pyta), [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), [formate](https://github.com/python-formate/formate), [johnthagen/python-blueprint](https://github.com/johnthagen/python-blueprint), [oxsecurity/megalinter](https://github.com/oxsecurity/megalinter), etc.\n\n## Installation\n\nCalcipy needs a few static files managed using copier and a template project: [kyleking/calcipy_template](https://github.com/KyleKing/calcipy_template/)\n\nYou can quickly use the template to create a new project or add calcipy to an existing one:\n\n```sh\n# Install copier. pipx is recommended\npipx install copier\n\n# To create a new project\ncopier copy gh:KyleKing/calcipy_template new_project\ncd new_project\n\n# Or convert/update an existing one\ncd my_project\ncopier copy gh:KyleKing/calcipy_template .\ncopier update\n```\n\n### Calcipy CLI\n\nAdditionally, `calcipy` can be run as a CLI application without adding the package as a dependency.\n\nQuick Start:\n\n```sh\n# For the CLI, only install a few of the extras which can be used from a few different CLI commands\npipx install 'calcipy[flake8,lint,tags]'\n\n# Use 'tags' to create a CODE_TAG_SUMMARY of the specified directory\ncalcipy-tags tags --help\ncalcipy-tags tags --base-dir=~/path/to/my_project\n\n# You can list all provided CLI commands with\npipx list\n```\n\n```txt\nvenvs are in ~/.local/pipx/venvs\napps are exposed on your $PATH at ~/.local/bin\n   package calcipy 1.4.0, installed using Python 3.11.4\n    - calcipy\n    - calcipy-lint\n    - calcipy-pack\n    - calcipy-tags\n    - calcipy-types\n```\n\nNote: the CLI output below is compressed for readability, but you can try running each of these commands locally to see the most up-to-date documentation and the full set of options. The \"Usage\", \"Core options\", and \"Global Task Options\" are the same for each subsequent command, so they are excluded for brevity.\n\n```txt\n> calcipy-lint\nUsage: calcipy-lint [--core-opts] <subcommand> [--subcommand-opts] ...\n\nCore options:\n\n  --complete                         Print tab-completion candidates for given parse remainder.\n  --hide=STRING                      Set default value of run()'s 'hide' kwarg.\n  --print-completion-script=STRING   Print the tab-completion script for your preferred shell (bash|zsh|fish).\n  --prompt-for-sudo-password         Prompt user at start of session for the sudo.password config value.\n  --write-pyc                        Enable creation of .pyc files.\n  -d, --debug                        Enable debug output.\n  -D INT, --list-depth=INT           When listing tasks, only show the first INT levels.\n  -e, --echo                         Echo executed commands before running.\n  -f STRING, --config=STRING         Runtime configuration file to use.\n  -F STRING, --list-format=STRING    Change the display format used when listing tasks. Should be one of: flat (default), nested, json.\n  -h [STRING], --help[=STRING]       Show core or per-task help and exit.\n  -l [STRING], --list[=STRING]       List available tasks, optionally limited to a namespace.\n  -p, --pty                          Use a pty when executing shell commands.\n  -R, --dry                          Echo commands instead of running.\n  -T INT, --command-timeout=INT      Specify a global command execution timeout, in seconds.\n  -V, --version                      Show version and exit.\n  -w, --warn-only                    Warn, instead of failing, when shell commands fail.\n\nSubcommands:\n\n  lint.autopep8       Run autopep8.\n  lint.check (lint)   Run ruff as check-only.\n  lint.fix            Run ruff and apply fixes.\n  lint.flake8         Run flake8.\n  lint.pre-commit     Run pre-commit.\n  lint.pylint         Run pylint.\n  lint.security       Attempt to identify possible security vulnerabilities.\n  lint.watch          Run ruff as check-only.\n\nGlobal Task Options:\n\n  *file_args             List of Paths available globally to all tasks. Will resolve paths with working_dir\n  --keep-going           Continue running tasks even on failure\n  --working_dir=STRING   Set the cwd for the program. Example: \"../run --working-dir .. lint test\"\n  -v,-vv,-vvv            Globally configure logger verbosity (-vvv for most verbose)\n\n> calcipy-pack\n\nSubcommands:\n\n  pack.check-licenses   Check licenses for compatibility with `licensecheck`.\n  pack.install-extras   Run poetry install with all extras.\n  pack.lock             Ensure poetry.lock is  up-to-date.\n  pack.publish          Build the distributed format(s) and publish.\n\n> calcipy-tags\n\nSubcommands:\n\n  tags.collect-code-tags (tags)   Create a `CODE_TAG_SUMMARY.md` with a table          for TODO- and FIXME-style code comments.\n\n> calcipy-types\n\nSubcommands:\n\n  types.basedpyright   Run basedpyright.\n  types.mypy      Run mypy.\n  types.pyright   Run pyright.\n```\n\n### Calcipy Pre-Commit\n\n`calcipy` can also be used as a `pre-commit` task by adding the below snippet to your `pre-commit` file:\n\n```yaml\nrepos:\n  - repo: https://github.com/KyleKing/calcipy\n    rev: main\n    hooks:\n      - id: tags\n      - id: lint-fix\n      - id: types\n```\n\n## Project Status\n\nSee the `Open Issues` and/or the [CODE_TAG_SUMMARY]. For release history, see the [CHANGELOG].\n\n## Contributing\n\nWe 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:\n\n- [DEVELOPER_GUIDE]\n- [STYLE_GUIDE]\n\n## Code of Conduct\n\nWe follow the [Contributor Covenant Code of Conduct][contributor-covenant].\n\n### Open Source Status\n\nWe try to reasonably meet most aspects of the \"OpenSSF scorecard\" from [Open Source Insights](https://deps.dev/pypi/calcipy)\n\n## Responsible Disclosure\n\nIf you have any security issue to report, please contact the project maintainers privately. You can reach us at [dev.act.kyle@gmail.com](mailto:dev.act.kyle@gmail.com).\n\n## License\n\n[LICENSE]\n\n[changelog]: https://calcipy.kyleking.me/docs/CHANGELOG\n[code_tag_summary]: https://calcipy.kyleking.me/docs/CODE_TAG_SUMMARY\n[contributor-covenant]: https://www.contributor-covenant.org\n[developer_guide]: https://calcipy.kyleking.me/docs/DEVELOPER_GUIDE\n[license]: https://github.com/kyleking/calcipy/blob/main/LICENSE\n[style_guide]: https://calcipy.kyleking.me/docs/STYLE_GUIDE\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python package to simplify development",
    "version": "2.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/kyleking/calcipy/issues",
        "Changelog": "https://github.com/kyleking/calcipy/blob/main/docs/docs/CHANGELOG.md",
        "Documentation": "https://calcipy.kyleking.me",
        "Homepage": "https://github.com/kyleking/calcipy",
        "Repository": "https://github.com/kyleking/calcipy"
    },
    "split_keywords": [
        "nox",
        " python-poetry"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "704e9202a3b5581a61ccb08d1817d274cccee3fb789b8d1edf3fb83f590e925c",
                "md5": "9161213f64dd347e7178d37f58ef524f",
                "sha256": "d7f68c67560c3c83e65b8e8ca88c479bd1410bd948949bd4e26c37267e010a45"
            },
            "downloads": -1,
            "filename": "calcipy-2.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9161213f64dd347e7178d37f58ef524f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0.0,>=3.9.13",
            "size": 45231,
            "upload_time": "2024-04-17T15:21:46",
            "upload_time_iso_8601": "2024-04-17T15:21:46.638764Z",
            "url": "https://files.pythonhosted.org/packages/70/4e/9202a3b5581a61ccb08d1817d274cccee3fb789b8d1edf3fb83f590e925c/calcipy-2.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7460277f315fe94ea77ebabbe18867d271eec68d37b755d2094bcf78b3e677c8",
                "md5": "520582efdb4f0dbc96bdc805f1f69ac7",
                "sha256": "5bd882a3b3fbfd0ec140cbcf34d10c243cdd1eb38e4bf177a10c3eb41998c62a"
            },
            "downloads": -1,
            "filename": "calcipy-2.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "520582efdb4f0dbc96bdc805f1f69ac7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0.0,>=3.9.13",
            "size": 34158,
            "upload_time": "2024-04-17T15:21:49",
            "upload_time_iso_8601": "2024-04-17T15:21:49.676790Z",
            "url": "https://files.pythonhosted.org/packages/74/60/277f315fe94ea77ebabbe18867d271eec68d37b755d2094bcf78b3e677c8/calcipy-2.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 15:21:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kyleking",
    "github_project": "calcipy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "calcipy"
}
        
Elapsed time: 0.70598s