§
    ‹Ÿj·W  ã                  óÄ  — d Z ddlmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZmZ d
dlmZmZmZm Z  ej!        r%ej"        ej#        ej$        ej                 f         Z%nej        Z% G d„ de&¦  «        Z' G d„ de'¦  «        Z( G d„ de¦  «        Z) G d„ de)¦  «        Z* ej+        dd¬¦  «        Z, G d„ de*¦  «        Z-dS )z/A base class for objects that are configurable.é    )ÚannotationsN)Údeepcopy)Údedent)
ÚAnyÚ	ContainerÚDictÚ	HasTraitsÚInstanceÚ	TraitTypeÚdefaultÚobserveÚobserve_compatÚvalidate)Úwarnings)ÚBunch)ÚindentÚwrap_paragraphsé   )ÚConfigÚDeferredConfigÚLazyConfigValueÚ_is_section_keyc                  ó   — e Zd ZdS )ÚConfigurableErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    új/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/traitlets/config/configurable.pyr   r   (   ó   € € € € € Ø€Dr    r   c                  ó   — e Zd ZdS )ÚMultipleInstanceErrorNr   r   r    r!   r$   r$   ,   r"   r    r$   c                  ó`  ‡ — e Zd Z eedi ¦  «        Z edd¬¦  «        Zd+ˆ fd	„Zed,d„¦   «         Z	d-d„Z
	 	 d.d/d„Z ed¦  «        ed0d„¦   «         ¦   «         Zd1d„Zed2d3d„¦   «         Ze	 	 d.d4d"„¦   «         Zed2d5d#„¦   «         Zed6d'„¦   «         Zed2d7d)„¦   «         Zed8d*„¦   «         Zˆ xZS )9ÚConfigurabler   z*traitlets.config.configurable.ConfigurableT)Ú
allow_noneÚkwargsút.AnyÚreturnÚNonec                óæ  •‡‡— ‰                      dd¦  «        }|�'‰                     dd¦  «        €
|j        ‰d<   || _        ‰                      dd¦  «        } t	          ¦   «         j        d	i ‰¤Ž t          ¦   «         Šd
ˆˆfd„}|                      |¦  «         |�|| _        n|                      | j        ¦  «         |  	                    |¦  «         ‰D ]}t          | |‰|         ¦  «         ŒdS )a„  Create a configurable given a config config.

        Parameters
        ----------
        config : Config
            If this is empty, default values are used. If config is a
            :class:`Config` instance, it will be used to configure the
            instance.
        parent : Configurable instance, optional
            The parent Configurable instance of this object.

        Notes
        -----
        Subclasses of Configurable must call the :meth:`__init__` method of
        :class:`Configurable` *before* doing anything else and using
        :func:`super`::

            class MyConfigurable(Configurable):
                def __init__(self, config=None):
                    super(MyConfigurable, self).__init__(config=config)
                    # Then any other code you need to finish initialization.

        This ensures that instances will be configured properly.
        ÚparentNÚconfigÚchanger   r*   r+   c                óR   •— | j         ‰v r‰                     | j         ¦  «         dS dS )z‚Record traits set by both config and kwargs.

            They will need to be overridden again after loading config.
            N)ÚnameÚadd)r/   Úconfig_override_namesr(   s    €€r!   Únotice_config_overridez5Configurable.__init__.<locals>.notice_config_overridea   s6   ø€ ð
 Œ{˜fÐ$Ð$Ø%×)Ò)¨&¬+Ñ6Ô6Ð6Ð6Ð6ð %Ð$r    r   ©r/   r   r*   r+   )ÚpopÚgetr.   r-   ÚsuperÚ__init__Úsetr   Ú_load_configÚ	unobserveÚsetattr)Úselfr(   r-   r.   r4   r1   r3   Ú	__class__s    `    @€r!   r9   zConfigurable.__init__9   s-  øøø€ ð2 —’˜H dÑ+Ô+ˆØÐà�zŠz˜( DÑ)Ô)Ð1Ø#)¤=��xÑ Ø ˆDŒKà—’˜H dÑ+Ô+ˆð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"õ !$¡¤Ðð	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	�ŠÐ+Ñ,Ô,Ð,ð Ðð !ˆDŒKˆKð ×Ò˜dœkÑ*Ô*Ð*Ø�ŠÐ-Ñ.Ô.Ð.à)ð 	.ð 	.ˆDÝ�D˜$  t¤Ñ-Ô-Ð-Ð-ð	.ð 	.r    ú	list[str]c                óD   ‡ — ˆ fd„t          ‰ j        ¦  «        D ¦   «         S )zreturn section names as a listc                óh   •— g | ].}t          |t          ¦  «        ¯t          ‰|¦  «        ¯'|j        ‘Œ/S r   ©Ú
issubclassr&   r   )Ú.0ÚcÚclss     €r!   ú
<listcomp>z.Configurable.section_names.<locals>.<listcomp>„   sO   ø€ ð 
ð 
ð 
àÝ˜!�\Ñ*Ô*ð
õ 0:¸#¸qÑ/AÔ/Að
ØŒJð
ð 
ð 
r    )ÚreversedÚ__mro__©rG   s   `r!   Úsection_nameszConfigurable.section_names�   s8   ø€ ð
ð 
ð 
ð 
å˜cœkÑ*Ô*ð
ñ 
ô 
ð 	
r    Úcfgr   c                ó(  — |g}| j         r-|                     | j                              |¦  «        ¦  «         t          ¦   «         }|D ]I}|                      ¦   «         D ]2}|                     |¦  «        r|                     ||         ¦  «         Œ3ŒJ|S )aÃ  extract my config from a global Config object

        will construct a Config object of only the config values that apply to me
        based on my mro(), as well as those of my parent(s) if they exist.

        If I am Bar and my parent is Foo, and their parent is Tim,
        this will return merge following config sections, in this order::

            [Bar, Foo.Bar, Tim.Foo.Bar]

        With the last item being the highest priority.
        )r-   ÚappendÚ_find_my_configr   rL   Ú_has_sectionÚmerge)r>   rM   ÚcfgsÚ	my_configrF   Úsnames         r!   rP   zConfigurable._find_my_configŠ   s¤   € ð ˆuˆØŒ;ð 	:Ø�KŠK˜œ×3Ò3°CÑ8Ô8Ñ9Ô9Ð9Ý‘H”Hˆ	Øð 	.ð 	.ˆAØ×+Ò+Ñ-Ô-ð .ð .�ð —>’> %Ñ(Ô(ð .Ø—O’O A e¤HÑ-Ô-Ð-øð	.ð
 Ðr    NrL   úlist[str] | NoneÚtraitsú)dict[str, TraitType[t.Any, t.Any]] | Nonec           
     ó   — |€|                       d¬¦  «        }|€|                      ¦   «         }|                      |¦  «        }|                      ¦   «         5  |                     ¦   «         D �]†\  }}||v rŠt          |t          ¦  «        r&t          | |¦  «        }|                     |¦  «        }n0t          |t          ¦  «        r|                     ||         ¦  «        }t          | |t          |¦  «        ¦  «         Œ”t          |¦  «        sãt          |t          ¦  «        sÎddlm} t          | t           ¦  «        r| j        €J ‚| j        j        }	ndd
„}	 |||¦  «        }
d|› d| j        j        › d�}t+          |
¦  «        dk    r|d|
d         › d�z  }nLt+          |
¦  «        dk    r9|d                     d                     t1          |
¦  «        ¦  «        ¬¦  «        z  } |	|¦  «         �Œˆ	 ddd¦  «         dS # 1 swxY w Y   dS )z load traits from a Config objectNT©r.   r   )Úget_close_matchesÚmsgr)   r*   r+   c                ó:   — t          j        | t          d¬¦  «        S )Né	   ©Ú
stacklevel)r   ÚwarnÚUserWarning)r\   s    r!   ra   z'Configurable._load_config.<locals>.warnÊ   s   € Ý#+¤=°µkÈaÐ#PÑ#PÔ#PÐPr    zConfig option `z` not recognized by `z`.r   z  Did you mean `z`?z#  Did you mean one of: `{matches}`?ú, )Úmatches)r\   r)   r*   r+   )rW   rL   rP   Úhold_trait_notificationsÚitemsÚ
isinstancer   ÚgetattrÚ	get_valuer   r=   r   r   r   Údifflibr[   ÚLoggingConfigurableÚlogÚwarningr?   r   ÚlenÚformatÚjoinÚsorted)r>   rM   rL   rW   rT   r1   Úconfig_valueÚinitialr[   ra   rd   r\   s               r!   r;   zConfigurable._load_config£   sž  € ð ˆ>Ø—[’[¨�[Ñ-Ô-ˆFØÐ Ø ×.Ò.Ñ0Ô0ˆMà×(Ò(¨Ñ-Ô-ˆ	ð ×*Ò*Ñ,Ô,ð #	ð #	Ø&/§o¢oÑ&7Ô&7ð "ñ "Ñ"��lØ˜6�>�>Ý! ,µÑ@Ô@ð Lõ #*¨$°Ñ"5Ô"5˜Ø'3×'=Ò'=¸gÑ'FÔ'F˜˜Ý# Lµ.ÑAÔAð Là'3×'=Ò'=¸fÀT¼lÑ'KÔ'K˜õ ˜D $­°Ñ(>Ô(>Ñ?Ô?Ð?Ð?Ý(¨Ñ.Ô.ð µzÀ,ÕPVÑ7WÔ7Wð Ø9Ð9Ð9Ð9Ð9Ð9å! $Õ(;Ñ<Ô<ð QØ#œxÐ3Ð3Ð3Ø#œxÔ/˜˜ðQð Qð Qð Qð 0Ð/°°fÑ=Ô=�GØb¨DÐbÐbÀtÄ~ÔG^ÐbÐbÐb�Cå˜7‘|”| qÒ(Ð(ØÐ@°'¸!´*Ð@Ð@Ð@Ñ@˜˜Ý˜W™œ¨Ò*Ð*ØÐD×KÒKØ$(§I¢I­f°W©o¬oÑ$>Ô$>ð  Lñ  ô  ñ ˜ð �D˜‘I”I�IùðE"ð#	ð #	ð #	ñ #	ô #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	øøøð #	ð #	ð #	ð #	ð #	ð #	s   ÁFHÈHÈ
Hr.   r/   r   c                ó”   — |                       d¬¦  «        }|                      ¦   «         }|                      |j        ||¬¦  «         dS )zòUpdate all the class traits having ``config=True`` in metadata.

        For any class trait with a ``config`` metadata attribute that is
        ``True``, we update the trait with the value of the corresponding
        config entry.
        TrZ   )rW   rL   N)rW   rL   r;   Únew)r>   r/   rW   rL   s       r!   Ú_config_changedzConfigurable._config_changedØ   sM   € ð —’ D�Ñ)Ô)ˆð
 ×*Ò*Ñ,Ô,ˆØ×Ò˜&œ*¨VÀ=ÐÑQÔQÐQÐQÐQr    c                ó–   — t          | j        ¦  «        | _        |                      |¦  «         | j                             |¦  «         dS )z%Update config and load the new valuesN)r   r.   r;   rR   )r>   r.   s     r!   Úupdate_configzConfigurable.update_configê   sE   € õ ˜tœ{Ñ+Ô+ˆŒà×Ò˜&Ñ!Ô!Ð!àŒ×Ò˜&Ñ!Ô!Ð!Ð!Ð!r    ÚinstúHasTraits | NoneÚstrc                ó  — |�t          || ¦  «        sJ ‚g }d                     d„ | j        D ¦   «         ¦  «        }|                     | j        › d|› d�¦  «         |                     t          |d         ¦  «        dz  ¦  «         t          |                      d¬	¦  «                             ¦   «         ¦  «        D ]0\  }}|  	                    ||¦  «        }|                     |¦  «         Œ1d
                     |¦  «        S )z¢Get the help string for this class in ReST format.

        If `inst` is given, its current trait values will be used in place of
        class defaults.
        Nrc   c              3  ó$   K  — | ]}|j         V — Œd S ©N)r   ©rE   Úps     r!   ú	<genexpr>z.Configurable.class_get_help.<locals>.<genexpr>  s$   è è € Ð CÐ C° ¤Ð CÐ CÐ CÐ CÐ CÐ Cr    ú(z	) optionsr   ú-TrZ   ú
)
rg   rp   Ú	__bases__rO   r   rn   rq   Úclass_traitsrf   Úclass_get_trait_help)rG   ry   Ú
final_helpÚbase_classesÚ_ÚvÚhelps          r!   Úclass_get_helpzConfigurable.class_get_helpú   s  € ð ˆ|�z¨$°Ñ4Ô4ˆ|ˆ|ˆ|Øˆ
Ø—y’yÐ CÐ C°S´]Ð CÑ CÔ CÑCÔCˆØ×Ò˜Sœ\ÐCÐC¨LÐCÐCÐCÑDÔDÐDØ×Ò�#˜j¨œmÑ,Ô,¨sÑ2Ñ3Ô3Ð3Ý˜3×+Ò+°4Ð+Ñ8Ô8×>Ò>Ñ@Ô@ÑAÔAð 	$ð 	$‰DˆAˆqØ×+Ò+¨A¨tÑ4Ô4ˆDØ×Ò˜dÑ#Ô#Ð#Ð#Ø�yŠy˜Ñ$Ô$Ð$r    ÚtraitúTraitType[t.Any, t.Any]Úhelptextú
str | Nonec           	     ód  — |�t          || ¦  «        sJ ‚g }d| j        › d|j        › �}t          |t          t          f¦  «        rl|j                             dd¦  «        }t          |t          ¦  «        rd}n!d|j        j                             ¦   «         z  }|dk    r	|› d|› d	�}n|› d
|› d	�}n|› d|j        j        › d�}| 	                    |¦  «         |€|j
        }|dk    rEd                     t          |d¦  «        ¦  «        }| 	                    t          |¦  «        ¦  «         d|j        j        v r7| 	                    t          d|                     ¦   «         z  ¦  «        ¦  «         |�;| 	                    t          dt          ||j        pd¦  «        ›�¦  «        ¦  «         no	 |                     ¦   «         }n# t"          $ r d}Y nw xY w|�Et%          |¦  «        dk    r|dd…         d	z   }| 	                    t          d|z  ¦  «        ¦  «         d                     |¦  «        S )a  Get the helptext string for a single trait.

        :param inst:
            If given, its current trait values will be used in place of
            the class default.
        :param helptext:
            If not given, uses the `help` attribute of the current trait.
        Nz--ú.ÚmultiplicityrO   z<key-1>=<value-1>z<%s-item-1>ú=ú...ú z=<ú>Ú ú

éL   ÚEnumzChoices: %sz	Current: é@   é=   zDefault: %sr„   )rg   r   r1   r   r   Úmetadatar7   r?   ÚlowerrO   rŒ   rp   r   r   Úinforh   Údefault_value_reprÚ	Exceptionrn   )	rG   rŽ   ry   r�   ÚlinesÚheaderr”   Úsample_valueÚdvrs	            r!   r‡   z!Configurable.class_get_trait_help  sV  € ð ˆ|�z¨$°Ñ4Ô4ˆ|ˆ|ˆ|ØˆØ1�c”lÐ1Ð1 U¤ZÐ1Ð1ˆÝ�e�i­Ð.Ñ/Ô/ð 	>Ø œ>×-Ò-¨n¸hÑGÔGˆLÝ˜%¥Ñ&Ô&ð PØ2��à,¨u¬Ô/G×/MÒ/MÑ/OÔ/OÑO�Ø˜xÒ'Ð'Ø"Ð6Ð6 \Ð6Ð6Ð6��à"Ð6Ð6 \Ð6Ð6Ð6��àÐ=Ð= %¤/Ô":Ð=Ð=Ð=ˆFà�Š�VÑÔÐàÐØ”zˆHØ�rŠ>ˆ>Ø—{’{¥?°8¸RÑ#@Ô#@ÑAÔAˆHØ�LŠL� Ñ)Ô)Ñ*Ô*Ð*à�U”_Ô-Ð-Ð-à�LŠL� °·
²
±´Ñ <Ñ=Ô=Ñ>Ô>Ð>àÐØ�LŠL�Ð O­G°D¸%¼*Ð:JÈÑ,KÔ,KÐ OÐ OÑPÔPÑQÔQÐQÐQðØ×.Ò.Ñ0Ô0��øÝð ð ð Ø���ðøøøàˆÝ�s‘8”8˜b’=�=Ø˜c˜r˜cœ( UÑ*�CØ—’�V M°CÑ$7Ñ8Ô8Ñ9Ô9Ð9à�yŠy˜ÑÔÐs   Æ/G ÇGÇGc                óJ   — t          |                      |¦  «        ¦  «         dS )z4Get the help string for a single trait and print it.N)Úprintr�   )rG   ry   s     r!   Úclass_print_helpzConfigurable.class_print_helpD  s&   € õ 	ˆc× Ò  Ñ&Ô&Ñ'Ô'Ð'Ð'Ð'r    Úclassesút.Sequence[type[HasTraits]]útype[Configurable]c                óâ   — | }|j         €J ‚|                      ¦   «         D ]N}t          |t          ¦  «        r7||v r3|                     d¬¦  «                             |j         d¦  «        |u r|}ŒO|S )a7  Get the class that defines a trait

        For reducing redundant help output in config files.
        Returns the current class if:
        - the trait is defined on this class, or
        - the class where it is defined would not be in the config file

        Parameters
        ----------
        trait : Trait
            The trait to look for
        classes : list
            The list of other classes to consider for redundancy.
            Will return `cls` even if it is not defined on `cls`
            if the defining class is not in `classes`.
        NTrZ   )r1   ÚmrorD   r&   Úclass_own_traitsr7   )rG   rŽ   r«   Údefining_clsr-   s        r!   Ú_defining_classzConfigurable._defining_classI  s†   € ð( ˆØŒzÐ%Ð%Ð%Ø—g’g‘i”ið 	&ð 	&ˆFå˜6¥<Ñ0Ô0ð&à˜gÐ%Ð%Ø×+Ò+°4Ð+Ñ8Ô8×<Ò<¸U¼ZÈÑNÔNÐRWÐWÐWà%�øØÐr    ú"t.Sequence[type[HasTraits]] | Nonec           	     ó´  — dd„}d}d                      d„ | j        D ¦   «         ¦  «        }d| j        › d	|› d
�}|||g}|                      ¦   «                              d¦  «        }|r|j        }|st          | dd¦  «        }|r3|                      ||¦  «        ¦  «         |                     d¦  «         t          |                      d¬¦  «         	                    ¦   «         ¦  «        D �]X\  }}	|	 
                    ¦   «         }
|r|                      |	|¦  «        }n| }|| u rƒ|	j        r#|                      ||	j        ¦  «        ¦  «         dt          |	¦  «        j        v r*|                     d|	                     ¦   «         z  ¦  «         |                     d|
z  ¦  «         nd|	j        r=|                      ||	j                             dd¦  «        d         ¦  «        ¦  «         |                     d|j        › d|› �¦  «         |                     d| j        › d|› d|
› �¦  «         |                     d¦  «         �ŒZd                      |¦  «        S )zãGet the config section for this class.

        Parameters
        ----------
        classes : list, optional
            The list of other classes in the config file.
            Used to reduce redundant information.
        Úsr{   r*   c                óz   — d                      t          | d¦  «        ¦  «        } d|                      dd¦  «        z   S )z"return a commented, wrapped block.rš   éN   z## r„   z
#  )rp   r   Úreplace)rµ   s    r!   rF   z,Configurable.class_config_section.<locals>.cs  s6   € à—’�O¨A¨rÑ2Ô2Ñ3Ô3ˆAà˜1Ÿ9š9 T¨7Ñ3Ô3Ñ3Ð3r    zO#------------------------------------------------------------------------------rc   c              3  óN   K  — | ] }t          |t          ¦  «        ¯|j        V — Œ!d S r~   rC   r   s     r!   r�   z4Configurable.class_config_section.<locals>.<genexpr>{  s5   è è € Ð"dÐ"d°!Í
ÐSTÕVbÑHcÔHcÐ"d 1¤:Ð"dÐ"dÐ"dÐ"dÐ"dÐ"dr    z# r‚   z) configurationÚdescriptionÚ__doc__r™   TrZ   rœ   z#  Choices: %sz#  Default: %sr„   r   r   z#  See also: r“   z# c.z = )rµ   r{   r*   r{   )rp   r…   r   r†   r7   Údefault_valuerh   rO   rq   rf   r¢   r²   rŒ   Útyper¡   Úsplit)rG   r«   rF   ÚbreakerÚparent_classesrµ   r¤   Údescr1   rŽ   Údefault_reprÚdefining_classs               r!   Úclass_config_sectionz!Configurable.class_config_sectionh  sˆ  € ð	4ð 	4ð 	4ð 	4ð !ˆØŸšÐ"dÐ"d°s´}Ð"dÑ"dÔ"dÑdÔdˆà?�”Ð?Ð? Ð?Ð?Ð?ˆØ˜!˜WÐ%ˆà×ÒÑ!Ô!×%Ò% mÑ4Ô4ˆØð 	&ØÔ%ˆDØð 	/å˜3 	¨2Ñ.Ô.ˆDØð 	Ø�LŠL˜˜˜4™œÑ!Ô!Ð!Ø�LŠL˜ÑÔÐå! #×"2Ò"2¸$Ð"2Ñ"?Ô"?×"EÒ"EÑ"GÔ"GÑHÔHð 	ñ 	‰KˆD�%Ø ×3Ò3Ñ5Ô5ˆLàð %Ø!$×!4Ò!4°U¸GÑ!DÔ!D��à!$�Ø Ð$Ð$à”:ð 0Ø—L’L   5¤:¡¤Ñ/Ô/Ð/Ø�T %™[œ[Ô1Ð1Ð1à—L’LÐ!1°E·J²J±L´LÑ!@ÑAÔAÐAØ—’Ð-°Ñ<Ñ=Ô=Ð=Ð=ð ”:ð BØ—L’L   5¤:×#3Ò#3°D¸!Ñ#<Ô#<¸QÔ#?Ñ!@Ô!@ÑAÔAÐAØ—’ÐM¨^Ô-DÐMÐMÀtÐMÐMÑNÔNÐNà�LŠLÐF ¤ÐFÐF¨tÐFÐF¸ÐFÐFÑGÔGÐGØ�LŠL˜ÑÔÐÑØ�yŠy˜ÑÔÐr    c                ó@  — g }| j         }t          |                      d¬¦  «                             ¦   «         ¦  «        D �]J\  }}|j        j         }|j        sŒ|dz   |j        z   }d|v r|d|                     ¦   «         z   z  }n|d|z   z  }|                     |¦  «         	 |                     ¦   «         }n# t          $ r d}Y nw xY w|�pt          |¦  «        dk    r|dd…         d	z   }|                     d
d¦  «        }|                     t          d|z  ¦  «        ¦  «         |                     d¦  «         |j        pd}|                     t          t          |¦  «        ¦  «        ¦  «         |                     d¦  «         �ŒLd                     |¦  «        S )zwGenerate rST documentation for this class' config options.

        Excludes traits defined on parent classes.
        TrZ   r“   rœ   z : Nr�   rž   r–   z\nz\\nzDefault: ``%s``r™   zNo descriptionr„   )r   rq   r†   rf   r?   r1   Úinfo_rstrO   r¢   r£   rn   r¸   r   rŒ   r   rp   )	rG   r¤   Ú	classnamerŠ   rŽ   ÚttypeÚtermliner§   rŒ   s	            r!   Úclass_config_rst_docz!Configurable.class_config_rst_doc¤  s²  € ð ˆØ”Lˆ	Ý˜s×/Ò/°tÐ/Ñ<Ô<×BÒBÑDÔDÑEÔEð  	ñ  	‰HˆAˆuØ”OÔ,ˆEà”:ð ØØ  3‘¨¬Ñ3ˆHð ˜ˆˆà˜E E§N¢NÑ$4Ô$4Ñ4Ñ4��à˜E E™MÑ)�Ø�LŠL˜Ñ"Ô"Ð"ðØ×.Ò.Ñ0Ô0��øÝð ð ð Ø���ðøøøàˆÝ�s‘8”8˜b’=�=Ø˜c˜r˜cœ( UÑ*�Cà—k’k %¨Ñ1Ô1�Ø—’�VÐ$5¸Ñ$;Ñ<Ô<Ñ=Ô=Ð=Ø—’˜RÑ Ô Ð à”:Ð1Ð!1ˆDØ�LŠL�¥ t¡¤Ñ-Ô-Ñ.Ô.Ð.ð �LŠL˜ÑÔÐÑà�yŠy˜ÑÔÐs   Â#B8Â8CÃC)r(   r)   r*   r+   )r*   r@   )rM   r   r*   r)   )NN)rM   r   rL   rV   rW   rX   r*   r+   r5   )r.   r   r*   r+   r~   )ry   rz   r*   r{   )rŽ   r�   ry   rz   r�   r‘   r*   r{   )ry   rz   r*   r+   )rŽ   r�   r«   r¬   r*   r­   )r«   r³   r*   r{   )r*   r{   )r   r   r   r
   r   r.   r-   r9   ÚclassmethodrL   rP   r;   r   r   rv   rx   r�   r‡   rª   r²   rÄ   rÊ   Ú__classcell__)r?   s   @r!   r&   r&   5   sí  ø€ € € € € ØˆX�f˜b "Ñ%Ô%€FØˆXÐBÈtÐTÑTÔT€FðB.ð B.ð B.ð B.ð B.ð B.ðP ð
ð 
ð 
ñ „[ð
ðð ð ð ð8 +/Ø<@ð	3ð 3ð 3ð 3ð 3ðj €WˆXÑÔØðRð Rð Rñ „^ñ ÔðRð "ð "ð "ð "ð  ð%ð %ð %ð %ñ „[ð%ð  ð "&Ø#ð	6 ð 6 ð 6 ð 6 ñ „[ð6 ðp ð(ð (ð (ð (ñ „[ð(ð ðð ð ñ „[ðð< ð9 ð 9 ð 9 ð 9 ñ „[ð9 ðv ð) ð ) ð ) ñ „[ð) ð ) ð ) ð ) ð ) r    r&   c                  óˆ   — e Zd ZdZ edd¬¦  «        Z ed¦  «        dd
„¦   «         Z ed¦  «        dd„¦   «         Z	dd„Z
dS )rk   z«A parent class for Configurables that log.

    Subclasses have a log trait, and the default behavior
    is to get the logger from the currently running Application.
    z Logger or LoggerAdapter instanceF)rŒ   r'   rl   Úproposalr   r*   Ú
LoggerTypec                óø   — t          |j        t          j        t          j        f¦  «        s1t          j        | j        j        › d|j        › d�t          d¬¦  «         t          j        t          |j        ¦  «        S )Nz..log should be a Logger or LoggerAdapter, got r“   é   r_   )rg   ÚvalueÚloggingÚLoggerÚLoggerAdapterr   ra   r?   r   rb   ÚtÚcastrÏ   )r>   rÎ   s     r!   Ú_validate_logz!LoggingConfigurable._validate_logÚ  s{   € å˜(œ.­7¬>½7Ô;PÐ*QÑRÔRð 	åŒMØ”>Ô*ð *ð *Ø œð*ð *ð *åØð	ñ ô ð õ Œv•j (¤.Ñ1Ô1Ð1r    c                óÎ   — t          | j        t          ¦  «        r2| j        €J ‚t          j        t
          j        | j        j        ¦  «        S ddlm} | 	                    ¦   «         S )Nr   )rl   )
rg   r-   rk   rÖ   r×   rÓ   rÔ   rl   Ú	traitletsÚ
get_logger)r>   rl   s     r!   Ú_log_defaultz LoggingConfigurable._log_defaultæ  s_   € å�d”kÕ#6Ñ7Ô7ð 	;Ø”;Ð*Ð*Ð*Ý”6�'œ.¨$¬+¬/Ñ:Ô:Ð:Ø!Ð!Ð!Ð!Ð!Ð!à�~Š~ÑÔÐr    úlogging.Handler | Nonec                ó¸   — | j         sdS t          | j         t          j        ¦  «        r| j         n| j         j        }t          |dd¦  «        sdS |j        d         S )z»Return the default Handler

        Returns None if none can be found

        Deprecated, this now returns the first log handler which may or may
        not be the default one.
        NÚhandlersr   )rl   rg   rÓ   rÔ   Úloggerrh   rß   )r>   rà   s     r!   Ú_get_log_handlerz$LoggingConfigurable._get_log_handlerï  s`   € ð Œxð 	Ø�4å" 4¤8­W¬^Ñ<Ô<ÐQˆDŒHˆHÀ$Ä(Ä/ð 	õ �v˜z¨4Ñ0Ô0ð 	à�4ØŒ˜qÔ!Ð!r    N)rÎ   r   r*   rÏ   )r*   rÏ   )r*   rÝ   )r   r   r   r»   r   rl   r   rØ   r   rÜ   rá   r   r    r!   rk   rk   Ñ  s—   € € € € € ðð ð ˆ#Ð5À%Ð
HÑ
HÔ
H€Cà€Xˆe�_„_ð	2ð 	2ð 	2ñ „_ð	2ð €WˆU�^„^ð ð  ð  ñ „^ð ð"ð "ð "ð "ð "ð "r    rk   ÚCTÚSingletonConfigurable)Úboundc                  óv   — e Zd ZdZdZedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	dS )rã   zôA configurable that only allows one instance.

    This class is for classes that should only have one instance of itself
    or *any* subclass. To create and retrieve such a class use the
    :meth:`SingletonConfigurable.instance` method.
    Nr*   ú4t.Generator[type[SingletonConfigurable], None, None]c              #  ó    K  — |                       ¦   «         D ]6}t          | |¦  «        r$t          |t          ¦  «        r|t          k    r|V — Œ7dS )zfWalk the cls.mro() for parent classes that are also singletons

        For use in instance()
        N)r¯   rD   rã   ©rG   Úsubclasss     r!   Ú	_walk_mrozSingletonConfigurable._walk_mro  sf   è è € ð Ÿš™	œ	ð 	ð 	ˆHå˜3 Ñ)Ô)ðå˜xÕ)>Ñ?Ô?ðð Õ 5Ò5Ð5à���øð	ð 	r    r+   c                ó˜   — |                       ¦   «         sdS |                      ¦   «         D ]}t          |j        | ¦  «        rd|_        ŒdS )z5unset _instance for this class and singleton parents.N)Úinitializedrê   rg   Ú	_instancerè   s     r!   Úclear_instancez$SingletonConfigurable.clear_instance  s\   € ð �ŠÑ Ô ð 	ØˆFØŸš™œð 	*ð 	*ˆHÝ˜(Ô,¨cÑ2Ô2ð *ð &*�Ô"øð		*ð 	*r    rG   útype[CT]Úargsr)   r(   râ   c                óö   — | j         €& | |i |¤Ž}|                      ¦   «         D ]	}||_         Œ
t          | j         | ¦  «        r| j         S t          d| j        › dt          | j         ¦  «        j        › �¦  «        ‚)a³  Returns a global instance of this class.

        This method create a new instance if none have previously been created
        and returns a previously created instance is one already exists.

        The arguments and keyword arguments passed to this method are passed
        on to the :meth:`__init__` method of the class upon instantiation.

        Examples
        --------
        Create a singleton class using instance, and retrieve it::

            >>> from traitlets.config.configurable import SingletonConfigurable
            >>> class Foo(SingletonConfigurable): pass
            >>> foo = Foo.instance()
            >>> foo == Foo.instance()
            True

        Create a subclass that is retrieved using the base class instance::

            >>> class Bar(SingletonConfigurable): pass
            >>> class Bam(Bar): pass
            >>> bam = Bam.instance()
            >>> bam == Bar.instance()
            True
        NzAn incompatible sibling of 'z(' is already instantiated as singleton: )rí   rê   rg   r$   r   r½   )rG   rð   r(   ry   ré   s        r!   ÚinstancezSingletonConfigurable.instance)  s¤   € ð: Œ=Ð Ø�3˜Ð' Ð'Ð'ˆDð  ŸMšM™OœOð *ð *�Ø%)�Ô"Ð"å�c”m SÑ)Ô)ð 	Ø”=Ð å'ðA¨s¬|ð Að AÝ"& s¤}Ñ"5Ô"5Ô">ðAð Añô ð r    Úboolc                ó4   — t          | d¦  «        o| j        duS )zHas an instance been created?rí   N)Úhasattrrí   rK   s    r!   rì   z!SingletonConfigurable.initializedU  s    € õ �s˜KÑ(Ô(ÐF¨S¬]À$Ð-FÐFr    )r*   ræ   )r*   r+   )rG   rï   rð   r)   r(   r)   r*   râ   )r*   ró   )
r   r   r   r»   rí   rË   rê   rî   rò   rì   r   r    r!   rã   rã     sª   € € € € € ðð ð €Iàðð ð ñ „[ðð ð*ð *ð *ñ „[ð*ð ð)ð )ð )ñ „[ð)ðV ðGð Gð Gñ „[ðGð Gð Gr    ).r»   Ú
__future__r   rÓ   ÚtypingrÖ   Úcopyr   Útextwrapr   Útraitlets.traitletsr   r   r   r	   r
   r   r   r   r   r   Útraitlets.utilsr   Útraitlets.utils.bunchr   Útraitlets.utils.textr   r   Úloaderr   r   r   r   ÚTYPE_CHECKINGÚUnionrÔ   rÕ   rÏ   r£   r   r$   r&   rk   ÚTypeVarrâ   rã   r   r    r!   ú<module>r     sy  ðØ 5Ð 5ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lð „?ð Ø”˜œ¨Ô)>¸q¼uÔ)EÐEÔF€J€Jà”€Jð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð-ñ 	ô 	ð 	ðY ð Y ð Y ð Y ð Y �9ñ Y ô Y ð Y ðx."ð ."ð ."ð ."ð ."˜,ñ ."ô ."ð ."ðb €Q„YˆtÐ2Ð3Ñ3Ô3€ðSGð SGð SGð SGð SGÐ/ñ SGô SGð SGð SGð SGr    