Skip to content
Merged
Show file tree
Hide file tree
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
14 changes: 12 additions & 2 deletions Doc/tutorial/datastructures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -512,8 +512,12 @@ dictionary; this is also the way dictionaries are written on output.
The main operations on a dictionary are storing a value with some key and
extracting the value given the key. It is also possible to delete a key:value
pair with ``del``. If you store using a key that is already in use, the old
value associated with that key is forgotten. It is an error to extract a value
using a non-existent key.
value associated with that key is forgotten.

Extracting a value for a non-existent key by subscripting (``d[key]``) raises a
:exc:`KeyError`. To avoid getting this error when trying to access a possibly
non-existent key, use the :meth:`~dict.get` method instead, which returns
``None`` (or a specified default value) if the key is not in the dictionary.

Performing ``list(d)`` on a dictionary returns a list of all the keys
used in the dictionary, in insertion order (if you want it sorted, just use
Expand All @@ -528,6 +532,12 @@ Here is a small example using a dictionary::
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> tel['irv']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'irv'
>>> print(tel.get('irv'))
None
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
Expand Down
10 changes: 8 additions & 2 deletions Lib/test/test_inspect/test_inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -4261,8 +4261,14 @@ def __init__(self, a):

self.assertEqual(self.signature(C, follow_wrapped=False),
varargs_signature)
self.assertEqual(self.signature(C.__new__, follow_wrapped=False),
varargs_signature)
if support.MISSING_C_DOCSTRINGS:
self.assertRaisesRegex(
ValueError, "no signature found",
self.signature, C.__new__, follow_wrapped=False,
)
else:
self.assertEqual(self.signature(C.__new__, follow_wrapped=False),
varargs_signature)

def test_signature_on_class_with_wrapped_new(self):
with self.subTest('FunctionType'):
Expand Down
8 changes: 6 additions & 2 deletions Lib/test/test_peg_generator/test_c_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,15 @@ def setUpClass(cls):

with contextlib.ExitStack() as stack:
python_exe = stack.enter_context(support.setup_venv_with_pip_setuptools("venv"))
sitepackages = subprocess.check_output(
platlib_path = subprocess.check_output(
[python_exe, "-c", "import sysconfig; print(sysconfig.get_path('platlib'))"],
text=True,
).strip()
stack.enter_context(import_helper.DirsOnSysPath(sitepackages))
purelib_path = subprocess.check_output(
[python_exe, "-c", "import sysconfig; print(sysconfig.get_path('purelib'))"],
text=True,
).strip()
stack.enter_context(import_helper.DirsOnSysPath(platlib_path, purelib_path))
cls.addClassCleanup(stack.pop_all().close)

@support.requires_venv_with_pip()
Expand Down
6 changes: 3 additions & 3 deletions Lib/test/test_pydoc/test_pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -1902,7 +1902,7 @@ def test_text_doc_routines_in_class(self, cls=pydocfodder.B):
else:
self.assertIn(' | get(...) method of builtins.dict instance', lines)
self.assertIn(' | dict_get = get(...) method of builtins.dict instance', lines)
self.assertIn(' | sin(...)', lines)
self.assertIn(' | sin(object, /)', lines)

lines = self.getsection(result, f' | Class methods {where}:', ' | ' + '-'*70)
self.assertIn(' | B_classmethod(x)', lines)
Expand Down Expand Up @@ -1992,7 +1992,7 @@ def test_text_doc_routines_in_module(self):
if not support.MISSING_C_DOCSTRINGS:
self.assertIn(' sin(x, /)', lines)
else:
self.assertIn(' sin(...)', lines)
self.assertIn(' sin(object, /)', lines)

def test_html_doc_routines_in_module(self):
doc = pydoc.HTMLDoc()
Expand Down Expand Up @@ -2037,7 +2037,7 @@ def test_html_doc_routines_in_module(self):
if not support.MISSING_C_DOCSTRINGS:
self.assertIn(' sin(x, /)', lines)
else:
self.assertIn(' sin(...)', lines)
self.assertIn(' sin(object, /)', lines)


@unittest.skipIf(
Expand Down
Loading