pathbase
pathbase is a lightweight, dependency-free Python library for bidirectional
filesystem path templates.
Installation
pip install -U pathbase
Quick Example
Given a real filepath, pathbase can discover the matching template from
environment-provided templates and extract the tokens:
This example assumes envstack is installed so
ENVPATH is resolved before pathbase runs.
ENVPATH=./examples/vfx/ pathbase parse \
'/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr'
Expected output:
{
"fields": {
"descriptor": "beauty",
"ext": "exr",
"frame": 1001,
"sequence": "seq001",
"shot": "shot010",
"show": "bigbuckbunny",
"step": "lighting",
"task": "render",
"version": 1
},
"template": "FILEPATH"
}
With envstack-managed templates, you can also emit the equivalent path for another platform:
ENVPATH=./examples/vfx/ pathbase parse --platform windows \
'/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr'
Expected output:
{
"fields": {
"descriptor": "beauty",
"ext": "exr",
"frame": 1001,
"sequence": "seq001",
"shot": "shot010",
"show": "bigbuckbunny",
"step": "lighting",
"task": "render",
"version": 1
},
"platform_path": "D:/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr",
"template": "FILEPATH"
}
If envstack is not installed, pathbase still supports direct environment
variables and explicit mappings from Python.
You can also work with templates directly from Python:
from pathbase import Template
template = Template(
"/mnt/projects/{show}/{sequence}/{shot}/{step}/"
"{task}_{descriptor}_v{version:03d}.{frame:04d}.{ext}"
)
path = template.format(
show="bigbuckbunny",
sequence="seq001",
shot="shot010",
step="lighting",
task="render",
descriptor="beauty",
version=1,
frame=1001,
ext="exr",
)
fields = template.parse(
"/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr"
)
Pathbase supports:
Template.format(...)for path constructionTemplate.parse(path)for field extraction- automatic environment-based template discovery for CLI parsing and matching
- typed numeric fields such as
{version:03d}and{value:.2f} - repeated-field validation
- mixed-separator parsing
- embedded
$VARand${VAR}expansion fromos.environor an explicit mapping Template.from_env(...)as a convenience for environment-provided templates
Formatting output:
/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr
Parsing output:
{
"show": "bigbuckbunny",
"sequence": "seq001",
"shot": "shot010",
"step": "lighting",
"task": "render",
"descriptor": "beauty",
"version": 1,
"frame": 1001,
"ext": "exr",
}
CLI
pathbase also includes a lightweight CLI:
ROOT=/mnt/projects pathbase format --template '${ROOT}/{project}/{name}_v{version:03d}.txt' \
project=demo name=report version=1
ENVPATH=./examples/vfx/ pathbase parse \
'/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr'
ENVPATH=./examples/vfx/ pathbase parse --platform windows \
'/mnt/projects/bigbuckbunny/seq001/shot010/lighting/render_beauty_v001.1001.exr'
pathbase parse \
'/mnt/projects/demo/report_v001.txt'
pathbase parse --template FILEPATH \
'/mnt/projects/demo/report_v001.txt'
pathbase match '/mnt/projects/demo/report.txt'
Additional documentation lives in docs/index.md:
Metadata
Release files for pathbase 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pathbase-0.2.0.tar.gz | 21.1 kB | Without provenance | Details for pathbase-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pathbase-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for pathbase-0.2.0-py3-none-any.whl |
Total release size: 37.5 kB
Release files / pathbase-0.2.0.tar.gz
| Download URL | pathbase-0.2.0.tar.gz |
|---|---|
| Size | 21.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4198dc229c05eaa6622ecba7ae66959a62800f0d72a77b121ae1cfbc631371f6
|
|
BLAKE2b-256 checksum How to use checksums |
1335fdf061baba12e122aeccbde5d8ea7745dd353fc5bf39b1c8c4b90c46daae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.10
|
Release files / pathbase-0.2.0-py3-none-any.whl
| Download URL | pathbase-0.2.0-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bcd4d19d79148e2ade78805adbfffd9176bebe8857b09a0dfd0fa7d6ab5924f4
|
|
BLAKE2b-256 checksum How to use checksums |
86e30022c07f2441826be6f202c5898206230fec17fd50feea48adb2fcb2654f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.10
|
Security for pathbase 0.2.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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.