Title: [2.0 regression] Crash with --allow-redefinition on partial type with global · Issue #21423 · python/mypy · GitHub
Open Graph Title: [2.0 regression] Crash with --allow-redefinition on partial type with global · Issue #21423 · python/mypy
X Title: [2.0 regression] Crash with --allow-redefinition on partial type with global · Issue #21423 · python/mypy
Description: λ cat test250.py x = [] def f() -> None: global x x λ mypy --no-incremental --show-traceback --allow-redefinition test250.py test250.py:5: error: INTERNAL ERROR -- Please try using mypy master on GitHub: https://mypy.readthedocs.io/en/st...
Open Graph Description: λ cat test250.py x = [] def f() -> None: global x x λ mypy --no-incremental --show-traceback --allow-redefinition test250.py test250.py:5: error: INTERNAL ERROR -- Please try using mypy master on G...
X Description: λ cat test250.py x = [] def f() -> None: global x x λ mypy --no-incremental --show-traceback --allow-redefinition test250.py test250.py:5: error: INTERNAL ERROR -- Please try using mypy master o...
Opengraph URL: https://github.com/python/mypy/issues/21423
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[2.0 regression] Crash with --allow-redefinition on partial type with global","articleBody":"```\nλ cat test250.py\nx = []\n\ndef f() -\u003e None:\n global x\n x\n```\n\n```\nλ mypy --no-incremental --show-traceback --allow-redefinition test250.py\ntest250.py:5: error: INTERNAL ERROR -- Please try using mypy master on GitHub:\nhttps://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build\nPlease report a bug at https://github.com/python/mypy/issues\nversion: 2.1.0+dev.16823a17c10ce5a00b0bbdee5fa9959dccea8ccc\nTraceback (most recent call last):\n File \"/Users/shantanu/.virtualenvs/mypy-fexc/bin/mypy\", line 10, in \u003cmodule\u003e\n sys.exit(console_entry())\n File \"/Users/shantanu/dev/mypy/mypy/__main__.py\", line 16, in console_entry\n main()\n File \"/Users/shantanu/dev/mypy/mypy/main.py\", line 154, in main\n res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)\n File \"/Users/shantanu/dev/mypy/mypy/main.py\", line 244, in run_build\n res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 422, in build\n result = build_inner(\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 537, in build_inner\n graph = dispatch(sources, manager, stdout, connect_threads)\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 4150, in dispatch\n process_graph(graph, manager)\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 4618, in process_graph\n done, still_working, results = manager.wait_for_done(graph)\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 1492, in wait_for_done\n process_stale_scc(graph, next_scc, self)\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 4792, in process_stale_scc\n graph[id].type_check_first_pass()\n File \"/Users/shantanu/dev/mypy/mypy/build.py\", line 3414, in type_check_first_pass\n self.type_checker().check_first_pass(recurse_into_functions=recurse_into_functions)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 618, in check_first_pass\n self.accept(d)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 765, in accept\n stmt.accept(self)\n File \"/Users/shantanu/dev/mypy/mypy/nodes.py\", line 1159, in accept\n return visitor.visit_func_def(self)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 1332, in visit_func_def\n self.visit_func_def_impl(defn)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 1336, in visit_func_def_impl\n self.check_func_item(defn, name=defn.name)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 1369, in check_func_item\n self.check_func_def(defn, typ, name, allow_empty)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 1551, in check_func_def\n self.accept(item.body)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 765, in accept\n stmt.accept(self)\n File \"/Users/shantanu/dev/mypy/mypy/nodes.py\", line 1816, in accept\n return visitor.visit_block(self)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 3275, in visit_block\n self.accept(s)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 765, in accept\n stmt.accept(self)\n File \"/Users/shantanu/dev/mypy/mypy/nodes.py\", line 1836, in accept\n return visitor.visit_expression_stmt(self)\n File \"/Users/shantanu/dev/mypy/mypy/checker.py\", line 5139, in visit_expression_stmt\n expr_type = self.expr_checker.accept(s.expr, allow_none_return=True, always_allow_any=True)\n File \"/Users/shantanu/dev/mypy/mypy/checkexpr.py\", line 6177, in accept\n typ = node.accept(self) # r-value type, when interpreted as a value expression\n File \"/Users/shantanu/dev/mypy/mypy/nodes.py\", line 2439, in accept\n return visitor.visit_name_expr(self)\n ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/Users/shantanu/dev/mypy/mypy/checkexpr.py\", line 350, in visit_name_expr\n narrowed = self.narrow_type_from_binder(e, result)\n File \"/Users/shantanu/dev/mypy/mypy/checkexpr.py\", line 6486, in narrow_type_from_binder\n narrowed = narrow_declared_type(known_type, restriction)\n File \"/Users/shantanu/dev/mypy/mypy/meet.py\", line 185, in narrow_declared_type\n elif not is_overlapping_types(declared, narrowed):\n ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^\n File \"/Users/shantanu/dev/mypy/mypy/meet.py\", line 379, in is_overlapping_types\n assert False, \"Unexpectedly encountered partial type\"\n ^^^^^\nAssertionError: Unexpectedly encountered partial type\n```","author":{"url":"https://github.com/hauntsaninja","@type":"Person","name":"hauntsaninja"},"datePublished":"2026-05-07T00:00:51.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/21423/mypy/issues/21423"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:e49c429f-7346-137e-5d4e-3649496d5592 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CA44:3E084C:13F32B1:1B31301:6A4C775D |
| html-safe-nonce | e821a305b1b0f01fc5bd4cf35687d18df20a8463fb25352a2ad4cc23db6846d0 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQTQ0OjNFMDg0QzoxM0YzMkIxOjFCMzEzMDE6NkE0Qzc3NUQiLCJ2aXNpdG9yX2lkIjoiMzY2NjYzMjE5MjQ3MTg4OTc1NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c225878383e57e37c9bd7dcf2f3e604a7acab81141285bf3b8d0b7795c443b77 |
| hovercard-subject-tag | issue:4395211161 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/mypy/21423/issue_layout |
| twitter:image | https://opengraph.githubassets.com/367191957a7ef11c93ea623525387c53c6f2c686e8139192c469e6b246127250/python/mypy/issues/21423 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/367191957a7ef11c93ea623525387c53c6f2c686e8139192c469e6b246127250/python/mypy/issues/21423 |
| og:image:alt | λ cat test250.py x = [] def f() -> None: global x x λ mypy --no-incremental --show-traceback --allow-redefinition test250.py test250.py:5: error: INTERNAL ERROR -- Please try using mypy master on G... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | hauntsaninja |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| go-import | github.com/python/mypy git https://github.com/python/mypy.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 7053637 |
| octolytics-dimension-repository_nwo | python/mypy |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 7053637 |
| octolytics-dimension-repository_network_root_nwo | python/mypy |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 56ac743bebb13694b888673bb7257f4b97a4b7fd |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width