gh-106446: Fix failed doctest in stdtypes (#106447)

---------
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
Charlie Zhao 2023-07-14 15:38:03 +08:00 committed by GitHub
parent 21d98be422
commit 89867d2491
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 17 deletions

View File

@ -3953,7 +3953,7 @@ copying.
>>> m = memoryview(bytearray(b'abc')) >>> m = memoryview(bytearray(b'abc'))
>>> mm = m.toreadonly() >>> mm = m.toreadonly()
>>> mm.tolist() >>> mm.tolist()
[89, 98, 99] [97, 98, 99]
>>> mm[0] = 42 >>> mm[0] = 42
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
@ -4009,6 +4009,7 @@ copying.
:mod:`struct` syntax. One of the formats must be a byte format :mod:`struct` syntax. One of the formats must be a byte format
('B', 'b' or 'c'). The byte length of the result must be the same ('B', 'b' or 'c'). The byte length of the result must be the same
as the original length. as the original length.
Note that all byte lengths may depend on the operating system.
Cast 1D/long to 1D/unsigned bytes:: Cast 1D/long to 1D/unsigned bytes::
@ -4039,8 +4040,8 @@ copying.
>>> x = memoryview(b) >>> x = memoryview(b)
>>> x[0] = b'a' >>> x[0] = b'a'
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> ...
ValueError: memoryview: invalid value for format "B" TypeError: memoryview: invalid type for format 'B'
>>> y = x.cast('c') >>> y = x.cast('c')
>>> y[0] = b'a' >>> y[0] = b'a'
>>> b >>> b
@ -4789,10 +4790,10 @@ An example of dictionary view usage::
>>> # set operations >>> # set operations
>>> keys & {'eggs', 'bacon', 'salad'} >>> keys & {'eggs', 'bacon', 'salad'}
{'bacon'} {'bacon'}
>>> keys ^ {'sausage', 'juice'} >>> keys ^ {'sausage', 'juice'} == {'juice', 'sausage', 'bacon', 'spam'}
{'juice', 'sausage', 'bacon', 'spam'} True
>>> keys | ['juice', 'juice', 'juice'] >>> keys | ['juice', 'juice', 'juice'] == {'bacon', 'spam', 'juice'}
{'juice', 'sausage', 'bacon', 'spam', 'eggs'} True
>>> # get back a read-only proxy for the original dictionary >>> # get back a read-only proxy for the original dictionary
>>> values.mapping >>> values.mapping
@ -4999,8 +5000,8 @@ exception to disallow mistakes like ``dict[str][str]``::
>>> dict[str][str] >>> dict[str][str]
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> ...
TypeError: There are no type variables left in dict[str] TypeError: dict[str] is not a generic class
However, such expressions are valid when :ref:`type variables <generics>` are However, such expressions are valid when :ref:`type variables <generics>` are
used. The index must have as many elements as there are type variable items used. The index must have as many elements as there are type variable items
@ -5206,13 +5207,15 @@ enables cleaner type hinting syntax compared to :data:`typing.Union`.
>>> isinstance("", int | str) >>> isinstance("", int | str)
True True
However, union objects containing :ref:`parameterized generics However, :ref:`parameterized generics <types-genericalias>` in
<types-genericalias>` cannot be used:: union objects cannot be checked::
>>> isinstance(1, int | list[int]) >>> isinstance(1, int | list[int]) # short-circuit evaluation
True
>>> isinstance([1], int | list[int])
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> ...
TypeError: isinstance() argument 2 cannot contain a parameterized generic TypeError: isinstance() argument 2 cannot be a parameterized generic
The user-exposed type for the union object can be accessed from The user-exposed type for the union object can be accessed from
:data:`types.UnionType` and used for :func:`isinstance` checks. An object cannot be :data:`types.UnionType` and used for :func:`isinstance` checks. An object cannot be
@ -5515,7 +5518,7 @@ types, where they are relevant. Some of these are not reported by the
definition order. Example:: definition order. Example::
>>> int.__subclasses__() >>> int.__subclasses__()
[<class 'bool'>] [<class 'bool'>, <enum 'IntEnum'>, <flag 'IntFlag'>, <class 're._constants._NamedIntConstant'>]
.. _int_max_str_digits: .. _int_max_str_digits:
@ -5551,7 +5554,7 @@ When an operation would exceed the limit, a :exc:`ValueError` is raised:
>>> _ = int('2' * 5432) >>> _ = int('2' * 5432)
Traceback (most recent call last): Traceback (most recent call last):
... ...
ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 5432 digits; use sys.set_int_max_str_digits() to increase the limit. ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 5432 digits; use sys.set_int_max_str_digits() to increase the limit
>>> i = int('2' * 4300) >>> i = int('2' * 4300)
>>> len(str(i)) >>> len(str(i))
4300 4300
@ -5559,7 +5562,7 @@ When an operation would exceed the limit, a :exc:`ValueError` is raised:
>>> len(str(i_squared)) >>> len(str(i_squared))
Traceback (most recent call last): Traceback (most recent call last):
... ...
ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 8599 digits; use sys.set_int_max_str_digits() to increase the limit. ValueError: Exceeds the limit (4300 digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit
>>> len(hex(i_squared)) >>> len(hex(i_squared))
7144 7144
>>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited. >>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited.