Standard examples and presets for UnitySVC data packages
Project description
unitysvc-data
Standard examples and presets for UnitySVC — primary consumer is unitysvc-sellers, but the same preset / manifest machinery is intended to serve other parts of the platform too.
A data-first Python package that ships:
- Example files (connectivity tests, usage snippets, descriptions)
organised under
src/unitysvc_data/examples/<gateway>/<family>/. - A generated manifest (
_manifest.json) mapping every preset name to its metadata and bundled file. - Two primitives for consumers:
doc_preset(source, **overrides)— returns a full document record (category, description, mime_type, file_path, ...) ready to drop intolisting.json. This is the expansion the SDK applies to$presetJSON sentinels at upload time.file_preset(source)— returns the raw UTF-8 content of the preset's bundled file. Useful when the example isn't a listing document (embed as snippet, feed to a test harness, etc.).
Both accept either a bare name ("s3_connectivity",
"s3_connectivity_v1") or a {"$preset": "...", "$with": {...}}
sentinel, so the same function works from JSON walkers and from
programmatic Python code.
Sellers reference a preset from their listing.json like this:
{
"documents": {
"Connectivity test": { "$preset": "s3_connectivity" },
"Usage (Python)": { "$preset": "s3_code_example_v1",
"$with": { "description": "Lists objects in our bucket" } }
}
}
The SDK walks the parsed listing and calls doc_preset(...) on each
sentinel, substituting the bundled file's absolute path into
file_path, then feeds the result into the existing upload pipeline.
No custom URL scheme, no extra render pass.
CLI
Installing the package provides a usvc_data command for shell-level
access to the same data:
usvc_data list # every preset + aliases
usvc_data list --json # machine-readable form
usvc_data info s3_connectivity # README prose for a preset
usvc_data doc-preset s3_connectivity # expanded JSON record
usvc_data doc-preset s3_connectivity --with '{"description":"ours"}'
usvc_data doc-preset s3_connectivity --compact # single-line JSON
usvc_data file-preset s3_connectivity # raw file content to stdout
usvc_data file-preset s3_connectivity > /tmp/s3.py # pipe to file (raw template)
Note that file-preset returns the raw file content — .j2 templates
come through with Jinja2 markers intact. The sellers SDK renders them
with per-listing context at upload time; if you pipe a .j2 preset
directly to an executable file you'll get a template, not a runnable
script.
--with accepts a JSON object whose keys are the overridable fields
(description, is_active, is_public, meta). Forbidden keys and
unknown preset names exit with status 1 and a message on stderr.
Layout
src/unitysvc_data/
├── __init__.py # example_path / read_example / list_examples
├── presets.py # doc_preset / file_preset / PRESETS / ALIASES
├── cli.py # usvc_data entry point
├── _manifest.json # generated — committed — source of truth at runtime
└── examples/
├── api/ # generic HTTP services
│ └── connectivity/
│ ├── README.md # front-matter + prose
│ └── connectivity-v1.sh.j2
├── llm/ # LLM gateway
│ └── request-template/
│ ├── README.md
│ └── request-template-v1.json
├── s3/ # S3-compatible storage gateway
│ ├── code-example/ ...
│ ├── connectivity/ ...
│ └── description/ ...
└── smtp/ # SMTP relay
└── connectivity/ ...
tools/
└── build.py # regenerate _manifest.json + MANIFEST.md
Each gateway holds one or more preset families (e.g. s3/connectivity/).
A family directory contains:
README.mdwith TOML front-matter delimited by+++lines. The front-matter has every piece of metadata for the family (preset_name,category,mime_type,file,description,is_active,is_public,meta). Prose under the front-matter documents the example and any per-version differences.- One file per version, named
<stem>-v<N>.<suffix>where stem and suffix come from thefilefield — sofile = "connectivity.sh.j2"matchesconnectivity-v1.sh.j2,connectivity-v2.sh.j2, ....
Versions are discovered automatically by scanning the family
directory; authors never list them explicitly. Adding a new version
is purely "drop a new -v<N>.<ext> file and rebuild."
MANIFEST.md at the repo root is the human-readable
roster of every preset, also generated by tools/build.py.
Preset naming
| Form | Resolves to | Use when |
|---|---|---|
s3_connectivity_v1 |
version 1 of the s3/connectivity family |
pinning to an exact version |
s3_connectivity (alias) |
latest version of that family | tracking the latest |
Seller data that pins to a versioned name stays byte-identical across
pip upgrades. Data that uses the alias tracks the newest version
automatically.
Versioning discipline
- Example files are append-only.
connectivity-v1.py.j2is frozen forever; fixes ship asconnectivity-v2.py.j2dropped into the same directory. - The version-less alias always points at the highest-
vfile in the family. Landing a new version shifts the alias automatically the next timepython tools/build.pyruns. preset_nameis globally unique across the whole tree — declaring the samepreset_namein two READMEs is a build error.- Package version bumps are additive (new version or new family →
minor bump; never mutate existing
_vN→ no breaking release). Bump major only to remove a_vN(should be vanishingly rare).
Contributing
See CONTRIBUTING.md for the full walkthrough: how to add a new family, how to publish a new version, front-matter reference, filename conventions, and the pre-submission checklist.
In one line: drop your file at
src/unitysvc_data/examples/<gateway>/<family>/<stem>-v<N>.<ext>[.j2],
write the family's README.md, run python tools/build.py, open the PR.
Development
uv pip install -e '.[test]'
pytest -q # runs tests + manifest-freshness check
python tools/build.py # regenerate manifest + roster
python tools/build.py --check # CI mode: non-zero exit if stale
CI (.github/workflows/ci.yml) runs
tools/build.py --check, ruff, pytest on Python 3.11 and 3.12,
then builds a wheel and verifies it includes every example file and
the manifest.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unitysvc_data-0.1.6.tar.gz.
File metadata
- Download URL: unitysvc_data-0.1.6.tar.gz
- Upload date:
- Size: 48.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d763ebe30f82774398c3edea1cb3dc468bd35899ebda57c39af48f163899d65
|
|
| MD5 |
4d23173c9cf4af8aef0faba5fad4ca44
|
|
| BLAKE2b-256 |
c21079d30f69bd97d1a6c4bd791245195ddb75f02b7734adc9b0f80b13d3666b
|
Provenance
The following attestation bundles were made for unitysvc_data-0.1.6.tar.gz:
Publisher:
publish.yml on unitysvc/unitysvc-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unitysvc_data-0.1.6.tar.gz -
Subject digest:
2d763ebe30f82774398c3edea1cb3dc468bd35899ebda57c39af48f163899d65 - Sigstore transparency entry: 1390053497
- Sigstore integration time:
-
Permalink:
unitysvc/unitysvc-data@02a1c5f33ca8960bc753c79c9e22e89a6b27ba19 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/unitysvc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02a1c5f33ca8960bc753c79c9e22e89a6b27ba19 -
Trigger Event:
release
-
Statement type:
File details
Details for the file unitysvc_data-0.1.6-py3-none-any.whl.
File metadata
- Download URL: unitysvc_data-0.1.6-py3-none-any.whl
- Upload date:
- Size: 69.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d55a36e689008f564841455f8bdea9967e220ff859c5ffed3a7f64ecb67f615
|
|
| MD5 |
66ebca1e9add40bda2fe0d595a9b1725
|
|
| BLAKE2b-256 |
1a287623830a11c8b30f9f2b55f4ad2c39ba1b77ef962815844e16e6f5bcbf96
|
Provenance
The following attestation bundles were made for unitysvc_data-0.1.6-py3-none-any.whl:
Publisher:
publish.yml on unitysvc/unitysvc-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unitysvc_data-0.1.6-py3-none-any.whl -
Subject digest:
9d55a36e689008f564841455f8bdea9967e220ff859c5ffed3a7f64ecb67f615 - Sigstore transparency entry: 1390053532
- Sigstore integration time:
-
Permalink:
unitysvc/unitysvc-data@02a1c5f33ca8960bc753c79c9e22e89a6b27ba19 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/unitysvc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02a1c5f33ca8960bc753c79c9e22e89a6b27ba19 -
Trigger Event:
release
-
Statement type: