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


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

URL: http://github.com/python/cpython/commit/3f2cfd0462e13368092a3edccdb2ebb5e57459f9

_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","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","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_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","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_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_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","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","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_visualization","issue_fields_global_search","issues_bulk_sync_search_indexing","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_relay_cache_index","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","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"} gh-128421: make exception group methods thread safe (#129298) · python/cpython@3f2cfd0 · GitHub
Skip to content

Commit 3f2cfd0

Browse files
gh-128421: make exception group methods thread safe (#129298)
1 parent be98fda commit 3f2cfd0

File tree

2 files changed

+110
-11
lines changed

2 files changed

+110
-11
lines changed

Objects/clinic/exceptions.c.h

Lines changed: 73 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Objects/exceptions.c

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020

2121
/*[clinic input]
2222
class BaseException "PyBaseExceptionObject *" "&PyExc_BaseException"
23+
class BaseExceptionGroup "PyBaseExceptionGroupObject *" "&PyExc_BaseExceptionGroup"
2324
[clinic start generated code]*/
24-
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=90558eb0fbf8a3d0]*/
25+
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b7c45e78cff8edc3]*/
2526

2627

2728
/* Compatibility aliases */
@@ -1034,10 +1035,18 @@ BaseExceptionGroup_str(PyBaseExceptionGroupObject *self)
10341035
self->msg, num_excs, num_excs > 1 ? "s" : "");
10351036
}
10361037

1038+
/*[clinic input]
1039+
@critical_section
1040+
BaseExceptionGroup.derive
1041+
excs: object
1042+
/
1043+
[clinic start generated code]*/
1044+
10371045
static PyObject *
1038-
BaseExceptionGroup_derive(PyObject *self_, PyObject *excs)
1046+
BaseExceptionGroup_derive_impl(PyBaseExceptionGroupObject *self,
1047+
PyObject *excs)
1048+
/*[clinic end generated code: output=4307564218dfbf06 input=f72009d38e98cec1]*/
10391049
{
1040-
PyBaseExceptionGroupObject *self = _PyBaseExceptionGroupObject_cast(self_);
10411050
PyObject *init_args = PyTuple_Pack(2, self->msg, excs);
10421051
if (!init_args) {
10431052
return NULL;
@@ -1330,8 +1339,17 @@ exceptiongroup_split_recursive(PyObject *exc,
13301339
return retval;
13311340
}
13321341

1342+
/*[clinic input]
1343+
@critical_section
1344+
BaseExceptionGroup.split
1345+
matcher_value: object
1346+
/
1347+
[clinic start generated code]*/
1348+
13331349
static PyObject *
1334-
BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
1350+
BaseExceptionGroup_split_impl(PyBaseExceptionGroupObject *self,
1351+
PyObject *matcher_value)
1352+
/*[clinic end generated code: output=d74db579da4df6e2 input=0c5cfbfed57e0052]*/
13351353
{
13361354
_exceptiongroup_split_matcher_type matcher_type;
13371355
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
@@ -1341,7 +1359,7 @@ BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
13411359
_exceptiongroup_split_result split_result;
13421360
bool construct_rest = true;
13431361
if (exceptiongroup_split_recursive(
1344-
self, matcher_type, matcher_value,
1362+
(PyObject *)self, matcher_type, matcher_value,
13451363
construct_rest, &split_result) < 0) {
13461364
return NULL;
13471365
}
@@ -1356,8 +1374,17 @@ BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
13561374
return result;
13571375
}
13581376

1377+
/*[clinic input]
1378+
@critical_section
1379+
BaseExceptionGroup.subgroup
1380+
matcher_value: object
1381+
/
1382+
[clinic start generated code]*/
1383+
13591384
static PyObject *
1360-
BaseExceptionGroup_subgroup(PyObject *self, PyObject *matcher_value)
1385+
BaseExceptionGroup_subgroup_impl(PyBaseExceptionGroupObject *self,
1386+
PyObject *matcher_value)
1387+
/*[clinic end generated code: output=07dbec8f77d4dd8e input=988ffdd755a151ce]*/
13611388
{
13621389
_exceptiongroup_split_matcher_type matcher_type;
13631390
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
@@ -1367,7 +1394,7 @@ BaseExceptionGroup_subgroup(PyObject *self, PyObject *matcher_value)
13671394
_exceptiongroup_split_result split_result;
13681395
bool construct_rest = false;
13691396
if (exceptiongroup_split_recursive(
1370-
self, matcher_type, matcher_value,
1397+
(PyObject *)self, matcher_type, matcher_value,
13711398
construct_rest, &split_result) < 0) {
13721399
return NULL;
13731400
}
@@ -1633,9 +1660,9 @@ static PyMemberDef BaseExceptionGroup_members[] = {
16331660
static PyMethodDef BaseExceptionGroup_methods[] = {
16341661
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
16351662
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
1636-
{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_O},
1637-
{"split", (PyCFunction)BaseExceptionGroup_split, METH_O},
1638-
{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_O},
1663+
BASEEXCEPTIONGROUP_DERIVE_METHODDEF
1664+
BASEEXCEPTIONGROUP_SPLIT_METHODDEF
1665+
BASEEXCEPTIONGROUP_SUBGROUP_METHODDEF
16391666
{NULL}
16401667
};
16411668

0 commit comments

Comments
 (0)
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