
    Ohh*                        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 ej6                  d        Zd Zd	 Zd
 Zd Z d Z!ejD                  jF                  d        Z$ejD                  jF                  d        Z%d Z&d Z'd Z(d Z)ejD                  jU                  d      d        Z+d Z,ejD                  jF                  d        Z-d Z.d Z/ ej6                  dd ej`                  d ejb                  d             ej`                  d ejb                  d            g      d         Z2ejD                  jg                  d!d"d#g      d$        Z4d'd%Z5d& Z6y)(z1
Testing that we work in the downstream packages
    N)IntCastingNaNError)	DataFrameDatetimeIndexSeriesTimedeltaIndex)DatetimeArrayTimedeltaArray)Versionc                       t        dg di      S )NA         )r        d/var/www/html/diagnosisapp-backend/venv/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_ufuncr1   2   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resr0   msgs         r   7test_construct_dask_float_array_int_dtype_match_ndarrayrA   E   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_xarrayrE   _   s"    
!<<>%%%r   c                      t        j                  d      } t        j                  d      }|j                  dd      }| j                  ddd      }|j	                  |gd	      }d}||k(  sJ y )
NcftimerC   0001r   )periodsi  r   nearest)method)r   r   cftime_rangeDatetimeGregorianget_indexer)rG   rC   timeskeyr/   r0   s         r   test_xarray_cftimeindex_nearestrQ   e   su      *F  *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[   q   s     3>>5$HIr   c                  R    t        j                  t        j                  dddg       y )NrS   rT   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))rV   r   r   r   )test_oo_optimized_datetime_index_unpickler]   w   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_statsmodelsrj      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   rl   rm   rn   load_digitsSVCrh   re   targetpredict)rm   rn   digitsclfs       r   test_scikit_learnrx      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Dr_   )freqrI   )day
total_billr~   r   )xyre   )r   r   r   r   
date_rangerf   	stripplot)rz   tipss     r   test_seabornr      sM    !!),Gf3:%PQ(SD D9r   c                  .    t        j                  d       y )Npandas_datareader)r   r   r   r   r   test_pandas_datareaderr      s    
+,r   z0ignore:Passing a BlockManager:DeprecationWarningc                     t        j                  d      }|j                  j                  |       }|j	                         }t        j                  ||        y )Npyarrow)r   r   Tabler   	to_pandasr*   assert_frame_equal)r   r   tabler/   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\/rT   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSErU   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r3   )stderr)numpypytzdateutil)rY   rZ   replacerW   check_outputdecoder   skipr:   CalledProcessErrorSTDOUTvaluestdout)pyexecalloutputr@   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      }t        j                  d      }t	        |j
                        t	        d      k  rTt	        t        j
                        t	        d      k\  r/| j                  t        j                  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   daskr'   z2025.1.0z2.1z,loc.__setitem__ incorrectly mutated column c)reasonr   r   abcr`   FT)r   r   r   )index)r   r   r   r   r
   __version__r)   applymarkermarkxfailr8   r   locr*   r   r!   )requestr"   r   r,   ddar   r/   r0   s           r   *test_frame_setitem_dask_array_into_new_colr      s?   
 ]]01F5""6*  .4##$
(;;NNA
U^A !!)W!X hh1vc3Z()33%(t}c!"QC5uA3?sK
fh/
+V4+V4s   DE E#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   rf   __add__NotImplemented)r   leftrights      r   test_pandas_priorityr      sL      9D58E==.0004<4r   
memoryviewr8   r   r'   )marksrC   )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   r6   r   r8   ir   r   NrC   )r)   r8   int64paramr   
dask.arrayrC   	DataArray)r   r=   r   re   r   xrs         r   array_likesr     s     ((9BHH
-C==D|# 9 
{{3$ 9 
zz$ 9 
	||C 9r   r7   M8[ns]m8[ns]c                 V   |\  }}t         t        d|    }|j                   d}t        j                  t
        |      5   ||      }d d d        |j                  ||       }t        j                  |       t        |t              s^t        j                  t        j                  d|    } ||      j                  } ||      j                  }t        j                  ||       t        t         d|    }	 |	|      } |	|      }t        j"                  ||       y # 1 sw Y   xY w)N)r   r   z.__init__ is deprecatedr3   r6   )r   r	   r   r*   assert_produces_warningFutureWarning_from_sequenceassert_extension_array_equal
isinstancer   r   to_datetimeto_timedeltar8   assert_equalr   r   assert_index_equal)
r7   r   r=   re   clsdepr_msgr0   r/   funcidx_clss
             r   test_from_obscure_arrayr   1  s     IC"n
=e
DC,,67H		#	#M	B s8E2F##FH5dJ' ..BOODUKc:##
) '.A%HGS\Ft}H&(+# s    	DD(c                     t        j                  d       t        g dg dd      } | j                         }|j	                         }ddg}||k(  sJ t        g dd      }|j                         }|j                  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   )   r_      )r   r   r   r   )r   N)r   r   r   !__dataframe_consortium_standard__get_column_namesr   __column_consortium_standard__r   )df_pdr   result_1
expected_1sercols         r   test_dataframe_consortiumr   P  s     ./II67E		0	0	2B""$HsJz!!!

%C

,
,
.C88s??r   c                      t        j                  d      } | j                  g d      }t        j                  |d      }t        g ddd       }t        j                  ||       y )NrC   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])r7   r}   )r   r   r   r   r   r   r*   r   )r   r=   r/   r0   s       r   test_xarray_coerce_unitr   c  sY    			X	&B
,,y
!C^^Cd+F	

 H &(+r   )returnN)7__doc__r8   rW   rY   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.util.versionr
   fixturer   r%   r1   rA   rE   rQ   r   
single_cpur[   r]   rj   rx   r   r   filterwarningsr   r   r   r   r   r   
skip_if_nor   parametrizer   r   r   r   r   r   <module>r     s     
   , ) )    ( ' '5 5& 4&	 J J
  C
":- NO& P&
' ! !H5:   V=2==#>?X]R]]8%<=	2 8X"67, 8,<&,r   