HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/__pycache__/version.cpython-310.pyc
o

�N�gE��
@s�dZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ejZedZ
e
Gdd�dedd���ZGd	d
�d
e�ZGdd�d�Ze��Zd
d�Zdd�Zee�Zejreeeej���e_[ejZejZdd�Zd%dd�Zdd�Z dd�Z!d&dd�Z"d&dd�Z#dd �Z$e%d!kr�e$�Z&e&j'r�e(e�'��dSe&j)r�ze(e�)e&j)��WdSe*y�Z+ze(d"e&j)�d#e+���e�,d$�WYdZ+[+dSdZ+[+wwe(e�dSdS)'z
Set up the version of Salt
�N)�
namedtuple)�total_ordering��cs2eZdZdZd	�fdd�	Zdd�Zdd�Z�ZS)
�SaltVersion�Fcs"t|t�r|f}t��||||�S�N)�
isinstance�int�super�__new__)�cls�name�info�released��	__class__r�@/opt/saltstack/salt/lib/python3.10/site-packages/salt/version.pyr+s
zSaltVersion.__new__cCs|j|jkSr�r��self�otherrrr�__eq__0�zSaltVersion.__eq__cCs|j|jkSrrrrrr�__gt__3rzSaltVersion.__gt__�F)�__name__�
__module__�__qualname__�	__slots__rrr�
__classcell__rrrrr's
rzname, info, releasedc@s�eZdZdZdZdZdZedddd�Zedddd�Z	ed	d
dd�Z
edddd�Zed
ddd�Zedddd�Z
edddd�Zedddd�Zedddd�Zedddd�Zedddd�Zedddd�Zedddd�Zedd dd�Zed!d"dd�Zed#d$dd�Zed%d&d'�Zed(d)d'�Zed*d+d'�Zed,d-d'�Zed.d/d'�Zed0d1d'�Zed2d3d'�Zed4d5d'�Zed6d7d'�Z ed8d9d'�Z!ed:d;d'�Z"ed<d=d'�Z#ed>d?d'�Z$ed@dAd'�Z%edBdCd'�Z&edDdEd'�Z'edFdGd'�Z(edHdId'�Z)edJdKd'�Z*edLdMd'�Z+edNdOd'�Z,edPdQd'�Z-edRdSd'�Z.edTdUd'�Z/edVdWd'�Z0edXdYd'�Z1edZd[d'�Z2ed\d]d'�Z3ed^d_d'�Z4ed`dad'�Z5edbdcd'�Z6eddded'�Z7edfdgd'�Z8edhdid'�Z9edjdkd'�Z:edldmd'�Z;edndod'�Z<edpdqd'�Z=edrdsd'�Z>edtdud'�Z?edvdwd'�Z@edxdyd'�ZAedzd{d'�ZBed|d}d'�ZCed~dd'�ZDed�d�d'�ZEed�d�d'�ZFed�d�d'�ZGed�d�d'�ZHed�d�d'�ZIed�d�d'�ZJed�d�d'�ZKed�d�d'�ZLed�d�d'�ZMed�d�d'�ZNed�d�d'�ZOed�d�d'�ZPed�d�d'�ZQed�d�d'�ZRed�d�d'�ZSed�d�d'�ZTed�d�d'�ZUed�d�d'�ZVed�d�d'�ZWed�d�d'�ZXed�d�d'�ZYed�d�d'�ZZed�d�d'�Z[ed�d�d'�Z\ed�d�d'�Z]ed�d�d'�Z^ed�d�d'�Z_ed�d�d'�Z`ed�d�d'�Zaed�d�d'�Zbed�d�d'�Zced�d�d'�Zded�d�d'�Zeed�d�d'�Zfed�d�d'�Zged�d�d'�Zhed�d�d'�Zied�d�d'�Zjed�d�d'�Zked�d�d'�Zled�d�d'�Zmed�d�d'�Zned�d�d'�Zoed�d�d'�Zped�d�d'�Zqed�d�d'�Zred�d�d'�Zsed�d�d'�Zted�d�d'�Zued�d�d'�Zved�d�d'�Zwed�d�d'�Zxed�d�d'�Zyed�d�d'�Zzed�d�d'�Z{ed�d�d'�Z|ed�d�d'�Z}e~d�d��Ze~d�d���Z�e~d�d���Z�e~d�d���Z�dS)��SaltVersionsInforNZHydrogen)���T)rrZHelium)r!�ZLithium)���Z	Beryllium)r$�ZBoron)���ZCarbon)r'�ZNitrogen)i�r#ZOxygen)i�r(ZFluorine)i��ZNeon�ZSodiumi�Z	Magnesiumi�Z	Aluminiumi�ZSiliconi�Z
Phosphorusi�ZSulfur�ZChlorinei�rZArgoni�Z	Potassiumi�ZCalciumi�ZScandiumi�ZTitaniumi�ZVanadiumi�ZChromiumi�Z	Manganesei�ZIroni�ZCobalti�ZNickeli�ZCopperi�ZZinci�ZGalliumi�Z	Germaniumi�ZArsenici�ZSeleniumi�ZBrominei�ZKryptoni�ZRubidiumi�Z	Strontiumi�ZYttriumi�Z	Zirconiumi�ZNiobiumi�Z
Molybdenumi�Z
Technetiumi�Z	Rutheniumi�ZRhodiumi�Z	Palladiumi�ZSilveri�ZCadmiumi�ZIndiumi�ZTini�ZAntimonyi�Z	Telluriumi�ZIodinei�ZXenoni�ZCesiumi�ZBariumi�Z	Lanthanumi�ZCeriumi�ZPraseodymiumi�Z	Neodymiumi�Z
Promethiumi�ZSamariumi�ZEuropiumi�Z
Gadoliniumi�ZTerbiumi�Z
Dysprosiumi�ZHolmiumi�ZErbiumi�ZThuliumi�Z	Ytterbiumi�ZLutetiumi�ZHafniumi�ZTantalumi�ZTungsteni�ZRheniumi�ZOsmiumi�ZIridiumi�ZPlatinumi�ZGoldi�ZMercuryi�ZThalliumi�ZLeadiZBismuthiZPoloniumiZAstatineiZRadoniZFranciumiZRadiumiZActiniumiZThoriumiZProtactiniumi	ZUraniumi
Z	NeptuniumiZ	PlutoniumiZ	Americiumi
ZCuriumiZ	BerkeliumiZCaliforniumiZEinsteiniumiZFermiumiZMendeleviumiZNobeliumiZ
LawrenciumiZ
RutherfordiumiZDubniumiZ
SeaborgiumiZBohriumiZHassiumiZ
MeitneriumiZDarmstadtiumiZRoentgeniumiZCoperniciumiZNihoniumiZ	Fleroviumi Z	Moscoviumi!ZLivermoriumi"Z
Tennessinei#Z	Oganessoni$cs2�jst�fdd�t��D�t�d�d��_�jS)Nc3s"�|]}|��rt�|�VqdSr)�isupper�getattr��.0r
�rrr�	<genexpr>�s� z,SaltVersionsInfo.versions.<locals>.<genexpr>r��key)�_sorted_versions�sorted�dir�operator�
attrgetterr1rr1r�versions�s�zSaltVersionsInfo.versionscCs6|jdur|��D]}|jdur||_|jSq	|jS)NF)�_current_releaser:r)r�versionrrr�current_release�s

�z SaltVersionsInfo.current_releasecCsD|jdurd}|��D]}|r||_|jS||��krd}q|jS)NFT)�
_next_releaser:r=)rZnext_release_aheadr<rrr�next_release�s
��zSaltVersionsInfo.next_releasecCs<|jdurd}|��D]}||��krn|}q||_|jSr)�_previous_releaser:r=)rZpreviousr<rrr�previous_release�s
z!SaltVersionsInfo.previous_release)�rrrr5r;r@r>rZHYDROGENZHELIUMZLITHIUMZ	BERYLLIUMZBORONZCARBONZNITROGENZOXYGENZFLUORINEZNEONZSODIUMZ	MAGNESIUMZ	ALUMINIUMZSILICONZ
PHOSPHORUS�SULFURZCHLORINEZARGONZ	POTASSIUMZCALCIUMZSCANDIUMZTITANIUMZVANADIUMZCHROMIUMZ	MANGANESEZIRONZCOBALTZNICKELZCOPPERZZINCZGALLIUMZ	GERMANIUMZARSENICZSELENIUMZBROMINEZKRYPTONZRUBIDIUMZ	STRONTIUMZYTTRIUMZ	ZIRCONIUMZNIOBIUMZ
MOLYBDENUMZ
TECHNETIUMZ	RUTHENIUMZRHODIUMZ	PALLADIUMZSILVERZCADMIUMZINDIUMZTINZANTIMONYZ	TELLURIUMZIODINEZXENONZCESIUMZBARIUMZ	LANTHANUMZCERIUMZPRASEODYMIUMZ	NEODYMIUMZ
PROMETHIUMZSAMARIUMZEUROPIUMZ
GADOLINIUMZTERBIUMZ
DYSPROSIUMZHOLMIUMZERBIUMZTHULIUMZ	YTTERBIUMZLUTETIUMZHAFNIUMZTANTALUMZTUNGSTENZRHENIUMZOSMIUMZIRIDIUMZPLATINUMZGOLDZMERCURYZTHALLIUMZLEADZBISMUTHZPOLONIUMZASTATINEZRADONZFRANCIUMZRADIUMZACTINIUMZTHORIUMZPROTACTINIUMZURANIUMZ	NEPTUNIUMZ	PLUTONIUMZ	AMERICIUMZCURIUMZ	BERKELIUMZCALIFORNIUMZEINSTEINIUMZFERMIUMZMENDELEVIUMZNOBELIUMZ
LAWRENCIUMZ
RUTHERFORDIUMZDUBNIUMZ
SEABORGIUMZBOHRIUMZHASSIUMZ
MEITNERIUMZDARMSTADTIUMZROENTGENIUMZCOPERNICIUMZNIHONIUMZ	FLEROVIUMZ	MOSCOVIUMZLIVERMORIUMZ
TENNESSINEZ	OGANESSON�classmethodr:r=r?rArrrrr 7s


r c@s�eZdZdZdZdZe�ded�ZdeZe�e�Zdd�e	�
�D�Zd	d�ee�
��D�Zd
d�ee�
��D�Zdd�ee�
��D�Z			
			
	dDdd�Zdd�Zdd�Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zd d!�Zed"d#��Zed$d%��Zed&d'��Zed(d)��Z ed*d+��Z!ed,d-��Z"ed.d/��Z#ed0d1��Z$d2d3�Z%d4d5�Z&d6d7�Z'd8d9�Z(d:d;�Z)d<d=�Z*d>d?�Z+d@dA�Z,dBdC�Z-dS)E�SaltStackVersionz�
    Handle SaltStack versions class.

    Knows how to parse ``git describe`` output, knows about release candidates
    and also supports version comparison.
    )	r
�major�minor�bugfix�mbugfix�pre_type�pre_num�noc�shaz(?P<sha>g?[a-f0-9]{7,40})z�(?:[^\d]+)?(?P<major>[\d]{1,4})(?:\.(?P<minor>[\d]{1,2}))?(?:\.(?P<bugfix>[\d]{0,2}))?(?:\.(?P<mbugfix>[\d]{0,2}))?(?:(?P<pre_type>rc|a|b|alpha|beta|nb)(?P<pre_num>[\d]+))?(?:(?:.*)(?:\+|-)(?P<noc>(?:0na|[\d]+|n/a))(?:-|\.)z)?�^cCsi|]}|j|j�qSr)r
r)r0�vrrr�
<dictcomp>�zSaltStackVersion.<dictcomp>cCsi|]	\}}|��|�qSr��lower�r0�krNrrrrOscCsi|]\}}||�qSrrrSrrrrO
rPcCsi|]\}}|dd�|�qS)Nr*rrSrrrrOsNrc	
CsZt|t�r	t|�}t|t�r|sd}nt|�}|�|�r"|r |nd}|dur/|j|d�s/d}nt|t�r=|s9d}nt|�}|durDd}n	t|t�rMt|�}|durSd}|durZd}n	t|t�rct|�}|durjd}nt|t�rv|dvrvd}n	t|t�rt|�}||_||_||_||_||_	||_
|�|�r�|f}	n||f}	|j�|	�|_
||_||_dS)Nr�rE�)�0nazn/a���)r�strr	�can_have_dot_zero�new_versionrErFrGrHrIrJ�VNAMES�getr
rKrL)
rrErFrGrHrIrJrKrLZ
vnames_keyrrr�__init__sT








zSaltStackVersion.__init__cC�tt|�dkot|�tk�S)�:
        determine if using new versioning scheme
        r+��boolr	�
VERSION_LIMIT�rrErrrr[P�zSaltStackVersion.new_versioncCr_)r`r,rardrrrrZVrez"SaltStackVersion.can_have_dot_zerocCsZ|��|jvr|�|�St|t�r|��n|}|j�|�}|s'td|�d���||�	��S)Nz!Unable to parse version string: '�')
rR�LNAMES�	from_namer�bytes�decode�git_describe_regex�match�
ValueError�groups)r�version_stringZvstrrlrrr�parse\s

��zSaltStackVersion.parsecCs0|��|jvrtd|�d���||j|���S)NzNamed version 'z' is not known)rRrgrm)rr
rrrrhjszSaltStackVersion.from_namecCs"ddl}|jj�tjd�|��S)Nrz�The use of SaltStackVersion.from_last_named_version() is deprecated and set to be removed in {version}. Please use SaltStackVersion.current_release() instead.)Zsalt.utils.versions�utilsr:Z
warn_untilr rBr=)r�saltrrr�from_last_named_versionps�z(SaltStackVersion.from_last_named_versioncC�|t��j�Sr)r r=rr1rrrr=|�z SaltStackVersion.current_releasecCrtr)r r?rr1rrrr?�ruzSaltStackVersion.next_releasecCsd|jko
dkSS)Nrr!rU�rrrr�sse�szSaltStackVersion.ssecCs`|jg}|�|j�r#|jr|�|j�|S|�|j�r!|�|j�|S|�|j|j|jg�|Sr)rEr[rF�appendrZ�extendrGrH�rrrrr�min_info�s��zSaltStackVersion.min_infocCst|���Sr)�tupler{rvrrrr�szSaltStackVersion.infocCs"|��}|�|j|jg�t|�Sr)r{ryrIrJr|rzrrr�pre_info�szSaltStackVersion.pre_infocCs&|��}|�|j|j|jg�t|�Sr)r{ryrIrJrKr|rzrrr�noc_info�szSaltStackVersion.noc_infocCs*|��}|�|j|j|j|jg�t|�Sr)r{ryrIrJrKrLr|rzrrr�	full_info�szSaltStackVersion.full_infocCs,|j|j|j|j|j|j|j|jg}t|�S)zj
        Return the full info regardless
        of which versioning scheme we
        are using.
        )	rErFrGrHrIrJrKrLr|rzrrr�full_info_all_versions�s�
z'SaltStackVersion.full_info_all_versionscCs�|�|j�r)|j�}|jr|j�d|j��}|js(|�|j�r(|j�d|j��}n
|j�d|j�d|j��}|jrA|d|j��7}|jrN||j�|j��7}|jrh|j	rh|j}|dkr]d}|d|�d|j	��7}|S)N�.rrW�+)
r[rErFrZrGrHrIrJrKrL)rrorKrrr�string�s$�zSaltStackVersion.stringcCs�|jr|jdkr|j}|jr|d7}|d7}|S|j}|jr"|d7}|�|j�r-|jf}n|j|jf}||jvrC|d|j|�d�7}|S)Ni'z Enterprisez
 (Unreleased)z (�))r
rErwr�r[rF�RMATCH)rroZ
rmatch_keyrrr�formatted_version�s

z"SaltStackVersion.formatted_versioncCs,|�|j�rd}t|jt�sd}|Sd}|S)Nr*r"�)r[rErrFr	)rrIrrr�	pre_index�s�zSaltStackVersion.pre_indexcCs|jSr)r�rvrrr�__str__�szSaltStackVersion.__str__cCs�t|t�s&t|t�rt�|�}nt|ttf�rt|�}n
tdt|��d���|j}|j}t|j	�}t|j	�}|�
|j�rZ|jrK|jsK|jdkrKd|d<|jsZ|jrZ|jdkrZd|d<|j
rd|j
sdd||<|j
sn|j
rnd||<|t|�t|��S)Nz&Cannot instantiate Version from type 'rfrr"Zzzzzz)rrDrYrp�listr|rm�typer�r~r[rErFrI)rr�methodrIZother_pre_typeZother_noc_infor~rrr�__compare__�s0


�



zSaltStackVersion.__compare__cC�|�|dd��S)NcSs||kSrr�Z_selfZ_otherrrr�<lambda>�z)SaltStackVersion.__lt__.<locals>.<lambda>�r�rrrr�__lt__�zSaltStackVersion.__lt__cCr�)NcSs||kSrrr�rrrr�r�z)SaltStackVersion.__le__.<locals>.<lambda>r�rrrr�__le__r�zSaltStackVersion.__le__cCr�)NcSs||kSrrr�rrrr�r�z)SaltStackVersion.__eq__.<locals>.<lambda>r�rrrrrr�zSaltStackVersion.__eq__cCr�)NcSs||kSrrr�rrrr� r�z)SaltStackVersion.__ne__.<locals>.<lambda>r�rrrr�__ne__r�zSaltStackVersion.__ne__cCr�)NcSs||kSrrr�rrrr�#r�z)SaltStackVersion.__ge__.<locals>.<lambda>r�rrrr�__ge__"r�zSaltStackVersion.__ge__cCr�)NcSs||kSrrr�rrrr�&r�z)SaltStackVersion.__gt__.<locals>.<lambda>r�rrrrr%r�zSaltStackVersion.__gt__cCsg}|jr|�d|j�d��|�d|j��d|j��g�|�|j�r;|�|j�s:|js:|�d�dd�|D���n
|�d|j	��g�|j
rQ|�d	|j
���|jr`|�|j�d
|j���|j
}|dkrid}|r||jr||�d
|��d|j��g�d�|jjd�|��S)Nzname='rfzmajor=zminor=rVcSsg|]
}t�d|�r|�qS)z^minor*)�re�search)r0�xrrr�
<listcomp>0sz-SaltStackVersion.__repr__.<locals>.<listcomp>zbugfix=z
minor-bugfix=�=rXrWznoc=zsha=z<{} {}>� )r
rxryrErFr[rZ�remove�joinrGrHrIrJrKrL�formatrr)r�partsrKrrr�__repr__(s&�
zSaltStackVersion.__repr__)NNrNNrN).rrr�__doc__r�
git_sha_regexr��compilerkr r:ZNAMES�iter�itemsrgr\r�r^r[rZrCrprhrsr=r?�propertyrwr{rr}r~rr�r�r�r�r�r�r�r�rr�r�rr�rrrrrD�s����

�@













	$rDc
Cs8ddl}dt�vrt}tj�tj�|d��s|Sntj�tj�t	��}tj�tj�tj�|�d��s4|SzNt
|j|j|d�}tj
�d�sHd|d<|jgd�fi|��}|��\}}|����}|����}|ri|rl|WStj�|�r}|��|_d	|_|WSt�|�WSty�}z
|jd
kr��WYd}~|Sd}~ww)Nr�
SETUP_DIRNAMEz.git)�stdout�stderr�cwd�winT�	close_fds)�gitZdescribez--tagsz--longz--matchzv[0-9]*z--alwaysrXr*)�
subprocess�globalsr��os�path�existsr��abspath�dirname�__file__�dict�PIPE�sys�platform�
startswith�Popen�communicaterj�striprDr�rlrLrKrp�OSError�errno)�saltstack_versionr�r��kwargs�process�out�errZos_errrrr�__discover_versionIsF
��
�



���r�cCsttj�tj�tj�t��d�}tj�|�st|�St|dd��}t	�
|�����Wd�S1s3wYdS)zy
    If we can get a version provided at installation time or from Git, use
    that instead, otherwise we carry on.
    z_version.txtzutf-8)�encodingN)
r�r�r�r�r�r�r�r��openrDrp�readr�)r�Z_hardcoded_version_fileZrfhrrr�
__get_version�s��$�r�ccs�dtfVdS)z!
    Report version of salt.
    ZSaltN)�__version__rrrr�salt_information�s�r�Fc	cs��gd�}|r|�d�dd�}t||d�D]Y\}}}|dur%||fVqz<|dur<ddlm}|�|�}||fVWqt|�}t||�}t|�rL|�}t|t	t
f�r[d	�tt
|��}||fVWqtyo|dfVYqwdS)
z2
    Report versions of library dependencies.
    ))ZJinja2Zjinja2r�)�M2Cryptor�r<)�msgpackr�r<)zmsgpack-pureZmsgpack_purer<)ZpycryptoZCryptor�)ZpycryptodomeZ
Cryptodome�version_info)�cryptographyr�r�)ZPyYAMLZyamlr�)ZPyZMQ�zmqr�)ZZMQr�Zzmq_version)ZMakoZmakor�)ZTornadoZtornador<)�timelibr�r<)�dateutilr�r�)�pygit2r�r�)Zlibgit2r�ZLIBGIT2_VERSION)�smmapr�r�)�cffir�r�)�	pycparserr�r�)�gitdbr�r�)Z	gitpythonr�r�)zpython-gnupgZgnupgr�)zmysql-pythonZMySQLdbr�)�cherrypyr�r�)z	docker-pyZdockerr�)�	packagingr�r�)�looseversionr�N)�relenvr�r�)zApache LibcloudZlibcloudr�cSs|d��S)NrrQ)�entryrrr�_sort_by_lowercased_name�rz8dependency_information.<locals>._sort_by_lowercased_namer3Nr)�importlib_metadatar�)rxr6Zsalt._compatr�r<�
__import__r.�callablerr|r�r��maprY�	Exception)�include_salt_cloudZlibsr�r
�imp�attrr�r<rrr�dependency_information�s8��



��r�c#s^�ddlm��fdd�}t��dr|ddl}ddl}|j}d}d}|�||�}|�||�\}}d}	d	}
d
|vrX|�	d�D]}t
�d|�rG|}	t
�d
|�rO|}
q=|	�d
|
��}
n|�	d�D]
}t
�d|�rg|}	q]|	}
t��\}}}
}d�|
||
|g�}	n|�}	t�
�}
dt��fdd��dd��fd|
fdt��fd|	fdtfg}|D]	\}}||fVq�dS)z!
    Report system versions.
    r��linux_distributioncs���}t��}t��}|dr;t|dttf�r0d�|d�r0d�|dd�|d�|dg�Sd�|d|dg�S|drDd�|�S|drMd�|�SdS)z-
        Return host system version.
        rr"rVr�r�r*)r��mac_ver�	win32_verrr|r�r�)Zlin_verr�Zwin_verr�rr�system_version�s "

z*system_information.<locals>.system_versionNz,SOFTWARE\Microsoft\Windows NT\CurrentVersionZProductNameZUnknownrVZServerr�z\d+z^R\d+$z^(\d+(\.\d+)?)|Thin|Vista$�system�distF)Zfull_distribution_name�release�machiner<�locale)Zsalt.utils.platformr�r�r��win32api�win32con�HKEY_LOCAL_MACHINEZ
RegOpenKeyZRegQueryValueEx�splitr�rlr�r�r�r�Z__salt_system_encoding__)r�r�r��hkeyr4Z
value_nameZ
reg_handleZproduct_name�_r<r��item�verZservice_pack�extrar�r
r�rr�r�system_information�sR���

�	
�r�cCsPddl}i}|jj�d�D]}|jj�|�}|sq
|j|vrq
|j||j<q
|S)z?
    Gather infomation about any installed salt extensions
    rNzsalt.loader)Zsalt.utils.entrypointsrqZentrypointsZiter_entry_pointsZ!name_and_version_from_entry_pointr
r<)rr�
extensionsZentry_pointZdist_nvrrr�extensions_informationLs
r�TcCsvdtjjddd�d��fg}tt��}tt|��}tt��}t|�t|�t|�t|�d�}|r9t	�}|r9||d<|S)z4
    Report the versions of dependent software.
    �Python�
r")�maxsplitr)�Salt Version�Python Version�Dependency Versions�System Versions�Salt Extensions)
r�r<�rsplitr�r�r�r�r�r�r�)r��include_extensionsZpy_infoZ	salt_infoZlib_infoZsys_inforZextensions_inforrr�versions_information^s�

�r	ccs�t||d�}d}t|�}tdd�|dD��}tdd�|dD��}|r5d|vr5td	d�|dD��}nd
}t||||�d
}d}	g}
dD]8}|dkrQ||vrQqF|
�|�d
��t||dd�d�D]}|	j||||po||d�}
|
�|
�qc|
�d�qF|
EdHdS)zC
    Yield each version properly formatted for console output.
    )r�rz
Not Installedcs��|]}t|�VqdSr��lenr/rrrr2��z"versions_report.<locals>.<genexpr>rcsr
rrr/rrrr2�r
rrcsr
rrr/rrrr2�r
r"z{0:>{pad}}: {1})rrrrr�:cSs|��SrrQ)r�rrrr��r�z!versions_report.<locals>.<lambda>r3)�padr�N)r	r�maxrxr6r�)r�rZver_infoZ
not_installedZns_padZlib_padZsys_padZext_pad�padding�fmtrZver_typer
r�rrr�versions_reportvs2���rcCs>t��}|jdddd�|jddd�|jdtjd	�|��S)
Nz--next-releasezReturn the next release�
store_true)�help�actionz--parsez)Parse the passed string as a salt version)r�unknown)�nargs)�argparse�ArgumentParser�add_argument�	REMAINDER�
parse_args)�parserrrr�_parser�s�r�__main__zFailed to parse 'z' as a salt version: r"r)FT)-r�rr8r�r�r�r��collectionsr�	functoolsr�maxsizeZMAX_SIZErcrr�r rDr=Z__saltstack_version__r�r�r
r.�upperr;rZ__version_info__r�r�r�r�r�r�r	rrr�argsr?�printrpr��exc�exitrrrr�<module>sd3]>
�
CX

)���