Name | oot JSON |
Version |
0.1.0.3
JSON |
| download |
home_page | |
Summary | Order of the Template: A Python package for parsing Jinja templates and YAML files with environment variables. |
upload_time | 2023-07-31 11:16:21 |
maintainer | |
docs_url | None |
author | Elsayed91 |
requires_python | >=3.9,<4.0 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Order of the Template (OOT)
In the sacred halls of Dev, the Order of the Template (OOT) stands as a bastion of structure and order amidst the chaos. The order, founded by the ancients, carries the mission of maintaining harmony between variables and templates, ensuring every template adheres to its rightful structure, and bringing light to the shadowy corners of Jinja and YAML.
The Order of the Template provides a noble toolkit for Python developers, aiding them in their quests to parse YAML files and Jinja templates, resolve environment variables, and validate schemas.
## The Code of the Order
### A Noble Quest
The Templars are trained not only in the ancient art of parsing Jinja templates but also in the mastery of environments, skillfully resolving environment variables. They are the keepers of schemas, using their wisdom to ensure that data structures adhere to their rightful schemas.
Consider a quest where a Templar must decode an ancient manuscript, a YAML file filled with Jinja templates and environment variables:
```yaml
# manuscript.yaml
Templar: {{ TEMPLAR_NAME|default('Unknown Templar') }}
HallOfHonor: ${HALL_OF_HONOR:"Hall of the Wicked"}
```
The Templar starts his task. He replaces the `TEMPLAR_NAME` variable with the name of a famous Templar. He then resolves the `HALL_OF_HONOR` environment variable, revealing the name of the sacred hall. Once the manuscript has been decoded, he validates it, ensuring it adheres to the ancient schema:
```python
from oot import parse_file
file_path = "manuscript.yaml"
variables = {"TEMPLAR_NAME": "Jacques de Molay"}
os.environ["HALL_OF_HONOR"] = "Hall of the Brave" # Environmental variables will be automatically substituted
# The Templar decodes the manuscript
manuscript = parse_file(file_path, context=variables)
# The manuscript is decoded:
assert manuscript == {"Templar": "Jacques de Molay", "HallOfHonor": "Hall of the Brave"}
# The Templar validates the manuscript against the ancient schema
schema_path = "schema.json"
manuscript = parse_file(file_path, context=variables, validation_schema=schema_path)
```
In the above example, `schema.json` might be a JSON schema file that defines the structure of the decoded manuscript:
```json
{
"type": "object",
"properties": {
"Templar": {"type": "string"},
"HallOfHonor": {"type": "string"}
}
}
```
## Joining the Order
The Order welcomes all who seek order in their templates and harmony in their variables. To install the Order's toolkit, simple run:
```bash
pip install oot
```
May the Order guide you in your quests.
## Closing Words
- OOT was born out of the re-occuring necessity to parse Jinja templates and resolve environment variables across multiple projects.
- To separate concerns, enhance productivity and spare myself the need to setup code and tests within each project, I encapsulated the functionality.
- OOT's primary objective is to painlessly handle the resolution of environmental variables and/or templating in your YAML files.
- I came up with the name and theme. the README is a glorious work of `ChatGPT`.
Raw data
{
"_id": null,
"home_page": "",
"name": "oot",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Elsayed91",
"author_email": "elsayed.is@outlook.com",
"download_url": "https://files.pythonhosted.org/packages/b8/bb/f62055ec866e06162641e53d64f1298908d1542f2a0cccdf254631c32d44/oot-0.1.0.3.tar.gz",
"platform": null,
"description": "# Order of the Template (OOT)\n\nIn the sacred halls of Dev, the Order of the Template (OOT) stands as a bastion of structure and order amidst the chaos. The order, founded by the ancients, carries the mission of maintaining harmony between variables and templates, ensuring every template adheres to its rightful structure, and bringing light to the shadowy corners of Jinja and YAML.\n\nThe Order of the Template provides a noble toolkit for Python developers, aiding them in their quests to parse YAML files and Jinja templates, resolve environment variables, and validate schemas.\n\n## The Code of the Order\n### A Noble Quest\n\nThe Templars are trained not only in the ancient art of parsing Jinja templates but also in the mastery of environments, skillfully resolving environment variables. They are the keepers of schemas, using their wisdom to ensure that data structures adhere to their rightful schemas.\n\nConsider a quest where a Templar must decode an ancient manuscript, a YAML file filled with Jinja templates and environment variables:\n\n```yaml\n# manuscript.yaml\nTemplar: {{ TEMPLAR_NAME|default('Unknown Templar') }}\nHallOfHonor: ${HALL_OF_HONOR:\"Hall of the Wicked\"}\n```\nThe Templar starts his task. He replaces the `TEMPLAR_NAME` variable with the name of a famous Templar. He then resolves the `HALL_OF_HONOR` environment variable, revealing the name of the sacred hall. Once the manuscript has been decoded, he validates it, ensuring it adheres to the ancient schema:\n\n```python\nfrom oot import parse_file\n\nfile_path = \"manuscript.yaml\"\nvariables = {\"TEMPLAR_NAME\": \"Jacques de Molay\"}\nos.environ[\"HALL_OF_HONOR\"] = \"Hall of the Brave\" # Environmental variables will be automatically substituted\n\n# The Templar decodes the manuscript\nmanuscript = parse_file(file_path, context=variables)\n\n# The manuscript is decoded:\nassert manuscript == {\"Templar\": \"Jacques de Molay\", \"HallOfHonor\": \"Hall of the Brave\"}\n\n# The Templar validates the manuscript against the ancient schema\nschema_path = \"schema.json\"\nmanuscript = parse_file(file_path, context=variables, validation_schema=schema_path)\n```\n\nIn the above example, `schema.json` might be a JSON schema file that defines the structure of the decoded manuscript:\n\n```json\n{\n \"type\": \"object\",\n \"properties\": {\n \"Templar\": {\"type\": \"string\"},\n \"HallOfHonor\": {\"type\": \"string\"}\n }\n}\n```\n\n## Joining the Order\n\nThe Order welcomes all who seek order in their templates and harmony in their variables. To install the Order's toolkit, simple run:\n\n```bash\npip install oot\n```\n\nMay the Order guide you in your quests. \n\n\n## Closing Words\n\n- OOT was born out of the re-occuring necessity to parse Jinja templates and resolve environment variables across multiple projects.\n- To separate concerns, enhance productivity and spare myself the need to setup code and tests within each project, I encapsulated the functionality.\n- OOT's primary objective is to painlessly handle the resolution of environmental variables and/or templating in your YAML files. \n- I came up with the name and theme. the README is a glorious work of `ChatGPT`.",
"bugtrack_url": null,
"license": "MIT",
"summary": "Order of the Template: A Python package for parsing Jinja templates and YAML files with environment variables.",
"version": "0.1.0.3",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bad14e1e116d0726641daf1f67736d44b908c058f981d7fad786c7f88e3faf11",
"md5": "7bc5755abcf614e96e7b17e1ea7f8c9e",
"sha256": "c48a655e400b0173c7b1097ab4b96c044c120818aa8e89d1d2868e77256f325d"
},
"downloads": -1,
"filename": "oot-0.1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7bc5755abcf614e96e7b17e1ea7f8c9e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 7184,
"upload_time": "2023-07-31T11:16:20",
"upload_time_iso_8601": "2023-07-31T11:16:20.196778Z",
"url": "https://files.pythonhosted.org/packages/ba/d1/4e1e116d0726641daf1f67736d44b908c058f981d7fad786c7f88e3faf11/oot-0.1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b8bbf62055ec866e06162641e53d64f1298908d1542f2a0cccdf254631c32d44",
"md5": "ea8c4281c178f31babb1b26032891f6a",
"sha256": "df95a54412e7562486ba21b9f24708b663aa6d6b0a44a142a61f0a646ae10a53"
},
"downloads": -1,
"filename": "oot-0.1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "ea8c4281c178f31babb1b26032891f6a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 5205,
"upload_time": "2023-07-31T11:16:21",
"upload_time_iso_8601": "2023-07-31T11:16:21.646109Z",
"url": "https://files.pythonhosted.org/packages/b8/bb/f62055ec866e06162641e53d64f1298908d1542f2a0cccdf254631c32d44/oot-0.1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-31 11:16:21",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "oot"
}