From d55276d7c6c708512454c29bf6d8f733eed29208 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 5 Aug 2020 02:20:23 +0200 Subject: [PATCH] beets: apply patch to fix incompatibilites with python 3.8 https://github.com/beetbox/beets/pull/3621 https://github.com/python/cpython/pull/20649 --- ...h-breaking-changes-to-the-ast-module.patch | 55 +++++++++++++++++++ pkgs/tools/audio/beets/default.nix | 5 ++ 2 files changed, 60 insertions(+) create mode 100644 pkgs/tools/audio/beets/compatibility-with-breaking-changes-to-the-ast-module.patch diff --git a/pkgs/tools/audio/beets/compatibility-with-breaking-changes-to-the-ast-module.patch b/pkgs/tools/audio/beets/compatibility-with-breaking-changes-to-the-ast-module.patch new file mode 100644 index 000000000000..4865b6f62341 --- /dev/null +++ b/pkgs/tools/audio/beets/compatibility-with-breaking-changes-to-the-ast-module.patch @@ -0,0 +1,55 @@ +From 771ce704ebeac4cd9bd74b3ddde9fb01f3dc7eb4 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 ++++++++++++++++++++--------- + 1 file changed, 20 insertions(+), 9 deletions(-) + +diff --git a/beets/util/functemplate.py b/beets/util/functemplate.py +index af22b790..266534a9 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): +-- +2.27.0 + diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix index 0f73b353169e..776eca999989 100644 --- a/pkgs/tools/audio/beets/default.nix +++ b/pkgs/tools/audio/beets/default.nix @@ -190,6 +190,11 @@ in pythonPackages.buildPythonApplication rec { url = "https://github.com/beetbox/beets/commit/d43d54e21cde97f57f19486925ab56b419254cc8.patch"; sha256 = "13n2gzmcgfi0m2ycl2r1hpczgksplnkc3y6b66vg57rx5y8nnv5c"; }) + + # Fixes 548 tests due to breaking changes to the ast module + # https://github.com/beetbox/beets/pull/3621 + # Can be dropped after 1.4.9 + ./compatibility-with-breaking-changes-to-the-ast-module.patch ]; postPatch = ''