
    G"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       a/var/www/html/leadgen/backtest/nba_api_env/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)&jG;#%"HE$E $ 9 9% DI %#4 $~~t54 +1$ !& % #0 r   )r   __dict__r   )r   r    r!   s   `` r   	_registerVisitor._register   s4    w; ;;dmm+DN	" 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!jG~~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!jG;#HE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    5kHHJDk48I   	NN&&tT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     d3inn&'%%c*	"sD1C1v}C%E#--<K&!$SI$I&I%<CKD4D4DNN3U<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JJu.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(    ZZ\EJJu.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&9Ce|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__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1f W1r   