ž ą’Re_‚cn@sĖ dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z yddl m Z mZWn(ek rŽddlm Z mZYnXyeWn"ek r ddlmZYnXy$edd„ZddlmZWn:ek rleZdd lmZeed d „ZYnXdd lmZy&dd lmZm Z m!Z!e"Z#Wnek r½e$Z#YnXddlm%Z&ddl'm(Z(m)Z)ej*ddfkoej+j,dkrddl-j.Z/neZ/yddl0Z0Wnek rGYnXddd„Z1iZ2dd„Z3dd„Z4dd„Z5dd„Z6dd„Z7dd „Z8d!d"„Z9d#d„Z:Z;d$d%„Z<d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjgEZ=GdkdA„dAe>ƒZ?GdldB„dBe?ƒZ@GdmdC„dCe?ƒZAGdndD„dDe?ƒZBiZCejDdd…ZEdZFdoZGdpZHdZIdp ZJdqdf„ZKdrd(„ZLgdsdt„ZMdudv„ZNdwdx„ZOejPdyƒZQejPdzƒZReOZSd{dK„ZTd|d'„ZUeUZVd}d)„ZWd~d*„ZXedd+„ZYd€d,„ZZGddY„dYƒZ[Gd‚dZ„dZe[ƒZ\Gdƒd<„d<e]ƒZ^Gd„d;„d;e]ƒZ_e_Z`Gd…dE„dEeaƒZbGd†d=„d=ƒZcd‡d:„ZddˆdH„Zed‰dI„ZfdŠdN„Zgd‹dO„ZhidŒgd6dŽgd6dd‘d’gdŽ6gd“6gd”6gd•6Ziid–d„d—6d˜d„d™6dšd„d”6d›d„d“6dœd„d6džd„dŸ6d d„d’6Zjd”d¢„Zkd£d¤„Zld„d¦„Zmd§dP„ZneidØdQ„Zod©dŖ„Zpd«eqƒkr¬epZonGd¬d`„d`ƒZreKe]erƒGd­da„daerƒZsGd®db„dbesƒZteKeueƒetƒe/ek r*eKe/jvetƒnGdÆd^„d^erƒZwewƒZxd°d±„ZyGd²dc„dcesƒZzeKej{ezƒGd³d[„d[ewƒZ|Gd“d\„d\etƒZ}Gdµd]„d]ezƒZ~e3d¶d·iƒdødd„Ze$d¹d7„Z€e$dŗd»„Zeej{eƒe$d¼d½„Z‚ee]e‚ƒe$d¾dæ„Zƒee j„eƒƒe/ek raee/j…eƒƒne3d¶dĄiƒe3d¶dĮiƒdĀde„Z†dĆdĄZ‡dÅd4„ZˆedĘdg„Z‰dĒdȄZŠe†e j„eŠƒe†ej{eŠƒe/ek r’e†e/j…eŠƒndÉdŹ„Z‹e†e]e‹ƒdĖdS„ZŒidĢdĶ„ZdĪdĻ„ZŽdŠdL„ZejPdуjZ‘ejPdŅƒjZ’ejPdӃjZ“ejPdŌƒjZ”ejPdՃjZ•ejPdփjZ–ejPd׃jZ—ejPdŲƒjZ˜ejPdŁej™ejšBƒjZ›ejPdŚej™ƒZœidŪdÜ6dŪdŻ6dŽdß6dŪdą6dįdā6jZždćdä„ZŸdådG„Z Gdęd@„d@e]ƒZ”dēdč„Z¢Gdéd>„d>e]ƒZ£Gdźdė„dėe£ƒZ¤ie£dģ6e£dķ6e¤dī6Z„dļdš„Z¦dńdF„Z§dņdó„ZØGdōd?„d?ƒZ©idõdö6d÷dų6dłdś6dūdü6dżdž6d’d6ZŖdd„Z«dd„Z¬ddR„Z­ddM„Z®dd„ZÆecƒZ°d d „Z±e±eqƒƒe3d d5e^ƒƒydd l²m³Z³Wnek r¼ YnÆXye“jµe³ƒWnše@k rj e^gƒZ“x0e“j¶e§e³ƒe_ƒƒD]Z·e“jøe·ƒq Wx0ej¹D]%Zŗeŗe“j»krL e“j¼eŗƒnq' We“j»ej¹dd…(su(uStringIO(uBytesIOcCsY|dkrtƒ}n|dkr-|}nttt|ƒjƒ|dƒ||ƒdS(Nuexec(uNoneuglobalsuexecucompileuopenuread(ufnuglobsulocs((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuexecfile-s     uexecfile(uutime(umkdirurenameuunlink(uopen(uisdirusplitiucpythoni’cCs^tstdƒ‚nt|ƒ\}}|rZ|rZt|ƒ rZt|ƒt||ƒndS(Nu*"os.mkdir" not supported on this platform.(u WRITE_SUPPORTuIOErrorusplituisdiru_bypass_ensure_directoryumkdir(unameumodeudirnameufilename((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_bypass_ensure_directoryKs  u_bypass_ensure_directorycKs>tƒ}x.|jƒD] \}}|||<|t|wsc Cs‚tƒ}tj|ƒ}|dk r~tjdkr~y3ddjtƒdd…ƒ|jdƒf}Wq~t k rzYq~Xn|S(uZReturn this platform's maximum compatible version. distutils.util.get_platform() normally reports the minimum version of Mac OS X that would be required to *use* extensions produced by distutils. But what we want when checking compatibility is to know the version of Mac OS X that we are *running*. To allow usage of packages that explicitly require a newer version of Mac OS X, we must also know the current version of the OS. If this condition occurs for any other platform with a version in its platform strings, this function should be extended accordingly. udarwinu macosx-%s-%su.Nii( uget_build_platformumacosVersionStringumatchuNoneusysuplatformujoinu _macosx_versugroupu ValueError(uplatum((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_supported_platformzs 3 uget_supported_platformurequireu run_scriptu get_provideruget_distributionuload_entry_pointu get_entry_mapuget_entry_infouiter_entry_pointsuresource_stringuresource_streamuresource_filenameuresource_listdiruresource_existsuresource_isdirudeclare_namespaceu working_setuadd_activation_listenerufind_distributionsuset_extraction_pathucleanup_resourcesuget_default_cacheu Environmentu WorkingSetuResourceManageru Distributionu Requirementu EntryPointuResolutionErroruVersionConflictuDistributionNotFoundu UnknownExtrauExtractionErroruparse_requirementsu parse_versionu safe_nameu safe_versionu get_platformucompatible_platformsu yield_linesusplit_sectionsu safe_extrau to_filenameuinvalid_markeruevaluate_markeruensure_directoryunormalize_pathuEGG_DISTu BINARY_DISTu SOURCE_DISTu CHECKOUT_DISTu DEVELOP_DISTuIMetadataProvideruIResourceProvideru FileMetadatau PathMetadatau EggMetadatau EmptyProvideruempty_provideru NullProvideru EggProvideruDefaultProvideru ZipProvideruregister_finderuregister_namespace_handleruregister_loader_typeufixup_namespace_packagesu get_importerurun_mainuAvailableDistributionscBs&|EeZdZdZdd„ZdS(uResolutionErroru.Abstract base for dependency resolution errorscCs|jjt|jƒS(N(u __class__u__name__urepruargs(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__repr__¼suResolutionError.__repr__N(u__name__u __module__u __qualname__u__doc__u__repr__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuResolutionErrorŗscBs|EeZdZdZdS(uVersionConflictuAAn already-installed version conflicts with the requested versionN(u__name__u __module__u __qualname__u__doc__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuVersionConflictæscBs|EeZdZdZdS(uDistributionNotFoundu&A requested distribution was not foundN(u__name__u __module__u __qualname__u__doc__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuDistributionNotFoundĀscBs|EeZdZdZdS(u UnknownExtrau>Distribution doesn't have an "extra feature" of the given nameN(u__name__u __module__u __qualname__u__doc__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu UnknownExtraÅsiicCs|t|Is the named metadata a directory? (like ``os.path.isdir()``)N((uname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyumetadata_isdirusu IMetadataProvider.metadata_isdircCsdS(u?List of metadata names in the directory (like ``os.listdir()``)N((uname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyumetadata_listdirxsu"IMetadataProvider.metadata_listdircCsdS(u=Execute the named script in the supplied namespace dictionaryN((u script_nameu namespace((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu run_script{suIMetadataProvider.run_scriptN( u__name__u __module__u __qualname__u has_metadatau get_metadatauget_metadata_linesumetadata_isdirumetadata_listdiru run_script(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuIMetadataProvidergs      cBsb|EeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS(uIResourceProvideru3An object that provides access to package resourcescCsdS(udReturn a true filesystem path for `resource_name` `manager` must be an ``IResourceManager``N((umanageru resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_resource_filename‚su'IResourceProvider.get_resource_filenamecCsdS(uiReturn a readable file-like object for `resource_name` `manager` must be an ``IResourceManager``N((umanageru resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_resource_stream‡su%IResourceProvider.get_resource_streamcCsdS(umReturn a string containing the contents of `resource_name` `manager` must be an ``IResourceManager``N((umanageru resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_resource_stringŒsu%IResourceProvider.get_resource_stringcCsdS(u,Does the package contain the named resource?N((u resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu has_resource‘suIResourceProvider.has_resourcecCsdS(u>Is the named resource a directory? (like ``os.path.isdir()``)N((u resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuresource_isdir”su IResourceProvider.resource_isdircCsdS(u?List of resource names in the directory (like ``os.listdir()``)N((u resource_name((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuresource_listdir—su"IResourceProvider.resource_listdirN( u__name__u __module__u __qualname__u__doc__uget_resource_filenameuget_resource_streamuget_resource_stringu has_resourceuresource_isdiruresource_listdir(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuIResourceProviders     cBsé|EeZdZdZd dd„Zdd„Zdd„Zdd „Zd d d „Z d d „Z dd„Z d d!dd„Z d d dd„Zd d d!dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd S("u WorkingSetuDA collection of active distributions on sys.path (or a similar list)cCs^g|_i|_i|_g|_|dkr<tj}nx|D]}|j|ƒqCWdS(u?Create working set from list of path entries (default=sys.path)N(uentriesu entry_keysuby_keyu callbacksuNoneusysupathu add_entry(uselfuentriesuentry((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__žs       uWorkingSet.__init__cCsT|jj|gƒ|jj|ƒx*t|dƒD]}|j||dƒq3WdS(uŻAdd a path item to ``.entries``, finding any distributions on it ``find_distributions(entry, True)`` is used to find distributions corresponding to the path entry, and they are added. `entry` is always appended to ``.entries``, even if it is already present. (This is because ``sys.path`` can contain the same value more than once, and the ``.entries`` of the ``sys.path`` WorkingSet should always equal ``sys.path``.) NTF(u entry_keysu setdefaultuentriesuappendufind_distributionsuTrueuadduFalse(uselfuentryudist((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu add_entry«s uWorkingSet.add_entrycCs|jj|jƒ|kS(u9True if `dist` is the active distribution for its project(uby_keyugetukey(uselfudist((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu __contains__ŗsuWorkingSet.__contains__cCsG|jj|jƒ}|dk r?||kr?t||ƒ‚n|SdS(uŠFind a distribution matching requirement `req` If there is an active distribution for the requested project, this returns it as long as it meets the version requirement specified by `req`. But, if there is an active distribution for the project and it does *not* meet the `req` requirement, ``VersionConflict`` is raised. If there is no active distribution for the requested project, ``None`` is returned. N(uby_keyugetukeyuNoneuVersionConflict(uselfurequdist((u&/tmp/pip-k8wh6o-build/pkg_resources.pyufind¾s uWorkingSet.findccsgx`|D]X}|j|ƒ}|dkrGx4|jƒD] }|Vq5Wq||kr||VqqWdS(uYield entry point objects from `group` matching `name` If `name` is None, yields all entry points in `group` from all distributions in the working set, otherwise only ones matching both `group` and `name` are yielded (in distribution order). N(u get_entry_mapuNoneuvalues(uselfugroupunameudistuentriesuep((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuiter_entry_pointsĪs    uWorkingSet.iter_entry_pointscCsQtjdƒj}|d}|jƒ||d<|j|ƒdj||ƒdS(u?Locate distribution for `requires` and run `script_name` scriptiu__name__iN(usysu _getframeu f_globalsuclearurequireu run_script(uselfurequiresu script_nameunsuname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu run_scriptŻs    uWorkingSet.run_scriptccspi}xc|jD]X}||jkr+qnx:|j|D]+}||kr9d||<|j|Vq9q9WqWdS(uøYield distributions for non-duplicate projects in the working set The yield order is the order in which the items' path entries were added to the working set. iN(uentriesu entry_keysuby_key(uselfuseenuitemukey((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__iter__ås  uWorkingSet.__iter__cCsÜ|r|j|j|ƒn|dkr4|j}n|jj|gƒ}|jj|jgƒ}|j|jkrwdS||j|j<|j|kr©|j|jƒn|j|krĖ|j|jƒn|j |ƒdS(ułAdd `dist` to working set, associated with `entry` If `entry` is unspecified, it defaults to the ``.location`` of `dist`. On exit from this routine, `entry` is added to the end of the working set's ``.entries`` (if it wasn't already present). `dist` is only added to the working set if it's for a project that doesn't already have a distribution in the set. If it's added, any callbacks registered with the ``subscribe()`` method will be called. N( u insert_onuentriesuNoneulocationu entry_keysu setdefaultukeyuby_keyuappendu _added_new(uselfudistuentryuinsertukeysukeys2((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuaddös   uWorkingSet.addc CsVt|ƒddd…}i}i}g}x$|rQ|jdƒ}||krUq.n|j|jƒ}|dkr|jj|jƒ}|dkrš|dkr²t|jƒ}n|j|||ƒ}||j<|dkršt |ƒ‚qšn|j |ƒn||krt ||ƒ‚n|j |j |jƒddd…ƒd||gSYnX||jkrw|j|}|j|Ysuos_namecCstjS(N(usysuplatform(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuZsu sys_platformcCstjjƒdS(Ni(usysuversionusplit(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu[scCsdtjdtjdfS(Nu%s.%sii(usysu version_info(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu\scCs tdƒS(Nuversion(u _platinfo(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu]suplatform_versioncCs tdƒS(Numachine(u _platinfo(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu^suplatform_machinecCstdƒptƒS(Nupython_implementation(u _platinfou_pyimp(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_sc CsByddl}Wntk r(dSYnXt||dd„ƒƒS(NiucSsdS(Nu((((u&/tmp/pip-k8wh6o-build/pkg_resources.pyugsu_platinfo..(uplatformu ImportErrorugetattr(uattruplatform((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _platinfobs   u _platinfocCsDtjdkrdStjjdƒr)dSdtjkr<dSdSdS(Nucliu IronPythonujavauJythonu__pypy__uPyPyuCPython(usysuplatformu startswithubuiltin_module_names(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_pyimpisu_pyimpcCsEidd6dd6}d|_d|_|j|j|jƒ|_|S(uŁ Given a SyntaxError from a marker evaluation, normalize the error message: - Remove indications of filename and line number. - Replace platform-specific error messages with standard error messages. uinvalid syntaxuunexpected EOF while parsinguparenthesis is never closedN(uNoneufilenameulinenougetumsg(uexcusubs((u&/tmp/pip-k8wh6o-build/pkg_resources.pyunormalize_exceptionss   unormalize_exceptionc Cs;yt|ƒWn&tk r6ttjƒdƒSYnXdS(uHValidate text as a PEP 426 environment marker; return exception or FalseiF(uevaluate_markeru SyntaxErrorunormalize_exceptionusysuexc_infouFalse(utext((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuinvalid_markerƒs  csfˆsddlm‰m‰ddl‰ddl‰ddl‰‡‡fdd†}‡‡fdd†}‡‡fdd †}‡‡‡fd d †}ˆji|ˆj6|ˆj6|ˆj6|ˆj 6d d „d6dd „d6ˆj d6ˆj d6ƒt ˆdƒr|ˆˆj Ÿs u5evaluate_marker..and_test..ii(u functoolsureduceuand_urangeulen(unodelist(u interpretuoperator(unodelistu&/tmp/pip-k8wh6o-build/pkg_resources.pyuand_testsu!evaluate_marker..and_testcs;tjˆj‡‡fdd†tdtˆƒdƒDƒƒS(Ncs g|]}ˆˆ|ƒ‘qS(((u.0ui(u interpretunodelist(u&/tmp/pip-k8wh6o-build/pkg_resources.pyu £s u1evaluate_marker..test..ii(u functoolsureduceuor_urangeulen(unodelist(u interpretuoperator(unodelistu&/tmp/pip-k8wh6o-build/pkg_resources.pyutest”suevaluate_marker..testcsa|dd}|ˆjkrQ|ddˆjkrCtdƒ‚nˆ|dƒStdƒ‚dS(NiiiuEmpty parenthesesu5Language feature not supported in environment markers(uLPARuRPARu SyntaxError(unodelistut(u interpretutoken(u&/tmp/pip-k8wh6o-build/pkg_resources.pyuatom„s uevaluate_marker..atomc sŚt|ƒdkr!tdƒ‚n|dd}|d}|dˆkr€t|dƒdkr€|dkrtd}q}d }q€nyˆ|}Wn(tk røtt|ƒd ƒ‚YnX|ˆ|dƒˆ|dƒƒS( Niu5Chained comparison not allowed in environment markersiiiiunotunot inuis notu, operator not allowed in environment markers(ulenu SyntaxErroruKeyErrorurepr(unodelistucompucop(uNAMEu_opsuevaluate(u&/tmp/pip-k8wh6o-build/pkg_resources.pyu comparison­s     u#evaluate_marker..comparisoncSs ||kS(N((uxuy((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuĄsu!evaluate_marker..unot incSs ||kS(N((uxuy((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuĮsuinu==u!=uor_testc s{x t|ƒdkr"|d}qWyˆ|d}Wn9tk rptdƒ‚tdˆj|dƒ‚YnX||ƒS(Niiiu)Comparison or logical expression expectedu7Language feature not supported in environment markers: (ulenuKeyErroru SyntaxErrorusym_name(unodelistuop(u_opsusymbol(u&/tmp/pip-k8wh6o-build/pkg_resources.pyu interpretĘs   u"evaluate_marker..interpretcsx t|ƒdkr"|d}qW|d}|d}|ˆkr}yt|}Wn"tk rutd|ƒ‚YnX|ƒS|ˆkrš|d}|dd…dksÓ|jdƒsÓ|jdƒsÓd|krātd ƒ‚n|dd …Std ƒ‚dS( NiiiuUnknown name %ru'"u"""u'''u\u1Only plain strings allowed in environment markersu5Language feature not supported in environment markersi’’’’(ulenu_marker_valuesuKeyErroru SyntaxErroru startswith(unodelistukindunameuopus(uNAMEuSTRING(u&/tmp/pip-k8wh6o-build/pkg_resources.pyuevaluateĻs$      4  u!evaluate_marker..evaluatei(utokenuNAMEuSTRINGusymboluoperatoruupdateutestuand_testuatomu comparisonuequneuhasattruor_testuparseruexprutotuple(utextuextrau_opsuand_testutestuatomu comparison((uNAMEuSTRINGu_opsuevaluateu interpretuoperatorusymbolutokenu&/tmp/pip-k8wh6o-build/pkg_resources.pyuevaluate_marker‹s$     % c Cs¦ddl}|jƒ}x9|jƒD]+}|jddƒ}|j|ƒ||˜suEmptyProvider.cCsdS(Nu((uselfupath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu™scCsgS(N((uselfupath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyušscCsdS(N((uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__suEmptyProvider.__init__N( u__name__u __module__u __qualname__u__doc__u_isdiru_hasu_getu_listdiruNoneu module_pathu__init__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu EmptyProvider•s   c Csƒtƒ}tj|ƒ}zYxR|jƒD]D}|jdtjƒ}|j|ƒ||<||dk s(t ‚q(WWd|j ƒX|S(uf This builds a similar dictionary to the zipimport directory caches. However instead of tuples, ZipInfo objects are stored. The translation of the tuple is as follows: * [0] - zipinfo.filename on stock pythons this needs "/" --> os.sep on pypy it is the same (one reason why distribute did work in some cases on pypy and win32). * [1] - zipinfo.compress_type * [2] - zipinfo.compress_size * [3] - zipinfo.file_size * [4] - len(utf-8 encoding of filename) if zipinfo & 0x800 len(ascii encoding of filename) otherwise * [5] - (zipinfo.date_time[0] - 1980) << 9 | zipinfo.date_time[1] << 5 | zipinfo.date_time[2] * [6] - (zipinfo.date_time[3] - 1980) << 11 | zipinfo.date_time[4] << 5 | (zipinfo.date_time[5] // 2) * [7] - zipinfo.CRC u/N( udictuzipfileuZipFileunamelistureplaceuosusepugetinfouNoneuAssertionErroruclose(upathuzipinfouzfileuzitemuzpath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyubuild_zipmanifest£s  ubuild_zipmanifestcBsĪ|EeZdZdZdZdd„Zdd„Zdd„Zdd „Z e d d „ƒZ d d „Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS(u ZipProvideru"Resource support for zips and eggscCs?tj||ƒt|jjƒ|_|jjtj|_dS(N( u EggProvideru__init__ubuild_zipmanifestuloaderuarchiveuzipinfouosusepuzip_pre(uselfumodule((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__ÉsuZipProvider.__init__cCsF|j|jƒr)|t|jƒd…Std||jfƒ‚dS(Nu%s is not a subpath of %s(u startswithuzip_preulenuAssertionError(uselfufspath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _zipinfo_nameĪsuZipProvider._zipinfo_namecCsj|j|}|j|jtjƒrM|t|jƒdd…jtjƒStd||jfƒ‚dS(Niu%s is not a subpath of %s(uzip_preu startswithuegg_rootuosusepulenusplituAssertionError(uselfuzip_pathufspath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_parts×s  'uZipProvider._partscCsŽ|jstdƒ‚n|j|ƒ}|jƒ}dj|j|ƒƒ|kr~x*|D]}|j||j|ƒƒqXWn|j||ƒS(Nu5resource_filename() only supported for .egg, not .zipu/(uegg_nameuNotImplementedErroru_resource_to_zipu_get_eager_resourcesujoinu_partsu_extract_resourceu _eager_to_zip(uselfumanageru resource_nameuzip_pathueagersuname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_resource_filenameąs     u!ZipProvider.get_resource_filenamecCs/|j}|jd}tj|ƒ}||fS(Niii’’’’(iii’’’’(u file_sizeu date_timeutimeumktime(uzip_statusizeu date_timeu timestamp((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_get_date_and_sizeķs  uZipProvider._get_date_and_sizec CsŽ||jƒkr^x9|jƒ|D]'}|j|tjj||ƒƒ}q#Wtjj|ƒS|j|j|ƒ\}}tst dƒ‚ny)|j |j |j |ƒƒ}|j ||ƒrĘ|Stddtjj|ƒƒ\}} tj||jj|ƒƒtj|ƒt| ||fƒ|j| |ƒyt| |ƒWnmtjk r¶tjj|ƒrÆ|j ||ƒr‚|StjdkrÆt|ƒt| |ƒ|Sn‚YnXWntjk rŁ|jƒYnX|S(Nu>"os.rename" and "os.unlink" are not supported on this platformu .$extractudirunt(u_indexu_extract_resourceuosupathujoinudirnameu_get_date_and_sizeuzipinfou WRITE_SUPPORTuIOErroruget_cache_pathuegg_nameu_partsu _is_currentu_mkstempuwriteuloaderuget_dataucloseuutimeu postprocessurenameuerroruisfileunameuunlinkuextraction_error( uselfumanageruzip_pathunameulastu timestampusizeu real_pathuoutfutmpnam((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_extract_resourceõs@$    uZipProvider._extract_resourcec Cs¤|j|j|ƒ\}}tjj|ƒs2dStj|ƒ}|j|ks_|j|krcdS|j j |ƒ}t |dƒ}|j ƒ}|j ƒ||kS(uK Return True if the file_path is current for this zip_path urbF(u_get_date_and_sizeuzipinfouosupathuisfileuFalseustatust_sizeust_mtimeuloaderuget_datauopenureaduclose( uselfu file_pathuzip_pathu timestampusizeustatu zip_contentsufu file_contents((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _is_current&s  uZipProvider._is_currentcCsa|jdkrZg}x6dD].}|j|ƒr|j|j|ƒƒqqW||_n|jS(Nunative_libs.txtueager_resources.txt(unative_libs.txtueager_resources.txt(ueagersuNoneu has_metadatauextenduget_metadata_lines(uselfueagersuname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_get_eager_resources7s  u ZipProvider._get_eager_resourcesc Cs¾y |jSWn¬tk r¹i}x„|jD]y}|jtjƒ}x^|r£tjj|dd…ƒ}||kr||j|dƒPqF|jƒg||=?|==|!=)\s*((\w|[-.])+)u\s*,u\s*\[u\s*\]u \w+(\.\w+)*$uL(?P[^-]+)( -(?P[^-]+) (-py(?P[^-]+) (-(?P.+))? )? )?u(\d+ | [a-z]+ | \.| -)ucupreupreviewufinal-u-urcu@udevccs{xotj|ƒD]^}t||ƒ}| s|dkr>qn|dd…dkre|jdƒVqd|VqWdVdS(Nu.iu 0123456789iu*u*final(u component_reusplitureplaceuzfill(usupart((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_parse_version_parts›s u_parse_version_partscCs©g}x–t|jƒƒD]‚}|jdƒrŽ|dkrdx'|r`|ddkr`|jƒq=Wnx'|rŠ|ddkrŠ|jƒqgWn|j|ƒqWt|ƒS(u¼Convert a version string to a chronologically-sortable key This is a rough cross between distutils' StrictVersion and LooseVersion; if you give it versions that would work with StrictVersion, then it behaves the same; otherwise it acts like a slightly-smarter LooseVersion. It is *possible* to create pathological version coding schemes that will fool this parser, but they should be very rare in practice. The returned value will be a tuple of strings. Numeric portions of the version are padded to 8 digits so they will compare numerically, but without relying on how numbers compare relative to strings. Dots are dropped, but dashes are retained. Trailing zeros between alpha segments or dashes are suppressed, so that e.g. "2.4.0" is considered the same as "2.4". Alphanumeric parts are lower-cased. The algorithm assumes that strings like "-" and any alpha string that alphabetically follows "final" represents a "patch level". So, "2.4-1" is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is considered newer than "2.4-1", which in turn is newer than "2.4". Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that come before "final" alphabetically) are assumed to be pre-release versions, so that the version "2.4" is considered newer than "2.4a1". Finally, to handle miscellaneous cases, the strings "pre", "preview", and "rc" are treated as if they were "c", i.e. as though they were release candidates, and therefore are not as new as a version string that does not contain them, and "dev" is replaced with an '@' so that it sorts lower than than any other pre-release tag. u*u*finaliu*final-u00000000i’’’’i’’’’(u_parse_version_partsuloweru startswithupopuappendutuple(usupartsupart((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu parse_version§s cBsæ|EeZdZdZffddd„Zdd„Zdd„Zddddd „Z ddd d „Z dd d „Z e e ƒZ ddd„Z e e ƒZ ddd„Ze eƒZdS(u EntryPointu3Object representing an advertised importable objectcCsnt|ƒstd|ƒ‚n||_||_t|ƒ|_tjddj|ƒƒj |_ ||_ dS(NuInvalid module nameux[%s]u,( uMODULEu ValueErrorunameu module_nameutupleuattrsu Requirementuparseujoinuextrasudist(uselfunameu module_nameuattrsuextrasudist((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__Ós   "uEntryPoint.__init__cCsfd|j|jf}|jr<|ddj|jƒ7}n|jrb|ddj|jƒ7}n|S(Nu%s = %su:u.u [%s]u,(unameu module_nameuattrsujoinuextras(uselfus((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__str__Üs   uEntryPoint.__str__cCsdt|ƒS(NuEntryPoint.parse(%r)(ustr(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__repr__äsuEntryPoint.__repr__c Cs|r|j||ƒnt|jtƒtƒdgƒ}xO|jD]D}yt||ƒ}WqDtk r‡td||fƒ‚YqDXqDW|S(Nu__name__u%r has no %r attribute(urequireu __import__u module_nameuglobalsuattrsugetattruAttributeErroru ImportError(uselfurequireuenvu installeruentryuattr((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuloadēs! uEntryPoint.loadcCs]|jr%|j r%td|ƒ‚ntttjtj|jj|jƒ||ƒƒƒdS(Nu&Can't require() without a distribution( uextrasudistu UnknownExtraulistumapu working_setuadduresolveurequires(uselfuenvu installer((u&/tmp/pip-k8wh6o-build/pkg_resources.pyurequireńs uEntryPoint.requirecCsyŅf}}|jddƒ\}}d|krz|jddƒ\}}tjd|ƒ}|jrnt‚n|j}nd|krŃ|jddƒ\}}t|jƒƒs¹t‚n|jƒjdƒ}nWn!tk rõtd|ƒ‚Yn#X||jƒ|jƒ|||ƒSdS( uParse a single entry point from string `src` Entry point syntax follows the form:: name = some.module:some.attr [extra1,extra2] The entry name and module name are required, but the ``:attrs`` and ``[extras]`` parts are optional u=iu[ux[u:u.u9EntryPoint must be in 'name=module:attrs [extras]' formatN( usplitu Requirementuparseuspecsu ValueErroruextrasuMODULEurstripustrip(uclsusrcudistuattrsuextrasunameuvalueureq((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuparseųs&        uEntryPoint.parsecCs…t|ƒstd|ƒ‚ni}xZt|ƒD]L}|j||ƒ}|j|krptd||jƒ‚n|||js  u_remove_md5_fragmentc Bs|EeZdZdZdZdAdAdAdAedAedd„ZdAdd„Z e e ƒZ e dd„ƒZ d d „Z d d „Zd d„Zdd„Zdd„Zdd„Zdd„Zdd„Ze eƒZdd„Ze eƒZdd„Ze eƒZdd„Ze eƒZfdd „Zd!d"„ZdAd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„ZdAd-d.„Ze eƒZd/d0„Z d1d2„Z!dAd3d4„Z"d5d6„Z#dAd7d8„Z$d9d:„Z%d;d<„Z&d=d>„Z'd?d@„Z(e e(ƒZ(dAS(Bu Distributionu5Wrap an actual or potential sys.path entry w/metadatauPKG-INFOcCsjt|p dƒ|_|dk r3t|ƒ|_n||_||_||_||_|p`t |_ dS(NuUnknown( u safe_nameu project_nameuNoneu safe_versionu_versionu py_versionuplatformulocationu precedenceuempty_provideru _provider(uselfulocationumetadatau project_nameuversionu py_versionuplatformu precedence((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__Ks     uDistribution.__init__c Ks·dgd\}}}}tjj|ƒ\}} | jƒtkrt|ƒ} | r|| jddddƒ\}}}}nt| jƒ}n|||d|d|d|d ||S( Niunameuverupyveruplatu project_nameuversionu py_versionuplatform(uNoneuosupathusplitextuloweru_distributionImpluEGG_NAMEugroup( uclsulocationubasenameumetadataukwu project_nameuversionu py_versionuplatformuextumatch((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu from_locationXs !uDistribution.from_locationcCs7t|dfƒ|j|jt|jƒ|j|jfS(Nuparsed_version(ugetattru precedenceukeyu_remove_md5_fragmentulocationu py_versionuplatform(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyujs  uDistribution.cCs t|jƒS(N(uhashuhashcmp(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__hash__ssuDistribution.__hash__cCs|j|jkS(N(uhashcmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__lt__tsuDistribution.__lt__cCs|j|jkS(N(uhashcmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__le__vsuDistribution.__le__cCs|j|jkS(N(uhashcmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__gt__xsuDistribution.__gt__cCs|j|jkS(N(uhashcmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__ge__zsuDistribution.__ge__cCs&t||jƒsdS|j|jkS(NF(u isinstanceu __class__uFalseuhashcmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__eq__|suDistribution.__eq__cCs ||k S(N((uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__ne__suDistribution.__ne__c Cs>y |jSWn,tk r9|jjƒ|_}|SYnXdS(N(u_keyuAttributeErroru project_nameulower(uselfukey((u&/tmp/pip-k8wh6o-build/pkg_resources.pyukey‰s   uDistribution.keyc Cs>y |jSWn,tk r9t|jƒ|_}|SYnXdS(N(u_parsed_versionuAttributeErroru parse_versionuversion(uselfupv((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuparsed_version’s   uDistribution.parsed_versionc Cs˜y |jSWn†tk r“xq|j|jƒD]G}|jƒjdƒr.t|jddƒdjƒƒ|_|jSq.Wt d|j|ƒ‚YnXdS(Nuversion:u:iu(Missing 'Version:' header and/or %s file( u_versionuAttributeErroru _get_metadatauPKG_INFOuloweru startswithu safe_versionusplitustripu ValueError(uselfuline((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuversionœs  % uDistribution.versionc Csžy |jSWnģtk rłigd6}|_xædD]·}x®t|j|ƒƒD]—\}}|rŹd|krµ|jddƒ\}}t|ƒrg}qµt|ƒsµg}qµnt|ƒpÄd}n|j |gƒj t |ƒƒqRWq6W|SYnXdS(Nu requires.txtu depends.txtu:i(u requires.txtu depends.txt( u_Distribution__dep_mapuAttributeErroruNoneusplit_sectionsu _get_metadatausplituinvalid_markeruevaluate_markeru safe_extrau setdefaultuextenduparse_requirements(uselfudmunameuextraureqsumarker((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_dep_map«s    "     'uDistribution._dep_mapc Csƒ|j}g}|j|jdfƒƒxT|D]L}y|j|t|ƒƒWq/tk rztd||fƒ‚Yq/Xq/W|S(u@List of Requirements needed for this distro if `extras` are usedu%s has no such extra feature %rN(u_dep_mapuextendugetuNoneu safe_extrauKeyErroru UnknownExtra(uselfuextrasudmudepsuext((u&/tmp/pip-k8wh6o-build/pkg_resources.pyurequires¾s   uDistribution.requiresccs5|j|ƒr1x|j|ƒD] }|VqWndS(N(u has_metadatauget_metadata_lines(uselfunameuline((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _get_metadataĢsuDistribution._get_metadatacCsd|dkrtj}n|j|ƒ|tjkr`t|jƒttt|j dƒƒƒndS(u>Ensure distribution is importable on `path` (default=sys.path)unamespace_packages.txtN( uNoneusysupathu insert_onufixup_namespace_packagesulocationulistumapudeclare_namespaceu _get_metadata(uselfupath((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuactivateŃs    uDistribution.activatecCsOdt|jƒt|jƒ|jp'tf}|jrK|d|j7}n|S(u@Return what this distribution's standard .egg filename should beu %s-%s-py%su-(u to_filenameu project_nameuversionu py_versionuPY_MAJORuplatform(uselfufilename((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuegg_nameŁs  uDistribution.egg_namecCs(|jrd||jfSt|ƒSdS(Nu%s (%s)(ulocationustr(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__repr__äs uDistribution.__repr__c CsNyt|ddƒ}Wntk r0d}YnX|p:d}d|j|fS(Nuversionu[unknown version]u%s %s(ugetattruNoneu ValueErroru project_name(uselfuversion((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__str__źs   uDistribution.__str__cCs.|jdƒrt|ƒ‚nt|j|ƒS(uADelegate all unrecognized public attributes to .metadata provideru_(u startswithuAttributeErrorugetattru _provider(uselfuattr((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu __getattr__šsuDistribution.__getattr__cKs(|jt|ƒtjj|ƒ||S(N(u from_locationu_normalize_cacheduosupathubasename(uclsufilenameumetadataukw((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu from_filename÷suDistribution.from_filenamecCstjd|j|jfƒS(u?Return a ``Requirement`` that matches this distribution exactlyu%s==%s(u Requirementuparseu project_nameuversion(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuas_requirementžsuDistribution.as_requirementcCsD|j||ƒ}|dkr:td||ffƒ‚n|jƒS(u=Return the `name` entry point of `group` or raise ImportErroruEntry point %r not foundN(uget_entry_infouNoneu ImportErroruload(uselfugroupunameuep((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuload_entry_point s uDistribution.load_entry_pointc Csdy |j}Wn4tk rCtj|jdƒ|ƒ}|_YnX|dk r`|j|iƒS|S(u=Return the entry point map for `group`, or the full entry mapuentry_points.txtN(u_ep_mapuAttributeErroru EntryPointu parse_mapu _get_metadatauNoneuget(uselfugroupuep_map((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu get_entry_map s  ! uDistribution.get_entry_mapcCs|j|ƒj|ƒS(u<Return the EntryPoint object for `group`+`name`, or ``None``(u get_entry_mapuget(uselfugroupuname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuget_entry_info suDistribution.get_entry_infoc CsM|p |j}|sdSt|ƒ}tjj|ƒ}dd„|Dƒ}x²t|ƒD]w\}}||krsPqW||krW|jtkrW|tjkrŖ|j ƒn|j ||ƒ|j ||ƒPqWqWW|tjkrī|j ƒn|j |ƒdSxGy|j ||dƒ}Wnt k r1PYqX||=||=|}qdS(u@Insert self.location in path before its nearest parent directoryNcSs(g|]}|rt|ƒp!|‘qS((u_normalize_cached(u.0up((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu " s u*Distribution.insert_on..i(ulocationu_normalize_cacheduosupathudirnameu enumerateu precedenceuEGG_DISTusysucheck_version_conflictuinsertuappenduindexu ValueError( uselfupathulocunlocubdirunpathupuitemunp((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu insert_on s6       uDistribution.insert_onc Csż|jdkrdStj|jdƒƒ}t|jƒ}x¼|jdƒD]«}|tjksJ||ksJ|tkr}qJn|dkrqJnt tj|ddƒ}|rŪt|ƒj |ƒsJ|j |jƒrŪqJnt d|||jfƒqJWdS( Nu setuptoolsunamespace_packages.txtu top_level.txtu pkg_resourcesusiteu__file__uIModule %s was already imported from %s, but %s is being added to sys.path(u pkg_resourcesu setuptoolsusite( ukeyudictufromkeysu _get_metadataunormalize_pathulocationusysumodulesu_namespace_packagesugetattruNoneu startswithu issue_warning(uselfunspulocumodnameufn((u&/tmp/pip-k8wh6o-build/pkg_resources.pyucheck_version_conflict@ s"  u#Distribution.check_version_conflictc Cs<y |jWn*tk r7tdt|ƒƒdSYnXdS(NuUnbuilt egg for FT(uversionu ValueErroru issue_warningurepruFalseuTrue(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu has_versionU s    uDistribution.has_versioncKsMx*dD]"}|j|t||d ƒƒqW|jd|jƒ|j|S( u@Copy this distribution, substituting in any changed keyword argsu project_nameuversionu py_versionuplatformulocationu precedenceumetadata(u project_nameuversionu py_versionuplatformulocationu precedenceN(u setdefaultugetattruNoneu _provideru __class__(uselfukwuattr((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuclone] s   uDistribution.clonecCsdd„|jDƒS(NcSsg|]}|r|‘qS(((u.0udep((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu i s u'Distribution.extras..(u_dep_map(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuextrash suDistribution.extrasN()u__name__u __module__u __qualname__u__doc__uPKG_INFOuNoneuPY_MAJORuEGG_DISTu__init__u from_locationu classmethodupropertyuhashcmpu__hash__u__lt__u__le__u__gt__u__ge__u__eq__u__ne__ukeyuparsed_versionuversionu_dep_mapurequiresu _get_metadatauactivateuegg_nameu__repr__u__str__u __getattr__u from_filenameuas_requirementuload_entry_pointu get_entry_mapuget_entry_infou insert_onucheck_version_conflictu has_versionucloneuextras(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu DistributionGsV                          '   cBsk|EeZdZdZdZejdƒZedd„ƒZ edd„ƒZ dd „Z d d „Z d S( uDistInfoDistributionuGWrap an actual or potential sys.path entry w/metadata, .dist-info styleuMETADATAu([\(,])\s*(\d.*?)\s*([,\)])c Cs\y |jSWnJtk rWddlm}|ƒj|j|jƒƒ|_|jSYnXdS(uParse and cache metadatai(uParserN(u _pkg_infouAttributeErroru email.parseruParseruparsestru get_metadatauPKG_INFO(uselfuParser((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_parsed_pkg_infor s   !u%DistInfoDistribution._parsed_pkg_infoc Cs:y |jSWn(tk r5|jƒ|_|jSYnXdS(N(u_DistInfoDistribution__dep_mapuAttributeErroru_compute_dependencies(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_dep_map| s   uDistInfoDistribution._dep_mapcCsy|jddƒdg}|djƒ}|djƒ}tj|jd|ƒ}|jddƒjddƒ}||fS(uÆConvert 'Foobar (1); baz' to ('Foobar ==1', 'baz') Split environment marker, add == prefix to version specifiers as necessary, and remove parenthesis. u;iuiu\1==\2\3u(u)(usplitustripureusubuEQEQureplace(uselfu requires_distupartsudistversumark((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_preparse_requirement„ s u*DistInfoDistribution._preparse_requirementc sddlm}igd6}|_g‰xc|jjdƒpBgD]I}|j|ƒ\}}tt|ƒƒ}||ƒ|_ ˆj |ƒqCW‡fdd†}t |dƒƒ}|dj |ƒxR|jjdƒpŻgD]8} t | jƒƒ} tt || ƒƒ|ƒ|| .reqs_for_extrauProvides-ExtraN(u _markerlibucompileuNoneu_DistInfoDistribution__dep_mapu_parsed_pkg_infouget_allu_preparse_requirementunextuparse_requirementsu marker_fnuappendu frozensetuextendu safe_extraustripulist( uselfucompile_markerudmurequdistversumarkuparsedureqs_for_extraucommonuextra((ureqsu&/tmp/pip-k8wh6o-build/pkg_resources.pyu_compute_dependencies s$u*DistInfoDistribution._compute_dependenciesN( u__name__u __module__u __qualname__u__doc__uPKG_INFOureucompileuEQEQupropertyu_parsed_pkg_infou_dep_mapu_preparse_requirementu_compute_dependencies(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuDistInfoDistributionm s  uDistInfoDistributionu.eggu .egg-infou .dist-infoc Os|d}tƒ}y-x&tj|ƒj|kr:|d7}qWWntk rPYnXddlm}|d|d||ŽdS(Nii(uwarnu stacklevel(uglobalsusysu _getframeu f_globalsu ValueErroruwarningsuwarn(uargsukwuleveluguwarn((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu issue_warning³ s  u issue_warningc#stt|ƒƒ‰‡fdd†}xćˆD]Ū}t|ƒ}|sUtd|ƒ‚n|jdƒ}|jƒ}g}t||ƒ}|r¾|jƒ}|tt||d dƒ\}}}n|tt ||d dƒ\}}}dd „|Dƒ}t |||ƒVq+Wd S( u£Yield ``Requirement`` objects for each specification in `strs` `strs` must be an instance of ``basestring``, or a (possibly-nested) iterable thereof. csLg}x|||ƒst||ƒraytˆƒ}d}Wqatk r]tdƒ‚YqaXn|||ƒ}|s td|d|d||d…ƒ‚n|j|j|Œƒ|jƒ}t||ƒ}|rę|jƒ}q |||ƒs td|d||d…ƒ‚q q W|||ƒ}|r?|jƒ}n|||fS(Niu+\ must not appear on the last nonblank lineu Expected u inuatuExpected ',' or end-of-list in(uCONTINUEunextu StopIterationu ValueErroruappendugroupuenduCOMMA(uITEMu TERMINATORulineupugroupsu item_nameuitemsumatch(ulines(u&/tmp/pip-k8wh6o-build/pkg_resources.pyu scan_listŹ s0   * #u%parse_requirements..scan_listuMissing distribution speciu 'extra' nameiu version speccSs(g|]\}}|t|ƒf‘qS((u safe_version(u.0uopuval((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu ū s u&parse_requirements..N(i(ii( uiteru yield_linesuDISTROu ValueErrorugroupuenduOBRACKETuCBRACKETuVERSIONuLINE_ENDu Requirement(ustrsu scan_listulineumatchu project_nameupuextrasuspecs((ulinesu&/tmp/pip-k8wh6o-build/pkg_resources.pyuparse_requirementsĮ s"!    $$cCsAdd„|Dƒ}|jƒdd„|Dƒ|ddd… s u_sort_dists..cSsg|]\}}|‘qS(((u.0uhcud((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu  s ii’’’’(usort(udistsutmp((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _sort_dists’ s u _sort_distscBst|EeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e e ƒZ dS(u RequirementcCsĖ|t|ƒ|_}||jƒ|_|_dd„|Dƒ}|jƒdd„|Dƒ|_|ttt |ƒƒ|_ |_ |jtdd„|Dƒƒt |j ƒf|_ t|j ƒ|_dS(u>DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!cSs2g|](\}}t|ƒt|||f‘qS((u parse_versionu state_machine(u.0uopuv((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu s u(Requirement.__init__..cSs(g|]\}}}}||f‘qS(((u.0uparsedutransuopuver((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu s cSs(g|]\}}}}||f‘qS(((u.0uparsedutransuopuver((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu  s N(u safe_nameu unsafe_nameuloweru project_nameukeyusortuspecsutupleumapu safe_extrauindexuextrasu frozensetuhashCmpuhashu_Requirement__hash(uselfu project_nameuspecsuextrasuindex((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__init__ s "uRequirement.__init__cCsXdjdd„|jDƒƒ}dj|jƒ}|rDd|}nd|j||fS(Nu,cSsg|]}dj|ƒ‘qS(u(ujoin(u.0us((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu  s u'Requirement.__str__..u[%s]u%s%s%s(ujoinuspecsuextrasu project_name(uselfuspecsuextras((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__str__ s  uRequirement.__str__cCst|tƒo|j|jkS(N(u isinstanceu RequirementuhashCmp(uselfuother((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__eq__ suRequirement.__eq__c Cst|tƒr=|j|jkr%dS|jr[|j}q[nt|tƒr[t|ƒ}nd}dd„}x†|jD]{\}}}}||||ƒ}|dkr¬dS|dkr¼dS|dkrŃd}qw|dksé|dkrwd}qwqwW|dkr d}n|S( NcSs||k||kS(N((uaub((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu$ su*Requirement.__contains__..uFuTu+u-FT( u isinstanceu DistributionukeyuFalseuindexuparsed_versionu basestringu parse_versionuNoneuTrue( uselfuitemulastucompareuparsedutransuopuveruaction((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu __contains__ s,        uRequirement.__contains__cCs|jS(N(u_Requirement__hash(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__hash__1 suRequirement.__hash__cCsdt|ƒS(NuRequirement.parse(%r)(ustr(uself((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu__repr__4 suRequirement.__repr__cCsWtt|ƒƒ}|rDt|ƒdkr2|dStd|ƒ‚ntd|ƒ‚dS(NiiuExpected only one requirementuNo requirements found(ulistuparse_requirementsulenu ValueError(usureqs((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuparse7 s uRequirement.parseN( u__name__u __module__u __qualname__u__init__u__str__u__eq__u __contains__u__hash__u__repr__uparseu staticmethod(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu Requirement s       u--TuuT+Fu>=uT..u==uF++u!=cCs@t|tƒs9Gdd„d|tƒ}|jdd…S|jS(u&Get an mro for a type or classic classcBs|EeZdZdS(u_get_mro..clsN(u__name__u __module__u __qualname__(u __locals__((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuclsO suclsiN(u isinstanceutypeuobjectu__mro__(ucls((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_get_mroL su_get_mrocCsAx:tt|dt|ƒƒƒD]}||kr||SqWdS(u2Return an adapter factory for `ob` from `registry`u __class__N(u_get_mrougetattrutype(uregistryuobut((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu _find_adapterS s% u _find_adaptercCs8tjj|ƒ}tjj|ƒs4tj|ƒndS(u1Ensure that the parent directory of `path` existsN(uosupathudirnameuisdirumakedirs(upathudirname((u&/tmp/pip-k8wh6o-build/pkg_resources.pyuensure_directoryZ sccsØd}g}xŠt|ƒD]|}|jdƒrˆ|jdƒrv|sI|rW||fVn|dd…jƒ}g}q•td|ƒ‚q|j|ƒqW||fVdS(urSplit a string or iterable thereof into (section,content) pairs Each ``section`` is a stripped version of the section header ("[section]") and each ``content`` is a list of stripped lines excluding blank lines and comment-only lines. If there are any such lines before the first section header, they're returned in a first ``section`` of ``None``. u[u]iuInvalid section headingNi’’’’(uNoneu yield_linesu startswithuendswithustripu ValueErroruappend(ususectionucontentuline((u&/tmp/pip-k8wh6o-build/pkg_resources.pyusplit_sections` s  c OsDddlm}tj}ztt_|||ŽSWd|t_XdS(Ni(umkstemp(utempfileumkstempuosuopenuos_open(uargsukwumkstempuold_open((u&/tmp/pip-k8wh6o-build/pkg_resources.pyu_mkstempy s   u_mkstempcCs@x9ttƒD]+}|jdƒs tt|ƒ||© s(Āu__doc__usysuosutimeureuimpuzipfileu zipimportuwarningsustatu functoolsupkgutilu get_importeruurlparseu urlunparseu ImportErroru urllib.parseu frozensetu NameErrorusetsu ImmutableSetu basestringunextu cStringIOuStringIOuBytesIOustruiouNoneuexecfileuutimeumkdirurenameuunlinkuTrueu WRITE_SUPPORTuFalseuopenuos_openuos.pathuisdirusplitu version_infouimplementationunameuimportlib._bootstrapu _bootstrapuimportlib_bootstrapuparseru_bypass_ensure_directoryu _state_varsu_declare_stateu __getstate__u __setstate__u _sget_dictu _sset_dictu _sget_objectu _sset_objectu _sget_noneu _sset_noneuget_supported_platformu__all__u ExceptionuResolutionErroruVersionConflictuDistributionNotFoundu UnknownExtrau_provider_factoriesuversionuPY_MAJORuEGG_DISTu BINARY_DISTu SOURCE_DISTu CHECKOUT_DISTu DEVELOP_DISTuregister_loader_typeu get_provideru _macosx_versu _macosx_archuget_build_platformucompileumacosVersionStringudarwinVersionStringu get_platformucompatible_platformsu run_scripturun_mainuget_distributionuload_entry_pointu get_entry_mapuget_entry_infouIMetadataProvideruIResourceProvideruobjectu WorkingSetu EnvironmentuAvailableDistributionsu RuntimeErroruExtractionErroruResourceManageruget_default_cacheu safe_nameu safe_versionu safe_extrau to_filenameu _marker_namesu_marker_valuesu _platinfou_pyimpunormalize_exceptionuinvalid_markeruevaluate_markeru_markerlib_evaluateuglobalsu NullProvideru EggProvideruDefaultProviderutypeuSourceFileLoaderu EmptyProvideruempty_providerubuild_zipmanifestu ZipProvideru zipimporteru FileMetadatau PathMetadatau EggMetadatauregister_finderufind_distributionsu find_in_zipu find_nothingu find_on_pathu ImpImporteru FileFinderuregister_namespace_handleru _handle_nsudeclare_namespaceufixup_namespace_packagesufile_ns_handlerunull_ns_handlerunormalize_pathu_normalize_cachedu_set_parent_nsu yield_linesumatchuLINE_ENDuCONTINUEuDISTROuVERSIONuCOMMAuOBRACKETuCBRACKETuMODULEuVERBOSEu IGNORECASEuEGG_NAMEu component_reugetureplaceu_parse_version_partsu parse_versionu EntryPointu_remove_md5_fragmentu DistributionuDistInfoDistributionu_distributionImplu issue_warninguparse_requirementsu _sort_distsu Requirementu state_machineu_get_mrou _find_adapteruensure_directoryusplit_sectionsu_mkstempu_manageru _initializeu__main__u __requires__u working_seturequireuresolveudistuaddupathuentryuentriesu add_entryuiter_entry_pointsu subscribeuadd_activation_listenerulistumap(((u&/tmp/pip-k8wh6o-build/pkg_resources.pyusź                  '                               1    ’‹° )           Z  c    !   (           , )n ’'?   > <