+
    kGjO              
       "   R t ^ RIt^ RIt^ RIHt ^ RIHt ]P                  R#8  d   ^ RIH	t	 M^ RIH
t
  ! R R]]
4      t	 ! R R	]	4      t ! R
 R]	4      tRRRRRRRRRR/tRRRRRR/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# )$a  Marker conversion.

Marker conversion includes:
- Convert Python markers to `python...` matchspec fragments, including
  `python_version not in "x, y"` -> `(python!=x and python!=y)`.
- Convert platform/os markers to virtual packages when feasible
  (`__win`, `__linux`, `__osx`, `__unix`).
- Keep extras in `extra_depends`, with remaining non-extra marker logic
  encoded via `[when="..."]`.
- Drop unsupported marker dimensions (for example interpreter/machine-specific
  variants) for these noarch channel tests.
N)Any)Marker)StrEnum)Enumc                       ] tR t^tRtR# )r    N)__name__
__module____qualname____firstlineno____static_attributes__r       2lib/python3.14/site-packages/conda_pypi/markers.pyr   r      s    r   r   c                   :    ] tR t^tRtRtRtRtRtRt	Rt
RtR	tR
tR# )	MarkerVarpython_versionpython_full_versionextrasys_platformplatform_systemos_nameimplementation_nameplatform_python_implementationplatform_machiner   N)r   r	   r
   r   PYTHON_VERSIONPYTHON_FULL_VERSIONEXTRASYS_PLATFORMPLATFORM_SYSTEMOS_NAMEIMPLEMENTATION_NAMEPLATFORM_PYTHON_IMPLEMENTATIONPLATFORM_MACHINEr   r   r   r   r   r      s3    %N/E!L'OG/%E")r   r   c                   "    ] tR t^)tRtRtRtRtR# )MarkerOpz==z!=znot inr   N)r   r	   r
   r   EQNENOT_INr   r   r   r   r$   r$   )   s    	B	BFr   r$   windows__winwin32linux__linuxdarwin__osxcygwin__unixntposixc          	      V    V ^8  d   QhR\         R\         R\         R\         R,          /# )   marker_nameopmarker_valuereturnNstr)formats   "r   __annotate__r<   =   s-     - -# -3 -c -cTXj -r   c                d   V \         P                  \         P                  09   d   V\        P                  8X  dv   VP                  R4       Uu. uF"  pVP                  4       ;p'       g   K  RV 2NK$  	  ppV'       g   R# \        V4      ^8X  d
   V^ ,          # RRP                  V4       R2# RV V 2# V \         P                  \         P                  09   dU   \        P                  V4      pV\        P                  8X  d   V'       d   V# V\        P                  8X  d
   VR
9   d   R# R# V \         P                  8X  dg   \         P                  V4      pV'       d&   V\        P                  \        P                  09  d   R# V\        P                  8X  d   V# VR	8X  d   R# R	# R# u upi )a  Map a single PEP 508 marker atom to a MatchSpec-like fragment.

Examples:
- ("sys_platform", "==", "win32") -> "__win"
- ("python_version", "<", "3.11") -> "python<3.11"
- ("python_version", "not in", "3.0, 3.1") -> "(python!=3.0 and python!=3.1)"
- ("implementation_name", "==", "cpython") -> None

The following marker_names are unsupported and return None:
- "platform_machine"
- "implementation_name"
- "platform_python_implementation"
- "extra"

,zpython!=N(z and )pythonr0   r)   >   r*   r/   r(   )r   r   r   r$   r'   splitstriplenjoinr   r   SYSTEM_TO_VIRTUAL_PACKAGEgetr%   r&   r   OS_NAME_TO_VIRTUAL_PACKAGE)r5   r6   r7   valueversionclausesmappeds   &&&    r   _normalize_marker_clauserM   =   sp     y//1N1NOO  *//44E${{},G, %(7)$4  
 !$W!271:T!GLL<Q;RRS8TTtL>**y--y/H/HII*..|<M1O!Oi'''+//=HKK#==M!W,x9'97s   F--	F-c                v    V ^8  d   QhR\         R\        \        R,          \        \        ,          3,          /# )r4   markerr8   N)r   tupler:   list)r;   s   "r   r<   r<   m   s-     !2 !2 !25tTRUYAV;W !2r   c                   aa . oR VV3R lloS! \        V R. 4      4      pV\        \        P                  S4      4      3# )zSplit a Marker into optional non-extra condition and extra group names.

Examples:
- `extra == "docs"` -> `(None, ["docs"])`
- `python_version < "3.11" and extra == "test"` -> `("python<3.11", ["test"])`
- `sys_platform == "win32"` -> `("__win", [])`
c                >    V ^8  d   QhR\         R\        R,          /# )r4   noder8   Nr   r:   )r;   s   "r   r<   9extract_marker_condition_and_extras.<locals>.__annotate__w   s       d
 r   c                 V  < \        V \        4      '       d   \        V 4      ^8X  d   \        V ^ ,          4      p\        V ^,          4      p\        V ^,          4      P	                  4       pV\
        P                  8X  d)   V\        P                  8X  d   SP                  V4       R# \        WV4      # \        V \        4      '       d_   V '       dW   S! V ^ ,          4      p\        V R,          V R,          4       F'  w  r%S! V4      p\        WBP	                  4       V4      pK)  	  V# R# )   N:   Nr4   :r4   Nr4   )
isinstancerP   rD   _marker_valuelowerr   r   r$   r%   appendrM   rQ   zip_combine_conditions)	rT   r5   r6   r7   condition_exprrhsright_conditionextrasparse_marker_nodes	   &      r   rd   >extract_marker_condition_and_extras.<locals>.parse_marker_nodew   s    dE""s4yA~'Q0KtAw'B(a1779Lioo-"2Cl++K\JJdD!!d.tAw7NtDz4:6"3C"8!4^XXZQ`!a 7 "!r   _markers)getattrrQ   dictfromkeys)rO   	conditionrc   rd   s   & @@r   #extract_marker_condition_and_extrasrk   m   sB     F , "'&*b"ABId4==0111r   c                r    V ^8  d   QhR\         \        ,          \        \        ,          ,          R\        /# )r4   requirement_extrasr8   )setr:   	frozenset)r;   s   "r   r<   r<      s'     7 7SIcN1J 7s 7r   c                R    V '       g   R# RRP                  \        V 4      4       R2# )zyBracket suffix for conda `MatchSpec` optional dependency extras (PEP 508 extras).

Output order is sorted for stability.
 [r>   ])rE   sorted)rm   s   &r   dependency_extras_suffixru      s)    
 sxx1234A66r   c                J    V ^8  d   QhR\         R\         R,          R\         /# )r4   
dependencyrj   Nr8   r9   )r;   s   "r   r<   r<      s%     - - -d
 -s -r   c                 R    V'       g   V # \         P                  ! V4      pV  R V R2# )z[when=rs   )jsondumps)rw   rj   s   &&r   dependency_whenr{      s,    

9%I\	{!,,r   c                0    V ^8  d   QhR\         R\        /# )r4   tokenr8   rU   )r;   s   "r   r<   r<      s     / / / /r   c                .    \        V R\        V 4      4      # )z7Extract the textual value from packaging marker tokens.rI   )rg   r:   )r}   s   &r   r[   r[      s    5'3u:..r   c          	      r    V ^8  d   QhR\         R,          R\         R\         R,          R\         R,          /# )r4   leftNr6   rightr8   r9   )r;   s   "r   r<   r<      s4     $ $cDj $c $#* $t $r   c                B    V f   V# Vf   V # W8X  d   V # RV  RV RV R2# )z@Combine optional left/right expressions with a boolean operator.r?    r@   r   )r   r6   r   s   &&&r   r_   r_      s;    |}}tfAbT5'##r   )rX      )__doc__ry   systypingr   packaging.markersr   version_infoenumr   r   r:   r   r$   rF   rH   rM   rk   ru   r{   r[   r_   r   r   r   <module>r      s     
  $w#t 	* 	*w  wWYgh  	'wX -`!2H7-/
$r   