a
    lc                     @   s   d Z ddlZddlZddlZg ZzddlZddlZW n, ey`   ed ed ed  Y n0 dddZ	dd	d
Z
dd Ze  dS )z'
OpenCV Python binary extension loader
    Nz)OpenCV bindings requires "numpy" package.zInstall it via command:z    pip install numpyFc           	   
      s   d t|}d | |}tj|d }zt| W n8 tyl } z |rVtd|d| W Y d }~dS d }~0 0 t	| |st
tj|  |   tj|< |rt
 d| t fdd|j D ]*\}}|rtd ||| t
 || qd	S )
Nz{}.{}z"Can't load Python code for module:z	. Reason:F_nativec                    s   t  | d  S )Nr   )hasattrkv	py_module H/var/www/html/django/DPS/env/lib/python3.9/site-packages/cv2/__init__.py<lambda>*       z1__load_extra_py_code_for_module.<locals>.<lambda>z    symbol({}): {} = {}T)format__name__sysmodulespop	importlibimport_moduleImportErrorprintr   setattrfilter__dict__items)	basenameenable_debug_printmodule_nameZexport_module_namenative_moduleerrkvr   r   r	   __load_extra_py_code_for_module   s,    

r!   c                    sR    fdd}t jd dk r*| r&td g S tjt}tj| t|t	 S )Nc              	      s0   t | d | d tjtj | fS )N_zpython-)all
startswithospathisdirjoin)moduleZ_extra_submodules_init_pathr   r	   modules_filter2   s
    

z2__collect_extra_submodules.<locals>.modules_filterr      z,Extra submodules is loaded only for Python 3)
r   version_infor   r%   r&   abspath__file__dirnamer   listdir)r   r+   Z__INIT_FILE_PATHr   r*   r	   __collect_extra_submodules1   s    r2   c                     s  dd l } dd l}|| j}t| dr8t| j tdd| _d t| drPd dd l} rvtdt	j
t|  t	jt	jt	jtg }g }t t | jd d d	k rd
dlm nd
dlm d* fdd	}|dgd |d| jd | jd
 d| jd gd  r>tdtd   rZtdtd  d}t| drpd}nXz<t	j}| jd |kst	j| jd |krd}W n    rtd Y n0 td D ]}	| j|sd
nd|	 qt	j
dkr| jd d dkrpd D ]R}	zt	|	 W n< tyj }
 z" rVtdt|
  W Y d }
~
n
d }
~
0 0 qdd d t	jdd t	jd<  rtdtt	jd  n&dd d t	jdd t	jd<  rtd  | jd!}t !d!}|| jd!< t"|d"| t#d#d$ |j$% D ]\}}|vr*||< q*|| _z| `W n6 ty }
 z rxtd%|
 W Y d }
~
n
d }
~
0 0  rtd& t& D ]&}t'd!| r rtd'|d( q rtd) d S )+Nr   OpenCV_LOADERzbERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.TFZOpenCV_LOADER_DEBUGz3OpenCV loader: os.name="{}"  platform.system()="{}"   )r,   r      )exec_file_wrapperc                    sp   | D ]T}t j|}t j|s6 rtd| q rHtd| |  dS |rltd| d S )Nz)OpenCV loader: config not found, skip: {}z!OpenCV loader: loading config: {}TzIOpenCV loader: missing configuration file: {}. Check OpenCV installation.)r%   r&   r(   existsr   r   r   )fnamesrequiredfnameZfpathDEBUGZ
LOADER_DIRr6   Zg_varsZl_varsr   r	   load_first_configc   s    z$bootstrap.<locals>.load_first_configz	config.pyzconfig-{}.{}.pyzconfig-{}.pyz)OpenCV loader: PYTHON_EXTENSIONS_PATHS={}PYTHON_EXTENSIONS_PATHSz OpenCV loader: BINARIES_PATHS={}BINARIES_PATHSZOpenCV_REPLACE_SYS_PATH_0zCOpenCV loader: exception during checking workaround for sys.path[0]nt)r,      zFailed os.add_dll_directory(): ;PATH zOpenCV loader: PATH={}:ZLD_LIBRARY_PATHz7Relink everything from native cv2 module to cv2 packageZcv2r   c                 S   s   | d dvS )Nr   )r/   
__loader____spec__r   __package__r   r   r   r   r	   r
      r   zbootstrap.<locals>.<lambda>z&Exception during delete OpenCV_LOADER:z%OpenCV loader: binary extension... OKzExtra Python code forz	is loadedzOpenCV loader: DONE)T)(r   copyr&   r   r   r   r3   platformr   r%   r   strsystemr0   r.   realpathr/   globalslocalsr-   Zload_config_py2r6   Zload_config_py3reversedinsertZadd_dll_directory	Exceptionr(   environgetr   r   r   r   r   r   r   r   r2   r!   )r   rI   Zsave_sys_pathrJ   r>   r?   r=   ZapplySysPathWorkaroundZBASE_DIRper   r   Z	item_nameitem	submoduler   r;   r	   	bootstrapD   s    


(& &


 rY   )F)F)__doc__r%   r   r   __all__numpyZnumpy.core.multiarrayr   r   r!   r2   rY   r   r   r   r	   <module>   s    

q