PyCodemark – a full-featured code review tool for Python.
Project description
PyCodemark
Overview
PyCodemark is a full-featured Python code review tool that automatically detects style issues, missing docstrings, and other code quality problems.
It supports terminal, JSON, and SARIF output for CI/CD integration and is extensible via plugins.
Features
- Detect missing docstrings, PEP8 violations, and clarity issues
- JSON and SARIF output for CI pipelines
- Plugin system for custom checks
- Pre-commit integration
- Configurable via
pyproject.toml - Works with Python 3.13+
Installation
Clone the repository:
git clone https://github.com/roshanguptamca/pycodemark.git
cd pycodemark
Create a Python 3.13 virtual environment:
python3.13 -m venv venv
source venv/bin/activate
poetry install
Quick Start
Quick Start with PyCodemark
PyCodemark is a full-featured Python code review tool that detects style issues, missing docstrings, and other code quality problems. It supports terminal, JSON, and SARIF output for CI integration.
Installation
Install PyCodemark via pip:
pip install pycodemark
Or with Poetry:
poetry add pycodemark
Run a basic code review:
codemark review src/
codemark review src/ --format json
codemark review src/ --format sarif
Environment Variables
PyCodemark requires an OpenAI API key to perform AI-powered smart code reviews. You can also optionally specify which OpenAI model to use.
- OpenAI API Key
Set your API key as an environment variable:
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
This is required for the smart-review command.
The tool will use this key to authenticate with the OpenAI API.
You can obtain your key from OpenAI API Keys 2. 2. Optional: Specify AI Model
By default, PyCodemark uses the gpt-5 model for smart reviews. You can override it with the environment variable CODEMARK_MODEL:
export CODEMARK_MODEL="gpt-5"
If not set, gpt-5 will be used automatically. You can specify any OpenAI chat-capable model available to your account. Example models: gpt-5, gpt-5.1, gpt-4, gpt-4-32k.
Quick Example:
export OPENAI_API_KEY="sk-xxxx"
export CODEMARK_MODEL="gpt-5"
# Run AI-powered review
codemark smart-review src/
Any issues detected by the AI will appear in the terminal table, JSON, or SARIF output depending on the chosen --format.
If your quota is exceeded or the API fails, the tool will log the error in the report.
- Security Tips Do not commit your API key to version control. Store keys securely in environment variables or secret managers. You can also use .env files with tools like direnv or python-dotenv.
Plugins Extend PyCodemark by adding custom checks under src/codemark/plugins/. Each plugin must implement: ```python` def run(file_path, config): """Return a list of issues detected in the file.""" return []
Pre-commit Integration
Add to your .pre-commit-config.yaml:
```yaml repos:
- repo: local
hooks:
- id: codemark
name: codemark-review
entry: codemark review --format terminal
language: system
types: [python]
```
Then run:
```bashpre-commit install
```pre-commit install
CI/CD Integration (GitHub Actions)
You can integrate PyCodemark in CI pipelines with SARIF reporting. Example workflow file: .github/workflows/codemark.yml
Runs PyCodemark on every push or pull request
Uploads SARIF results to GitHub for code scanning
Provides automated code quality checks
Configuration
Configure PyCodemark via pyproject.toml:
[tool.pycodemark]
max_line_length = 88
rules = ["PEP8", "clarity", "docstrings"]
exclude = ["tests/", "migrations/"]
Makefile Commands:
make lint: Run code linting- make venv # Create virtual environment
- make install # Install dependencies via Poetry
- make build # Build package
- make test # Run tests
- make lint # Run linter
- make lint-fix # Automatically fix lint issues
- make review # Run terminal review
- make review-json # Run review with JSON output
- make review-sarif # Run review with SARIF output
- make publish # Publish to PyPI
Download Documentation: PDF HTML
License
MIT License © Roshan Gupta
---
If you want, I can also provide a **one-liner command** so you can generate this README automatically on your Mac without manually copying it.
Do you want me to do that next?
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycodemark-0.4.0.tar.gz.
File metadata
- Download URL: pycodemark-0.4.0.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/25.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29dd1a16600fcf42b003497781655f4511ad03e9a0de0b4ad28776136d1eb2ba
|
|
| MD5 |
03ca84852dc982400c125265eeb4d4f8
|
|
| BLAKE2b-256 |
00f71e47d1497fcc6e88b57ea3bf28fde42cc90dede3e60dac043ee22c17ba2e
|
File details
Details for the file pycodemark-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pycodemark-0.4.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/25.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef2198de3790eac76ffc810511e1d4b2afba8f875fc1d16ffccc420fbb8019b9
|
|
| MD5 |
9739adcd033f3d217af7747d7592530e
|
|
| BLAKE2b-256 |
a6df2ba4428d14a59b8b43ae2f010f9fbbdf4aa00b8660757f70ed0bc0b39ef0
|