Skip to content

Conversation

@encukou
Copy link
Member

@encukou encukou commented Nov 26, 2025

This merges the Subscriptions and Slicings sections in the language reference. From the parser's point of view, slicing is a special case of subscription, and it makes sense to document it that way too.

The PR also touches Data model documentation: I've tried to move details of the runtime behaviour there, and to de-duplicate (and cross-link) as needed.
Similar for the slice attribute docs.

Todo:

  • Add a glossary entry for subscript -- the term this uses consistently for the key/index/whatever in the square brackets.

📚 Documentation preview 📚: https://cpython-previews--141985.org.readthedocs.build/

encukou and others added 7 commits September 10, 2025 17:59
Co-authored-by: Blaise Pabon <blaise@gmail.com>
Co-authored-by: Blaise Pabon <blaise@gmail.com>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Co-authored-by: Blaise Pabon <blaise@gmail.com>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Copy link
Member Author

@encukou encukou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for going through this!

@encukou encukou marked this pull request as ready for review January 7, 2026 15:19
Copy link
Member

@StanFromIreland StanFromIreland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few little things, overall looks very good!

the ``3`` in ``items[3]``.
Usually used to select an element of a container.
Also called a :term:`key` when subscripting a :term:`mapping`,
or :term:`index` when subscripting a :term:`sequence`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
or :term:`index` when subscripting a :term:`sequence`.
or an :term:`index` when subscripting a :term:`sequence`.

subscription: `primary` '[' `subscript` ']'
subscript: `slice` | `tuple_slices`
tuple_slices: ','.(`slice` | `starred_expression`)+ [',']
slice: `proper_slice` | `assignment_expression`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By this grammar, if one does something[0], 0 is an int and is a slice, but that contradicts with your glossary entry, that states it must be a "an object of type slice"?

Note that no error is raised if a slice position is less than zero or larger
than the length of the sequence.

If *start* is missing or ``None``, slicing behaves as if *start* was zero.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If *start* is missing or ``None``, slicing behaves as if *start* was zero.
If *start* is missing or :data:`None`, slicing behaves as if *start* was zero.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting core review docs Documentation in the Doc dir skip news

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

3 participants