Skip to main content

A general purpose tool for validating cyclomatic complexity in Python.

Project description

PyCyclo

py-cyclo is a general-purpose command-line tool for analyzing and validating cyclomatic complexity in Python code. Designed for developers who want to maintain clean, testable, and maintainable code, py-cyclo provides detailed reports and enforcement mechanisms to ensure your codebase doesn't spiral out of control.

License Tests PyPI


🚀 Features

  • Measure cyclomatic complexity of Python functions and methods
  • Set complexity thresholds and enforce them via CLI
  • Supports per-file, per-function, or project-wide analysis
  • JSON, plain-text, or colorized output formats
  • Integrates easily into CI/CD pipelines

📦 Installation

You can install py-cyclo via pip:

pip install py-cyclo

Or install directly from GitHub:

pip install git+https://github.com/ocrosby/py-cyclo.git

🛠️ Usage

# Execute this from within your project directory
cyclo --max-complexity 10

Example Output

example.py:12 - function `process_data` has cyclomatic complexity of 13 (limit: 10)

Options

Flag Description
--max-complexity Set the maximum allowed complexity per function
--help Show CLI help

🔧 Configuration

At present there are no configuration options.


🧪 Testing

To run the test suite:

pip install --upgrade pip
pip install invoke
pip install ".[dev]"
invoke test

🤝 Contributing

Contributions are welcome! To get started:

  1. Fork this repo
  2. Create a new branch (git checkout -b feature/my-feature)
  3. Make your changes
  4. Write tests and ensure everything passes
  5. Submit a pull request

Please follow the Contributor Covenant code of conduct.


📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


🙌 Acknowledgments

  • Inspired by tools like radon
  • Built with ❤️ using Click and ast

🔗 Related Projects


📬 Contact

Feel free to reach out via GitHub Issues or submit feature requests and bugs.

Project details


Download files

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

Source Distribution

py_cyclo-1.0.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

py_cyclo-1.0.1-py2.py3-none-any.whl (5.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file py_cyclo-1.0.1.tar.gz.

File metadata

  • Download URL: py_cyclo-1.0.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for py_cyclo-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5229f434999e0798b06abaf5412d8d73e50548244b7f09b1d651cef75028d408
MD5 c4b1f53b90c5a493788847fb548193fb
BLAKE2b-256 6bdc19f1e253e650a4cbff4090a52d5e92f8e7a93a2db0bedc11322630b03ea3

See more details on using hashes here.

File details

Details for the file py_cyclo-1.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: py_cyclo-1.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for py_cyclo-1.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b03c9be591f3e8174f3e885223592cfc006e61d609c4e63d4fc528442ed87c7e
MD5 a5c4ffdd15c3ac50bc9f34f58d41d6b2
BLAKE2b-256 34360afc5aa81fd9ecc0407d7b7813f289206056bbbeb0beada07453e77499d1

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