Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-strictyaml for
openSUSE:Factory checked in at 2022-03-10 22:45:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-strictyaml (Old)
and /work/SRC/openSUSE:Factory/.python-strictyaml.new.2349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-strictyaml"
Thu Mar 10 22:45:23 2022 rev:6 rq:960711 version:1.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-strictyaml/python-strictyaml.changes
2021-08-03 22:49:29.456442575 +0200
+++
/work/SRC/openSUSE:Factory/.python-strictyaml.new.2349/python-strictyaml.changes
2022-03-11 11:34:10.158119682 +0100
@@ -1,0 +2,7 @@
+Wed Mar 9 10:02:18 UTC 2022 - Michael Str??der <[email protected]>
+
+- update to 1.6.1
+ too many changes to be listed here
+ see detailed changelog: https://hitchdev.com/strictyaml/changelog/
+
+-------------------------------------------------------------------
Old:
----
strictyaml-1.4.4.tar.gz
New:
----
strictyaml-1.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-strictyaml.spec ++++++
--- /var/tmp/diff_new_pack.Lwm8Gi/_old 2022-03-11 11:34:10.638120245 +0100
+++ /var/tmp/diff_new_pack.Lwm8Gi/_new 2022-03-11 11:34:10.642120250 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-strictyaml
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,8 +17,9 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+
Name: python-strictyaml
-Version: 1.4.4
+Version: 1.6.1
Release: 0
Summary: Strict, typed YAML parser
License: MIT
@@ -30,8 +31,8 @@
Requires: python-python-dateutil >= 2.6.0
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module pytest}
-BuildRequires: %{python_module python-dateutil >= 2.6.0}
+# BuildRequires: %{python_module pytest}
+# BuildRequires: %{python_module python-dateutil >= 2.6.0}
# /SECTION
%python_subpackages
++++++ strictyaml-1.4.4.tar.gz -> strictyaml-1.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/PKG-INFO
new/strictyaml-1.6.1/PKG-INFO
--- old/strictyaml-1.4.4/PKG-INFO 2021-06-19 20:35:01.669842500 +0200
+++ new/strictyaml-1.6.1/PKG-INFO 2021-11-28 19:08:59.655146400 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: strictyaml
-Version: 1.4.4
+Version: 1.6.1
Summary: Strict, typed YAML parser
Home-page: http://hitchdev.com/strictyaml
Author: Colm O'Connor
@@ -207,19 +207,20 @@
less the same purpose as StrictYAML. I've tried to make it the best
one.
Below is a series of documented justifications:
- - [Why not use JSON Schema for
validation?](https://hitchdev.com/strictyaml/why-not/)
- - [What is wrong with TOML?](https://hitchdev.com/strictyaml/why-not/)
- - [Why shouldn't I just use Python code for
configuration?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not JSON5?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not JSON for simple configuration
files?](https://hitchdev.com/strictyaml/why-not/)
- - [Why avoid using environment variables as
configuration?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use XML for configuration or
DSLs?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use INI files?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use the YAML 1.2 standard? - we don't need a new
standard!](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use Python's schema library (or similar) for
validation?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not HOCON?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use SDLang?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use kwalify with standard YAML to validate my
YAML?](https://hitchdev.com/strictyaml/why-not/)
+ - [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)
@@ -227,50 +228,52 @@
How to:
- - [Merge YAML
documents](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Build a YAML document from scratch in
code](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Reading in YAML, editing it and writing it back
out](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Get line numbers of YAML
elements](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Either/or schema validation of different, equally valid different
kinds of YAML](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Labeling
exceptions](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Parsing YAML without a
schema](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Revalidate an already validated
document](https://hitchdev.com/strictyaml/using/alpha/howto/)
+ - [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:
- - [Using a YAML object of a parsed
mapping](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mapping with defined keys and a custom key validator
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mappings with defined keys
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Updating document with a
schema](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Validating optional keys in mappings
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mappings with arbitrary key names
(MapPattern)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Optional keys with defaults
(Map/Optional)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Sequence/list validator
(Seq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Sequences of unique items
(UniqueSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Fixed length sequences
(FixedSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
+ - [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:
- - [Empty key
validation](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Datetimes
(Datetime)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Floating point numbers
(Float)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Email and URL
validators](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Parsing comma separated items
(CommaSeparated)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Integers (Int)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Decimal numbers
(Decimal)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Boolean (Bool)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Validating strings with regexes
(Regex)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Parsing strings
(Str)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Enumerated scalars
(Enum)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
+ - [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/)
- - [Dirty
load](https://hitchdev.com/strictyaml/using/alpha/restrictions/)
- - [Duplicate
keys](https://hitchdev.com/strictyaml/using/alpha/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)
@@ -279,16 +282,16 @@
There are some design decisions in StrictYAML which are controversial
and/or not obvious. Those are documented here:
- - [Why is parsing speed not a high priority for
StrictYAML?](https://hitchdev.com/strictyaml/why/)
- - [What is syntax typing?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with node anchors and
references?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with duplicate
keys?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with explicit
tags?](https://hitchdev.com/strictyaml/why/)
- - [The Norway Problem - why StrictYAML refuses to do implicit typing
and so should you](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML not parse direct representations of Python
objects?](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML only parse from strings and not
files?](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML make you define a schema in Python - a
Turing-complete language?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with flow-style
YAML?](https://hitchdev.com/strictyaml/why/)
+ - [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)
@@ -296,9 +299,9 @@
- @wwoods
- @chrisburr
+ - @jnichols0
-
- ## Contributors
+ ## Other Contributors
- @eulores
- @WaltWoods
@@ -310,6 +313,7 @@
- @jaredsampson
- @BoboTIG
+ StrictYAML also includes code from
[ruamel.yaml](https://yaml.readthedocs.io/en/latest/), Copyright Anthon van der
Neut.
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/README.md
new/strictyaml-1.6.1/README.md
--- old/strictyaml-1.4.4/README.md 2021-06-19 20:34:38.000000000 +0200
+++ new/strictyaml-1.6.1/README.md 2021-11-28 18:36:24.000000000 +0100
@@ -199,19 +199,20 @@
less the same purpose as StrictYAML. I've tried to make it the best one.
Below is a series of documented justifications:
-- [Why not use JSON Schema for
validation?](https://hitchdev.com/strictyaml/why-not/)
-- [What is wrong with TOML?](https://hitchdev.com/strictyaml/why-not/)
-- [Why shouldn't I just use Python code for
configuration?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not JSON5?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not JSON for simple configuration
files?](https://hitchdev.com/strictyaml/why-not/)
-- [Why avoid using environment variables as
configuration?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use XML for configuration or
DSLs?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use INI files?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use the YAML 1.2 standard? - we don't need a new
standard!](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use Python's schema library (or similar) for
validation?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not HOCON?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use SDLang?](https://hitchdev.com/strictyaml/why-not/)
-- [Why not use kwalify with standard YAML to validate my
YAML?](https://hitchdev.com/strictyaml/why-not/)
+- [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)
@@ -219,50 +220,52 @@
How to:
-- [Merge YAML documents](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Build a YAML document from scratch in
code](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Reading in YAML, editing it and writing it back
out](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Get line numbers of YAML
elements](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Either/or schema validation of different, equally valid different kinds of
YAML](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Labeling exceptions](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Parsing YAML without a
schema](https://hitchdev.com/strictyaml/using/alpha/howto/)
-- [Revalidate an already validated
document](https://hitchdev.com/strictyaml/using/alpha/howto/)
+- [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:
-- [Using a YAML object of a parsed
mapping](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Mapping with defined keys and a custom key validator
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Mappings with defined keys
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Updating document with a
schema](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Validating optional keys in mappings
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Mappings with arbitrary key names
(MapPattern)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Optional keys with defaults
(Map/Optional)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Sequence/list validator
(Seq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Sequences of unique items
(UniqueSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
-- [Fixed length sequences
(FixedSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
+- [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:
-- [Empty key validation](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Datetimes (Datetime)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Floating point numbers
(Float)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Email and URL
validators](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Parsing comma separated items
(CommaSeparated)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Integers (Int)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Decimal numbers
(Decimal)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Boolean (Bool)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Validating strings with regexes
(Regex)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Parsing strings (Str)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
-- [Enumerated scalars
(Enum)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
+- [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/)
-- [Dirty load](https://hitchdev.com/strictyaml/using/alpha/restrictions/)
-- [Duplicate keys](https://hitchdev.com/strictyaml/using/alpha/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)
@@ -271,16 +274,16 @@
There are some design decisions in StrictYAML which are controversial
and/or not obvious. Those are documented here:
-- [Why is parsing speed not a high priority for
StrictYAML?](https://hitchdev.com/strictyaml/why/)
-- [What is syntax typing?](https://hitchdev.com/strictyaml/why/)
-- [What is wrong with node anchors and
references?](https://hitchdev.com/strictyaml/why/)
-- [What is wrong with duplicate keys?](https://hitchdev.com/strictyaml/why/)
-- [What is wrong with explicit tags?](https://hitchdev.com/strictyaml/why/)
-- [The Norway Problem - why StrictYAML refuses to do implicit typing and so
should you](https://hitchdev.com/strictyaml/why/)
-- [Why does StrictYAML not parse direct representations of Python
objects?](https://hitchdev.com/strictyaml/why/)
-- [Why does StrictYAML only parse from strings and not
files?](https://hitchdev.com/strictyaml/why/)
-- [Why does StrictYAML make you define a schema in Python - a Turing-complete
language?](https://hitchdev.com/strictyaml/why/)
-- [What is wrong with flow-style YAML?](https://hitchdev.com/strictyaml/why/)
+- [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)
@@ -288,9 +291,9 @@
- @wwoods
- @chrisburr
+- @jnichols0
-
-## Contributors
+## Other Contributors
- @eulores
- @WaltWoods
@@ -302,6 +305,7 @@
- @jaredsampson
- @BoboTIG
+StrictYAML also includes code from
[ruamel.yaml](https://yaml.readthedocs.io/en/latest/), Copyright Anthon van der
Neut.
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/VERSION new/strictyaml-1.6.1/VERSION
--- old/strictyaml-1.4.4/VERSION 2021-06-19 20:34:52.000000000 +0200
+++ new/strictyaml-1.6.1/VERSION 2021-11-28 19:08:43.000000000 +0100
@@ -1 +1 @@
-1.4.4
\ No newline at end of file
+1.6.1
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/hitch/hitchreqs.in
new/strictyaml-1.6.1/hitch/hitchreqs.in
--- old/strictyaml-1.4.4/hitch/hitchreqs.in 2021-06-19 13:38:55.000000000
+0200
+++ new/strictyaml-1.6.1/hitch/hitchreqs.in 2021-11-18 10:06:34.000000000
+0100
@@ -1,2 +1,2 @@
hitchrun>=0.4.0
-hitchpylibrarytoolkit>=0.4.5
+hitchpylibrarytoolkit>=0.5.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/hitch/hitchreqs.txt
new/strictyaml-1.6.1/hitch/hitchreqs.txt
--- old/strictyaml-1.4.4/hitch/hitchreqs.txt 2021-06-19 13:44:08.000000000
+0200
+++ new/strictyaml-1.6.1/hitch/hitchreqs.txt 2021-11-20 18:34:11.000000000
+0100
@@ -1,87 +1,221 @@
-appdirs==1.4.4 # via black
-argcomplete==1.12.2 # via hitchrun
-backcall==0.2.0 # via ipython
-black==20.8b1 # via hitchpylibrarytoolkit
-bleach==3.2.1 # via readme-renderer
-certifi==2020.11.8 # via requests
-cffi==1.14.4 # via cryptography
-chardet==3.0.4 # via requests
-click==7.1.2 # via black, hitchrun, pip-tools
-colorama==0.4.4 # via hitchrun, hitchstory, prettystack, twine
-commandlib==0.3.5 # via hitchbuildpy, hitchrun, icommandlib
-cryptography==3.2.1 # via secretstorage
-decorator==4.4.2 # via ipython
-dirtemplate==0.4.0 # via hitchpylibrarytoolkit
-docutils==0.16 # via readme-renderer
-flake8==3.8.4 # via hitchpylibrarytoolkit
-gitdb==4.0.5 # via gitpython
-gitpython==3.1.11 # via hitchpylibrarytoolkit
-hitchbuild==0.6.3 # via dirtemplate, hitchbuildpy
-hitchbuildpy==0.5.4 # via hitchpylibrarytoolkit
-hitchpylibrarytoolkit==0.4.5 # via -r hitchreqs.in
-hitchrun==0.4.0 # via -r hitchreqs.in, hitchpylibrarytoolkit
-hitchrunpy==0.10.0 # via hitchpylibrarytoolkit
-hitchstory==0.12.1 # via hitchpylibrarytoolkit
-icommandlib==0.5.0 # via hitchrunpy
-idna==2.10 # via requests
-ipython-genutils==0.2.0 # via traitlets
-ipython==7.16.1 # via hitchpylibrarytoolkit
-jedi==0.17.2 # via ipython
-jeepney==0.6.0 # via keyring, secretstorage
-jinja2==2.11.2 # via dirtemplate, hitchrunpy, hitchstory,
prettystack
-kaching==0.4.2 # via hitchpylibrarytoolkit
-keyring==21.5.0 # via twine
-markupsafe==1.1.1 # via jinja2
-mccabe==0.6.1 # via flake8
-mypy-extensions==0.4.3 # via black
-packaging==20.7 # via bleach
-parso==0.7.1 # via jedi
-path.py==12.5.0 # via hitchbuild, hitchrun, hitchrunpy, hitchstory,
pathquery, prettystack
-path==15.0.0 # via path.py
-pathquery==0.3.0 # via dirtemplate, hitchbuild, hitchbuildpy,
hitchstory
-pathspec==0.8.1 # via black
-peewee==3.14.0 # via hitchbuild
-pexpect==4.8.0 # via ipython
-pickleshare==0.7.5 # via ipython
-pip-tools==5.4.0 # via hitchrun
-pkginfo==1.6.1 # via twine
-prettystack==0.3.0 # via hitchrun, hitchrunpy, hitchstory
-prompt-toolkit==3.0.8 # via ipython
-psutil==5.7.3 # via icommandlib
-ptyprocess==0.6.0 # via pexpect
-pycodestyle==2.6.0 # via flake8
-pycparser==2.20 # via cffi
-pyflakes==2.2.0 # via flake8
-pygments==2.7.2 # via ipython, readme-renderer
-pyparsing==2.4.7 # via packaging
-pyte==0.8.0 # via icommandlib
-python-dateutil==2.8.1 # via strictyaml
-python-slugify==4.0.1 # via dirtemplate, hitchbuild, hitchstory
-pyuv==1.4.0 # via icommandlib
-q==2.6 # via hitchpylibrarytoolkit
-readme-renderer==28.0 # via twine
-regex==2020.11.13 # via black
-requests-toolbelt==0.9.1 # via twine
-requests==2.25.0 # via requests-toolbelt, twine
-rfc3986==1.4.0 # via twine
-ruamel.yaml.clib==0.2.2 # via ruamel.yaml
-ruamel.yaml==0.16.12 # via strictyaml
-secretstorage==3.3.0 # via keyring
-six==1.15.0 # via bleach, cryptography, pip-tools,
python-dateutil, readme-renderer
-smmap==3.0.4 # via gitdb
-strictyaml==1.1.1 # via dirtemplate, hitchstory
-templex==0.2.0 # via hitchpylibrarytoolkit
-text-unidecode==1.3 # via python-slugify
-toml==0.10.2 # via black
-tqdm==4.54.0 # via twine
-traitlets==5.0.4 # via ipython
-twine==3.2.0 # via hitchpylibrarytoolkit
-typed-ast==1.4.1 # via black
-typing-extensions==3.7.4.3 # via black
-urllib3==1.26.2 # via requests
-uvloop==0.14.0 # via icommandlib
-wcwidth==0.2.5 # via prompt-toolkit, pyte
-webencodings==0.5.1 # via bleach
+appdirs==1.4.4
+ # via black
+argcomplete==1.12.2
+ # via hitchrun
+backcall==0.2.0
+ # via ipython
+black==20.8b1
+ # via hitchpylibrarytoolkit
+bleach==3.2.1
+ # via readme-renderer
+certifi==2020.11.8
+ # via requests
+cffi==1.14.4
+ # via cryptography
+chardet==3.0.4
+ # via requests
+click==7.1.2
+ # via
+ # black
+ # hitchrun
+ # pip-tools
+colorama==0.4.4
+ # via
+ # hitchrun
+ # hitchstory
+ # prettystack
+ # twine
+commandlib==0.3.5
+ # via
+ # hitchbuildpy
+ # hitchrun
+ # icommandlib
+cryptography==3.2.1
+ # via secretstorage
+decorator==4.4.2
+ # via ipython
+dirtemplate==0.4.0
+ # via hitchpylibrarytoolkit
+docutils==0.16
+ # via readme-renderer
+flake8==3.8.4
+ # via hitchpylibrarytoolkit
+gitdb==4.0.5
+ # via gitpython
+gitpython==3.1.11
+ # via hitchpylibrarytoolkit
+hitchbuild==0.6.3
+ # via
+ # dirtemplate
+ # hitchbuildpy
+hitchbuildpy==0.5.4
+ # via hitchpylibrarytoolkit
+hitchpylibrarytoolkit==0.5.1
+ # via -r hitchreqs.in
+hitchrun==0.4.0
+ # via
+ # -r hitchreqs.in
+ # hitchpylibrarytoolkit
+hitchrunpy==0.10.0
+ # via hitchpylibrarytoolkit
+hitchstory==0.12.1
+ # via hitchpylibrarytoolkit
+icommandlib==0.5.0
+ # via hitchrunpy
+idna==2.10
+ # via requests
+ipython==7.16.1
+ # via hitchpylibrarytoolkit
+ipython-genutils==0.2.0
+ # via traitlets
+jedi==0.17.2
+ # via ipython
+jeepney==0.6.0
+ # via
+ # keyring
+ # secretstorage
+jinja2==2.11.2
+ # via
+ # dirtemplate
+ # hitchrunpy
+ # hitchstory
+ # prettystack
+kaching==0.4.2
+ # via hitchpylibrarytoolkit
+keyring==21.5.0
+ # via twine
+markupsafe==1.1.1
+ # via jinja2
+mccabe==0.6.1
+ # via flake8
+mypy-extensions==0.4.3
+ # via black
+packaging==20.7
+ # via bleach
+parso==0.7.1
+ # via jedi
+path==15.0.0
+ # via path.py
+path.py==12.5.0
+ # via
+ # hitchbuild
+ # hitchrun
+ # hitchrunpy
+ # hitchstory
+ # pathquery
+ # prettystack
+pathquery==0.3.0
+ # via
+ # dirtemplate
+ # hitchbuild
+ # hitchbuildpy
+ # hitchstory
+pathspec==0.8.1
+ # via black
+peewee==3.14.0
+ # via hitchbuild
+pep517==0.12.0
+ # via pip-tools
+pexpect==4.8.0
+ # via ipython
+pickleshare==0.7.5
+ # via ipython
+pip-tools==6.4.0
+ # via hitchrun
+pkginfo==1.6.1
+ # via twine
+prettystack==0.3.0
+ # via
+ # hitchrun
+ # hitchrunpy
+ # hitchstory
+prompt-toolkit==3.0.8
+ # via ipython
+psutil==5.7.3
+ # via icommandlib
+ptyprocess==0.6.0
+ # via pexpect
+pycodestyle==2.6.0
+ # via flake8
+pycparser==2.20
+ # via cffi
+pyflakes==2.2.0
+ # via flake8
+pygments==2.7.2
+ # via
+ # ipython
+ # readme-renderer
+pyparsing==2.4.7
+ # via packaging
+pyte==0.8.0
+ # via icommandlib
+python-dateutil==2.8.1
+ # via strictyaml
+python-slugify==4.0.1
+ # via
+ # dirtemplate
+ # hitchbuild
+ # hitchstory
+pyuv==1.4.0
+ # via icommandlib
+q==2.6
+ # via hitchpylibrarytoolkit
+readme-renderer==28.0
+ # via twine
+regex==2020.11.13
+ # via black
+requests==2.25.0
+ # via
+ # requests-toolbelt
+ # twine
+requests-toolbelt==0.9.1
+ # via twine
+rfc3986==1.4.0
+ # via twine
+secretstorage==3.3.0
+ # via keyring
+six==1.15.0
+ # via
+ # bleach
+ # cryptography
+ # python-dateutil
+ # readme-renderer
+smmap==3.0.4
+ # via gitdb
+strictyaml==1.5.0
+ # via
+ # dirtemplate
+ # hitchstory
+templex==0.2.0
+ # via hitchpylibrarytoolkit
+text-unidecode==1.3
+ # via python-slugify
+toml==0.10.2
+ # via black
+tomli==1.2.2
+ # via pep517
+tqdm==4.54.0
+ # via twine
+traitlets==5.0.4
+ # via ipython
+twine==3.2.0
+ # via hitchpylibrarytoolkit
+typed-ast==1.4.1
+ # via black
+typing-extensions==3.7.4.3
+ # via black
+urllib3==1.26.2
+ # via requests
+uvloop==0.14.0
+ # via icommandlib
+wcwidth==0.2.5
+ # via
+ # prompt-toolkit
+ # pyte
+webencodings==0.5.1
+ # via bleach
+wheel==0.37.0
+ # via pip-tools
# The following packages are considered to be unsafe in a requirements file:
# pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/hitch/key.py
new/strictyaml-1.6.1/hitch/key.py
--- old/strictyaml-1.4.4/hitch/key.py 2021-06-19 20:13:07.000000000 +0200
+++ new/strictyaml-1.6.1/hitch/key.py 2021-11-18 18:01:07.000000000 +0100
@@ -115,7 +115,6 @@
lint()
doctests()
storybook = _storybook().only_uninherited()
- storybook.with_params(**{"python version":
"2.7.14"}).ordered_by_name().play()
storybook.with_params(**{"python version":
"3.7.0"}).ordered_by_name().play()
@@ -129,6 +128,22 @@
).only_uninherited().ordered_by_name().play()
+@expected(hitchpylibrarytoolkit.ToolkitError)
+def checks():
+ """
+ Run all checks ensure linter, code formatter, tests and docgen all run
correctly.
+
+ These checks should prevent code that doesn't have the proper checks run
from being merged.
+ """
+ toolkit.validate_reformatting()
+ toolkit.lint(exclude=["__init__.py", "ruamel"])
+ toolkit.validate_readmegen(Engine(DIR))
+ toolkit.validate_docgen(Engine(DIR))
+ doctests()
+ storybook = _storybook().only_uninherited()
+ storybook.with_params(**{"python version":
"3.7.0"}).ordered_by_name().play()
+
+
def reformat():
"""
Reformat using black and then relint.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/hitch/story/dirty-load.story
new/strictyaml-1.6.1/hitch/story/dirty-load.story
--- old/strictyaml-1.4.4/hitch/story/dirty-load.story 2021-05-31
18:29:13.000000000 +0200
+++ new/strictyaml-1.6.1/hitch/story/dirty-load.story 2021-11-28
19:04:52.000000000 +0100
@@ -6,18 +6,20 @@
by default, but since there have since been
[some requests](https://github.com/crdoconnor/strictyaml/issues/38)
to parse flow style, this now allowed with the "dirty_load" method.
+ If allow_flow_style is True, Map indentation is not checked for
+ consistency, as the indentation level is dependent on the map key length.
given:
setup: |
from strictyaml import Map, Int, MapPattern, Seq, Str, Any, dirty_load
- schema = Map({"x": Map({"a": Any(), "b": Any(), "c": Any()}), "y":
MapPattern(Str(), Str()), "z": Seq(Str())})
+ schema = Map({"foo": Map({"a": Any(), "b": Any(), "c": Any()}), "y":
MapPattern(Str(), Str()), "z": Seq(Str())})
variations:
Flow style mapping:
given:
yaml_snippet: |
- x: { a: 1, b: 2, c: 3 }
+ foo: { a: 1, b: 2, c: 3 }
y: {}
z: []
steps:
- Run: |
- assert dirty_load(yaml_snippet, schema, allow_flow_style=True) ==
{"x": {"a": "1", "b": "2", "c": "3"}, "y": {}, "z": []}
+ assert dirty_load(yaml_snippet, schema, allow_flow_style=True) ==
{"foo": {"a": "1", "b": "2", "c": "3"}, "y": {}, "z": []}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/hitch/story/map-combined.story
new/strictyaml-1.6.1/hitch/story/map-combined.story
--- old/strictyaml-1.4.4/hitch/story/map-combined.story 1970-01-01
01:00:00.000000000 +0100
+++ new/strictyaml-1.6.1/hitch/story/map-combined.story 2021-10-30
17:29:51.000000000 +0200
@@ -0,0 +1,140 @@
+Mappings combining defined and undefined keys (MapCombined):
+ docs: compound/map-combined
+ based on: strictyaml
+ experimental: yes
+ description: |
+ When you wish to support arbitrary optional keys in
+ some mappings (i.e. to specify some required keys in
+ the schema, but allow any additional ones on top of
+ that), you use a MapCombined.
+
+ See
https://github.com/crdoconnor/strictyaml/issues/148#issuecomment-861007657
+ given:
+ setup: |
+ from strictyaml import Any, Int, MapCombined, Optional, Str, load
+ from ensure import Ensure
+
+ schema = MapCombined(
+ {
+ "required": Str(),
+ Optional("foo"): Int(),
+ },
+ Str(),
+ Any(),
+ )
+ variations:
+ "Optional is present":
+ given:
+ yaml_snippet: |
+ required: Hello World
+ foo: 42
+ bar: 42
+ steps:
+ - Run: |
+ Ensure(load(yaml_snippet, schema).data).equals(
+ {
+ "required": "Hello World",
+ "foo": 42,
+ "bar": "42",
+ }
+ )
+ "Optional is absent":
+ given:
+ yaml_snippet: |
+ required: Hello World
+ bar: 42
+ steps:
+ - Run: |
+ Ensure(load(yaml_snippet, schema).data).equals(
+ {
+ "required": "Hello World",
+ "bar": "42",
+ }
+ )
+ "Multiple undefined":
+ given:
+ yaml_snippet: |
+ required: Hello World
+ bar: 42
+ baz: forty two
+ steps:
+ - Run: |
+ Ensure(load(yaml_snippet, schema).data).equals(
+ {
+ "required": "Hello World",
+ "bar": "42",
+ "baz": "forty two",
+ }
+ )
+ "Required is absent":
+ given:
+ yaml_snippet: |
+ bar: 42
+ steps:
+ - Run:
+ code:
+ load(yaml_snippet, schema)
+ raises:
+ type: strictyaml.exceptions.YAMLValidationError
+ message: |-
+ while parsing a mapping
+ required key(s) 'required' not found
+ in "<unicode string>", line 1, column 1:
+ bar: '42'
+ ^ (line: 1)
+ "Undefined of invalid type":
+ given:
+ setup: |
+ from strictyaml import Any, Int, MapCombined, Optional, Str, load
+ from ensure import Ensure
+
+ schema = MapCombined(
+ {
+ "required": Str(),
+ },
+ Str(),
+ Int(),
+ )
+ yaml_snippet: |
+ required: Hello World
+ bar: forty two
+ steps:
+ - Run:
+ code:
+ load(yaml_snippet, schema)
+ raises:
+ type: strictyaml.exceptions.YAMLValidationError
+ message: |-
+ when expecting an integer
+ found arbitrary text
+ in "<unicode string>", line 2, column 1:
+ bar: forty two
+ ^ (line: 2)
+ "Invalid key type":
+ given:
+ setup: |
+ from strictyaml import Any, Int, MapCombined, Optional, Str, load
+ from ensure import Ensure
+
+ schema = MapCombined(
+ {
+ "1": Str(),
+ },
+ Int(),
+ Str(),
+ )
+ yaml_snippet: |
+ 1: Hello World
+ not_an_integer: 42
+ steps:
+ - Run:
+ code:
+ load(yaml_snippet, schema)
+ raises:
+ type: strictyaml.exceptions.YAMLValidationError
+ message: |-
+ when expecting an integer
+ found arbitrary text
+ in "<unicode string>", line 2, column 1:
+ not_an_integer: '42'
+ ^ (line: 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/strictyaml-1.4.4/hitch/story/scalar-hexadecimal-integer.story
new/strictyaml-1.6.1/hitch/story/scalar-hexadecimal-integer.story
--- old/strictyaml-1.4.4/hitch/story/scalar-hexadecimal-integer.story
1970-01-01 01:00:00.000000000 +0100
+++ new/strictyaml-1.6.1/hitch/story/scalar-hexadecimal-integer.story
2021-10-14 21:22:51.000000000 +0200
@@ -0,0 +1,54 @@
+Hexadecimal Integers (HexInt):
+ docs: scalar/hexadecimal-integer
+ based on: strictyaml
+ description: |
+ StrictYAML can interpret a hexadecimal integer
+ preserving its value
+ given:
+ yaml_snippet: |
+ x: 0x1a
+ setup: |
+ from strictyaml import Map, HexInt, load
+ from ensure import Ensure
+
+ schema = Map({"x": HexInt()})
+
+ parsed = load(yaml_snippet, schema)
+
+ variations:
+ Parsed correctly:
+ steps:
+ - Run: |
+ Ensure(parsed).equals({"x": 26})
+ Ensure(parsed.as_yaml()).equals("x: 0x1a\n")
+
+ Uppercase:
+ given:
+ yaml_snippet: |
+ x: 0X1A
+ steps:
+ - Run:
+ code: |
+ Ensure(load(yaml_snippet, schema).data).equals({"x": 26})
+ Ensure(load(yaml_snippet, schema).as_yaml()).equals("x: 0X1A\n")
+
+Invalid scalar hexadecimal integer:
+ based on: strictyaml
+ given:
+ yaml_snippet: |
+ x: some_string
+ setup: |
+ from strictyaml import Map, HexInt, load
+
+ schema = Map({"x": HexInt()})
+ steps:
+ - Run:
+ code: load(yaml_snippet, schema)
+ raises:
+ type: strictyaml.exceptions.YAMLValidationError
+ message: |-
+ when expecting a hexadecimal integer
+ found arbitrary text
+ in "<unicode string>", line 1, column 1:
+ x: some_string
+ ^ (line: 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml/__init__.py
new/strictyaml-1.6.1/strictyaml/__init__.py
--- old/strictyaml-1.4.4/strictyaml/__init__.py 2021-06-19 20:35:00.000000000
+0200
+++ new/strictyaml-1.6.1/strictyaml/__init__.py 2021-11-28 19:08:58.000000000
+0100
@@ -19,6 +19,7 @@
from strictyaml.scalar import Url
from strictyaml.scalar import Str
from strictyaml.scalar import Int
+from strictyaml.scalar import HexInt
from strictyaml.scalar import Bool
from strictyaml.scalar import Float
from strictyaml.scalar import Decimal
@@ -31,6 +32,7 @@
from strictyaml.compound import Optional
from strictyaml.compound import Map
from strictyaml.compound import MapPattern
+from strictyaml.compound import MapCombined
from strictyaml.compound import Seq
from strictyaml.compound import UniqueSeq
from strictyaml.compound import FixedSeq
@@ -51,4 +53,4 @@
from strictyaml.exceptions import DuplicateKeysDisallowed
from strictyaml import exceptions
-__version__ = "1.4.4"
+__version__ = "1.6.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml/compound.py
new/strictyaml-1.6.1/strictyaml/compound.py
--- old/strictyaml-1.4.4/strictyaml/compound.py 2021-06-19 13:15:00.000000000
+0200
+++ new/strictyaml-1.6.1/strictyaml/compound.py 2021-10-30 17:29:51.000000000
+0200
@@ -147,6 +147,15 @@
)
)
+ def get_validator(self, key):
+ return self._validator_dict[key]
+
+ def unexpected_key(self, key, yaml_key, value, chunk):
+ key.expecting_but_found(
+ u"while parsing a mapping",
+ u"unexpected key not in schema
'{0}'".format(unicode(yaml_key.scalar)),
+ )
+
def validate(self, chunk):
found_keys = set()
items = chunk.expect_mapping()
@@ -155,14 +164,9 @@
yaml_key = self._key_validator(key)
if yaml_key.scalar not in self._validator_dict.keys():
- key.expecting_but_found(
- u"while parsing a mapping",
- u"unexpected key not in schema '{0}'".format(
- unicode(yaml_key.scalar)
- ),
- )
+ self.unexpected_key(key, yaml_key, value, chunk)
- value.process(self._validator_dict[yaml_key.scalar](value))
+ value.process(self.get_validator(yaml_key.scalar)(value))
key.process(yaml_key)
chunk.add_key_association(key.contents, yaml_key.data)
found_keys.add(yaml_key.scalar)
@@ -172,7 +176,7 @@
key_chunk = YAMLChunk(default_key)
yaml_key = self._key_validator(key_chunk)
strictindex = yaml_key.data
- value_validator = self._validator_dict[default_key]
+ value_validator = self.get_validator(default_key)
new_value = value_validator(
YAMLChunk(value_validator.to_yaml(default_data))
)
@@ -210,7 +214,7 @@
# TODO : if keys not in list or required keys missing, raise exception.
return CommentedMap(
[
- (key, self._validator_dict[key].to_yaml(value))
+ (key, self.get_validator(key).to_yaml(value))
for key, value in data.items()
if key not in self._defaults.keys()
or key in self._defaults.keys()
@@ -219,6 +223,18 @@
)
+class MapCombined(Map):
+ def __init__(self, map_validator, key_validator, value_validator):
+ super(MapCombined, self).__init__(map_validator, key_validator)
+ self._value_validator = value_validator
+
+ def get_validator(self, key):
+ return self._validator_dict.get(key, self._value_validator)
+
+ def unexpected_key(self, key, yaml_key, value, chunk):
+ pass
+
+
class Seq(SeqValidator):
def __init__(self, validator):
self._validator = validator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml/parser.py
new/strictyaml-1.6.1/strictyaml/parser.py
--- old/strictyaml-1.4.4/strictyaml/parser.py 2021-06-19 13:24:29.000000000
+0200
+++ new/strictyaml-1.6.1/strictyaml/parser.py 2021-11-28 19:01:46.000000000
+0100
@@ -110,23 +110,28 @@
if merge_map:
maptyp.add_yaml_merge(merge_map)
- previous_indentation = None
+ # Don't verify Mapping indentation when allowing flow,
+ # as that disallows:
+ # short_key: { x = 1 }
+ # very_long_key: { x = 1 }
+ if not self.allow_flow_style:
+ previous_indentation = None
- for node in [
- nodegroup[1]
- for nodegroup in node.value
- if isinstance(nodegroup[1], ruamelyaml.nodes.MappingNode)
- ]:
- if previous_indentation is None:
- previous_indentation = node.start_mark.column
- if node.start_mark.column != previous_indentation:
- raise exceptions.InconsistentIndentationDisallowed(
- "While parsing",
- node.start_mark,
- "Found mapping with indentation "
- "inconsistent with previous mapping",
- node.end_mark,
- )
+ for node in [
+ nodegroup[1]
+ for nodegroup in node.value
+ if isinstance(nodegroup[1], ruamelyaml.nodes.MappingNode)
+ ]:
+ if previous_indentation is None:
+ previous_indentation = node.start_mark.column
+ if node.start_mark.column != previous_indentation:
+ raise exceptions.InconsistentIndentationDisallowed(
+ "While parsing",
+ node.start_mark,
+ "Found mapping with indentation "
+ "inconsistent with previous mapping",
+ node.end_mark,
+ )
StrictYAMLConstructor.add_constructor(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml/scalar.py
new/strictyaml-1.6.1/strictyaml/scalar.py
--- old/strictyaml-1.4.4/strictyaml/scalar.py 2021-06-19 13:22:38.000000000
+0200
+++ new/strictyaml-1.6.1/strictyaml/scalar.py 2021-10-14 21:22:51.000000000
+0200
@@ -178,6 +178,22 @@
raise YAMLSerializationError("'{}' not an integer.".format(data))
+class HexInt(ScalarValidator):
+ def validate_scalar(self, chunk):
+ val = chunk.contents
+ if not utils.is_hexadecimal(val):
+ chunk.expecting_but_found("when expecting a hexadecimal integer")
+ return int(val, 16)
+
+ def to_yaml(self, data):
+ if utils.is_hexadecimal(data):
+ if isinstance(data, int):
+ return hex(data)
+ else:
+ return data
+ raise YAMLSerializationError("'{}' not a hexademial
integer.".format(data))
+
+
class Bool(ScalarValidator):
def validate_scalar(self, chunk):
val = chunk.contents
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml/utils.py
new/strictyaml-1.6.1/strictyaml/utils.py
--- old/strictyaml-1.4.4/strictyaml/utils.py 2021-06-19 13:15:00.000000000
+0200
+++ new/strictyaml-1.6.1/strictyaml/utils.py 2021-10-14 21:22:51.000000000
+0200
@@ -79,6 +79,31 @@
return compile(r"^[-+]?[0-9_]+$").match(value) is not None
+def is_hexadecimal(value):
+ """
+ Is a string a string of a hexademcial integer?
+
+ >>> is_hexadecimal("0xa1")
+ True
+
+ >>> is_hexadecimal("0XA1")
+ True
+
+ >>> is_hexadecimal("0xa1x")
+ False
+
+ >>> is_hexadecimal("xa1")
+ False
+
+ >>> is_hexadecimal("a1")
+ False
+
+ >>> is_hexadecimal("1")
+ False
+ """
+ return compile(r"^0[xX]+[a-fA-F0-9]+$").match(value) is not None
+
+
def is_decimal(value):
"""
Is a string a decimal?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml.egg-info/PKG-INFO
new/strictyaml-1.6.1/strictyaml.egg-info/PKG-INFO
--- old/strictyaml-1.4.4/strictyaml.egg-info/PKG-INFO 2021-06-19
20:35:01.000000000 +0200
+++ new/strictyaml-1.6.1/strictyaml.egg-info/PKG-INFO 2021-11-28
19:08:58.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: strictyaml
-Version: 1.4.4
+Version: 1.6.1
Summary: Strict, typed YAML parser
Home-page: http://hitchdev.com/strictyaml
Author: Colm O'Connor
@@ -207,19 +207,20 @@
less the same purpose as StrictYAML. I've tried to make it the best
one.
Below is a series of documented justifications:
- - [Why not use JSON Schema for
validation?](https://hitchdev.com/strictyaml/why-not/)
- - [What is wrong with TOML?](https://hitchdev.com/strictyaml/why-not/)
- - [Why shouldn't I just use Python code for
configuration?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not JSON5?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not JSON for simple configuration
files?](https://hitchdev.com/strictyaml/why-not/)
- - [Why avoid using environment variables as
configuration?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use XML for configuration or
DSLs?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use INI files?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use the YAML 1.2 standard? - we don't need a new
standard!](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use Python's schema library (or similar) for
validation?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not HOCON?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use SDLang?](https://hitchdev.com/strictyaml/why-not/)
- - [Why not use kwalify with standard YAML to validate my
YAML?](https://hitchdev.com/strictyaml/why-not/)
+ - [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)
@@ -227,50 +228,52 @@
How to:
- - [Merge YAML
documents](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Build a YAML document from scratch in
code](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Reading in YAML, editing it and writing it back
out](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Get line numbers of YAML
elements](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Either/or schema validation of different, equally valid different
kinds of YAML](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Labeling
exceptions](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Parsing YAML without a
schema](https://hitchdev.com/strictyaml/using/alpha/howto/)
- - [Revalidate an already validated
document](https://hitchdev.com/strictyaml/using/alpha/howto/)
+ - [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:
- - [Using a YAML object of a parsed
mapping](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mapping with defined keys and a custom key validator
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mappings with defined keys
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Updating document with a
schema](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Validating optional keys in mappings
(Map)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Mappings with arbitrary key names
(MapPattern)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Optional keys with defaults
(Map/Optional)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Sequence/list validator
(Seq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Sequences of unique items
(UniqueSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
- - [Fixed length sequences
(FixedSeq)](https://hitchdev.com/strictyaml/using/alpha/compound/)
+ - [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:
- - [Empty key
validation](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Datetimes
(Datetime)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Floating point numbers
(Float)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Email and URL
validators](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Parsing comma separated items
(CommaSeparated)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Integers (Int)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Decimal numbers
(Decimal)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Boolean (Bool)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Validating strings with regexes
(Regex)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Parsing strings
(Str)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
- - [Enumerated scalars
(Enum)](https://hitchdev.com/strictyaml/using/alpha/scalar/)
+ - [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/)
- - [Dirty
load](https://hitchdev.com/strictyaml/using/alpha/restrictions/)
- - [Duplicate
keys](https://hitchdev.com/strictyaml/using/alpha/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)
@@ -279,16 +282,16 @@
There are some design decisions in StrictYAML which are controversial
and/or not obvious. Those are documented here:
- - [Why is parsing speed not a high priority for
StrictYAML?](https://hitchdev.com/strictyaml/why/)
- - [What is syntax typing?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with node anchors and
references?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with duplicate
keys?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with explicit
tags?](https://hitchdev.com/strictyaml/why/)
- - [The Norway Problem - why StrictYAML refuses to do implicit typing
and so should you](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML not parse direct representations of Python
objects?](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML only parse from strings and not
files?](https://hitchdev.com/strictyaml/why/)
- - [Why does StrictYAML make you define a schema in Python - a
Turing-complete language?](https://hitchdev.com/strictyaml/why/)
- - [What is wrong with flow-style
YAML?](https://hitchdev.com/strictyaml/why/)
+ - [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)
@@ -296,9 +299,9 @@
- @wwoods
- @chrisburr
+ - @jnichols0
-
- ## Contributors
+ ## Other Contributors
- @eulores
- @WaltWoods
@@ -310,6 +313,7 @@
- @jaredsampson
- @BoboTIG
+ StrictYAML also includes code from
[ruamel.yaml](https://yaml.readthedocs.io/en/latest/), Copyright Anthon van der
Neut.
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/strictyaml-1.4.4/strictyaml.egg-info/SOURCES.txt
new/strictyaml-1.6.1/strictyaml.egg-info/SOURCES.txt
--- old/strictyaml-1.4.4/strictyaml.egg-info/SOURCES.txt 2021-06-19
20:35:01.000000000 +0200
+++ new/strictyaml-1.6.1/strictyaml.egg-info/SOURCES.txt 2021-11-28
19:08:59.000000000 +0100
@@ -29,6 +29,7 @@
hitch/story/fixed-sequence.story
hitch/story/float.story
hitch/story/handle-exceptions.story
+hitch/story/map-combined.story
hitch/story/map-with-key-validator.story
hitch/story/map.story
hitch/story/map.toml
@@ -44,6 +45,7 @@
hitch/story/regexp.story
hitch/story/revalidation.story
hitch/story/roundtrip.story
+hitch/story/scalar-hexadecimal-integer.story
hitch/story/scalar-integer.story
hitch/story/scalar-string.story
hitch/story/sequence.story