Skip to content

Epic 8: Project modernization #24

Description

@aalhour

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions