
    LVf0*                        d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
c mZ ddlZddlmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ej:                  d        Zd	 Zd
 Z d Z!d Z"d Z#ejH                  jJ                  d        Z&ejH                  jJ                  d        Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.ejH                  jJ                  d        Z/d Z0d Z1 ej:                  dd ejd                  d ejf                  d             ejd                  d ejf                  d            g       d!        Z4ejH                  jk                  d"d#d$g      d%        Z6d(d&Z7d' Z8y))z1
Testing that we work in the downstream packages
    N)IntCastingNaNError)	DataFrameDatetimeIndexSeriesTimedeltaIndex)DatetimeArrayTimedeltaArray)_sequence_to_dt64ns)sequence_to_td64nsc                       t        dg di      S )NA         )r        e/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/pandas/tests/test_downstream.pydfr      s    c9%&&r   c                 N   t        j                  d      }	 t        j                  d       t        j                  d      }|j	                  | d      }|j
                  J |j                         J 	 t        j                  d|       y # t        j                  d|       w xY w)Ncompute.use_numexprtoolzdask.dataframer   npartitions)pd
get_optionpytestimportorskipfrom_pandasr   compute
set_option)r   olduseddddfs       r   	test_daskr&   #   s     ]]01F5G$  !12nnRQn/uu   {{}(((
+V4+V4s   AB B$c                     t        j                  d      } 	 t        j                  d      }t        j                  d      }t	        g d      }|j                  |d      }|j                  |      j                         }t        j                  |      }t        j                  ||       t        j                  d|        y # t        j                  d|        w xY w)Nr   
dask.arrayr   )g      ?gffffff@g@g      @r   r   )r   r   r   r   r   r    fixr!   nptmassert_series_equalr"   )r#   dar$   sdsresultexpecteds          r   test_dask_ufuncr2   3   s     ]]01F5  .  !12'(^^A1^-##%66!9
vx0
+V4+V4s   BC Cc                  r   t        j                  d      } t        j                  g d      }| j	                  |      }t        |      }t        |      }t        j                  ||       d}t        j                  t        |      5  t        |d       d d d        d}t        j                  |d<   t        j                  t        |      5  t        |d       d d d        t        j                  t        |      5  t        |d       d d d        y # 1 sw Y   xY w# 1 sw Y   GxY w# 1 sw Y   y xY w)	Nr   )r   g      @r   z)Trying to coerce float values to integersmatchi8dtypez9Cannot convert non-finite values \(NA or inf\) to integerr   )r   r   r*   array
from_arrayr   r+   r,   raises
ValueErrornanr   )r$   arrdarrresr1   msgs         r   7test_construct_dask_float_array_int_dtype_match_ndarrayrB   F   s     
		-	.B
((;
C==D
,Cc{H3) 6C	z	- !t4 ! GCVVCF	)	5 !t4 ! 
)	5  s$   ! !
! !   s$   DD!>D-D!D*-D6c                 R    t        j                  d       | j                         J y )Nxarray)r   r   	to_xarray)r   s    r   test_xarrayrF   `   s"    
!<<>%%%r   c                      t        j                  d      } t        j                  dd      }|j                  dd      }| j                  dd	d	      }|j	                  |gd
      }d	}||k(  sJ y )NcftimerD   z0.21.0
minversion0001r   )periodsi  r   nearest)method)r   r   cftime_rangeDatetimeGregorianget_indexer)rH   rD   timeskeyr0   r1   s         r   test_xarray_cftimeindex_nearestrT   f   sw      *F  h?F2E

"
"4A
.CuY7FHXr   c                  R    t        j                  t        j                  dddg       y )N-OO-cimport pandas
subprocess
check_callsys
executabler   r   r   test_oo_optimizabler^   r   s     3>>5$HIr   c                  R    t        j                  t        j                  dddg       y )NrV   rW   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))rY   r   r   r   )test_oo_optimized_datetime_index_unpickler`   x   s*     NNU	

r   c                      t        j                  d      } t        t        d      t        d      t        dd      d      }| j	                  d|      j                          y )Nzstatsmodels.formula.api   d   i   )LotteryLiteracyPop1831z$Lottery ~ Literacy + np.log(Pop1831))data)r   r   r   rangeolsfit)smfr   s     r   test_statsmodelsrm      sQ    


7
8C	!H%(uS#O
B GG2G<@@Br   c                     t        j                  d       ddlm} m} | j                         }|j                  dd      }|j                  |j                  d d |j                  d d        |j                  |j                  dd         y )Nsklearnr   )datasetssvmgMbP?g      Y@)gammaC)r   r   ro   rp   rq   load_digitsSVCrk   rh   targetpredict)rp   rq   digitsclfs       r   test_scikit_learnr{      sr    
	"
 !!#F
'''
'CGGFKKfmmCR01KKBC !r   c                      t        j                  d      } t        t        j                  ddd      t        d      d      }| j                  dd|	       y )
Nseaborn2023Drb   )freqrL   )day
total_billr   r   )xyrh   )r   r   r   r   
date_rangeri   	stripplot)r}   tipss     r   test_seabornr      sM    !!),Gf3:%PQ(SD D9r   c                  2    t        j                  dd       y )N
pandas_gbqz0.10.0rI   r   r   r   r   r   test_pandas_gbqr      s    
:r   c                  .    t        j                  d       y )Npandas_datareaderr   r   r   r   test_pandas_datareaderr      s    
+,r   c                     t        j                  d      }|j                  j                  |       }|j	                         }t        j                  ||        y )Npyarrow)r   r   Tabler    	to_pandasr+   assert_frame_equal)r   r   tabler0   s       r   test_pyarrowr      sB    !!),GMM%%b)E__F&"%r   c                    t        j                  d      }|j                  |       }|j                  ||j                        }t        j                  | |       |j                  ||j                        }t        j                  | |       y )Nyaml)Loader)r   r   dumploadr   r+   r   UnsafeLoader)r   r   dumpedloadedloaded2s        r   test_yaml_dumpr      sm    v&DYYr]FYYvdkkY2F"f%iit'8'8i9G"g&r   c                     t         j                  j                  dd      } | ddg}t        j                  |      j                         }d|v rt        j                  d       | dddg}d	|  d
}t        j                  t        j                  |      5 }t        j                  |t        j                         d d d        j                  j                  j                         }dD ]  }||v rJ  y # 1 sw Y   ;xY w)N\/rW   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSErX   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r4   )stderr)numpypytzdateutil)r\   r]   replacerZ   check_outputdecoder   skipr;   CalledProcessErrorSTDOUTvaluestdout)pyexecalloutputrA   excnames         r    test_missing_required_dependencyr      s     NN""4-E
 4?@D$$T*113F& 67
 641D w + 	+ 
 
z44C	@ @CZ->->?@ YY$$&F- v~~	@ @s   &C33C<c                     t        j                  d      } 	 t        j                  d      }|j	                  ddg      }t        dddgi      }||d<   ||d<   d|j                  d	d
gdf<   |j                  dgd d f   }t        dgdgdgddg      }t        j                  ||       t        j                  d|        y # t        j                  d|        w xY w)Nr   r(   r   r   abcrc   FT)r   r   r   )index)
r   r   r   r   r9   r   locr+   r   r"   )r#   r-   ddar   r0   r1   s         r   *test_frame_setitem_dask_array_into_new_colr      s    
 ]]01F5  .hh1vc3Z()33%(t}c!"QC5uA3?sK
fh/
+V4+V4s   BC Cc                       G d d      }  |        }t        t        d            }|j                  |      t        u sJ ||z   |u sJ y )Nc                       e Zd ZdZd Zy)%test_pandas_priority.<locals>.MyClassi  c                     | S )Nr   )selfothers     r   __radd__z.test_pandas_priority.<locals>.MyClass.__radd__  s    Kr   N)__name__
__module____qualname____pandas_priority__r   r   r   r   MyClassr     s    "	r   r   r   )r   ri   __add__NotImplemented)r   leftrights      r   test_pandas_priorityr      sL      9D58E==.0004<4r   
memoryviewr9   daskr(   )marksrD   )paramsc                 Z   t        j                  g dt         j                        }| j                  }|dk(  rt	        |      }||fS |dk(  rt        j                  d|      }||fS |dk(  r#ddl}|j                  j                  |      }||fS |d	k(  rddl}|j                  |      }|fS )
z
    Fixture giving a numpy array and a parametrized 'data' object, which can
    be a memoryview, array, dask or xarray object created from the numpy array.
    r   r7   r   r9   ir   r   NrD   )r*   r9   int64paramr   
dask.arrayrD   	DataArray)requestr>   r   rh   r   xrs         r   array_likesr     s     ((9BHH
-C==D|# 9 
{{3$ 9 
zz$ 9 
	||C 9r   r8   M8[ns]m8[ns]c                 L   |\  }}t         t        d|    } ||      }|j                  |      }t        j                  ||       t
        t        d|    } ||      d   } ||      d   }t        j                  ||       t        |t              s^t        j                  t        j                  d|    } ||      j                  } ||      j                  }t        j                  ||       t        t        d|    } ||      } ||      }t        j                   ||       y )N)r   r   r   )r   r	   _from_sequencer+   assert_extension_array_equalr
   r   assert_equal
isinstancer   r   to_datetimeto_timedeltar9   r   r   assert_index_equal)	r8   r   r>   rh   clsr1   r0   funcidx_clss	            r   test_from_obscure_arrayr   /  s     IC"n
=e
DC3xH%F##FH5)5GHOD#Yq\FDz!}HOOFH%dJ' ..BOODUKc:##
) '.A%HGS\Ft}H&(+r   c                     t        j                  d       t        g dg dd      } | j                         }|j	                         }ddg}||k(  sJ t        g d      }|j                         }|j                  d      }d}||k(  sJ y	)
z
    Test some basic methods of the dataframe consortium standard.

    Full testing is done at https://github.com/data-apis/dataframe-api-compat,
    this is just to check that the entry point works as expected.
    dataframe_api_compatr   )   rb      )r   r   r   r   r   r   N)r   r   r   !__dataframe_consortium_standard__get_column_namesr   __column_consortium_standard__	get_value)df_pdr   result_1
expected_1sercolresult_2
expected_2s           r   test_dataframe_consortiumr   Q  s     ./II67E		0	0	2B""$HsJz!!!

C

,
,
.C}}QHJz!!!r   c                      t        j                  d      } | j                  g d      }t        j                  |d      }t        g ddd       }t        j                  ||       y )NrD   r   ns)unit)z1970-01-01 00:00:00.000000001z1970-01-01 00:00:00.000000002z1970-01-01 00:00:00.000000003zdatetime64[ns])r8   r   )r   r   r   r   r   r   r+   r   )r   r>   r0   r1   s       r   test_xarray_coerce_unitr   f  sY    			X	&B
,,y
!C^^Cd+F	

 H &(+r   )returnN)9__doc__r9   rZ   r\   r   r*   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   pandas._testing_testingr+   pandas.core.arraysr   r	   pandas.core.arrays.datetimesr
   pandas.core.arrays.timedeltasr   fixturer   r&   r2   rB   rF   rT   mark
single_cpur^   r`   rm   r{   r   r   r   r   r   r   r   r   r   
skip_if_nor   parametrizer   r   r   r   r   r   <module>r     s     
   , ) )    = < ' '5 5& 4&	 J J
  C
":;
-&
' ! !H5,   V=2==#>?X]R]]8%<=	2 8X"67, 8,B"*,r   