
    dfd                         d dl mZ d dlmZ d dlmZm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 d dlZ G d dej                  e      Z G d	 d
      Zy)    )convert_path)log)DistutilsErrorDistutilsOptionErrorN)easy_install)
namespacesc                       e Zd ZdZdZej                  ddgz   Zej                  dgz   ZdZd Z	d Z
d	 Zed
        Zd Zd Zd Zd Zy)developzSet up package for developmentz%install package in 'development mode')	uninstalluzUninstall this source package)z	egg-path=Nz-Set the path to be used in the .egg-link filer   Fc                     | j                   r(d| _        | j                          | j                          n| j	                          | j                          y )NT)r   multi_versionuninstall_linkuninstall_namespacesinstall_for_developmentwarn_deprecated_optionsselfs    S/home/api-vastappli/venv/lib/python3.12/site-packages/setuptools/command/develop.pyrunzdevelop.run   sA    >>!%D!%%'((*$$&    c                 f    d | _         d | _        t        j                  |        d | _        d| _        y )N.)r   egg_pathr   initialize_options
setup_pathalways_copy_fromr   s    r   r   zdevelop.initialize_options%   s-    ''- #r   c           	         | j                  d      }|j                  r(d}|j                  |j                  f}t        ||z        |j                  g| _        t        j                  |        | j                          | j                          | j                  j                  t        j                  d             |j                  dz   }t        j                  j                  | j                   |      | _        |j$                  | _        | j&                  .t        j                  j)                  |j$                        | _        t+        j,                  | j$                        }t+        j,                  t        j                  j                  | j                   | j&                              }||k7  rt/        d|z         t+        j0                  |t+        j2                  |t        j                  j)                  |j                              |j                        | _        | j7                  | j$                  | j                   | j&                        | _        y )Negg_infoz-Please rename %r to %r before using 'develop'z*.eggz	.egg-linkzA--egg-path must be a relative path from the install directory to project_name)get_finalized_commandbroken_egg_infor   r   egg_nameargsr   finalize_optionsexpand_basedirsexpand_dirspackage_indexscanglobospathjoininstall_diregg_linkegg_baser   abspathpkg_resourcesnormalize_pathr   DistributionPathMetadatadist_resolve_setup_pathr   )r   eitemplater%   egg_link_fntargetr   s          r   r&   zdevelop.finalize_options,   s   ''
3FH;; 2 22D D11[[M	%%d+		' 23kkK/T%5%5{C== GGOOBKK8DM--dmm< //GGLL))4==9
 v&!#)*  "..&&vrwwr{{/KL
	 22MMMM
r   c                    | j                  t        j                  d      j                  d      }|t        j                  k7  rd|j                  d      dz   z  }t        j                  t        j                  j                  |||            }|t        j                  t        j                        k7  r.t        d|t        j                  t        j                              |S )z
        Generate a path from egg_base back to '.' where the
        setup script resides and ensure that path points to the
        setup path from $install_dir/$egg_path.
        /z../   zGCan't get a consistent path to setup script from installation directory)replacer,   seprstripcurdircountr3   r4   r-   r.   r   )r1   r/   r   path_to_setupresolveds        r   r8   zdevelop._resolve_setup_pathW   s     !((5<<SABII%!]%8%8%=%ABM //GGLLh>
 }33BII>>&*,,RYY7	  r   c                 l   | j                  d       | j                  dd       | j                  d       t        j                  r*| j	                  t        j                         d t        _        | j                          t        j                  d| j                  | j                         | j                  sJt        | j                  d      5 }|j                  | j                  dz   | j                  z          d d d        | j                  d | j                   | j"                          y # 1 sw Y   2xY w)Nr   	build_extr?   )inplacezCreating %s (link to %s)w
)run_commandreinitialize_command
setuptoolsbootstrap_install_fromr   install_namespacesr   infor0   r1   dry_runopenwriter   r   process_distributionr7   no_deps)r   fs     r   r   zdevelop.install_for_developmentm   s    $ 	!!+q!9%,,j??@04J-! 	+T]]DMMJ||dmmS) @Q,t>?@ 	!!$		t||3CD	@ @s   ,D**D3c                    t         j                  j                  | j                        rt	        j
                  d| j                  | j                         t        | j                        }|D cg c]  }|j                          }}|j                          || j                  g| j                  | j                  gfvrt	        j                  d|       y | j                  st        j                  | j                         | j                  s| j                  | j                          | j"                  j$                  rt	        j                  d       y y c c}w )NzRemoving %s (link to %s)z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)r,   r-   existsr0   r   rQ   r1   rS   rB   closer   r   warnrR   unlink
update_pthr7   distributionscripts)r   egg_link_filelinecontentss       r   r   zdevelop.uninstall_link   s    77>>$--(HH/N /M2?@$@H@!$--1QRR?J<<		$--(||OODII&$$HHLM % As   .Ec                    || j                   urt        j                  | |      S | j                  |       | j                  j
                  xs g D ]  }t        j                  j                  t        |            }t        j                  j                  |      }t        j                  |      5 }|j                         }d d d        | j                  |||        y # 1 sw Y    xY wN)r7   r   install_egg_scriptsinstall_wrapper_scriptsr^   r_   r,   r-   r2   r   basenameiorS   readinstall_script)r   r7   script_namescript_pathstrmscript_texts         r   re   zdevelop.install_egg_scripts   s    tyy 33D$??
 	$$T*  ,,44: 	MK''//,{*CDK''**;7K% *"iik*k;L	M* *s   /CC(	c                 D    t        |      }t        j                  | |      S rd   )VersionlessRequirementr   rf   r   r7   s     r   rf   zdevelop.install_wrapper_scripts   s    %d+33D$??r   N)__name__
__module____qualname____doc__descriptionr   user_optionsboolean_optionscommand_consumes_argumentsr   r   r&   staticmethodr8   r   r   re   rf    r   r   r
   r
      s{    (9K,,;L0 L
 #22k]BO!&'$)
V  *E,N"M$@r   r
   c                   "    e Zd ZdZd Zd Zd Zy)rp   a  
    Adapt a pkg_resources.Distribution to simply return the project
    name as the 'requirement' so that scripts will work across
    multiple versions.

    >>> from pkg_resources import Distribution
    >>> dist = Distribution(project_name='foo', version='1.0')
    >>> str(dist.as_requirement())
    'foo==1.0'
    >>> adapted_dist = VersionlessRequirement(dist)
    >>> str(adapted_dist.as_requirement())
    'foo'
    c                     || _         y rd   )_VersionlessRequirement__distrq   s     r   __init__zVersionlessRequirement.__init__   s	    r   c                 .    t        | j                  |      S rd   )getattrr~   )r   names     r   __getattr__z"VersionlessRequirement.__getattr__   s    t{{D))r   c                     | j                   S rd   r    r   s    r   as_requirementz%VersionlessRequirement.as_requirement   s       r   N)rr   rs   rt   ru   r   r   r   r{   r   r   rp   rp      s    *!r   rp   )distutils.utilr   	distutilsr   distutils.errorsr   r   r,   r+   rh   r3   setuptools.command.easy_installr   rN   r   DevelopInstallerr
   rp   r{   r   r   <module>r      sF    '  A 	  	  8 ! Z@j))< Z@z! !r   