§
    ¢”jz  ã                   ó6   — d Z ddlZddlZ G d„ de¦  «        ZdS )z:Generic visitor pattern implementation for Python objects.é    Nc                   óÀ   — e Zd ZdZej        dd„ iiZed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zei fd„¦   «         Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚVisitorFNc                 ó   — dS )NF© ©ÚselfÚobjÚargsÚkwargss       úe/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/misc/visitor.pyú<lambda>zVisitor.<lambda>   s   € ÀU€ ó    c                 ó`   ‡ ‡— ‰ t           k    s
J d¦   «         ‚d‰ j        vri ‰ _        ˆ ˆfd„}|S )NzSubclass Visitor instead.Ú	_visitorsc           	      ó&  •— | j         dk    sJ ‚‰D ]\  }}t          |¦  «        t          k    r|f}t          |¦  «        t          k    r|f}|D ]A}‰j                             |i ¦  «        }|D ]!}||vsJ d|j         ›d|›d�¦   «         ‚| ||<   Œ"ŒBŒ€d S )NÚvisitzOops, class 'z' has visitor function for 'z' defined already.)Ú__name__ÚtypeÚtupleÚstrr   Ú
setdefault)ÚmethodÚclazzesÚattrsÚclazzr   ÚattrÚcelfÚclazzes_attrss         €€r   Úwrapperz"Visitor._register.<locals>.wrapper   sÜ   ø€ Ø”? gÒ-Ð-Ð-Ð-Ø"/ð 1ð 1‘�˜Ý˜‘=”=¥EÒ)Ð)Ø&˜j�GÝ˜‘;”;¥#Ò%Ð%Ø"˜H�EØ$ð 1ð 1�EØ $¤× 9Ò 9¸%ÀÑ DÔ D�IØ %ð 1ð 1˜Ø#¨9Ð4Ð4Ð4Ð4à$œ~˜~˜~¨t¨t¨tð5ñ  5Ô4Ð4ð +1˜	 $™˜ð1ð1ð �4r   )r   Ú__dict__r   )r   r   r   s   `` r   Ú	_registerzVisitor._register   sQ   øø€ à•wŠˆˆÐ ;‰ŒˆØ˜dœmÐ+Ð+ØˆDŒNð	ð 	ð 	ð 	ð 	ð 	ð" ˆr   c                 óh   — t          |¦  «        t          k    r|f}|                      |dfg¦  «        S )N©N)r   r   r!   )r   r   s     r   ÚregisterzVisitor.register*   s4   € å�‰=Œ=�EÒ!Ð!Ø�jˆGØ�~Š~ ¨Ð1Ð2Ñ3Ô3Ð3r   c                 óÔ   — g }t          |¦  «        t          k    r|f}t          |¦  «        t          k    r|f}|D ]}|                     ||f¦  «         Œ|                      |¦  «        S r#   )r   r   r   Úappendr!   )r   r   r   r   r   s        r   Úregister_attrzVisitor.register_attr0   ss   € àˆÝ�‰=Œ=�EÒ!Ð!Ø�jˆGÝ�‰;Œ;�#ÒÐØ�HˆEØð 	1ð 	1ˆEØ× Ò  %¨ Ñ0Ô0Ð0Ð0Ø�~Š~˜mÑ,Ô,Ð,r   c                 ó,   — |                       |¦  «        S r#   )r!   )r   r   s     r   Úregister_attrszVisitor.register_attrs;   s   € à�~Š~˜mÑ,Ô,Ð,r   c                 óð   — t          |¦  «        }|                      ¦   «         D ]Q} t          | dd ¦  «        }|€ n;|                     ¦   «         D ]%}| j                             |d ¦  «        }|�|c c S Œ&ŒR|S )Nr   )r   ÚmroÚgetattrr   Úget)r   ÚthingÚ_defaultÚtypr   ÚbaseÚms          r   Ú_visitorsForzVisitor._visitorsFor?   s‘   € å�5‰kŒkˆà—H’H‘J”Jð 	ð 	ˆDÝ  k°4Ñ8Ô8ˆIØÐ Ø�àŸš™	œ	ð ð �Ø”N×&Ò& t¨TÑ2Ô2�Ø�=Ø�H�H�H�H�Hð !ðð
 ˆr   c                 ó�  — t          t          |¦  «                             ¦   «         ¦  «        }|                      |¦  «        }|                     dd¦  «        }|D ]i}|d         dk    rŒt          ||¦  «        }|                     ||¦  «        }	|	� |	| |||g|¢R i |¤Ž}
|
dk    s	|
€| j        rŒV | j        |||g|¢R i |¤Ž ŒjdS )aý  Called to visit an object. This function loops over all non-private
        attributes of the objects and calls any user-registered (via
        ``@register_attr()`` or ``@register_attrs()``) ``visit()`` functions.

        The visitor will proceed to call ``self.visitAttr()``, unless there is a
        user-registered visit function and:

        * It returns ``False``; or
        * It returns ``None`` (or doesn't return anything) and
          ``visitor.defaultStop`` is ``True`` (non-default).
        Ú*Nr   Ú_F)ÚsortedÚvarsÚkeysr3   r-   r,   ÚdefaultStopÚ	visitAttr)r   r	   r
   r   r9   r   ÚdefaultVisitorÚkeyÚvalueÚvisitorFuncÚrets              r   ÚvisitObjectzVisitor.visitObjectO   sý   € õ •d˜3‘i”i—n’nÑ&Ô&Ñ'Ô'ˆØ×%Ò% cÑ*Ô*ˆ	Ø"Ÿš s¨DÑ1Ô1ˆØð 		=ð 		=ˆCØ�1Œv˜Š}ˆ}ØÝ˜C Ñ%Ô%ˆEØ#Ÿ-š-¨¨^Ñ<Ô<ˆKØÐ&Ø!�k $¨¨S°%ÐI¸$ÐIÐIÐIÀ&ÐIÐI�Ø˜%’<�< C K°DÔ4D KØØˆDŒN˜3  UÐ<¨TÐ<Ð<Ð<°VÐ<Ð<Ð<Ð<ð		=ð 		=r   c                 ó(   —  | j         |g|¢R i |¤Ž dS )z*Called to visit an attribute of an object.N©r   )r   r	   r   r>   r
   r   s         r   r;   zVisitor.visitAttrj   s*   € àˆŒ
�5Ð*˜4Ð*Ð*Ð* 6Ð*Ð*Ð*Ð*Ð*r   c                 ó2   — |D ]} | j         |g|¢R i |¤Ž ŒdS )z)Called to visit any value that is a list.NrC   ©r   r	   r
   r   r>   s        r   Ú	visitListzVisitor.visitListn   s@   € àð 	/ð 	/ˆEØˆDŒJ�uÐ.˜tÐ.Ð.Ð. vÐ.Ð.Ð.Ð.ð	/ð 	/r   c                 óV   — |                      ¦   «         D ]} | j        |g|¢R i |¤Ž ŒdS )z/Called to visit any value that is a dictionary.N)Úvaluesr   rE   s        r   Ú	visitDictzVisitor.visitDicts   sH   € à—Z’Z‘\”\ð 	/ð 	/ˆEØˆDŒJ�uÐ.˜tÐ.Ð.Ð. vÐ.Ð.Ð.Ð.ð	/ð 	/r   c                 ó   — dS )zMCalled to visit any value that is not an object, list,
        or dictionary.Nr   r   s       r   Ú	visitLeafzVisitor.visitLeafx   s	   € ð 	ˆr   c                 óÔ  — |                       |¦  «                             dd¦  «        }|� || |g|¢R i |¤Ž}|dk    s	|€	| j        rdS t          |d¦  «        r-t	          |t
          j        ¦  «        s | j        |g|¢R i |¤Ž dS t	          |t          ¦  «        r | j	        |g|¢R i |¤Ž dS t	          |t          ¦  «        r | j        |g|¢R i |¤Ž dS  | j        |g|¢R i |¤Ž dS )aG  This is the main entry to the visitor. The visitor will visit object
        ``obj``.

        The visitor will first determine if there is a registered (via
        ``@register()``) visit function for the type of object. If there is, it
        will be called, and ``(visitor, obj, *args, **kwargs)`` will be passed
        to the user visit function.

        The visitor will not recurse if there is a user-registered visit
        function and:

        * It returns ``False``; or
        * It returns ``None`` (or doesn't return anything) and
          ``visitor.defaultStop`` is ``True`` (non-default)

        Otherwise,  the visitor will proceed to dispatch to one of
        ``self.visitObject()``, ``self.visitList()``, ``self.visitDict()``, or
        ``self.visitLeaf()`` (any of which can be overriden in a subclass).
        NFr    )r3   r-   r:   ÚhasattrÚ
isinstanceÚenumÚEnumrA   ÚlistrF   ÚdictrI   rK   )r   r	   r
   r   r?   r@   s         r   r   zVisitor.visit}   sQ  € ð* ×'Ò'¨Ñ,Ô,×0Ò0°°tÑ<Ô<ˆØÐ"Ø�+˜d CÐ9¨$Ð9Ð9Ð9°&Ð9Ð9ˆCØ�eŠ|ˆ|  °Ô0@ Ø�Ý�3˜
Ñ#Ô#ð 	1­J°s½D¼IÑ,FÔ,Fð 	1ØˆDÔ˜SÐ2 4Ð2Ð2Ð2¨6Ð2Ð2Ð2Ð2Ð2Ý˜�TÑ"Ô"ð 	1ØˆDŒN˜3Ð0 Ð0Ð0Ð0¨Ð0Ð0Ð0Ð0Ð0Ý˜�TÑ"Ô"ð 	1ØˆDŒN˜3Ð0 Ð0Ð0Ð0¨Ð0Ð0Ð0Ð0Ð0àˆDŒN˜3Ð0 Ð0Ð0Ð0¨Ð0Ð0Ð0Ð0Ð0r   )r   Ú
__module__Ú__qualname__r:   ÚweakrefÚ	ProxyTyper   Úclassmethodr!   r$   r'   r)   r3   rA   r;   rF   rI   rK   r   r   r   r   r   r      s  € € € € € Ø€Kð 	Ô˜DÐ"JÐ"JÐKð	€Ið ðð ñ „[ðð0 ð4ð 4ñ „[ð4ð
 ð-ð -ñ „[ð-ð ð-ð -ñ „[ð-ð Ø+-ð ð ð ñ „[ðð=ð =ð =ð6+ð +ð +ð/ð /ð /ð
/ð /ð /ð
ð ð ð
!1ð !1ð !1ð !1ð !1r   r   )Ú__doc__rO   rU   Úobjectr   r   r   r   ú<module>rZ      s[   ðØ @Ð @à €€€Ø €€€ðW1ð W1ð W1ð W1ð W1ˆfñ W1ô W1ð W1ð W1ð W1r   