
    3jc                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ  G d dej                        Zed	k(  rd dlZ ej                   ed
       yy)    )annotationsN)	converter)corpus)metadata)	testFilesc                  p    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
dej                  f	 	 	 	 	 	 	 dd	Zd
 Zy)TestNc                   t        j                  t        j                        }|j                  }| j                  |d   t	        j                  d      f       | j                  |d   t	        j                  d      f       | j                  |d   t	        j                  d      f       | j                  |d   t	        j                  d      f       | j                  |d	   t	        j                  d	d
      f       t        j                  t        j                        }|j                  }| j                  |d	   t	        j                  d	d      f       y )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      G/DATA/.local/lib/python3.12/site-packages/music21/test/test_metadata.pytestMetadataLoadCorpusz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                   t        j                  t        j                        }|j                  }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  t        j                        }|j                  }| j                  |j                  d       y )Nr   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r    s      r$   (testMetadataLoadCorpusBackwardCompatiblez-Test.testMetadataLoadCorpusBackwardCompatible1   s    OOC556ZZ	
 	OO1	
 	HH.	
 	II	

 	KK%	

 OOC223ZZKK	
r&   c                   t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       t        j                  t        j                        }|j                   }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d	       | j                  |j                  d
       y )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$   testJSONSerializationMetadataz"Test.testJSONSerializationMetadataR   s   !
 	g.6g.?3 OOC556ZZs	
 	OO1	
 	HH.	
 	II	
 	KK%	
r&   c                   t        j                  d      }| j                  |j                  j                  d       t        j
                         }|j                  |j                         | j                  |j                  d       |j                  |       | j                  |j                  d       | j                  t        |j                        d       t        j                  d      }t        j
                         }|j                  |j                         |j                  |       | j                  |j                  d       | j                  t        |j                        d       y )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$   testRichMetadata01zTest.testRichMetadata01v   s   Z(002DE,,.5>>*..0BCE"**	

 	\<<=uEY',,.5>>*E"**	
 	\<<=uEr&   c                   t        j                  d      }| j                  t        |j                        d       |j                  d      }| j                  |j                  j                  d       t        j                         }|j                  |j                         |j                  |       | j                  |j                  d       y )NzessenFolksong/teste      zAsien, Ostasien, China, Sichuan)r   r   r   lenscoresgetScoreByNumberr   localeOfCompositionr5   r6   r7   )r!   opusr<   r=   s       r$   testWorkIdszTest.testWorkIds   s    ||12T[[)1-%%a(NN..-	

  ,,.5>>*E",,-	
r&   c                ^   t        j                  d      }| j                  |j                  j	                  dd      d       | j                  |j                  j	                  dd      d       | j                  |j                  j	                  t        j                  d            d       y )Nciconiaquodr   )field)Tr   zqu.dz(.*)canon(.*))r   r   r   r   searchrecompile)r!   r<   s     r$   testMetadataSearchzTest.testMetadataSearch   s    Y'NN!!$ "  #	
 	NN!!$ "  #	
 	NN!!

?+ #		
r&   c                V   t        j                  d      }t        j                         }|j	                  |j                         |j                  |       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nr3      g      B@g        )
r   r   r   r5   r6   r7   r   	noteCountscoreQuarterLengthquarterLengthr;   s      r$   testRichMetadata02zTest.testRichMetadata02   s    Y',,.5>>*E"//588$?33S9r&   c                p   d|vr|d|z   z  }|j                  d      rt        j                  }t        j                         }| j	                  |j                  |             | j                  |j                  |             | j	                  |j                  |             | j                  |j                  |             |dk7  r[t        ||      }| j                  |       ||   }| j                  |t                      ||   }| j                  |t                      |t        j                  u rEdg||<   | j                  t        ||      d       d||<   | j                  t        ||      d       n|t        j                  u rRd| g||<   | j                  t        ||      d|        d| f||<   | j                  t        ||      d|        np|t        j                  u rRd	| g||<   | j                  t        ||      d	|        d	| f||<   | j                  t        ||      d	|        n|t        j                  u rd	| g||<   |d
k(  r!| j                  t        ||      d	| f       n| j                  t        ||      d	|        d	| f||<   |d
k(  r!| j                  t        ||      d	| f       n}| j                  t        ||      d	|        n]|t        u rDdg||<   | j                  t        ||      d       d||<   | j                  t        ||      d       n| j!                  d       |t        j                  u r|j#                  |t        j$                  ddg      t        j&                  d      g       | j                  t        ||      d       | j                  ||   t        j&                  d      t        j$                  ddg      t        j&                  d      f       n]|t        j                  u r|j#                  |t        j                  d             |j#                  |t        j                  dd      t        j                  t        j                  d      d      f       | j                  t        ||      d| dz   dz   dz          | j                  ||   t        j                  d|       t        j                  d      t        j                  dd      t        j                  t        j                  d      d      f       n+|t        j                  u r|j#                  |t        j                  d|       t        j                  |r|n|d|       g       | j                  t        ||      d	| d        | j                  ||   t        j                  d	| |!      t        j                  d| |!      t        j                  |r|n|d|       f       nM|t        j                  u r|j#                  |t        j                  d|       t        j                  d|       g       |dk(  r)| j                  t        ||      d	| d| d| f       n%| j                  t        ||      d	| d"| d#|        | j                  ||   t        j                  d	|       t        j                  d|       t        j                  d|       f       nM|t        u rE|j#                  |d$d%g       | j                  t        ||      d&       | j                  ||   d'       ||   }||   }	| j                  t)        |      t)        |	             t+        ||	      D ];  \  }
}| j-                  |
|       | j-                  ||       | j                  |
|       = |t        j                  u rD|	D ]>  }t/        |t        j                        sJ | j                  |j0                  |r|n|       @ y y )(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    r4   z1, 2, 3)r\   ra   r4   )
startswithr   r   r-   
assertTrue_isStandardUniqueNameassertFalse_isStandardNamespaceNamegetattrassertIsNoner   tupleDatePrimitive	Copyrightr   intfailaddDateBetween
DateSinglerB   zipassertIsInstance
isinstancer   )r!   
uniqueNamenamespaceNamecontributorRole	valueTyper#   item	itemTuplemdItemsUniquemdItemsNamespaceName
itemUniqueitemNamespaceNames               r$   checkUniqueNamedItemzTest.checkUniqueNamedItem   s}    m# S:--M##I. ,,I 00<=44Z@A33MBC11-@A# 2z*Dd#:IY0=)IY0...!,B}J' ,BzNJ' (,,,#4]O!D EB}J'#M?3 !2*>@BzNJ'#J<0 (...#'!7 8B}J'}o& !%ZL13BzNJ'zl# (--'#'!7 8B} 33  B
+M?+-
   B
+=/* !%ZL13BzN 33  B
+J<(*
   B
+:,' #!#B}J' "BzNJ'
 II>? ...FF=((&&)9:''(;<>? J'K :''5((&&)9:''(;< (,,,FFDE FF&&E$& && &Z[24	
 J'#J<0:;AB II :&&)::,'GH&&'MN&&E$ && &Z[2 (...FFMMHZL"9:((0?_Z'
|46 J'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@T-U)J)!!*i8!!"3Y?Z):; .V
 ,,,%9! ""3X5I5IJJJ  !2!7!7'6OJH	 &: -r&   c                   | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  ddt        j                  	       | j                  d
d       | j                  dd       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  d d       | j                  d!d"t        j                  	       | j                  d#d       | j                  d$d       | j                  d%d       | j                  d&d       | j                  d'd(t        j                  	       | j                  d)d       | j                  d*dt        j                  	       | j                  d+d       | j                  d,d       | j                  d-d       | j                  d.d       | j                  d/d0t        j                  	       | j                  d1dt        j                  	       | j                  d2d       | j                  d3d       | j                  d4d       | j                  d5d       | j                  d6d       | j                  d7d8t        j                  	       | j                  d9d:       | j                  d;d<       | j                  d=d>       | j                  d?d@       | j                  dAdB       | j                  dCdD       | j                  dEdF       | j                  dGdH       | j                  dIdJ       | j                  dKdL       | j                  dMdN       | j                  dOdP       | j                  dQdR       | j                  dSdT       | j                  dUdV       | j                  dWdX       | j                  dYdZ       | j                  d[d\       | j                  d]d^       | j                  d_d`       | j                  dadb       | j                  dcdd       | j                  dedf       | j                  dgdh       | j                  didj       | j                  dkdl       | j                  dmdn       | j                  dodp       | j                  dqdr       | j                  dsdt       | j                  dudv       | j                  dwdx       | j                  dydz       | j                  d{d|       | j                  d}d~       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  dd       | j                  dd«       | j                  ddī       | j                  ddƫ       | j                  ddȫ       | j                  ddʫ       | j                  dd̫       | j                  ddΫ       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j                  	       | j                  ddt        j
                  	       | j                  ddt        j
                  	       | j                  ddt        	       y )NabstractdctermsaccessRightsalternativeTitlezdcterms:alternativeaudiencedateAvailablezdcterms:available)rw   bibliographicCitation
conformsTor.   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:DSTrY   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:OCYrE   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   rj   r   rk   r   rl   )r!   s    r$   testUniqueNameAccessz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&   )rt   r9   ru   r9   rv   zt.Optional[str]rw   r   )__name__
__module____qualname__maxDiffr%   r(   r/   r>   rG   rO   rU   r   r   r~   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   rM   typingtunittestmusic21r   r   r   music21.musicxmlr   r   TestCaser	   r   mainTestr  r&   r$   <module>r     sV    " 	      -v	
8 v	
t zGT;' r&   