Skip to main content

wend

PyPI version Python versions License pre-commit.ci status

A library for templated paths using Python t-strings (3.14+)

Installation

uv pip install wend

Requirements

  • Python 3.14+

About

For backstory read my blog about this package cog.spin.systems/future-paths!

The general idea is to use t-strings to house eagerly instantiated parameter objects which offer a form of deferred execution.

Usage

Following the examples in the blog post:

from pathlib import Path
from wend import Param, P, T, RelativePath

# Define parameters (late-bound)
root = Param("root")
dataset = Param("dataset")
idx = Param("idx")
total = Param("total")

# Build expressions - these don't touch the filesystem
data_dir = root / "data" / dataset
chunk_file = data_dir / T(t"chunk_{idx:04d}-of-{total:04d}.parquet")

# Inspect what's needed
print("Required params:", chunk_file.required_params())
# -> {'root', 'dataset', 'idx', 'total'}

# Resolve with bindings
path = chunk_file.resolve({
    "root": "/mnt/storage",
    "dataset": "train",
    "idx": 7,
    "total": 100,
})
print("Resolved:", path)
# -> /mnt/storage/data/train/chunk_0007-of-0100.parquet

# Constant folding happens at construction
folded = P("/home") / "user" / "data"
print("Folded type:", type(folded).__name__)
# -> LiteralExpr (not nested JoinExprs)

# Parent simplification
expr = root / "a" / "b"
print("Parent of join:", expr.parent)
# -> JoinExpr(ParamExpr, LiteralExpr("a")) -- the "b" is gone structurally

# Suffix chain collapse
double_suffix = (root / "file.txt").with_suffix(".tmp").with_suffix(".json")
print("Suffix chain:", double_suffix)
# -> WithSuffixExpr(base=JoinExpr(...), suffix='.json') -- .tmp is gone

# Connectivity: rebasing
config = RelativePath(
    base=root,
    relative=P("config") / "settings.yaml"
)
print("Config path:", config.resolve({"root": "/project"}))
# -> /project/config/settings.yaml

# Rebase to test environment
test_config = config.rebase(P("/tmp/test"))
print("Test config:", test_config.resolve({}))
# -> /tmp/test/config/settings.yaml

Contributing

Contributions are welcome! Please:

  1. Open an issue to discuss bugs or feature requests
  2. Fork the repo and submit a PR for changes
  3. Install dev dependencies with uv sync and run pre-commit install

License

MIT License - see LICENSE for details.

Download files

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

Source Distribution

wend-0.1.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

wend-0.1.1-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file wend-0.1.1.tar.gz.

File metadata

  • Download URL: wend-0.1.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wend-0.1.1.tar.gz
Algorithm Hash digest
SHA256 98ffc45961f783d697b53eb39c905011c50822424531fc00b2e75c6f0eff542a
MD5 5c4db94eb6fce227c87450796e508b1d
BLAKE2b-256 9aacfa914cf2d5504d4f62e04e874216802d9555f0c4b5eab4664057c6ea7717

See more details on using hashes here.

Provenance

The following attestation bundles were made for wend-0.1.1.tar.gz:

Publisher: CI.yml on lmmx/wend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wend-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: wend-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wend-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ca6d8f858a3490580f20dec73510934ca272e81adf58b0ee078ddccde47b989e
MD5 1b07f680e4b695ee18172bc0b4fb1c22
BLAKE2b-256 fad747220a06f4935f9b10081f15cd36b876e808c7be4efaf6ff403277b013fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for wend-0.1.1-py3-none-any.whl:

Publisher: CI.yml on lmmx/wend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

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