No project description provided
Project description
REErelease
Imagine you had only 3 file to manage and plan your projects: readme, roadmap and release
Now imagine a simple cli interface to release, update, document the lifecycle of those projects
So you have time and mental space to put on the actual work and architect your project in a simple straigth-forward way
This is what REErelease aims to enable, simple markdown project management, automated yet flexible
It does support monorepo environment and other nested contexts scenarios
Based on typer/click, jinja2 and questionary
Quick Start
Installation
pip install reerelease
Basic Usage
# Create new project context with templates
reerelease context new my-project
# Discover existing contexts in current directory
reerelease context list
๐ Complete command reference: See the commands reference for detailed usage and options.
Development
Setup
-
Install hatch
-
Clone and setup:
git clone git@gitlab.com:real-ee/tool/reerelease.git cd reerelease hatch run setup
Git Hooks Setup
Automated quality assurance is enforced through Git hooks:
python tools/setup_hooks.py
NOTE: this is automatically run during setup
This configures:
- ๐จ Code formatting (ruff format)
- ๐ Linting (ruff check)
- ๐ท๏ธ Type checking (mypy)
- ๐งช Testing (pytest)
- ๐ Badge generation (coverage + test badges)
- ๐ Push validation (ensures quality gates passed)
Development Workflow
Normal Development
git add .
git commit -m "Your changes" # Runs full validation pipeline
git push # Validates commit has passed checks
The hooks runs:
- Formats code with ruff
- Runs linting checks
- Validates type annotations
- Executes test suite
- Updates coverage/test badges
- Adds validation marker to commit
NOTE: They are forced on the main/master branch or you can trigger them manually by adding
[force-hooks]or[verify-hooks]to your commit message Alternatively than can be triggered by environment variableFORCE_HOOKS=1 git commit -m 'feature commit'
Emergency Bypass
git commit --no-verify -m "Emergency fix [skip-hooks]"
git push --no-verify
Testing
# Run tests
hatch run test
# Run tests with detailed output
hatch run pytest -- --show-fail-details tests
# Generate coverage report
hatch run cov
# Generate all reports
hatch run reports
VS Code Integration
The project includes VS Code settings for:
- Ruff integration with auto-fix on save
- MyPy type checking in Problems Panel
- Pytest test discovery and execution
- Task runners for common operations
Setup: After opening the project, VS Code should automatically detect the hatch environment. If not, use
Ctrl+Shift+Pโ "Python: Select Interpreter" and choose the hatch virtual environment (usually shows asreereleasewith the hatch path).
Available Tasks
Open the project in VS Code and use Ctrl+Shift+P โ "Tasks: Run Task":
- pytest - Run test suite
- pytest (show CLI output on fail) - Run tests with detailed failure output
- pytest (debug logs) - Run tests with verbosity set to DEBUG
- pytest run test under cursor - Run the test at cursor using helper script
- pytest generate reports - Generate coverage and test reports in docs folder
- Fix All Ruff Issues - Auto-fix linting issues
- Format Code - Format code with ruff
- Quality Check (All) - Run complete quality pipeline
- MyPy Type Check - Run MyPy type checking
Debug/Launch Configurations
Use F5 or "Run and Debug" panel:
- Show Help - Display reerelease CLI help
- Quality Check - Run full quality pipeline
- Setup: Demo Monorepo - Create demo monorepo
- Test: List Demo Monorepo - List demo monorepo contexts
- Add Context (demo) - Create demo context in /tmp
- List Contexts (demo) - List contexts in demo directory
- Emit Test Logs - Generate test log output
Quick Commands
Ctrl+Shift+Pโ "Python: Configure Tests" (pytest)Ctrl+Shift+Pโ "Python: Run All Tests"Ctrl+Shift+Pโ "Tasks: Run Task" โ Choose from available tasks
Publishing workflow
-
Bump version in
src/reerelease/__about__.py -
Update release notes in release.md
-
Release in 3 automatic steps:
hatch run release-safe
NOTE: you need an API key setuped for test.pypi.org AND pypi.org
Automated release process:
- Version validation (checks git tags + PyPI)
- Quality checks (format, lint, typecheck, tests)
- Build package and validate distribution
- Create git tag and push to origin
- Publish to test-PyPI and then to PyPI if nothing failed
Manual alternative: python3 tools/release.py [--test-pypi]
Project Structure
๐ View complete project structure
reerelease/
โโโ src/
โ โโโreerelease/ # Main package
โ โโโ __about__.py # Package version and metadata
โ โโโ __init__.py # Package initialization
โ โโโ reerelease.py # Main logic and CLI entry
โ โโโ errors.py # Custom Exceptions and error types
โ โโโ config.py # App global configuration and defaults value
โ โโโ cli
โ โ โโโ commands/ # CLI command modules
โ โ โ โโโ context.py
โ โ โ โโโ milestone.py
โ โ โ โโโ problem.py
โ โ โ โโโ task.py
โ โ โโโ console.py # Console specific methods
โ โ โโโ error_codes.py # CLI exit codes
โ โโโ core/ # Core dataclasses and functions
โ โ โโโ context.py # Memory representation of contextes
โ โ โโโ logging.py # Logging configuration
โ โ โโโ milestone.py # Memory representation of milestones
โ โ โโโ task.py # Memory represnetation of tasks
โ โโโ service # Middle layer services, contain file io and other complex shared algo
โ โ โโโ dsl # Custom DSL
โ โ โ โโโ inplace_edit.py # Inplace edition (minimal-churn) functions
โ โ โ โโโ memory_manager.py # Parsed memory management
โ โ โ โโโ phase1_specs.py # Template annotation parsing phase
โ โ โ โโโ phase2_parser.py # Content input phase
โ โ โ โโโ phase3_renderer.py # Content output phase
โ โ โ โโโ phase4_validator.py # Validation phase
โ โ โ โโโ pipeline.py # Wrapping oject and simple-to-use API
โ โ โโโ context_manager.py # Context management service
โ โ โโโ milestone_manager.py # Milestone management service
โ โ โโโ template_manager.py # Template management and rendering service
โ โโโ validators # Static validators
โ โ โโโ validate_context.py # Context specific validation
โ โ โโโ validate_dsl.py # Validator for the DSL pipeline
โ โ โโโ validate_milestone.py # Milestone specific validation
โ โโโ templates/ # Jinja2 templates
โ โโโ common/ # Shared template fragments
โ โโโ context/ # Context templates
โ โโโ domain/ # Domain templates
โ โโโ milestone/ # Milestone templates
โ โโโ task/ # Task templates
โโโ tests/ # Test suite
โ โโโ ...
โโโ tools/ # Development tools
โ โโโ release.py # Automated release script
โ โโโ run_pytest_node.py # Helper to run pytest for editor integrations
โ โโโ setup_demo_monorepo.sh # Demo monorepo setup script
โ โโโ setup_hooks.py # Git hooks installer
โ โโโ update_badge.py # Badge generation script
โโโ .vscode/ # VS Code configuration
โ โโโ settings.json # Editor settings
โ โโโ tasks.json # Task definitions
โ โโโ launch.json # Debug configurations
โโโ docs/ # Documentation and badges
โ โโโ architecture.md # Software architecture description
โ โโโ commands.md # Command reference
โ โโโ coverage.svg # Tests coverage badge
โ โโโ dsl.md # Custom DSL specification and guideline
โ โโโ metadata.md # Supported metadata specifications
โ โโโ tests.svg # Tests number and success badge
โ โโโ user_guide.md # Top-level user guide for quick start and understanding
โโโ pyproject.toml # Python project & tooling configuration
โโโ README.md # This file
โโโ release.md # Release log
โโโ roadmap.md # Planned future version and functionnality
โโโ license.txt # License
Quality Assurance
This project aims to maintains 100% test coverage and strict code quality through:
- Modern Python tooling: Ruff (linting/formatting), MyPy (type checking)
- Comprehensive testing: pytest with full coverage reporting
- Automated validation: Git hooks ensure all changes pass quality gates
- Badge tracking: Visual indicators of test and coverage status
License
Released under MIT open-source license
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
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 reerelease-0.3.2.tar.gz.
File metadata
- Download URL: reerelease-0.3.2.tar.gz
- Upload date:
- Size: 96.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a5de189d089c685a8c11d7d2f28e8c85995fe6e52154faec120acf6f5b96dbc
|
|
| MD5 |
54e8854329e409e7e2095597866c3fa1
|
|
| BLAKE2b-256 |
d0f7f116e01707122b9820af77839afd3fb72516ad70d5910b05032e7815cbee
|
File details
Details for the file reerelease-0.3.2-py3-none-any.whl.
File metadata
- Download URL: reerelease-0.3.2-py3-none-any.whl
- Upload date:
- Size: 80.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b27a8538f5a7faf3391b20a2dd38cdeae9c8e3a8e1b8d25d9df3f4c16f5d1bfe
|
|
| MD5 |
1f08946da60740f3d5375900bba563d8
|
|
| BLAKE2b-256 |
3253e6695c89ee5701b0b4b5ccfa6f9abcf1ea202ae0139edcf5e6165ab0bac8
|