
    oin                        S SK r S SKrS SKJr  S SKJr  S SKJ	r
  S SKrS SKrS SKrS SKr\ R                  R!                  SS5      S;   r\R$                  " \5      r\(       a7  \R*                  " \R,                  SS	9  \R/                  \R,                  5        O6\R*                  " \R0                  SS	9  \R/                  \R0                  5        S
 r	 " S S\R2                  5      r " S S5      r\ R                  R!                  SS5      S:w  Ga#  S SKr\" \R:                  5      \l        \R:                  R=                  S5        \R:                  R=                  S5        \R:                  R=                  S5        \R:                  R=                  S5        \R$                  " S5      R/                  \R>                  5        \R:                  R=                  S5        \R@                  " SS\!S9  \R@                  " SSS9  \R@                  " SSS9  \R@                  " SSS9  \R@                  " SSS9  S r"S r#S  r$S! r%S" r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2g)/    N)Path)version)VersionUNSLOTH_ENABLE_LOGGING0)1Truetruez#[%(name)s|%(levelname)s]%(message)s)levelformatc           
      z    [        U 5      n[        R                  " SU5      nUc  [        [        [        5      5      eUR                  S5      R                  S5      nX:w  a  US-  n[        U5      $ !   SSKJ	nJ
n  U" U" 5       S   S   5      n[        SU  SUR                   S	UR                   S
35      e= f)Nz[0-9\.]{1,}r   .z.1)getframeinfostack   z$Unsloth: Could not get version for `z`
File name = [z] Line number = [])strrematch	ExceptionegrouprstripTrueVersioninspectr   r   RuntimeErrorfilenamelineno)r   new_versionr   r   callers        N/home/james-whalen/.local/lib/python3.13/site-packages/unsloth/import_fixes.pyr   r   ,   s    
'lhh~{;CF##!''*11#6!4K;''
/egajm,27) <"OO,,=fmm_AO
 	
s   A1A4 4AB:c                   $    \ rS rSrSrS rS rSrg)HideLoggingMessageA   textc                     Xl         g Nr%   selfr&   s     r!   __init__HideLoggingMessage.__init__D   s    	    c                 <    U R                   UR                  5       ;  $ r(   )r&   
getMessage)r*   xs     r!   filterHideLoggingMessage.filterG   s    II/0r-   N)__name__
__module____qualname____firstlineno__	__slots__r+   r1   __static_attributes__ r-   r!   r#   r#   A   s    I1r-   r#   c                   2    \ rS rSrS rS rS rS rS rSr	g)	HidePrintMessageK   c                     Xl         / U l        g r(   )_original_stream_hidden_texts)r*   original_streams     r!   r+   HidePrintMessage.__init__L   s     /r-   c                 :    U R                   R                  U5        g r(   )r?   appendr)   s     r!   
add_filterHidePrintMessage.add_filterP   s    !!$'r-   c                    ^ [        U4S jU R                   5       5      (       d  U R                  R                  T5        g g )Nc              3   ,   >#    U  H	  oT;   v   M     g 7fr(   r9   ).0r&   messages     r!   	<genexpr>)HidePrintMessage.write.<locals>.<genexpr>T   s     B/At7?/As   )anyr?   r>   write)r*   rI   s    `r!   rM   HidePrintMessage.writeS   s4    Bt/A/ABBB!!''0 Cr-   c                 8    U R                   R                  5         g r(   )r>   flush)r*   s    r!   rP   HidePrintMessage.flushW   s    ##%r-   c                 .    [        U R                  U5      $ r(   )getattrr>   )r*   names     r!   __getattr__HidePrintMessage.__getattr__Z   s    t,,d33r-   )r?   r>   N)
r3   r4   r5   r6   r+   rD   rM   rP   rU   r8   r9   r-   r!   r;   r;   K   s     (1&4r-   r;   r   zTMA benchmarks will be runningz7Arch conditional MMA instruction used without targetingCUTE_INVALID_CONTROL_PATHz'Trying to use tma without CUTE_ARCH_TMAtorchaoz!Skipping import of cpp extensionsignorezinvalid escape sequence)rI   categoryz%PYTORCH_CUDA_ALLOC_CONF is deprecated)rI   z/Please use the new API settings to control TF32z `int4_weight_only` is deprecatedz `int8_weight_only` is deprecatedc                    ^  SS K n  " S S5      n[        U R                  R                  S5      (       d1  [        R                  S5        XR                  R                  l        GO[        U R                  R                  S5      (       a  [        U R                  R                  R                  S5      (       dU  [        U R                  R                  S5      (       d0  XR                  R                  l        [        R                  S5        O[        U R                  R                  S5      (       a  [        U R                  R                  R                  S5      (       d  [        U R                  R                  S5      (       a_  U R                  R                  R                  mU4S jnX R                  R                  R                  l        [        R                  S5        g !    g = f)	Nr   c                   &    \ rS rSrS rS rS rSrg)1fix_message_factory_issue.<locals>.MessageFactory   c                     g r(   r9   r*   argskwargss      r!   CreatePrototypeAfix_message_factory_issue.<locals>.MessageFactory.CreatePrototype       r-   c                     g r(   r9   r`   s      r!   GetMessages=fix_message_factory_issue.<locals>.MessageFactory.GetMessages   re   r-   c                     g r(   r9   r`   s      r!   GetPrototype>fix_message_factory_issue.<locals>.MessageFactory.GetPrototype   re   r-   r9   N)r3   r4   r5   r6   rc   rg   rj   r8   r9   r-   r!   MessageFactoryr]      s    r-   rl   z=Unsloth: Patching protobuf.MessageFactory as it doesn't existrj   GetMessageClassc                    > T" U5      $ r(   r9   )r*   
descriptorrm   s     r!   rj   /fix_message_factory_issue.<locals>.GetPrototype   s    &z22r-   z6Unsloth: Patching protobuf.MessageFactory.GetPrototype)	google.protobuf.message_factoryhasattrprotobufmessage_factoryloggerinforl   rm   rj   )googlerl   rj   rm   s      @r!   fix_message_factory_issuerx      s_   ).	 	 v668HIIKKWX=KOO++:FOO335EFF//>>  FOO;;=NOO=KOO++:KKWXFOO335EFF//>>  779JKK$oo==MMO3 KWOO++::GKKPQs   G%G) )G-c                     [         R                  R                  S5      n U c  g [        S5      n[	        U5      [	        S5      :  a  U R
                  nUc  U R                  S   nO"[        R                  R                  U5      S   n[        U5      S-  S-  S-  n UR                  5       (       a  [        USSS	9 nUR                  5       nS
U;   aY  UR                  S
S5      nUR                  S5        UR!                  U5        UR#                  5         [$        R'                  S5        S S S 5        g g g ! , (       d  f       g = f! [(         a+  n[$        R'                  S[+        U5       35         S nAg S nAff = f)Nxformersz0.0.29r   opsfmhaz
cutlass.pyr+utf-8encodingznum_splits_key=-1,znum_splits_key=None,z:Unsloth: Patching Xformers to fix some performance issues.z/Unsloth: Failed patching Xformers with error = 	importlibutil	find_specimportlib_versionr   originsubmodule_search_locationsospathsplitr   existsopenreadreplaceseekrM   truncateru   rv   r   r   )specxformers_versionxformers_locationcutlassfr&   r   s          r!   fix_xformers_performance_issuer      sQ   >>##J/D|(4 78#44 KK$ $ ? ? B ".? @ C()E1F:\I	T~~'4G<668D+t3#||02  q	

X =<   5 =<  	TKKI#a&RSS	Ts7    E	 =A0D8-E	 8
EE	 E	 	
E>!E99E>c                     SS K n S n SSKJn  Ub   U" 5       nUc)   SS Kn[        USS 5      n[        U5      (       a  U" 5       nUc  g  UR                  R                  nUS:H  =(       d    S[        [        U5      5      ;   nU(       d  g [        U R                  S5      (       d  g Sn U R                  R                  5       n[        U[        5      (       a  US:  a  SnU(       d  g [         R#                  S	5        S
 U R                  l        g ! [         a    S n GNf = f! [         a    S n GNf = f! [         a    S n GNf = f! [         a     g f = f! [         a    Sn Nf = f)Nr   )get_ipythonr   ZMQInteractiveShellzgoogle.colabfilenoFTzYUnsloth: Notebook detected - Patching sys.stdout.fileno for newer `vllm>=0.12.0` versionsc                      g)Nr   r9   r9   r-   r!   <lambda>*patch_vllm_for_notebooks.<locals>.<lambda>  s    r-   )sysIPythonr   r   builtinsrS   callable	__class__r3   r   typerr   stdoutr   
isinstanceintru   rv   )r   ipython_get_ipythonr   shellis_notebookneeds_patchfds           r!   patch_vllm_for_notebooksr      sy   G7 	"nG 	"8]DAL%%&. !!**44 
#MK
 9
 3::x((KZZ "c""b1fK 
KKc "CJJe    	G	  	G	    sW   D D$ (D7 
9E
 *7E D! D!$D43D47EE

EEE)(E)c                  (   [         R                  R                  S5      n U c  g [        S5      n[	        U5      [	        S5      :  Ga  U R
                  nUc  U R                  S   nO"[        R                  R                  U5      S   n[        U5      S-  S-  S-  n UR                  5       (       a  [        USSS	9 nUR                  5       nS
U;   ak  UR                  S
S5      nUR                  SS5      nUR                  S5        UR!                  U5        UR#                  5         [$        R'                  S5        S S S 5        g g g ! , (       d  f       g = f! [(         a+  n[$        R'                  S[+        U5       35         S nAg S nAff = f)Nvllmz0.10.1r   transformers_utilsconfigszovis.pyr}   r~   r   z)AutoConfig.register("aimv2", AIMv2Config) zbackbone_config.pop('model_type')
                backbone_config = AutoConfig.for_model(model_type,
                                                       **backbone_config)a  if model_type != "aimv2":
                    backbone_config.pop('model_type')
                    backbone_config = AutoConfig.for_model(model_type, **backbone_config)
                else:
                    backbone_config = AIMv2Config(**backbone_config)zdUnsloth: Patching vLLM to fix `'aimv2' is already used by a Transformers config, pick another name.`z+Unsloth: Failed patching vLLM with error = r   )r   vllm_versionvllm_locationovis_configr   r&   r   s          r!   fix_vllm_aimv2_issuer     sn   >>##F+D|$V,L|wx00  ;;A>MGGMM-8;M=),@@9LyX	P!!##+t@A668DBdJ#||G   $||MH		  q	

 C+ A@ $ 1 A@0  	PKKEc!fXNOO	Ps7    E >BE E 
EE E 
F&!FFc                      [         R                  R                  S5      c  g SS Kn  SSKJn  g ! [         a(    U R                  R                  U R                  l         g f = f)Nr   r   )GuidedDecodingParams)	r   r   r   r   vllm.sampling_paramsr   ImportErrorsampling_paramsStructuredOutputsParams)r   r   s     r!   fix_vllm_guided_decoding_paramsr   5  sS    ~~'/ 
= 
  88 	1
s   . /A A c                  V     SSK Jn   U R                  [        S5      5        A g !    g = f)Nr   )ru   z
`HF_TOKEN`)huggingface_hub._loginru   	addFilterr#   )huggingface_hub_loggers    r!   ignore_logger_messagesr   E  s+    K(();L)IJ"s   !$ (c                     [         R                  R                  S5      c  g [         R                  R                  S5      c  g [         R                  R                  S5      c  g [        [	        S5      5      n [        [	        S5      5      [        S5      :X  a8  U [        S5      :X  d  U [        S5      :X  a  [        S5        SS	KJn  U" 5         g g g )
Nhf_xet	ipykernelhuggingface_hubz1.1.10z7.0.0z7.0.1a  #### Unsloth: `hf_xet==1.1.10` and `ipykernel==7.0.0` or `ipykernel==7.0.1` breaks progress bars. Using ASCII progress bars.
#### Unsloth: To re-enable progress bars, please upgrade to `ipykernel>=7.1.0` or wait for a fix to
https://github.com/huggingface/xet-core/issues/526r   )disable_progress_bars)r   r   r   r   r   printhuggingface_hub.utilsr   )ipykernel_versionr   s     r!   patch_ipykernel_hf_xetr   P  s    
 ~~)1~~,4~~ 12: 1+ >?	"8,	-1B	B''"22!WW%55 	A	

 	@ 6	 
Cr-   c                  v    S[         R                  S'   S[         R                  S'   S[         R                  S'   g )Nzahttps://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20logo%20black%20text.pngTRACKIO_LOGO_LIGHT_URLzahttps://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20logo%20white%20text.pngTRACKIO_LOGO_DARK_URLztrain/rewardTRACKIO_PLOT_ORDERr   environr9   r-   r!   patch_trackior   p  s=     	l JJ'( 	l JJ&' (6BJJ#$r-   c                      [         R                  R                  S5      c  g [        [	        S5      5      n U [        S5      ::  a(  U [        S5      :  a  [        S[        U 5       S35      eg g )Ndatasetsz4.5.0z4.4.0z #### Unsloth: Using `datasets = zL` will cause recursion errors.
Please downgrade datasets to `datasets==4.3.0)r   r   r   r   r   NotImplementedErrorr   )datasets_versions    r!   patch_datasetsr   |  su    ~~
+30<=GG,,GG,,!.s3C/D.E F< <
 	
 	- 	-r-   c                  (   [         R                  R                  S5      c  g  [        S5      n [	        U 5      [	        S5      :  a-  S[
        R                  S'   [        R                  SU  S35        g [        R                  SU  S35        g !    g = f)	N
fbgemm_gpufbgemm_gpu_genaiz1.4.0r   UNSLOTH_HAS_FBGEMMzUnsloth: fbgemm_gpu_genai==zN is old and may cause issues. Disabling FBGEMM - using Triton kernels instead.z
 detected.)	r   r   r   r   r   r   r   ru   rv   )fbgemm_gpu_versions    r!   check_fbgemm_gpu_versionr     s    ~~-5./AB
 !"WW%55+.

'()*<)= >? @	
 	
KK-.@-ALMs   B Bc                     ^ SSK n SSKJm   U R                  TR                  5      nSU;  a  gU4S jnUTl        [
        R                  S5        g!    g= f)z
Patch transformers PreTrainedModel.enable_input_require_grads to handle vision models
that raise NotImplementedError from get_input_embeddings().

r   N)PreTrainedModelzfor module in self.modules()c                   > S n/ n[        5       nU R                  5        H  n[        UT5      (       a  [        US5      (       d  M'   UR	                  5       nUc  M=  [        U5      nXc;   a  MO  UR                  U5        UR                  UR                  U5      5        M     X l
        U(       a  US   U l        g g ! [
         a     M  f = f)Nc                 &    UR                  S5        g )NT)requires_grad_)moduleinputoutputs      r!   make_inputs_require_gradsppatch_enable_input_require_grads.<locals>._patched_enable_input_require_grads.<locals>.make_inputs_require_grads  s    !!$'r-   get_input_embeddingsr   )setmodulesr   rr   r   r   idaddrC   register_forward_hook_require_grads_hooks_require_grads_hook)r*   r   hooksseen_modulesr   input_embeddingsembedding_idr   s          r!   #_patched_enable_input_require_gradsMpatch_enable_input_require_grads.<locals>._patched_enable_input_require_grads  s    	( ullnF6?33F$:;;#)#>#>#@   './L+\*LL 667PQ- %4 %*!',QxD$ % '  s   	B>>
CCzJUnsloth: Patched enable_input_require_grads for vision model compatibility)r   transformersr   	getsourceenable_input_require_gradsru   rv   )r   original_sourcer   r   s      @r!    patch_enable_input_require_gradsr     s^     ,!++O,V,VW
 &_<#0J 2UO.
KKT]s   A Ac            	         [         R                  R                  S5      c  [        S5      e[         R                  R                  S5      c  g [	        S5      n [	        S5      n/ SQnS nU H!  u  pE[        U 5      [        U5      :  d  M  Un  O   Uc  g [        U5      [        U5      :  a  [        SU  SU SU S35      e[        R                  SU  S	U S
35        g )Ntorchz5Unsloth: torch not found. Please install torch first.torchvision))z2.9.0z0.24.0)z2.8.0z0.23.0)z2.7.0z0.22.0)z2.6.0z0.21.0)z2.5.0z0.20.0)z2.4.0z0.19.0zUnsloth: torch==z requires torchvision>=z, but found torchvision==zZ. Please refer to https://pytorch.org/get-started/previous-versions/ for more information.z and torchvision==z are compatible.)r   r   r   r   r   r   ru   rv   )torch_versiontorchvision_versionTORCH_TORCHVISION_COMPATrequired_torchvision	min_torchmin_torchvisions         r!   torchvision_compatibility_checkr    s    ~~(0QRR~~.6%g.M+M:   &>"	=!WY%77#2  '?
 #"#g.B&CC}o-DEYDZ [&&9%: ;gh
 	
 KK
=/);<O;PP`ar-   c                     [         R                  R                  S5      n U c  g U R                  nUc  U R                  S   nO"[
        R                  R                  U5      S   n[        U5      S-  S-  S-  nUR                  5       (       d  g  [        USSS9 nUR                  5       nS	nUS
-   nUS-   S-   U;   ad  Xd;  a_  UR                  US-   S-   U5      nUR                  S5        UR                  U5        UR                  5         [         R#                  S5        S S S 5        g ! , (       d  f       g = f! [$         a+  n[         R#                  S['        U5       35         S nAg S nAff = f)Ntrlr   experimentalopenenvzutils.pyr}   r~   r   zvif is_vllm_available():
    from vllm import SamplingParams
    from vllm.sampling_params import GuidedDecodingParams
zZelse:
    from typing import Any
    SamplingParams = Any
    GuidedDecodingParams = Any


z?Unsloth: Patching TRL OpenEnv to fix SamplingParams not definedz2Unsloth: Failed patching TRL OpenEnv with error = )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   ru   rv   r   r   )r   trl_locationr  r   r&   badreplace_withr   s           r!   fix_openenv_no_vllmr  	  sQ   >>##E*D|;;L66q9ww}}\215< >1I=
JG>>S'4G4668DN 
 L TzD D(\-E||C$J$5|Dq	

U' 544,  SHQQRRSs7   D= BD,#D= ,
D:6D= :D= =
E2!E--E2c                     [         R                  R                  S5      n U c  g U R                  nUc  U R                  S   nO"[
        R                  R                  U5      S   n[        U5      S-  S-  S-  nUR                  5       (       d  g  Sn[        R                  " U5      n[        USSS	9 nUR                  5       nS
nXe;   ag  X5;  ab  UR                  US-   US-   U-   5      nUR                  S5        UR!                  U5        UR#                  5         [$        R'                  S5        S S S 5        g ! , (       d  f       g = f! [(         a+  n[$        R'                  S[+        U5       35         S nAg S nAff = f)N
executorchr   examplesmodelsz__init__.pya  
        import sys
        import types
        import re
        from typing import Any, Optional
        def get_mapped_key(key: str, mapping_dict: dict[str, str]) -> str:
            try:
                # Checks if there is a layer # in the key
                if any(k.isdigit() for k in key.split(".")):
                    # Replace layer number with "{}" to create key for lookup
                    abstract_key = re.sub(r"(\.\d+)", ".{}", key)
                    layer_num = re.search(r"\d+", key).group(0)
                    new_key = mapping_dict[abstract_key]
                    new_key = new_key.format(layer_num)
                else:
                    new_key = mapping_dict[key]
            except KeyError as e:
                raise Exception(
                    f'Error converting the state dict. Found unexpected key: "{key}". '
                    "Please make sure you're loading a checkpoint with the right format. "
                ) from e

            return new_key

        torchtune = types.ModuleType("torchtune")
        torchtune.__path__ = []
        models = types.ModuleType("torchtune.models")
        models.__path__ = []
        convert_weights = types.ModuleType("torchtune.models.convert_weights")
        convert_weights.get_mapped_key = get_mapped_key
        torchtune.models = models
        models.convert_weights = convert_weights
        sys.modules["torchtune"] = torchtune
        sys.modules["torchtune.models"] = models
        sys.modules["torchtune.models.convert_weights"] = convert_weights
        r}   r~   r   zfrom enum import Enum
r	  z2Unsloth: Patching Executorch to fix get_mapped_keyz(Unsloth: Failed Executorch with error = )r   r   r   r   r   r   r   r   r   r   textwrapdedentr   r   r   r   rM   r   ru   rv   r   r   )r   executorch_locationr  whatr   r&   r  r   s           r!   fix_executorchr  2  sM   >>##L1D|++""==a@ ggmm,?@C)*Z7(B]RJ1I#H t$*dw71668D+C{t/||C$Jd
T0ABq	

PQ 877  I>s1vhGHHIs7   #E 3A?D;2E ;
E	E 	E 
F!E<<Fc                  *    S[         R                  S'   g )NerrorDIFFUSERS_VERBOSITYr   r9   r-   r!   fix_diffusers_warningsr  s  s    (/BJJ$%r-   c                  H   ^  SS K m [        T S5      (       d  U 4S jT l        g g )Nr   is_offline_modec                  0   > T R                   R                  $ r(   )	constantsHF_HUB_OFFLINEr   s   r!   r   %fix_huggingface_hub.<locals>.<lambda>~  s    O--<<r-   )r   rr   r  r   s   @r!   fix_huggingface_hubr"  x  s$    ?$566< 	' 7r-   c                     [         R                  R                  S5      c  g SSKn U R                  R                  5       (       d  gSnSn[        U R                  R                  5       5       HE  nU R                  R                  U5      u  pEUS:X  d  M(  SnU R                  R                  U5      n  O   U(       d  g S nU" S5      nU" S	5      nU" S
5      n	U(       d  U(       d  U	(       d  gSn
 [        [        S5      5      nU[        U
5      :  a  [        R                  SU SU S35        g S[         R"                  S'   S n/ n [         R$                  " S5      n['        US5      (       aD  UR(                  n['        US5      (       a  UR+                  5         Xl        UR-                  S5        S	S
SS.nUR5                  5        HH  u  nn [         R$                  " U5      n['        US5      (       a  UUl        UR-                  U5        MH  MJ     U(       a+  [        R                  SU SSR7                  U5       35        g[        R                  SU S35        g! [         a     gf = f! [         a$  n[        R                  SU S35         SnAGNkSnAff = f! [.        [0        [2        4 a     GNf = f! [.        [0        [2        4 a     GM  f = f)al  
Fix vLLM PDL (Programmatic Dependent Launch) bug on Blackwell GPUs (SM100).

The issue: vLLM's LoRA Triton kernels use tl.extra.cuda.gdc_wait() for PDL
optimization on SM90+ GPUs. This fails on SM100 (B200/B100) during CUDA graph
capture because Triton's pipeliner can't handle gdc_wait in complex kernels.

See: https://github.com/vllm-project/vllm/issues/30872
r   Nr   F
   Tc                 r     [         R                  R                  U 5      S L$ ! [        [        4 a     gf = fNF)r   r   r   ModuleNotFoundError
ValueError)rT   s    r!   _spec_exists,fix_vllm_pdl_blackwell.<locals>._spec_exists  s8    	>>++D1==#Z0 		s    # 66zvllm.lora.ops.triton_ops.utilsz'vllm.lora.ops.triton_ops.lora_expand_opz'vllm.lora.ops.triton_ops.lora_shrink_opz0.13.2zUnsloth: SM100 (z) detected but vLLM z- should include PDL fix - skipping workaroundz$Unsloth: vLLM version check failed (z), applying PDL workaround.r   TRITON_DISABLE_PDLc                      gr&  r9   )ra   rb   s     r!   fake_supports_pdl1fix_vllm_pdl_blackwell.<locals>.fake_supports_pdl  s    r-   supports_pdlcache_clearutilsz*vllm.lora.ops.triton_ops.fused_moe_lora_op)lora_expand_oplora_shrink_opfused_moe_lora_opz$Unsloth: Applied PDL fix for SM100 (z) - patched: z, z-Unsloth: Set TRITON_DISABLE_PDL=1 for SM100 ())r   r   r   r   cudais_availablerangedevice_countget_device_capabilityget_device_namer   r   r   ru   rv   debugr   r   import_modulerr   r/  r0  rC   r   r'  AttributeErroritemsjoin)r   	has_sm100sm100_gpu_nameimajorminorr)  	has_utilshas_expand_ophas_shrink_opVLLM_PDL_FIX_VERSIONr   r   r-  patchedutils_moduleoriginal_fnconsumer_modulesrT   r   r   s                        r!   fix_vllm_pdl_blackwellrN    s    ~~'/zz&&(( 	uzz..01A ::;;A>LE{ 	!&!;!;A!> 2   =>I !JKM !JKM]= $
089'"677KK">"22F|n U? @  8 (+BJJ#$ G
	 ../OP<00&33K{M22'')(9%NN7# DCI
 ',,.
d	,,T2Fv~..&7#t$ / / 2>2B C		'*+-	
 	CNCSSTUVa  :  
21#5PQ	
 	

0 ,n= " 0.A 		s[   #I' AI' (I' 4?I7 A+J( ?K'
I43I47
J%J  J%(K KKK)3r   importlib.utilr   pathlibr   importlib.metadatar   r   packaging.versionr   r   r   loggingr  warningsr   getr   	getLoggerr3   ru   basicConfigINFOsetLevelWARNINGFilterr#   r;   r   stderrrD   ERRORfilterwarningsSyntaxWarningrx   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  rN  r9   r-   r!   <module>r`     s@   
   ; 4 	    (@#F K  
 
		8	$'L OOGLL!*O OOGOO$
*1 14 4& ::>>*C0C7 "#**-CJJJ:; JJSTJJ56JJCDi ))'--8JJ=>5- H0WXM H0RSH0RS
*\T@8"x'PT
  @	6
N(=@&T%SR>IB0

pWr-   