a fŸWc¶ã@s¬dZddlmZmZmZddlZddlmZddlZddl Z ddl Z ddl Z gd¢Z dd„Z dd „Zd d „Zd d „Zddd„Zddd„Zdd„Zdd„Zdd„Zdd„ZdS)z"update version string during buildé)Úabsolute_importÚdivisionÚprint_functionN)Ú Distribution)Ú stamp_sourceÚstamp_distutils_outputÚappend_hg_revisionÚas_boolcCs|d |¡ptƒ |¡S)NÚcmdclass)ÚgetrÚget_command_class)ÚoptsÚname©rú8/usr/lib/python3.9/site-packages/passlib/_setup/stamp.pyr sr cCs| di¡ |i¡S)NÚoptions)Ú setdefault)r ÚcommandrrrÚget_command_optionssrcKst||ƒ |¡dS©N)rÚupdate)r rÚkwdsrrrÚset_command_optionssrcCs6t|dƒ�}| ¡WdƒS1s(0YdS)NÚr)ÚopenÚread)ÚpathÚfhrrrÚ _get_file!s rFcCsV|rdStj |¡rt |¡t|dƒ�}| |¡Wdƒn1sH0YdS)NÚw)ÚosrÚexistsÚunlinkrÚwrite)rÚcontentÚdry_runrrrrÚ _replace_file&s    r&cCs¦tj |dd¡}t|ƒ}t ddt|ƒ|¡\}}|dksBJdƒ‚t|||d�tj |d¡}tj |¡r¢t|ƒ}t d d |¡\}}|dks”Jd ƒ‚t|||d�d S) z/ update version info in passlib source Zpasslibz __init__.pyz(?m)^__version__\s*=.*$z__version__ = éz failed to replace version string)r%zsetup.pyz(?m)^stamp_build\s*=.*$zstamp_build = Falsez#failed to update 'stamp_build' flagN) r rÚjoinrÚreÚsubnÚreprr&r!)Úbase_dirÚversionr%rr$Úcountrrrr1s  þ ÿrcs\t|dƒ‰G‡‡fdd„dˆƒ}||dd<t|dƒ‰G‡‡fdd„dˆƒ}||dd<dS)NÚbuild_pycseZdZ‡‡fdd„ZdS)z(stamp_distutils_output..build_pycsˆ |¡t|jˆ|jƒdSr)Úbuild_packagesrZ build_libr%)Úself©Ú _build_pyr-rrr0Rs z7stamp_distutils_output..build_py.build_packagesN)Ú__name__Ú __module__Ú __qualname__r0rr2rrr/Qsr ÚsdistcseZdZ‡‡fdd„ZdS)z%stamp_distutils_output..sdistcs ˆ |||¡t|ˆ|jƒdSr)Úmake_release_treerr%)r1r,Úfiles©Ú_sdistr-rrr8Zsz7stamp_distutils_output..sdist.make_release_treeN)r4r5r6r8rr:rrr7Ys©r )r r-r/r7r)r3r;r-rrMs    rcCs|pd ¡d ¡vS)NÚzyes y true t 1)ÚlowerÚsplit)Úvaluerrrr `sr c Cs´z@tjgd¢tjd�}| ¡\}}|jr4t dg¡‚| d¡}WnFttjfy†tt j   d¡pht   ¡ƒ}t j  |¡}| d¡}Yn0| d¡r¤|dd…|}n |d |7}|S) N)ZhgZtipz --templatez,{date(date, '%Y%m%d%H%M%S')}+hg.{node|short})Ústdoutr'ÚasciiÚSOURCE_DATE_EPOCHz %Y%m%d%H%M%S)z.dev0z.post0éÿÿÿÿz.post)Ú subprocessÚPopenÚPIPEZ communicateÚ returncodeZCalledProcessErrorÚdecodeÚOSErrorÚintr Úenvironr ÚtimeÚdatetimeZutcfromtimestampÚstrftimeÚendswith)r-ÚprocZstampÚ_ZnowZ build_daterrrrds  ÿ     rcs.t|dƒ‰G‡fdd„dˆƒ}||dd<dS)Nr/cs(eZdZ”jdgZdZ‡fdd„ZdS)z*install_build_py_exclude..build_py)zexclude-packages=Nzexclude packages from buildsNcs6ˆ |¡|j}|jpgD]}||vr| |¡qdSr)Úfinalize_optionsZpackagesÚexclude_packagesÚremove)r1ÚtargetÚpackage©r3rrrSŠs  z;install_build_py_exclude..build_py.finalize_options)r4r5r6Z user_optionsrTrSrrXrrr/�s ÿr r<)r r/rrXrÚinstall_build_py_exclude}s rY)F)F)Ú__doc__Z __future__rrrrNZdistutils.distrr r)rErMÚ__all__r rrrr&rrr rrYrrrrÚs$