+
    ,j                    Z    ^ RI Ht ^ RIHt ^ RIHt ]'       d   ^ RIHt  ! R R4      tR# )    )annotations)TYPE_CHECKING)PyVersionSpec)Versionc                      ] tR t^t$ RtR]R&   RR R llt]R R l4       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# )VersionSpeca  
A version specification represents a constraint on a version.

Version specifications can be simple like ">=1.2.3" or complex
with multiple constraints like ">=1.2.3,<2.0.0" or ">=1.2.3|<1.0.0".

Examples
--------
```python
>>> from rattler import VersionSpec, Version
>>> spec = VersionSpec(">=1.2.3,<2.0.0")
>>> version = Version("1.5.0")
>>> spec.matches(version)
True
>>> version2 = Version("2.1.0")
>>> spec.matches(version2)
False
>>>
```
r   _specc               $    V ^8  d   QhRRRRRR/# )   specstrstrictboolreturnNone )formats   "<lib/python3.14/site-packages/rattler/version/version_spec.py__annotate__VersionSpec.__annotate__#   s!      S $ 4     c                    \        V\        4      '       d   \        W4      V n        R# \	        R\        V4      P                  : R24      h)a  
Construct a new VersionSpec from a string.

Parameters
----------
spec : str
    The version specification string (e.g., ">=1.2.3,<2.0.0")
strict : bool, optional
    If True, use strict parsing mode (default: False)

Raises
------
InvalidVersionSpecError
    If the version specification string is invalid

Examples
--------
```python
>>> spec = VersionSpec(">=1.2.3,<2.0.0")
>>> spec_strict = VersionSpec(">=1.2.3", strict=True)
>>> spec_any = VersionSpec("*")
>>>
```
z2VersionSpec constructor received unsupported type z for the `spec` parameterN)
isinstancer   r   r	   	TypeErrortype__name__)selfr   r   s   &&&r   __init__VersionSpec.__init__#   sB    2 dC  &t4DJDT$ZEXEXD[[tu r   c                    V ^8  d   QhRRRR/# )r   py_specr   r   r   r   )r   s   "r   r   r   D   s      M k r   c                4    V P                  V 4      pWn        V# )z<Construct Rattler VersionSpec from FFI PyVersionSpec object.)__new__r	   )clsr!   r   s   && r   _from_py_version_spec!VersionSpec._from_py_version_specC   s     {{3
r   c                    V ^8  d   QhRRRR/# )r   versionr   r   r   r   )r   s   "r   r   r   J   s     4 4w 44 4r   c                L    V P                   P                  VP                  4      # )a  
Check if a version matches this version specification.

Parameters
----------
version : Version
    The version to check

Returns
-------
bool
    True if the version matches the specification, False otherwise

Examples
--------
```python
>>> from rattler import VersionSpec, Version
>>> spec = VersionSpec(">=1.2.3,<2.0.0")
>>> spec.matches(Version("1.5.0"))
True
>>> spec.matches(Version("2.1.0"))
False
>>> spec.matches(Version("1.2.3"))
True
>>> spec.matches(Version("2.0.0"))
False
>>>
```
)r	   matches_version)r   r(   s   &&r   r*   VersionSpec.matchesJ   s    < zz!!'"2"233r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r   j   s     # # #r   c                6    V P                   P                  4       # )z
Returns the string representation of the version specification.

Examples
--------
```python
>>> str(VersionSpec(">=1.2.3,<2.0.0"))
'>=1.2.3,<2.0.0'
>>>
```
r	   as_strr   s   &r   __str__VersionSpec.__str__j   s     zz  ""r   c                   V ^8  d   QhRR/# r.   r   )r   s   "r   r   r   x   s     7 7# 7r   c                >    RV P                   P                  4        R2# )z
Returns a representation of the version specification.

Examples
--------
```python
>>> VersionSpec(">=1.2.3,<2.0.0")
VersionSpec(">=1.2.3,<2.0.0")
>>>
```
zVersionSpec("z")r0   r2   s   &r   __repr__VersionSpec.__repr__x   s!     tzz0023266r   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r      s     % %# %r   c                6    V P                   P                  4       # )z
Computes the hash of this instance.

Examples
--------
```python
>>> hash(VersionSpec(">=1.2.3")) == hash(VersionSpec(">=1.2.3"))
True
>>> hash(VersionSpec(">=1.2.3")) == hash(VersionSpec(">=2.0.0"))
False
>>>
```
)r	   __hash__r2   s   &r   r<   VersionSpec.__hash__   s     zz""$$r   c                    V ^8  d   QhRRRR/# r   otherobjectr   r   r   )r   s   "r   r   r           ) )F )t )r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # )z
Returns True if this instance represents the same version spec as `other`.

Examples
--------
```python
>>> VersionSpec(">=1.2.3") == VersionSpec(">=1.2.3")
True
>>> VersionSpec(">=1.2.3") == VersionSpec(">=2.0.0")
False
>>>
```
r   r   NotImplementedr	   r   r@   s   &&r   __eq__VersionSpec.__eq__   *     %--!!zzU[[((r   c                    V ^8  d   QhRRRR/# r?   r   )r   s   "r   r   r      rB   r   c                l    \        V\        4      '       g   \        # V P                  VP                  8g  # )z
Returns False if this instance represents the same version spec as `other`.

Examples
--------
```python
>>> VersionSpec(">=1.2.3") != VersionSpec(">=1.2.3")
False
>>> VersionSpec(">=1.2.3") != VersionSpec(">=2.0.0")
True
>>>
```
rD   rF   s   &&r   __ne__VersionSpec.__ne__   rI   r   )r	   N)F)r   
__module____qualname____firstlineno____doc____annotations__r   classmethodr%   r*   r3   r7   r<   rG   rL   __static_attributes__r   r   r   r   r      sM    * @  4@#7% )$) )r   r   N)	
__future__r   typingr   rattler.rattlerr   rattler.version.versionr   r   r   r   r   <module>rY      s     "   )/m) m)r   