stax 0.56.0

Fast stacked Git branches and PRs
Documentation
�

&�i&��l�SSKJr SSKrSSKrSSKrSSKrSSKJr SSKJ	r	 \R"S5r\R"S5r\R"S5r
\R"S5r/S	Qr"S
S\5rSSjrSS
jrSSjrSSjrSSjrSSjrSSjrSSjr\S:Xa
\"\"55eg)�)�annotationsN)�OrderedDict)�Pathz^v\d+\.\d+\.\d+$z<^(?P<type>[a-z]+)(\([^)]+\))?(?P<breaking>!)?: (?P<desc>.+)$z+^chore: Release stax version \d+\.\d+\.\d+$zM(?ms)^## \[Unreleased\] - ReleaseDate\s*\n.*?(?=^## \[|^<!-- next-url -->|\Z))�Added�Changed�Fixed�
Documentationc��\rSrSrSrg)�ReleasePrepError��N)�__name__�
__module__�__qualname__�__firstlineno__�__static_attributes__r
��scripts/prepare_release.pyrrs��rrc��[R"SS9nURSSSS9 URSSS	9 UR5$)
Nz=Generate Keep a Changelog notes under the Unreleased section.)�descriptionz--repo�.z>Repository root to inspect. Defaults to the current directory.)�default�helpz--changelogz;Changelog path to rewrite. Defaults to <repo>/CHANGELOG.md.)r)�argparse�ArgumentParser�add_argument�
parse_args)�parsers rrrs_��
�
$�
$�S��F������
M���
����
J�������rc���[R"S/UQUSSSS9nURS:wa?[URR5=(d SSR
U5S35eUR$)	N�gitFT)�cwd�check�capture_output�textrzgit � z failed)�
subprocess�run�
returncoder�stderr�strip�join�stdout)�repo�args�results   r�run_gitr0*sn��
�^�^�	�������
��F����A���v�}�}�2�2�4�V�$�s�x�x��~�>N�g�8V�W�W��=�=�rc���[USSSS5nUR5H1nUR5n[R	U5(dM/Us $ [S5e)N�tagz--listzv*z--sort=-creatordatez7No version tags found matching v<major>.<minor>.<patch>)r0�
splitlinesr*�VERSION_TAG_RE�matchr)r-�output�liner2s    r�latest_version_tagr87sW��
�T�5�(�D�2G�
H�F��!�!�#���j�j�l������$�$��J�$��T�
U�Urc	�
�[USSSSUS35n/nUR5HGnUR5nU(a[R	U5(aM6URU5 MI U(d[
S5eU$)N�logz	--reversez--no-mergesz--format=%sz..HEADzNo commits found since last tag)r0r3r*�SKIP_SUBJECT_REr5�appendr)r-r2r6�subjectsr7�subjects      r�commits_since_tagr?@sy��
�T�5�+�}�m�PS�u�TZ�^�
\�F��H��!�!�#���*�*�,���/�/�/��8�8������ �	$�
��@�A�A��Orc�n�[RU5nSnUnU(a>URS5R5nURS5R	5nUS;aSnOUS;aSnOUS;aSnOS	nU(a1US
R5(aUS
R
5USS-nXC4$)N�type�desc>�add�feat�featurer>�fix�bugfixr>�doc�docsr	rr�)�CONVENTIONAL_REr5�group�lowerr*�islower�upper)r>r5�commit_typer�categorys     r�categorize_subjectrRMs����!�!�'�*�E��K��K���k�k�&�)�/�/�1���k�k�&�)�/�/�1���0�0���	�)�	)���	��	'�"�����{�1�~�-�-�/�/�!�!�n�*�*�,�{�1�2��>��� � rc��[S[55nUH#n[U5up4XRU5 M% /nUR	5HPup6U(dMURSU35 UHnURSU35 M URS5 MR SRU5R
5$)Nc3�(# �UHo/4v� M
 g7f)Nr
)�.0rQs  r�	<genexpr>�&build_release_notes.<locals>.<genexpr>es���;�'5�8�2��~�s�z### z- ��
)r�CATEGORY_ORDERrRr<�itemsr+�rstrip)r=�categorizedr>rQr�lines�entries�entrys        r�build_release_notesrads���/:�;�'5�;�0�K��� 2�7� ;�����$�$�[�1���E�(�.�.�0�����
���t�H�:�&�'��E��L�L�2�e�W��&��
���R��
1��9�9�U��"�"�$�$rc�`�SUS3n[RX SS9up4US:wa[S5eU$)Nz## [Unreleased] - ReleaseDate

z

rJ)�countz7Failed to locate the Unreleased section in CHANGELOG.md)�UNRELEASED_BLOCK_RE�subnr)�	changelog�
release_notes�replacement�updatedrcs     r�rewrite_unreleased_sectionrjys?��5�m�_�D�I�K�(�-�-�k�A�-�N�N�G���z��X�Y�Y��Nrc��[5n[UR5R5nUR(a#[UR5R5OUS-n[U5n[
X5n[U5nURSS9n[Xe5nURUSS9 [SUS[!U5SU35 g	![a+n[[U5[RS9 SnAgSnAff=f)
NzCHANGELOG.mdzutf-8)�encoding)�filerJzUpdated z using z commits since r)rrr-�resolverfr8r?ra�	read_textrj�
write_textr�print�str�sysr)�len)	r.r-�changelog_pathr2r=rgrfri�excs	         r�mainrw�s����<�D���	�	�?�"�"�$�D�7;�~�~�T�$�.�.�)�1�1�3�4�R`�K`�N�	� ��&��$�T�/��+�H�5�
�"�,�,�g�,�>�	�,�Y�F���!�!�'�G�!�<�

�H�^�$�G�C��M�?�/�#��
O�P�����
�c�#�h�S�Z�Z�(����s�(AC�
D�!D�D�__main__)�returnzargparse.Namespace)r-rr.rrryrr)r-rryrr)r-rr2rrry�	list[str])r>rrryztuple[str, str])r=rzryrr)rfrrrgrrryrr)ry�int)�
__future__rr�rer&rs�collectionsr�pathlibr�compiler4rKr;rdrZ�	Exceptionrrr0r8r?rRrarjrwr�
SystemExitr
rr�<module>r�s���#��	��
�#�����/�0���*�*�\�]���*�*�K�L���j�j�T���@��	�y�	�
� 
�V�
�!�.%�*�
�(�z��
�T�V�
��r