# p2pkg A small, purpose-built repository for a very specific migration: - `foo.py` ➜ `foo/__main__.py` - Generates `foo/__init__.py` that re-exports the public API from `__main__` so existing code like `import foo` or `from foo import some_function` keeps working. - Keeps the original module code *as-is* in `__main__.py` (one-off refactor helper). ## Install (editable) ```bash python -m venv .venv . .venv/bin/activate pip install -e . ``` ## Usage ```bash # Migrate one or more flat modules into packages p2pkg roles_list.py another_module.py # Or run directly python tools/p2pkg.py roles_list.py ``` ### Behavior Given `roles_list.py`: ``` roles_list.py ``` After migration: ``` roles_list/ ├── __init__.py # re-exports public API from __main__ └── __main__.py # contains the original implementation (moved) ``` - Running `python -m roles_list` executes `roles_list/__main__.py`. - Existing imports remain compatible (via re-exports in `__init__.py`). ## Development Run tests: ```bash make test ``` ## License MIT License. See `LICENSE`. --- Author: Kevin Veen-Birkenbach