# -*- coding: utf-8 -*-"""Source Code Build Automation for Python Projects."""importtypingasTimportshutilimportdataclassesfrom.vendor.emojiimportEmojifrom.vendor.build_distimport(build_dist_with_python_build,build_dist_with_poetry_build,)from.loggerimportloggerifT.TYPE_CHECKING:# pragma: no coverfrom.defineimportPyWf
[docs]@dataclasses.dataclassclassPyWfBuild:""" Namespace class for build related automation. """@logger.emoji_block(msg="Build python distribution using pypa-build",emoji=Emoji.build,)def_python_build(self:"PyWf",real_run:bool=True,quiet:bool=False,):""" Build python source distribution using `pypa-build <https://pypa-build.readthedocs.io/en/latest/>`_. Run: .. code-block:: bash python -m build --sdist --wheel """ifself.dir_dist.exists():ifreal_run:shutil.rmtree(self.dir_dist,ignore_errors=True)build_dist_with_python_build(dir_project_root=self.dir_project_root,path_bin_python=self.path_venv_bin_python,log_func=logger.info,real_run=real_run,verbose=notquiet,)
python_build.__doc__=_python_build.__doc__@logger.emoji_block(msg="Build python distribution using poetry",emoji=Emoji.build,)def_poetry_build(self:"PyWf",real_run:bool=True,quiet:bool=False,):""" Build python source distribution using `poetry build <https://python-poetry.org/docs/cli/#build>`_. Run: .. code-block:: bash poetry build """ifself.dir_dist.exists():ifreal_run:shutil.rmtree(self.dir_dist,ignore_errors=True)build_dist_with_poetry_build(dir_project_root=self.dir_project_root,path_bin_poetry=self.path_bin_poetry,log_func=logger.info,real_run=real_run,verbose=notquiet,)