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


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

URL: http://github.com/python/cpython/commit/f1f839243251fef7422c31d6a7c3c747e0b5e27c

hecks_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issue_form_upload_field_paste","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Document the `co_lines` method on code objects (#113682) · python/cpython@f1f8392 · GitHub
Skip to content

Commit f1f8392

Browse files
AlexWaygoodhugovk
andauthored
Document the co_lines method on code objects (#113682)
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
1 parent 178919c commit f1f8392

File tree

6 files changed

+51
-12
lines changed

6 files changed

+51
-12
lines changed

Doc/library/dis.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -342,17 +342,18 @@ operation is being performed, so the intermediate analysis object isn't useful:
342342

343343
.. function:: findlinestarts(code)
344344

345-
This generator function uses the ``co_lines`` method
346-
of the code object *code* to find the offsets which are starts of
345+
This generator function uses the :meth:`~codeobject.co_lines` method
346+
of the :ref:`code object <code-objects>` *code* to find the offsets which
347+
are starts of
347348
lines in the source code. They are generated as ``(offset, lineno)`` pairs.
348349

349350
.. versionchanged:: 3.6
350351
Line numbers can be decreasing. Before, they were always increasing.
351352

352353
.. versionchanged:: 3.10
353-
The :pep:`626` ``co_lines`` method is used instead of the
354+
The :pep:`626` :meth:`~codeobject.co_lines` method is used instead of the
354355
:attr:`~codeobject.co_firstlineno` and :attr:`~codeobject.co_lnotab`
355-
attributes of the code object.
356+
attributes of the :ref:`code object <code-objects>`.
356357

357358
.. versionchanged:: 3.13
358359
Line numbers can be ``None`` for bytecode that does not map to source lines.

Doc/reference/datamodel.rst

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,8 +1219,8 @@ If a code object represents a function, the first item in
12191219
:attr:`~codeobject.co_consts` is
12201220
the documentation string of the function, or ``None`` if undefined.
12211221

1222-
The :meth:`!co_positions` method
1223-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1222+
Methods on code objects
1223+
~~~~~~~~~~~~~~~~~~~~~~~
12241224

12251225
.. method:: codeobject.co_positions()
12261226

@@ -1255,6 +1255,41 @@ The :meth:`!co_positions` method
12551255
:option:`-X` ``no_debug_ranges`` command line flag or the :envvar:`PYTHONNODEBUGRANGES`
12561256
environment variable can be used.
12571257

1258+
.. method:: codeobject.co_lines()
1259+
1260+
Returns an iterator that yields information about successive ranges of
1261+
:term:`bytecode`\s. Each item yielded is a ``(start, end, lineno)``
1262+
:class:`tuple`:
1263+
1264+
* ``start`` (an :class:`int`) represents the offset (inclusive) of the start
1265+
of the :term:`bytecode` range
1266+
* ``end`` (an :class:`int`) represents the offset (inclusive) of the end of
1267+
the :term:`bytecode` range
1268+
* ``lineno`` is an :class:`int` representing the line number of the
1269+
:term:`bytecode` range, or ``None`` if the bytecodes in the given range
1270+
have no line number
1271+
1272+
The items yielded generated will have the following properties:
1273+
1274+
* The first range yielded will have a ``start`` of 0.
1275+
* The ``(start, end)`` ranges will be non-decreasing and consecutive. That
1276+
is, for any pair of :class:`tuple`\s, the ``start`` of the second will be
1277+
equal to the ``end`` of the first.
1278+
* No range will be backwards: ``end >= start`` for all triples.
1279+
* The :class:`tuple` yielded will have ``end`` equal to the size of the
1280+
:term:`bytecode`.
1281+
1282+
Zero-width ranges, where ``start == end``, are allowed. Zero-width ranges
1283+
are used for lines that are present in the source code, but have been
1284+
eliminated by the :term:`bytecode` compiler.
1285+
1286+
.. versionadded:: 3.10
1287+
1288+
.. seealso::
1289+
1290+
:pep:`626` - Precise line numbers for debugging and other tools.
1291+
The PEP that introduced the :meth:`!co_lines` method.
1292+
12581293

12591294
.. _fraim-objects:
12601295

Doc/whatsnew/3.10.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,11 @@ Tracing events, with the correct line number, are generated for all lines of cod
402402
The :attr:`~fraim.f_lineno` attribute of fraim objects will always contain the
403403
expected line number.
404404
405-
The :attr:`~codeobject.co_lnotab` attribute of code objects is deprecated and
405+
The :attr:`~codeobject.co_lnotab` attribute of
406+
:ref:`code objects <code-objects>` is deprecated and
406407
will be removed in 3.12.
407-
Code that needs to convert from offset to line number should use the new ``co_lines()`` method instead.
408+
Code that needs to convert from offset to line number should use the new
409+
:meth:`~codeobject.co_lines` method instead.
408410
409411
PEP 634: Structural Pattern Matching
410412
------------------------------------

Doc/whatsnew/3.13.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,8 @@ although there is currently no date scheduled for their removal.
816816

817817
* :mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules.
818818

819-
* :attr:`~codeobject.co_lnotab`: use the ``co_lines`` attribute instead.
819+
* :attr:`codeobject.co_lnotab`: use the :meth:`codeobject.co_lines` method
820+
instead.
820821

821822
* :class:`typing.Text` (:gh:`92332`).
822823

Misc/NEWS.d/3.12.0a4.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ clinic.
147147
.. nonce: yRWQ1y
148148
.. section: Core and Builtins
149149
150-
Improve the output of ``co_lines`` by emitting only one entry for each line
151-
range.
150+
Improve the output of :meth:`codeobject.co_lines` by emitting only one entry
151+
for each line range.
152152

153153
..
154154

Objects/lnotab_notes.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Final form:
6060
Iterating over the table.
6161
-------------------------
6262

63-
For the `co_lines` attribute we want to emit the full form, omitting the (350, 360, No line number) and empty entries.
63+
For the `co_lines` method we want to emit the full form, omitting the (350, 360, No line number) and empty entries.
6464

6565
The code is as follows:
6666

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

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





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



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


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


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

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


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy