https://gitlab.freedesktop.org/xdg/pyxdg/-/merge_requests/17 From 9291d419017263c922869d79ac1fe8d423e5f929 Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 31 May 2025 18:52:45 +0100 Subject: [PATCH 1/2] Menu: handle Python 3.14 ast.Str changes ast.Str is gone and replaced by ast.Constant. --- xdg/Menu.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xdg/Menu.py b/xdg/Menu.py index 1dd2af5..71f5e61 100644 --- a/xdg/Menu.py +++ b/xdg/Menu.py @@ -411,7 +411,7 @@ class Rule: def fromFilename(cls, type, filename): tree = ast.Expression( body=ast.Compare( - left=ast.Str(filename), + left=ast.Constant(filename), ops=[ast.Eq()], comparators=[ast.Attribute( value=ast.Name(id='menuentry', ctx=ast.Load()), @@ -799,7 +799,7 @@ class XMLMenuBuilder(object): elif tag == 'Category': category = node.text return ast.Compare( - left=ast.Str(category), + left=ast.Constant(category), ops=[ast.In()], comparators=[ast.Attribute( value=ast.Name(id='menuentry', ctx=ast.Load()), @@ -810,7 +810,7 @@ class XMLMenuBuilder(object): elif tag == 'Filename': filename = node.text return ast.Compare( - left=ast.Str(filename), + left=ast.Constant(filename), ops=[ast.Eq()], comparators=[ast.Attribute( value=ast.Name(id='menuentry', ctx=ast.Load()), -- GitLab From 63033ac306aa26d32e1439417e59ae8f8a4c9820 Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 31 May 2025 18:54:51 +0100 Subject: [PATCH 2/2] Menu: handle Python 3.15 deprecations * Unknown keyword args will be fatal, so drop lineno/col_offset that is unused * Set body= immediately as a keyword --- xdg/Menu.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/xdg/Menu.py b/xdg/Menu.py index 71f5e61..8e1595c 100644 --- a/xdg/Menu.py +++ b/xdg/Menu.py @@ -419,7 +419,6 @@ class Rule: ctx=ast.Load() )] ), - lineno=1, col_offset=0 ) ast.fix_missing_locations(tree) rule = Rule(type, tree) @@ -763,12 +762,10 @@ class XMLMenuBuilder(object): def parse_rule(self, node): type = Rule.TYPE_INCLUDE if node.tag == 'Include' else Rule.TYPE_EXCLUDE - tree = ast.Expression(lineno=1, col_offset=0) + tree = ast.Expression(body=_ast_const('False')) expr = self.parse_bool_op(node, ast.Or()) if expr: tree.body = expr - else: - tree.body = _ast_const('False') ast.fix_missing_locations(tree) return Rule(type, tree) -- GitLab