[PATCH 2/7] patman: Move split_name_version to patchstream

Simon Glass sjg at chromium.org
Sat May 24 19:06:50 CEST 2025


This function is needed by 'patman status', meaning that it must import
cser_helper which needs pygit2

Move it to patchstream so that pygit2 is not needed for the
'patman status' command.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 tools/patman/control.py      |  4 +---
 tools/patman/cser_helper.py  | 29 ++---------------------------
 tools/patman/cseries.py      |  2 +-
 tools/patman/patchstream.py  | 25 +++++++++++++++++++++++++
 tools/patman/series.py       |  1 +
 tools/patman/test_cseries.py |  4 ++--
 6 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/tools/patman/control.py b/tools/patman/control.py
index e10125e2581..1250fa10c62 100644
--- a/tools/patman/control.py
+++ b/tools/patman/control.py
@@ -71,8 +71,6 @@ def patchwork_status(branch, count, start, end, dest_branch, force,
     Raises:
         ValueError: if the branch has no Series-link value
     """
-    from patman import cser_helper
-
     if not branch:
         branch = gitutil.get_branch()
     if count == -1:
@@ -94,7 +92,7 @@ def patchwork_status(branch, count, start, end, dest_branch, force,
     if not links:
         raise ValueError("Branch has no Series-links value")
 
-    _, version = cser_helper.split_name_version(branch)
+    _, version = patchstream.split_name_version(branch)
     link = series.get_link_for_version(version, links)
     if not link:
         raise ValueError('Series-links has no link for v{version}')
diff --git a/tools/patman/cser_helper.py b/tools/patman/cser_helper.py
index 2841fcd9c20..39f291cb3ec 100644
--- a/tools/patman/cser_helper.py
+++ b/tools/patman/cser_helper.py
@@ -64,31 +64,6 @@ def oid(oid_val):
     return str(oid_val)[:HASH_LEN]
 
 
-def split_name_version(in_name):
-    """Split a branch name into its series name and its version
-
-    For example:
-        'series' returns ('series', 1)
-        'series3' returns ('series', 3)
-    Args:
-        in_name (str): Name to parse
-
-    Return:
-        tuple:
-            str: series name
-            int: series version, or None if there is none in in_name
-    """
-    m_ver = re.match(r'([^0-9]*)(\d*)', in_name)
-    version = None
-    if m_ver:
-        name = m_ver.group(1)
-        if m_ver.group(2):
-            version = int(m_ver.group(2))
-    else:
-        name = in_name
-    return name, version
-
-
 class CseriesHelper:
     """Helper functions for Cseries
 
@@ -577,7 +552,7 @@ class CseriesHelper:
         """
         if not name:
             name = gitutil.get_branch(self.gitdir)
-        name, _ = split_name_version(name)
+        name, _ = patchstream.split_name_version(name)
         ser = self.get_series_by_name(name, include_archived)
         if not ser:
             ser = Series()
@@ -609,7 +584,7 @@ class CseriesHelper:
             name = gitutil.get_branch(self.gitdir)
             if not name:
                 raise ValueError('No branch detected: please use -s <series>')
-        name, version = split_name_version(name)
+        name, version = patchstream.split_name_version(name)
         if not name:
             raise ValueError(f"Series name '{in_name}' cannot be a number, "
                              f"use '<name><version>'")
diff --git a/tools/patman/cseries.py b/tools/patman/cseries.py
index bcbc4963cea..f2a6ae61ba9 100644
--- a/tools/patman/cseries.py
+++ b/tools/patman/cseries.py
@@ -686,7 +686,7 @@ class Cseries(cser_helper.CseriesHelper):
         if old_ser.name != series:
             raise ValueError(f"Invalid series name '{series}': "
                              'did you use the branch name?')
-        chk, _ = cser_helper.split_name_version(name)
+        chk, _ = patchstream.split_name_version(name)
         if chk != name:
             raise ValueError(
                 f"Invalid series name '{name}': did you use the branch name?")
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 45040877f8c..aec7643838c 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -69,6 +69,31 @@ STATE_PATCH_HEADER = 2      # In patch header (after the subject)
 STATE_DIFFS = 3             # In the diff part (past --- line)
 
 
+def split_name_version(in_name):
+    """Split a branch name into its series name and its version
+
+    For example:
+        'series' returns ('series', 1)
+        'series3' returns ('series', 3)
+    Args:
+        in_name (str): Name to parse
+
+    Return:
+        tuple:
+            str: series name
+            int: series version, or None if there is none in in_name
+    """
+    m_ver = re.match(r'([^0-9]*)(\d*)', in_name)
+    version = None
+    if m_ver:
+        name = m_ver.group(1)
+        if m_ver.group(2):
+            version = int(m_ver.group(2))
+    else:
+        name = in_name
+    return name, version
+
+
 class PatchStream:
     """Class for detecting/injecting tags in a patch or series of patches
 
diff --git a/tools/patman/series.py b/tools/patman/series.py
index ad61bbfa399..517fd4304f5 100644
--- a/tools/patman/series.py
+++ b/tools/patman/series.py
@@ -21,6 +21,7 @@ from u_boot_pylib import tools
 valid_series = ['to', 'cc', 'version', 'changes', 'prefix', 'notes', 'name',
                 'cover_cc', 'process_log', 'links', 'patchwork_url', 'postfix']
 
+
 class Series(dict):
     """Holds information about a patch series, including all tags.
 
diff --git a/tools/patman/test_cseries.py b/tools/patman/test_cseries.py
index e58f2f68333..c761e0e1f9a 100644
--- a/tools/patman/test_cseries.py
+++ b/tools/patman/test_cseries.py
@@ -3123,8 +3123,8 @@ Date:   .*
         repo = self.repo
 
         self.assertEqual(('fred', None),
-                         cser_helper.split_name_version('fred'))
-        self.assertEqual(('mary', 2), cser_helper.split_name_version('mary2'))
+                         patchstream.split_name_version('fred'))
+        self.assertEqual(('mary', 2), patchstream.split_name_version('mary2'))
 
         ser, version = cser._parse_series_and_version(None, None)
         self.assertEqual('first', ser.name)
-- 
2.43.0

base-commit: e3ced530e543c9f24cbc66430abc6109ce8df015
branch: pate


More information about the U-Boot mailing list