o
    °ô·i‰  ã                   @   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ƒ ‚ w 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 n ty6 } z|r+td|d|ƒ W Y d }~dS d }~ww | tjv rMt	tj|  |ƒsMt
tj|  |ˆ ƒ ˆ tj|< |r|t
ˆ d|ƒ t‡ fdd„|j ¡ ƒD ]\}}|rutd  |||¡ƒ t
ˆ ||ƒ qfd	S )
Nz{}.{}z"Can't load Python code for module:z	. Reason:FÚ_nativec                    s   t ˆ | d ƒ S )Nr   )Úhasattr©Úkv©Ú	py_module© úRC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\cv2/__init__.pyÚ<lambda>*   s    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   s0   ÿ€û
ÿ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   r1   c                     sÒ  dd l } dd l}| | j¡}t| dƒrt| jƒ tdƒ‚d| _d‰ t| dƒr(d‰ dd l}ˆ r;td t	j
t| ¡ ƒ¡ƒ t	j t	j t	j t¡¡¡‰g }g }tƒ ‰tƒ  ¡ ‰| jd d… d	k red
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 ƒ¡ƒ ˆ r­td tˆd ƒ¡ƒ d}t| dƒr·d}n'zt	j ˆ¡}| jd |ksÐt	j | jd ¡|krÒd}W n
   ˆ rÝtdƒ Y tˆd ƒD ]}	| j |síd
nd|	¡ qät	j
dk�rS| jd d… dk�r0ˆd D ])}	zt	 |	¡ W �q t�y/ }
 zˆ �r$tdt|
ƒ ƒ W Y d }
~
�qd }
~
ww d ˆd ¡d t	j dd¡ t	jd< ˆ �rRtd tt	jd ƒ¡ƒ nd ˆd ¡d t	j dd¡ t	jd< ˆ �rmtd ƒ | j d!¡}t  !d!¡}|| jd!< t"|d"|ƒ t#d#d$„ |j$ %¡ ƒD ]\}}|ˆv�rš|ˆ|< �q�|| _z| `W n t�y¾ }
 zˆ �r´td%|
ƒ W Y d }
~
nd }
~
ww ˆ �rÆtd&ƒ t&ˆ ƒD ]}t'd!|ˆ ƒ�rÜˆ �rÜtd'|d(ƒ �qÊˆ �rçtd)ƒ d S 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 j ˆ|¡}t j |¡sˆ rtd |¡ƒ qˆ r$td |¡ƒ ˆ|ˆˆƒ  dS |r6t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_DIRr5   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
   ž   s    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   r2   Úplatformr   r$   r   ÚstrÚsystemr/   r-   Úrealpathr.   ÚglobalsÚlocalsr,   Zload_config_py2r5   Zload_config_py3ÚreversedÚinsertÚadd_dll_directoryÚ	Exceptionr'   ÚenvironÚgetr   r   r   r   r   r   r   r   r1   r    )r   rH   Zsave_sys_pathrI   r=   r>   r<   ZapplySysPathWorkaroundZBASE_DIRÚpÚer   r   Z	item_nameÚitemÚ	submoduler   r:   r	   Ú	bootstrapD   s¤   



þý
$€€þ&€&

þ
€
€þ€rY   )F)Ú__doc__r$   r   r   Ú__all__ZnumpyZnumpy.core.multiarrayr   r   r    r1   rY   r   r   r   r	   Ú<module>   s$    ü



q