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 install
pepm run main.py
pepm list
pepm track --port 8000
pepm track --host 0.0.0.0 --port 8000 --watch-ms 750

pepm python <version> uses pyenv install -s when pyenv is available, then writes .python-version and pepm.json. If pyenv is not installed, pepm use <version> still records the requested version.

pepm install creates .venv 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, and flow.toml. 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.1.1.tar.gz (28.5 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.1.1-py3-none-macosx_12_0_arm64.whl (147.4 kB view details)

Uploaded Python 3macOS 12.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pepm-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f9c7c8c63a58ef21508dcd591186646ac9926060194d84022f616894c971794d
MD5 e467e3f5eb13726c05a02b506f47f9cb
BLAKE2b-256 a47fee0c30eee03878d92729d1b469e5c80d417f8d02a08ecdf01517511f30fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pepm-0.1.1-py3-none-macosx_12_0_arm64.whl
  • Upload date:
  • Size: 147.4 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.1.1-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 76278a1cdd21e32727b39ff12f05ac73407a00d7c1c9d067eb6912a04bae3d0f
MD5 ffb8be617d8a387ebc4e2c7925f4ad7f
BLAKE2b-256 67380a8313f370e62b2ef125ba14e50d4b32d6c841818d5ed6d0ee83e6cf5185

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.0

2 files

This release

0.1.1 This release

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