beets: fix broken wrt python 3.8.4

Fix: #23653
This commit is contained in:
Đoàn Trần Công Danh 2020-07-21 22:12:23 +07:00
parent a4cbcfbbd0
commit 6183b60e96
2 changed files with 59 additions and 2 deletions

View File

@ -0,0 +1,53 @@
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.
---
https://github.com/beetbox/beets/pull/3621
beets/util/functemplate.py | 29 ++++++++++++++++++++---------
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git beets/util/functemplate.py beets/util/functemplate.py
index af22b79082..266534a9b4 100644
--- beets/util/functemplate.py
+++ 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):

View File

@ -1,13 +1,17 @@
# Template file for 'beets'
pkgname=beets
version=1.4.9
revision=2
revision=3
archs=noarch
build_style=python3-module
pycompile_module="beets beetsplug"
hostmakedepends="python3-setuptools"
depends="python3-setuptools python3-munkres python3-musicbrainzngs
python3-Unidecode python3-yaml python3-jellyfish python3-six python3-mutagen"
# test_web is failing
checkdepends="$depends python3-discogs_client python3-mpd2 python3-xdg
python3-rarfile python3-pylast python3-gobject python3-mock python3-Flask
python3-BeautifulSoup4 python3-itsdangerous python3-click python3-Werkzeug
python3-Jinja2 python3-soupsieve python3-MarkupSafe"
short_desc="Media library management system for obsessive-compulsive music geeks"
maintainer="Orphaned <orphan@voidlinux.org>"
license="MIT"