Skip to content

Commit 4dcde94

Browse files
committed
docs: enchainement rapide README + architecture + contribution + deps
- Met a jour README avec les options CLI reelles et les nouveaux liens docs. - Ajoute la doc detaillee du dependency analyzer (classification, heuristiques, limites). - Ajoute une vue d'architecture Core/Engine/UI et un guide contributeur operable. - Met a jour TODO Phase 7 en marquant les taches documentation/contribution comme completees.
1 parent 7205c9a commit 4dcde94

5 files changed

Lines changed: 127 additions & 4 deletions

File tree

CONTRIBUTING.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Contributing Guide
2+
3+
## Branch model
4+
5+
- `develop`: integration branch for ongoing work.
6+
- `main`: stable release branch.
7+
8+
## Commit style
9+
10+
- Keep commits focused by topic.
11+
- Use clear messages (French or English) with technical intent.
12+
- Prefer multiple small commits over a single mixed commit.
13+
14+
## Minimal local checks before push
15+
16+
Run from repository root:
17+
18+
```bash
19+
./venv/bin/ruff check Core/deps_analyser/analyser.py Core/IdeLikeGui/connections.py EngineLoader/base.py tests/test_engine_install_flow.py tests/test_deps_analyser_heuristics.py
20+
./venv/bin/black --check Core/deps_analyser/analyser.py Core/IdeLikeGui/connections.py EngineLoader/base.py tests/test_engine_install_flow.py tests/test_deps_analyser_heuristics.py
21+
./venv/bin/mypy --ignore-missing-imports --follow-imports skip --disable-error-code attr-defined --disable-error-code import-untyped EngineLoader/base.py Core/deps_analyser/analyser.py Core/IdeLikeGui/connections.py tests/test_engine_install_flow.py tests/test_deps_analyser_heuristics.py
22+
pytest -q tests/test_engine_install_flow.py tests/test_deps_analyser_heuristics.py
23+
```
24+
25+
## Pull request expectations
26+
27+
- Explain what changed and why.
28+
- Mention risk areas and tested paths.
29+
- Update docs when behavior changes (CLI options, release flow, architecture).
30+
31+
## Release preparation
32+
33+
Follow:
34+
35+
- `docs/release_smoke_checklist.md`
36+
- `docs/versioning_and_release.md`

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,13 @@ Compilation (PyInstaller / Nuitka / cx_Freeze)
7878

7979
```bash
8080
python pycompiler_ark.py --help
81+
python pycompiler_ark.py --help-all
8182
python pycompiler_ark.py --version
8283
python pycompiler_ark.py --info
8384
python pycompiler_ark.py --cli
8485
python pycompiler_ark.py --ide-gui
86+
python pycompiler_ark.py --classic-gui
87+
python pycompiler_ark.py --unload
8588
```
8689

8790
### Dedicated CLI quick commands
@@ -131,6 +134,9 @@ python -m OnlyMod.EngineOnlyMod --engine nuitka -f script.py --dry-run
131134
- [Release smoke checklist](docs/release_smoke_checklist.md)
132135
- [IDE GUI parity matrix](docs/ide_gui_parity_matrix.md)
133136
- [Versioning and release flow](docs/versioning_and_release.md)
137+
- [Dependency analyzer details](docs/deps_analyzer.md)
138+
- [Architecture overview](docs/architecture_overview.md)
139+
- [Contributing guide](CONTRIBUTING.md)
134140

135141
---
136142

TODO.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
- [x] Mettre en place versioning + changelog de release.
3939

4040
### Phase 7 - Documentation et contribution (P2)
41-
- [ ] Mettre a jour README (mode IDE par defaut, options CLI, completion).
42-
- [ ] Mettre a jour la doc deps analyser (classification interne/externe).
43-
- [ ] Ajouter une doc architecture Core/Engine/UI.
44-
- [ ] Ajouter un guide contributeur (branches, commits, release flow).
41+
- [x] Mettre a jour README (mode IDE par defaut, options CLI, completion).
42+
- [x] Mettre a jour la doc deps analyser (classification interne/externe).
43+
- [x] Ajouter une doc architecture Core/Engine/UI.
44+
- [x] Ajouter un guide contributeur (branches, commits, release flow).
4545

4646
### Backlog historique
4747
- [ ] Doc engines: preciser que la scroll area n'est pas necessaire en UI monolithique (gestion auto par l'UI).

docs/architecture_overview.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Architecture Overview
2+
3+
## Main modules
4+
5+
- `Core/`: main GUI behaviors, orchestration, UI bindings, workspace flow.
6+
- `Core/IdeLikeGui/`: IDE-like UI mapping layer, wired to existing Core handlers.
7+
- `EngineLoader/`: engine contracts, discovery, registry, compatibility checks.
8+
- `ENGINES/`: built-in compilation engines (PyInstaller, Nuitka, cx_Freeze).
9+
- `bcasl/`: pre-compilation pipeline, plugin loading, execution and validation.
10+
- `Plugins/`: BCASL plugins.
11+
- `Plugins_SDK/` and `engine_sdk/`: extension SDKs.
12+
- `cli/`: command-line entrypoints, launchers, fallback mode.
13+
- `OnlyMod/`: standalone BCASL and Engines tools.
14+
15+
## Runtime flow (high level)
16+
17+
1. User selects workspace and files.
18+
1. BCASL pipeline prepares source and plugin transforms.
19+
1. EngineLoader resolves active engine and validates dependencies.
20+
1. Compilation process starts with progress/log feedback.
21+
1. Output artifacts and stats are reported in GUI/CLI.
22+
23+
## UI variants
24+
25+
- Classic GUI: default full layout.
26+
- IDE-like GUI: alternate layout reusing the same Core actions/signals.
27+
28+
## Design principle
29+
30+
Prefer wiring reuse over duplicate logic:
31+
32+
- UI layers map widgets to existing Core functions.
33+
- Engine and plugin systems stay decoupled through contracts (SDK/base classes).
34+
- CI and tests secure critical paths first, then expand progressively.

docs/deps_analyzer.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Dependency Analyzer
2+
3+
## Goal
4+
5+
The dependency analyzer scans selected Python files, extracts imports, and suggests missing external packages to install.
6+
7+
## Classification model
8+
9+
Each import root is classified into:
10+
11+
- `stdlib`: Python standard library modules.
12+
- `internal`: modules that belong to the current workspace.
13+
- `third_party`: modules resolved from `site-packages` / environment libraries.
14+
- `unknown`: unresolved imports (kept for manual review).
15+
16+
Only `third_party` and `unknown` are proposed as install candidates.
17+
18+
## Internal module detection strategy
19+
20+
The analyzer combines multiple signals:
21+
22+
1. Package chains with `__init__.py`.
23+
1. Common source layouts (`src/`, `lib/`, `python/`).
24+
1. Top-level package directories in workspace.
25+
1. Project metadata (`pyproject.toml`, `setup.cfg`) names converted to module roots.
26+
27+
## Import extraction coverage
28+
29+
- Standard imports: `import x`, `from x import y`
30+
- Relative imports: `from .x import y`, `from ..x import y`
31+
- Dynamic imports:
32+
- `__import__("pkg.mod")`
33+
- `importlib.import_module("pkg.mod")`
34+
35+
## File filtering
36+
37+
The analyzer excludes non-relevant paths:
38+
39+
- virtual environments (`venv`, `.venv`, `env`, `.env`)
40+
- caches/build artifacts (`__pycache__`, `.pytest_cache`, `.mypy_cache`, `build`, `dist`)
41+
- VCS folders (`.git`, `.svn`, `.hg`)
42+
- binary artifacts (`.pyc`, `.pyo`, `.pyd`, `*.egg-info`)
43+
44+
## Notes
45+
46+
- `unknown` imports are intentionally conservative to avoid false negatives.
47+
- Dynamic runtime-only imports may still require manual validation.

0 commit comments

Comments
 (0)