Changeset 49


Ignore:
Timestamp:
02/19/06 03:10:24 (9 years ago)
Author:
xi
Message:

Fix segfault under Python2.3.

Support for complex numbers.

Add /usr/local to the search path.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/ext/_syckmodule.c

    r34 r49  
    21362136    PyObject *m; 
    21372137 
     2138    PyEval_InitThreads();   /* Fix segfault for Python 2.3 */ 
     2139 
    21382140    if (PyType_Ready(&PySyckNode_Type) < 0) 
    21392141        return; 
  • trunk/lib/syck/dumpers.py

    r36 r49  
    144144        return _syck.Scalar(value, tag="tag:yaml.org,2002:float") 
    145145 
     146    def represent_complex(self, object): 
     147        if object.real != 0.0: 
     148            value = '%s+%sj' % (repr(object.real), repr(object.imag)) 
     149        else: 
     150            value = '%sj' % repr(object.imag) 
     151        return _syck.Scalar(value, tag="tag:python.yaml.org,2002:complex") 
     152 
    146153    def represent_sets_Set(self, object): 
    147154        return _syck.Seq(list(object), tag="tag:yaml.org,2002:set") 
     
    165172    represent_function = represent_type 
    166173    represent_builtin_function_or_method = represent_type 
     174 
     175    def represent_module(self, object): 
     176        return _syck.Scalar('', tag="tag:python.yaml.org,2002:module:"+object.__name__) 
    167177 
    168178    def represent_instance(self, object): 
  • trunk/lib/syck/loaders.py

    r36 r49  
    1313 
    1414try: 
    15     import sets 
    16 except ImportError: 
    17     class _sets: 
    18         def Set(self, items): 
     15    Set = set 
     16except: 
     17    try: 
     18        from sets import Set 
     19    except ImportError: 
     20        def Set(items): 
    1921            set = {} 
    2022            for items in items: 
    2123                set[items] = None 
    2224            return set 
    23     sets = _sets() 
    2425 
    2526import _syck 
     
    288289 
    289290    def construct_set(self, node): 
    290         return sets.Set(node.value) 
     291        return Set(node.value) 
    291292 
    292293    def construct_python_none(self, node): 
     
    304305    def construct_python_float(self, node): 
    305306        return float(node.value) 
     307 
     308    def construct_python_complex(self, node): 
     309        return complex(node.value) 
    306310 
    307311    def construct_python_str(self, node): 
     
    359363        return self.find_python_object(node) 
    360364 
     365    def construct_python_module(self, node): 
     366        module_name = node.tag.split(':')[3] 
     367        __import__(module_name) 
     368        return sys.modules[module_name] 
     369 
    361370    def construct_python_object(self, node): 
    362371        cls = self.find_python_object(node) 
  • trunk/setup.cfg

    r36 r49  
    55 
    66# List of directories to search for 'syck.h' (separated by ':'). 
    7 #include_dirs=/usr/local/include:../../include 
     7include_dirs=/usr/local/include 
    88 
    99# List of directories to search for 'libsyck.a' (separated by ':'). 
    10 #library_dirs=/usr/local/lib:../../lib 
     10library_dirs=/usr/local/lib 
    1111 
  • trunk/tests/test_dumper.py

    r23 r49  
    1616 
    1717try: 
    18     import sets 
     18    Set = set 
    1919except: 
    20     class _sets: 
    21         def Set(self, items): 
     20    try: 
     21        from sets import Set 
     22    except ImportError: 
     23        def Set(items): 
    2224            set = {} 
    2325            for items in items: 
    2426                set[items] = None 
    2527            return set 
    26     sets = _sets() 
    27  
    2828 
    2929EXAMPLE = { 
     
    7373 
    7474COLLECTIONS = [ 
    75     sets.Set(range(10)), 
     75    Set(range(10)), 
    7676] 
    7777 
  • trunk/tests/test_loader.py

    r23 r49  
    1616 
    1717try: 
    18     import sets 
    19 except ImportError: 
    20     class _sets: 
    21         def Set(self, items): 
     18    Set = set 
     19except: 
     20    try: 
     21        from sets import Set 
     22    except ImportError: 
     23        def Set(items): 
    2224            set = {} 
    2325            for items in items: 
    2426                set[items] = None 
    2527            return set 
    26     sets = _sets() 
     28 
    2729 
    2830INF = 1e300000 
     
    128130""", { 
    129131#    'baseball players': sets.Set(['Mark McGwire', 'Sammy Sosa', 'Ken Griffey']), 
    130     'baseball teams': sets.Set(['Boston Red Sox', 'Detroit Tigers', 'New York Yankees']), 
     132    'baseball teams': Set(['Boston Red Sox', 'Detroit Tigers', 'New York Yankees']), 
    131133} 
    132134 
  • trunk/tests/test_pickle.py

    r36 r49  
    1212- !python/long 12345678901234567890 
    1313- !python/float 123.456 
    14 - !python/float 123.4560000001 
     14- !python/float 123456e-3 
     15- !python/complex 1.0 
     16- !python/complex 0.0+1.0j 
    1517- !python/str foo bar 
    16 - !python/unicode FOO ЀУ bar бар 
     18- !python/unicode FOO ЀУ bar ба 
    1719- !python/list [1, 2, 3] 
    1820- !python/tuple [foo, bar] 
     
    2527    12345678901234567890L, 
    2628    123.456, 
    27     123.4560000001, 
     29    123.456, 
     30    1+0j, 
     31    1j, 
    2832    'foo bar', 
    29     unicode('FOO ЀУ bar бар', 'utf-8'), 
     33    unicode('FOO ЀУ bar ба', 'utf-8'), 
    3034    [1, 2, 3], 
    3135    ('foo', 'bar'), 
     
    7579    object, 
    7680] 
     81 
     82import sys, unittest, encodings.cp1251, os.path 
     83 
     84MODULES = """ 
     85- !python/module:sys 
     86- !python/module:unittest 
     87- !python/module:encodings.cp1251 
     88- !python/module:os.path 
     89""", [sys, unittest, encodings.cp1251, os.path] 
    7790 
    7891class AnObject(object): 
     
    246259        self._testPickle(NAMES) 
    247260 
     261    def testModules(self): 
     262        self._testPickle(MODULES) 
     263 
    248264    def testObjects(self): 
    249265        self._testPickle(OBJECTS) 
Note: See TracChangeset for help on using the changeset viewer.