Changeset 1698

Show
Ignore:
Timestamp:
09/20/08 21:29:33 (2 months ago)
Author:
nick
Message:

Merging source:pyamf/branches/gerard-celementtree-364

Fixes: #364
Author: gerard
Reviewer: nick

Location:
pyamf/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • pyamf/trunk

    • Property svn:mergeinfo
      •  

        old new  
        44/pyamf/branches/client-http-headers-api-337:1604-1609 
        55/pyamf/branches/error-stacktrace-331:1624-1644 
         6/pyamf/branches/gerard-celementtree-364:1687-1697 
        67/pyamf/branches/gerard-cpyamf-225:1611-1661 
        78/pyamf/branches/nan-failures-345:1624-1640 
         
        1112/pyamf/branches/tempfile-338:1588-1596 
        1213/pyamf/branches/win-sol-test-failures-344:1624-1645 
        13 /pyamf/trunk:1525-1526,1541,1583-1587,1594,1624-1641 
         14/pyamf/trunk:1525-1526,1541,1583-1587,1594,1624-1641,1673-1686 
  • pyamf/trunk/pyamf/amf0.py

    r1669 r1698  
    457457        ((types.ListType, types.TupleType,), "writeArray"), 
    458458        ((datetime.date, datetime.datetime), "writeDate"), 
    459         ((util.ET._ElementInterface,), "writeXML"), 
     459        ((util.is_ET_element,), "writeXML"), 
    460460        ((lambda x: x is pyamf.Undefined,), "writeUndefined"), 
    461461        ((types.InstanceType,types.ObjectType,), "writeObject"), 
  • pyamf/trunk/pyamf/amf3.py

    r1669 r1698  
    12231223        ((ByteArray,), "writeByteArray"), 
    12241224        ((datetime.date, datetime.datetime), "writeDate"), 
    1225         ((util.ET._ElementInterface,), "writeXML"), 
     1225        ((util.is_ET_element,), "writeXML"), 
    12261226        ((lambda x: x is pyamf.Undefined,), "writeUndefined"), 
    12271227        ((types.InstanceType, types.ObjectType,), "writeInstance"), 
  • pyamf/trunk/pyamf/util/__init__.py

    r1662 r1698  
    2828    except ImportError: 
    2929        import elementtree.ElementTree as ET 
     30 
     31try: 
     32    import xml.etree.cElementTree as cET 
     33except ImportError: 
     34    try: 
     35        import cElementTree as cET 
     36    except ImportError: 
     37        cET = None 
     38 
     39cET_Element_Type = None 
     40 
     41if cET: 
     42    cET_Element_Type = type(cET.Element('<e/>')) 
    3043 
    3144class StringIOProxy(object): 
     
    640653        return iter(self.list) 
    641654 
     655def is_ET_element(obj): 
     656    """ 
     657    Determines if the supplied C{obj} param is a valid ElementTree element. 
     658    """ 
     659    # This works well for regular ElementTree, but NOT for cElementTree 
     660    if isinstance(obj, ET._ElementInterface): 
     661        return True 
     662 
     663    if cET_Element_Type and isinstance(obj, cET_Element_Type): 
     664        return True 
     665 
     666    return False 
     667 
    642668if sys.version_info < (2, 5) or sys.platform.startswith('win'): 
    643669    # workaround for python2.4's shortcomings with exceptional floats 
     
    678704try: 
    679705    from cpyamf.util import BufferedByteStream 
     706 
    680707    class StringIOProxy(BufferedByteStream): 
     708        _wrapped_class = None 
     709 
    681710        def __init__(self, *args, **kwargs): 
    682711            BufferedByteStream.__init__(self, *args, **kwargs) 
    683712            self._buffer = self 
    684         _wrapped_class = None 
    685         pass 
     713 
    686714    class DataTypeMixIn(BufferedByteStream): 
    687715        ENDIAN_NETWORK = "!"