Skip to content

Commit 2d0a718

Browse files
committed
Updated yaml libs
1 parent cd08e52 commit 2d0a718

18 files changed

+116
-132
lines changed

lib/yaml/__init__.py

+16-25
Original file line numberDiff line numberDiff line change
@@ -65,48 +65,40 @@ def load(stream, Loader=Loader):
6565
"""
6666
Parse the first YAML document in a stream
6767
and produce the corresponding Python object.
68-
69-
By default resolve only basic YAML tags, if an alternate Loader is
70-
provided, may be dangerous.
7168
"""
7269
loader = Loader(stream)
7370
try:
7471
return loader.get_single_data()
7572
finally:
7673
loader.dispose()
77-
safe_load = load
7874

7975
def load_all(stream, Loader=Loader):
8076
"""
8177
Parse all YAML documents in a stream
8278
and produce corresponding Python objects.
83-
84-
By default resolve only basic YAML tags, if an alternate Loader is
85-
provided, may be dangerous.
8679
"""
8780
loader = Loader(stream)
8881
try:
8982
while loader.check_data():
9083
yield loader.get_data()
9184
finally:
9285
loader.dispose()
93-
safe_load_all = load_all
9486

95-
def danger_load(stream):
87+
def safe_load(stream):
9688
"""
9789
Parse the first YAML document in a stream
9890
and produce the corresponding Python object.
99-
When used on untrusted input, can result in arbitrary code execution.
91+
Resolve only basic YAML tags.
10092
"""
101-
return load(stream, DangerLoader)
93+
return load(stream, SafeLoader)
10294

103-
def danger_load_all(stream):
95+
def safe_load_all(stream):
10496
"""
10597
Parse all YAML documents in a stream
10698
and produce corresponding Python objects.
107-
When used on untrusted input, can result in arbitrary code execution.
99+
Resolve only basic YAML tags.
108100
"""
109-
return load_all(stream, DangerLoader)
101+
return load_all(stream, SafeLoader)
110102

111103
def emit(events, stream=None, Dumper=Dumper,
112104
canonical=None, indent=None, width=None,
@@ -201,31 +193,29 @@ def dump_all(documents, stream=None, Dumper=Dumper,
201193
dumper.dispose()
202194
if getvalue:
203195
return getvalue()
204-
safe_dump_all = dump_all
205196

206-
def danger_dump_all(documents, stream=None, **kwds):
197+
def dump(data, stream=None, Dumper=Dumper, **kwds):
207198
"""
208-
Serialize a sequence of Python objects into a YAML stream.
209-
Produce only basic YAML tags.
199+
Serialize a Python object into a YAML stream.
210200
If stream is None, return the produced string instead.
211201
"""
212-
return dump_all(documents, stream, Dumper=DangerDumper, **kwds)
202+
return dump_all([data], stream, Dumper=Dumper, **kwds)
213203

214-
def dump(data, stream=None, Dumper=Dumper, **kwds):
204+
def safe_dump_all(documents, stream=None, **kwds):
215205
"""
216-
Serialize a Python object into a YAML stream.
206+
Serialize a sequence of Python objects into a YAML stream.
207+
Produce only basic YAML tags.
217208
If stream is None, return the produced string instead.
218209
"""
219-
return dump_all([data], stream, Dumper=Dumper, **kwds)
220-
safe_dump = dump
210+
return dump_all(documents, stream, Dumper=SafeDumper, **kwds)
221211

222-
def danger_dump(data, stream=None, **kwds):
212+
def safe_dump(data, stream=None, **kwds):
223213
"""
224214
Serialize a Python object into a YAML stream.
225215
Produce only basic YAML tags.
226216
If stream is None, return the produced string instead.
227217
"""
228-
return dump_all([data], stream, Dumper=DangerDumper, **kwds)
218+
return dump_all([data], stream, Dumper=SafeDumper, **kwds)
229219

230220
def add_implicit_resolver(tag, regexp, first=None,
231221
Loader=Loader, Dumper=Dumper):
@@ -322,3 +312,4 @@ def to_yaml(cls, dumper, data):
322312
return dumper.represent_yaml_object(cls.yaml_tag, data, cls,
323313
flow_style=cls.yaml_flow_style)
324314
to_yaml = classmethod(to_yaml)
315+

lib/yaml/composer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ def compose_node(self, parent, index):
7272
anchor = event.anchor
7373
if anchor is not None:
7474
if anchor in self.anchors:
75-
raise ComposerError("found duplicate anchor %r; first occurrence"
75+
raise ComposerError("found duplicate anchor %r; first occurence"
7676
% anchor.encode('utf-8'), self.anchors[anchor].start_mark,
77-
"second occurrence", event.start_mark)
77+
"second occurence", event.start_mark)
7878
self.descend_resolver(parent, index)
7979
if self.check_event(ScalarEvent):
8080
node = self.compose_scalar_node(anchor)

lib/yaml/cyaml.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

2-
__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader', 'CDangerLoader',
3-
'CBaseDumper', 'CSafeDumper', 'CDumper', 'CDangerDumper']
2+
__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader',
3+
'CBaseDumper', 'CSafeDumper', 'CDumper']
44

55
from _yaml import CParser, CEmitter
66

@@ -18,15 +18,14 @@ def __init__(self, stream):
1818
BaseConstructor.__init__(self)
1919
BaseResolver.__init__(self)
2020

21-
class CLoader(CParser, SafeConstructor, Resolver):
21+
class CSafeLoader(CParser, SafeConstructor, Resolver):
2222

2323
def __init__(self, stream):
2424
CParser.__init__(self, stream)
2525
SafeConstructor.__init__(self)
2626
Resolver.__init__(self)
27-
CSafeLoader = CLoader
2827

29-
class CDangerLoader(CParser, Constructor, Resolver):
28+
class CLoader(CParser, Constructor, Resolver):
3029

3130
def __init__(self, stream):
3231
CParser.__init__(self, stream)
@@ -50,7 +49,7 @@ def __init__(self, stream,
5049
default_flow_style=default_flow_style)
5150
Resolver.__init__(self)
5251

53-
class CDumper(CEmitter, SafeRepresenter, Resolver):
52+
class CSafeDumper(CEmitter, SafeRepresenter, Resolver):
5453

5554
def __init__(self, stream,
5655
default_style=None, default_flow_style=None,
@@ -66,9 +65,8 @@ def __init__(self, stream,
6665
SafeRepresenter.__init__(self, default_style=default_style,
6766
default_flow_style=default_flow_style)
6867
Resolver.__init__(self)
69-
CSafeDumper = CDumper
7068

71-
class CDangerDumper(CEmitter, Serializer, Representer, Resolver):
69+
class CDumper(CEmitter, Serializer, Representer, Resolver):
7270

7371
def __init__(self, stream,
7472
default_style=None, default_flow_style=None,
@@ -84,3 +82,4 @@ def __init__(self, stream,
8482
Representer.__init__(self, default_style=default_style,
8583
default_flow_style=default_flow_style)
8684
Resolver.__init__(self)
85+

lib/yaml/dumper.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
__all__ = ['BaseDumper', 'SafeDumper', 'Dumper', 'DangerDumper']
2+
__all__ = ['BaseDumper', 'SafeDumper', 'Dumper']
33

44
from emitter import *
55
from serializer import *
@@ -24,7 +24,7 @@ def __init__(self, stream,
2424
default_flow_style=default_flow_style)
2525
Resolver.__init__(self)
2626

27-
class Dumper(Emitter, Serializer, SafeRepresenter, Resolver):
27+
class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver):
2828

2929
def __init__(self, stream,
3030
default_style=None, default_flow_style=None,
@@ -41,9 +41,8 @@ def __init__(self, stream,
4141
SafeRepresenter.__init__(self, default_style=default_style,
4242
default_flow_style=default_flow_style)
4343
Resolver.__init__(self)
44-
SafeDumper = Dumper
4544

46-
class DangerDumper(Emitter, Serializer, Representer, Resolver):
45+
class Dumper(Emitter, Serializer, Representer, Resolver):
4746

4847
def __init__(self, stream,
4948
default_style=None, default_flow_style=None,
@@ -60,3 +59,4 @@ def __init__(self, stream,
6059
Representer.__init__(self, default_style=default_style,
6160
default_flow_style=default_flow_style)
6261
Resolver.__init__(self)
62+

lib/yaml/emitter.py

+7-11
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,9 @@
88

99
__all__ = ['Emitter', 'EmitterError']
1010

11-
import sys
12-
1311
from error import YAMLError
1412
from events import *
1513

16-
has_ucs4 = sys.maxunicode > 0xffff
17-
1814
class EmitterError(YAMLError):
1915
pass
2016

@@ -45,7 +41,7 @@ def __init__(self, stream, canonical=None, indent=None, width=None,
4541
# The stream should have the methods `write` and possibly `flush`.
4642
self.stream = stream
4743

48-
# Encoding can be overridden by STREAM-START.
44+
# Encoding can be overriden by STREAM-START.
4945
self.encoding = None
5046

5147
# Emitter is a state machine with a stack of states to handle nested
@@ -659,7 +655,7 @@ def analyze_scalar(self, scalar):
659655
flow_indicators = True
660656

661657
# First character or preceded by a whitespace.
662-
preceded_by_whitespace = True
658+
preceeded_by_whitespace = True
663659

664660
# Last character or followed by a whitespace.
665661
followed_by_whitespace = (len(scalar) == 1 or
@@ -678,7 +674,7 @@ def analyze_scalar(self, scalar):
678674
# Check for indicators.
679675
if index == 0:
680676
# Leading indicators are special characters.
681-
if ch in u'#,[]{}&*!|>\'\"%@`':
677+
if ch in u'#,[]{}&*!|>\'\"%@`':
682678
flow_indicators = True
683679
block_indicators = True
684680
if ch in u'?:':
@@ -696,7 +692,7 @@ def analyze_scalar(self, scalar):
696692
flow_indicators = True
697693
if followed_by_whitespace:
698694
block_indicators = True
699-
if ch == u'#' and preceded_by_whitespace:
695+
if ch == u'#' and preceeded_by_whitespace:
700696
flow_indicators = True
701697
block_indicators = True
702698

@@ -705,8 +701,7 @@ def analyze_scalar(self, scalar):
705701
line_breaks = True
706702
if not (ch == u'\n' or u'\x20' <= ch <= u'\x7E'):
707703
if (ch == u'\x85' or u'\xA0' <= ch <= u'\uD7FF'
708-
or u'\uE000' <= ch <= u'\uFFFD'
709-
or ((not has_ucs4) or (u'\U00010000' <= ch < u'\U0010ffff'))) and ch != u'\uFEFF':
704+
or u'\uE000' <= ch <= u'\uFFFD') and ch != u'\uFEFF':
710705
unicode_characters = True
711706
if not self.allow_unicode:
712707
special_characters = True
@@ -738,7 +733,7 @@ def analyze_scalar(self, scalar):
738733

739734
# Prepare for the next character.
740735
index += 1
741-
preceded_by_whitespace = (ch in u'\0 \t\r\n\x85\u2028\u2029')
736+
preceeded_by_whitespace = (ch in u'\0 \t\r\n\x85\u2028\u2029')
742737
followed_by_whitespace = (index+1 >= len(scalar) or
743738
scalar[index+1] in u'\0 \t\r\n\x85\u2028\u2029')
744739

@@ -1142,3 +1137,4 @@ def write_plain(self, text, split=True):
11421137
spaces = (ch == u' ')
11431138
breaks = (ch in u'\n\x85\u2028\u2029')
11441139
end += 1
1140+

lib/yaml/loader.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
__all__ = ['BaseLoader', 'SafeLoader', 'Loader', 'DangerLoader']
2+
__all__ = ['BaseLoader', 'SafeLoader', 'Loader']
33

44
from reader import *
55
from scanner import *
@@ -18,7 +18,7 @@ def __init__(self, stream):
1818
BaseConstructor.__init__(self)
1919
BaseResolver.__init__(self)
2020

21-
class Loader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver):
21+
class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver):
2222

2323
def __init__(self, stream):
2424
Reader.__init__(self, stream)
@@ -27,9 +27,8 @@ def __init__(self, stream):
2727
Composer.__init__(self)
2828
SafeConstructor.__init__(self)
2929
Resolver.__init__(self)
30-
SafeLoader = Loader
3130

32-
class DangerLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
31+
class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
3332

3433
def __init__(self, stream):
3534
Reader.__init__(self, stream)
@@ -38,3 +37,4 @@ def __init__(self, stream):
3837
Composer.__init__(self)
3938
Constructor.__init__(self)
4039
Resolver.__init__(self)
40+

lib/yaml/reader.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919

2020
from error import YAMLError, Mark
2121

22-
import codecs, re, sys
23-
24-
has_ucs4 = sys.maxunicode > 0xffff
22+
import codecs, re
2523

2624
class ReaderError(YAMLError):
2725

@@ -136,10 +134,7 @@ def determine_encoding(self):
136134
self.encoding = 'utf-8'
137135
self.update(1)
138136

139-
if has_ucs4:
140-
NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD\U00010000-\U0010ffff]')
141-
else:
142-
NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]')
137+
NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]')
143138
def check_printable(self, data):
144139
match = self.NON_PRINTABLE.search(data)
145140
if match:
@@ -192,3 +187,4 @@ def update_raw(self, size=1024):
192187
# psyco.bind(Reader)
193188
#except ImportError:
194189
# pass
190+

lib/yaml/representer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def represent_yaml_object(self, tag, data, cls, flow_style=None):
246246
return self.represent_mapping(tag, state, flow_style=flow_style)
247247

248248
def represent_undefined(self, data):
249-
raise RepresenterError("cannot represent an object", data)
249+
raise RepresenterError("cannot represent an object: %s" % data)
250250

251251
SafeRepresenter.add_representer(type(None),
252252
SafeRepresenter.represent_none)
@@ -411,7 +411,7 @@ def represent_object(self, data):
411411
elif hasattr(data, '__reduce__'):
412412
reduce = data.__reduce__()
413413
else:
414-
raise RepresenterError("cannot represent an object", data)
414+
raise RepresenterError("cannot represent object: %r" % data)
415415
reduce = (list(reduce)+[None]*5)[:5]
416416
function, args, state, listitems, dictitems = reduce
417417
args = list(args)

0 commit comments

Comments
 (0)