mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
Handle ambiguous monkey patched enum unscoping
This commit is contained in:
parent
bf77b1359c
commit
e87f789821
@ -158,11 +158,6 @@ deprecated_renamed_enums = {
|
|||||||
('Qt', 'MidButton'): ('MouseButton', 'MiddleButton')
|
('Qt', 'MidButton'): ('MouseButton', 'MiddleButton')
|
||||||
}
|
}
|
||||||
|
|
||||||
# dict of function name to known enum class name
|
|
||||||
disambiguated_enums = {
|
|
||||||
'pushMessage': ('Qgis', 'MessageLevel')
|
|
||||||
}
|
|
||||||
|
|
||||||
# { (class, enum_value) : enum_name }
|
# { (class, enum_value) : enum_name }
|
||||||
qt_enums = {}
|
qt_enums = {}
|
||||||
ambiguous_enums = defaultdict(set)
|
ambiguous_enums = defaultdict(set)
|
||||||
@ -189,12 +184,23 @@ def fix_file(filename: str, qgis3_compat: bool) -> int:
|
|||||||
if (isinstance(node, ast.Attribute) and isinstance(node.value, ast.Name)
|
if (isinstance(node, ast.Attribute) and isinstance(node.value, ast.Name)
|
||||||
and (node.value.id, node.attr) in ambiguous_enums):
|
and (node.value.id, node.attr) in ambiguous_enums):
|
||||||
disambiguated = False
|
disambiguated = False
|
||||||
if isinstance(parent, ast.Call) and isinstance(parent.func, ast.Attribute):
|
try:
|
||||||
function_name = parent.func.attr
|
actual = eval(f'{node.value.id}.{node.attr}')
|
||||||
if function_name in disambiguated_enums:
|
obj = globals()[node.value.id]
|
||||||
disambiguated = True
|
if isinstance(obj, type):
|
||||||
fix_qt_enums[Offset(node.lineno, node.col_offset)] = (
|
for attr_name in dir(obj):
|
||||||
disambiguated_enums)[function_name] + (node.attr, )
|
attr = getattr(obj, attr_name)
|
||||||
|
if attr is actual.__class__:
|
||||||
|
# print(f'Found alias {node.value.id}.{attr_name}')
|
||||||
|
disambiguated = True
|
||||||
|
fix_qt_enums[
|
||||||
|
Offset(node.lineno, node.col_offset)] = (
|
||||||
|
node.value.id, attr_name, node.attr
|
||||||
|
)
|
||||||
|
break
|
||||||
|
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
if not disambiguated:
|
if not disambiguated:
|
||||||
possible_values = [f'{node.value.id}.{e}.{node.attr}' for e
|
possible_values = [f'{node.value.id}.{e}.{node.attr}' for e
|
||||||
|
Loading…
x
Reference in New Issue
Block a user