home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / util / observe / observableproperty.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  4.4 KB  |  111 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from pprint import pprint
  5. from collections import defaultdict
  6.  
  7. try:
  8.     sentinel
  9. except NameError:
  10.     
  11.     class Sentinel(object):
  12.         
  13.         def __repr__(self):
  14.             return '<Sentinel (%r backup) %#x>' % (__file__, id(self))
  15.  
  16.  
  17.     sentinel = Sentinel()
  18.  
  19.  
  20. class ObservableMeta(type):
  21.     
  22.     def __new__(mcl, name, bases, cdict):
  23.         obsprops = _[1]
  24.         for propname, prop in obsprops:
  25.             for hidden_attr in prop.observe:
  26.                 props[hidden_attr].append(propname)
  27.             
  28.         
  29.         return super(ObservableMeta, mcl).__new__(mcl, name, bases, cdict)
  30.  
  31.  
  32.  
  33. class ObservableProperty(object):
  34.     
  35.     def __init__(self, fget = None, fset = None, fdel = None, doc = None, observe = sentinel):
  36.         if not all((lambda .0: for c in .0:
  37. callable(c))(filter(None, [
  38.             fget,
  39.             fset,
  40.             fdel]))):
  41.             raise AssertionError('%s %s %s' % (repr(fget), repr(fset), repr(fdel)))
  42.         all((lambda .0: for c in .0:
  43. callable(c))(filter(None, [
  44.             fget,
  45.             fset,
  46.             fdel])))
  47.         self.fget = fget
  48.         self.fset = fset
  49.         self.fdel = fdel
  50.         self.__doc__ = doc
  51.         if observe is sentinel:
  52.             raise ValueError("'observe' keyword argument is required")
  53.         observe is sentinel
  54.         if isinstance(observe, basestring):
  55.             observe = tuple([
  56.                 observe])
  57.         
  58.         self.observe = observe
  59.  
  60.     
  61.     def __get__(self, obj, objtype):
  62.         return self.fget(obj)
  63.  
  64.     
  65.     def __set__(self, obj, value):
  66.         self.fset(obj, value)
  67.  
  68.     
  69.     def __delete__(self, obj):
  70.         self.fdel(obj)
  71.  
  72.     
  73.     def __repr__(self):
  74.         return '<ObservableProperty (%r)>' % self.observe
  75.  
  76.  
  77.  
  78. def main():
  79.     Observable = Observable
  80.     import util.observe
  81.     
  82.     class foo((Observable,)):
  83.         __metaclass__ = ObservableMeta
  84.         
  85.         def __init__(self):
  86.             Observable.__init__(self)
  87.             self._hidden = 'Hello world'
  88.  
  89.         
  90.         def _wikized(self):
  91.             return self._hidden.title().replace(' ', '')
  92.  
  93.         
  94.         def transmutate(self):
  95.             self.setnotify('_hidden', 'Observable properties sure are fun')
  96.  
  97.         wikiword = ObservableProperty(_wikized, observe = '_hidden')
  98.  
  99.     f = foo()
  100.     
  101.     def observer(instance, attr, old, new):
  102.         print '%s: %s -> %s' % (attr, old, new)
  103.  
  104.     f.add_observer(observer, 'wikiword')
  105.     f.transmutate()
  106.     f.setnotify('_hidden', 'another test')
  107.  
  108. if __name__ == '__main__':
  109.     main()
  110.  
  111.