pytype
pytype copied to clipboard
--strict-import fails silently on list literals (regression)
Description
Since commit 025eec194dffbbaca43d1b9327d8fc4bfbd059b3 ("Use SupportsIndex in some builtins."), pytype --strict-import
fails on list literals. This is only visible if you manually inspect the .pyi stubs or run pytype-single directly.
Example Code
x = []
Steps to Reproduce
$ pytype-single --strict-import repr.py
Traceback (most recent call last):
File "/home/cebtenzzre/.local/bin/pytype-single", line 8, in <module>
sys.exit(main())
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/single.py", line 87, in main
return _run_pytype(options)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/single.py", line 98, in _run_pytype
return io.process_one_file(options)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 77, in wrapper
return f(*args, **kwargs)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 226, in process_one_file
ret = check_or_generate_pyi(options, loader)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 77, in wrapper
return f(*args, **kwargs)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 166, in check_or_generate_pyi
errorlog = check_py(src=src, options=options, loader=loader, ctx=ctx)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 101, in check_py
ret = _call(analyze.check_types, src, options, loader, ctx=ctx)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 77, in wrapper
return f(*args, **kwargs)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/io.py", line 88, in _call
return analyze_types(
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/analyze.py", line 49, in check_types
loc, defs = ctx.vm.run_program(src, filename, init_maximum_depth)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/vm.py", line 603, in run_program
node, f_globals, f_locals, _ = self.run_bytecode(self.ctx.root_node, code)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/vm.py", line 560, in run_bytecode
node, return_var = self.run_frame(frame, node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/vm.py", line 400, in run_frame
state = self.run_instruction(op, state)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/vm.py", line 356, in run_instruction
state = bytecode_fn(state, op)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/vm.py", line 1399, in byte_LOAD_FOLDED_CONST
state, var = constant_folding.build_folded_type(self.ctx, state, const)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/constant_folding.py", line 564, in build_folded_type
return collect_list(state, params, const.elements)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/constant_folding.py", line 507, in collect_list
return state, ctx.convert.build_list(state.node, vs)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 247, in build_list
return abstract.List(content, self.ctx).to_variable(node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/_instances.py", line 330, in __init__
self.set_native_slot("__getitem__", self.getitem_slot)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/mixin.py", line 134, in set_native_slot
self.set_slot(name, _make("NativeFunction", name, method, self.ctx))
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/mixin.py", line 127, in set_slot
_, attr = self.ctx.attribute_handler.get_attribute(
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 64, in get_attribute
return self._get_instance_attribute(node, obj, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 261, in _get_instance_attribute
return self._get_attribute(node, obj, cls, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 310, in _get_attribute
node, attr = self.get_attribute(node, cls, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 57, in get_attribute
return self._get_class_attribute(node, obj, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 253, in _get_class_attribute
return self._get_attribute(node, cls, meta, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 301, in _get_attribute
node, attr = self._lookup_from_mro_and_handle_descriptors(
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 377, in _lookup_from_mro_and_handle_descriptors
attr = self._lookup_from_mro(node, cls, name, valself, skip)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 475, in _lookup_from_mro
var = self._lookup_from_mro_flat(node, base, name, valself, skip)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 457, in _lookup_from_mro_flat
node, var = self._get_attribute_flat(node, base, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 507, in _get_attribute_flat
node, attr = self._get_member(node, cls, name, valself)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/attribute.py", line 543, in _get_member
member = obj.load_lazy_attribute(name, subst)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/_classes.py", line 466, in load_lazy_attribute
return super().load_lazy_attribute(name, subst, store)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/mixin.py", line 235, in load_lazy_attribute
variable = self._convert_member(name, member, subst)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/_classes.py", line 483, in _convert_member
c = self.ctx.convert.constant_to_value(member, subst=subst, node=node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 524, in constant_to_value
value = self._constant_to_value(pyval, subst, get_node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 765, in _constant_to_value
f = self.convert_pytd_function(pyval)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 390, in convert_pytd_function
sigs = [abstract.PyTDSignature(pytd_func.name, sig, self.ctx)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 390, in <listcomp>
sigs = [abstract.PyTDSignature(pytd_func.name, sig, self.ctx)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/_pytd_function.py", line 499, in __init__
self.param_types = [
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/abstract/_pytd_function.py", line 500, in <listcomp>
self.ctx.convert.constant_to_value(
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 524, in constant_to_value
value = self._constant_to_value(pyval, subst, get_node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 777, in _constant_to_value
return self.constant_to_value(cls, subst, self.ctx.root_node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 524, in constant_to_value
value = self._constant_to_value(pyval, subst, get_node)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 751, in _constant_to_value
overlay_member = self._maybe_load_from_overlay(module, base_name)
File "/home/cebtenzzre/.local/lib/python3.10/site-packages/pytype/convert.py", line 672, in _maybe_load_from_overlay
if overlay.get_module(member_name) is not overlay:
AttributeError: 'NoneType' object has no attribute 'get_module'
File: repr.py