§
    £”j  ã                   ó¨   — d Z dZddlmZmZ ddlmZ ddlmZ  G d„ d¦  «        Z	 G d„ d	¦  «        Z
 G d
„ de¦  «        Zd„ Zdd„Zd„ Zd„ Zdd„ZdS )z3.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                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚCallableValuez(a class to allow callable initial valuesc                 ó0   — || _         || _        || _        d S ©N©ÚfuncÚargsÚkw)Úselfr   r   r   s       úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/lib/attrmap.pyÚ__init__zCallableValue.__init__%   s   € àˆŒ	ØˆŒ	ØˆŒˆˆó    c                 ó0   —  | j         | j        i | j        ¤ŽS r
   r   ©r   s    r   Ú__call__zCallableValue.__call__+   s   € ØˆtŒy˜$œ)Ð. d¤gÐ.Ð.Ð.r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   #   s8   € € € € € Ø2Ð2ðð ð ð/ð /ð /ð /ð /r   r   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )ÚAttrMapValuez,Simple multi-value holder for attribute mapsNr   c                 ó¢   — |pt           | _        || _        || _        || _        |                     ¦   «         D ]\  }}t          | ||¦  «         Œd S r
   )r   ÚvalidateÚdescÚ_initialÚ_advancedUsageÚitemsÚsetattr)r   r   r   ÚinitialÚadvancedUsager   ÚkÚvs           r   r   zAttrMapValue.__init__0   s^   € Ø Ð.¥JˆŒØˆŒ	ØˆŒØ+ˆÔØ—8’8‘:”:ð 	ð 	‰CˆAˆaÝ�D˜˜1ÑÔÐÐð	ð 	r   c                 ó¦   — |dk    r5t          | j        t          ¦  «        r|                      ¦   «         S | j        S |dk    rdS t          |¦  «        ‚)Nr$   Úhiddenr   )Ú
isinstancer    r   ÚAttributeError)r   Únames     r   Ú__getattr__zAttrMapValue.__getattr__8   sN   € à�Š?ˆ?Ý˜$œ-­Ñ6Ô6ÐN¸t¿}º}¹¼Ð8NØ”=Ð Ø�8Š^ˆ^Ø�1Ý˜TÑ"Ô"Ð"r   c                 ót   — dd                      d„ | j                             ¦   «         D ¦   «         ¦  «        z  S )NzAttrMapValue(%s)z, c                 ó   — g | ]}d |z  ‘ŒS )z%s=%rr   )Ú.0Úis     r   ú
<listcomp>z)AttrMapValue.__repr__.<locals>.<listcomp>B   s   € Ð.ZÐ.ZÐ.Z¸q¨w¸©{Ð.ZÐ.ZÐ.Zr   )ÚjoinÚ__dict__r"   r   s    r   Ú__repr__zAttrMapValue.__repr__A   s6   € Ø! D§I¢IÐ.ZÐ.ZÀDÄM×DWÒDWÑDYÔDYÐ.ZÑ.ZÔ.ZÑ$[Ô$[Ñ[Ð[r   )NNNr   )r   r   r   r   r   r-   r5   r   r   r   r   r   .   sQ   € € € € € Ø6Ð6ðð ð ð ð#ð #ð #ð\ð \ð \ð \ð \r   r   c                   ó*   — e Zd Zdg fd„Zd„ Zg fd„ZdS )ÚAttrMapNc                 óŒ  — i }|rzt          |t          ¦  «        r|}nbt          |¦  «        s|f}|D ]M}t          |d| ¦  «        }|| ur|r|                     |¦  «         Œ/t          dt          |¦  «        z  ¦  «        ‚t                               | |¦  «         |  	                    |¦  «         |                      |¦  «         d S )NÚ_attrMapzBASE=%s has wrong kind of value)
r*   r7   r   ÚgetattrÚupdateÚ
ValueErrorÚasciiÚdictr   Úremove)r   ÚBASEÚUNWANTEDr   ÚdataÚBÚams          r   r   zAttrMap.__init__E   sÐ   € ØˆØð 
	WÝ˜$�wÑ'Ô'ð 	WØ��å˜T‘{”{Ð2¨D¨7 DØð Wð W�AÝ   :¨dÑ3Ô3�BØ �~�~ØÐ.˜tŸ{š{¨2™œ˜øå(Ð)JÍUÐSTÉXÌXÑ)UÑVÔVÐVå�Š�d˜4Ñ Ô Ð Ø�Š�HÑÔÐØ�Š�B‰Œˆˆˆr   c                 ó8   — |D ]}	 | |= Œ# t           $ r Y Œw xY wd S r
   )ÚKeyError)r   Úunwantedr&   s      r   r?   zAttrMap.removeW   sI   € Øð 	ð 	ˆAðØ˜�G�GøÝð ð ð Ø�ðøøøð	ð 	s   †
Š
–c                 óR   — t          | |¬¦  «        }|                     |¦  «         |S )N)r@   rA   )r7   r;   )r   rA   r   Úcs       r   ÚclonezAttrMap.clone^   s(   € Ý˜ xÐ0Ñ0Ô0ˆØ	�Š�‰ŒˆØˆr   )r   r   r   r   r?   rJ   r   r   r   r7   r7   D   sU   € € € € € Ø¨ð ð ð ð ð$ð ð ð ð ð ð ð ð ð r   r7   c                 óð  — t           j        �r8| j        }|�r.|d         dk    �r!t          |t          ¦  «        r�n
||v r|||         j        }	  ||¦  «        }|s"t          d|›d|› d| j        j        › �¦  «        ‚nÈ# t          $ r1}|                     | j        j        › d|› d|› d|›d	�¦  «        |‚d
}~ww xY wt          | j        |d
¦  «        }t          |t          ¦  «        r@t          |dd
¦  «        }|r || |¦  «         d
S t          | j        j        › d|› d�¦  «        ‚t          d|›d| j        j        ›�¦  «        ‚t          | j        |d
¦  «        }t          |t          ¦  «        r@t          |dd
¦  «        }|r || |¦  «         d
S t          | j        j        › d|› d�¦  «        ‚|dk    r5| j                             ¦   «          | j                             |¦  «         d
S || j        |<   d
S )z validate setattr(obj,name,value)r   Ú_zIllegal assignment of z to z
 in class ú.ú ú(ú)NÚfsetz has no setterzIllegal attribute 'z' in class r4   )r   ÚshapeCheckingr9   r*   r   r   r+   Ú	__class__r   Ú	Exceptionr:   Úpropertyr4   Úclearr;   )	Úobjr,   ÚvalueÚaMapr   ÚrÚeÚproprQ   s	            r   ÚvalidateSetattrr]   c   sn  € åÔñ pØŒ|ˆØñ 	p�D˜”G˜c’M‘Mõ ˜%¥Ñ.Ô.ð páØ˜��Ø œ:Ô.�ð}Ø ˜ ™œ�Að ð }Ý,Ð-{ÀeÐ-{Ð-{ÐSWÐ-{Ð-{ÐcfÔcpÔcyÐ-{Ð-{Ñ|Ô|Ð|ð}øõ !ð gð gð gØŸ+š+¨¬Ô)?Ð&^Ð&^À$Ð&^Ð&^ÈÐ&^Ð&^ÐTYÐ&^Ð&^Ð&^Ñ_Ô_ÐefÐføøøøðgøøøõ ˜sœ}¨T°$Ñ7Ô7�Ý˜d¥8Ñ,Ô,ð pÝ" 4¨¨tÑ4Ô4�DØð _Ø˜˜S ™œ˜Ø˜å,°´Ô0FÐ-]Ð-]ÈÐ-]Ð-]Ð-]Ñ^Ô^Ð^å(˜.ÐQUÐQUÐQUÐWZÔWdÔWmÐWmÐ)nÑoÔoÐoÝ�3”=  dÑ+Ô+€DÝ�$•xÑ Ô ð 
#Ý�t˜F 4Ñ(Ô(ˆØð 	SØˆD��U‰OŒOˆOˆOˆOå  C¤MÔ$:Ð!QÐ!Q¸TÐ!QÐ!QÐ!QÑRÔRÐRØ	ˆzÒ	Ð	ØŒ×ÒÑÔÐØŒ×Ò˜EÑ"Ô"Ð"Ð"Ð"à"ˆŒ�TÑÐÐs   ÁA> Á>
B9Â,B4Â4B9c                 ó¾   — | j         }t          | j        dd¦  «        }|r||u r|                     ¦   «         |fS |dfS ||u r|                     ¦   «         | _         dS dS )zclone obj._attrMap if requiredr9   N)r9   r:   rS   rJ   )rW   ÚretÚAÚoAs       r   Ú_privateAttrMaprb   Ž   sk   € àŒ€AÝ	�”˜z¨$Ñ	/Ô	/€BØ
ð %Ø�ˆ7ˆ7Ø—7’7‘9”9˜b�=Ð à�d�7ˆNà�ˆ7ˆ7ØŸ7š7™9œ9ˆCŒLˆLˆLð ˆ7r   c                 ó¤   — |                      d¦  «        }t          |¦  «        dk    rdS |dd…         D ]}t          | |¦  «        } Œ| |d         fS )zPLocate the object src.P for P a string, return parent and name of attribute
    rM   r   )NNéÿÿÿÿ)ÚsplitÚlenr:   )ÚsrcÚPÚps      r   Ú_findObjectAndAttrrj   ›   s[   € ð 	
�Š�‰Œ€AÝ
ˆ1�v„v�‚{€{Øˆzà�1�R�4”ð 	"ð 	"ˆAÝ˜#˜q‘/”/ˆCˆCØ�A�b”EˆzÐr   c           
      óÊ   — t          | d¦  «        sR| j        }dd l}|                     |j        |f|j        z   g t          | dd ¦  «        t          fd„dœ¦  «        | _        d S d S )NÚ__attrproxy__r   Ú__setattr__c                 ó   —  || |||¦  «        S r
   r   )r   r&   r'   ÚosaÚhooks        r   ú<lambda>z!hook__setattr__.<locals>.<lambda>¬   s   € ÐY]ÐY]Ð^bÐcdÐefÐgjÑYkÔYk€ r   )rl   rm   )ÚhasattrrS   ÚnewÚclassobjr   Ú	__bases__r:   rp   )rW   ÚCrs   s      r   Úhook__setattr__rw   ¦   s…   € Ý�3�Ñ'Ô'ð nØŒMˆØˆ
ˆ
ˆ
Ø—l’l 1¤:¨q¨d°1´;Ñ.>ØÝ.5°c¸-ÈÑ.MÔ.MÕSWÐkÐkÐkðmð mñnô nˆŒˆˆðnð nr   Nc                 ó$  — t          | d¦  «        s
J d¦   «         ‚t          | d¦  «        \  }}t          |¦  «        s|f}g }g }	|D ]I}
t          |
¦  «        r|
d         |
dd…         }}
t          | |
¦  «        \  }}|rt	          |dd¦  «        }ŒJdS )z>
    Add a proxy attribute 'name' to src with targets dst
    r9   zsrc object has no _attrMapé   r   N)rr   rb   r   rj   r:   )rg   r,   r   r   r$   Údstr`   ra   ÚDÚDVÚdr[   rW   ÚattrÚdAs                  r   ÚaddProxyAttributer€   ®   s»   € õ
 �3�zÑ"Ô"Ð@Ð@Ð$@Ñ@Ô@Ð@Ý˜C Ñ"Ô"�E€A€rÝ�‰:Œ:Ð!˜S˜T�sØ
€AØ	€BØð .ð .ˆÝ�‰8Œ8ð 	Ø�Q”4˜˜1˜2˜2œˆqˆAÝ& s¨1Ñ-Ô-‰	ˆˆTØð 	.Ý˜˜Z¨Ñ-Ô-ˆBøð.ð .r   )r   )NNNN)Ú__version__r   Úreportlab.lib.validatorsr   r   Úreportlab.lib.utilsr   Ú	reportlabr   r   r   r>   r7   r]   rb   rj   rw   r€   r   r   r   ú<module>r…      s6  ðð €ð	€ð4 >Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð ð	/ð 	/ð 	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð\ð \ð \ð \ð \ñ \ô \ð \ð,ð ð ð ð ˆdñ ô ð ð>)#ð )#ð )#ðV%ð %ð %ð %ð	ð 	ð 	ðnð nð nð.ð .ð .ð .ð .ð .r   