Ë
    S^(h}h  ã                   óâ   — d Z ddlZddlmZmZ ddlmZ ddlmZ  ej                  e
«      Zg d¢Zg d¢Zd	gZg d
¢Zd„ Zd„ Zd„ Zd„ ZeeeedœZ G d„ de«      Z G d„ de«      Z G d„ de«      Zy)zJukebox configurationé    N)ÚListÚUnioné   )ÚPretrainedConfig)Úlogging)OÚ
block_attnÚtranspose_block_attnÚprev_block_attnr   r	   r
   r   r	   r
   r   r	   r
   r   r	   r
   r   r	   r
   Úcross_attentionr   r	   r
   r   r	   r
   r   r	   r
   r   r   r	   r
   r   r	   r
   r   r	   r
   r   r   r	   r
   r   r	   r
   r   r	   r
   r   r   r	   r
   r   r	   r
   r   r	   r
   r   r   r	   r
   r   r	   r
   r   r	   r
   r   r   r	   r
   r   r	   r
   r   r	   r
   r   )r   r	   r
   Údense_attention)Ú
prime_attnr   Ú
dense_attnc                 ó   — t         d   S )Nr   )Ú_FullDenseAttention©Úlayers    úz/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/deprecated/jukebox/configuration_jukebox.pyÚfull_dense_attentionr   q   s   € Ü˜qÑ!Ð!ó    c                 ó   — t         | dz     S )Né   )Ú_RawColumnPreviousRowAttentionr   s    r   Ú!raw_column_previous_row_attentionr   u   s   € Ü)¨%°!©)Ñ4Ð4r   c                 ó   — t         | dz     S )NéO   )Ú_LARGE_ATTENTIONr   s    r   Ú large_separated_enc_dec_w_lyricsr   y   s   € Ü˜E B™JÑ'Ð'r   c                 óB   — | dz  dk(  rt         | dz     S t        | dz     S )Né   é   r   )Ú_PrimePrimeDenseAttentionr   r   s    r   Úenc_dec_with_lyricsr"   }   s,   € Øˆr�z�RÒÜ(¨°©Ñ3Ð3Ü)¨%°!©)Ñ4Ð4r   )r   r   r   r"   c            *       óÂ   — e Zd ZdZdZdddœZdddd	d
ddddddddddddddddddddgdddddddddddg d¢g d¢dd dddf*d!„Ze	 d&d"ee	e
j                  f   d#d$fd%„«       Zy)'ÚJukeboxPriorConfiga"  
        This is the configuration class to store the configuration of a [`JukeboxPrior`]. It is used to instantiate a
        `JukeboxPrior` according to the specified arguments, defining the model architecture. Instantiating a
        configuration with the defaults will yield a similar configuration to that of the top level prior from the
        [openai/jukebox-1b-lyrics](https://huggingface.co/openai/jukebox
    -1b-lyrics) architecture.

        Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
        documentation from [`PretrainedConfig`] for more information.



    Args:
        act_fn (`str`, *optional*, defaults to `"quick_gelu"`):
            Activation function.
        alignment_head (`int`, *optional*, defaults to 2):
            Head that is responsible of the alignment between lyrics and music. Only used to compute the lyric to audio
            alignment
        alignment_layer (`int`, *optional*, defaults to 68):
            Index of the layer that is responsible of the alignment between lyrics and music. Only used to compute the
            lyric to audio alignment
        attention_multiplier (`float`, *optional*, defaults to 0.25):
            Multiplier coefficient used to define the hidden dimension of the attention layers. 0.25 means that
            0.25*width of the model will be used.
        attention_pattern (`str`, *optional*, defaults to `"enc_dec_with_lyrics"`):
            Which attention pattern to use for the decoder/
        attn_dropout (`int`, *optional*, defaults to 0):
            Dropout probability for the post-attention layer dropout in the decoder.
        attn_res_scale (`bool`, *optional*, defaults to `False`):
            Whether or not to scale the residuals in the attention conditioner block.
        blocks (`int`, *optional*, defaults to 64):
            Number of blocks used in the `block_attn`. A sequence of length seq_len is factored as `[blocks, seq_len //
            blocks]` in the `JukeboxAttention` layer.
        conv_res_scale (`int`, *optional*):
            Whether or not to scale the residuals in the conditioner block. Since the top level prior does not have a
            conditioner, the default value is to None and should not be modified.
        num_layers (`int`, *optional*, defaults to 72):
            Number of layers of the transformer architecture.
        emb_dropout (`int`, *optional*, defaults to 0):
            Embedding dropout used in the lyric decoder.
        encoder_config (`JukeboxPriorConfig`, *optional*) :
            Configuration of the encoder which models the prior on the lyrics.
        encoder_loss_fraction (`float`, *optional*, defaults to 0.4):
            Multiplication factor used in front of the lyric encoder loss.
        hidden_size (`int`, *optional*, defaults to 2048):
            Hidden dimension of the attention layers.
        init_scale (`float`, *optional*, defaults to 0.2):
            Initialization scales for the prior modules.
        is_encoder_decoder (`bool`, *optional*, defaults to `True`):
            Whether or not the prior is an encoder-decoder model. In case it is not, and `nb_relevant_lyric_tokens` is
            greater than 0, the `encoder` args should be specified for the lyric encoding.
        mask (`bool`, *optional*, defaults to `False`):
            Whether or not to mask the previous positions in the attention.
        max_duration (`int`, *optional*, defaults to 600):
            Maximum supported duration of the generated song in seconds.
        max_nb_genres (`int`, *optional*, defaults to 1):
            Maximum number of genres that can be used to condition the model.
        merged_decoder (`bool`, *optional*, defaults to `True`):
            Whether or not the decoder and the encoder inputs are merged. This is used for the separated
            encoder-decoder architecture
        metadata_conditioning (`bool`, *optional*, defaults to `True)`:
            Whether or not to condition on the artist and genre metadata.
        metadata_dims (`List[int]`, *optional*, defaults to `[604, 7898]`):
            Number of genres and the number of artists that were used to train the embedding layers of the prior
            models.
        min_duration (`int`, *optional*, defaults to 0):
            Minimum duration of the generated audio on which the model was trained.
        mlp_multiplier (`float`, *optional*, defaults to 1.0):
            Multiplier coefficient used to define the hidden dimension of the MLP layers. 0.25 means that 0.25*width of
            the model will be used.
        music_vocab_size (`int`, *optional*, defaults to 2048):
            Number of different music tokens. Should be similar to the `JukeboxVQVAEConfig.nb_discrete_codes`.
        n_ctx (`int`, *optional*, defaults to 6144):
            Number of context tokens for each prior. The context tokens are the music tokens that are attended to when
            generating music tokens.
        n_heads (`int`, *optional*, defaults to 2):
                Number of attention heads.
        nb_relevant_lyric_tokens (`int`, *optional*, defaults to 384):
            Number of lyric tokens that are used when sampling a single window of length `n_ctx`
        res_conv_depth (`int`, *optional*, defaults to 3):
            Depth of the `JukeboxDecoderConvBock` used to upsample the previously sampled audio in the
            `JukeboxMusicTokenConditioner`.
        res_conv_width (`int`, *optional*, defaults to 128):
            Width of the `JukeboxDecoderConvBock` used to upsample the previously sampled audio in the
            `JukeboxMusicTokenConditioner`.
        res_convolution_multiplier (`int`, *optional*, defaults to 1):
            Multiplier used to scale the `hidden_dim` of the `JukeboxResConv1DBlock`.
        res_dilation_cycle (`int`, *optional*):
            Dilation cycle used to define the `JukeboxMusicTokenConditioner`. Usually similar to the ones used in the
            corresponding level of the VQVAE. The first prior does not use it as it is not conditioned on upper level
            tokens.
        res_dilation_growth_rate (`int`, *optional*, defaults to 1):
            Dilation grow rate used between each convolutionnal block of the `JukeboxMusicTokenConditioner`
        res_downs_t (`List[int]`, *optional*, defaults to `[3, 2, 2]`):
            Downsampling rates used in the audio conditioning network
        res_strides_t (`List[int]`, *optional*, defaults to `[2, 2, 2]`):
            Striding used in the audio conditioning network
        resid_dropout (`int`, *optional*, defaults to 0):
            Residual dropout used in the attention pattern.
        sampling_rate (`int`, *optional*, defaults to 44100):
            Sampling rate used for training.
        spread (`int`, *optional*):
            Spread used in the `summary_spread_attention` pattern
        timing_dims (`int`, *optional*, defaults to 64):
            Dimension of the timing embedding.
        zero_out (`bool`, *optional*, defaults to `False`):
            Whether or not to zero out convolution weights when initializing.
    Újukebox_priorÚn_positionsÚn_head)Úmax_position_embeddingsÚnum_attention_headsÚ
quick_gelur   é   éD   g      Ð?r"   Fé@   NéH   gš™™™™™Ù?é   çš™™™™™É?TéP   iX  é   i\  iÚ  g      ð?i   i€  r   é€   ©r   r+   r+   ©r+   r+   r+   éD¬  c+                 óv  — || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        |�t        di |¤Ž| _        nd | _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        | | _        |!| _         |"| _!        |#| _"        |$| _#        |%| _$        |&| _%        |'| _&        |(| _'        |)| _(        || _)        |*| _*        y )N© )+Úact_fnÚalignment_headÚalignment_layerÚattention_multiplierÚattention_patternÚattn_dropoutÚattn_res_scaleÚblocksÚconv_res_scaleÚ
num_layersÚemb_dropoutÚmusic_vocab_sizer$   Úencoder_configÚencoder_loss_fractionÚ
init_scaleÚis_encoder_decoderÚlyric_vocab_sizeÚlevelÚmaskÚmax_durationÚmax_nb_genresÚmerged_decoderÚmetadata_conditioningÚmetadata_dimsÚmin_durationÚmlp_multiplierÚn_ctxÚn_headsÚnb_relevant_lyric_tokensÚres_conv_depthÚres_conv_widthÚres_convolution_multiplierÚres_dilation_cycleÚres_dilation_growth_rateÚres_downs_tÚres_strides_tÚresid_dropoutÚsampling_rateÚspreadÚtiming_dimsÚhidden_sizeÚzero_out),Úselfr9   rJ   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rE   rF   ra   rG   rH   rI   rK   rL   rM   rN   rO   rP   rQ   rR   rD   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rb   Úkwargss,                                               r   Ú__init__zJukeboxPriorConfig.__init__ÿ   sa  € ð\ ˆŒØ,ˆÔØ.ˆÔØ$8ˆÔ!Ø!2ˆÔØ(ˆÔØ,ˆÔØˆŒØ,ˆÔØ$ˆŒØ&ˆÔØ 0ˆÔØÐ%Ü"4Ñ"F°~Ñ"FˆDÕà"&ˆDÔØ%:ˆÔ"Ø$ˆŒØ"4ˆÔØ 0ˆÔØˆŒ
ØˆŒ	Ø(ˆÔØ*ˆÔØ,ˆÔØ%:ˆÔ"Ø*ˆÔØ(ˆÔØ,ˆÔØˆŒ
ØˆŒØ(@ˆÔ%Ø,ˆÔØ,ˆÔØ*DˆÔ'Ø"4ˆÔØ(@ˆÔ%Ø&ˆÔØ*ˆÔØ*ˆÔØ*ˆÔØˆŒØ&ˆÔØ&ˆÔØ ˆ�r   Úpretrained_model_name_or_pathÚreturnr   c                 óD  — | j                  |«        | j                  |fi |¤Ž\  }}|j                  d«      dk(  r|d|› �   }d|v rGt        | d«      r;|d   | j                  k7  r)t
        j                  d|d   › d| j                  › d�«        | j                  |fi |¤ŽS )NÚ
model_typeÚjukeboxÚprior_úYou are using a model of type ú  to instantiate a model of type úN. This is not supported for all configurations of models and can yield errors.©Ú_set_token_in_kwargsÚget_config_dictÚgetÚhasattrri   ÚloggerÚwarningÚ	from_dict)Úclsrf   rJ   rd   Úconfig_dicts        r   Úfrom_pretrainedz"JukeboxPriorConfig.from_pretrained[  sÀ   € ð 	× Ñ  Ô(à1˜c×1Ñ1Ð2OÑZÐSYÑZÑˆ�Vð �?‰?˜<Ó(¨IÒ5Ø%¨¨u¨gÐ&6Ñ7ˆKà˜;Ñ&¬7°3¸Ô+EÈ+ÐVbÑJcÐgj×guÑguÒJuÜ�N‰NØ0°¸\Ñ1JÐ0KÐKkØ—>‘>Ð"Ð"pðrôð
 ˆs�}‰}˜[Ñ3¨FÑ3Ð3r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ri   Úattribute_mapre   Úclassmethodr   ÚstrÚosÚPathLikery   r8   r   r   r$   r$   ‹   sÞ   „ ñkðZ !€Jà#0Ø'ñ€Mð ØØØØ!Ø/ØØØØØØØØ!ØØØØØØØØØ"Ø˜D�kØØØØØØ!$ØØØ#$ØØ!"ÚÚØØØØØóWZ!ðx àKLñ4Ø,1°#°r·{±{Ð2BÑ,Cð4à	ò4ó ñ4r   r$   c                   óŒ   — e Zd ZdZdZddddddg d	¢d
dg d¢ddddd
g d¢g d¢dddfd„Zedeee	j                  f   ddfd„«       Zy)ÚJukeboxVQVAEConfigaö  
    This is the configuration class to store the configuration of a [`JukeboxVQVAE`]. It is used to instantiate a
    `JukeboxVQVAE` according to the specified arguments, defining the model architecture. Instantiating a configuration
    with the defaults will yield a similar configuration to that of the VQVAE from
    [openai/jukebox-1b-lyrics](https://huggingface.co/openai/jukebox-1b-lyrics) architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.

    Args:
        act_fn (`str`, *optional*, defaults to `"relu"`):
            Activation function of the model.
        nb_discrete_codes (`int`, *optional*, defaults to 2048):
            Number of codes of the VQVAE.
        commit (`float`, *optional*, defaults to 0.02):
            Commit loss multiplier.
        conv_input_shape (`int`, *optional*, defaults to 1):
            Number of audio channels.
        conv_res_scale (`bool`, *optional*, defaults to `False`):
            Whether or not to scale the residuals of the `JukeboxResConv1DBlock`.
        embed_dim (`int`, *optional*, defaults to 64):
            Embedding dimension of the codebook vectors.
        hop_fraction (`List[int]`, *optional*, defaults to `[0.125, 0.5, 0.5]`):
            Fraction of non-intersecting window used when continuing the sampling process.
        levels (`int`, *optional*, defaults to 3):
            Number of hierarchical levels that used in the VQVAE.
        lmu (`float`, *optional*, defaults to 0.99):
            Used in the codebook update, exponential moving average coefficient. For more detail refer to Appendix A.1
            of the original [VQVAE paper](https://arxiv.org/pdf/1711.00937v2.pdf)
        multipliers (`List[int]`, *optional*, defaults to `[2, 1, 1]`):
            Depth and width multipliers used for each level. Used on the `res_conv_width` and `res_conv_depth`
        res_conv_depth (`int`, *optional*, defaults to 4):
            Depth of the encoder and decoder block. If no `multipliers` are used, this is the same for each level.
        res_conv_width (`int`, *optional*, defaults to 32):
            Width of the encoder and decoder block. If no `multipliers` are used, this is the same for each level.
        res_convolution_multiplier (`int`, *optional*, defaults to 1):
            Scaling factor of the hidden dimension used in the `JukeboxResConv1DBlock`.
        res_dilation_cycle (`int`, *optional*):
            Dilation cycle value used in the `JukeboxResnet`. If an int is used, each new Conv1 block will have a depth
            reduced by a power of `res_dilation_cycle`.
        res_dilation_growth_rate (`int`, *optional*, defaults to 3):
            Resnet dilation growth rate used in the VQVAE (dilation_growth_rate ** depth)
        res_downs_t (`List[int]`, *optional*, defaults to `[3, 2, 2]`):
            Downsampling rate for each level of the hierarchical VQ-VAE.
        res_strides_t (`List[int]`, *optional*, defaults to `[2, 2, 2]`):
            Stride used for each level of the hierarchical VQ-VAE.
        sample_length (`int`, *optional*, defaults to 1058304):
            Provides the max input shape of the VQVAE. Is used to compute the input shape of each level.
        init_scale (`float`, *optional*, defaults to 0.2):
            Initialization scale.
        zero_out (`bool`, *optional*, defaults to `False`):
            Whether or not to zero out convolution weights when initializing.
    Újukebox_vqvaeÚrelur/   g{®Gáz”?r2   Fr-   )g      À?ç      à?r‡   r   g®Gáz®ï?)r+   r2   r2   r   é    Nr4   r5   i & r0   c                 ó  — || _         || _        || _        || _        || _        || _        || _        || _        || _        || _	        || _
        |
| _        || _        || _        |	| _        || _        || _        || _        || _        || _        y )N)Úhop_fractionÚconv_input_shapeÚsample_lengthÚlevelsÚ	embed_dimÚnb_discrete_codesrW   rV   rX   rZ   rY   Úmultipliersr[   r\   ÚlmuÚcommitrA   r9   rG   rb   )rc   r9   r�   r’   r‹   rA   rŽ   rŠ   r�   r‘   r�   rV   rW   rX   rY   rZ   r[   r\   rŒ   rG   rb   rd   s                         r   re   zJukeboxVQVAEConfig.__init__©  sŸ   € ð0 )ˆÔØ 0ˆÔØ*ˆÔð ˆŒØ"ˆŒØ!2ˆÔØ,ˆÔØ,ˆÔØ*DˆÔ'Ø(@ˆÔ%Ø"4ˆÔØ&ˆÔØ&ˆÔØ*ˆÔØˆŒØˆŒØ,ˆÔØˆŒØ$ˆŒØ ˆ�r   rf   rg   r   c                 ó>  — | j                  |«        | j                  |fi |¤Ž\  }}|j                  d«      dk(  r|d   }d|v rGt        | d«      r;|d   | j                  k7  r)t
        j                  d|d   › d| j                  › d�«        | j                  |fi |¤ŽS )Nri   rj   Úvqvae_configrl   rm   rn   ro   )rw   rf   rd   rx   s       r   ry   z"JukeboxVQVAEConfig.from_pretrainedØ  s·   € à× Ñ  Ô(à1˜c×1Ñ1Ð2OÑZÐSYÑZÑˆ�Vð �?‰?˜<Ó(¨IÒ5Ø% nÑ5ˆKà˜;Ñ&¬7°3¸Ô+EÈ+ÐVbÑJcÐgj×guÑguÒJuÜ�N‰NØ0°¸\Ñ1JÐ0KÐKkØ—>‘>Ð"Ð"pðrôð
 ˆs�}‰}˜[Ñ3¨FÑ3Ð3r   )rz   r{   r|   r}   ri   re   r   r   r€   r�   r‚   ry   r8   r   r   r„   r„   p  s„   „ ñ4ðl !€Jð ØØØØØÚ&ØØÚØØØ#$ØØ!"ÚÚØØØó+-!ð^ ð4¸EÀ#ÀrÇ{Á{ÐBRÑ<Sð 4Ðbtò 4ó ñ4r   r„   c                   ód   ‡ — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 dˆ fd„	Zedee   de	fd„«       Z
ˆ fd„Zˆ xZS )	ÚJukeboxConfigaW  
    This is the configuration class to store the configuration of a [`JukeboxModel`].

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information. Instantiating a configuration with the defaults will
    yield a similar configuration to that of
    [openai/jukebox-1b-lyrics](https://huggingface.co/openai/jukebox-1b-lyrics) architecture.


    The downsampling and stride are used to determine downsampling of the input sequence. For example, downsampling =
    (5,3), and strides = (2, 2) will downsample the audio by 2^5 = 32 to get the first level of codes, and 2**8 = 256
    to get the second level codes. This is mostly true for training the top level prior and the upsamplers.

    Args:
        vqvae_config (`JukeboxVQVAEConfig`, *optional*):
            Configuration for the `JukeboxVQVAE` model.
        prior_config_list (`List[JukeboxPriorConfig]`, *optional*):
            List of the configs for each of the `JukeboxPrior` of the model. The original architecture uses 3 priors.
        nb_priors (`int`, *optional*, defaults to 3):
            Number of prior models that will sequentially sample tokens. Each prior is conditional auto regressive
            (decoder) model, apart from the top prior, which can include a lyric encoder. The available models were
            trained using a top prior and 2 upsampler priors.
        sampling_rate (`int`, *optional*, defaults to 44100):
            Sampling rate of the raw audio.
        timing_dims (`int`, *optional*, defaults to 64):
            Dimensions of the JukeboxRangeEmbedding layer which is equivalent to traditional positional embedding
            layer. The timing embedding layer converts the absolute and relative position in the currently sampled
            audio to a tensor of length `timing_dims` that will be added to the music tokens.
        min_duration (`int`, *optional*, defaults to 0):
            Minimum duration of the audios to generate
        max_duration (`float`, *optional*, defaults to 600.0):
            Maximum duration of the audios to generate
        max_nb_genres (`int`, *optional*, defaults to 5):
            Maximum number of genres that can be used to condition a single sample.
        metadata_conditioning (`bool`, *optional*, defaults to `True`):
            Whether or not to use metadata conditioning, corresponding to the artist, the genre and the min/maximum
            duration.

    Example:

    ```python
    >>> from transformers import JukeboxModel, JukeboxConfig

    >>> # Initializing a Jukebox configuration
    >>> configuration = JukeboxConfig()

    >>> # Initializing a model from the configuration
    >>> model = JukeboxModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```
    rj   c
                 ó4  •— |€i }t         j                  d«       t        di |¤Ž| _        |�|D �cg c]  }t	        di |¤Ž‘Œ c}| _        nmg | _        t        |«      D ]X  }|
j                  d|› �d «      }|€i }t         j                  d|› d�«       | j
                  j                  t	        di |¤Ž«       ŒZ | j                  j                  | _	        || _
        || _        || _        || _        || _        || _        |	| _        t#        ‰| �H  di |
¤Ž y c c}w )NzHvqvae_config is None. initializing the JukeboxVQVAE with default values.rk   zQ's  config is None. Initializing the JukeboxPriorConfig list with default values.r8   )rt   Úinfor„   r”   r$   Úprior_configsÚrangeÚpopÚappendrŠ   Ú	nb_priorsrM   r^   r`   rQ   rL   rO   Úsuperre   )rc   r”   Úprior_config_listr�   r^   r`   rQ   rL   rM   rO   rd   Úprior_configÚ	prior_idxÚ	__class__s                €r   re   zJukeboxConfig.__init__$  s0  ø€ ð ÐØˆLÜ�K‰KÐbÔcä.Ñ>°Ñ>ˆÔØÐ(ØYjÖ!kÈÔ"4Ñ"D°|Ó"DÒ!kˆDÕà!#ˆDÔÜ" 9Ó-ò N�	Ø%Ÿz™z¨F°9°+Ð*>ÀÓE�ØÐ'Ø#%�LÜ—K‘KØ   ð ,#ð #ôð ×"Ñ"×)Ñ)Ô*<Ñ*L¸|Ñ*LÕMðNð !×-Ñ-×:Ñ:ˆÔà"ˆŒð +ˆÔØ*ˆÔØ&ˆÔØ(ˆÔØ(ˆÔØ%:ˆÔ"ä‰ÑÑ"˜6Ó"ùò3 "ls   ±Dr™   r”   c                 óx   — |D �cg c]  }|j                  «       ‘Œ }} | d||j                  «       dœ|¤ŽS c c}w )zí
        Instantiate a [`JukeboxConfig`] (or a derived class) from clip text model configuration and clip vision model
        configuration.

        Returns:
            [`JukeboxConfig`]: An instance of a configuration object
        )rŸ   Úvqvae_config_dictr8   )Úto_dict)rw   r™   r”   rd   ÚconfigrŸ   s         r   Úfrom_configszJukeboxConfig.from_configsR  sF   € ð =JÖJ°&˜VŸ^™^Õ-ÐJÐÐJÙÐkÐ%6È,×J^ÑJ^ÓJ`ÑkÐdjÑkÐkùò Ks   …7c                 óŽ   •— t         ‰| �  «       }|j                  d«      D �cg c]  }|j                  «       ‘Œ c}|d<   |S c c}w )Nr™   rŸ   )rž   r¥   r›   )rc   Úresultr¦   r¢   s      €r   r¥   zJukeboxConfig.to_dict^  sA   ø€ ä‘‘Ó"ˆØFLÇjÁjÐQ`ÓFaÖ&b¸F v§~¡~Õ'7Ò&bˆÐ"Ñ#Øˆùò 'cs   £A)	NNr   r6   r-   r   g     À‚@é   T)rz   r{   r|   r}   ri   re   r   r   r$   r„   r§   r¥   Ú__classcell__)r¢   s   @r   r–   r–   ë  sj   ø„ ñ4ðl €Jð ØØØØØØØØ"õ,#ð\ ð	l¨Ð.@Ñ)Að 	lÐQcò 	ló ð	l÷ð r   r–   )r}   r�   Útypingr   r   Úconfiguration_utilsr   Úutilsr   Ú
get_loggerrz   rt   r   r   r   r!   r   r   r   r"   ÚATTENTION_PATTERNSr$   r„   r–   r8   r   r   ú<module>r±      s¥   ðñ ã 	ß å 4Ý ð 
ˆ×	Ñ	˜HÓ	%€òPÐ òb "[Ð Ø(Ð)Ð ÚFÐ ò"ò5ò(ò5ð 1Ø)JØ(HØ.ñ	Ð ôb4Ð)ô b4ôJx4Ð)ô x4ôvwÐ$õ wr   