From 216acbe91f3981c5503768b59c982e289341cb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tina=20M=C3=BCller?= Date: Sat, 6 Feb 2021 00:39:43 +0100 Subject: [PATCH] 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. --- lib/yaml/resolver.py | 2 +- tests/data/yaml11.schema-skip | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/yaml/resolver.py b/lib/yaml/resolver.py index 013896d2..3522bdaa 100644 --- a/lib/yaml/resolver.py +++ b/lib/yaml/resolver.py @@ -177,7 +177,7 @@ class Resolver(BaseResolver): 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 4fe0f0bf..2d78a619 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,