
    wdX+                     x   d dl mZ d dlZd dlmZmZ d dlZd dlZd dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d d	l/m0Z0m1Z1m/Z/m2Z2 d
 Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:ej;        <                    e'oe( d          d             Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd  ZId! ZJd" ZKd# ZL eeeeg          ZMd$ ZNd% ZOd& ZPd' ZQd( ZRd) ZSd* ZTd+ ZUd, ZVd- ZWd. ZXd/ ZYd0 ZZd1 Z[d2 Z\d3 Z]ej;        ^                    ej_        d          d4k    e`d56          d7             Zad8 Zbej;        c                    d9d:g  ed            g          d;             Zeej;        ^                    efd<6          d=             Zgd> Zhd? ZidS )@    )starmapN)catch_warningssimplefilter)discovernullunite_identical
unite_baseunite_merge_dimensionsdo_onelowest_common_dshape)int64float64
complex128stringbool_TupleRecorddate_	datetime_time_
timedelta_int32varOptionrealNull	TimeDeltaStringfloat32R)PY2CPYTHONmappingproxyOrderedDict)assert_dshape_equal)dshape)datetimedatetime	timedeltac                  >   t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ t          d          t
          k    sJ t          d           t          k    sJ d S )N         @y      @      ?HelloT)r   r   r   r   r   r   r        >lib/python3.11/site-packages/datashape/tests/test_discovery.pytest_simpler2      s    A;;%C==G####H++++G&&&&D>>U""""D>>T!!!!!!r0   c                  j    t           j        d         dk    rt          d          t          k    sJ d S d S )Nr      zdiscover(3L))sysversion_infoevalr   r/   r0   r1   	test_longr8      s@    
a -N##u,,,,- -,,r0   c                      t          g d          dt          d          z  k    sJ t          g d          dt          d          z  k    sJ d S )N)   r4   r,   r,   r:   )      ?       @r-   r;   r   r/   r0   r1   	test_listr>   #   sW    III!hqkk/1111OOO$$HSMM(9999999r0   c                  l    t          t          dg                    dt          d          z  k    sJ d S Nr:   )r   setr/   r0   r1   test_setrB   (   s3    CHHXa[[000000r0   c                  l    t          t          dg                    dt          d          z  k    sJ d S r@   )r   	frozensetr/   r0   r1   test_frozensetrE   ,   s3    IqcNN##q8A;;666666r0   c                      t          d          t          t          d          t          d          g          k    sJ d S )N)r.   r:   r.   r:   )r   r   r/   r0   r1   $test_heterogeneous_ordered_containerrG   0   s<    L!!UHW,=,=x{{+K%L%LLLLLLLr0   c                     t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ d S )N1r:   z1.0r;   TrueTtruer=   r/   r0   r1   test_stringrL   4   s    C==HQKK''''E??hsmm++++Fx~~----Fx~~------r0   c                      t          ddd          t          dt          d          gdt          d          gg          k    sJ d S )NAliced   nameamountrR   rQ   )r   r   r/   r0   r1   test_recordrS   ;   sb    g5566Xx}}-Xg../1 2 22 3 3 3 3 3r0   z@We cannot create mapping proxies in python 2 when not in CPython)reasonc                      t          j        d          dt          j        d          d} t          t	          t          |                     t	          |                      d S )Nr:   csr;   )abc)npr   r   r%   r   r#   )ds    r1   test_mappingproxyr\   A   sY     hqkk2:c??;;Aa!!    r0   c                      t          dt          j        d          fddt          j        d          ff          } t	          t          |           t          dt          dt          dt          f                    d S )NrY   r:   )rX   rV   rW   r;   rX   )r$   rZ   r   r   r%   r   r    r   )ods    r1   test_ordereddictr_   L   sp    	sBHQKK(+RZ__7MN	O	OB	#u*c6k3<
/0    r0   c                      ddddddddd	d
t          dddddd          g} | D ]}t          |          t          k    sJ d S )Nz1991-02-03 04:05:06z11/12/1822 06:47:26.00z1822-11-12T06:47:26zFri Dec 19 15:10:11 1997z"Friday, November 11, 2005 17:56:21z1982-2-20 5:02:00z20030331 05:59:59.9zJul  6 2030  5:55PMz1994-10-20 T 11:15z2013-03-04T14:38:05.123  r:      )r)   r   r   )inputsdts     r1   test_datetimere   T   sq    #&#(2!##"'tQ2q!,,F  ) )||y((((() )r0   c                  :    t          d          t          k    sJ d S )Nz
2014-01-01)r   r   r/   r0   r1   test_string_daterg   g   s!    L!!U******r0   c                  X    t          t          ddd                    t          k    sJ d S )Nra   r:   )r   r'   r   r/   r0   r1   test_python_dateri   k   s-    Dq!$$%%......r0   c                  :    t          d          t          k    sJ d S )N r   r   r/   r0   r1   $test_single_space_string_is_not_daterm   o   s    C==F""""""r0   c                  :    t          d          t          k    sJ d S )Nz31-DEC-99 12.00.00.000000000rl   r/   r0   r1    test_string_that_looks_like_datero   s   s"    233v======r0   c                  X    t          t          ddd                    t          k    sJ d S )Nrb   r   r:   )r   r(   r   r/   r0   r1   	test_timerq   x   s+    DQNN##u,,,,,,r0   c                      t          t          d t          dd          D                       } | D ]}t          |          t          k    sJ d S )Nc              3   >   K   | ]}t          d d |z
  d          V  dS )
   N)range).0is     r1   	<genexpr>z!test_timedelta.<locals>.<genexpr>}   s2      JJuRa44JJJJJJr0   r:      )r   r*   rv   r   r   )objstss     r1   test_timedeltar}   |   s[    9JJeAqkkJJJKKD * *||z)))))* *r0   c                     g d} | D ]=}t          |          t          |                                d                   k    sJ >t          j        t
                    5  t          d           d d d            d S # 1 swxY w Y   d S )N)z1 dayz-2 hoursz	3 secondsz1 microsecondz1003 millisecondsr:   )unitzbuzz light-years)r   r   splitpytestraises
ValueError)rc   r|   s     r1   test_timedelta_stringsr      s    # # #F
  = =||ybhhjjm<<<<<<<<	z	"	" + +)****+ + + + + + + + + + + + + + + + + +s   A<<B B c                  >   t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ t          d          t          k    sJ d S )Nz12:00:01z12:00:01.000z12:00:01.123456z12:00:01.1234z10-10-01T12:00:01z10-10-01 12:00:01)r   r   r   r/   r0   r1   test_time_stringr      s    J5((((N##u,,,,%&&%////O$$----'((I5555'((I555555r0   c                      dddddddddg} t          t          |                     t          d          k    sJ d S )	NrN   100rP   Bob200Charlie300z!3 * {amount: int64, name: string})r&   r   datas    r1   test_integrativer      sg    ..e,,%002D 8D>>""6778 9 9 9 9 9r0   c                      t          t          j        d                    t          k    sJ t          t          j        d                    t          k    sJ d S r@   )r   rZ   r   r   r/   r0   r1   test_numpy_scalarsr      sJ    BHQKK  E))))BJqMM""g------r0   c                      t          t          j        dt          j                            t	          d          k    sJ d S )N)r,   r4   dtypez3 * 2 * int32)r   rZ   onesr   r&   r/   r0   r1   test_numpy_arrayr      s:    BGF"(333448O8OOOOOOOr0   c                  p    t          j        ddgd          } t          |           dt          z  k    sJ d S )Nr.   worldOr   r4   )rZ   arrayr   r   xs    r1   test_numpy_array_with_stringsr      s<    
'7#3///AA;;!f*$$$$$$r0   c                  ~    t          j        ddgddg          } t          |           t          d          k    sJ d S )N)rN   r:   )r   r4   )rQ   r   )amti4r   z2 * {name: string, amt: int32})rZ   r   r   r&   r   s    r1    test_numpy_recarray_with_stringsr      sM    
,
+%}5	7 	7 	7AA;;&!ABBBBBBBBr0   c                     t          t          t          t          g          dt          z  k    sJ t          dt          z  dt          z  g          dt          t          z  z  k    sJ t          dt          z  dt          z  g          ddt          z  z  k    sJ t          ddt          z  z  ddt          z  z  g          dt          dt          z  z  z  k    sJ d S )Nr,   r4   )uniter   r   r/   r0   r1   
test_uniter      s    %&''1u94444!e)QY'((Au,=====!e)QY'((AUO;;;;!q5y/1E	?344SAI=N8OOOOOOOr0   c                      t          t          t          t          g          dt          t                    z  k    sJ t          t          t          t          g          sJ d S )Nr,   )r   r   r   r   r   r/   r0   r1   test_unite_missing_valuesr      sN    %u%&&!fUmm*;;;;;&$&'''''''r0   c            	      z   t          g dg dg dg          dt          t          t          t                    t          t                    g          z  k    sJ t          g dg dg dg          dt          t          t          t                    t          t                    t          g          z  k    sJ d S )N)r:   r:   hello)r:    r   r,   )r:   r:   r   r:   )r:   r   r   r:   )r   r   r   r   r   r/   r0   r1   test_unite_tuplesr      s    ooo [[$__& ' ' ufUmmVF^^<===> ? ? ?
 (((#^^''') * * ufUmmVF^^UCDDDE F F F F Fr0   c            
         t          ddddddg          dt          dt          t                    gdt          gg          z  k    sJ t          dd	d
dd d
g          dt          dt          gdt          t                    gg          z  k    sJ t          dd	dddd d dg          dt          dt          t
                    gdt          gdt          t                    gg          z  k    sJ d S )NrN   rO   )rQ   balancer   r   r4   r   rQ   foo)rQ   sr   r;   )rQ   r   fr   )r   r   r   r   r   r   r/   r0   r1   test_unite_recordsr      sS   w377#335 6 6F5MM2VV4DEFFFG H H H wU33#$//1 2 2(3v*?@AAAB C C C wU==#$T::< = =fWoo.(fVnn-/ 0 0 00 1 1 1 1 1r0   c                      t          g dg dg dg          dt          t          t          t          t          g          z  k    sJ d S )N)r:   r4   r   r,   r,   )r   r   r   r   r/   r0   r1   test_dshape_missing_datar      sa    mmm"]]"]]$ % % ueT512223 4 4 4 4 4r0   c                  $   t          d          } t          d          }dt          | | ||g          z  }t          t          g dgdz                      |k    sJ dd|z  z  }t          t          g dg dgdz                      |k    sJ d S )Nr:   r;   rt   )r:   r4   r;   r<      )r;   r<   r:   r4      )r   r   r&   )rx   r   exps      r1   test_discover_mixedr      s    AA
uaAq\""
"C(,,,-23344;;;;
A,C(,,,.>.>.>?!CDDEELLLLLLr0   c                  x    dt          t          t          g          z  } t          ddgddgg          | k    sJ d S )Nr4   rN   rO   r      )r   r   r   r   )expecteds    r1   	test_testr      sD    5&%)))Hgs^eS\233x??????r0   c                      t          d          t          t          t          g          k    sJ t          g d          dt          t          t          g          z  k    sJ d S )Nr:   r;   )r   r   )r:   r:   r,   )r   r   r   r   r/   r0   r1   test_discover_appropriater      s^    Ht}!5!5555500011Qt}9M9M5MMMMMMMr0   c                      dgdgdz  z   gdz  } t          |           dt          t          gt          gdz  z             z  k    sJ d S )NrI   r      rt   )r   r   r   r   r   s    r1   test_big_discoverr     sS    EWIbL !B&DD>>R%6(2+(=">">>>>>>>>r0   c                  X    t          t          t          g          dt          z  k    sJ d S )Nr4   )r	   r   r   r/   r0   r1   test_unite_baser     s*    ui())Q]::::::r0   c                  d    dddddig} t          |           }t          d          }||k    sJ d S )NrN   rO   rP   rQ   r   z"2 * {amount: ?int64, name: string}r   r&   )r   resultr   s      r1    test_list_of_dicts_no_differencer   
  sK    ,,UODd^^F:;;HXr0   c                  j    ddddddg} t          |           }d}t          |          }||k    sJ d S )NrN   rO   rP   r   blue)rQ   house_colorz82 * {amount: ?int64, house_color: ?string, name: string}r   )r   r   r   r   s       r1   test_list_of_dicts_differencer     sQ    ,,6224Dd^^FBAayyHXr0   c                     t          d          t          d          g} t          |           t          d          k    sJ t                      t          d          g} t          |           t          d          k    sJ t          d          t          d          g} t          |           t          d          k    sJ d S )Nz{name: string, amount: int32}z!2 * {name: string, amount: int32}z"2 * ?{name: string, amount: int32}z{name: string, amount: int64}z!2 * {name: string, amount: int64})r&   r	   r   )dshapess    r1   test_unite_base_on_recordsr     s    5665668Gg&)L"M"MMMMMvvv=>>?Gg&)M"N"NNNNN5665668Gg&)L"M"MMMMMMMr0   c                      t          j        ddddgfg          } t          j        d|           }d}t          |          t	          |          k    sJ d S )N)rW   U7rX   )rY   r   r4   )r[   r   r   z85 * {a: string[7, 'U32'], b: {c: 2 * int64, d: float64}})rZ   r   zerosr   r&   )rd   r   r   s      r1   test_nested_complex_record_typer   (  sY    	;'8:J&K LM	N	NB
BABAA;;&))######r0   c                  H    d} | D ]}t          |          t          k    sJ d S )N)sundaymondaytuesday	wednesdaythursdayfridaysaturdayrW   rX   now	yesterdaytonightrl   )stringsr   s     r1   test_letters_only_stringsr   /  s=    NG % %{{f$$$$$% %r0   c                      G d dt                     } t          d          5 }t          d           t           | dd                    t	          d          k    sJ 	 d d d            n# 1 swxY w Y   t          |          d	k    sJ t          |d
         j        t                    sJ dt          |d
         j
                  v sJ d S )Nc                       e Zd Zd ZdS ))test_discover_array_like.<locals>.MyArrayc                 "    || _         || _        d S N)shaper   )selfr   r   s      r1   __init__z2test_discover_array_like.<locals>.MyArray.__init__8  s    DJDJJJr0   N)__name__
__module____qualname__r   r/   r0   r1   MyArrayr   7  s#        	 	 	 	 	r0   r   T)recordalways)r   r,   f4z4 * 3 * float32r:   r   )objectr   r   r   r&   len
issubclasscategoryDeprecationWarningstrmessage)r   wls     r1   test_discover_array_liker   6  s:       &   
 
t	$	$	$ LX--..&9J2K2KKKKKKL L L L L L L L L L L L L L L r77a<ben&899999BqEM********s   <A--A14A1r4   z;discovery behavior is different for raw strings in python 2)r   rT   c                  N    d} t          |           t          d          k    sJ d S )Ns   abcdefgA)r   r   r   s    r1   test_discover_bytesr   D  s,    
 	AA;;&++%%%%%%r0   c                       G d dt                     } t          j        t                    5  t	           |                        d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )-test_discover_undiscoverable.<locals>.MyClassN)r   r   r   r/   r0   r1   MyClassr   N  s        r0   r   )r   r   r   NotImplementedErrorr   )r   s    r1   test_discover_undiscoverabler   M  s        &   	*	+	+                   s   AAAseqr/   c                 J    t          |           t          t          z  k    sJ d S r   )r   r   r   )r  s    r1   test_discover_empty_sequencer  T  s#    C==C&L((((((r0   zNot yet implementedc                      t          t          d          t          d          g          t          d          k    sJ t          t          d          t          g          t          k    sJ d S )Nrt      )r   r   r   r/   r0   r1   (test_lowest_common_dshape_varlen_stringsr  Y  s\    VBZZ 899VBZZGGGGV 455??????r0   c                      	 ddl m}  n# t          $ r	 ddlm}  Y nw xY wt	          j        t                    5  t           |                        d d d            d S # 1 swxY w Y   d S )Nr   Mock)unittest.mockr	  ImportErrormockr   r   r   r   r  s    r1   test_discover_mockr  _  s    &&&&&&&    
*	+	+                   s   	 AA!$A!c                  :    t          d          t          k    sJ d S )NzINF US Equityrl   r/   r0   r1   test_string_with_overflowr  j  s!    O$$......r0   )j	itertoolsr   r5   warningsr   r   numpyrZ   r   datashape.discoveryr   r   r   r	   r
   r   r   datashape.coretypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    datashape.py2helpr!   r"   r#   r$   datashape.util.testingr%   	datashaper&   r)   r'   r(   r*   r2   r8   r>   rB   rE   rG   rL   rS   markskipifr\   r_   re   rg   ri   rm   ro   rq   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   xfailr6   AssertionErrorr   r   parametrizerA   r  r   r  r  r  r/   r0   r1   <module>r     s         



 1 1 1 1 1 1 1 1     7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ F E E E E E E E E E E E 6 6 6 6 6 6       4 4 4 4 4 4 4 4 4 4 4 4" " "- - -
: : :
1 1 17 7 7M M M. . .3 3 3 KM  O O O O  ) ) )&+ + +/ / /# # #> > >
- - -* * *
+ 
+ 
+6 6 69 9 9. . .
P P P% % %
C C C 	& 	 	
P P P( ( (
	F 	F 	F1 1 1(4 4 4M M M@ @ @
N N N
? ? ?
; ; ;    
N 
N 
N$ $ $% % %+ + + 3#A&!+()  + +& &	+ +&
   R00) ) 10) *-BCC@ @ DC@
  / / / / /r0   