JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrU Qab@sddlmZddlmZddlmZmZddlZddlZddl Z ddl m Z ddl Z ddl mZddlmZddlZeZGdd d ejeZGd d d ZdS) ) convert_path)log)DistutilsErrorDistutilsOptionErrorN)six) easy_install) namespacesc@sveZdZdZdZejddgZejdgZdZddZ d d Z d d Z e d dZ ddZddZddZddZdS)developzSet up package for developmentz%install package in 'development mode') uninstalluzUninstall this source package)z egg-path=Nz-Set the path to be used in the .egg-link filer FcCs2|jrd|_||n||dS)NT)r Z multi_versionuninstall_linkZuninstall_namespacesinstall_for_developmentZwarn_deprecated_optionsselfr>/usr/lib/python3.8/site-packages/setuptools/command/develop.pyrun s  z develop.runcCs&d|_d|_t|d|_d|_dS)N.)r egg_pathrinitialize_options setup_pathZalways_copy_fromrrrrr)s  zdevelop.initialize_optionscCs|d}|jr,d}|j|jf}t|||jg|_t||| |j t d|jd}t j|j||_|j|_|jdkrt j|j|_t|j}tt j|j|j}||krtd|tj|t|t j|j|jd|_||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 Z project_name)get_finalized_commandZbroken_egg_inforrZegg_nameargsrfinalize_optionsZexpand_basedirsZ expand_dirsZ package_indexscanglobospathjoin install_diregg_linkegg_baserabspath pkg_resourcesnormalize_pathrZ Distribution PathMetadatadist_resolve_setup_pathr)rZeitemplaterZ egg_link_fntargetrrrrr0sF        zdevelop.finalize_optionscCsn|tjdd}|tjkr0d|dd}ttj |||}|ttjkrjt 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) replacerseprstripcurdircountr%r&rr r)r#r!rZ path_to_setupZresolvedrrrr)Zs  zdevelop._resolve_setup_pathc CsHtjrt|jddr|jddd|d|d}t|j }|jd|d|d|jddd|d|d}||_ ||j _ t ||j|j _n"|d|jdd d|d|tjr|tjdt_|td |j|j|js0t|jd }||j d |jW5QRX|d|j |j dS) NZuse_2to3FZbuild_pyr)Zinplacer)r#Z build_extr-zCreating %s (link to %s)w )rZPY3getattr distributionZreinitialize_commandZ run_commandrr%r&Z build_librr(locationr'rZ _providerZinstall_site_py setuptoolsZbootstrap_install_fromrZinstall_namespacesrinfor"r#dry_runopenwriterZprocess_distributionZno_deps)rZbpy_cmdZ build_pathZei_cmdfrrrr ns:           zdevelop.install_for_developmentcCstj|jrztd|j|jt|j}dd|D}|||j g|j |j gfkrht d|dS|j szt |j|j s||j|jjrt ddS)NzRemoving %s (link to %s)cSsg|] }|qSr)r0).0linerrr sz*develop.uninstall_link..z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)rrexistsr"rr9r#r;closerrwarnr:unlinkZ update_pthr(r6scripts)rZ egg_link_filecontentsrrrr s      zdevelop.uninstall_linkc Cs||jk rt||S|||jjp*gD]N}tjt |}tj |}t |}| }W5QRX|||||q,dSN)r(rinstall_egg_scriptsinstall_wrapper_scriptsr6rErrr$rbasenameior;readZinstall_script)rr(Z script_nameZ script_pathZstrmZ script_textrrrrHs     zdevelop.install_egg_scriptscCst|}t||SrG)VersionlessRequirementrrIrr(rrrrIszdevelop.install_wrapper_scriptsN)__name__ __module__ __qualname____doc__ descriptionrZ user_optionsZboolean_optionsZcommand_consumes_argumentsrrr staticmethodr)r r rHrIrrrrr s"  * 0r c@s(eZdZdZddZddZddZdS) rMa 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' cCs ||_dSrG)_VersionlessRequirement__distrNrrr__init__szVersionlessRequirement.__init__cCs t|j|SrG)r5rU)rnamerrr __getattr__sz"VersionlessRequirement.__getattr__cCs|jSrGrrrrras_requirementsz%VersionlessRequirement.as_requirementN)rOrPrQrRrVrXrYrrrrrMsrM)Zdistutils.utilrZ distutilsrZdistutils.errorsrrrrrKZsetuptools.externrr%Zsetuptools.command.easy_installrr8rtypeZ __metaclass__ZDevelopInstallerr rMrrrrs     6