U ÀÒ.eÄã@s²ddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZer”dd lmZmZmZmZmZdd lmZe e¡ZGd d „d eƒZdS)é)Úabsolute_importN)Ú OrderedDict)Úcanonicalize_name)Ú pep425tags)ÚInstallationError)Ú indent_log)ÚMYPY_CHECK_RUNNING)ÚWheel)ÚDictÚIterableÚListÚOptionalÚTuple)ÚInstallRequirementc@sXeZdZddd„Zdd„Zdd„Zd d „Zd d „Zddd„Zdd„Z dd„Z dd„Z d S)ÚRequirementSetFTcCs*tƒ|_||_||_g|_g|_g|_dS)z!Create a RequirementSet. N)rÚ requirementsÚrequire_hashesÚcheck_supported_wheelsÚunnamed_requirementsZsuccessfully_downloadedÚreqs_to_cleanup)Úselfrr©rú=/usr/lib/python3.8/site-packages/pip/_internal/req/req_set.pyÚ__init__s zRequirementSet.__init__cCs4tdd„|j ¡Dƒdd„d�}d dd„|Dƒ¡S)Ncss|]}|js|VqdS©N)Z comes_from©Ú.0ÚreqrrrÚ +sz)RequirementSet.__str__..cSs t|jƒSr©rÚname©rrrrÚ,óz(RequirementSet.__str__..©Úkeyú css|]}t|jƒVqdSr©Ústrrrrrrr.s)ÚsortedrÚvaluesÚjoin)rrrrrÚ__str__(s þzRequirementSet.__str__cCsBt|j ¡dd„d�}d}|j|jjt|ƒd dd„|Dƒ¡d�S) NcSs t|jƒSrrr!rrrr"4r#z)RequirementSet.__repr__..r$z4<{classname} object; {count} requirement(s): {reqs}>z, css|]}t|jƒVqdSrr'rrrrr;sz*RequirementSet.__repr__..)Z classnameÚcountZreqs)r)rr*ÚformatÚ __class__Ú__name__Úlenr+)rrÚ format_stringrrrÚ__repr__0sþýzRequirementSet.__repr__cCs|j |¡dSr)rÚappend)rÚ install_reqrrrÚadd_unnamed_requirement>sz&RequirementSet.add_unnamed_requirementcCst|jƒ}||j|<dSr)rr r)rr5Ú project_namerrrÚadd_named_requirementCs z$RequirementSet.add_named_requirementNc Cs¢| |¡s$t d|j|j¡gdfS|jrd|jjrdt|jjƒ}t   ¡}|j rd|  |¡sdt d|jƒ‚|js~| |¡|gdfSz| |j¡}Wntk r¦d}YnX|dkoÖ|oÖ|j oÖ|j|jkoÖ|jj|jjk}|rðt d|||jfƒ‚|�s | |¡|g|fS|j�s|j�s"g|fS|j�oB|j�o@|jj|jjk }|�rd|j |¡t d|jƒ‚d|_ttt|jƒt|jƒBƒƒ|_t d||j¡|g|fS)a&Add install_req as a requirement to install. :param parent_req_name: The name of the requirement that needed this added. The name is used because when multiple unnamed requirements resolve to the same name, we could otherwise end up with dependency links that point outside the Requirements set. parent_req must already be added. Note that None implies that this is a user supplied requirement, vs an inferred one. :param extras_requested: an iterable of extras used to evaluate the environment markers. :return: Additional requirements to scan. That is either [] if the requirement is not applicable, or [install_req] if the requirement is applicable and has just been added. z6Ignoring %s: markers '%s' don't match your environmentNz-%s is not a supported wheel on this platform.z5Double requirement given: %s (already in %s, name=%r)zhCould not satisfy constraints for '%s': installation from path or url cannot be constrained to a versionFzSetting %s extras to: %s)Z match_markersÚloggerÚinfor ZmarkersÚlinkZis_wheelr ÚfilenamerZ get_supportedrZ supportedrr6Úget_requirementÚKeyErrorÚ constraintZextrasrZ specifierr8Úpathrr4Útupler)ÚsetÚdebug) rr5Zparent_req_nameZextras_requestedZwheelZtagsZ existing_reqZhas_conflicting_requirementZdoes_not_satisfy_constraintrrrÚadd_requirementJs‚ þ ÿÿ    ÿþ ýû ÿÿ  þþ þÿÿþzRequirementSet.add_requirementcCs t|ƒ}||jko|j|j Sr)rrr?©rr r7rrrÚhas_requirementºs  þzRequirementSet.has_requirementcCs,t|ƒ}||jkr|j|Std|ƒ‚dS)NzNo project with the name %r)rrr>rErrrr=Ãs  zRequirementSet.get_requirementc Cs4t d¡tƒ�|jD] }| ¡qW5QRXdS)zClean up files, remove builds.zCleaning up...N)r9rCrrZremove_temporary_source)rrrrrÚ cleanup_filesÌs  zRequirementSet.cleanup_files)FT)NN) r0Ú __module__Ú __qualname__rr,r3r6r8rDrFr=rGrrrrrs  ü p  r)Z __future__rZloggingÚ collectionsrZpip._vendor.packaging.utilsrZ pip._internalrZpip._internal.exceptionsrZpip._internal.utils.loggingrZpip._internal.utils.typingrZpip._internal.wheelr Útypingr r r r rZpip._internal.req.req_installrZ getLoggerr0r9ÚobjectrrrrrÚs