
    xhe                         d dl Z d dlZd dlmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ d Zd Zd	 Zd
 Zd Zd Zej        ddddfdZdS )    N)abspathexists
expanduserisdirjoin   )find_executable)mk_relative_osx)check_call_envget_site_packageson_macrec_globc                     t          | dg          }|D ])}t          rt          ||           t          d           *dS )a  
    invokes functions in post module to relink to libraries in conda env

    :param pkg_path: look for shared objects to relink in pkg_path
    :param build_prefix: path to conda environment which contains lib/. to find
        runtime libraries.

    .. note:: develop mode builds the extensions in place and makes a link to
        package in site-packages/. The build_prefix points to conda environment
        since runtime libraries should be loaded from environment's lib/. first
    z.soz"Nothing to do on Linux or Windows.N)r   r   r
   print)pkg_pathbuild_prefix	bin_filesb_files       3lib/python3.11/site-packages/conda_build/develop.pyrelink_sharedobjectsr      s[     E7++I 8 8 	8FL111167777	8 8    c                 v   t          | d          }t          |d          5 }t          |          5 }|                                }ddd           n# 1 swxY w Y   |dz   |v rt          d|z              n*|                    |dz              t          d|z              ddd           dS # 1 swxY w Y   dS )a  
    Append pkg_path to conda.pth in site-packages directory for current
    environment. Only add path if it doens't already exist.

    :param sp_dir: path to site-packages/. directory
    :param pkg_path: the package path to append to site-packes/. dir.
    	conda.pthaN
zpath exists, skipping zadded )r   open	readlinesr   write)sp_dirr   c_filefcfpkgs_in_dev_modes         r   write_to_conda_pthr$   !   sD    &+&&F	fc		 'a&\\ 	.R  "||~~		. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. d?...*X56666GGHtO$$$(X%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's5   B.AB.A	B.A	AB..B25B2c                 t    t          | d          }t          |          st          j        d|  d           |S )z1Return full path to setup.py or exit if not foundzsetup.pyzNo setup.py found in z
. Exiting.)r   r   sysexit)path_setup_pys     r   get_setup_pyr*   9   sD     E:&&H( <::::;;;Or   c                     d| dg}t          |           t          dd                    |          z              t          d           dS )zZ
    This invokes:
    $ python setup.py clean

    :param setup_py: path to setup.py
    pythoncleanCompleted:  /===============================================Nr   r   r   r)   cmds     r   _cleanr4   D   sP     Xw
'C3	-#((3--
'(((	
;<<<<<r   c                     d| ddg}t          |           t          dd                    |          z              t          d           dS )z
    Define a develop function - similar to build function
    todo: need to test on win32 and linux

    It invokes:
    $ python setup.py build_ext --inplace

    :param setup_py: path to setup.py
    r,   	build_extz	--inplacer.   r/   r0   Nr1   r2   s     r   
_build_extr7   R   sR     X{K
8C3	-#((3--
'(((	
;<<<<<r   c                    t          | d          }t          | d          }d}t          |d          5 }t          |          5 }|D ]5}||dz   k    r|                    |           !t          d|z              d}6	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |s!t          d	|z              t          d
           t	          j        ||           dS )a@  
    Look for pkg_path in conda.pth file in site-packages directory and remove
    it. If pkg_path is not found in conda.pth, it means package is not
    installed in 'development mode' via conda develop.

    :param sp_dir: path to site-packages/. directory
    :param pkg_path: the package path to be uninstalled.
    r   zconda.pth.tempFwr   zuninstalled: TNz!conda.pth does not contain path: z'package not installed via conda develop)r   r   r   r   shutilmove)r   r   o_c_pthn_c_pthfoundnew_corig_clines           r   
_uninstallrB   d   s    6;''G6+,,GE	gs		 !u']] 	!f ! !8d?**KK%%%%/H4555 EE!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! ! ! ! ! ! ! ! ! ! ! ! ! ! !  91H<===7888
K!!!!!s5   B 9B	=B 	B	B B	B  B$'B$Fc           	         t          |          st          j        d|z             t          d|          sJ t	          |d                    t          t          j        j                  t          t          j        j	                  f                    }t          | t                    r| g} | D ]}t          t          |                    }|rt          ||            d S |s|r6t          |          }	|rt          |	           |s d S |rt!          |	           |st#          ||           t%          ||           t'          d|z              d S )Nz_Error: environment does not exist: %s
#
# Use 'conda create' to create the environment first.
#r,   )prefix.zcompleted operation for: )r   r&   r'   r	   r   r   strversion_infomajorminor
isinstancer   r   rB   r*   r4   r7   r$   r   r   )
recipe_dirsrD   no_pth_filer6   r-   	uninstallr   pathr   r)   s
             r   executerO      s    == 

 	
 	
 	
 8F333333 #c.455s3;K;Q7R7RSTT F +s## $"m 6 6:d++,, 	vx(((FF 		%I 		%#H--H x     FF  %8$$$ 	1vx000 	Xv...)H4555536 6r   )r:   r&   os.pathr   r   r   r   r   os_utils.externalr	   postr
   utilsr   r   r   r   r   r$   r*   r4   r7   rB   rD   rO    r   r   <module>rU      s    



 < < < < < < < < < < < < < < . . . . . . ! ! ! ! ! ! F F F F F F F F F F F F8 8 8*' ' '0  = = == = =$" " "< :
56 56 56 56 56 56r   