§
    „Øj³  ã                  ó†   — d dl mZ d dlZd dlZ G d„ d¦  «        Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
edk    r	  e¦   «          dS dS )é    )ÚannotationsNc                  ó$   — e Zd Zdd„Zdd„Zd„ ZdS )ÚTreeYielderNc                ó˜   — g | _         d| _        || _        g | _        t          t
          t          t          d¦  «        t          g| _	        dS )z±
        `yieldValue` should be a lambda function that
        returns True/False or a function/method call that
        will be passed the value of a current attribute
        N)
ÚcurrentStackÚmemoÚ
yieldValueÚ	stackValsÚintÚstrÚfloatÚtypeÚboolÚnonIterables)Úselfr	   s     ú‹/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/test/treeYield.pyÚ__init__zTreeYielder.__init__   sC   € ð ˆÔØˆŒ	Ø$ˆŒØˆŒÝ ¥#Ý"¥D¨¡J¤Jµð6ˆÔÐÐó    c              #  ó8  K  — |€i }|| _         t          |¦  «        | j         v r$| j         t          |¦  «        xx         dz  cc<   dS d| j         t          |¦  «        <   |                      |¦  «        du r|V — | j                             |¦  «         t          |¦  «        }|| j        v r�nÓ|t          u rc|D ]^}d|f}| j                             |¦  «         ||         }|  	                    ||¬¦  «        E d{V —† | j         
                    ¦   «          Œ_�ng|t          t          fv rjt          |¦  «        D ]Y\  }}d|f}| j                             |¦  «         |  	                    ||¬¦  «        E d{V —† | j         
                    ¦   «          ŒZní	 t                               |d¦  «        }	n# t           $ r Y dS w xY w|	D ]¼}	 t                               ||¦  «        }
n# t"          $ r Y Œ+w xY wd|f}| j                             |¦  «         	 |  	                    |
|¬¦  «        E d{V —† n7# t$          $ r*}t'          d	|                      ¦   «         › �¦  «        |‚d}~ww xY w| j         
                    ¦   «          Œ½| j         
                    ¦   «          dS )
a>  
        traverse all attributes of an object looking
        for subObjects that meet a certain criteria.
        yield them.

        `memo` is a dictionary to keep track of objects
        that have already been seen

        The original object is added to the memo and
        also checked for yieldValue
        Né   TÚdict)r   ÚlistLikeÚ__dict__ÚgetattrzMaximum recursion on:
)r   Úidr	   r   Úappendr   r   r   r
   ÚrunÚpopÚlistÚtupleÚ	enumerateÚobjectÚ__getattribute__ÚAttributeErrorÚ	ExceptionÚRuntimeErrorÚ
ValueErrorÚcurrentLevel)r   Úobjr   ÚtObjÚkeyXÚ	dictTupleÚxÚiÚ	listTupleÚinstance_dictÚgotValueÚobjTupleÚrunErrors                r   r   zTreeYielder.run!   s&  è è € ð ˆ<ØˆDØˆŒ	Ýˆc‰7Œ7�d”iÐÐØŒI•b˜‘g”gÐÐÔ !Ñ#ÐÐÑØˆFà!"ˆDŒI•b˜‘g”gÑà�?Š?˜3ÑÔ 4Ð'Ð'ØˆIˆIˆIð 	Ô× Ò  Ñ%Ô%Ð%å�C‰yŒyˆØ�4Ô$Ð$Ð$ÙØ•Tˆ\ˆ\Øð %ð %�Ø# T˜N�	Ø”×%Ò% iÑ0Ô0Ð0Ø˜”I�ØŸ8š8 A¨D˜8Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø”×"Ò"Ñ$Ô$Ð$Ð$ñ%ð •d�E�]Ð"Ð"Ý! #™œð %ð %‘��1Ø'¨˜O�	Ø”×%Ò% iÑ0Ô0Ð0ØŸ8š8 A¨D˜8Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø”×"Ò"Ñ$Ô$Ð$Ð$ð	%ðÝ &× 7Ò 7¸¸ZÑ HÔ H��øÝ!ð ð ð à��ðøøøð #ð %ð %�ðÝ%×6Ò6°s¸AÑ>Ô>�H�HøÝ ð ð ð Ø�Hðøøøà% q˜>�Ø”×%Ò% hÑ/Ô/Ð/ð$Ø#Ÿxšx¨°t˜xÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<øÝ#ð $ð $ð $Ý$ØG°$×2CÒ2CÑ2EÔ2EÐGÐGñô à#ð$øøøøð$øøøð ”×"Ò"Ñ$Ô$Ð$Ð$àÔ×ÒÑÔÐÐÐs<   ÆF1 Æ1
F?Æ>F?ÇG#Ç#
G0Ç/G0ÈH0È0
I$È:%IÉI$c                ó(  — d}| j         D ]‡\  }}|dk    r:t          |t          ¦  «        r|d|z   dz   z  }Œ,|dt          |¦  «        z   dz   z  }ŒE|dk    r|dt          |¦  «        z   dz   z  }Œd|dk    r|d	|z   d
z   z  }Œvt          d|›�¦  «        ‚|S )NÚ r   z['z']ú[ú]r   r   z.__getattribute__('z')z#Cannot get attribute for stackType )r
   Ú
isinstancer   r'   )r   Ú
currentStrÚ	stackTypeÚ
stackValues       r   r(   zTreeYielder.currentLevelh   sÔ   € Øˆ
Ø%)¤^ð 	Vð 	VÑ!ˆI�zØ˜FÒ"Ð"Ý˜j­#Ñ.Ô.ð >Ø $¨Ñ"3°dÑ":Ñ:�J�Jà #­¨J©¬Ñ"7¸#Ñ"=Ñ=�J�JØ˜jÒ(Ð(Ø˜c¥C¨
¡O¤OÑ3°cÑ9Ñ9�
�
Ø˜iÒ'Ð'ØÐ3°jÑ@À4ÑGÑG�
�
å Ð!TÀyÐ!TÐ!TÑUÔUÐUØÐr   ©N)Ú__name__Ú
__module__Ú__qualname__r   r   r(   © r   r   r   r      sP   € € € € € ð6ð 6ð 6ð 6ðE ð E ð E ð E ðNð ð ð ð r   r   c            	     ó2  ‡—  G ˆfd„d¦  «        Šd„ } g d¢}ddg d¢dd	d
 ‰|¦  «        dœd ‰|¦  «        g}|                      |¦  «         t          | ¦  «        }|                     |¦  «        D ]$}t          ||                     ¦   «         ¦  «         Œ%d S )Nc                  ó   •— e Zd Zdˆ fd„	ZdS )útestCode.<locals>.MockTc                óv   •— d| _         || _        ||dg| _        d | _        |du r ‰|d¬¦  «        | _        d S d S )Né   é(   TF)Ú	embedMock)ÚabbyÚmockerÚmockListÚembeddedMock)r   Ú	mockThingrG   ÚMocks      €r   r   ztestCode.<locals>.Mock.__init__{   sW   ø€ ØˆDŒIØ#ˆDŒKØ&¨	°2Ð6ˆDŒMØ $ˆDÔØ˜DÐ Ð Ø$( D¨¸eÐ$DÑ$DÔ$D�Ô!Ð!Ð!ð !Ð r   N)T)r=   r>   r?   r   )rM   s   €r   rM   rC   z   s;   ø€ € € € € ð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Er   rM   c                ó"   — | j         j        dk    S )NrM   )Ú	__class__r=   ©r-   s    r   ÚmockTypeztestCode.<locals>.mockTypeƒ   s   € ØŒ{Ô# vÒ-Ð-r   )éd   é<   éþÿÿÿé   é   )rU   é   é   rE   é
   é   )ÚhelloÚgoodbyeÚmockiìÿÿÿ)r   r   r   Úprintr(   )rQ   ÚsubListÚmyListÚtyÚvalrM   s        @r   ÚtestCoderc   y   sî   ø€ ðEð Eð Eð Eð Eð Eð Eñ Eô Eð Eð.ð .ð .ð ˆmˆm€GØ��[�[�[ "Ø r°4°4¸±=´=ÐAÐAÀ3ÈÈÈWÉÌðW€Fà
‡M‚M�&ÑÔÐå	�XÑ	Ô	€BØ�vŠv�f‰~Œ~ð &ð &ˆÝˆc�2—?’?Ñ$Ô$Ñ%Ô%Ð%Ð%ð&ð &r   c                 óx  — ddl m}  ddl m} ddl m} |                     ¦   «         dz  dz  dz  }|                      |¦  «        }|                     |¦  «        }|                     ¦   «          d„ }t          |¦  «        }| 	                    |¦  «        D ]$}t          ||                     ¦   «         ¦  «         Œ%d S )	Nr   )Ú	converter)Úcommon)Ú
freezeThawÚmidiÚtestPrimitivez
test03.midc                ó6   — t          | t          j        ¦  «        S r<   )r8   ÚweakrefÚReferenceTyperP   s    r   rQ   ztestMIDIParse.<locals>.mockType£   s   € Ý˜!�WÔ2Ñ3Ô3Ð3r   )Úmusic21re   rf   rg   ÚgetSourceFilePathÚparseÚStreamFreezerÚsetupSerializationScaffoldr   r   r^   r(   )	re   rf   rg   ÚaÚcÚvrQ   ra   rb   s	            r   ÚtestMIDIParseru   �   sð   € Ø!Ð!Ð!Ð!Ð!Ð!ØÐÐÐÐÐØ"Ð"Ð"Ð"Ð"Ð"ð 	× Ò Ñ"Ô" VÑ+¨oÑ=ÀÑL€Að 	�Š˜ÑÔ€AØ× Ò  Ñ#Ô#€AØ× Ò Ñ"Ô"Ð"ð4ð 4ð 4õ 
�XÑ	Ô	€BØ�vŠv�a‰yŒyð &ð &ˆÝˆc�2—?’?Ñ$Ô$Ñ%Ô%Ð%Ð%ð&ð &r   c                 ó"   — t          d„ ¦  «        S )Nc                ó@   — t          | t          j        j        ¦  «        S r<   )Ú
issubclassrm   Úexceptions21ÚMusic21Exception©Úmms    r   ú<lambda>z3find_all_exception_classes_in_m21.<locals>.<lambda>­   s   € •:˜b¥'Ô"6Ô"GÑHÔH€ r   ©Úfind_all_classes_by_criteriar@   r   r   Ú!find_all_exception_classes_in_m21r€   «   s   € Ý'ØHÐHñô ð r   c                 ó&   — d„ } t          | ¦  «        S )Nc                ó²   — t          | t          j        j        ¦  «        sdS 	  | ¦   «         h n(# t          $ r}dt          |¦  «        v cY d }~S d }~ww xY wdS )NFÚ
unhashable)rx   rm   ÚbaseÚMusic21ObjectÚ	TypeErrorr   )r|   Útes     r   Úis_unhashablez7find_all_non_hashable_m21objects.<locals>.is_unhashable²   sv   € Ý˜"�gœlÔ8Ñ9Ô9ð 	Ø�5ð	+ØˆR‰TŒTˆFˆFˆFøÝð 	+ð 	+ð 	+Ø¥3 r¡7¤7Ð*Ð*Ð*Ð*Ð*Ð*Ð*øøøøð	+øøøàˆus   £/ ¯
A¹AÁ	AÁAr~   )rˆ   s    r   Ú find_all_non_hashable_m21objectsr‰   °   s!   € ðð ð õ (¨Ñ6Ô6Ð6r   c                 ó&   — d„ } t          | ¦  «        S )Nc                ó‚   — t          | t          j        j        ¦  «        sdS 	  | ¦   «          n# t          $ r Y dS w xY wdS )NFT)rx   rm   r„   r…   r†   r{   s    r   Úneeds_attributeszGfind_all_non_default_instantiation_m21objects.<locals>.needs_attributes¿   sW   € Ý˜"�gœlÔ8Ñ9Ô9ð 	Ø�5ð	ØˆB‰DŒDˆDˆDøÝð 	ð 	ð 	Ø�4�4ð	øøøàˆus   £
. ®
<»<r~   )rŒ   s    r   Ú-find_all_non_default_instantiation_m21objectsr�   ¼   s"   € ðð ð õ (Ð(8Ñ9Ô9Ð9r   c                ó0  — ddl m} dd l} |t          g¦  «        }t	          ¦   «         }t	          ¦   «         }|rÜ|                     ¦   «         }||v rŒt          |¦  «         t          |¦  «        D ]�}t          ||¦  «        }t          ||j
        ¦  «        r-||vr)dt          |dd¦  «        v r|                     |¦  «         ŒTt          |t          ¦  «        r$||vr  | |¦  «        r|                     |¦  «         ŒŽ|                     |¦  «         |°Ü|S )Nr   )Údequerm   Ú__file__r5   )Úcollectionsr�   Útypesrm   ÚsetÚpopleftr^   Údirr   r8   Ú
ModuleTyper   r   Úadd)	Úcriteriar�   r’   ÚdÚseenÚmatchesÚmÚmm_namer|   s	            r   r   r   Ê   s,  € Ø!Ð!Ð!Ð!Ð!Ð!Ø€L€L€Làˆ�wˆiÑÔ€AÝ‰5Œ5€DÝ‰eŒe€GØ
ð Ø�IŠI‰KŒKˆØ�ˆ9ˆ9ØÝˆa‰ŒˆÝ˜1‘v”vð 	 ð 	 ˆGÝ˜˜GÑ$Ô$ˆBÝ˜2˜uÔ/Ñ0Ô0ð  Ø $˜˜Ø!¥W¨R°¸RÑ%@Ô%@Ð@Ð@à—’˜‘”��Ý˜B¥Ñ%Ô%ð  ¨"°D¨.¨.¸X¸XÀb¹\¼\¨.Ø—’˜B‘”�øØ�Š�‰Œˆð ð ð €Nr   Ú__main__)Ú
__future__r   rk   rm   r   rc   ru   r€   r‰   r�   r   r=   r@   r   r   ú<module>r       sÝ   ðð #Ð "Ð "Ð "Ð "Ð "à €€€à €€€ðcð cð cð cð cñ cô cð cðL&ð &ð &ð.&ð &ð &ð6ð ð ð

7ð 
7ð 
7ð:ð :ð :ðð ð ð2 ˆzÒÐØà€M�O„O€O€O€Oð Ðr   