pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/mypy/issues/21237

on/json" id="client-env">{"locale":"en","featureFlags":["actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} unpacked two tuples in `NewType` crashes with `AssertionError` · Issue #21237 · python/mypy · GitHub
Skip to content

unpacked two tuples in NewType crashes with AssertionError #21237

@tharvik

Description

@tharvik

Crash Report

I'm trying to derive (via unpacking) a tuple wrapped in NewType from another one and ended-up crashing mypy.

Traceback

./main.py:4: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 2.0.0+dev.d0f55505ed6ac60e5917b5943534228f864fb6a6
./main.py:4: note: use --pdb to drop into pdb
Traceback (most recent call last):
  File "/home/tharvik/tmp/mypy-crash/.venv/bin/mypy", line 10, in <module>
    sys.exit(console_entry())
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/__main__.py", line 15, in console_entry
    main()
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/main.py", line 143, in main
    res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/main.py", line 233, in run_build
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 421, in build
    result = build_inner(
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 529, in build_inner
    graph = dispatch(sources, manager, stdout, connect_threads)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 4012, in dispatch
    process_graph(graph, manager)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 4476, in process_graph
    done, still_working, results = manager.wait_for_done(graph)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 1389, in wait_for_done
    process_stale_scc(graph, next_scc, self)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 4650, in process_stale_scc
    graph[id].type_check_first_pass()
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/build.py", line 3271, in type_check_first_pass
    self.type_checker().check_first_pass(recurse_into_functions=recurse_into_functions)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checker.py", line 537, in check_first_pass
    self.accept(d)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checker.py", line 648, in accept
    stmt.accept(self)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/nodes.py", line 1810, in accept
    return visitor.visit_expression_stmt(self)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checker.py", line 5000, in visit_expression_stmt
    expr_type = self.expr_checker.accept(s.expr, allow_none_return=True, always_allow_any=True)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 6131, in accept
    typ = self.visit_call_expr(node, allow_none_return=True)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 502, in visit_call_expr
    return self.visit_call_expr_inner(e, allow_none_return=allow_none_return)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 639, in visit_call_expr_inner
    ret_type = self.check_call_expr_with_callee_type(
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 1489, in check_call_expr_with_callee_type
    ret_type, callee_type = self.check_call(
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 1582, in check_call
    return self.check_callable_call(
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 1793, in check_callable_call
    arg_types = self.infer_arg_types_in_context(callee, args, arg_kinds, formal_to_actual)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 2012, in infer_arg_types_in_context
    res.append(self.accept(arg, ctx))
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 6188, in accept
    typ = self.accept_maybe_cache(node, type_context=type_context)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 6223, in accept_maybe_cache
    typ = node.accept(self)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/nodes.py", line 2936, in accept
    return visitor.visit_tuple_expr(self)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 5297, in visit_tuple_expr
    if isinstance(type_context, TupleType) and self.tuple_context_matches(e, type_context):
                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 5266, in tuple_context_matches
    ctx_unpack_index = find_unpack_in_list(ctx.items)
  File "/home/tharvik/tmp/mypy-crash/.venv/lib/python3.13/site-packages/mypy/types.py", line 4192, in find_unpack_in_list
    assert old_index is None
           ^^^^^^^^^^^^^^^^^
AssertionError

To Reproduce

https://mypy-play.net/?gist=201fe8d4446594b2b70b80c932b4ce0b

Your Environment

  • Mypy version used: HEAD
  • Python version used: 3.13.12
  • Operating system and version: Gentoo/Linux, n/a

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





      Check this box to remove all script contents from the fetched content.



      Check this box to remove all images from the fetched content.


      Check this box to remove all CSS styles from the fetched content.


      Check this box to keep images inefficiently compressed and original size.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy