XBFj[rdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z mZddlmZddlmZddlmZddlmZdd lmZmZdd lmZmZmZmZmZm Z m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.dd l/m0Z0ddl1m2Z2m3Z3ddl4m5Z5ddl6m7Z7d8Z9d8Z:e;e dsdge _<dZ=ej>?ddZ@e@AdvrdZBn'e@AdvrdZBneCde@ze jDoe jDEdZFe jGde jHde jIf ZJe jKejLd!fZMe j$eNe jIfZOe jPe j'eNZQe j'e jReZSd5d$ZTGd%d&eUZVGd'd(ejWZXGd)d*eZYeYjZZ[eYj\Z]d6d7d1Z^d8d3Z_e`d4kreYadSdS)9z,A base class for a configurable application.) annotationsN) OrderedDict defaultdict)suppress)deepcopy) dictConfig)dedent) ConfigurableSingletonConfigurable) ArgumentErrorConfigConfigFileNotFoundDeferredConfigStringJSONFileConfigLoaderKVArgParseConfigLoaderPyFileConfigLoader) BoolDictEnumInstanceList TraitErrorUnicodedefaultobserveobserve_compat)Bunch) nested_update)indentwrap_paragraphs cast_unicode) import_itemz The options below are convenience aliases to configurable class-options, as listed in the "Equivalent to" description-line of the aliases. To see all configurable class-options for some , use: --help-all z The command-line option below sets the respective configurable class-parameter: --Class.parameter=value This line is evaluated in Python, so simple expressions are allowed. For instance, to set `C.a=[0,1,2]`, you may type this: --C.a='range(3)' argvzp Subcommands are launched as `{app} cmd [args]`. For information on using subcommand 'cmd', do: `{app} cmd -h`. -TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR>1trueT>r&0falseFzUnsupported value for environment variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none of {'0', '1', 'false', 'true', ''}.z pythonw.exeT.)boundzlogging.LoggerAdapter[t.Any]methodreturncxtjdfd }tjt|S) aMethod decorator for catching invalid config (Trait/ArgumentErrors) during init. On a TraitError (generally caused by bad config), this will print the trait's message, and exit the app. For use on init methods, to prevent invoking excepthook on invalid input. app Applicationargst.Anykwargsr/c |g|Ri|S#ttf$r[}|jd||jd|j|dYd}~dSd}~wwxYw)Nz0Bad config encountered during initialization: %szConfig at the time: %s)rr logfataldebugconfigexit)r1r3r5er.s JC:\PYTHON\_runtimes\venv\Lib\site-packages\traitlets/config/application.pyinnerz!catch_config_error..innerss 6#////// /M*    GMMLa P P P GMM2CJ ? ? ? HHQKKKKKKKKK s A;AA66A;)r1r2r3r4r5r4r/r4) functoolswrapstcastr,)r.r?s` r>catch_config_errorrDjsL_V 6!U  ceZdZdS)ApplicationErrorN)__name__ __module__ __qualname__rEr>rGrGsDrErGc6eZdZdZejZdZdfd ZxZ S) LevelFormattera Formatter with additional `highlevel` record This field is empty if log level is less than highlevel_limit, otherwise it is formatted with self.highlevel_format. Useful for adding 'WARNING' to warning messages, without adding 'INFO' to info, etc. z %(levelname)s |recordlogging.LogRecordr/strc|j|jkr|j|jz|_nd|_t |S)Nr&)levelnohighlevel_limithighlevel_format__dict__ highlevelsuperformat)selfrN __class__s r>rXzLevelFormatter.formatsF >T1 1 1#4vFF  !F ww~~f%%%rE)rNrOr/rP) rHrIrJ__doc__loggingWARNrSrTrX __classcell__rZs@r>rMrMsVlO)&&&&&&&&&&rErMceZdZUdZedZded<edZded<eeZded<ee Z ded<ee Z ded <e Z e ZeZded <gZd ed < dddZedZded<eZded<eeZedejddZeZedddZedddZ dd!Z!e"d"d#d$d%dd)Z#e"d*d+,dd-Z$dd.Z%e&d*dd0Z'e(d1dZ)d2d3iZ*d ed4<dd$ej+iid5fdd6diid7fdd8diid9fd:Z,d ed;<e(Z-dd?Z/eeZ0e.e1d@idAZ2eZ3dBedC<edDdZ4edEdZ5e"d8ddFZ6e"d6ddGZ7ddJZ8e"dKe9dfdL Z:e;dddNZddQZ?ddSZ@ddTZAddUZBddVZCddWZDddXZEddYZFdd[ZGddd]ZHddd^ZIdd`ZJddaZKddbZLddcZMdddZNddeZOe;dddgZPddiZQddlZReSdddoZTeSddpZUe;dddqZVeS dddxZWeXddyZYe; ddd{ZZe;dd|Z[ ddd}Z\ddd~Z]ddZ^dddZ_ddZ`eSdddZaxZbS)r2z8A singleton application with full configuration support. applicationzstr | Unicode[str, str | bytes]namezThis is an application. descriptionoption_descriptionkeyvalue_descriptionsubcommand_descriptionexamples ClassesTypeclassesNClassesType | Noner/+t.Generator[type[Configurable], None, None]c#K||j}t}|D]X}t|D]4}t |t r||vr|||V5YdS)aIterate through configurable classes, including configurable parents :param classes: The list of classes to iterate; if not set, uses :attr:`classes`. Children should always be after parents, and each class should only be yielded once. N)risetreversedmro issubclassr add)rYriseencparents r>_classes_inc_parentsz Application._classes_inc_parentss ?lGuu ! !A"15577++ ! !fl33!t9K9KHHV$$$ LLL ! ! !rEz0.0versionzlist[str] | List[str]r%) r (2DEBUGINFOr]ERRORCRITICALz#Set the log level by value or name.) default_valuehelpTr;z%Y-%m-%d %H:%M:%SzXThe date format used by logging formatters for `logging.Formatter` ``datefmt`` parameter)rz#[%(name)s]%(highlevel)s %(message)szThe Logging format templateStrDictcddddtj|jddid|jjd|jj|j|jdi|jjddgd id d }tr|d =|d =|S)aReturn the base logging configuration. The default is to log to stderr using a StreamHandler, if no default handler already exists. The log handler level starts at logging.WARN, but this can be adjusted by setting the ``log_level`` attribute. The ``logging_config`` trait is merged into this allowing for finer control of logging. r7consolezlogging.StreamHandlerzext://sys.stderr)class formatterlevelstream.)rrXdatefmtr|)rhandlersF)rvr formattersloggersdisable_existing_loggersrr) r\ getLevelName log_level_log_formatter_clsrIrH log_format log_datefmtrZ IS_PYTHONWrYr;s r>get_default_logging_configz&Application.get_default_logging_configs4!*$1$.AA0 2=?? 3<??#o#/  '$!* ** ).5  :  "z"y! rErrrlogging_configchangerNonec|j}t|tr2tjt t t||_|dSN) r isinstancerPrBrCintgetattrr\_configure_logging)rYrrs r>_observe_logging_changez#Application._observe_logging_changesSN i % % FVC))D)DEEDN !!!!!rEr8r)typec.|dSr)rrYrs r>_observe_logging_defaultz$Application._observe_logging_defaults !!!!!rEc|}t||jpit|d|_dS)NT)rrrr_logging_configuredrs r>rzApplication._configure_logging"sG0022fd17R8886#'   rE AnyLoggerctj|jj}d|_|}||jr|S|jsn |j}||S)z#Start logging for this application.F)r\ getLoggerrZrH propagaterrt)rYr8_logs r> _log_defaultzApplication._log_default)s] 788 }  > ;D   rEa! Configure additional log handlers. The default stderr logs handler is configured by the log_level, log_datefmt and log_format settings. This configuration can be used to configure additional handlers (e.g. to output the log to a file) or for finer control over the default handlers. If provided this should be a logging configuration dictionary, for more information see: https://docs.python.org/3/library/logging.config.html#logging-config-dictschema This dictionary is merged with the base logging configuration which defines the following: * A logging formatter intended for interactive use called ``console``. * A logging handler that writes to stderr called ``console`` which uses the formatter ``console``. * A logger with the name of this application set to ``DEBUG`` level. This example adds a new handler that writes to a file: .. code-block:: python c.Application.logging_config = { "handlers": { "file": { "class": "logging.FileHandler", "level": "DEBUG", "filename": "", } }, "loggers": { "": { "level": "DEBUG", # NOTE: if you don't list the default "console" # handler here then it will be disabled "handlers": ["console", "file"], }, }, } z log-levelzApplication.log_levelaliasesz5Set log-level to debug, for the most verbose logging. show_configz_show_config_json_changedz%Application._show_config_json_changeds!:rEcH|jr|j|_|j|_dSdSr)rstart _save_startstart_show_configrs r>_show_config_changedz Application._show_config_changeds. : 0#zD /DJJJ 0 0rEr5r4c tj|fi||j}||jvrA|j|jur|g|j|_dS|jd|jdSdS)Nr)r __init__rZriinsert)rYr5clss r>rzApplication.__init__s}&t66v666n dl " "|s{** #3dl3  ##At~66666 # "rEr;ct||jd|jdS)NzConfig changed: %r)rW_config_changedr8r:r)rYrrZs r>rzApplication._config_changeds< ''' +VZ88888rEArgvTypec0||dS)zMDo the basic steps to configure me. Override in subclasses. N)parse_command_line)rYr%s r> initializezApplication.initializes %%%%%rEc~|j5t|jtsJ|jSdS)zAStart the app mainloop. Override in subclasses. N)subapprr2rrYs r>rzApplication.starts@ ; "dk;77 7 77;$$&& & # "rEc  |j}|jD]D}|j|vr9||j}|dd|ddE|jrItj|tj ddttj ddS|j r9td|j D]}td |ztt|D]l}||}|s t|t!d d }t|D]/}||} td |d t#j| fi|0mdS)z,start function used when show_config is TruerNrr7T)r sort_keysr zLoaded config files:z )rcompactz .z = )r;copyrZrorHpoprjsondumpsysstdoutreprwriterprintsorteddictpprintpformat) rYr;r cls_configf classname class_configpformat_kwargs traitnamevalues r>rzApplication.start_show_configs!!##>%%'' 9 9C|v%%#CL1 }d33314888    IfcjdD Q Q Q Q J  T " " " F  $  ( ) ) ).  dQh GGG U UI!),L  )   &*!T&B&B&BN#L11 U U $Y/SISS&.*Q*Q.*Q*QSSTTTT U U UrEcntd|dS)z"Print the alias parts of the help.rN)rjoinemit_alias_helprs r>print_alias_helpzApplication.print_alias_helps. dii,,..//00000rEt.Generator[str, None, None]c#K|jsdSi}|jD]S}|ddD]4}tjtjt |||j<5T|jD]S\}} t|tr|\}}nd}| ddd\}}|dz|z}||}| d|} | | |} t|ts|f}t|t }d d |D}| d d |z|| d <| Ed{Vt'd |zV&#t($r"} |jd|| d} ~ wwxYwdS)z+Yield the lines for alias part of the help.NrTr)helptextkey, c3JK|]}t|dkrdnd|zVdSr7z--%sz-%sNlen.0ms r> z.Application.emit_alias_help..9!W!WASVVaZZ66Ua"G!W!W!W!W!W!WrEr--zEquivalent to: [--%s]z7Failed collecting help-message for alias %r, due to: %s)rrirorBrCTyper rHitemsrtuplesplit class_traitsclass_get_trait_help splitlinesrrrreplacer Exceptionr8error) rY classdictrrsaliaslongnamefhelprrtrait fhelp_linesexs r>rzApplication.emit_alias_helps!|  F35 < H HCWWYYss^ H H()qvl/CQ(G(G !*%% H $|1133  OE8 h..!&.OHee E'/~~c':':233'?$ 9$s?Y6 *(((55i@!66uu6MMXXZZ !%//%"HEu#... !W!WQV!W!W!WWW"-Q!7!7x!O!O A&&&&&&&&4x?@@@@@@   XZ_acddd -  s DF(( G2GGcntd|dS)z Print the flag part of the help.rN)rremit_flag_helprs r>print_flag_helpzApplication.print_flag_help(s. dii++--../////rEc#lK|jsdS|jD] \}\}} t|ts|f}t |t }dd|D}|Vtt| Vdd|D}d|z}tt|V#t$r"}|j d||d}~wwxYwdS) z.Yield the lines for the flag part of the help.Nrrc3JK|]}t|dkrdnd|zVdSrrrs r>rz-Application.emit_flag_help..6rrE c3fK|],\}}|D]\}}d|d|d|V-dS)rr=N)r)rclname props_dictpropvals r>rz-Application.emit_flag_help..9sy$$* %/%5%5%7%7$$"c/..$....$$$$$$$rEzEquivalent to: [%s]z6Failed collecting help-message for flag %r, due to: %s) rrrrrrrrr striprr8r)rYrcfgrcfg_listcfg_txtr s r>r zApplication.emit_flag_help,s`z  F#':#3#3#5#5   E print_optionszApplication.print_optionsDs. dii..001122222rEc# K|js |jsdSd}|Vdt|zVt|jD] }|VdV |Ed{V|Ed{VdVdS)z1Yield the lines for the options part of the help.NOptionsrr&)rrrr rdr r)rYheaderps r>rzApplication.emit_options_helpHsz $,  F CKK !899  AGGGHHHH&&((((((((('')))))))))rEcntd|dS)z&Print the subcommand part of the help.rN)rremit_subcommands_helprs r>print_subcommandszApplication.print_subcommandsWs. dii22445566666rEc#xK|jsdSd}|Vdt|zVt|j|jD] }|VdV |jD]>\}\}}|V|r0tt| V?dVdS)z4Yield the lines for the subcommand part of the help.N Subcommandsr)r1r&) rrr rfrXrbrrr r)rYrr subc_rs r>r"z!Application.emit_subcommands_help[s  F CKK !emit_help_epiloguezApplication.emit_help_epiloguels3  I I I IHHHHH  rEFcrtd||dS)zPrint the help for each Configurable class in self.classes. If classes=False (the default), only flags and aliases are printed. rriN)rr emit_helpr*s r> print_helpzApplication.print_helpus2 diiw778899999rEc#K|Ed{V|Ed{V|Ed{V|r\|}|'dVdVt |jD] }|VdV |D]}|VdV|Ed{V||Ed{VdS)zYield the help-lines for each Configurable class in self.classes. If classes=False (the default), only flags and aliases are printed. Nz Class optionsz =============r&) emit_descriptionr"r_classes_with_config_traitsr reclass_get_help emit_examplesr+)rYri help_classesr rs r>r.zApplication.emit_help|s[ ((*********--/////////))+++++++++  ;;==L'%%%%%%%%()BCCAGGGHHHH#  ((*****%%'''''''''**733333333333rErPcddd|DS)zwGenerate rST format documentation for the config options this application Returns a multiline string. rc3>K|]}|VdSr)class_config_rst_doc)rrss r>rz6Application.document_config_options..s.WWa//11WWWWWWrE)rrurs r>document_config_optionsz#Application.document_config_optionss1 yyWW4;T;T;V;VWWWWWWrEcntd|dS)z"Print the application description.rN)rrr1rs r>print_descriptionzApplication.print_descriptions. dii--//0011111rEc#ZKt|jp|jpdD] }|VdV dS)z-Yield lines with the application description.r&N)r rcr[)rYr s r>r1zApplication.emit_descriptionsJ !1!GT\!GRHH  AGGGHHHH  rEcntd|dS)z1Print usage and examples (see `emit_examples()`).rN)rrr4rs r>print_exampleszApplication.print_exampless. dii**,,--.....rEc#K|jrGdVdVdVtt|jVdVdSdS)zYield lines with the usage and examples. This usage string goes at the end of the command line help string and should contain examples of the application's usage. Examplesz--------r&N)rgrr rrs r>r4zApplication.emit_examplesst =       HHH 3 3 5 56677 7 7 7HHHHH   rEc.t|jdS)zPrint the version string.N)rrvrs r> print_versionzApplication.print_versions dlrEr&c|j|}|J|\}}t|trt |}t|t rJt |tr5|j | ||_ n2t|r|||_ ntd|z|j |dS)z"Initialize a subcommand with argv.N)rtz%Invalid mappings for subcommand '%s'!)rgetrrPr$rrpr2rZclear_instanceinstancercallableAssertionErrorr)rYr&r%rrr's r>initialize_subcommandz!Application.initialize_subcommands""4((  fc " " ) ((F fd # # Q 6;(G(G Q N ) ) + + + ///66DKK f   Q &,,DKK !H4!OPP P t$$$$$rE)tuple[dict[str, t.Any], dict[str, t.Any]]ctt}|jD]H}|j}|ddD]"}||j|#Ii}|jD]\}}t|tr|\}}| dd\}} ||} t| dkr| d}t|ts|f}|D]} d || g|| <i} |j D]\} \}}i}|D]M\}}||} t| dkr| d}||vr|||H|||<Nt| ts| f} | D] }||f| |< | |fS)aFlatten flags and aliases for loaders, so cl-args override as expected. This prevents issues such as an alias pointing to InteractiveShell, but a config file setting the same trait in TerminalInteraciveShell getting inappropriate priority over the command-line arg. Also, loaders expect ``(key: longname)`` and not ``key: (longname, help)`` items. Only aliases with exactly one descendent in the class list will be promoted. r7rrr)rlistrirHroappendrrrrrrrrupdate)rYmro_treerclsnamertrrrr'rchildrenalrrflagdictrnewflagsubdictks r> flatten_flagszApplication.flatten_flagsst$$< : :ClG''))AbD/ : :)009999 : #%#|1133 5 5OE8(E** '& !!Q//JC}H8}}!!qkgu-- ! 5 5!hhU|44  5 %)Z%5%5%7%7 + + !C!(D*,G ( 0 0 + + W#C=x==A%%"1+C'>>CL''0000#*GCLLc5)) f + +#T?a +g~rElist[str] | Nonerc@t|||||j|jS)N)rir8r)rr8r)rYr%rrris r>_create_loaderzApplication._create_loaders-& '5'txTM]    rEcheck_argcomplete list[str]c|r _get_sys_argvzApplication._get_sys_argvs{  2:!=!= VVVVVV//11))) !45    xs (<<cxdtjvrdS ddlm}|dS#tt f$rYdSwxYw)aHelper for `argcomplete` to recognize `traitlets` subcommands `argcomplete` does not know that `traitlets` has already consumed subcommands, as it only "sees" the final `argparse.ArgumentParser` that is constructed. (Indeed `KVArgParseConfigLoader` does not get passed subcommands at all currently.) We explicitly manipulate the environment variables used internally by `argcomplete` to get it to skip over the subcommand tokens. r^Nr)increment_argcomplete_index)r`rarbrhrcrd)rrhs r>"_handle_argcomplete_for_subcommandz.Application._handle_argcomplete_for_subcommand4sj  + + F  W W W W W W ' ' ) ) ) ) )01    DD s $99ct|trJ|0|t|jdd}d|D|_|r|ddkr|dddgz}|jrmt |dkrZ|d|dd}}tjd|r3||jvr*| | ||S |d| d n#t$r|YnwxYwtfd d Dr,|d v|dd vsdvr)||d|\}}t%|}|||||} t+||_n#t0$rwxYw||j|j|_dS)z!Parse the command line arguments.N)r[r7c,g|]}t|SrKr")rargs r> z2Application.parse_command_line..Ns 7773\#&&777rErr-hz ^\w(\-?\w)*$rc3 K|]}|vV dSrrK)rxinterpreted_argvs r>rz1Application.parse_command_line..es)MMq$$MMMMMMrE)rn --help-allz--helprrz --versionz-Vr-)rrPrfr(rr%rrematchrirIindex ValueErroranyr/r<rBrWrLr2rZr load_config cli_config SystemExit update_config extra_args) rYr%r&subargvrrriloaderrqs @r>rzApplication.parse_command_lineHsdC((((( <%%T=M8N8N%OOPQPRPRSD77$777  %DGv%%8tf$D   AD A  GT!""X'Dx.. A44;K3K3K7799911$@@@  $#$6djj&6&6$67   $ $ $#    $ MMMM.LMMM M M  OOL,<< = = = IIaLLL * * *d6F.F.F    IIaLLL++--wt7799::$$T7E7$KK &v'9'9';';<_load_config_fileszApplication._load_config_files{s| 7== & & 6D dC  DL6D~~( ;( ;G55lU6JQX^a5bbH X 0,@V29;;WWW55lW6LSZ`c5ddJ"$F#%I#Z0 ; ;R#//11FR ":F%>v%F%F %#KK!@@F$,$*$8$(Jz!$D$D$DA"A""6#78888MM&)))$$V%9:::A ;( ;( ;sC33 D1?/D10D1c |jddS)z$Currently loaded configuration filesN)rrs r>loaded_config_fileszApplication.loaded_config_filess(++rErctj|\}}t}||||j|jD]=\}}||||jvr|j |>||j | |dS)z'Load config files by filename and path.)rr8rN) r`rsplitextr rr8rmergerrMryr{)rYrrext new_configr;fnames r>load_config_filezApplication.load_config_files ((22 #XX !44 %)%B 5  8 8MFE   V $ $ $T666)00777))) :&&&&&rEcF|jdd}t}|jd|t jD]|\}}| |rb|jd||| d^}}}|}|D] } || } t||t|}| |j||dS)z!Load config files by environment.-r'z1Looping through config variables with prefix "%s"zSeeing environ "%s"="%s"__N)rbupperrr r8r:r`rar startswithrsetattrrrryr{) rYPREFIXrrVvr'rrsectionr s r>load_config_environzApplication.load_config_environs""**344XX  JFSSSJ$$&& ? ?DAq||F## ?91a@@@!" D#$))A%ajGG&:1&=&=>>>))) :&&&&&rEc#XK||j}td||Dd fd  }tfd D|krnID] \}}|r|V dS) a Yields only classes with configurable traits, and their subclasses. :param classes: The list of classes to iterate; if not set, uses :attr:`classes`. Thus, produced sample config-file will contain all classes on which a trait-value may be overridden: - either on the class owning the trait, - or on its subclasses, even if those subclasses do not define any traits themselves. Nc3`K|])}|t|dfV*dS)TrN)r(class_own_traits)rrs r>rz:Application._classes_with_config_traits..sT$ $ $s++4+8899 :$ $ $ $ $ $ rErr4r/r(cDtfd|jDS)Nc30K|]}|vo|VdSrrK)rb cls_to_configs r>rzZApplication._classes_with_config_traits..is_any_parent_included..s2VV1qM)>mA.>VVVVVVrE)rw __bases__)rrs r>is_any_parent_includedzGApplication._classes_with_config_traits..is_any_parent_includeds(VVVV VVVVV VrETc3<K|]\}}||p |fVdSrrK)rrinc_yesrs r>rz:Application._classes_with_config_traits..sQ(( Cgr2z'Application._classes_with_config_traitss ?lG#$ $ 0099$ $ $    W W W W W W  (--//L'(((($1$7$7$9$9(((M ,, )..00  KB   rEctd|jzg}|d|d|d||jn|}t||}|D]*}|||+d|S)z/generate default config file from Configurablesz# Configuration file for %s.r&zc = get_config() #noqaNr)rbrMrirLr2class_config_sectionr)rYrilinesconfig_classesrs r>generate_config_filez Application.generate_config_files/$);< R 3444 R")/$,,wd>>wGGHH! C CC LL11.AA B B B ByyrEct|ddrX|jjD]B}tt5|dddn #1swxYwYCd|_dSdS)NrF)rr8rrrcloser)rYhandlers r>close_handlerszApplication.close_handlerss 4. 6 6 - 8, $ $i(($$MMOOO$$$$$$$$$$$$$$$',D $ $ $ - -sAA A r exit_statusint | str | Nonec|jd|j|t j|dS)NzExiting application: %s)r8r:rbrrr<)rYrs r>r<zApplication.exit&sC 0$)<<<  rEctt5|ddddS#1swxYwYdSr)rrrrs r>__del__zApplication.__del__+si  " "    ! ! ! " " " " " " " " " " " " " " " " " "s 7;;c r|jdi|}|||dS)zLaunch a global instance of this Application If a global instance already exists, this reinitializes and starts it NrK)rFrr)rr%r5r1s r>launch_instancezApplication.launch_instance2s> cl$$V$$ t rEr)rirjr/rk)r/r)rrr/r)r/r)r/r)r5r4r/r)r%rr/r)r/r)rir(r/r)F)rir(r/r)r/rP)r&rPr%rr/r)r/rJ) r%rXrrrrrirjr/r)r[r(r/r\)NF) rrPrrr8rrr(r/r)r/r\)rrPrrr/r)rirjr/rP)r)rrr/r)r%rr5r4r/r)crHrIrJr[rrb__annotations__rcrdrerfrrrrrgrirurvrr%rr'rrr\r]tagrrMrrrrrrrrrrrrrr|rrrrr|r ryrrrrrrrrrDrrrrrr r rrr#r"r+r/r.r9r;r1r>r4rBrIrWrZ classmethodrfrirrpropertyrrrr2rrr<rrr^r_s@r>r2r2sBB-4GM,B,BDBBBB4;7;T3U3UKUUUU:A'BT:U:UUUUUEgF\>]>]]]]]!3318 H9999G-1!!!!!.07wu~~G====#'$&&D(((( $t$QRRMl 2 cc  (' g cc - * cc 1111f W]L+7GHH"""IH" WU###"""$#"(((( WU^^   ^ T. 000` ccan$%<=G====   D  !4   K  &   A  #E@8 boolean_flagrEsr*7=<7H<~  get_configrds6   ##%%,,xxrE__main__)r.r,r/r,)r&r&) rbrPrrPrrPrrPr/r)r/r )br[ __future__rr@rr\r`rrsrtypingrB collectionsrr contextlibrrrlogging.configrtextwrapr traitlets.config.configurabler r traitlets.config.loaderr r rrrrrtraitlets.traitletsrrrrrrrrrrtraitlets.utils.bunchrtraitlets.utils.nested_updatertraitlets.utils.textrr utilsr#utils.importstringr$rrdrehasattrr%rfrarD_envvarlowerr'rv executableendswithrTypeVarCallableAnyr,UnionLoggerrrPrOptionalrrrhrDrrG FormatterrMr2rdefault_aliasesr default_flagsrrrHrrKrEr>rsy22#"""""  00000000%%%%%%MMMMMMMM                        ('''''77777788888888 ,,,,,,   EGG   EGG wsFtCH *..H" M M ==??m##4811 ]]__***4911 * h     ^ F 7 7 F F  AIcCJ/000 GGN$BB C &ae  :afSk "fQVL)* *     y   &&&&&W&&&&*bbbbb'bbbR%! LLLLL> z!!!!!rE