mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
python3-pykickstart: fix options parse error
Backport a patch for python3-pykickstart to fix option parse error:
File "/usr/lib64/python3.12/site-packages/pykickstart/options.py", line 185, in _parse_optional
option = action.option_strings[0]
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute 'option_strings'
Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
59b904920b
commit
5a2dcee4ac
|
|
@ -0,0 +1,71 @@
|
|||
From f753d4d6ad1f4846d14735beb3d1b157b9914b51 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Wed, 2 Oct 2024 09:48:39 -0700
|
||||
Subject: [PATCH] options: adjust to behavior change in upstream
|
||||
_parse_optional
|
||||
|
||||
In Python 3.13 and 3.12.7, the behavior of _parse_optional has
|
||||
changed. It used to raise an error on multiple matching actions
|
||||
itself, and only ever return None or an option tuple. Now the
|
||||
"raise error on multiple matching actions" code was moved out
|
||||
into consume_optional, and _parse_optional returns either None
|
||||
or a *list* of option tuples, which contains more than one if
|
||||
multiple actions match. See:
|
||||
|
||||
https://github.com/python/cpython/pull/124631
|
||||
https://github.com/python/cpython/issues/58573
|
||||
|
||||
This adapts to the change in a way that should work on both older
|
||||
and newer Pythons.
|
||||
|
||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||
|
||||
Upstream-Status: Backport [https://github.com/pykickstart/pykickstart/commit/f753d4d]
|
||||
|
||||
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
||||
---
|
||||
pykickstart/options.py | 20 +++++++++++++++++---
|
||||
1 file changed, 17 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/pykickstart/options.py b/pykickstart/options.py
|
||||
index 2e3a0721..ca0e18af 100644
|
||||
--- a/pykickstart/options.py
|
||||
+++ b/pykickstart/options.py
|
||||
@@ -177,9 +177,23 @@ class KSOptionParser(ArgumentParser):
|
||||
self.lineno = None
|
||||
|
||||
def _parse_optional(self, arg_string):
|
||||
- option_tuple = ArgumentParser._parse_optional(self, arg_string)
|
||||
+ # Before 3.13 and 3.12.7, this returned None or a single
|
||||
+ # option tuple. From 3.13 / 3.12.7 onwards it returns None
|
||||
+ # or a *list* of option tuples
|
||||
+ option_tuple_or_tuples = ArgumentParser._parse_optional(self, arg_string)
|
||||
+ # all we want to do here is a custom warning if the action is
|
||||
+ # deprecated. we can only safely do this if there's exactly
|
||||
+ # one matching action
|
||||
+ if isinstance(option_tuple_or_tuples, list):
|
||||
+ if len(option_tuple_or_tuples) == 1:
|
||||
+ option_tuple = option_tuple_or_tuples[0]
|
||||
+ else:
|
||||
+ return option_tuple_or_tuples
|
||||
+ else:
|
||||
+ option_tuple = option_tuple_or_tuples
|
||||
+
|
||||
if option_tuple is None or option_tuple[0] is None:
|
||||
- return option_tuple
|
||||
+ return option_tuple_or_tuples
|
||||
|
||||
action = option_tuple[0]
|
||||
option = action.option_strings[0]
|
||||
@@ -191,7 +205,7 @@ class KSOptionParser(ArgumentParser):
|
||||
"kickstart. Please modify your kickstart file to remove this option.")
|
||||
% {"lineno": self.lineno, "option": option}, KickstartDeprecationWarning)
|
||||
|
||||
- return option_tuple
|
||||
+ return option_tuple_or_tuples
|
||||
|
||||
def add_argument(self, *args, **kwargs):
|
||||
if "introduced" in kwargs:
|
||||
--
|
||||
2.47.1
|
||||
|
||||
|
|
@ -16,6 +16,7 @@ SRC_URI = "git://github.com/rhinstaller/pykickstart.git;protocol=https;branch=ma
|
|||
file://0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch \
|
||||
file://0003-comment-out-sections-shutdown-and-environment-in-gen.patch \
|
||||
file://0004-load.py-retry-to-invoke-request-with-timeout.patch \
|
||||
file://0005-options-adjust-to-behavior-change-in-upstream-_parse.patch \
|
||||
"
|
||||
SRCREV = "fa6c80c0e5c6bee29d089899a10d26e6f7f8afd8"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user