;ò
½0sDc           @   sµ   d  Z  d k l Z d k l Z l Z l Z d k l Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ	 d e f d	 „  ƒ  YZ
 d
 „  Z d d „ Z d „  Z d „  Z e e e e d „ Z d S(   s2    $Id: attrmap.py 2741 2005-12-07 21:52:33Z andy $ (   s   UserDict(   s
   isAnythings   _SequenceTypess   DerivedValue(   s	   rl_configs   CallableValuec           B   s    t  Z d  Z d „  Z d „  Z RS(   s(   a class to allow callable initial valuesc         O   s   | |  _  | |  _ | |  _ d  S(   N(   s   funcs   selfs   argss   kw(   s   selfs   funcs   argss   kw(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   __init__   s    		c         C   s   t  |  i |  i |  i ƒ Sd  S(   N(   s   applys   selfs   funcs   argss   kw(   s   self(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   __call__   s    (   s   __name__s
   __module__s   __doc__s   __init__s   __call__(    (    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   CallableValue	   s    	s   AttrMapValuec           B   s)   t  Z d  Z e e e d „ Z d „  Z RS(   s,   Simple multi-value holder for attribute mapsc         K   sS   | p t |  _  | |  _ | |  _ x* | i ƒ  D] \ } } t
 |  | | ƒ q/ Wd  S(   N(   s   validates
   isAnythings   selfs   descs   initials   _initials   kws   itemss   ks   vs   setattr(   s   selfs   validates   descs   initials   kws   vs   k(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   __init__   s    		 c         C   s[   | d j o, t |  i t ƒ o |  i ƒ  Sn |  i Sn | d j o d Sn t | ‚ d  S(   Ns   initials   hiddeni    (   s   names
   isinstances   selfs   _initials   CallableValues   AttributeError(   s   selfs   name(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   __getattr__   s     (   s   __name__s
   __module__s   __doc__s   Nones   __init__s   __getattr__(    (    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   AttrMapValue   s    s   AttrMapc           B   s5   t  Z e g  d „ Z d „  Z d „  Z g  d „ Z RS(   Nc         K   så   h  } | o§ t | t ƒ o | i  } q´ t | ƒ t f  ƒ t g  ƒ f j o | f } n xU | D]I } t | d ƒ o  | i t | i	 d h  ƒ ƒ qc t
 d t | ƒ ‚ qc Wn t i |  | ƒ |  i | ƒ |  i  i | ƒ d  S(   Ns   _attrMaps   datas   BASE=%s has wrong kind of value(   s   datas   BASEs
   isinstances   AttrMaps   types   Bs   hasattrs   updates   getattrs   _attrMaps
   ValueErrors   strs   UserDicts   __init__s   selfs   removes   UNWANTEDs   kw(   s   selfs   BASEs   UNWANTEDs   kws   Bs   data(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   __init__'   s    %   c         C   s1   t  | t ƒ o | i } n |  i i | ƒ d  S(   N(   s
   isinstances   kws   AttrMaps   datas   selfs   update(   s   selfs   kw(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   update8   s     c         C   s6   x/ | D]' } y |  | =Wq t j
 o q Xq Wd  S(   N(   s   unwanteds   ks   selfs   KeyError(   s   selfs   unwanteds   k(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   remove<   s     c         K   s*   t  d |  d | ƒ } | i | ƒ | Sd  S(   Ns   BASEs   UNWANTED(   s   AttrMaps   selfs   UNWANTEDs   cs   updates   kw(   s   selfs   UNWANTEDs   kws   c(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   cloneC   s    (   s   __name__s
   __module__s   Nones   __init__s   updates   removes   clone(    (    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   AttrMap&   s   		c         C   sÆ   t  i o« |  i } | o | d d j o† t | t ƒ o q± y? | | i	 } | | ƒ o  t
 d | | |  i i f ‚ n Wq± t j
 o  t
 d | |  i i f ‚ q± Xqµ n | |  i | <d S(   s    validate setattr(obj,name,value)i    s   _s.   Illegal assignment of '%s' to '%s' in class %ss"   Illegal attribute '%s' in class %sN(   s	   rl_configs   shapeCheckings   objs   _attrMaps   maps   names
   isinstances   values   DerivedValues   validates   AttributeErrors	   __class__s   __name__s   KeyErrors   __dict__(   s   objs   names   values   maps   validate(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   validateSetattrH   s     
	$&i    c         C   sx   |  i } t |  i d t ƒ } | o/ | | j o | i ƒ  | f Sqt | t f Sn! | | j o | i ƒ  |  _ n d S(   s   clone obj._attrMap if requireds   _attrMapN(	   s   objs   _attrMaps   As   getattrs	   __class__s   Nones   oAs   rets   clone(   s   objs   rets   As   oA(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   _privateAttrMap[   s     	c         C   sl   t  i | d ƒ } t | ƒ d j o t t f Sn6 x$ | d d !D] } t |  | ƒ }  qA W|  | d f Sd S(   sP   Locate the object src.P for P a string, return parent and name of attribute
    s   .i    iÿÿÿÿN(   s   strings   splits   Ps   lens   Nones   ps   getattrs   src(   s   srcs   Ps   p(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   _findObjectAndAttrh   s      c      
   C   sw   t  |  d ƒ ob |  i } d  k } | i | i | f | i h  d g  <d t |  d t	 ƒ t
 d „ <ƒ |  _ n d  S(   Ns   __attrproxy__s   __setattr__c         C   s   | |  | | | ƒ S(   N(   s   hooks   selfs   ks   vs   osa(   s   selfs   ks   vs   osas   hook(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   <lambda>y   s    (   s   hasattrs   objs	   __class__s   Cs   news   classobjs   __name__s	   __bases__s   getattrs   Nones   hook(   s   objs   Cs   new(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   hook__setattr__s   s
    		c         C   sÓ   t  |  d ƒ p
 t d ‚ t |  d ƒ \ } }
 t | ƒ t j o | f } n g  }	 g  } xq | D]i } t | ƒ t j o | d | d f \ } } n t |  | ƒ \ } } | o t | d t ƒ } qb qb Wd S(   s>   
    Add a proxy attribute 'name' to src with targets dst
    s   _attrMaps   src object has no _attrMapi   i    N(   s   hasattrs   srcs   AssertionErrors   _privateAttrMaps   As   oAs   types   dsts   _SequenceTypess   Ds   DVs   ds   es   _findObjectAndAttrs   objs   attrs   getattrs   Nones   dA(   s   srcs   names   validates   descs   initials   dsts   attrs   DVs   As   Ds   oAs   ds   es   dAs   obj(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   addProxyAttribute{   s       N(   s   __version__s   UserDicts   reportlab.lib.validatorss
   isAnythings   _SequenceTypess   DerivedValues	   reportlabs	   rl_configs   CallableValues   AttrMapValues   AttrMaps   validateSetattrs   _privateAttrMaps   _findObjectAndAttrs   hook__setattr__s   Nones   addProxyAttribute(   s   hook__setattr__s   AttrMaps   UserDicts   addProxyAttributes
   isAnythings   _privateAttrMaps   CallableValues   validateSetattrs	   rl_configs   _SequenceTypess   DerivedValues   _findObjectAndAttrs   __version__s   AttrMapValue(    (    s?   /home/packages/reportlab/reportlab_2_0/reportlab/lib/attrmap.pys   ?   s   "			