o
    H!i                     @   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
   f/home/app/PaddleOCR-VL-test/.venv_paddleocr/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distributionZ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 )NZ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*   

"r4   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   r5   d   s   

r5   r   c                 C   s    dd|| dt |g}t| dS )fetch_repo_using_gitr6   fetchr8   N)r;   r   )r>   r=   depthr   r
   r
   r   r?   o   s   r?   Tc                 C   s   ddd| g}t |S )reset_repo_using_gitr6   resetz--hard)r   )ZpointerZhardr   r
   r
   r   rB   u   s   rB   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   rD   {   s
   rD   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   rI      s    "rI   c              	   c   s8    t  }t |  zdV  W t | dS t | w )r.   N)r)   getcwdchdir)Znew_wdcwdr
   r
   r   r.      s   
r.   r   )r   )T)rM   importlib.metadatar   r)   platformr   r/   utilsr   Z	utils.envr   systemr-   r   r   r!   r4   r5   r?   rB   rD   contextmanagerrI   r.   r
   r
   r
   r   <module>   s*   


	
