
    wgQY                        d dl Z d dlZd dlZd dlZd dl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Z	 d dlZd&dZd Zej"                  j%                  ed      ej"                  j'                  ddg      d	               Zd
 Zd Zd Zej"                  j%                  edu d      d        ZdD  cg c]  } d| z   	 c} Ze j4                  dk  redD  cg c]  } d| z   	 c} z  Zg dZdD  cg c]  } d| z   	 c} Ze j4                  dk  redD  cg c]  } d| z   	 c} z  Zd Ze j4                  dk  rdgZng Zej"                  j?                  d      d        Z g dZ!e j4                  dk  re!g dz  Z!d Z"d Z#ej"                  jI                   ejJ                  d      dvd       d!        Z&d" Z'ej"                  j?                  d#      d$        Z(d% Z)y# e$ r dZY w xY wc c} w c c} w c c} w c c} w )'    N)IS_WASMc                     || j                   }i }t        |       D ]]  }|dk(  r	t        | |      }t        |d      s"t        |d      s/|j                  |k7  s?|j                  dz   |j                   z   ||<   _ |S )zEReturns a mapping of all objects with the wrong __module__ attribute.core
__module____name__.)r   dirgetattrhasattrr   )modulemodule_nameresultsnameitems        `/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numpy/tests/test_public_api.py	check_dirr      s    ooGF B6>vt$D,'GD*,EOO{2 OOc1DMMAGDMB N    c                  :    ddd} t        t              }|| k(  sJ y )Nznumpy.rec.recarrayznumpy.__config__.show)recarrayshow_config)r   np)	allowlistbad_resultss     r   test_numpy_namespacer   %   s,     ).I B-K )###r   zcan't start subprocess)reasonr   testingc                     t         j                  dd| z   f}t        j                  |      }|rJ | t	        t
              v sJ y)a  Make sure we can actually use the modules we lazy load.

    While not exported as part of the public API, it was accessible.  With the
    use of __getattr__ and __dir__, this isn't always true It can happen that
    an infinite recursion may happen.

    This is the only way I found that would force the failure to appear on the
    badly implemented code.

    We also test for the presence of the lazily imported modules in dir

    z-czimport numpy; numpy.N)sys
executable
subprocesscheck_outputr	   r   )r   exeresults      r   test_import_lazy_importr$   1   sD     >>4!7$!>
?C$$S)F: 3r7??r   c                  |    t        t        t                    t        t        t        t                          k(  sJ y)zWAssert that output of dir has only one "testing/tester"
    attribute without duplicateN)lenr	   r   set r   r   test_dir_testingr)   H   s'     s2w<3s3r7|,,,,r   c                  D    t        t        j                        } | i k(  sJ y N)r   r   linalgr   s    r   test_numpy_linalgr.   N   s    BII&K"r   c                  D    t        t        j                        } | i k(  sJ y r+   )r   r   fftr-   s    r   test_numpy_fftr1   S   s    BFF#K"r   z#ctypes not available in this pythonc                      t        j                  t        j                  j                  j
                        } t        | dd       }|J d       y )Ntest_not_exportedzG'test_not_exported' is mistakenly exported, NPY_NO_EXPORT does not work)ctypesCDLLr   _core_multiarray_tests__file__r
   )cdllfs     r   test_NPY_NO_EXPORTr;   X   sG     ;;rxx11::;D)40A9 5 4 59r   ) 	ctypeslibdtypes
exceptionsf2pyr0   libzlib.array_utilsz
lib.formatzlib.introspectz
lib.mixinsz	lib.npyiozlib.recfunctionszlib.scimathzlib.stride_tricksr,   maz	ma.extraszma.mrecords
polynomialzpolynomial.chebyshevzpolynomial.hermitezpolynomial.hermite_ezpolynomial.laguerrezpolynomial.legendrezpolynomial.polynomialrandomstringsr   ztesting.overridestypingztyping.mypy_pluginversionnumpy.)      )	distutilszdistutils.cpuinfozdistutils.exec_commandzdistutils.misc_utilzdistutils.logzdistutils.system_info)
numpy.charznumpy.emathz	numpy.rec),compatzcompat.py3kconftestr   zcore.multiarrayzcore.numericz
core.umathzcore.arrayprintzcore.defchararrayzcore.einsumfunczcore.fromnumericzcore.function_basezcore.getlimitszcore.numerictypeszcore.overrideszcore.recordszcore.shape_basezf2py.auxfuncszf2py.capi_mapszf2py.cb_ruleszf2py.cfuncszf2py.common_ruleszf2py.crackfortranzf2py.diagnosezf2py.f2py2ezf2py.f90mod_ruleszf2py.func2subrz
f2py.ruleszf2py.symboliczf2py.use_rulesz
fft.helperzlib.user_arrayzlinalg.lapack_litezlinalg.linalgzma.corezma.testutilszma.timer_comparisonmatlib	matrixlibzmatrixlib.defmatrixzpolynomial.polyutilszrandom.mtrandzrandom.bit_generatorztesting.print_coercion_tables)7zdistutils.armccompilerzdistutils.fujitsuccompilerzdistutils.ccompilerzdistutils.ccompiler_optzdistutils.commandzdistutils.command.autodistzdistutils.command.bdist_rpmzdistutils.command.buildzdistutils.command.build_clibzdistutils.command.build_extzdistutils.command.build_pyzdistutils.command.build_scriptszdistutils.command.build_srczdistutils.command.configz!distutils.command.config_compilerzdistutils.command.developzdistutils.command.egg_infozdistutils.command.installzdistutils.command.install_clibzdistutils.command.install_dataz!distutils.command.install_headerszdistutils.command.sdistzdistutils.conv_templatezdistutils.corezdistutils.extensionzdistutils.fcompilerzdistutils.fcompiler.absoftzdistutils.fcompiler.armzdistutils.fcompiler.compaqzdistutils.fcompiler.environmentzdistutils.fcompiler.g95zdistutils.fcompiler.gnuzdistutils.fcompiler.hpuxzdistutils.fcompiler.ibmzdistutils.fcompiler.intelzdistutils.fcompiler.laheyzdistutils.fcompiler.mipszdistutils.fcompiler.nagzdistutils.fcompiler.nonezdistutils.fcompiler.pathf95zdistutils.fcompiler.pgzdistutils.fcompiler.nvzdistutils.fcompiler.sunzdistutils.fcompiler.vastzdistutils.fcompiler.fujitsuzdistutils.from_templatezdistutils.intelccompilerzdistutils.lib2defzdistutils.line_endingszdistutils.mingw32ccompilerzdistutils.msvccompilerzdistutils.npy_pkg_configzdistutils.numpy_distributionzdistutils.pathccompilerzdistutils.unixccompilerc                 T    d| v sd| v sd| v ry| t         v ry| t        v ry| t        v ryy)z%Check if this needs to be considered.z._z.testsz.setupFT)PUBLIC_MODULESPUBLIC_ALIASED_MODULESPRIVATE_BUT_PRESENT_MODULESr   s    r   is_unexpectedrU     s@    t|x4'8t+;~%%**r   znumpy.distutils.msvc9compilerz'ignore:.*np.compat.*:DeprecationWarningc                      g } t        j                  t        j                  t        j                  dz   d      D ],  \  }}}t        |      s|t        vs| j                  |       . | rt        d|        y)z|
    Test that we don't add anything that looks like a new public module by
    accident.  Check is based on filenames.
    r   N)pathprefixonerrorzFound unexpected modules: )	pkgutilwalk_packagesr   __path__r   rU   	SKIP_LISTappendAssertionError)modnames_modnameispkgs       r   test_all_modules_are_expectedrd   )  s|     H$22:<++:K;?A %7E !gY&> OOG$% 9(DEE r   )znumpy.lib.mathznumpy.matlib.charznumpy.matlib.recznumpy.matlib.emathznumpy.matlib.exceptionsznumpy.matlib.mathznumpy.matlib.linalgznumpy.matlib.fftznumpy.matlib.randomznumpy.matlib.ctypeslibznumpy.matlib.ma)znumpy.distutils.log.sysznumpy.distutils.log.loggingznumpy.distutils.log.warningsc                      d }  | d      }t         D ]  }|j                   | |              |rt        dj                  |            y)a  
    Method checking all objects. The pkgutil-based method in
    `test_all_modules_are_expected` does not catch imports into a namespace,
    only filenames.  So this test is more thorough, and checks this like:

        import .lib.scimath as emath

    To check if something in a module is (effectively) public, one can check if
    there's anything in that namespace that's a public function/object but is
    not exposed in a higher-level namespace.  For example for a `numpy.lib`
    submodule::

        mod = np.lib.mixins
        for obj in mod.__all__:
            if obj in np.__all__:
                continue
            elif obj in np.lib.__all__:
                continue

            else:
                print(obj)

    c                 T   g }t        j                  |       }t        |d      r|j                  }nt	        |      }|D ]g  }|j                  d      r| dz   |z   }t        t        ||      t        j                        sBt        |      sN|t        vsW|j                  |       i |S )N__all__ra   r   )	importlibimport_moduler   rg   r	   
startswith
isinstancer
   types
ModuleTyperU   SKIP_LIST_2r^   )mod_namemembersr   objnamesobjnamefullobjnames         r   find_unexpected_membersz@test_all_modules_are_expected_2.<locals>.find_unexpected_membersn  s    ((269%~~H6{H 	8G%%c*&nw6gfg68H8HI$[1&k9#NN;7	8 r   numpyz5Found unexpected object(s) that look like modules: {}N)rQ   extendr_   format)rt   unexpected_membersrb   s      r   test_all_modules_are_expected_2ry   U  sb    2$ 19! D!!"9'"BCD  ++162D+EG 	G r   c                  |   d } g }t         D ]  } | |      r|j                  |        |rt        dj                  |            t        D ]  }	 t        |        |rt        dj                  |            t        j                  d      5 }t        j                  dt               t        j                  dt               t        D ]  } | |      r|j                  |        	 ddd       |rt        d	j                  |            y# t        $ r |j                  |       Y w xY w# 1 sw Y   FxY w)
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                 Z    	 t        j                  |        y# t        t        f$ r Y yw xY w)NFT)rh   ri   ImportErrorAttributeError)r   s    r   check_importablez-test_api_importable.<locals>.check_importable  s3    	##K0  ^, 		s    **z5Modules in the public API that cannot be imported: {}z1Modules in the public API that were not found: {}T)recordalways)categoryNzPModules that are not really public but looked public and can not be imported: {})rQ   r^   r_   rw   rR   evalr}   warningscatch_warningsfilterwarningsDeprecationWarningImportWarningrS   )r~   module_namesr   ws       r   test_api_importabler     sG    L% -,,-  ,,2F<,@B 	B . -	--  ))/)=? 	? 
	 	 	- 13EF=A6 	1K#K0##K0	11  ""(&"68 	8   	-,	-1 1s%   DAD2D2D/.D/2D;Py_DEBUG)Nr   0zNumPy possibly built with `USE_DEBUG=True ./tools/travis-test.sh`, which does not expose the `array_api` entry point. See https://github.com/numpy/numpy/pull/19800c                     t        j                  d      t        j                  v } t        j
                  j                         }	 |j                  d      }t        |      dk(  r| rd}t        |      dy	 t        d |D              }|j                  d	k(  ry|j                         }d
|j                   d}|t         u sJ |       y# t        $ r |j                  dg       }Y w xY w# t        $ r | rd}t        |      dY yw xY w)zx
    Entry point for Array API implementation can be found with importlib and
    returns the main numpy namespace.
    platlib	array_api)groupr   z%No entry points for 'array_api' foundNc              3   @   K   | ]  }|j                   d k(  s|  yw)ru   NrT   ).0eps     r   	<genexpr>z-test_array_api_entry_point.<locals>.<genexpr>  s     <G);"<s   z%'numpy' not in array_api entry pointsznumpy.array_apiznumpy entry point value 'z0' does not point to our Array API implementation)	sysconfigget_pathr   r8   rh   metadataentry_pointsselectr}   getr&   r_   nextStopIterationvalueloadru   )numpy_in_sitepackagesepsxp_epsmsgr   xps         r   test_array_api_entry_pointr     s     &..y9R[[H



)
)
+C*+. 6{a 9C %4/<v<< 
xx$$ 		B
#BHH: .9 	9  ;;C  *
 b)*   9C %4/	s$   C	 7C* 	C'&C'*DDc                      d } d } | t         j                        } ||      } | t        j                               } ||      }||k(  sJ d|j                  |              y)z
    Checks if `dir(np)` and `np.__all__` are consistent and return
    the same content, excluding exceptions and private members.
    c                 P    | D ch c]  }|j                  d      r| c}S c c}w )Nra   )rj   )
member_setms     r   _remove_private_memberszFtest_main_namespace_all_dir_coherence.<locals>._remove_private_members  s!    %?aQ\\#->???s   ##c                 &    | j                  dh      S )Nbool)
difference)r   s    r   _remove_exceptionszAtest_main_namespace_all_dir_coherence.<locals>._remove_exceptions  s    $$&
  	r   zMembers that break symmetry: N)r   rg   __dir__symmetric_difference)r   r   all_membersdir_memberss       r   %test_main_namespace_all_dir_coherencer     so    
@
 *"**5K$[1K)"**,7K$[1K+% '++K8
9	;%r   z:ignore:numpy.core(\.\w+)? is deprecated:DeprecationWarningc                     ddl m}  t        t        j                        D ]  }|j                  d      s|dv sd| t        v r$t        t        j                  |      }t        j                  |      rT|}|}t        |      D ]A  }|j                  d      rt        ||      }t        d| |g      }|t        ||      u rAJ  |t        | |      u rJ  y)	zp
    Check that all "semi-public" members of `numpy._core` are also accessible
    from `numpy.core` shims.
    r   Nra   )testsrD   rG   __znumpy.core.)fromlist)
numpy.corer   r	   r   r6   rj   rR   r
   inspectismodule
__import__)r   member_namemember	submodulesubmodule_namesubmodule_member_namesubmodule_membercore_submodules           r   test_core_shims_coherencer     s     288} "8 ""3'22}%)??;/
 F#I(N),Y %(33D9#*96K#L !+!.!1234"
 (7"$9,     WT;7777E"8r   c                  *   ddl m} m}m}m}m}m} ddlm} t        h}t               }t               }	g }
t        g}t        |      dkD  r|j                         }t        |      D ]  }t        ||      }t!        j"                  |      rXd|j$                  v rJ|j'                  d      s9d|j$                  vr+|dvr'||vr#|j)                  |       |j+                  |       }t!        j,                  |      s't/        ||      st/        |t        j0                        s||v r|j$                  dv r|j$                  dk(  r|j$                  d	k(  r|j$                  j'                  d
      r|j$                  dv r|j$                  dk(  r&|j$                  dk(  r7|
j)                  |j$                  |j$                  |	|   f       d|j+                  |       |j$                  |	|<    t        |      dkD  r~~~	t        |
      dk(  sJ |
       y)z
    Check that each public function is available from one location only.

    Test performs BFS search traversing NumPy's public API. It flags
    any function-like object that is accessible from more that one place.
    r   )AnyCallableDictListSetTuple)_ArrayFunctionDispatcherru   ra   znumpy._core)r?   rA   r   r   )absolutearccosarccosharcsinarcsinharctanarctan2arctanh
left_shiftright_shift	conjugateinvert	remainderdivideconcatenatepower	transposetrimcoefznumpy.polynomial)addequal	not_equalgreatergreater_equalless
less_equalznumpy.stringsrK   N)rE   r   r   r   r   r   r   numpy._core._multiarray_umathr   r   r'   dictr&   popr	   r
   r   r   r   rj   r^   r   
isfunctionrk   ufunc)r   r   r   r   r   r   dispatched_functionvisited_modulesvisited_functionsfunctions_original_pathsduplicated_functionsmodules_queuer   r   r   s                  r   test_functions_single_locationr   :  s	    =< /1TO14 ?Cf )+DM
m
q
 ""$v; Q	GKV[1F   (6??***3/V__4#EEo-$$V,##F+ ""6*6#676288,..  , & 72  :5223EF   +  !//_<  ,6  )//1&9; &))&17=,V4cQ	G	 m
q
 n 	?,D#$)?+??)r   r+   )*r   r   r    rZ   rl   rh   r   r   ru   r   numpy.testingr   pytestr4   r|   r   r   markskipifparametrizer$   r)   r.   r1   r;   rQ   version_inforR   rS   rU   r]   r   rd   rn   ry   r   xfailget_config_varr   r   r   r   )ss   0r   <module>r      s   
          ! 
	$ G$<=)- . >*-

 FdN@  B5B5(!) !1(Q, !D g
	1	 	N -6 -x!| - \ g8
:$1:$ :z" g01II EFF GF, g  K1Gh-8` IZ(>	8  ..b2 A)8)8Xq@Q  Fx!F	(-^:$s)   G 4G(G-0G2G7G%$G%