1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Ë
ñúhü]ãóº—dZddlmZddlZddlZddlmZddlmZddl    m
Z
ddl m Z ddl mZdd    lmZdd
lmZdd lmZmZmZmZmZmZmZdd lmZdd lmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&m'Z'ddl(m)Z)ddl*m+Z+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ejre:«Z;ee e<e=e&fZ>    d                            dd„Z?Gd„de+«Z@y)ayDependency Resolution
 
The dependency resolution in pip is performed as follows:
 
for top-level requirements:
    a. only one spec allowed per project, regardless of conflicts or not.
       otherwise a "double requirement" exception is raised
    b. they override sub-dependency requirements.
for sub-dependencies
    a. "first found, wins" (where the order is breadth first)
é)Ú annotationsN)Ú defaultdict)ÚIterable)Úchain)ÚOptional)Ú
specifiers)Ú Requirement)Ú
WheelCache)ÚBestVersionAlreadyInstalledÚDistributionNotFoundÚ    HashErrorÚ
HashErrorsÚInstallationErrorÚNoneMetadataErrorÚUnsupportedPythonVersion)Ú PackageFinder)ÚBaseDistribution)ÚLink)ÚWheel)ÚRequirementPreparer)ÚInstallRequirementÚcheck_invalid_constraint_type)ÚRequirementSet)Ú BaseResolverÚInstallRequirementProvider)Úcompatibility_tags)Ú get_supported)Údirect_url_from_link)Ú
indent_log)Únormalize_version_info)Úcheck_requires_pythoncóâ—    t|j«}    t    ||¬«}|rydjtt|««}|r#tjd|j||«ytd|j›d|›d|›«‚#t$r}t|t|««‚d}~wwxYw#t
j $r+}tjd|j|«Yd}~yd}~wwxYw)    aÇ
    Check whether the given Python version is compatible with a distribution's
    "Requires-Python" value.
 
    :param version_info: A 3-tuple of ints representing the Python
        major-minor-micro version to check.
    :param ignore_requires_python: Whether to ignore the "Requires-Python"
        value if the given Python version isn't compatible.
 
    :raises UnsupportedPythonVersion: When the given Python version isn't
        compatible.
    N)Ú version_infoz-Package %r has an invalid Requires-Python: %sú.zBIgnoring failed Requires-Python check for package %r: %s not in %rzPackage z requires a different Python: z not in )ÚstrÚrequires_pythonÚFileNotFoundErrorrr!rÚInvalidSpecifierÚloggerÚwarningÚraw_nameÚjoinÚmapÚdebugr)Údistr#Úignore_requires_pythonr&ÚeÚ is_compatibleÚexcÚversions        ú[H:\Change_password\venv_build\Lib\site-packages\pip/_internal/resolution/legacy/resolver.pyÚ_check_dist_requires_pythonr6:sð€ð(.ܘd×2Ñ2Ó3ˆð    Ü-Ø Ø%ô
ˆ ñØàh‰h”sœ3  Ó-Ó.€GÙ܏ ‰ Ø PØ M‰MØ Ø ô        
ð     ä
4—=‘=Ð#Ð#AØ ˆ)8˜OÐ.ð    0ó ðøô5 ò.Ü ¤c¨!£fÓ-Ð-ûð.ûô × &Ñ &ò܏‰Ø ;¸T¿]¹]ÈCô    
ô    ûð    ús.‚B
˜ B0Â
    B-ÂB(Â(B-Â0C.Ã!C)Ã)C.c󿇗eZdZdZhd£Z    d                                                                                            dˆfd„ Z                        dd„Z        d                                    dd„Zdd„Zdd„Z    dd„Z
dd    „Z dd
„Z dd „Z                         dd „Z                dd „ZˆxZS)ÚResolverz–Resolves which packages need to be installed/uninstalled to perform     the requested operation without breaking the requirements of any package.
    >Úeagerúonly-if-neededúto-satisfy-onlyc óF•—t‰ |«|
|jvsJ‚| €tjdd} n t | «} | |_||_||_||_    |
|_
|    |_ ||_ ||_ ||_||_||_t#t$«|_y)Né)ÚsuperÚ__init__Ú_allowed_strategiesÚsysr#r Ú_py_version_infoÚpreparerÚfinderÚ wheel_cacheÚupgrade_strategyÚforce_reinstallÚignore_dependenciesÚignore_installedr0Ú use_user_siteÚ_make_install_reqrÚlistÚ_discovered_dependencies) ÚselfrCrDrEÚmake_install_reqrJrHrIr0rGrFÚpy_version_infoÚ    __class__s             €r5r?zResolver.__init__ws©ø€ô    ‰ÑÔØ 4×#;Ñ#;Ñ;Ð;Ð;à Ð "Ü!×.Ñ.¨r°Ð2‰Oä4°_ÓEˆOà /ˆÔà ˆŒ ؈Œ Ø&ˆÔà 0ˆÔØ.ˆÔØ#6ˆÔ Ø 0ˆÔØ&<ˆÔ#Ø*ˆÔØ!1ˆÔä@KÌDÓ@QˆÕ%ócót—t|¬«}|D]+}|jr t|«|j||«Œ-g}t    «}t |j |«D]$}    |j|j||««Œ&|r|‚|S#t$r"}||_
|j|«Yd}~ŒSd}~wwxYw)a±Resolve what operations need to be done
 
        As a side-effect of this method, the packages (and their dependencies)
        are downloaded, unpacked and prepared for installation. This
        preparation is done by ``pip.operations.prepare``.
 
        Once PyPI has static dependency metadata available, it would be
        possible to move the preparation to become a step separated from
        dependency resolution.
        )Úcheck_supported_wheelsN) rÚ
constraintrÚ_add_requirement_to_setrrÚall_requirementsÚextendÚ _resolve_oner ÚreqÚappend)rNÚ    root_reqsrTÚrequirement_setrZÚdiscovered_reqsÚ hash_errorsr3s        r5ÚresolvezResolver.resolves€ô)Ð@VÔWˆØò    ?ˆC؏~Š~Ü-¨cÔ2Ø × (Ñ (¨¸#Õ >ð    ?ð57ˆÜ “lˆ ܘ×9Ñ9¸?ÓKò    (ˆCð (Ø×&Ñ& t×'8Ñ'8¸È#Ó'NÕOð    (ñ ØÐ àÐøôò (ؐ”Ø×"Ñ" 3×'Ñ'ûð (úsÁ#!B      B7ÂB2Â2B7c    óÒ—|j|«s/tjd|j|j«gdfS|j
r~|j
j rht|j
j«}tj«}|jr)|j|«st|j›d«‚|jr    |Jd«‚|js|j|«|gdfS    |j!|j«}|duxrw|xrs|j$ xrd|j&|j&k(xrI|j(xr;|j(xr-|j(j*|j(j*k7}|rtd|›d|›d|j›d«‚|s|j-|«|g|fS|j$s |j$sg|fS|j
xr<|j
xr-|j
j.|j
j.k( }    |    rtd    |j›d
«‚d |_|jrd |_t1t3t5|j&«t5|j&«z««|_tj7d ||j&«|g|fS#t"$rd}YŒÇwxYw)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+ is not a supported wheel on this platform.z+a user supplied req shouldn't have a parentzDouble requirement given: z  (already in z, name=ú)z#Could not satisfy constraints for 'zC': installation from path or url cannot be constrained to a versionFTzSetting %s extras to: %s)Ú match_markersr)ÚinfoÚnameÚmarkersÚlinkÚis_wheelrÚfilenamerrrTÚ    supportedrÚ user_suppliedÚadd_unnamed_requirementÚget_requirementÚKeyErrorrUÚextrasrZÚ    specifierÚadd_named_requirementÚpathÚtupleÚsortedÚsetr.)
rNr]Ú install_reqÚparent_req_nameÚextras_requestedÚwheelÚtagsÚ existing_reqÚhas_conflicting_requirementÚdoes_not_satisfy_constraints
          r5rVz Resolver._add_requirement_to_setÂs€ð,×(Ñ(Ð)9Ô:Ü K‰KØHØ× Ñ Ø×#Ñ#ô ð
t8ˆOð × Ò   × 0Ñ 0× 9Ò 9ܘ+×*Ñ*×3Ñ3Ó4ˆEÜ%×3Ñ3Ó5ˆDØ×5Ò5¸e¿o¹oÈdÔ>SÜ'Ø—~‘~Ð&Ð&QÐRóðð ×)Ò)¨_Ð-Dð    9à 8ó    9Ø Dð
×ÒØ × 3Ñ 3°KÔ @ؐ= $Ð&Ð &ð     Ø6E×6UÑ6UØ× Ñ ó7ˆLð ˜tÐ #ò HØò Hà ×+Ñ+Ð+ò Hð×#Ñ# {×'9Ñ'9Ñ9ò Hð× Ñ ò     Hð
—‘ò  Hð × Ñ ×*Ñ*¨k¯o©o×.GÑ.GÑGð    $ñ 'Ü#Ø,¨[¨Mð:Ø+˜n¨G°K×4DÑ4DÐ3GÀqðJóð ñØ × 1Ñ 1°+Ô >à= +Ð-Ð -ð × !Ò !¨×)@Ò)@ؐ|Ð#Ð #à&1×&6Ñ&6ò'
Ø × Ñ Ò Q +×"2Ñ"2×"7Ñ"7¸<×;LÑ;L×;QÑ;QÑ"Qð<
Ð#ñ 'Ü#Ø5°k×6FÑ6FÐ5GðH+ð+óð ð#(ˆ Ôð × $Ò $Ø)-ˆLÔ &Ü#Ü ”3|×*Ñ*Ó+¬c°+×2DÑ2DÓ.EÑEÓ Fó
ˆ Ôô     ‰ Ø &Ø Ø × Ñ ô    
ðˆ~˜|Ð+Ð+øôqò     Ø‹Lð     úsÄKË K&Ë%K&có˜—|jdk(ry|jdk(ry|jdk(sJ‚|jxs |jS)Nr;Fr9Tr:)rFrkrU©rNrZs  r5Ú_is_upgrade_allowedzResolver._is_upgrade_allowed5sO€Ø ×  Ñ  Ð$5Ò 5ØØ × "Ñ " gÒ -Øà×(Ñ(Ð,<Ò<Ð <Ð<Ø×$Ñ$Ò6¨¯©Ð 6rRcó€—|j€J‚|jr|jjrd|_d|_y)z4
        Set a requirement to be installed.
        NT)Ú satisfied_byrJÚ in_usersiteÚshould_reinstallrs  r5Ú_set_req_to_reinstallzResolver._set_req_to_reinstall>s=€ð ×ÑÐ+Ð+Ð+Ø×!Ò! S×%5Ñ%5×%AÒ%AØ#'ˆCÔ  ØˆÕrRcó–—|jry|j|j«|jsy|jr|j |«y|j |«s|jdk(ryy|js    |jj|d¬«|j |«y#t$rYyt$rYŒ'wxYw)aCheck if req_to_install should be skipped.
 
        This will check if the req is installed, and whether we should upgrade
        or reinstall it, taking into account all the relevant user options.
 
        After calling this req_to_install will only have satisfied_by set to
        None if the req_to_install is to be upgraded/reinstalled etc. Any
        other value will be a dist recording the current thing installed that
        satisfies the requirement.
 
        Note that for vcs urls and the like we can't assess skipping in this
        routine - we simply identify that we need to pull the thing down,
        then later on it is pulled down and introspected to assess upgrade/
        reinstalls etc.
 
        :return: A text reason for why it was skipped, or None.
        Nr:z#already satisfied, skipping upgradezalready satisfiedT)Úupgradezalready up-to-date) rIÚcheck_if_existsrJr‚rGr…r€rFrgrDÚfind_requirementr r )rNÚreq_to_installs  r5Ú_check_skip_installedzResolver._check_skip_installedIsȀð$ ×  Ò  Øà×&Ñ& t×'9Ñ'9Ô:Ø×*Ò*Øà × Ò Ø × &Ñ & ~Ô 6Øà×'Ñ'¨Ô7Ø×$Ñ$Ð(8Ò8Ø<Ø&ð
×"Ò"ð     Ø— ‘ ×,Ñ,¨^ÀTÐ,ÔJð     ×"Ñ" >Ô2Øøô/ò ,á+Ü'ò ñð     úsÂB2Â2    CÂ=CÃCcóð—|j|«}|jj||«}|sy|j}|jr-|j
xsd}d|›d|›}t j|«|S)Nz <none given>zDThe candidate selected for download or install is a yanked version: z
Reason for being yanked: )r€rDr‰rgÚ    is_yankedÚ yanked_reasonr)r*)rNrZr‡Úbest_candidatergÚreasonÚmsgs       r5Ú_find_requirement_linkzResolver._find_requirement_link}s„€Ø×*Ñ*¨3Ó/ˆØŸ™×5Ñ5°c¸7ÓCˆÙØð×"Ñ"ˆØ >Š>Ø×'Ñ'Ò9¨>ˆFð
#Ø#1Ð"2ð3,Ø,2¨8ð5ð     ô N‰N˜3Ô àˆ rRcó‚—|j€|j|«|_|j|jjry|j€Jd«‚|jj |j|j t«¬«}|«tjd|j«|j|jur|jr|j|_ |j|j|_n&t|j|j¬«|_|j|_yy)afEnsure that if a link can be found for this, that it is found.
 
        Note that req.link may still be None - if the requirement is already
        installed and not needed to be upgraded based on the return value of
        _is_upgrade_allowed().
 
        If preparer.require_hashes is True, don't use the wheel cache, because
        cached wheels, always built locally, have different hashes than the
        files downloaded from the index server and thus throw false hash
        mismatches. Furthermore, cached wheels at present have undeterministic
        contents due to file modification times.
        Nz1_find_requirement_link unexpectedly returned None)rgÚ package_nameÚsupported_tagszUsing cached wheel link: %s)Úlink_is_in_wheel_cache)rgr’rErCÚrequire_hashesÚget_cache_entryrerr)r.Ú original_linkÚ
persistentÚcached_wheel_source_linkÚoriginÚ download_infor)rNrZÚ cache_entrys   r5Ú_populate_linkzResolver._populate_link“s€ð 8‰8Ð Ø×2Ñ2°3Ó7ˆCŒHà × Ñ Ð # t§}¡}×'CÒ'CØ àx‰xÐ#ÐXÐ%XÓXÐ#Ø×&Ñ&×6Ñ6Ø—‘ØŸ™Ü(›?ð7ó
ˆ ð
Ð "Ü L‰LÐ6¸ ×8HÑ8HÔ I؏x‰x˜3×,Ñ,Ñ,°×1GÒ1GØ/2¯x©xÔ,Ø×!Ñ!Ð-Ø$/×$6Ñ$6Õ!ô%9Ø—H‘H°[×5KÑ5Kô%Ô!ð#×'Ñ'ˆCHð #rRcó‚—|jr|jj|«S|jJ‚|j    |«}|jr|jj ||«S|j |«|jj|«}|js|j|j«|jrq|jdk7xs5|jxs'|jxs|jjdk(}|r|j|«|St j#d|«|S)zzTakes a InstallRequirement and returns a single AbstractDist         representing a prepared variant of the same.
        r;Úfilez<Requirement already satisfied (use --upgrade to upgrade): %s)ÚeditablerCÚprepare_editable_requirementr‚r‹Úprepare_installed_requirementrŸÚprepare_linked_requirementrIrˆrJrFrGrgÚschemer…r)rd)rNrZÚ skip_reasonr/Ú should_modifys     r5Ú _get_dist_forzResolver._get_dist_forºs,€ð <Š<Ø—=‘=×=Ñ=¸cÓBÐ Bð×ÑÐ'Ð'Ð'Ø×0Ñ0°Ó5ˆ à × Ò Ø—=‘=×>Ñ>¸sÀKÓPÐ Pð     ×јCԠ؏}‰}×7Ñ7¸Ó<ˆð×$Ò$Ø × Ñ  × 2Ñ 2Ô 3à × Ò à×%Ñ%Ð):Ñ:ò-Ø×'Ñ'ò-à×(Ñ(ò-ð—8‘8—?‘? fÑ,ð     ñ Ø×*Ñ*¨3Ô/ð ˆ ô    — ‘ ØRØôðˆ rRc󶇇‡‡    —‰js ‰jrgSd‰_‰j‰«}t|‰j‰j
¬«gŠ    d
ˆ    ˆˆˆfd„ }t «5‰j€J‚‰j‰j«s"‰jsJ‚‰j‰‰d¬«‰jsþ‰jr/tjddj‰j««t!t#‰j«t#|j%««z
«}|D].}tj'd|j(|j*|«Œ0t!t#|j%««t#‰j«z«}|j-|«D] }|||¬    «Œddd«‰    S#1swY‰    SxYw) zxPrepare a single requirements file.
 
        :return: A list of additional InstallRequirements to also install.
        T)r#r0cóê•—‰    jt|«‰«}‰j}‰    j‰|||¬«\}}|r |r‰    j|j |«‰j |«y)N)rwrx)rKr%rerVrMr[rX)
ÚsubreqrxÚsub_install_reqrwÚ to_scan_againÚ add_to_parentÚ    more_reqsrŠr]rNs
      €€€€r5Úadd_reqz&Resolver._resolve_one.<locals>.add_reqs{ø€ð#×4Ñ4´S¸³[À.ÓQˆOØ,×1Ñ1ˆOØ+/×+GÑ+GØØØ /Ø!1ð    ,Hó,Ñ (ˆM˜=ñ ¡=Ø×-Ñ-¨oÑ>×EÑEÀmÔTØ × Ñ ˜]Õ +rRN)rwz!Installing extra requirements: %rú,z%%s %s does not provide the extra '%s')rx)r¬r    rxz Iterable[str]ÚreturnÚNone)rUÚpreparedr©r6rBr0rreÚhas_requirementrkrVrHror)r.r,rtruÚiter_provided_extrasr*r+r4Úiter_dependencies)
rNr]rŠr/r±Úmissing_requestedÚmissingÚavailable_requestedr¬r°s
```      @r5rYzResolver._resolve_oneèsÒû€ð × $Ò $¨×(?Ò(?؈Ià"&ˆÔð×!Ñ! .Ó1ˆô    $Ø Ø×.Ñ.Ø#'×#>Ñ#>õ    
ð /1ˆ    ÷    ,ð    ,ô ‹\ñ"    Jð"×&Ñ&Ð2Ð 2Ð2Ø"×2Ñ2°>×3FÑ3FÔGð&×3Ò3Ð3Ð3Ø×,Ñ,Ø# ^ÀTð-ôð×+Ò+Ø!×(Ò(Ü—L‘LØ;ØŸ™ ×!6Ñ!6Ó7ôô%+ܘ×-Ñ-Ó.´°T×5NÑ5NÓ5PÓ1QÑQó%Ð!ð 1òGÜ—N‘NØ?ØŸ ™ ØŸ ™ Øõ    ðô'-ܘ×1Ñ1Ó3Ó4´s¸>×;PÑ;PÓ7QÑQó'Ð#ð#×4Ñ4Ð5HÓIòJFÙ˜FÐ5HÖIðJ÷C"    JðHÐ÷I"    JðHÐús Á.EGÇGc󆇇‡‡—gŠt«Šdˆˆˆˆfd„ Š|jj«D]
}‰|«Œ ‰S)zäCreate the installation order.
 
        The installation order is topological - requirements are installed
        before the requiring thing. We break cycles at an arbitrary point,
        and make no other guarantees.
        cóҕ—|js|‰vry|jry‰j|«‰j|jD]
}‰|«Œ ‰j |«y©N)r‚rUÚaddrMrer[)rZÚdepÚorderÚ ordered_reqsÚschedulerNs  €€€€r5rÃz1Resolver.get_installation_order.<locals>.scheduleJs_ø€Ø×Ò 3¨,Ñ#6ØØ~Š~ØØ × Ñ ˜SÔ !Ø×4Ñ4°S·X±XÑ>ò Ù˜• ð à L‰L˜Õ rR©rZrr³r´)ruÚ requirementsÚvalues)rNÚreq_setrvrÁrÂrÃs`  @@@r5Úget_installation_orderzResolver.get_installation_order;sHû€ðˆÜ03³ˆ ÷    ð    ð#×/Ñ/×6Ñ6Ó8ò    "ˆKÙ [Õ !ð    "àˆ rRr¾)rCrrDrrEzWheelCache | NonerOrrJÚboolrHrÉrIrÉr0rÉrGrÉrFr%rPztuple[int, ...] | Noner³r´)r\úlist[InstallRequirement]rTrÉr³r)NN)
r]rrvrrwú
str | NonerxzIterable[str] | Noner³z:tuple[list[InstallRequirement], InstallRequirement | None])rZrr³rÉrÄ)rŠrr³rË)rZrr³z Link | None)rZrr³r)r]rrŠrr³rÊ)rÇrr³rÊ)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r@r?r`rVr€r…r‹r’rŸr©rYrÈÚ __classcell__)rQs@r5r8r8ps^ø„ñòIÐð37ð$Rà%ð$Rðð$Rð'ð    $Rð
5ð $Rð ð $Rð"ð$Rðð$Rð!%ð$Rðð$Rðð$Rð0ð$Rð
õ$RðL#Ø1ð#ØKOð#à    ó#ðR'+Ø15ð q,à'ðq,ð(ðq,ð$ð    q,ð
/ð q,ð
Dó q,óf7ó     ó2óhó,%(óN,ð\Qà'ðQð+ðQð
"ó    QðfØ%ðà    !÷rRr8)F)r/rr#ztuple[int, int, int]r0rÉr³r´)ArÏÚ
__future__rÚloggingrAÚ collectionsrÚcollections.abcrÚ    itertoolsrÚtypingrÚpip._vendor.packagingrÚ"pip._vendor.packaging.requirementsr    Úpip._internal.cacher
Úpip._internal.exceptionsr r r rrrrÚ"pip._internal.index.package_finderrÚpip._internal.metadatarÚpip._internal.models.linkrÚpip._internal.models.wheelrÚ pip._internal.operations.preparerÚpip._internal.req.req_installrrÚpip._internal.req.req_setrÚpip._internal.resolution.baserrÚpip._internal.utilsrÚ&pip._internal.utils.compatibility_tagsrÚ&pip._internal.utils.direct_url_helpersrÚpip._internal.utils.loggingrÚpip._internal.utils.miscr Úpip._internal.utils.packagingr!Ú    getLoggerrÌr)r%rLÚDiscoveredDependenciesr6r8©rRr5ú<module>rìsÒðñ
õ#ãÛ
Ý#Ý$ÝÝå,Ý:å*÷÷ñõ=Ý3Ý*Ý,Ý@÷õ5ßRÝ2Ý@ÝGÝ2Ý;Ý?à    ˆ×    Ñ    ˜8Ó    $€à$ X¨c¡]°DÐ9KÑ4LÐ%LÑMÐð $)ð3Ø
ð3à&ð3ð!ð3ð
ó    3ôlfˆ|õfrR