Source code for pre_gen_project
"""This module contains hooks which are executed before the template is rendered."""
from __future__ import annotations
import re
[docs]EXCEPTION_MSG_MODULE_NAME = """
ERROR: The project slug ({module_name}) is not a valid Python module name.
Please do not use anything other than letters, numbers, and underscores '_'.
The first character must not be a number.
"""
[docs]EXCEPTION_MSG_ENVIRON_NAME = """
ERROR: The project slug ({environment_name}) is not a valid conda environment name.
Please do not use anything other than letters, numbers, underscores '_',
and minus signs '-'.
"""
[docs]EXCEPTION_MSG_PYTHONVERSION = """
ERROR: The python version must be >= {min_python_version}, got {python_version}.
"""
[docs]_ = """{{ cookiecutter.update(
{
"__package_name":
cookiecutter.package_name|lower|replace(' ', '_')|replace('-', '_'),
}
)}}"""
[docs]def main() -> None:
"""Apply pre-generation hooks."""
module_name = "{{ cookiecutter.__package_name }}"
if not re.match(MODULE_REGEX, module_name):
raise ValueError(EXCEPTION_MSG_MODULE_NAME.format(module_name=module_name))
environment_name = "{{ cookiecutter.conda_environment_name }}"
if not re.match(ENVIRON_REGEX, environment_name):
raise ValueError(EXCEPTION_MSG_ENVIRON_NAME.format(environment_name))
python_version = "{{ cookiecutter.python_version }}"
if not re.match(PYTHONVERSION_REGEX, python_version):
raise ValueError(
EXCEPTION_MSG_PYTHONVERSION.format(
min_python_version=PYTHONVERSION_MIN, python_version=python_version
)
)
if __name__ == "__main__":
main()