summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTina Müller <cpan2@tinita.de>2021-02-06 00:39:43 +0100
committerIngy döt Net <ingy@ingy.net>2021-09-23 14:42:00 -0700
commit8f27932796623d58fe9e226e141cd27a6f0befec (patch)
tree2b21a2ac0c002830468d2ef8dbc44fe45c8fad41
parent575d2f46db42d147f8d5cba9dc8ffd3cd60e196c (diff)
downloadpyyaml-git-8f27932796623d58fe9e226e141cd27a6f0befec.tar.gz
Fix float resolver for '.' and '._'
A single dot matches the official YAML 1.1 int regex. This was probably unintended. The regex now requires at least a digit before or after the dot.
-rw-r--r--lib/yaml/resolver.py2
-rw-r--r--tests/data/yaml11.schema-skip2
2 files changed, 1 insertions, 3 deletions
diff --git a/lib/yaml/resolver.py b/lib/yaml/resolver.py
index 013896d..3522bda 100644
--- a/lib/yaml/resolver.py
+++ b/lib/yaml/resolver.py
@@ -177,7 +177,7 @@ Resolver.add_implicit_resolver(
Resolver.add_implicit_resolver(
'tag:yaml.org,2002:float',
re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)?
- |\.[0-9_]+(?:[eE][-+][0-9]+)?
+ |\.[0-9][0-9_]*(?:[eE][-+][0-9]+)?
|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*
|[-+]?\.(?:inf|Inf|INF)
|\.(?:nan|NaN|NAN))$''', re.X),
diff --git a/tests/data/yaml11.schema-skip b/tests/data/yaml11.schema-skip
index 4fe0f0b..2d78a61 100644
--- a/tests/data/yaml11.schema-skip
+++ b/tests/data/yaml11.schema-skip
@@ -1,8 +1,6 @@
load: {
'Y': 1, 'y': 1, 'N': 1, 'n': 1,
'!!bool Y': 1, '!!bool N': 1, '!!bool n': 1, '!!bool y': 1,
- '._', '!!str ._',
- '._14', '!!str ._14'
}
dump: {
'!!str N': 1, '!!str Y': 1, '!!str n': 1, '!!str y': 1,