Exemplo n.º 1
0
 def represent_unicode(self, object):
     try:
         return _syck.Scalar(object.encode('ascii'),
                             tag="tag:python.yaml.org,2002:unicode")
     except UnicodeEncodeError:
         return _syck.Scalar(object.encode('utf-8'),
                             tag="tag:yaml.org,2002:str")
Exemplo n.º 2
0
 def testMap(self):
     self.assert_(issubclass(_syck.Map, _syck.Node))
     map = _syck.Map()
     self.assertEqual(map.kind, 'map')
     self.assertEqual(map.value, {})
     self.assertEqual(map.anchor, None)
     self.assertEqual(map.tag, None)
     self.assertEqual(map.inline, False)
     self.assertRaises(TypeError, lambda: setattr(map, 'kind', 'map'))
     self.assertRaises(TypeError, lambda: setattr(map, 'tag', []))
     self.assertRaises(TypeError, lambda: setattr(map, 'inline', 'block'))
     self.assertRaises(TypeError, lambda: setattr(map, 'inline', []))
     value = dict([(_syck.Scalar(str(k)), _syck.Scalar(str(-k)))
                   for k in range(10)])
     map = _syck.Map(value, tag='a_tag', inline=True)
     self.assertEqual(map.value, value)
     self.assertEqual(map.tag, 'a_tag')
     self.assertEqual(map.inline, True)
     value = [(_syck.Scalar(str(k)), _syck.Scalar(str(-k)))
              for k in range(20)]
     map.value = value
     map.tag = 'another_tag'
     map.inline = False
     self.assertEqual(map.value, value)
     self.assertEqual(map.tag, 'another_tag')
     self.assertEqual(map.inline, False)
     map.tag = None
     self.assertEqual(map.tag, None)
Exemplo n.º 3
0
 def testSeq(self):
     self.assert_(issubclass(_syck.Seq, _syck.Node))
     seq = _syck.Seq()
     self.assertEqual(seq.kind, 'seq')
     self.assertEqual(seq.value, [])
     self.assertEqual(seq.anchor, None)
     self.assertEqual(seq.tag, None)
     self.assertEqual(seq.inline, False)
     self.assertRaises(TypeError, lambda: setattr(seq, 'kind', 'map'))
     self.assertRaises(TypeError, lambda: setattr(seq, 'tag', []))
     self.assertRaises(TypeError, lambda: setattr(seq, 'inline', 'block'))
     self.assertRaises(TypeError, lambda: setattr(seq, 'inline', []))
     value = [_syck.Scalar(str(k)) for k in range(10)]
     seq = _syck.Seq(value, tag='a_tag', inline=True)
     self.assertEqual(seq.value, value)
     self.assertEqual(seq.tag, 'a_tag')
     self.assertEqual(seq.inline, True)
     value = [_syck.Scalar(str(k)) for k in range(20)]
     seq.value = value
     seq.tag = 'another_tag'
     seq.inline = False
     self.assertEqual(seq.value, value)
     self.assertEqual(seq.tag, 'another_tag')
     self.assertEqual(seq.inline, False)
     seq.tag = None
     self.assertEqual(seq.tag, None)
Exemplo n.º 4
0
 def represent_str(self, object):
     try:
         return _syck.Scalar(object.encode('ascii'),
                             tag="tag:yaml.org,2002:str")
     except UnicodeDecodeError:
         try:
             return _syck.Scalar(unicode(object, 'utf-8').encode('utf-8'),
                                 tag="tag:python.yaml.org,2002:str")
         except UnicodeDecodeError:
             return _syck.Scalar(object.encode('base64'),
                                 tag="tag:yaml.org,2002:binary")
Exemplo n.º 5
0
 def testScalar(self):
     self.assert_(issubclass(_syck.Scalar, _syck.Node))
     scalar = _syck.Scalar()
     self.assertEqual(scalar.kind, 'scalar')
     self.assertEqual(scalar.value, '')
     self.assertEqual(scalar.anchor, None)
     self.assertEqual(scalar.tag, None)
     self.assertEqual(scalar.style, None)
     self.assertEqual(scalar.indent, 0)
     self.assertEqual(scalar.width, 0)
     self.assertEqual(scalar.chomp, None)
     scalar = _syck.Scalar('a value',
                           tag='a_tag',
                           style='fold',
                           indent=4,
                           width=80,
                           chomp='+')
     self.assertEqual(scalar.value, 'a value')
     self.assertEqual(scalar.tag, 'a_tag')
     self.assertEqual(scalar.style, 'fold')
     self.assertEqual(scalar.indent, 4)
     self.assertEqual(scalar.width, 80)
     self.assertEqual(scalar.chomp, '+')
     self.assertRaises(TypeError, lambda: setattr(scalar, 'kind', 'map'))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'value', None))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'value', []))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'tag', []))
     self.assertRaises(ValueError,
                       lambda: setattr(scalar, 'style', 'block'))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'style', []))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'indent', '1'))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'width', '1'))
     self.assertRaises(TypeError, lambda: setattr(scalar, 'chomp', []))
     scalar.value = 'another value'
     scalar.tag = 'another_tag'
     scalar.style = 'literal'
     scalar.indent = 2
     scalar.width = 100
     scalar.chomp = '-'
     self.assertEqual(scalar.value, 'another value')
     self.assertEqual(scalar.tag, 'another_tag')
     self.assertEqual(scalar.style, 'literal')
     self.assertEqual(scalar.indent, 2)
     self.assertEqual(scalar.width, 100)
     self.assertEqual(scalar.chomp, '-')
     scalar.tag = None
     scalar.style = None
     self.assertEqual(scalar.tag, None)
     self.assertEqual(scalar.style, None)
Exemplo n.º 6
0
 def represent(self, object):
     """Represents the given Python object as a 'Node'."""
     if isinstance(object, dict):
         return _syck.Map(object.copy(), tag="tag:yaml.org,2002:map")
     elif isinstance(object, list):
         return _syck.Seq(object[:], tag="tag:yaml.org,2002:seq")
     else:
         return _syck.Scalar(str(object), tag="tag:yaml.org,2002:str")
Exemplo n.º 7
0
 def represent_float(self, object):
     value = repr(object)
     if value == self.inf_value:
         value = '.inf'
     elif value == self.neginf_value:
         value = '-.inf'
     elif value == self.nan_value:
         value = '.nan'
     return _syck.Scalar(value, tag="tag:yaml.org,2002:float")
Exemplo n.º 8
0
 def testGarbage(self):
     gc.collect()
     seq = _syck.Seq()
     seq.value = [seq]
     del seq
     self.assertEqual(gc.collect(), 2)
     scalar1 = _syck.Scalar()
     scalar2 = _syck.Scalar()
     seq = _syck.Seq()
     map1 = _syck.Map()
     map2 = _syck.Map()
     map1.value[scalar1] = seq
     map1.value[scalar2] = map2
     map2.value[scalar1] = map1
     map2.value[scalar2] = seq
     seq.value.append(map1)
     seq.value.append(map2)
     del scalar1, scalar2, seq, map1, map2
     self.assertEqual(gc.collect(), 8)
Exemplo n.º 9
0
 def testTags(self):
     document = _syck.Seq()
     for tag in TAGS:
         document.value.append(_syck.Scalar('foo', tag=tag))
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(document)
     parser = _syck.Parser(emitter.output.getvalue())
     document = parser.parse()
     self.assertEqual(len(document.value), len(TAGS))
     for index in range(len(document.value)):
         node = document.value[index]
         self.assertEqual(node.tag, TAGS[index])
Exemplo n.º 10
0
 def testSyckBugWithTrailingSpace(self):
     emitter = _syck.Emitter(StringIO.StringIO())
     emitter.emit(_syck.Scalar('foo ', tag="tag:yaml.org,2002:str"))
     parser = _syck.Parser(emitter.output.getvalue())
     self.assertEqual(parser.parse().value, 'foo ')
Exemplo n.º 11
0
 def testFlowCollectionKeyBug(self):
     tree = _syck.Map({
         _syck.Seq([_syck.Scalar('foo')], inline=True):
         _syck.Scalar('bar')
     })
     self._testTree(tree)
Exemplo n.º 12
0
 def testCollectionWithTagKeyBug(self):
     tree = _syck.Map({
         _syck.Seq([_syck.Scalar('foo')], tag='x-private:key'):
         _syck.Scalar('bar')
     })
     self._testTree(tree)
Exemplo n.º 13
0
 def represent_type(self, object):
     name = '%s.%s' % (object.__module__, object.__name__)
     return _syck.Scalar('', tag="tag:python.yaml.org,2002:name:" + name)
Exemplo n.º 14
0
 def represent_module(self, object):
     return _syck.Scalar('',
                         tag="tag:python.yaml.org,2002:module:" +
                         object.__name__)
Exemplo n.º 15
0
 def represent_datetime_datetime(self, object):
     return _syck.Scalar(object.isoformat(),
                         tag="tag:yaml.org,2002:timestamp")
Exemplo n.º 16
0
 def represent_long(self, object):
     return _syck.Scalar(repr(object), tag="tag:python.yaml.org,2002:long")
Exemplo n.º 17
0
 def represent_complex(self, object):
     if object.real != 0.0:
         value = '%s+%sj' % (repr(object.real), repr(object.imag))
     else:
         value = '%sj' % repr(object.imag)
     return _syck.Scalar(value, tag="tag:python.yaml.org,2002:complex")
Exemplo n.º 18
0
 def testScalarWithAliasKeyBug(self):
     node = _syck.Scalar('foo', tag='x-private:bug')
     tree = _syck.Map({node: node})
     self._testTree(tree)
Exemplo n.º 19
0
 def testEmptyCollectionKeyBug(self):
     tree1 = _syck.Map({_syck.Map(): _syck.Scalar('foo')})
     self._testTree(tree1)
     tree2 = _syck.Map({_syck.Seq(): _syck.Scalar('foo')})
     self._testTree(tree2)
Exemplo n.º 20
0
 def represent_NoneType(self, object):
     return _syck.Scalar('~', tag="tag:yaml.org,2002:null")
Exemplo n.º 21
0
 def represent_bool(self, object):
     return _syck.Scalar(repr(object), tag="tag:yaml.org,2002:bool")
Exemplo n.º 22
0
 def represent_int(self, object):
     return _syck.Scalar(repr(object), tag="tag:yaml.org,2002:int")
Exemplo n.º 23
0
import unittest

import _syck

import StringIO, gc

EXAMPLE = _syck.Seq([
    _syck.Scalar('Mark McGwire'),
    _syck.Scalar('Sammy Sosa'),
    _syck.Scalar('Ken Griffey'),
])

COMPLEX_EXAMPLE = _syck.Map({
    _syck.Scalar('scalars'):
    _syck.Seq([
        _syck.Scalar(),
        _syck.Scalar('on'),
        _syck.Scalar('12345', tag="tag:yaml.org,2002:int"),
        # Syck bug with trailing spaces.
        #            _syck.Scalar('long '*100, width=20, indent=5),
        _syck.Scalar('long long long long long\n' * 100, width=20, indent=5),
        _syck.Scalar('"1quote"', style='1quote'),
        _syck.Scalar("'2quote'", style='2quote'),
        _syck.Scalar("folding\n" * 10, style='fold'),
        _syck.Scalar("literal\n" * 10, style='literal'),
        _syck.Scalar("plain text", style='plain'),
    ]),
    _syck.Scalar('sequences'):
    _syck.Seq([
        _syck.Seq([
            _syck.Seq(