+
    2j                        R t ^ RIHt ^ RIHt ^RIHt ]'       d   ^ RIHt ^ RI	H
t
Ht ^RIHt ^RIHt R.t ! R	 R4      tR
# )z@Provider that bridges packaging's PEP 440 types to nab-resolver.)annotations)TYPE_CHECKING)VersionRange)Mapping)IncompatibilityRangeProtocol)SpecifierSet)VersionPackagingProviderc                      ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	^t
R R lt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tR# )r
   a  In-memory provider using PEP 440 versions.

Packages are strings, versions are :class:`packaging.version.Version`,
and dependency constraints are :class:`packaging.specifiers.SpecifierSet`,
converted to :class:`packaging.ranges.VersionRange` for the resolver.
c                    V ^8  d   QhRRRR/# )   packagesz1dict[str, dict[Version, dict[str, SpecifierSet]]]returnNone )formats   "i/home/user/billing-ledger-validation/.venv/lib/python3.14/site-packages/nab_python/_packaging_provider.py__annotate__PackagingProvider.__annotate__   s     " "C" 
"    c                    Wn         R# )z'Create a provider from a package graph.N	_packages)selfr   s   &&r   __init__PackagingProvider.__init__   s	    
 "r   c                    V ^8  d   QhRRRR/# )r   packagestrr   zlist[Version]r   )r   s   "r   r   r   %   s     D DS D] Dr   c                	~    WP                   9  d   . # \        V P                   V,          P                  4       R R7      # )T)reverse)r   sortedkeysr   r   s   &&r   _get_versionsPackagingProvider._get_versions%   s0    ..(IdnnW-224dCCr   c               $    V ^8  d   QhRRRRRR/# )r   r   r   version_rangeRangeProtocol[Version]r   zVersion | Noner   )r   s   "r   r   r   *   s$      +A	r   c                J    V P                  V4       F  pW29   g   K  Vu # 	  R# )z1Pick the newest version within the allowed range.N)r%   )r   r   r(   versions   &&& r   choose_version PackagingProvider.choose_version*   s)     ))'2G' 3 r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r(   r)   r   boolr   )r   s   "r   r   r   3   s)     L LL+AL	Lr   c                   a \         ;QJ d.    V3R lV P                  V4       4       F  '       g   K   R# 	  R# ! V3R lV P                  V4       4       4      # )z8Report whether any available version falls in the range.c              3  ,   <"   T F	  qS9   x  K  	  R # 5iNr   .0vr(   s   & r   	<genexpr>;PackagingProvider.has_satisfying_version.<locals>.<genexpr>7   s     K/J!%/Js   TF)anyr%   )r   r   r(   s   &&fr   has_satisfying_version(PackagingProvider.has_satisfying_version3   sD     sKt/A/A'/JKssKsKsKt/A/A'/JKKKr   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r+   r	   r   zdict[str, VersionRange]r   )r   s   "r   r   r   9   s$     
 

%,
	 
r   c           	        V P                   P                  V/ 4      P                  V/ 4      pVP                  4        UUu/ uF4  w  rEYE'       d   VP                  4       M\        P
                  ! RR7      bK6  	  upp# u uppi )z/Convert SpecifierSet deps to VersionRange deps.F)admit_arbitrary)r   getitemsto_ranger   full)r   r   r+   rawdepspecs   &&&   r   get_dependencies"PackagingProvider.get_dependencies9   sq     nn  "-11'2> !YY[
(	 T$--/|/@/@QV/WW(
 	
 
s    :A>c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   E   s     L LT Lr   c                    R# )z=No-op: nothing this in-memory provider answers arrives async.Nr   r   s   &r   begin_decision_scan%PackagingProvider.begin_decision_scanE       r   Nc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   r   r(   r)   conflict_countszMapping[str, int]culprit_countszMapping[str, int] | Noner   ztuple[bool, int]r   )r   s   "r   r   r   H   s<     ( (( .( +	(
 1( 
(r   c                   a ?VP                  V^ 4      V P                  8  pV P                  V4      p\        V3R lV 4       4      pV'       * V3# )a>  Prioritize packages for resolution order.

Returns a tuple compared with min(), so lower = decided first.
Packages with many conflicts are promoted so the resolver
discovers incompatibilities before deciding downstream packages.
``culprit_counts`` is accepted for protocol compatibility but
not used by this provider.
c              3  8   <"   T F  qS9   g   K  ^x  K  	  R# 5i)   Nr   r3   s   & r   r6   /PackagingProvider.prioritize.<locals>.<genexpr>Z   s     A(Q=.@qq(s   
)r>   _CONFLICT_THRESHOLDr%   sum)r   r   r(   rN   rO   promotedversionsmatchings   &&f&&   r   
prioritizePackagingProvider.prioritizeH   sR     "&&w2d6N6NN%%g.A(AAh''r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r/   r   )r   s   "r   r   r   ]   s        r   c                    ?R# )zCAll packages are immediately decidable for this in-memory provider.Tr   r$   s   &&r   is_readyPackagingProvider.is_ready]   s    r   c               $    V ^8  d   QhRRRRRR/# )r   positive_rangesz$Mapping[str, RangeProtocol[Version]]	decisionszMapping[str, Version]r   r   r   )r   s   "r   r   r   b   s-     M M=M )M 
	Mr   c                    R# )z>No-op: in-memory provider does not use partial solution state.Nr   )r   r`   ra   s   &&&r   receive_partial_solution_hint/PackagingProvider.receive_partial_solution_hintb   rL   r   c                   V ^8  d   QhRR/# )r   r   z#list[Incompatibility[str, Version]]r   )r   s   "r   r   r   i   s      )L r   c                    . # )z.No queued clauses for this in-memory provider.r   rI   s   &r   consume_pending_clauses)PackagingProvider.consume_pending_clausesi       	r   c                   V ^8  d   QhRR/# )r   r   z	list[str]r   )r   s   "r   r   r   m   s       r   c                    . # )z7No force-backtrack signal from this in-memory provider.r   rI   s   &r   consume_force_backtrack_targets1PackagingProvider.consume_force_backtrack_targetsm   ri   r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r+   r	   r   zVersionRange | Noner   )r   s   "r   r   r   q   s"      c G @S r   c                
    ??R# )z?No widening: dependency clauses keep the exact decided version.Nr   )r   r   r+   s   &&&r   widen_decision PackagingProvider.widen_decisionq   s
    Wr   c               $    V ^8  d   QhRRRRRR/# )r   r   r   
constraintr)   r   r   )r   s   "r   r   r   v   s$      (>	r   c                    ?V# )z'Identity: constraints render as stored.r   )r   r   rs   s   &&&r   narrow_for_display$PackagingProvider.narrow_for_displayv   s     r   r   r2   )__name__
__module____qualname____firstlineno____doc__r   r%   r,   r9   rE   rT   rJ   rY   r]   rc   rg   rl   rp   ru   __static_attributes__r   r   r   r
   r
      sY    "D
L
 L(*
M
 r   N)r{   
__future__r   typingr   _vendor.packaging.rangesr   collections.abcr   nab_resolver.typesr   r   _vendor.packaging.specifiersr   _vendor.packaging.versionr	   __all__r
   r   r   r   <module>r      s8    F "   2'A:2 
e er   