+
    4jX                       R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIt^ RI	H
t
 ^RIHtHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ]'       d   ^ RIHt ^ RIHt ^RIHt . R?Ot ! R R] 4      t! ! R R]"4      t#R R lt$RR/R R llt%R R lt&R R lt'R R lt(R R  lt)R! R" lt*R# R$ lt+R% R& lt,R' R( lt-R@R) R* llt.R+ R, lt/R- R. lt0R/ R0 lt1R1 R2 lt2R3 R4 lt3R5 R6 lt4R7 R8 lt5R9 R: lt6R; R< lt7R= R> lt8R# )AzBRead dependencies and dependency groups from pyproject.toml files.)annotations)MappingSequence)TYPE_CHECKINGN)ResolutionError)dependency_marker_holds
marker_set)resolve_dependency_groups)ExceptionGroup)Marker)Requirementcanonicalize_name)validate_specifier_versions)Iterator)Path)VersionRangeInvalidProjectRequirementErrorInvalidProjectTableErrorc                      ] tR t^.tRtRtR# )r   zIA pyproject.toml dependency or metadata value is invalid or unresolvable. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       n/home/user/pdf2html-billing-ledger-validate/.venv/lib/python3.14/site-packages/nab_python/requirements_file.pyr   r   .   s    Sr   c                      ] tR t^2tRtRtR# )r   a*  A pyproject.toml table such as ``[project]`` is not a table.

A subclass of :class:`TypeError`, so existing ``except TypeError`` and
``pytest.raises(TypeError)`` sites keep working, but the CLI catches it
specifically so an unrelated internal ``TypeError`` is not mislabelled
as a user-file error.
r   Nr   r   r   r   r   r   2   s    r   c               $    V ^8  d   QhRRRRRR/# )   dep_strstr
extra_namereturnr   )formats   "r   __annotate__r(   <   s!      s   r   c                    \        V 4      p\        VRR7      pRV R2pVP                  e   RVP                   RV 2pMTpRVn        V RV 2# )	a  Append ``extra == "name"`` to a :pep:`508` dep string.

Parses with :class:`Requirement` rather than splitting on the first
``;`` so a semicolon inside a direct-reference URL is not mistaken
for the marker separator; an existing marker is combined with ``and``.

``extra_name`` is a table key interpolated into the quoted marker, so
it is canonicalised with ``validate=True`` (PEP 685). A key that is
not a valid name (say one containing a quote) then raises
:class:`InvalidName` instead of producing a marker that gates the dep
wrongly.
T)validatez
extra == ""N(z) and z ; )r   r   marker)r#   r%   reqcanonical_extraextra_markerr-   s   &&    r   _add_extra_markerr1   <   sf     g
C'
TBO02L
zzSZZL|n5CJU#fXr   extrac               (    V ^8  d   QhRRRRRRRR/# )r"   r#   r$   sourcer2   
str | Noner&   r   r   )r'   s   "r   r(   r(   T   s,      )3r   c                    Ve   \        W4      MT p\        V4      p\        VP                  4       V#   \         d   pRT RT 2p\        T4      ThRp?ii ; i)a  Parse one PEP 508 dependency string, raising if it is malformed.

An ``extra`` name is folded in as an ``extra == "name"`` marker. A string
that is not valid PEP 508, or one whose specifier carries a version that
will not convert, raises :class:`InvalidProjectRequirementError`, so a
candidate declaring one malformed dependency is rejected whole rather
than resolved with the dependency silently dropped.
Nzinvalid requirement in : )r1   r   r   	specifier
ValueErrorr   )r#   r4   r2   textr.   excmsgs   &&$    r   parse_project_requirementr=   T   sg    ;494E 07$#CMM2 J  ;'xr#7,S1s:;s   15 A AAc               $    V ^8  d   QhRRRRRR/# )r"   stringsSequence[str]r4   r$   r&   list[Requirement]r   )r'   s   "r   r(   r(   i   s'     C C Cs C?P Cr   c                B    V  Uu. uF  p\        W!4      NK  	  up# u upi )z=Parse PEP 508 strings, naming ``source`` if one is malformed.)r=   )r?   r4   ss   && r   parse_requirementsrD   i   s     :AB'Q%a0'BBBs   c               $    V ^8  d   QhRRRRRR/# )r"   valueobjectr4   r$   r&   	list[str]r   )r'   s   "r   r(   r(   n   s!     
 
v 
s 
y 
r   c                    \        V \        4      '       d;   \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       g   V R2p\        V4      hV # )a  Validate that a PEP 621 dependency value is an array of strings.

A bare string passes the type checker as ``Sequence[str]`` but
iterates character by character, so ``dependencies = "requests"``
would parse as eight single-character requirements rather than fail.
c              3  B   "   T F  p\        V\        4      x  K  	  R # 5iN)
isinstancer$   ).0items   & r   	<genexpr>&require_string_list.<locals>.<genexpr>u   s     -VPUjs.C.CPU   FTz must be an array of strings)rL   listallr   )rF   r4   r<   s   && r   require_string_listrT   n   sP     eT""##-VPU-V###-VPU-V*V*V45,S11Lr   c                    V ^8  d   QhRRRR/# )r"   pathr   r&   zMapping[str, object]r   )r'   s   "r   r(   r(   {   s      d '; r   c                2   V P                  R4      ;_uu_ 4       p\        P                  ! V4      pRRR4       XP                  R/ 4      p\	        V\
        4      '       g$   R\        V4      P                   2p\        V4      hV#   + '       g   i     L]; i)aW  Load a pyproject.toml and return its ``[project]`` table.

Returns an empty mapping when ``[project]`` is absent (a
workspace-root pyproject without its own distribution).  Raises
:class:`TypeError` when ``[project]`` is present but not a table, so
the readers below fail with a named diagnostic instead of a raw
subscript or attribute error.
rbNproject[project] must be a table, got 	opentomliloadgetrL   dicttyper   r   )rV   fdatarY   r<   s   &    r   _load_project_tablerd   {   sq     
4Azz!} 
hhy"%Ggt$$/W0F0F/GH&s++N 
   BB	c                    V ^8  d   QhRRRR/# r"   rV   r   r&   rA   r   )r'   s   "r   r(   r(      s     3 3d 3/@ 3r   c                   V P                  R4      ;_uu_ 4       p\        P                  ! V4      pRRR4       XR,          p\        V\        4      '       g$   R\        V4      P                   2p\        V4      hRpRV9  d<   VP                  R4      p\        V\        4      '       d   RV9   d   Rp\        V4      h\        VP                  R. 4      V4      p\        Wu4      #   + '       g   i     L; i)	a(  Read [project].dependencies from a pyproject.toml file.

Returns a list of Requirement objects parsed from the dependency
strings. The key is optional under PEP 621, so an absent
``dependencies`` reads as an empty list. Raises FileNotFoundError if
the file doesn't exist, KeyError if [project] is missing, TypeError
if [project] is not a table, and InvalidProjectRequirementError if a
dependency string is malformed or if ``dependencies`` is declared
dynamic. The root-project lock path cannot run the build backend
that would compute a dynamic value.
rX   NrY   rZ   z[project].dependenciesdependenciesdynamicz[project].dependencies is declared dynamic; computing it requires the build backend, which the root-project lock path does not support)r\   r]   r^   rL   r`   ra   r   r   r_   rR   r   rT   rD   )rV   rb   rc   rY   r<   r4   rj   dep_stringss   &       r   read_pyproject_dependenciesrl      s     
4Azz!} 
9oGgt$$/W0F0F/GH&s++%FW$++i(gt$$7)B) 
 155%gkk."&EvNKk22% 
s   C&&C6	c                    V ^8  d   QhRRRR/# rg   r   )r'   s   "r   r(   r(      s     #V #V #V1B #Vr   c                   V P                  R4      ;_uu_ 4       p\        P                  ! V4      pRRR4       RX9  d   V  R2p\        V4      hVR,          p\	        V\
        4      '       g$   R\        V4      P                   2p\        V4      hRpRV9  d   V RV  R	2p\        V4      h\        \        VR,          V4      V4      #   + '       g   i     L; i)
a  Read [build-system].requires from a pyproject.toml file (PEP 518).

A project that declares no ``[build-system]`` gets no fallback to the
PEP 517 default backend: pinning an implied ``setuptools`` would put a
build requirement in the lock that the project never asked for.
Absent ``[build-system]`` and a table without the mandatory
``requires`` key both raise
:class:`InvalidProjectRequirementError`; a ``[build-system]`` that is
not a table raises :class:`InvalidProjectTableError`.

Only the static list is read.  What a backend adds from
``get_requires_for_build_wheel`` is known only once that backend runs,
and nothing runs this project's own backend to find out.
rX   Nzbuild-systemzD declares no [build-system], so it has no build requirements to lockz$[build-system] must be a table, got z[build-system].requiresrequiresz is required by PEP 518 and z does not declare it)r\   r]   r^   r   rL   r`   ra   r   r   rD   rT   )rV   rb   rc   r<   tabler4   s   &     r   read_pyproject_build_requiresrq      s     
4Azz!} 
 T!f $ $ 	 -S11 EeT""4T%[5I5I4JK&s++&F4TF:NO,S111%
2CVLfUU) 
s   CC	c                    V ^8  d   QhRRRR/# )r"   rV   r   r&   r5   r   )r'   s   "r   r(   r(      s     3 3d 3z 3r   c                j    \        V 4      P                  R4      p\        V\        4      '       d   V# R# )zRead [project].name from a pyproject.toml file.

Returns the project name as a string, or ``None`` when the file
has no ``[project]`` table or no ``name`` key (a workspace-root
pyproject without its own distribution).
nameN)rd   r_   rL   r$   )rV   rt   s   & r   read_pyproject_nameru      s0     t$((0DdC((42d2r   c                    V ^8  d   QhRRRR/# )r"   rV   r   r&   Mapping[str, Sequence[str]]r   )r'   s   "r   r(   r(      s      
 r   c                    \        V 4      P                  R/ 4      p\        V\        4      '       g$   R\	        V4      P
                   2p\        V4      hV# )zRead [project.optional-dependencies] from a pyproject.toml file.

Returns the raw mapping of extra name to requirement strings.
Returns an empty dict when ``[project.optional-dependencies]``
is absent.
zoptional-dependenciesz5[project.optional-dependencies] must be a table, got )rd   r_   rL   r`   ra   r   r   )rV   rawr<   s   &  r   $read_pyproject_optional_dependenciesrz      sU     d
#
'
'(?
DCc4  CDIDVDVCWX 	 's++Jr   c                    V ^8  d   QhRRRR/# )r"   optional_depsrw   r&   zdict[str, list[str]]r   )r'   s   "r   r(   r(      s     
 
.

r   c                    / pV P                  4        F>  w  r#RV: 2pVP                  \        V4      . 4      P                  \	        W44      4       K@  	  V# )zDMap each extra name to its requirements under PEP 685 normalization.&[project.optional-dependencies] extra )items
setdefaultr   extendrT   )r|   	canonicalrt   reqsr4   s   &    r   _canonicalize_optional_depsr      s[     ')I#))+
9$B.t4b9@@-	
 ,
 r   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r"   r|   rw   project_namer5   selectedr@   environmentzMapping[str, str] | Noner&   rH   r   )r'   s   "r   r(   r(      s:     < <.<< < *	<
 <r   c           	     6  a Vf   \        V4      # \        V4      p\        V 4      p. p\        4       oV Uu. uF  p\        V4      NK  	  ppV'       d   VP	                  ^ 4      p	V	S9   d   K"  SP                  V	4       VP                  V	4       \        WTV	4       Fq  p
Ve=   V
P                  e/   \        V
P                  / VCR\        V	04      /C4      '       g   KC  VP                  V3R l\        V
P                  4       4       4       Ks  	  K  V# u upi )a:  Return ``selected`` plus every extra reachable through self-references.

When an extra's contents include a requirement of the form
``{project_name}[a, b]`` (the project depending on itself with
other extras activated), the referenced extras are walked
transitively.  Without this, an ``[all] = ["{name}[graphviz, otel,
...]"]`` self-reference leaves the actual third-party deps
(graphviz, opentelemetry-api, etc.) out of the resolver's root
requirements and look-ahead loses the ability to predict
candidates.

A self-reference carrying a PEP 508 marker (``{name}[fast];
python_version < "3.10"``) activates its extra only when the marker
evaluates true under ``environment``.  ``extra`` binds to the
one-name set of the extra being walked, so ``extra == "all"``
resolves against it.  ``environment`` ``None`` skips that check and
walks every self-reference, which is what a caller that defers
marker evaluation to each target wants.

The original ``selected`` order is preserved at the front of the
result; reachable extras are appended in BFS order without
duplicates.  ``project_name`` ``None`` short-circuits to the
input list (no project name = nothing to self-reference).
Unknown extras are tolerated here; the caller is expected to
feed the result into :func:`expand_extra_requirements`, which raises
if an extra is not declared.
r2   c              3  ^   <"   T F"  p\        V4      S9  g   K  \        V4      x  K$  	  R # 5irK   r   )rM   subseens   & r   rO   %expand_self_extras.<locals>.<genexpr>5  s0      -C$S)5 '!#&&-s   --)rR   r   r   setpopaddappend_self_referencesr-   r   	frozensetr   sortedextras)r|   r   r   r   canonical_projectcanonical_depsoutrC   worklistr2   r.   r   s   &&&&       @r   expand_self_extrasr      s   B H~),70?NCUD9ABA,Q/HB
QD=

5#NuMC'JJ*/JJ L; LE79K L  OO !#**-  N J+ Cs   Dc               (    V ^8  d   QhRRRRRRRR/# )r"   r   rw   r   r$   r2   r&   zIterator[Requirement]r   )r'   s   "r   r(   r(   =  s0      /  	r   c              #     "   V P                  VR4       F/  p \        V4      p\	        TP
                  4      T8X  g   K+  Tx  K1  	  R#   \        \        3 d     KI  i ; i5i)zYield the requirements of ``extra`` that name the project itself.

An unparseable requirement is skipped rather than raised on: this walk
only decides which extras are reachable.
Nr   )r_   r   r9   	TypeErrorr   rt   )r   r   r2   req_strr.   s   &&&  r   r   r   =  s^      "%%eR0	g&C SXX&*;;I 1 I& 		s-   A"A
A" 
A"
AA"AA"c               (    V ^8  d   QhRRRRRRRR/# )	r"   r|   rw   r   r5   r   r@   r&   zlist[Marker]r   )r'   s   "r   r(   r(   P  s0      .  	r   c           	         Vf   . # \        V4      p\        V 4      p\        WV4       UUu. uF2  p\        WCV4       F  pVP                  f   K  VP                  NK!  	  K4  	  upp# u uppi )zReturn the markers gating the self-references ``selected`` reaches.

The closure is walked without an environment, so the result holds every
clause :func:`expand_self_extras` could read under any environment.
)r   r   r   r   r-   )r|   r   r   r   r   r2   r.   s   &&&    r   self_extra_markersr   P  ss     	),70?N (XNNE#NuMC:: 	

M 	N  s   A(A(c               $    V ^8  d   QhRRRRRR/# )r"   r-   zMarker | Nonegatesfrozenset[str]r&   r   r   )r'   s   "r   r(   r(   f  s!     9 9 9~ 9& 9r   c                    V e   \        V 4      .M. pVP                  \        V4      4       \        RP	                  R V 4       4      4      # )z6AND a non-empty set of marker strings onto ``marker``.z and c              3  .   "   T F  pR V R2x  K  	  R# 5i)r,   )Nr   )rM   ps   & r   rO   _and_markers.<locals>.<genexpr>j  s     7A1#Qxs   )r$   r   r   r   join)r-   r   partss   && r   _and_markersr   f  s>    #/S[MRE	LL',,77788r   c               $    V ^8  d   QhRRRRRR/# )r"   r-   r   r2   r$   r&   z
str | boolr   )r'   s   "r   r(   r(   m  s!     * *& * * *r   c                    \        V 4      P                  R\        V04      /RR7      pVP                  4       '       d   R# VP	                  4       pVf   R# T# )a=  Reduce a self-ref activation marker against a bound ``extra``.

A self-reference is reached only because its extra is selected, so its
``extra == "<extra>"`` clause is already decided at expansion.  Restricts
the marker's environment set with ``extra`` bound to that one name and
reads off what survives: ``True`` (tautology, a bare dep), ``False``
(contradiction, does not activate), or a residual marker string of the
surviving environment conditions.

``extra`` binds as a one-name set, the PEP 685 set model the algebra
evaluates ``extra ==`` / ``extra !=`` under.  Environment variables the
binding leaves untouched stay in the residual, so a
variable-vs-variable clause naming ``extra`` (``sys_platform ==
extra``) is kept as a residual atom over the target's own value rather
than decided against the machine running nab.
r2   residual)on_unknown_variableFT)r   restrictr   is_emptyto_marker_string)r-   r2   r   r:   s   &&  r   _environment_residualr   m  s`    " &!**	)UG$%: + H $$&D<4)T)r   c               (    V ^8  d   QhRRRRRRRR/# )	r"   r|   rw   r   r5   r   r@   r&   rA   r   )r'   s   "r   r(   r(     s0     5 5.55 5 	5r   c                   V'       g   . # Ve   \        V4      MRp\        V 4      p. p\        4       pV Uu. uF  p\        V4      \        4       3NK  	  ppV'       d   VP	                  ^ 4      w  rW3V9   d   K%  VP                  W34       W9  d   RV	: R\        V4      : 2p\        V4      h\        WI,          RV	: 24       Fr  pVe8   \        VP                  4      V8X  d   VP                  \        WV
4      4       K>  V
'       d   \        VP                  V
4      Vn        VP                  V4       Kt  	  K  V# u upi )a  Flatten ``selected`` extras to requirements, propagating self-ref markers.

Flattens each selected extra over the self-reference closure
:func:`expand_self_extras` walks, carrying a self-reference's PEP 508
marker onto the requirements it pulls in.  With
``all = ["pkg[fast]; python_version < '3.10'"]`` and ``fast =
["dep"]``, selecting ``all`` yields ``dep; python_version < '3.10'``
rather than a bare ``dep`` that survives on every environment, so the
per-tuple universal parser drops the dep on the tuples it excludes.

Each activation path is walked separately, so a dep reachable through
two markers is required under their disjunction.  Unknown extras
raise ``LookupError``.
Nzextra z> is not declared in [project.optional-dependencies]; defined: r~   )r   r   r   r   r   r   r   LookupErrorrD   rt   r   _self_ref_edgesr   r-   r   )r|   r   r   r   r   r   visitedrC   r   r2   r   r<   r.   s   &&&          r   expand_extra_requirementsr     sA   & 	+7+C,'  1?NC/2uG5=25=	1	y{+X  2 ||A>W$UN#&	 ">>D^>T=WY  c""%!4UI>
C !,!#((+/@@E BC)#**e<
JJsO
 J52s   Ec               (    V ^8  d   QhRRRRRRRR/# )	r"   r.   r   r2   r$   r   r   r&   z list[tuple[str, frozenset[str]]]r   )r'   s   "r   r(   r(     s2     J J	J J)7J%Jr   c                   TpV P                   e>   \        V P                   V4      pVRJ d   . # \        V\        4      '       d
   W$0,          p\	        V P
                  4       Uu. uF  p\        V4      V3NK  	  up# u upi )aE  Worklist entries for the extras a self-reference activates.

The self-ref's own marker is reduced against the walked ``extra``: a
contradiction means it does not activate (no entries), a tautology
propagates the inherited ``gates`` unchanged, and an environment
residual is added to the gate carried onto the reached extras.
F)r-   r   rL   r$   r   r   r   )r.   r2   r   edger   r   s   &&&   r   r   r     su     D
zz(U;uIh$$:%D6<SZZ6HI6Hss#T*6HIIIs   %A>c               $    V ^8  d   QhRRRRRR/# )r"   groups/Mapping[str, Sequence[str | Mapping[str, str]]]r   r@   r&   rH   r   )r'   s   "r   r(   r(     s&     ) );)) )r   c                   / pV P                  4        F]  w  r4\        V\        4      '       g   \        V\        4      '       g   K3  VP	                  \        V4      . 4      P                  V4       K_  	  . p\        4       pV Uu. uF  p\        V4      NK  	  ppV'       d   VP                  ^ 4      p	W9   d   K!  VP                  V	4       VP                  V	4       VP                  V	R4       F^  p
\        V
\        4      '       g   K  V
P                  R4      p\        V\        4      '       g   KD  VP                  \        V4      4       K`  	  K  V# u upi )a{  Return ``selected`` plus every group reached through ``include-group``.

PEP 735 lets one group pull in another with
``{include-group = "other"}``.  A conflict declared on a group must
see the groups an umbrella group includes, so the membership test
runs over the transitive closure rather than the literal selection.
Group names compare canonicalised (PEP 503), matching the loaders.

Unknown or cyclic includes are tolerated here;
:func:`resolve_groups_to_requirements` raises on them when the
requirements themselves are loaded.  A group whose value is not a
list is skipped, and the loader reports it when that group is
selected.
zinclude-groupr   )r   rL   r$   r   r   r   r   r   r   r   r   r_   r   )r   r   canonical_groupsrt   entriesr   r   rC   r   groupentryincludes   &&          r   expand_group_includesr     s   $ BDgs##:gx+H+H##$5d$;R@GGP	 ( CUD.67h!!$hH7
Q=

5%))%4E%))))O4 gs++OO$5g$>? 5 J 8s   Ec                    V ^8  d   QhRRRR/# )r"   rV   r   r&   r   r   )r'   s   "r   r(   r(     s      
4r   c                2   V P                  R4      ;_uu_ 4       p\        P                  ! V4      pRRR4       XP                  R/ 4      p\	        V\
        4      '       g$   R\        V4      P                   2p\        V4      hV#   + '       g   i     L]; i)a[  Read [dependency-groups] from a pyproject.toml file (PEP 735).

Returns the raw group table: a mapping of group name to a list
of requirement strings or include records
(``{"include-group": "other-group"}``).  Returns an empty dict
when the table is absent so callers can pass the result to
:func:`resolve_groups_to_requirements` unconditionally.
rX   Nzdependency-groupsz)[dependency-groups] must be a table, got r[   )rV   rb   rc   ry   r<   s   &    r   read_pyproject_groupsr     sr     
4Azz!} 

((&
+Cc4  9$s):L:L9MN&s++J 
re   c               $    V ^8  d   QhRRRRRR/# )r"   r   r   r   r@   r&   rA   r   )r'   s   "r   r(   r(     s&     ? ?;?? ?r   c                   V'       g   . #  \        V .VO5!  p\        TR4      #   \         d   pRP                  R TP                   4       4      p\        ;QJ d&    R TP                   4       F  '       d   K   RM	  RM! R TP                   4       4      '       d   \        T4      ThRT 2p\        T4      ThRp?ii ; i)	at  Resolve PEP 735 group includes and return the union of requirements.

``selected`` names the groups whose requirements should be
expanded.  An unknown group name surfaces as :class:`LookupError`;
a malformed requirement string, cyclic include, or duplicate group
name surfaces as :class:`InvalidProjectRequirementError`.  Returns
an empty list when ``selected`` is empty.
z; c              3  8   "   T F  p\        V4      x  K  	  R # 5irK   )r$   rM   es   & r   rO   1resolve_groups_to_requirements.<locals>.<genexpr>&  s     <+;a3q66+;s   c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irK   )rL   r   r   s   & r   rO   r   '  s     D3Caz![))3CrQ   FTzinvalid [dependency-groups]: Nz[dependency-groups])r	   r
   r   
exceptionsrS   r   r   rD   )r   r   resolvedr   detailr<   s   &&    r   resolve_groups_to_requirementsr     s     	=,V?h? h(=>>  =<5+;+;<<3D53C3CD333D53C3CDDDf%50-fX6,S1u<=s!   % CAB=;$B= B==Cc               (    V ^8  d   QhRRRRRRRR/# )	r"   rangeszMapping[str, VersionRange]sourcesrw   kindr$   r&   Noner   )r'   s   "r   r(   r(   .  s0      &( 	
 
r   c                  a V P                  4        UUu. uF  w  r4VP                  '       g   K  VNK  	  pppV'       g   R# RP                  V3R lV 4       4      pRV RV 2p\        V4      hu uppi )a?  Raise :class:`ResolutionError` if any folded range is empty.

``ranges`` holds one intersected range per package and ``sources``
the requirement strings folded into each.  An empty range means
those requirements share no version; the error lists them.

``kind`` ("requirement" or "constraint") only shapes the wording.
N
c              3  `   <"   T F#  pR V RRP                  SV,          4       2x  K%  	  R# 5i)z  r7   z, N)r   )rM   rt   r   s   & r   rO   *raise_for_unsatisfiable.<locals>.<genexpr>?  s/      <ID"TF"TYYwt}-./Ms   +.zconflicting z s leave no satisfiable version:
)r   r   r   r   )r   r   r   rt   range_unsatisfiabler   r<   s   &f$     r   raise_for_unsatisfiabler   .  sp     /5llnPnldTTnMPYY <I F ?x
HC
#
 Qs
   A1A1)r   r   r   r   r   r=   rD   r   rq   rl   r   ru   rz   rT   r   r   rK   )9r   
__future__r   collections.abcr   r   typingr   r]   nab_resolver.errorsr   _conflict_kindr   r   #_vendor.packaging.dependency_groupsr	   _vendor.packaging.errorsr
   _vendor.packaging.markersr   _vendor.packaging.requirementsr   _vendor.packaging.utilsr   metadatar   r   pathlibr   _vendor.packaging.rangesr   __all__r9   r   r   r   r1   r=   rD   rT   rd   rl   rq   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s    H " -    / ? J 4 - 7 6 1(6(TZ Ty 06:*C

$3B#VL3$
<~&,9*85pJ()X(?2r   