Reference implementation of the OVOS formal specifications
Project description
ovos-spec-tools
Reference implementation of the OVOS formal specifications — the low-level, dependency-light primitives those specifications describe.
OVOS components reimplement template expansion, resource loading, and language matching in several places, and the copies drift. This package is the single conformant implementation those components — and any third-party tool — can depend on.
Status
| Tool | Spec | Code |
|---|---|---|
| Sentence template expander | OVOS-INTENT-1 v2 | expansion.py |
| Locale resource loader | OVOS-INTENT-2 | resources.py |
| Dialog renderer | OVOS-INTENT-2 §4.2 | dialog.py |
| Prompt renderer | OVOS-INTENT-2 §4.4 | prompt.py |
| Language-tag matching | OVOS-INTENT-2 §2.2 | language.py |
| Bus message envelope | OVOS-MSG-1 | message.py |
ovos-spec-lint locale linter |
OVOS-INTENT-1 / -2 | lint.py |
Install
pip install ovos-spec-tools # core — no dependencies
pip install ovos-spec-tools[langcodes] # adds the smart language fallback
Requires Python 3.10+.
Quick taste
from ovos_spec_tools import (expand, LocaleResources, render, render_prompt,
closest_lang, Message)
expand("(turn|switch) [the] light") # all 4 sentences it denotes
res = LocaleResources("my-skill/locale")
res.load_intent("play", "en-US") # a skill's intent samples
render(res.load_dialog("weather", "en-US"), # a spoken response
slots={"temperature": 21})
render_prompt(res.load_prompt("system", "en-US"), # a language-model prompt
slots={"query": "what time is it"})
closest_lang("en-AU", ["pt-BR", "en-US"]) # 'en-US'
# OVOS-MSG-1 envelope: a bus message and its 'send back to the asker' reply
m = Message("ovos.intent.list", {}, {"source": "skill.id"})
res = m.response({"intents": ["..."]}) # 'ovos.intent.list.response'
res.serialize() # single UTF-8 JSON object
ovos-spec-lint my-skill/locale # validate a locale folder
Documentation
A zero-to-hero guide lives in docs/:
- Getting started — install, and a first taste of every tool.
- Sentence templates — the grammar: alternatives, optionals, slots, vocabulary references, malformed forms.
- Locale resources — the
locale/folder, the six file roles, loading across languages, override precedence. - Dialog — choosing and filling a spoken response, and rendering language-model prompts.
- Language matching — tag standardization, distance, and closest-match resolution.
- Bus messages — the on-the-wire envelope, the
forward/reply/responsederivations, and the session carrier. - Linting — validating a locale folder, on the CLI or in CI.
- API reference — every public name, in brief.
Runnable example scripts are in examples/.
Credits
This package was produced as part of a documentation and interoperability effort for OpenVoiceOS, funded by NLnet's NGI0 Commons Fund under grant agreement No 101135429.
License
Apache 2.0
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 ovos_spec_tools-0.5.0a1.tar.gz.
File metadata
- Download URL: ovos_spec_tools-0.5.0a1.tar.gz
- Upload date:
- Size: 48.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63301c64e2833a3955bd8da20b135c2c2a7190dc16040794b131716a88533850
|
|
| MD5 |
67195d3bca9937dcf400f53bb9d636e1
|
|
| BLAKE2b-256 |
87617ce257e4e88d0429d968d563e54406e612ab8c46189448ff91179245c630
|
File details
Details for the file ovos_spec_tools-0.5.0a1-py3-none-any.whl.
File metadata
- Download URL: ovos_spec_tools-0.5.0a1-py3-none-any.whl
- Upload date:
- Size: 34.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4612f74d2e89f5ff6e1483d503701d0193b00192a0d2a770c66cab84ce03cf71
|
|
| MD5 |
a5fe39cb55887abc732cae5edb4d6089
|
|
| BLAKE2b-256 |
f6bc860b64e62902d93864181afc333692b8ee99856b4e72bb5c023bbfc77e32
|