ReX@sddlmZddlmZddlmZmZddlZddlZddl Z ddl m Z ddl m Z mZmZddlmZddlmZddlZGd d d ejeZGd d d eZdS) ) convert_path)log)DistutilsErrorDistutilsOptionErrorN)six) Distribution PathMetadatanormalize_path) easy_install) namespacesc@seZdZdZdZejddgZejdgZd Zd d Z d d Z ddZ e ddZ ddZddZddZddZdS)developzSet up package for developmentz%install package in 'development mode' uninstalluUninstall this source package egg-path=N-Set the path to be used in the .egg-link fileFcCsA|jr)d|_|j|jn |j|jdS)NT)r Z multi_versionuninstall_linkZuninstall_namespacesinstall_for_developmentZwarn_deprecated_options)selfr/builddir/build/BUILDROOT/alt-python35-setuptools-36.3.0-4.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/setuptools/command/develop.pyruns      z develop.runcCs5d|_d|_tj|d|_d|_dS)N.)r egg_pathr initialize_options setup_pathZalways_copy_from)rrrrr's     zdevelop.initialize_optionscCs|jd}|jr@d}|j|jf}t|||jg|_tj||j|j |j j t j d|jd}t jj|j||_|j|_|jdkrt jj|j|_t|j}tt jj|j|j}||kr0td|t|t|t jj|jd|j|_|j|j|j|j|_dS)Negg_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_commandZbroken_egg_inforregg_nameargsr finalize_optionsexpand_basedirs expand_dirsZ package_indexscanglobospathjoin install_diregg_linkegg_baserabspathr rrrdist_resolve_setup_pathr)reitemplater Z egg_link_fntargetrrrrr!.s<        zdevelop.finalize_optionscCs|jtjdjd}|tjkrDd|jdd}ttjj|||}|ttjkrt d|ttj|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&seprstripcurdircountr r'r(r)r+r)rZ path_to_setupZresolvedrrrr.Xszdevelop._resolve_setup_pathc Cstjrt|jddr|jddd|jd|jd}t|j}|jdd||jd|jddd|jd|jd}||_ ||j _ t ||j |j _n-|jd|jddd |jd|jtjr4|jtjdt_|jtjd |j|j|jst|jd "}|j|j d |jWdQRX|jd|j |j dS) NZuse_2to3Fbuild_pyZinplacerrr+ build_extr3zCreating %s (link to %s)w )rPY3getattr distributionreinitialize_command run_commandrr build_librr-locationrr _providerZinstall_site_py setuptoolsZbootstrap_install_fromr Zinstall_namespacesrinfor*r+dry_runopenwriterZprocess_distributionno_deps)rZbpy_cmdZ build_pathZei_cmdfrrrris4            "zdevelop.install_for_developmentcCstjj|jrtjd|j|jt|j}dd|D}|j||j g|j |j gfkrtj d|dS|j stj |j|j s|j|j|jjrtj ddS)NzRemoving %s (link to %s)cSsg|]}|jqSr)r6).0linerrr s z*develop.uninstall_link..z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)r&r'existsr*rrFr+rHcloserrwarnrGunlinkZ update_pthr-r?scripts)rZ egg_link_filecontentsrrrrs     zdevelop.uninstall_linkc Cs||jk rtj||S|j|x|jjp>gD]k}tjjt |}tjj |}t j |}|j }WdQRX|j||||q?WdS)N)r-r install_egg_scriptsinstall_wrapper_scriptsr?rSr&r'r,rbasenameiorHreadZinstall_script)rr- script_nameZ script_pathstrm script_textrrrrUs zdevelop.install_egg_scriptscCst|}tj||S)N)VersionlessRequirementr rV)rr-rrrrVs zdevelop.install_wrapper_scripts)r rr)rNr)__name__ __module__ __qualname____doc__ descriptionr user_optionsboolean_optionsZcommand_consumes_argumentsrrr! staticmethodr.rrrUrVrrrrr s    * /  r c@s:eZdZdZddZddZddZdS) r]az Adapt a pkg_resources.Distribution to simply return the project name as the 'requirement' so that scripts will work across multiple versions. >>> 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' cCs ||_dS)N)_VersionlessRequirement__dist)rr-rrr__init__szVersionlessRequirement.__init__cCst|j|S)N)r>rf)rnamerrr __getattr__sz"VersionlessRequirement.__getattr__cCs|jS)N)r)rrrras_requirementsz%VersionlessRequirement.as_requirementN)r^r_r`rargrirjrrrrr]s   r])distutils.utilr distutilsrdistutils.errorsrrr&r%rXZsetuptools.externr pkg_resourcesrrr Zsetuptools.command.easy_installr rEr ZDevelopInstallerr objectr]rrrrs