+
    ,j,!                        ^ RI Ht ^ RIHtHtHtHt ^ RIH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
 R4      tR# )    )annotations)DictListOptionalUnion)Channel)LockChannel)LockedPackagePypiLockedPackage)Platform)PyEnvironment)RepoDataRecord)LockPlatformc                      ] tR t^t$ RtR]R&   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 lt]R R l4       tR R ltRtR# )Environmentz<
Information about a specific environment in the lock-file.
r   _envc               (    V ^8  d   QhRRRRRRRR/# )	   namestrrequirementsz$Dict[Platform, List[RepoDataRecord]]channelsz!List[Union[Channel, LockChannel]]returnNone )formats   "8lib/python3.14/site-packages/rattler/lock/environment.py__annotate__Environment.__annotate__   s,     
 

'K
Wx
	
    c                   . pV Fc  p\        V\        4      '       d0   VP                  \        \	        V4      4      P
                  4       KH  VP                  VP
                  4       Ke  	  \        TVP                  4        UUUu/ uF+  w  rgVP                  V Uu. uF  qP                  NK  	  upbK-  	  upppVR7      V n
        R# u upi u upppi )z
Create a new environment.
)r   recordsr   N)
isinstancer	   appendr   r   _channelr   items_inner_recordr   )	selfr   r   r   py_channelschannelplatformr"   records	   &&&&     r   __init__Environment.__init__   s     G';//""73w<#8#A#AB""7#3#34	   " dpcucucwcwL_Xw!GwV..w!GGcw !
	 "Hs   CC	0C	Cc                   V ^8  d   QhRR/# )r   r   zList[LockPlatform]r   )r   s   "r   r   r   -   s     W W- Wr    c                    V P                   P                  4        Uu. uF  p\        P                  ! V4      NK  	  up# u upi )a  
Returns all the platforms for which we have a locked-down environment.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> env.platforms()
[...]
>>>
```
)r   	platformsr   _from_py_lock_platform)r)   ps   & r   r2   Environment.platforms-   s8     AE		@S@S@UV@U133A6@UVVV   ?c                   V ^8  d   QhRR/# )r   r   zList[LockChannel]r   )r   s   "r   r   r   >   s     T T+ Tr    c                    V P                   P                  4        Uu. uF  p\        P                  ! V4      NK  	  up# u upi )a  
Returns the channels that are used by this environment.
Note that the order of the channels is significant.
The first channel is the highest priority channel.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> env.channels()
[LockChannel(url="https://conda.anaconda.org/conda-forge/")]
>>>
```
)r   r   r	   _from_py_lock_channel)r)   cs   & r   r   Environment.channels>   s7    " ?Cii>P>P>RS>R11!4>RSSSr6   c                    V ^8  d   QhRRRR/# )r   r,   r   r   zOptional[List[LockedPackage]]r   )r   s   "r   r   r   Q   s       2O r    c                    V P                   P                  VP                  4      ;p'       d'   V Uu. uF  p\        P                  ! V4      NK  	  up# R# u upi )a  
Returns all the packages for a specific platform in this environment.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> platform = env.platforms()[0]
>>> env.packages(platform)[0]
CondaLockedBinaryPackage(name='tzdata',location='https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda')
>>>
```
N)r   packagesr'   r
   _from_py_locked_packager)   r,   r>   r4   s   &&  r   r>   Environment.packagesQ   sK      yy))(//::8:FNOhM99!<hOO P   Ac                   V ^8  d   QhRR/# )r   r   z'Dict[LockPlatform, List[LockedPackage]]r   )r   s   "r   r   r   e   s     
 
&M 
r    c                    V P                   P                  4        UUUu/ uF@  w  r\        P                  ! V4      V Uu. uF  p\        P
                  ! V4      NK  	  upbKB  	  uppp# u upi u upppi )aI  
Returns a list of all packages and platforms defined for this environment.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> pkgs = env.packages_by_platform()
>>> list(pkgs.keys())
[LockPlatform(...)]
>>>
```
)r   packages_by_platformr   r3   r
   r?   r@   s   &   r   rE    Environment.packages_by_platforme   sk    $ )-		(F(F(H
(H$ //9nv;wnvijM<a<abc<dnv;ww(H
 	
;w
s    A/A*A/*A/c                   V ^8  d   QhRR/# )r   r   z"Dict[str, List[PypiLockedPackage]]r   )r   s   "r   r   r   z   s     
 
	+
r    c                    V P                   P                  4       P                  4        UUUu/ uF+  w  rY Uu. uF  p\        P                  ! V4      NK  	  upbK-  	  uppp# u upi u upppi )a  
Returns all pypi packages for all platforms.

The keys are platform names (e.g., "linux-64", "osx-arm64").

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> pypi_packages = env.pypi_packages()
>>> pypi_packages["osx-arm64"][0]
PypiLockedPackage(name='charset-normalizer',location='https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl#sha256=55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6')
>>>
```
)r   pypi_packagesr&   r   r?   )r)   platform_namepypi_tuppypis   &   r   rI   Environment.pypi_packagesz   si    , .2YY-D-D-F-L-L-N
-N) X`aX`PT-EEdKX`aa-N
 	
a
   A(A#A(#A(c                   V ^8  d   QhRR/# )r   r   zDict[str, List[RepoDataRecord]]r   )r   s   "r   r   r      s     
 
(G 
r    c                    V P                   P                  4       P                  4        UUUu/ uF+  w  rY Uu. uF  p\        P                  ! V4      NK  	  upbK-  	  uppp# u upi u upppi )ae  
Returns all conda packages for all platforms.

The keys are platform names (e.g., "linux-64", "osx-arm64").

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> env.conda_repodata_records()
{'osx-arm64': [RepoDataRecord(...), ...]}
>>>
```
)r   conda_repodata_recordsr&   r   _from_py_record)r)   rJ   r"   rs   &   r   rQ   "Environment.conda_repodata_records   sd    & -1II,L,L,N,T,T,V
,V( wOw!N::1=wOO,V
 	
O
rN   c                    V ^8  d   QhRRRR/# )r   r,   r   r   zOptional[List[RepoDataRecord]]r   )r   s   "r   r   r      s      L Mk r    c                    V P                   P                  VP                  4      ;p'       d'   V Uu. uF  p\        P                  ! V4      NK  	  up# R# u upi )a  
Takes all the conda packages, converts them to [`RepoDataRecord`] and returns them or
returns an error if the conversion failed. Returns `None` if the specified platform is not
defined for this environment.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> platform = env.platforms()[0]
>>> rdr = env.conda_repodata_records_for_platform(platform)
>>> rdr
[...]
>>> rdr[0]
RepoDataRecord(...)
>>>
```
N)r   #conda_repodata_records_for_platformr'   r   rR   )r)   r,   r"   rS   s   &&  r   rW   /Environment.conda_repodata_records_for_platform   sK    * iiCCHOOTT7T?FGw!N2215wGG HrB   c                    V ^8  d   QhRRRR/# )r   r,   r   r   z!Optional[List[PypiLockedPackage]]r   )r   s   "r   r   r      s      < De r    c                    V P                   P                  VP                  4      ;p'       d'   V Uu. uF  p\        P                  ! V4      NK  	  up# R# u upi )a  
Returns all the pypi packages and their associated environment data for the specified
platform. Returns `None` if the platform is not defined for this environment.

Examples
--------
```python
>>> from rattler import LockFile
>>> lock_file = LockFile.from_path("../test-data/test.lock")
>>> env = lock_file.default_environment()
>>> platform = env.platforms()[0]
>>> osx_pypi_pkgs = env.pypi_packages_for_platform(platform)
>>> osx_pypi_pkgs
[...]
>>> osx_pypi_pkgs[0]
PypiLockedPackage(name='charset-normalizer',location='https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl#sha256=55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6')
>>>
```
N)r   pypi_packages_for_platformr'   r   r?   )r)   r,   datapkgs   &&  r   r[   &Environment.pypi_packages_for_platform   sL    ( 9977HH4HNRSds%==cBdSS TrB   c                    V ^8  d   QhRRRR/# )r   py_environmentr   r   r   r   )r   s   "r   r   r      s      - K r    c                4    V P                  V 4      pWn        V# )z>
Construct Rattler Environment from FFI PyEnvironment object.
)__new__r   )clsr`   envs   && r   _from_py_environment Environment._from_py_environment   s    
 kk#!
r    c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r      s      # r    c                    R# )z.
Returns a representation of the Environment.
zEnvironment()r   )r)   s   &r   __repr__Environment.__repr__   s     r    )r   N)__name__
__module____qualname____firstlineno____doc____annotations__r.   r2   r   r>   rE   rI   rQ   rW   r[   classmethodre   ri   __static_attributes__r   r    r   r   r      s\     
.W"T&(
*
2
,20   r    r   N)
__future__r   typingr   r   r   r   rattler.channelr   rattler.lock.channelr	   rattler.lock.packager
   r   rattler.platform.platformr   rattler.rattlerr   rattler.repo_data.recordr   rattler.lock.platformr   r   r   r    r   <module>r|      s/    " . . # , A . ) 3 .X Xr    