pytype icon indicating copy to clipboard operation
pytype copied to clipboard

--strict-import fails silently on list literals (regression)

Open cebtenzzre opened this issue 1 year ago • 0 comments

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

cebtenzzre avatar Jun 13 '23 19:06 cebtenzzre