Skip to content

Internal error when overriding frozen attribute with function #8976

Description

@karlb

Running mypy on this

from dataclasses import dataclass


@dataclass(frozen=True)
class Foo:
    attr: int


@dataclass(frozen=True)
class Bar(Foo):
    def attr(self) -> int:
        return 1

produces the following error

foo.py:10: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.rtfd.io/en/latest/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.790+dev.793cf187f0e529f9d6623a512ae0149124ded542
Traceback (most recent call last):
  File "/home/karl/tools/venv/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/__main__.py", line 8, in console_entry
    main(None, sys.stdout, sys.stderr)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/main.py", line 89, in main
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/build.py", line 181, in build
    sources, options, alt_lib_path, flush_errors, fscache, stdout, stderr, extra_plugins
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/build.py", line 252, in _build
    graph = dispatch(sources, manager, stdout)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/build.py", line 2626, in dispatch
    process_graph(graph, manager)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/build.py", line 2949, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/build.py", line 3041, in process_stale_scc
    mypy.semanal_main.semantic_analysis_for_scc(graph, scc, manager.errors)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal_main.py", line 78, in semantic_analysis_for_scc
    process_top_levels(graph, scc, patches)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal_main.py", line 203, in process_top_levels
    patches)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal_main.py", line 331, in semantic_analyze_target
    active_type=active_type)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 357, in refresh_partial
    self.refresh_top_level(node)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 368, in refresh_top_level
    self.accept(d)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 4691, in accept
    node.accept(self)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/nodes.py", line 940, in accept
    return visitor.visit_class_def(self)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 1011, in visit_class_def
    self.analyze_class(defn)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 1088, in analyze_class
    self.analyze_class_body_common(defn)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 1097, in analyze_class_body_common
    self.apply_class_plugin_hooks(defn)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/semanal.py", line 1143, in apply_class_plugin_hooks
    hook(ClassDefContext(defn, decorator, self))
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/plugins/dataclasses.py", line 348, in dataclass_class_maker_callback
    transformer.transform()
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/plugins/dataclasses.py", line 161, in transform
    self._freeze(attributes)
  File "/home/karl/tools/venv/lib/python3.7/site-packages/mypy/plugins/dataclasses.py", line 334, in _freeze
    assert isinstance(var, Var)
AssertionError: 
foo.py:10: : note: use --pdb to drop into pdb

I know that the input code does not make sense, but I assume you are still interested in not crashing in even in this case.

Activity

  1. changed the title [-]Internal error on master[/-] [+]Internal error when overriding frozen attribute with function[/+] on Jun 9, 2020
  2. ilevkivskyi commented on Jun 12, 2020

    @ilevkivskyi
    Member

    Thanks for reporting!

  3. JukkaL commented on Aug 24, 2022

    @JukkaL
    Collaborator

    This looks very similar to #8334. Closing as duplicate of #8334.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions