a
    :gh                     @  s   U d dl mZ d dlZd dlZd dlZd dlZdZdZded< dZ	ded< ddd	d
Z
dddddZdddddZddddZdddddZdd Ze
 ZdZdd ZeeZeeZdS )    )annotationsNz0.4.30str_release_versionz
str | None	_git_hash)returnc                   C  s   t d urt S ttpttS N)r   _version_from_git_tree_version_version_from_todays_date r   r   [/mounts/lovelace/software/anaconda3/envs/metaDMG/lib/python3.9/site-packages/jax/version.py_get_version_string!   s    r   )base_versionr   c                 C  s   t j d}|  d| S )N%Y%m%d.dev)datetimedatetodaystrftime)r   
datestringr   r   r   r
   )   s    r
   c                 C  s   zt jt jt}tjg d|tjtjd}| \}}|	 
 dd\}}tjt|d}| svJ | sJ W n   Y d S 0 |  d| d| S d S )N)gitshowz-sz--format=%at-%hHEAD)cwdstdoutstderr-   r   r   +)ospathdirnamerealpath__file__
subprocessPopenPIPEcommunicatedecodestripsplitr   r   fromtimestampintr   	isnumericisalnum)r   Zroot_directorypr   _	timestampZcommit_hashr   r   r   r   r   .   s    
r   c                   C  sX   t durt S tjds$tjdr,ttS tjdsDtjdrHtS ttpVttS )a]  Determine the version at build time.

  The returned version string depends on which environment variables are set:
  - if JAX_RELEASE or JAXLIB_RELEASE are set: version looks like "0.4.16"
  - if JAX_NIGHTLY or JAXLIB_NIGHTLY are set: version looks like "0.4.16.dev20230906"
  - if none are set: version looks like "0.4.16.dev20230906+ge58560fdc
  NZJAX_NIGHTLYZJAXLIB_NIGHTLYZJAX_RELEASEZJAXLIB_RELEASE)r   r   environgetr
   r	   r   r   r   r   r   _get_version_for_buildB   s    r4   None)fnamer   c           	      C  s   t  }d}d|}t| }| }||dkrHtd|d|  |||}tj	d}|rd}d|}||dkrtd|d|  |||}|
| d	S )
zJUsed by setup.py to write the specified version info into the source tree.z _release_version: str = '0.4.30'z_release_version: str =    zBuild: could not find z in ZJAX_GIT_HASHz_git_hash: str | None = Nonez_git_hash: str = N)r4   pathlibPath	read_textcountRuntimeErrorreplacer   r2   r3   
write_text)	r6   Zrelease_versionZold_version_stringZnew_version_stringZfhandlecontentsZgithashZold_githash_stringZnew_githash_stringr   r   r   _write_versionS   s     


r@   c                   sL   ddl m} ddlm} G  fddd|}G  fddd|}t||dS )	Nr   )build_py)sdistc                      s   e Zd Z fddZ  ZS )z _get_cmdclass.<locals>._build_pyc                   sV   t d u r8tj| jtjt}tj|r8t| t	 
  t d u rRt| d S r   )r   r   r    join	build_libbasenamer#   isfileunlinksuperrunr@   )selfZthis_file_in_build_dir	__class__pkg_source_pathr   r   rI   n   s    


z$_get_cmdclass.<locals>._build_py.run)__name__
__module____qualname__rI   __classcell__r   rM   rL   r   	_build_pym   s   rT   c                      s   e Zd Z fddZ  ZS )z_get_cmdclass.<locals>._sdistc                   s6   t  || td u r2ttj|tjt d S r   )	rH   make_release_treer   r@   r   r    rC   rE   r#   )rJ   base_dirfilesrK   r   r   rU   ~   s
    
z/_get_cmdclass.<locals>._sdist.make_release_tree)rN   rO   rP   rU   rQ   r   rR   rS   r   _sdist}   s   rX   )rB   rA   )Zsetuptools.command.build_pyrA   Zsetuptools.command.sdistrB   dict)rM   Zbuild_py_origZ
sdist_origrT   rX   r   rR   r   _get_cmdclassi   s
    rZ   z0.4.27c                 C  s   t dd | dD S )Nc                 s  s   | ]}|  rt|V  qd S r   )isdigitr,   ).0ir   r   r   	<genexpr>       z$_version_as_tuple.<locals>.<genexpr>.)tupler*   )version_strr   r   r   _version_as_tuple   s    rc   )
__future__r   r   r   r8   r$   r	   r   __annotations__r   r   r
   r   r4   r@   rZ   __version__Z_minimum_jaxlib_versionrc   __version_info__Z_minimum_jaxlib_version_infor   r   r   r   <module>   s$   