Skip to main content

No project description provided

Project description

packse

Python packaging scenarios.

Installation

Install from PyPI:

uv pip install packse

Once installed, the packse command-line interface will be available.

Usage

Scenarios

A scenario is a JSON description of a dependency tree.

See scenarios/examples/

Each scenario file can contain one or more scenarios.

Listing scenarios

A list of available scenarios can be printed with the list command:

packse list

By default, packse will search for scenarios in the current tree. You may also pass a file to read from:

packse list scenarios/examples/example.json

Each scenario will be listed with its unique identifier e.g. example-cd797223. This is the name of the package that can be installed to run the scenario once it is built and published.

Each packse command supports reading multiple scenario files. For example, with list:

packse list scenarios/examples/example.json scenarios/requires-does-not-exist.json

Viewing scenarios

The dependency tree of a scenario can be previewed using the view command:

$ packse view scenarios/examples/example.json
example-89cac9f1
├── root
│   └── requires a
│       └── satisfied by a-1.0.0
├── a
│   └── a-1.0.0
│       └── requires b>1.0.0
│           ├── satisfied by b-2.0.0
│           └── satisfied by b-3.0.0
└── b
    ├── b-1.0.0
    ├── b-2.0.0
    │   └── requires c
    │       └── unsatisfied: no versions for package
    └── b-3.0.0

Note the view command will view all scenarios in a file by default. A single scenario can be viewed by providing the --name option:

$ packse view scenarios/examples/example.json --name example
example

This is an example scenario, in which the user depends on a single package `a` which requires `b`

example-89cac9f1
├── root
│   └── requires a
│       └── satisfied by a-1.0.0
├── a
│   └── a-1.0.0
│       └── requires b>1.0.0
│           ├── satisfied by b-2.0.0
│           └── satisfied by b-3.0.0
└── b
    ├── b-1.0.0
    ├── b-2.0.0
    │   └── requires c
    │       └── unsatisfied: no versions for package
    └── b-3.0.0

Notice, when a specific scenario is specified, there is more information displayed.

Building scenarios

A scenario can be used to generate packages and build distributions:

packse build scenario/example.toml

The build/ directory will contain sources for all of the packages in the scenario. The dist/ directory will contain built distributions for all of the packages in the scenario.

When a scenario is built, it is given a unique identifier based on a hash of the scenario contents and the project templates used to generate the packages. Each package and requirement in the scenario will be prefixed with the identifier. The unique identifier can be excluded using the --no-hash argument, however, this will prevent publishing multiple times to a registry that does not allow overwrites.

The PACKSE_VERSION_SEED environment variable can be used to override the seed used to generate the unique identifier, allowing versions to differ based on information outside of packse.

Running a package index

Requires installation with the serve extra

To start a local package index:

packse serve

Packages can be installed by passing the --index-url flag to the installer e.g. with pip:

pip install --index-url http://127.0.0.1:3141/simple-html example-a-e656679f

To also include build dependencies, use the /vendor subdirectory:

pip install --index-url http://127.0.0.1:3141/simple-html --find-links http://127.0.0.1:3141/vendor example-a-e656679f

Packse will watch for changes to the scenarios directory, and publish new versions on each change.

Note when developing, it is often useful to use the --no-hash flag to avoid having to determine the latest hash for the scenario.

Building a package index

Requires installation with the index extra

Packse can build a file tree that can be served statically, for example, through GitHub Pages, that serve both the scenarios and the vendored build dependencies, using the index command:

packse index build

This creates three directories in ./index:

  • ./index/files: The distributions.
  • ./index/simple-html: The simple HTML index (PEP 503).
  • ./index/vendor: A flat index of build dependencies.

Testing scenarios

Published scenarios can then be tested with your choice of package manager.

For example, with pip:

pip install -i https://astral-sh.github.io/packse/548262f/simple-html/ example-cd797223

Exporting scenarios

Scenario information can be exported with the packse inspect. This creates a JSON representation of the scenarios with additional generated information such as the root package name and the tree displayed during packse view.

Writing new scenarios

Scenario files may contain one or more scenarios written in JSON. See the existing scenarios for examples and the Scenario type for details on the supported schema.

Project details


Download files

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

Source Distribution

packse-0.3.57.tar.gz (5.9 MB view details)

Uploaded Source

Built Distribution

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

packse-0.3.57-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file packse-0.3.57.tar.gz.

File metadata

  • Download URL: packse-0.3.57.tar.gz
  • Upload date:
  • Size: 5.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for packse-0.3.57.tar.gz
Algorithm Hash digest
SHA256 063e55c3f31ee6d97f4e336a883cce12ce3d264c5a504d88bfc8ba4b438439ba
MD5 1d01ecf51d2457f80dae4815fb331bf0
BLAKE2b-256 8e567695c40e5c2d33c2d9c1e33e34f1e7ff7d50cfe8b080bba5b88f786953c9

See more details on using hashes here.

File details

Details for the file packse-0.3.57-py3-none-any.whl.

File metadata

  • Download URL: packse-0.3.57-py3-none-any.whl
  • Upload date:
  • Size: 34.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for packse-0.3.57-py3-none-any.whl
Algorithm Hash digest
SHA256 1b160e67cdb0c208df03bba7a346d8dbcda9dbfeebfad9255ecbf3be81e1edbf
MD5 d44713baed8c351e9525a8cdc42712c0
BLAKE2b-256 efe3e759643d3076ae3388d48fedfcc4b2b696eeefef7bf5d2927cca00364bd2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page