
    rhc                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr   " S S\R                  5      r\S	:X  a  S SKr\R                   " \S
5        gg)    )annotationsN)	converter)corpus)metadata)	testFilesc                  |    \ rS rSrSrS rS rS rS rS r	S r
S	 rS\R                  4       SS
 jjrS rSrg)Test   Nc                   [         R                  " [        R                  5      nUR                  nU R                  US   [        R                  " S5      45        U R                  US   [        R                  " S5      45        U R                  US   [        R                  " S5      45        U R                  US   [        R                  " S5      45        U R                  US	   [        R                  " S	S
S945        [         R                  " [        R                  5      nUR                  nU R                  US	   [        R                  " S	SS945        g )NmovementNumber3movementName#Menuetto (Excerpt from Second Trio)title Quintet for Clarinet and StringsnumberK. 581composerWolfgang Amadeus MozartrolenameGilles Binchois)	r   parsemTFmozartTrioK581Excerptr   assertEqualTextContributorbinchoisMagnificatselfcmds      T/home/james-whalen/.local/lib/python3.13/site-packages/music21/test/test_metadata.pytestMetadataLoadCorpusTest.testMetadataLoadCorpus   s-   OOC556ZZ ]]3!	
 	~]]@AC	
 	wK]]=>@	
 	xL]]8$&	
 	zN!!z8QRT	

 OOC223ZZzN!!z8IJL	
    c                   [         R                  " [        R                  5      nUR                  nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        [         R                  " [        R                  5      nUR                  nU R                  UR                  S5        g )Nr   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r    r!   s      r%   (testMetadataLoadCorpusBackwardCompatible-Test.testMetadataLoadCorpusBackwardCompatible2   s    OOC556ZZ	
 	OO1	
 	HH.	
 	II	

 	KK%	

 OOC223ZZKK	
r(   c                   [         R                  " SSSS9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        [        R                  " [        R                  5      nUR                   nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S	5        U R                  UR                  S
5        g )NzConcerto in F2010Frank)r   dater   z
2010/--/--r   r   r   r   r   )r   Metadatar   r   dateCreatedr   r   r   r   r   r   r   r   )r"   r$   r#   s      r%   testJSONSerializationMetadata"Test.testJSONSerializationMetadataS   s   !
 	g.6g.?3 OOC556ZZs	
 	OO1	
 	HH.	
 	II	
 	KK%	
r(   c                   [         R                  " S5      nU R                  UR                  R                  S5        [        R
                  " 5       nUR                  UR                  5        U R                  UR                  S5        UR                  U5        U R                  UR                  S5        U R                  [        UR                  5      S5        [         R                  " S5      n[        R
                  " 5       nUR                  UR                  5        UR                  U5        U R                  UR                  S5        U R                  [        UR                  5      S5        g )NjactaturzJohannes Ciconiaz2/4bwv66.6   z4/4)r   r   r   r   r   RichMetadatamergeupdatekeySignatureFirststrtimeSignatureFirstr"   scorerichMetadatas      r%   testRichMetadata01Test.testRichMetadata01w   s   Z(002DE,,.5>>*..0BCE"**	

 	\<<=uEY',,.5>>*E"**	
 	\<<=uEr(   c                   [         R                  " S5      nU R                  [        UR                  5      S5        UR                  S5      nU R                  UR                  R                  S5        [        R                  " 5       nUR                  UR                  5        UR                  U5        U R                  UR                  S5        g )NzessenFolksong/teste      zAsien, Ostasien, China, Sichuan)r   r   r   lenscoresgetScoreByNumberr   localeOfCompositionr9   r:   r;   )r"   opusr@   rA   s       r%   testWorkIdsTest.testWorkIds   s    ||12T[[)1-%%a(NN..-	

  ,,.5>>*E",,-	
r(   c                V   [         R                  " S5      nU R                  UR                  R	                  SSS9S5        U R                  UR                  R	                  SSS9S5        U R                  UR                  R	                  [
        R                  " S5      5      S5        g )Nciconiaquodr   )field)Tr   zqu.dz(.*)canon(.*))r   r   r   r   searchrecompile)r"   r@   s     r%   testMetadataSearchTest.testMetadataSearch   s    Y'NN!!$ "  #	
 	NN!!$ "  #	
 	NN!!

?+ #		
r(   c                "   [         R                  " S5      n[        R                  " 5       nUR	                  UR                  5        UR                  U5        U R                  UR                  S5        U R                  UR                  S5        g )Nr7      g      B@)	r   r   r   r9   r:   r;   r   	noteCountquarterLengthr?   s      r%   testRichMetadata02Test.testRichMetadata02   sj    Y',,.5>>*E"//533T:r(   c                x   SU;  a  USU-   -  nUR                  S5      (       a  [        R                  n[        R                  " 5       nU R	                  UR                  U5      5        U R                  UR                  U5      5        U R	                  UR                  U5      5        U R                  UR                  U5      5        US:w  aX  [        XQ5      nU R                  U5        XQ   nU R                  U[        5       5        XR   nU R                  U[        5       5        U[        R                  L aA  S/XR'   U R                  [        XQ5      S5        SXQ'   U R                  [        XQ5      S5        GOU[        R                  L aN  SU 3/XR'   U R                  [        XQ5      SU 35        SU 34XQ'   U R                  [        XQ5      SU 35        GOgU[        R                  L aN  S	U 3/XR'   U R                  [        XQ5      S	U 35        S	U 34XQ'   U R                  [        XQ5      S	U 35        GOU[        R                  L a  S	U 3/XR'   US
:X  a   U R                  [        XQ5      S	U 345        OU R                  [        XQ5      S	U 35        S	U 34XQ'   US
:X  a   U R                  [        XQ5      S	U 345        OyU R                  [        XQ5      S	U 35        OZU[        L a@  S/XR'   U R                  [        XQ5      S5        SXQ'   U R                  [        XQ5      S5        OU R!                  S5        U[        R                  L a  UR#                  U[        R$                  " SS/5      [        R&                  " S5      /5        U R                  [        XQ5      S5        U R                  XQ   [        R&                  " S5      [        R$                  " SS/5      [        R&                  " S5      45        GO^U[        R                  L Ga  UR#                  U[        R                  " S5      5        UR#                  U[        R                  " SSS9[        R                  " [        R                  " S5      SS945        U R                  [        XQ5      SU 3S-   S-   S-   5        U R                  XQ   [        R                  " SU 35      [        R                  " S5      [        R                  " SSS9[        R                  " [        R                  " S5      SS945        GO0U[        R                  L a  UR#                  U[        R                  " SU 35      [        R                  " U(       a  UOUSU 3S9/5        U R                  [        XQ5      S	U S 35        U R                  XQ   [        R                  " S	U 3US!9[        R                  " SU 3US!9[        R                  " U(       a  UOUSU 3S945        GOPU[        R                  L a  UR#                  U[        R                  " SU 35      [        R                  " SU 35      /5        US:X  a(  U R                  [        XQ5      S	U 3SU 3SU 345        O$U R                  [        XQ5      S	U S"U S#U 35        U R                  XQ   [        R                  " S	U 35      [        R                  " SU 35      [        R                  " SU 35      45        OLU[        L aC  UR#                  US$S%/5        U R                  [        XQ5      S&5        U R                  XQ   S'5        XQ   nXR   n	U R                  [)        U5      [)        U	5      5        [+        X5       H8  u  pU R-                  X5        U R-                  X5        U R                  X5        M:     U[        R                  L aP  U	 HI  n[/        U[        R                  5      (       d   eU R                  UR0                  U(       a  UOU5        MK     g g )(N:marcrelsoftwarez	1987/6/11z
1987/06/11)z	1989/6/11z
1989/06/11u   Copyright ©1987 zThe zmusicxml:software   17)   1z&internal test error: invalid valueType19871989z1989/6/11/4:50:32z91989/06/11, 1987/--/-- to 1989/--/--, 1989/06/11/04:50:32u$   Lyrics copyright ©1987 Kat Bjellandu+   Other content copyright ©1987 Lori Barberoother)r   u2   Music contributions copyright ©1987 Michelle Leonzmusic contributionsu&   , Lyrics copyright ©1987 Kat Bjellandu-   , Other content copyright ©1987 Lori Barberou4   , Music contributions copyright ©1987 Michelle LeonzThe 2nd zThe 3rd r   z and 2 others)r   r   z
, The 2nd z
, The 3rd    r8   z1, 2, 3)rc   rh   r8   )
startswithr   r   r0   
assertTrue_isStandardUniqueNameassertFalse_isStandardNamespaceNamegetattrassertIsNoner   tupleDatePrimitive	Copyrightr   intfailaddDateBetween
DateSinglerG   zipassertIsInstance
isinstancer   )r"   
uniqueNamenamespaceNamecontributorRole	valueTyper$   item	itemTuplemdItemsUniquemdItemsNamespaceName
itemUniqueitemNamespaceNames               r%   checkUniqueNamedItemTest.checkUniqueNamedItem   s*    m# S:--M##I.. ,,I 00<=44Z@A33MBC11-@A# 2*Dd#IY0)IY0...!,B' ,BN' (,,,#4]O!D EB'#M?3 !2*>@BN'#J<0 (...#'!7 8B'}o& !%ZL13BN'zl# (--'#'!7 8B 33  B+M?+-
   B+=/* !%ZL13BN 33  B+J<(*
   B+:,' #!#B' "BN'
 II>? ...FF=((&&)9:''(;<>? 'K ''5((&&)9:''(;< (,,,FFDE FF&&E$& && &Z[24	
 '#J<0:;AB II &&)::,'GH&&'MN&&E$ && &Z[2 (...FFMMHZL"9:((0?_Z'
|46 'zl-0 ((ZL.A
S((.EJW((0?_Z'
|46	 (--'FFMMHZL"9:MMHZL"9: Z'  B+J<(HZL*AXj\CZ[
   B+:,jJzlS MMD"56MMHZL"9:MMHZL"9: #FF=1a&)WR4i@R^Y7 !0]+S1E-FG-0-U)J!!*8!!"3?Z; .V
 ,,,%9! ""3X5I5IJJJJ  !2!7!7'6OJH	 &: -r(   c                   U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS[        R                  S	9  U R                  S
S5        U R                  SS5        U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S5        U R                  S!S"[        R                  S	9  U R                  S#S5        U R                  S$S5        U R                  S%S5        U R                  S&S5        U R                  S'S([        R                  S	9  U R                  S)S5        U R                  S*S[        R                  S	9  U R                  S+S5        U R                  S,S5        U R                  S-S5        U R                  S.S5        U R                  S/S0[        R                  S	9  U R                  S1S[        R                  S	9  U R                  S2S5        U R                  S3S5        U R                  S4S5        U R                  S5S5        U R                  S6S5        U R                  S7S8[        R                  S	9  U R                  S9S:5        U R                  S;S<5        U R                  S=S>5        U R                  S?S@5        U R                  SASB5        U R                  SCSD5        U R                  SESF5        U R                  SGSH5        U R                  SISJ5        U R                  SKSL5        U R                  SMSN5        U R                  SOSP5        U R                  SQSR5        U R                  SSST5        U R                  SUSV5        U R                  SWSX5        U R                  SYSZ5        U R                  S[S\5        U R                  S]S^5        U R                  S_S`5        U R                  SaSb5        U R                  ScSd5        U R                  SeSf5        U R                  SgSh5        U R                  SiSj5        U R                  SkSl5        U R                  SmSn5        U R                  SoSp5        U R                  SqSr5        U R                  SsSt5        U R                  SuSv5        U R                  SwSx5        U R                  SySz5        U R                  S{S|5        U R                  S}S~5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R                  S	9  U R                  SS[        R
                  S	9  U R                  SS[        R
                  S	9  U R                  SS[        S	9  g )NabstractdctermsaccessRightsalternativeTitlezdcterms:alternativeaudiencedateAvailablezdcterms:available)r~   bibliographicCitation
conformsTor1   zdcterms:created	otherDatezdcterms:datedateAccepteddateCopyrighteddateSubmitteddescriptioneducationLevelextentformat	hasFormathasPart
hasVersion
identifierinstructionalMethod
isFormatOfisPartOfisReferencedByisReplacedByisRequiredBy
dateIssuedzdcterms:issuedisVersionOflanguagelicensemediumdateModifiedzdcterms:modified
provenance	publisher
referencesrelationreplacesrequires	copyrightzdcterms:rightsrightsHoldersourcesubjecttableOfContentsr   type	dateValidzdcterms:validadapterzmarcrel:ADPanalystzmarcrel:ANL	annotatorzmarcrel:ANNarrangerzmarcrel:ARRquotationsAuthorzmarcrel:AQTafterwordAuthorzmarcrel:AFTdialogAuthorzmarcrel:AUDintroductionAuthorzmarcrel:AUIcalligrapherzmarcrel:CLLcollaboratorzmarcrel:CLB
collotyperzmarcrel:CLTcommentaryAuthorzmarcrel:CWTcompilerzmarcrel:COMr   zmarcrel:CMP	conceptorzmarcrel:CCP	conductorzmarcrel:CNDotherContributorzmarcrel:CTBeditorzmarcrel:EDTengraverzmarcrel:EGRetcherzmarcrel:ETRilluminatorzmarcrel:ILUillustratorzmarcrel:ILLinstrumentalistzmarcrel:ITR
librettistzmarcrel:LBTlithographerzmarcrel:LTGlyricistzmarcrel:LYRmetalEngraverzmarcrel:MTEmusicianzmarcrel:MUSproofreaderzmarcrel:PFR
platemakerzmarcrel:PLT
printmakerzmarcrel:PRMproducerzmarcrel:PROresponsiblePartyzmarcrel:RPYscribezmarcrel:SCRsingerzmarcrel:SNGtranscriberzmarcrel:TRC
translatorzmarcrel:TRLwoodEngraverzmarcrel:WDE
woodCutterzmarcrel:WDCaccompanyingMaterialWriterzmarcrel:WAMdistributorzmarcrel:DSTr`   musicxmltextOriginalLanguagezhumdrum:TXOtextLanguagezhumdrum:TXLpopularTitlezhumdrum:OTPparentTitlezhumdrum:OPR	actNumberzhumdrum:OACsceneNumberzhumdrum:OSCr   zhumdrum:OMVr   zhumdrum:OMD
opusNumberzhumdrum:OPSr   zhumdrum:ONMvolumeNumberzhumdrum:OVMdedicatedTozhumdrum:ODEcommissionedByzhumdrum:OCOcountryOfCompositionzhumdrum:OCYrJ   zhumdrum:OPC
groupTitlezhumdrum:GTLassociatedWorkzhumdrum:GAWcollectionDesignationzhumdrum:GCOattributedComposerzhumdrum:COAsuspectedComposerzhumdrum:COScomposerAliaszhumdrum:COLcomposerCorporatezhumdrum:COCorchestratorzhumdrum:LORfirstPublisherzhumdrum:PPRdateFirstPublishedzhumdrum:PDTpublicationTitlezhumdrum:PTLplaceFirstPublishedzhumdrum:PPPpublishersCatalogNumberzhumdrum:PC#scholarlyCatalogNamezhumdrum:SCAscholarlyCatalogAbbreviationzhumdrum:SCTmanuscriptSourceNamezhumdrum:SMSmanuscriptLocationzhumdrum:SMLmanuscriptAccessAcknowledgementzhumdrum:SMAoriginalDocumentOwnerzhumdrum:YOOoriginalEditorzhumdrum:YOEelectronicEditorzhumdrum:EEDelectronicEncoderzhumdrum:ENCelectronicPublisherzhumdrum:YEPelectronicReleaseDatezhumdrum:YER
fileFormatm21FileInfofilePath
fileNumber)r   r   rq   r   rr   r   rs   )r"   s    r%   testUniqueNameAccessTest.testUniqueNameAccess  s'
   !!*i8!!.)<!!"46KL!!*i8!!,, 	" 	

 	!!"99E!!,	:!!-"3,4,B,B 	" 	D 	!!+~I_I_!`!!.)xG]G]!^!!"3Y(J`J`!a!!/9H^H^!_!!-;!!"2I>!!(I6!!(I6!!+y9!!)Y7!!,	:!!,	:!!"7C!!,	:!!*i8!!"2I>!!.)<!!.)<!!,"2,4,B,B 	" 	D 	!!-;!!*i8!!)Y7!!(I6!!,, 	" 	

 	!!,	:!!+yHDXDX!Y!!,	:!!*i8!!*i8!!*i8!!+/?8K]K]!^!!.)xG[G[!\!!(I6!!)Y7!!"3Y?!!'95!!&)4!!+"1,4,B,B 	" 	D 	!!)];!!)];!!+}=!!*m<!!"4mD!!"3]C!!.-@!!"6F!!.-@!!.-@!!,>!!"4mD!!*m<!!*m<!!+}=!!+}=!!"4mD!!(M:!!*m<!!(M:!!-?!!-?!!"3]C!!,>!!.-@!!*m<!!/=A!!*m<!!-?!!,>!!,>!!*m<!!"4mD!!(M:!!(M:!!-?!!,>!!.-@!!,>!!">N!!-?!!*j9!!"8-H!!.-@!!.-@!!-?!!+}=!!-?!!"2MB!!.-@!!,>!!(M:!!.-@!!-?!!"2MB!!"8-H!!"7G!!,>!!"2MB!!"9=I!! ** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!! ,, 	" 	

 	!!"4mD!!"7G!!";]K!!"8-H!!"@-P!!"8-H!!"6F!!"C]S!!#** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!!** 	" 	

 	!!!** 	" 	

 	!!#,, 	" 	

 	!!mm 	" 	

 	!!mm 	" 	

 	!! 	" 	
r(    )r{   r=   r|   r=   r}   zt.Optional[str]r~   r   )__name__
__module____qualname____firstlineno__maxDiffr&   r*   r2   rB   rL   rU   r[   r   r   r   r  __static_attributes__r  r(   r%   r	   r	      sv    G
@
B"
HF:
&
.; 04&mmjHjH jH -	jH
 jHXP
r(   r	   __main__	noDocTest)
__future__r   rS   typingtunittestmusic21r   r   r   music21.musicxmlr   r   TestCaser	   r  mainTestr  r(   r%   <module>r     sT    " 	      -t	
8 t	
p zT;' r(   