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 <s...@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