Skip to main content

VNMA (Vendor Manager)

Status: Beta (v0.2.0)
Platform Support: CPython 3.11+ (Tested on Windows and Linux)

vnma is a dependency and vendoring manager for Python projects. It manages project dependencies inside a local, isolated vendor directory (vendor/ or vendor_vnma/) instead of creating or replicating full Python virtual environments (venv).


Overview

Traditional Python development relies on virtual environments, which duplicate the interpreter executable and standard library layout. While effective for system isolation, virtual environments introduce overhead in container builds, portable deployments, and shared team workflows where only runtime libraries are required.

vnma addresses this by downloading, building, and extracting platform-compatible wheels directly into the project directory while maintaining runtime path isolation and native binary compatibility.

Key Capabilities

  • Hermetic Path Isolation: Sanitizes sys.path during execution to prevent accidental leakage from system or user site-packages.
  • Static O(1) Binary Resolution: Avoids filesystem tree traversal at startup by recording precomputed dynamic link library (DLL/SO) paths during installation.
  • Transitive DAG Resolution: Evaluates version constraints across dependency trees, evaluating PEP 508 environment markers and detecting version conflicts.
  • Explicit Configuration (vnma_config.toml): Allows local packages and complex dependencies to specify exact DLL directories, entry points, and export boundaries without heuristic guesswork.
  • Multi-Source Support: Installs packages from PyPI, local filesystem paths (monorepos), and remote Git repositories.
  • Reproducible Builds: Emits a deterministic vnma.lock tracking versions, sources, and binary metadata.
  • Automatic IDE Configuration: Generates configuration for Visual Studio Code (extraPaths) and JetBrains PyCharm (.idea and .env).

Current Status: Beta Notice

vnma is currently in Beta. While core workflows—such as installing native packages (pygame-ce), complex transitive graphs (requests), and local source trees—have been validated, edge cases exist across different platforms, compilers, and non-standard packaging layouts.

Users are encouraged to verify builds in testing environments before deploying to critical production pipelines. See docs/en/02-Advice/01-beta-status.md for detailed considerations.


Quickstart

Installation

Install vnma directly from PyPI using pip:

pip install vnma

Or for development:

pip install -e .

Basic Commands

Initialize a project:

vnma init

Install a package from PyPI:

vnma install requests

Install a package from a local directory:

vnma install "C:/path/to/my-library"

Execute a script using the vendored runtime:

vnma run main.py

List installed packages:

vnma list

Prune orphaned packages not declared in vnma.toml:

vnma prune --dry-run
vnma prune --yes

Restore dependencies in offline mode:

vnma install --offline

Update dependencies (ignoring pinned packages):

# Update both PyPI and Git dependencies
vnma update

# Update only PyPI dependencies
vnma update --pip

# Update only Git repositories (pulls latest branch commit)
vnma update --git

Documentation

Full documentation is available in the docs/ directory:


License

This software is released under a modified permissive license. Commercial resale of the tool itself is prohibited, and bundled distributions must retain reciprocal licensing. See LICENSE for terms.

Metadata

Release files for vnma 0.2.6

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

Source distribution (sdist)

Source distribution for vnma 0.2.6
File Size Uploaded
vnma-0.2.6.tar.gz 67.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vnma 0.2.6
File Interpreter ABI Platform
vnma-0.2.6-py3-none-any.whl Python 3 none any Details

Total release size: 124.5 kB

Release files / vnma-0.2.6.tar.gz

Download URL vnma-0.2.6.tar.gz
Size 67.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e0643d6aa4d1dc27479de1fd6d9ffdb10a74953e445038e1a25d22729cae3093
BLAKE2b-256 checksum
How to use checksums
da6c294176386dc845a14b88e3bd7662586e2c8f29bb71a7fda50a133f64463a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / vnma-0.2.6-py3-none-any.whl

Download URL vnma-0.2.6-py3-none-any.whl
Size 57.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b5dc2e1b547083664d5ea3140d9dbd65afb677da5262da14fd022f38c9af12f
BLAKE2b-256 checksum
How to use checksums
f4214cc73b618ad66ab777d0dc616a9a381c9c88f81e7ab4ca8df8d661500873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

This release

0.2.6 This release

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release 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