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.0.tar.gz (28.2 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.0-py3-none-macosx_12_0_arm64.whl (146.5 kB view details)

Uploaded Python 3macOS 12.0+ ARM64

File details

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

File metadata

  • Download URL: pepm-0.1.0.tar.gz
  • Upload date:
  • Size: 28.2 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.0.tar.gz
Algorithm Hash digest
SHA256 816af3ac096404ba4e2940e44e9ceef690139369f70d54965b3f5879f9952b96
MD5 cef997e46c2b1c0197046d903f046461
BLAKE2b-256 a9277ca29a0431f3384251a3dc2025fa7d9df5dc7f89f97b78762a3a6a61fa6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pepm-0.1.0-py3-none-macosx_12_0_arm64.whl
  • Upload date:
  • Size: 146.5 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.0-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 87c5a4e175f5b69e26ba0ea1aa71bcfdbd8d4224942c5cef92462d49c6965a7d
MD5 7014158e30fb50e6699facafe91322c1
BLAKE2b-256 1bcb1dcd7a66554fea5971b53bd384007efb49f23463ed6403a70f79acfbcabd

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

This release

0.1.0 This release

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