Skip to main content

pepm

pepm is an experimental C++ package/environment manager for Python projects. It borrows the structured-project idea from npm, while keeping the first version small and transparent.

Build

cmake -S . -B build
cmake --build build

The executable will be at build/pepm.

Commands

pepm init [name]
pepm add requests 2.32.3
pepm remove requests
pepm use 3.12.5
pepm python 3.12.5
pepm python install 3.11.9
pepm python list
pepm python remove 3.11.9
pepm doctor
pepm install
pepm run main.py
pepm list
pepm track --port 8000
pepm track --host 0.0.0.0 --port 8000 --watch-ms 750

pepm manages its own pinned pyenv installation under ~/.pepm/pyenv; no shell setup or separate pyenv installation is required. The first command that needs Python installs pyenv automatically. pepm python <version> and pepm use <version> install and select that version, update .python-version and pepm.json, and rebuild .venv when its interpreter changes.

Pyenv builds most CPython releases from source. Run pepm doctor to check for Git, Make, curl, and a C compiler before installing a version. Operating-system development libraries may still be required for complete Python builds.

pepm install creates .venv from the selected pepm-managed Python and installs the packages exported to requirements.txt.

pepm run <file.py> [args...] prepares the environment and then runs Python code. It creates .venv when needed, installs requirements.txt, then runs with .venv/bin/python. Common import/package mismatches are normalized, such as cv2 or python-opencv becoming opencv-python.

pepm init [name] creates pepm.json, requirements.txt, .python-version, a starter main.py when one does not already exist, flow.toml, and .venv in the current directory. Existing main.py files are never overwritten.

flow.toml is the persistent code-understanding model. It records files, imports, functions/classes, line ranges, high-level explanations, calls, source, and rule-based line explanations. It is regenerated only when its generated content changes.

pepm track starts an animated tabbed dashboard. It shows:

  • the selected Python version
  • configured dependencies
  • a compact main-function flow for source files
  • an architecture board grouped into Entry, Input, Processing, State, Output, and Infrastructure
  • file roles, plain-English architecture notes, and dependency explanations
  • a searchable function inspector that displays one component at a time
  • detected classes/functions, line ranges, signatures, purpose, call sites, and exact source
  • optional line-by-line code explanations generated from syntax and operations rather than comments
  • function contracts showing parameters, output, side effects, and next project calls
  • a separate git-flow tab with create, checkout, merge, abort, resolve, commit, working-tree status, branch graph, and commit timeline
  • a merge-conflict tab with conflict marker reasons, browser editing for resolved content, and commit controls

While pepm track is running, the dashboard checks for saved source changes and refreshes automatically. The selected tab and function are restored after refresh whenever they still exist.

Use --no-watch to disable browser polling. The server binds to 127.0.0.1 by default; use --host 0.0.0.0 only when the dashboard must be reachable from another machine.

Packaging

The CMake install target places pepm in the selected install prefix's bin directory. Debian/Ubuntu packaging instructions and the reproducible Docker build are in packaging/README.md. A validated native-architecture package can be produced with:

docker build -f packaging/Dockerfile.deb -t pepm-deb-builder:0.1.0 .

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pepm-0.2.0.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pepm-0.2.0-py3-none-macosx_12_0_arm64.whl (151.9 kB view details)

Uploaded Python 3macOS 12.0+ ARM64

File details

Details for the file pepm-0.2.0.tar.gz.

File metadata

  • Download URL: pepm-0.2.0.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for pepm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 11bd4ba5fcebf4c58c8acb231801245b44bfb4fcc86cee2340fee82357819ab1
MD5 33d72cee6d8510fbea29b9a38cb1171b
BLAKE2b-256 d211e7aff9ed5b0d489e82e64253678e98bbc052f72a7e843ead4c61a58f8617

See more details on using hashes here.

File details

Details for the file pepm-0.2.0-py3-none-macosx_12_0_arm64.whl.

File metadata

  • Download URL: pepm-0.2.0-py3-none-macosx_12_0_arm64.whl
  • Upload date:
  • Size: 151.9 kB
  • Tags: Python 3, macOS 12.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for pepm-0.2.0-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 c0475ee079317a4b18a20040a35f2770cc6dbf87f41f5431af69d938f8be32b7
MD5 7c84ef23e539e144325c553176bc87f6
BLAKE2b-256 6832f8ecef3cf51a915efd8d6907a2d4b5d28458036457c12a3e1250ab6c06f2

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page