ó
    oñ:iz  ã                   ó.   • S r SSKrSSKr " S S\5      rg)z:Generic visitor pattern implementation for Python objects.é    Nc                   ó´   • \ rS rSrSr\R                  SS 00r\S 5       r	\S 5       r
\S 5       r\S 5       r\0 4S	 j5       rS
 rS rS rS rS rS rSrg)ÚVisitoré   FNc                 ó   • g)NF© ©ÚselfÚobjÚargsÚkwargss       ÚY/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/misc/visitor.pyÚ<lambda>ÚVisitor.<lambda>   s   € ÀUó    c                 óh   ^ ^• T [         :w  d   S5       eST R                  ;  a  0 T l        U U4S jnU$ )NzSubclass Visitor instead.Ú	_visitorsc           	      ó:  >• U R                   S:X  d   eT H‚  u  p[        U5      [        :w  a  U4n[        U5      [        :X  a  U4nU HK  nTR                  R                  U0 5      nU H&  nXT;  d   SUR                   < SU< S35       eXU'   M(     MM     M„     g )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   ÚwrapperÚ"Visitor._register.<locals>.wrapper   s    ø€ Ø—?‘? gÓ-Ð-Ð-Û"/‘�Ü˜“=¤EÓ)Ø&˜j�GÜ˜“;¤#Ó%Ø"˜H�EÛ$�EØ $§¡× 9Ñ 9¸%ÀÓ D�IÛ %˜Ø#Ó4ñ à$Ÿ~œ~«tð5óÐ4ð +1 $›ó !&ó %ñ #0ð r   )r   Ú__dict__r   )r   r    r!   s   `` r   Ú	_registerÚVisitor._register   s4   ù€ à”w‹Ð;Ð ;Ó;ˆØ˜dŸm™mÓ+ØˆDŒNö	ð" ˆr   c                 óV   • [        U5      [        :w  a  U4nU R                  US4/5      $ )N©N)r   r   r$   )r   r   s     r   ÚregisterÚVisitor.register*   s,   € ä�‹=œEÓ!Ø�jˆGØ�~‰~ ¨Ð1Ð2Ó3Ð3r   c                 ó¶   • / n[        U5      [        :w  a  U4n[        U5      [        :X  a  U4nU H  nUR                  XB45        M     U R	                  U5      $ r'   )r   r   r   Úappendr$   )r   r   r   r    r   s        r   Úregister_attrÚVisitor.register_attr0   sV   € àˆÜ�‹=œEÓ!Ø�jˆGÜ�‹;œ#ÓØ�HˆEÛˆEØ× Ñ  % Ö0ñ à�~‰~˜mÓ,Ð,r   c                 ó$   • U R                  U5      $ r'   )r$   )r   r    s     r   Úregister_attrsÚVisitor.register_attrs;   s   € à�~‰~˜mÓ,Ð,r   c                 óè   • [        U5      nU R                  5        HR  n [        U SS 5      nUc    U$ UR                  5        H(  nU R                  R	                  US 5      nUc  M$  Us  s  $    MT     U$ )Nr   )r   ÚmroÚgetattrr   Úget)r   ÚthingÚ_defaultÚtypr   ÚbaseÚms          r   Ú_visitorsForÚVisitor._visitorsFor?   sr   € ä�5‹kˆà—H‘H–JˆDÜ  k°4Ó8ˆIØÑ Øð ˆð Ÿ™ž	�Ø—N‘N×&Ñ& t¨TÓ2�Ø“=Ø”Hó "ñ ð ˆr   c                 ót  • [        [        U5      R                  5       5      nU R                  U5      nUR	                  SS5      nU Hm  nUS   S:X  a  M  [        X5      nUR	                  Xv5      n	U	b)  U	" XXx/UQ70 UD6n
U
S:X  d  U
c  U R                  (       a  MV  U R                  " XU/UQ70 UD6  Mo     g)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Úkeysr:   r4   r3   ÚdefaultStopÚ	visitAttr)r	   r
   r   r   rA   r   ÚdefaultVisitorÚkeyÚvalueÚvisitorFuncÚrets              r   ÚvisitObjectÚVisitor.visitObjectO   s³   € ô ”d˜3“i—n‘nÓ&Ó'ˆØ×%Ñ% cÓ*ˆ	Ø"Ÿ™ s¨DÓ1ˆÛˆCØ�1‰v˜‹}ÙÜ˜CÓ%ˆEØ#Ÿ-™-¨Ó<ˆKØÑ&Ù! $¨SÐI¸$ÒIÀ&ÑI�Ø˜%“< C¡K°D×4D×4DÙØ�NŠN˜3 UÐ<¨TÒ<°VÔ<ò r   c                 ó0   • U R                   " U/UQ70 UD6  g)z*Called to visit an attribute of an object.N©r   )r	   r
   r   rF   r   r   s         r   rC   ÚVisitor.visitAttrj   s   € à�
Š
�5Ð*˜4Ò* 6Ó*r   c                 óB   • U H  nU R                   " U/UQ70 UD6  M     g)z)Called to visit any value that is a list.NrL   ©r	   r
   r   r   rF   s        r   Ú	visitListÚVisitor.visitListn   s"   € ãˆEØ�JŠJ�uÐ.˜tÒ. vÔ.ò r   c                 ó^   • UR                  5        H  nU R                  " U/UQ70 UD6  M     g)z/Called to visit any value that is a dictionary.N)Úvaluesr   rO   s        r   Ú	visitDictÚVisitor.visitDicts   s(   € à—Z‘Z–\ˆEØ�JŠJ�uÐ.˜tÒ. vÔ.ò "r   c                 ó   • g)zECalled to visit any value that is not an object, list,
or dictionary.Nr   r   s       r   Ú	visitLeafÚVisitor.visitLeafx   s   € ð 	r   c                 ó  • U R                  U5      R                  SS5      nUb'  U" X/UQ70 UD6nUS:X  d  Uc  U R                  (       a  g[        US5      (       a6  [	        U[
        R                  5      (       d  U R                  " U/UQ70 UD6  g[	        U[        5      (       a  U R                  " U/UQ70 UD6  g[	        U[        5      (       a  U R                  " U/UQ70 UD6  gU R                  " U/UQ70 UD6  g)a×  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#   )r:   r4   rB   ÚhasattrÚ
isinstanceÚenumÚEnumrI   ÚlistrP   ÚdictrT   rW   )r	   r
   r   r   rG   rH   s         r   r   ÚVisitor.visit}   sâ   € ð* ×'Ñ'¨Ó,×0Ñ0°°tÓ<ˆØÑ"Ù˜dÐ9¨$Ò9°&Ñ9ˆCØ�e‹| ¡°×0@×0@ØÜ�3˜
×#Ñ#¬J°s¼D¿I¹I×,FÑ,FØ×Ò˜SÐ2 4Ò2¨6Ó2Ü˜œT×"Ñ"Ø�NŠN˜3Ð0 Ò0¨Ó0Ü˜œT×"Ñ"Ø�NŠN˜3Ð0 Ò0¨Ó0à�NŠN˜3Ð0 Ò0¨Ó0r   r   )r   Ú
__module__Ú__qualname__Ú__firstlineno__rB   ÚweakrefÚ	ProxyTyper   Úclassmethodr$   r(   r,   r/   r:   rI   rC   rP   rT   rW   r   Ú__static_attributes__r   r   r   r   r      s¦   † Ø€Kð 	×Ñ˜DÑ"JÐKð	€Ið ñó ðð0 ñ4ó ð4ð
 ñ-ó ð-ð ñ-ó ð-ð Ø+-ó ó ðò=ò6+ò/ò
/ò
õ
!1r   r   )Ú__doc__r\   rd   Úobjectr   r   r   r   Ú<module>rj      s   ðÙ @ã Û ôW1ˆfõ W1r   