o
    1j                     @   s   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	m
Z
 e Zdd Zdd Zd	d
 Zdd ZdddZdddZdddZdd Ze jdd Ze jdd ZdS )    N   )logging)get_device_typec                  O   s   t j| i |S N)
subprocess
check_call)argskwargs r
   [/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/repo_manager/utils.py_check_call   s   r   c                    s   dd l   fdd}|| }||}t||D ]+\}}|d u r$|d u r$q|d u s0|d ur3||k r3 dS |d u s?|d urB||krB dS qdS )Nr   c                    sV     d}|| }|std|  t|dt|dt|d|dfS )Nzf^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?:-(?P<pre_release>.*))?(?:\+(?P<build_metadata>.+))?$zUnexpected version string: majorminorpatchZpre_release)compilematch
ValueErrorintgroup)version_strZversion_patternr   rer
   r   parse_version#   s   
z'_compare_version.<locals>.parse_version   )r   zip)Zversion1Zversion2r   Zv1_infosZv2_infosZv1_infoZv2_infor
   r   r   _compare_version    s   r   c                 C   s,   z	t j|  W dS  t jjy   Y dS w )NFT)	importlibmetadatadistributionPackageNotFoundError)packager
   r
   r   check_package_installation=   s   r"   c                 C   s   ddl }dd }| dkr`tjtj|ddrb	 tdkrYt| d	dkrYd
t v rY| rY|	 sYt
tj|dd tjddg}t| W d   dS 1 sRw   Y  dS td dS dS dS )z-install paddle repository custom dependenciesr   Nc                   S   s   t ddgd d S )Ngccz	--versionzutf-8r   )r   check_outputdecodesplitr
   r
   r
   r   get_gcc_versionI   s   z.install_external_deps.<locals>.get_gcc_versionZPaddleDetectionZppdetZext_opLinuxz8.2.0Zgpuzsetup.pyinstallaU  The custom operators in PaddleDetection for Rotated Object Detection is only supported when using CUDA, GCC>=8.2.0 and Paddle>=2.0.1, your environment does not meet these requirements, so we will skip the installation of custom operators under PaddleDetection/ppdet/ext_ops, which means you can not train the Rotated Object Detection models.)paddleospathexistsjoinPLATFORMr   r   Zis_compiled_with_cudaZis_compiled_with_rocmswitch_working_dirsys
executabler   r   warning)	repo_name	repo_rootr*   r'   r   r
   r
   r   install_external_depsE   s*   

"r6   c                 C   s@   g d}t | tr| g} ||  |dur|d|g t|S )clone_repo_using_git)gitclone--depth1Nz-b)
isinstancestrextendr   )urlbranchr   r
   r
   r   r7   d   s   

r7   r   c                 C   s    dd|| dt |g}t| dS )fetch_repo_using_gitr8   fetchr:   N)r=   r   )r@   r?   depthr   r
   r
   r   rA   o   s   rA   Tc                 C   s   ddd| g}t |S )reset_repo_using_gitr8   resetz--hard)r   )pointerZhardr   r
   r
   r   rD   u   s   rD   c                 C   s:   t j| rtdkrtddd| gddS tdd| gS d	S )
remove_repo_using_rmWindowsrmdirz/Sz/QT)shellZrmz-rfN)r+   r,   r-   r/   r   )namer
   r
   r   rG   {   s
   rG   c               
   c   s    t tjd>} t|   t|  dV  W d   n1 s!w   Y  W d   n1 s0w   Y  W d   dS W d   dS 1 sHw   Y  dS )mutewN)openr+   devnull
contextlibredirect_stdoutredirect_stderr)fr
   r
   r   rL      s    "rL   c              	   c   s8    t  }t |  zdV  W t | dS t | w )r0   N)r+   getcwdchdir)Znew_wdcwdr
   r
   r   r0      s   
r0   r   )r   )T)rP   importlib.metadatar   r+   platformr   r1   utilsr   Z	utils.envr   systemr/   r   r   r"   r6   r7   rA   rD   rG   contextmanagerrL   r0   r
   r
   r
   r   <module>   s*   


	
