o
    h                     @   s   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d Zdd Zd	d
 Zdd Zdd ZdZdd Zdd Zdd Zdd Zdd ZdS )    N)mockc                  C   s   t d} t d}| | jtddksJ z|j t  ty'   Y nw t|t j	s0J z|j t  ty@   Y d S w )Nmathanything_not_realr   ư>)
lazyloadsinpipytestapproxAssertionErrorModuleNotFoundError
isinstanceDelayedImportErrorModule)r   r    r   ]/var/www/html/scripts/venv/lib/python3.10/site-packages/lazy_loader/tests/test_lazy_loader.pytest_lazy_import_basics   s    

r   c                  C   s   t t td} W d    n1 sw   Y  dtjv s!J ttjd tt ks.J t| t	j
js7J dtjv s>J tjd | ksGJ d S )Nzhtml.parserhtml)r
   warnsRuntimeWarningr   r   sysmodulestyper   	importlibutil_LazyModule)hpr   r   r   test_lazy_import_subpackages"   s   r   c                  C   s   t d} t d}t| tjsJ dtjv sJ t|t js!J dtjvs(J t	d t d}t|tjs:J dtjv sAJ |j
 t|tjsLJ dtjv sSJ d S )Nr   r   numpy)r   r   r   types
ModuleTyper   r   r   r
   importorskipr	   )r   r   npr   r   r   &test_lazy_import_impact_on_sys_modules,   s   



r#   c                  C   sn   t d} t d}t| t js| | jtddksJ t|t jr5z|j t  t	y4   Y d S w d S )Nr   scipyr   r   )
r   r   r   r   r   r	   r
   r   r   r   )r"   spr   r   r   test_lazy_import_nonbuiltinsA   s   

r&   c                  C   s   d} ddg}ddgi}t j| ||d}d}t|i | t j| ||d d d d}| | ks0J | D ]\}}|d urD|| |ksDJ q4d S )	Nmymodmysubmoduleanothersubmodulenot_real_submodsome_var_or_func)attachnamesubmodsmyallzA__getattr__, __lazy_dir__, __all__ = attach(name, submods, myall))r,   r-   r.   r/   __getattr____lazy_dir____all__)r   r,   execkeysitems)r-   r.   r/   loclssexpectedkvr   r   r   test_lazy_attachN   s0   
	r;   c                  C   sP   ddl m}  t| jtjsJ t| jtjsJ ddlm} t|tjs&J d S )Nr   fake_pkg)	some_func)lazy_loader.testsr=   r   r>   r   FunctionType$lazy_loader.tests.fake_pkg.some_func)r=   r>   r   r   r   %test_attach_same_module_and_attr_namek   s
   rB   zg
from . import rank
from ._gaussian import gaussian
from .edges import sobel, scharr, prewitt, roberts
c                 C   sZ   | d }| t tdt|\}}}h d}t| t|  kr(|ks+J  J d S )Nstub.pyi	my_module>   ranksobelscharrprewittrobertsgaussian)
write_text	FAKE_STUBr   attach_stubstrset)tmp_pathstub_get_dir_allexpectr   r   r   test_stub_loading   s
   
*rV   c                  C   s\   ddl m}  t| j| j}|\}}}|| jksJ | |  ks#J |d| jks,J d S )Nr   r<   r>   )	r?   r=   r   rM   __name____file__r2   r1   r>   )r=   	from_stubstub_getterstub_dirstub_allr   r   r   test_stub_loading_parity   s   
r]   c                 C   s   | d }| d tjtdd tdt| W d    n1 s#w   Y  tjtdd tdd W d    n1 s@w   Y  | d }| d	 tjtd
d tdt| W d    d S 1 siw   Y  d S )NrC   zfrom ..mod import func
z(Only within-module imports are supported)matchr-   z*Cannot load imports from non-existent stubz
not a filez	stub2.pyizfrom .mod import *
z.*does not support star import)rK   r
   raises
ValueErrorr   rM   rN   )rP   rQ   stub2r   r   r   test_stub_loading_errors   s   

"rb   c                  C   s   t jdd u} | rdnd}td| d>}d|_tjddd	}t|tj	s*J tjdd
d	}|
|jtddks?J tjddd	}t|tj	sNJ W d    n1 sXw   Y  tt tjdd
d	 W d    d S 1 suw   Y  d S )Nzimportlib.metadata._r   zmetadata.versionz1.0.0r   zsomepkg >= 2.0)requirezsomepkg >= 1.0r   r   )r   r   	find_specr   patchreturn_valuer   r   r   r   r   r	   r
   r   r_   r`   )have_importlib_metadatadotversionr   r   r   r   test_require_kwarg   s   "rl   c                   C   s0   t d ttjtjtj	t
dg d S )Nr   zimport_np_parallel.py)r
   r!   
subprocessrunr   
executableospathjoindirnamerX   r   r   r   r   test_parallel_load   s   
rt   )r   rp   rm   r   r   unittestr   r
   lazy_loaderr   r   r   r#   r&   r;   rB   rL   rV   r]   rb   rl   rt   r   r   r   r   <module>   s(    

