Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade: pykickstart to version 3.58 #11612

Open
wants to merge 1 commit into
base: 3.0-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
From faf6a88a1be4558ebd26f5d52c0990f5dd3ca592 Mon Sep 17 00:00:00 2001
From: Adam Williamson <[email protected]>
Date: Wed, 2 Oct 2024 17:54:33 -0700
Subject: [PATCH] Fix the fix for _parse_optional changing

Whoops. Don't know how this slipped through testing.

Signed-off-by: Adam Williamson <[email protected]>
---
pykickstart/options.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pykickstart/options.py b/pykickstart/options.py
index ca0e18af..f0803039 100644
--- a/pykickstart/options.py
+++ b/pykickstart/options.py
@@ -185,7 +185,7 @@ class KSOptionParser(ArgumentParser):
# 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):
+ if len(option_tuple_or_tuples) == 1:
option_tuple = option_tuple_or_tuples[0]
else:
return option_tuple_or_tuples
--
2.46.2

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
From f753d4d6ad1f4846d14735beb3d1b157b9914b51 Mon Sep 17 00:00:00 2001
From: Adam Williamson <[email protected]>
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 <[email protected]>
---
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.46.2

2 changes: 1 addition & 1 deletion SPECS-EXTENDED/pykickstart/pykickstart.signatures.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"Signatures": {
"pykickstart-3.36.tar.gz": "2721fe2cdc3ae6e485f2a3344c555d6ed505b412d3dd19c1d00492a106e60b98"
"pykickstart-3.58.tar.gz": "d6c71814dfba0d6e78d1d9f0366c3adefbb7ba92ff3432def740fb220ddab788"
}
}
Loading