patch-manager 0.0.10__tar.gz → 0.0.11__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 (56) hide show
  1. {patch_manager-0.0.10 → patch_manager-0.0.11}/PKG-INFO +5 -1
  2. {patch_manager-0.0.10 → patch_manager-0.0.11}/README.rst +4 -0
  3. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/PKG-INFO +5 -1
  4. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/cseries.py +9 -3
  5. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test_cseries.py +30 -0
  6. {patch_manager-0.0.10 → patch_manager-0.0.11}/pyproject.toml +1 -1
  7. {patch_manager-0.0.10 → patch_manager-0.0.11}/LICENSE +0 -0
  8. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/SOURCES.txt +0 -0
  9. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/dependency_links.txt +0 -0
  10. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/entry_points.txt +0 -0
  11. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/requires.txt +0 -0
  12. {patch_manager-0.0.10 → patch_manager-0.0.11}/patch_manager.egg-info/top_level.txt +0 -0
  13. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/__init__.py +0 -0
  14. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/__main__.py +0 -0
  15. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/checkpatch.py +0 -0
  16. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/cmdline.py +0 -0
  17. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/commit.py +0 -0
  18. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/control.py +0 -0
  19. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/cser_helper.py +0 -0
  20. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/database.py +0 -0
  21. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/func_test.py +0 -0
  22. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/get_maintainer.py +0 -0
  23. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/gmail.py +0 -0
  24. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/patchstream.py +0 -0
  25. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/patchwork.py +0 -0
  26. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/patman.rst +0 -0
  27. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/project.py +0 -0
  28. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/review.py +0 -0
  29. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/send.py +0 -0
  30. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/series.py +0 -0
  31. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/settings.py +0 -0
  32. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/status.py +0 -0
  33. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/0000-cover-letter.patch +0 -0
  34. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/0001-pci-Correct-cast-for-sandbox.patch +0 -0
  35. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_mem_siz.patch +0 -0
  36. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/get_maintainer +0 -0
  37. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/maintainers +0 -0
  38. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test/test01.txt +0 -0
  39. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test_checkpatch.py +0 -0
  40. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test_common.py +0 -0
  41. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/test_settings.py +0 -0
  42. {patch_manager-0.0.10 → patch_manager-0.0.11}/patman/workflow.py +0 -0
  43. {patch_manager-0.0.10 → patch_manager-0.0.11}/setup.cfg +0 -0
  44. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/__init__.py +0 -0
  45. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/__main__.py +0 -0
  46. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/claude.py +0 -0
  47. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/command.py +0 -0
  48. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/cros_subprocess.py +0 -0
  49. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/gitutil.py +0 -0
  50. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/terminal.py +0 -0
  51. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/test_claude.py +0 -0
  52. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/test_command.py +0 -0
  53. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/test_gitutil.py +0 -0
  54. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/test_util.py +0 -0
  55. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/tools.py +0 -0
  56. {patch_manager-0.0.10 → patch_manager-0.0.11}/u_boot_pylib/tout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: patch-manager
3
- Version: 0.0.10
3
+ Version: 0.0.11
4
4
  Summary: Create, check and email patch series, with Patchwork integration
5
5
  Author-email: Simon Glass <sjg@chromium.org>
6
6
  License-Expression: GPL-2.0-or-later
@@ -35,6 +35,10 @@ Requires-Dist: claude-agent-sdk; extra == "all"
35
35
  Requires-Dist: concurrencytest; extra == "all"
36
36
  Dynamic: license-file
37
37
 
38
+ .. image:: https://raw.githubusercontent.com/nxtboot/patman/master/logo/patman-logo-primary.png
39
+ :alt: Patman
40
+ :width: 400px
41
+
38
42
  Patman patch manager
39
43
  ====================
40
44
 
@@ -1,3 +1,7 @@
1
+ .. image:: https://raw.githubusercontent.com/nxtboot/patman/master/logo/patman-logo-primary.png
2
+ :alt: Patman
3
+ :width: 400px
4
+
1
5
  Patman patch manager
2
6
  ====================
3
7
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: patch-manager
3
- Version: 0.0.10
3
+ Version: 0.0.11
4
4
  Summary: Create, check and email patch series, with Patchwork integration
5
5
  Author-email: Simon Glass <sjg@chromium.org>
6
6
  License-Expression: GPL-2.0-or-later
@@ -35,6 +35,10 @@ Requires-Dist: claude-agent-sdk; extra == "all"
35
35
  Requires-Dist: concurrencytest; extra == "all"
36
36
  Dynamic: license-file
37
37
 
38
+ .. image:: https://raw.githubusercontent.com/nxtboot/patman/master/logo/patman-logo-primary.png
39
+ :alt: Patman
40
+ :width: 400px
41
+
38
42
  Patman patch manager
39
43
  ====================
40
44
 
@@ -341,9 +341,15 @@ class Cseries(cser_helper.CseriesHelper):
341
341
  _, ser, version, _, _, _, _, _ = self._get_patches(series, version)
342
342
  svinfo = self.get_ser_ver(ser.idnum, version)
343
343
 
344
- # Use the per-version description if available, since the
345
- # series-level desc may be stale (e.g. patch order changed)
346
- desc = svinfo.desc or ser.desc
344
+ # Prefer the live cover-letter title from the branch: it is what
345
+ # patchwork indexes the series by, and it reflects a rename made
346
+ # after the version was created (the stored description would be
347
+ # stale in that case). Fall back to the stored per-version
348
+ # description for series with no cover letter, where it is more
349
+ # stable than the first commit subject (e.g. if patches are
350
+ # reordered).
351
+ desc = ser.cover[0] if ser.cover else None
352
+ desc = desc or svinfo.desc or ser.desc
347
353
  if not desc:
348
354
  raise ValueError(f"Series '{ser.name}' has an empty description")
349
355
  ser.desc = desc
@@ -1117,6 +1117,36 @@ Tested-by: Mary Smith <msmith@wibble.com> # yak
1117
1117
  (457, None, 'second', 2, 'Series for my board'),
1118
1118
  cser.link_search(pwork, 'second', 2))
1119
1119
 
1120
+ def test_series_link_auto_renamed(self):
1121
+ """autolink uses the live cover title, not a stale stored desc
1122
+
1123
+ When a later version renames the series (changes the cover-letter
1124
+ title) after the version was created, the per-version description
1125
+ stored at creation time goes stale. link_search must use the
1126
+ current cover title from the branch so it searches patchwork for
1127
+ the right name.
1128
+ """
1129
+ cser = self.get_cser()
1130
+ with terminal.capture():
1131
+ cser.add('second', allow_unmarked=True)
1132
+ cser.link_set('second', None, f'{self.SERIES_ID_SECOND_V1}', True)
1133
+ cser.increment('second')
1134
+
1135
+ pwork = Patchwork.for_testing(self._fake_patchwork_cser)
1136
+ pwork.project_set(self.PROJ_ID, self.PROJ_LINK_NAME)
1137
+ cser.project_set(pwork, 'U-Boot', quiet=True)
1138
+
1139
+ # Simulate the rename: the stored v2 description no longer matches
1140
+ # the cover-letter title on the branch
1141
+ ser = cser.get_series_by_name('second')
1142
+ svid = cser.get_series_svid(ser.idnum, 2)
1143
+ cser.db.ser_ver_set_desc(svid, 'Stale old title')
1144
+ cser.commit()
1145
+
1146
+ with terminal.capture():
1147
+ _, _, _, _, desc = cser.link_search(pwork, 'second', 2)
1148
+ self.assertEqual(self.TITLE_SECOND, desc)
1149
+
1120
1150
  def test_series_link_auto_name(self):
1121
1151
  """Test finding the patchwork link for a cseries with auto name"""
1122
1152
  cser = self.get_cser()
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "patch-manager"
7
- version = "0.0.10"
7
+ version = "0.0.11"
8
8
  authors = [
9
9
  { name="Simon Glass", email="sjg@chromium.org" },
10
10
  ]
File without changes
File without changes