aalhour / aalhour/PyCOOLC

Epic 8: Project modernization

Ouverte
#24 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
41
Forks
10
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

### Epic 8: Project modernization

Goal: bring tooling, layout, and dependencies to current Python best practices.

- [ ] **Switch to `src/` layout** — move `pycoolc/` into `src/pycoolc/`. Prevents accidental imports of the source tree instead of the installed package. Update `pyproject.toml`, `Makefile`, CI, and test imports.
- [ ] **Replace PLY with a maintained parser library** — PLY's last release was 2018. Candidates: `lark` (Earley/LALR, modern API, maintained), `sly` (PLY author's successor, similar API), or hand-written recursive descent. Biggest change in the project — lexer and parser rewrite, all tests must pass.
- [ ] **Switch build backend to `hatchling`** — drop `setuptools` + `MANIFEST.in` + `*.egg-info`. Hatch handles discovery, versioning, and sdist inclusion natively from `pyproject.toml`.
- [ ] **Remove `MANIFEST.in`** — becomes unnecessary after switching to `hatchling` or equivalent.
- [ ] **Delete committed PLY cache files** — `lextab.py`, `yacctab.py`, `parsetab.py` at repo root and in `examples/`. These are generated artifacts. Ensure `.gitignore` covers them and PLY writes to a build/temp dir.
- [ ] **Adopt `uv` for dependency management** — replace `pip` + `venv` with `uv` for 10-100x faster installs. Add `uv.lock` for reproducible environments. Update `Makefile` venv target.
- [ ] **Replace `Makefile` with `just` or `hatch` scripts** — optional but cleaner. `just` has simpler syntax, better cross-platform support, and no tab sensitivity.
- [ ] **Add dependency lockfile** — `uv.lock` or `pdm.lock` for reproducible CI and dev environments. Pin exact versions for dev deps.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.