Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ›tîaŠã@sŒdZdZddlmZmZddlmZddlmZGdd„dƒZ Gdd „d ƒZ Gd d „d e ƒZ d d „Z ddd„Zdd„Zdd„Zddd„ZdS)z3.3.0a–Framework for objects whose assignments are checked. Used by graphics. We developed reportlab/graphics prior to Python 2 and metaclasses. For the graphics, we wanted to be able to declare the attributes of a class, check them on assignment, and convert from string arguments. Examples of attrmap-based objects can be found in reportlab/graphics/shapes. It lets us defined structures like the one below, which are seen more modern form in Django models and other frameworks. We'll probably replace this one day soon, hopefully with no impact on client code. class Rect(SolidShape): """Rectangle, possibly with rounded corners.""" _attrMap = AttrMap(BASE=SolidShape, x = AttrMapValue(isNumber), y = AttrMapValue(isNumber), width = AttrMapValue(isNumber), height = AttrMapValue(isNumber), rx = AttrMapValue(isNumber), ry = AttrMapValue(isNumber), ) é)Ú isAnythingÚ DerivedValue)ÚisSeq)Ú rl_configc@s eZdZdZdd„Zdd„ZdS)Ú CallableValuez(a class to allow callable initial valuescOs||_||_||_dS)N)ÚfuncÚargsÚkw)Úselfrrr ©r ú6/tmp/tmp4i9tl1d3/lib64/python/reportlab/lib/attrmap.pyÚ__init__%szCallableValue.__init__cCs|j|j|jŽS)N)rrr )r r r r Ú__call__+szCallableValue.__call__N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r rr r r r r#src@s*eZdZdZd dd„Zdd„Zdd „ZdS) Ú AttrMapValuez,Simple multi-value holder for attribute mapsNrcKsB|pt|_||_||_||_x |jƒD]\}}t|||ƒq&WdS)N)rÚvalidateÚdescÚ_initialZ_advancedUsageÚitemsÚsetattr)r rrÚinitialZ advancedUsager ÚkÚvr r r r 0s  zAttrMapValue.__init__cCs:|dkr"t|jtƒr|jƒS|jS|dkr.dSt|ƒ‚dS)NrZhiddenr)Ú isinstancerrÚAttributeError)r Únamer r r Ú __getattr__8s zAttrMapValue.__getattr__cCsddjdd„|jjƒDƒƒS)NzAttrMapValue(%s)z, cSsg|] }d|‘qS)z%s=%rr )Ú.0Úir r r ú Bsz)AttrMapValue.__repr__..)ÚjoinÚ__dict__r)r r r r Ú__repr__AszAttrMapValue.__repr__)NNNr)rrrrr rr%r r r r r.s  rc@s.eZdZdgfdd„Zdd„Zgfdd„ZdS)ÚAttrMapNcKsŒi}|rht|tƒr|}nPt|ƒs&|f}x@|D]8}t|d|ƒ}||k rT|rd|j|ƒq,tdt|ƒƒ‚q,Wtj||ƒ|j |ƒ|j|ƒdS)NÚ_attrMapzBASE=%s has wrong kind of value) rr&rÚgetattrÚupdateÚ ValueErrorÚasciiÚdictr Úremove)r ÚBASEÚUNWANTEDr ÚdataÚBÚamr r r r Es      zAttrMap.__init__c Cs2x,|D]$}y ||=Wqtk r(YqXqWdS)N)ÚKeyError)r Zunwantedrr r r r-Ws   zAttrMap.removecKst||d�}|j|ƒ|S)N)r.r/)r&r))r r/r Úcr r r Úclone^s  z AttrMap.clone)rrrr r-r5r r r r r&Dsr&cCsìtjr~|j}|r~|ddkr~t|tƒr(nVy,||j}||ƒsRtd|||jjfƒ‚Wn(t k r|td||jjfƒ‚YnXt |j|dƒ}t|t ƒr¾y|j ||ƒWqètk rºYqèXn*|dkrÞ|j jƒ|j j|ƒn ||j |<dS)z validate setattr(obj,name,value)rÚ_z.Illegal assignment of '%s' to '%s' in class %sz"Illegal attribute '%s' in class %sNr$)rZ shapeCheckingr'rrrrÚ __class__rr3r(ÚpropertyÚ__set__r$Úclearr))ÚobjrÚvalueÚmaprÚpropr r r ÚvalidateSetattrcs*    r?cCsL|j}t|jddƒ}|r6||kr,|jƒ|fS|dfSn||krH|jƒ|_dS)zclone obj._attrMap if requiredr'N)r'r(r7r5)r;ÚretÚAÚoAr r r Ú_privateAttrMap€s  rCcCsJ|jdƒ}t|ƒdkrdSx|dd…D]}t||ƒ}q(W||dfSdS)zPLocate the object src.P for P a string, return parent and name of attribute Ú.rNé)NNéÿÿÿÿrF)ÚsplitÚlenr()ÚsrcÚPÚpr r r Ú_findObjectAndAttr�s   rLcCsNt|dƒsJ|j}ddl}|j|j|f|jgt|ddƒtfdd„dœƒ|_dS)NÚ __attrproxy__rÚ __setattr__cSs|||||ƒS)Nr )r rrZosaÚhookr r r Úžsz!hook__setattr__..)rMrN)Úhasattrr7ÚnewZclassobjrÚ __bases__r(rO)r;ÚCrRr r r Úhook__setattr__˜s  rUNcCs„t|dƒstdƒ‚t|dƒ\}}t|ƒs.|f}g}g} xH|D]@} t| ƒr^| d| dd…} } t|| ƒ\} } | r Add a proxy attribute 'name' to src with targets dst r'zsrc object has no _attrMaprErN)rQÚAssertionErrorrCrrLr()rIrrrrÚdstrArBÚDZDVÚdÚer;ÚattrZdAr r r ÚaddProxyAttribute s r\)r)NNNN)Ú __version__rZreportlab.lib.validatorsrrZreportlab.lib.utilsrÚ reportlabrrrr,r&r?rCrLrUr\r r r r Ús