CINXE.COM

History for docs/user - pypi/warehouse · GitHub

<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-7aa84bb7e11e.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-f65db3e8d171.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-a8258e3c6dda.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-7e97d834719c.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-01d869f460be.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-534f3e971240.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-a8cc7d138001.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-35e9dfdc4f9f.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-cf4cc5f62dfe.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-d9abecd14f1e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-93aded0ee8a1.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-8bed0685a4b5.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-a954a02d9269.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["bypass_copilot_indexing_quota","copilot_immersive_file_preview","copilot_new_references_ui","copilot_bing_skill_ga","copilot_attach_folder_reference","copilot_personal_instructions","copilot_personal_instructions_templates","copilot_chat_repo_custom_instructions_preview","copilot_chat_retry_on_error","copilot_chat_persist_submitted_input","copilot_conversational_ux_history_refs","copilot_chat_shared_chat_input","copilot_chat_shared_topic_indicator","copilot_chat_shared_repo_sso_banner","copilot_editor_upsells","copilot_dotcom_chat_reduce_telemetry","copilot_implicit_context","copilot_no_floating_button","copilot_smell_icebreaker_ux","copilot_read_shared_conversation","dotcom_chat_client_side_skills","copilot_new_markdown_renderer","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_o3_mini_streaming","hovercard_accessibility","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","issues_react_include_bots_in_pickers","marketing_pages_search_explore_provider","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_copilot_vscode_link_update","site_proxima_australia_update","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-8f98335c0ff3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-d7e6bc799724.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-4600dbf2d60a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-f6da4b3fa34c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a74b4e0a8a6b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-f0c8a795d1fd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-44d18ad044b3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-b7096f9a808d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-e3cbe28f1638.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-205cd97df772.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-a1563f62660e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-f48a418a99d4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-8fa27fd7fbb6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-87a4ae-e2caa5390f5a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-783fc7e142e5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-854fa1987fb5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-e12489347ccf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-96453a51f920.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-3eebbd-0763620ad7bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_delegated-events_di-e161aa-9d41fb1b6c9e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_remote--3c9c82-7238cfcdaa51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-0a7bffd2f129.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-a4509a8583cd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-8e38c0ecf8b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-218ef2d63cca.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-611691cca2f6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-2df2f32ec596.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-f7cc96ebae76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b89b98661809.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__Stack_js-node_modules_lodash-es__Uint8Array_js-node_modules_l-4faaa6-4a736fde5c2f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_date-fns_format_mjs-6e4d0f904632.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_date-fns_addWeeks_mjs-node_modules_date-fns_addYears_mjs-node_modules_da-827f4f-cf37cd06c24f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-relay_index_js-3e4c69718bad.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_focus-visible_dist_focus-visible_js-node_modules_fzy_js_index_js-node_mo-c4d1d6-73cf7c06cba8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryObserver_js-node_modules_tanstack_-defd52-843b41414e0e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hotkey_dist_index_js-node_modules_date-fns_getDaysInMonth_mjs-nod-70c11b-75afe0f5c344.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__baseIsEqual_js-8929eb9718d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-cff384-b7d3c96e5f18.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-relay_hooks_js-node_modules_color2k_dist_index_exports_import_es_m-05025c-dd04247c9c77.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_hydro-analytics-3481a5-634f27f22a6a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_promise-with-resolvers-polyfill_promise-with-r-17c672-d6b5ea82572a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-73c512ff3577.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-e571874765ef.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_list-view_src_ListView_ListView_tsx-ui_packages_safe-html_SafeHTML_tsx-f535a9113283.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_list-view_src_ListItem_ListItem_tsx-ui_packages_list-view_src_ListItem_Title_tsx-1f76c6b816f9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_date-picker_date-picker_ts-ui_packages_github-avatar_GitHubAvatar_tsx-df9548397fca.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_item-picker_constants_labels_ts-ui_packages_item-picker_constants_values_ts-ui_pa-163a9a-83df0788be25.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_item-picker_components_RepositoryPicker_tsx-1c8608c736a7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_copy-to-clipboard_CopyToClipboardButton_tsx-ui_packages_inline-autocomplete_Inlin-d7b165-b871eee9ce66.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_comment-box_api_file-upload_ts-ui_packages_comment-box_api_preview_ts-ui_packages-820527-188adc9463cf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_issue-create_dialog_CreateIssueDialogEntryV2_tsx-9d0f0abe995f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-2cce17df147b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_issue-create_dialog_CreateIssueDialogEntry_tsx-1963f7a4e6cd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_utilities_web-worker_ts-ui_packages_code-view-shared_worker-jobs-a69584-34e5b559ff45.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/commits-b4420bff4dd8.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.f5cae0c610a2c4c470c2.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/commits.6d90bb9dfef3a1c389a1.module.css" /> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-eff84ecbf2b6.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.f5cae0c610a2c4c470c2.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>History for docs/user - pypi/warehouse · GitHub</title> <meta name="route-pattern" content="/:user_id/:repository/commits(/*name)" data-turbo-transient> <meta name="route-controller" content="commits" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="9142:385938:12D3BE:16A27C:67B1D4DF" data-pjax-transient="true"/><meta name="html-safe-nonce" content="beb5e0257633d1ec57c30da9a626a328a290e066f6489f5e7d63458b71df23ba" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MTQyOjM4NTkzODoxMkQzQkU6MTZBMjdDOjY3QjFENERGIiwidmlzaXRvcl9pZCI6IjI2NDQyMDQwNjQ5OTUzOTg4NzkiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="2f5b087d94701b475a94afc218e0cf0e02cd56ebcd76d01869d6afae0d02624e" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:9120498" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,commit-list,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/pypi/warehouse/commits/main/docs/user" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/commits/show" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="The Python Package Index. Contribute to pypi/warehouse development by creating an account on GitHub."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/pypi/warehouse/commits/main/docs/user" /> <meta name="twitter:image" content="https://repository-images.githubusercontent.com/9120498/9b36e080-9691-11e9-9844-578f278969f6" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="History for docs/user - pypi/warehouse" /><meta name="twitter:description" content="The Python Package Index. Contribute to pypi/warehouse development by creating an account on GitHub." /> <meta property="og:image" content="https://repository-images.githubusercontent.com/9120498/9b36e080-9691-11e9-9844-578f278969f6" /><meta property="og:image:alt" content="The Python Package Index. Contribute to pypi/warehouse development by creating an account on GitHub." /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="History for docs/user - pypi/warehouse" /><meta property="og:url" content="https://github.com/pypi/warehouse" /><meta property="og:description" content="The Python Package Index. Contribute to pypi/warehouse development by creating an account on GitHub." /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="7285c1d48b26dbf4a947aa96973b0576ccc264b2eed60ad331fecccb5cc407f9" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="ace39c3b6632770952207593607e6e0be0db363435a8b877b1f96abe6430f345" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="1c71206221e00a0a8e77d94d48d954f34ddbd711c4a0ced954fd49cd786cfa61" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="e957203196628458a3ddb1546cfef8b3b07cafa937f5a0542f0fb75f6273f835" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-cache-control" content="no-cache" data-turbo-transient> <meta name="go-import" content="github.com/pypi/warehouse git https://github.com/pypi/warehouse.git"> <meta name="octolytics-dimension-user_id" content="2964877" /><meta name="octolytics-dimension-user_login" content="pypi" /><meta name="octolytics-dimension-repository_id" content="9120498" /><meta name="octolytics-dimension-repository_nwo" content="pypi/warehouse" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="9120498" /><meta name="octolytics-dimension-repository_network_root_nwo" content="pypi/warehouse" /> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-765cf28766da.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.f5cae0c610a2c4c470c2.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-73b675cf164a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-2d195d11c56b.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fpypi%2Fwarehouse%2Fcommits%2Fmain%2Fdocs%2Fuser" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="118e106911e80c2eeb364691e96cd74f0a5434139a2988d7c7231d57d64e0340" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_product_navbar&quot;}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_search&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_search_link_product_navbar&quot;}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprises&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;nonprofits&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_link_solutions_navbar&quot;}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;government&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_industries&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;white_papers_ebooks_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;white_papers_ebooks_webinars_link_resources_navbar&quot;}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;executive_insights&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;executive_insights_link_resources_navbar&quot;}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;advanced_security_link_enterprise_navbar&quot;}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_enterprise_navbar&quot;}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:pypi/warehouse" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="uE7SNocrWbzef8z4VWvYD2YcCRNTx-CywMqtYF0SnX4PSmWbGENrx8yND1Q8Cknao6qjlfHg51SpdGZxHjP6AA" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="pypi/warehouse" data-current-org="pypi" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-a080363c-ef9a-4c3d-9d3e-3a4b62f79f9f" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-a080363c-ef9a-4c3d-9d3e-3a4b62f79f9f" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="K7yStVuJ5VlXxOK4Hy/VYmcYIs5P293ZX1ojjPYrUgKld48MRWnGns7RFrOlN8SHlFYptkPQM95WnKcRwi792g==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="Sua1av2naJaDhfzmfXvcoOZ1h4bfZA2SQEMhN5RawfvApeQSvTFXnmE28uPbMqkfUl3ZZoLBP1QuymLaqak1YA==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="+mIV/TJn9byvSeTESkMREvZutOfoBDmozdlMy8rNOToBq8sL75UkTTcA1MOiJZDS26PCHZjllTMDj2coLT6tAQ==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fpypi%2Fwarehouse%2Fcommits%2Fmain%2Fdocs%2Fuser" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="118e106911e80c2eeb364691e96cd74f0a5434139a2988d7c7231d57d64e0340" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fcommits%2Fshow&amp;source=header-repo&amp;source_repo=pypi%2Fwarehouse" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="118e106911e80c2eeb364691e96cd74f0a5434139a2988d7c7231d57d64e0340" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;/commits/show;ref_cta:Sign up;ref_loc:header logged out&quot;}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-2eda2e3e-e726-484f-84ee-ff4bb32c1d43" aria-labelledby="tooltip-d5bbcc8f-1243-435c-b0d8-1203d6c2cc98" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-d5bbcc8f-1243-435c-b0d8-1203d6c2cc98" for="icon-button-2eda2e3e-e726-484f-84ee-ff4bb32c1d43" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/pypi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/pypi"> pypi </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/pypi/warehouse">warehouse</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2Fpypi%2Fwarehouse" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7573aa74be9317380854b68dd8c25185c745f40ea5a22767ee50fe77c1569004" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-c569aec7-d90d-48c4-9ac0-f8ea40b6e222" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Fpypi%2Fwarehouse" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:9120498,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2e19eb6f3f61abfdf453043dbf9cef9206d307b47d349823f08d480b3fc0f2c1" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="991" data-view-component="true" class="Counter">991</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fpypi%2Fwarehouse" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:9120498,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/pypi/warehouse/commits/main/docs/user&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="64fa2fe26f96d3abe99a44f7fa328eb8f7ddfb165547da582157a3cd9c95feed" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3660 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,660" data-view-component="true" class="Counter js-social-count">3.7k</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/pypi/warehouse" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /pypi/warehouse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab" href="/pypi/warehouse/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /pypi/warehouse/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> <span data-content="Issues">Issues</span> <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="416" data-view-component="true" class="Counter">416</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/pypi/warehouse/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /pypi/warehouse/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="54" data-view-component="true" class="Counter">54</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/pypi/warehouse/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /pypi/warehouse/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="projects-tab" href="/pypi/warehouse/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /pypi/warehouse/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> <span data-content="Projects">Projects</span> <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/pypi/warehouse/security" data-tab-item="i5security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /pypi/warehouse/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/pypi/warehouse/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/pypi/warehouse/pulse" data-tab-item="i6insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /pypi/warehouse/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-button" popovertarget="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-overlay" aria-controls="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-list" aria-haspopup="true" aria-labelledby="tooltip-d1cca67a-7438-4e9f-9993-90cd928dcaf2" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-d1cca67a-7438-4e9f-9993-90cd928dcaf2" for="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position data-target="action-menu.overlay" id="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-overlay" anchor="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-button" id="action-menu-2307b935-053f-4446-87f9-b7a9c8eff890-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-fca4be16-ebff-4545-a0ad-a615ab652034" href="/pypi/warehouse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-d986939b-6422-45ed-8f39-83e54205937e" href="/pypi/warehouse/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Issues </span> </a> </li> <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-7ea22a0b-9a25-40e5-abcc-6e1c318a0937" href="/pypi/warehouse/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-95651f5c-973a-45d8-b716-dd4f1c17ee20" href="/pypi/warehouse/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i4projects-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-afcd9dde-d2fa-4013-9fa0-a448d19e744a" href="/pypi/warehouse/projects" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Projects </span> </a> </li> <li hidden="hidden" data-menu-item="i5security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-c1e502da-eba2-4693-a123-ff0cf0c6d71f" href="/pypi/warehouse/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i6insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-2cae4293-839c-4ac7-8f21-769542f2b35c" href="/pypi/warehouse/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <react-app app-name="commits" initial-path="/pypi/warehouse/commits/main/docs/user" style="display: block; min-height: calc(100vh - 64px);" data-attempted-ssr="true" data-ssr="true" data-lazy="false" data-alternate="false" data-data-router-enabled="false" > <script type="application/json" data-target="react-app.embeddedData">{"payload":{"commitGroups":[{"title":"Feb 15, 2025","commits":[{"oid":"0c0efecd6bd6a556c76caaf6f7425a0550c3a89f","url":"/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f","authoredDate":"2025-02-15T21:26:51.000+01:00","committedDate":"2025-02-15T20:26:51.000Z","shortMessage":"Update stats.md - corrected link to pypistats (#17610)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Update stats.md - corrected link to pypistats (#17610)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f\"\u003eUpdate stats.md - corrected link to pypistats (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2855696553\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17610\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17610/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17610\"\u003e#17610\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Update stats.md - corrected link to pypistats (#17610)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"geyslein","displayName":"Ronny Gey","avatarUrl":"https://avatars.githubusercontent.com/u/283309?v=4","path":"/geyslein","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Feb 11, 2025","commits":[{"oid":"3cb0ad08918e859f6ec1070312c384ea1f30c996","url":"/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996","authoredDate":"2025-02-11T11:46:13.000-05:00","committedDate":"2025-02-11T16:46:13.000Z","shortMessage":"docs/api: clean up Upload API docs slightly (#17514)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs/api: clean up Upload API docs slightly (#17514)\n\n* docs/api: clean up Upload API docs slightly\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* fixup pluralization docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996\"\u003edocs/api: clean up Upload API docs slightly (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2816850845\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17514\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17514/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17514\"\u003e#17514\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs/api: clean up Upload API docs slightly (#17514)\n\n* docs/api: clean up Upload API docs slightly\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* fixup pluralization docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs/api: clean up Upload API docs slightly\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* fixup pluralization docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"a68ad6d04da42cf0224b2ad810755584af37842f","url":"/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f","authoredDate":"2025-02-11T10:57:47.000-05:00","committedDate":"2025-02-11T15:57:47.000Z","shortMessage":"Add summaries for the security models of attestations and trusted publishing (#17242)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add summaries for the security models of attestations and trusted publishing (#17242)\n\n* Add summaries for the security models of attestations and trusted publishers\r\n\r\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\n* Switch to non-walled link\r\n\r\n* Clarify short/long-lived token risks\r\n\r\n* Update docs/user/trusted-publishers/security-model.md\r\n\r\n---------\r\n\r\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f\"\u003eAdd summaries for the security models of attestations and trusted publishing (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2724702971\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17242\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17242/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17242\"\u003e#17242\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add summaries for the security models of attestations and trusted publishing (#17242)\n\n* Add summaries for the security models of attestations and trusted publishers\r\n\r\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\n* Switch to non-walled link\r\n\r\n* Clarify short/long-lived token risks\r\n\r\n* Update docs/user/trusted-publishers/security-model.md\r\n\r\n---------\r\n\r\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Add summaries for the security models of attestations and trusted publishers\n\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\n\n* Apply suggestions from code review\n\n* Switch to non-walled link\n\n* Clarify short/long-lived token risks\n\n* Update docs/user/trusted-publishers/security-model.md\n\n---------\n\nSigned-off-by: Mac Chaffee \u0026lt;me@macchaffee.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"mac-chaffee","displayName":"Mac Chaffee","avatarUrl":"https://avatars.githubusercontent.com/u/7581860?v=4","path":"/mac-chaffee","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 22, 2025","commits":[{"oid":"a271660ee3b1fd0baa6321045b1b57475d2ed5b8","url":"/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8","authoredDate":"2025-01-22T08:42:23.000-05:00","committedDate":"2025-01-22T13:42:23.000Z","shortMessage":"More fixes to the token disclosure docs (#17480)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"More fixes to the token disclosure docs (#17480)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8\"\u003eMore fixes to the token disclosure docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2804414653\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17480\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17480/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17480\"\u003e#17480\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"More fixes to the token disclosure docs (#17480)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"8329e67755d2c58c40d527d2c5609d9b237c73b6","url":"/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6","authoredDate":"2025-01-21T20:36:33.000-05:00","committedDate":"2025-01-21T20:36:33.000-05:00","shortMessage":"More disclosure metrics (#17471)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"More disclosure metrics (#17471)\n\n* Add some more metrics around token disclosures\r\n\r\n* Minor refactor\r\n\r\n* Fix docs: there is no trailing slash\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6\"\u003eMore disclosure metrics (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2803137294\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17471\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17471/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17471\"\u003e#17471\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"More disclosure metrics (#17471)\n\n* Add some more metrics around token disclosures\r\n\r\n* Minor refactor\r\n\r\n* Fix docs: there is no trailing slash\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Add some more metrics around token disclosures\n\n* Minor refactor\n\n* Fix docs: there is no trailing slash","authors":[{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 14, 2025","commits":[{"oid":"c477e43c7b7910acab6f5d39cdd70589e15e85d0","url":"/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0","authoredDate":"2025-01-14T16:50:31.000-07:00","committedDate":"2025-01-14T23:50:31.000Z","shortMessage":"fix: environment name should be pypi (#17381)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"fix: environment name should be pypi (#17381)\n\n* fix: environment name should be pypi\r\n\r\n* Fix: update take screenshots from node\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0\"\u003efix: environment name should be pypi (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2778962207\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17381\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17381/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17381\"\u003e#17381\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"fix: environment name should be pypi (#17381)\n\n* fix: environment name should be pypi\r\n\r\n* Fix: update take screenshots from node\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* fix: environment name should be pypi\n\n* Fix: update take screenshots from node","authors":[{"login":"lwasser","displayName":"Leah Wasser","avatarUrl":"https://avatars.githubusercontent.com/u/7649194?v=4","path":"/lwasser","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 13, 2025","commits":[{"oid":"0d0a56e08500f62dd0be208e546bbcd22e8bc47a","url":"/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a","authoredDate":"2025-01-13T17:00:12.000+01:00","committedDate":"2025-01-13T11:00:12.000-05:00","shortMessage":"docs: add details of how to verify provenance JSON files (#17391)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: add details of how to verify provenance JSON files (#17391)\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a\"\u003edocs: add details of how to verify provenance JSON files (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2781696239\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17391\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17391/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17391\"\u003e#17391\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: add details of how to verify provenance JSON files (#17391)\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 12, 2024","commits":[{"oid":"e6bdf57bed06a194927d8b546f2615520d9415b7","url":"/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7","authoredDate":"2024-12-11T19:47:01.000-05:00","committedDate":"2024-12-12T00:47:01.000Z","shortMessage":"docs: use Trusted Publishing uniformly as a term of art (#17267)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: use Trusted Publishing uniformly as a term of art (#17267)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7\"\u003edocs: use Trusted Publishing uniformly as a term of art (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2733903881\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17267\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17267/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17267\"\u003e#17267\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: use Trusted Publishing uniformly as a term of art (#17267)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 5, 2024","commits":[{"oid":"a3e7e6a10c9a36e20d8edda29249784f97dd88e2","url":"/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2","authoredDate":"2024-12-05T14:52:38.000-05:00","committedDate":"2024-12-05T14:52:38.000-05:00","shortMessage":"User-facing docs for secret disclosure API (#17236)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"User-facing docs for secret disclosure API (#17236)\n\n* User-facing docs for secret disclosure API\r\n\r\n* Add to the ToC\r\n\r\n* Add details about keys \u0026amp; signatures\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2\"\u003eUser-facing docs for secret disclosure API (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2721195975\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17236\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17236/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17236\"\u003e#17236\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"User-facing docs for secret disclosure API (#17236)\n\n* User-facing docs for secret disclosure API\r\n\r\n* Add to the ToC\r\n\r\n* Add details about keys \u0026amp; signatures\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* User-facing docs for secret disclosure API\n\n* Add to the ToC\n\n* Add details about keys \u0026amp; signatures","authors":[{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 3, 2024","commits":[{"oid":"9f9413d6a153f7b6c85d0a196cc07b600a81ff2a","url":"/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a","authoredDate":"2024-12-03T13:25:33.000-05:00","committedDate":"2024-12-03T13:25:33.000-05:00","shortMessage":"docs: remove user-api-docs flash (#17212)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: remove user-api-docs flash (#17212)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a\"\u003edocs: remove user-api-docs flash (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2715568740\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17212\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17212/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17212\"\u003e#17212\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: remove user-api-docs flash (#17212)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a","url":"/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a","authoredDate":"2024-12-03T12:04:37.000-05:00","committedDate":"2024-12-03T12:04:37.000-05:00","shortMessage":"docs: update API links everywhere (#17211)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: update API links everywhere (#17211)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a\"\u003edocs: update API links everywhere (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2715336068\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17211\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17211/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17211\"\u003e#17211\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: update API links everywhere (#17211)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"6533e60bd2d84da783122545dc482f19f8ae33c5","url":"/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5","authoredDate":"2024-12-02T19:40:35.000-05:00","committedDate":"2024-12-02T19:40:35.000-05:00","shortMessage":"docs: migrate JSON API docs to user-docs (#17178)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: migrate JSON API docs to user-docs (#17178)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5\"\u003edocs: migrate JSON API docs to user-docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2695195545\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17178\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17178/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17178\"\u003e#17178\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: migrate JSON API docs to user-docs (#17178)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 26, 2024","commits":[{"oid":"d57082ee37327bc1e8a28f96470b00ed226c0f87","url":"/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87","authoredDate":"2024-11-26T10:05:10.000-05:00","committedDate":"2024-11-26T15:05:10.000Z","shortMessage":"docs: move integration guide to user-docs (#17173)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: move integration guide to user-docs (#17173)\n\n* docs: move integration guide to user-docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* user-docs: remove obsolete migration docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87\"\u003edocs: move integration guide to user-docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2692328050\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17173\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17173/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17173\"\u003e#17173\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: move integration guide to user-docs (#17173)\n\n* docs: move integration guide to user-docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* user-docs: remove obsolete migration docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: move integration guide to user-docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* user-docs: remove obsolete migration docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 25, 2024","commits":[{"oid":"ba85bc0136012fb0637377f70f2b2f0873310d53","url":"/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53","authoredDate":"2024-11-25T16:04:54.000-05:00","committedDate":"2024-11-25T21:04:54.000Z","shortMessage":"docs: migrate RSS Feed docs to user docs (#17171)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: migrate RSS Feed docs to user docs (#17171)\n\n* docs: migrate RSS Feed docs to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: move XMLRPC docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53\"\u003edocs: migrate RSS Feed docs to user docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2692015361\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17171\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17171/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17171\"\u003e#17171\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: migrate RSS Feed docs to user docs (#17171)\n\n* docs: migrate RSS Feed docs to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: move XMLRPC docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: migrate RSS Feed docs to user docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev-docs: move XMLRPC docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"9543608df3e3d0a5c74905b9cf7b02c3093a960f","url":"/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f","authoredDate":"2024-11-25T18:57:18.000+01:00","committedDate":"2024-11-25T12:57:18.000-05:00","shortMessage":"Allow multiple attestations per distribution (#17134)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Allow multiple attestations per distribution (#17134)\n\n* attestations: allow multiple attestations per dist\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* docs: document multiple attestations per file upload\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* attestations: improve error messages\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f\"\u003eAllow multiple attestations per distribution (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2677122450\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17134\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17134/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17134\"\u003e#17134\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Allow multiple attestations per distribution (#17134)\n\n* attestations: allow multiple attestations per dist\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* docs: document multiple attestations per file upload\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* attestations: improve error messages\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* attestations: allow multiple attestations per dist\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* docs: document multiple attestations per file upload\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* attestations: improve error messages\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"fc3d73a897b4498051d404a47905a2ed88e13ffe","url":"/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe","authoredDate":"2024-11-25T17:49:14.000+01:00","committedDate":"2024-11-25T16:49:14.000Z","shortMessage":"docs(attestations): fix example for GitLab CI/CD (#17163)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs(attestations): fix example for GitLab CI/CD (#17163)\n\n* docs(attestations): fix example for GitLab CI/CD\r\n\r\n* docs(attestations): align aud passed to id with id_tokens aud\r\n\r\n---------\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe\"\u003edocs(attestations): fix example for GitLab CI/CD (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2691330009\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17163\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17163/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17163\"\u003e#17163\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs(attestations): fix example for GitLab CI/CD (#17163)\n\n* docs(attestations): fix example for GitLab CI/CD\r\n\r\n* docs(attestations): align aud passed to id with id_tokens aud\r\n\r\n---------\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs(attestations): fix example for GitLab CI/CD\n\n* docs(attestations): align aud passed to id with id_tokens aud\n\n---------\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"nejch","displayName":"Nejc Habjan","avatarUrl":"https://avatars.githubusercontent.com/u/16777978?v=4","path":"/nejch","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"fce17a535eb50a69eacb59f4bcee7a483b28c966","url":"/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966","authoredDate":"2024-11-25T11:35:04.000-05:00","committedDate":"2024-11-25T11:35:04.000-05:00","shortMessage":"docs: add Prerequisites section to attestations (#17164)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: add Prerequisites section to attestations (#17164)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966\"\u003edocs: add Prerequisites section to attestations (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2691345074\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17164\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17164/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17164\"\u003e#17164\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: add Prerequisites section to attestations (#17164)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72","url":"/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72","authoredDate":"2024-11-25T11:22:44.000-05:00","committedDate":"2024-11-25T16:22:44.000Z","shortMessage":"docs: move BigQuery to user docs (#17162)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: move BigQuery to user docs (#17162)\n\n* docs: move BigQuery to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: APIs and Datasets\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72\"\u003edocs: move BigQuery to user docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2691094942\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17162\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17162/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17162\"\u003e#17162\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: move BigQuery to user docs (#17162)\n\n* docs: move BigQuery to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: APIs and Datasets\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: move BigQuery to user docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs: APIs and Datasets\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"c86354193f9bde06ee971d9faabcf079244d6f40","url":"/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40","authoredDate":"2024-11-25T10:01:47.000-05:00","committedDate":"2024-11-25T15:01:47.000Z","shortMessage":"docs: move stats API to user docs (#17161)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: move stats API to user docs (#17161)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40\"\u003edocs: move stats API to user docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2691050342\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17161\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17161/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17161\"\u003e#17161\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: move stats API to user docs (#17161)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 20, 2024","commits":[{"oid":"b8eb3256b246775762f136164fade5e602d24cd0","url":"/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0","authoredDate":"2024-11-20T17:59:31.000-05:00","committedDate":"2024-11-20T22:59:31.000Z","shortMessage":"docs: migrate index/upload API docs to user docs (#17123)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: migrate index/upload API docs to user docs (#17123)\n\n* docs: migrate index/upload API docs to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* are -\u0026gt; is\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: fix two broken links\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0\"\u003edocs: migrate index/upload API docs to user docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2673498984\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17123\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17123/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17123\"\u003e#17123\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: migrate index/upload API docs to user docs (#17123)\n\n* docs: migrate index/upload API docs to user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* are -\u0026gt; is\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: fix two broken links\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: migrate index/upload API docs to user docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* are -\u0026gt; is\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev-docs: fix two broken links\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"05993c0115e47a6176ed05fab25aa4d3be624224","url":"/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224","authoredDate":"2024-11-20T17:52:04.000-05:00","committedDate":"2024-11-20T22:52:04.000Z","shortMessage":"user-docs: mention OIDC discovery (#17137)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"user-docs: mention OIDC discovery (#17137)\n\n* user-docs: mention OIDC discovery\r\n\r\nThis is a hard requirement, since we use\r\nOIDC discovery to get the JWKS URL, plus discovery\r\ngives us some early information about the shape\r\nof the claim set.\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* indent\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224\"\u003euser-docs: mention OIDC discovery (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2677425632\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17137\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17137/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17137\"\u003e#17137\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"user-docs: mention OIDC discovery (#17137)\n\n* user-docs: mention OIDC discovery\r\n\r\nThis is a hard requirement, since we use\r\nOIDC discovery to get the JWKS URL, plus discovery\r\ngives us some early information about the shape\r\nof the claim set.\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* indent\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* user-docs: mention OIDC discovery\n\nThis is a hard requirement, since we use\nOIDC discovery to get the JWKS URL, plus discovery\ngives us some early information about the shape\nof the claim set.\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Apply suggestions from code review\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* indent\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"dd3034089adc60f52dd80ccfd78119fafb329a8e","url":"/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e","authoredDate":"2024-11-20T19:21:11.000+01:00","committedDate":"2024-11-20T18:21:11.000Z","shortMessage":"Add documentation for PEP-740 attestations using GitLab CI/CD (#17133)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add documentation for PEP-740 attestations using GitLab CI/CD (#17133)\n\n* docs: move GitHub attestation instructions inside GitHub tab\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* docs: add instructions for attestations using GitLab CI/CD\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e\"\u003eAdd documentation for PEP-740 attestations using GitLab CI/CD (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2676588997\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17133\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17133/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17133\"\u003e#17133\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add documentation for PEP-740 attestations using GitLab CI/CD (#17133)\n\n* docs: move GitHub attestation instructions inside GitHub tab\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* docs: add instructions for attestations using GitLab CI/CD\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: move GitHub attestation instructions inside GitHub tab\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* docs: add instructions for attestations using GitLab CI/CD\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 15, 2024","commits":[{"oid":"b0e8497d7f3e9c22a0eb48ed6d0581536927f83e","url":"/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e","authoredDate":"2024-11-15T14:47:43.000-05:00","committedDate":"2024-11-15T14:47:43.000-05:00","shortMessage":"user-docs: add section on trustworthiness (#17091)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"user-docs: add section on trustworthiness (#17091)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e\"\u003euser-docs: add section on trustworthiness (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2662788947\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17091\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17091/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17091\"\u003e#17091\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"user-docs: add section on trustworthiness (#17091)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 14, 2024","commits":[{"oid":"06a2b586773dfeb72c604eb69396a2a8ede3f424","url":"/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424","authoredDate":"2024-11-14T18:36:06.000-05:00","committedDate":"2024-11-14T23:36:06.000Z","shortMessage":"Add FAQ on new Trusted Publishers (#17083)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add FAQ on new Trusted Publishers (#17083)\n\n* Add FAQ on new Trusted Publishers\r\n\r\n* Update docs/user/trusted-publishers/internals.md\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424\"\u003eAdd FAQ on new Trusted Publishers (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2660125809\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17083\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17083/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17083\"\u003e#17083\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add FAQ on new Trusted Publishers (#17083)\n\n* Add FAQ on new Trusted Publishers\r\n\r\n* Update docs/user/trusted-publishers/internals.md\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Add FAQ on new Trusted Publishers\n\n* Update docs/user/trusted-publishers/internals.md\n\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\n\n---------\n\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;","authors":[{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false},{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"87f3210dfb9c9db38552bc49ed35494467eba1b2","url":"/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2","authoredDate":"2024-11-14T16:30:23.000-05:00","committedDate":"2024-11-14T16:30:23.000-05:00","shortMessage":"docs: add security model/considerations for attestations (#17082)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: add security model/considerations for attestations (#17082)\n\n* docs: add security model/considerations for attestations\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* relocate link\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* honesty -\u0026gt; integrity\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2\"\u003edocs: add security model/considerations for attestations (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2660011216\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17082\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17082/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17082\"\u003e#17082\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: add security model/considerations for attestations (#17082)\n\n* docs: add security model/considerations for attestations\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* relocate link\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* honesty -\u0026gt; integrity\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: add security model/considerations for attestations\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* relocate link\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* honesty -\u0026gt; integrity\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 7, 2024","commits":[{"oid":"6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32","url":"/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32","authoredDate":"2024-11-07T18:06:00.000+01:00","committedDate":"2024-11-07T17:06:00.000Z","shortMessage":"Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036)\n\n* Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments\r\n\r\nGitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is.\r\n\r\nThis is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD.\r\n\r\nIn other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL.\r\n\r\nThis patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345.\r\n\r\n* Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `internals.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc\r\n\r\n* `make translations`\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32\"\u003eUse\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036)\n\n* Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments\r\n\r\nGitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is.\r\n\r\nThis is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD.\r\n\r\nIn other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL.\r\n\r\nThis patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345.\r\n\r\n* Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `internals.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc\r\n\r\n* `make translations`\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32\"\u003e(test)pypi\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036)\n\n* Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments\r\n\r\nGitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is.\r\n\r\nThis is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD.\r\n\r\nIn other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL.\r\n\r\nThis patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345.\r\n\r\n* Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `internals.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc\r\n\r\n* `make translations`\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32\"\u003ein Trusted Publishing placeholder for GitHub Environments (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2636011999\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17036\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/17036/hovercard\" href=\"https://github.com/pypi/warehouse/pull/17036\"\u003e#17036\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036)\n\n* Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments\r\n\r\nGitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is.\r\n\r\nThis is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD.\r\n\r\nIn other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL.\r\n\r\nThis patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345.\r\n\r\n* Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `internals.md` doc\r\n\r\n* Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc\r\n\r\n* `make translations`\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments\n\nGitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is.\n\nThis is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD.\n\nIn other places, it's called deployments and there's even a tab in repositories using it: \u003ca href=\"https://github.com/cherrypy/cheroot/deployments/pypi\"\u003ehttps://github.com/cherrypy/cheroot/deployments/pypi\u003c/a\u003e. Each deployment can be linked to the corresponding released project version URL.\n\nThis patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2195466476\" data-permission-text=\"Title is private\" data-url=\"https://github.com/actions/starter-workflows/issues/2345\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/actions/starter-workflows/pull/2345/hovercard\" href=\"https://github.com/actions/starter-workflows/pull/2345\"\u003eactions/starter-workflows#2345\u003c/a\u003e.\n\n* Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc\n\n* Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc\n\n* Suggest `pypi` GitHub Environment @ `internals.md` doc\n\n* Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc\n\n* `make translations`\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"webknjaz","displayName":"Sviatoslav Sydorenko (Святослав Сидоренко)","avatarUrl":"https://avatars.githubusercontent.com/u/578543?v=4","path":"/webknjaz","isGitHub":false},{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"ac0dee9fa126fe48a14da7decfba27f7b08535e8","url":"/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8","authoredDate":"2024-11-07T11:48:46.000-05:00","committedDate":"2024-11-07T11:48:46.000-05:00","shortMessage":"Initial PEP 740 documentation (#16398)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='Initial PEP 740 documentation (#16398)\n\n* initial attestations user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* more background, use preview\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: more improvements\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: attestation internals\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/attestations/internals.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* publish/v1: clarify the signing target\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* v1: be explicit about payload\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* attestations: avoid \"index attestations\"\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* attestations/internals: remove another confusing phrase\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* docs: move internals doc to dev-docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev: fix backticks\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* lintage, add note about trust\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: add callout for user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Update attestation-internals.rst\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update attestation-internals.rst\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* tweak index attestations warning\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: more PEP 740 docs, begin migrating user API docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: integrity API, details\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* api/integrity: fill in example\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* document status code\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: add note about api docs migration\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* api/integrity: avoid weird formatting\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* docs: link to #17001\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: use sampleproject for attestation docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: more attestation internals to security/\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: remove old index ref\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: fix two more broken refs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* user-docs: use a real provenance example\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* remove incorrect header\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* make toctree placement less confusing\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8\"\u003eInitial PEP 740 documentation (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2449175136\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16398\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16398/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16398\"\u003e#16398\u003c/a\u003e\u003ca data-pjax=\"true\" title='Initial PEP 740 documentation (#16398)\n\n* initial attestations user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* more background, use preview\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: more improvements\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: attestation internals\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/attestations/internals.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* publish/v1: clarify the signing target\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* v1: be explicit about payload\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* attestations: avoid \"index attestations\"\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* attestations/internals: remove another confusing phrase\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* docs: move internals doc to dev-docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev: fix backticks\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* lintage, add note about trust\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: add callout for user docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Update attestation-internals.rst\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update attestation-internals.rst\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* tweak index attestations warning\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: more PEP 740 docs, begin migrating user API docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs: integrity API, details\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* api/integrity: fill in example\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* document status code\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: add note about api docs migration\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* api/integrity: avoid weird formatting\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* docs: link to #17001\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* docs/dev: use sampleproject for attestation docs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: more attestation internals to security/\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: remove old index ref\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* dev-docs: fix two more broken refs\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* user-docs: use a real provenance example\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* remove incorrect header\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n* make toctree placement less confusing\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\n\r\n---------\r\n\r\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* initial attestations user docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* more background, use preview\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs: more improvements\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs: attestation internals\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Update docs/user/attestations/internals.md\n\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* publish/v1: clarify the signing target\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Apply suggestions from code review\n\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* v1: be explicit about payload\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* attestations: avoid \"index attestations\"\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* attestations/internals: remove another confusing phrase\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Apply suggestions from code review\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* docs: move internals doc to dev-docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev: fix backticks\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* lintage, add note about trust\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs/dev: add callout for user docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Update attestation-internals.rst\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* Update attestation-internals.rst\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* tweak index attestations warning\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs: more PEP 740 docs, begin migrating user API docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs: integrity API, details\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* api/integrity: fill in example\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* document status code\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs/dev: add note about api docs migration\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Apply suggestions from code review\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* api/integrity: avoid weird formatting\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* Apply suggestions from code review\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* docs: link to \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2622835861\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/17001\" data-hovercard-type=\"issue\" data-hovercard-url=\"/pypi/warehouse/issues/17001/hovercard\" href=\"https://github.com/pypi/warehouse/issues/17001\"\u003e#17001\u003c/a\u003e\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* docs/dev: use sampleproject for attestation docs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev-docs: more attestation internals to security/\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev-docs: remove old index ref\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* dev-docs: fix two more broken refs\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* user-docs: use a real provenance example\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* remove incorrect header\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n* make toctree placement less confusing\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\n\n---------\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Oct 24, 2024","commits":[{"oid":"66d8b5aab305ed259683de5b7c7af5f8f370ae55","url":"/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55","authoredDate":"2024-10-24T14:58:07.000-04:00","committedDate":"2024-10-24T14:58:07.000-04:00","shortMessage":"Grammar: \"an URL\" -\u003e \"a URL\" (#16958)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='Grammar: \"an URL\" -\u0026gt; \"a URL\" (#16958)' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55\"\u003eGrammar: \"an URL\" -\u0026gt; \"a URL\" (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2610056491\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16958\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16958/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16958\"\u003e#16958\u003c/a\u003e\u003ca data-pjax=\"true\" title='Grammar: \"an URL\" -\u0026gt; \"a URL\" (#16958)' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"ferdnyc","displayName":"Frank Dana","avatarUrl":"https://avatars.githubusercontent.com/u/538020?v=4","path":"/ferdnyc","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Aug 28, 2024","commits":[{"oid":"70d6f8d81fecf8651ce9cbde713cfe24b932f954","url":"/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954","authoredDate":"2024-08-28T23:26:10.000+02:00","committedDate":"2024-08-28T21:26:10.000Z","shortMessage":"Update icons reference in doc metadata docs (#16584)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Update icons reference in doc metadata docs (#16584)\n\n* Update project_metadata icons reference\r\n\r\n* Format table\r\n\r\n* Format table\r\n\r\n* Add missing case for documentation URL\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update project_metadata.md\r\n\r\n* Update warehouse/templates/packaging/detail.html\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n---------\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954\"\u003eUpdate icons reference in doc metadata docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2491997151\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16584\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16584/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16584\"\u003e#16584\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Update icons reference in doc metadata docs (#16584)\n\n* Update project_metadata icons reference\r\n\r\n* Format table\r\n\r\n* Format table\r\n\r\n* Add missing case for documentation URL\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update project_metadata.md\r\n\r\n* Update warehouse/templates/packaging/detail.html\r\n\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n---------\r\n\r\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Update project_metadata icons reference\n\n* Format table\n\n* Format table\n\n* Add missing case for documentation URL\n\n* Update docs/user/project_metadata.md\n\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* Update docs/user/project_metadata.md\n\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\n\n* Update docs/user/project_metadata.md\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* Update project_metadata.md\n\n* Update warehouse/templates/packaging/detail.html\n\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n---------\n\nCo-authored-by: Facundo Tuesca \u0026lt;facundo.tuesca@trailofbits.com\u0026gt;\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"DarkaMaul","displayName":"dm","avatarUrl":"https://avatars.githubusercontent.com/u/8711456?v=4","path":"/DarkaMaul","isGitHub":false},{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false},{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Aug 27, 2024","commits":[{"oid":"0d4245df712e9d04fe87ccf0f0a631371fce6c12","url":"/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12","authoredDate":"2024-08-27T19:44:58.000+02:00","committedDate":"2024-08-27T10:44:58.000-07:00","shortMessage":"docs: Clarify URL verification time validity (#16576)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: Clarify URL verification time validity (#16576)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12\"\u003edocs: Clarify URL verification time validity (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2489977451\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16576\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16576/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16576\"\u003e#16576\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: Clarify URL verification time validity (#16576)\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Aug 21, 2024","commits":[{"oid":"54fda8191a8653be2e6e2b7aa56fc63227b17ced","url":"/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced","authoredDate":"2024-08-21T20:23:36.000+02:00","committedDate":"2024-08-21T18:23:36.000Z","shortMessage":"docs: Add more details on how URLs are verified (#16539)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"docs: Add more details on how URLs are verified (#16539)\n\n* docs: fix verified URLs sub-section structure\r\n\r\n* docs: remove unused tooltips feature\r\n\r\n* docs: add per-provider Trusted Publishing URL verification details\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced\"\u003edocs: Add more details on how URLs are verified (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2478068163\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16539\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16539/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16539\"\u003e#16539\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"docs: Add more details on how URLs are verified (#16539)\n\n* docs: fix verified URLs sub-section structure\r\n\r\n* docs: remove unused tooltips feature\r\n\r\n* docs: add per-provider Trusted Publishing URL verification details\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\r\n\r\n* Apply suggestions from code review\r\n\r\n* Update docs/user/project_metadata.md\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* docs: fix verified URLs sub-section structure\n\n* docs: remove unused tooltips feature\n\n* docs: add per-provider Trusted Publishing URL verification details\n\n* Update docs/user/project_metadata.md\n\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\n\n* Apply suggestions from code review\n\n* Update docs/user/project_metadata.md\n\n---------\n\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\nCo-authored-by: dm \u0026lt;darkamaul@hotmail.fr\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false},{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"DarkaMaul","displayName":"dm","avatarUrl":"https://avatars.githubusercontent.com/u/8711456?v=4","path":"/DarkaMaul","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Aug 20, 2024","commits":[{"oid":"c1dffa93e5f68b0ade87aaeacae8857442bb6130","url":"/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130","authoredDate":"2024-08-20T23:01:21.000+02:00","committedDate":"2024-08-20T21:01:21.000Z","shortMessage":"Documentation on Project-Urls (#16513)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Documentation on Project-Urls (#16513)\n\n* Update services recognized in detail.html\r\n\r\n* Add documentation on Project-URLs\r\n\r\n* Update documentation\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update documentation.\r\n\r\n* Apply suggestions from code review\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130\"\u003eDocumentation on Project-Urls (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2473706790\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16513\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16513/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16513\"\u003e#16513\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Documentation on Project-Urls (#16513)\n\n* Update services recognized in detail.html\r\n\r\n* Add documentation on Project-URLs\r\n\r\n* Update documentation\r\n\r\n* Apply suggestions from code review\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\r\n\r\n* Update documentation.\r\n\r\n* Apply suggestions from code review\r\n\r\n---------\r\n\r\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\r\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Update services recognized in detail.html\n\n* Add documentation on Project-URLs\n\n* Update documentation\n\n* Apply suggestions from code review\n\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;\n\n* Update documentation.\n\n* Apply suggestions from code review\n\n---------\n\nCo-authored-by: William Woodruff \u0026lt;william@yossarian.net\u0026gt;\nCo-authored-by: Dustin Ingram \u0026lt;di@users.noreply.github.com\u0026gt;","authors":[{"login":"DarkaMaul","displayName":"dm","avatarUrl":"https://avatars.githubusercontent.com/u/8711456?v=4","path":"/DarkaMaul","isGitHub":false},{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"di","displayName":"Dustin Ingram","avatarUrl":"https://avatars.githubusercontent.com/u/294415?v=4","path":"/di","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jun 25, 2024","commits":[{"oid":"8320d05203b09659e92888149491a29dda73f345","url":"/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345","authoredDate":"2024-06-25T07:52:29.000-04:00","committedDate":"2024-06-25T11:52:29.000Z","shortMessage":"docs, warehouse: improve \"pending\" publisher docs, messages (#16158)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='docs, warehouse: improve \"pending\" publisher docs, messages (#16158)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Ee Durbin \u0026lt;ewdurbin@gmail.com\u0026gt;' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345\"\u003edocs, warehouse: improve \"pending\" publisher docs, messages (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2371270240\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16158\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16158/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16158\"\u003e#16158\u003c/a\u003e\u003ca data-pjax=\"true\" title='docs, warehouse: improve \"pending\" publisher docs, messages (#16158)\n\nSigned-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\r\nCo-authored-by: Ee Durbin \u0026lt;ewdurbin@gmail.com\u0026gt;' class=\"color-fg-default\" href=\"/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Signed-off-by: William Woodruff \u0026lt;william@trailofbits.com\u0026gt;\nCo-authored-by: Ee Durbin \u0026lt;ewdurbin@gmail.com\u0026gt;","authors":[{"login":"woodruffw","displayName":"William Woodruff","avatarUrl":"https://avatars.githubusercontent.com/u/3059210?v=4","path":"/woodruffw","isGitHub":false},{"login":"ewdurbin","displayName":"Ee Durbin","avatarUrl":"https://avatars.githubusercontent.com/u/1200832?v=4","path":"/ewdurbin","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jun 18, 2024","commits":[{"oid":"2e85ef30edacaa55ddc5f6fe97aee994b4bb3075","url":"/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075","authoredDate":"2024-06-18T18:04:44.000+02:00","committedDate":"2024-06-18T12:04:44.000-04:00","shortMessage":"Clarify that GitHub is not the sole Identity Provider (#16130)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Clarify that GitHub is not the sole Identity Provider (#16130)\n\n* Update documentation\r\n\r\n* Remove outdated sentence\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075\"\u003eClarify that GitHub is not the sole Identity Provider (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2360186857\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/16130\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/16130/hovercard\" href=\"https://github.com/pypi/warehouse/pull/16130\"\u003e#16130\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Clarify that GitHub is not the sole Identity Provider (#16130)\n\n* Update documentation\r\n\r\n* Remove outdated sentence\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075\"\u003e)\u003c/a\u003e","bodyMessageHtml":"* Update documentation\n\n* Remove outdated sentence","authors":[{"login":"DarkaMaul","displayName":"dm","avatarUrl":"https://avatars.githubusercontent.com/u/8711456?v=4","path":"/DarkaMaul","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"May 7, 2024","commits":[{"oid":"c0f7789c17d8da34f412fba7aa24f1ed94ce7598","url":"/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598","authoredDate":"2024-05-07T22:06:11.000+02:00","committedDate":"2024-05-07T16:06:11.000-04:00","shortMessage":"Fix GitLab Trusted Publishers UI and docs (#15921)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Fix GitLab Trusted Publishers UI and docs (#15921)\n\nChange the \u0026quot;workflow file path\u0026quot; field in the UI and in the docs to\r\n\u0026quot;top-level pipeline file path\u0026quot;. This is the correct term, since\r\nGitLab OIDC claims only provide the top-level pipeline (usually\r\n`.gitlab-ci.yml`), rather than individual jobs/workflows.\r\n\r\nAlso change the security model doc, to clarify that PyPI cannot\r\ntell the difference between different .yml files that are included\r\nin `.gitlab-ci.yml`, since it's the latter that is reported in\r\nthe claims.\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598\"\u003eFix GitLab Trusted Publishers UI and docs (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2284053486\" data-permission-text=\"Title is private\" data-url=\"https://github.com/pypi/warehouse/issues/15921\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/pypi/warehouse/pull/15921/hovercard\" href=\"https://github.com/pypi/warehouse/pull/15921\"\u003e#15921\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Fix GitLab Trusted Publishers UI and docs (#15921)\n\nChange the \u0026quot;workflow file path\u0026quot; field in the UI and in the docs to\r\n\u0026quot;top-level pipeline file path\u0026quot;. This is the correct term, since\r\nGitLab OIDC claims only provide the top-level pipeline (usually\r\n`.gitlab-ci.yml`), rather than individual jobs/workflows.\r\n\r\nAlso change the security model doc, to clarify that PyPI cannot\r\ntell the difference between different .yml files that are included\r\nin `.gitlab-ci.yml`, since it's the latter that is reported in\r\nthe claims.\" class=\"color-fg-default\" href=\"/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Change the \"workflow file path\" field in the UI and in the docs to\n\"top-level pipeline file path\". This is the correct term, since\nGitLab OIDC claims only provide the top-level pipeline (usually\n`.gitlab-ci.yml`), rather than individual jobs/workflows.\n\nAlso change the security model doc, to clarify that PyPI cannot\ntell the difference between different .yml files that are included\nin `.gitlab-ci.yml`, since it's the latter that is reported in\nthe claims.","authors":[{"login":"facutuesca","displayName":"Facundo Tuesca","avatarUrl":"https://avatars.githubusercontent.com/u/5762120?v=4","path":"/facutuesca","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]}],"currentCommit":{"oid":"0c0efecd6bd6a556c76caaf6f7425a0550c3a89f"},"filters":{"since":null,"until":null,"author":null,"newPath":null,"originalBranch":null,"currentBlobPath":"docs/user","pagination":{"startCursor":"0c0efecd6bd6a556c76caaf6f7425a0550c3a89f 0","endCursor":"0c0efecd6bd6a556c76caaf6f7425a0550c3a89f 34","hasNextPage":true,"hasPreviousPage":false}},"metadata":{"browsingRenameHistory":null,"showProfileHelp":false,"deferredDataUrl":"/pypi/warehouse/commits/deferred_commit_data/main?original_branch=main\u0026path=docs%2Fuser","deferredContributorUrl":"/pypi/warehouse/commits/deferred_commit_contributors","softNavToCommit":false},"repo":{"id":9120498,"defaultBranch":"main","name":"warehouse","ownerLogin":"pypi","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-03-30T19:03:53.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2964877?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"main","listCacheKey":"v0:1739647311.0","refType":"branch","currentOid":"0c0efecd6bd6a556c76caaf6f7425a0550c3a89f"},"timedOutMessage":""},"title":"History for docs/user - pypi/warehouse","appPayload":{"helpUrl":"https://docs.github.com","enabled_features":{"commits_ux_refresh_compare":false}}}</script> <div data-target="react-app.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.kkWQEA{padding:16px;}/*!sc*/ @media screen and (min-width:544px){}/*!sc*/ @media screen and (min-width:768px){}/*!sc*/ @media screen and (min-width:1012px){.kkWQEA{padding:24px;}}/*!sc*/ .bSJDXx{max-width:1280px;margin-left:auto;margin-right:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ .jPRcNF{width:100%;margin-bottom:16px;}/*!sc*/ .hOfjFo{padding:0;}/*!sc*/ .gKBBxN{margin-left:-16px;margin-right:-16px;display:block;height:1px;background-color:var(--borderColor-default,var(--color-border-default,#d0d7de));margin-top:0;}/*!sc*/ @media screen and (min-width:544px){}/*!sc*/ @media screen and (min-width:768px){.gKBBxN{margin-left:0 !important;margin-right:0 !important;}}/*!sc*/ @media screen and (min-width:1012px){.gKBBxN{margin-left:-24px;margin-right:-24px;}}/*!sc*/ .kowOcT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;}/*!sc*/ .dQkwwl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-order:2;-ms-flex-order:2;order:2;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;min-width:1px;}/*!sc*/ .FxAyp{width:100%;max-width:100%;margin-left:auto;margin-right:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0;}/*!sc*/ .gwHaUx{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:8px;margin-bottom:16px;}/*!sc*/ .eItYAW{margin-top:0;margin-bottom:0;padding-left:0;}/*!sc*/ .cSURfY{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .hjDqIa{margin-right:8px;}/*!sc*/ .dGVxWp{max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .izArLR{position:relative;z-index:1;}/*!sc*/ .bbNsBg{margin-right:8px;margin-left:-15px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));background-color:var(--timelineBadge-bgColor,var(--color-timeline-badge-bg,#eaeef2));display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;width:32px;height:32px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;border-width:2px;border-style:solid;border-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));}/*!sc*/ .dpBUfI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ @media screen and (min-width:544px){.dpBUfI{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/ @media screen and (min-width:768px){.dpBUfI{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/ @media screen and (min-width:1012px){.dpBUfI{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .hKWjvQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .bbHsCC{width:16px;height:16px;margin-right:8px;margin-top:-1px;margin-left:1px;}/*!sc*/ .jRhDJg{font-weight:400;white-space:nowrap;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jRhDJg:hover{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .irPhWZ{width:60px;}/*!sc*/ .fIQuDd{width:20px;}/*!sc*/ .dNbsEP{width:62px;}/*!sc*/ .iCHGgS{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:4px;}/*!sc*/ .fmQaBv{margin-left:4px;margin-right:4px;}/*!sc*/ .cQAMJB[data-size="medium"][data-no-visuals]{background-color:transparent;border:none;cursor:default;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));font-weight:400;}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"kkWQEA,bSJDXx,jPRcNF,hOfjFo,gKBBxN,kowOcT,dQkwwl,FxAyp,gwHaUx,eItYAW,cSURfY,hjDqIa,dGVxWp,izArLR,bbNsBg,dpBUfI,hKWjvQ,bbHsCC,jRhDJg,irPhWZ,fIQuDd,dNbsEP,iCHGgS,fmQaBv,cQAMJB,gUkoLg,"}/*!sc*/ .hWqAbU:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .hWqAbU:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .hWqAbU:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .hWqAbU:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .hWqAbU:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .hWqAbU:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .hWqAbU:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ data-styled.g3[id="Text__StyledText-sc-17v1xeu-0"]{content:"hWqAbU,"}/*!sc*/ .jOyaRH{display:none;}/*!sc*/ .jOyaRH[popover]{position:absolute;padding:0.5em 0.75em;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin:auto;-webkit-clip:auto;clip:auto;white-space:normal;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;word-wrap:break-word;background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;border:0;opacity:0;max-width:250px;inset:auto;overflow:visible;}/*!sc*/ .jOyaRH[popover]:popover-open{display:block;}/*!sc*/ .jOyaRH[popover].\:popover-open{display:block;}/*!sc*/ @media (forced-colors:active){.jOyaRH{outline:1px solid transparent;}}/*!sc*/ .jOyaRH::after{position:absolute;display:block;right:0;left:0;height:var(--overlay-offset,0.25rem);content:'';}/*!sc*/ .jOyaRH[data-direction='n']::after,.jOyaRH[data-direction='ne']::after,.jOyaRH[data-direction='nw']::after{top:100%;}/*!sc*/ .jOyaRH[data-direction='s']::after,.jOyaRH[data-direction='se']::after,.jOyaRH[data-direction='sw']::after{bottom:100%;}/*!sc*/ .jOyaRH[data-direction='w']::after{position:absolute;display:block;height:100%;width:8px;content:'';bottom:0;left:100%;}/*!sc*/ .jOyaRH[data-direction='e']::after{position:absolute;display:block;height:100%;width:8px;content:'';bottom:0;right:100%;margin-left:-8px;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .jOyaRH:popover-open,.jOyaRH:popover-open::before{-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .jOyaRH.\:popover-open,.jOyaRH.\:popover-open::before{-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ data-styled.g16[id="Tooltip__StyledTooltip-sc-e45c7z-0"]{content:"jOyaRH,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g17[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .knLhXt{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .WGJwj{margin-top:2px;margin-bottom:2px;}/*!sc*/ data-styled.g61[id="Octicon-sc-9kayk9-0"]{content:"knLhXt,WGJwj,"}/*!sc*/ .irithh{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:60px;}/*!sc*/ .irithh::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .irOdmh{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:20px;}/*!sc*/ .irOdmh::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .ihfxfT{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:62px;}/*!sc*/ .ihfxfT::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ data-styled.g71[id="LoadingSkeleton-sc-695d630a-0"]{content:"irithh,irOdmh,ihfxfT,"}/*!sc*/ .hzFJAq{--avatar-border-width:1px;--avatar-two-margin:calc(var(--avatar-stack-size) * -0.55);--avatar-three-margin:calc(var(--avatar-stack-size) * -0.85);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;height:var(--avatar-stack-size);min-width:var(--avatar-stack-size);--avatar-stack-size:16px;}/*!sc*/ .hzFJAq .pc-AvatarStackBody{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:1px;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:1px;}/*!sc*/ .hzFJAq .pc-AvatarItem{--avatar-size:var(--avatar-stack-size);-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:var(--avatar-stack-size);width:var(--avatar-stack-size);position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .hzFJAq .pc-AvatarItem:is(img){box-shadow:0 0 0 var(--avatar-border-width) var(--bgColor-default,var(--color-canvas-default,#ffffff));}/*!sc*/ .hzFJAq .pc-AvatarItem:first-child{margin-left:0;z-index:10;}/*!sc*/ .hzFJAq .pc-AvatarItem:nth-child(n + 2){margin-left:var(--avatar-two-margin);z-index:9;}/*!sc*/ .hzFJAq .pc-AvatarItem:nth-child(n + 3){margin-left:var(--avatar-three-margin);opacity:55%;z-index:8;}/*!sc*/ .hzFJAq .pc-AvatarItem:nth-child(n + 4){opacity:40%;z-index:7;}/*!sc*/ .hzFJAq .pc-AvatarItem:nth-child(n + 5){opacity:25%;z-index:6;}/*!sc*/ .hzFJAq .pc-AvatarItem:nth-child(n + 6){opacity:0;visibility:hidden;}/*!sc*/ .hzFJAq.pc-AvatarStack--two{min-width:calc( var(--avatar-stack-size) + calc(var(--avatar-stack-size) + var(--avatar-two-margin)) + var(--avatar-border-width) );}/*!sc*/ .hzFJAq.pc-AvatarStack--three{min-width:calc( var(--avatar-stack-size) + calc( calc(var(--avatar-stack-size) + var(--avatar-two-margin)) + calc(var(--avatar-stack-size) + var(--avatar-three-margin)) ) );}/*!sc*/ .hzFJAq.pc-AvatarStack--three-plus{min-width:calc( var(--avatar-stack-size) + calc( calc(var(--avatar-stack-size) + var(--avatar-two-margin)) + calc(var(--avatar-stack-size) + var(--avatar-three-margin)) * 2 ) );}/*!sc*/ .hzFJAq.pc-AvatarStack--right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarItem{margin-left:0 !important;}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarItem:first-child{margin-right:0;}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarItem:nth-child(n + 2){margin-right:var(--avatar-two-margin);}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarItem:nth-child(n + 3){margin-right:var(--avatar-three-margin);}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarStackBody{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem,.hzFJAq.pc-AvatarStack--right .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem{margin-right:4px!important;margin-left:0 !important;}/*!sc*/ .hzFJAq.pc-AvatarStack--right .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem:first-child,.hzFJAq.pc-AvatarStack--right .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem:first-child{margin-right:0 !important;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover,.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within{width:auto;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem,.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem{margin-left:4px;opacity:100%;visibility:visible;-webkit-transition:margin 0.2s ease-in-out,opacity 0.2s ease-in-out,visibility 0.2s ease-in-out,box-shadow 0.1s ease-in-out;transition:margin 0.2s ease-in-out,opacity 0.2s ease-in-out,visibility 0.2s ease-in-out,box-shadow 0.1s ease-in-out;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem box-shadow:inset 0 0 0 4px function(n),.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem box-shadow:inset 0 0 0 4px function(n){return(0,r.Jt)(n.theme,e,t);}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem:focus:not(:disabled),.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:1px;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem:focus:not(:disabled):not(:focus-visible),.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem:focus-visible:not(:disabled),.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:1px;}/*!sc*/ .hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):hover .pc-AvatarItem:first-child,.hzFJAq .pc-AvatarStackBody:not(.pc-AvatarStack--disableExpand):focus-within .pc-AvatarItem:first-child{margin-left:0;}/*!sc*/ .hzFJAq .pc-AvatarStack--disableExpand{position:relative;}/*!sc*/ data-styled.g80[id="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0"]{content:"hzFJAq,"}/*!sc*/ .bpSOTI{display:inline-block;white-space:nowrap;list-style:none;}/*!sc*/ .bpSOTI::after{font-size:14px;content:'';display:inline-block;height:0.8em;margin:0 0.5em;border-right:0.1em solid;border-color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-transform:rotate(15deg) translateY(0.0625em);-ms-transform:rotate(15deg) translateY(0.0625em);transform:rotate(15deg) translateY(0.0625em);}/*!sc*/ .bpSOTI:first-child{margin-left:0;}/*!sc*/ .bpSOTI:last-child::after{content:none;}/*!sc*/ data-styled.g91[id="Breadcrumbs__Wrapper-sc-9m4wsf-0"]{content:"bpSOTI,"}/*!sc*/ .cJTTqz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/ data-styled.g92[id="Breadcrumbs__BreadcrumbsBase-sc-9m4wsf-1"]{content:"cJTTqz,"}/*!sc*/ .jQdCAs{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));display:inline-block;font-size:14px;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .jQdCAs:hover,.jQdCAs:focus{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .jQdCAs.selected{color:var(--fgColor-default,var(--color-fg-default,#1F2328));pointer-events:none;}/*!sc*/ .jQdCAs.selected:focus{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .jgTqqg{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));display:inline-block;font-size:14px;-webkit-text-decoration:none;text-decoration:none;white-space:normal;}/*!sc*/ .jgTqqg:hover,.jgTqqg:focus{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .jgTqqg.selected{color:var(--fgColor-default,var(--color-fg-default,#1F2328));pointer-events:none;}/*!sc*/ .jgTqqg.selected:focus{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .cJFALR{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));display:inline-block;font-size:14px;-webkit-text-decoration:none;text-decoration:none;white-space:normal;font-weight:600;}/*!sc*/ .cJFALR:hover,.cJFALR:focus{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .cJFALR.selected{color:var(--fgColor-default,var(--color-fg-default,#1F2328));pointer-events:none;}/*!sc*/ .cJFALR.selected:focus{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ data-styled.g93[id="Breadcrumbs__StyledBreadcrumbsItem-sc-9m4wsf-2"]{content:"jQdCAs,jgTqqg,cJFALR,"}/*!sc*/ .ksYiNV{display:inline-block;padding:2px 6px;font-size:var(--text-body-size-small,12px);font-family:var(--fontStack-monospace,var(--fontStack-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace));color:var(--fgColor-link,var(--fgColor-accent,var(--color-accent-fg,#0969da)));background-color:var(--bgColor-accent-muted,var(--bgColor-accent-muted,var(--color-accent-subtle,#ddf4ff)));border-radius:var(--borderRadius-medium,6px);-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .ksYiNV:is(:not(a)){color:var(--fgColor-muted);}/*!sc*/ data-styled.g113[id="BranchName__StyledBranchName-sc-sg8jsy-0"]{content:"ksYiNV,"}/*!sc*/ .eSFHqT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .eSFHqT .Timeline-Item:first-child{padding-top:0;}/*!sc*/ .eSFHqT .Timeline-Item:last-child{padding-bottom:0;}/*!sc*/ data-styled.g117[id="Timeline__ToggleTimeline-sc-1nkzbnu-0"]{content:"eSFHqT,"}/*!sc*/ .fhQhVG{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;padding:16px 0;margin-left:16px;padding-top:0;padding-bottom:4px;}/*!sc*/ .fhQhVG::before{position:absolute;top:0;bottom:0;left:0;display:block;width:2px;content:'';background-color:var(--borderColor-muted,var(--color-border-muted,hsla(210,18%,87%,1)));}/*!sc*/ .eHtUWW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;padding:16px 0;margin-left:16px;padding-top:4px;padding-bottom:4px;}/*!sc*/ .eHtUWW::before{position:absolute;top:0;bottom:0;left:0;display:block;width:2px;content:'';background-color:var(--borderColor-muted,var(--color-border-muted,hsla(210,18%,87%,1)));}/*!sc*/ data-styled.g118[id="Timeline__ToggleTimelineItem-sc-1nkzbnu-1"]{content:"fhQhVG,eHtUWW,"}/*!sc*/ .jdZjlQ{min-width:0;max-width:100%;margin-top:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-flex:auto;-ms-flex:auto;flex:auto;font-size:14px;}/*!sc*/ data-styled.g119[id="Timeline__ToggleTimelineBody-sc-1nkzbnu-2"]{content:"jdZjlQ,"}/*!sc*/ @-webkit-keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ @keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ data-styled.g133[id="sc-keyframes-crVFvv"]{content:"crVFvv,"}/*!sc*/ </style> <!-- --> <div style="--sticky-pane-height:100vh;--spacing:var(--spacing-normal)" class="Box-sc-g0xbh4-0 kkWQEA"><div class="Box-sc-g0xbh4-0 bSJDXx"><header class="Box-sc-g0xbh4-0 jPRcNF"><div class="Box-sc-g0xbh4-0 hOfjFo"><div class="d-flex flex-items-center flex-justify-between"><h1 class="f2 text-normal pb-2 prc-Heading-Heading-6CmGO" id="commits-pagehead">Commits</h1></div></div><div class="Box-sc-g0xbh4-0 gKBBxN"></div></header><div class="Box-sc-g0xbh4-0 kowOcT"><div class="Box-sc-g0xbh4-0 dQkwwl"><div class="Box-sc-g0xbh4-0"></div><div class="Box-sc-g0xbh4-0 FxAyp"><div><div class="Box-sc-g0xbh4-0 gwHaUx"><div class="d-flex flex-items-center"><div class="d-flex flex-items-baseline flex-column flex-sm-row"><h2 class="sr-only prc-Heading-Heading-6CmGO">Breadcrumbs</h2><span class="fgColor-default no-wrap">History for</span><nav class="Breadcrumbs__BreadcrumbsBase-sc-9m4wsf-1 cJTTqz ml-1" aria-label="Breadcrumbs"><ol class="Box-sc-g0xbh4-0 eItYAW"><li class="Breadcrumbs__Wrapper-sc-9m4wsf-0 bpSOTI"><a class="Breadcrumbs__StyledBreadcrumbsItem-sc-9m4wsf-2 jQdCAs" href="/pypi/warehouse/commits">warehouse</a></li><li class="Breadcrumbs__Wrapper-sc-9m4wsf-0 bpSOTI"><a class="Breadcrumbs__StyledBreadcrumbsItem-sc-9m4wsf-2 jgTqqg" href="/pypi/warehouse/commits/main/docs">docs</a></li><li class="Breadcrumbs__Wrapper-sc-9m4wsf-0 bpSOTI"><a class="Breadcrumbs__StyledBreadcrumbsItem-sc-9m4wsf-2 cJFALR selected" aria-current="page" href="/pypi/warehouse/commits/main/docs/user">user</a></li></ol></nav><div class="no-wrap"><span class="mr-2 ml-0 ml-sm-2 fgColor-default">on</span><a href="/pypi/warehouse/tree/main" class="BranchName__StyledBranchName-sc-sg8jsy-0 ksYiNV">main</a></div></div></div><div class="d-flex flex-column flex-sm-row gap-2"><h2 class="sr-only prc-Heading-Heading-6CmGO">User selector</h2><div><button type="button" data-testid="user-selector-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="default" aria-describedby=":R1crab:-loading-announcement" id=":R1crab:"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 cSURfY"><div class="Box-sc-g0xbh4-0 hjDqIa"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 knLhXt" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 dGVxWp"><span>All users</span></div></div></span></span><span data-component="trailingAction" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div><!--$--><h2 class="sr-only prc-Heading-Heading-6CmGO">Datepicker</h2><button type="button" aria-haspopup="true" tabindex="0" data-testid="date-picker-commits" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="default" aria-describedby=":Rlsrab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 WGJwj fgColor-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4.75 0a.75.75 0 0 1 .75.75V2h5V.75a.75.75 0 0 1 1.5 0V2h1.25c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V3.75C1 2.784 1.784 2 2.75 2H4V.75A.75.75 0 0 1 4.75 0ZM2.5 7.5v6.75c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V7.5Zm10.75-4H2.75a.25.25 0 0 0-.25.25V6h11V3.75a.25.25 0 0 0-.25-.25Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">All time</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><!--/$--></div></div><div class="mb-3" data-hpc="true"><h2 class="sr-only prc-Heading-Heading-6CmGO">Commit History</h2><div class="Timeline__ToggleTimeline-sc-1nkzbnu-0 eSFHqT"><div style="display:contents"><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 fhQhVG Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rt5rab:" data-testid="commit-group-title">Commits on Feb 15, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ragt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rt5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ragt5rab:-list-view-node-:Rfqgt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Update stats.md - corrected link to pypistats (#17610)" class="color-fg-default" href="/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f">Update stats.md - corrected link to pypistats (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2855696553" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17610" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17610/hovercard" href="https://github.com/pypi/warehouse/pull/17610">#17610</a><a data-pjax="true" title="Update stats.md - corrected link to pypistats (#17610)" class="color-fg-default" href="/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/geyslein" data-testid="avatar-icon-link" data-hovercard-url="/users/geyslein/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="geyslein" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/283309?v=4&amp;size=32" data-testid="github-avatar" aria-label="geyslein"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=geyslein" aria-label="commits by geyslein" data-hovercard-url="/users/geyslein/hovercard">geyslein</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqgt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">0c0efec</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqgt5rab:-loading-announcement" aria-labelledby=":Rjnfqgt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 0c0efec" aria-hidden="true" id=":Rjnfqgt5rab:">Copy full SHA for 0c0efec</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-0c0efec" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-0c0efec" href="/pypi/warehouse/blob/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-0c0efec" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-0c0efec" href="/pypi/warehouse/tree/0c0efecd6bd6a556c76caaf6f7425a0550c3a89f" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R1d5rab:" data-testid="commit-group-title">Commits on Feb 11, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rahd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R1d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rahd5rab:-list-view-node-:Rnqhd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs/api: clean up Upload API docs slightly (#17514) * docs/api: clean up Upload API docs slightly Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * fixup pluralization docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996">docs/api: clean up Upload API docs slightly (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2816850845" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17514" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17514/hovercard" href="https://github.com/pypi/warehouse/pull/17514">#17514</a><a data-pjax="true" title="docs/api: clean up Upload API docs slightly (#17514) * docs/api: clean up Upload API docs slightly Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * fixup pluralization docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqhd5rab:-loading-announcement show-description-3cb0ad0" aria-labelledby="show-description-3cb0ad0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 3cb0ad0" role="tooltip" aria-hidden="true" id="show-description-3cb0ad0">Show description for 3cb0ad0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqhd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/3cb0ad08918e859f6ec1070312c384ea1f30c996" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">3cb0ad0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqhd5rab:-loading-announcement" aria-labelledby=":R17enqhd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 3cb0ad0" aria-hidden="true" id=":R17enqhd5rab:">Copy full SHA for 3cb0ad0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-3cb0ad0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-3cb0ad0" href="/pypi/warehouse/blob/3cb0ad08918e859f6ec1070312c384ea1f30c996/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-3cb0ad0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-3cb0ad0" href="/pypi/warehouse/tree/3cb0ad08918e859f6ec1070312c384ea1f30c996" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rahd5rab:-list-view-node-:Rrqhd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Add summaries for the security models of attestations and trusted publishing (#17242) * Add summaries for the security models of attestations and trusted publishers Signed-off-by: Mac Chaffee &lt;me@macchaffee.com&gt; * Apply suggestions from code review * Switch to non-walled link * Clarify short/long-lived token risks * Update docs/user/trusted-publishers/security-model.md --------- Signed-off-by: Mac Chaffee &lt;me@macchaffee.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f">Add summaries for the security models of attestations and trusted publishing (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2724702971" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17242" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17242/hovercard" href="https://github.com/pypi/warehouse/pull/17242">#17242</a><a data-pjax="true" title="Add summaries for the security models of attestations and trusted publishing (#17242) * Add summaries for the security models of attestations and trusted publishers Signed-off-by: Mac Chaffee &lt;me@macchaffee.com&gt; * Apply suggestions from code review * Switch to non-walled link * Clarify short/long-lived token risks * Update docs/user/trusted-publishers/security-model.md --------- Signed-off-by: Mac Chaffee &lt;me@macchaffee.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqhd5rab:-loading-announcement show-description-a68ad6d" aria-labelledby="show-description-a68ad6d"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for a68ad6d" role="tooltip" aria-hidden="true" id="show-description-a68ad6d">Show description for a68ad6d</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="mac-chaffee" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/7581860?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/mac-chaffee/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=mac-chaffee" aria-label="commits by mac-chaffee" data-hovercard-url="/users/mac-chaffee/hovercard">mac-chaffee</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqhd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/a68ad6d04da42cf0224b2ad810755584af37842f" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">a68ad6d</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqhd5rab:-loading-announcement" aria-labelledby=":R17erqhd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for a68ad6d" aria-hidden="true" id=":R17erqhd5rab:">Copy full SHA for a68ad6d</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-a68ad6d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-a68ad6d" href="/pypi/warehouse/blob/a68ad6d04da42cf0224b2ad810755584af37842f/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-a68ad6d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-a68ad6d" href="/pypi/warehouse/tree/a68ad6d04da42cf0224b2ad810755584af37842f" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R1t5rab:" data-testid="commit-group-title">Commits on Jan 22, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raht5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R1t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raht5rab:-list-view-node-:Rnqht5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="More fixes to the token disclosure docs (#17480)" class="color-fg-default" href="/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8">More fixes to the token disclosure docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2804414653" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17480" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17480/hovercard" href="https://github.com/pypi/warehouse/pull/17480">#17480</a><a data-pjax="true" title="More fixes to the token disclosure docs (#17480)" class="color-fg-default" href="/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/di" data-testid="avatar-icon-link" data-hovercard-url="/users/di/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="github-avatar" aria-label="di"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqht5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/a271660ee3b1fd0baa6321045b1b57475d2ed5b8" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">a271660</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqht5rab:-loading-announcement" aria-labelledby=":R17enqht5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for a271660" aria-hidden="true" id=":R17enqht5rab:">Copy full SHA for a271660</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-a271660" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-a271660" href="/pypi/warehouse/blob/a271660ee3b1fd0baa6321045b1b57475d2ed5b8/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-a271660" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-a271660" href="/pypi/warehouse/tree/a271660ee3b1fd0baa6321045b1b57475d2ed5b8" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Raht5rab:-list-view-node-:Rrqht5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="More disclosure metrics (#17471) * Add some more metrics around token disclosures * Minor refactor * Fix docs: there is no trailing slash" class="color-fg-default" href="/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6">More disclosure metrics (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2803137294" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17471" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17471/hovercard" href="https://github.com/pypi/warehouse/pull/17471">#17471</a><a data-pjax="true" title="More disclosure metrics (#17471) * Add some more metrics around token disclosures * Minor refactor * Fix docs: there is no trailing slash" class="color-fg-default" href="/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqht5rab:-loading-announcement show-description-8329e67" aria-labelledby="show-description-8329e67"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 8329e67" role="tooltip" aria-hidden="true" id="show-description-8329e67">Show description for 8329e67</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/di" data-testid="avatar-icon-link" data-hovercard-url="/users/di/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="github-avatar" aria-label="di"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqht5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/8329e67755d2c58c40d527d2c5609d9b237c73b6" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">8329e67</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqht5rab:-loading-announcement" aria-labelledby=":R17erqht5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 8329e67" aria-hidden="true" id=":R17erqht5rab:">Copy full SHA for 8329e67</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-8329e67" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-8329e67" href="/pypi/warehouse/blob/8329e67755d2c58c40d527d2c5609d9b237c73b6/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-8329e67" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-8329e67" href="/pypi/warehouse/tree/8329e67755d2c58c40d527d2c5609d9b237c73b6" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R2d5rab:" data-testid="commit-group-title">Commits on Jan 14, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raid5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R2d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raid5rab:-list-view-node-:Rfqid5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="fix: environment name should be pypi (#17381) * fix: environment name should be pypi * Fix: update take screenshots from node" class="color-fg-default" href="/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0">fix: environment name should be pypi (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2778962207" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17381" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17381/hovercard" href="https://github.com/pypi/warehouse/pull/17381">#17381</a><a data-pjax="true" title="fix: environment name should be pypi (#17381) * fix: environment name should be pypi * Fix: update take screenshots from node" class="color-fg-default" href="/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqid5rab:-loading-announcement show-description-c477e43" aria-labelledby="show-description-c477e43"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for c477e43" role="tooltip" aria-hidden="true" id="show-description-c477e43">Show description for c477e43</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/lwasser" data-testid="avatar-icon-link" data-hovercard-url="/users/lwasser/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="lwasser" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/7649194?v=4&amp;size=32" data-testid="github-avatar" aria-label="lwasser"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=lwasser" aria-label="commits by lwasser" data-hovercard-url="/users/lwasser/hovercard">lwasser</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqid5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/c477e43c7b7910acab6f5d39cdd70589e15e85d0" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">c477e43</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqid5rab:-loading-announcement" aria-labelledby=":Rjnfqid5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for c477e43" aria-hidden="true" id=":Rjnfqid5rab:">Copy full SHA for c477e43</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-c477e43" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-c477e43" href="/pypi/warehouse/blob/c477e43c7b7910acab6f5d39cdd70589e15e85d0/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-c477e43" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-c477e43" href="/pypi/warehouse/tree/c477e43c7b7910acab6f5d39cdd70589e15e85d0" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R2t5rab:" data-testid="commit-group-title">Commits on Jan 13, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rait5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R2t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rait5rab:-list-view-node-:Rfqit5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: add details of how to verify provenance JSON files (#17391) Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a">docs: add details of how to verify provenance JSON files (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2781696239" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17391" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17391/hovercard" href="https://github.com/pypi/warehouse/pull/17391">#17391</a><a data-pjax="true" title="docs: add details of how to verify provenance JSON files (#17391) Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqit5rab:-loading-announcement show-description-0d0a56e" aria-labelledby="show-description-0d0a56e"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 0d0a56e" role="tooltip" aria-hidden="true" id="show-description-0d0a56e">Show description for 0d0a56e</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/facutuesca" data-testid="avatar-icon-link" data-hovercard-url="/users/facutuesca/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="github-avatar" aria-label="facutuesca"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=facutuesca" aria-label="commits by facutuesca" data-hovercard-url="/users/facutuesca/hovercard">facutuesca</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqit5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/0d0a56e08500f62dd0be208e546bbcd22e8bc47a" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">0d0a56e</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqit5rab:-loading-announcement" aria-labelledby=":Rjnfqit5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 0d0a56e" aria-hidden="true" id=":Rjnfqit5rab:">Copy full SHA for 0d0a56e</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-0d0a56e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-0d0a56e" href="/pypi/warehouse/blob/0d0a56e08500f62dd0be208e546bbcd22e8bc47a/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-0d0a56e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-0d0a56e" href="/pypi/warehouse/tree/0d0a56e08500f62dd0be208e546bbcd22e8bc47a" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R3d5rab:" data-testid="commit-group-title">Commits on Dec 12, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rajd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R3d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rajd5rab:-list-view-node-:Rfqjd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: use Trusted Publishing uniformly as a term of art (#17267) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7">docs: use Trusted Publishing uniformly as a term of art (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2733903881" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17267" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17267/hovercard" href="https://github.com/pypi/warehouse/pull/17267">#17267</a><a data-pjax="true" title="docs: use Trusted Publishing uniformly as a term of art (#17267) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqjd5rab:-loading-announcement show-description-e6bdf57" aria-labelledby="show-description-e6bdf57"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for e6bdf57" role="tooltip" aria-hidden="true" id="show-description-e6bdf57">Show description for e6bdf57</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqjd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/e6bdf57bed06a194927d8b546f2615520d9415b7" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">e6bdf57</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqjd5rab:-loading-announcement" aria-labelledby=":Rjnfqjd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for e6bdf57" aria-hidden="true" id=":Rjnfqjd5rab:">Copy full SHA for e6bdf57</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-e6bdf57" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-e6bdf57" href="/pypi/warehouse/blob/e6bdf57bed06a194927d8b546f2615520d9415b7/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-e6bdf57" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-e6bdf57" href="/pypi/warehouse/tree/e6bdf57bed06a194927d8b546f2615520d9415b7" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R3t5rab:" data-testid="commit-group-title">Commits on Dec 5, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rajt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R3t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rajt5rab:-list-view-node-:Rfqjt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="User-facing docs for secret disclosure API (#17236) * User-facing docs for secret disclosure API * Add to the ToC * Add details about keys &amp; signatures" class="color-fg-default" href="/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2">User-facing docs for secret disclosure API (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2721195975" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17236" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17236/hovercard" href="https://github.com/pypi/warehouse/pull/17236">#17236</a><a data-pjax="true" title="User-facing docs for secret disclosure API (#17236) * User-facing docs for secret disclosure API * Add to the ToC * Add details about keys &amp; signatures" class="color-fg-default" href="/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqjt5rab:-loading-announcement show-description-a3e7e6a" aria-labelledby="show-description-a3e7e6a"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for a3e7e6a" role="tooltip" aria-hidden="true" id="show-description-a3e7e6a">Show description for a3e7e6a</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/di" data-testid="avatar-icon-link" data-hovercard-url="/users/di/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="github-avatar" aria-label="di"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqjt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/a3e7e6a10c9a36e20d8edda29249784f97dd88e2" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">a3e7e6a</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqjt5rab:-loading-announcement" aria-labelledby=":Rjnfqjt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for a3e7e6a" aria-hidden="true" id=":Rjnfqjt5rab:">Copy full SHA for a3e7e6a</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-a3e7e6a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-a3e7e6a" href="/pypi/warehouse/blob/a3e7e6a10c9a36e20d8edda29249784f97dd88e2/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-a3e7e6a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-a3e7e6a" href="/pypi/warehouse/tree/a3e7e6a10c9a36e20d8edda29249784f97dd88e2" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R4d5rab:" data-testid="commit-group-title">Commits on Dec 3, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rakd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R4d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rakd5rab:-list-view-node-:Rnqkd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: remove user-api-docs flash (#17212) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a">docs: remove user-api-docs flash (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2715568740" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17212" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17212/hovercard" href="https://github.com/pypi/warehouse/pull/17212">#17212</a><a data-pjax="true" title="docs: remove user-api-docs flash (#17212) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqkd5rab:-loading-announcement show-description-9f9413d" aria-labelledby="show-description-9f9413d"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 9f9413d" role="tooltip" aria-hidden="true" id="show-description-9f9413d">Show description for 9f9413d</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqkd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">9f9413d</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqkd5rab:-loading-announcement" aria-labelledby=":R17enqkd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 9f9413d" aria-hidden="true" id=":R17enqkd5rab:">Copy full SHA for 9f9413d</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-9f9413d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-9f9413d" href="/pypi/warehouse/blob/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-9f9413d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-9f9413d" href="/pypi/warehouse/tree/9f9413d6a153f7b6c85d0a196cc07b600a81ff2a" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rakd5rab:-list-view-node-:Rrqkd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: update API links everywhere (#17211) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a">docs: update API links everywhere (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2715336068" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17211" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17211/hovercard" href="https://github.com/pypi/warehouse/pull/17211">#17211</a><a data-pjax="true" title="docs: update API links everywhere (#17211) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqkd5rab:-loading-announcement show-description-2258995" aria-labelledby="show-description-2258995"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 2258995" role="tooltip" aria-hidden="true" id="show-description-2258995">Show description for 2258995</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqkd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">2258995</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqkd5rab:-loading-announcement" aria-labelledby=":R17erqkd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 2258995" aria-hidden="true" id=":R17erqkd5rab:">Copy full SHA for 2258995</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-2258995" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-2258995" href="/pypi/warehouse/blob/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-2258995" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-2258995" href="/pypi/warehouse/tree/2258995b7ab7719ab14e7fe8f693ae03d9a2fc0a" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rakd5rab:-list-view-node-:Rvqkd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: migrate JSON API docs to user-docs (#17178) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5">docs: migrate JSON API docs to user-docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2695195545" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17178" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17178/hovercard" href="https://github.com/pypi/warehouse/pull/17178">#17178</a><a data-pjax="true" title="docs: migrate JSON API docs to user-docs (#17178) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6vqkd5rab:-loading-announcement show-description-6533e60" aria-labelledby="show-description-6533e60"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 6533e60" role="tooltip" aria-hidden="true" id="show-description-6533e60">Show description for 6533e60</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnevqkd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/6533e60bd2d84da783122545dc482f19f8ae33c5" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">6533e60</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7evqkd5rab:-loading-announcement" aria-labelledby=":R17evqkd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 6533e60" aria-hidden="true" id=":R17evqkd5rab:">Copy full SHA for 6533e60</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-6533e60" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-6533e60" href="/pypi/warehouse/blob/6533e60bd2d84da783122545dc482f19f8ae33c5/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-6533e60" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-6533e60" href="/pypi/warehouse/tree/6533e60bd2d84da783122545dc482f19f8ae33c5" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R4t5rab:" data-testid="commit-group-title">Commits on Nov 26, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rakt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R4t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rakt5rab:-list-view-node-:Rfqkt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: move integration guide to user-docs (#17173) * docs: move integration guide to user-docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * user-docs: remove obsolete migration docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87">docs: move integration guide to user-docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2692328050" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17173" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17173/hovercard" href="https://github.com/pypi/warehouse/pull/17173">#17173</a><a data-pjax="true" title="docs: move integration guide to user-docs (#17173) * docs: move integration guide to user-docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * user-docs: remove obsolete migration docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqkt5rab:-loading-announcement show-description-d57082e" aria-labelledby="show-description-d57082e"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for d57082e" role="tooltip" aria-hidden="true" id="show-description-d57082e">Show description for d57082e</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqkt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/d57082ee37327bc1e8a28f96470b00ed226c0f87" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">d57082e</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqkt5rab:-loading-announcement" aria-labelledby=":Rjnfqkt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for d57082e" aria-hidden="true" id=":Rjnfqkt5rab:">Copy full SHA for d57082e</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-d57082e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-d57082e" href="/pypi/warehouse/blob/d57082ee37327bc1e8a28f96470b00ed226c0f87/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-d57082e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-d57082e" href="/pypi/warehouse/tree/d57082ee37327bc1e8a28f96470b00ed226c0f87" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R5d5rab:" data-testid="commit-group-title">Commits on Nov 25, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rald5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R5d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rald5rab:-list-view-node-:R17qld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: migrate RSS Feed docs to user docs (#17171) * docs: migrate RSS Feed docs to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: move XMLRPC docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53">docs: migrate RSS Feed docs to user docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2692015361" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17171" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17171/hovercard" href="https://github.com/pypi/warehouse/pull/17171">#17171</a><a data-pjax="true" title="docs: migrate RSS Feed docs to user docs (#17171) * docs: migrate RSS Feed docs to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: move XMLRPC docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72d7qld5rab:-loading-announcement show-description-ba85bc0" aria-labelledby="show-description-ba85bc0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for ba85bc0" role="tooltip" aria-hidden="true" id="show-description-ba85bc0">Show description for ba85bc0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1et7qld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/ba85bc0136012fb0637377f70f2b2f0873310d53" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">ba85bc0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruet7qld5rab:-loading-announcement" aria-labelledby=":R2et7qld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for ba85bc0" aria-hidden="true" id=":R2et7qld5rab:">Copy full SHA for ba85bc0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-ba85bc0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-ba85bc0" href="/pypi/warehouse/blob/ba85bc0136012fb0637377f70f2b2f0873310d53/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-ba85bc0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-ba85bc0" href="/pypi/warehouse/tree/ba85bc0136012fb0637377f70f2b2f0873310d53" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rald5rab:-list-view-node-:R1bqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Allow multiple attestations per distribution (#17134) * attestations: allow multiple attestations per dist Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * docs: document multiple attestations per file upload Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * attestations: improve error messages Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; --------- Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f">Allow multiple attestations per distribution (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2677122450" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17134" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17134/hovercard" href="https://github.com/pypi/warehouse/pull/17134">#17134</a><a data-pjax="true" title="Allow multiple attestations per distribution (#17134) * attestations: allow multiple attestations per dist Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * docs: document multiple attestations per file upload Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * attestations: improve error messages Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; --------- Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72dbqld5rab:-loading-announcement show-description-9543608" aria-labelledby="show-description-9543608"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 9543608" role="tooltip" aria-hidden="true" id="show-description-9543608">Show description for 9543608</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/facutuesca" data-testid="avatar-icon-link" data-hovercard-url="/users/facutuesca/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="github-avatar" aria-label="facutuesca"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=facutuesca" aria-label="commits by facutuesca" data-hovercard-url="/users/facutuesca/hovercard">facutuesca</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1etbqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/9543608df3e3d0a5c74905b9cf7b02c3093a960f" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">9543608</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruetbqld5rab:-loading-announcement" aria-labelledby=":R2etbqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 9543608" aria-hidden="true" id=":R2etbqld5rab:">Copy full SHA for 9543608</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-9543608" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-9543608" href="/pypi/warehouse/blob/9543608df3e3d0a5c74905b9cf7b02c3093a960f/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-9543608" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-9543608" href="/pypi/warehouse/tree/9543608df3e3d0a5c74905b9cf7b02c3093a960f" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rald5rab:-list-view-node-:R1fqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs(attestations): fix example for GitLab CI/CD (#17163) * docs(attestations): fix example for GitLab CI/CD * docs(attestations): align aud passed to id with id_tokens aud --------- Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe">docs(attestations): fix example for GitLab CI/CD (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2691330009" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17163" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17163/hovercard" href="https://github.com/pypi/warehouse/pull/17163">#17163</a><a data-pjax="true" title="docs(attestations): fix example for GitLab CI/CD (#17163) * docs(attestations): fix example for GitLab CI/CD * docs(attestations): align aud passed to id with id_tokens aud --------- Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72dfqld5rab:-loading-announcement show-description-fc3d73a" aria-labelledby="show-description-fc3d73a"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for fc3d73a" role="tooltip" aria-hidden="true" id="show-description-fc3d73a">Show description for fc3d73a</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="nejch" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/16777978?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/nejch/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=nejch" aria-label="commits by nejch" data-hovercard-url="/users/nejch/hovercard">nejch</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1etfqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/fc3d73a897b4498051d404a47905a2ed88e13ffe" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">fc3d73a</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruetfqld5rab:-loading-announcement" aria-labelledby=":R2etfqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for fc3d73a" aria-hidden="true" id=":R2etfqld5rab:">Copy full SHA for fc3d73a</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-fc3d73a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-fc3d73a" href="/pypi/warehouse/blob/fc3d73a897b4498051d404a47905a2ed88e13ffe/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-fc3d73a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-fc3d73a" href="/pypi/warehouse/tree/fc3d73a897b4498051d404a47905a2ed88e13ffe" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rald5rab:-list-view-node-:R1jqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: add Prerequisites section to attestations (#17164) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966">docs: add Prerequisites section to attestations (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2691345074" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17164" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17164/hovercard" href="https://github.com/pypi/warehouse/pull/17164">#17164</a><a data-pjax="true" title="docs: add Prerequisites section to attestations (#17164) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72djqld5rab:-loading-announcement show-description-fce17a5" aria-labelledby="show-description-fce17a5"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for fce17a5" role="tooltip" aria-hidden="true" id="show-description-fce17a5">Show description for fce17a5</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1etjqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/fce17a535eb50a69eacb59f4bcee7a483b28c966" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">fce17a5</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruetjqld5rab:-loading-announcement" aria-labelledby=":R2etjqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for fce17a5" aria-hidden="true" id=":R2etjqld5rab:">Copy full SHA for fce17a5</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-fce17a5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-fce17a5" href="/pypi/warehouse/blob/fce17a535eb50a69eacb59f4bcee7a483b28c966/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-fce17a5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-fce17a5" href="/pypi/warehouse/tree/fce17a535eb50a69eacb59f4bcee7a483b28c966" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rald5rab:-list-view-node-:R1nqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: move BigQuery to user docs (#17162) * docs: move BigQuery to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: APIs and Datasets Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72">docs: move BigQuery to user docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2691094942" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17162" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17162/hovercard" href="https://github.com/pypi/warehouse/pull/17162">#17162</a><a data-pjax="true" title="docs: move BigQuery to user docs (#17162) * docs: move BigQuery to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: APIs and Datasets Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72dnqld5rab:-loading-announcement show-description-1587fe2" aria-labelledby="show-description-1587fe2"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 1587fe2" role="tooltip" aria-hidden="true" id="show-description-1587fe2">Show description for 1587fe2</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1etnqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">1587fe2</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruetnqld5rab:-loading-announcement" aria-labelledby=":R2etnqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 1587fe2" aria-hidden="true" id=":R2etnqld5rab:">Copy full SHA for 1587fe2</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-1587fe2" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-1587fe2" href="/pypi/warehouse/blob/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-1587fe2" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-1587fe2" href="/pypi/warehouse/tree/1587fe26fc1643c9fb0c8bbf4817aad32bfc0c72" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rald5rab:-list-view-node-:R1rqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: move stats API to user docs (#17161) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40">docs: move stats API to user docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2691050342" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17161" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17161/hovercard" href="https://github.com/pypi/warehouse/pull/17161">#17161</a><a data-pjax="true" title="docs: move stats API to user docs (#17161) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R72drqld5rab:-loading-announcement show-description-c863541" aria-labelledby="show-description-c863541"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for c863541" role="tooltip" aria-hidden="true" id="show-description-c863541">Show description for c863541</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":R1etrqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/c86354193f9bde06ee971d9faabcf079244d6f40" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">c863541</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Ruetrqld5rab:-loading-announcement" aria-labelledby=":R2etrqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for c863541" aria-hidden="true" id=":R2etrqld5rab:">Copy full SHA for c863541</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-c863541" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-c863541" href="/pypi/warehouse/blob/c86354193f9bde06ee971d9faabcf079244d6f40/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-c863541" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-c863541" href="/pypi/warehouse/tree/c86354193f9bde06ee971d9faabcf079244d6f40" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R5t5rab:" data-testid="commit-group-title">Commits on Nov 20, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ralt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R5t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ralt5rab:-list-view-node-:Rnqlt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: migrate index/upload API docs to user docs (#17123) * docs: migrate index/upload API docs to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * are -&gt; is Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: fix two broken links Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0">docs: migrate index/upload API docs to user docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2673498984" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17123" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17123/hovercard" href="https://github.com/pypi/warehouse/pull/17123">#17123</a><a data-pjax="true" title="docs: migrate index/upload API docs to user docs (#17123) * docs: migrate index/upload API docs to user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * are -&gt; is Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: fix two broken links Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqlt5rab:-loading-announcement show-description-b8eb325" aria-labelledby="show-description-b8eb325"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for b8eb325" role="tooltip" aria-hidden="true" id="show-description-b8eb325">Show description for b8eb325</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqlt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/b8eb3256b246775762f136164fade5e602d24cd0" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">b8eb325</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqlt5rab:-loading-announcement" aria-labelledby=":R17enqlt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for b8eb325" aria-hidden="true" id=":R17enqlt5rab:">Copy full SHA for b8eb325</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-b8eb325" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-b8eb325" href="/pypi/warehouse/blob/b8eb3256b246775762f136164fade5e602d24cd0/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-b8eb325" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-b8eb325" href="/pypi/warehouse/tree/b8eb3256b246775762f136164fade5e602d24cd0" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Ralt5rab:-list-view-node-:Rrqlt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="user-docs: mention OIDC discovery (#17137) * user-docs: mention OIDC discovery This is a hard requirement, since we use OIDC discovery to get the JWKS URL, plus discovery gives us some early information about the shape of the claim set. Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * indent Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224">user-docs: mention OIDC discovery (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2677425632" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17137" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17137/hovercard" href="https://github.com/pypi/warehouse/pull/17137">#17137</a><a data-pjax="true" title="user-docs: mention OIDC discovery (#17137) * user-docs: mention OIDC discovery This is a hard requirement, since we use OIDC discovery to get the JWKS URL, plus discovery gives us some early information about the shape of the claim set. Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * indent Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqlt5rab:-loading-announcement show-description-05993c0" aria-labelledby="show-description-05993c0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 05993c0" role="tooltip" aria-hidden="true" id="show-description-05993c0">Show description for 05993c0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqlt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/05993c0115e47a6176ed05fab25aa4d3be624224" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">05993c0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqlt5rab:-loading-announcement" aria-labelledby=":R17erqlt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 05993c0" aria-hidden="true" id=":R17erqlt5rab:">Copy full SHA for 05993c0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-05993c0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-05993c0" href="/pypi/warehouse/blob/05993c0115e47a6176ed05fab25aa4d3be624224/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-05993c0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-05993c0" href="/pypi/warehouse/tree/05993c0115e47a6176ed05fab25aa4d3be624224" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Ralt5rab:-list-view-node-:Rvqlt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Add documentation for PEP-740 attestations using GitLab CI/CD (#17133) * docs: move GitHub attestation instructions inside GitHub tab Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * docs: add instructions for attestations using GitLab CI/CD Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; --------- Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e">Add documentation for PEP-740 attestations using GitLab CI/CD (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2676588997" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17133" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17133/hovercard" href="https://github.com/pypi/warehouse/pull/17133">#17133</a><a data-pjax="true" title="Add documentation for PEP-740 attestations using GitLab CI/CD (#17133) * docs: move GitHub attestation instructions inside GitHub tab Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * docs: add instructions for attestations using GitLab CI/CD Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; --------- Signed-off-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6vqlt5rab:-loading-announcement show-description-dd30340" aria-labelledby="show-description-dd30340"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for dd30340" role="tooltip" aria-hidden="true" id="show-description-dd30340">Show description for dd30340</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/facutuesca/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=facutuesca" aria-label="commits by facutuesca" data-hovercard-url="/users/facutuesca/hovercard">facutuesca</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnevqlt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/dd3034089adc60f52dd80ccfd78119fafb329a8e" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">dd30340</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7evqlt5rab:-loading-announcement" aria-labelledby=":R17evqlt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for dd30340" aria-hidden="true" id=":R17evqlt5rab:">Copy full SHA for dd30340</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-dd30340" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-dd30340" href="/pypi/warehouse/blob/dd3034089adc60f52dd80ccfd78119fafb329a8e/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-dd30340" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-dd30340" href="/pypi/warehouse/tree/dd3034089adc60f52dd80ccfd78119fafb329a8e" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R6d5rab:" data-testid="commit-group-title">Commits on Nov 15, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ramd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R6d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ramd5rab:-list-view-node-:Rfqmd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="user-docs: add section on trustworthiness (#17091) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e">user-docs: add section on trustworthiness (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2662788947" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17091" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17091/hovercard" href="https://github.com/pypi/warehouse/pull/17091">#17091</a><a data-pjax="true" title="user-docs: add section on trustworthiness (#17091) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqmd5rab:-loading-announcement show-description-b0e8497" aria-labelledby="show-description-b0e8497"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for b0e8497" role="tooltip" aria-hidden="true" id="show-description-b0e8497">Show description for b0e8497</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqmd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">b0e8497</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqmd5rab:-loading-announcement" aria-labelledby=":Rjnfqmd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for b0e8497" aria-hidden="true" id=":Rjnfqmd5rab:">Copy full SHA for b0e8497</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-b0e8497" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-b0e8497" href="/pypi/warehouse/blob/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-b0e8497" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-b0e8497" href="/pypi/warehouse/tree/b0e8497d7f3e9c22a0eb48ed6d0581536927f83e" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R6t5rab:" data-testid="commit-group-title">Commits on Nov 14, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ramt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R6t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ramt5rab:-list-view-node-:Rnqmt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Add FAQ on new Trusted Publishers (#17083) * Add FAQ on new Trusted Publishers * Update docs/user/trusted-publishers/internals.md Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt;" class="color-fg-default" href="/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424">Add FAQ on new Trusted Publishers (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2660125809" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17083" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17083/hovercard" href="https://github.com/pypi/warehouse/pull/17083">#17083</a><a data-pjax="true" title="Add FAQ on new Trusted Publishers (#17083) * Add FAQ on new Trusted Publishers * Update docs/user/trusted-publishers/internals.md Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt;" class="color-fg-default" href="/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqmt5rab:-loading-announcement show-description-06a2b58" aria-labelledby="show-description-06a2b58"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 06a2b58" role="tooltip" aria-hidden="true" id="show-description-06a2b58">Show description for 06a2b58</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=di" aria-label="commits by di" data-hovercard-url="/users/di/hovercard">di</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqmt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/06a2b586773dfeb72c604eb69396a2a8ede3f424" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">06a2b58</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqmt5rab:-loading-announcement" aria-labelledby=":R17enqmt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 06a2b58" aria-hidden="true" id=":R17enqmt5rab:">Copy full SHA for 06a2b58</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-06a2b58" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-06a2b58" href="/pypi/warehouse/blob/06a2b586773dfeb72c604eb69396a2a8ede3f424/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-06a2b58" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-06a2b58" href="/pypi/warehouse/tree/06a2b586773dfeb72c604eb69396a2a8ede3f424" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Ramt5rab:-list-view-node-:Rrqmt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: add security model/considerations for attestations (#17082) * docs: add security model/considerations for attestations Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * relocate link Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * honesty -&gt; integrity Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2">docs: add security model/considerations for attestations (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2660011216" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17082" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17082/hovercard" href="https://github.com/pypi/warehouse/pull/17082">#17082</a><a data-pjax="true" title="docs: add security model/considerations for attestations (#17082) * docs: add security model/considerations for attestations Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * relocate link Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * honesty -&gt; integrity Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqmt5rab:-loading-announcement show-description-87f3210" aria-labelledby="show-description-87f3210"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 87f3210" role="tooltip" aria-hidden="true" id="show-description-87f3210">Show description for 87f3210</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/woodruffw" data-testid="avatar-icon-link" data-hovercard-url="/users/woodruffw/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="github-avatar" aria-label="woodruffw"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqmt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/87f3210dfb9c9db38552bc49ed35494467eba1b2" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">87f3210</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqmt5rab:-loading-announcement" aria-labelledby=":R17erqmt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 87f3210" aria-hidden="true" id=":R17erqmt5rab:">Copy full SHA for 87f3210</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-87f3210" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-87f3210" href="/pypi/warehouse/blob/87f3210dfb9c9db38552bc49ed35494467eba1b2/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-87f3210" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-87f3210" href="/pypi/warehouse/tree/87f3210dfb9c9db38552bc49ed35494467eba1b2" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R7d5rab:" data-testid="commit-group-title">Commits on Nov 7, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rand5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R7d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rand5rab:-list-view-node-:Rnqnd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036) * Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments GitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is. This is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD. In other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL. This patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345. * Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc * Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc * Suggest `pypi` GitHub Environment @ `internals.md` doc * Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc * `make translations` Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32">Use</a> <code><a data-pjax="true" title="Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036) * Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments GitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is. This is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD. In other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL. This patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345. * Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc * Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc * Suggest `pypi` GitHub Environment @ `internals.md` doc * Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc * `make translations` Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32">(test)pypi</a></code> <a data-pjax="true" title="Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036) * Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments GitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is. This is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD. In other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL. This patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345. * Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc * Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc * Suggest `pypi` GitHub Environment @ `internals.md` doc * Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc * `make translations` Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32">in Trusted Publishing placeholder for GitHub Environments (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2636011999" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/17036" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/17036/hovercard" href="https://github.com/pypi/warehouse/pull/17036">#17036</a><a data-pjax="true" title="Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments (#17036) * Use `(test)pypi` in Trusted Publishing placeholder for GitHub Environments GitHub Environments is a confusingly explained feature within GitHub that represents deployment targets. When projects get uploaded to PyPI — that a deployment target; same for TestPyPI. They don't represent processes but server-like entities. So using `release` is conceptually incorrect and gives people the wrong idea of what it is. This is actually connected to Deployments API (and corresponding events) on the GitHub platform. The name Environments is just a misleading interface to describe Deployments that appears in some parts of the ecosystem, like GitHub Actions CI/CD. In other places, it's called deployments and there's even a tab in repositories using it: https://github.com/cherrypy/cheroot/deployments/pypi. Each deployment can be linked to the corresponding released project version URL. This patch attempts to align the practices with those used in the PyPUG guide and GitHub docs: https://github.com/actions/starter-workflows/pull/2345. * Suggest `pypi` GitHub Environment @ `adding-a-publisher.md` doc * Suggest `pypi` GitHub Environment @ `creating-a-project-through-oidc.md` doc * Suggest `pypi` GitHub Environment @ `internals.md` doc * Suggest `pypi` GitHub Environment @ `using-a-publisher.md` doc * `make translations` Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqnd5rab:-loading-announcement show-description-6d60f0e" aria-labelledby="show-description-6d60f0e"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 6d60f0e" role="tooltip" aria-hidden="true" id="show-description-6d60f0e">Show description for 6d60f0e</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three-plus"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="webknjaz" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/578543?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/webknjaz/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 3 authors" data-testid="authors-dialog-anchor" muted="">3<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqnd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">6d60f0e</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqnd5rab:-loading-announcement" aria-labelledby=":R17enqnd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 6d60f0e" aria-hidden="true" id=":R17enqnd5rab:">Copy full SHA for 6d60f0e</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-6d60f0e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-6d60f0e" href="/pypi/warehouse/blob/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-6d60f0e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-6d60f0e" href="/pypi/warehouse/tree/6d60f0e1c2a68ae5c377af008bfe0f4e5ea3ff32" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rand5rab:-list-view-node-:Rrqnd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title='Initial PEP 740 documentation (#16398) * initial attestations user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * more background, use preview Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: more improvements Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: attestation internals Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Update docs/user/attestations/internals.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * publish/v1: clarify the signing target Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * v1: be explicit about payload Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * attestations: avoid "index attestations" Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * attestations/internals: remove another confusing phrase Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * docs: move internals doc to dev-docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev: fix backticks Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * lintage, add note about trust Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: add callout for user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Update attestation-internals.rst Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update attestation-internals.rst Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * tweak index attestations warning Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: more PEP 740 docs, begin migrating user API docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: integrity API, details Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * api/integrity: fill in example Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * document status code Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: add note about api docs migration Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * api/integrity: avoid weird formatting Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * docs: link to #17001 Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: use sampleproject for attestation docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: more attestation internals to security/ Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: remove old index ref Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: fix two more broken refs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * user-docs: use a real provenance example Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * remove incorrect header Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * make toctree placement less confusing Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;' class="color-fg-default" href="/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8">Initial PEP 740 documentation (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2449175136" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16398" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16398/hovercard" href="https://github.com/pypi/warehouse/pull/16398">#16398</a><a data-pjax="true" title='Initial PEP 740 documentation (#16398) * initial attestations user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * more background, use preview Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: more improvements Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: attestation internals Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Update docs/user/attestations/internals.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * publish/v1: clarify the signing target Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * v1: be explicit about payload Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * attestations: avoid "index attestations" Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * attestations/internals: remove another confusing phrase Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * docs: move internals doc to dev-docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev: fix backticks Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * lintage, add note about trust Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: add callout for user docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Update attestation-internals.rst Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update attestation-internals.rst Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * tweak index attestations warning Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: more PEP 740 docs, begin migrating user API docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs: integrity API, details Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * api/integrity: fill in example Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * document status code Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: add note about api docs migration Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * api/integrity: avoid weird formatting Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * Apply suggestions from code review Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * docs: link to #17001 Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * docs/dev: use sampleproject for attestation docs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: more attestation internals to security/ Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: remove old index ref Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * dev-docs: fix two more broken refs Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * user-docs: use a real provenance example Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * remove incorrect header Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; * make toctree placement less confusing Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; --------- Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;' class="color-fg-default" href="/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqnd5rab:-loading-announcement show-description-ac0dee9" aria-labelledby="show-description-ac0dee9"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for ac0dee9" role="tooltip" aria-hidden="true" id="show-description-ac0dee9">Show description for ac0dee9</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three-plus"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/facutuesca/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 3 authors" data-testid="authors-dialog-anchor" muted="">3<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqnd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/ac0dee9fa126fe48a14da7decfba27f7b08535e8" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">ac0dee9</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqnd5rab:-loading-announcement" aria-labelledby=":R17erqnd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for ac0dee9" aria-hidden="true" id=":R17erqnd5rab:">Copy full SHA for ac0dee9</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-ac0dee9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-ac0dee9" href="/pypi/warehouse/blob/ac0dee9fa126fe48a14da7decfba27f7b08535e8/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-ac0dee9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-ac0dee9" href="/pypi/warehouse/tree/ac0dee9fa126fe48a14da7decfba27f7b08535e8" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R7t5rab:" data-testid="commit-group-title">Commits on Oct 24, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rant5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R7t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rant5rab:-list-view-node-:Rfqnt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title='Grammar: "an URL" -&gt; "a URL" (#16958)' class="color-fg-default" href="/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55">Grammar: "an URL" -&gt; "a URL" (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2610056491" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16958" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16958/hovercard" href="https://github.com/pypi/warehouse/pull/16958">#16958</a><a data-pjax="true" title='Grammar: "an URL" -&gt; "a URL" (#16958)' class="color-fg-default" href="/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/ferdnyc" data-testid="avatar-icon-link" data-hovercard-url="/users/ferdnyc/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="ferdnyc" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/538020?v=4&amp;size=32" data-testid="github-avatar" aria-label="ferdnyc"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=ferdnyc" aria-label="commits by ferdnyc" data-hovercard-url="/users/ferdnyc/hovercard">ferdnyc</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqnt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/66d8b5aab305ed259683de5b7c7af5f8f370ae55" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">66d8b5a</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqnt5rab:-loading-announcement" aria-labelledby=":Rjnfqnt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 66d8b5a" aria-hidden="true" id=":Rjnfqnt5rab:">Copy full SHA for 66d8b5a</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-66d8b5a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-66d8b5a" href="/pypi/warehouse/blob/66d8b5aab305ed259683de5b7c7af5f8f370ae55/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-66d8b5a" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-66d8b5a" href="/pypi/warehouse/tree/66d8b5aab305ed259683de5b7c7af5f8f370ae55" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R8d5rab:" data-testid="commit-group-title">Commits on Aug 28, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raod5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R8d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raod5rab:-list-view-node-:Rfqod5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Update icons reference in doc metadata docs (#16584) * Update project_metadata icons reference * Format table * Format table * Add missing case for documentation URL * Update docs/user/project_metadata.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * Update docs/user/project_metadata.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * Update docs/user/project_metadata.md Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update project_metadata.md * Update warehouse/templates/packaging/detail.html Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; --------- Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954">Update icons reference in doc metadata docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2491997151" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16584" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16584/hovercard" href="https://github.com/pypi/warehouse/pull/16584">#16584</a><a data-pjax="true" title="Update icons reference in doc metadata docs (#16584) * Update project_metadata icons reference * Format table * Format table * Add missing case for documentation URL * Update docs/user/project_metadata.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * Update docs/user/project_metadata.md Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; * Update docs/user/project_metadata.md Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update project_metadata.md * Update warehouse/templates/packaging/detail.html Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; --------- Co-authored-by: Facundo Tuesca &lt;facundo.tuesca@trailofbits.com&gt; Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqod5rab:-loading-announcement show-description-70d6f8d" aria-labelledby="show-description-70d6f8d"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 70d6f8d" role="tooltip" aria-hidden="true" id="show-description-70d6f8d">Show description for 70d6f8d</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three-plus"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="DarkaMaul" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/8711456?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/DarkaMaul/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/facutuesca/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 4 authors" data-testid="authors-dialog-anchor" muted="">4<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqod5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/70d6f8d81fecf8651ce9cbde713cfe24b932f954" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">70d6f8d</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqod5rab:-loading-announcement" aria-labelledby=":Rjnfqod5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 70d6f8d" aria-hidden="true" id=":Rjnfqod5rab:">Copy full SHA for 70d6f8d</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-70d6f8d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-70d6f8d" href="/pypi/warehouse/blob/70d6f8d81fecf8651ce9cbde713cfe24b932f954/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-70d6f8d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-70d6f8d" href="/pypi/warehouse/tree/70d6f8d81fecf8651ce9cbde713cfe24b932f954" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R8t5rab:" data-testid="commit-group-title">Commits on Aug 27, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raot5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R8t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raot5rab:-list-view-node-:Rfqot5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: Clarify URL verification time validity (#16576)" class="color-fg-default" href="/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12">docs: Clarify URL verification time validity (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2489977451" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16576" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16576/hovercard" href="https://github.com/pypi/warehouse/pull/16576">#16576</a><a data-pjax="true" title="docs: Clarify URL verification time validity (#16576)" class="color-fg-default" href="/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/facutuesca" data-testid="avatar-icon-link" data-hovercard-url="/users/facutuesca/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="github-avatar" aria-label="facutuesca"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=facutuesca" aria-label="commits by facutuesca" data-hovercard-url="/users/facutuesca/hovercard">facutuesca</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqot5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/0d4245df712e9d04fe87ccf0f0a631371fce6c12" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">0d4245d</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqot5rab:-loading-announcement" aria-labelledby=":Rjnfqot5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 0d4245d" aria-hidden="true" id=":Rjnfqot5rab:">Copy full SHA for 0d4245d</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-0d4245d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-0d4245d" href="/pypi/warehouse/blob/0d4245df712e9d04fe87ccf0f0a631371fce6c12/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-0d4245d" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-0d4245d" href="/pypi/warehouse/tree/0d4245df712e9d04fe87ccf0f0a631371fce6c12" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R9d5rab:" data-testid="commit-group-title">Commits on Aug 21, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rapd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R9d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rapd5rab:-list-view-node-:Rfqpd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="docs: Add more details on how URLs are verified (#16539) * docs: fix verified URLs sub-section structure * docs: remove unused tooltips feature * docs: add per-provider Trusted Publishing URL verification details * Update docs/user/project_metadata.md Co-authored-by: dm &lt;darkamaul@hotmail.fr&gt; * Apply suggestions from code review * Update docs/user/project_metadata.md --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: dm &lt;darkamaul@hotmail.fr&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced">docs: Add more details on how URLs are verified (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2478068163" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16539" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16539/hovercard" href="https://github.com/pypi/warehouse/pull/16539">#16539</a><a data-pjax="true" title="docs: Add more details on how URLs are verified (#16539) * docs: fix verified URLs sub-section structure * docs: remove unused tooltips feature * docs: add per-provider Trusted Publishing URL verification details * Update docs/user/project_metadata.md Co-authored-by: dm &lt;darkamaul@hotmail.fr&gt; * Apply suggestions from code review * Update docs/user/project_metadata.md --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: dm &lt;darkamaul@hotmail.fr&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqpd5rab:-loading-announcement show-description-54fda81" aria-labelledby="show-description-54fda81"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 54fda81" role="tooltip" aria-hidden="true" id="show-description-54fda81">Show description for 54fda81</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three-plus"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/facutuesca/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="DarkaMaul" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/8711456?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/DarkaMaul/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 4 authors" data-testid="authors-dialog-anchor" muted="">4<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqpd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/54fda8191a8653be2e6e2b7aa56fc63227b17ced" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">54fda81</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqpd5rab:-loading-announcement" aria-labelledby=":Rjnfqpd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 54fda81" aria-hidden="true" id=":Rjnfqpd5rab:">Copy full SHA for 54fda81</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-54fda81" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-54fda81" href="/pypi/warehouse/blob/54fda8191a8653be2e6e2b7aa56fc63227b17ced/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-54fda81" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-54fda81" href="/pypi/warehouse/tree/54fda8191a8653be2e6e2b7aa56fc63227b17ced" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R9t5rab:" data-testid="commit-group-title">Commits on Aug 20, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rapt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R9t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rapt5rab:-list-view-node-:Rfqpt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Documentation on Project-Urls (#16513) * Update services recognized in detail.html * Add documentation on Project-URLs * Update documentation * Apply suggestions from code review Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update documentation. * Apply suggestions from code review --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130">Documentation on Project-Urls (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2473706790" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16513" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16513/hovercard" href="https://github.com/pypi/warehouse/pull/16513">#16513</a><a data-pjax="true" title="Documentation on Project-Urls (#16513) * Update services recognized in detail.html * Add documentation on Project-URLs * Update documentation * Apply suggestions from code review Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt; * Update documentation. * Apply suggestions from code review --------- Co-authored-by: William Woodruff &lt;william@yossarian.net&gt; Co-authored-by: Dustin Ingram &lt;di@users.noreply.github.com&gt;" class="color-fg-default" href="/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqpt5rab:-loading-announcement show-description-c1dffa9" aria-labelledby="show-description-c1dffa9"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for c1dffa9" role="tooltip" aria-hidden="true" id="show-description-c1dffa9">Show description for c1dffa9</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three-plus"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="DarkaMaul" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/8711456?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/DarkaMaul/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="di" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/294415?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/di/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 3 authors" data-testid="authors-dialog-anchor" muted="">3<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqpt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/c1dffa93e5f68b0ade87aaeacae8857442bb6130" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">c1dffa9</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqpt5rab:-loading-announcement" aria-labelledby=":Rjnfqpt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for c1dffa9" aria-hidden="true" id=":Rjnfqpt5rab:">Copy full SHA for c1dffa9</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-c1dffa9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-c1dffa9" href="/pypi/warehouse/blob/c1dffa93e5f68b0ade87aaeacae8857442bb6130/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-c1dffa9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-c1dffa9" href="/pypi/warehouse/tree/c1dffa93e5f68b0ade87aaeacae8857442bb6130" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rad5rab:" data-testid="commit-group-title">Commits on Jun 25, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raqd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rad5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raqd5rab:-list-view-node-:Rfqqd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title='docs, warehouse: improve "pending" publisher docs, messages (#16158) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Ee Durbin &lt;ewdurbin@gmail.com&gt;' class="color-fg-default" href="/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345">docs, warehouse: improve "pending" publisher docs, messages (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2371270240" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16158" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16158/hovercard" href="https://github.com/pypi/warehouse/pull/16158">#16158</a><a data-pjax="true" title='docs, warehouse: improve "pending" publisher docs, messages (#16158) Signed-off-by: William Woodruff &lt;william@trailofbits.com&gt; Co-authored-by: Ee Durbin &lt;ewdurbin@gmail.com&gt;' class="color-fg-default" href="/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqqd5rab:-loading-announcement show-description-8320d05" aria-labelledby="show-description-8320d05"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 8320d05" role="tooltip" aria-hidden="true" id="show-description-8320d05">Show description for 8320d05</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span class="AvatarStack__AvatarStackWrapper-sc-4pdg6v-0 hzFJAq pc-AvatarStack--three"><div class="Box-sc-g0xbh4-0 pc-AvatarStackBody" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="woodruffw" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3059210?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/woodruffw/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-Avatar-Avatar-ZRS-m" alt="ewdurbin" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1200832?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/ewdurbin/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=woodruffw" aria-label="commits by woodruffw" data-hovercard-url="/users/woodruffw/hovercard">woodruffw</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=ewdurbin" aria-label="commits by ewdurbin" data-hovercard-url="/users/ewdurbin/hovercard">ewdurbin</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqqd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/8320d05203b09659e92888149491a29dda73f345" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">8320d05</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqqd5rab:-loading-announcement" aria-labelledby=":Rjnfqqd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 8320d05" aria-hidden="true" id=":Rjnfqqd5rab:">Copy full SHA for 8320d05</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-8320d05" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-8320d05" href="/pypi/warehouse/blob/8320d05203b09659e92888149491a29dda73f345/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-8320d05" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-8320d05" href="/pypi/warehouse/tree/8320d05203b09659e92888149491a29dda73f345" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rat5rab:" data-testid="commit-group-title">Commits on Jun 18, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raqt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rat5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raqt5rab:-list-view-node-:Rfqqt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Clarify that GitHub is not the sole Identity Provider (#16130) * Update documentation * Remove outdated sentence" class="color-fg-default" href="/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075">Clarify that GitHub is not the sole Identity Provider (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2360186857" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/16130" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/16130/hovercard" href="https://github.com/pypi/warehouse/pull/16130">#16130</a><a data-pjax="true" title="Clarify that GitHub is not the sole Identity Provider (#16130) * Update documentation * Remove outdated sentence" class="color-fg-default" href="/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqqt5rab:-loading-announcement show-description-2e85ef3" aria-labelledby="show-description-2e85ef3"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for 2e85ef3" role="tooltip" aria-hidden="true" id="show-description-2e85ef3">Show description for 2e85ef3</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/DarkaMaul" data-testid="avatar-icon-link" data-hovercard-url="/users/DarkaMaul/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="DarkaMaul" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/8711456?v=4&amp;size=32" data-testid="github-avatar" aria-label="DarkaMaul"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=DarkaMaul" aria-label="commits by DarkaMaul" data-hovercard-url="/users/DarkaMaul/hovercard">DarkaMaul</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqqt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">2e85ef3</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqqt5rab:-loading-announcement" aria-labelledby=":Rjnfqqt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for 2e85ef3" aria-hidden="true" id=":Rjnfqqt5rab:">Copy full SHA for 2e85ef3</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-2e85ef3" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-2e85ef3" href="/pypi/warehouse/blob/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-2e85ef3" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-2e85ef3" href="/pypi/warehouse/tree/2e85ef30edacaa55ddc5f6fe97aee994b4bb3075" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Timeline__ToggleTimelineItem-sc-1nkzbnu-1 eHtUWW Timeline-Item"><div class="Box-sc-g0xbh4-0 izArLR"><div display="flex" class="Box-sc-g0xbh4-0 bbNsBg TimelineItem-Badge" overflow="hidden" color="fg.muted" width="32px" height="32px"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></div></div><div class="Timeline__ToggleTimelineBody-sc-1nkzbnu-2 jdZjlQ mt-0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rbd5rab:" data-testid="commit-group-title">Commits on May 7, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rard5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rbd5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rard5rab:-list-view-node-:Rfqrd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL"><a data-pjax="true" title="Fix GitLab Trusted Publishers UI and docs (#15921) Change the &quot;workflow file path&quot; field in the UI and in the docs to &quot;top-level pipeline file path&quot;. This is the correct term, since GitLab OIDC claims only provide the top-level pipeline (usually `.gitlab-ci.yml`), rather than individual jobs/workflows. Also change the security model doc, to clarify that PyPI cannot tell the difference between different .yml files that are included in `.gitlab-ci.yml`, since it's the latter that is reported in the claims." class="color-fg-default" href="/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598">Fix GitLab Trusted Publishers UI and docs (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2284053486" data-permission-text="Title is private" data-url="https://github.com/pypi/warehouse/issues/15921" data-hovercard-type="pull_request" data-hovercard-url="/pypi/warehouse/pull/15921/hovercard" href="https://github.com/pypi/warehouse/pull/15921">#15921</a><a data-pjax="true" title="Fix GitLab Trusted Publishers UI and docs (#15921) Change the &quot;workflow file path&quot; field in the UI and in the docs to &quot;top-level pipeline file path&quot;. This is the correct term, since GitLab OIDC claims only provide the top-level pipeline (usually `.gitlab-ci.yml`), rather than individual jobs/workflows. Also change the security model doc, to clarify that PyPI cannot tell the difference between different .yml files that are included in `.gitlab-ci.yml`, since it's the latter that is reported in the claims." class="color-fg-default" href="/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqrd5rab:-loading-announcement show-description-c0f7789" aria-labelledby="show-description-c0f7789"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH" data-direction="s" aria-label="Show description for c0f7789" role="tooltip" aria-hidden="true" id="show-description-c0f7789">Show description for c0f7789</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/facutuesca" data-testid="avatar-icon-link" data-hovercard-url="/users/facutuesca/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="facutuesca" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5762120?v=4&amp;size=32" data-testid="github-avatar" aria-label="facutuesca"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/pypi/warehouse/commits?author=facutuesca" aria-label="commits by facutuesca" data-hovercard-url="/users/facutuesca/hovercard">facutuesca</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqrd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a class="Button--invisible Button--small Button text-mono" href="/pypi/warehouse/commit/c0f7789c17d8da34f412fba7aa24f1ed94ce7598" variant="invisible" sx="[object Object]"><span class="Button-content"><span class="Button-label color-fg-muted">c0f7789</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqrd5rab:-loading-announcement" aria-labelledby=":Rjnfqrd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="Tooltip__StyledTooltip-sc-e45c7z-0 jOyaRH CopyToClipboardButton-module__tooltip--Dq1IB" data-direction="s" aria-label="Copy full SHA for c0f7789" aria-hidden="true" id=":Rjnfqrd5rab:">Copy full SHA for c0f7789</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-c0f7789" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-c0f7789" href="/pypi/warehouse/blob/c0f7789c17d8da34f412fba7aa24f1ed94ce7598/docs/user" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-c0f7789" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-c0f7789" href="/pypi/warehouse/tree/c0f7789c17d8da34f412fba7aa24f1ed94ce7598" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div></div></div></div><h2 class="sr-only prc-Heading-Heading-6CmGO">Pagination</h2><div class="d-flex flex-justify-center mt-2"><div class="Box-sc-g0xbh4-0 prc-ButtonGroup-ButtonGroup-vcMeG"><div><a sx="[object Object]" aria-disabled="true" style="--button-color:primer.fg.disabled" type="button" tabindex="0" data-testid="pagination-prev-button" class="Box-sc-g0xbh4-0 cQAMJB prc-Button-ButtonBase-c50BI fgColor-accent text-normal" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":R39rab:-loading-announcement" href="/pypi/warehouse/commits/main/docs/user?before=0c0efecd6bd6a556c76caaf6f7425a0550c3a89f+0"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Previous</span></span></a></div><div><a type="button" tabindex="0" data-testid="pagination-next-button" class="prc-Button-ButtonBase-c50BI fgColor-accent text-normal" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":R59rab:-loading-announcement" href="/pypi/warehouse/commits/main/docs/user?after=0c0efecd6bd6a556c76caaf6f7425a0550c3a89f+34"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Next</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 fgColor-accent" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></span></span></a></div></div></div></div></div><div class="Box-sc-g0xbh4-0"></div></div></div></div></div> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-app> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <span> &copy; 2025 GitHub,&nbsp;Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10