__modname__ and __qualname__ detection...

since grammar has simplified.

May still need work for Python < 3.0
This commit is contained in:
rocky
2020-02-02 19:09:50 -05:00
parent 83e27bc427
commit 6f4ec21ae2
2 changed files with 11 additions and 11 deletions

View File

@@ -142,13 +142,12 @@ ASSIGN_DOC_STRING = lambda doc_string, doc_load: \
SyntaxTree("store", [ Token("STORE_NAME", pattr="__doc__")])
])])
NAME_MODULE = SyntaxTree("sstmt",
[ SyntaxTree("assign",
[ SyntaxTree("expr",
[Token("LOAD_NAME", pattr="__name__", offset=0, has_arg=True)]),
SyntaxTree("store",
[ Token("STORE_NAME", pattr="__module__", offset=3, has_arg=True)])
])])
NAME_MODULE = SyntaxTree('assign',
[ SyntaxTree('expr',
[Token('LOAD_NAME', pattr='__name__', offset=0, has_arg=True)]),
SyntaxTree('store',
[ Token('STORE_NAME', pattr='__module__', offset=3, has_arg=True)])
])
# God intended \t, but Python has decided to use 4 spaces.
# If you want real tabs, use Go.

View File

@@ -2310,16 +2310,17 @@ class SourceWalker(GenericASTTraversal, object):
),
],
)
# FIXME: is this right now that we've redone the grammar?
have_qualname = ast[0][0] == QUAL_NAME
else:
# Python 3.4+ has constants like 'cmp_to_key.<locals>.K'
# which are not simple classes like the < 3 case.
try:
if (
first_stmt[0] == "assign"
and first_stmt[0][0][0] == "LOAD_STR"
and first_stmt[0][1] == "store"
and first_stmt[0][1][0] == Token("STORE_NAME", pattr="__qualname__")
first_stmt == "assign"
and first_stmt[0][0] == "LOAD_STR"
and first_stmt[1] == "store"
and first_stmt[1][0] == Token("STORE_NAME", pattr="__qualname__")
):
have_qualname = True
except: