Skip to main content

lpip

Git-backed, name-oriented front end to pip for internal Python packages — no internal PyPI registry required.

Install from PyPI as esys-lpip (pip install esys-lpip); the command and import remain lpip.

Status

Item Value
Workflow A2C 0.10.0 (ADR-0000)
Profile python-pypi
Product v1 CLI on PyPI as esys-lpip (0.1.1)

What this is

lpip (local-pip) resolves a logical package name from a TOML catalog (lpip-sources.toml), validates configuration and prerequisites, and delegates installation to python -m pip install .... The catalog may be a local file or a Git-backed checkout in a persistent user cache.

It is a small client, not a package manager replacement, registry, or service (ADR-0001, ADR-0004).

Why Git instead of a private index

A private package index is a second service: you host it, keep it up, and invent another login. lpip treats Git as the index. Names resolve to git+ URLs; pip installs the tree. Access control is whatever you already use to clone — typically SSH keys or deploy keys. No extra account, no extra host, no extra secret type.

Public PyPI is how you install this tool. Internal packages stay in the Git you already operate.

Non-goals (v1)

  • Internal package index or hosted registry
  • A dependency resolver other than pip
  • Background daemons, lockfile solving, or workspace orchestration

Quick start

pip install esys-lpip
lpip --help

From a clone (contributors):

python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -e ".[dev]"
pytest

Re-run scripts/setup-dev after clone if you need pre-commit and gitlint hooks (see docs/workflow/adoption.md).

Intended configuration

Local catalog:

[source]
type = "file"
path = "~/company/lpip-sources.toml"

Git-backed catalog:

[source]
type = "git"
url = "ssh://git.company/dev/lpip-catalog.git"
revision = "main"
path = "lpip-sources.toml"
refresh = "auto"

Example catalog entry:

[packages.libfoo]
url = "git+ssh://git.company/libs/libfoo.git"
revision = "main"
subdirectory = "python"

Author that file in the catalog Git repository (then commit and push). --url is a normal clone URL (ssh://, https://, or git@host:path); lpip stores git+ssh / git+https for pip:

cd /path/to/lpip-catalog
lpip catalog init
lpip catalog add libfoo --url ssh://git.company/libs/libfoo.git --revision main --subdirectory python
# or: lpip catalog add   # prompts for missing fields

Consumers only fetch (source.type = git + lpip catalog refresh). add / init do not write the consumer cache.

Register more than one catalog (first name wins on install):

lpip source add company --type git --url ssh://git@gitlab.com/org/lpip-catalog.git --revision main
lpip source add local --type file --path ~/lpip-sources.toml
lpip source list
lpip source remove local

Install a mixed list (lpip-requirements.txt is the usual name): catalog names first, then pip for the rest. Bare lpip install NAME still fails if the name is not in the catalog.

lpip install libfoo==1.2.3
lpip install -r lpip-requirements.txt
lpip install -r lpip-requirements.txt --catalog-only

== on a catalog name selects the Git tag (1.2.3 or v1.2.3). Other specifiers on catalog names fail; PyPI lines in -r are passed to pip as-is.

List Git tags that parse as versions (optional leading v): lpip versions libfoo or lpip index versions libfoo (--pre, --all).

lpip version / lpip --version print this tool’s installed version.

lpip install --upgrade / -U and lpip upgrade pass pip --upgrade (same for -r).

Commands: lpip install, lpip upgrade, lpip list, lpip show, lpip versions, lpip version, lpip validate (--strict fails on name clashes across sources), lpip doctor, lpip catalog … (init, add, refresh, …), lpip source … (list, add, remove), lpip config …, lpip index versions. Details: docs/architecture/cli-and-configuration.md.

Documentation

Topic Location
Architecture docs/architecture/overview.md
Artifact chain docs/workflow/documentation-structure.md
ASRs docs/asr/
ADRs docs/adr/INDEX.md
Acceptance criteria docs/ac/
A2C adoption docs/workflow/adoption.md
Release docs/release-pipeline.md
Publishing docs/package-publishing.md
GitLab CI docs/gitlab-ci.md
Agent entry AGENTS.md

License

MIT (pyproject.toml).

Metadata

Release files for esys-lpip 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esys-lpip 0.4.0
File Size Uploaded Provenance
esys_lpip-0.4.0.tar.gz 42.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for esys-lpip 0.4.0
File Interpreter ABI Platform
esys_lpip-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / esys_lpip-0.4.0.tar.gz

Download URL esys_lpip-0.4.0.tar.gz
Size 42.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6212381e66e16f64d34aa90c20f32894d7f7d1e3d479bd028d4533ed780b4fa7
BLAKE2b-256 checksum
How to use checksums
3574528468aeeee50f4f081a6ae68c662d6f9595ee8c93ffabd887d03a42d7ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / esys_lpip-0.4.0-py3-none-any.whl

Download URL esys_lpip-0.4.0-py3-none-any.whl
Size 31.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
965c89aa6680fdbe30afb808da91319ed4af74797151e329adb54f9698c9935b
BLAKE2b-256 checksum
How to use checksums
5dca1bf5330536309a1baa2018e8783c4a69d80949bde36288083ae7260bb827
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Security for esys-lpip 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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