From aed6bb433358dcd706b65bf9254325e6896a4700 Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 2 Apr 2025 10:31:23 +0200 Subject: [PATCH 1/4] Use groups --- {{cookiecutter.project_slug}}/Makefile | 2 +- {{cookiecutter.project_slug}}/pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/{{cookiecutter.project_slug}}/Makefile b/{{cookiecutter.project_slug}}/Makefile index 4f99666..49b2e49 100644 --- a/{{cookiecutter.project_slug}}/Makefile +++ b/{{cookiecutter.project_slug}}/Makefile @@ -53,7 +53,7 @@ run: $(VENV)/pyvenv.cfg $(VENV)/pyvenv.cfg: pyproject.toml uv venv $(VENV) - uv pip install -e '.[$(INSTALL_EXTRA)]' + uv sync --group '$(INSTALL_EXTRA)' .PHONY: lint lint: $(VENV)/pyvenv.cfg diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 8231f0f..27e66e4 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -23,7 +23,7 @@ requires-python = ">=3.9" [tool.setuptools.dynamic] version = { attr = "{{ cookiecutter.__project_import }}.__version__" } -[project.optional-dependencies] +[dependency-groups] doc = [ {%- if cookiecutter.documentation == "pdoc" -%} "pdoc" @@ -42,7 +42,7 @@ lint = [ "interrogate", {%- endif %} ] -dev = ["{{ cookiecutter.project_slug }}[doc,test,lint]", "twine", "build"] +dev = [{include-group = "doc"}, {include-group = "test"}, {include-group = "lint"}, "twine", "build"] {% if cookiecutter.entry_point -%} [project.scripts] From 0c002341760fe262c9f06016a929b9bca9d973d1 Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 2 Apr 2025 17:55:52 +0200 Subject: [PATCH 2/4] Fix selftest --- {{cookiecutter.project_slug}}/pyproject.toml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 27e66e4..0e3b4a5 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -20,6 +20,13 @@ classifiers = [ dependencies = [] requires-python = ">=3.9" +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.version] +path = "{{ cookiecutter.__project_src_path }}/__init__.py" + [tool.setuptools.dynamic] version = { attr = "{{ cookiecutter.__project_import }}.__version__" } @@ -42,7 +49,14 @@ lint = [ "interrogate", {%- endif %} ] -dev = [{include-group = "doc"}, {include-group = "test"}, {include-group = "lint"}, "twine", "build"] +dev = [ + {include-group = "doc"}, + {include-group = "test"}, + {include-group = "lint"}, + "twine", + "build", + "{{ cookiecutter.project_slug }}", +] {% if cookiecutter.entry_point -%} [project.scripts] @@ -108,3 +122,6 @@ exclude = ["env", "test", "{{ cookiecutter.__project_src_path }}/_cli.py"] ignore-semiprivate = true fail-under = 100 {%- endif %} + +[tool.uv.sources] +{{ cookiecutter.project_slug }} = { workspace = true } \ No newline at end of file From f4ded9cb112bd73cd25afc8e9e517ac87631e23d Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 2 Apr 2025 18:16:56 +0200 Subject: [PATCH 3/4] Add hatch build targets --- {{cookiecutter.project_slug}}/pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 0e3b4a5..5595f00 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -27,6 +27,9 @@ build-backend = "hatchling.build" [tool.hatch.version] path = "{{ cookiecutter.__project_src_path }}/__init__.py" +[tool.hatch.build.targets.wheel] +packages = ["{{ cookiecutter.__project_src_path }}"] + [tool.setuptools.dynamic] version = { attr = "{{ cookiecutter.__project_import }}.__version__" } From d5439a9dbd50f97b251b3ddd08997e8bfdbdcdc5 Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 2 Apr 2025 18:36:12 +0200 Subject: [PATCH 4/4] Fix selftest? --- cookiecutter.json | 1 + {{cookiecutter.project_slug}}/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cookiecutter.json b/cookiecutter.json index 8d61f41..3f0da15 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -7,6 +7,7 @@ "project_slug": "{{ (cookiecutter.__project_namespace_slug + '-' if cookiecutter.project_namespace_import else '') + cookiecutter.__module_slug }}", "__project_import": "{{ (cookiecutter.project_namespace_import + '.' if cookiecutter.project_namespace_import else '') + cookiecutter.__module_import }}", "__project_src_path": "src/{{ cookiecutter.__project_import.replace('.', '/') }}", + "__project_src_first": "{{ ('src/' + cookiecutter.project_namespace_import.split('.')[0] if cookiecutter.project_namespace_import else 'src/' + cookiecutter.__module_import) }}", "project_description": "", "repo_type": [ "CLI", diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 5595f00..e11fa0e 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -28,7 +28,7 @@ build-backend = "hatchling.build" path = "{{ cookiecutter.__project_src_path }}/__init__.py" [tool.hatch.build.targets.wheel] -packages = ["{{ cookiecutter.__project_src_path }}"] +packages = ["{{ cookiecutter.__project_src_first }}"] [tool.setuptools.dynamic] version = { attr = "{{ cookiecutter.__project_import }}.__version__" }