From f75c3f7d63aa57251b6ebabf1e5d2a0c68f43f74 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Sat, 23 May 2020 19:43:15 +0100 Subject: [PATCH 1/2] Introduce test failure for gh-343 --- flit_core/flit_core/tests/samples/module2.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flit_core/flit_core/tests/samples/module2.py b/flit_core/flit_core/tests/samples/module2.py index cc83e39f..70c868b3 100644 --- a/flit_core/flit_core/tests/samples/module2.py +++ b/flit_core/flit_core/tests/samples/module2.py @@ -2,4 +2,9 @@ Docstring formatted like this. """ +a = {} +# An assignment to a subscript (a['test']) broke introspection +# https://github.com/takluyver/flit/issues/343 +a['test'] = 6 + __version__ = '7.0' From 568227a6b8ca03eb4dc5c329b03c45b0d2bd7589 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Sat, 23 May 2020 19:43:21 +0100 Subject: [PATCH 2/2] Check if assignment target is a name when finding version Closes gh-343 --- flit_core/flit_core/common.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/flit_core/flit_core/common.py b/flit_core/flit_core/common.py index 828b26b8..32c2a0da 100644 --- a/flit_core/flit_core/common.py +++ b/flit_core/flit_core/common.py @@ -128,10 +128,13 @@ def get_docstring_and_version_via_ast(target): for child in node.body: # Only use the version from the given module if it's a simple # string assignment to __version__ - is_version_str = (isinstance(child, ast.Assign) and - len(child.targets) == 1 and - child.targets[0].id == "__version__" and - isinstance(child.value, ast.Str)) + is_version_str = ( + isinstance(child, ast.Assign) + and len(child.targets) == 1 + and isinstance(child.targets[0], ast.Name) + and child.targets[0].id == "__version__" + and isinstance(child.value, ast.Str) + ) if is_version_str: version = child.value.s break