Skip to content

Commit

Permalink
Do not interpret characters that cannot be parsed in octal as int (#176)
Browse files Browse the repository at this point in the history
  • Loading branch information
conao3 authored Oct 25, 2023
1 parent ee87412 commit d4faa16
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
1 change: 1 addition & 0 deletions test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ def test_yaml_1_2(self):

def test_yaml_1_1_octals(self):
self.assertEqual(self.run_yq("on: -012345", ["-y", "."]), "'on': -5349\n")
self.assertEqual(self.run_yq("on: -012349", ["-y", "."]), "'on': -012349\n")

@unittest.expectedFailure
def test_yaml_1_2_octals(self):
Expand Down
24 changes: 22 additions & 2 deletions yq/loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,33 @@
},
{
"tag": "tag:yaml.org,2002:int",
"regexp": re.compile(r"^(?:|0o[0-7]+|[-+]?(?:[0-9]+)|0x[0-9a-fA-F]+)$", re.X),
"regexp": re.compile(
r"""^(?:
# [-+]?0b[0-1_]+ # (base 2)
[-+]?0[0-7]+ # (base 8)
|[-+]?0o[0-7]+ # (base 8)
|[-+]?(0|[1-9][0-9]*) # (base 10)
# |[-+]?0[0-7_]+ # (base 8)
# |[-+]?0o[0-7_]+ # (base 8)
# |[-+]?(0|[1-9][0-9_]*) # (base 10)
# |[-+]?0x[0-9a-fA-F_]+ # (base 16)
# |[-+]?[1-9][0-9_]*(:[0-5]?[0-9])+ # (base 60)
)$""",
re.X
),
"start_chars": list("-+0123456789"),
},
{
"tag": "tag:yaml.org,2002:float",
"regexp": re.compile(
r"^(?:[-+]?(?:\.[0-9]+|[0-9]+(\.[0-9]*)?)(?:[eE][-+]?[0-9]+)?|[-+]?\.(?:inf|Inf|INF)|\.(?:nan|NaN|NAN))$", # noqa
r"""^(?:
[-+]?([0-9][0-9]*)?\.[0-9.]*([eE][-+][0-9]+)? (base 10)
|[-+]?[0-9][0-9]*(:[0-5]?[0-9])+\.[0-9]* (base 60)
# |[-+]?([0-9][0-9_]*)?\.[0-9.]*([eE][-+][0-9]+)? (base 10)
# |[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]* (base 60)
|[-+]?\.(inf|Inf|INF) # (infinity)
|\.(nan|NaN|NAN) # (not a number)
)$""",
re.X,
),
"start_chars": list("-+0123456789."),
Expand Down

0 comments on commit d4faa16

Please sign in to comment.