copier-python 0.21.0__tar.gz → 0.22.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {copier_python-0.21.0 → copier_python-0.22.1}/PKG-INFO +1 -1
  2. {copier_python-0.21.0 → copier_python-0.22.1}/copier_python/__main__.py +6 -1
  3. {copier_python-0.21.0 → copier_python-0.22.1}/copier_python/repo.py +1 -1
  4. {copier_python-0.21.0 → copier_python-0.22.1}/copier_python/update.py +5 -4
  5. {copier_python-0.21.0 → copier_python-0.22.1}/tests/test_update.py +10 -4
  6. {copier_python-0.21.0 → copier_python-0.22.1}/.gitignore +0 -0
  7. {copier_python-0.21.0 → copier_python-0.22.1}/AGENTS.md +0 -0
  8. {copier_python-0.21.0 → copier_python-0.22.1}/CONTRIBUTING.md +0 -0
  9. {copier_python-0.21.0 → copier_python-0.22.1}/LICENSE +0 -0
  10. {copier_python-0.21.0 → copier_python-0.22.1}/README.md +0 -0
  11. {copier_python-0.21.0 → copier_python-0.22.1}/copier_python/__init__.py +0 -0
  12. {copier_python-0.21.0 → copier_python-0.22.1}/copier_python/py.typed +0 -0
  13. {copier_python-0.21.0 → copier_python-0.22.1}/docs/contributing.md +0 -0
  14. {copier_python-0.21.0 → copier_python-0.22.1}/docs/development/requirements.md +0 -0
  15. {copier_python-0.21.0 → copier_python-0.22.1}/docs/development/updates.md +0 -0
  16. {copier_python-0.21.0 → copier_python-0.22.1}/docs/development/workflow.md +0 -0
  17. {copier_python-0.21.0 → copier_python-0.22.1}/docs/index.md +0 -0
  18. {copier_python-0.21.0 → copier_python-0.22.1}/docs/license.md +0 -0
  19. {copier_python-0.21.0 → copier_python-0.22.1}/docs/project-creation.md +0 -0
  20. {copier_python-0.21.0 → copier_python-0.22.1}/docs/project-development.md +0 -0
  21. {copier_python-0.21.0 → copier_python-0.22.1}/docs/project-release.md +0 -0
  22. {copier_python-0.21.0 → copier_python-0.22.1}/docs/project-setup.md +0 -0
  23. {copier_python-0.21.0 → copier_python-0.22.1}/docs/project-updates.md +0 -0
  24. {copier_python-0.21.0 → copier_python-0.22.1}/docs/releasing.md +0 -0
  25. {copier_python-0.21.0 → copier_python-0.22.1}/docs/requirements.md +0 -0
  26. {copier_python-0.21.0 → copier_python-0.22.1}/docs/setup.md +0 -0
  27. {copier_python-0.21.0 → copier_python-0.22.1}/pyproject.toml +0 -0
  28. {copier_python-0.21.0 → copier_python-0.22.1}/tests/__init__.py +0 -0
  29. {copier_python-0.21.0 → copier_python-0.22.1}/tests/conftest.py +0 -0
  30. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__init__.py +0 -0
  31. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_agents.ambr +0 -0
  32. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_compose.ambr +0 -0
  33. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_contributing.ambr +0 -0
  34. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_dockerfile.ambr +0 -0
  35. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_docs.ambr +0 -0
  36. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_license.ambr +0 -0
  37. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_mise_toml.ambr +0 -0
  38. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_pre_commit.ambr +0 -0
  39. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_pyproject.ambr +0 -0
  40. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_readme.ambr +0 -0
  41. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_workflows.ambr +0 -0
  42. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/__snapshots__/test_zensical.ambr +0 -0
  43. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_agents.py +0 -0
  44. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_commit_check.py +0 -0
  45. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_compose.py +0 -0
  46. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_contributing.py +0 -0
  47. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_dockerfile.py +0 -0
  48. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_docs.py +0 -0
  49. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_license.py +0 -0
  50. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_mise_toml.py +0 -0
  51. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_pre_commit.py +0 -0
  52. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_pyproject.py +0 -0
  53. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_readme.py +0 -0
  54. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_structure.py +0 -0
  55. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_template.py +0 -0
  56. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_workflows.py +0 -0
  57. {copier_python-0.21.0 → copier_python-0.22.1}/tests/template/test_zensical.py +0 -0
  58. {copier_python-0.21.0 → copier_python-0.22.1}/tests/test_version.py +0 -0
  59. {copier_python-0.21.0 → copier_python-0.22.1}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: copier-python
3
- Version: 0.21.0
3
+ Version: 0.22.1
4
4
  Summary: Copier template for Python projects with modern tooling
5
5
  Project-URL: Homepage, https://smkent.github.io/copier-python
6
6
  Project-URL: Repository, https://github.com/smkent/copier-python
@@ -73,6 +73,9 @@ class UpdateResult:
73
73
  def update(
74
74
  repos: Args.Repos,
75
75
  *,
76
+ vcs_ref: Annotated[
77
+ str | None, Option("--vcs-ref", "-r", help="Template ref to update to")
78
+ ] = None,
76
79
  dry_run: Args.DryRun = False,
77
80
  branch: Annotated[str, Option(help="Branch name to create.")] = "updates",
78
81
  ) -> None:
@@ -82,7 +85,9 @@ def update(
82
85
  repo_targets = {(target := RepoTarget(repo)).url: target for repo in repos}
83
86
  for target in repo_targets.values():
84
87
  try:
85
- pr_url = UpdateAction(target, branch=branch, dry_run=dry_run)()
88
+ pr_url = UpdateAction(
89
+ target, branch=branch, vcs_ref=vcs_ref, dry_run=dry_run
90
+ )()
86
91
  if pr_url:
87
92
  results.append(
88
93
  UpdateResult(target, UpdateStatus.UPDATED, pr_url=pr_url)
@@ -146,7 +146,7 @@ class RepoWorktree:
146
146
  ).get("_commit")
147
147
 
148
148
  def shell(self) -> None:
149
- self.run([os.environ.get("SHELL", "/bin/bash")], check=False)
149
+ self.run([os.environ.get("SHELL", "/bin/bash")])
150
150
 
151
151
  def open_pr(self, title: str, body: str) -> str:
152
152
  result = self.run(
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import json
4
4
  import os
5
5
  import subprocess
6
- from dataclasses import dataclass
6
+ from dataclasses import dataclass, field
7
7
  from typing import TYPE_CHECKING
8
8
 
9
9
  from .repo import RepoWorktree
@@ -18,7 +18,8 @@ TEMPLATE_REPO_URL = "https://github.com/smkent/copier-python"
18
18
  class UpdateAction:
19
19
  repo: RepoTarget
20
20
  branch: str
21
- dry_run: bool = False
21
+ vcs_ref: str | None = None
22
+ dry_run: bool = field(default=False, kw_only=True)
22
23
 
23
24
  def __call__(self) -> str | None:
24
25
  with RepoWorktree.clone(self.repo, branch=self.branch) as worktree:
@@ -33,10 +34,10 @@ class UpdateAction:
33
34
  ).stdout.strip()
34
35
  )
35
36
  start_ref = "v" + copier_status["current_version"]
36
- end_ref = "v" + copier_status["latest_version"]
37
+ end_ref = self.vcs_ref or ("v" + copier_status["latest_version"])
37
38
  if not copier_status.get("update_available", False):
38
39
  return None
39
- repo.run(["copier", "update", "--skip-answered"])
40
+ repo.run(["copier", "update", "--skip-answered", "--vcs-ref", end_ref])
40
41
  repo.run(["mise", "install"])
41
42
 
42
43
  status = repo.git_status()
@@ -312,17 +312,20 @@ def test_main_update_error(
312
312
  cwd=worktree,
313
313
  capture_output=True,
314
314
  )
315
- expect_run.expect(["copier", "update", "--skip-answered"], cwd=worktree)
315
+ expect_run.expect(
316
+ ["copier", "update", "--skip-answered", "--vcs-ref", end_ref],
317
+ cwd=worktree,
318
+ )
316
319
  expect_run.expect(["mise", "install"], cwd=worktree)
317
320
  expect_run.expect(
318
321
  ["git", "status", "--porcelain"], cwd=worktree, capture_output=True
319
322
  )
320
- expect_run.expect([str(mock_shell)], cwd=worktree, check=False)
323
+ expect_run.expect([str(mock_shell)], cwd=worktree)
321
324
  expect_run.expect(
322
325
  ["git", "status", "--porcelain"], cwd=worktree, capture_output=True
323
326
  )
324
327
  expect_run.expect(["mise", "run", "lt"], cwd=worktree)
325
- expect_run.expect([str(mock_shell)], cwd=worktree, check=False)
328
+ expect_run.expect([str(mock_shell)], cwd=worktree)
326
329
  for cmd in [
327
330
  [*["git", "add", "-A"]],
328
331
  [*["git", "commit", "-m", commit_message]],
@@ -400,7 +403,10 @@ def test_main_update_with_project(
400
403
  cwd=worktree,
401
404
  capture_output=True,
402
405
  )
403
- expect_run.expect(["copier", "update", "--skip-answered"], cwd=worktree)
406
+ expect_run.expect(
407
+ ["copier", "update", "--skip-answered", "--vcs-ref", end_ref],
408
+ cwd=worktree,
409
+ )
404
410
  expect_run.expect(["mise", "install"], cwd=worktree)
405
411
  expect_run.expect(
406
412
  ["git", "status", "--porcelain"], cwd=worktree, capture_output=True
File without changes
File without changes
File without changes