Files
devx/docs/tech/architecture.md
T
emil 31bfd23fea
Post-merge / detect-type (push) Successful in 17s
Post-merge / validate-commit-msg (push) Successful in 16s
Post-merge / vikunja (push) Successful in 12s
Post-merge / configure-repo (push) Failing after 13s
Post-merge / release (push) Failing after 1m5s
Post-merge / sync-wiki (push) Successful in 1m2s
Post-merge / badges (push) Failing after 28s
DEVX-1: fix: use python3 and venv python in workflows and Makefile
2026-06-22 15:52:45 +00:00

2.1 KiB

Architecture

devx is a reusable Python package providing development and CI/CD tools for oblachno-oss projects.

Package Structure

src/devx/
├── __init__.py          # Version (single source of truth)
├── cli.py               # Click-based CLI entry point (devx command)
├── config.py            # Configuration system (DEVX_ env vars)
├── api_clients.py       # GiteaClient, VikunjaClient — HTTP API wrappers
├── gitea_cli.py         # TeaCLI — wrapper around tea CLI with JSON parsing
├── i18n.py              # Translation system (gettext-based, translations.json)
├── exceptions.py        # Custom exception types (DevxError, APIError)
├── translations.json    # Translation strings (en, bg, de, ru, zh)
├── ci/                  # CI/CD automation modules
├── tools/               # Developer tooling modules
└── molecule/            # Optional molecule testing helpers

Core Modules

cli.py

Click-based CLI entry point. Provides three command groups: devx ci, devx tools, devx molecule. Each subcommand delegates to the corresponding module via _run_module().

i18n.py

Simple i18n system using a JSON translations file. Supports en, bg, de, ru, zh. Projects can extend translations by setting DEVX_TRANSLATIONS_PATH to a custom JSON file.

exceptions.py

Custom exception hierarchy: DevxError (base), APIError (HTTP errors with status code and message).

api_clients.py

HTTP API clients with connection pooling and retry logic:

  • GiteaClient — Gitea REST API (branch protection, labels, issues, PRs, releases, reviews)
  • VikunjaClient — Vikunja REST API (tasks, projects, comments)

Both clients retry on transient errors (429, 5xx, connection errors) with exponential backoff.

config.py

Configuration constants with env-var overrides (DEVX_ prefix). Includes API URLs, timeouts, retry settings, task prefix regex, and conventional commit regex.

gitea_cli.py

Python wrapper around the tea Gitea CLI tool. Parses JSON output for structured data. Used by CI scripts for Gitea API operations (issues, labels, PRs, releases, reviews).