
    Owg=                     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      V/var/www/horilla/myenv/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!   sS      $,	"	$.]]:S1 	cF	 	 	s   	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*   s   
35) 7]];c2 	.sAu-	. ?]];c2 	5z1e4	5]];c2 	5z1e4	5 (]]:S1 	)ua(	)]]:S1 	-y!,	- 9]]:S1 	4/3	4 	:q%0
:q%05	. 	.
	5 	5	5 	5
	) 	)	- 	-	4 	4sG   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   s8   
35)
36*
C 
8Q/
8Q/
3"
5!$
3"
E,
3& #]];c2 	.}-	. **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-	. 	.s   >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*+	,
H%  ***		, 	,s   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*+	, 	, 	,s   .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-.	/ 	/ 	/s   >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   s3    D]]:S1 	MMO	 	 	s	   <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   s:    D]]:S1 	+MM%E*	+ 	+ 	+s	   ?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   s6    D]]:S1 	MM!	 	 	s	   =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   sv   
35BII>
35B4I4IJ
5'6RZZH4]]:S1 	Mz4"))L	M 	c1
eW%
c1
c4  ]]:S1 	%MM#t$	%]]:S1 	%MM#t$	% <]]:S1 	Yz4"BWBWX	Y]]:S1 	Wz2u@U@UV	W M]]:S1 	$MM%#	$ (($)?@	
3eyI
c6==)
c4 ]]:-GH 	'MM#v&	' 	';	M 	M	% 	%	% 	%	Y 	Y	W 	W	$ 	$	' 	'sT   (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$%	% 	35BII>
5'62
5'62
C[9''=ST 	)MM#EC{#6 )##C()		) 	E9-''YG 	!MM% 	! 	5%0
7E62}}U#u,,,}}W%...
G%0''[I 	3==)U222	3 ''[I 	*MM'5)	* ''[I 	3==)U222	3 	3A% %	% 	%) )		) 	)	! 	!	3 	3	* 	*	3 	3sx   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	]];c2 	 GO	  	6{a#	# 	#	 		  	 s$   .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 ];}}[)^;;;  	?==->>>	? }}[)^;;;		? 	?s   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  sI    **]];.>? 	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"   