File 0001-Compatibility-with-breaking-changes-to-the-ast-module.patch of Package beets

From dab0c1f9abda5b17cc7488f89a6fe08be7bc56a0 Mon Sep 17 00:00:00 2001
From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com>
Date: Tue, 9 Jun 2020 19:34:31 +0200
Subject: [PATCH] compatibility with breaking changes to the ast module

new in 3.10, also backported to 3.8 and 3.9: https://github.com/python/cpython/pull/20649
In fact, our generation of some Literals has been invalid since Python
3.4, fix that too.
---
 beets/util/functemplate.py | 29 ++++++++++++++++++++---------
 docs/changelog.rst         |  1 +
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/beets/util/functemplate.py b/beets/util/functemplate.py
index af22b79082..266534a9b4 100644
--- a/beets/util/functemplate.py
+++ b/beets/util/functemplate.py
@@ -73,15 +73,26 @@ def ex_literal(val):
     """An int, float, long, bool, string, or None literal with the given
     value.
     """
-    if val is None:
-        return ast.Name('None', ast.Load())
-    elif isinstance(val, six.integer_types):
-        return ast.Num(val)
-    elif isinstance(val, bool):
-        return ast.Name(bytes(val), ast.Load())
-    elif isinstance(val, six.string_types):
-        return ast.Str(val)
-    raise TypeError(u'no literal for {0}'.format(type(val)))
+    if sys.version_info[:2] < (3, 4):
+        if val is None:
+            return ast.Name('None', ast.Load())
+        elif isinstance(val, six.integer_types):
+            return ast.Num(val)
+        elif isinstance(val, bool):
+            return ast.Name(bytes(val), ast.Load())
+        elif isinstance(val, six.string_types):
+            return ast.Str(val)
+        raise TypeError(u'no literal for {0}'.format(type(val)))
+    elif sys.version_info[:2] < (3, 6):
+        if val in [None, True, False]:
+            return ast.NameConstant(val)
+        elif isinstance(val, six.integer_types):
+            return ast.Num(val)
+        elif isinstance(val, six.string_types):
+            return ast.Str(val)
+        raise TypeError(u'no literal for {0}'.format(type(val)))
+    else:
+        return ast.Constant(val)
 
 
 def ex_varassign(name, expr):
#diff --git a/docs/changelog.rst b/docs/changelog.rst
#index 5ecffb8e38..453d22305a 100644
#--- a/docs/changelog.rst
#+++ b/docs/changelog.rst
#@@ -213,6 +213,7 @@ Fixes:
# * :doc:`/plugins/lyrics`: Fix crash when writing ReST files for a query without
#   results or fetched lyrics
#   :bug:`2805`
#+* Adapt to breaking changes in Python's ``ast`` module in 3.8
# 
# For plugin developers:
# 
openSUSE Build Service is sponsored by