Integers (Int)

StrictYAML parses to a YAML object, not the value directly to give you more flexibility and control over what you can do with the YAML.

This is what that can object can do - in many cases if parsed as a integer, it will behave in the same way.

Example yaml_snippet:

a: 1
b: 5
from strictyaml import Map, Int, load
from ensure import Ensure

schema = Map({"a": Int(), "b": Int()})

parsed = load(yaml_snippet, schema)

Parsed correctly:

Ensure(parsed).equals({"a": 1, "b": 5})

Has underscores:

a: 10_000_000
b: 10_0_0
Ensure(load(yaml_snippet, schema).data).equals({"a": 10000000, "b": 1000})

Cast with str:

Ensure(str(parsed["a"])).equals("1")

Cast with float:

Ensure(float(parsed["a"])).equals(1.0)

Greater than:

Ensure(parsed["a"] > 0).equals(True)

Less than:

Ensure(parsed["a"] < 2).equals(True)

To get actual int, use .data:

Ensure(type(load(yaml_snippet, schema)["a"].data) is int).equals(True)

Cannot cast to bool:

bool(load(yaml_snippet, schema)['a'])
:
Cannot cast 'YAML(1)' to bool.
Use bool(yamlobj.data) or bool(yamlobj.text) instead.

Executable specification

Documentation automatically generated from scalar-integer.story storytests.