Mercurial > genshi > mirror
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('{'),) |