
    g=                     L    d dl Z d dlmZ d dlmZ d dlZd dlm	Z
  G d d      Zy)    N)config)OptionErrorc                       e Zd Z ej                  d      d        Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)
TestConfigT)autousec              #     K   |j                         5 }|j                  t        di        |j                  t        dt        j                  t        j                               |j                  t        di        |j                  t        di        t        j
                  dd       d  d d d        y # 1 sw Y   y xY ww)N_global_configoptions_deprecated_options_registered_optionschained_assignmentraise)contextsetattrcfDictWrapperr	   register_option)selfmonkeypatchms      T/var/www/openai/venv/lib/python3.12/site-packages/pandas/tests/config/test_config.pyclean_configzTestConfig.clean_config   s       "aIIb*B/IIb)R^^B4E4E%FGIIb/4IIb/4 3W= #""s   C BB4+	C 4B=9C c                     t        t        d      sJ t        t        d      sJ t        t        d      sJ t        t        d      sJ y )N
get_option
set_optionreset_optiondescribe_option)hasattrpdr   s    r   test_apizTestConfig.test_api   sC    r<(((r<(((r>***r,---    c                     t        j                  d dg      } |d        |d        d}t        j                  t        |      5   |d       d d d        y # 1 sw Y   y xY w)N   zValue must be one of None\|12match皙?)r   is_one_of_factorypytestraises
ValueError)r   vmsgs      r   test_is_one_of_factoryz!TestConfig.test_is_one_of_factory!   sJ      $,	"	$.]]:S1cF 211s   	AA c                    t        j                  ddd       d}t        j                  t        |      5  t        j                  ddd       d d d        d}t        j                  t        |      5  t        j                  ddd       d d d        t        j                  t        |      5  t        j                  ddd       d d d        d	}t        j                  t
        |      5  t        j                  d
d       d d d        t        j                  t
        |      5  t        j                  dd       d d d        d}t        j                  t
        |      5  t        j                  dd       d d d        t        j                  ddd       t        j                  ddd       y # 1 sw Y   cxY w# 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w)Na   docz&Option 'a' has already been registeredr%   z.Path prefix to option 'a' is already an optionza.b.c.d1a.b.c.d2zfor is a python keywordforr   za.for.bz(oh my goddess! is not a valid identifierzOh my Goddess!zk.b.c.d1zk.b.c.d2)r   r   r)   r*   r   r+   r   r-   s     r   test_register_optionzTestConfig.test_register_option*   sa   
35) 7]];c2sAu- 3 ?]];c2z1e4 3]];c2z1e4 3 (]]:S1ua( 2]]:S1y!, 2 9]]:S1/3 2 	:q%0
:q%05 32
 3222
 2111 21sG   F.2F;-G*G$G! G-.F8;GGG!G*-G6c                    t        j                  ddd       t        j                  ddd       t        j                  d       t        j                  ddd       t        j                  ddd	       t        j                  d
d       t        j                  dd       t        j                  dd       t        j                  dd       t        j                  dd       d}t        j                  t
        |      5  t        j                  d       d d d        dt        j                  dd      v sJ dt        j                  dd      v sJ dt        j                  dd      v sJ dt        j                  dd      v sJ d	t        j                  dd      v sJ dt        j                  d
d      v sJ dt        j                  dd      v sJ dt        j                  dd      v sJ dt        j                  dd      v sJ dt        j                  dd      v sJ dt        j                  dd      vsJ t        j                  dd       dt        j                  dd      v sJ y # 1 sw Y   exY w)Nr0   r1   r2   bdoc2zc.d.e1doc3zc.d.e2doc4fzg.hk   rkeylfoozNo such keys\(s\)r%   no.such.keyF_print_descprecated	availablebar)r   r   deprecate_optionr)   r*   r   r   r   r5   s     r   test_describe_optionzTestConfig.test_describe_optionK   s1   
35)
36*
C 
8Q/
8Q/
3"
5!$
3"
E,
3& #]];c2}- 3 **3EBBBB++CUCCCCR//GGGG++H%HHHH++H%HHHH b00%HHHHb00EJJJJR//5IIIIb((EBBBB **3EBBBBB..sFFFF
c5!**3EBBBB- 32s   >I77Jc                    t        j                  ddd       dt        j                  dd      v sJ t        j                  d      dk(  sJ t        j                  dd	       t        j                  d
      d	k(  sJ d}t        j                  t        |      5  t        j                  d       d d d        t        j                  d       t        j                  d
      sJ y # 1 sw Y   6xY w)NKanBANr1   r2   kanbaNFrD   kanBaNKanBanr>   kAnBaN#No such keys\(s\): 'no_such_option'r%   no_such_option)
r   r   r   r   r   r)   r*   r   rI   _is_deprecatedr5   s     r   test_case_insensitivez TestConfig.test_case_insensitiver   s    
8Q.**8GGGG}}X&!+++
h"}}X&!+++ 5]];c2MM*+ 3
H%  ***	 32s   C%%C.c                    t        j                  ddd       t        j                  ddd       t        j                  dd d       t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  d      J d}t        j                  t
        |	      5  t        j                  d
       d d d        y # 1 sw Y   y xY w)Nr0   r1   r2   b.chullor9   b.brQ   r%   rR   )r   r   r   r)   r*   r   r5   s     r   test_get_optionzTestConfig.test_get_option   s    
35)
5'62
5$/ }}S!Q&&&}}U#w...}}U#+++ 5]];c2MM*+ 322s   .CCc                    t        j                  ddd       t        j                  ddd       t        j                  dd d       t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  d      J t        j                  dd       t        j                  dd	       t        j                  dd
       t        j                  d      dk(  sJ t        j                  d      d	k(  sJ t        j                  d      d
k(  sJ d}t	        j
                  t        |      5  t        j                  dd        d d d        y # 1 sw Y   y xY w)Nr0   r1   r2   rV   rW   r9   rX   r>   wurldr'   z No such keys\(s\): 'no.such.key'r%   rC   )r   r   r   r   r)   r*   r   r5   s     r   test_set_optionzTestConfig.test_set_option   s   
35)
5'62
5$/}}S!Q&&&}}U#w...}}U#+++
c1
eW%
eS!}}S!Q&&&}}U#w...}}U#s***1]];c2MM-. 322s   >EE'c                     d}t        j                  t        |      5  t        j                          d d d        y # 1 sw Y   y xY w)N4Must provide an even number of non-keyword argumentsr%   r)   r*   r+   r   r   r5   s     r   test_set_option_empty_argsz%TestConfig.test_set_option_empty_args   s*    D]]:S1MMO 211s	   <Ac                     d}t        j                  t        |      5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nr^   r%   za.br>   rV   r_   r5   s     r   test_set_option_uneven_argsz&TestConfig.test_set_option_uneven_args   s1    D]]:S1MM%E* 211s	   ?Ac                     d}t        j                  t        |      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nr^   r%   r>   r_   r5   s     r   ,test_set_option_invalid_single_argument_typez7TestConfig.test_set_option_invalid_single_argument_type   s-    D]]:S1MM! 211s	   =Ac                    t        j                  ddd       t        j                  ddd       t        j                  dd d       t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  d      J t        j                  dddd dd	       t        j                  d      dk(  sJ t        j                  d      J t        j                  d      d	k(  sJ y )
Nr0   r1   r2   rV   rW   r9   rX   2g      $@)r   r   r   r   r    s    r   test_set_option_multiplez#TestConfig.test_set_option_multiple   s    
35)
5'62
5$/}}S!Q&&&}}U#w...}}U#+++
c3tUD9}}S!S(((}}U#+++}}U#t+++r"   c                    t        j                  dddt         j                         t        j                  dddt         j                         t        j                  dddt         j                         d	}t        j                  t        |
      5  t        j                  dddt         j                         d d d        t        j                  dd       t        j                  dd       t        j                  dd       t        j                  dd        t        j                  t        |
      5  t        j                  dd        d d d        t        j                  t        |
      5  t        j                  dd       d d d        d}t        j                  t        |
      5  t        j                  dddt         j                         d d d        t        j                  t        |
      5  t        j                  dddt         j                         d d d        d}t        j                  t        |
      5  t        j                  dd       d d d        t        j                  d t         j                  g      }t        j                  dd d|       t        j                  ddj                         t        j                  dd        t        j                  t        d
      5  t        j                  dd       d d d        y # 1 sw Y   ZxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr0   r1   r2   	validatordrV   rW   r9   z$Value must have type '<class 'int'>'r%   r3   NOr>   r[   abz+Value must be a nonnegative integer or Noneza.b.c.d3z;Value must be an instance of <class 'str'>\|<class 'bytes'>r8   c                       y N rq   r"   r   <lambda>z,TestConfig.test_validation.<locals>.<lambda>   s    r"   z%.1fzValue must be a callable)r   r   is_intis_nonnegative_intis_textr)   r*   r+   r   r(   is_callableformat)r   r-   rj   s      r   test_validationzTestConfig.test_validation   s5   
35BII>
35B4I4IJ
5'6RZZH4]]:S1z4"))L 2 	c1
eW%
c1
c4  ]]:S1MM#t$ 2]]:S1MM#t$ 2 <]]:S1z4"BWBWX 2]]:S1z2u@U@UV 2 M]]:S1MM%# 2 (($)?@	
3eyI
c6==)
c4 ]]:-GHMM#v& IH; 21 2111 2111 21 IHsT   (L6L 0L-,(L:7(MM3M L L*-L7:MMM M)c                    t        j                  dddt         j                         t        j                  dddt         j                         t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j
                  dd       t        j
                  dd	       t        j                  d      dk(  sJ t        j                  d      d	k(  sJ t        j                  d       t        j                  d      dk(  sJ t        j                  d      d	k(  sJ t        j                  d       t        j                  d      dk(  sJ t        j                  d      dk(  sJ y )
Nr0   r1   r2   ri   rV   rW   r9   r>   r[   r   r   rs   is_strr   r   r   r    s    r   test_reset_optionzTestConfig.test_reset_option   s   
35BII>
5'6RYYG}}S!Q&&&}}U#w...
c1
eW%}}S!Q&&&}}U#w...
}}S!Q&&&}}U#w...
}}S!Q&&&}}U#w...r"   c                 Z   t        j                  dddt         j                         t        j                  dddt         j                         t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j
                  dd       t        j
                  dd	       t        j                  d      dk(  sJ t        j                  d      d	k(  sJ t        j                  d
       t        j                  d      dk(  sJ t        j                  d      dk(  sJ y )Nr0   r1   r2   ri   rV   rW   r9   r>   r[   allrz   r    s    r   test_reset_option_allz TestConfig.test_reset_option_all   s    
35BII>
5'6RYYG}}S!Q&&&}}U#w...
c1
eW%}}S!Q&&&}}U#w...
}}S!Q&&&}}U#w...r"   c                    t        j                  d       t        j                  d      sJ t        j                  t
        d      5  t        j                  t        d      5  t        j                  d       d d d        d d d        t        j                  dddt         j                         t        j                  d	d
d       t        j                  dd
d       t        j                  dd       t        j                  t
        d      5  t        j                  d       d}t        j                  t        |      5  t        j                  d       d d d        d d d        t        j                  d	d       t        j                  t
        d      5  t        j                  d	       d d d        t        j                  ddd       t        j                  ddd       t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  dd       t        j                  t
        d      5  t        j                  d      dk(  sJ 	 d d d        t        j                  t
        d      5  t        j                  dd       d d d        t        j                  t
        d      5  t        j                  d      dk(  sJ 	 d d d        y # 1 sw Y   sxY w# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrB   
deprecatedr%   zNo such keys.s.: 'foo'r0   r1   r2   ri   rV   rW   r9   	nifty_ver)removal_verzeprecated.*nifty_verz1Option 'a' has already been defined as deprecatedzzounds!d.azd.deprH   r?   	eprecatedbaz)r   rI   rS   tmassert_produces_warningFutureWarningr)   r*   KeyErrorr   r   rs   r   r   r5   s     r   test_deprecate_optionz TestConfig.test_deprecate_option  s_   
E"  '''''\Jx/GHe$ I K 	35BII>
5'62
5'62
C[9''=STMM#EC{#6##C( 7	 U 	E9-''YGMM%  H 	5%0
7E62}}U#u,,,}}W%...
G%0''[I==)U222 J ''[IMM'5) J ''[I==)U222 JIA IH KJ 76	 UT HG JI JI JIsx   K8$K+:K83LLLLL,L8M+K5	0K88LL	
LLL),L58MMc                    t        j                  d      5  t        j                  ddd       t        j                  ddd       t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  dd       t        j                  dd	       t        j                  d      dk(  sJ t        j                  d      d	k(  sJ 	 d d d        t        j                  d
      dk(  sJ t        j                  d      d	k(  sJ dt        j
                  d
d      v sJ dt        j
                  dd      v sJ t        j                  d
       t        j                  d       t        j                  d      5  t        j                  d      dk(  sJ t        j                  d      dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nbaser0   r1   doc1r8   r>   r9         zbase.azbase.bFrD   )r   config_prefixr   r   r   r   r   r    s    r   test_config_prefixzTestConfig.test_config_prefix4  s   f%sAv.sAv.==%***==%***MM#q!MM#q!==%***==%*** & }}X&!+++}}X&!+++++H%HHHH++H%HHHH
!
!f%==%***==%*** &%' &%& &%s   CG
5G
GGc                    d gd gfd}t        j                  dd|       t        j                  dd|       d= d= t        j                  dd       d   dk(  sJ d   dk(  sJ d= d= t        j                  dd       d   dk(  sJ d   dk(  sJ d= d= t        j                  d       d   dk(  sJ y )	Nc                 p    j                  |        j                  t        j                  |              y rp   )appendr   r   )keyr=   r,   s    r   callbackz*TestConfig.test_callback.<locals>.callbackP  s#    HHSMHHR]]3'(r"   r   rB   cbzd.bfoozboo)r   r   r   r   )r   r   r=   r,   s     @@r   test_callbackzTestConfig.test_callbackL  s    FF	) 	5%H5
5%H5bE1R5
eV$u~~ubE1R5
eU#u~~u~~bE1R5
u~~r"   c                    d t        j                  dd        d       t        j                  dd      5   d       t        j                  dd      5   d       d d d         d       d d d         d       t        j                  dd        d       t        j                  dd      fd       } |        y # 1 sw Y   exY w# 1 sw Y   axY w)	Nc                 8    t        j                  d      | k(  sJ y )Nr0   )r   r   )vals    r   eqz.TestConfig.test_set_ContextManager.<locals>.eqf  s    ==%,,,r"   r0   r            {   c                        d       y )Nr   rq   )r   s   r   r<   z-TestConfig.test_set_ContextManager.<locals>.fv  s
    sGr"   )r   r   option_contextr   )r   r<   r   s     @r   test_set_ContextManagerz"TestConfig.test_set_ContextManagere  s    	- 	3"
1sB'rF""3+2 ,rF	 (
 	1
c2
2 
		3	$	 
%	 	
 ,+ ('s#   C	C!CC	
CCc                    g fd}t        j                  dd       t        j                  dd|       t         j                  }|j                  dk(  sJ t        j                  dd      5  |j                  dk(  sJ 	 d d d        d|_        t        j
                  d      dk(  sJ t        j                  d       |j                  t        j
                  dd      k(  sJ d}t        j                  t        |	      5  d
|_
        d d d        t        j                  t        |	      5  d
|_        d d d        d
|_        t              d
k(  sJ y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   9xY w)Nc                 (    j                  d       y )NT)r   )r   holders    r   f3z,TestConfig.test_attribute_access.<locals>.f3  s    MM$r"   r0   r   cr   r   i  z.You can only set the value of existing optionsr%   r1   )r   r   r
   r0   r   r   r   r)   r*   r   r8   displayr   len)r   r   r
   r-   r   s       @r   test_attribute_accessz TestConfig.test_attribute_access|  s%   	  	3"
3b)**yyA~~sB'99?"? ( 	}}S!S(((
yyBMM#q1111>]];c2GI 3]];c2GO 3 	6{a# (' 3222s$   .EE ,E,E E),E5c                 4   d}d}d}t        j                  ||       t        j                  ||      }t        j                  |      |k(  sJ |5  t        j                  |      |k(  sJ 	 d d d        t        j                  |      |k(  sJ y # 1 sw Y   $xY w)N<   
   r0   )r   r   r   r   )r   original_valuecontext_valueoption_namectxs        r   test_option_context_scopez$TestConfig.test_option_context_scope  s    
 
;7 ];}}[)^;;; ==->>>  }}[)^;;;	 Ss   BBc                     t         j                  }t        j                  t        d      5  |j
                   d d d        t        |d      rJ y # 1 sw Y   xY w)NzNo such optionr%   bananas)r   r
   r)   r*   r   r   r   )r   r
   s     r   test_dictwrapper_getattrz#TestConfig.test_dictwrapper_getattr  sD    **]];.>?OO @7I.... @?s   AAN)__name__
__module____qualname__r)   fixturer   r!   r.   r6   rJ   rT   rY   r\   r`   rb   rd   rg   rx   r|   r   r   r   r   r   r   r   r   rq   r"   r   r   r   
   s    V^^D! ".1B%CN+ ,/*
+

,$'L/$/'3R+02. <<,/r"   r   )r)   pandas._configr   r   pandas._config.configr   pandasr   pandas._testing_testingr   r   rq   r"   r   <module>r      s      ' -  k/ k/r"   