
    |Le(                        d dl mZ d dlmZ d dlm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* d d	l+m,Z, d d
l-m.Z.m/Z/m-Z-m0Z0 d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd  ZFd! ZG eeeeg          ZHd" ZId# ZJd$ ZKd% ZLd& ZMd' ZNd( ZOd) ZPd* ZQd+ ZRd, ZSd- ZTd. ZUd/ ZVd0 ZWd1 ZXd2 ZYd3 ZZej[        \                    d4d5g  e]            g          d6             Z^ej[        _                    e`d78          d9             Zad: Zbd; ZcdS )<    )OrderedDict)starmap)MappingProxyType)catch_warningssimplefilterN)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)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	        Ilib/python3.11/site-packages/datashader/datashape/tests/test_discovery.pytest_simpler0      s    A;;%C==G####H++++G&&&&D>>U""""D>>T!!!!!!r.   c                      t          g d          dt          d          z  k    sJ t          g d          dt          d          z  k    sJ d S )N)      r*   r*   r2   )      ?       @r+   r4   r   r-   r.   r/   	test_listr7      sW    III!hqkk/1111OOO$$HSMM(9999999r.   c                  l    t          t          dg                    dt          d          z  k    sJ d S Nr2   )r   setr-   r.   r/   test_setr;   "   s3    CHHXa[[000000r.   c                  l    t          t          dg                    dt          d          z  k    sJ d S r9   )r   	frozensetr-   r.   r/   test_frozensetr>   &   s3    IqcNN##q8A;;666666r.   c                      t          d          t          t          d          t          d          g          k    sJ d S )N)r,   r2   r,   r2   )r   r   r-   r.   r/   $test_heterogeneous_ordered_containerr@   *   s<    L!!UHW,=,=x{{+K%L%LLLLLLLr.   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1r2   z1.0r4   TrueTtruer6   r-   r.   r/   test_stringrE   .   s    C==HQKK''''E??hsmm++++Fx~~----Fx~~------r.   c                      t          ddd          t          dt          d          gdt          d          gg          k    sJ d S )NAliced   nameamountrK   rJ   )r   r   r-   r.   r/   test_recordrL   5   sb    g5566Xx}}-Xg../1 2 22 2 2 2 2 2r.   c                      t          j        d          dt          j        d          d} t          t	          t          |                     t	          |                      d S )Nr2   csr4   )abc)npr   r!   r#   r   r   )ds    r/   test_mappingproxyrT   ;   sZ    hqkk2:c??;;A!!$$%%    r.   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 )NrQ   r2   )rP   rN   rO   r4   rP   )r   rR   r   r!   r#   r   r"   r   )ods    r/   test_ordereddictrW   C   sp    	sBHQKK(+RZ__7MN	O	OB	#u*c6k3<
/0    r.   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  r2      )r'   r   r   )inputsdts     r/   test_datetimer]   K   sq    #&#(2!##"'tQ2q!,,F  ) )||y((((() )r.   c                  :    t          d          t          k    sJ d S )Nz
2014-01-01)r   r   r-   r.   r/   test_string_dater_   ^   s!    L!!U******r.   c                  X    t          t          ddd                    t          k    sJ d S )NrY   r2   )r   r%   r   r-   r.   r/   test_python_datera   b   s-    Dq!$$%%......r.   c                  :    t          d          t          k    sJ d S )N r   r   r-   r.   r/   $test_single_space_string_is_not_datere   f   s    C==F""""""r.   c                  :    t          d          t          k    sJ d S )Nz31-DEC-99 12.00.00.000000000rd   r-   r.   r/    test_string_that_looks_like_daterg   j   s"    233v======r.   c                  X    t          t          ddd                    t          k    sJ d S )NrZ   r   r2   )r   r&   r   r-   r.   r/   	test_timeri   o   s+    DQNN##u,,,,,,r.   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     r/   	<genexpr>z!test_timedelta.<locals>.<genexpr>t   s2      JJuRa44JJJJJJr.   r2      )r   r(   rn   r   r   )objstss     r/   test_timedeltaru   s   s[    9JJeAqkkJJJKKD * *||z)))))* *r.   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 millisecondsr2   )unitzbuzz light-years)r   r   splitpytestraises
ValueError)r[   rt   s     r/   test_timedelta_stringsr|   y   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-   r.   r/   test_time_stringr~      s    J5((((N##u,,,,%&&%////O$$----'((I5555'((I555555r.   c                      dddddddddg} t          t          |                     t          d          k    sJ d S )	NrG   100rI   Bob200Charlie300z!3 * {amount: int64, name: string})r$   r   datas    r/   test_integrativer      sg    ..e,,%002D 8D>>""6778 8 8 8 8 8r.   c                      t          t          j        d                    t          k    sJ t          t          j        d                    t          k    sJ d S r9   )r   rR   r   r   r-   r.   r/   test_numpy_scalarsr      sJ    BHQKK  E))))BJqMM""g------r.   c                      t          t          j        dt          j                            t	          d          k    sJ d S )N)r*   r3   dtypez3 * 2 * int32)r   rR   onesr   r$   r-   r.   r/   test_numpy_arrayr      s:    BGF"(333448O8OOOOOOOr.   c                  p    t          j        ddgd          } t          |           dt          z  k    sJ d S )Nr,   worldOr   r3   )rR   arrayr   r   xs    r/   test_numpy_array_with_stringsr      s<    
'7#3///AA;;!f*$$$$$$r.   c                  ~    t          j        ddgddg          } t          |           t          d          k    sJ d S )N)rG   r2   )r   r3   )rJ   r   )amti4r   z2 * {name: string, amt: int32})rR   r   r   r$   r   s    r/    test_numpy_recarray_with_stringsr      sM    
,
+%}5	7 	7 	7AA;;&!ABBBBBBBBr.   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*   r3   )uniter   r   r-   r.   r/   
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Or.   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-   r.   r/   test_unite_missing_valuesr      sN    %u%&&!fUmm*;;;;;&$&'''''''r.   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)r2   r2   hello)r2    r   r*   )r2   r2   r   r2   )r2   r   r   r2   )r   r   r   r   r   r-   r.   r/   test_unite_tuplesr      s    ooo [[$__& ' ' ufUmmVF^^<===> > > >
 (((#^^''') * * ufUmmVF^^UCDDDE E E E E Er.   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 )NrG   rH   )rJ   balancer   r   r3   r   rJ   foo)rJ   sr   r4   )rJ   r   fr   )r   r   r   r   r   r   r-   r.   r/   test_unite_recordsr      sS   w377#335 6 6F5MM2VV4DEFFFG G G G wU33#$//1 2 2(3v*?@AAAB B B B wU==#$T::< = =fWoo.(fVnn-/ 0 0 00 0 0 0 0 0r.   c                      t          g dg dg dg          dt          t          t          t          t          g          z  k    sJ d S )N)r2   r3   r   r*   r*   )r   r   r   r	   r-   r.   r/   test_dshape_missing_datar      sa    mmm"]]"]]$ % % ueT512223 3 3 3 3 3r.   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 )Nr2   r4   rl   )r2   r3   r4   r5      )r4   r5   r2   r3      )r   r   r$   )rp   r   exps      r/   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Lr.   c                  x    dt          t          t          g          z  } t          ddgddgg          | k    sJ d S )Nr3   rG   rH   r      )r   r   r   r   )expecteds    r/   	test_testr      sD    5&%)))Hgs^eS\233x??????r.   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r2   r4   )r   r   )r2   r2   r*   )r   r   r   r   r-   r.   r/   test_discover_appropriater      s^    Ht}!5!5555500011Qt}9M9M5MMMMMMMr.   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 )NrB   r      rl   )r   r   r   r   r   s    r/   test_big_discoverr      sS    EWIbL !B&DD>>R%6(2+(=">">>>>>>>>r.   c                  X    t          t          t          g          dt          z  k    sJ d S )Nr3   )r   r   r   r-   r.   r/   test_unite_baser      s*    ui())Q]::::::r.   c                  d    dddddig} t          |           }t          d          }||k    sJ d S )NrG   rH   rI   rJ   r   z"2 * {amount: ?int64, name: string}r   r$   )r   resultr   s      r/    test_list_of_dicts_no_differencer     sK    ,,UODd^^F:;;HXr.   c                  j    ddddddg} t          |           }d}t          |          }||k    sJ d S )NrG   rH   rI   r   blue)rJ   house_colorz82 * {amount: ?int64, house_color: ?string, name: string}r   )r   r   r   r   s       r/   test_list_of_dicts_differencer   	  sQ    ,,6224Dd^^FBAayyHXr.   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    r/   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Mr.   c                      t          j        ddddgfg          } t          j        d|           }d}t          |          t	          |          k    sJ d S )N)rO   U7rP   )rQ   r   r3   )rS   r   r   z85 * {a: string[7, 'U32'], b: {c: 2 * int64, d: float64}})rR   r   zerosr   r$   )r\   r   r   s      r/   test_nested_complex_record_typer     sY    	;'8:J&K LM	N	NB
BABAA;;&))######r.   c                  H    d} | D ]}t          |          t          k    sJ d S )N)sundaymondaytuesday	wednesdaythursdayfridaysaturdayrO   rP   now	yesterdaytonightrd   )stringsr   s     r/   test_letters_only_stringsr   &  s=    NG % %{{f$$$$$% %r.   c                      G d d          } 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      r/   __init__z2test_discover_array_like.<locals>.MyArray.__init__/  s    DJDJJJr.   N)__name__
__module____qualname__r   r-   r.   r/   MyArrayr   .  s#        	 	 	 	 	r.   r   T)recordalways)r   r*   f4z4 * 3 * float32r2   r   )
r   r   r   r$   len
issubclasscategoryDeprecationWarningstrmessage)r   wls     r/   test_discover_array_liker   -  s5          
 
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''A+.A+c                  N    d} t          |           t          d          k    sJ d S )Ns   abcdefgA)r   r    r   s    r/   test_discover_bytesr   ;  s*    AA;;&++%%%%%%r.   c                       G d d          } 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-   r.   r/   MyClassr   A  s        r.   r   )ry   rz   NotImplementedErrorr   )r   s    r/   test_discover_undiscoverabler   @  s           	*	+	+                   s   AAAseqr-   c                 J    t          |           t          t          z  k    sJ d S r   )r   r   r   )r   s    r/   test_discover_empty_sequencer   G  s#    C==C&L((((((r.   zNot yet implemented)rz   reasonc                      t          t          d          t          d          g          t          d          k    sJ t          t          d          t          g          t          k    sJ d S )Nrl      )r   r    r   r-   r.   r/   (test_lowest_common_dshape_varlen_stringsr   L  s\    VBZZ 899VBZZGGGGV 455??????r.   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mockry   rz   r   r   r   s    r/   test_discover_mockr  R  s    &&&&&&&    
*	+	+                   s   	 AA!$A!c                  :    t          d          t          k    sJ d S )NzINF US Equityrd   r-   r.   r/   test_string_with_overflowr  ]  s!    O$$......r.   )dcollectionsr   	itertoolsr   typesr   warningsr   r   numpyrR   ry   datashader.datashape.discoveryr   r	   r
   r   r   r   r   datashader.datashape.coretypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   !datashader.datashape.util.testingr#   datashader.datashaper$   r'   r%   r&   r(   r0   r7   r;   r>   r@   rE   rL   rT   rW   r]   r_   ra   re   rg   ri   ru   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   r   markparametrizer:   r   xfailr{   r   r  r  r-   r.   r/   <module>r     sO   # # # # # #       " " " " " " 1 1 1 1 1 1 1 1                      O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B A A A A A ' ' ' ' ' ' 4 4 4 4 4 4 4 4 4 4 4 4" " ": : :
1 1 17 7 7M M M. . .3 3 3    ) ) )&+ + +/ / /# # #> > >
- - -* * *
+ 
+ 
+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$ $ $% % %+ + +& & &
   R00) ) 10) *-BCC@ @ DC@
  / / / / /r.   