
    TipI                     <   d 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ZddlZddl	Z	ddl
mZ d Zd dD             Zg dZd	 Zg d
Zej        j        d             Zg dZd Zd Zej        j        ej                            dg d          d                         ZdS )zo
This test script is adopted from:
    https://github.com/numpy/numpy/blob/main/numpy/tests/test_public_api.py
    N)import_modulexp_available_backendsc                      t          t          t                              t          t          t          t                                        k    sJ dS )zWAssert that output of dir has only one "testing/tester"
    attribute without duplicateN)lendirscipyset     x/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/_lib/tests/test_public_api.pytest_dir_testingr      s;     s5zz??c#c%jj//22222222r   c                     g | ]}d |z   S )scipy.r   ).0ss     r   
<listcomp>r   !   s(     ( ( (1(Q, ( ( (r   )'clusterz
cluster.vqzcluster.hierarchy	constantsdatasetsdifferentiatefftfftpack	integrateinterpolateiozio.arffz	io.matlabz
io.wavfilelinalgzlinalg.blaszlinalg.cython_blaszlinalg.lapackzlinalg.cython_lapackzlinalg.interpolativendimageodroptimizezoptimize.elementwisesignalzsignal.windowssparsezsparse.linalgzsparse.csgraphspatialzspatial.distancezspatial.transformspecialstatszstats.contingencyzstats.distributionszstats.mstatsz	stats.qmczstats.sampling)sscipy.constants.codatascipy.constants.constantsscipy.fftpack.basiczscipy.fftpack.convolvescipy.fftpack.helperscipy.fftpack.pseudo_diffsscipy.fftpack.realtransformsscipy.integrate.dopscipy.integrate.lsodascipy.integrate.odepackscipy.integrate.quadpackscipy.integrate.vodescipy.interpolate.dfitpackscipy.interpolate.fitpackscipy.interpolate.fitpack2zscipy.interpolate.interpndscipy.interpolate.interpolatescipy.interpolate.ndgriddatascipy.interpolate.polyintscipy.interpolate.rbfscipy.io.arff.arffreadscipy.io.harwell_boeingscipy.io.idlscipy.io.matlab.byteordercodesscipy.io.matlab.mioscipy.io.matlab.mio4scipy.io.matlab.mio5scipy.io.matlab.mio5_paramsscipy.io.matlab.mio5_utilsscipy.io.matlab.mio_utilsscipy.io.matlab.miobasescipy.io.matlab.streamsscipy.io.mmioscipy.io.netcdfscipy.linalg.basicscipy.linalg.decompscipy.linalg.decomp_choleskyscipy.linalg.decomp_luscipy.linalg.decomp_qrscipy.linalg.decomp_schurscipy.linalg.decomp_svdscipy.linalg.matfuncsscipy.linalg.miscscipy.linalg.special_matrices
scipy.misczscipy.misc.commonzscipy.misc.doccerscipy.ndimage.filtersscipy.ndimage.fourierscipy.ndimage.interpolationscipy.ndimage.measurementsscipy.ndimage.morphologyscipy.odr.modelsscipy.odr.odrpackscipy.optimize.cobylazscipy.optimize.cython_optimizescipy.optimize.lbfgsbscipy.optimize.linesearchscipy.optimize.minpackscipy.optimize.minpack2scipy.optimize.moduleTNCscipy.optimize.nonlinscipy.optimize.optimizescipy.optimize.slsqpscipy.optimize.tncscipy.optimize.zerosscipy.signal.bsplinesscipy.signal.filter_designscipy.signal.fir_filter_designscipy.signal.lti_conversionscipy.signal.ltisysscipy.signal.signaltoolsscipy.signal.spectralscipy.signal.splinescipy.signal.waveformsscipy.signal.waveletsscipy.signal.windows.windowsscipy.sparse.basescipy.sparse.bsrscipy.sparse.compressedscipy.sparse.constructscipy.sparse.cooscipy.sparse.cscscipy.sparse.csrscipy.sparse.datascipy.sparse.diascipy.sparse.dokscipy.sparse.extractscipy.sparse.lilscipy.sparse.linalg.dsolvescipy.sparse.linalg.eigenscipy.sparse.linalg.interfacescipy.sparse.linalg.isolvescipy.sparse.linalg.matfuncsscipy.sparse.sparsetoolsscipy.sparse.spfuncsscipy.sparse.sputilsscipy.spatial.ckdtreescipy.spatial.kdtreescipy.spatial.qhull scipy.spatial.transform.rotationscipy.special.add_newdocsscipy.special.basiczscipy.special.cython_specialscipy.special.orthogonalscipy.special.sf_errorscipy.special.specfunscipy.special.spfun_statsscipy.stats.biasedurnscipy.stats.kdescipy.stats.morestatsscipy.stats.mstats_basicscipy.stats.mstats_extrasscipy.stats.mvnscipy.stats.statsc                 N    d| v sd| v sd| v rdS | t           v rdS | t          v rdS dS )z%Check if this needs to be considered.z._z.testsz.setupFT)PUBLIC_MODULESPRIVATE_BUT_PRESENT_MODULES)names    r   is_unexpectedr      sJ    t||x4''8t+;+;u~u***u4r   )zscipy.conftestzscipy.versionzscipy.special.libsf_error_statec                     d } g }t           j                                        5 }|                    t          d           t          j        t          j        t          j	        dz   |           D ]3\  }}}t          |          r|t          vr|                    |           4	 ddd           n# 1 swxY w Y   |rt          d|           dS )z|
    Test that we don't add anything that looks like a new public module by
    accident.  Check is based on filenames.
    c                 @    h d}|D ]}d| }|| v r|t           vr d S  )N>   
dask.arraycupytorchzarray_api_compat.r   )r   backendsbackendpaths       r   ignore_errorsz4test_all_modules_are_expected.<locals>.ignore_errors   sJ    
 322 	 	G0w00Dt||/D D Dr   rP   .)r   prefixonerrorNzFound unexpected modules: )nptestingsuppress_warningsfilterDeprecationWarningpkgutilwalk_packagesr	   __path____name__r   	SKIP_LISTappendAssertionError)r   modnamessup_modnames        r   test_all_modules_are_expectedr      s2   
 
 
 H		%	%	'	' 	)3

%l333$2:?.3:N;HJ J J 	) 	)MAw W%% )'*B*B (((	)	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)  FD(DDEEEF Fs   A>B//B36B3)z
scipy.charz	scipy.reczscipy.emathz
scipy.mathzscipy.randomzscipy.ctypeslibzscipy.mac                  <   d } t           j                                        5 }|                    t          d            | d          }ddd           n# 1 swxY w Y   t
          D ] }|                     | |                     !|rt          d|           dS )z
    Method checking all objects. The pkgutil-based method in
    `test_all_modules_are_expected` does not catch imports into a namespace,
    only filenames.
    c                 n   g }t          j        |           }t          |d          r|j        }nt	          |          }|D ]t}|                    d          s]| dz   |z   }t          t          ||          t          j	                  r-t          |          r|t          vr|                    |           u|S )N__all__r   r   )	importlibr   hasattrr   r   
startswith
isinstancegetattrtypes
ModuleTyper   SKIP_LIST_2r   )mod_namemembersmoduleobjnamesobjnamefullobjnames         r   find_unexpected_membersz@test_all_modules_are_expected_2.<locals>.find_unexpected_members  s    (2269%% 	#~HH6{{H 	4 	4G%%c** 4&nw6gfg668HII 4$[11 4k6T6T{333r   rP   r	   Nz3Found unexpected object(s) that look like modules: )r   r   r   r   r   r   extendr   )r   r   unexpected_membersr   s       r   test_all_modules_are_expected_2r     s       
	%	%	'	' >3

%|44444W==> > > > > > > > > > > > > > > " D D!!"9"9'"B"BCCCC ? >);> > ? ? 	?? ?s   'AAAc                     d } g }t           D ]"} | |          s|                    |           #|rt          d|           t          j        d          5  t          j        dt                     t          j        dt                     t          D ]"} | |          s|                    |           #	 ddd           n# 1 swxY w Y   |rt          d|           dS )	a  
    Check that all submodules listed higher up in this file can be imported
    Note that if a PRIVATE_BUT_PRESENT_MODULES entry goes missing, it may
    simply need to be removed from the list (deprecation may or may not be
    needed - apply common sense).
    c                 b    	 t          j        |            n# t          t          f$ r Y dS w xY wdS )NFT)r   r   ImportErrorAttributeError)module_names    r   check_importablez-test_api_importable.<locals>.check_importable=  sI    	#K0000^, 	 	 	55	 ts    ,,z3Modules in the public API that cannot be imported: T)recordalways)categoryNzNModules that are not really public but looked public and can not be imported: )	r   r   r   warningscatch_warningsfilterwarningsr   ImportWarningr   )r   module_namesr   s      r   test_api_importabler   6  s      L% - -,, 	-,,, : 9*69 9 : : 	: 
	 	-	-	- 1 13EFFFF=AAAA6 	1 	1K##K00 1##K000	11 1 1 1 1 1 1 1 1 1 1 1 1 1 1  0 / ,/ / 0 0 	00 0s   A!CCC)r   correct_module)l)r&   N)r'   N)r(   N)r)   N)r*   N)r+   N)r,   N)r-   N)r.   N)r/   N)r0   N)r1   N)r2   N)r3   N)r4   N)r5   N)r6   N)r7   N)r9   N)r:   N)rD   N)rE   N)r8   arff)r;   matlab)rA   r   )r<   r   )r=   r   )r?   r   )r@   r   )r>   r   )rB   r   )rC   r   )rF   N)rG   N)rH   N)rI   N)rJ   N)rK   N)rL   N)rM   N)rN   N)rO   N)rQ   N)rR   N)rS   N)rT   N)rU   N)rV   N)rW   N)rX   N)rY   N)rZ   N)r[   N)r\   N)r]   N)r^   N)r_   N)r`   N)ra   N)rb   N)rc   N)rd   N)re   N)rf   N)rg   N)rh   N)ri   N)rj   N)rk   N)rl   N)rm   windows)rn   N)ro   N)rp   N)rq   N)rr   N)rs   N)rt   N)ru   N)rv   N)rw   N)rx   N)ry   N)rz   r   )r{   r   )r|   r   )r}   r   )r~   r   )r   N)r   N)r   N)r   N)r   N)r   N)r   	transform)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   N)r   mstats)r   r   )r   N)r   Nc                     t          |           }|d|                     d          d          }n!d|                     d          d          d| }t          |          }|j        D ][}t          ||d           J d| d| d}t	          j        |          5  t          ||           d d d            n# 1 swxY w Y   \d|  d	}t	          j        t          |          5  t          |d
           d d d            d S # 1 swxY w Y   d S )Nr   r      zPlease import `z` from the `z`...)match`z` is deprecated...ekki)r   splitr   r   pytestdeprecated_callraisesr   )r   r   r   import_namecorrect_import	attr_namemessages          r   $test_private_but_present_deprecationr   [  s   d ;''F:{0055a8::K{0055a8KK>KK";//N ^ ' '	~y$77CCCLILL;LLL#'222 	' 	'FI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 2+111G	~W	5	5	5                                       s$   B88B<	?B<	%DD
D)__doc__r   r   r   r   r   r   numpyr   r	   scipy.conftestr   r   r   r   r   r   markthread_unsafer   r   r   r   parametrizer   r   r   r   <module>r      s   
        # # # # # #       0 0 0 0 0 03 3 3( ( () ( ( (`t t t n    	  F  F  FJ   ?  ?  ?F"0 "0 "0J :k7 k7 k7l8 l8Z   [l8 l8 \     r   