comparison genshi/core.py @ 279:a99666402b12 trunk

Some adjustments to make core data structures picklable (requires protocol 2).
author cmlenz
date Mon, 02 Oct 2006 19:08:36 +0000
parents d6c58473a9d0
children f999da894391
comparison
equal deleted inserted replaced
278:d6c58473a9d0 279:a99666402b12
20 __all__ = ['Stream', 'Markup', 'escape', 'unescape', 'Namespace', 'QName'] 20 __all__ = ['Stream', 'Markup', 'escape', 'unescape', 'Namespace', 'QName']
21 21
22 22
23 class StreamEventKind(str): 23 class StreamEventKind(str):
24 """A kind of event on an XML stream.""" 24 """A kind of event on an XML stream."""
25 __slots__ = []
26 _instances = {}
27
28 def __new__(cls, val):
29 return cls._instances.setdefault(val, str.__new__(cls, val))
25 30
26 31
27 class Stream(object): 32 class Stream(object):
28 """Represents a stream of markup events. 33 """Represents a stream of markup events.
29 34
501 def __new__(cls, uri): 506 def __new__(cls, uri):
502 if type(uri) is cls: 507 if type(uri) is cls:
503 return uri 508 return uri
504 return object.__new__(cls, uri) 509 return object.__new__(cls, uri)
505 510
511 def __getnewargs__(self):
512 return (self.uri,)
513
514 def __getstate__(self):
515 return self.uri
516
517 def __setstate__(self, uri):
518 self.uri = uri
519
506 def __init__(self, uri): 520 def __init__(self, uri):
507 self.uri = unicode(uri) 521 self.uri = unicode(uri)
508 522
509 def __contains__(self, qname): 523 def __contains__(self, qname):
510 return qname.namespace == self.uri 524 return qname.namespace == self.uri
570 self.namespace, self.localname = map(unicode, parts) 584 self.namespace, self.localname = map(unicode, parts)
571 else: 585 else:
572 self = unicode.__new__(cls, qname) 586 self = unicode.__new__(cls, qname)
573 self.namespace, self.localname = None, unicode(qname) 587 self.namespace, self.localname = None, unicode(qname)
574 return self 588 return self
589
590 def __getnewargs__(self):
591 return (self.lstrip('{'),)
Copyright (C) 2012-2017 Edgewall Software