[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