§
    ƒØj¶!  ã                  ó  — d dl mZ d dlmZ d dlmZ  ej        d¦  «        Z G d„ dej        ¦  «        Z G d„ d¦  «        Z	 G d	„ d
e	¦  «        Z
 G d„ de	¦  «        Z G d„ de	¦  «        Zedk    rd dlZ ej        ¦   «          dS dS )é    )Úannotations)Úenvironment)Úexceptions21zfeatures.outputFormatsc                  ó   — e Zd ZdS )ÚOutputFormatExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    ú“/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/features/outputFormats.pyr   r   	   s   € € € € € Ø€Dr   r   c                  ó0   — e Zd ZdZdd„Zd„ Zd	d„Zd
d„ZdS )ÚOutputFormatzR
    Provide output for a DataSet, which is passed in as an initial argument.
    Nc                ó"   — d | _         || _        d S ©N)ÚextÚ_dataSet)ÚselfÚdataSets     r   Ú__init__zOutputFormat.__init__   s   € àˆŒàˆŒˆˆr   c                ó   — dS )z4
        Get the header as a list of lines.
        Nr   )r   s    r   ÚgetHeaderLineszOutputFormat.getHeaderLines   s	   € ð 	ˆr   Tc                ó   — d S r   r   )r   ÚincludeClassLabelÚ	includeIdÚ	lineBreaks       r   Ú	getStringzOutputFormat.getString   s   € Øˆr   c                ó^  — |€ t                                | j        ¬¦  «        }t          |¦  «                             | j        ¦  «        st          d¦  «        ‚t          |dd¬¦  «        5 }|                     |                      ||¬¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |S )z^
        Write the file. If not file path is given, a temporary file will be written.
        N)Úsuffixz2Could not get a temp file with the right extensionÚwzutf-8)Úencoding©r   r   )	ÚenvironLocalÚgetTempFiler   ÚstrÚendswithr   ÚopenÚwriter   )r   Úfpr   r   Úfs        r   r(   zOutputFormat.write!   sî   € ð ˆ:Ý×)Ò)°´Ð)Ñ:Ô:ˆBÝ�2‰wŒw×Ò ¤Ñ)Ô)ð 	^Ý'Ð(\Ñ]Ô]Ð]Ý�"�c GÐ,Ñ,Ô,ð 	9°Ø�GŠG�D—N’NÐ5FØ-6ð #ñ 8ô 8ñ 9ô 9ð 9ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˆ	s   Á++B"Â"B&Â)B&r   ©TTN)NTT)r   r	   r
   Ú__doc__r   r   r   r(   r   r   r   r   r      si   € € € € € ðð ð ð  ð  ð  ðð ð ðð ð ð ðð ð ð ð ð r   r   c                  ó4   ‡ — e Zd ZdZdˆ fd„	Zdd„Zd	d„Zˆ xZS )
ÚOutputTabOrangezÊ
    Tab delimited file format used with Orange.

    For more information, see:

    https://orange3.readthedocs.io/projects/orange-data-mining-library/en/latest/tutorial/data.html#saving-the-data
    Nc                óZ   •— t          ¦   «                              |¬¦  «         d| _        d S )N©r   z.tab©Úsuperr   r   ©r   r   Ú	__class__s     €r   r   zOutputTabOrange.__init__8   ó)   ø€ Ý‰Œ×Ò ÐÑ)Ô)Ð)ØˆŒˆˆr   Tc                óZ  — g }|                      | j                             ||¬¦  «        ¦  «         g }| j                             ||¬¦  «        D ]I}|€|                      d¦  «         Œ|du r|                      d¦  «         Œ4|                      d¦  «         ŒJ|                      |¦  «         g }| j                             |¬¦  «        D ]I}|€|                      d¦  «         Œ|du r|                      d	¦  «         Œ4|                      d
¦  «         ŒJ|                      |¦  «         |S )aÚ  
        Get the header as a list of lines.

        >>> f = [features.jSymbolic.ChangesOfMeterFeature]
        >>> ds = features.DataSet()
        >>> ds.addFeatureExtractors(f)
        >>> of = features.outputFormats.OutputTabOrange(ds)
        >>> for x in of.getHeaderLines(): print(x)
        ['Identifier', 'Changes_of_Meter']
        ['string', 'discrete']
        ['meta', '']

        >>> ds = features.DataSet(classLabel='Composer')
        >>> ds.addFeatureExtractors(f)
        >>> of = features.outputFormats.OutputTabOrange(ds)
        >>> for x in of.getHeaderLines(): print(x)
        ['Identifier', 'Changes_of_Meter', 'Composer']
        ['string', 'discrete', 'discrete']
        ['meta', '', 'class']

        r"   NÚstringTÚdiscreteÚ
continuous©r   ÚmetaÚclassÚ )Úappendr   ÚgetAttributeLabelsÚgetDiscreteLabelsÚgetClassPositionLabels)r   r   r   ÚpostÚrowÚxs         r   r   zOutputTabOrange.getHeaderLines<   s^  € ð. ˆØ�Š�D”M×4Ò4Ø/¸9ð 5ñ Fô Fñ 	Gô 	Gð 	Gð ˆØ”×0Ò0Ø"3¸yð 1ñ Jô Jð 	)ð 	)ˆAàˆyØ—
’
˜8Ñ$Ô$Ð$Ð$Ø�d��Ø—
’
˜:Ñ&Ô&Ð&Ð&à—
’
˜<Ñ(Ô(Ð(Ð(Ø�Š�CÑÔÐð ˆØ”×5Ò5À	Ð5ÑJÔJð 	ð 	ˆAØˆyØ—
’
˜6Ñ"Ô"Ð"Ð"Ø�d��Ø—
’
˜7Ñ#Ô#Ð#Ð#à—
’
˜2‘”��Ø�Š�CÑÔÐØˆr   c                óN  — |€d}g }|                       ||¬¦  «        }|| j                             |¬¦  «        z   }|D ]S}g }|D ]$}	|                     t	          |	¦  «        ¦  «         Œ%|                     d                     |¦  «        ¦  «         ŒT|                     |¦  «        S )zT
        Get the complete DataSet as a string with the appropriate headers.
        Nú
r"   ©r   ú	©r   r   ÚgetFeaturesAsListr>   r%   Újoin©
r   r   r   r   ÚmsgÚheaderÚdatarC   ÚsubÚes
             r   r   zOutputTabOrange.getStringo   sÉ   € ð ÐØˆIØˆØ×$Ò$Ð7HØ/8ð %ñ :ô :ˆà˜œ×7Ò7Ø/ð 8ñ 1ô 1ñ 1ˆàð 	'ð 	'ˆCØˆCØð #ð #�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ø�JŠJ�t—y’y ‘~”~Ñ&Ô&Ð&Ð&Ø�~Š~˜cÑ"Ô"Ð"r   r   ©TTr+   ©r   r	   r
   r,   r   r   r   Ú__classcell__©r4   s   @r   r.   r.   /   sp   ø€ € € € € ðð ðð ð ð ð ð ð1ð 1ð 1ð 1ðf#ð #ð #ð #ð #ð #ð #ð #r   r.   c                  ó4   ‡ — e Zd ZdZdˆ fd„	Zdd„Zd	d„Zˆ xZS )
Ú	OutputCSVz%
    Comma-separated value list.
    Nc                óZ   •— t          ¦   «                              |¬¦  «         d| _        d S )Nr0   z.csvr1   r3   s     €r   r   zOutputCSV.__init__‡   r5   r   Tc                óh   — g }|                      | j                             ||¬¦  «        ¦  «         |S )a`  
        Get the header as a list of lines.

        >>> f = [features.jSymbolic.ChangesOfMeterFeature]
        >>> ds = features.DataSet(classLabel='Composer')
        >>> ds.addFeatureExtractors(f)
        >>> of = features.outputFormats.OutputCSV(ds)
        >>> of.getHeaderLines()[0]
        ['Identifier', 'Changes_of_Meter', 'Composer']
        r"   )r>   r   r?   )r   r   r   rB   s       r   r   zOutputCSV.getHeaderLines‹   sG   € ð ˆØ�Š�D”M×4Ò4Ø/¸9ð 5ñ Fô Fñ 	Gô 	Gð 	Gàˆr   c                óP  — |€d}g }|                       ||¬¦  «        }|| j                             ||¬¦  «        z   }|D ]S}g }|D ]$}	|                     t	          |	¦  «        ¦  «         Œ%|                     d                     |¦  «        ¦  «         ŒT|                     |¦  «        S )NrF   r"   ú,rI   rL   s
             r   r   zOutputCSV.getString›   sÌ   € ØÐØˆIØˆØ×$Ò$Ð7HØ/8ð %ñ :ô :ˆà˜œ×7Ò7Ø/¸9ð 8ñ Fô Fñ Fˆàð 	&ð 	&ˆCØˆCØð #ð #�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ø�JŠJ�s—x’x ‘}”}Ñ%Ô%Ð%Ð%Ø�~Š~˜cÑ"Ô"Ð"r   r   rR   r+   rS   rU   s   @r   rW   rW   ‚   so   ø€ € € € € ðð ðð ð ð ð ð ðð ð ð ð #ð #ð #ð #ð #ð #ð #ð #r   rW   c                  ó4   ‡ — e Zd ZdZdˆ fd„	Zdd„Zd	d„Zˆ xZS )
Ú
OutputARFFa  
    An ARFF (Attribute-Relation File Format) file.

    See
    https://web.archive.org/web/20160212022757/http://weka.wikispaces.com/ARFF+%28stable+version%29
    for more details

    >>> oa = features.outputFormats.OutputARFF()
    >>> oa.ext
    '.arff'
    Nc                óZ   •— t          ¦   «                              |¬¦  «         d| _        d S )Nr0   z.arffr1   r3   s     €r   r   zOutputARFF.__init__¸   s)   ø€ Ý‰Œ×Ò ÐÑ)Ô)Ð)ØˆŒˆˆr   Tc                óÀ  — g }| j                              ||¬¦  «        }| j                              ||¬¦  «        }| j                              |¬¦  «        }|                     d| j                              ¦   «         › �¦  «         t          |¦  «        D ]´\  }}||         }	||         }
|
sT|	€|                     d|› d�¦  «         Œ3|	du r|                     d|› d�¦  «         ŒQ|                     d|› d�¦  «         Œk| j                              ¦   «         }d	                     |¦  «        }|                     d
|z   dz   ¦  «         Œµ|                     d¦  «         |S )aÑ  
        Get the header as a list of lines.

        >>> f = [features.jSymbolic.ChangesOfMeterFeature]
        >>> ds = features.DataSet(classLabel='Composer')
        >>> ds.addFeatureExtractors(f)
        >>> of = features.outputFormats.OutputARFF(ds)
        >>> for x in of.getHeaderLines(): print(x)
        @RELATION Composer
        @ATTRIBUTE Identifier STRING
        @ATTRIBUTE Changes_of_Meter NUMERIC
        @ATTRIBUTE class {}
        @DATA

        r"   r:   z
@RELATION Nz@ATTRIBUTE z STRINGTz NUMERICr[   z@ATTRIBUTE class {Ú}z@DATA)	r   r?   r@   rA   r>   ÚgetClassLabelÚ	enumerateÚgetUniqueClassValuesrK   )r   r   r   rB   ÚattrsÚdiscreteLabelsÚclassLabelsÚiÚ	attrLabelr8   Ú
classLabelÚvaluesÚjoineds                r   r   zOutputARFF.getHeaderLines¼   sš  € ð  ˆð ”×0Ò0Ø/¸9ð 1ñ Fô Fˆàœ×8Ò8Ø/¸9ð 9ñ Fô Fˆà”m×:Ò:ÀYÐ:ÑOÔOˆà�ŠÐ@ ¤×!<Ò!<Ñ!>Ô!>Ð@Ð@ÑAÔAÐAå% eÑ,Ô,ð 	Að 	A‰LˆAˆyØ% aÔ(ˆHØ$ QœˆJØð 
AØÐ#Ø—K’KÐ @¨iÐ @Ð @Ð @ÑAÔAÐAÐAØ Ð%Ð%Ø—K’KÐ A¨iÐ AÐ AÐ AÑBÔBÐBÐBà—K’KÐ A¨iÐ AÐ AÐ AÑBÔBÐBÐBàœ×;Ò;Ñ=Ô=�ØŸš &Ñ)Ô)�Ø—’Ð0°6Ñ9¸CÑ?Ñ@Ô@Ð@Ð@à�Š�GÑÔÐØˆr   c                ó|  — |€d}g }|                       ||¬¦  «        }|D ]}|                     |¦  «         Œ| j                             |¬¦  «        }|D ]S}g }|D ]$}	|                     t	          |	¦  «        ¦  «         Œ%|                     d                     |¦  «        ¦  «         ŒT|                     |¦  «        S )NrF   r"   rG   r[   )r   r>   r   rJ   r%   rK   )
r   r   r   r   rM   rN   rC   rO   rP   rQ   s
             r   r   zOutputARFF.getStringé   sâ   € ØÐØˆIàˆà×$Ò$Ð7HØ/8ð %ñ :ô :ˆàð 	ð 	ˆCØ�JŠJ�s‰OŒOˆOˆOàŒ}×.Ò.Ø/ð /ñ 1ô 1ˆð ð 	&ð 	&ˆCØˆCØð #ð #�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ø�JŠJ�s—x’x ‘}”}Ñ%Ô%Ð%Ð%Ø�~Š~˜cÑ"Ô"Ð"r   r   rR   r+   rS   rU   s   @r   r]   r]   «   sp   ø€ € € € € ð
ð 
ðð ð ð ð ð ð+ð +ð +ð +ðZ#ð #ð #ð #ð #ð #ð #ð #r   r]   Ú__main__N)Ú
__future__r   Úmusic21r   r   ÚEnvironmentr#   ÚMusic21Exceptionr   r   r.   rW   r]   r   ÚmainTestr   r   r   ú<module>rs      sj  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à&ˆ{Ô&Ð'?Ñ@Ô@€ð	ð 	ð 	ð 	ð 	˜LÔ9ñ 	ô 	ð 	ðð ð ð ð ñ ô ð ðDP#ð P#ð P#ð P#ð P#�lñ P#ô P#ð P#ðf&#ð &#ð &#ð &#ð &#�ñ &#ô &#ð &#ðRQ#ð Q#ð Q#ð Q#ð Q#�ñ Q#ô Q#ð Q#ðh ˆzÒÐØ€N€N€NØ€GÔÑÔÐÐÐð Ðr   