Skip to content

Commit ade1df5

Browse files
committed
Use "feature detection" for 3.8 compat (#3278)
1 parent 4ebb118 commit ade1df5

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

beets/util/functemplate.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -125,21 +125,16 @@ def compile_func(arg_names, statements, name='_the_func', debug=False):
125125
kwarg=None,
126126
defaults=[ex_literal(None) for _ in arg_names],
127127
)
128-
elif sys.version_info >= (3, 8):
129-
args = ast.arguments(
130-
args=[ast.arg(arg=n, annotation=None) for n in arg_names],
131-
posonlyargs=[],
132-
kwonlyargs=[],
133-
kw_defaults=[],
134-
defaults=[ex_literal(None) for _ in arg_names],
135-
)
136128
else:
137-
args = ast.arguments(
138-
args=[ast.arg(arg=n, annotation=None) for n in arg_names],
139-
kwonlyargs=[],
140-
kw_defaults=[],
141-
defaults=[ex_literal(None) for _ in arg_names],
142-
)
129+
args_fields = {
130+
'args': [ast.arg(arg=n, annotation=None) for n in arg_names],
131+
'kwonlyargs': [],
132+
'kw_defaults': [],
133+
'defaults': [ex_literal(None) for _ in arg_names],
134+
}
135+
if 'posonlyargs' in ast.arguments._fields: # Added in Python 3.8.
136+
args_fields['posonlyargs'] = []
137+
args = ast.arguments(**args_fields)
143138

144139
func_def = ast.FunctionDef(
145140
name=name,

0 commit comments

Comments
 (0)