Architekta is a unified Python project manager focused on enforcing and automating the recommended practices for robustness and reproducibility. It guides the entire project lifecycle through setup, development, versioning, and distribution, integrating multiple development tools into a cohesive workflow.
Managing a Python project throughout its life cycle involves a complex sequence of tasks, fragmented across multiple tools and configurations.
While existing solutions address individual aspects (see ALTERNATIVES.md for comparisons), no tool unifies the entire workflow into a single, Python-centric framework.
Architekta provides a comprehensive project management system that:
- Automates recommended practices across the project lifecycle.
- Enforces a consistent structure and toolchain setup.
- Reduces friction by integrating multiple tools into a single interface.
With Architekta, developers can focus on implementing their project's logic, rather than on configuring tooling.
Key advantages of Architekta include:
- Integration: Unifies project setup, development, and distribution in a structured framework.
- Automation: Eliminates repetitive setup tasks and minimizes the need to learn multiple independent tools.
- Robustness: Integrates multiple tools to enforce recommended practices for reproducibility, code quality, testing, documentation, etc.
- Standardization: Promotes uniform practices across projects, facilitating collaboration and onboarding.
- Efficiency: Automates project management through a single interface and predefined setups, reducing repetitive manual tasks and eliminating the need to master multiple tools.
- Customization: Offers flexible configurations to adapt to project-specific requirements.
- Maintainability: Centralized configuration management simplifies project updates and extensions.
-
Project Structure
- Centralize project metadata, dependencies and tool configurations in a declarative format (
arkt.conf
). - Create standardized directories structures:
src/
,tests/
,docs/
,config/
,scripts/
. - Generate essential files:
README.md
,LICENSE
.
- Centralize project metadata, dependencies and tool configurations in a declarative format (
-
Version Control
- Configure Git repository:
.gitignore
, commit message template. - Configure Github repository: issue templates, GitHub actions.
- Configure Git repository:
-
Virtual Environment and Dependency Management
- Ensure dependency isolation and resolution with Conda.
- Create and update the Conda environment from a
environment.yml
file, automatically generated to integrates essential development tools (aligned with recommended practices) and project's specific dependencies (user-defined). - Register in "editable" mode the project packages (in the Python search path or the conda
environment, via a
.pth
file insite-package
), and executable scripts (in the conda environmentbin
, via a symlink). - Inspect the Conda environment.
-
Code Quality Provides default configuration templates for:
- Type checking with Mypy
- Linting with Pylint
- Formatting with Black and Isort
-
Testing
- Provide a default configuration template for Pytest (
conftest.py
). - Generate reports for test results and coverage, to be integrated with Sphinx documentation.
- Provide a default configuration template for Pytest (
-
Documentation
- Automated documentation generation with Sphinx, API documentation with autodoc.
- Templates for Architecture Decision Records (ADR).
- Assistance in changelog generation.
-
Versionning
- Automate versioning numbering and tagging following the semantic versioning scheme.
- Assist in release notes and changelog aggregation.
- Synchronize with GitHub releases.
-
Distribution
- Build and package the project for distribution via both PyPI and Conda (generate
pyproject.toml
andmeta.yaml
files). - Define GitHub workflows for CI/CD, automating test, build, and deploy steps.
- Build and package the project for distribution via both PyPI and Conda (generate
-
IDE Integration
- Generate a VSCode workspace to integrate all the tools and configurations.
pip install architekta
- Initialize new project (
project-name
):
architekta init <project-name>
- Edit
config/architekta_config.ini
:
[project]
name = my_project
python_version = 3.10
[tools]
enable_linting = true
enable_testing = true
- Configure components:
architekta setup git
architekta tool black
architekta env create
Command | Description |
---|---|
init [name] |
Initialize new project structure |
setup [component] |
Configure project components (git/conda/docs) |
tool [name] |
Add tool configuration (mypy/pylint/black) |
env [action] |
Manage Conda environments (create/update/export) |
generate docs |
Build project documentation |
This project is licensed under the GNU LICENSE.