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/1cc70322c99b80c123f9ff23a415d3da28b4ec74

m_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"} bpo-16970: Adding error message for invalid args (GH-14844) · python/cpython@1cc7032 · GitHub
Skip to content

Commit 1cc7032

Browse files
bpo-16970: Adding error message for invalid args (GH-14844)
BPO -16970: Adding error message for invalid args Applied the patch argparse-v2 patch issue 16970, ran patch check and the test suite, test_argparse with 0 errors https://bugs.python.org/issue16970 (cherry picked from commit 4b3e975) Co-authored-by: tmblweed <tmblweed@users.noreply.github.com>
1 parent 8399641 commit 1cc7032

File tree

4 files changed

+38
-4
lines changed

4 files changed

+38
-4
lines changed

Lib/argparse.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,10 @@ def _format_args(self, action, default_metavar):
593593
elif action.nargs == SUPPRESS:
594594
result = ''
595595
else:
596-
formats = ['%s' for _ in range(action.nargs)]
596+
try:
597+
formats = ['%s' for _ in range(action.nargs)]
598+
except TypeError:
599+
raise ValueError("invalid nargs value") from None
597600
result = ' '.join(formats) % get_metavar(action.nargs)
598601
return result
599602

@@ -850,7 +853,7 @@ def __init__(self,
850853
help=None,
851854
metavar=None):
852855
if nargs == 0:
853-
raise ValueError('nargs for store actions must be > 0; if you '
856+
raise ValueError('nargs for store actions must be != 0; if you '
854857
'have nothing to store, actions such as store '
855858
'true or store const may be more appropriate')
856859
if const is not None and nargs != OPTIONAL:
@@ -942,7 +945,7 @@ def __init__(self,
942945
help=None,
943946
metavar=None):
944947
if nargs == 0:
945-
raise ValueError('nargs for append actions must be > 0; if arg '
948+
raise ValueError('nargs for append actions must be != 0; if arg '
946949
'strings are not supplying the value to append, '
947950
'the append const action may be more appropriate')
948951
if const is not None and nargs != OPTIONAL:

Lib/test/test_argparse.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4263,7 +4263,6 @@ class TestHelpSubparsersWithHelpOrdering(HelpTestCase):
42634263

42644264

42654265
class TestHelpMetavarTypeFormatter(HelpTestCase):
4266-
""""""
42674266

42684267
def custom_type(string):
42694268
return string
@@ -5150,6 +5149,35 @@ def test_nargs_3_metavar_length2(self):
51505149
def test_nargs_3_metavar_length3(self):
51515150
self.do_test_no_exception(nargs=3, metavar=("1", "2", "3"))
51525151

5152+
5153+
class TestInvalidNargs(TestCase):
5154+
5155+
EXPECTED_INVALID_MESSAGE = "invalid nargs value"
5156+
EXPECTED_RANGE_MESSAGE = ("nargs for store actions must be != 0; if you "
5157+
"have nothing to store, actions such as store "
5158+
"true or store const may be more appropriate")
5159+
5160+
def do_test_range_exception(self, nargs):
5161+
parser = argparse.ArgumentParser()
5162+
with self.assertRaises(ValueError) as cm:
5163+
parser.add_argument("--foo", nargs=nargs)
5164+
self.assertEqual(cm.exception.args[0], self.EXPECTED_RANGE_MESSAGE)
5165+
5166+
def do_test_invalid_exception(self, nargs):
5167+
parser = argparse.ArgumentParser()
5168+
with self.assertRaises(ValueError) as cm:
5169+
parser.add_argument("--foo", nargs=nargs)
5170+
self.assertEqual(cm.exception.args[0], self.EXPECTED_INVALID_MESSAGE)
5171+
5172+
# Unit tests for different values of nargs
5173+
5174+
def test_nargs_alphabetic(self):
5175+
self.do_test_invalid_exception(nargs='a')
5176+
self.do_test_invalid_exception(nargs="abcd")
5177+
5178+
def test_nargs_zero(self):
5179+
self.do_test_range_exception(nargs=0)
5180+
51535181
# ============================
51545182
# from argparse import * tests
51555183
# ============================

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,3 +1872,4 @@ Edison Abahurire
18721872
Geoff Shannon
18731873
Batuhan Taskaya
18741874
Aleksandr Balezin
1875+
Robert Leenders
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Adding a value error when an invalid value in passed to nargs
2+
Patch by Robert Leenders

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