Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.13] gh-126543: Docs: change "bound type var" to "bounded" when used in the context of the 'bound' kw argument to TypeVar (GH-126584) #126657

Merged
merged 1 commit into from
Nov 11, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1726,11 +1726,11 @@ without the dedicated syntax, as documented below.
class Sequence[T]: # T is a TypeVar
...

This syntax can also be used to create bound and constrained type
This syntax can also be used to create bounded and constrained type
variables::

class StrSequence[S: str]: # S is a TypeVar bound to str
...
class StrSequence[S: str]: # S is a TypeVar with a `str` upper bound;
... # we can say that S is "bounded by `str`"


class StrOrBytesSequence[A: (str, bytes)]: # A is a TypeVar constrained to str or bytes
Expand Down Expand Up @@ -1763,8 +1763,8 @@ without the dedicated syntax, as documented below.
"""Add two strings or bytes objects together."""
return x + y

Note that type variables can be *bound*, *constrained*, or neither, but
cannot be both bound *and* constrained.
Note that type variables can be *bounded*, *constrained*, or neither, but
cannot be both bounded *and* constrained.

The variance of type variables is inferred by type checkers when they are created
through the :ref:`type parameter syntax <type-params>` or when
Expand All @@ -1774,8 +1774,8 @@ without the dedicated syntax, as documented below.
By default, manually created type variables are invariant.
See :pep:`484` and :pep:`695` for more details.

Bound type variables and constrained type variables have different
semantics in several important ways. Using a *bound* type variable means
Bounded type variables and constrained type variables have different
semantics in several important ways. Using a *bounded* type variable means
that the ``TypeVar`` will be solved using the most specific type possible::

x = print_capitalized('a string')
Expand All @@ -1789,8 +1789,8 @@ without the dedicated syntax, as documented below.

z = print_capitalized(45) # error: int is not a subtype of str

Type variables can be bound to concrete types, abstract types (ABCs or
protocols), and even unions of types::
The upper bound of a type variable can be a concrete type, abstract type
(ABC or Protocol), or even a union of types::

# Can be anything with an __abs__ method
def print_abs[T: SupportsAbs](arg: T) -> None:
Expand Down Expand Up @@ -1834,7 +1834,7 @@ without the dedicated syntax, as documented below.

.. attribute:: __bound__

The bound of the type variable, if any.
The upper bound of the type variable, if any.

.. versionchanged:: 3.12

Expand Down Expand Up @@ -2060,7 +2060,7 @@ without the dedicated syntax, as documented below.
return x + y

Without ``ParamSpec``, the simplest way to annotate this previously was to
use a :class:`TypeVar` with bound ``Callable[..., Any]``. However this
use a :class:`TypeVar` with upper bound ``Callable[..., Any]``. However this
causes two problems:

1. The type checker can't type check the ``inner`` function because
Expand Down
Loading