Name | strictyaml JSON |
Version |
1.7.3
JSON |
| download |
home_page | |
Summary | Strict, typed YAML parser |
upload_time | 2023-03-10 12:50:27 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.7.0 |
license | MIT |
keywords |
yaml
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# StrictYAML
StrictYAML is a [type-safe](https://en.wikipedia.org/wiki/Type_safety) YAML parser
that parses and validates a [restricted subset](https://hitchdev.com/strictyaml/features-removed) of the [YAML](https://hitchdev.com/strictyaml/what-is-yaml)
specification.
Priorities:
- Beautiful API
- Refusing to parse [the ugly, hard to read and insecure features of YAML](https://hitchdev.com/strictyaml/features-removed) like [the Norway problem](https://hitchdev.com/strictyaml/why/implicit-typing-removed).
- Strict validation of markup and straightforward type casting.
- Clear, readable exceptions with **code snippets** and **line numbers**.
- Acting as a near-drop in replacement for pyyaml, ruamel.yaml or poyo.
- Ability to read in YAML, make changes and write it out again with comments preserved.
- [Not speed](https://hitchdev.com/strictyaml/why/speed-not-a-priority), currently.
Simple example:
```yaml
# All about the character
name: Ford Prefect
age: 42
possessions:
- Towel
```
```python
from strictyaml import load, Map, Str, Int, Seq, YAMLError
```
Default parse result:
```python
>>> load(yaml_snippet)
YAML({'name': 'Ford Prefect', 'age': '42', 'possessions': ['Towel']})
```
All data is string, list or OrderedDict:
```python
>>> load(yaml_snippet).data
{'name': 'Ford Prefect', 'age': '42', 'possessions': ['Towel']}
```
Quickstart with schema:
```python
from strictyaml import load, Map, Str, Int, Seq, YAMLError
schema = Map({"name": Str(), "age": Int(), "possessions": Seq(Str())})
```
42 is now parsed as an integer:
```python
>>> person = load(yaml_snippet, schema)
>>> person.data
{'name': 'Ford Prefect', 'age': 42, 'possessions': ['Towel']}
```
A YAMLError will be raised if there are syntactic problems, violations of your schema or use of disallowed YAML features:
```yaml
# All about the character
name: Ford Prefect
age: 42
```
For example, a schema violation:
```python
try:
person = load(yaml_snippet, schema)
except YAMLError as error:
print(error)
```
```yaml
while parsing a mapping
in "<unicode string>", line 1, column 1:
# All about the character
^ (line: 1)
required key(s) 'possessions' not found
in "<unicode string>", line 3, column 1:
age: '42'
^ (line: 3)
```
If parsed correctly:
```python
from strictyaml import load, Map, Str, Int, Seq, YAMLError, as_document
schema = Map({"name": Str(), "age": Int(), "possessions": Seq(Str())})
```
You can modify values and write out the YAML with comments preserved:
```python
person = load(yaml_snippet, schema)
person['age'] = 43
print(person.as_yaml())
```
```yaml
# All about the character
name: Ford Prefect
age: 43
possessions:
- Towel
```
As well as look up line numbers:
```python
>>> person = load(yaml_snippet, schema)
>>> person['possessions'][0].start_line
5
```
And construct YAML documents from dicts or lists:
```python
print(as_document({"x": 1}).as_yaml())
```
```yaml
x: 1
```
## Install
```sh
$ pip install strictyaml
```
## Why StrictYAML?
There are a number of formats and approaches that can achieve more or
less the same purpose as StrictYAML. I've tried to make it the best one.
Below is a series of documented justifications:
- [Why avoid using environment variables as configuration?](https://hitchdev.com/strictyaml/why-not/environment-variables-as-config)
- [Why not use HJSON?](https://hitchdev.com/strictyaml/why-not/hjson)
- [Why not HOCON?](https://hitchdev.com/strictyaml/why-not/hocon)
- [Why not use INI files?](https://hitchdev.com/strictyaml/why-not/ini)
- [Why not use JSON Schema for validation?](https://hitchdev.com/strictyaml/why-not/json-schema)
- [Why not JSON for simple configuration files?](https://hitchdev.com/strictyaml/why-not/json)
- [Why not JSON5?](https://hitchdev.com/strictyaml/why-not/json5)
- [Why not use the YAML 1.2 standard? - we don't need a new standard!](https://hitchdev.com/strictyaml/why-not/ordinary-yaml)
- [Why not use kwalify with standard YAML to validate my YAML?](https://hitchdev.com/strictyaml/why-not/pykwalify)
- [Why not use Python's schema library (or similar) for validation?](https://hitchdev.com/strictyaml/why-not/python-schema)
- [Why not use SDLang?](https://hitchdev.com/strictyaml/why-not/sdlang)
- [What is wrong with TOML?](https://hitchdev.com/strictyaml/why-not/toml)
- [Why shouldn't I just use Python code for configuration?](https://hitchdev.com/strictyaml/why-not/turing-complete-code)
- [Why not use XML for configuration or DSLs?](https://hitchdev.com/strictyaml/why-not/xml)
## Using StrictYAML
How to:
- [Build a YAML document from scratch in code](https://hitchdev.com/strictyaml/using/alpha/howto/build-yaml-document)
- [Either/or schema validation of different, equally valid different kinds of YAML](https://hitchdev.com/strictyaml/using/alpha/howto/either-or-validation)
- [Labeling exceptions](https://hitchdev.com/strictyaml/using/alpha/howto/label-exceptions)
- [Merge YAML documents](https://hitchdev.com/strictyaml/using/alpha/howto/merge-yaml-documents)
- [Revalidate an already validated document](https://hitchdev.com/strictyaml/using/alpha/howto/revalidation)
- [Reading in YAML, editing it and writing it back out](https://hitchdev.com/strictyaml/using/alpha/howto/roundtripping)
- [Get line numbers of YAML elements](https://hitchdev.com/strictyaml/using/alpha/howto/what-line)
- [Parsing YAML without a schema](https://hitchdev.com/strictyaml/using/alpha/howto/without-a-schema)
Compound validators:
- [Fixed length sequences (FixedSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/fixed-length-sequences)
- [Mappings combining defined and undefined keys (MapCombined)](https://hitchdev.com/strictyaml/using/alpha/compound/map-combined)
- [Mappings with arbitrary key names (MapPattern)](https://hitchdev.com/strictyaml/using/alpha/compound/map-pattern)
- [Mapping with defined keys and a custom key validator (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/mapping-with-slug-keys)
- [Using a YAML object of a parsed mapping](https://hitchdev.com/strictyaml/using/alpha/compound/mapping-yaml-object)
- [Mappings with defined keys (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/mapping)
- [Optional keys with defaults (Map/Optional)](https://hitchdev.com/strictyaml/using/alpha/compound/optional-keys-with-defaults)
- [Validating optional keys in mappings (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/optional-keys)
- [Sequences of unique items (UniqueSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/sequences-of-unique-items)
- [Sequence/list validator (Seq)](https://hitchdev.com/strictyaml/using/alpha/compound/sequences)
- [Updating document with a schema](https://hitchdev.com/strictyaml/using/alpha/compound/update)
Scalar validators:
- [Boolean (Bool)](https://hitchdev.com/strictyaml/using/alpha/scalar/boolean)
- [Parsing comma separated items (CommaSeparated)](https://hitchdev.com/strictyaml/using/alpha/scalar/comma-separated)
- [Datetimes (Datetime)](https://hitchdev.com/strictyaml/using/alpha/scalar/datetime)
- [Decimal numbers (Decimal)](https://hitchdev.com/strictyaml/using/alpha/scalar/decimal)
- [Email and URL validators](https://hitchdev.com/strictyaml/using/alpha/scalar/email-and-url)
- [Empty key validation](https://hitchdev.com/strictyaml/using/alpha/scalar/empty)
- [Enumerated scalars (Enum)](https://hitchdev.com/strictyaml/using/alpha/scalar/enum)
- [Floating point numbers (Float)](https://hitchdev.com/strictyaml/using/alpha/scalar/float)
- [Hexadecimal Integers (HexInt)](https://hitchdev.com/strictyaml/using/alpha/scalar/hexadecimal-integer)
- [Integers (Int)](https://hitchdev.com/strictyaml/using/alpha/scalar/integer)
- [Validating strings with regexes (Regex)](https://hitchdev.com/strictyaml/using/alpha/scalar/regular-expressions)
- [Parsing strings (Str)](https://hitchdev.com/strictyaml/using/alpha/scalar/string)
Restrictions:
- [Disallowed YAML](https://hitchdev.com/strictyaml/using/alpha/restrictions/disallowed-yaml)
- [Duplicate keys](https://hitchdev.com/strictyaml/using/alpha/restrictions/duplicate-keys)
- [Dirty load](https://hitchdev.com/strictyaml/using/alpha/restrictions/loading-dirty-yaml)
## Design justifications
There are some design decisions in StrictYAML which are controversial
and/or not obvious. Those are documented here:
- [What is wrong with duplicate keys?](https://hitchdev.com/strictyaml/why/duplicate-keys-disallowed)
- [What is wrong with explicit tags?](https://hitchdev.com/strictyaml/why/explicit-tags-removed)
- [What is wrong with flow-style YAML?](https://hitchdev.com/strictyaml/why/flow-style-removed)
- [The Norway Problem - why StrictYAML refuses to do implicit typing and so should you](https://hitchdev.com/strictyaml/why/implicit-typing-removed)
- [What is wrong with node anchors and references?](https://hitchdev.com/strictyaml/why/node-anchors-and-references-removed)
- [Why does StrictYAML not parse direct representations of Python objects?](https://hitchdev.com/strictyaml/why/not-parse-direct-representations-of-python-objects)
- [Why does StrictYAML only parse from strings and not files?](https://hitchdev.com/strictyaml/why/only-parse-strings-not-files)
- [Why is parsing speed not a high priority for StrictYAML?](https://hitchdev.com/strictyaml/why/speed-not-a-priority)
- [What is syntax typing?](https://hitchdev.com/strictyaml/why/syntax-typing-bad)
- [Why does StrictYAML make you define a schema in Python - a Turing-complete language?](https://hitchdev.com/strictyaml/why/turing-complete-schema)
## Star Contributors
- @wwoods
- @chrisburr
- @jnichols0
## Other Contributors
- @eulores
- @WaltWoods
- @ChristopherGS
- @gvx
- @AlexandreDecan
- @lots0logs
- @tobbez
- @jaredsampson
- @BoboTIG
StrictYAML also includes code from [ruamel.yaml](https://yaml.readthedocs.io/en/latest/), Copyright Anthon van der Neut.
## Contributing
- Before writing any code, please read the tutorial on [contributing to hitchdev libraries](https://hitchdev.com/approach/contributing-to-hitch-libraries/).
- Before writing any code, if you're proposing a new feature, please raise it on github. If it's an existing feature / bug, please comment and briefly describe how you're going to implement it.
- All code needs to come accompanied with a story that exercises it or a modification to an existing story. This is used both to test the code and build the documentation.
Raw data
{
"_id": null,
"home_page": "",
"name": "strictyaml",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7.0",
"maintainer_email": "",
"keywords": "yaml",
"author": "",
"author_email": "Colm O'Connor <colm.oconnor.github@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz",
"platform": null,
"description": "# StrictYAML\n\nStrictYAML is a [type-safe](https://en.wikipedia.org/wiki/Type_safety) YAML parser\nthat parses and validates a [restricted subset](https://hitchdev.com/strictyaml/features-removed) of the [YAML](https://hitchdev.com/strictyaml/what-is-yaml)\nspecification.\n\nPriorities:\n\n- Beautiful API\n- Refusing to parse [the ugly, hard to read and insecure features of YAML](https://hitchdev.com/strictyaml/features-removed) like [the Norway problem](https://hitchdev.com/strictyaml/why/implicit-typing-removed).\n- Strict validation of markup and straightforward type casting.\n- Clear, readable exceptions with **code snippets** and **line numbers**.\n- Acting as a near-drop in replacement for pyyaml, ruamel.yaml or poyo.\n- Ability to read in YAML, make changes and write it out again with comments preserved.\n- [Not speed](https://hitchdev.com/strictyaml/why/speed-not-a-priority), currently.\n\n\nSimple example:\n\n```yaml\n# All about the character\nname: Ford Prefect\nage: 42\npossessions:\n- Towel\n\n```\n\n\n```python\nfrom strictyaml import load, Map, Str, Int, Seq, YAMLError\n\n```\n\n\n\n\n\nDefault parse result:\n\n\n```python\n>>> load(yaml_snippet)\nYAML({'name': 'Ford Prefect', 'age': '42', 'possessions': ['Towel']})\n```\n\n\n\nAll data is string, list or OrderedDict:\n\n\n```python\n>>> load(yaml_snippet).data\n{'name': 'Ford Prefect', 'age': '42', 'possessions': ['Towel']}\n```\n\n\n\nQuickstart with schema:\n\n\n```python\nfrom strictyaml import load, Map, Str, Int, Seq, YAMLError\n\nschema = Map({\"name\": Str(), \"age\": Int(), \"possessions\": Seq(Str())})\n\n```\n\n\n\n\n\n42 is now parsed as an integer:\n\n\n```python\n>>> person = load(yaml_snippet, schema)\n>>> person.data\n{'name': 'Ford Prefect', 'age': 42, 'possessions': ['Towel']}\n```\n\n\n\nA YAMLError will be raised if there are syntactic problems, violations of your schema or use of disallowed YAML features:\n\n```yaml\n# All about the character\nname: Ford Prefect\nage: 42\n\n```\n\n\n\n\n\n\nFor example, a schema violation:\n\n\n```python\ntry:\n person = load(yaml_snippet, schema)\nexcept YAMLError as error:\n print(error)\n\n```\n\n```yaml\nwhile parsing a mapping\n in \"<unicode string>\", line 1, column 1:\n # All about the character\n ^ (line: 1)\nrequired key(s) 'possessions' not found\n in \"<unicode string>\", line 3, column 1:\n age: '42'\n ^ (line: 3)\n```\n\n\n\n\n\nIf parsed correctly:\n\n\n```python\nfrom strictyaml import load, Map, Str, Int, Seq, YAMLError, as_document\n\nschema = Map({\"name\": Str(), \"age\": Int(), \"possessions\": Seq(Str())})\n\n```\n\n\n\n\n\nYou can modify values and write out the YAML with comments preserved:\n\n\n```python\nperson = load(yaml_snippet, schema)\nperson['age'] = 43\nprint(person.as_yaml())\n\n```\n\n```yaml\n# All about the character\nname: Ford Prefect\nage: 43\npossessions:\n- Towel\n```\n\n\n\n\n\nAs well as look up line numbers:\n\n\n```python\n>>> person = load(yaml_snippet, schema)\n>>> person['possessions'][0].start_line\n5\n```\n\n\n\nAnd construct YAML documents from dicts or lists:\n\n\n```python\nprint(as_document({\"x\": 1}).as_yaml())\n\n```\n\n```yaml\nx: 1\n```\n\n\n\n\n\n\n\n## Install\n\n```sh\n$ pip install strictyaml\n```\n\n\n## Why StrictYAML?\n\nThere are a number of formats and approaches that can achieve more or\nless the same purpose as StrictYAML. I've tried to make it the best one.\nBelow is a series of documented justifications:\n\n- [Why avoid using environment variables as configuration?](https://hitchdev.com/strictyaml/why-not/environment-variables-as-config)\n- [Why not use HJSON?](https://hitchdev.com/strictyaml/why-not/hjson)\n- [Why not HOCON?](https://hitchdev.com/strictyaml/why-not/hocon)\n- [Why not use INI files?](https://hitchdev.com/strictyaml/why-not/ini)\n- [Why not use JSON Schema for validation?](https://hitchdev.com/strictyaml/why-not/json-schema)\n- [Why not JSON for simple configuration files?](https://hitchdev.com/strictyaml/why-not/json)\n- [Why not JSON5?](https://hitchdev.com/strictyaml/why-not/json5)\n- [Why not use the YAML 1.2 standard? - we don't need a new standard!](https://hitchdev.com/strictyaml/why-not/ordinary-yaml)\n- [Why not use kwalify with standard YAML to validate my YAML?](https://hitchdev.com/strictyaml/why-not/pykwalify)\n- [Why not use Python's schema library (or similar) for validation?](https://hitchdev.com/strictyaml/why-not/python-schema)\n- [Why not use SDLang?](https://hitchdev.com/strictyaml/why-not/sdlang)\n- [What is wrong with TOML?](https://hitchdev.com/strictyaml/why-not/toml)\n- [Why shouldn't I just use Python code for configuration?](https://hitchdev.com/strictyaml/why-not/turing-complete-code)\n- [Why not use XML for configuration or DSLs?](https://hitchdev.com/strictyaml/why-not/xml)\n\n\n\n## Using StrictYAML\n\nHow to:\n\n- [Build a YAML document from scratch in code](https://hitchdev.com/strictyaml/using/alpha/howto/build-yaml-document)\n- [Either/or schema validation of different, equally valid different kinds of YAML](https://hitchdev.com/strictyaml/using/alpha/howto/either-or-validation)\n- [Labeling exceptions](https://hitchdev.com/strictyaml/using/alpha/howto/label-exceptions)\n- [Merge YAML documents](https://hitchdev.com/strictyaml/using/alpha/howto/merge-yaml-documents)\n- [Revalidate an already validated document](https://hitchdev.com/strictyaml/using/alpha/howto/revalidation)\n- [Reading in YAML, editing it and writing it back out](https://hitchdev.com/strictyaml/using/alpha/howto/roundtripping)\n- [Get line numbers of YAML elements](https://hitchdev.com/strictyaml/using/alpha/howto/what-line)\n- [Parsing YAML without a schema](https://hitchdev.com/strictyaml/using/alpha/howto/without-a-schema)\n\n\nCompound validators:\n\n- [Fixed length sequences (FixedSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/fixed-length-sequences)\n- [Mappings combining defined and undefined keys (MapCombined)](https://hitchdev.com/strictyaml/using/alpha/compound/map-combined)\n- [Mappings with arbitrary key names (MapPattern)](https://hitchdev.com/strictyaml/using/alpha/compound/map-pattern)\n- [Mapping with defined keys and a custom key validator (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/mapping-with-slug-keys)\n- [Using a YAML object of a parsed mapping](https://hitchdev.com/strictyaml/using/alpha/compound/mapping-yaml-object)\n- [Mappings with defined keys (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/mapping)\n- [Optional keys with defaults (Map/Optional)](https://hitchdev.com/strictyaml/using/alpha/compound/optional-keys-with-defaults)\n- [Validating optional keys in mappings (Map)](https://hitchdev.com/strictyaml/using/alpha/compound/optional-keys)\n- [Sequences of unique items (UniqueSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/sequences-of-unique-items)\n- [Sequence/list validator (Seq)](https://hitchdev.com/strictyaml/using/alpha/compound/sequences)\n- [Updating document with a schema](https://hitchdev.com/strictyaml/using/alpha/compound/update)\n\n\nScalar validators:\n\n- [Boolean (Bool)](https://hitchdev.com/strictyaml/using/alpha/scalar/boolean)\n- [Parsing comma separated items (CommaSeparated)](https://hitchdev.com/strictyaml/using/alpha/scalar/comma-separated)\n- [Datetimes (Datetime)](https://hitchdev.com/strictyaml/using/alpha/scalar/datetime)\n- [Decimal numbers (Decimal)](https://hitchdev.com/strictyaml/using/alpha/scalar/decimal)\n- [Email and URL validators](https://hitchdev.com/strictyaml/using/alpha/scalar/email-and-url)\n- [Empty key validation](https://hitchdev.com/strictyaml/using/alpha/scalar/empty)\n- [Enumerated scalars (Enum)](https://hitchdev.com/strictyaml/using/alpha/scalar/enum)\n- [Floating point numbers (Float)](https://hitchdev.com/strictyaml/using/alpha/scalar/float)\n- [Hexadecimal Integers (HexInt)](https://hitchdev.com/strictyaml/using/alpha/scalar/hexadecimal-integer)\n- [Integers (Int)](https://hitchdev.com/strictyaml/using/alpha/scalar/integer)\n- [Validating strings with regexes (Regex)](https://hitchdev.com/strictyaml/using/alpha/scalar/regular-expressions)\n- [Parsing strings (Str)](https://hitchdev.com/strictyaml/using/alpha/scalar/string)\n\n\nRestrictions:\n\n- [Disallowed YAML](https://hitchdev.com/strictyaml/using/alpha/restrictions/disallowed-yaml)\n- [Duplicate keys](https://hitchdev.com/strictyaml/using/alpha/restrictions/duplicate-keys)\n- [Dirty load](https://hitchdev.com/strictyaml/using/alpha/restrictions/loading-dirty-yaml)\n\n\n\n## Design justifications\n\nThere are some design decisions in StrictYAML which are controversial\nand/or not obvious. Those are documented here:\n\n- [What is wrong with duplicate keys?](https://hitchdev.com/strictyaml/why/duplicate-keys-disallowed)\n- [What is wrong with explicit tags?](https://hitchdev.com/strictyaml/why/explicit-tags-removed)\n- [What is wrong with flow-style YAML?](https://hitchdev.com/strictyaml/why/flow-style-removed)\n- [The Norway Problem - why StrictYAML refuses to do implicit typing and so should you](https://hitchdev.com/strictyaml/why/implicit-typing-removed)\n- [What is wrong with node anchors and references?](https://hitchdev.com/strictyaml/why/node-anchors-and-references-removed)\n- [Why does StrictYAML not parse direct representations of Python objects?](https://hitchdev.com/strictyaml/why/not-parse-direct-representations-of-python-objects)\n- [Why does StrictYAML only parse from strings and not files?](https://hitchdev.com/strictyaml/why/only-parse-strings-not-files)\n- [Why is parsing speed not a high priority for StrictYAML?](https://hitchdev.com/strictyaml/why/speed-not-a-priority)\n- [What is syntax typing?](https://hitchdev.com/strictyaml/why/syntax-typing-bad)\n- [Why does StrictYAML make you define a schema in Python - a Turing-complete language?](https://hitchdev.com/strictyaml/why/turing-complete-schema)\n\n\n\n## Star Contributors\n\n- @wwoods\n- @chrisburr\n- @jnichols0\n\n## Other Contributors\n\n- @eulores\n- @WaltWoods\n- @ChristopherGS\n- @gvx\n- @AlexandreDecan\n- @lots0logs\n- @tobbez\n- @jaredsampson\n- @BoboTIG\n\nStrictYAML also includes code from [ruamel.yaml](https://yaml.readthedocs.io/en/latest/), Copyright Anthon van der Neut.\n\n## Contributing\n\n- Before writing any code, please read the tutorial on [contributing to hitchdev libraries](https://hitchdev.com/approach/contributing-to-hitch-libraries/).\n- Before writing any code, if you're proposing a new feature, please raise it on github. If it's an existing feature / bug, please comment and briefly describe how you're going to implement it.\n- All code needs to come accompanied with a story that exercises it or a modification to an existing story. This is used both to test the code and build the documentation.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Strict, typed YAML parser",
"version": "1.7.3",
"split_keywords": [
"yaml"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "967ca81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d",
"md5": "29b59dceb396b2f7cdc36aabe55e85e5",
"sha256": "fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7"
},
"downloads": -1,
"filename": "strictyaml-1.7.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "29b59dceb396b2f7cdc36aabe55e85e5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7.0",
"size": 123917,
"upload_time": "2023-03-10T12:50:17",
"upload_time_iso_8601": "2023-03-10T12:50:17.242713Z",
"url": "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b308efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af",
"md5": "737feac544fad8787827ce89fb628170",
"sha256": "22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407"
},
"downloads": -1,
"filename": "strictyaml-1.7.3.tar.gz",
"has_sig": false,
"md5_digest": "737feac544fad8787827ce89fb628170",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7.0",
"size": 115206,
"upload_time": "2023-03-10T12:50:27",
"upload_time_iso_8601": "2023-03-10T12:50:27.062960Z",
"url": "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-10 12:50:27",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "strictyaml"
}