+
    iz                     0    R t ^ RIt^ RIt ! R R]4      tR# )z:Generic visitor pattern implementation for Python objects.Nc                      a  ] tR t^t o Rt]P                  RR //t]R 4       t	]R 4       t
]R 4       t]R 4       t]/ 3R l4       tR	 tR
 tR tR tR tR tRtV tR# )VisitorFNc                    R # )F selfobjargskwargss   &&*,v/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/misc/visitor.py<lambda>Visitor.<lambda>   s    U    c                l   a a S \         8w  g   Q R 4       hRS P                  9  d   / S n        V V3R lpV# )zSubclass Visitor instead.	_visitorsc           	      D  < V P                   R 8X  g   Q hS F  w  r\        V4      \        8w  d   V3p\        V4      \        8X  d   V3pV FL  pSP                  P                  V/ 4      pV F'  pWT9  g   Q RVP                   : RV: R24       hWV&   K)  	  KN  	  K  	  R# )visitzOops, class 'z' has visitor function for 'z' defined already.N)__name__typetuplestrr   
setdefault)methodclazzesattrsclazzr   attrcelfclazzes_attrss   &     r   wrapper"Visitor._register.<locals>.wrapper   s    ??g---"/=E)&jG;#%"HE$E $ 9 9% DI %#4 $~~t54 +1$ !& % #0 r   )r   __dict__r   )r   r   r   s   ff r   	_registerVisitor._register   s4    w; ;;dmm+DN	" r   c                X    \        V4      \        8w  d   V3pV P                  VR3.4      # )NN)r   r   r"   )r   r   s   &&r   registerVisitor.register*   s,    =E!jG~~1233r   c                    . p\        V4      \        8w  d   V3p\        V4      \        8X  d   V3pV F  pVP                  WB34       K  	  V P	                  V4      # r%   )r   r   r   appendr"   )r   r   r   r   r   s   &&&  r   register_attrVisitor.register_attr0   sV    =E!jG;#HEE  %0 ~~m,,r   c                $    V P                  V4      # r%   )r"   )r   r   s   &&r   register_attrsVisitor.register_attrs;   s    ~~m,,r   c                    \        V4      pV P                  4        FT  p \        V R R4      pVf    V# VP                  4        F)  pV P                  P	                  VR4      pVf   K%  Vu u # 	  KV  	  V# )r   N)r   mrogetattrr   get)r   thing_defaulttypr   basems   &&&    r   _visitorsForVisitor._visitorsFor?   sr    5kHHJDk48I   	NN&&tT2=H "  r   c                   \        \        V4      P                  4       4      pV P                  V4      pVP	                  RR4      pV Fv  pV^ ,          R8X  d   K  \        W4      pVP	                  Wv4      p	V	e-   V	! WWx.VO5/ VB p
V
R8X  g   V
f   V P                  '       d   K_  V P                  ! WV.VO5/ VB  Kx  	  R# )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).
*N_F)sortedvarskeysr8   r2   r1   defaultStop	visitAttr)r   r   r	   r
   r?   r   defaultVisitorkeyvaluevisitorFuncrets   &&*,       r   visitObjectVisitor.visitObjectO   s     d3inn&'%%c*	"sD1C1v}C%E#--<K&!$SI$I&I%<CKD4D4D4DNN3U<T<V< r   c                2    V P                   ! V.VO5/ VB  R# )z*Called to visit an attribute of an object.Nr   )r   r   r   rD   r	   r
   s   &&&&*,r   rA   Visitor.visitAttrj   s    

5*4*6*r   c                D    V F  pV P                   ! V.VO5/ VB  K  	  R# )z)Called to visit any value that is a list.NrJ   r   r   r	   r
   rD   s   &&*, r   	visitListVisitor.visitListn   s"    EJJu.t.v. r   c                `    VP                  4        F  pV P                  ! V.VO5/ VB  K  	  R# )z/Called to visit any value that is a dictionary.N)valuesr   rM   s   &&*, r   	visitDictVisitor.visitDicts   s(    ZZ\EJJu.t.v. "r   c                    R# )zECalled to visit any value that is not an object, list,
or dictionary.Nr   r   s   &&*,r   	visitLeafVisitor.visitLeafx   s     	r   c                   V P                  V4      P                  RR4      pVe,   V! W.VO5/ VB pVR8X  g   Vf   V P                  '       d   R# \        VR4      '       d9   \	        V\
        P                  4      '       g   V P                  ! V.VO5/ VB  R# \	        V\        4      '       d   V P                  ! V.VO5/ VB  R# \	        V\        4      '       d   V P                  ! V.VO5/ VB  R# V P                  ! V.VO5/ VB  R# )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!   )r8   r2   r@   hasattr
isinstanceenumEnumrG   listrN   dictrR   rU   )r   r   r	   r
   rE   rF   s   &&*,  r   r   Visitor.visit}   s    * '',00t<"d9$9&9Ce|0@0@0@3
##JsDII,F,FS24262T""NN3000T""NN3000NN3000r   r   )r   
__module____qualname____firstlineno__r@   weakref	ProxyTyper   classmethodr"   r&   r*   r-   r8   rG   rA   rN   rR   rU   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     K 	D"JK	I  0 4 4
 - - - - +-  =6+/
/

!1 !1r   r   )__doc__rZ   rb   objectr   r   r   r   <module>rj      s    @  W1f W1r   