From bc9b441ed92b8b16f0bdcde0d84d883b4fcd55b0 Mon Sep 17 00:00:00 2001 From: Itamar Oren Date: Thu, 8 Feb 2024 15:33:57 -0800 Subject: [PATCH] Merge 3.12.2 Summary: This merges the upstream changes from 3.12.1 -> 3.12.2 into our fork. Merge-point in upstream is commit `6abddd9f6afdddc09031989e0deb25e301ecf315` (also pushed in cinder github as a `meta/3.12.2-base` tag). Merging required a few manual merge conflict resolutions, called out as diff comments, and summarized here: 1. `patchlevel.h` -- update the meta version patch 1. `.gitattributes` -- add the `Misc/sbom.spdx.json` file (newly added upstream) with the expanded gitattributes macros patch 1. `import.c` and `ceval.c` -- port changes made [upstream in `ceval.c`](https://github.com/python/cpython/commit/59a22d3e50be0900a74fb7a398c3622e2a43b11e#diff-c22186367cbe20233e843261998dc027ae5f1f8c0d2e778abfa454ae74cc59de) to `import.c`, where that function moved and modified as part of the lazy imports patch. Reviewed By: cxxxs Differential Revision: D53536490 fbshipit-source-id: cc1cc9ce5ffc785fcc59af90034fd69ca43ddb91 --- .gitattributes | 1 + .github/CODEOWNERS | 4 + .github/workflows/build.yml | 15 +- .github/workflows/require-pr-label.yml | 1 + .github/workflows/reusable-macos.yml | 15 +- .github/workflows/reusable-ubuntu.yml | 5 +- .github/workflows/reusable-windows.yml | 8 +- .pre-commit-config.yaml | 6 +- Doc/Makefile | 10 +- Doc/c-api/bytes.rst | 1 + Doc/c-api/conversion.rst | 36 + Doc/c-api/exceptions.rst | 18 +- Doc/c-api/file.rst | 9 +- Doc/c-api/function.rst | 23 +- Doc/c-api/import.rst | 16 +- Doc/c-api/memory.rst | 4 +- Doc/c-api/memoryview.rst | 13 + Doc/c-api/object.rst | 16 +- Doc/c-api/stable.rst | 2 +- Doc/c-api/structures.rst | 61 +- Doc/conf.py | 56 +- Doc/constraints.txt | 10 +- Doc/data/refcounts.dat | 22 + Doc/faq/design.rst | 2 +- Doc/glossary.rst | 10 +- Doc/howto/annotations.rst | 3 +- Doc/howto/descriptor.rst | 10 +- Doc/howto/isolating-extensions.rst | 4 +- Doc/howto/logging-cookbook.rst | 25 +- Doc/howto/logging.rst | 43 +- Doc/howto/urllib2.rst | 18 +- Doc/library/__future__.rst | 98 +- Doc/library/argparse.rst | 4 +- Doc/library/array.rst | 47 +- Doc/library/ast.rst | 33 +- Doc/library/asyncio-policy.rst | 8 +- Doc/library/asyncio-stream.rst | 4 +- Doc/library/asyncio-task.rst | 33 +- Doc/library/atexit.rst | 4 +- Doc/library/bdb.rst | 6 +- Doc/library/bisect.rst | 14 +- Doc/library/calendar.rst | 13 +- Doc/library/cmd.rst | 39 +- Doc/library/collections.abc.rst | 86 +- Doc/library/collections.rst | 6 +- Doc/library/concurrent.futures.rst | 56 +- Doc/library/configparser.rst | 48 +- Doc/library/contextlib.rst | 22 +- Doc/library/contextvars.rst | 2 +- Doc/library/csv.rst | 38 +- Doc/library/dataclasses.rst | 6 +- Doc/library/datetime.rst | 279 +- Doc/library/dbm.rst | 361 +- Doc/library/difflib.rst | 8 +- Doc/library/dis.rst | 11 +- Doc/library/doctest.rst | 10 +- Doc/library/email.message.rst | 6 +- Doc/library/email.mime.rst | 16 +- Doc/library/email.policy.rst | 1 - Doc/library/enum.rst | 2 +- Doc/library/exceptions.rst | 90 +- Doc/library/fnmatch.rst | 26 +- Doc/library/ftplib.rst | 640 ++-- Doc/library/functions.rst | 17 +- Doc/library/functools.rst | 8 +- Doc/library/gzip.rst | 3 +- Doc/library/heapq.rst | 2 +- Doc/library/hmac.rst | 17 +- Doc/library/http.client.rst | 17 +- Doc/library/http.cookies.rst | 42 +- Doc/library/http.server.rst | 30 +- Doc/library/idle.rst | 68 +- Doc/library/inspect.rst | 7 +- Doc/library/io.rst | 24 +- Doc/library/itertools.rst | 293 +- Doc/library/kde_example.png | Bin 332212 -> 315150 bytes Doc/library/locale.rst | 63 +- Doc/library/logging.config.rst | 10 +- Doc/library/logging.handlers.rst | 4 +- Doc/library/logging.rst | 28 +- Doc/library/mailbox.rst | 269 +- Doc/library/mmap.rst | 4 +- Doc/library/multiprocessing.rst | 52 +- Doc/library/multiprocessing.shared_memory.rst | 144 +- Doc/library/numbers.rst | 19 +- Doc/library/os.rst | 117 +- Doc/library/pathlib.rst | 30 +- Doc/library/pdb.rst | 26 +- Doc/library/pickle.rst | 57 +- Doc/library/pickletools.rst | 4 +- Doc/library/pty.rst | 3 + Doc/library/pyclbr.rst | 103 +- Doc/library/random.rst | 67 +- Doc/library/re.rst | 241 +- Doc/library/readline.rst | 4 +- Doc/library/resource.rst | 4 +- Doc/library/rlcompleter.rst | 40 +- Doc/library/select.rst | 8 +- Doc/library/shelve.rst | 12 +- Doc/library/shutil.rst | 33 +- Doc/library/signal.rst | 2 + Doc/library/socket.rst | 8 +- Doc/library/socketserver.rst | 7 +- Doc/library/sqlite3.rst | 24 +- Doc/library/ssl.rst | 8 +- Doc/library/statistics.rst | 23 +- Doc/library/stdtypes.rst | 36 +- Doc/library/string.rst | 14 +- Doc/library/subprocess.rst | 32 +- Doc/library/symtable.rst | 4 +- Doc/library/sys.rst | 24 +- Doc/library/tarfile.rst | 111 +- Doc/library/tempfile.rst | 52 +- Doc/library/test.rst | 5 +- Doc/library/tkinter.ttk.rst | 33 +- Doc/library/tomllib.rst | 8 +- Doc/library/traceback.rst | 146 +- Doc/library/tty.rst | 15 + Doc/library/types.rst | 11 +- Doc/library/typing.rst | 23 +- Doc/library/unittest.mock.rst | 31 +- Doc/library/unittest.rst | 28 +- Doc/library/urllib.parse.rst | 4 +- Doc/library/urllib.request.rst | 68 +- Doc/library/urllib.robotparser.rst | 2 +- Doc/library/venv.rst | 4 +- Doc/library/warnings.rst | 2 +- Doc/library/wsgiref.rst | 11 +- Doc/library/xml.dom.rst | 2 +- Doc/library/xml.etree.elementtree.rst | 30 +- Doc/library/xml.sax.utils.rst | 4 +- Doc/library/xmlrpc.client.rst | 9 +- Doc/library/xmlrpc.server.rst | 8 +- Doc/library/zipapp.rst | 4 +- Doc/library/zipfile.rst | 18 +- Doc/license.rst | 78 +- Doc/reference/compound_stmts.rst | 12 +- Doc/reference/datamodel.rst | 385 ++- Doc/reference/expressions.rst | 62 +- Doc/reference/grammar.rst | 2 + Doc/reference/import.rst | 7 +- Doc/reference/lexical_analysis.rst | 6 +- Doc/reference/simple_stmts.rst | 34 +- Doc/requirements.txt | 3 +- Doc/tools/.nitignore | 41 - Doc/tools/extensions/c_annotations.py | 21 +- Doc/tools/extensions/pyspecific.py | 5 + Doc/tools/templates/dummy.html | 10 + Doc/tutorial/appendix.rst | 2 +- Doc/tutorial/classes.rst | 17 +- Doc/tutorial/controlflow.rst | 6 +- Doc/tutorial/datastructures.rst | 7 +- Doc/tutorial/modules.rst | 3 +- Doc/using/cmdline.rst | 6 +- Doc/whatsnew/2.0.rst | 24 +- Doc/whatsnew/2.1.rst | 3 +- Doc/whatsnew/2.2.rst | 144 +- Doc/whatsnew/2.3.rst | 284 +- Doc/whatsnew/2.4.rst | 35 +- Doc/whatsnew/2.5.rst | 28 +- Doc/whatsnew/2.6.rst | 274 +- Doc/whatsnew/2.7.rst | 65 +- Doc/whatsnew/3.0.rst | 70 +- Doc/whatsnew/3.10.rst | 16 +- Doc/whatsnew/3.11.rst | 122 +- Doc/whatsnew/3.12.rst | 16 +- Doc/whatsnew/3.2.rst | 27 +- Doc/whatsnew/3.3.rst | 4 +- Doc/whatsnew/3.4.rst | 10 +- Doc/whatsnew/3.5.rst | 23 +- Doc/whatsnew/3.6.rst | 14 +- Doc/whatsnew/3.7.rst | 18 +- Doc/whatsnew/3.8.rst | 12 +- Doc/whatsnew/3.9.rst | 2 +- Include/internal/pycore_ast_state.h | 4 +- Include/internal/pycore_flowgraph.h | 2 +- Include/internal/pycore_obmalloc.h | 2 + Include/patchlevel.h | 4 +- Include/pymacconfig.h | 11 +- Lib/_osx_support.py | 5 + Lib/_pydatetime.py | 6 +- Lib/_pyio.py | 10 +- Lib/_strptime.py | 27 +- Lib/argparse.py | 2 +- Lib/asyncio/base_events.py | 24 +- Lib/asyncio/constants.py | 4 + Lib/asyncio/events.py | 4 + Lib/asyncio/selector_events.py | 4 + Lib/asyncio/sslproto.py | 18 +- Lib/asyncio/streams.py | 3 + Lib/calendar.py | 2 +- Lib/concurrent/futures/process.py | 5 - Lib/ctypes/_endian.py | 4 +- Lib/ctypes/util.py | 7 +- Lib/doctest.py | 2 + Lib/email/_header_value_parser.py | 7 + Lib/email/message.py | 29 +- Lib/email/policy.py | 9 +- Lib/email/utils.py | 4 +- Lib/ensurepip/__init__.py | 2 +- ...none-any.whl => pip-24.0-py3-none-any.whl} | Bin 2086091 -> 2110226 bytes Lib/fractions.py | 20 +- Lib/ftplib.py | 27 +- Lib/hmac.py | 2 +- Lib/http/client.py | 4 + Lib/idlelib/{NEWS.txt => News3.txt} | 28 +- Lib/idlelib/debugger.py | 28 +- Lib/idlelib/debugger_r.py | 27 +- Lib/idlelib/debugobj.py | 20 +- Lib/idlelib/editor.py | 5 +- Lib/idlelib/help.html | 179 +- Lib/idlelib/help.py | 15 +- Lib/idlelib/help_about.py | 6 +- Lib/idlelib/idle_test/example_stub.pyi | 2 + Lib/idlelib/idle_test/htest.py | 14 +- Lib/idlelib/idle_test/test_calltip.py | 7 + Lib/idlelib/idle_test/test_configdialog.py | 29 +- Lib/idlelib/idle_test/test_editor.py | 2 +- Lib/idlelib/idle_test/test_help.py | 16 +- Lib/idlelib/idle_test/test_help_about.py | 2 +- Lib/idlelib/idle_test/test_sidebar.py | 22 +- Lib/idlelib/iomenu.py | 21 +- Lib/idlelib/macosx.py | 2 +- Lib/idlelib/replace.py | 26 +- Lib/idlelib/rpc.py | 4 +- Lib/idlelib/searchengine.py | 3 +- Lib/idlelib/stackviewer.py | 4 +- Lib/idlelib/tree.py | 10 +- Lib/idlelib/util.py | 6 +- Lib/importlib/_bootstrap_external.py | 1 + Lib/logging/config.py | 36 +- Lib/mailbox.py | 5 +- Lib/multiprocessing/managers.py | 2 +- Lib/multiprocessing/popen_spawn_win32.py | 54 +- Lib/multiprocessing/queues.py | 5 + Lib/multiprocessing/resource_sharer.py | 2 +- Lib/multiprocessing/util.py | 13 +- Lib/pdb.py | 37 +- Lib/pickle.py | 24 +- Lib/pickletools.py | 31 +- Lib/pprint.py | 3 + Lib/pydoc_data/topics.py | 632 ++-- Lib/shutil.py | 28 +- Lib/signal.py | 6 +- Lib/site.py | 12 +- Lib/socket.py | 2 +- Lib/ssl.py | 107 +- Lib/subprocess.py | 11 +- Lib/tarfile.py | 12 +- Lib/test/.ruff.toml | 8 +- Lib/test/_test_multiprocessing.py | 34 +- Lib/test/archiver_tests.py | 155 + Lib/test/clinic.test.c | 4 +- Lib/test/libregrtest/findtests.py | 1 + Lib/test/pickletester.py | 8 + Lib/test/pydocfodder.py | 16 +- Lib/test/pythoninfo.py | 62 +- Lib/test/shadowed_super.py | 7 - Lib/test/support/__init__.py | 4 +- Lib/test/support/os_helper.py | 10 +- Lib/test/support/pty_helper.py | 20 + Lib/test/{ => support}/smtpd.py | 0 Lib/test/test_abstract_numbers.py | 158 +- Lib/test/test_argparse.py | 16 + Lib/test/test_asyncio/test_base_events.py | 2 +- Lib/test/test_asyncio/test_runners.py | 18 + Lib/test/test_asyncio/test_ssl.py | 4 + Lib/test/test_asyncio/test_sslproto.py | 15 +- Lib/test/test_asyncio/test_streams.py | 20 +- Lib/test/test_asyncio/test_subprocess.py | 9 +- Lib/test/test_base64.py | 3 + Lib/test/test_builtin.py | 30 +- Lib/test/test_c_locale_coercion.py | 54 +- Lib/test/test_capi/test_misc.py | 2 + Lib/test/test_capi/test_structmembers.py | 194 +- Lib/test/test_clinic.py | 21 + Lib/test/test_codeop.py | 3 + Lib/test/test_coroutines.py | 11 +- Lib/test/test_csv.py | 19 +- Lib/test/test_ctypes/test_as_parameter.py | 11 + Lib/test/test_ctypes/test_byteswap.py | 19 + Lib/test/test_ctypes/test_find.py | 3 + Lib/test/test_ctypes/test_structures.py | 296 +- Lib/test/test_curses.py | 4 +- Lib/test/test_doctest/__init__.py | 5 + .../{ => test_doctest}/doctest_aliases.py | 0 Lib/test/{ => test_doctest}/doctest_lineno.py | 16 + Lib/test/{ => test_doctest}/sample_doctest.py | 4 +- .../sample_doctest_no_docstrings.py | 0 .../sample_doctest_no_doctests.py | 0 Lib/test/{ => test_doctest}/test_doctest.py | 212 +- Lib/test/{ => test_doctest}/test_doctest.txt | 0 Lib/test/{ => test_doctest}/test_doctest2.py | 0 Lib/test/{ => test_doctest}/test_doctest2.txt | 4 +- Lib/test/{ => test_doctest}/test_doctest3.txt | 0 Lib/test/{ => test_doctest}/test_doctest4.txt | 0 .../test_email/test__header_value_parser.py | 39 + Lib/test/test_email/test_message.py | 29 + Lib/test/test_email/test_policy.py | 17 + Lib/test/test_email/test_utils.py | 4 +- Lib/test/test_enum.py | 31 + Lib/test/test_fractions.py | 24 + Lib/test/test_functools.py | 2 + Lib/test/test_httplib.py | 16 +- Lib/test/test_import/__init__.py | 9 +- .../{ => test_import/data}/double_const.py | 0 .../test_importlib/extension/test_loader.py | 4 +- Lib/test/test_inspect/test_inspect.py | 5 +- Lib/test/test_interpreters.py | 4 + Lib/test/test_io.py | 8 + Lib/test/test_logging.py | 25 +- Lib/test/test_lzma.py | 8 + Lib/test/test_mailbox.py | 12 +- Lib/test/test_memoryio.py | 21 + Lib/test/test_mmap.py | 6 +- Lib/test/test_module/__init__.py | 2 +- Lib/test/test_os.py | 62 +- Lib/test/test_pdb.py | 427 +-- Lib/test/test_plistlib.py | 5 +- Lib/test/test_posix.py | 120 +- Lib/test/test_pty.py | 22 +- Lib/test/test_pydoc.py | 11 +- Lib/test/test_rlcompleter.py | 5 +- Lib/test/test_shutil.py | 87 +- Lib/test/test_signal.py | 27 + Lib/test/test_site.py | 40 + Lib/test/test_smtplib.py | 3 +- Lib/test/test_socket.py | 13 + Lib/test/test_ssl.py | 33 +- Lib/test/test_stat.py | 7 + Lib/test/test_strptime.py | 72 +- Lib/test/test_subprocess.py | 69 +- Lib/test/test_super.py | 16 +- Lib/test/test_syntax.py | 30 +- Lib/test/test_tarfile.py | 35 +- Lib/test/test_threading.py | 98 +- Lib/test/test_tkinter/test_misc.py | 107 + Lib/test/test_tokenize.py | 10 + Lib/test/test_tools/test_freeze.py | 2 + Lib/test/test_traceback.py | 15 + Lib/test/test_tty.py | 12 +- Lib/test/test_type_cache.py | 146 +- Lib/test/test_types.py | 4 +- Lib/test/test_typing.py | 38 +- Lib/test/test_unittest/test_discovery.py | 2 +- Lib/test/test_unittest/test_program.py | 12 + Lib/test/test_unittest/test_skipping.py | 12 +- Lib/test/test_winconsoleio.py | 5 +- Lib/test/test_xml_etree.py | 2 + Lib/test/test_zipfile/_path/test_path.py | 12 + Lib/test/test_zipfile/test_core.py | 90 +- Lib/test/test_zipimport_support.py | 13 +- Lib/test/test_zoneinfo/test_zoneinfo.py | 20 +- .../setuptools-67.6.1-py3-none-any.whl | Bin .../wheel-0.40.0-py3-none-any.whl | Bin Lib/threading.py | 6 +- Lib/tkinter/__init__.py | 30 +- Lib/trace.py | 3 +- Lib/traceback.py | 6 +- Lib/tty.py | 3 - Lib/typing.py | 43 +- Lib/unittest/case.py | 4 +- Lib/unittest/main.py | 2 +- Lib/unittest/mock.py | 16 +- Lib/unittest/result.py | 10 +- Lib/unittest/runner.py | 2 +- Lib/venv/scripts/common/activate | 2 +- Lib/warnings.py | 7 +- Lib/webbrowser.py | 1 + Lib/xml/etree/ElementTree.py | 25 +- Lib/zipfile/__init__.py | 14 +- Lib/zoneinfo/_tzpath.py | 24 +- Mac/BuildScript/build-installer.py | 12 +- Mac/IDLE/IDLE.app/Contents/Info.plist | 2 + Mac/Resources/app/Info.plist.in | 2 + Mac/Resources/framework/Info.plist.in | 2 + Makefile.pre.in | 14 +- Misc/ACKS | 2 + Misc/NEWS.d/3.10.0a1.rst | 36 +- Misc/NEWS.d/3.10.0a2.rst | 16 +- Misc/NEWS.d/3.10.0a3.rst | 20 +- Misc/NEWS.d/3.10.0a4.rst | 2 +- Misc/NEWS.d/3.10.0a7.rst | 10 +- Misc/NEWS.d/3.10.0b1.rst | 4 +- Misc/NEWS.d/3.11.0a1.rst | 18 +- Misc/NEWS.d/3.11.0a2.rst | 8 +- Misc/NEWS.d/3.11.0a3.rst | 2 +- Misc/NEWS.d/3.11.0a4.rst | 8 +- Misc/NEWS.d/3.11.0a5.rst | 4 +- Misc/NEWS.d/3.11.0a6.rst | 8 +- Misc/NEWS.d/3.11.0a7.rst | 8 +- Misc/NEWS.d/3.11.0b1.rst | 18 +- Misc/NEWS.d/3.12.0a1.rst | 6 +- Misc/NEWS.d/3.12.0a2.rst | 6 +- Misc/NEWS.d/3.12.0a4.rst | 8 +- Misc/NEWS.d/3.12.0a6.rst | 2 +- Misc/NEWS.d/3.12.0a7.rst | 4 +- Misc/NEWS.d/3.12.0b1.rst | 2 +- Misc/NEWS.d/3.12.0b4.rst | 2 +- Misc/NEWS.d/3.12.0rc1.rst | 10 +- Misc/NEWS.d/3.12.2.rst | 1096 +++++++ Misc/NEWS.d/3.5.0a1.rst | 28 +- Misc/NEWS.d/3.5.0b4.rst | 2 +- Misc/NEWS.d/3.5.2rc1.rst | 4 +- Misc/NEWS.d/3.6.0a1.rst | 6 +- Misc/NEWS.d/3.6.0a2.rst | 2 +- Misc/NEWS.d/3.6.0b1.rst | 2 +- Misc/NEWS.d/3.6.3.rst | 2 +- Misc/NEWS.d/3.6.3rc1.rst | 18 +- Misc/NEWS.d/3.6.4rc1.rst | 38 +- Misc/NEWS.d/3.6.5rc1.rst | 4 +- Misc/NEWS.d/3.6.6rc1.rst | 6 +- Misc/NEWS.d/3.7.0a1.rst | 44 +- Misc/NEWS.d/3.7.0a2.rst | 46 +- Misc/NEWS.d/3.7.0a3.rst | 16 +- Misc/NEWS.d/3.7.0a4.rst | 6 +- Misc/NEWS.d/3.7.0b2.rst | 4 +- Misc/NEWS.d/3.7.0b4.rst | 4 +- Misc/NEWS.d/3.7.0b5.rst | 16 +- Misc/NEWS.d/3.8.0a1.rst | 106 +- Misc/NEWS.d/3.8.0a2.rst | 2 +- Misc/NEWS.d/3.8.0a3.rst | 10 +- Misc/NEWS.d/3.8.0a4.rst | 18 +- Misc/NEWS.d/3.8.0b1.rst | 38 +- Misc/NEWS.d/3.9.0a1.rst | 74 +- Misc/NEWS.d/3.9.0a2.rst | 16 +- Misc/NEWS.d/3.9.0a3.rst | 24 +- Misc/NEWS.d/3.9.0a4.rst | 20 +- Misc/NEWS.d/3.9.0a5.rst | 4 +- Misc/NEWS.d/3.9.0a6.rst | 20 +- Misc/NEWS.d/3.9.0b1.rst | 6 +- Misc/sbom.spdx.json | 2918 +++++++++++++++++ Modules/_csv.c | 3 +- Modules/_ctypes/_ctypes.c | 10 +- Modules/_ctypes/_ctypes_test.c | 138 +- Modules/_ctypes/stgdict.c | 49 +- Modules/_elementtree.c | 16 +- Modules/_io/bytesio.c | 14 +- Modules/_io/clinic/bufferedio.c.h | 4 +- Modules/_io/clinic/bytesio.c.h | 4 +- Modules/_io/clinic/fileio.c.h | 4 +- Modules/_io/clinic/iobase.c.h | 4 +- Modules/_io/clinic/textio.c.h | 4 +- Modules/_io/clinic/winconsoleio.c.h | 4 +- Modules/_io/fileio.c | 2 +- Modules/_io/textio.c | 12 +- Modules/_lzmamodule.c | 4 +- Modules/_posixsubprocess.c | 21 +- Modules/_sre/clinic/sre.c.h | 6 +- Modules/_testcapi/datetime.c | 46 +- Modules/_testcapimodule.c | 47 +- Modules/_testclinic.c | 47 +- Modules/_winapi.c | 204 +- Modules/audioop.c | 46 +- Modules/cjkcodecs/clinic/multibytecodec.c.h | 4 +- Modules/clinic/_asynciomodule.c.h | 6 +- Modules/clinic/_curses_panel.c.h | 12 +- Modules/clinic/_dbmmodule.c.h | 4 +- Modules/clinic/_elementtree.c.h | 6 +- Modules/clinic/_gdbmmodule.c.h | 10 +- Modules/clinic/_lsprof.c.h | 4 +- Modules/clinic/_pickle.c.h | 4 +- Modules/clinic/_queuemodule.c.h | 4 +- Modules/clinic/_testclinic.c.h | 24 +- Modules/clinic/_testmultiphase.c.h | 8 +- Modules/clinic/_winapi.c.h | 13 +- Modules/clinic/arraymodule.c.h | 4 +- Modules/clinic/md5module.c.h | 4 +- Modules/clinic/posixmodule.c.h | 6 +- Modules/clinic/sha1module.c.h | 4 +- Modules/clinic/sha2module.c.h | 6 +- Modules/clinic/zlibmodule.c.h | 10 +- Modules/mmapmodule.c | 34 +- Modules/posixmodule.c | 25 +- Modules/socketmodule.c | 16 +- Modules/termios.c | 2 + Objects/clinic/unicodeobject.c.h | 8 +- Objects/lnotab_notes.txt | 2 +- Objects/object_layout.md | 6 +- Objects/setobject.c | 12 +- Objects/unicodeobject.c | 6 +- PC/config.c | 2 - PC/launcher2.c | 69 + PCbuild/get_externals.bat | 6 +- PCbuild/python.props | 6 +- Parser/asdl_c.py | 58 +- Parser/pegen.c | 16 +- Parser/pegen.h | 1 + Parser/pegen_errors.c | 4 + Parser/tokenizer.c | 10 +- Python/Python-ast.c | 679 ++-- Python/Python-tokenize.c | 2 +- Python/ceval.c | 7 +- Python/flowgraph.c | 1 + Python/import.c | 9 +- Python/perf_trampoline.c | 2 +- Python/pythonrun.c | 33 +- Python/specialize.c | 22 + Python/structmember.c | 85 +- Python/symtable.c | 6 + Python/sysmodule.c | 2 +- README.rst | 6 +- Tools/build/generate_sbom.py | 476 +++ Tools/c-analyzer/cpython/globals-to-fix.tsv | 1 + Tools/clinic/.ruff.toml | 2 + Tools/clinic/clinic.py | 2 +- Tools/freeze/README | 5 + Tools/freeze/freeze.py | 5 + Tools/ssl/multissltests.py | 5 +- configure | 10 +- configure.ac | 10 +- 511 files changed, 14105 insertions(+), 5654 deletions(-) rename Lib/ensurepip/_bundled/{pip-23.2.1-py3-none-any.whl => pip-24.0-py3-none-any.whl} (72%) rename Lib/idlelib/{NEWS.txt => News3.txt} (98%) create mode 100644 Lib/test/archiver_tests.py delete mode 100644 Lib/test/shadowed_super.py rename Lib/test/{ => support}/smtpd.py (100%) create mode 100644 Lib/test/test_doctest/__init__.py rename Lib/test/{ => test_doctest}/doctest_aliases.py (100%) rename Lib/test/{ => test_doctest}/doctest_lineno.py (71%) rename Lib/test/{ => test_doctest}/sample_doctest.py (91%) rename Lib/test/{ => test_doctest}/sample_doctest_no_docstrings.py (100%) rename Lib/test/{ => test_doctest}/sample_doctest_no_doctests.py (100%) rename Lib/test/{ => test_doctest}/test_doctest.py (94%) rename Lib/test/{ => test_doctest}/test_doctest.txt (100%) rename Lib/test/{ => test_doctest}/test_doctest2.py (100%) rename Lib/test/{ => test_doctest}/test_doctest2.txt (77%) rename Lib/test/{ => test_doctest}/test_doctest3.txt (100%) rename Lib/test/{ => test_doctest}/test_doctest4.txt (100%) rename Lib/test/{ => test_import/data}/double_const.py (100%) rename Lib/test/{ => wheeldata}/setuptools-67.6.1-py3-none-any.whl (100%) rename Lib/test/{ => wheeldata}/wheel-0.40.0-py3-none-any.whl (100%) create mode 100644 Misc/NEWS.d/3.12.2.rst create mode 100644 Misc/sbom.spdx.json create mode 100644 Tools/build/generate_sbom.py diff --git a/.gitattributes b/.gitattributes index 0fad740d301..a369e944bbf 100644 --- a/.gitattributes +++ b/.gitattributes @@ -79,6 +79,7 @@ Lib/keyword.py linguist-generated=true diff Lib/test/levenshtein_examples.json linguist-generated=true diff=generated Lib/test/test_stable_abi_ctypes.py linguist-generated=true diff=generated Lib/token.py linguist-generated=true diff=generated +Misc/sbom.spdx.json linguist-generated=true diff=generated Objects/typeslots.inc linguist-generated=true diff=generated PC/python3dll.c linguist-generated=true diff=generated Parser/parser.c linguist-generated=true diff=generated diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f758482d2ca..41bb3e73638 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -166,3 +166,7 @@ Lib/ast.py @isidentical # zipfile.Path **/*zipfile/_path/* @jaraco + +# SBOM +/Misc/sbom.spdx.json @sethmlarson +/Tools/build/generate_sbom.py @sethmlarson diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 545dd8c15dc..8f82c80fc3f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -169,6 +169,8 @@ jobs: run: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - name: Configure ccache action uses: hendrikmuhs/ccache-action@v1.2 + with: + save: false - name: Check Autoconf and aclocal versions run: | grep "Generated by GNU Autoconf 2.71" configure @@ -247,7 +249,7 @@ jobs: strategy: fail-fast: false matrix: - openssl_ver: [1.1.1w, 3.0.11, 3.1.3] + openssl_ver: [1.1.1w, 3.0.13, 3.1.5, 3.2.1] env: OPENSSL_VER: ${{ matrix.openssl_ver }} MULTISSL_DIR: ${{ github.workspace }}/multissl @@ -283,6 +285,8 @@ jobs: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - name: Configure ccache action uses: hendrikmuhs/ccache-action@v1.2 + with: + save: false - name: Configure CPython run: ./configure --config-cache --with-pydebug --with-openssl=$OPENSSL_DIR - name: Build CPython @@ -299,7 +303,7 @@ jobs: needs: check_source if: needs.check_source.outputs.run_tests == 'true' && needs.check_source.outputs.run_hypothesis == 'true' env: - OPENSSL_VER: 3.0.11 + OPENSSL_VER: 3.0.13 PYTHONSTRICTEXTENSIONBUILD: 1 steps: - uses: actions/checkout@v4 @@ -326,6 +330,8 @@ jobs: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - name: Configure ccache action uses: hendrikmuhs/ccache-action@v1.2 + with: + save: false - name: Setup directory envs for out-of-tree builds run: | echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV @@ -408,7 +414,7 @@ jobs: needs: check_source if: needs.check_source.outputs.run_tests == 'true' env: - OPENSSL_VER: 3.0.11 + OPENSSL_VER: 3.0.13 PYTHONSTRICTEXTENSIONBUILD: 1 ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0 steps: @@ -445,6 +451,9 @@ jobs: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - name: Configure ccache action uses: hendrikmuhs/ccache-action@v1.2 + with: + save: ${{ github.event_name == 'push' }} + max-size: "200M" - name: Configure CPython run: ./configure --config-cache --with-address-sanitizer --without-pymalloc - name: Build CPython diff --git a/.github/workflows/require-pr-label.yml b/.github/workflows/require-pr-label.yml index 6efd31162eb..5b3fd76dc8b 100644 --- a/.github/workflows/require-pr-label.yml +++ b/.github/workflows/require-pr-label.yml @@ -11,6 +11,7 @@ permissions: jobs: label: name: DO-NOT-MERGE / unresolved review + if: github.repository_owner == 'python' runs-on: ubuntu-latest timeout-minutes: 10 diff --git a/.github/workflows/reusable-macos.yml b/.github/workflows/reusable-macos.yml index 3ed8303ac16..ac8fdb8677e 100644 --- a/.github/workflows/reusable-macos.yml +++ b/.github/workflows/reusable-macos.yml @@ -4,7 +4,7 @@ on: config_hash: required: true type: string - free-threaded: + free-threading: required: false type: boolean default: false @@ -12,20 +12,27 @@ on: jobs: build_macos: name: 'build and test' - runs-on: macos-latest timeout-minutes: 60 env: HOMEBREW_NO_ANALYTICS: 1 HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 PYTHONSTRICTEXTENSIONBUILD: 1 + strategy: + fail-fast: false + matrix: + os: [ + "macos-14", # M1 + "macos-13", # Intel + ] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Restore config.cache uses: actions/cache@v3 with: path: config.cache - key: ${{ github.job }}-${{ runner.os }}-${{ inputs.config_hash }} + key: ${{ github.job }}-${{ matrix.os }}-${{ inputs.config_hash }} - name: Install Homebrew dependencies run: brew install pkg-config openssl@3.0 xz gdbm tcl-tk - name: Configure CPython @@ -35,7 +42,7 @@ jobs: ./configure \ --config-cache \ --with-pydebug \ - ${{ inputs.free-threaded && '--disable-gil' || '' }} \ + ${{ inputs.free-threading && '--disable-gil' || '' }} \ --prefix=/opt/python-dev \ --with-openssl="$(brew --prefix openssl@3.0)" - name: Build CPython diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml index 56268c8bfd3..de413b83b9e 100644 --- a/.github/workflows/reusable-ubuntu.yml +++ b/.github/workflows/reusable-ubuntu.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 60 runs-on: ubuntu-20.04 env: - OPENSSL_VER: 3.0.11 + OPENSSL_VER: 3.0.13 PYTHONSTRICTEXTENSIONBUILD: 1 steps: - uses: actions/checkout@v4 @@ -41,6 +41,9 @@ jobs: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - name: Configure ccache action uses: hendrikmuhs/ccache-action@v1.2 + with: + save: ${{ github.event_name == 'push' }} + max-size: "200M" - name: Setup directory envs for out-of-tree builds run: | echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 98fb7cfa015..41f2c2b0c2c 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -1,7 +1,7 @@ on: workflow_call: inputs: - free-threaded: + free-threading: required: false type: boolean default: false @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Build CPython - run: .\PCbuild\build.bat -e -d -p Win32 ${{ inputs.free-threaded && '--disable-gil' || '' }} + run: .\PCbuild\build.bat -e -d -p Win32 ${{ inputs.free-threading && '--disable-gil' || '' }} - name: Display build info run: .\python.bat -m test.pythoninfo - name: Tests @@ -33,7 +33,7 @@ jobs: - name: Register MSVC problem matcher run: echo "::add-matcher::.github/problem-matchers/msvc.json" - name: Build CPython - run: .\PCbuild\build.bat -e -d -p x64 ${{ inputs.free-threaded && '--disable-gil' || '' }} + run: .\PCbuild\build.bat -e -d -p x64 ${{ inputs.free-threading && '--disable-gil' || '' }} - name: Display build info run: .\python.bat -m test.pythoninfo - name: Tests @@ -50,4 +50,4 @@ jobs: - name: Register MSVC problem matcher run: echo "::add-matcher::.github/problem-matchers/msvc.json" - name: Build CPython - run: .\PCbuild\build.bat -e -d -p arm64 ${{ inputs.free-threaded && '--disable-gil' || '' }} + run: .\PCbuild\build.bat -e -d -p arm64 ${{ inputs.free-threading && '--disable-gil' || '' }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 35d9c64a8c5..69d85238985 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.2 + rev: v0.2.0 hooks: - id: ruff name: Run Ruff on Lib/test/ @@ -24,11 +24,11 @@ repos: types_or: [c, inc, python, rst] - repo: https://github.com/sphinx-contrib/sphinx-lint - rev: v0.8.1 + rev: v0.9.1 hooks: - id: sphinx-lint args: [--enable=default-role] - files: ^Doc/|^Misc/NEWS.d/next/ + files: ^Doc/|^Misc/NEWS.d/ - repo: meta hooks: diff --git a/Doc/Makefile b/Doc/Makefile index 7af56e965e1..38fd60f2ae0 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -19,8 +19,12 @@ SPHINXERRORHANDLING = -W PAPEROPT_a4 = -D latex_elements.papersize=a4paper PAPEROPT_letter = -D latex_elements.papersize=letterpaper -ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees $(PAPEROPT_$(PAPER)) -j $(JOBS) \ - $(SPHINXOPTS) $(SPHINXERRORHANDLING) . build/$(BUILDER) $(SOURCES) +ALLSPHINXOPTS = -b $(BUILDER) \ + -d build/doctrees \ + -j $(JOBS) \ + $(PAPEROPT_$(PAPER)) \ + $(SPHINXOPTS) $(SPHINXERRORHANDLING) \ + . build/$(BUILDER) $(SOURCES) .PHONY: help help: @@ -142,7 +146,7 @@ htmlview: html .PHONY: htmllive htmllive: SPHINXBUILD = $(VENVDIR)/bin/sphinx-autobuild -htmllive: SPHINXOPTS = --re-ignore="/venv/" +htmllive: SPHINXOPTS = --re-ignore="/venv/" --open-browser --delay 0 htmllive: html .PHONY: clean diff --git a/Doc/c-api/bytes.rst b/Doc/c-api/bytes.rst index 61a68f52773..4790d3b2da4 100644 --- a/Doc/c-api/bytes.rst +++ b/Doc/c-api/bytes.rst @@ -155,6 +155,7 @@ called with a non-bytes parameter. Return the null-terminated contents of the object *obj* through the output variables *buffer* and *length*. + Returns ``0`` on success. If *length* is ``NULL``, the bytes object may not contain embedded null bytes; diff --git a/Doc/c-api/conversion.rst b/Doc/c-api/conversion.rst index c5350123dfd..4aaf3905e81 100644 --- a/Doc/c-api/conversion.rst +++ b/Doc/c-api/conversion.rst @@ -48,6 +48,42 @@ The return value (*rv*) for these functions should be interpreted as follows: The following functions provide locale-independent string to number conversions. +.. c:function:: unsigned long PyOS_strtoul(const char *str, char **ptr, int base) + + Convert the initial part of the string in ``str`` to an :c:expr:`unsigned + long` value according to the given ``base``, which must be between ``2`` and + ``36`` inclusive, or be the special value ``0``. + + Leading white space and case of characters are ignored. If ``base`` is zero + it looks for a leading ``0b``, ``0o`` or ``0x`` to tell which base. If + these are absent it defaults to ``10``. Base must be 0 or between 2 and 36 + (inclusive). If ``ptr`` is non-``NULL`` it will contain a pointer to the + end of the scan. + + If the converted value falls out of range of corresponding return type, + range error occurs (:c:data:`errno` is set to :c:macro:`!ERANGE`) and + :c:macro:`!ULONG_MAX` is returned. If no conversion can be performed, ``0`` + is returned. + + See also the Unix man page :manpage:`strtoul(3)`. + + .. versionadded:: 3.2 + + +.. c:function:: long PyOS_strtol(const char *str, char **ptr, int base) + + Convert the initial part of the string in ``str`` to an :c:expr:`long` value + according to the given ``base``, which must be between ``2`` and ``36`` + inclusive, or be the special value ``0``. + + Same as :c:func:`PyOS_strtoul`, but return a :c:expr:`long` value instead + and :c:macro:`LONG_MAX` on overflows. + + See also the Unix man page :manpage:`strtol(3)`. + + .. versionadded:: 3.2 + + .. c:function:: double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception) Convert a string ``s`` to a :c:expr:`double`, raising a Python diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index f27e2bbfef0..39408641c8a 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -427,7 +427,7 @@ Querying the error indicator .. c:function:: PyObject *PyErr_GetRaisedException(void) Return the exception currently being raised, clearing the error indicator at - the same time. + the same time. Return ``NULL`` if the error indicator is not set. This function is used by code that needs to catch exceptions, or code that needs to save and restore the error indicator temporarily. @@ -528,7 +528,8 @@ Querying the error indicator .. note:: - This function *does not* implicitly set the ``__traceback__`` + This function *does not* implicitly set the + :attr:`~BaseException.__traceback__` attribute on the exception value. If setting the traceback appropriately is desired, the following additional snippet is needed:: @@ -740,7 +741,8 @@ Exception Objects .. c:function:: PyObject* PyException_GetTraceback(PyObject *ex) Return the traceback associated with the exception as a new reference, as - accessible from Python through :attr:`__traceback__`. If there is no + accessible from Python through the :attr:`~BaseException.__traceback__` + attribute. If there is no traceback associated, this returns ``NULL``. @@ -754,8 +756,8 @@ Exception Objects Return the context (another exception instance during whose handling *ex* was raised) associated with the exception as a new reference, as accessible from - Python through :attr:`__context__`. If there is no context associated, this - returns ``NULL``. + Python through the :attr:`~BaseException.__context__` attribute. + If there is no context associated, this returns ``NULL``. .. c:function:: void PyException_SetContext(PyObject *ex, PyObject *ctx) @@ -769,7 +771,8 @@ Exception Objects Return the cause (either an exception instance, or ``None``, set by ``raise ... from ...``) associated with the exception as a new - reference, as accessible from Python through :attr:`__cause__`. + reference, as accessible from Python through the + :attr:`~BaseException.__cause__` attribute. .. c:function:: void PyException_SetCause(PyObject *ex, PyObject *cause) @@ -778,7 +781,8 @@ Exception Objects it. There is no type check to make sure that *cause* is either an exception instance or ``None``. This steals a reference to *cause*. - :attr:`__suppress_context__` is implicitly set to ``True`` by this function. + The :attr:`~BaseException.__suppress_context__` attribute is implicitly set + to ``True`` by this function. .. c:function:: PyObject* PyException_GetArgs(PyObject *ex) diff --git a/Doc/c-api/file.rst b/Doc/c-api/file.rst index b36c800e004..0a03841e467 100644 --- a/Doc/c-api/file.rst +++ b/Doc/c-api/file.rst @@ -65,8 +65,13 @@ the :mod:`io` APIs instead. Overrides the normal behavior of :func:`io.open_code` to pass its parameter through the provided handler. - The handler is a function of type :c:expr:`PyObject *(\*)(PyObject *path, - void *userData)`, where *path* is guaranteed to be :c:type:`PyUnicodeObject`. + The handler is a function of type: + + .. c:type:: Py_OpenCodeHookFunction + + Equivalent of :c:expr:`PyObject *(\*)(PyObject *path, + void *userData)`, where *path* is guaranteed to be + :c:type:`PyUnicodeObject`. The *userData* pointer is passed into the hook function. Since hook functions may be called from different runtimes, this pointer should not diff --git a/Doc/c-api/function.rst b/Doc/c-api/function.rst index 0a18e63c7e7..e7fb5090c09 100644 --- a/Doc/c-api/function.rst +++ b/Doc/c-api/function.rst @@ -34,18 +34,20 @@ There are a few functions specific to Python functions. Return a new function object associated with the code object *code*. *globals* must be a dictionary with the global variables accessible to the function. - The function's docstring and name are retrieved from the code object. *__module__* + The function's docstring and name are retrieved from the code object. + :attr:`~function.__module__` is retrieved from *globals*. The argument defaults, annotations and closure are - set to ``NULL``. *__qualname__* is set to the same value as the code object's - :attr:`~codeobject.co_qualname` field. + set to ``NULL``. :attr:`~function.__qualname__` is set to the same value as + the code object's :attr:`~codeobject.co_qualname` field. .. c:function:: PyObject* PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname) As :c:func:`PyFunction_New`, but also allows setting the function object's - ``__qualname__`` attribute. *qualname* should be a unicode object or ``NULL``; - if ``NULL``, the ``__qualname__`` attribute is set to the same value as the - code object's :attr:`~codeobject.co_qualname` field. + :attr:`~function.__qualname__` attribute. + *qualname* should be a unicode object or ``NULL``; + if ``NULL``, the :attr:`!__qualname__` attribute is set to the same value as + the code object's :attr:`~codeobject.co_qualname` field. .. versionadded:: 3.3 @@ -62,11 +64,12 @@ There are a few functions specific to Python functions. .. c:function:: PyObject* PyFunction_GetModule(PyObject *op) - Return a :term:`borrowed reference` to the *__module__* attribute of the - function object *op*. It can be *NULL*. + Return a :term:`borrowed reference` to the :attr:`~function.__module__` + attribute of the :ref:`function object ` *op*. + It can be *NULL*. - This is normally a string containing the module name, but can be set to any - other object by Python code. + This is normally a :class:`string ` containing the module name, + but can be set to any other object by Python code. .. c:function:: PyObject* PyFunction_GetDefaults(PyObject *op) diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index 3bc256bd08f..5b24ba1dbb7 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -13,20 +13,8 @@ Importing Modules single: __all__ (package variable) single: modules (in module sys) - This is a simplified interface to :c:func:`PyImport_ImportModuleEx` below, - leaving the *globals* and *locals* arguments set to ``NULL`` and *level* set - to 0. When the *name* - argument contains a dot (when it specifies a submodule of a package), the - *fromlist* argument is set to the list ``['*']`` so that the return value is the - named module rather than the top-level package containing it as would otherwise - be the case. (Unfortunately, this has an additional side effect when *name* in - fact specifies a subpackage instead of a submodule: the submodules specified in - the package's ``__all__`` variable are loaded.) Return a new reference to the - imported module, or ``NULL`` with an exception set on failure. A failing - import of a module doesn't leave the module in :data:`sys.modules`. - - This function always uses absolute imports. - + This is a wrapper around :c:func:`PyImport_Import()` which takes a + :c:expr:`const char *` as an argument instead of a :c:expr:`PyObject *`. .. c:function:: PyObject* PyImport_ImportModuleNoBlock(const char *name) diff --git a/Doc/c-api/memory.rst b/Doc/c-api/memory.rst index 52ef4170e88..ec8b828ecb7 100644 --- a/Doc/c-api/memory.rst +++ b/Doc/c-api/memory.rst @@ -267,14 +267,14 @@ The following type-oriented macros are provided for convenience. Note that .. c:macro:: PyMem_New(TYPE, n) Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes of - memory. Returns a pointer cast to :c:expr:`TYPE*`. The memory will not have + memory. Returns a pointer cast to ``TYPE*``. The memory will not have been initialized in any way. .. c:macro:: PyMem_Resize(p, TYPE, n) Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * - sizeof(TYPE))`` bytes. Returns a pointer cast to :c:expr:`TYPE*`. On return, + sizeof(TYPE))`` bytes. Returns a pointer cast to ``TYPE*``. On return, *p* will be a pointer to the new memory area, or ``NULL`` in the event of failure. diff --git a/Doc/c-api/memoryview.rst b/Doc/c-api/memoryview.rst index 2aa43318e7a..f6038032805 100644 --- a/Doc/c-api/memoryview.rst +++ b/Doc/c-api/memoryview.rst @@ -20,6 +20,17 @@ any other object. read/write, otherwise it may be either read-only or read/write at the discretion of the exporter. + +.. c:macro:: PyBUF_READ + + Flag to request a readonly buffer. + + +.. c:macro:: PyBUF_WRITE + + Flag to request a writable buffer. + + .. c:function:: PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags) Create a memoryview object using *mem* as the underlying buffer. @@ -41,6 +52,8 @@ any other object. original memory. Otherwise, a copy is made and the memoryview points to a new bytes object. + *buffertype* can be one of :c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE`. + .. c:function:: int PyMemoryView_Check(PyObject *obj) diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst index d88de794485..2c8ffe57bf4 100644 --- a/Doc/c-api/object.rst +++ b/Doc/c-api/object.rst @@ -19,6 +19,14 @@ Object Protocol to NotImplemented and return it). +.. c:macro:: Py_PRINT_RAW + + Flag to be used with multiple functions that print the object (like + :c:func:`PyObject_Print` and :c:func:`PyFile_WriteObject`). + If passed, these function would use the :func:`str` of the object + instead of the :func:`repr`. + + .. c:function:: int PyObject_Print(PyObject *o, FILE *fp, int flags) Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags argument @@ -172,12 +180,8 @@ Object Protocol .. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid) Compare the values of *o1* and *o2* using the operation specified by *opid*, - which must be one of :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:`Py_EQ`, - :c:macro:`Py_NE`, :c:macro:`Py_GT`, or :c:macro:`Py_GE`, corresponding to ``<``, - ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error, - ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the - Python expression ``o1 op o2``, where ``op`` is the operator corresponding to - *opid*. + like :c:func:`PyObject_RichCompare`, but returns ``-1`` on error, ``0`` if + the result is false, ``1`` otherwise. .. note:: If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` diff --git a/Doc/c-api/stable.rst b/Doc/c-api/stable.rst index 63a100a6f26..5b9e43874c7 100644 --- a/Doc/c-api/stable.rst +++ b/Doc/c-api/stable.rst @@ -16,7 +16,7 @@ CPython's Application Binary Interface (ABI) is forward- and backwards-compatible across a minor release (if these are compiled the same way; see :ref:`stable-abi-platform` below). So, code compiled for Python 3.10.0 will work on 3.10.8 and vice versa, -but will need to be compiled separately for 3.9.x and 3.10.x. +but will need to be compiled separately for 3.9.x and 3.11.x. There are two tiers of C API with different stability expectations: diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst index 528813c255c..0032da96596 100644 --- a/Doc/c-api/structures.rst +++ b/Doc/c-api/structures.rst @@ -399,6 +399,40 @@ definition with the same method name. slot. This is helpful because calls to PyCFunctions are optimized more than wrapper object calls. +.. c:function:: PyObject * PyCMethod_New(PyMethodDef *ml, PyObject *self, PyObject *module, PyTypeObject *cls) + + Turn *ml* into a Python :term:`callable` object. + The caller must ensure that *ml* outlives the :term:`callable`. + Typically, *ml* is defined as a static variable. + + The *self* parameter will be passed as the *self* argument + to the C function in ``ml->ml_meth`` when invoked. + *self* can be ``NULL``. + + The :term:`callable` object's ``__module__`` attribute + can be set from the given *module* argument. + *module* should be a Python string, + which will be used as name of the module the function is defined in. + If unavailable, it can be set to :const:`None` or ``NULL``. + + .. seealso:: :attr:`function.__module__` + + The *cls* parameter will be passed as the *defining_class* + argument to the C function. + Must be set if :c:macro:`METH_METHOD` is set on ``ml->ml_flags``. + + .. versionadded:: 3.9 + + +.. c:function:: PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) + + Equivalent to ``PyCMethod_New(ml, self, module, NULL)``. + + +.. c:function:: PyObject * PyCFunction_New(PyMethodDef *ml, PyObject *self) + + Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``. + Accessing attributes of extension types --------------------------------------- @@ -419,15 +453,15 @@ Accessing attributes of extension types The string should be static, no copy is made of it. - .. c:member:: Py_ssize_t offset - - The offset in bytes that the member is located on the type’s object struct. - .. c:member:: int type The type of the member in the C struct. See :ref:`PyMemberDef-types` for the possible values. + .. c:member:: Py_ssize_t offset + + The offset in bytes that the member is located on the type’s object struct. + .. c:member:: int flags Zero or more of the :ref:`PyMemberDef-flags`, combined using bitwise OR. @@ -517,11 +551,11 @@ The following flags can be used with :c:member:`PyMemberDef.flags`: from ``PyObject``. Can only be used as part of :c:member:`Py_tp_members ` - :c:type:`slot ` when creating a class using negative + :c:type:`slot ` when creating a class using negative :c:member:`~PyType_Spec.basicsize`. It is mandatory in that case. - This flag is only used in :c:type:`PyTypeSlot`. + This flag is only used in :c:type:`PyType_Slot`. When setting :c:member:`~PyTypeObject.tp_members` during class creation, Python clears it and sets :c:member:`PyMemberDef.offset` to the offset from the ``PyObject`` struct. @@ -659,7 +693,8 @@ Defining Getters and Setters .. c:member:: setter set - Optional C function to set or delete the attribute, if omitted the attribute is readonly. + Optional C function to set or delete the attribute. + If ``NULL``, the attribute is read-only. .. c:member:: const char* doc @@ -669,18 +704,18 @@ Defining Getters and Setters Optional function pointer, providing additional data for getter and setter. - The ``get`` function takes one :c:expr:`PyObject*` parameter (the - instance) and a function pointer (the associated ``closure``):: +.. c:type:: PyObject *(*getter)(PyObject *, void *) - typedef PyObject *(*getter)(PyObject *, void *); + The ``get`` function takes one :c:expr:`PyObject*` parameter (the + instance) and a function pointer (the associated ``closure``): It should return a new reference on success or ``NULL`` with a set exception on failure. - ``set`` functions take two :c:expr:`PyObject*` parameters (the instance and - the value to be set) and a function pointer (the associated ``closure``):: +.. c:type:: int (*setter)(PyObject *, PyObject *, void *) - typedef int (*setter)(PyObject *, PyObject *, void *); + ``set`` functions take two :c:expr:`PyObject*` parameters (the instance and + the value to be set) and a function pointer (the associated ``closure``): In case the attribute should be deleted the second parameter is ``NULL``. Should return ``0`` on success or ``-1`` with a set exception on failure. diff --git a/Doc/conf.py b/Doc/conf.py index 6bc8090f62f..5cc8f7e599a 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -6,7 +6,9 @@ # The contents of this file are pickled, so don't put values in the namespace # that aren't pickleable (module imports are okay, they're removed automatically). -import sys, os, time +import os +import sys +import time sys.path.append(os.path.abspath('tools/extensions')) sys.path.append(os.path.abspath('includes')) @@ -49,7 +51,7 @@ # General substitutions. project = 'Python' -copyright = '2001-%s, Python Software Foundation' % time.strftime('%Y') +copyright = f"2001-{time.strftime('%Y')}, Python Software Foundation" # We look for the Include/patchlevel.h file in the current Python source tree # and replace the values accordingly. @@ -68,6 +70,10 @@ # Minimum version of sphinx required needs_sphinx = '4.2' +# Create table of contents entries for domain objects (e.g. functions, classes, +# attributes, etc.). Default is True. +toc_object_entries = False + # Ignore any .rst files in the includes/ directory; # they're embedded in pages but not rendered individually. # Ignore any .rst files in the venv/ directory. @@ -79,20 +85,25 @@ nitpick_ignore = [ # Standard C functions ('c:func', 'calloc'), + ('c:func', 'ctime'), ('c:func', 'dlopen'), ('c:func', 'exec'), ('c:func', 'fcntl'), ('c:func', 'fork'), ('c:func', 'free'), + ('c:func', 'gettimeofday'), ('c:func', 'gmtime'), + ('c:func', 'localeconv'), ('c:func', 'localtime'), ('c:func', 'main'), ('c:func', 'malloc'), + ('c:func', 'mktime'), ('c:func', 'printf'), ('c:func', 'realloc'), ('c:func', 'snprintf'), ('c:func', 'sprintf'), ('c:func', 'stat'), + ('c:func', 'strftime'), ('c:func', 'system'), ('c:func', 'time'), ('c:func', 'vsnprintf'), @@ -160,6 +171,10 @@ # Deprecated function that was never documented: ('py:func', 'getargspec'), ('py:func', 'inspect.getargspec'), + # Undocumented modules that users shouldn't have to worry about + # (implementation details of `os.path`): + ('py:mod', 'ntpath'), + ('py:mod', 'posixpath'), ] # Temporary undocumented names. @@ -235,6 +250,12 @@ # be resolved, as the method is currently undocumented. For context, see # https://github.com/python/cpython/pull/103289. ('py:meth', '_SubParsersAction.add_parser'), + # Attributes/methods/etc. that definitely should be documented better, + # but are deferred for now: + ('py:attr', '__annotations__'), + ('py:meth', '__missing__'), + ('py:attr', '__wrapped__'), + ('py:meth', 'index'), # list.index, tuple.index, etc. ] # gh-106948: Copy standard C types declared in the "c:type" domain to the @@ -272,6 +293,9 @@ 'root_include_title': False # We use the version switcher instead. } +if os.getenv("READTHEDOCS"): + html_theme_options["hosted_on"] = 'Read the Docs' + # Override stylesheet fingerprinting for Windows CHM htmlhelp to fix GH-91207 # https://github.com/python/cpython/issues/91207 if any('htmlhelp' in arg for arg in sys.argv): @@ -280,7 +304,7 @@ print("It may be removed in the future\n") # Short title used e.g. for HTML tags. -html_short_title = '%s Documentation' % release +html_short_title = f'{release} Documentation' # Deployment preview information # (See .readthedocs.yml and https://docs.readthedocs.io/en/stable/reference/environment-variables.html) @@ -329,12 +353,9 @@ latex_engine = 'xelatex' -# Get LaTeX to handle Unicode correctly latex_elements = { -} - -# Additional stuff for the LaTeX preamble. -latex_elements['preamble'] = r''' + # For the LaTeX preamble. + 'preamble': r''' \authoraddress{ \sphinxstrong{Python Software Foundation}\\ Email: \sphinxemail{docs@python.org} @@ -342,13 +363,12 @@ \let\Verbatim=\OriginalVerbatim \let\endVerbatim=\endOriginalVerbatim \setcounter{tocdepth}{2} -''' - -# The paper size ('letter' or 'a4'). -latex_elements['papersize'] = 'a4' - -# The font size ('10pt', '11pt' or '12pt'). -latex_elements['pointsize'] = '10pt' +''', + # The paper size ('letter' or 'a4'). + 'papersize': 'a4', + # The font size ('10pt', '11pt' or '12pt'). + 'pointsize': '10pt', +} # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, document class [howto/manual]). @@ -412,9 +432,9 @@ # Regexes to find C items in the source files. coverage_c_regexes = { - 'cfunction': (r'^PyAPI_FUNC\(.*\)\s+([^_][\w_]+)'), - 'data': (r'^PyAPI_DATA\(.*\)\s+([^_][\w_]+)'), - 'macro': (r'^#define ([^_][\w_]+)\(.*\)[\s|\\]'), + 'cfunction': r'^PyAPI_FUNC\(.*\)\s+([^_][\w_]+)', + 'data': r'^PyAPI_DATA\(.*\)\s+([^_][\w_]+)', + 'macro': r'^#define ([^_][\w_]+)\(.*\)[\s|\\]', } # The coverage checker will ignore all C items whose names match these regexes diff --git a/Doc/constraints.txt b/Doc/constraints.txt index 147de1271eb..16b735ea07a 100644 --- a/Doc/constraints.txt +++ b/Doc/constraints.txt @@ -13,12 +13,12 @@ packaging<24 Pygments>=2.16.1,<3 requests<3 snowballstemmer<3 -sphinxcontrib-applehelp<1.1 -sphinxcontrib-devhelp<1.1 -sphinxcontrib-htmlhelp<2.1 +sphinxcontrib-applehelp<1.0.5 +sphinxcontrib-devhelp<1.0.6 +sphinxcontrib-htmlhelp<2.0.5 sphinxcontrib-jsmath<1.1 -sphinxcontrib-qthelp<1.1 -sphinxcontrib-serializinghtml<1.2 +sphinxcontrib-qthelp<1.0.7 +sphinxcontrib-serializinghtml<1.1.10 # Direct dependencies of Jinja2 (Jinja is a dependency of Sphinx, see above) MarkupSafe<2.2 diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index ee64ffdc916..b5d953247f3 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -402,6 +402,21 @@ PyContextVar_Reset:int::: PyContextVar_Reset:PyObject*:var:0: PyContextVar_Reset:PyObject*:token:-1: +PyCFunction_New:PyObject*::+1: +PyCFunction_New:PyMethodDef*:ml:: +PyCFunction_New:PyObject*:self:+1: + +PyCFunction_NewEx:PyObject*::+1: +PyCFunction_NewEx:PyMethodDef*:ml:: +PyCFunction_NewEx:PyObject*:self:+1: +PyCFunction_NewEx:PyObject*:module:+1: + +PyCMethod_New:PyObject*::+1: +PyCMethod_New:PyMethodDef*:ml:: +PyCMethod_New:PyObject*:self:+1: +PyCMethod_New:PyObject*:module:+1: +PyCMethod_New:PyObject*:cls:+1: + PyDate_Check:int::: PyDate_Check:PyObject*:ob:0: @@ -1607,6 +1622,13 @@ PyObject_Call:PyObject*:callable_object:0: PyObject_Call:PyObject*:args:0: PyObject_Call:PyObject*:kw:0: +PyObject_CallNoArgs:PyObject*::+1: +PyObject_CallNoArgs:PyObject*:callable_object:0: + +PyObject_CallOneArg:PyObject*::+1: +PyObject_CallOneArg:PyObject*:callable_object:0: +PyObject_CallOneArg:PyObject*:arg:0: + PyObject_CallFunction:PyObject*::+1: PyObject_CallFunction:PyObject*:callable_object:0: PyObject_CallFunction:const char*:format:: diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst index ae02c443e59..300e1b6cc40 100644 --- a/Doc/faq/design.rst +++ b/Doc/faq/design.rst @@ -451,7 +451,7 @@ on the key and a per-process seed; for example, ``'Python'`` could hash to to ``1142331976``. The hash code is then used to calculate a location in an internal array where the value will be stored. Assuming that you're storing keys that all have different hash values, this means that dictionaries take -constant time -- O(1), in Big-O notation -- to retrieve a key. +constant time -- *O*\ (1), in Big-O notation -- to retrieve a key. Why must dictionary keys be immutable? diff --git a/Doc/glossary.rst b/Doc/glossary.rst index a687086c8d2..b475cb80a85 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -350,7 +350,7 @@ Glossary docstring A string literal which appears as the first expression in a class, function or module. While ignored when the suite is executed, it is - recognized by the compiler and put into the :attr:`__doc__` attribute + recognized by the compiler and put into the :attr:`!__doc__` attribute of the enclosing class, function or module. Since it is available via introspection, it is the canonical place for documentation of the object. @@ -741,7 +741,7 @@ Glossary list A built-in Python :term:`sequence`. Despite its name it is more akin to an array in other languages than to a linked list since access to - elements is O(1). + elements is *O*\ (1). list comprehension A compact way to process all or part of the elements in a sequence and @@ -1103,10 +1103,12 @@ Glossary The :class:`collections.abc.Sequence` abstract base class defines a much richer interface that goes beyond just :meth:`~object.__getitem__` and :meth:`~object.__len__`, adding - :meth:`count`, :meth:`index`, :meth:`~object.__contains__`, and + :meth:`!count`, :meth:`!index`, :meth:`~object.__contains__`, and :meth:`~object.__reversed__`. Types that implement this expanded interface can be registered explicitly using - :func:`~abc.ABCMeta.register`. + :func:`~abc.ABCMeta.register`. For more documentation on sequence + methods generally, see + :ref:`Common Sequence Operations <typesseq-common>`. set comprehension A compact way to process all or part of the elements in an iterable and diff --git a/Doc/howto/annotations.rst b/Doc/howto/annotations.rst index 1134686c947..be8c7e6c827 100644 --- a/Doc/howto/annotations.rst +++ b/Doc/howto/annotations.rst @@ -153,7 +153,8 @@ on an arbitrary object ``o``: unwrap it by accessing either ``o.__wrapped__`` or ``o.func`` as appropriate, until you have found the root unwrapped function. * If ``o`` is a callable (but not a class), use - ``o.__globals__`` as the globals when calling :func:`eval`. + :attr:`o.__globals__ <function.__globals__>` as the globals when calling + :func:`eval`. However, not all string values used as annotations can be successfully turned into Python values by :func:`eval`. diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index f732aaea729..75346f2c761 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -1250,7 +1250,7 @@ instance:: <function D.f at 0x00C45070> >>> d.f.__self__ - <__main__.D object at 0x1012e1f98> + <__main__.D object at 0x00B18C90> If you have ever wondered where *self* comes from in regular methods or where *cls* comes from in class methods, this is it! @@ -1342,7 +1342,8 @@ Using the non-data descriptor protocol, a pure Python version of The :func:`functools.update_wrapper` call adds a ``__wrapped__`` attribute that refers to the underlying function. Also it carries forward the attributes necessary to make the wrapper look like the wrapped -function: ``__name__``, ``__qualname__``, ``__doc__``, and ``__annotations__``. +function: :attr:`~function.__name__`, :attr:`~function.__qualname__`, +:attr:`~function.__doc__`, and :attr:`~function.__annotations__`. .. testcode:: :hide: @@ -1522,8 +1523,9 @@ Using the non-data descriptor protocol, a pure Python version of The :func:`functools.update_wrapper` call in ``ClassMethod`` adds a ``__wrapped__`` attribute that refers to the underlying function. Also it carries forward the attributes necessary to make the wrapper look -like the wrapped function: ``__name__``, ``__qualname__``, ``__doc__``, -and ``__annotations__``. +like the wrapped function: :attr:`~function.__name__`, +:attr:`~function.__qualname__`, :attr:`~function.__doc__`, +and :attr:`~function.__annotations__`. Member objects and __slots__ diff --git a/Doc/howto/isolating-extensions.rst b/Doc/howto/isolating-extensions.rst index 835c0afad7c..e35855deedb 100644 --- a/Doc/howto/isolating-extensions.rst +++ b/Doc/howto/isolating-extensions.rst @@ -337,7 +337,7 @@ That is, heap types should: - Have the :c:macro:`Py_TPFLAGS_HAVE_GC` flag. - Define a traverse function using ``Py_tp_traverse``, which - visits the type (e.g. using :c:expr:`Py_VISIT(Py_TYPE(self))`). + visits the type (e.g. using ``Py_VISIT(Py_TYPE(self))``). Please refer to the the documentation of :c:macro:`Py_TPFLAGS_HAVE_GC` and :c:member:`~PyTypeObject.tp_traverse` @@ -482,7 +482,7 @@ The largest roadblock is getting *the class a method was defined in*, or that method's "defining class" for short. The defining class can have a reference to the module it is part of. -Do not confuse the defining class with :c:expr:`Py_TYPE(self)`. If the method +Do not confuse the defining class with ``Py_TYPE(self)``. If the method is called on a *subclass* of your type, ``Py_TYPE(self)`` will refer to that subclass, which may be defined in different module than yours. diff --git a/Doc/howto/logging-cookbook.rst b/Doc/howto/logging-cookbook.rst index 588f5a0a53d..33c57ae7347 100644 --- a/Doc/howto/logging-cookbook.rst +++ b/Doc/howto/logging-cookbook.rst @@ -1933,30 +1933,28 @@ This dictionary is passed to :func:`~config.dictConfig` to put the configuration LOGGING = { 'version': 1, - 'disable_existing_loggers': True, + 'disable_existing_loggers': False, 'formatters': { 'verbose': { - 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' + 'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}', + 'style': '{', }, 'simple': { - 'format': '%(levelname)s %(message)s' + 'format': '{levelname} {message}', + 'style': '{', }, }, 'filters': { 'special': { '()': 'project.logging.SpecialFilter', 'foo': 'bar', - } + }, }, 'handlers': { - 'null': { - 'level':'DEBUG', - 'class':'django.utils.log.NullHandler', - }, - 'console':{ - 'level':'DEBUG', - 'class':'logging.StreamHandler', - 'formatter': 'simple' + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'formatter': 'simple', }, 'mail_admins': { 'level': 'ERROR', @@ -1966,9 +1964,8 @@ This dictionary is passed to :func:`~config.dictConfig` to put the configuration }, 'loggers': { 'django': { - 'handlers':['null'], + 'handlers': ['console'], 'propagate': True, - 'level':'INFO', }, 'django.request': { 'handlers': ['mail_admins'], diff --git a/Doc/howto/logging.rst b/Doc/howto/logging.rst index 7330cf675ba..55c7c02e98d 100644 --- a/Doc/howto/logging.rst +++ b/Doc/howto/logging.rst @@ -521,7 +521,7 @@ custom handlers) are the following configuration methods: * The :meth:`~Handler.setLevel` method, just as in logger objects, specifies the lowest severity that will be dispatched to the appropriate destination. Why - are there two :func:`setLevel` methods? The level set in the logger + are there two :meth:`~Handler.setLevel` methods? The level set in the logger determines which severity of messages it will pass to its handlers. The level set in each handler determines which messages that handler will send on. @@ -775,29 +775,29 @@ What happens if no configuration is provided If no logging configuration is provided, it is possible to have a situation where a logging event needs to be output, but no handlers can be found to -output the event. The behaviour of the logging package in these -circumstances is dependent on the Python version. +output the event. -For versions of Python prior to 3.2, the behaviour is as follows: +The event is output using a 'handler of last resort', stored in +:data:`lastResort`. This internal handler is not associated with any +logger, and acts like a :class:`~logging.StreamHandler` which writes the +event description message to the current value of ``sys.stderr`` (therefore +respecting any redirections which may be in effect). No formatting is +done on the message - just the bare event description message is printed. +The handler's level is set to ``WARNING``, so all events at this and +greater severities will be output. -* If *logging.raiseExceptions* is ``False`` (production mode), the event is - silently dropped. +.. versionchanged:: 3.2 -* If *logging.raiseExceptions* is ``True`` (development mode), a message - 'No handlers could be found for logger X.Y.Z' is printed once. + For versions of Python prior to 3.2, the behaviour is as follows: -In Python 3.2 and later, the behaviour is as follows: + * If :data:`raiseExceptions` is ``False`` (production mode), the event is + silently dropped. -* The event is output using a 'handler of last resort', stored in - ``logging.lastResort``. This internal handler is not associated with any - logger, and acts like a :class:`~logging.StreamHandler` which writes the - event description message to the current value of ``sys.stderr`` (therefore - respecting any redirections which may be in effect). No formatting is - done on the message - just the bare event description message is printed. - The handler's level is set to ``WARNING``, so all events at this and - greater severities will be output. + * If :data:`raiseExceptions` is ``True`` (development mode), a message + 'No handlers could be found for logger X.Y.Z' is printed once. -To obtain the pre-3.2 behaviour, ``logging.lastResort`` can be set to ``None``. + To obtain the pre-3.2 behaviour, + :data:`lastResort` can be set to ``None``. .. _library-config: @@ -999,7 +999,7 @@ Logged messages are formatted for presentation through instances of the use with the % operator and a dictionary. For formatting multiple messages in a batch, instances of -:class:`~handlers.BufferingFormatter` can be used. In addition to the format +:class:`BufferingFormatter` can be used. In addition to the format string (which is applied to each message in the batch), there is provision for header and trailer format strings. @@ -1035,7 +1035,8 @@ checks to see if a module-level variable, :data:`raiseExceptions`, is set. If set, a traceback is printed to :data:`sys.stderr`. If not set, the exception is swallowed. -.. note:: The default value of :data:`raiseExceptions` is ``True``. This is +.. note:: + The default value of :data:`raiseExceptions` is ``True``. This is because during development, you typically want to be notified of any exceptions that occur. It's advised that you set :data:`raiseExceptions` to ``False`` for production usage. @@ -1073,7 +1074,7 @@ You can write code like this:: expensive_func2()) so that if the logger's threshold is set above ``DEBUG``, the calls to -:func:`expensive_func1` and :func:`expensive_func2` are never made. +``expensive_func1`` and ``expensive_func2`` are never made. .. note:: In some cases, :meth:`~Logger.isEnabledFor` can itself be more expensive than you'd like (e.g. for deeply nested loggers where an explicit diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst index 570435d4886..7f54a410881 100644 --- a/Doc/howto/urllib2.rst +++ b/Doc/howto/urllib2.rst @@ -392,16 +392,16 @@ info and geturl =============== The response returned by urlopen (or the :exc:`~urllib.error.HTTPError` instance) has two -useful methods :meth:`info` and :meth:`geturl` and is defined in the module -:mod:`urllib.response`.. +useful methods :meth:`!info` and :meth:`!geturl` and is defined in the module +:mod:`urllib.response`. -**geturl** - this returns the real URL of the page fetched. This is useful -because ``urlopen`` (or the opener object used) may have followed a -redirect. The URL of the page fetched may not be the same as the URL requested. +* **geturl** - this returns the real URL of the page fetched. This is useful + because ``urlopen`` (or the opener object used) may have followed a + redirect. The URL of the page fetched may not be the same as the URL requested. -**info** - this returns a dictionary-like object that describes the page -fetched, particularly the headers sent by the server. It is currently an -:class:`http.client.HTTPMessage` instance. +* **info** - this returns a dictionary-like object that describes the page + fetched, particularly the headers sent by the server. It is currently an + :class:`http.client.HTTPMessage` instance. Typical headers include 'Content-length', 'Content-type', and so on. See the `Quick Reference to HTTP Headers <https://jkorpela.fi/http.html>`_ @@ -507,7 +507,7 @@ than the URL you pass to .add_password() will also match. :: In the above example we only supplied our ``HTTPBasicAuthHandler`` to ``build_opener``. By default openers have the handlers for normal situations - -- ``ProxyHandler`` (if a proxy setting such as an :envvar:`http_proxy` + -- ``ProxyHandler`` (if a proxy setting such as an :envvar:`!http_proxy` environment variable is set), ``UnknownHandler``, ``HTTPHandler``, ``HTTPDefaultErrorHandler``, ``HTTPRedirectHandler``, ``FTPHandler``, ``FileHandler``, ``DataHandler``, ``HTTPErrorProcessor``. diff --git a/Doc/library/__future__.rst b/Doc/library/__future__.rst index d261e4a4f33..762f8b4695b 100644 --- a/Doc/library/__future__.rst +++ b/Doc/library/__future__.rst @@ -8,20 +8,68 @@ -------------- -:mod:`__future__` is a real module, and serves three purposes: +Imports of the form ``from __future__ import feature`` are called +:ref:`future statements <future>`. These are special-cased by the Python compiler +to allow the use of new Python features in modules containing the future statement +before the release in which the feature becomes standard. + +While these future statements are given additional special meaning by the +Python compiler, they are still executed like any other import statement and +the :mod:`__future__` exists and is handled by the import system the same way +any other Python module would be. This design serves three purposes: * To avoid confusing existing tools that analyze import statements and expect to find the modules they're importing. -* To ensure that :ref:`future statements <future>` run under releases prior to - 2.1 at least yield runtime exceptions (the import of :mod:`__future__` will - fail, because there was no module of that name prior to 2.1). - * To document when incompatible changes were introduced, and when they will be --- or were --- made mandatory. This is a form of executable documentation, and can be inspected programmatically via importing :mod:`__future__` and examining its contents. +* To ensure that :ref:`future statements <future>` run under releases prior to + Python 2.1 at least yield runtime exceptions (the import of :mod:`__future__` + will fail, because there was no module of that name prior to 2.1). + +Module Contents +--------------- + +No feature description will ever be deleted from :mod:`__future__`. Since its +introduction in Python 2.1 the following features have found their way into the +language using this mechanism: + ++------------------+-------------+--------------+---------------------------------------------+ +| feature | optional in | mandatory in | effect | ++==================+=============+==============+=============================================+ +| nested_scopes | 2.1.0b1 | 2.2 | :pep:`227`: | +| | | | *Statically Nested Scopes* | ++------------------+-------------+--------------+---------------------------------------------+ +| generators | 2.2.0a1 | 2.3 | :pep:`255`: | +| | | | *Simple Generators* | ++------------------+-------------+--------------+---------------------------------------------+ +| division | 2.2.0a2 | 3.0 | :pep:`238`: | +| | | | *Changing the Division Operator* | ++------------------+-------------+--------------+---------------------------------------------+ +| absolute_import | 2.5.0a1 | 3.0 | :pep:`328`: | +| | | | *Imports: Multi-Line and Absolute/Relative* | ++------------------+-------------+--------------+---------------------------------------------+ +| with_statement | 2.5.0a1 | 2.6 | :pep:`343`: | +| | | | *The "with" Statement* | ++------------------+-------------+--------------+---------------------------------------------+ +| print_function | 2.6.0a2 | 3.0 | :pep:`3105`: | +| | | | *Make print a function* | ++------------------+-------------+--------------+---------------------------------------------+ +| unicode_literals | 2.6.0a2 | 3.0 | :pep:`3112`: | +| | | | *Bytes literals in Python 3000* | ++------------------+-------------+--------------+---------------------------------------------+ +| generator_stop | 3.5.0b1 | 3.7 | :pep:`479`: | +| | | | *StopIteration handling inside generators* | ++------------------+-------------+--------------+---------------------------------------------+ +| annotations | 3.7.0b1 | TBD [1]_ | :pep:`563`: | +| | | | *Postponed evaluation of annotations* | ++------------------+-------------+--------------+---------------------------------------------+ + +.. XXX Adding a new entry? Remember to update simple_stmts.rst, too. + .. _future-classes: .. class:: _Feature @@ -65,43 +113,6 @@ dynamically compiled code. This flag is stored in the :attr:`_Feature.compiler_flag` attribute on :class:`_Feature` instances. -No feature description will ever be deleted from :mod:`__future__`. Since its -introduction in Python 2.1 the following features have found their way into the -language using this mechanism: - -+------------------+-------------+--------------+---------------------------------------------+ -| feature | optional in | mandatory in | effect | -+==================+=============+==============+=============================================+ -| nested_scopes | 2.1.0b1 | 2.2 | :pep:`227`: | -| | | | *Statically Nested Scopes* | -+------------------+-------------+--------------+---------------------------------------------+ -| generators | 2.2.0a1 | 2.3 | :pep:`255`: | -| | | | *Simple Generators* | -+------------------+-------------+--------------+---------------------------------------------+ -| division | 2.2.0a2 | 3.0 | :pep:`238`: | -| | | | *Changing the Division Operator* | -+------------------+-------------+--------------+---------------------------------------------+ -| absolute_import | 2.5.0a1 | 3.0 | :pep:`328`: | -| | | | *Imports: Multi-Line and Absolute/Relative* | -+------------------+-------------+--------------+---------------------------------------------+ -| with_statement | 2.5.0a1 | 2.6 | :pep:`343`: | -| | | | *The "with" Statement* | -+------------------+-------------+--------------+---------------------------------------------+ -| print_function | 2.6.0a2 | 3.0 | :pep:`3105`: | -| | | | *Make print a function* | -+------------------+-------------+--------------+---------------------------------------------+ -| unicode_literals | 2.6.0a2 | 3.0 | :pep:`3112`: | -| | | | *Bytes literals in Python 3000* | -+------------------+-------------+--------------+---------------------------------------------+ -| generator_stop | 3.5.0b1 | 3.7 | :pep:`479`: | -| | | | *StopIteration handling inside generators* | -+------------------+-------------+--------------+---------------------------------------------+ -| annotations | 3.7.0b1 | TBD [1]_ | :pep:`563`: | -| | | | *Postponed evaluation of annotations* | -+------------------+-------------+--------------+---------------------------------------------+ - -.. XXX Adding a new entry? Remember to update simple_stmts.rst, too. - .. [1] ``from __future__ import annotations`` was previously scheduled to become mandatory in Python 3.10, but the Python Steering Council @@ -115,3 +126,6 @@ language using this mechanism: :ref:`future` How the compiler treats future imports. + + :pep:`236` - Back to the __future__ + The original proposal for the __future__ mechanism. diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index fbffa71d200..1395d457f87 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1936,8 +1936,8 @@ FileType objects >>> parser.parse_args(['-']) Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>) - .. versionadded:: 3.4 - The *encodings* and *errors* keyword arguments. + .. versionchanged:: 3.4 + Added the *encodings* and *errors* parameters. Argument groups diff --git a/Doc/library/array.rst b/Doc/library/array.rst index d6cb8c623ad..788dd763ffb 100644 --- a/Doc/library/array.rst +++ b/Doc/library/array.rst @@ -76,14 +76,16 @@ The module defines the following type: .. class:: array(typecode[, initializer]) A new array whose items are restricted by *typecode*, and initialized - from the optional *initializer* value, which must be a list, a - :term:`bytes-like object`, or iterable over elements of the - appropriate type. + from the optional *initializer* value, which must be a :class:`bytes` + or :class:`bytearray` object, a Unicode string, or iterable over elements + of the appropriate type. - If given a list or string, the initializer is passed to the new array's - :meth:`fromlist`, :meth:`frombytes`, or :meth:`fromunicode` method (see below) - to add initial items to the array. Otherwise, the iterable initializer is - passed to the :meth:`extend` method. + If given a :class:`bytes` or :class:`bytearray` object, the initializer + is passed to the new array's :meth:`frombytes` method; + if given a Unicode string, the initializer is passed to the + :meth:`fromunicode` method; + otherwise, the initializer's iterator is passed to the :meth:`extend` method + to add initial items to the array. Array objects support the ordinary sequence operations of indexing, slicing, concatenation, and multiplication. When using slice assignment, the assigned @@ -149,10 +151,11 @@ The module defines the following type: must be the right type to be appended to the array. - .. method:: frombytes(s) + .. method:: frombytes(buffer) - Appends items from the string, interpreting the string as an array of machine - values (as if it had been read from a file using the :meth:`fromfile` method). + Appends items from the :term:`bytes-like object`, interpreting + its content as an array of machine values (as if it had been read + from a file using the :meth:`fromfile` method). .. versionadded:: 3.2 :meth:`!fromstring` is renamed to :meth:`frombytes` for clarity. @@ -174,9 +177,9 @@ The module defines the following type: .. method:: fromunicode(s) - Extends this array with data from the given unicode string. The array must - be a type ``'u'`` array; otherwise a :exc:`ValueError` is raised. Use - ``array.frombytes(unicodestring.encode(enc))`` to append Unicode data to an + Extends this array with data from the given Unicode string. + The array must have type code ``'u'``; otherwise a :exc:`ValueError` is raised. + Use ``array.frombytes(unicodestring.encode(enc))`` to append Unicode data to an array of some other type. @@ -236,23 +239,27 @@ The module defines the following type: .. method:: tounicode() - Convert the array to a unicode string. The array must be a type ``'u'`` array; + Convert the array to a Unicode string. The array must have a type ``'u'``; otherwise a :exc:`ValueError` is raised. Use ``array.tobytes().decode(enc)`` to - obtain a unicode string from an array of some other type. + obtain a Unicode string from an array of some other type. -When an array object is printed or converted to a string, it is represented as -``array(typecode, initializer)``. The *initializer* is omitted if the array is -empty, otherwise it is a string if the *typecode* is ``'u'``, otherwise it is a -list of numbers. The string is guaranteed to be able to be converted back to an +The string representation of array objects has the form +``array(typecode, initializer)``. +The *initializer* is omitted if the array is empty, otherwise it is +a Unicode string if the *typecode* is ``'u'``, otherwise it is +a list of numbers. +The string representation is guaranteed to be able to be converted back to an array with the same type and value using :func:`eval`, so long as the :class:`~array.array` class has been imported using ``from array import array``. +Variables ``inf`` and ``nan`` must also be defined if it contains +corresponding floating point values. Examples:: array('l') array('u', 'hello \u2641') array('l', [1, 2, 3, 4, 5]) - array('d', [1.0, 2.0, 3.14]) + array('d', [1.0, 2.0, 3.14, -inf, nan]) .. seealso:: diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index 274d831f4dd..770eabf0c42 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -45,7 +45,7 @@ Node classes This is the base of all AST node classes. The actual node classes are derived from the :file:`Parser/Python.asdl` file, which is reproduced - :ref:`above <abstract-grammar>`. They are defined in the :mod:`_ast` C + :ref:`above <abstract-grammar>`. They are defined in the :mod:`!_ast` C module and re-exported in :mod:`ast`. There is one class defined for each left-hand side symbol in the abstract @@ -128,14 +128,14 @@ Node classes .. deprecated:: 3.8 - Old classes :class:`ast.Num`, :class:`ast.Str`, :class:`ast.Bytes`, - :class:`ast.NameConstant` and :class:`ast.Ellipsis` are still available, + Old classes :class:`!ast.Num`, :class:`!ast.Str`, :class:`!ast.Bytes`, + :class:`!ast.NameConstant` and :class:`!ast.Ellipsis` are still available, but they will be removed in future Python releases. In the meantime, instantiating them will return an instance of a different class. .. deprecated:: 3.9 - Old classes :class:`ast.Index` and :class:`ast.ExtSlice` are still + Old classes :class:`!ast.Index` and :class:`!ast.ExtSlice` are still available, but they will be removed in future Python releases. In the meantime, instantiating them will return an instance of a different class. @@ -1935,8 +1935,7 @@ Function and class definitions .. class:: arg(arg, annotation, type_comment) A single argument in a list. ``arg`` is a raw string of the argument - name, ``annotation`` is its annotation, such as a :class:`Str` or - :class:`Name` node. + name; ``annotation`` is its annotation, such as a :class:`Name` node. .. attribute:: type_comment @@ -2280,8 +2279,8 @@ and classes for traversing abstract syntax trees: .. function:: get_source_segment(source, node, *, padded=False) Get source code segment of the *source* that generated *node*. - If some location information (:attr:`lineno`, :attr:`end_lineno`, - :attr:`col_offset`, or :attr:`end_col_offset`) is missing, return ``None``. + If some location information (:attr:`~ast.AST.lineno`, :attr:`~ast.AST.end_lineno`, + :attr:`~ast.AST.col_offset`, or :attr:`~ast.AST.end_col_offset`) is missing, return ``None``. If *padded* is ``True``, the first line of a multi-line statement will be padded with spaces to match its original position. @@ -2292,7 +2291,7 @@ and classes for traversing abstract syntax trees: .. function:: fix_missing_locations(node) When you compile a node tree with :func:`compile`, the compiler expects - :attr:`lineno` and :attr:`col_offset` attributes for every node that supports + :attr:`~ast.AST.lineno` and :attr:`~ast.AST.col_offset` attributes for every node that supports them. This is rather tedious to fill in for generated nodes, so this helper adds these attributes recursively where not already set, by setting them to the values of the parent node. It works recursively starting at *node*. @@ -2307,8 +2306,8 @@ and classes for traversing abstract syntax trees: .. function:: copy_location(new_node, old_node) - Copy source location (:attr:`lineno`, :attr:`col_offset`, :attr:`end_lineno`, - and :attr:`end_col_offset`) from *old_node* to *new_node* if possible, + Copy source location (:attr:`~ast.AST.lineno`, :attr:`~ast.AST.col_offset`, :attr:`~ast.AST.end_lineno`, + and :attr:`~ast.AST.end_col_offset`) from *old_node* to *new_node* if possible, and return *new_node*. @@ -2354,14 +2353,18 @@ and classes for traversing abstract syntax trees: visited unless the visitor calls :meth:`generic_visit` or visits them itself. + .. method:: visit_Constant(node) + + Handles all constant nodes. + Don't use the :class:`NodeVisitor` if you want to apply changes to nodes during traversal. For this a special visitor exists (:class:`NodeTransformer`) that allows modifications. .. deprecated:: 3.8 - Methods :meth:`visit_Num`, :meth:`visit_Str`, :meth:`visit_Bytes`, - :meth:`visit_NameConstant` and :meth:`visit_Ellipsis` are deprecated + Methods :meth:`!visit_Num`, :meth:`!visit_Str`, :meth:`!visit_Bytes`, + :meth:`!visit_NameConstant` and :meth:`!visit_Ellipsis` are deprecated now and will not be called in future Python versions. Add the :meth:`visit_Constant` method to handle all constant nodes. @@ -2390,7 +2393,7 @@ and classes for traversing abstract syntax trees: ) Keep in mind that if the node you're operating on has child nodes you must - either transform the child nodes yourself or call the :meth:`generic_visit` + either transform the child nodes yourself or call the :meth:`~ast.NodeVisitor.generic_visit` method for the node first. For nodes that were part of a collection of statements (that applies to all @@ -2399,7 +2402,7 @@ and classes for traversing abstract syntax trees: If :class:`NodeTransformer` introduces new nodes (that weren't part of original tree) without giving them location information (such as - :attr:`lineno`), :func:`fix_missing_locations` should be called with + :attr:`~ast.AST.lineno`), :func:`fix_missing_locations` should be called with the new sub-tree to recalculate the location information:: tree = ast.parse('foo', mode='eval') diff --git a/Doc/library/asyncio-policy.rst b/Doc/library/asyncio-policy.rst index 0d7821e608e..346b740a8f7 100644 --- a/Doc/library/asyncio-policy.rst +++ b/Doc/library/asyncio-policy.rst @@ -237,7 +237,7 @@ implementation used by the asyncio event loop: It works reliably even when the asyncio event loop is run in a non-main OS thread. - There is no noticeable overhead when handling a big number of children (*O(1)* each + There is no noticeable overhead when handling a big number of children (*O*\ (1) each time a child terminates), but starting a thread per process requires extra memory. This watcher is used by default. @@ -257,7 +257,7 @@ implementation used by the asyncio event loop: watcher is installed. The solution is safe but it has a significant overhead when - handling a big number of processes (*O(n)* each time a + handling a big number of processes (*O*\ (*n*) each time a :py:data:`SIGCHLD` is received). .. versionadded:: 3.8 @@ -273,7 +273,7 @@ implementation used by the asyncio event loop: The watcher avoids disrupting other code spawning processes by polling every process explicitly on a :py:data:`SIGCHLD` signal. - This solution is as safe as :class:`MultiLoopChildWatcher` and has the same *O(N)* + This solution is as safe as :class:`MultiLoopChildWatcher` and has the same *O*\ (*n*) complexity but requires a running event loop in the main thread to work. .. deprecated:: 3.12 @@ -285,7 +285,7 @@ implementation used by the asyncio event loop: processes and waiting for their termination. There is no noticeable overhead when handling a big number of - children (*O(1)* each time a child terminates). + children (*O*\ (1) each time a child terminates). This solution requires a running event loop in the main thread to work, as :class:`SafeChildWatcher`. diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index 91e5ba2f30e..3ce6f4fa7d7 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -77,8 +77,8 @@ and work with streams: .. versionchanged:: 3.7 Added the *ssl_handshake_timeout* parameter. - .. versionadded:: 3.8 - Added *happy_eyeballs_delay* and *interleave* parameters. + .. versionchanged:: 3.8 + Added the *happy_eyeballs_delay* and *interleave* parameters. .. versionchanged:: 3.10 Removed the *loop* parameter. diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index a3ea050c071..a964c8b797e 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -825,23 +825,22 @@ Waiting Primitives *return_when* indicates when this function should return. It must be one of the following constants: - .. tabularcolumns:: |l|L| - - +-----------------------------+----------------------------------------+ - | Constant | Description | - +=============================+========================================+ - | :const:`FIRST_COMPLETED` | The function will return when any | - | | future finishes or is cancelled. | - +-----------------------------+----------------------------------------+ - | :const:`FIRST_EXCEPTION` | The function will return when any | - | | future finishes by raising an | - | | exception. If no future raises an | - | | exception then it is equivalent to | - | | :const:`ALL_COMPLETED`. | - +-----------------------------+----------------------------------------+ - | :const:`ALL_COMPLETED` | The function will return when all | - | | futures finish or are cancelled. | - +-----------------------------+----------------------------------------+ + .. list-table:: + :header-rows: 1 + + * - Constant + - Description + + * - .. data:: FIRST_COMPLETED + - The function will return when any future finishes or is cancelled. + + * - .. data:: FIRST_EXCEPTION + - The function will return when any future finishes by raising an + exception. If no future raises an exception + then it is equivalent to :const:`ALL_COMPLETED`. + + * - .. data:: ALL_COMPLETED + - The function will return when all futures finish or are cancelled. Unlike :func:`~asyncio.wait_for`, ``wait()`` does not cancel the futures when a timeout occurs. diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index 3dbef69580d..43a8bd2d7cd 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -4,8 +4,8 @@ .. module:: atexit :synopsis: Register and execute cleanup functions. -.. moduleauthor:: Skip Montanaro <skip@pobox.com> -.. sectionauthor:: Skip Montanaro <skip@pobox.com> +.. moduleauthor:: Skip Montanaro <skip.montanaro@gmail.com> +.. sectionauthor:: Skip Montanaro <skip.montanaro@gmail.com> -------------- diff --git a/Doc/library/bdb.rst b/Doc/library/bdb.rst index d201dc963b5..52f0ca7c013 100644 --- a/Doc/library/bdb.rst +++ b/Doc/library/bdb.rst @@ -132,8 +132,8 @@ The :mod:`bdb` module also defines two classes: frame is considered to originate in a certain module is determined by the ``__name__`` in the frame globals. - .. versionadded:: 3.1 - The *skip* argument. + .. versionchanged:: 3.1 + Added the *skip* parameter. The following methods of :class:`Bdb` normally don't need to be overridden. @@ -294,7 +294,7 @@ The :mod:`bdb` module also defines two classes: .. method:: set_quit() Set the :attr:`quitting` attribute to ``True``. This raises :exc:`BdbQuit` in - the next call to one of the :meth:`dispatch_\*` methods. + the next call to one of the :meth:`!dispatch_\*` methods. Derived classes and clients can call the following methods to manipulate diff --git a/Doc/library/bisect.rst b/Doc/library/bisect.rst index 8022c596f0a..31c79b91061 100644 --- a/Doc/library/bisect.rst +++ b/Doc/library/bisect.rst @@ -19,9 +19,9 @@ linear searches or frequent resorting. The module is called :mod:`bisect` because it uses a basic bisection algorithm to do its work. Unlike other bisection tools that search for a specific value, the functions in this module are designed to locate an -insertion point. Accordingly, the functions never call an :meth:`__eq__` +insertion point. Accordingly, the functions never call an :meth:`~object.__eq__` method to determine whether a value has been found. Instead, the -functions only call the :meth:`__lt__` method and will return an insertion +functions only call the :meth:`~object.__lt__` method and will return an insertion point between values in an array. .. _bisect functions: @@ -73,13 +73,13 @@ The following functions are provided: Insert *x* in *a* in sorted order. This function first runs :py:func:`~bisect.bisect_left` to locate an insertion point. - Next, it runs the :meth:`insert` method on *a* to insert *x* at the + Next, it runs the :meth:`!insert` method on *a* to insert *x* at the appropriate position to maintain sort order. To support inserting records in a table, the *key* function (if any) is applied to *x* for the search step but not for the insertion step. - Keep in mind that the ``O(log n)`` search is dominated by the slow O(n) + Keep in mind that the *O*\ (log *n*) search is dominated by the slow *O*\ (*n*) insertion step. .. versionchanged:: 3.10 @@ -93,13 +93,13 @@ The following functions are provided: entries of *x*. This function first runs :py:func:`~bisect.bisect_right` to locate an insertion point. - Next, it runs the :meth:`insert` method on *a* to insert *x* at the + Next, it runs the :meth:`!insert` method on *a* to insert *x* at the appropriate position to maintain sort order. To support inserting records in a table, the *key* function (if any) is applied to *x* for the search step but not for the insertion step. - Keep in mind that the ``O(log n)`` search is dominated by the slow O(n) + Keep in mind that the *O*\ (log *n*) search is dominated by the slow *O*\ (*n*) insertion step. .. versionchanged:: 3.10 @@ -115,7 +115,7 @@ thoughts in mind: * Bisection is effective for searching ranges of values. For locating specific values, dictionaries are more performant. -* The *insort()* functions are ``O(n)`` because the logarithmic search step +* The *insort()* functions are *O*\ (*n*) because the logarithmic search step is dominated by the linear time insertion step. * The search functions are stateless and discard key function results after diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst index 157a7537f97..6586f539a8d 100644 --- a/Doc/library/calendar.rst +++ b/Doc/library/calendar.rst @@ -196,6 +196,13 @@ interpreted as prescribed by the ISO 8601 standard. Year 0 is 1 BC, year -1 is output (defaulting to the system default encoding). + .. method:: formatmonthname(theyear, themonth, withyear=True) + + Return a month name as an HTML table row. If *withyear* is true the year + will be included in the row, otherwise just the month name will be + used. + + :class:`!HTMLCalendar` has the following attributes you can override to customize the CSS classes used by the calendar: @@ -289,7 +296,7 @@ interpreted as prescribed by the ISO 8601 standard. Year 0 is 1 BC, year -1 is .. note:: - The constructor, :meth:`formatweekday` and :meth:`formatmonthname` methods + The constructor, :meth:`!formatweekday` and :meth:`!formatmonthname` methods of these two classes temporarily change the ``LC_TIME`` locale to the given *locale*. Because the current locale is a process-wide setting, they are not thread-safe. @@ -358,7 +365,7 @@ For simple text calendars this module provides the following functions. .. function:: month(theyear, themonth, w=0, l=0) - Returns a month's calendar in a multi-line string using the :meth:`formatmonth` + Returns a month's calendar in a multi-line string using the :meth:`~TextCalendar.formatmonth` of the :class:`TextCalendar` class. @@ -370,7 +377,7 @@ For simple text calendars this module provides the following functions. .. function:: calendar(year, w=2, l=1, c=6, m=3) Returns a 3-column calendar for an entire year as a multi-line string using - the :meth:`formatyear` of the :class:`TextCalendar` class. + the :meth:`~TextCalendar.formatyear` of the :class:`TextCalendar` class. .. function:: timegm(tuple) diff --git a/Doc/library/cmd.rst b/Doc/library/cmd.rst index fd5df96dfd0..d80c79e3e54 100644 --- a/Doc/library/cmd.rst +++ b/Doc/library/cmd.rst @@ -66,29 +66,32 @@ A :class:`Cmd` instance has the following methods: single: ! (exclamation); in a command interpreter An interpreter instance will recognize a command name ``foo`` if and only if it - has a method :meth:`do_foo`. As a special case, a line beginning with the + has a method :meth:`!do_foo`. As a special case, a line beginning with the character ``'?'`` is dispatched to the method :meth:`do_help`. As another special case, a line beginning with the character ``'!'`` is dispatched to the - method :meth:`do_shell` (if such a method is defined). + method :meth:`!do_shell` (if such a method is defined). This method will return when the :meth:`postcmd` method returns a true value. The *stop* argument to :meth:`postcmd` is the return value from the command's - corresponding :meth:`do_\*` method. + corresponding :meth:`!do_\*` method. If completion is enabled, completing commands will be done automatically, and - completing of commands args is done by calling :meth:`complete_foo` with + completing of commands args is done by calling :meth:`!complete_foo` with arguments *text*, *line*, *begidx*, and *endidx*. *text* is the string prefix we are attempting to match: all returned matches must begin with it. *line* is the current input line with leading whitespace removed, *begidx* and *endidx* are the beginning and ending indexes of the prefix text, which could be used to provide different completion depending upon which position the argument is in. - All subclasses of :class:`Cmd` inherit a predefined :meth:`do_help`. This + +.. method:: Cmd.do_help(arg) + + All subclasses of :class:`Cmd` inherit a predefined :meth:`!do_help`. This method, called with an argument ``'bar'``, invokes the corresponding method - :meth:`help_bar`, and if that is not present, prints the docstring of - :meth:`do_bar`, if available. With no argument, :meth:`do_help` lists all + :meth:`!help_bar`, and if that is not present, prints the docstring of + :meth:`!do_bar`, if available. With no argument, :meth:`!do_help` lists all available help topics (that is, all commands with corresponding - :meth:`help_\*` methods or commands that have docstrings), and also lists any + :meth:`!help_\*` methods or commands that have docstrings), and also lists any undocumented commands. @@ -98,7 +101,7 @@ A :class:`Cmd` instance has the following methods: This may be overridden, but should not normally need to be; see the :meth:`precmd` and :meth:`postcmd` methods for useful execution hooks. The return value is a flag indicating whether interpretation of commands by the - interpreter should stop. If there is a :meth:`do_\*` method for the command + interpreter should stop. If there is a :meth:`!do_\*` method for the command *str*, the return value of that method is returned, otherwise the return value from the :meth:`default` method is returned. @@ -118,7 +121,7 @@ A :class:`Cmd` instance has the following methods: .. method:: Cmd.completedefault(text, line, begidx, endidx) Method called to complete an input line when no command-specific - :meth:`complete_\*` method is available. By default, it returns an empty list. + :meth:`!complete_\*` method is available. By default, it returns an empty list. .. method:: Cmd.columnize(list, displaywidth=80) @@ -199,14 +202,14 @@ Instances of :class:`Cmd` subclasses have some public instance variables: .. attribute:: Cmd.misc_header The header to issue if the help output has a section for miscellaneous help - topics (that is, there are :meth:`help_\*` methods without corresponding - :meth:`do_\*` methods). + topics (that is, there are :meth:`!help_\*` methods without corresponding + :meth:`!do_\*` methods). .. attribute:: Cmd.undoc_header The header to issue if the help output has a section for undocumented commands - (that is, there are :meth:`do_\*` methods without corresponding :meth:`help_\*` + (that is, there are :meth:`!do_\*` methods without corresponding :meth:`!help_\*` methods). @@ -219,8 +222,8 @@ Instances of :class:`Cmd` subclasses have some public instance variables: .. attribute:: Cmd.use_rawinput A flag, defaulting to true. If true, :meth:`cmdloop` uses :func:`input` to - display a prompt and read the next command; if false, :meth:`sys.stdout.write` - and :meth:`sys.stdin.readline` are used. (This means that by importing + display a prompt and read the next command; if false, :data:`sys.stdout.write() <sys.stdout>` + and :data:`sys.stdin.readline() <sys.stdin>` are used. (This means that by importing :mod:`readline`, on systems that support it, the interpreter will automatically support :program:`Emacs`\ -like line editing and command-history keystrokes.) @@ -239,14 +242,14 @@ This section presents a simple example of how to build a shell around a few of the commands in the :mod:`turtle` module. Basic turtle commands such as :meth:`~turtle.forward` are added to a -:class:`Cmd` subclass with method named :meth:`do_forward`. The argument is +:class:`Cmd` subclass with method named :meth:`!do_forward`. The argument is converted to a number and dispatched to the turtle module. The docstring is used in the help utility provided by the shell. The example also includes a basic record and playback facility implemented with the :meth:`~Cmd.precmd` method which is responsible for converting the input to -lowercase and writing the commands to a file. The :meth:`do_playback` method -reads the file and adds the recorded commands to the :attr:`cmdqueue` for +lowercase and writing the commands to a file. The :meth:`!do_playback` method +reads the file and adds the recorded commands to the :attr:`~Cmd.cmdqueue` for immediate playback:: import cmd, sys diff --git a/Doc/library/collections.abc.rst b/Doc/library/collections.abc.rst index edc07895329..7bcaba60c6d 100644 --- a/Doc/library/collections.abc.rst +++ b/Doc/library/collections.abc.rst @@ -22,7 +22,7 @@ This module provides :term:`abstract base classes <abstract base class>` that can be used to test whether a class provides a particular interface; for -example, whether it is :term:`hashable` or whether it is a mapping. +example, whether it is :term:`hashable` or whether it is a :term:`mapping`. An :func:`issubclass` or :func:`isinstance` test for an interface works in one of three ways. @@ -73,7 +73,7 @@ of the API: >>> isinstance(D(), Sequence) True -In this example, class :class:`D` does not need to define +In this example, class :class:`!D` does not need to define ``__contains__``, ``__iter__``, and ``__reversed__`` because the :ref:`in-operator <comparisons>`, the :term:`iteration <iterable>` logic, and the :func:`reversed` function automatically fall back to @@ -87,7 +87,7 @@ the required methods (unless those methods have been set to class E: def __iter__(self): ... - def __next__(next): ... + def __next__(self): ... .. doctest:: @@ -136,8 +136,8 @@ ABC Inherits from Abstract Methods Mi :class:`Collection` ``__len__`` ``index``, and ``count`` :class:`MutableSequence` :class:`Sequence` ``__getitem__``, Inherited :class:`Sequence` methods and - ``__setitem__``, ``append``, ``reverse``, ``extend``, ``pop``, - ``__delitem__``, ``remove``, and ``__iadd__`` + ``__setitem__``, ``append``, ``clear``, ``reverse``, ``extend``, + ``__delitem__``, ``pop``, ``remove``, and ``__iadd__`` ``__len__``, ``insert`` @@ -183,14 +183,14 @@ ABC Inherits from Abstract Methods Mi .. rubric:: Footnotes -.. [1] These ABCs override :meth:`object.__subclasshook__` to support +.. [1] These ABCs override :meth:`~abc.ABCMeta.__subclasshook__` to support testing an interface by verifying the required methods are present and have not been set to :const:`None`. This only works for simple interfaces. More complex interfaces require registration or direct subclassing. .. [2] Checking ``isinstance(obj, Iterable)`` detects classes that are - registered as :class:`Iterable` or that have an :meth:`__iter__` + registered as :class:`Iterable` or that have an :meth:`~container.__iter__` method, but it does not detect classes that iterate with the :meth:`~object.__getitem__` method. The only reliable way to determine whether an object is :term:`iterable` is to call ``iter(obj)``. @@ -202,26 +202,27 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: Container - ABC for classes that provide the :meth:`__contains__` method. + ABC for classes that provide the :meth:`~object.__contains__` method. .. class:: Hashable - ABC for classes that provide the :meth:`__hash__` method. + ABC for classes that provide the :meth:`~object.__hash__` method. .. class:: Sized - ABC for classes that provide the :meth:`__len__` method. + ABC for classes that provide the :meth:`~object.__len__` method. .. class:: Callable - ABC for classes that provide the :meth:`__call__` method. + ABC for classes that provide the :meth:`~object.__call__` method. .. class:: Iterable - ABC for classes that provide the :meth:`__iter__` method. + ABC for classes that provide the :meth:`~container.__iter__` method. Checking ``isinstance(obj, Iterable)`` detects classes that are registered - as :class:`Iterable` or that have an :meth:`__iter__` method, but it does + as :class:`Iterable` or that have an :meth:`~container.__iter__` method, + but it does not detect classes that iterate with the :meth:`~object.__getitem__` method. The only reliable way to determine whether an object is :term:`iterable` is to call ``iter(obj)``. @@ -240,17 +241,17 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: Reversible - ABC for iterable classes that also provide the :meth:`__reversed__` + ABC for iterable classes that also provide the :meth:`~object.__reversed__` method. .. versionadded:: 3.6 .. class:: Generator - ABC for generator classes that implement the protocol defined in - :pep:`342` that extends iterators with the :meth:`~generator.send`, + ABC for :term:`generator` classes that implement the protocol defined in + :pep:`342` that extends :term:`iterators <iterator>` with the + :meth:`~generator.send`, :meth:`~generator.throw` and :meth:`~generator.close` methods. - See also the definition of :term:`generator`. .. versionadded:: 3.5 @@ -261,7 +262,7 @@ Collections Abstract Base Classes -- Detailed Descriptions ABCs for read-only and mutable :term:`sequences <sequence>`. Implementation note: Some of the mixin methods, such as - :meth:`__iter__`, :meth:`__reversed__` and :meth:`index`, make + :meth:`~container.__iter__`, :meth:`~object.__reversed__` and :meth:`index`, make repeated calls to the underlying :meth:`~object.__getitem__` method. Consequently, if :meth:`~object.__getitem__` is implemented with constant access speed, the mixin methods will have linear performance; @@ -282,7 +283,7 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: Set MutableSet - ABCs for read-only and mutable sets. + ABCs for read-only and mutable :ref:`sets <types-set>`. .. class:: Mapping MutableMapping @@ -299,16 +300,16 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: Awaitable ABC for :term:`awaitable` objects, which can be used in :keyword:`await` - expressions. Custom implementations must provide the :meth:`__await__` - method. + expressions. Custom implementations must provide the + :meth:`~object.__await__` method. :term:`Coroutine <coroutine>` objects and instances of the :class:`~collections.abc.Coroutine` ABC are all instances of this ABC. .. note:: - In CPython, generator-based coroutines (generators decorated with - :func:`types.coroutine`) are - *awaitables*, even though they do not have an :meth:`__await__` method. + In CPython, generator-based coroutines (:term:`generators <generator>` + decorated with :func:`@types.coroutine <types.coroutine>`) are + *awaitables*, even though they do not have an :meth:`~object.__await__` method. Using ``isinstance(gencoro, Awaitable)`` for them will return ``False``. Use :func:`inspect.isawaitable` to detect them. @@ -316,17 +317,17 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: Coroutine - ABC for coroutine compatible classes. These implement the + ABC for :term:`coroutine` compatible classes. These implement the following methods, defined in :ref:`coroutine-objects`: :meth:`~coroutine.send`, :meth:`~coroutine.throw`, and :meth:`~coroutine.close`. Custom implementations must also implement - :meth:`__await__`. All :class:`Coroutine` instances are also instances of - :class:`Awaitable`. See also the definition of :term:`coroutine`. + :meth:`~object.__await__`. All :class:`Coroutine` instances are also + instances of :class:`Awaitable`. .. note:: - In CPython, generator-based coroutines (generators decorated with - :func:`types.coroutine`) are - *awaitables*, even though they do not have an :meth:`__await__` method. + In CPython, generator-based coroutines (:term:`generators <generator>` + decorated with :func:`@types.coroutine <types.coroutine>`) are + *awaitables*, even though they do not have an :meth:`~object.__await__` method. Using ``isinstance(gencoro, Coroutine)`` for them will return ``False``. Use :func:`inspect.isawaitable` to detect them. @@ -334,7 +335,7 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: AsyncIterable - ABC for classes that provide ``__aiter__`` method. See also the + ABC for classes that provide an ``__aiter__`` method. See also the definition of :term:`asynchronous iterable`. .. versionadded:: 3.5 @@ -348,7 +349,7 @@ Collections Abstract Base Classes -- Detailed Descriptions .. class:: AsyncGenerator - ABC for asynchronous generator classes that implement the protocol + ABC for :term:`asynchronous generator` classes that implement the protocol defined in :pep:`525` and :pep:`492`. .. versionadded:: 3.6 @@ -373,9 +374,9 @@ particular functionality, for example:: Several of the ABCs are also useful as mixins that make it easier to develop classes supporting container APIs. For example, to write a class supporting the full :class:`Set` API, it is only necessary to supply the three underlying -abstract methods: :meth:`__contains__`, :meth:`__iter__`, and :meth:`__len__`. -The ABC supplies the remaining methods such as :meth:`__and__` and -:meth:`isdisjoint`:: +abstract methods: :meth:`~object.__contains__`, :meth:`~container.__iter__`, and +:meth:`~object.__len__`. The ABC supplies the remaining methods such as +:meth:`!__and__` and :meth:`~frozenset.isdisjoint`:: class ListBasedSet(collections.abc.Set): ''' Alternate set implementation favoring space over speed @@ -403,23 +404,24 @@ Notes on using :class:`Set` and :class:`MutableSet` as a mixin: (1) Since some set operations create new sets, the default mixin methods need - a way to create new instances from an iterable. The class constructor is + a way to create new instances from an :term:`iterable`. The class constructor is assumed to have a signature in the form ``ClassName(iterable)``. - That assumption is factored-out to an internal classmethod called - :meth:`_from_iterable` which calls ``cls(iterable)`` to produce a new set. + That assumption is factored-out to an internal :class:`classmethod` called + :meth:`!_from_iterable` which calls ``cls(iterable)`` to produce a new set. If the :class:`Set` mixin is being used in a class with a different - constructor signature, you will need to override :meth:`_from_iterable` + constructor signature, you will need to override :meth:`!_from_iterable` with a classmethod or regular method that can construct new instances from an iterable argument. (2) To override the comparisons (presumably for speed, as the - semantics are fixed), redefine :meth:`__le__` and :meth:`__ge__`, + semantics are fixed), redefine :meth:`~object.__le__` and + :meth:`~object.__ge__`, then the other operations will automatically follow suit. (3) - The :class:`Set` mixin provides a :meth:`_hash` method to compute a hash value - for the set; however, :meth:`__hash__` is not defined because not all sets + The :class:`Set` mixin provides a :meth:`!_hash` method to compute a hash value + for the set; however, :meth:`~object.__hash__` is not defined because not all sets are :term:`hashable` or immutable. To add set hashability using mixins, inherit from both :meth:`Set` and :meth:`Hashable`, then define ``__hash__ = Set._hash``. diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index eec2330ca97..1a3084ef107 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -458,10 +458,10 @@ or subtracting from an empty counter. Deques are a generalization of stacks and queues (the name is pronounced "deck" and is short for "double-ended queue"). Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the - same O(1) performance in either direction. + same *O*\ (1) performance in either direction. Though :class:`list` objects support similar operations, they are optimized for - fast fixed-length operations and incur O(n) memory movement costs for + fast fixed-length operations and incur *O*\ (*n*) memory movement costs for ``pop(0)`` and ``insert(0, v)`` operations which change both the size and position of the underlying data representation. @@ -585,7 +585,7 @@ or subtracting from an empty counter. In addition to the above, deques support iteration, pickling, ``len(d)``, ``reversed(d)``, ``copy.copy(d)``, ``copy.deepcopy(d)``, membership testing with the :keyword:`in` operator, and subscript references such as ``d[0]`` to access -the first element. Indexed access is O(1) at both ends but slows to O(n) in +the first element. Indexed access is *O*\ (1) at both ends but slows to *O*\ (*n*) in the middle. For fast random access, use lists instead. Starting in version 3.5, deques support ``__add__()``, ``__mul__()``, diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst index 163f170927b..dbae03d47b9 100644 --- a/Doc/library/concurrent.futures.rst +++ b/Doc/library/concurrent.futures.rst @@ -39,14 +39,14 @@ Executor Objects future = executor.submit(pow, 323, 1235) print(future.result()) - .. method:: map(func, *iterables, timeout=None, chunksize=1) + .. method:: map(fn, *iterables, timeout=None, chunksize=1) - Similar to :func:`map(func, *iterables) <map>` except: + Similar to :func:`map(fn, *iterables) <map>` except: * the *iterables* are collected immediately rather than lazily; - * *func* is executed asynchronously and several calls to - *func* may be made concurrently. + * *fn* is executed asynchronously and several calls to + *fn* may be made concurrently. The returned iterator raises a :exc:`TimeoutError` if :meth:`~iterator.__next__` is called and the result isn't available @@ -54,7 +54,7 @@ Executor Objects *timeout* can be an int or a float. If *timeout* is not specified or ``None``, there is no limit to the wait time. - If a *func* call raises an exception, then that exception will be + If a *fn* call raises an exception, then that exception will be raised when its value is retrieved from the iterator. When using :class:`ProcessPoolExecutor`, this method chops *iterables* @@ -171,8 +171,8 @@ And:: should be higher than the number of workers for :class:`ProcessPoolExecutor`. - .. versionadded:: 3.6 - The *thread_name_prefix* argument was added to allow users to + .. versionchanged:: 3.6 + Added the *thread_name_prefix* parameter to allow users to control the :class:`threading.Thread` names for worker threads created by the pool for easier debugging. @@ -271,7 +271,8 @@ to a :class:`ProcessPoolExecutor` will result in deadlock. .. versionchanged:: 3.3 When one of the worker processes terminates abruptly, a - :exc:`BrokenProcessPool` error is now raised. Previously, behaviour + :exc:`~concurrent.futures.process.BrokenProcessPool` error is now raised. + Previously, behaviour was undefined but operations on the executor or its futures would often freeze or deadlock. @@ -485,23 +486,22 @@ Module Functions *return_when* indicates when this function should return. It must be one of the following constants: - .. tabularcolumns:: |l|L| - - +-----------------------------+----------------------------------------+ - | Constant | Description | - +=============================+========================================+ - | :const:`FIRST_COMPLETED` | The function will return when any | - | | future finishes or is cancelled. | - +-----------------------------+----------------------------------------+ - | :const:`FIRST_EXCEPTION` | The function will return when any | - | | future finishes by raising an | - | | exception. If no future raises an | - | | exception then it is equivalent to | - | | :const:`ALL_COMPLETED`. | - +-----------------------------+----------------------------------------+ - | :const:`ALL_COMPLETED` | The function will return when all | - | | futures finish or are cancelled. | - +-----------------------------+----------------------------------------+ + .. list-table:: + :header-rows: 1 + + * - Constant + - Description + + * - .. data:: FIRST_COMPLETED + - The function will return when any future finishes or is cancelled. + + * - .. data:: FIRST_EXCEPTION + - The function will return when any future finishes by raising an + exception. If no future raises an exception + then it is equivalent to :const:`ALL_COMPLETED`. + + * - .. data:: ALL_COMPLETED + - The function will return when all futures finish or are cancelled. .. function:: as_completed(fs, timeout=None) @@ -562,7 +562,8 @@ Exception classes .. exception:: BrokenThreadPool Derived from :exc:`~concurrent.futures.BrokenExecutor`, this exception - class is raised when one of the workers of a :class:`ThreadPoolExecutor` + class is raised when one of the workers + of a :class:`~concurrent.futures.ThreadPoolExecutor` has failed initializing. .. versionadded:: 3.7 @@ -573,7 +574,8 @@ Exception classes Derived from :exc:`~concurrent.futures.BrokenExecutor` (formerly :exc:`RuntimeError`), this exception class is raised when one of the - workers of a :class:`ProcessPoolExecutor` has terminated in a non-clean + workers of a :class:`~concurrent.futures.ProcessPoolExecutor` + has terminated in a non-clean fashion (for example, if it was killed from the outside). .. versionadded:: 3.3 diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index bb282428c5f..18e5bc20f3f 100644 --- a/Doc/library/configparser.rst +++ b/Doc/library/configparser.rst @@ -208,7 +208,7 @@ converters and customize the provided ones. [1]_ Fallback Values --------------- -As with a dictionary, you can use a section's :meth:`get` method to +As with a dictionary, you can use a section's :meth:`~ConfigParser.get` method to provide fallback values: .. doctest:: @@ -232,7 +232,7 @@ even if we specify a fallback: >>> topsecret.get('CompressionLevel', '3') '9' -One more thing to be aware of is that the parser-level :meth:`get` method +One more thing to be aware of is that the parser-level :meth:`~ConfigParser.get` method provides a custom, more complex interface, maintained for backwards compatibility. When using this method, a fallback value can be provided via the ``fallback`` keyword-only argument: @@ -271,7 +271,7 @@ out. Values can also span multiple lines, as long as they are indented deeper than the first line of the value. Depending on the parser's mode, blank lines may be treated as parts of multiline values or ignored. -By default, a valid section name can be any string that does not contain '\\n' or ']'. +By default, a valid section name can be any string that does not contain '\\n'. To change this, see :attr:`ConfigParser.SECTCRE`. Configuration files may include comments, prefixed by specific @@ -481,7 +481,7 @@ historical background and it's very likely that you will want to customize some of the features. The most common way to change the way a specific config parser works is to use -the :meth:`__init__` options: +the :meth:`!__init__` options: * *defaults*, default value: ``None`` @@ -491,7 +491,7 @@ the :meth:`__init__` options: the documented default. Hint: if you want to specify default values for a specific section, use - :meth:`read_dict` before you read the actual file. + :meth:`~ConfigParser.read_dict` before you read the actual file. * *dict_type*, default value: :class:`dict` @@ -635,8 +635,8 @@ the :meth:`__init__` options: * *strict*, default value: ``True`` When set to ``True``, the parser will not allow for any section or option - duplicates while reading from a single source (using :meth:`read_file`, - :meth:`read_string` or :meth:`read_dict`). It is recommended to use strict + duplicates while reading from a single source (using :meth:`~ConfigParser.read_file`, + :meth:`~ConfigParser.read_string` or :meth:`~ConfigParser.read_dict`). It is recommended to use strict parsers in new applications. .. versionchanged:: 3.2 @@ -697,7 +697,7 @@ the :meth:`__init__` options: desirable, users may define them in a subclass or pass a dictionary where each key is a name of the converter and each value is a callable implementing said conversion. For instance, passing ``{'decimal': decimal.Decimal}`` would add - :meth:`getdecimal` on both the parser object and all section proxies. In + :meth:`!getdecimal` on both the parser object and all section proxies. In other words, it will be possible to write both ``parser_instance.getdecimal('section', 'key', fallback=0)`` and ``parser_instance['section'].getdecimal('key', 0)``. @@ -955,7 +955,7 @@ ConfigParser Objects When *converters* is given, it should be a dictionary where each key represents the name of a type converter and each value is a callable implementing the conversion from string to the desired datatype. Every - converter gets its own corresponding :meth:`get*()` method on the parser + converter gets its own corresponding :meth:`!get*()` method on the parser object and section proxies. .. versionchanged:: 3.1 @@ -1045,14 +1045,14 @@ ConfigParser Objects config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')], encoding='cp1250') - .. versionadded:: 3.2 - The *encoding* parameter. Previously, all files were read using the - default encoding for :func:`open`. + .. versionchanged:: 3.2 + Added the *encoding* parameter. + Previously, all files were read using the default encoding for :func:`open`. - .. versionadded:: 3.6.1 + .. versionchanged:: 3.6.1 The *filenames* parameter accepts a :term:`path-like object`. - .. versionadded:: 3.7 + .. versionchanged:: 3.7 The *filenames* parameter accepts a :class:`bytes` object. @@ -1062,11 +1062,11 @@ ConfigParser Objects yielding Unicode strings (for example files opened in text mode). Optional argument *source* specifies the name of the file being read. If - not given and *f* has a :attr:`name` attribute, that is used for + not given and *f* has a :attr:`!name` attribute, that is used for *source*; the default is ``'<???>'``. .. versionadded:: 3.2 - Replaces :meth:`readfp`. + Replaces :meth:`!readfp`. .. method:: read_string(string, source='<string>') @@ -1214,7 +1214,7 @@ ConfigParser Objects .. data:: MAX_INTERPOLATION_DEPTH - The maximum depth for recursive interpolation for :meth:`get` when the *raw* + The maximum depth for recursive interpolation for :meth:`~configparser.ConfigParser.get` when the *raw* parameter is false. This is relevant only when the default *interpolation* is used. @@ -1287,13 +1287,13 @@ Exceptions .. exception:: DuplicateSectionError - Exception raised if :meth:`add_section` is called with the name of a section + Exception raised if :meth:`~ConfigParser.add_section` is called with the name of a section that is already present or in strict parsers when a section if found more than once in a single input file, string or dictionary. - .. versionadded:: 3.2 - Optional ``source`` and ``lineno`` attributes and arguments to - :meth:`__init__` were added. + .. versionchanged:: 3.2 + Added the optional *source* and *lineno* attributes and parameters to + :meth:`!__init__`. .. exception:: DuplicateOptionError @@ -1345,9 +1345,9 @@ Exceptions Exception raised when errors occur attempting to parse a file. -.. versionchanged:: 3.12 - The ``filename`` attribute and :meth:`__init__` constructor argument were - removed. They have been available using the name ``source`` since 3.2. + .. versionchanged:: 3.12 + The ``filename`` attribute and :meth:`!__init__` constructor argument were + removed. They have been available using the name ``source`` since 3.2. .. rubric:: Footnotes diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index f6ebbfacfba..73e53aec9cb 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -106,8 +106,8 @@ Functions and classes provided: This function is a :term:`decorator` that can be used to define a factory function for :keyword:`async with` statement asynchronous context managers, - without needing to create a class or separate :meth:`__aenter__` and - :meth:`__aexit__` methods. It must be applied to an :term:`asynchronous + without needing to create a class or separate :meth:`~object.__aenter__` and + :meth:`~object.__aexit__` methods. It must be applied to an :term:`asynchronous generator` function. A simple example:: @@ -182,6 +182,14 @@ Functions and classes provided: without needing to explicitly close ``page``. Even if an error occurs, ``page.close()`` will be called when the :keyword:`with` block is exited. + .. note:: + + Most types managing resources support the :term:`context manager` protocol, + which closes *thing* on leaving the :keyword:`with` statement. + As such, :func:`!closing` is most useful for third party types that don't + support context managers. + This example is purely for illustration purposes, + as :func:`~urllib.request.urlopen` would normally be used in a context manager. .. function:: aclosing(thing) @@ -616,12 +624,12 @@ Functions and classes provided: asynchronous context managers, as well as having coroutines for cleanup logic. - The :meth:`close` method is not implemented, :meth:`aclose` must be used + The :meth:`~ExitStack.close` method is not implemented; :meth:`aclose` must be used instead. .. coroutinemethod:: enter_async_context(cm) - Similar to :meth:`enter_context` but expects an asynchronous context + Similar to :meth:`ExitStack.enter_context` but expects an asynchronous context manager. .. versionchanged:: 3.11 @@ -630,16 +638,16 @@ Functions and classes provided: .. method:: push_async_exit(exit) - Similar to :meth:`push` but expects either an asynchronous context manager + Similar to :meth:`ExitStack.push` but expects either an asynchronous context manager or a coroutine function. .. method:: push_async_callback(callback, /, *args, **kwds) - Similar to :meth:`callback` but expects a coroutine function. + Similar to :meth:`ExitStack.callback` but expects a coroutine function. .. coroutinemethod:: aclose() - Similar to :meth:`close` but properly handles awaitables. + Similar to :meth:`ExitStack.close` but properly handles awaitables. Continuing the example for :func:`asynccontextmanager`:: diff --git a/Doc/library/contextvars.rst b/Doc/library/contextvars.rst index 0ac2f3d8574..647832447de 100644 --- a/Doc/library/contextvars.rst +++ b/Doc/library/contextvars.rst @@ -131,7 +131,7 @@ Manual Context Management ctx: Context = copy_context() print(list(ctx.items())) - The function has an O(1) complexity, i.e. works equally fast for + The function has an *O*\ (1) complexity, i.e. works equally fast for contexts with a few context variables and for contexts that have a lot of them. diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst index aba398b8ee1..4ee7820585d 100644 --- a/Doc/library/csv.rst +++ b/Doc/library/csv.rst @@ -4,7 +4,7 @@ .. module:: csv :synopsis: Write and read tabular data to and from delimited files. -.. sectionauthor:: Skip Montanaro <skip@pobox.com> +.. sectionauthor:: Skip Montanaro <skip.montanaro@gmail.com> **Source code:** :source:`Lib/csv.py` @@ -55,10 +55,11 @@ The :mod:`csv` module defines the following functions: .. function:: reader(csvfile, dialect='excel', **fmtparams) - Return a reader object which will iterate over lines in the given *csvfile*. - *csvfile* can be any object which supports the :term:`iterator` protocol and returns a - string each time its :meth:`!__next__` method is called --- :term:`file objects - <file object>` and list objects are both suitable. If *csvfile* is a file object, + Return a :ref:`reader object <reader-objects>` that will process + lines from the given *csvfile*. A csvfile must be an iterable of + strings, each in the reader's defined csv format. + A csvfile is most commonly a file-like object or list. + If *csvfile* is a file object, it should be opened with ``newline=''``. [1]_ An optional *dialect* parameter can be given which is used to define a set of parameters specific to a particular CSV dialect. It may be an instance of a subclass of @@ -87,7 +88,7 @@ The :mod:`csv` module defines the following functions: Return a writer object responsible for converting the user's data into delimited strings on the given file-like object. *csvfile* can be any object with a - :func:`write` method. If *csvfile* is a file object, it should be opened with + :meth:`~io.TextIOBase.write` method. If *csvfile* is a file object, it should be opened with ``newline=''`` [1]_. An optional *dialect* parameter can be given which is used to define a set of parameters specific to a particular CSV dialect. It may be an instance of a subclass of the @@ -196,10 +197,10 @@ The :mod:`csv` module defines the following classes: Create an object which operates like a regular writer but maps dictionaries onto output rows. The *fieldnames* parameter is a :mod:`sequence <collections.abc>` of keys that identify the order in which values in the - dictionary passed to the :meth:`writerow` method are written to file + dictionary passed to the :meth:`~csvwriter.writerow` method are written to file *f*. The optional *restval* parameter specifies the value to be written if the dictionary is missing a key in *fieldnames*. If the - dictionary passed to the :meth:`writerow` method contains a key not found in + dictionary passed to the :meth:`~csvwriter.writerow` method contains a key not found in *fieldnames*, the optional *extrasaction* parameter indicates what action to take. If it is set to ``'raise'``, the default value, a :exc:`ValueError` @@ -243,7 +244,6 @@ The :mod:`csv` module defines the following classes: with open('students.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile, dialect='unix') - ^^^^^^^^^^^^^^ .. class:: excel() @@ -309,6 +309,8 @@ An example for :class:`Sniffer` use:: # ... process CSV file contents here ... +.. _csv-constants: + The :mod:`csv` module defines the following constants: .. data:: QUOTE_ALL @@ -348,6 +350,8 @@ The :mod:`csv` module defines the following constants: Instructs :class:`reader` objects to interpret an empty (unquoted) field as None and to otherwise behave as :data:`QUOTE_ALL`. + .. versionadded:: 3.12 + .. data:: QUOTE_STRINGS Instructs :class:`writer` objects to always place quotes around fields @@ -357,6 +361,8 @@ The :mod:`csv` module defines the following constants: Instructs :class:`reader` objects to interpret an empty (unquoted) string as ``None`` and to otherwise behave as :data:`QUOTE_NONNUMERIC`. + .. versionadded:: 3.12 + The :mod:`csv` module defines the following exception: @@ -371,8 +377,8 @@ Dialects and Formatting Parameters To make it easier to specify the format of input and output records, specific formatting parameters are grouped together into dialects. A dialect is a -subclass of the :class:`Dialect` class having a set of specific methods and a -single :meth:`validate` method. When creating :class:`reader` or +subclass of the :class:`Dialect` class containing various attributes +describing the format of the CSV file. When creating :class:`reader` or :class:`writer` objects, the programmer can specify a string or a subclass of the :class:`Dialect` class as the dialect parameter. In addition to, or instead of, the *dialect* parameter, the programmer can also specify individual @@ -432,8 +438,8 @@ Dialects support the following attributes: .. attribute:: Dialect.quoting Controls when quotes should be generated by the writer and recognised by the - reader. It can take on any of the :const:`QUOTE_\*` constants (see section - :ref:`csv-contents`) and defaults to :const:`QUOTE_MINIMAL`. + reader. It can take on any of the :ref:`QUOTE_\* constants <csv-constants>` + and defaults to :const:`QUOTE_MINIMAL`. .. attribute:: Dialect.skipinitialspace @@ -447,6 +453,8 @@ Dialects support the following attributes: When ``True``, raise exception :exc:`Error` on bad CSV input. The default is ``False``. +.. _reader-objects: + Reader Objects -------------- @@ -487,9 +495,9 @@ DictReader objects have the following public attribute: Writer Objects -------------- -:class:`Writer` objects (:class:`DictWriter` instances and objects returned by +:class:`writer` objects (:class:`DictWriter` instances and objects returned by the :func:`writer` function) have the following public methods. A *row* must be -an iterable of strings or numbers for :class:`Writer` objects and a dictionary +an iterable of strings or numbers for :class:`writer` objects and a dictionary mapping fieldnames to strings or numbers (by passing them through :func:`str` first) for :class:`DictWriter` objects. Note that complex numbers are written out surrounded by parens. This may cause some problems for other programs which diff --git a/Doc/library/dataclasses.rst b/Doc/library/dataclasses.rst index 1b2f6d454da..020818a0812 100644 --- a/Doc/library/dataclasses.rst +++ b/Doc/library/dataclasses.rst @@ -534,10 +534,10 @@ class :meth:`~object.__init__` methods. If the base class has an :meth:`~object. that has to be called, it is common to call this method in a :meth:`__post_init__` method:: - @dataclass class Rectangle: - height: float - width: float + def __init__(self, height, width): + self.height = height + self.width = width @dataclass class Square(Rectangle): diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index 649f1a3a5fc..daf023f3205 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -14,7 +14,7 @@ .. XXX what order should the types be discussed in? -The :mod:`datetime` module supplies classes for manipulating dates and times. +The :mod:`!datetime` module supplies classes for manipulating dates and times. While date and time arithmetic is supported, the focus of the implementation is on efficient attribute extraction for output formatting and manipulation. @@ -70,7 +70,7 @@ These :class:`tzinfo` objects capture information about the offset from UTC time, the time zone name, and whether daylight saving time is in effect. Only one concrete :class:`tzinfo` class, the :class:`timezone` class, is -supplied by the :mod:`datetime` module. The :class:`timezone` class can +supplied by the :mod:`!datetime` module. The :class:`timezone` class can represent simple timezones with fixed offsets from UTC, such as UTC itself or North American EST and EDT timezones. Supporting timezones at deeper levels of detail is up to the application. The rules for time adjustment across the @@ -80,7 +80,7 @@ standard suitable for every application aside from UTC. Constants --------- -The :mod:`datetime` module exports the following constants: +The :mod:`!datetime` module exports the following constants: .. data:: MINYEAR @@ -130,8 +130,8 @@ Available Types .. class:: timedelta :noindex: - A duration expressing the difference between two :class:`date`, :class:`.time`, - or :class:`.datetime` instances to microsecond resolution. + A duration expressing the difference between two :class:`.datetime` + or :class:`date` instances to microsecond resolution. .. class:: tzinfo @@ -203,7 +203,7 @@ objects. -------------------------- A :class:`timedelta` object represents a duration, the difference between two -dates or times. +:class:`.datetime` or :class:`date` instances. .. class:: timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) @@ -400,30 +400,7 @@ objects (see below). the :func:`divmod` function. True division and multiplication of a :class:`timedelta` object by a :class:`float` object are now supported. - -Comparisons of :class:`timedelta` objects are supported, with some caveats. - -The comparisons ``==`` or ``!=`` *always* return a :class:`bool`, no matter -the type of the compared object:: - - >>> from datetime import timedelta - >>> delta1 = timedelta(seconds=57) - >>> delta2 = timedelta(hours=25, seconds=2) - >>> delta2 != delta1 - True - >>> delta2 == 5 - False - -For all other comparisons (such as ``<`` and ``>``), when a :class:`timedelta` -object is compared to an object of a different type, :exc:`TypeError` -is raised:: - - >>> delta2 > delta1 - True - >>> delta2 > 5 - Traceback (most recent call last): - File "<stdin>", line 1, in <module> - TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int' +:class:`timedelta` objects support equality and order comparisons. In Boolean contexts, a :class:`timedelta` object is considered to be true if and only if it isn't equal to ``timedelta(0)``. @@ -536,7 +513,15 @@ Other constructors, all class methods: .. classmethod:: date.fromisoformat(date_string) Return a :class:`date` corresponding to a *date_string* given in any valid - ISO 8601 format, except ordinal dates (e.g. ``YYYY-DDD``):: + ISO 8601 format, with the following exceptions: + + 1. Reduced precision dates are not currently supported (``YYYY-MM``, + ``YYYY``). + 2. Extended date representations are not currently supported + (``±YYYYYY-MM-DD``). + 3. Ordinal dates are not currently supported (``YYYY-OOO``). + + Examples:: >>> from datetime import date >>> date.fromisoformat('2019-12-04') @@ -606,8 +591,13 @@ Supported operations: +-------------------------------+----------------------------------------------+ | ``timedelta = date1 - date2`` | \(3) | +-------------------------------+----------------------------------------------+ -| ``date1 < date2`` | *date1* is considered less than *date2* when | -| | *date1* precedes *date2* in time. (4) | +| | ``date1 == date2`` | Equality comparison. (4) | +| | ``date1 != date2`` | | ++-------------------------------+----------------------------------------------+ +| | ``date1 < date2`` | Order comparison. (5) | +| | ``date1 > date2`` | | +| | ``date1 <= date2`` | | +| | ``date1 >= date2`` | | +-------------------------------+----------------------------------------------+ Notes: @@ -627,15 +617,12 @@ Notes: timedelta.microseconds are 0, and date2 + timedelta == date1 after. (4) + :class:`date` objects are equal if they represent the same date. + +(5) + *date1* is considered less than *date2* when *date1* precedes *date2* in time. In other words, ``date1 < date2`` if and only if ``date1.toordinal() < - date2.toordinal()``. Date comparison raises :exc:`TypeError` if - the other comparand isn't also a :class:`date` object. However, - ``NotImplemented`` is returned instead if the other comparand has a - :meth:`timetuple` attribute. This hook gives other kinds of date objects a - chance at implementing mixed-type comparison. If not, when a :class:`date` - object is compared to an object of a different type, :exc:`TypeError` is raised - unless the comparison is ``==`` or ``!=``. The latter cases return - :const:`False` or :const:`True`, respectively. + date2.toordinal()``. In Boolean contexts, all :class:`date` objects are considered to be true. @@ -856,8 +843,8 @@ Constructor: If an argument outside those ranges is given, :exc:`ValueError` is raised. - .. versionadded:: 3.6 - Added the ``fold`` argument. + .. versionchanged:: 3.6 + Added the *fold* parameter. Other constructors, all class methods: @@ -1014,8 +1001,12 @@ Other constructors, all class methods: 1. Time zone offsets may have fractional seconds. 2. The ``T`` separator may be replaced by any single unicode character. - 3. Ordinal dates are not currently supported. - 4. Fractional hours and minutes are not supported. + 3. Fractional hours and minutes are not supported. + 4. Reduced precision dates are not currently supported (``YYYY-MM``, + ``YYYY``). + 5. Extended date representations are not currently supported + (``±YYYYYY-MM-DD``). + 6. Ordinal dates are not currently supported (``YYYY-OOO``). Examples:: @@ -1155,8 +1146,13 @@ Supported operations: +---------------------------------------+--------------------------------+ | ``timedelta = datetime1 - datetime2`` | \(3) | +---------------------------------------+--------------------------------+ -| ``datetime1 < datetime2`` | Compares :class:`.datetime` to | -| | :class:`.datetime`. (4) | +| | ``datetime1 == datetime2`` | Equality comparison. (4) | +| | ``datetime1 != datetime2`` | | ++---------------------------------------+--------------------------------+ +| | ``datetime1 < datetime2`` | Order comparison. (5) | +| | ``datetime1 > datetime2`` | | +| | ``datetime1 <= datetime2`` | | +| | ``datetime1 >= datetime2`` | | +---------------------------------------+--------------------------------+ (1) @@ -1184,39 +1180,40 @@ Supported operations: are done in this case. If both are aware and have different :attr:`~.datetime.tzinfo` attributes, ``a-b`` acts - as if *a* and *b* were first converted to naive UTC datetimes first. The + as if *a* and *b* were first converted to naive UTC datetimes. The result is ``(a.replace(tzinfo=None) - a.utcoffset()) - (b.replace(tzinfo=None) - b.utcoffset())`` except that the implementation never overflows. (4) - *datetime1* is considered less than *datetime2* when *datetime1* precedes - *datetime2* in time. + :class:`.datetime` objects are equal if they represent the same date + and time, taking into account the time zone. - If one comparand is naive and the other is aware, :exc:`TypeError` - is raised if an order comparison is attempted. For equality - comparisons, naive instances are never equal to aware instances. + Naive and aware :class:`!datetime` objects are never equal. + :class:`!datetime` objects are never equal to :class:`date` objects + that are not also :class:`!datetime` instances, even if they represent + the same date. - If both comparands are aware, and have the same :attr:`~.datetime.tzinfo` attribute, the - common :attr:`~.datetime.tzinfo` attribute is ignored and the base datetimes are - compared. If both comparands are aware and have different :attr:`~.datetime.tzinfo` - attributes, the comparands are first adjusted by subtracting their UTC - offsets (obtained from ``self.utcoffset()``). + If both comparands are aware and have different :attr:`~.datetime.tzinfo` + attributes, the comparison acts as comparands were first converted to UTC + datetimes except that the implementation never overflows. + :class:`!datetime` instances in a repeated interval are never equal to + :class:`!datetime` instances in other time zone. - .. versionchanged:: 3.3 - Equality comparisons between aware and naive :class:`.datetime` - instances don't raise :exc:`TypeError`. +(5) + *datetime1* is considered less than *datetime2* when *datetime1* precedes + *datetime2* in time, taking into account the time zone. - .. note:: + Order comparison between naive and aware :class:`.datetime` objects, + as well as a :class:`!datetime` object and a :class:`!date` object + that is not also a :class:`!datetime` instance, raises :exc:`TypeError`. - In order to stop comparison from falling back to the default scheme of comparing - object addresses, datetime comparison normally raises :exc:`TypeError` if the - other comparand isn't also a :class:`.datetime` object. However, - ``NotImplemented`` is returned instead if the other comparand has a - :meth:`timetuple` attribute. This hook gives other kinds of date objects a - chance at implementing mixed-type comparison. If not, when a :class:`.datetime` - object is compared to an object of a different type, :exc:`TypeError` is raised - unless the comparison is ``==`` or ``!=``. The latter cases return - :const:`False` or :const:`True`, respectively. + If both comparands are aware and have different :attr:`~.datetime.tzinfo` + attributes, the comparison acts as comparands were first converted to UTC + datetimes except that the implementation never overflows. + +.. versionchanged:: 3.3 + Equality comparisons between aware and naive :class:`.datetime` + instances don't raise :exc:`TypeError`. Instance methods: @@ -1252,8 +1249,8 @@ Instance methods: ``tzinfo=None`` can be specified to create a naive datetime from an aware datetime with no conversion of date and time data. - .. versionadded:: 3.6 - Added the ``fold`` argument. + .. versionchanged:: 3.6 + Added the *fold* parameter. .. method:: datetime.astimezone(tz=None) @@ -1341,22 +1338,22 @@ Instance methods: where ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the day number within the current year starting with ``1`` for January - 1st. The :attr:`tm_isdst` flag of the result is set according to the + 1st. The :attr:`~time.struct_time.tm_isdst` flag of the result is set according to the :meth:`dst` method: :attr:`.tzinfo` is ``None`` or :meth:`dst` returns - ``None``, :attr:`tm_isdst` is set to ``-1``; else if :meth:`dst` returns a - non-zero value, :attr:`tm_isdst` is set to ``1``; else :attr:`tm_isdst` is + ``None``, :attr:`!tm_isdst` is set to ``-1``; else if :meth:`dst` returns a + non-zero value, :attr:`!tm_isdst` is set to ``1``; else :attr:`!tm_isdst` is set to ``0``. .. method:: datetime.utctimetuple() If :class:`.datetime` instance *d* is naive, this is the same as - ``d.timetuple()`` except that :attr:`tm_isdst` is forced to 0 regardless of what + ``d.timetuple()`` except that :attr:`~.time.struct_time.tm_isdst` is forced to 0 regardless of what ``d.dst()`` returns. DST is never in effect for a UTC time. If *d* is aware, *d* is normalized to UTC time, by subtracting ``d.utcoffset()``, and a :class:`time.struct_time` for the - normalized time is returned. :attr:`tm_isdst` is forced to 0. Note + normalized time is returned. :attr:`!tm_isdst` is forced to 0. Note that an :exc:`OverflowError` may be raised if *d*.year was ``MINYEAR`` or ``MAXYEAR`` and UTC adjustment spills over a year boundary. @@ -1496,8 +1493,8 @@ Instance methods: >>> dt.isoformat(timespec='microseconds') '2015-01-01T12:30:59.000000' - .. versionadded:: 3.6 - Added the *timespec* argument. + .. versionchanged:: 3.6 + Added the *timespec* parameter. .. method:: datetime.__str__() @@ -1544,7 +1541,7 @@ Instance methods: Examples of Usage: :class:`.datetime` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Examples of working with :class:`~datetime.datetime` objects: +Examples of working with :class:`.datetime` objects: .. doctest:: @@ -1672,7 +1669,7 @@ Usage of ``KabulTz`` from above:: :class:`.time` Objects ---------------------- -A :class:`time` object represents a (local) time of day, independent of any particular +A :class:`.time` object represents a (local) time of day, independent of any particular day, and subject to adjustment via a :class:`tzinfo` object. .. class:: time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0) @@ -1748,24 +1745,21 @@ Instance attributes (read-only): .. versionadded:: 3.6 -:class:`.time` objects support comparison of :class:`.time` to :class:`.time`, -where *a* is considered less -than *b* when *a* precedes *b* in time. If one comparand is naive and the other -is aware, :exc:`TypeError` is raised if an order comparison is attempted. For equality -comparisons, naive instances are never equal to aware instances. +:class:`.time` objects support equality and order comparisons, +where *a* is considered less than *b* when *a* precedes *b* in time. + +Naive and aware :class:`!time` objects are never equal. +Order comparison between naive and aware :class:`!time` objects raises +:exc:`TypeError`. If both comparands are aware, and have -the same :attr:`~time.tzinfo` attribute, the common :attr:`~time.tzinfo` attribute is +the same :attr:`~.time.tzinfo` attribute, the common :attr:`!tzinfo` attribute is ignored and the base times are compared. If both comparands are aware and -have different :attr:`~time.tzinfo` attributes, the comparands are first adjusted by -subtracting their UTC offsets (obtained from ``self.utcoffset()``). In order -to stop mixed-type comparisons from falling back to the default comparison by -object address, when a :class:`.time` object is compared to an object of a -different type, :exc:`TypeError` is raised unless the comparison is ``==`` or -``!=``. The latter cases return :const:`False` or :const:`True`, respectively. +have different :attr:`!tzinfo` attributes, the comparands are first adjusted by +subtracting their UTC offsets (obtained from ``self.utcoffset()``). .. versionchanged:: 3.3 - Equality comparisons between aware and naive :class:`~datetime.time` instances + Equality comparisons between aware and naive :class:`.time` instances don't raise :exc:`TypeError`. In Boolean contexts, a :class:`.time` object is always considered to be true. @@ -1793,6 +1787,8 @@ Other constructor: Examples:: + .. doctest:: + >>> from datetime import time >>> time.fromisoformat('04:23:01') datetime.time(4, 23, 1) @@ -1802,7 +1798,7 @@ Other constructor: datetime.time(4, 23, 1) >>> time.fromisoformat('04:23:01.000384') datetime.time(4, 23, 1, 384) - >>> time.fromisoformat('04:23:01,000') + >>> time.fromisoformat('04:23:01,000384') datetime.time(4, 23, 1, 384) >>> time.fromisoformat('04:23:01+04:00') datetime.time(4, 23, 1, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400))) @@ -1828,8 +1824,8 @@ Instance methods: ``tzinfo=None`` can be specified to create a naive :class:`.time` from an aware :class:`.time`, without conversion of the time data. - .. versionadded:: 3.6 - Added the ``fold`` argument. + .. versionchanged:: 3.6 + Added the *fold* parameter. .. method:: time.isoformat(timespec='auto') @@ -1872,8 +1868,8 @@ Instance methods: >>> dt.isoformat(timespec='auto') '12:34:56' - .. versionadded:: 3.6 - Added the *timespec* argument. + .. versionchanged:: 3.6 + Added the *timespec* parameter. .. method:: time.__str__() @@ -1970,19 +1966,20 @@ Examples of working with a :class:`.time` object:: You need to derive a concrete subclass, and (at least) supply implementations of the standard :class:`tzinfo` methods needed by the - :class:`.datetime` methods you use. The :mod:`datetime` module provides + :class:`.datetime` methods you use. The :mod:`!datetime` module provides :class:`timezone`, a simple concrete subclass of :class:`tzinfo` which can represent timezones with fixed offset from UTC such as UTC itself or North American EST and EDT. Special requirement for pickling: A :class:`tzinfo` subclass must have an - :meth:`__init__` method that can be called with no arguments, otherwise it can be + :meth:`~object.__init__` method that can be called with no arguments, + otherwise it can be pickled but possibly not unpickled again. This is a technical requirement that may be relaxed in the future. A concrete subclass of :class:`tzinfo` may need to implement the following methods. Exactly which methods are needed depends on the uses made of aware - :mod:`datetime` objects. If in doubt, simply implement all of them. + :mod:`!datetime` objects. If in doubt, simply implement all of them. .. method:: tzinfo.utcoffset(dt) @@ -2023,7 +2020,7 @@ Examples of working with a :class:`.time` object:: already been added to the UTC offset returned by :meth:`utcoffset`, so there's no need to consult :meth:`dst` unless you're interested in obtaining DST info separately. For example, :meth:`datetime.timetuple` calls its :attr:`~.datetime.tzinfo` - attribute's :meth:`dst` method to determine how the :attr:`tm_isdst` flag + attribute's :meth:`dst` method to determine how the :attr:`~time.struct_time.tm_isdst` flag should be set, and :meth:`tzinfo.fromutc` calls :meth:`dst` to account for DST changes when crossing time zones. @@ -2039,7 +2036,7 @@ Examples of working with a :class:`.time` object:: relies on this, but cannot detect violations; it's the programmer's responsibility to ensure it. If a :class:`tzinfo` subclass cannot guarantee this, it may be able to override the default implementation of - :meth:`tzinfo.fromutc` to work correctly with :meth:`astimezone` regardless. + :meth:`tzinfo.fromutc` to work correctly with :meth:`~.datetime.astimezone` regardless. Most implementations of :meth:`dst` will probably look like one of these two:: @@ -2068,7 +2065,7 @@ Examples of working with a :class:`.time` object:: .. method:: tzinfo.tzname(dt) Return the time zone name corresponding to the :class:`.datetime` object *dt*, as - a string. Nothing about string names is defined by the :mod:`datetime` module, + a string. Nothing about string names is defined by the :mod:`!datetime` module, and there's no requirement that it mean anything in particular. For example, "GMT", "UTC", "-500", "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies. Return ``None`` if a string name isn't known. Note that this is @@ -2116,7 +2113,7 @@ There is one more :class:`tzinfo` method that a subclass may wish to override: different years. An example of a time zone the default :meth:`fromutc` implementation may not handle correctly in all cases is one where the standard offset (from UTC) depends on the specific date and time passed, which can happen - for political reasons. The default implementations of :meth:`astimezone` and + for political reasons. The default implementations of :meth:`~.datetime.astimezone` and :meth:`fromutc` may not produce the result you want if the result is one of the hours straddling the moment the standard offset changes. @@ -2182,10 +2179,10 @@ hour that can't be spelled unambiguously in local wall time: the last hour of daylight time. In Eastern, that's times of the form 5:MM UTC on the day daylight time ends. The local wall clock leaps from 1:59 (daylight time) back to 1:00 (standard time) again. Local times of the form 1:MM are ambiguous. -:meth:`astimezone` mimics the local clock's behavior by mapping two adjacent UTC +:meth:`~.datetime.astimezone` mimics the local clock's behavior by mapping two adjacent UTC hours into the same local hour then. In the Eastern example, UTC times of the form 5:MM and 6:MM both map to 1:MM when converted to Eastern, but earlier times -have the :attr:`~datetime.fold` attribute set to 0 and the later times have it set to 1. +have the :attr:`~.datetime.fold` attribute set to 0 and the later times have it set to 1. For example, at the Fall back transition of 2016, we get:: >>> u0 = datetime(2016, 11, 6, 4, tzinfo=timezone.utc) @@ -2200,10 +2197,10 @@ For example, at the Fall back transition of 2016, we get:: 07:00:00 UTC = 02:00:00 EST 0 Note that the :class:`.datetime` instances that differ only by the value of the -:attr:`~datetime.fold` attribute are considered equal in comparisons. +:attr:`~.datetime.fold` attribute are considered equal in comparisons. Applications that can't bear wall-time ambiguities should explicitly check the -value of the :attr:`~datetime.fold` attribute or avoid using hybrid +value of the :attr:`~.datetime.fold` attribute or avoid using hybrid :class:`tzinfo` subclasses; there are no ambiguities when using :class:`timezone`, or any other fixed-offset :class:`tzinfo` subclass (such as a class representing only EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)). @@ -2211,7 +2208,7 @@ only EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)). .. seealso:: :mod:`zoneinfo` - The :mod:`datetime` module has a basic :class:`timezone` class (for + The :mod:`!datetime` module has a basic :class:`timezone` class (for handling arbitrary fixed offsets from UTC) and its :attr:`timezone.utc` attribute (a UTC timezone instance). @@ -2229,7 +2226,7 @@ only EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)). .. _datetime-timezone: :class:`timezone` Objects --------------------------- +------------------------- The :class:`timezone` class is a subclass of :class:`tzinfo`, each instance of which represents a timezone defined by a fixed offset from @@ -2304,8 +2301,8 @@ Class attributes: .. _strftime-strptime-behavior: -:meth:`strftime` and :meth:`strptime` Behavior ----------------------------------------------- +:meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Behavior +-------------------------------------------------------------------- :class:`date`, :class:`.datetime`, and :class:`.time` objects all support a ``strftime(format)`` method, to create a string representing the time under the @@ -2315,8 +2312,8 @@ Conversely, the :meth:`datetime.strptime` class method creates a :class:`.datetime` object from a string representing a date and time and a corresponding format string. -The table below provides a high-level comparison of :meth:`strftime` -versus :meth:`strptime`: +The table below provides a high-level comparison of :meth:`~.datetime.strftime` +versus :meth:`~.datetime.strptime`: +----------------+--------------------------------------------------------+------------------------------------------------------------------------------+ | | ``strftime`` | ``strptime`` | @@ -2333,8 +2330,8 @@ versus :meth:`strptime`: .. _format-codes: -:meth:`strftime` and :meth:`strptime` Format Codes -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +:meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Format Codes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These methods accept format codes that can be used to parse and format dates:: @@ -2473,13 +2470,13 @@ convenience. These parameters all correspond to ISO 8601 date values. | | naive). | -03:07:12.345216 | | +-----------+--------------------------------+------------------------+-------+ -These may not be available on all platforms when used with the :meth:`strftime` +These may not be available on all platforms when used with the :meth:`~.datetime.strftime` method. The ISO 8601 year and ISO 8601 week directives are not interchangeable -with the year and week number directives above. Calling :meth:`strptime` with +with the year and week number directives above. Calling :meth:`~.datetime.strptime` with incomplete or ambiguous ISO 8601 directives will raise a :exc:`ValueError`. The full set of format codes supported varies across platforms, because Python -calls the platform C library's :func:`strftime` function, and platform +calls the platform C library's :c:func:`strftime` function, and platform variations are common. To see the full set of format codes supported on your platform, consult the :manpage:`strftime(3)` documentation. There are also differences between platforms in handling of unsupported format specifiers. @@ -2495,9 +2492,9 @@ Technical Detail Broadly speaking, ``d.strftime(fmt)`` acts like the :mod:`time` module's ``time.strftime(fmt, d.timetuple())`` although not all objects support a -:meth:`timetuple` method. +:meth:`~date.timetuple` method. -For the :meth:`datetime.strptime` class method, the default value is +For the :meth:`.datetime.strptime` class method, the default value is ``1900-01-01T00:00:00.000``: any components not specified in the format string will be pulled from the default value. [#]_ @@ -2510,7 +2507,7 @@ information, which are supported in ``datetime.strptime`` but are discarded by ``time.strptime``. For :class:`.time` objects, the format codes for year, month, and day should not -be used, as :class:`time` objects have no such values. If they're used anyway, +be used, as :class:`!time` objects have no such values. If they're used anyway, ``1900`` is substituted for the year, and ``1`` for the month and day. For :class:`date` objects, the format codes for hours, minutes, seconds, and @@ -2532,27 +2529,27 @@ Notes: contain non-ASCII characters. (2) - The :meth:`strptime` method can parse years in the full [1, 9999] range, but + The :meth:`~.datetime.strptime` method can parse years in the full [1, 9999] range, but years < 1000 must be zero-filled to 4-digit width. .. versionchanged:: 3.2 - In previous versions, :meth:`strftime` method was restricted to + In previous versions, :meth:`~.datetime.strftime` method was restricted to years >= 1900. .. versionchanged:: 3.3 - In version 3.2, :meth:`strftime` method was restricted to + In version 3.2, :meth:`~.datetime.strftime` method was restricted to years >= 1000. (3) - When used with the :meth:`strptime` method, the ``%p`` directive only affects + When used with the :meth:`~.datetime.strptime` method, the ``%p`` directive only affects the output hour field if the ``%I`` directive is used to parse the hour. (4) - Unlike the :mod:`time` module, the :mod:`datetime` module does not support + Unlike the :mod:`time` module, the :mod:`!datetime` module does not support leap seconds. (5) - When used with the :meth:`strptime` method, the ``%f`` directive + When used with the :meth:`~.datetime.strptime` method, the ``%f`` directive accepts from one to six digits and zero pads on the right. ``%f`` is an extension to the set of format characters in the C standard (but implemented separately in datetime objects, and therefore always @@ -2565,7 +2562,7 @@ Notes: For an aware object: ``%z`` - :meth:`utcoffset` is transformed into a string of the form + :meth:`~.datetime.utcoffset` is transformed into a string of the form ``±HHMM[SS[.ffffff]]``, where ``HH`` is a 2-digit string giving the number of UTC offset hours, ``MM`` is a 2-digit string giving the number of UTC offset minutes, ``SS`` is a 2-digit string giving the number of UTC offset @@ -2573,14 +2570,14 @@ Notes: offset microseconds. The ``ffffff`` part is omitted when the offset is a whole number of seconds and both the ``ffffff`` and the ``SS`` part is omitted when the offset is a whole number of minutes. For example, if - :meth:`utcoffset` returns ``timedelta(hours=-3, minutes=-30)``, ``%z`` is + :meth:`~.datetime.utcoffset` returns ``timedelta(hours=-3, minutes=-30)``, ``%z`` is replaced with the string ``'-0330'``. .. versionchanged:: 3.7 The UTC offset is not restricted to a whole number of minutes. .. versionchanged:: 3.7 - When the ``%z`` directive is provided to the :meth:`strptime` method, + When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` method, the UTC offsets can have a colon as a separator between hours, minutes and seconds. For example, ``'+01:00:00'`` will be parsed as an offset of one hour. @@ -2591,11 +2588,11 @@ Notes: hours, minutes and seconds. ``%Z`` - In :meth:`strftime`, ``%Z`` is replaced by an empty string if - :meth:`tzname` returns ``None``; otherwise ``%Z`` is replaced by the + In :meth:`~.datetime.strftime`, ``%Z`` is replaced by an empty string if + :meth:`~.datetime.tzname` returns ``None``; otherwise ``%Z`` is replaced by the returned value, which must be a string. - :meth:`strptime` only accepts certain values for ``%Z``: + :meth:`~.datetime.strptime` only accepts certain values for ``%Z``: 1. any value in ``time.tzname`` for your machine's locale 2. the hard-coded values ``UTC`` and ``GMT`` @@ -2605,23 +2602,23 @@ Notes: invalid values. .. versionchanged:: 3.2 - When the ``%z`` directive is provided to the :meth:`strptime` method, an + When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` method, an aware :class:`.datetime` object will be produced. The ``tzinfo`` of the result will be set to a :class:`timezone` instance. (7) - When used with the :meth:`strptime` method, ``%U`` and ``%W`` are only used + When used with the :meth:`~.datetime.strptime` method, ``%U`` and ``%W`` are only used in calculations when the day of the week and the calendar year (``%Y``) are specified. (8) Similar to ``%U`` and ``%W``, ``%V`` is only used in calculations when the day of the week and the ISO year (``%G``) are specified in a - :meth:`strptime` format string. Also note that ``%G`` and ``%Y`` are not + :meth:`~.datetime.strptime` format string. Also note that ``%G`` and ``%Y`` are not interchangeable. (9) - When used with the :meth:`strptime` method, the leading zero is optional + When used with the :meth:`~.datetime.strptime` method, the leading zero is optional for formats ``%d``, ``%m``, ``%H``, ``%I``, ``%M``, ``%S``, ``%j``, ``%U``, ``%W``, and ``%V``. Format ``%y`` does require a leading zero. diff --git a/Doc/library/dbm.rst b/Doc/library/dbm.rst index 2be499337a2..413d2446179 100644 --- a/Doc/library/dbm.rst +++ b/Doc/library/dbm.rst @@ -28,70 +28,85 @@ the Oracle Berkeley DB. available --- :mod:`dbm.gnu`, :mod:`dbm.ndbm` or :mod:`dbm.dumb` --- should be used to open a given file. - Returns one of the following values: ``None`` if the file can't be opened - because it's unreadable or doesn't exist; the empty string (``''``) if the - file's format can't be guessed; or a string containing the required module - name, such as ``'dbm.ndbm'`` or ``'dbm.gnu'``. + Return one of the following values: -.. versionchanged:: 3.11 - Accepts :term:`path-like object` for filename. + * ``None`` if the file can't be opened because it's unreadable or doesn't exist + * the empty string (``''``) if the file's format can't be guessed + * a string containing the required module name, such as ``'dbm.ndbm'`` or ``'dbm.gnu'`` -.. function:: open(file, flag='r', mode=0o666) + .. versionchanged:: 3.11 + *filename* accepts a :term:`path-like object`. - Open the database file *file* and return a corresponding object. +.. Substitutions for the open() flag param docs; + all submodules use the same text. - If the database file already exists, the :func:`whichdb` function is used to - determine its type and the appropriate module is used; if it does not exist, - the first module listed above that can be imported is used. +.. |flag_r| replace:: + Open existing database for reading only. - The optional *flag* argument can be: +.. |flag_w| replace:: + Open existing database for reading and writing. - +---------+-------------------------------------------+ - | Value | Meaning | - +=========+===========================================+ - | ``'r'`` | Open existing database for reading only | - | | (default) | - +---------+-------------------------------------------+ - | ``'w'`` | Open existing database for reading and | - | | writing | - +---------+-------------------------------------------+ - | ``'c'`` | Open database for reading and writing, | - | | creating it if it doesn't exist | - +---------+-------------------------------------------+ - | ``'n'`` | Always create a new, empty database, open | - | | for reading and writing | - +---------+-------------------------------------------+ +.. |flag_c| replace:: + Open database for reading and writing, creating it if it doesn't exist. - The optional *mode* argument is the Unix mode of the file, used only when the - database has to be created. It defaults to octal ``0o666`` (and will be - modified by the prevailing umask). +.. |flag_n| replace:: + Always create a new, empty database, open for reading and writing. +.. |mode_param_doc| replace:: + The Unix file access mode of the file (default: octal ``0o666``), + used only when the database has to be created. -The object returned by :func:`.open` supports the same basic functionality as -dictionaries; keys and their corresponding values can be stored, retrieved, and -deleted, and the :keyword:`in` operator and the :meth:`keys` method are -available, as well as :meth:`get` and :meth:`setdefault`. +.. |incompat_note| replace:: + The file formats created by :mod:`dbm.gnu` and :mod:`dbm.ndbm` are incompatible + and can not be used interchangeably. -.. versionchanged:: 3.2 - :meth:`get` and :meth:`setdefault` are now available in all database modules. +.. function:: open(file, flag='r', mode=0o666) -.. versionchanged:: 3.8 - Deleting a key from a read-only database raises database module specific error - instead of :exc:`KeyError`. + Open a database and return the corresponding database object. + + :param file: + The database file to open. + + If the database file already exists, the :func:`whichdb` function is used to + determine its type and the appropriate module is used; if it does not exist, + the first submodule listed above that can be imported is used. + :type file: :term:`path-like object` -.. versionchanged:: 3.11 - Accepts :term:`path-like object` for file. + :param str flag: + * ``'r'`` (default): |flag_r| + * ``'w'``: |flag_w| + * ``'c'``: |flag_c| + * ``'n'``: |flag_n| -Key and values are always stored as bytes. This means that when + :param int mode: + |mode_param_doc| + + .. versionchanged:: 3.11 + *file* accepts a :term:`path-like object`. + +The object returned by :func:`~dbm.open` supports the same basic functionality as a +:class:`dict`; keys and their corresponding values can be stored, retrieved, and +deleted, and the :keyword:`in` operator and the :meth:`!keys` method are +available, as well as :meth:`!get` and :meth:`!setdefault` methods. + +Key and values are always stored as :class:`bytes`. This means that when strings are used they are implicitly converted to the default encoding before being stored. These objects also support being used in a :keyword:`with` statement, which will automatically close them when done. +.. versionchanged:: 3.2 + :meth:`!get` and :meth:`!setdefault` methods are now available for all + :mod:`dbm` backends. + .. versionchanged:: 3.4 Added native support for the context management protocol to the objects - returned by :func:`.open`. + returned by :func:`~dbm.open`. + +.. versionchanged:: 3.8 + Deleting a key from a read-only database raises a database module specific exception + instead of :exc:`KeyError`. The following example records some hostnames and a corresponding title, and then prints out the contents of the database:: @@ -130,27 +145,26 @@ then prints out the contents of the database:: The individual submodules are described in the following sections. -:mod:`dbm.gnu` --- GNU's reinterpretation of dbm ------------------------------------------------- +:mod:`dbm.gnu` --- GNU database manager +--------------------------------------- .. module:: dbm.gnu :platform: Unix - :synopsis: GNU's reinterpretation of dbm. + :synopsis: GNU database manager **Source code:** :source:`Lib/dbm/gnu.py` -------------- -This module is quite similar to the :mod:`dbm` module, but uses the GNU library -``gdbm`` instead to provide some additional functionality. Please note that the -file formats created by :mod:`dbm.gnu` and :mod:`dbm.ndbm` are incompatible. +The :mod:`dbm.gnu` module provides an interface to the :abbr:`GDBM (GNU dbm)` +library, similar to the :mod:`dbm.ndbm` module, but with additional +functionality like crash tolerance. -The :mod:`dbm.gnu` module provides an interface to the GNU DBM library. -``dbm.gnu.gdbm`` objects behave like mappings (dictionaries), except that keys and -values are always converted to bytes before storing. Printing a ``gdbm`` -object doesn't print the -keys and values, and the :meth:`items` and :meth:`values` methods are not -supported. +:class:`!gdbm` objects behave similar to :term:`mappings <mapping>`, +except that keys and values are always converted to :class:`bytes` before storing, +and the :meth:`!items` and :meth:`!values` methods are not supported. + +.. note:: |incompat_note| .. exception:: error @@ -158,62 +172,52 @@ supported. raised for general mapping errors like specifying an incorrect key. -.. function:: open(filename[, flag[, mode]]) - - Open a ``gdbm`` database and return a :class:`gdbm` object. The *filename* - argument is the name of the database file. - - The optional *flag* argument can be: - - +---------+-------------------------------------------+ - | Value | Meaning | - +=========+===========================================+ - | ``'r'`` | Open existing database for reading only | - | | (default) | - +---------+-------------------------------------------+ - | ``'w'`` | Open existing database for reading and | - | | writing | - +---------+-------------------------------------------+ - | ``'c'`` | Open database for reading and writing, | - | | creating it if it doesn't exist | - +---------+-------------------------------------------+ - | ``'n'`` | Always create a new, empty database, open | - | | for reading and writing | - +---------+-------------------------------------------+ - - The following additional characters may be appended to the flag to control - how the database is opened: - - +---------+--------------------------------------------+ - | Value | Meaning | - +=========+============================================+ - | ``'f'`` | Open the database in fast mode. Writes | - | | to the database will not be synchronized. | - +---------+--------------------------------------------+ - | ``'s'`` | Synchronized mode. This will cause changes | - | | to the database to be immediately written | - | | to the file. | - +---------+--------------------------------------------+ - | ``'u'`` | Do not lock database. | - +---------+--------------------------------------------+ - - Not all flags are valid for all versions of ``gdbm``. The module constant - :const:`open_flags` is a string of supported flag characters. The exception - :exc:`error` is raised if an invalid flag is specified. - - The optional *mode* argument is the Unix mode of the file, used only when the - database has to be created. It defaults to octal ``0o666``. - - In addition to the dictionary-like methods, ``gdbm`` objects have the - following methods: +.. function:: open(filename, flag="r", mode=0o666, /) + + Open a GDBM database and return a :class:`!gdbm` object. + + :param filename: + The database file to open. + :type filename: :term:`path-like object` + + :param str flag: + * ``'r'`` (default): |flag_r| + * ``'w'``: |flag_w| + * ``'c'``: |flag_c| + * ``'n'``: |flag_n| + + The following additional characters may be appended + to control how the database is opened: + + * ``'f'``: Open the database in fast mode. + Writes to the database will not be synchronized. + * ``'s'``: Synchronized mode. + Changes to the database will be written immediately to the file. + * ``'u'``: Do not lock database. + + Not all flags are valid for all versions of GDBM. + See the :data:`open_flags` member for a list of supported flag characters. + + :param int mode: + |mode_param_doc| + + :raises error: + If an invalid *flag* argument is passed. .. versionchanged:: 3.11 - Accepts :term:`path-like object` for filename. + *filename* accepts a :term:`path-like object`. + + .. data:: open_flags + + A string of characters the *flag* parameter of :meth:`~dbm.gnu.open` supports. + + In addition to the dictionary-like methods, :class:`gdbm` objects have the + following methods and attributes: .. method:: gdbm.firstkey() It's possible to loop over every key in the database using this method and the - :meth:`nextkey` method. The traversal is ordered by ``gdbm``'s internal + :meth:`nextkey` method. The traversal is ordered by GDBM's internal hash values, and won't be sorted by the key values. This method returns the starting key. @@ -231,7 +235,7 @@ supported. .. method:: gdbm.reorganize() If you have carried out a lot of deletions and would like to shrink the space - used by the ``gdbm`` file, this routine will reorganize the database. ``gdbm`` + used by the GDBM file, this routine will reorganize the database. :class:`!gdbm` objects will not shorten the length of a database file except by using this reorganization; otherwise, deleted file space will be kept and reused as new (key, value) pairs are added. @@ -243,27 +247,37 @@ supported. .. method:: gdbm.close() - Close the ``gdbm`` database. + Close the GDBM database. + -:mod:`dbm.ndbm` --- Interface based on ndbm -------------------------------------------- +:mod:`dbm.ndbm` --- New Database Manager +---------------------------------------- .. module:: dbm.ndbm :platform: Unix - :synopsis: The standard "database" interface, based on ndbm. + :synopsis: The New Database Manager **Source code:** :source:`Lib/dbm/ndbm.py` -------------- -The :mod:`dbm.ndbm` module provides an interface to the Unix "(n)dbm" library. -Dbm objects behave like mappings (dictionaries), except that keys and values are -always stored as bytes. Printing a ``dbm`` object doesn't print the keys and -values, and the :meth:`items` and :meth:`values` methods are not supported. +The :mod:`dbm.ndbm` module provides an interface to the +:abbr:`NDBM (New Database Manager)` library. +:class:`!ndbm` objects behave similar to :term:`mappings <mapping>`, +except that keys and values are always stored as :class:`bytes`, +and the :meth:`!items` and :meth:`!values` methods are not supported. + +This module can be used with the "classic" NDBM interface or the +:abbr:`GDBM (GNU dbm)` compatibility interface. + +.. note:: |incompat_note| -This module can be used with the "classic" ndbm interface or the GNU GDBM -compatibility interface. On Unix, the :program:`configure` script will attempt -to locate the appropriate header file to simplify building this module. +.. warning:: + + The NDBM library shipped as part of macOS has an undocumented limitation on the + size of values, which can result in corrupted database files + when storing values larger than this limit. Reading such corrupted files can + result in a hard crash (segmentation fault). .. exception:: error @@ -273,37 +287,28 @@ to locate the appropriate header file to simplify building this module. .. data:: library - Name of the ``ndbm`` implementation library used. + Name of the NDBM implementation library used. -.. function:: open(filename[, flag[, mode]]) +.. function:: open(filename, flag="r", mode=0o666, /) - Open a dbm database and return a ``ndbm`` object. The *filename* argument is the - name of the database file (without the :file:`.dir` or :file:`.pag` extensions). + Open an NDBM database and return an :class:`!ndbm` object. - The optional *flag* argument must be one of these values: + :param filename: + The basename of the database file + (without the :file:`.dir` or :file:`.pag` extensions). + :type filename: :term:`path-like object` - +---------+-------------------------------------------+ - | Value | Meaning | - +=========+===========================================+ - | ``'r'`` | Open existing database for reading only | - | | (default) | - +---------+-------------------------------------------+ - | ``'w'`` | Open existing database for reading and | - | | writing | - +---------+-------------------------------------------+ - | ``'c'`` | Open database for reading and writing, | - | | creating it if it doesn't exist | - +---------+-------------------------------------------+ - | ``'n'`` | Always create a new, empty database, open | - | | for reading and writing | - +---------+-------------------------------------------+ + :param str flag: + * ``'r'`` (default): |flag_r| + * ``'w'``: |flag_w| + * ``'c'``: |flag_c| + * ``'n'``: |flag_n| - The optional *mode* argument is the Unix mode of the file, used only when the - database has to be created. It defaults to octal ``0o666`` (and will be - modified by the prevailing umask). + :param int mode: + |mode_param_doc| - In addition to the dictionary-like methods, ``ndbm`` objects + In addition to the dictionary-like methods, :class:`!ndbm` objects provide the following method: .. versionchanged:: 3.11 @@ -311,7 +316,7 @@ to locate the appropriate header file to simplify building this module. .. method:: ndbm.close() - Close the ``ndbm`` database. + Close the NDBM database. :mod:`dbm.dumb` --- Portable DBM implementation @@ -333,13 +338,14 @@ to locate the appropriate header file to simplify building this module. -------------- -The :mod:`dbm.dumb` module provides a persistent dictionary-like interface which -is written entirely in Python. Unlike other modules such as :mod:`dbm.gnu` no -external library is required. As with other persistent mappings, the keys and -values are always stored as bytes. - -The module defines the following: +The :mod:`dbm.dumb` module provides a persistent :class:`dict`-like +interface which is written entirely in Python. +Unlike other :mod:`dbm` backends, such as :mod:`dbm.gnu`, no +external library is required. +As with other :mod:`dbm` backends, +the keys and values are always stored as :class:`bytes`. +The :mod:`!dbm.dumb` module defines the following: .. exception:: error @@ -347,34 +353,29 @@ The module defines the following: raised for general mapping errors like specifying an incorrect key. -.. function:: open(filename[, flag[, mode]]) +.. function:: open(filename, flag="c", mode=0o666) - Open a ``dumbdbm`` database and return a dumbdbm object. The *filename* argument is - the basename of the database file (without any specific extensions). When a - dumbdbm database is created, files with :file:`.dat` and :file:`.dir` extensions - are created. + Open a :mod:`!dbm.dumb` database. + The returned database object behaves similar to a :term:`mapping`, + in addition to providing :meth:`~dumbdbm.sync` and :meth:`~dumbdbm.close` + methods. - The optional *flag* argument can be: + :param filename: + The basename of the database file (without extensions). + A new database creates the following files: - +---------+-------------------------------------------+ - | Value | Meaning | - +=========+===========================================+ - | ``'r'`` | Open existing database for reading only | - | | (default) | - +---------+-------------------------------------------+ - | ``'w'`` | Open existing database for reading and | - | | writing | - +---------+-------------------------------------------+ - | ``'c'`` | Open database for reading and writing, | - | | creating it if it doesn't exist | - +---------+-------------------------------------------+ - | ``'n'`` | Always create a new, empty database, open | - | | for reading and writing | - +---------+-------------------------------------------+ + - :file:`{filename}.dat` + - :file:`{filename}.dir` + :type database: :term:`path-like object` - The optional *mode* argument is the Unix mode of the file, used only when the - database has to be created. It defaults to octal ``0o666`` (and will be modified - by the prevailing umask). + :param str flag: + * ``'r'``: |flag_r| + * ``'w'``: |flag_w| + * ``'c'`` (default): |flag_c| + * ``'n'``: |flag_n| + + :param int mode: + |mode_param_doc| .. warning:: It is possible to crash the Python interpreter when loading a database @@ -382,20 +383,18 @@ The module defines the following: Python's AST compiler. .. versionchanged:: 3.5 - :func:`.open` always creates a new database when the flag has the value - ``'n'``. + :func:`~dbm.dumb.open` always creates a new database when *flag* is ``'n'``. .. versionchanged:: 3.8 - A database opened with flags ``'r'`` is now read-only. Opening with - flags ``'r'`` and ``'w'`` no longer creates a database if it does not - exist. + A database opened read-only if *flag* is ``'r'``. + A database is not created if it does not exist if *flag* is ``'r'`` or ``'w'``. .. versionchanged:: 3.11 - Accepts :term:`path-like object` for filename. + *filename* accepts a :term:`path-like object`. In addition to the methods provided by the - :class:`collections.abc.MutableMapping` class, :class:`dumbdbm` objects - provide the following methods: + :class:`collections.abc.MutableMapping` class, + the following methods are provided: .. method:: dumbdbm.sync() @@ -404,5 +403,5 @@ The module defines the following: .. method:: dumbdbm.close() - Close the ``dumbdbm`` database. + Close the database. diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index 9abf19557f9..d45e4644820 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -52,8 +52,8 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. the purpose of sequence matching. This heuristic can be turned off by setting the ``autojunk`` argument to ``False`` when creating the :class:`SequenceMatcher`. - .. versionadded:: 3.2 - The *autojunk* parameter. + .. versionchanged:: 3.2 + Added the *autojunk* parameter. .. class:: Differ @@ -383,8 +383,8 @@ The :class:`SequenceMatcher` class has this constructor: The optional argument *autojunk* can be used to disable the automatic junk heuristic. - .. versionadded:: 3.2 - The *autojunk* parameter. + .. versionchanged:: 3.2 + Added the *autojunk* parameter. SequenceMatcher objects get three data attributes: *bjunk* is the set of elements of *b* for which *isjunk* is ``True``; *bpopular* is the set of diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 1d13249a5ab..f68aa7482eb 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -316,17 +316,18 @@ operation is being performed, so the intermediate analysis object isn't useful: .. function:: findlinestarts(code) - This generator function uses the ``co_lines`` method - of the code object *code* to find the offsets which are starts of + This generator function uses the :meth:`~codeobject.co_lines` method + of the :ref:`code object <code-objects>` *code* to find the offsets which + are starts of lines in the source code. They are generated as ``(offset, lineno)`` pairs. .. versionchanged:: 3.6 Line numbers can be decreasing. Before, they were always increasing. .. versionchanged:: 3.10 - The :pep:`626` ``co_lines`` method is used instead of the + The :pep:`626` :meth:`~codeobject.co_lines` method is used instead of the :attr:`~codeobject.co_firstlineno` and :attr:`~codeobject.co_lnotab` - attributes of the code object. + attributes of the :ref:`code object <code-objects>`. .. function:: findlabels(code) @@ -482,7 +483,7 @@ operations on it as if it was a Python list. The top of the stack corresponds to Swap the top of the stack with the i-th element:: - STACK[-i], STACK[-1] = stack[-1], STACK[-i] + STACK[-i], STACK[-1] = STACK[-1], STACK[-i] .. versionadded:: 3.11 diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index 2a3fe91bb36..9913309a394 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -134,7 +134,7 @@ That's all you need to know to start making productive use of :mod:`doctest`! Jump in. The following sections provide full details. Note that there are many examples of doctests in the standard Python test suite and libraries. Especially useful examples can be found in the standard test file -:file:`Lib/test/test_doctest.py`. +:file:`Lib/test/test_doctest/test_doctest.py`. .. _doctest-simple-testmod: @@ -280,7 +280,7 @@ searched. Objects imported into the module are not searched. In addition, there are cases when you want tests to be part of a module but not part of the help text, which requires that the tests not be included in the docstring. Doctest looks for a module-level variable called ``__test__`` and uses it to locate other -tests. If ``M.__test__`` exists and is truthy, it must be a dict, and each +tests. If ``M.__test__`` exists, it must be a dict, and each entry maps a (string) name to a function object, class object, or string. Function and class object docstrings found from ``M.__test__`` are searched, and strings are treated as if they were docstrings. In output, a key ``K`` in @@ -944,8 +944,8 @@ and :ref:`doctest-simple-testfile`. (or module :mod:`__main__` if *m* is not supplied or is ``None``), starting with ``m.__doc__``. - Also test examples reachable from dict ``m.__test__``, if it exists and is not - ``None``. ``m.__test__`` maps names (strings) to functions, classes and + Also test examples reachable from dict ``m.__test__``, if it exists. + ``m.__test__`` maps names (strings) to functions, classes and strings; function and class docstrings are searched for examples; strings are searched directly, as if they were docstrings. @@ -1477,7 +1477,7 @@ DocTestRunner objects For more information, see section :ref:`doctest-options`. - :class:`DocTestParser` defines the following methods: + :class:`DocTestRunner` defines the following methods: .. method:: report_start(out, test, example) diff --git a/Doc/library/email.message.rst b/Doc/library/email.message.rst index f58d93da6ed..adea067e082 100644 --- a/Doc/library/email.message.rst +++ b/Doc/library/email.message.rst @@ -40,9 +40,9 @@ over the object tree. The :class:`EmailMessage` dictionary-like interface is indexed by the header names, which must be ASCII values. The values of the dictionary are strings with some extra methods. Headers are stored and returned in case-preserving -form, but field names are matched case-insensitively. Unlike a real dict, -there is an ordering to the keys, and there can be duplicate keys. Additional -methods are provided for working with headers that have duplicate keys. +form, but field names are matched case-insensitively. The keys are ordered, +but unlike a real dict, there can be duplicates. Addtional methods are +provided for working with headers that have duplicate keys. The *payload* is either a string or bytes object, in the case of simple message objects, or a list of :class:`EmailMessage` objects, for MIME container diff --git a/Doc/library/email.mime.rst b/Doc/library/email.mime.rst index d7c0d203d19..dc0dd3b9eeb 100644 --- a/Doc/library/email.mime.rst +++ b/Doc/library/email.mime.rst @@ -28,7 +28,7 @@ make things easier. Here are the classes: -.. currentmodule:: email.mime.base +.. module:: email.mime.base .. class:: MIMEBase(_maintype, _subtype, *, policy=compat32, **_params) @@ -58,7 +58,7 @@ Here are the classes: Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.nonmultipart +.. module:: email.mime.nonmultipart .. class:: MIMENonMultipart() @@ -72,7 +72,7 @@ Here are the classes: is called, a :exc:`~email.errors.MultipartConversionError` exception is raised. -.. currentmodule:: email.mime.multipart +.. module:: email.mime.multipart .. class:: MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, \ *, policy=compat32, **_params) @@ -104,7 +104,7 @@ Here are the classes: .. versionchanged:: 3.6 Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.application +.. module:: email.mime.application .. class:: MIMEApplication(_data, _subtype='octet-stream', \ _encoder=email.encoders.encode_base64, \ @@ -135,7 +135,7 @@ Here are the classes: .. versionchanged:: 3.6 Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.audio +.. module:: email.mime.audio .. class:: MIMEAudio(_audiodata, _subtype=None, \ _encoder=email.encoders.encode_base64, \ @@ -169,7 +169,7 @@ Here are the classes: .. versionchanged:: 3.6 Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.image +.. module:: email.mime.image .. class:: MIMEImage(_imagedata, _subtype=None, \ _encoder=email.encoders.encode_base64, \ @@ -205,7 +205,7 @@ Here are the classes: .. versionchanged:: 3.6 Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.message +.. module:: email.mime.message .. class:: MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32) @@ -225,7 +225,7 @@ Here are the classes: .. versionchanged:: 3.6 Added *policy* keyword-only parameter. -.. currentmodule:: email.mime.text +.. module:: email.mime.text .. class:: MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32) diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index fd47dd0dc5d..f4777bb2462 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -219,7 +219,6 @@ added matters. To illustrate:: Default: :const:`False`. .. versionadded:: 3.5 - The *mangle_from_* parameter. .. attribute:: message_factory diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 57e1f581d4e..3b874594b14 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -820,7 +820,7 @@ Utilities and Decorators * ``FIRST = auto()`` will work (auto() is replaced with ``1``); * ``SECOND = auto(), -2`` will work (auto is replaced with ``2``, so ``2, -2`` is - used to create the ``SECOND`` enum member; + used to create the ``SECOND`` enum member; * ``THREE = [auto(), -3]`` will *not* work (``<auto instance>, -3`` is used to create the ``THREE`` enum member) diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 98972b476ba..eed0ad18b99 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -16,7 +16,7 @@ equivalent, even if they have the same name. .. index:: pair: statement; raise -The built-in exceptions listed below can be generated by the interpreter or +The built-in exceptions listed in this chapter can be generated by the interpreter or built-in functions. Except where mentioned, they have an "associated value" indicating the detailed cause of the error. This may be a string or a tuple of several items of information (e.g., an error code and a string explaining the @@ -38,36 +38,48 @@ information on defining exceptions is available in the Python Tutorial under Exception context ----------------- -When raising a new exception while another exception -is already being handled, the new exception's -:attr:`__context__` attribute is automatically set to the handled -exception. An exception may be handled when an :keyword:`except` or -:keyword:`finally` clause, or a :keyword:`with` statement, is used. +.. index:: pair: exception; chaining + __cause__ (exception attribute) + __context__ (exception attribute) + __suppress_context__ (exception attribute) -This implicit exception context can be -supplemented with an explicit cause by using :keyword:`!from` with -:keyword:`raise`:: +Three attributes on exception objects provide information about the context in +which the exception was raised: - raise new_exc from original_exc +.. attribute:: BaseException.__context__ + BaseException.__cause__ + BaseException.__suppress_context__ -The expression following :keyword:`from<raise>` must be an exception or ``None``. It -will be set as :attr:`__cause__` on the raised exception. Setting -:attr:`__cause__` also implicitly sets the :attr:`__suppress_context__` -attribute to ``True``, so that using ``raise new_exc from None`` -effectively replaces the old exception with the new one for display -purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`), while -leaving the old exception available in :attr:`__context__` for introspection -when debugging. + When raising a new exception while another exception + is already being handled, the new exception's + :attr:`!__context__` attribute is automatically set to the handled + exception. An exception may be handled when an :keyword:`except` or + :keyword:`finally` clause, or a :keyword:`with` statement, is used. -The default traceback display code shows these chained exceptions in -addition to the traceback for the exception itself. An explicitly chained -exception in :attr:`__cause__` is always shown when present. An implicitly -chained exception in :attr:`__context__` is shown only if :attr:`__cause__` -is :const:`None` and :attr:`__suppress_context__` is false. + This implicit exception context can be + supplemented with an explicit cause by using :keyword:`!from` with + :keyword:`raise`:: -In either case, the exception itself is always shown after any chained -exceptions so that the final line of the traceback always shows the last -exception that was raised. + raise new_exc from original_exc + + The expression following :keyword:`from<raise>` must be an exception or ``None``. It + will be set as :attr:`!__cause__` on the raised exception. Setting + :attr:`!__cause__` also implicitly sets the :attr:`!__suppress_context__` + attribute to ``True``, so that using ``raise new_exc from None`` + effectively replaces the old exception with the new one for display + purposes (e.g. converting :exc:`KeyError` to :exc:`AttributeError`), while + leaving the old exception available in :attr:`!__context__` for introspection + when debugging. + + The default traceback display code shows these chained exceptions in + addition to the traceback for the exception itself. An explicitly chained + exception in :attr:`!__cause__` is always shown when present. An implicitly + chained exception in :attr:`!__context__` is shown only if :attr:`!__cause__` + is :const:`None` and :attr:`!__suppress_context__` is false. + + In either case, the exception itself is always shown after any chained + exceptions so that the final line of the traceback always shows the last + exception that was raised. Inheriting from built-in exceptions @@ -126,6 +138,12 @@ The following exceptions are used mostly as base classes for other exceptions. tb = sys.exception().__traceback__ raise OtherException(...).with_traceback(tb) + .. attribute:: __traceback__ + + A writable field that holds the + :ref:`traceback object <traceback-objects>` associated with this + exception. See also: :ref:`raise`. + .. method:: add_note(note) Add the string ``note`` to the exception's notes which appear in the standard @@ -928,8 +946,10 @@ their subgroups based on the types of the contained exceptions. same check that is used in an ``except`` clause. The nesting structure of the current exception is preserved in the result, - as are the values of its :attr:`message`, :attr:`__traceback__`, - :attr:`__cause__`, :attr:`__context__` and :attr:`__notes__` fields. + as are the values of its :attr:`message`, + :attr:`~BaseException.__traceback__`, :attr:`~BaseException.__cause__`, + :attr:`~BaseException.__context__` and + :attr:`~BaseException.__notes__` fields. Empty nested groups are omitted from the result. The condition is checked for all exceptions in the nested exception group, @@ -952,10 +972,14 @@ their subgroups based on the types of the contained exceptions. and :meth:`split` return instances of the subclass rather than :exc:`ExceptionGroup`. - :meth:`subgroup` and :meth:`split` copy the :attr:`__traceback__`, - :attr:`__cause__`, :attr:`__context__` and :attr:`__notes__` fields from + :meth:`subgroup` and :meth:`split` copy the + :attr:`~BaseException.__traceback__`, + :attr:`~BaseException.__cause__`, :attr:`~BaseException.__context__` and + :attr:`~BaseException.__notes__` fields from the original exception group to the one returned by :meth:`derive`, so - these fields do not need to be updated by :meth:`derive`. :: + these fields do not need to be updated by :meth:`derive`. + + .. doctest:: >>> class MyGroup(ExceptionGroup): ... def derive(self, excs): @@ -981,9 +1005,9 @@ their subgroups based on the types of the contained exceptions. True - Note that :exc:`BaseExceptionGroup` defines :meth:`__new__`, so + Note that :exc:`BaseExceptionGroup` defines :meth:`~object.__new__`, so subclasses that need a different constructor signature need to - override that rather than :meth:`__init__`. For example, the following + override that rather than :meth:`~object.__init__`. For example, the following defines an exception group subclass which accepts an exit_code and and constructs the group's message from it. :: diff --git a/Doc/library/fnmatch.rst b/Doc/library/fnmatch.rst index aed8991d447..7cddecd5e80 100644 --- a/Doc/library/fnmatch.rst +++ b/Doc/library/fnmatch.rst @@ -50,10 +50,10 @@ Also note that :func:`functools.lru_cache` with the *maxsize* of 32768 is used t cache the compiled regex patterns in the following functions: :func:`fnmatch`, :func:`fnmatchcase`, :func:`.filter`. -.. function:: fnmatch(filename, pattern) +.. function:: fnmatch(name, pat) - Test whether the *filename* string matches the *pattern* string, returning - :const:`True` or :const:`False`. Both parameters are case-normalized + Test whether the filename string *name* matches the pattern string *pat*, + returning ``True`` or ``False``. Both parameters are case-normalized using :func:`os.path.normcase`. :func:`fnmatchcase` can be used to perform a case-sensitive comparison, regardless of whether that's standard for the operating system. @@ -69,22 +69,24 @@ cache the compiled regex patterns in the following functions: :func:`fnmatch`, print(file) -.. function:: fnmatchcase(filename, pattern) +.. function:: fnmatchcase(name, pat) - Test whether *filename* matches *pattern*, returning :const:`True` or - :const:`False`; the comparison is case-sensitive and does not apply - :func:`os.path.normcase`. + Test whether the filename string *name* matches the pattern string *pat*, + returning ``True`` or ``False``; + the comparison is case-sensitive and does not apply :func:`os.path.normcase`. -.. function:: filter(names, pattern) +.. function:: filter(names, pat) - Construct a list from those elements of the iterable *names* that match *pattern*. It is the same as - ``[n for n in names if fnmatch(n, pattern)]``, but implemented more efficiently. + Construct a list from those elements of the :term:`iterable` *names* + that match pattern *pat*. + It is the same as ``[n for n in names if fnmatch(n, pat)]``, + but implemented more efficiently. -.. function:: translate(pattern) +.. function:: translate(pat) - Return the shell-style *pattern* converted to a regular expression for + Return the shell-style pattern *pat* converted to a regular expression for using with :func:`re.match`. Example: diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst index d1fe6414ea0..2f98a272c29 100644 --- a/Doc/library/ftplib.rst +++ b/Doc/library/ftplib.rst @@ -45,19 +45,73 @@ Here's a sample session using the :mod:`ftplib` module:: '221 Goodbye.' -The module defines the following items: +.. _ftplib-reference: -.. class:: FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8') +Reference +--------- - Return a new instance of the :class:`FTP` class. When *host* is given, the - method call ``connect(host)`` is made. When *user* is given, additionally - the method call ``login(user, passwd, acct)`` is made (where *passwd* and - *acct* default to the empty string when not given). The optional *timeout* - parameter specifies a timeout in seconds for blocking operations like the - connection attempt (if is not specified, the global default timeout setting - will be used). *source_address* is a 2-tuple ``(host, port)`` for the socket - to bind to as its source address before connecting. The *encoding* parameter - specifies the encoding for directories and filenames. +.. _ftp-objects: + +FTP objects +^^^^^^^^^^^ + +.. Use substitutions for some param docs so we don't need to repeat them + in multiple places. + +.. |param_doc_user| replace:: + The username to log in with (default: ``'anonymous'``). + +.. |param_doc_passwd| replace:: + The password to use when logging in. + If not given, and if *passwd* is the empty string or ``"-"``, + a password will be automatically generated. + +.. Ideally, we'd like to use the :rfc: directive, but Sphinx will not allow it. + +.. |param_doc_acct| replace:: + Account information to be used for the ``ACCT`` FTP command. + Few systems implement this. + See `RFC-959 <https://datatracker.ietf.org/doc/html/rfc959.html>`__ + for more details. + +.. |param_doc_source_address| replace:: + A 2-tuple ``(host, port)`` for the socket to bind to as its + source address before connecting. + +.. |param_doc_encoding| replace:: + The encoding for directories and filenames (default: ``'utf-8'``). + +.. class:: FTP(host='', user='', passwd='', acct='', timeout=None, \ + source_address=None, *, encoding='utf-8') + + Return a new instance of the :class:`FTP` class. + + :param str host: + The hostname to connect to. + If given, :code:`connect(host)` is implicitly called by the constructor. + + :param str user: + |param_doc_user| + If given, :code:`login(host, passwd, acct)` is implicitly called + by the constructor. + + :param str passwd: + |param_doc_passwd| + + :param str acct: + |param_doc_acct| + + :param timeout: + A timeout in seconds for blocking operations like :meth:`connect` + (default: the global default timeout setting). + :type timeout: int | None + + :param source_address: + |param_doc_source_address| + :type source_address: tuple | None + + :param str encoding: + |param_doc_encoding| The :class:`FTP` class supports the :keyword:`with` statement, e.g.: @@ -85,376 +139,460 @@ The module defines the following items: The *encoding* parameter was added, and the default was changed from Latin-1 to UTF-8 to follow :rfc:`2640`. -.. class:: FTP_TLS(host='', user='', passwd='', acct='', *, context=None, - timeout=None, source_address=None, encoding='utf-8') + Several :class:`!FTP` methods are available in two flavors: + one for handling text files and another for binary files. + The methods are named for the command which is used followed by + ``lines`` for the text version or ``binary`` for the binary version. - A :class:`FTP` subclass which adds TLS support to FTP as described in - :rfc:`4217`. - Connect as usual to port 21 implicitly securing the FTP control connection - before authenticating. Securing the data connection requires the user to - explicitly ask for it by calling the :meth:`prot_p` method. *context* - is a :class:`ssl.SSLContext` object which allows bundling SSL configuration - options, certificates and private keys into a single (potentially - long-lived) structure. Please read :ref:`ssl-security` for best practices. + :class:`FTP` instances have the following methods: - .. versionadded:: 3.2 + .. method:: FTP.set_debuglevel(level) - .. versionchanged:: 3.3 - *source_address* parameter was added. + Set the instance's debugging level as an :class:`int`. + This controls the amount of debugging output printed. + The debug levels are: - .. versionchanged:: 3.4 - The class now supports hostname check with - :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see - :const:`ssl.HAS_SNI`). + * ``0`` (default): No debug output. + * ``1``: Produce a moderate amount of debug output, + generally a single line per request. + * ``2`` or higher: Produce the maximum amount of debugging output, + logging each line sent and received on the control connection. - .. versionchanged:: 3.9 - If the *timeout* parameter is set to be zero, it will raise a - :class:`ValueError` to prevent the creation of a non-blocking socket. - The *encoding* parameter was added, and the default was changed from - Latin-1 to UTF-8 to follow :rfc:`2640`. + .. method:: FTP.connect(host='', port=0, timeout=None, source_address=None) - .. versionchanged:: 3.12 - The deprecated *keyfile* and *certfile* parameters have been removed. + Connect to the given host and port. + This function should be called only once for each instance; + it should not be called if a *host* argument was given + when the :class:`FTP` instance was created. + All other :class:`!FTP` methods can only be called + after a connection has successfully been made. - Here's a sample session using the :class:`FTP_TLS` class:: + :param str host: + The host to connect to. - >>> ftps = FTP_TLS('ftp.pureftpd.org') - >>> ftps.login() - '230 Anonymous user logged in' - >>> ftps.prot_p() - '200 Data protection level set to "private"' - >>> ftps.nlst() - ['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp'] + :param int port: + The TCP port to connect to (default: ``21``, + as specified by the FTP protocol specification). + It is rarely needed to specify a different port number. + :param timeout: + A timeout in seconds for the connection attempt + (default: the global default timeout setting). + :type timeout: int | None -.. exception:: error_reply + :param source_address: + |param_doc_source_address| + :type source_address: tuple | None - Exception raised when an unexpected reply is received from the server. + .. audit-event:: ftplib.connect self,host,port ftplib.FTP.connect + .. versionchanged:: 3.3 + *source_address* parameter was added. -.. exception:: error_temp - Exception raised when an error code signifying a temporary error (response - codes in the range 400--499) is received. + .. method:: FTP.getwelcome() + Return the welcome message sent by the server in reply to the initial + connection. (This message sometimes contains disclaimers or help information + that may be relevant to the user.) -.. exception:: error_perm - Exception raised when an error code signifying a permanent error (response - codes in the range 500--599) is received. + .. method:: FTP.login(user='anonymous', passwd='', acct='') + Log on to the connected FTP server. + This function should be called only once for each instance, + after a connection has been established; + it should not be called if the *host* and *user* arguments were given + when the :class:`FTP` instance was created. + Most FTP commands are only allowed after the client has logged in. -.. exception:: error_proto + :param str user: + |param_doc_user| - Exception raised when a reply is received from the server that does not fit - the response specifications of the File Transfer Protocol, i.e. begin with a - digit in the range 1--5. + :param str passwd: + |param_doc_passwd| + :param str acct: + |param_doc_acct| -.. data:: all_errors - The set of all exceptions (as a tuple) that methods of :class:`FTP` - instances may raise as a result of problems with the FTP connection (as - opposed to programming errors made by the caller). This set includes the - four exceptions listed above as well as :exc:`OSError` and :exc:`EOFError`. + .. method:: FTP.abort() + Abort a file transfer that is in progress. Using this does not always work, but + it's worth a try. -.. seealso:: - Module :mod:`netrc` - Parser for the :file:`.netrc` file format. The file :file:`.netrc` is - typically used by FTP clients to load user authentication information - before prompting the user. + .. method:: FTP.sendcmd(cmd) + Send a simple command string to the server and return the response string. -.. _ftp-objects: + .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.sendcmd -FTP Objects ------------ -Several methods are available in two flavors: one for handling text files and -another for binary files. These are named for the command which is used -followed by ``lines`` for the text version or ``binary`` for the binary version. + .. method:: FTP.voidcmd(cmd) -:class:`FTP` instances have the following methods: + Send a simple command string to the server and handle the response. Return + nothing if a response code corresponding to success (codes in the range + 200--299) is received. Raise :exc:`error_reply` otherwise. + .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.voidcmd -.. method:: FTP.set_debuglevel(level) - Set the instance's debugging level. This controls the amount of debugging - output printed. The default, ``0``, produces no debugging output. A value of - ``1`` produces a moderate amount of debugging output, generally a single line - per request. A value of ``2`` or higher produces the maximum amount of - debugging output, logging each line sent and received on the control connection. + .. method:: FTP.retrbinary(cmd, callback, blocksize=8192, rest=None) + Retrieve a file in binary transfer mode. -.. method:: FTP.connect(host='', port=0, timeout=None, source_address=None) + :param str cmd: + An appropriate ``STOR`` command: :samp:`"STOR {filename}"`. - Connect to the given host and port. The default port number is ``21``, as - specified by the FTP protocol specification. It is rarely needed to specify a - different port number. This function should be called only once for each - instance; it should not be called at all if a host was given when the instance - was created. All other methods can only be used after a connection has been - made. - The optional *timeout* parameter specifies a timeout in seconds for the - connection attempt. If no *timeout* is passed, the global default timeout - setting will be used. - *source_address* is a 2-tuple ``(host, port)`` for the socket to bind to as - its source address before connecting. + :param callback: + A single parameter callable that is called + for each block of data received, + with its single argument being the data as :class:`bytes`. + :type callback: :term:`callable` - .. audit-event:: ftplib.connect self,host,port ftplib.FTP.connect + :param int blocksize: + The maximum chunk size to read on the low-level + :class:`~socket.socket` object created to do the actual transfer. + This also corresponds to the largest size of data + that will be passed to *callback*. + Defaults to ``8192``. - .. versionchanged:: 3.3 - *source_address* parameter was added. + :param int rest: + A ``REST`` command to be sent to the server. + See the documentation for the *rest* parameter of the :meth:`transfercmd` method. -.. method:: FTP.getwelcome() + .. method:: FTP.retrlines(cmd, callback=None) - Return the welcome message sent by the server in reply to the initial - connection. (This message sometimes contains disclaimers or help information - that may be relevant to the user.) + Retrieve a file or directory listing in the encoding specified by the + *encoding* parameter at initialization. + *cmd* should be an appropriate ``RETR`` command (see :meth:`retrbinary`) or + a command such as ``LIST`` or ``NLST`` (usually just the string ``'LIST'``). + ``LIST`` retrieves a list of files and information about those files. + ``NLST`` retrieves a list of file names. + The *callback* function is called for each line with a string argument + containing the line with the trailing CRLF stripped. The default *callback* + prints the line to :data:`sys.stdout`. -.. method:: FTP.login(user='anonymous', passwd='', acct='') + .. method:: FTP.set_pasv(val) - Log in as the given *user*. The *passwd* and *acct* parameters are optional and - default to the empty string. If no *user* is specified, it defaults to - ``'anonymous'``. If *user* is ``'anonymous'``, the default *passwd* is - ``'anonymous@'``. This function should be called only once for each instance, - after a connection has been established; it should not be called at all if a - host and user were given when the instance was created. Most FTP commands are - only allowed after the client has logged in. The *acct* parameter supplies - "accounting information"; few systems implement this. + Enable "passive" mode if *val* is true, otherwise disable passive mode. + Passive mode is on by default. -.. method:: FTP.abort() + .. method:: FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None) - Abort a file transfer that is in progress. Using this does not always work, but - it's worth a try. + Store a file in binary transfer mode. + :param str cmd: + An appropriate ``STOR`` command: :samp:`"STOR {filename}"`. -.. method:: FTP.sendcmd(cmd) + :param fp: + A file object (opened in binary mode) which is read until EOF, + using its :meth:`~io.RawIOBase.read` method in blocks of size *blocksize* + to provide the data to be stored. + :type fp: :term:`file object` - Send a simple command string to the server and return the response string. + :param int blocksize: + The read block size. + Defaults to ``8192``. - .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.sendcmd + :param callback: + A single parameter callable that is called + for each block of data sent, + with its single argument being the data as :class:`bytes`. + :type callback: :term:`callable` + :param int rest: + A ``REST`` command to be sent to the server. + See the documentation for the *rest* parameter of the :meth:`transfercmd` method. -.. method:: FTP.voidcmd(cmd) + .. versionchanged:: 3.2 + The *rest* parameter was added. - Send a simple command string to the server and handle the response. Return - nothing if a response code corresponding to success (codes in the range - 200--299) is received. Raise :exc:`error_reply` otherwise. - .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.voidcmd + .. method:: FTP.storlines(cmd, fp, callback=None) + Store a file in line mode. *cmd* should be an appropriate + ``STOR`` command (see :meth:`storbinary`). Lines are read until EOF from the + :term:`file object` *fp* (opened in binary mode) using its :meth:`~io.IOBase.readline` + method to provide the data to be stored. *callback* is an optional single + parameter callable that is called on each line after it is sent. -.. method:: FTP.retrbinary(cmd, callback, blocksize=8192, rest=None) - Retrieve a file in binary transfer mode. *cmd* should be an appropriate - ``RETR`` command: ``'RETR filename'``. The *callback* function is called for - each block of data received, with a single bytes argument giving the data - block. The optional *blocksize* argument specifies the maximum chunk size to - read on the low-level socket object created to do the actual transfer (which - will also be the largest size of the data blocks passed to *callback*). A - reasonable default is chosen. *rest* means the same thing as in the - :meth:`transfercmd` method. + .. method:: FTP.transfercmd(cmd, rest=None) + Initiate a transfer over the data connection. If the transfer is active, send an + ``EPRT`` or ``PORT`` command and the transfer command specified by *cmd*, and + accept the connection. If the server is passive, send an ``EPSV`` or ``PASV`` + command, connect to it, and start the transfer command. Either way, return the + socket for the connection. -.. method:: FTP.retrlines(cmd, callback=None) + If optional *rest* is given, a ``REST`` command is sent to the server, passing + *rest* as an argument. *rest* is usually a byte offset into the requested file, + telling the server to restart sending the file's bytes at the requested offset, + skipping over the initial bytes. Note however that the :meth:`transfercmd` + method converts *rest* to a string with the *encoding* parameter specified + at initialization, but no check is performed on the string's contents. If the + server does not recognize the ``REST`` command, an :exc:`error_reply` exception + will be raised. If this happens, simply call :meth:`transfercmd` without a + *rest* argument. - Retrieve a file or directory listing in the encoding specified by the - *encoding* parameter at initialization. - *cmd* should be an appropriate ``RETR`` command (see :meth:`retrbinary`) or - a command such as ``LIST`` or ``NLST`` (usually just the string ``'LIST'``). - ``LIST`` retrieves a list of files and information about those files. - ``NLST`` retrieves a list of file names. - The *callback* function is called for each line with a string argument - containing the line with the trailing CRLF stripped. The default *callback* - prints the line to ``sys.stdout``. + .. method:: FTP.ntransfercmd(cmd, rest=None) -.. method:: FTP.set_pasv(val) + Like :meth:`transfercmd`, but returns a tuple of the data connection and the + expected size of the data. If the expected size could not be computed, ``None`` + will be returned as the expected size. *cmd* and *rest* means the same thing as + in :meth:`transfercmd`. - Enable "passive" mode if *val* is true, otherwise disable passive mode. - Passive mode is on by default. + .. method:: FTP.mlsd(path="", facts=[]) -.. method:: FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None) + List a directory in a standardized format by using ``MLSD`` command + (:rfc:`3659`). If *path* is omitted the current directory is assumed. + *facts* is a list of strings representing the type of information desired + (e.g. ``["type", "size", "perm"]``). Return a generator object yielding a + tuple of two elements for every file found in path. First element is the + file name, the second one is a dictionary containing facts about the file + name. Content of this dictionary might be limited by the *facts* argument + but server is not guaranteed to return all requested facts. - Store a file in binary transfer mode. *cmd* should be an appropriate - ``STOR`` command: ``"STOR filename"``. *fp* is a :term:`file object` - (opened in binary mode) which is read until EOF using its :meth:`~io.IOBase.read` - method in blocks of size *blocksize* to provide the data to be stored. - The *blocksize* argument defaults to 8192. *callback* is an optional single - parameter callable that is called on each block of data after it is sent. - *rest* means the same thing as in the :meth:`transfercmd` method. + .. versionadded:: 3.3 - .. versionchanged:: 3.2 - *rest* parameter added. + .. method:: FTP.nlst(argument[, ...]) + + Return a list of file names as returned by the ``NLST`` command. The + optional *argument* is a directory to list (default is the current server + directory). Multiple arguments can be used to pass non-standard options to + the ``NLST`` command. -.. method:: FTP.storlines(cmd, fp, callback=None) + .. note:: If your server supports the command, :meth:`mlsd` offers a better API. - Store a file in line mode. *cmd* should be an appropriate - ``STOR`` command (see :meth:`storbinary`). Lines are read until EOF from the - :term:`file object` *fp* (opened in binary mode) using its :meth:`~io.IOBase.readline` - method to provide the data to be stored. *callback* is an optional single - parameter callable that is called on each line after it is sent. + .. method:: FTP.dir(argument[, ...]) -.. method:: FTP.transfercmd(cmd, rest=None) + Produce a directory listing as returned by the ``LIST`` command, printing it to + standard output. The optional *argument* is a directory to list (default is the + current server directory). Multiple arguments can be used to pass non-standard + options to the ``LIST`` command. If the last argument is a function, it is used + as a *callback* function as for :meth:`retrlines`; the default prints to + :data:`sys.stdout`. This method returns ``None``. - Initiate a transfer over the data connection. If the transfer is active, send an - ``EPRT`` or ``PORT`` command and the transfer command specified by *cmd*, and - accept the connection. If the server is passive, send an ``EPSV`` or ``PASV`` - command, connect to it, and start the transfer command. Either way, return the - socket for the connection. + .. note:: If your server supports the command, :meth:`mlsd` offers a better API. - If optional *rest* is given, a ``REST`` command is sent to the server, passing - *rest* as an argument. *rest* is usually a byte offset into the requested file, - telling the server to restart sending the file's bytes at the requested offset, - skipping over the initial bytes. Note however that the :meth:`transfercmd` - method converts *rest* to a string with the *encoding* parameter specified - at initialization, but no check is performed on the string's contents. If the - server does not recognize the ``REST`` command, an :exc:`error_reply` exception - will be raised. If this happens, simply call :meth:`transfercmd` without a - *rest* argument. + .. method:: FTP.rename(fromname, toname) -.. method:: FTP.ntransfercmd(cmd, rest=None) + Rename file *fromname* on the server to *toname*. - Like :meth:`transfercmd`, but returns a tuple of the data connection and the - expected size of the data. If the expected size could not be computed, ``None`` - will be returned as the expected size. *cmd* and *rest* means the same thing as - in :meth:`transfercmd`. + .. method:: FTP.delete(filename) -.. method:: FTP.mlsd(path="", facts=[]) + Remove the file named *filename* from the server. If successful, returns the + text of the response, otherwise raises :exc:`error_perm` on permission errors or + :exc:`error_reply` on other errors. - List a directory in a standardized format by using ``MLSD`` command - (:rfc:`3659`). If *path* is omitted the current directory is assumed. - *facts* is a list of strings representing the type of information desired - (e.g. ``["type", "size", "perm"]``). Return a generator object yielding a - tuple of two elements for every file found in path. First element is the - file name, the second one is a dictionary containing facts about the file - name. Content of this dictionary might be limited by the *facts* argument - but server is not guaranteed to return all requested facts. - .. versionadded:: 3.3 + .. method:: FTP.cwd(pathname) + Set the current directory on the server. -.. method:: FTP.nlst(argument[, ...]) - Return a list of file names as returned by the ``NLST`` command. The - optional *argument* is a directory to list (default is the current server - directory). Multiple arguments can be used to pass non-standard options to - the ``NLST`` command. + .. method:: FTP.mkd(pathname) - .. note:: If your server supports the command, :meth:`mlsd` offers a better API. + Create a new directory on the server. -.. method:: FTP.dir(argument[, ...]) + .. method:: FTP.pwd() - Produce a directory listing as returned by the ``LIST`` command, printing it to - standard output. The optional *argument* is a directory to list (default is the - current server directory). Multiple arguments can be used to pass non-standard - options to the ``LIST`` command. If the last argument is a function, it is used - as a *callback* function as for :meth:`retrlines`; the default prints to - ``sys.stdout``. This method returns ``None``. + Return the pathname of the current directory on the server. - .. note:: If your server supports the command, :meth:`mlsd` offers a better API. + .. method:: FTP.rmd(dirname) -.. method:: FTP.rename(fromname, toname) + Remove the directory named *dirname* on the server. - Rename file *fromname* on the server to *toname*. + .. method:: FTP.size(filename) -.. method:: FTP.delete(filename) + Request the size of the file named *filename* on the server. On success, the + size of the file is returned as an integer, otherwise ``None`` is returned. + Note that the ``SIZE`` command is not standardized, but is supported by many + common server implementations. - Remove the file named *filename* from the server. If successful, returns the - text of the response, otherwise raises :exc:`error_perm` on permission errors or - :exc:`error_reply` on other errors. + .. method:: FTP.quit() -.. method:: FTP.cwd(pathname) + Send a ``QUIT`` command to the server and close the connection. This is the + "polite" way to close a connection, but it may raise an exception if the server + responds with an error to the ``QUIT`` command. This implies a call to the + :meth:`close` method which renders the :class:`FTP` instance useless for + subsequent calls (see below). - Set the current directory on the server. + .. method:: FTP.close() -.. method:: FTP.mkd(pathname) + Close the connection unilaterally. This should not be applied to an already + closed connection such as after a successful call to :meth:`~FTP.quit`. + After this call the :class:`FTP` instance should not be used any more (after + a call to :meth:`close` or :meth:`~FTP.quit` you cannot reopen the + connection by issuing another :meth:`login` method). - Create a new directory on the server. +FTP_TLS objects +^^^^^^^^^^^^^^^ -.. method:: FTP.pwd() +.. class:: FTP_TLS(host='', user='', passwd='', acct='', *, context=None, \ + timeout=None, source_address=None, encoding='utf-8') - Return the pathname of the current directory on the server. + An :class:`FTP` subclass which adds TLS support to FTP as described in + :rfc:`4217`. + Connect to port 21 implicitly securing the FTP control connection + before authenticating. + .. note:: + The user must explicitly secure the data connection + by calling the :meth:`prot_p` method. -.. method:: FTP.rmd(dirname) + :param str host: + The hostname to connect to. + If given, :code:`connect(host)` is implicitly called by the constructor. - Remove the directory named *dirname* on the server. + :param str user: + |param_doc_user| + If given, :code:`login(host, passwd, acct)` is implicitly called + by the constructor. + :param str passwd: + |param_doc_passwd| -.. method:: FTP.size(filename) + :param str acct: + |param_doc_acct| - Request the size of the file named *filename* on the server. On success, the - size of the file is returned as an integer, otherwise ``None`` is returned. - Note that the ``SIZE`` command is not standardized, but is supported by many - common server implementations. + :param context: + An SSL context object which allows bundling SSL configuration options, + certificates and private keys into a single, potentially long-lived, + structure. + Please read :ref:`ssl-security` for best practices. + :type context: :class:`ssl.SSLContext` + :param timeout: + A timeout in seconds for blocking operations like :meth:`~FTP.connect` + (default: the global default timeout setting). + :type timeout: int | None -.. method:: FTP.quit() + :param source_address: + |param_doc_source_address| + :type source_address: tuple | None - Send a ``QUIT`` command to the server and close the connection. This is the - "polite" way to close a connection, but it may raise an exception if the server - responds with an error to the ``QUIT`` command. This implies a call to the - :meth:`close` method which renders the :class:`FTP` instance useless for - subsequent calls (see below). + :param str encoding: + |param_doc_encoding| + .. versionadded:: 3.2 -.. method:: FTP.close() + .. versionchanged:: 3.3 + Added the *source_address* parameter. - Close the connection unilaterally. This should not be applied to an already - closed connection such as after a successful call to :meth:`~FTP.quit`. - After this call the :class:`FTP` instance should not be used any more (after - a call to :meth:`close` or :meth:`~FTP.quit` you cannot reopen the - connection by issuing another :meth:`login` method). + .. versionchanged:: 3.4 + The class now supports hostname check with + :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see + :const:`ssl.HAS_SNI`). + .. versionchanged:: 3.9 + If the *timeout* parameter is set to be zero, it will raise a + :class:`ValueError` to prevent the creation of a non-blocking socket. + The *encoding* parameter was added, and the default was changed from + Latin-1 to UTF-8 to follow :rfc:`2640`. -FTP_TLS Objects ---------------- + .. versionchanged:: 3.12 + The deprecated *keyfile* and *certfile* parameters have been removed. -:class:`FTP_TLS` class inherits from :class:`FTP`, defining these additional objects: + Here's a sample session using the :class:`FTP_TLS` class:: -.. attribute:: FTP_TLS.ssl_version + >>> ftps = FTP_TLS('ftp.pureftpd.org') + >>> ftps.login() + '230 Anonymous user logged in' + >>> ftps.prot_p() + '200 Data protection level set to "private"' + >>> ftps.nlst() + ['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp'] - The SSL version to use (defaults to :data:`ssl.PROTOCOL_SSLv23`). + :class:`!FTP_TLS` class inherits from :class:`FTP`, + defining these additional methods and attributes: -.. method:: FTP_TLS.auth() + .. attribute:: FTP_TLS.ssl_version - Set up a secure control connection by using TLS or SSL, depending on what - is specified in the :attr:`ssl_version` attribute. + The SSL version to use (defaults to :data:`ssl.PROTOCOL_SSLv23`). - .. versionchanged:: 3.4 - The method now supports hostname check with - :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see - :const:`ssl.HAS_SNI`). + .. method:: FTP_TLS.auth() + + Set up a secure control connection by using TLS or SSL, depending on what + is specified in the :attr:`ssl_version` attribute. -.. method:: FTP_TLS.ccc() + .. versionchanged:: 3.4 + The method now supports hostname check with + :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see + :const:`ssl.HAS_SNI`). - Revert control channel back to plaintext. This can be useful to take - advantage of firewalls that know how to handle NAT with non-secure FTP - without opening fixed ports. + .. method:: FTP_TLS.ccc() - .. versionadded:: 3.3 + Revert control channel back to plaintext. This can be useful to take + advantage of firewalls that know how to handle NAT with non-secure FTP + without opening fixed ports. -.. method:: FTP_TLS.prot_p() + .. versionadded:: 3.3 - Set up secure data connection. + .. method:: FTP_TLS.prot_p() -.. method:: FTP_TLS.prot_c() + Set up secure data connection. + + .. method:: FTP_TLS.prot_c() + + Set up clear text data connection. + + +Module variables +^^^^^^^^^^^^^^^^ + +.. exception:: error_reply + + Exception raised when an unexpected reply is received from the server. - Set up clear text data connection. + +.. exception:: error_temp + + Exception raised when an error code signifying a temporary error (response + codes in the range 400--499) is received. + + +.. exception:: error_perm + + Exception raised when an error code signifying a permanent error (response + codes in the range 500--599) is received. + + +.. exception:: error_proto + + Exception raised when a reply is received from the server that does not fit + the response specifications of the File Transfer Protocol, i.e. begin with a + digit in the range 1--5. + + +.. data:: all_errors + + The set of all exceptions (as a tuple) that methods of :class:`FTP` + instances may raise as a result of problems with the FTP connection (as + opposed to programming errors made by the caller). This set includes the + four exceptions listed above as well as :exc:`OSError` and :exc:`EOFError`. + + +.. seealso:: + + Module :mod:`netrc` + Parser for the :file:`.netrc` file format. The file :file:`.netrc` is + typically used by FTP clients to load user authentication information + before prompting the user. diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 3af50cbb7cd..e23cdf1275b 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -668,16 +668,15 @@ are always available. They are listed here in alphabetical order. sign: "+" | "-" infinity: "Infinity" | "inf" nan: "nan" - digitpart: `!digit` (["_"] `!digit`)* + digit: <a Unicode decimal digit, i.e. characters in Unicode general category Nd> + digitpart: `digit` (["_"] `digit`)* number: [`digitpart`] "." `digitpart` | `digitpart` ["."] exponent: ("e" | "E") ["+" | "-"] `digitpart` floatnumber: number [`exponent`] floatvalue: [`sign`] (`floatnumber` | `infinity` | `nan`) - Here ``digit`` is a Unicode decimal digit (character in the Unicode general - category ``Nd``). Case is not significant, so, for example, "inf", "Inf", - "INFINITY", and "iNfINity" are all acceptable spellings for positive - infinity. + Case is not significant, so, for example, "inf", "Inf", "INFINITY", and + "iNfINity" are all acceptable spellings for positive infinity. Otherwise, if the argument is an integer or a floating point number, a floating point number with the same value (within Python's floating point @@ -1074,8 +1073,8 @@ are always available. They are listed here in alphabetical order. such as ``sorted(iterable, key=keyfunc, reverse=True)[0]`` and ``heapq.nlargest(1, iterable, key=keyfunc)``. - .. versionadded:: 3.4 - The *default* keyword-only argument. + .. versionchanged:: 3.4 + Added the *default* keyword-only parameter. .. versionchanged:: 3.8 The *key* can be ``None``. @@ -1112,8 +1111,8 @@ are always available. They are listed here in alphabetical order. such as ``sorted(iterable, key=keyfunc)[0]`` and ``heapq.nsmallest(1, iterable, key=keyfunc)``. - .. versionadded:: 3.4 - The *default* keyword-only argument. + .. versionchanged:: 3.4 + Added the *default* keyword-only parameter. .. versionchanged:: 3.8 The *key* can be ``None``. diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst index f736eb0aca1..724caa68dd7 100644 --- a/Doc/library/functools.rst +++ b/Doc/library/functools.rst @@ -194,7 +194,7 @@ The :mod:`functools` module defines the following functions: In contrast, the tuple arguments ``('answer', Decimal(42))`` and ``('answer', Fraction(42))`` are treated as equivalent. - The wrapped function is instrumented with a :func:`cache_parameters` + The wrapped function is instrumented with a :func:`!cache_parameters` function that returns a new :class:`dict` showing the values for *maxsize* and *typed*. This is for information purposes only. Mutating the values has no effect. @@ -275,8 +275,8 @@ The :mod:`functools` module defines the following functions: .. versionchanged:: 3.8 Added the *user_function* option. - .. versionadded:: 3.9 - Added the function :func:`cache_parameters` + .. versionchanged:: 3.9 + Added the function :func:`!cache_parameters` .. decorator:: total_ordering @@ -740,7 +740,7 @@ have three read-only attributes: called. :class:`partial` objects are like :class:`function` objects in that they are -callable, weak referencable, and can have attributes. There are some important +callable, weak referenceable, and can have attributes. There are some important differences. For instance, the :attr:`~definition.__name__` and :attr:`__doc__` attributes are not created automatically. Also, :class:`partial` objects defined in classes behave like static methods and do not transform into bound methods diff --git a/Doc/library/gzip.rst b/Doc/library/gzip.rst index 50cde09fa10..79be215a766 100644 --- a/Doc/library/gzip.rst +++ b/Doc/library/gzip.rst @@ -61,7 +61,7 @@ The module defines the following items: .. exception:: BadGzipFile - An exception raised for invalid gzip files. It inherits :exc:`OSError`. + An exception raised for invalid gzip files. It inherits from :exc:`OSError`. :exc:`EOFError` and :exc:`zlib.error` can also be raised for invalid gzip files. @@ -287,4 +287,3 @@ Command line options .. option:: -h, --help Show the help message. - diff --git a/Doc/library/heapq.rst b/Doc/library/heapq.rst index 8b00f7b2795..ddbada13bdd 100644 --- a/Doc/library/heapq.rst +++ b/Doc/library/heapq.rst @@ -270,7 +270,7 @@ winner. The simplest algorithmic way to remove it and find the "next" winner is to move some loser (let's say cell 30 in the diagram above) into the 0 position, and then percolate this new 0 down the tree, exchanging values, until the invariant is re-established. This is clearly logarithmic on the total number of -items in the tree. By iterating over all items, you get an O(n log n) sort. +items in the tree. By iterating over all items, you get an *O*\ (*n* log *n*) sort. A nice feature of this sort is that you can efficiently insert new items while the sort is going on, provided that the inserted items are not "better" than the diff --git a/Doc/library/hmac.rst b/Doc/library/hmac.rst index b2ca0455d37..43012e03c58 100644 --- a/Doc/library/hmac.rst +++ b/Doc/library/hmac.rst @@ -14,7 +14,7 @@ This module implements the HMAC algorithm as described by :rfc:`2104`. -.. function:: new(key, msg=None, digestmod='') +.. function:: new(key, msg=None, digestmod) Return a new hmac object. *key* is a bytes or bytearray object giving the secret key. If *msg* is present, the method call ``update(msg)`` is made. @@ -27,10 +27,9 @@ This module implements the HMAC algorithm as described by :rfc:`2104`. Parameter *msg* can be of any type supported by :mod:`hashlib`. Parameter *digestmod* can be the name of a hash algorithm. - .. deprecated-removed:: 3.4 3.8 - MD5 as implicit default digest for *digestmod* is deprecated. - The digestmod parameter is now required. Pass it as a keyword - argument to avoid awkwardness when you do not have an initial msg. + .. versionchanged:: 3.8 + The *digestmod* argument is now required. Pass it as a keyword + argument to avoid awkwardness when you do not have an initial *msg*. .. function:: digest(key, msg, digest) @@ -114,11 +113,9 @@ A hash object has the following attributes: .. versionadded:: 3.4 -.. deprecated:: 3.9 - - The undocumented attributes ``HMAC.digest_cons``, ``HMAC.inner``, and - ``HMAC.outer`` are internal implementation details and will be removed in - Python 3.10. +.. versionchanged:: 3.10 + Removed the undocumented attributes ``HMAC.digest_cons``, ``HMAC.inner``, + and ``HMAC.outer``. This module also provides the following helper function: diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst index c46314fc5e2..7e4502064f2 100644 --- a/Doc/library/http.client.rst +++ b/Doc/library/http.client.rst @@ -92,7 +92,7 @@ The module provides the following classes: .. versionchanged:: 3.4.3 This class now performs all the necessary certificate and hostname checks by default. To revert to the previous, unverified, behavior - :func:`ssl._create_unverified_context` can be passed to the *context* + :func:`!ssl._create_unverified_context` can be passed to the *context* parameter. .. versionchanged:: 3.8 @@ -103,7 +103,7 @@ The module provides the following classes: .. versionchanged:: 3.10 This class now sends an ALPN extension with protocol indicator ``http/1.1`` when no *context* is given. Custom *context* should set - ALPN protocols with :meth:`~ssl.SSLContext.set_alpn_protocol`. + ALPN protocols with :meth:`~ssl.SSLContext.set_alpn_protocols`. .. versionchanged:: 3.12 The deprecated *key_file*, *cert_file* and *check_hostname* parameters @@ -124,7 +124,7 @@ This module provides the following function: .. function:: parse_headers(fp) Parse the headers from a file pointer *fp* representing a HTTP - request/response. The file has to be a :class:`BufferedIOBase` reader + request/response. The file has to be a :class:`~io.BufferedIOBase` reader (i.e. not text) and must provide a valid :rfc:`2822` style header. This function returns an instance of :class:`http.client.HTTPMessage` @@ -311,7 +311,7 @@ HTTPConnection Objects :class:`str` or bytes-like object that is not also a file as the body representation. - .. versionadded:: 3.2 + .. versionchanged:: 3.2 *body* can now be an iterable. .. versionchanged:: 3.6 @@ -416,7 +416,7 @@ HTTPConnection Objects .. versionadded:: 3.7 -As an alternative to using the :meth:`request` method described above, you can +As an alternative to using the :meth:`~HTTPConnection.request` method described above, you can also send your request step by step, by using the four functions below. @@ -461,9 +461,8 @@ also send your request step by step, by using the four functions below. This is to avoid premature termination of the read of the request by the target server due to malformed encoding. - .. versionadded:: 3.6 - Chunked encoding support. The *encode_chunked* parameter was - added. + .. versionchanged:: 3.6 + Added chunked encoding support and the *encode_chunked* parameter. .. method:: HTTPConnection.send(data) @@ -648,6 +647,8 @@ method attribute. Here is an example session that uses the ``PUT`` method:: HTTPMessage Objects ------------------- +.. class:: HTTPMessage(email.message.Message) + An :class:`http.client.HTTPMessage` instance holds the headers from an HTTP response. It is implemented using the :class:`email.message.Message` class. diff --git a/Doc/library/http.cookies.rst b/Doc/library/http.cookies.rst index a2c1eb00d8b..e91972fe621 100644 --- a/Doc/library/http.cookies.rst +++ b/Doc/library/http.cookies.rst @@ -18,16 +18,17 @@ cookie value. The module formerly strictly applied the parsing rules described in the :rfc:`2109` and :rfc:`2068` specifications. It has since been discovered that -MSIE 3.0x doesn't follow the character rules outlined in those specs and also -many current day browsers and servers have relaxed parsing rules when comes to -Cookie handling. As a result, the parsing rules used are a bit less strict. +MSIE 3.0x didn't follow the character rules outlined in those specs; many +current-day browsers and servers have also relaxed parsing rules when it comes +to cookie handling. As a result, this module now uses parsing rules that are a +bit less strict than they once were. The character set, :data:`string.ascii_letters`, :data:`string.digits` and ``!#$%&'*+-.^_`|~:`` denote the set of valid characters allowed by this module -in Cookie name (as :attr:`~Morsel.key`). +in a cookie name (as :attr:`~Morsel.key`). .. versionchanged:: 3.3 - Allowed ':' as a valid Cookie name character. + Allowed ':' as a valid cookie name character. .. note:: @@ -54,9 +55,10 @@ in Cookie name (as :attr:`~Morsel.key`). .. class:: SimpleCookie([input]) - This class derives from :class:`BaseCookie` and overrides :meth:`value_decode` - and :meth:`value_encode`. SimpleCookie supports strings as cookie values. - When setting the value, SimpleCookie calls the builtin :func:`str()` to convert + This class derives from :class:`BaseCookie` and overrides :meth:`~BaseCookie.value_decode` + and :meth:`~BaseCookie.value_encode`. :class:`!SimpleCookie` supports + strings as cookie values. When setting the value, :class:`!SimpleCookie` + calls the builtin :func:`str` to convert the value to a string. Values received from HTTP are kept as strings. .. seealso:: @@ -129,17 +131,17 @@ Morsel Objects Abstract a key/value pair, which has some :rfc:`2109` attributes. Morsels are dictionary-like objects, whose set of keys is constant --- the valid - :rfc:`2109` attributes, which are - - * ``expires`` - * ``path`` - * ``comment`` - * ``domain`` - * ``max-age`` - * ``secure`` - * ``version`` - * ``httponly`` - * ``samesite`` + :rfc:`2109` attributes, which are: + + .. attribute:: expires + path + comment + domain + max-age + secure + version + httponly + samesite The attribute :attr:`httponly` specifies that the cookie is only transferred in HTTP requests, and is not accessible through JavaScript. This is intended @@ -152,7 +154,7 @@ Morsel Objects The keys are case-insensitive and their default value is ``''``. .. versionchanged:: 3.5 - :meth:`~Morsel.__eq__` now takes :attr:`~Morsel.key` and :attr:`~Morsel.value` + :meth:`!__eq__` now takes :attr:`~Morsel.key` and :attr:`~Morsel.value` into account. .. versionchanged:: 3.7 diff --git a/Doc/library/http.server.rst b/Doc/library/http.server.rst index f9b9425bec3..eb3a6a87a11 100644 --- a/Doc/library/http.server.rst +++ b/Doc/library/http.server.rst @@ -65,10 +65,10 @@ provides three different variants: The handler will parse the request and the headers, then call a method specific to the request type. The method name is constructed from the - request. For example, for the request method ``SPAM``, the :meth:`do_SPAM` + request. For example, for the request method ``SPAM``, the :meth:`!do_SPAM` method will be called with no arguments. All of the relevant information is stored in instance variables of the handler. Subclasses should not need to - override or extend the :meth:`__init__` method. + override or extend the :meth:`!__init__` method. :class:`BaseHTTPRequestHandler` has the following instance variables: @@ -187,13 +187,13 @@ provides three different variants: Calls :meth:`handle_one_request` once (or, if persistent connections are enabled, multiple times) to handle incoming HTTP requests. You should - never need to override it; instead, implement appropriate :meth:`do_\*` + never need to override it; instead, implement appropriate :meth:`!do_\*` methods. .. method:: handle_one_request() This method will parse and dispatch the request to the appropriate - :meth:`do_\*` method. You should never need to override it. + :meth:`!do_\*` method. You should never need to override it. .. method:: handle_expect_100() @@ -328,8 +328,8 @@ provides three different variants: or the current directory if *directory* is not provided, directly mapping the directory structure to HTTP requests. - .. versionadded:: 3.7 - The *directory* parameter. + .. versionchanged:: 3.7 + Added the *directory* parameter. .. versionchanged:: 3.9 The *directory* parameter accepts a :term:`path-like object`. @@ -438,11 +438,11 @@ to bind to localhost only:: python -m http.server --bind 127.0.0.1 -.. versionadded:: 3.4 - ``--bind`` argument was introduced. +.. versionchanged:: 3.4 + Added the ``--bind`` option. -.. versionadded:: 3.8 - ``--bind`` argument enhanced to support IPv6 +.. versionchanged:: 3.8 + Support IPv6 in the ``--bind`` option. By default, the server uses the current directory. The option ``-d/--directory`` specifies a directory to which it should serve the files. For example, @@ -450,8 +450,8 @@ the following command uses a specific directory:: python -m http.server --directory /tmp/ -.. versionadded:: 3.7 - ``--directory`` argument was introduced. +.. versionchanged:: 3.7 + Added the ``--directory`` option. By default, the server is conformant to HTTP/1.0. The option ``-p/--protocol`` specifies the HTTP version to which the server is conformant. For example, the @@ -459,8 +459,8 @@ following command runs an HTTP/1.1 conformant server:: python -m http.server --protocol HTTP/1.1 -.. versionadded:: 3.11 - ``--protocol`` argument was introduced. +.. versionchanged:: 3.11 + Added the ``--protocol`` option. .. class:: CGIHTTPRequestHandler(request, client_address, server) @@ -524,5 +524,5 @@ default :class:`BaseHTTPRequestHandler` ``.log_message`` implementation. This could allow remote clients connecting to your server to send nefarious control codes to your terminal. -.. versionadded:: 3.12 +.. versionchanged:: 3.12 Control characters are scrubbed in stderr logs. diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst index e710d0bacf3..249dc0ea6ba 100644 --- a/Doc/library/idle.rst +++ b/Doc/library/idle.rst @@ -18,8 +18,6 @@ IDLE is Python's Integrated Development and Learning Environment. IDLE has the following features: -* coded in 100% pure Python, using the :mod:`tkinter` GUI toolkit - * cross-platform: works mostly the same on Windows, Unix, and macOS * Python shell window (interactive interpreter) with colorizing @@ -422,41 +420,34 @@ and that other files do not. Run Python code with the Run menu. Key bindings ^^^^^^^^^^^^ -In this section, 'C' refers to the :kbd:`Control` key on Windows and Unix and -the :kbd:`Command` key on macOS. - -* :kbd:`Backspace` deletes to the left; :kbd:`Del` deletes to the right - -* :kbd:`C-Backspace` delete word left; :kbd:`C-Del` delete word to the right - -* Arrow keys and :kbd:`Page Up`/:kbd:`Page Down` to move around - -* :kbd:`C-LeftArrow` and :kbd:`C-RightArrow` moves by words +The IDLE insertion cursor is a thin vertical bar between character +positions. When characters are entered, the insertion cursor and +everything to its right moves right one character and +the new character is entered in the new space. -* :kbd:`Home`/:kbd:`End` go to begin/end of line +Several non-character keys move the cursor and possibly +delete characters. Deletion does not puts text on the clipboard, +but IDLE has an undo list. Wherever this doc discusses keys, +'C' refers to the :kbd:`Control` key on Windows and +Unix and the :kbd:`Command` key on macOS. (And all such dicussions +assume that the keys have not been re-bound to something else.) -* :kbd:`C-Home`/:kbd:`C-End` go to begin/end of file +* Arrow keys move the cursor one character or line. -* Some useful Emacs bindings are inherited from Tcl/Tk: +* :kbd:`C-LeftArrow` and :kbd:`C-RightArrow` moves left or right one word. - * :kbd:`C-a` beginning of line +* :kbd:`Home` and :kbd:`End` go to the beginning or end of the line. - * :kbd:`C-e` end of line +* :kbd:`Page Up` and :kbd:`Page Down` go up or down one screen. - * :kbd:`C-k` kill line (but doesn't put it in clipboard) +* :kbd:`C-Home` and :kbd:`C-End` go to beginning or end of the file. - * :kbd:`C-l` center window around the insertion point +* :kbd:`Backspace` and :kbd:`Del` (or :kbd:`C-d`) delete the previous + or next character. - * :kbd:`C-b` go backward one character without deleting (usually you can - also use the cursor key for this) +* :kbd:`C-Backspace` and :kbd:`C-Del` delete one word left or right. - * :kbd:`C-f` go forward one character without deleting (usually you can - also use the cursor key for this) - - * :kbd:`C-p` go up one line (usually you can also use the cursor key for - this) - - * :kbd:`C-d` delete next character +* :kbd:`C-k` deletes ('kills') everything to the right. Standard keybindings (like :kbd:`C-c` to copy and :kbd:`C-v` to paste) may work. Keybindings are selected in the Configure IDLE dialog. @@ -611,23 +602,18 @@ when one requests a restart on the Shell menu, or when one runs code in an editor window. The editing features described in previous subsections work when entering -code interactively. IDLE's Shell window also responds to the following keys. - -* :kbd:`C-c` interrupts executing command - -* :kbd:`C-d` sends end-of-file; closes window if typed at a ``>>>`` prompt - -* :kbd:`Alt-/` (Expand word) is also useful to reduce typing +code interactively. IDLE's Shell window also responds to the following: - Command history +* :kbd:`C-c` attemps to interrupt statement execution (but may fail). - * :kbd:`Alt-p` retrieves previous command matching what you have typed. On - macOS use :kbd:`C-p`. +* :kbd:`C-d` closes Shell if typed at a ``>>>`` prompt. - * :kbd:`Alt-n` retrieves next. On macOS use :kbd:`C-n`. +* :kbd:`Alt-p` and :kbd:`Alt-n` (:kbd:`C-p` and :kbd:`C-n` on macOS) + retrieve to the current prompt the previous or next previously + entered statement that matches anything already typed. - * :kbd:`Return` while the cursor is on any previous command - retrieves that command +* :kbd:`Return` while the cursor is on any previous statement + appends the latter to anything already typed at the prompt. Text colors ^^^^^^^^^^^ diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index 6f4a24a353b..a1178cfccdd 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -492,7 +492,7 @@ attributes (see :ref:`import-mod-attrs` for module attributes): Methods implemented via descriptors that also pass one of the other tests return ``False`` from the :func:`ismethoddescriptor` test, simply because the other tests promise more -- you can, e.g., count on having the - :ref:`__func__ <instance-methods>` attribute (etc) when an object passes + :attr:`~method.__func__` attribute (etc) when an object passes :func:`ismethod`. @@ -1208,9 +1208,10 @@ Classes and functions * If ``obj`` is a class, ``globals`` defaults to ``sys.modules[obj.__module__].__dict__`` and ``locals`` defaults to the ``obj`` class namespace. - * If ``obj`` is a callable, ``globals`` defaults to ``obj.__globals__``, + * If ``obj`` is a callable, ``globals`` defaults to + :attr:`obj.__globals__ <function.__globals__>`, although if ``obj`` is a wrapped function (using - ``functools.update_wrapper()``) it is first unwrapped. + :func:`functools.update_wrapper`) it is first unwrapped. Calling ``get_annotations`` is best practice for accessing the annotations dict of any object. See :ref:`annotations-howto` for diff --git a/Doc/library/io.rst b/Doc/library/io.rst index 6736aa9ee2b..8eb531aa4ea 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -466,7 +466,7 @@ I/O Base Classes .. class:: RawIOBase - Base class for raw binary streams. It inherits :class:`IOBase`. + Base class for raw binary streams. It inherits from :class:`IOBase`. Raw binary streams typically provide low-level access to an underlying OS device or API, and do not try to encapsulate it in high-level primitives @@ -519,7 +519,7 @@ I/O Base Classes .. class:: BufferedIOBase Base class for binary streams that support some kind of buffering. - It inherits :class:`IOBase`. + It inherits from :class:`IOBase`. The main difference with :class:`RawIOBase` is that methods :meth:`read`, :meth:`readinto` and :meth:`write` will try (respectively) to read as much @@ -633,7 +633,7 @@ Raw File I/O .. class:: FileIO(name, mode='r', closefd=True, opener=None) A raw binary stream representing an OS-level file containing bytes data. It - inherits :class:`RawIOBase`. + inherits from :class:`RawIOBase`. The *name* can be one of two things: @@ -696,7 +696,7 @@ than raw I/O does. .. class:: BytesIO(initial_bytes=b'') - A binary stream using an in-memory bytes buffer. It inherits + A binary stream using an in-memory bytes buffer. It inherits from :class:`BufferedIOBase`. The buffer is discarded when the :meth:`~IOBase.close` method is called. @@ -745,7 +745,7 @@ than raw I/O does. .. class:: BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE) A buffered binary stream providing higher-level access to a readable, non - seekable :class:`RawIOBase` raw binary stream. It inherits + seekable :class:`RawIOBase` raw binary stream. It inherits from :class:`BufferedIOBase`. When reading data from this object, a larger amount of data may be @@ -783,7 +783,7 @@ than raw I/O does. .. class:: BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE) A buffered binary stream providing higher-level access to a writeable, non - seekable :class:`RawIOBase` raw binary stream. It inherits + seekable :class:`RawIOBase` raw binary stream. It inherits from :class:`BufferedIOBase`. When writing to this object, data is normally placed into an internal @@ -818,7 +818,7 @@ than raw I/O does. .. class:: BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE) A buffered binary stream providing higher-level access to a seekable - :class:`RawIOBase` raw binary stream. It inherits :class:`BufferedReader` + :class:`RawIOBase` raw binary stream. It inherits from :class:`BufferedReader` and :class:`BufferedWriter`. The constructor creates a reader and writer for a seekable raw stream, given @@ -834,7 +834,7 @@ than raw I/O does. A buffered binary stream providing higher-level access to two non seekable :class:`RawIOBase` raw binary streams---one readable, the other writeable. - It inherits :class:`BufferedIOBase`. + It inherits from :class:`BufferedIOBase`. *reader* and *writer* are :class:`RawIOBase` objects that are readable and writeable respectively. If the *buffer_size* is omitted it defaults to @@ -857,7 +857,7 @@ Text I/O .. class:: TextIOBase Base class for text streams. This class provides a character and line based - interface to stream I/O. It inherits :class:`IOBase`. + interface to stream I/O. It inherits from :class:`IOBase`. :class:`TextIOBase` provides or overrides these data attributes and methods in addition to those from :class:`IOBase`: @@ -946,7 +946,7 @@ Text I/O line_buffering=False, write_through=False) A buffered text stream providing higher-level access to a - :class:`BufferedIOBase` buffered binary stream. It inherits + :class:`BufferedIOBase` buffered binary stream. It inherits from :class:`TextIOBase`. *encoding* gives the name of the encoding that the stream will be decoded or @@ -1073,7 +1073,7 @@ Text I/O .. class:: StringIO(initial_value='', newline='\n') - A text stream using an in-memory text buffer. It inherits + A text stream using an in-memory text buffer. It inherits from :class:`TextIOBase`. The text buffer is discarded when the :meth:`~IOBase.close` method is @@ -1124,7 +1124,7 @@ Text I/O .. class:: IncrementalNewlineDecoder A helper codec that decodes newlines for :term:`universal newlines` mode. - It inherits :class:`codecs.IncrementalDecoder`. + It inherits from :class:`codecs.IncrementalDecoder`. Performance diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index ebb4ebcfa76..67dc8f6d875 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -795,11 +795,11 @@ which incur interpreter overhead. import random def take(n, iterable): - "Return first n items of the iterable as a list" + "Return first n items of the iterable as a list." return list(islice(iterable, n)) def prepend(value, iterable): - "Prepend a single value in front of an iterable" + "Prepend a single value in front of an iterable." # prepend(1, [2, 3, 4]) --> 1 2 3 4 return chain([value], iterable) @@ -817,15 +817,15 @@ which incur interpreter overhead. return starmap(func, repeat(args, times)) def flatten(list_of_lists): - "Flatten one level of nesting" + "Flatten one level of nesting." return chain.from_iterable(list_of_lists) def ncycles(iterable, n): - "Returns the sequence elements n times" + "Returns the sequence elements n times." return chain.from_iterable(repeat(tuple(iterable), n)) def tail(n, iterable): - "Return an iterator over the last n items" + "Return an iterator over the last n items." # tail(3, 'ABCDEFG') --> E F G return iter(collections.deque(iterable, maxlen=n)) @@ -840,7 +840,7 @@ which incur interpreter overhead. next(islice(iterator, n, n), None) def nth(iterable, n, default=None): - "Returns the nth item or a default value" + "Returns the nth item or a default value." return next(islice(iterable, n, None), default) def quantify(iterable, pred=bool): @@ -848,7 +848,7 @@ which incur interpreter overhead. return sum(map(pred, iterable)) def all_equal(iterable): - "Returns True if all the elements are equal to each other" + "Returns True if all the elements are equal to each other." g = groupby(iterable) return next(g, True) and not next(g, False) @@ -865,6 +865,30 @@ which incur interpreter overhead. # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x return next(filter(pred, iterable), default) + def unique_everseen(iterable, key=None): + "List unique elements, preserving order. Remember all elements ever seen." + # unique_everseen('AAAABBBCCDAABBB') --> A B C D + # unique_everseen('ABBcCAD', str.casefold) --> A B c D + seen = set() + if key is None: + for element in filterfalse(seen.__contains__, iterable): + seen.add(element) + yield element + else: + for element in iterable: + k = key(element) + if k not in seen: + seen.add(k) + yield element + + def unique_justseen(iterable, key=None): + "List unique elements, preserving order. Remember only the element just seen." + # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B + # unique_justseen('ABBcCAD', str.casefold) --> A B c A D + if key is None: + return map(operator.itemgetter(0), groupby(iterable)) + return map(next, map(operator.itemgetter(1), groupby(iterable, key))) + def iter_index(iterable, value, start=0, stop=None): "Return indices where a value occurs in a sequence or iterable." # iter_index('AABCADEAF', 'A') --> 0 1 4 7 @@ -885,45 +909,8 @@ which incur interpreter overhead. except ValueError: pass - def iter_except(func, exception, first=None): - """ Call a function repeatedly until an exception is raised. - - Converts a call-until-exception interface to an iterator interface. - Like builtins.iter(func, sentinel) but uses an exception instead - of a sentinel to end the loop. - - Examples: - iter_except(functools.partial(heappop, h), IndexError) # priority queue iterator - iter_except(d.popitem, KeyError) # non-blocking dict iterator - iter_except(d.popleft, IndexError) # non-blocking deque iterator - iter_except(q.get_nowait, Queue.Empty) # loop over a producer Queue - iter_except(s.pop, KeyError) # non-blocking set iterator - - """ - try: - if first is not None: - yield first() # For database APIs needing an initial cast to db.first() - while True: - yield func() - except exception: - pass - - def grouper(iterable, n, *, incomplete='fill', fillvalue=None): - "Collect data into non-overlapping fixed-length chunks or blocks" - # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx - # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError - # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF - args = [iter(iterable)] * n - if incomplete == 'fill': - return zip_longest(*args, fillvalue=fillvalue) - if incomplete == 'strict': - return zip(*args, strict=True) - if incomplete == 'ignore': - return zip(*args) - else: - raise ValueError('Expected fill, strict, or ignore') - def sliding_window(iterable, n): + "Collect data into overlapping fixed-length chunks or blocks." # sliding_window('ABCDEFG', 4) --> ABCD BCDE CDEF DEFG it = iter(iterable) window = collections.deque(islice(it, n-1), maxlen=n) @@ -931,8 +918,25 @@ which incur interpreter overhead. window.append(x) yield tuple(window) + def grouper(iterable, n, *, incomplete='fill', fillvalue=None): + "Collect data into non-overlapping fixed-length chunks or blocks." + # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx + # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError + # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF + args = [iter(iterable)] * n + match incomplete: + case 'fill': + return zip_longest(*args, fillvalue=fillvalue) + case 'strict': + return zip(*args, strict=True) + case 'ignore': + return zip(*args) + case _: + raise ValueError('Expected fill, strict, or ignore') + def roundrobin(*iterables): - "roundrobin('ABC', 'D', 'EF') --> A D E B F C" + "Visit input iterables in a cycle until each is exhausted." + # roundrobin('ABC', 'D', 'EF') --> A D E B F C # Recipe credited to George Sakkis num_active = len(iterables) nexts = cycle(iter(it).__next__ for it in iterables) @@ -955,11 +959,43 @@ which incur interpreter overhead. return filterfalse(pred, t1), filter(pred, t2) def subslices(seq): - "Return all contiguous non-empty subslices of a sequence" + "Return all contiguous non-empty subslices of a sequence." # subslices('ABCD') --> A AB ABC ABCD B BC BCD C CD D slices = starmap(slice, combinations(range(len(seq) + 1), 2)) return map(operator.getitem, repeat(seq), slices) + def iter_except(func, exception, first=None): + """ Call a function repeatedly until an exception is raised. + + Converts a call-until-exception interface to an iterator interface. + Like builtins.iter(func, sentinel) but uses an exception instead + of a sentinel to end the loop. + + Priority queue iterator: + iter_except(functools.partial(heappop, h), IndexError) + + Non-blocking dictionary iterator: + iter_except(d.popitem, KeyError) + + Non-blocking deque iterator: + iter_except(d.popleft, IndexError) + + Non-blocking iterator over a producer Queue: + iter_except(q.get_nowait, Queue.Empty) + + Non-blocking set iterator: + iter_except(s.pop, KeyError) + + """ + try: + if first is not None: + # For database APIs needing an initial call to db.first() + yield first() + while True: + yield func() + except exception: + pass + def before_and_after(predicate, it): """ Variant of takewhile() that allows complete access to the remainder of the iterator. @@ -971,12 +1007,12 @@ which incur interpreter overhead. >>> ''.join(remainder) # takewhile() would lose the 'd' 'dEfGhI' - Note that the first iterator must be fully - consumed before the second iterator can - generate valid results. + Note that the true iterator must be fully consumed + before the remainder iterator can generate valid results. """ it = iter(it) transition = [] + def true_iterator(): for elem in it: if predicate(elem): @@ -984,39 +1020,8 @@ which incur interpreter overhead. else: transition.append(elem) return - def remainder_iterator(): - yield from transition - yield from it - return true_iterator(), remainder_iterator() - - def unique_everseen(iterable, key=None): - "List unique elements, preserving order. Remember all elements ever seen." - # unique_everseen('AAAABBBCCDAABBB') --> A B C D - # unique_everseen('ABBcCAD', str.lower) --> A B c D - seen = set() - if key is None: - for element in filterfalse(seen.__contains__, iterable): - seen.add(element) - yield element - # For order preserving deduplication, - # a faster but non-lazy solution is: - # yield from dict.fromkeys(iterable) - else: - for element in iterable: - k = key(element) - if k not in seen: - seen.add(k) - yield element - # For use cases that allow the last matching element to be returned, - # a faster but non-lazy solution is: - # t1, t2 = tee(iterable) - # yield from dict(zip(map(key, t1), t2)).values() - def unique_justseen(iterable, key=None): - "List unique elements, preserving order. Remember only the element just seen." - # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B - # unique_justseen('ABBcCAD', str.lower) --> A B c A D - return map(next, map(operator.itemgetter(1), groupby(iterable, key))) + return true_iterator(), chain(transition, it) The following recipes have a more mathematical flavor: @@ -1033,10 +1038,15 @@ The following recipes have a more mathematical flavor: # sum_of_squares([10, 20, 30]) -> 1400 return math.sumprod(*tee(it)) - def transpose(it): - "Swap the rows and columns of the input." + def reshape(matrix, cols): + "Reshape a 2-D matrix to have a given number of columns." + # reshape([(0, 1), (2, 3), (4, 5)], 3) --> (0, 1, 2), (3, 4, 5) + return batched(chain.from_iterable(matrix), cols) + + def transpose(matrix): + "Swap the rows and columns of a 2-D matrix." # transpose([(1, 2, 3), (11, 22, 33)]) --> (1, 11) (2, 22) (3, 33) - return zip(*it, strict=True) + return zip(*matrix, strict=True) def matmul(m1, m2): "Multiply two matrices." @@ -1127,23 +1137,13 @@ The following recipes have a more mathematical flavor: if n > 1: yield n - def nth_combination(iterable, r, index): - "Equivalent to list(combinations(iterable, r))[index]" - pool = tuple(iterable) - n = len(pool) - c = math.comb(n, r) - if index < 0: - index += c - if index < 0 or index >= c: - raise IndexError - result = [] - while r: - c, n, r = c*r//n, n-1, r-1 - while index >= c: - index -= c - c, n = c*(n-r)//n, n-1 - result.append(pool[-1-n]) - return tuple(result) + def totient(n): + "Count of natural numbers up to n that are coprime to n." + # https://mathworld.wolfram.com/TotientFunction.html + # totient(12) --> 4 because len([1, 5, 7, 11]) == 4 + for p in unique_justseen(factor(n)): + n -= n // p + return n .. doctest:: @@ -1261,6 +1261,22 @@ The following recipes have a more mathematical flavor: >>> sum_of_squares([10, 20, 30]) 1400 + >>> list(reshape([(0, 1), (2, 3), (4, 5)], 3)) + [(0, 1, 2), (3, 4, 5)] + >>> M = [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)] + >>> list(reshape(M, 1)) + [(0,), (1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,), (10,), (11,)] + >>> list(reshape(M, 2)) + [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, 11)] + >>> list(reshape(M, 3)) + [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11)] + >>> list(reshape(M, 4)) + [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)] + >>> list(reshape(M, 6)) + [(0, 1, 2, 3, 4, 5), (6, 7, 8, 9, 10, 11)] + >>> list(reshape(M, 12)) + [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)] + >>> list(transpose([(1, 2, 3), (11, 22, 33)])) [(1, 11), (2, 22), (3, 33)] @@ -1428,6 +1444,25 @@ The following recipes have a more mathematical flavor: >>> all(list(factor(n)) == sorted(factor(n)) for n in range(2_000)) True + >>> totient(0) # https://www.wolframalpha.com/input?i=totient+0 + 0 + >>> first_totients = [1, 1, 2, 2, 4, 2, 6, 4, 6, 4, 10, 4, 12, 6, 8, 8, 16, 6, + ... 18, 8, 12, 10, 22, 8, 20, 12, 18, 12, 28, 8, 30, 16, 20, 16, 24, 12, 36, 18, + ... 24, 16, 40, 12, 42, 20, 24, 22, 46, 16, 42, 20, 32, 24, 52, 18, 40, 24, 36, + ... 28, 58, 16, 60, 30, 36, 32, 48, 20, 66, 32, 44] # https://oeis.org/A000010 + ... + >>> list(map(totient, range(1, 70))) == first_totients + True + >>> reference_totient = lambda n: sum(math.gcd(t, n) == 1 for t in range(1, n+1)) + >>> all(totient(n) == reference_totient(n) for n in range(1000)) + True + >>> totient(128_884_753_939) == 128_884_753_938 # large prime + True + >>> totient(999953 * 999983) == 999952 * 999982 # large semiprime + True + >>> totient(6 ** 20) == 1 * 2**19 * 2 * 3**19 # repeated primes + True + >>> list(flatten([('a', 'b'), (), ('c', 'd', 'e'), ('f',), ('g', 'h', 'i')])) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] @@ -1517,16 +1552,16 @@ The following recipes have a more mathematical flavor: >>> list(unique_everseen('AAAABBBCCDAABBB')) ['A', 'B', 'C', 'D'] - >>> list(unique_everseen('ABBCcAD', str.lower)) + >>> list(unique_everseen('ABBCcAD', str.casefold)) ['A', 'B', 'C', 'D'] - >>> list(unique_everseen('ABBcCAD', str.lower)) + >>> list(unique_everseen('ABBcCAD', str.casefold)) ['A', 'B', 'c', 'D'] >>> list(unique_justseen('AAAABBBCCDAABBB')) ['A', 'B', 'C', 'D', 'A', 'B'] - >>> list(unique_justseen('ABBCcAD', str.lower)) + >>> list(unique_justseen('ABBCcAD', str.casefold)) ['A', 'B', 'C', 'A', 'D'] - >>> list(unique_justseen('ABBcCAD', str.lower)) + >>> list(unique_justseen('ABBcCAD', str.casefold)) ['A', 'B', 'c', 'A', 'D'] >>> d = dict(a=1, b=2, c=3) @@ -1549,20 +1584,6 @@ The following recipes have a more mathematical flavor: >>> first_true('ABC0DEF1', '9', str.isdigit) '0' - >>> population = 'ABCDEFGH' - >>> for r in range(len(population) + 1): - ... seq = list(combinations(population, r)) - ... for i in range(len(seq)): - ... assert nth_combination(population, r, i) == seq[i] - ... for i in range(-len(seq), 0): - ... assert nth_combination(population, r, i) == seq[i] - - >>> iterable = 'abcde' - >>> r = 3 - >>> combos = list(combinations(iterable, r)) - >>> all(nth_combination(iterable, r, i) == comb for i, comb in enumerate(combos)) - True - .. testcode:: :hide: @@ -1589,6 +1610,24 @@ The following recipes have a more mathematical flavor: for (a, _), (b, c) in pairwise(pairwise(iterable)): yield a, b, c + def nth_combination(iterable, r, index): + "Equivalent to list(combinations(iterable, r))[index]" + pool = tuple(iterable) + n = len(pool) + c = math.comb(n, r) + if index < 0: + index += c + if index < 0 or index >= c: + raise IndexError + result = [] + while r: + c, n, r = c*r//n, n-1, r-1 + while index >= c: + index -= c + c, n = c*(n-r)//n, n-1 + result.append(pool[-1-n]) + return tuple(result) + .. doctest:: :hide: @@ -1604,3 +1643,17 @@ The following recipes have a more mathematical flavor: >>> list(triplewise('ABCDEFG')) [('A', 'B', 'C'), ('B', 'C', 'D'), ('C', 'D', 'E'), ('D', 'E', 'F'), ('E', 'F', 'G')] + + >>> population = 'ABCDEFGH' + >>> for r in range(len(population) + 1): + ... seq = list(combinations(population, r)) + ... for i in range(len(seq)): + ... assert nth_combination(population, r, i) == seq[i] + ... for i in range(-len(seq), 0): + ... assert nth_combination(population, r, i) == seq[i] + + >>> iterable = 'abcde' + >>> r = 3 + >>> combos = list(combinations(iterable, r)) + >>> all(nth_combination(iterable, r, i) == comb for i, comb in enumerate(combos)) + True diff --git a/Doc/library/kde_example.png b/Doc/library/kde_example.png index f45048956999741a6889bdfe85c40e1f25e8863b..4c26f26292faa51ba0f724cc50cf9fe7226564c0 100644 GIT binary patch literal 315150 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%0Dc7C`=F;{*c1N* z^%a!luZLHbBW$O)T%9HN$dQ8B8nMGTtJ)%yIA53O4My6YACDD?;Ki6Zreh5gvX9Yp zZ=PqPz?9<4fMVS#XHpqmc-nSH`L8(h#&}F2@^c2r6YU1RRX$}j#b3qj)7dhNE_7|q zRoHps><96xGW#UApm?=~YoGTC_ispDwca7~X|fkqZ@#}~VSb4l0pILe4CBQv?fSES zJR?Ga@VeE#Ma}vgT(=z9Z`|tpG&Uf=sGxqZb{j*G#dET&(vKLliK4>{;6|_%Ne1CP z6XzgdN0vlmW=CMkgQkWkOVDsV_2homRttVZx0TU6<mM32{_wtm7$X<YpFOYLI7@Ul zn*PW8f$iOJeFLTLwQ!~kWOjXvUJEt|{cTwXMDwGOObT~x8<EvbF(~d<R79$dMYi3> zbWd0J`mqZ!Q@An)G>z>?9|7qbs<8Nz5KW=iQ>Z8oGaRTnEzvs5?N?roRmyFi><iX8 z;(SvmI&0SC;UT!df)S^#WsY4LL*%Fsrrs;W-Elv5tS(uXTjPga5L2(V4j!g}G|XBe zc)5-Do@%;}Hwx37MLK?<@Ma38+fU9=+>|<oun3;~AZu-)QnVMc>vd1YceLXqe%qCn zO_=}SH5f?!M>O75Q6ljY9cfhmfARU>ck4Qxl6-hbde{78)jI~0<{EZk8J7#hpkYbi zi<PQUM#_0oQW@vd=O@8jEwI^{44QptKi;)CHw+x|=5FDehg*aO-)-fbc1Q2pAI{mh zHo?_i?g)tKuCd1#_HAYU9=%8GYm<7YP^ui7DCO~xkQY_RUT=?!q&-wH{7a{xHOHp; z2*ZZ?cY0U4q98e(*DyvrpR9EhqgA%_Ny*H)8j8xlvHLuOS}9wheg!S|X0pX<h^ccd z49+(3qS^s~rY>+lZf4VKJJLI{&P_OHyI;d{&T<sOc=K&=B{maRXD$b_OuzbVLrW@) zgRxsq@eBzl=$t!9XjwZrUM$`8f-AUZZ2E00Uw*u73uktR-oxg~w9H?uEF&ZsLheOz z1o_F!i)<XSks6IR#J{<Hn>vwh))1S$@o~&%#o%MUt0Kw*ZFlk`B<Wg+XT|3z&F<pd zXBKNmVQY{B=;hxdHkG=gJcT}5ggb#6FTVJV3qA}W^SUz!Q;1l;{-=ot`z4w2Y}8f1 zP?v1Bv7wNEh;Q53I>zUv6;#b&6ot;=qY{hU%i6pF9Zq<NHQ;*9bIapPuq*ds(C8>Z ze_HfCV>ch0E%S4VkCg>_HoL;3V|pjtb7sS5c!N(wTDg5P$=RfvgK#9K^4d?2PwW1D z&bsBX-hVhR+f%d0>RpVJLbTeq)1AqqQ5=w_Y_BxE;3kAi$3qB>qiwmum+{O#A;jSv zr8w{ZpV$9&Z(8ACLnV30h_K0j-=|hds1m(ATnH^Rgz8@F=Ehtd3<OA)Czn58q!hpC z;MhS1dXIffUSKHC*H=9J(1SW1Wt`IGh=(+J?J%CyAuVa8xL%yB7zAIB`JzTP`BV{r z`@K6om{vqfqMf?9E24R_@?+5#xds5z^AG9E;%zfbdNrm7tKtBOm{XTGj8*D$J*01L z22w$Lw}$6<fmaG+wwMJ><jYg`vK--7f1ECcp<OQKo3McE>{PYPW2n$K>&Sy#RhFOj z2o#geJZnsIDIO7Iv}wDLNb8=+7vS8VBg3#%t%aQM5_Vwq_}v~WOB<iE|GG~{AyRS1 z5sl716gJX#?C74n*Q4&D7li&X6K+ldxirRUBTU({sm7kmHgRJhePcd6AA+ni^+afl zfY(&4OC-+JvQs*A3ZE2hi+5C1`%aC4pASoIKEPckM3Q+kK_f%CRcvU_t`AUB;0`&+ z5^l_hL9<k;Wq1y$6WJjH&;*-$*(Z+`5*(qV0>_Jh?7i$bCYZ~wU3BNkmc%h5<bm&m zd+qJPIEdryG{TNw&5kItfd1XRw}~_J#oI@PCcb)~k-XikY{`XvK$v#K+-Wn{R$Q<; zzM&AR#2|un2zog^OXuEIBwr4jUK`J@+<6&JeOZ)=_9I8IGrPz~DMtXa^tHWiqQkaC zaL&>-s51zvIO`er9qqg&b4)vTrA;3m;KlZ0H2wI6=+*l=)zJa>A70txQ$%3dAdzh$ zdzV{oYx(3v^TxHzzRJ0%Dm_Pogko=GBQ)zb?61tpHrjRKTYx@JtZ05td~7H|@Lnm? z?SY~PvrG7tbhVS&;zOA*uhFX@T^SCA-N0ksY=dn#=CO*{v%&o@S4!L+_n7Y;^3EA~ z$UT@f7-1_=49xY$Bf<@gZJBgUE$aP+oUPMN#1r4$HxRaItQ!Z$RiklT_@1nY+sr%q zR-)gU;~t35%<U`<&@}6xB)Mn=+};R>TNk<OKz6>QPjBw=QU))j@)5H4z5+CEw$;nQ zqak>i?szD&e&t|Nil3!sm-6@`VvAyN+j!TbteECjf>HXHj9<Nk*nuw4R<+{ZtmjKf zF6tt8=7DYar(v^(Q|m<Av3a?g3IUPh2SHTX3Df{kyJ8VLJ<AdIGj3+r+osZE<zw%U z(uMm{IsU69?}0*V#@_~s4It#-=5)Jw3<;(YcgD524Y@5RAA(r)h7~gN<{tj@;hNJP zo}7c@9|$Z8|6O+sr(KZp^tQhsRWcww7q<$uqZ|zDS4qgEmg=`+K%|gsQVEb$$d9-A z@Tu5q!k0xmXz-u=P5};#I4IF?<nfC5UVX>~7Vt)n&*=RbXBnwJ8H&UufEe@cifE%4 zsQZaH4OAX`_T*JV_8a<8ki(~>I`lRKDRjSz2UPY(Lw9mg1EnSddX7e+IfV>BY+!lL z-d}gM(X5pPPwy;o-|QssQ1*dw>UTyOlMRfJLnVr%yY9?Uh<~07yCMRTnw}G%f(YgS z>)DUk&m(2K4Mq8`eCD(Zw-_!CPaV=?*dx9F%%QEoQ8Tqa;bCy;8<#DjArF8!Qm^b6 zd5%N1UT_Aau%9do$`3K0Ye!tghq#ccgD^UjED*WHHblRg>685*52J!&-bhx#fBOz; z@m-n`PgGkYyfU3Kl~?EJ>%3dx5TN>^%{-ZRoO)2MS@~qJi}=rP1{w}>3~y%z;l?0p zxk1M(%F<oFtD)tNe2IpToki?zxGcz#>BAb~Dhre4R;^XXMH*Cl<92sM#oX2`e7mT8 z&}<0R!i{ipBo{b#@z+<(f7L4T#Ex18+>sNiNjWim>!|-wKVL(rhr90wDp7+M{zAjL zA)e|KKecW#&d8D(yVcp)v@!ud>I=+ns8}H{fL@ioF`iQyU;jF#J6wirT1y5>9!_<J zZcVPQ*N=;TNq6pYeZ9$vqHB|Dk+x%`T8`3Itvl{c(;~(|%(h*oKXtdnF+qlRmjXJ_ zE@6<9%!lCNK*Tk7Axq`3<qK{1I@(JMjFnyUJa@eVLVT`dn=&n}92}|(3EFh|j#DV} zEQ!N}tQ(%D{K`RQZ<ic6>EI(;GxeO1*r2Ymgq&VNR|b6`UFa+T&0_5M1Rp8eS(9&3 z4%UD(OXa;rO2EWz7FF)9w&Qi>avrx)Dr@St6u5hnJeC(-{7OjhtnAmKo4rp6|7ang z=3F?P#hU%mU-fcxLIuN#7W%$@zjSYdb0ggxy~5`@hAtgMt0;g?t|+2ed?ubCwkScZ zJI|Uwks5^AxhEePYz_D!*!N?){FXK@jRqqe_zQz3no{@(;1=#?;Tr)FNL0($p>5{c zEfXC7=vHa6j)9_`H?7-)QCdCjwe;V=m=+}T=lH~8g4(3nPS~?mx6i(kQ{!}C%W)AG zKK0vRbpEGZ{&zVBCArj*h}!s16aDYs<q_j019QwL%GCe(8vk8iYN(zv7Bu^5`qZOB zut{Jtwg5y8aMv2aC1UaSSa#G1vET%jMfuSN5if-{CHS+F<=czl-OJCXPi*#x&N!1G z{T;4gXrh<545Rz&r7dPJ&p6ujv&e5z*$3!%(Mjg%b*}Lj$hp9n_o54GBf?~SKBNvF z`1G=Na<Zp*Lto)%_7|ZgE~)~uELbyy=6#&3TG7_?;se;yvmU<Fc#s1qs(u9n=F&@v z;@}!pu864PWt@SUDv1s0@u1Nq9ps@`n^ES4WkIa@9~%?{m*l1?Aw1D`X}sI&h)60U zRPtHE<_Dgv;&pV6&I#m>uwLaKf_^jl7T8g53<c(4EZ~~eFinY#GEsm0`n&=XYG%z+ zJQnx;A@(M&kKqW9vX09~3qly7LVaCN;i7R2xnv!Oey*xyXYq!Tj5J*h#tM#PZQ{7a z>U^$7TnofWWAI_42Y4ezPY#ML<N&Wc8(lpceJ@nTt-`%?ndKr_zc`wT!u8J3G;U5J z`y$gAQ~Qo)62K+s^Q@Md{U+}K-C<fE)Kk(u`Ne{C2;iy`RQUeop~Hm4H3>{Ass^+J zW<0pL*$E?a27TLnB`MzZEbHO0w@!W~OFx1~^EBH(aZ?!O2!AF@`Pwlr2ZKM!@$RR@ z4*2Ex2C4Ey;gcHCJvqRqA?vfanrJ7GNTFhQ%;!iFL>)VnlV~&G6UT_&$<RQ@Wb+bu z4{~=8q6u;4G>ZLn&CyILFv0kUU8=(hXJta)^&+1A{vEb?U)(EsTEYE_vi{C?*ZOM4 zpziBQjM0urZA@YQ&d%Y~`oYlcp9x$qUn?%oI*oICCVL>MW_@9vmG;y|E+sUdL*_tl z?_a6-(?b{dVk@@ZqpAqz{$p`6XzeQ=-700Udv}xuQ8l;mwgL4X@$&HOpoQZYp`h=@ zwnjJl`xJ!Uq9fZNSidMgsSK@5t&DgI;8!r?Iqgg_nieEpO7n{UxcdEMXB$Tqb5?IU zwf=f8t-G8dcGn6nV$&qK)OB8!6tyhm*RPCk#6Rkh12%T5Db1$xIq7P<H&N2Lv{<c< zpc|jv8mVXaL_1WGVH)i5w-hN7S=-X&-wH2rjVK=u!bixY;1;0I+IuQOsLc<i)G*H8 zo`^(zE7fDfG7tNrJS~h9+ZmZuQJ741p5ER;(3#*Oec9x__4pA)MZV)<y?KZ?_^`Dm zxeo2EjfqxgQnuuteKdQH-ULs~V+l;c)jTm#cd%(mFA~vdU1ir^7GrCxrvh*yt7q*T zXOH34%Y?=f0$X#TLVWktX_us5_}B5-^WVS9pe?{0(6kMneurN5O>^2uw9HAB*yQrL z@Ct1@<aYO;`|s51b7@u7JG|=c7(xXfq~j{|k3Jqzod61%`KF48pJ^<vq#{S;j0AV; zFBsi`{?>0C$Kw~R2uWKRNFhd=;-hacP-e#0ZMYn5bVKqf+{cOiYed3)#Bw%zIJcwS zHM9E8+5M^rf<V-^zZU2#ICgP%#%5c)JQ^DSAIilUp*#<@ic!lis0`t8?{#|1=aW4T ze-U_9Y{rjm&lYUo0$hpU%L)^E@;T$mE%W}P7OoB+1;6!!lJXR7^0yeEA?c%1yS|I3 zLs<eJG0z;sY1)RibW4j@o*y;Fw}@{@YI*f%b|Z`X^#gLwGGe3F`Z?C-b}y36Rr_ek z=cElVwT(;X7fVM`!4O5=+^FKQ6Qm@`F@JDzO5Rfv&&3G+*%?WVfY`qL8=)RTQ9fRx z(ML%wwdQ;&XY6R?tU<3MD1WEJ{7V4r2kz^ne#_rsxpjo+Wr*LSns*<Q{=2aj697F{ zP0cQ>*9_G(xG{q>XVN=@Q>lg|$JT9cqpxZ2mRO;f2e`9%5`E>O%Vz6AdD^6wC=WQ< z?-caC`?LY-m5=zgo(R~&^KNX3ER|WYMbMDg<e^#bHzX!dfe;PRZrg;qqGYP3n3nA) z<XgGRSTrp-em?At@fqlwpQImqDt&>bmQ~hbs9#+Nvlqz`jDakXPr-(^>|1j^9=+rG zoSiC{@0gM_w#Z#KUpZu4Ycefe{BE-ZZcAk|mlxZgc6`^r-{~-JfcEwlFhhR_1DtEh zc)9SOyO_*|QRV4y_Z68#JB59&()rY-bQ?xRZyVQ(punp$eda~{b#9jAL7y9w1_VI) zm6>|5xl9*N=rZ>cK}tPu%jIEo?)H8`Qzj5AM^^UG{t(y2=(9Hbz3cC`y@xl@9onQ0 z{ajBRwd~StY>#_c`_!Y8UY0%$8g_i_Oh=ycX-{yRq`z>Fbb)JJ17S`3XKBB+m<Lz9 zk-8W{I1VD@^ido+vk+K0T#cW3d^Hd1veh;)vkRmH1bh~TdC^<<r{m1pYPG$oy^*fM z;x^Byu&lTq0MX%Zg?v_(eWnDz4=>Km<9)FhYLJ4(LkYMgZG&vh@`D{sQleysc+4Gd zT1Pf-t?Z7X)Fi)j`DInaTes|tr6ajm5WxDh?+iGy1cl1a>1E9}*fpLh=zrb+@Q=~9 z-TY4~<bP85|4hfpH7@`$E5nK``qvsDz{tv2dC@@t`YR3fu<$Ld%-g3TVIhEjl24pa z>S7nwtg(U~SqJ*6w$uv<Z66?zoML!exOO*_WgL{E9VU*FEUa2ZC^1>neogDq!}wH@ zR6h6;xqG}t2<R2>BHMZ_a{TTC3FJcJigo}5v<Rsi4)|pd+)Wo&Bm3DW$b*pZtJX;Z zp+hRtBh03uq-ImUshDQsuOT1$t0B6s`RQo|yQ;KG?oKoHP8a+0Qa<q>zbZ}#c9kxD zh_T7@O&>zl{6o0opZPUH-WBvr+5n9!a^)f1yZ%M$^ok?0dBunBl$pe}B%$|G;h9w0 zem}6gLw9DQb1E(_#$CE`zC1dG2orEOv<u)e_9zjS`_7iH%4tcvZKN+S<W)@I&*$F& zkxj(;<Zj2c^yS@=1AWw~!Fdn);$95Z_kJw3M?3uFNz^ED-}+Fwe;YQD0-NOI{KF&Z zX<V+HAMV#e|1oEep>01vRkL^-QuD!i`C4v`3A=kxd&Y=Y^?$SgV8@Okqmf$@1M((K zyF)teRoRkDLmVryrQGA29A7VUZX-VY>AH5zc?x5U+GYu?nD-?(-=wqSz81_qAAJ@H z&X9Sl=Maa*q{F%^dH<-P2BxEY4EzOtM3(Q+XATuXMh)khD&IK0>iTOxqG@*w0cI$t z<CE9_iZ@JVr0}o8(ZzoN2+wNU712_ngI&xU9miC##iq+r5oM*>3QiH5;{k~qz6Hjm zdLX#jmwBpGL0we8lYSMM&`($Y9(w3eo$hhZ<erF2D|v^lqrK`%(VawYZx(GIrgBG+ zx3<DWNdTerDV4kRLHDDC^woq-_F%#2O4%PF`~~yAXsC7=Sq3+0FC7qT<QA3|rYmdb zcaD%I>vCZQ#wmkQ?Ed_5UPSw%_cXeaSKyiMr*UVASBgqB_-vPaaWeskbzYT)hK$wi zt~8jVcduvT6f>jtzW7G`!lc<-j%-$KcQaWj_I3^Jv(xWpws#w~qia+~EXSF`@NY$u z9t)K3GO^feC&of(xFy|omVIIK;Ezqhn324Ofz3zBq6)@YirvN4;)P{agwlDpxbs4p zmm>K#2__yT)Q5gQS@AkD;dSI(4_yOQpBiJcYV>?2Cl-fy1CE`v`1_N&&CNa_3(GuV z!j6ptj#f(FY_GfFCeqB=0|C>AGaLVh5~SIP%|iJ>iY{4;Ae%+8;I1g7tkw$Ujm`Dj zPvlwDbP{8cF{HsK)tMT<zSe2vBa+R1Q(=o@_ihDe{e8+xq;q<9^E>2SpPqhA{_pI; z87g29(v746I{i1AsL7XV^F$j<Gx+Cuqv<Ai%{qC7yOVOqm2j}~6K`q8ul9mc9dgk) z@NOCzIeG(pD`opPE@T=anSx>lT?Y?89=<+vGn!@jhO#KEn!zdR>iIqmb|i@k4T9{v zhP@u6YJZ65{MBbtyswUrZ5277AYi6#00lPrPi50O%_fYY8FTe-;<|&YO;`pk9+^&@ zrP;`p=0k3`#kmY2q0o6?+#?80qWuD%ar$Dgy~exa8_*=FJ`{}nUdS)6&s{LPR9IP* zLJ?-#KR`$Nr)D-+9#cus&%eGH^f_m^rU?>|O4bC_GUV}i1^B8k<uQJ@jkV3svg)=? zezQcn{Z}VVAJW;HAQL{PLfbZHA-W)i`_Qgu@A#UN22v}Wg=TL5pc^!U7?uHkdnqME z3(>vd{IhDP{~v+k9NMYu{b-}i__<J7qg_BZs{+gP3NNo^`8s;<o>pC6-rQ0Pot=AY zWBwKY`>Hddg)Mw%K|ZH^Wy0=noZ?;wf;VeUE#Ix1>#>>ZEV$nCsOxs${q%P<*VQ9^ zwSmy<^S2QEd#aMbNeWu@;}H*odXOzeXMZHhlK24LfRSiJ`OC+^;B55>_c$+jVgvM; zoNIG#(VKq0rjl!_vA=vq9XY`=?#d2VEu~B3eDn*4toDT>l;AnzFUA$F=5J-z%$9WD zDd*@Ct)EZY><M1mzr$$pSiu1_PTxFO3rXR6sp6N;i$b8UkH>Hg$rnvLged^+EGL{g z7$CZ;-{tr$l+DkMoKJjo@YA>anuwKoAAnjOLNjVGPcB@TgR=?_ndmg9pRr%+0G2u% zW2`t)KzX$@CY~35sZ{4sz~Q%*DMs;tTl2kO`GnVMk25A!&@7UQ(MT-T<yxYIJG&J5 zw~giD_AGx_&sED94;#J|_nye3dY*<^{{U2FnMa<R1rDCmHK_plv_doAe)#jfBCLcD z`OOw-OvV!XM6vi>UGbqlGr3}y&GExO`9=YEu6lFKn!=`<jux|D!QWO3`T!8r`%Ds$ z>l{8KM&IqD*zWaZh`-YM@LWHiY<b|&B+rHMIIe`5#IKMgVfJo?JKfA38^-BO)z!Sl zR#uhzQ$iEN*OlG==_@{KZ<OPH=JxDM{e6Bfl%hjOXK5KQ|7b9jC|P|cy|`qT063Ld zBeK8G*kc?Dehv(RRI9B}9cXs+{Ozk@3CbjMfaKT*d5HKsed*ME%j5o!jdiYUmlU@e z&7FG{gD@>!zStq0_iQC>!yVz0yx}CxSmu68U&#<;s~vs~{K7ViZ`OWX#sGZ_XCa-K zF2m5wy{KXc08VQo-wYMX4we(;e^vq70rlX9pOu`01D3INFW2~N&Zm^owhIP5ONBN= zOV#I}0j?3(x)^cq0MJ=AFeWTkr<}^<U}EWt<$!9VkTiF84Z(Md0{Pc%=e}Q?Gtw7b zXX|XN4~!E<qo3;;Wte4kt@ix>Sh^DM6OhNOzzsxWvo426{TzVs+&W*_Q%b>OJQHeL zegmRu%9HVLviEP^fd3RU^L%1A*GVNcX~^ckT)?oll?yz8NnCG|waKYDYw@=K5N5l3 z>_{f)T#jT^cZHQDxS)LhdSHe;-bI-m<hR1@iq&0As?_hbZ`A#}`{NA#0&K3foLni_ z|BWm7Pdz0TLHStX6bP6!*a)}sCKzaa^=<5%IRKMcCITe#RRFB~77$)B?#q>{W$Jq; zg0WXfXyt4v&<m7R1AACZH)MZ@3+Zy(`&1R!db#FOO@1psdGC4}xh@aCTv)^Y^p1-J z_I;sy@2i3}6mvKlC9^E6yHButHhTZzU3rVMEVr@}qRpd4GV>gm#d``^QrPAKUz|(( zxguom(UoktVsF;%cjEwxD|~YwfIwM0GSBq^CunoJU)w?@gkEO7^clX}1n3^OS%nyi z7yvom49v0AMRA(jtdc?i$Oe`Ez@ycOrlGK&s#r4PTU2`){rFuz$`gLBxnobQ)m67E zr6|R%^oc8>1t=A6VoR2w6VCOze?EZ0>Dbm=2KyhBA2qtgw{Vm5Uf;TFX3YStAN!#s zcPr>tT9y4AQB_PIK<UgzCN#*)Pvu;2H?a_u@X)LE@$i21YM_*EXUJd;3c~ak2E6uQ zx2G;R{a+3Tu&HQ?EVhibwEgQ%(ZM-m*uViq9S7yt+klYvh(-9X8Q@}+5XG485+|*D z?>z(GjX!$#{?S1GO+~|vB$p`uoWeQxRXr9?n{I9}-6bi8s?i^Yz5!quCw=$&qvZ0X zG)m6M48Vgh!cT&stX0l^$M1F*B1-esPq|V?A#=lZpkn&|(|6h$;&lofNO>RX3=W?l zj-TPt@_>%TJK%OS?-T6LNj_6U#G+k}@s61IH~RF;&^Nr=;-c_Bz<A>O5We=S$R|^{ zR~{f&hi)W4jX<sfWX|$GjXV0UG+-!8DYFqa&kT3z_#m7hN6RX%8iq7j@?P<*oqVF> zw}pI5oWroK_B2W%yg9s&Ln+vqU}Z$v75i70ST<K_Pch=DeS+{C3QIZOZ2@<Eo4cNK zhj63@lmc9+jk||#B?i>k@>@}xQji_>ESFk>`SGXx8~@Wi{JX#~Nd-by$#~VM&R-ii z9-fepxaB0p<3Y?@fD&Z}Vn?rP!n=m_9NxCZTfv1ToO|B@i2(0AQlf=^fYO4G&f=cs z`TZ7GnYN*m>Wppxd>!>OT|0!K#i<A-(~*H!ffM*|Zg-+q8f5!H3y@@J&4$!g#>0*b zq^Ui&HWfM#p{n6fTpODzd3*|p*_jbv|MzIVJSOZND6b8`l6e0Tt$+j!Buy<5m1;h~ zp3O8HQT4^N)v&akX#ETyF64k*5myI9St(}j%JQ+d2V(#m$wvS$3KNB!XL}B&9**?E z<Q01kE}~liUdzrVbjXALcez!4l?9L+&=+KR)%DwS?UOJv8Ctt$xC|S*HL^0%KGnE~ zg}0syyUAKd<$st7?X&iowI2mdczkjPzf)H%=1^DU3zH5yBboylzv3o^ok|!0BVM(I zfr0F}>H88n&&FNt;|WCL8m_Gv2EmxMJHLyYWH5W5Yg<m&9|6i0IdR{wTV!Vp>p0Q} zNqx_k6zf)Z>=k%#Vs9A(ovQvVjY(O=Hr&cyTu1&htl8fHMhfPZ`k($f+N<Ius1EsO zME#_zi4jEWa!%SH0MHprO5H&X4}rf_tNzGu&g?+;v1lw>8&aN1M){HXf#TB!c4fVr zoc)(N#RWa^2izj-PO7<&Wz+63Os`3ED=6#Ay7`R!s?<iC^D7#FZfZk!2#xlK37TX^ zt8gBiG~5~#W*|L-im8n6>QX%U{XrR?Ie~f)<US2BmRLWSJc(14k2B2bPCtDOc%U~} z05(Wy1uI&{y=32@bz<{$2T&va4uI*h&goG{fN9wK1i*gx5rCy<7mqCBQv~L53`WXC z9>nfu%9-w`*WTKth!)aW{V|gw(pk-hpC?2hC`>MZu+{ZS#7VUsz=wwCZvZB`ozE7q zL~aa%oaG*g_}V*r25@`6OjMsr7pu2!Cu^HDfKne43rdC0^vcA!BZ8Cyti~nPn~V0z zHo0+c<ts<ktAD}<?===#zNOn4-E!|KPQH+NOUG@l2>Cqk?<!Bz&YY5;lYKO8*yFE= zW)gBCjKX82KU1Pu7Epu|M0J>1d8zqz1O|P`d6NP+Rc*bM%KdcFVG7@i_B?@XKtlv6 zU(6WLe>RnGtK5D5NL2uH_`KE^E_5T5dV$MDn6kfNL8iCGWWzZ3Bz|`iMH!@iwENlA zDRw!6@zm2CbvzPkmbWa5P{`;;S%X+;q<@7x0x-N(&`*Gauxy-9y*v8gURlCD9n+sB zOptBB+NK12vnV>qz*HSqoAm4Eopi5NG<O0Bi-0AkjLY9?nI71U1r)i=;P?9I*1iAK zFWu8%^D(WYDPF>S%yqq=yx^Uikq#443q(AU$~M;yQb8U@k<J$JoCmQ7osGMdM^r9t zXq<1*B}Nk0gB6rm7E3|^QvjQ-{h4Es&RC|AX?LBK#rZsfcg=S^q-LDBQ})m7yCyaH zSalB&_Q8y^c35025XX9Ab+XA-L&RfbgbjLqfZ@DPASgfQCd;QMyt&O|(a0k?Y(A)? zSNVp~orOwX`#7<`%d!x%A{JmzGW@>teffVMV5pY%h0i!;3O0K9RYvQlMtgvgU_5Q_ z*&pAQD^l^rRUsK~3Jbg3xHUP$mVmDMyHSYYSfkYmke}j?nYnEK)hwGMV_<-2h{CI~ zF9X7X<sU*pe)Uv^YsKT@*h^{B+}EPRwmh)!Z8AAcqgA3!N8(?`JOjLVF_G#WG0U%b z4%=)`AdLq-HGgCg0FdmkOOcx822pU@Xuk=dba9QZo6>=Yuc1eb2Wd!~i2<6J3(?<n zs%-->UU`+56FD5)spWoyZHT1K3=VB~>#oN9IfMlgcuMN-{x1z2b^!QvLrm0(KyXI+ z1B77TaNKS2>k>wz6GcF=QR@#h9_rS(oZH`zd*5g$43gmd3G$53B+6*}0Eq%ju5lY; zQDM|PPISeuW3mh19_uq`su@@L;hy4`UmRyM9B%>tE7RI3|22LR1xH~=YfBQZhAo$y z71y2Em|khK7;MUoTKh!T#|NeJjf(dcG{t2iZQ6I)?jany>9X5rty<|Q$9eO}H-W`? zd_x>Ews<b%pFQz#V(apGVnzae=|84sy4Ok3ObLMDIp-`;UP-CrJE`VOH^pbW1hyXx z>q${b^+HM(AW;xJ8(^FBzOx1{LTnJ~X7U_WUZ!7ZlKr8SvTWn7M4w<NV1V{{!m{nX z+RUxVGTM!(7N4bn(;}-Ihz7`T0O;fGZ2kR2A;E<Oa`z@DuL<@SbRWUp{mPb>i<N80 zk54)cUI^dqEGybmQtHYGuX7TjQz-)ohmmI)8uJlygKfnYDk<sSYF9fC!_Vo2=|UeD zqc%O|O{`6wI^N>-$UIFlFSu);wDEJ;5;>RPz3TT&3Goa>+hC^rZDZHunxh4z?$}0L zVxbSi9Iv;8cZaDCNajal@)(PkTsG4<2tC(mWHF(8%>yk4P-Si3TYP-$4~RUfXLQQ{ z_}bWa{PdRlH)f*}l0bV^n)PvYt9S!0b`kfdFGYREg}P)T_jL0zVqN%P!;)InSDJgL zb;I?mpDPs6G{j|aoTgN=c^r{bkhPZPk6%Xr;BS@PAj*MumLiut^I`5yiz<r$DYgHn z_$ay%`msoftu*YvpB)LMt~e<`4s`2`pOlB_xi_jg)l<!F-HBP<t^%h*FDq$&=k-d? zWm&A}%#^pYj@gW$x>2B74&x-e1)dl3XNRr4aUBosjhmJwHtvVI^Yv&3?dF7E&letX zc^;$plqaH<O6f^5pFmn9<HgYC3qUk_kA5R()0UKS$)PhTgHBnZ?K>|e<QPyaHvI_* zN4|ne!s?sXWq=gq2*%Bi>3tWc4({Q8IVW|fv+IT1*DufcZXWy)A#fyd%8>7t1<b_Q zvTY<7`c?UDvn(?xh=Y+)7Dc9XFh}}0nLV3#TFD&}6tZ3#W0i3}f%yG-V4_TK+)^$> zaJe1M(nsfD1h3IsQW#|?atD0?LKcRWdkJZ<>kECCM)oGIzE{pC8eMn8NN~>gi|6V# zGj0xW^(-e+J7W%tqHoK(VT`c`sRWU{Si_oXUR6-<;TX>#1ti)QSU|s8oa7zr@?ITh z%jXz)R$QKjC2gMv90OgO&WbU_yxQr*?men6w@wc^6!{y|L7Q=pZ1vpN#lpU#>hB^% zEEB{DzDa3RS83zlxZzY42(I}JsFbOBaY_9ldQx#dcD0}uBGN+~=55K$KxiF@IzSKo z-6%N<3tw@|!crA#ko#6~^>NIoY4K>I>f~eW{C_%~>yF%oUqNE^iL#@WKexS~pEd&& z`D@(5&>UiRXZa|u5Zy`+`A$ULyb}ntj?%2;X;9`5`&D5Hx9w<`A3p_3hh?3|!$q{{ za=UasGB|pn*ur75U+ocajlBWV2Zf?&{1M%kf->P{4!ujJAUvdSE^1hKz3QvTU4by! z(|DI%#7)<%Wl=!#7-7_{f$I7BY~uYZv2s_L;Vt>a??aO@`8$u2&^i6%uK~u{7vIwU z&r(~N@|E{y1g_|<hH{uZ#8nV=Ne3Pc1wL#p;8=)0DjGT4YLo>|@IY)tZuHfdFE008 zS;O1JkaQoGr6q%FFA*@rjBnvb?dtdXcDlPk9aW{iayJ$YM?LVCF(H#H;{>Sy>~1Z| zS|h=g^yp(ap`Z7Yv29@)!X*G`+OIQe<VSEDcz>a5`_r)J7gRR=S6v9aMU%u<S(8fR zQLX>3_(RBeDM(OE0L<<=c%KzeCsfuoje%xce(gIL;!cHRr+K(6jnSMO0Q3|Ic#NQ$ z>pXzX`8)vN1vt;v=@Xf~x*nuk-y_;%sBwJ*_7PSrAH9GA9JH=BBGIEW43H1&apWGq zeLu_qtT&oLR~?7f;ncEkMkA|r$D4Rcc`h@zIgt&3tRsaX(bphSr0rH9y-!@T(m?LD zRJ_Mr0ET+Pvq55h^iT7^BEvzTn@<wgiGJzWC_sU&j{h;QD71$b=?Cp>$A9K7g#`bK zLe6Whl1u{*@r>N&?W`nj<+Jv9BDH=#khs&x(}T%?3o3T~yjG24H1+O8$#C&>PCwxi zRsd!s>G$FwaOOCSVAsYDql#BRCNiY^O+6>_TL3s96{`l-U4rZZ!gax2;!!(gb+a*- zIdTxQ%gP^aE@<#*9J7ZtSk-m28hjGHU-jC7dRa0`3<jCm1By^V4`aJ#A<ABD7!m=j z7VioeOJeP?Y8+3xx!BY&==nMM7v&7<=`fiDL)(DJEndb4w7HV%wjz|jN=SCdy>W1K z6!UYSgX|YOX9phCccL#*95^T0IkzM0mO({`s<nglT?@sE=8kJ*g_~J#qi<hwvl-9X zS`E2K&3`Xd{7>`ApDPMR<8~^$OCEFd-imG^Ll)$fLf&71+Qn*8Gy0HCS#H+;*rO%- zsFvp$P>W;Q>ssq3c~y|*`xPQ~fdl^1OFf4jtg+H(04x*eO}+(H4*;WgYx?Hlu@#;F z1>*UX*r7DkH14JS_t;vDnhZS~X$UHq0a|PhkIg(H2#3{@kB4`4l^B2N$GBJpe|}?+ zdK>2ksQ|`}`g=gUW_Z=w1`-FV&OA$qS`CjmoIgzI%GN!tk@miAfG9tDSp#5T+z4wi zuC|Bzsj<|p*i?mPpWs{TZ?J$(?NkLwJ*jgDkjl-xr3g*7L=u&17YYXwreC6mR1WAb zS>Puv0If~AJ9`|>PwI7ZPpQthOUC9R<M`!7N{1`ZZ(Qm}Gc>_W<G1qCo4LbY2X3Qd z(a!wY8tI|{haNr<J9fGt8ceyrjYj+yQ5%Y1O6ZbvZv=t|Sx`Mc<KW08Mk{cD&l%y! z4Zb`=qf8BaXwYo74Q(L(XJ)8m1_v<qB6hsy02ACTUUc!O?Ygp)R<D|EMhvOLD#M9= ze^yPaudASq`1fdSnS=^oK%10-#RU8|AtFOsJ-oMzmB2PAA9y7{#!<gI`|LAQydh<% z%wBdvG_1h3D)9|{qBkH)@f~2?vXY^9vxmqbaQv8+w;nzuDfWfEHVfzD_jLaH8h_l^ zdKX#YuWu+Wxn2~r0aPgY6CdSJY<lBb?RUI8*5RyumpVqm`O6OHemu;-;}A~gV^i;M z!r(SS-0dwPU%9gsE=j20YTiu91zBXig4|C#29H%;`?Qc|*%pwy*tz6E>M$Bs+SDz# z5sv@N%MU<|F7x1g5p!0!#gZ!Lhf{#!`Ps%QP-VWy3w4kuXJDmMZyPl;$9n$)fTRIs zCJwnhGL3kr6kgcfBt_`BXW*Kp8~o?t8j;DE6?Pj`a}_%HNBnZ|)Sq2n`0wJJCq38m zU;PB|!|Qe&>k4oB@_M=99?qwhF|gjObSh2I57+D=brt-~xx6dXHn=rLp;fjqyY)HP zs!#Rr7|A1cA873IN`+rp|CI-eE|7SPK(Ee`9}ra`p`a(j%mwX$c&N2IK;4?*l^<k= z$U(c6Tuft3W6?J*e=E9>Rd!d&Frqa^<5Ihb0ciMN8t)(m2ruWiIdwS)cT^(UN}Kfy zUyMq9nf~i8BxqOmN2}+*<lsI2&|Ru}PX#xgYtV<;Y3NofLI$?G__*&K{TK+k)^QUg z20r9^!)bh-bZrArWLD;<-^oO5pnn4mK?SE%54Y#Auglu`A?6%(hB1#~6mrpk(~Tr+ zhJdW<*c0i-5;t?L2#KQ{Bn(Gf^aBw;9>eWoIhkz>XrML)KOycZC??mbxg+MS!>R{g zV_0aIEQ8K=^38ze`oXd&8o9~5`mG#KUh_Ci>U16W08~a7AlPqZAeQJq-5a3qXeac` zq-S60!gz4--`S6%6%x9s^6LTF0k^KA>Z!q~VaI?)X~zpJ6zDp?4u}S-@y83XZdBi) z{47=;%iT6gbm36$1}sYzhc>{gTn%t@Td6bZA>5Zd#yL@M=C)h75_xft)3M-FGql~; zhLCtp(0%4w@Hg?%&HDK(IkkW_a|LDL3TsmO#=*_rmN=uvZ7Qa?Ty!Jz2fMyQIQC}- zBR*hogGtuNy%i6D2pbaz5_==yf`vi7fxDigC8h8D^qg`lg~z}8#h^1}4LLeGdY4K& z!68-bFV_!q(VvkHA1=>1*Mi#OLg&9UX7Vmdc4Wu3=Y(6wr5-|_ake@qcbaPLQmlSm ze9QDX>o#PKZ#1XSE2d%RK;QL)R`l1>@7WkUKJ^M(25=kkxjI-5`HriP?$ZRNul0zg z4$m{O_%J2k7c7iEN{_!7M^b9(;u{d}l_x%1`l0_ai~6wJ@zK@fR|&E=d&`fkberMI z#F!S2&XS2b>zO9qHCc2z;|;Tpra7H&y-0HvyIF}xj~FyH-TUWN&m*G;WBA;^{tZ{@ z1A!~!vOkD>?Ody53nPb`FO)p>PWMLhM}SExyPj%IcJnqcO5q@Ei?jODoG!|BFRoCn zN<X1m_X1W4<X(>jj2V|YP*mu%iqLLbADE#+qWSPhUnJ1QQrO>@Vi}T$NYV*QF@n9R zXQPu03LVBJ%fIY0Z?PnrLT*4UZc=*7L~5eUw1mvMvgdqSK3{;aV}jJdk=;-OE1i>_ zn1#^=4FG|~Gk<%E(u)qtcC7kEaaj<Z<!6Lxkma0Ic1gP8yt*2WW{DI}6g?$N1GVg! znu$0t9$!~kF3AGRL1Ys5mHkFM!*0wPqdIy80i!JEkHCO^KYJa$25Grf!{v{Q8bV1^ zewGe|>G`<l<Vjd7NJMdNIun$3)#VnV#k0h@H@tJDZ(+Fjfz|=gEMK`*>n0oc@V7dX z4yr#OPXlD&G~77w>`}hGT@;P@6x28v&{NjP)IDW-cldr{GO9ZR`I6rCxhXD?{bi2) zkeDN#%9n=v+L3#`*622%qFgS!W~A8hr9LF%$`;MyPx--eB$b<kexwBH%+txR8*8jK zKM7$C+;8pxgR<~nwUk%jKM|#KvSjthFjtG968Cy%U<^RrwmH-wJ@Da=T;dC6mhH;S zotd^tbBhz2hMzNW-RXRIPAif3i2}(;@<iXP)x*csJ9Lg0g6Z@+`4nHX68_0ITUNJw z@4<KYkCmt9O8|-BSsGjPMeir!?#(EcF0>w??864tPVLWp+l2-l0<bkPxQJ@6VS3i% zd5djnp#2FKV-~kfMo|$_XJHo{3}OEQcvIHm9b$QTOJyjOFAa90V@4&p2;C9EdgW{b zJIj32NBzEGN?1$D*2bnIn{+gOQt!3iYpae``DYC#F$;@J-!!7jqE12jyf?Y{I}$uF zx}sZHY7pC&9!g4&Zt!4rTyR@^TIa}kzw#YNQ+&p|?DfL6s0Aj6M&f1&-p=~EZ&R&1 zR_P=CLQQ@Zn1Rb!&D<t^Xn(;w4{aK)S<+XRx+LB^T_Ob$h?cgkWq%p;Q(B!I#9;s^ ziGMSr5N5(W(5>}dq{IyX6pYt3t3Su1ypq?L>7s5xIvHA=sDGz8{M_+o`ozrQ*YnxW z{p{uYRa}zG!?V1Jz5`&1V9J;K)Y$K>Dxgon<laM`3p<VXF%wZY*va{wU$O(RsjiK_ zt+$gKXP4>PIFbv#SXtwcd@s8i$a@juWo5aJHYv8+rOEd(K3TQeV+&n}a-q-ou%5$` z_tu*S)mh#%AFPd9;h83Qn#X>`gY%0iHV^c&Z`)c2vHvfuT)EJeC{5=5ESHvlwD7XP zVb51K11+Z+8ay$o)bS1!ksz~}VeuJ0As@9Kz(iQqP`o_b4@}VC&n6Bw@vzevp!89c zxv18{##b+xLj_<d>|9n2B8rhz4|BZK!MCeFaxF$=&?NpMR*F~*Zq8=|O}*N|;WMT? z;suAG75sJ&;-#kWTZwo*1bjF2LZr*HpR|x|yUw}F=$r}3Fji7VvNOQW62Svsb=FX9 zalAs<90QgH^<K8oiC!fajRYVOxAowi+}fOwis;LDm=SD_1@a~uD}R>`a?!JXA#L-` ziM;=>-b{&brW8FW8so<*+ZH^9gv`*^z{diBu%;r}F{xPphbYj-a#c2(^ZAU<{PSbT z16up)68;1)qFdT`;16wx;GmC#%FioZ@nr>`+w>%`(8;I6diIF5LTXSGlP6kTF|~8Q zsbb|I>;4Dl2+f?`LZHEY1|RvZkK|tF)fVuUTWf0Iugl%e=$;1OullkGtPm*;p1(ZP zqusgTO>XoZXw{&HQeTSKW#AW!tYA)?BVjesKIAO!XulR<Bq-U;8Y=mq3g&ui?DNx% z6aKXeix06=P_kw~w5*-(Y8I)Z1Vdn0WsHwnHks7fzI`&ATa_`{FXNy?9)}0eRjA}r zG{Y(HnX?jE;7^~i+ZHC3H5~7r6$hcGh}1nh1A%Ry<YOp`kK@>gPy9)8qrApH6U$u? zP($4mcD?i0NKaRV6wbnPiv^<@^edF&tp+=iXEJ1i_nXoMv?0AcTU#7&n1aXd64n$Y z41a;(=3F4ZE!BdocBd~fQh4?>c0NmrWG{q-v@XN{OBBl_`WqNI1<W#MjAlU^LtQt! z2*Utj!Y`#e46O*J-_5EZfmm0EYGl<`k{Dftz6wILJ{!+O+rzKIH`^UQtzj#;XkS{v z-3n1}gfZwJu><f=PX@`b5Q6Bz*CgRBriHl!w7#E{{Ar{He5Y>NgEC)jS!GuS6$?*j z&(GfF*jB$9n?dKb4>Zhl<F#ewL)0mun+!%AK80*{+KSQpv<p-sBX07vrI4qC`=DHK z#>gJsIQigB6}ArVkx*~@$fhmX?G8_!Ign4GC+(MneXK1fc8&K|1ji|D5Ptl1e1+73 z`0tJy4~5ZzkH}AnjB!KsflVH9PQQr`F6wa+Rt98-SnM$Mp{PK)qjcRd2jL226_5{# zCG}#rO=xu&8X}=!HRR$cq6XPPoWIA*RbR@!0p|B&(*?%1?+wdcID8`PYoD!s6gh<V zCpP0d%(idU^D^EaoMIj58X%1C%I%Al50CCL;FwWf^)Ka{A_q2K1=DinyeUDiX6>eD z(9|rQUB5qa<kna-@w~WkqT)04b{HU6Ug8)XD3!gOZ*>54oux9VjWVOc;tvUHEoW|M z+Jt<GAe@h3knkK=AgQ88wE-KD?p_&U>INwli+_HqY*nyvjd34YAK%TgQ8d92-5S2n zVHDY+nZqq>xW~Vp%HRM6txF$A8W1<F0PLXb$lasY3z6I(lh?LuxD2*$e$OR<6>ino ziJpR<|3C~1BywaQyNKd`!UE9&m2_MJknaF4XqEF;`A&SDLTmo^NKNz6UT(8*j~oXL zfP3uy=sHV~_Pk}lJ=qLU0^3;)8CTeYA1W+)vM(M4!7ho{a_=sBl6QO^kl)c=H;?{5 z+`V;J)LYj+4v5Ma)EFS$2vX9W0wN)j(uhj8l)#V*D5-P}Al)e40s_)VO7}=f3=IRn z{W<S*ⅈ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%0Dl6_yZ1JG|# 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%0AQ6j8lMZmZ5*qit@}b{0*vN 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%0Ay#+lIRQ1xEjmt*3mSLXjI|+ZTzd58J4Jlr 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μ$ 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 literal 332212 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 diff --git a/Doc/library/locale.rst b/Doc/library/locale.rst index 2a6d911d6b4..7c87c52d040 100644 --- a/Doc/library/locale.rst +++ b/Doc/library/locale.rst @@ -18,7 +18,7 @@ know all the specifics of each country where the software is executed. .. index:: pair: module; _locale -The :mod:`locale` module is implemented on top of the :mod:`_locale` module, +The :mod:`locale` module is implemented on top of the :mod:`!_locale` module, which in turn uses an ANSI C locale implementation if available. The :mod:`locale` module defines the following exception and functions: @@ -192,7 +192,13 @@ The :mod:`locale` module defines the following exception and functions: Get a format string for :func:`time.strftime` to represent time in the am/pm format. - .. data:: DAY_1 ... DAY_7 + .. data:: DAY_1 + DAY_2 + DAY_3 + DAY_4 + DAY_5 + DAY_6 + DAY_7 Get the name of the n-th day of the week. @@ -202,15 +208,43 @@ The :mod:`locale` module defines the following exception and functions: international convention (ISO 8601) that Monday is the first day of the week. - .. data:: ABDAY_1 ... ABDAY_7 + .. data:: ABDAY_1 + ABDAY_2 + ABDAY_3 + ABDAY_4 + ABDAY_5 + ABDAY_6 + ABDAY_7 Get the abbreviated name of the n-th day of the week. - .. data:: MON_1 ... MON_12 + .. data:: MON_1 + MON_2 + MON_3 + MON_4 + MON_5 + MON_6 + MON_7 + MON_8 + MON_9 + MON_10 + MON_11 + MON_12 Get the name of the n-th month. - .. data:: ABMON_1 ... ABMON_12 + .. data:: ABMON_1 + ABMON_2 + ABMON_3 + ABMON_4 + ABMON_5 + ABMON_6 + ABMON_7 + ABMON_8 + ABMON_9 + ABMON_10 + ABMON_11 + ABMON_12 Get the abbreviated name of the n-th month. @@ -229,14 +263,14 @@ The :mod:`locale` module defines the following exception and functions: .. data:: NOEXPR - Get a regular expression that can be used with the regex(3) function to + Get a regular expression that can be used with the ``regex(3)`` function to recognize a negative response to a yes/no question. .. note:: The regular expressions for :const:`YESEXPR` and :const:`NOEXPR` use syntax suitable for the - :c:func:`regex` function from the C library, which might + ``regex`` function from the C library, which might differ from the syntax used in :mod:`re`. .. data:: CRNCYSTR @@ -309,7 +343,7 @@ The :mod:`locale` module defines the following exception and functions: .. function:: getlocale(category=LC_CTYPE) Returns the current setting for the given locale category as sequence containing - *language code*, *encoding*. *category* may be one of the :const:`LC_\*` values + *language code*, *encoding*. *category* may be one of the :const:`!LC_\*` values except :const:`LC_ALL`. It defaults to :const:`LC_CTYPE`. Except for the code ``'C'``, the language code corresponds to :rfc:`1766`. @@ -591,9 +625,9 @@ the locale is ``C``). When Python code uses the :mod:`locale` module to change the locale, this also affects the embedding application. If the embedding application doesn't want -this to happen, it should remove the :mod:`_locale` extension module (which does +this to happen, it should remove the :mod:`!_locale` extension module (which does all the work) from the table of built-in modules in the :file:`config.c` file, -and make sure that the :mod:`_locale` module is not accessible as a shared +and make sure that the :mod:`!_locale` module is not accessible as a shared library. @@ -607,17 +641,18 @@ Access to message catalogs .. function:: dcgettext(domain, msg, category) .. function:: textdomain(domain) .. function:: bindtextdomain(domain, dir) +.. function:: bind_textdomain_codeset(domain, codeset) The locale module exposes the C library's gettext interface on systems that -provide this interface. It consists of the functions :func:`!gettext`, -:func:`!dgettext`, :func:`!dcgettext`, :func:`!textdomain`, :func:`!bindtextdomain`, -and :func:`!bind_textdomain_codeset`. These are similar to the same functions in +provide this interface. It consists of the functions :func:`gettext`, +:func:`dgettext`, :func:`dcgettext`, :func:`textdomain`, :func:`bindtextdomain`, +and :func:`bind_textdomain_codeset`. These are similar to the same functions in the :mod:`gettext` module, but use the C library's binary format for message catalogs, and the C library's search algorithms for locating message catalogs. Python applications should normally find no need to invoke these functions, and should use :mod:`gettext` instead. A known exception to this rule are applications that link with additional C libraries which internally invoke -:c:func:`gettext` or :c:func:`dcgettext`. For these applications, it may be +C functions ``gettext`` or ``dcgettext``. For these applications, it may be necessary to bind the text domain, so that the libraries can properly locate their message catalogs. diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index 1c0ea22deac..34f2472816f 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -93,8 +93,8 @@ in :mod:`logging` itself) and defining handlers which are declared either in :param fname: A filename, or a file-like object, or an instance derived from :class:`~configparser.RawConfigParser`. If a - ``RawConfigParser``-derived instance is passed, it is used as - is. Otherwise, a :class:`~configparser.Configparser` is + :class:`!RawConfigParser`-derived instance is passed, it is used as + is. Otherwise, a :class:`~configparser.ConfigParser` is instantiated, and the configuration read by it from the object passed in ``fname``. If that has a :meth:`readline` method, it is assumed to be a file-like object and read using @@ -103,7 +103,7 @@ in :mod:`logging` itself) and defining handlers which are declared either in :meth:`~configparser.ConfigParser.read`. - :param defaults: Defaults to be passed to the ConfigParser can be specified + :param defaults: Defaults to be passed to the :class:`!ConfigParser` can be specified in this argument. :param disable_existing_loggers: If specified as ``False``, loggers which @@ -127,8 +127,8 @@ in :mod:`logging` itself) and defining handlers which are declared either in application (e.g. based on command-line parameters or other aspects of the runtime environment) before being passed to ``fileConfig``. - .. versionadded:: 3.10 - The *encoding* parameter is added. + .. versionchanged:: 3.10 + Added the *encoding* parameter. .. versionchanged:: 3.12 An exception will be thrown if the provided file diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst index 2dd4bd081b0..2fe9370333b 100644 --- a/Doc/library/logging.handlers.rst +++ b/Doc/library/logging.handlers.rst @@ -871,8 +871,8 @@ supports sending logging messages to an email address via SMTP. A timeout can be specified for communication with the SMTP server using the *timeout* argument. - .. versionadded:: 3.3 - The *timeout* argument was added. + .. versionchanged:: 3.3 + Added the *timeout* parameter. .. method:: emit(record) diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 6d1f048d283..6759544ef21 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -531,12 +531,12 @@ subclasses. However, the :meth:`!__init__` method in subclasses needs to call This method should be called from handlers when an exception is encountered during an :meth:`emit` call. If the module-level attribute - ``raiseExceptions`` is ``False``, exceptions get silently ignored. This is + :data:`raiseExceptions` is ``False``, exceptions get silently ignored. This is what is mostly wanted for a logging system - most users will not care about errors in the logging system, they are more interested in application errors. You could, however, replace this with a custom handler if you wish. The specified record is the one which was being processed when the exception - occurred. (The default value of ``raiseExceptions`` is ``True``, as that is + occurred. (The default value of :data:`raiseExceptions` is ``True``, as that is more useful during development). @@ -615,14 +615,14 @@ Formatter Objects ``logging.Formatter('%(ip)s %(message)s', defaults={"ip": None})`` :type defaults: dict[str, Any] - .. versionadded:: 3.2 - The *style* parameter. + .. versionchanged:: 3.2 + Added the *style* parameter. - .. versionadded:: 3.8 - The *validate* parameter. + .. versionchanged:: 3.8 + Added the *validate* parameter. - .. versionadded:: 3.10 - The *defaults* parameter. + .. versionchanged:: 3.10 + Added the *defaults* parameter. .. method:: format(record) @@ -1477,6 +1477,18 @@ Module-Level Attributes .. versionadded:: 3.2 +.. attribute:: raiseExceptions + + Used to see if exceptions during handling should be propagated. + + Default: ``True``. + + If :data:`raiseExceptions` is ``False``, + exceptions get silently ignored. This is what is mostly wanted + for a logging system - most users will not care about errors in + the logging system, they are more interested in application errors. + + Integration with the warnings module ------------------------------------ diff --git a/Doc/library/mailbox.rst b/Doc/library/mailbox.rst index b27deb20f13..9e737cd5ee4 100644 --- a/Doc/library/mailbox.rst +++ b/Doc/library/mailbox.rst @@ -13,8 +13,8 @@ This module defines two classes, :class:`Mailbox` and :class:`Message`, for accessing and manipulating on-disk mailboxes and the messages they contain. -:class:`Mailbox` offers a dictionary-like mapping from keys to messages. -:class:`Message` extends the :mod:`email.message` module's +:class:`!Mailbox` offers a dictionary-like mapping from keys to messages. +:class:`!Message` extends the :mod:`email.message` module's :class:`~email.message.Message` class with format-specific state and behavior. Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. @@ -27,37 +27,38 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-objects: -:class:`Mailbox` objects ------------------------- +:class:`!Mailbox` objects +------------------------- .. class:: Mailbox A mailbox, which may be inspected and modified. - The :class:`Mailbox` class defines an interface and is not intended to be + The :class:`!Mailbox` class defines an interface and is not intended to be instantiated. Instead, format-specific subclasses should inherit from - :class:`Mailbox` and your code should instantiate a particular subclass. + :class:`!Mailbox` and your code should instantiate a particular subclass. - The :class:`Mailbox` interface is dictionary-like, with small keys - corresponding to messages. Keys are issued by the :class:`Mailbox` instance - with which they will be used and are only meaningful to that :class:`Mailbox` + The :class:`!Mailbox` interface is dictionary-like, with small keys + corresponding to messages. Keys are issued by the :class:`!Mailbox` instance + with which they will be used and are only meaningful to that :class:`!Mailbox` instance. A key continues to identify a message even if the corresponding message is modified, such as by replacing it with another message. - Messages may be added to a :class:`Mailbox` instance using the set-like + Messages may be added to a :class:`!Mailbox` instance using the set-like method :meth:`add` and removed using a ``del`` statement or the set-like methods :meth:`remove` and :meth:`discard`. - :class:`Mailbox` interface semantics differ from dictionary semantics in some + :class:`!Mailbox` interface semantics differ from dictionary semantics in some noteworthy ways. Each time a message is requested, a new representation (typically a :class:`Message` instance) is generated based upon the current state of the mailbox. Similarly, when a message is added to a - :class:`Mailbox` instance, the provided message representation's contents are + :class:`!Mailbox` instance, the provided message representation's contents are copied. In neither case is a reference to the message representation kept by - the :class:`Mailbox` instance. + the :class:`!Mailbox` instance. - The default :class:`Mailbox` iterator iterates over message representations, - not keys as the default dictionary iterator does. Moreover, modification of a + The default :class:`!Mailbox` :term:`iterator` iterates over message + representations, not keys as the default :class:`dictionary <dict>` + iterator does. Moreover, modification of a mailbox during iteration is safe and well-defined. Messages added to the mailbox after an iterator is created will not be seen by the iterator. Messages removed from the mailbox before the iterator yields them @@ -69,14 +70,15 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. Be very cautious when modifying mailboxes that might be simultaneously changed by some other process. The safest mailbox format to use for such - tasks is Maildir; try to avoid using single-file formats such as mbox for + tasks is :class:`Maildir`; try to avoid using single-file formats such as + :class:`mbox` for concurrent writing. If you're modifying a mailbox, you *must* lock it by calling the :meth:`lock` and :meth:`unlock` methods *before* reading any messages in the file or making any changes by adding or deleting a message. Failing to lock the mailbox runs the risk of losing messages or corrupting the entire mailbox. - :class:`Mailbox` instances have the following methods: + :class:`!Mailbox` instances have the following methods: .. method:: add(message) @@ -127,21 +129,23 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: iterkeys() - keys() - Return an iterator over all keys if called as :meth:`iterkeys` or return a - list of keys if called as :meth:`keys`. + Return an :term:`iterator` over all keys + + + .. method:: keys() + + The same as :meth:`iterkeys`, except that a :class:`list` is returned + rather than an :term:`iterator` .. method:: itervalues() __iter__() - values() - Return an iterator over representations of all messages if called as - :meth:`itervalues` or :meth:`__iter__` or return a list of such - representations if called as :meth:`values`. The messages are represented + Return an :term:`iterator` over representations of all messages. + The messages are represented as instances of the appropriate format-specific :class:`Message` subclass - unless a custom message factory was specified when the :class:`Mailbox` + unless a custom message factory was specified when the :class:`!Mailbox` instance was initialized. .. note:: @@ -150,15 +154,25 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. iterate over keys. + .. method:: values() + + The same as :meth:`itervalues`, except that a :class:`list` is returned + rather than an :term:`iterator` + + .. method:: iteritems() - items() - Return an iterator over (*key*, *message*) pairs, where *key* is a key and - *message* is a message representation, if called as :meth:`iteritems` or - return a list of such pairs if called as :meth:`items`. The messages are + Return an :term:`iterator` over (*key*, *message*) pairs, where *key* is + a key and *message* is a message representation. The messages are represented as instances of the appropriate format-specific :class:`Message` subclass unless a custom message factory was specified - when the :class:`Mailbox` instance was initialized. + when the :class:`!Mailbox` instance was initialized. + + + .. method:: items() + + The same as :meth:`iteritems`, except that a :class:`list` of pairs is + returned rather than an :term:`iterator` of pairs. .. method:: get(key, default=None) @@ -167,9 +181,9 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. Return a representation of the message corresponding to *key*. If no such message exists, *default* is returned if the method was called as :meth:`get` and a :exc:`KeyError` exception is raised if the method was - called as :meth:`~object.__getitem__`. The message is represented as an instance + called as :meth:`!__getitem__`. The message is represented as an instance of the appropriate format-specific :class:`Message` subclass unless a - custom message factory was specified when the :class:`Mailbox` instance + custom message factory was specified when the :class:`!Mailbox` instance was initialized. @@ -198,21 +212,23 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: get_file(key) - Return a file-like representation of the message corresponding to *key*, + Return a :term:`file-like <file-like object>` representation of the + message corresponding to *key*, or raise a :exc:`KeyError` exception if no such message exists. The file-like object behaves as if open in binary mode. This file should be closed once it is no longer needed. .. versionchanged:: 3.2 - The file object really is a binary file; previously it was incorrectly - returned in text mode. Also, the file-like object now supports the - context management protocol: you can use a :keyword:`with` statement to - automatically close it. + The file object really is a :term:`binary file`; previously it was + incorrectly returned in text mode. Also, the :term:`file-like object` + now supports the :term:`context manager` protocol: you can use a + :keyword:`with` statement to automatically close it. .. note:: - Unlike other representations of messages, file-like representations are - not necessarily independent of the :class:`Mailbox` instance that + Unlike other representations of messages, + :term:`file-like <file-like object>` representations are not + necessarily independent of the :class:`!Mailbox` instance that created them or of the underlying mailbox. More specific documentation is provided by each subclass. @@ -238,7 +254,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. the message. If no such message exists, return *default*. The message is represented as an instance of the appropriate format-specific :class:`Message` subclass unless a custom message factory was specified - when the :class:`Mailbox` instance was initialized. + when the :class:`!Mailbox` instance was initialized. .. method:: popitem() @@ -248,7 +264,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. message. If the mailbox is empty, raise a :exc:`KeyError` exception. The message is represented as an instance of the appropriate format-specific :class:`Message` subclass unless a custom message factory was specified - when the :class:`Mailbox` instance was initialized. + when the :class:`!Mailbox` instance was initialized. .. method:: update(arg) @@ -259,7 +275,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. *message* as if by using :meth:`__setitem__`. As with :meth:`__setitem__`, each *key* must already correspond to a message in the mailbox or else a :exc:`KeyError` exception will be raised, so in general it is incorrect - for *arg* to be a :class:`Mailbox` instance. + for *arg* to be a :class:`!Mailbox` instance. .. note:: @@ -269,7 +285,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: flush() Write any pending changes to the filesystem. For some :class:`Mailbox` - subclasses, changes are always written immediately and :meth:`flush` does + subclasses, changes are always written immediately and :meth:`!flush` does nothing, but you should still make a habit of calling this method. @@ -290,13 +306,13 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: close() Flush the mailbox, unlock it if necessary, and close any open files. For - some :class:`Mailbox` subclasses, this method does nothing. + some :class:`!Mailbox` subclasses, this method does nothing. .. _mailbox-maildir: -:class:`Maildir` -^^^^^^^^^^^^^^^^ +:class:`!Maildir` objects +^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: Maildir(dirname, factory=None, create=True) @@ -330,11 +346,11 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. Folders of the style introduced by the Courier mail transfer agent are also supported. Any subdirectory of the main mailbox is considered a folder if ``'.'`` is the first character in its name. Folder names are represented by - :class:`Maildir` without the leading ``'.'``. Each folder is itself a Maildir + :class:`!Maildir` without the leading ``'.'``. Each folder is itself a Maildir mailbox but should not contain other folders. Instead, a logical nesting is indicated using ``'.'`` to delimit levels, e.g., "Archived.2005.07". - .. note:: + .. attribute:: Maildir.colon The Maildir specification requires the use of a colon (``':'``) in certain message file names. However, some operating systems do not permit this @@ -346,9 +362,9 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. import mailbox mailbox.Maildir.colon = '!' - The :attr:`colon` attribute may also be set on a per-instance basis. + The :attr:`!colon` attribute may also be set on a per-instance basis. - :class:`Maildir` instances have all of the methods of :class:`Mailbox` in + :class:`!Maildir` instances have all of the methods of :class:`Mailbox` in addition to the following: @@ -359,14 +375,14 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: get_folder(folder) - Return a :class:`Maildir` instance representing the folder whose name is + Return a :class:`!Maildir` instance representing the folder whose name is *folder*. A :exc:`NoSuchMailboxError` exception is raised if the folder does not exist. .. method:: add_folder(folder) - Create a folder whose name is *folder* and return a :class:`Maildir` + Create a folder whose name is *folder* and return a :class:`!Maildir` instance representing it. @@ -383,7 +399,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. last 36 hours. The Maildir specification says that mail-reading programs should do this occasionally. - Some :class:`Mailbox` methods implemented by :class:`Maildir` deserve special + Some :class:`Mailbox` methods implemented by :class:`!Maildir` deserve special remarks: @@ -414,7 +430,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: close() - :class:`Maildir` instances do not keep any open files and the underlying + :class:`!Maildir` instances do not keep any open files and the underlying mailboxes do not support locking, so this method does nothing. @@ -437,8 +453,8 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-mbox: -:class:`mbox` -^^^^^^^^^^^^^ +:class:`!mbox` objects +^^^^^^^^^^^^^^^^^^^^^^ .. class:: mbox(path, factory=None, create=True) @@ -455,22 +471,22 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. each message indicated by a line whose first five characters are "From ". Several variations of the mbox format exist to address perceived shortcomings in - the original. In the interest of compatibility, :class:`mbox` implements the + the original. In the interest of compatibility, :class:`!mbox` implements the original format, which is sometimes referred to as :dfn:`mboxo`. This means that the :mailheader:`Content-Length` header, if present, is ignored and that any occurrences of "From " at the beginning of a line in a message body are transformed to ">From " when storing the message, although occurrences of ">From " are not transformed to "From " when reading the message. - Some :class:`Mailbox` methods implemented by :class:`mbox` deserve special + Some :class:`Mailbox` methods implemented by :class:`!mbox` deserve special remarks: .. method:: get_file(key) - Using the file after calling :meth:`flush` or :meth:`close` on the - :class:`mbox` instance may yield unpredictable results or raise an - exception. + Using the file after calling :meth:`~Mailbox.flush` or + :meth:`~Mailbox.close` on the :class:`!mbox` instance may yield + unpredictable results or raise an exception. .. method:: lock() @@ -494,8 +510,8 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-mh: -:class:`MH` -^^^^^^^^^^^ +:class:`!MH` objects +^^^^^^^^^^^^^^^^^^^^ .. class:: MH(path, factory=None, create=True) @@ -515,12 +531,12 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. messages without moving them to sub-folders. Sequences are defined in a file called :file:`.mh_sequences` in each folder. - The :class:`MH` class manipulates MH mailboxes, but it does not attempt to + The :class:`!MH` class manipulates MH mailboxes, but it does not attempt to emulate all of :program:`mh`'s behaviors. In particular, it does not modify and is not affected by the :file:`context` or :file:`.mh_profile` files that are used by :program:`mh` to store its state and configuration. - :class:`MH` instances have all of the methods of :class:`Mailbox` in addition + :class:`!MH` instances have all of the methods of :class:`Mailbox` in addition to the following: @@ -531,14 +547,14 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: get_folder(folder) - Return an :class:`MH` instance representing the folder whose name is + Return an :class:`!MH` instance representing the folder whose name is *folder*. A :exc:`NoSuchMailboxError` exception is raised if the folder does not exist. .. method:: add_folder(folder) - Create a folder whose name is *folder* and return an :class:`MH` instance + Create a folder whose name is *folder* and return an :class:`!MH` instance representing it. @@ -572,7 +588,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. Already-issued keys are invalidated by this operation and should not be subsequently used. - Some :class:`Mailbox` methods implemented by :class:`MH` deserve special + Some :class:`Mailbox` methods implemented by :class:`!MH` deserve special remarks: @@ -608,7 +624,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. method:: close() - :class:`MH` instances do not keep any open files, so this method is + :class:`!MH` instances do not keep any open files, so this method is equivalent to :meth:`unlock`. @@ -624,8 +640,8 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-babyl: -:class:`Babyl` -^^^^^^^^^^^^^^ +:class:`!Babyl` objects +^^^^^^^^^^^^^^^^^^^^^^^ .. class:: Babyl(path, factory=None, create=True) @@ -652,7 +668,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. message, and a list of all user-defined labels found in the mailbox is kept in the Babyl options section. - :class:`Babyl` instances have all of the methods of :class:`Mailbox` in + :class:`!Babyl` instances have all of the methods of :class:`Mailbox` in addition to the following: @@ -667,7 +683,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. options section, but the Babyl section is updated whenever the mailbox is modified. - Some :class:`Mailbox` methods implemented by :class:`Babyl` deserve special + Some :class:`Mailbox` methods implemented by :class:`!Babyl` deserve special remarks: @@ -700,8 +716,8 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-mmdf: -:class:`MMDF` -^^^^^^^^^^^^^ +:class:`!MMDF` objects +^^^^^^^^^^^^^^^^^^^^^^ .. class:: MMDF(path, factory=None, create=True) @@ -722,15 +738,15 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. ">From " when storing messages because the extra message separator lines prevent mistaking such occurrences for the starts of subsequent messages. - Some :class:`Mailbox` methods implemented by :class:`MMDF` deserve special + Some :class:`Mailbox` methods implemented by :class:`!MMDF` deserve special remarks: .. method:: get_file(key) - Using the file after calling :meth:`flush` or :meth:`close` on the - :class:`MMDF` instance may yield unpredictable results or raise an - exception. + Using the file after calling :meth:`~Mailbox.flush` or + :meth:`~Mailbox.close` on the :class:`!MMDF` instance may yield + unpredictable results or raise an exception. .. method:: lock() @@ -752,20 +768,20 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. _mailbox-message-objects: -:class:`Message` objects ------------------------- +:class:`!Message` objects +------------------------- .. class:: Message(message=None) A subclass of the :mod:`email.message` module's - :class:`~email.message.Message`. Subclasses of :class:`mailbox.Message` add + :class:`~email.message.Message`. Subclasses of :class:`!mailbox.Message` add mailbox-format-specific state and behavior. If *message* is omitted, the new instance is created in a default, empty state. If *message* is an :class:`email.message.Message` instance, its contents are copied; furthermore, any format-specific information is converted insofar as - possible if *message* is a :class:`Message` instance. If *message* is a string, + possible if *message* is a :class:`!Message` instance. If *message* is a string, a byte string, or a file, it should contain an :rfc:`2822`\ -compliant message, which is read and parsed. Files should be open in binary mode, but text mode files @@ -780,18 +796,18 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. such as whether a message has been read by the user or marked as important is retained, because it applies to the message itself. - There is no requirement that :class:`Message` instances be used to represent + There is no requirement that :class:`!Message` instances be used to represent messages retrieved using :class:`Mailbox` instances. In some situations, the - time and memory required to generate :class:`Message` representations might - not be acceptable. For such situations, :class:`Mailbox` instances also + time and memory required to generate :class:`!Message` representations might + not be acceptable. For such situations, :class:`!Mailbox` instances also offer string and file-like representations, and a custom message factory may - be specified when a :class:`Mailbox` instance is initialized. + be specified when a :class:`!Mailbox` instance is initialized. .. _mailbox-maildirmessage: -:class:`MaildirMessage` -^^^^^^^^^^^^^^^^^^^^^^^ +:class:`!MaildirMessage` objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: MaildirMessage(message=None) @@ -826,7 +842,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. | T | Trashed | Marked for subsequent deletion | +------+---------+--------------------------------+ - :class:`MaildirMessage` instances offer the following methods: + :class:`!MaildirMessage` instances offer the following methods: .. method:: get_subdir() @@ -903,7 +919,7 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. Set "info" to *info*, which should be a string. -When a :class:`MaildirMessage` instance is created based upon an +When a :class:`!MaildirMessage` instance is created based upon an :class:`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` and :mailheader:`X-Status` headers are omitted and the following conversions take place: @@ -923,7 +939,7 @@ take place: | T flag | D flag | +--------------------+----------------------------------------------+ -When a :class:`MaildirMessage` instance is created based upon an +When a :class:`!MaildirMessage` instance is created based upon an :class:`MHMessage` instance, the following conversions take place: +-------------------------------+--------------------------+ @@ -938,7 +954,7 @@ When a :class:`MaildirMessage` instance is created based upon an | R flag | "replied" sequence | +-------------------------------+--------------------------+ -When a :class:`MaildirMessage` instance is created based upon a +When a :class:`!MaildirMessage` instance is created based upon a :class:`BabylMessage` instance, the following conversions take place: +-------------------------------+-------------------------------+ @@ -958,8 +974,8 @@ When a :class:`MaildirMessage` instance is created based upon a .. _mailbox-mboxmessage: -:class:`mboxMessage` -^^^^^^^^^^^^^^^^^^^^ +:class:`!mboxMessage` objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: mboxMessage(message=None) @@ -995,7 +1011,7 @@ When a :class:`MaildirMessage` instance is created based upon a "D", "F", and "A" flags are stored in the :mailheader:`X-Status` header. The flags and headers typically appear in the order mentioned. - :class:`mboxMessage` instances offer the following methods: + :class:`!mboxMessage` instances offer the following methods: .. method:: get_from() @@ -1011,8 +1027,8 @@ When a :class:`MaildirMessage` instance is created based upon a leading "From " or trailing newline. For convenience, *time_* may be specified and will be formatted appropriately and appended to *from_*. If *time_* is specified, it should be a :class:`time.struct_time` instance, a - tuple suitable for passing to :meth:`time.strftime`, or ``True`` (to use - :meth:`time.gmtime`). + tuple suitable for passing to :func:`time.strftime`, or ``True`` (to use + :func:`time.gmtime`). .. method:: get_flags() @@ -1043,7 +1059,7 @@ When a :class:`MaildirMessage` instance is created based upon a remove more than one flag at a time, *flag* maybe a string of more than one character. -When an :class:`mboxMessage` instance is created based upon a +When an :class:`!mboxMessage` instance is created based upon a :class:`MaildirMessage` instance, a "From " line is generated based upon the :class:`MaildirMessage` instance's delivery date, and the following conversions take place: @@ -1062,7 +1078,7 @@ take place: | A flag | R flag | +-----------------+-------------------------------+ -When an :class:`mboxMessage` instance is created based upon an +When an :class:`!mboxMessage` instance is created based upon an :class:`MHMessage` instance, the following conversions take place: +-------------------+--------------------------+ @@ -1077,7 +1093,7 @@ When an :class:`mboxMessage` instance is created based upon an | A flag | "replied" sequence | +-------------------+--------------------------+ -When an :class:`mboxMessage` instance is created based upon a +When an :class:`!mboxMessage` instance is created based upon a :class:`BabylMessage` instance, the following conversions take place: +-------------------+-----------------------------+ @@ -1092,7 +1108,8 @@ When an :class:`mboxMessage` instance is created based upon a | A flag | "answered" label | +-------------------+-----------------------------+ -When a :class:`Message` instance is created based upon an :class:`MMDFMessage` +When a :class:`!mboxMessage` instance is created based upon an +:class:`MMDFMessage` instance, the "From " line is copied and all flags directly correspond: +-----------------+----------------------------+ @@ -1112,8 +1129,8 @@ instance, the "From " line is copied and all flags directly correspond: .. _mailbox-mhmessage: -:class:`MHMessage` -^^^^^^^^^^^^^^^^^^ +:class:`!MHMessage` objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: MHMessage(message=None) @@ -1137,7 +1154,7 @@ instance, the "From " line is copied and all flags directly correspond: | flagged | Marked as important | +----------+------------------------------------------+ - :class:`MHMessage` instances offer the following methods: + :class:`!MHMessage` instances offer the following methods: .. method:: get_sequences() @@ -1159,7 +1176,7 @@ instance, the "From " line is copied and all flags directly correspond: Remove *sequence* from the list of sequences that include this message. -When an :class:`MHMessage` instance is created based upon a +When an :class:`!MHMessage` instance is created based upon a :class:`MaildirMessage` instance, the following conversions take place: +--------------------+-------------------------------+ @@ -1172,7 +1189,7 @@ When an :class:`MHMessage` instance is created based upon a | "flagged" sequence | F flag | +--------------------+-------------------------------+ -When an :class:`MHMessage` instance is created based upon an +When an :class:`!MHMessage` instance is created based upon an :class:`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` and :mailheader:`X-Status` headers are omitted and the following conversions take place: @@ -1188,7 +1205,7 @@ take place: | "flagged" sequence | F flag | +--------------------+----------------------------------------------+ -When an :class:`MHMessage` instance is created based upon a +When an :class:`!MHMessage` instance is created based upon a :class:`BabylMessage` instance, the following conversions take place: +--------------------+-----------------------------+ @@ -1202,8 +1219,8 @@ When an :class:`MHMessage` instance is created based upon a .. _mailbox-babylmessage: -:class:`BabylMessage` -^^^^^^^^^^^^^^^^^^^^^ +:class:`!BabylMessage` objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: BabylMessage(message=None) @@ -1232,11 +1249,11 @@ When an :class:`MHMessage` instance is created based upon a | resent | Resent | +-----------+------------------------------------------+ - By default, Rmail displays only visible headers. The :class:`BabylMessage` + By default, Rmail displays only visible headers. The :class:`!BabylMessage` class, though, uses the original headers because they are more complete. Visible headers may be accessed explicitly if desired. - :class:`BabylMessage` instances offer the following methods: + :class:`!BabylMessage` instances offer the following methods: .. method:: get_labels() @@ -1275,7 +1292,7 @@ When an :class:`MHMessage` instance is created based upon a .. method:: update_visible() - When a :class:`BabylMessage` instance's original headers are modified, the + When a :class:`!BabylMessage` instance's original headers are modified, the visible headers are not automatically modified to correspond. This method updates the visible headers as follows: each visible header with a corresponding original header is set to the value of the original header, @@ -1285,7 +1302,7 @@ When an :class:`MHMessage` instance is created based upon a present in the original headers but not the visible headers are added to the visible headers. -When a :class:`BabylMessage` instance is created based upon a +When a :class:`!BabylMessage` instance is created based upon a :class:`MaildirMessage` instance, the following conversions take place: +-------------------+-------------------------------+ @@ -1300,7 +1317,7 @@ When a :class:`BabylMessage` instance is created based upon a | "forwarded" label | P flag | +-------------------+-------------------------------+ -When a :class:`BabylMessage` instance is created based upon an +When a :class:`!BabylMessage` instance is created based upon an :class:`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` and :mailheader:`X-Status` headers are omitted and the following conversions take place: @@ -1316,7 +1333,7 @@ take place: | "answered" label | A flag | +------------------+----------------------------------------------+ -When a :class:`BabylMessage` instance is created based upon an +When a :class:`!BabylMessage` instance is created based upon an :class:`MHMessage` instance, the following conversions take place: +------------------+--------------------------+ @@ -1330,8 +1347,8 @@ When a :class:`BabylMessage` instance is created based upon an .. _mailbox-mmdfmessage: -:class:`MMDFMessage` -^^^^^^^^^^^^^^^^^^^^ +:class:`!MMDFMessage` objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: MMDFMessage(message=None) @@ -1365,7 +1382,7 @@ When a :class:`BabylMessage` instance is created based upon an "D", "F", and "A" flags are stored in the :mailheader:`X-Status` header. The flags and headers typically appear in the order mentioned. - :class:`MMDFMessage` instances offer the following methods, which are + :class:`!MMDFMessage` instances offer the following methods, which are identical to those offered by :class:`mboxMessage`: @@ -1382,8 +1399,8 @@ When a :class:`BabylMessage` instance is created based upon an leading "From " or trailing newline. For convenience, *time_* may be specified and will be formatted appropriately and appended to *from_*. If *time_* is specified, it should be a :class:`time.struct_time` instance, a - tuple suitable for passing to :meth:`time.strftime`, or ``True`` (to use - :meth:`time.gmtime`). + tuple suitable for passing to :func:`time.strftime`, or ``True`` (to use + :func:`time.gmtime`). .. method:: get_flags() @@ -1414,7 +1431,7 @@ When a :class:`BabylMessage` instance is created based upon an remove more than one flag at a time, *flag* maybe a string of more than one character. -When an :class:`MMDFMessage` instance is created based upon a +When an :class:`!MMDFMessage` instance is created based upon a :class:`MaildirMessage` instance, a "From " line is generated based upon the :class:`MaildirMessage` instance's delivery date, and the following conversions take place: @@ -1433,7 +1450,7 @@ take place: | A flag | R flag | +-----------------+-------------------------------+ -When an :class:`MMDFMessage` instance is created based upon an +When an :class:`!MMDFMessage` instance is created based upon an :class:`MHMessage` instance, the following conversions take place: +-------------------+--------------------------+ @@ -1448,7 +1465,7 @@ When an :class:`MMDFMessage` instance is created based upon an | A flag | "replied" sequence | +-------------------+--------------------------+ -When an :class:`MMDFMessage` instance is created based upon a +When an :class:`!MMDFMessage` instance is created based upon a :class:`BabylMessage` instance, the following conversions take place: +-------------------+-----------------------------+ @@ -1463,7 +1480,7 @@ When an :class:`MMDFMessage` instance is created based upon a | A flag | "answered" label | +-------------------+-----------------------------+ -When an :class:`MMDFMessage` instance is created based upon an +When an :class:`!MMDFMessage` instance is created based upon an :class:`mboxMessage` instance, the "From " line is copied and all flags directly correspond: @@ -1485,7 +1502,7 @@ correspond: Exceptions ---------- -The following exception classes are defined in the :mod:`mailbox` module: +The following exception classes are defined in the :mod:`!mailbox` module: .. exception:: Error() diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index 4ca7a64451d..9572468ddf8 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -62,8 +62,8 @@ To map anonymous memory, -1 should be passed as the fileno along with the length the same file. If you specify the name of an existing tag, that tag is opened, otherwise a new tag of this name is created. If this parameter is omitted or ``None``, the mapping is created without a name. Avoiding the - use of the tag parameter will assist in keeping your code portable between - Unix and Windows. + use of the *tagname* parameter will assist in keeping your code portable + between Unix and Windows. *offset* may be specified as a non-negative integer offset. mmap references will be relative to the offset from the beginning of the file. *offset* diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 01a24172e5d..ac49e7054ef 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -56,7 +56,7 @@ will print to standard output :: The :class:`Process` class -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^ In :mod:`multiprocessing`, processes are spawned by creating a :class:`Process` object and then calling its :meth:`~Process.start` method. :class:`Process` @@ -102,7 +102,7 @@ necessary, see :ref:`multiprocessing-programming`. .. _multiprocessing-start-methods: Contexts and start methods -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^ Depending on the platform, :mod:`multiprocessing` supports three ways to start a process. These *start methods* are @@ -231,7 +231,7 @@ library user. Exchanging objects between processes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :mod:`multiprocessing` supports two types of communication channel between processes: @@ -283,7 +283,7 @@ processes: Synchronization between processes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :mod:`multiprocessing` contains equivalents of all the synchronization primitives from :mod:`threading`. For instance one can use a lock to ensure @@ -309,7 +309,7 @@ mixed up. Sharing state between processes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ As mentioned above, when doing concurrent programming it is usually best to avoid using shared state as far as possible. This is particularly true when @@ -399,7 +399,7 @@ However, if you really do need to use some shared data then Using a pool of workers -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ The :class:`~multiprocessing.pool.Pool` class represents a pool of worker processes. It has methods which allows tasks to be offloaded to the worker @@ -490,7 +490,7 @@ The :mod:`multiprocessing` package mostly replicates the API of the :class:`Process` and exceptions -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. class:: Process(group=None, target=None, name=None, args=(), kwargs={}, \ *, daemon=None) @@ -724,7 +724,7 @@ The :mod:`multiprocessing` package mostly replicates the API of the Raised by methods with a timeout when the timeout expires. Pipes and Queues -~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ When using multiple processes, one generally uses message passing for communication between processes and avoids having to use any synchronization @@ -981,7 +981,7 @@ For an example of the usage of queues for interprocess communication see Miscellaneous -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ .. function:: active_children() @@ -1143,7 +1143,7 @@ Miscellaneous Connection Objects -~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ .. currentmodule:: multiprocessing.connection @@ -1285,7 +1285,7 @@ For example: Synchronization primitives -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^ .. currentmodule:: multiprocessing @@ -1474,7 +1474,7 @@ object -- see :ref:`multiprocessing-managers`. Shared :mod:`ctypes` Objects -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It is possible to create shared objects using shared memory which can be inherited by child processes. @@ -1536,7 +1536,7 @@ inherited by child processes. The :mod:`multiprocessing.sharedctypes` module ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +"""""""""""""""""""""""""""""""""""""""""""""" .. module:: multiprocessing.sharedctypes :synopsis: Allocate ctypes objects from shared memory. @@ -1702,7 +1702,7 @@ The results printed are :: .. _multiprocessing-managers: Managers -~~~~~~~~ +^^^^^^^^ Managers provide a way to create data which can be shared between different processes, including sharing over a network between processes running on @@ -1947,7 +1947,7 @@ their parent process exits. The manager classes are defined in the Customized managers ->>>>>>>>>>>>>>>>>>> +""""""""""""""""""" To create one's own manager, one creates a subclass of :class:`BaseManager` and uses the :meth:`~BaseManager.register` classmethod to register new types or @@ -1974,7 +1974,7 @@ callables with the manager class. For example:: Using a remote manager ->>>>>>>>>>>>>>>>>>>>>> +"""""""""""""""""""""" It is possible to run a manager server on one machine and have clients use it from other machines (assuming that the firewalls involved allow it). @@ -2037,7 +2037,7 @@ client to access it remotely:: .. _multiprocessing-proxy_objects: Proxy Objects -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ A proxy is an object which *refers* to a shared object which lives (presumably) in a different process. The shared object is said to be the *referent* of the @@ -2189,7 +2189,7 @@ demonstrates a level of control over the synchronization. Cleanup ->>>>>>> +""""""" A proxy object uses a weakref callback so that when it gets garbage collected it deregisters itself from the manager which owns its referent. @@ -2199,7 +2199,7 @@ any proxies referring to it. Process Pools -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ .. module:: multiprocessing.pool :synopsis: Create pools of processes. @@ -2431,7 +2431,7 @@ The following example demonstrates the use of a pool:: .. _multiprocessing-listeners-clients: Listeners and Clients -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ .. module:: multiprocessing.connection :synopsis: API for dealing with sockets. @@ -2655,7 +2655,7 @@ wait for messages from multiple processes at once:: .. _multiprocessing-address-formats: Address Formats ->>>>>>>>>>>>>>> +""""""""""""""" * An ``'AF_INET'`` address is a tuple of the form ``(hostname, port)`` where *hostname* is a string and *port* is an integer. @@ -2675,7 +2675,7 @@ an ``'AF_PIPE'`` address rather than an ``'AF_UNIX'`` address. .. _multiprocessing-auth-keys: Authentication keys -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ When one uses :meth:`Connection.recv <Connection.recv>`, the data received is automatically @@ -2701,7 +2701,7 @@ Suitable authentication keys can also be generated by using :func:`os.urandom`. Logging -~~~~~~~ +^^^^^^^ Some support for logging is available. Note, however, that the :mod:`logging` package does not use process shared locks so it is possible (depending on the @@ -2749,7 +2749,7 @@ For a full table of logging levels, see the :mod:`logging` module. The :mod:`multiprocessing.dummy` module -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. module:: multiprocessing.dummy :synopsis: Dumb wrapper around threading. @@ -2808,7 +2808,7 @@ There are certain guidelines and idioms which should be adhered to when using All start methods -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ The following applies to all start methods. @@ -2967,7 +2967,7 @@ Beware of replacing :data:`sys.stdin` with a "file like object" For more information, see :issue:`5155`, :issue:`5313` and :issue:`5331` The *spawn* and *forkserver* start methods -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There are a few extra restriction which don't apply to the *fork* start method. diff --git a/Doc/library/multiprocessing.shared_memory.rst b/Doc/library/multiprocessing.shared_memory.rst index f453e6403d9..03b2fcc7c2a 100644 --- a/Doc/library/multiprocessing.shared_memory.rst +++ b/Doc/library/multiprocessing.shared_memory.rst @@ -20,10 +20,10 @@ and management of shared memory to be accessed by one or more processes on a multicore or symmetric multiprocessor (SMP) machine. To assist with the life-cycle management of shared memory especially across distinct processes, a :class:`~multiprocessing.managers.BaseManager` subclass, -:class:`SharedMemoryManager`, is also provided in the -``multiprocessing.managers`` module. +:class:`~multiprocessing.managers.SharedMemoryManager`, is also provided in the +:mod:`multiprocessing.managers` module. -In this module, shared memory refers to "System V style" shared memory blocks +In this module, shared memory refers to "POSIX style" shared memory blocks (though is not necessarily implemented explicitly as such) and does not refer to "distributed shared memory". This style of shared memory permits distinct processes to potentially read and write to a common (or shared) region of @@ -38,7 +38,8 @@ copying of data. .. class:: SharedMemory(name=None, create=False, size=0) - Creates a new shared memory block or attaches to an existing shared + Create an instance of the :class:`!SharedMemory` class for either + creating a new shared memory block or attaching to an existing shared memory block. Each shared memory block is assigned a unique name. In this way, one process can create a shared memory block with a particular name and a different process can attach to that same shared @@ -47,43 +48,48 @@ copying of data. As a resource for sharing data across processes, shared memory blocks may outlive the original process that created them. When one process no longer needs access to a shared memory block that might still be - needed by other processes, the :meth:`close()` method should be called. + needed by other processes, the :meth:`close` method should be called. When a shared memory block is no longer needed by any process, the - :meth:`unlink()` method should be called to ensure proper cleanup. - - *name* is the unique name for the requested shared memory, specified as - a string. When creating a new shared memory block, if ``None`` (the - default) is supplied for the name, a novel name will be generated. - - *create* controls whether a new shared memory block is created (``True``) - or an existing shared memory block is attached (``False``). - - *size* specifies the requested number of bytes when creating a new shared - memory block. Because some platforms choose to allocate chunks of memory - based upon that platform's memory page size, the exact size of the shared - memory block may be larger or equal to the size requested. When attaching - to an existing shared memory block, the ``size`` parameter is ignored. + :meth:`unlink` method should be called to ensure proper cleanup. + + :param name: + The unique name for the requested shared memory, specified as a string. + When creating a new shared memory block, if ``None`` (the default) + is supplied for the name, a novel name will be generated. + :type name: str | None + + :param bool create: + Control whether a new shared memory block is created (``True``) + or an existing shared memory block is attached (``False``). + + :param int size: + The requested number of bytes when creating a new shared memory block. + Because some platforms choose to allocate chunks of memory + based upon that platform's memory page size, the exact size of the shared + memory block may be larger or equal to the size requested. + When attaching to an existing shared memory block, + the *size* parameter is ignored. .. method:: close() - Closes access to the shared memory from this instance. In order to + Close access to the shared memory from this instance. In order to ensure proper cleanup of resources, all instances should call - ``close()`` once the instance is no longer needed. Note that calling - ``close()`` does not cause the shared memory block itself to be + :meth:`close` once the instance is no longer needed. Note that calling + :meth:`!close` does not cause the shared memory block itself to be destroyed. .. method:: unlink() - Requests that the underlying shared memory block be destroyed. In - order to ensure proper cleanup of resources, ``unlink()`` should be + Request that the underlying shared memory block be destroyed. In + order to ensure proper cleanup of resources, :meth:`unlink` should be called once (and only once) across all processes which have need for the shared memory block. After requesting its destruction, a shared memory block may or may not be immediately destroyed and this behavior may differ across platforms. Attempts to access data - inside the shared memory block after ``unlink()`` has been called may + inside the shared memory block after :meth:`!unlink` has been called may result in memory access errors. Note: the last process relinquishing - its hold on a shared memory block may call ``unlink()`` and - :meth:`close()` in either order. + its hold on a shared memory block may call :meth:`!unlink` and + :meth:`close` in either order. .. attribute:: buf @@ -126,7 +132,7 @@ instances:: The following example demonstrates a practical use of the :class:`SharedMemory` class with `NumPy arrays <https://numpy.org/>`_, accessing the -same ``numpy.ndarray`` from two distinct Python shells: +same :class:`!numpy.ndarray` from two distinct Python shells: .. doctest:: :options: +SKIP @@ -178,43 +184,43 @@ same ``numpy.ndarray`` from two distinct Python shells: .. class:: SharedMemoryManager([address[, authkey]]) :module: multiprocessing.managers - A subclass of :class:`~multiprocessing.managers.BaseManager` which can be + A subclass of :class:`multiprocessing.managers.BaseManager` which can be used for the management of shared memory blocks across processes. A call to :meth:`~multiprocessing.managers.BaseManager.start` on a - :class:`SharedMemoryManager` instance causes a new process to be started. + :class:`!SharedMemoryManager` instance causes a new process to be started. This new process's sole purpose is to manage the life cycle of all shared memory blocks created through it. To trigger the release of all shared memory blocks managed by that process, call - :meth:`~multiprocessing.managers.BaseManager.shutdown()` on the instance. - This triggers a :meth:`SharedMemory.unlink()` call on all of the - :class:`SharedMemory` objects managed by that process and then - stops the process itself. By creating ``SharedMemory`` instances - through a ``SharedMemoryManager``, we avoid the need to manually track + :meth:`~multiprocessing.managers.BaseManager.shutdown` on the instance. + This triggers a :meth:`~multiprocessing.shared_memory.SharedMemory.unlink` call + on all of the :class:`SharedMemory` objects managed by that process and then + stops the process itself. By creating :class:`!SharedMemory` instances + through a :class:`!SharedMemoryManager`, we avoid the need to manually track and trigger the freeing of shared memory resources. This class provides methods for creating and returning :class:`SharedMemory` instances and for creating a list-like object (:class:`ShareableList`) backed by shared memory. - Refer to :class:`multiprocessing.managers.BaseManager` for a description + Refer to :class:`~multiprocessing.managers.BaseManager` for a description of the inherited *address* and *authkey* optional input arguments and how - they may be used to connect to an existing ``SharedMemoryManager`` service + they may be used to connect to an existing :class:`!SharedMemoryManager` service from other processes. .. method:: SharedMemory(size) Create and return a new :class:`SharedMemory` object with the - specified ``size`` in bytes. + specified *size* in bytes. .. method:: ShareableList(sequence) Create and return a new :class:`ShareableList` object, initialized - by the values from the input ``sequence``. + by the values from the input *sequence*. The following example demonstrates the basic mechanisms of a -:class:`SharedMemoryManager`: +:class:`~multiprocessing.managers.SharedMemoryManager`: .. doctest:: :options: +SKIP @@ -232,9 +238,9 @@ The following example demonstrates the basic mechanisms of a >>> smm.shutdown() # Calls unlink() on sl, raw_shm, and another_sl The following example depicts a potentially more convenient pattern for using -:class:`SharedMemoryManager` objects via the :keyword:`with` statement to -ensure that all shared memory blocks are released after they are no longer -needed: +:class:`~multiprocessing.managers.SharedMemoryManager` objects via the +:keyword:`with` statement to ensure that all shared memory blocks are released +after they are no longer needed: .. doctest:: :options: +SKIP @@ -250,38 +256,46 @@ needed: ... p2.join() # Wait for all work to complete in both processes ... total_result = sum(sl) # Consolidate the partial results now in sl -When using a :class:`SharedMemoryManager` in a :keyword:`with` statement, the -shared memory blocks created using that manager are all released when the -:keyword:`with` statement's code block finishes execution. +When using a :class:`~multiprocessing.managers.SharedMemoryManager` +in a :keyword:`with` statement, the shared memory blocks created using that +manager are all released when the :keyword:`!with` statement's code block +finishes execution. + + +.. class:: ShareableList(sequence=None, *, name=None) + Provide a mutable list-like object where all values stored within are + stored in a shared memory block. + This constrains storable values to the following built-in data types: -.. class:: ShareableList(sequence=None, \*, name=None) + * :class:`int` (signed 64-bit) + * :class:`float` + * :class:`bool` + * :class:`str` (less than 10M bytes each when encoded as UTF-8) + * :class:`bytes` (less than 10M bytes each) + * ``None`` - Provides a mutable list-like object where all values stored within are - stored in a shared memory block. This constrains storable values to - only the ``int`` (signed 64-bit), ``float``, ``bool``, ``str`` (less - than 10M bytes each when encoded as utf-8), ``bytes`` (less than 10M - bytes each), and ``None`` built-in data types. It also notably - differs from the built-in ``list`` type in that these lists can not - change their overall length (i.e. no append, insert, etc.) and do not - support the dynamic creation of new :class:`ShareableList` instances + It also notably differs from the built-in :class:`list` type + in that these lists can not change their overall length + (i.e. no :meth:`!append`, :meth:`!insert`, etc.) and do not + support the dynamic creation of new :class:`!ShareableList` instances via slicing. - *sequence* is used in populating a new ``ShareableList`` full of values. + *sequence* is used in populating a new :class:`!ShareableList` full of values. Set to ``None`` to instead attach to an already existing - ``ShareableList`` by its unique shared memory name. + :class:`!ShareableList` by its unique shared memory name. *name* is the unique name for the requested shared memory, as described in the definition for :class:`SharedMemory`. When attaching to an - existing ``ShareableList``, specify its shared memory block's unique - name while leaving ``sequence`` set to ``None``. + existing :class:`!ShareableList`, specify its shared memory block's unique + name while leaving *sequence* set to ``None``. .. note:: A known issue exists for :class:`bytes` and :class:`str` values. If they end with ``\x00`` nul bytes or characters, those may be *silently stripped* when fetching them by index from the - :class:`ShareableList`. This ``.rstrip(b'\x00')`` behavior is + :class:`!ShareableList`. This ``.rstrip(b'\x00')`` behavior is considered a bug and may go away in the future. See :gh:`106939`. For applications where rstripping of trailing nulls is a problem, @@ -307,12 +321,12 @@ shared memory blocks created using that manager are all released when the .. method:: count(value) - Returns the number of occurrences of ``value``. + Return the number of occurrences of *value*. .. method:: index(value) - Returns first index position of ``value``. Raises :exc:`ValueError` if - ``value`` is not present. + Return first index position of *value*. + Raise :exc:`ValueError` if *value* is not present. .. attribute:: format @@ -372,8 +386,8 @@ behind it: >>> c.shm.close() >>> c.shm.unlink() -The following examples demonstrates that ``ShareableList`` -(and underlying ``SharedMemory``) objects +The following examples demonstrates that :class:`ShareableList` +(and underlying :class:`SharedMemory`) objects can be pickled and unpickled if needed. Note, that it will still be the same shared object. This happens, because the deserialized object has diff --git a/Doc/library/numbers.rst b/Doc/library/numbers.rst index 2a05b56db05..17d1a275f04 100644 --- a/Doc/library/numbers.rst +++ b/Doc/library/numbers.rst @@ -8,7 +8,7 @@ -------------- -The :mod:`numbers` module (:pep:`3141`) defines a hierarchy of numeric +The :mod:`!numbers` module (:pep:`3141`) defines a hierarchy of numeric :term:`abstract base classes <abstract base class>` which progressively define more operations. None of the types defined in this module are intended to be instantiated. @@ -45,7 +45,7 @@ The numeric tower .. class:: Real - To :class:`Complex`, :class:`Real` adds the operations that work on real + To :class:`Complex`, :class:`!Real` adds the operations that work on real numbers. In short, those are: a conversion to :class:`float`, :func:`math.trunc`, @@ -126,7 +126,8 @@ We want to implement the arithmetic operations so that mixed-mode operations either call an implementation whose author knew about the types of both arguments, or convert both to the nearest built in type and do the operation there. For subtypes of :class:`Integral`, this -means that :meth:`__add__` and :meth:`__radd__` should be defined as:: +means that :meth:`~object.__add__` and :meth:`~object.__radd__` should be +defined as:: class MyIntegral(Integral): @@ -160,15 +161,15 @@ refer to ``MyIntegral`` and ``OtherTypeIKnowAbout`` as of :class:`Complex` (``a : A <: Complex``), and ``b : B <: Complex``. I'll consider ``a + b``: -1. If ``A`` defines an :meth:`__add__` which accepts ``b``, all is +1. If ``A`` defines an :meth:`~object.__add__` which accepts ``b``, all is well. 2. If ``A`` falls back to the boilerplate code, and it were to - return a value from :meth:`__add__`, we'd miss the possibility - that ``B`` defines a more intelligent :meth:`__radd__`, so the + return a value from :meth:`~object.__add__`, we'd miss the possibility + that ``B`` defines a more intelligent :meth:`~object.__radd__`, so the boilerplate should return :const:`NotImplemented` from - :meth:`__add__`. (Or ``A`` may not implement :meth:`__add__` at + :meth:`!__add__`. (Or ``A`` may not implement :meth:`!__add__` at all.) -3. Then ``B``'s :meth:`__radd__` gets a chance. If it accepts +3. Then ``B``'s :meth:`~object.__radd__` gets a chance. If it accepts ``a``, all is well. 4. If it falls back to the boilerplate, there are no more possible methods to try, so this is where the default implementation @@ -180,7 +181,7 @@ Complex``. I'll consider ``a + b``: If ``A <: Complex`` and ``B <: Real`` without sharing any other knowledge, then the appropriate shared operation is the one involving the built -in :class:`complex`, and both :meth:`__radd__` s land there, so ``a+b +in :class:`complex`, and both :meth:`~object.__radd__` s land there, so ``a+b == b+a``. Because most of the operations on any given type will be very similar, diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 0c36c244ab5..c3e7e1f66d9 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1251,8 +1251,8 @@ as internal buffering of data. :meth:`~file.read` and :meth:`~file.write` methods (and many more). To wrap a file descriptor in a file object, use :func:`fdopen`. - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.5 If the system call is interrupted and the signal handler does not raise an @@ -1988,7 +1988,7 @@ features: .. audit-event:: os.chdir path os.chdir - .. versionadded:: 3.3 + .. versionchanged:: 3.3 Added support for specifying *path* as a file descriptor on some platforms. @@ -2020,8 +2020,8 @@ features: .. availability:: Unix, not Emscripten, not WASI. - .. versionadded:: 3.3 - The *follow_symlinks* argument. + .. versionchanged:: 3.3 + Added the *follow_symlinks* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2160,9 +2160,12 @@ features: for possible values of *mode*. As of Python 3.3, this is equivalent to ``os.chmod(path, mode, follow_symlinks=False)``. + ``lchmod()`` is not part of POSIX, but Unix implementations may have it if + changing the mode of symbolic links is supported. + .. audit-event:: os.chmod path,mode,dir_fd os.lchmod - .. availability:: Unix. + .. availability:: Unix, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not OpenBSD .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2196,8 +2199,8 @@ features: .. versionchanged:: 3.2 Added Windows support. - .. versionadded:: 3.3 - Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* arguments. + .. versionchanged:: 3.3 + Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* parameters. .. versionchanged:: 3.6 Accepts a :term:`path-like object` for *src* and *dst*. @@ -2361,8 +2364,8 @@ features: .. audit-event:: os.mkdir path,mode,dir_fd os.mkdir - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2395,8 +2398,8 @@ features: .. audit-event:: os.mkdir path,mode,dir_fd os.makedirs - .. versionadded:: 3.2 - The *exist_ok* parameter. + .. versionchanged:: 3.2 + Added the *exist_ok* parameter. .. versionchanged:: 3.4.1 @@ -2429,8 +2432,8 @@ features: .. availability:: Unix, not Emscripten, not WASI. - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2451,8 +2454,8 @@ features: .. availability:: Unix, not Emscripten, not WASI. - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2532,8 +2535,8 @@ features: .. versionchanged:: 3.2 Added support for Windows 6.0 (Vista) symbolic links. - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object` on Unix. @@ -2563,8 +2566,8 @@ features: .. audit-event:: os.remove path,dir_fd os.remove - .. versionadded:: 3.3 - The *dir_fd* argument. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2614,8 +2617,8 @@ features: .. audit-event:: os.rename src,dst,src_dir_fd,dst_dir_fd os.rename - .. versionadded:: 3.3 - The *src_dir_fd* and *dst_dir_fd* arguments. + .. versionchanged:: 3.3 + Added the *src_dir_fd* and *dst_dir_fd* parameters. .. versionchanged:: 3.6 Accepts a :term:`path-like object` for *src* and *dst*. @@ -2670,8 +2673,8 @@ features: .. audit-event:: os.rmdir path,dir_fd os.rmdir - .. versionadded:: 3.3 - The *dir_fd* parameter. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -2745,7 +2748,7 @@ features: .. versionadded:: 3.5 - .. versionadded:: 3.6 + .. versionchanged:: 3.6 Added support for the :term:`context manager` protocol and the :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted @@ -2959,9 +2962,9 @@ features: :func:`fstat` and :func:`lstat` functions. - .. versionadded:: 3.3 - Added the *dir_fd* and *follow_symlinks* arguments, specifying a file - descriptor instead of a path. + .. versionchanged:: 3.3 + Added the *dir_fd* and *follow_symlinks* parameters, + specifying a file descriptor instead of a path. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -3042,16 +3045,22 @@ features: Time of most recent access expressed in nanoseconds as an integer. + .. versionadded: 3.3 + .. attribute:: st_mtime_ns Time of most recent content modification expressed in nanoseconds as an integer. + .. versionadded: 3.3 + .. attribute:: st_ctime_ns Time of most recent metadata change expressed in nanoseconds as an integer. + .. versionadded: 3.3 + .. versionchanged:: 3.12 ``st_ctime_ns`` is deprecated on Windows. Use ``st_birthtime_ns`` for the file creation time. In the future, ``st_ctime`` will contain @@ -3152,6 +3161,8 @@ features: See the :const:`!FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>` constants in the :mod:`stat` module. + .. versionadded:: 3.5 + .. attribute:: st_reparse_tag When :attr:`st_file_attributes` has the :const:`~stat.FILE_ATTRIBUTE_REPARSE_POINT` @@ -3172,13 +3183,6 @@ features: some implementations. For compatibility with older Python versions, accessing :class:`stat_result` as a tuple always returns integers. - .. versionadded:: 3.3 - Added the :attr:`st_atime_ns`, :attr:`st_mtime_ns`, and - :attr:`st_ctime_ns` members. - - .. versionadded:: 3.5 - Added the :attr:`st_file_attributes` member on Windows. - .. versionchanged:: 3.5 Windows now returns the file index as :attr:`st_ino` when available. @@ -3243,7 +3247,7 @@ features: .. versionchanged:: 3.2 The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added. - .. versionadded:: 3.3 + .. versionchanged:: 3.3 Added support for specifying *path* as an open file descriptor. .. versionchanged:: 3.4 @@ -3255,8 +3259,8 @@ features: .. versionchanged:: 3.6 Accepts a :term:`path-like object`. - .. versionadded:: 3.7 - Added :attr:`f_fsid`. + .. versionchanged:: 3.7 + Added the :attr:`f_fsid` attribute. .. data:: supports_dir_fd @@ -3380,8 +3384,8 @@ features: .. versionchanged:: 3.2 Added support for Windows 6.0 (Vista) symbolic links. - .. versionadded:: 3.3 - Added the *dir_fd* argument, and now allow *target_is_directory* + .. versionchanged:: 3.3 + Added the *dir_fd* parameter, and now allow *target_is_directory* on non-Windows platforms. .. versionchanged:: 3.6 @@ -3429,8 +3433,8 @@ features: .. audit-event:: os.remove path,dir_fd os.unlink - .. versionadded:: 3.3 - The *dir_fd* parameter. + .. versionchanged:: 3.3 + Added the *dir_fd* parameter. .. versionchanged:: 3.6 Accepts a :term:`path-like object`. @@ -3468,7 +3472,7 @@ features: .. audit-event:: os.utime path,times,ns,dir_fd os.utime - .. versionadded:: 3.3 + .. versionchanged:: 3.3 Added support for specifying *path* as an open file descriptor, and the *dir_fd*, *follow_symlinks*, and *ns* parameters. @@ -3959,7 +3963,7 @@ to be ignored. The "l" and "v" variants of the :func:`exec\* <execl>` functions differ in how command-line arguments are passed. The "l" variants are perhaps the easiest to work with if the number of parameters is fixed when the code is written; the - individual parameters simply become additional parameters to the :func:`execl\*` + individual parameters simply become additional parameters to the :func:`!execl\*` functions. The "v" variants are good when the number of parameters is variable, with the arguments being passed in a list or tuple as the *args* parameter. In either case, the arguments to the child process should start with @@ -3992,7 +3996,7 @@ to be ignored. .. availability:: Unix, Windows, not Emscripten, not WASI. - .. versionadded:: 3.3 + .. versionchanged:: 3.3 Added support for specifying *path* as an open file descriptor for :func:`execve`. @@ -4162,6 +4166,11 @@ written in Python, such as a mail server's external command delivery program. If you use TLS sockets in an application calling ``fork()``, see the warning in the :mod:`ssl` documentation. + .. warning:: + + On macOS the use of this function is unsafe when mixed with using + higher-level system APIs, and that includes using :mod:`urllib.request`. + .. versionchanged:: 3.8 Calling ``fork()`` in a subinterpreter is no longer supported (:exc:`RuntimeError` is raised). @@ -4201,6 +4210,11 @@ written in Python, such as a mail server's external command delivery program. .. audit-event:: os.forkpty "" os.forkpty + .. warning:: + + On macOS the use of this function is unsafe when mixed with using + higher-level system APIs, and that includes using :mod:`urllib.request`. + .. versionchanged:: 3.12 If Python is able to detect that your process has multiple threads, this now raises a :exc:`DeprecationWarning`. See the @@ -4236,8 +4250,8 @@ written in Python, such as a mail server's external command delivery program. .. availability:: Unix, Windows, not Emscripten, not WASI. - .. versionadded:: 3.2 - Windows support. + .. versionchanged:: 3.2 + Added Windows support. .. function:: killpg(pgid, sig, /) @@ -4497,7 +4511,7 @@ written in Python, such as a mail server's external command delivery program. command-line arguments are passed. The "l" variants are perhaps the easiest to work with if the number of parameters is fixed when the code is written; the individual parameters simply become additional parameters to the - :func:`spawnl\*` functions. The "v" variants are good when the number of + :func:`!spawnl\*` functions. The "v" variants are good when the number of parameters is variable, with the arguments being passed in a list or tuple as the *args* parameter. In either case, the arguments to the child process must start with the name of the command being run. @@ -4547,7 +4561,7 @@ written in Python, such as a mail server's external command delivery program. P_NOWAITO Possible values for the *mode* parameter to the :func:`spawn\* <spawnl>` family of - functions. If either of these values is given, the :func:`spawn\*` functions + functions. If either of these values is given, the :func:`spawn\* <spawnl>` functions will return as soon as the new process has been created, with the process id as the return value. @@ -4557,7 +4571,7 @@ written in Python, such as a mail server's external command delivery program. .. data:: P_WAIT Possible value for the *mode* parameter to the :func:`spawn\* <spawnl>` family of - functions. If this is given as *mode*, the :func:`spawn\*` functions will not + functions. If this is given as *mode*, the :func:`spawn\* <spawnl>` functions will not return until the new process has run to completion and will return the exit code of the process the run is successful, or ``-signal`` if a signal kills the process. @@ -4736,6 +4750,9 @@ written in Python, such as a mail server's external command delivery program. .. availability:: Unix, not Emscripten, not WASI. + .. note:: + This function is not available on macOS. + .. versionadded:: 3.3 diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst index 2fb4dc42f46..d8395579937 100644 --- a/Doc/library/pathlib.rst +++ b/Doc/library/pathlib.rst @@ -509,6 +509,13 @@ Pure paths provide the following methods and properties: >>> p.is_relative_to('/usr') False + This method is string-based; it neither accesses the filesystem nor treats + "``..``" segments specially. The following code is equivalent: + + >>> u = PurePath('/usr') + >>> u == p or u in p.parents + False + .. versionadded:: 3.9 .. deprecated-removed:: 3.12 3.14 @@ -576,6 +583,9 @@ Pure paths provide the following methods and properties: >>> PurePath('a/b.py').match(pattern) True + .. versionchanged:: 3.12 + Accepts an object implementing the :class:`os.PathLike` interface. + As with other methods, case-sensitivity follows platform defaults:: >>> PurePosixPath('b.py').match('*.PY') @@ -913,6 +923,10 @@ call fails (for example because the path doesn't exist). PosixPath('setup.py'), PosixPath('test_pathlib.py')] + This method calls :meth:`Path.is_dir` on the top-level directory and + propagates any :exc:`OSError` exception that is raised. Subsequent + :exc:`OSError` exceptions from scanning directories are suppressed. + By default, or when the *case_sensitive* keyword-only argument is set to ``None``, this method matches paths using platform-specific casing rules: typically, case-sensitive on POSIX, and case-insensitive on Windows. @@ -1170,9 +1184,9 @@ call fails (for example because the path doesn't exist). If *exist_ok* is false (the default), :exc:`FileExistsError` is raised if the target directory already exists. - If *exist_ok* is true, :exc:`FileExistsError` exceptions will be - ignored (same behavior as the POSIX ``mkdir -p`` command), but only if the - last path component is not an existing non-directory file. + If *exist_ok* is true, :exc:`FileExistsError` will not be raised unless the given + path already exists in the file system and is not a directory (same + behavior as the POSIX ``mkdir -p`` command). .. versionchanged:: 3.5 The *exist_ok* parameter was added. @@ -1373,9 +1387,13 @@ call fails (for example because the path doesn't exist). .. method:: Path.symlink_to(target, target_is_directory=False) - Make this path a symbolic link to *target*. Under Windows, - *target_is_directory* must be true (default ``False``) if the link's target - is a directory. Under POSIX, *target_is_directory*'s value is ignored. + Make this path a symbolic link pointing to *target*. + + On Windows, a symlink represents either a file or a directory, and does not + morph to the target dynamically. If the target is present, the type of the + symlink will be created to match. Otherwise, the symlink will be created + as a directory if *target_is_directory* is ``True`` or a file symlink (the + default) otherwise. On non-Windows platforms, *target_is_directory* is ignored. :: diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst index ef52370bff8..785a8ab0c8a 100644 --- a/Doc/library/pdb.rst +++ b/Doc/library/pdb.rst @@ -48,7 +48,7 @@ at the location you want to break into the debugger, and then run the program. You can then step through the code following this statement, and continue running without the debugger using the :pdbcmd:`continue` command. -.. versionadded:: 3.7 +.. versionchanged:: 3.7 The built-in :func:`breakpoint()`, when called with defaults, can be used instead of ``import pdb; pdb.set_trace()``. @@ -86,12 +86,12 @@ after normal exit of the program), pdb will restart the program. Automatic restarting preserves pdb's state (such as breakpoints) and in most cases is more useful than quitting the debugger upon program's exit. -.. versionadded:: 3.2 - ``-c`` option is introduced to execute commands as if given - in a :file:`.pdbrc` file, see :ref:`debugger-commands`. +.. versionchanged:: 3.2 + Added the ``-c`` option to execute commands as if given + in a :file:`.pdbrc` file; see :ref:`debugger-commands`. -.. versionadded:: 3.7 - ``-m`` option is introduced to execute modules similar to the way +.. versionchanged:: 3.7 + Added the ``-m`` option to execute modules similar to the way ``python -m`` does. As with a script, the debugger will pause execution just before the first line of the module. @@ -209,12 +209,12 @@ access further features, you have to do this yourself: .. audit-event:: pdb.Pdb "" pdb.Pdb - .. versionadded:: 3.1 - The *skip* argument. + .. versionchanged:: 3.1 + Added the *skip* parameter. - .. versionadded:: 3.2 - The *nosigint* argument. Previously, a SIGINT handler was never set by - Pdb. + .. versionchanged:: 3.2 + Added the *nosigint* parameter. + Previously, a SIGINT handler was never set by Pdb. .. versionchanged:: 3.6 The *readrc* argument. @@ -463,8 +463,8 @@ can be overridden by the local file. raised or propagated is indicated by ``>>``, if it differs from the current line. - .. versionadded:: 3.2 - The ``>>`` marker. + .. versionchanged:: 3.2 + Added the ``>>`` marker. .. pdbcommand:: ll | longlist diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index d6be4ba33fa..c622469d5d0 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -272,13 +272,13 @@ The :mod:`pickle` module defines three exceptions: .. exception:: PickleError - Common base class for the other pickling exceptions. It inherits + Common base class for the other pickling exceptions. It inherits from :exc:`Exception`. .. exception:: PicklingError Error raised when an unpicklable object is encountered by :class:`Pickler`. - It inherits :exc:`PickleError`. + It inherits from :exc:`PickleError`. Refer to :ref:`pickle-picklable` to learn what kinds of objects can be pickled. @@ -286,7 +286,7 @@ The :mod:`pickle` module defines three exceptions: .. exception:: UnpicklingError Error raised when there is a problem unpickling an object, such as a data - corruption or a security violation. It inherits :exc:`PickleError`. + corruption or a security violation. It inherits from :exc:`PickleError`. Note that other exceptions may also be raised during unpickling, including (but not necessarily limited to) AttributeError, EOFError, ImportError, and @@ -352,7 +352,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`, :func:`copyreg.pickle`. It is a mapping whose keys are classes and whose values are reduction functions. A reduction function takes a single argument of the associated class and should - conform to the same interface as a :meth:`__reduce__` + conform to the same interface as a :meth:`~object.__reduce__` method. By default, a pickler object will not have a @@ -372,7 +372,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`, Special reducer that can be defined in :class:`Pickler` subclasses. This method has priority over any reducer in the :attr:`dispatch_table`. It - should conform to the same interface as a :meth:`__reduce__` method, and + should conform to the same interface as a :meth:`~object.__reduce__` method, and can optionally return ``NotImplemented`` to fallback on :attr:`dispatch_table`-registered reducers to pickle ``obj``. @@ -508,7 +508,7 @@ The following types can be pickled: * classes accessible from the top level of a module; -* instances of such classes whose the result of calling :meth:`__getstate__` +* instances of such classes whose the result of calling :meth:`~object.__getstate__` is picklable (see section :ref:`pickle-inst` for details). Attempts to pickle unpicklable objects will raise the :exc:`PicklingError` @@ -544,7 +544,7 @@ purpose, so you can fix bugs in a class or add methods to the class and still load objects that were created with an earlier version of the class. If you plan to have long-lived objects that will see many versions of a class, it may be worthwhile to put a version number in the objects so that suitable -conversions can be made by the class's :meth:`__setstate__` method. +conversions can be made by the class's :meth:`~object.__setstate__` method. .. _pickle-inst: @@ -559,7 +559,7 @@ customize, and control how class instances are pickled and unpickled. In most cases, no additional code is needed to make instances picklable. By default, pickle will retrieve the class and the attributes of an instance via -introspection. When a class instance is unpickled, its :meth:`__init__` method +introspection. When a class instance is unpickled, its :meth:`~object.__init__` method is usually *not* invoked. The default behaviour first creates an uninitialized instance and then restores the saved attributes. The following code shows an implementation of this behaviour:: @@ -650,30 +650,30 @@ methods: Refer to the section :ref:`pickle-state` for more information about how to use -the methods :meth:`__getstate__` and :meth:`__setstate__`. +the methods :meth:`~object.__getstate__` and :meth:`~object.__setstate__`. .. note:: - At unpickling time, some methods like :meth:`__getattr__`, - :meth:`__getattribute__`, or :meth:`__setattr__` may be called upon the + At unpickling time, some methods like :meth:`~object.__getattr__`, + :meth:`~object.__getattribute__`, or :meth:`~object.__setattr__` may be called upon the instance. In case those methods rely on some internal invariant being - true, the type should implement :meth:`__new__` to establish such an - invariant, as :meth:`__init__` is not called when unpickling an + true, the type should implement :meth:`~object.__new__` to establish such an + invariant, as :meth:`~object.__init__` is not called when unpickling an instance. .. index:: pair: copy; protocol As we shall see, pickle does not use directly the methods described above. In fact, these methods are part of the copy protocol which implements the -:meth:`__reduce__` special method. The copy protocol provides a unified +:meth:`~object.__reduce__` special method. The copy protocol provides a unified interface for retrieving the data necessary for pickling and copying objects. [#]_ -Although powerful, implementing :meth:`__reduce__` directly in your classes is +Although powerful, implementing :meth:`~object.__reduce__` directly in your classes is error prone. For this reason, class designers should use the high-level -interface (i.e., :meth:`__getnewargs_ex__`, :meth:`__getstate__` and -:meth:`__setstate__`) whenever possible. We will show, however, cases where -using :meth:`__reduce__` is the only option or leads to more efficient pickling +interface (i.e., :meth:`~object.__getnewargs_ex__`, :meth:`~object.__getstate__` and +:meth:`~object.__setstate__`) whenever possible. We will show, however, cases where +using :meth:`!__reduce__` is the only option or leads to more efficient pickling or both. .. method:: object.__reduce__() @@ -708,8 +708,9 @@ or both. These items will be appended to the object either using ``obj.append(item)`` or, in batch, using ``obj.extend(list_of_items)``. This is primarily used for list subclasses, but may be used by other - classes as long as they have :meth:`append` and :meth:`extend` methods with - the appropriate signature. (Whether :meth:`append` or :meth:`extend` is + classes as long as they have + :ref:`append and extend methods <typesseq-common>` with + the appropriate signature. (Whether :meth:`!append` or :meth:`!extend` is used depends on which pickle protocol version is used as well as the number of items to append, so both must be supported.) @@ -785,8 +786,8 @@ any other code which depends on pickling, then one can create a pickler with a private dispatch table. The global dispatch table managed by the :mod:`copyreg` module is -available as :data:`copyreg.dispatch_table`. Therefore, one may -choose to use a modified copy of :data:`copyreg.dispatch_table` as a +available as :data:`!copyreg.dispatch_table`. Therefore, one may +choose to use a modified copy of :data:`!copyreg.dispatch_table` as a private dispatch table. For example :: @@ -825,12 +826,12 @@ Handling Stateful Objects single: __setstate__() (copy protocol) Here's an example that shows how to modify pickling behavior for a class. -The :class:`TextReader` class opens a text file, and returns the line number and +The :class:`!TextReader` class below opens a text file, and returns the line number and line contents each time its :meth:`!readline` method is called. If a -:class:`TextReader` instance is pickled, all attributes *except* the file object +:class:`!TextReader` instance is pickled, all attributes *except* the file object member are saved. When the instance is unpickled, the file is reopened, and -reading resumes from the last location. The :meth:`__setstate__` and -:meth:`__getstate__` methods are used to implement this behavior. :: +reading resumes from the last location. The :meth:`!__setstate__` and +:meth:`!__getstate__` methods are used to implement this behavior. :: class TextReader: """Print and number lines in a text file.""" @@ -895,7 +896,7 @@ functions and classes. For those cases, it is possible to subclass from the :class:`Pickler` class and implement a :meth:`~Pickler.reducer_override` method. This method can return an -arbitrary reduction tuple (see :meth:`__reduce__`). It can alternatively return +arbitrary reduction tuple (see :meth:`~object.__reduce__`). It can alternatively return ``NotImplemented`` to fallback to the traditional behavior. If both the :attr:`~Pickler.dispatch_table` and @@ -963,7 +964,7 @@ provided by pickle protocol 5 and higher. Provider API ^^^^^^^^^^^^ -The large data objects to be pickled must implement a :meth:`__reduce_ex__` +The large data objects to be pickled must implement a :meth:`~object.__reduce_ex__` method specialized for protocol 5 and higher, which returns a :class:`PickleBuffer` instance (instead of e.g. a :class:`bytes` object) for any large data. diff --git a/Doc/library/pickletools.rst b/Doc/library/pickletools.rst index 41930f8cbe8..9739207a224 100644 --- a/Doc/library/pickletools.rst +++ b/Doc/library/pickletools.rst @@ -94,8 +94,8 @@ Programmatic Interface a short description. The value of *annotate* is used as a hint for the column where annotation should start. - .. versionadded:: 3.2 - The *annotate* argument. + .. versionchanged:: 3.2 + Added the *annotate* parameter. .. function:: genops(pickle) diff --git a/Doc/library/pty.rst b/Doc/library/pty.rst index af9378464ed..bd2f5ed45cb 100644 --- a/Doc/library/pty.rst +++ b/Doc/library/pty.rst @@ -33,6 +33,9 @@ The :mod:`pty` module defines the following functions: file descriptor connected to the child's controlling terminal (and also to the child's standard input and output). + .. warning:: On macOS the use of this function is unsafe when mixed with using + higher-level system APIs, and that includes using :mod:`urllib.request`. + .. function:: openpty() diff --git a/Doc/library/pyclbr.rst b/Doc/library/pyclbr.rst index 1c40ba4838c..1e9876849b0 100644 --- a/Doc/library/pyclbr.rst +++ b/Doc/library/pyclbr.rst @@ -58,106 +58,115 @@ of these classes. Function Objects ---------------- -Class :class:`Function` instances describe functions defined by def -statements. They have the following attributes: +.. class:: Function -.. attribute:: Function.file + Class :class:`!Function` instances describe functions defined by def + statements. They have the following attributes: - Name of the file in which the function is defined. + .. attribute:: file -.. attribute:: Function.module + Name of the file in which the function is defined. - The name of the module defining the function described. + .. attribute:: module -.. attribute:: Function.name + The name of the module defining the function described. - The name of the function. + .. attribute:: name -.. attribute:: Function.lineno + The name of the function. - The line number in the file where the definition starts. + .. attribute:: lineno -.. attribute:: Function.parent + The line number in the file where the definition starts. - For top-level functions, None. For nested functions, the parent. - .. versionadded:: 3.7 + .. attribute:: parent + For top-level functions, ``None``. For nested functions, the parent. -.. attribute:: Function.children + .. versionadded:: 3.7 - A dictionary mapping names to descriptors for nested functions and - classes. - .. versionadded:: 3.7 + .. attribute:: children + A :class:`dictionary <dict>` mapping names to descriptors for nested functions and + classes. -.. attribute:: Function.is_async + .. versionadded:: 3.7 - ``True`` for functions that are defined with the ``async`` prefix, ``False`` otherwise. - .. versionadded:: 3.10 + .. attribute:: is_async + + ``True`` for functions that are defined with the + :keyword:`async <async def>` prefix, ``False`` otherwise. + + .. versionadded:: 3.10 .. _pyclbr-class-objects: Class Objects ------------- -Class :class:`Class` instances describe classes defined by class -statements. They have the same attributes as Functions and two more. + +.. class:: Class + + Class :class:`!Class` instances describe classes defined by class + statements. They have the same attributes as :class:`Functions <Function>` + and two more. -.. attribute:: Class.file + .. attribute:: file - Name of the file in which the class is defined. + Name of the file in which the class is defined. -.. attribute:: Class.module + .. attribute:: module - The name of the module defining the class described. + The name of the module defining the class described. -.. attribute:: Class.name + .. attribute:: name - The name of the class. + The name of the class. -.. attribute:: Class.lineno + .. attribute:: lineno - The line number in the file where the definition starts. + The line number in the file where the definition starts. -.. attribute:: Class.parent + .. attribute:: parent - For top-level classes, None. For nested classes, the parent. + For top-level classes, None. For nested classes, the parent. - .. versionadded:: 3.7 + .. versionadded:: 3.7 -.. attribute:: Class.children + .. attribute:: children - A dictionary mapping names to descriptors for nested functions and - classes. + A dictionary mapping names to descriptors for nested functions and + classes. - .. versionadded:: 3.7 + .. versionadded:: 3.7 -.. attribute:: Class.super + .. attribute:: super - A list of :class:`Class` objects which describe the immediate base - classes of the class being described. Classes which are named as - superclasses but which are not discoverable by :func:`readmodule_ex` - are listed as a string with the class name instead of as - :class:`Class` objects. + A list of :class:`!Class` objects which describe the immediate base + classes of the class being described. Classes which are named as + superclasses but which are not discoverable by :func:`readmodule_ex` + are listed as a string with the class name instead of as + :class:`!Class` objects. -.. attribute:: Class.methods + .. attribute:: methods - A dictionary mapping method names to line numbers. This can be - derived from the newer children dictionary, but remains for - back-compatibility. + A :class:`dictionary <dict>` mapping method names to line numbers. + This can be derived from the newer :attr:`children` dictionary, + but remains for + back-compatibility. diff --git a/Doc/library/random.rst b/Doc/library/random.rst index 76ae97a8be7..d0ced2416c9 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -34,10 +34,8 @@ instance of the :class:`random.Random` class. You can instantiate your own instances of :class:`Random` to get generators that don't share state. Class :class:`Random` can also be subclassed if you want to use a different -basic generator of your own devising: in that case, override the :meth:`~Random.random`, -:meth:`~Random.seed`, :meth:`~Random.getstate`, and :meth:`~Random.setstate` methods. -Optionally, a new generator can supply a :meth:`~Random.getrandbits` method --- this -allows :meth:`randrange` to produce selections over an arbitrarily large range. +basic generator of your own devising: see the documentation on that class for +more details. The :mod:`random` module also provides the :class:`SystemRandom` class which uses the system function :func:`os.urandom` to generate random numbers @@ -88,7 +86,7 @@ Bookkeeping functions .. versionchanged:: 3.11 The *seed* must be one of the following types: - *NoneType*, :class:`int`, :class:`float`, :class:`str`, + ``None``, :class:`int`, :class:`float`, :class:`str`, :class:`bytes`, or :class:`bytearray`. .. function:: getstate() @@ -220,8 +218,8 @@ Functions for sequences generated. For example, a sequence of length 2080 is the largest that can fit within the period of the Mersenne Twister random number generator. - .. deprecated-removed:: 3.9 3.11 - The optional parameter *random*. + .. versionchanged:: 3.11 + Removed the optional parameter *random*. .. function:: sample(population, k, *, counts=None) @@ -407,11 +405,42 @@ Alternative Generator Class that implements the default pseudo-random number generator used by the :mod:`random` module. - .. deprecated-removed:: 3.9 3.11 + .. versionchanged:: 3.11 Formerly the *seed* could be any hashable object. Now it is limited to: - :class:`NoneType`, :class:`int`, :class:`float`, :class:`str`, + ``None``, :class:`int`, :class:`float`, :class:`str`, :class:`bytes`, or :class:`bytearray`. + Subclasses of :class:`!Random` should override the following methods if they + wish to make use of a different basic generator: + + .. method:: Random.seed(a=None, version=2) + + Override this method in subclasses to customise the :meth:`~random.seed` + behaviour of :class:`!Random` instances. + + .. method:: Random.getstate() + + Override this method in subclasses to customise the :meth:`~random.getstate` + behaviour of :class:`!Random` instances. + + .. method:: Random.setstate(state) + + Override this method in subclasses to customise the :meth:`~random.setstate` + behaviour of :class:`!Random` instances. + + .. method:: Random.random() + + Override this method in subclasses to customise the :meth:`~random.random` + behaviour of :class:`!Random` instances. + + Optionally, a custom generator subclass can also supply the following method: + + .. method:: Random.getrandbits(k) + + Override this method in subclasses to customise the + :meth:`~random.getrandbits` behaviour of :class:`!Random` instances. + + .. class:: SystemRandom([seed]) Class that uses the :func:`os.urandom` function for generating random numbers @@ -445,30 +474,30 @@ Examples Basic examples:: - >>> random() # Random float: 0.0 <= x < 1.0 + >>> random() # Random float: 0.0 <= x < 1.0 0.37444887175646646 - >>> uniform(2.5, 10.0) # Random float: 2.5 <= x <= 10.0 + >>> uniform(2.5, 10.0) # Random float: 2.5 <= x <= 10.0 3.1800146073117523 - >>> expovariate(1 / 5) # Interval between arrivals averaging 5 seconds + >>> expovariate(1 / 5) # Interval between arrivals averaging 5 seconds 5.148957571865031 - >>> randrange(10) # Integer from 0 to 9 inclusive + >>> randrange(10) # Integer from 0 to 9 inclusive 7 - >>> randrange(0, 101, 2) # Even integer from 0 to 100 inclusive + >>> randrange(0, 101, 2) # Even integer from 0 to 100 inclusive 26 - >>> choice(['win', 'lose', 'draw']) # Single random element from a sequence + >>> choice(['win', 'lose', 'draw']) # Single random element from a sequence 'draw' >>> deck = 'ace two three four'.split() - >>> shuffle(deck) # Shuffle a list + >>> shuffle(deck) # Shuffle a list >>> deck ['four', 'two', 'ace', 'three'] - >>> sample([10, 20, 30, 40, 50], k=4) # Four samples without replacement + >>> sample([10, 20, 30, 40, 50], k=4) # Four samples without replacement [40, 10, 50, 30] Simulations:: @@ -572,14 +601,14 @@ Simulation of arrival times and service deliveries for a multiserver queue:: including simulation, sampling, shuffling, and cross-validation. `Economics Simulation - <https://nbviewer.jupyter.org/url/norvig.com/ipython/Economics.ipynb>`_ + <https://nbviewer.org/url/norvig.com/ipython/Economics.ipynb>`_ a simulation of a marketplace by `Peter Norvig <https://norvig.com/bio.html>`_ that shows effective use of many of the tools and distributions provided by this module (gauss, uniform, sample, betavariate, choice, triangular, and randrange). `A Concrete Introduction to Probability (using Python) - <https://nbviewer.jupyter.org/url/norvig.com/ipython/Probability.ipynb>`_ + <https://nbviewer.org/url/norvig.com/ipython/Probability.ipynb>`_ a tutorial by `Peter Norvig <https://norvig.com/bio.html>`_ covering the basics of probability theory, how to write simulations, and how to perform data analysis using Python. diff --git a/Doc/library/re.rst b/Doc/library/re.rst index bb1c3132ba8..61aaf14adad 100644 --- a/Doc/library/re.rst +++ b/Doc/library/re.rst @@ -17,7 +17,7 @@ those found in Perl. Both patterns and strings to be searched can be Unicode strings (:class:`str`) as well as 8-bit strings (:class:`bytes`). However, Unicode strings and 8-bit strings cannot be mixed: -that is, you cannot match a Unicode string with a byte pattern or +that is, you cannot match a Unicode string with a bytes pattern or vice-versa; similarly, when asking for a substitution, the replacement string must be of the same type as both the pattern and the search string. @@ -257,8 +257,7 @@ The special characters are: .. index:: single: \ (backslash); in regular expressions * Character classes such as ``\w`` or ``\S`` (defined below) are also accepted - inside a set, although the characters they match depends on whether - :const:`ASCII` or :const:`LOCALE` mode is in force. + inside a set, although the characters they match depend on the flags_ used. .. index:: single: ^ (caret); in regular expressions @@ -326,18 +325,24 @@ The special characters are: currently supported extensions. ``(?aiLmsux)`` - (One or more letters from the set ``'a'``, ``'i'``, ``'L'``, ``'m'``, - ``'s'``, ``'u'``, ``'x'``.) The group matches the empty string; the - letters set the corresponding flags: :const:`re.A` (ASCII-only matching), - :const:`re.I` (ignore case), :const:`re.L` (locale dependent), - :const:`re.M` (multi-line), :const:`re.S` (dot matches all), - :const:`re.U` (Unicode matching), and :const:`re.X` (verbose), - for the entire regular expression. + (One or more letters from the set + ``'a'``, ``'i'``, ``'L'``, ``'m'``, ``'s'``, ``'u'``, ``'x'``.) + The group matches the empty string; + the letters set the corresponding flags for the entire regular expression: + + * :const:`re.A` (ASCII-only matching) + * :const:`re.I` (ignore case) + * :const:`re.L` (locale dependent) + * :const:`re.M` (multi-line) + * :const:`re.S` (dot matches all) + * :const:`re.U` (Unicode matching) + * :const:`re.X` (verbose) + (The flags are described in :ref:`contents-of-module-re`.) This is useful if you wish to include the flags as part of the regular expression, instead of passing a *flag* argument to the - :func:`re.compile` function. Flags should be used first in the - expression string. + :func:`re.compile` function. + Flags should be used first in the expression string. .. versionchanged:: 3.11 This construction can only be used at the start of the expression. @@ -351,14 +356,20 @@ The special characters are: pattern. ``(?aiLmsux-imsx:...)`` - (Zero or more letters from the set ``'a'``, ``'i'``, ``'L'``, ``'m'``, - ``'s'``, ``'u'``, ``'x'``, optionally followed by ``'-'`` followed by + (Zero or more letters from the set + ``'a'``, ``'i'``, ``'L'``, ``'m'``, ``'s'``, ``'u'``, ``'x'``, + optionally followed by ``'-'`` followed by one or more letters from the ``'i'``, ``'m'``, ``'s'``, ``'x'``.) - The letters set or remove the corresponding flags: - :const:`re.A` (ASCII-only matching), :const:`re.I` (ignore case), - :const:`re.L` (locale dependent), :const:`re.M` (multi-line), - :const:`re.S` (dot matches all), :const:`re.U` (Unicode matching), - and :const:`re.X` (verbose), for the part of the expression. + The letters set or remove the corresponding flags for the part of the expression: + + * :const:`re.A` (ASCII-only matching) + * :const:`re.I` (ignore case) + * :const:`re.L` (locale dependent) + * :const:`re.M` (multi-line) + * :const:`re.S` (dot matches all) + * :const:`re.U` (Unicode matching) + * :const:`re.X` (verbose) + (The flags are described in :ref:`contents-of-module-re`.) The letters ``'a'``, ``'L'`` and ``'u'`` are mutually exclusive when used @@ -366,7 +377,7 @@ The special characters are: when one of them appears in an inline group, it overrides the matching mode in the enclosing group. In Unicode patterns ``(?a:...)`` switches to ASCII-only matching, and ``(?u:...)`` switches to Unicode matching - (default). In byte pattern ``(?L:...)`` switches to locale depending + (default). In bytes patterns ``(?L:...)`` switches to locale dependent matching, and ``(?a:...)`` switches to ASCII-only matching (default). This override is only in effect for the narrow inline group, and the original matching mode is restored outside of the group. @@ -529,47 +540,61 @@ character ``'$'``. ``\b`` Matches the empty string, but only at the beginning or end of a word. - A word is defined as a sequence of word characters. Note that formally, - ``\b`` is defined as the boundary between a ``\w`` and a ``\W`` character - (or vice versa), or between ``\w`` and the beginning/end of the string. - This means that ``r'\bfoo\b'`` matches ``'foo'``, ``'foo.'``, ``'(foo)'``, - ``'bar foo baz'`` but not ``'foobar'`` or ``'foo3'``. - - By default Unicode alphanumerics are the ones used in Unicode patterns, but - this can be changed by using the :const:`ASCII` flag. Word boundaries are - determined by the current locale if the :const:`LOCALE` flag is used. - Inside a character range, ``\b`` represents the backspace character, for - compatibility with Python's string literals. + A word is defined as a sequence of word characters. + Note that formally, ``\b`` is defined as the boundary + between a ``\w`` and a ``\W`` character (or vice versa), + or between ``\w`` and the beginning or end of the string. + This means that ``r'\bat\b'`` matches ``'at'``, ``'at.'``, ``'(at)'``, + and ``'as at ay'`` but not ``'attempt'`` or ``'atlas'``. + + The default word characters in Unicode (str) patterns + are Unicode alphanumerics and the underscore, + but this can be changed by using the :py:const:`~re.ASCII` flag. + Word boundaries are determined by the current locale + if the :py:const:`~re.LOCALE` flag is used. + + .. note:: + + Inside a character range, ``\b`` represents the backspace character, + for compatibility with Python's string literals. .. index:: single: \B; in regular expressions ``\B`` - Matches the empty string, but only when it is *not* at the beginning or end - of a word. This means that ``r'py\B'`` matches ``'python'``, ``'py3'``, - ``'py2'``, but not ``'py'``, ``'py.'``, or ``'py!'``. - ``\B`` is just the opposite of ``\b``, so word characters in Unicode - patterns are Unicode alphanumerics or the underscore, although this can - be changed by using the :const:`ASCII` flag. Word boundaries are - determined by the current locale if the :const:`LOCALE` flag is used. + Matches the empty string, + but only when it is *not* at the beginning or end of a word. + This means that ``r'at\B'`` matches ``'athens'``, ``'atom'``, + ``'attorney'``, but not ``'at'``, ``'at.'``, or ``'at!'``. + ``\B`` is the opposite of ``\b``, + so word characters in Unicode (str) patterns + are Unicode alphanumerics or the underscore, + although this can be changed by using the :py:const:`~re.ASCII` flag. + Word boundaries are determined by the current locale + if the :py:const:`~re.LOCALE` flag is used. .. index:: single: \d; in regular expressions ``\d`` For Unicode (str) patterns: - Matches any Unicode decimal digit (that is, any character in - Unicode character category [Nd]). This includes ``[0-9]``, and - also many other digit characters. If the :const:`ASCII` flag is - used only ``[0-9]`` is matched. + Matches any Unicode decimal digit + (that is, any character in Unicode character category `[Nd]`__). + This includes ``[0-9]``, and also many other digit characters. + + Matches ``[0-9]`` if the :py:const:`~re.ASCII` flag is used. + + __ https://www.unicode.org/versions/Unicode15.0.0/ch04.pdf#G134153 For 8-bit (bytes) patterns: - Matches any decimal digit; this is equivalent to ``[0-9]``. + Matches any decimal digit in the ASCII character set; + this is equivalent to ``[0-9]``. .. index:: single: \D; in regular expressions ``\D`` - Matches any character which is not a decimal digit. This is - the opposite of ``\d``. If the :const:`ASCII` flag is used this - becomes the equivalent of ``[^0-9]``. + Matches any character which is not a decimal digit. + This is the opposite of ``\d``. + + Matches ``[^0-9]`` if the :py:const:`~re.ASCII` flag is used. .. index:: single: \s; in regular expressions @@ -578,8 +603,9 @@ character ``'$'``. Matches Unicode whitespace characters (which includes ``[ \t\n\r\f\v]``, and also many other characters, for example the non-breaking spaces mandated by typography rules in many - languages). If the :const:`ASCII` flag is used, only - ``[ \t\n\r\f\v]`` is matched. + languages). + + Matches ``[ \t\n\r\f\v]`` if the :py:const:`~re.ASCII` flag is used. For 8-bit (bytes) patterns: Matches characters considered whitespace in the ASCII character set; @@ -589,30 +615,39 @@ character ``'$'``. ``\S`` Matches any character which is not a whitespace character. This is - the opposite of ``\s``. If the :const:`ASCII` flag is used this - becomes the equivalent of ``[^ \t\n\r\f\v]``. + the opposite of ``\s``. + + Matches ``[^ \t\n\r\f\v]`` if the :py:const:`~re.ASCII` flag is used. .. index:: single: \w; in regular expressions ``\w`` For Unicode (str) patterns: - Matches Unicode word characters; this includes alphanumeric characters (as defined by :meth:`str.isalnum`) + Matches Unicode word characters; + this includes all Unicode alphanumeric characters + (as defined by :py:meth:`str.isalnum`), as well as the underscore (``_``). - If the :const:`ASCII` flag is used, only ``[a-zA-Z0-9_]`` is matched. + + Matches ``[a-zA-Z0-9_]`` if the :py:const:`~re.ASCII` flag is used. For 8-bit (bytes) patterns: Matches characters considered alphanumeric in the ASCII character set; - this is equivalent to ``[a-zA-Z0-9_]``. If the :const:`LOCALE` flag is - used, matches characters considered alphanumeric in the current locale - and the underscore. + this is equivalent to ``[a-zA-Z0-9_]``. + If the :py:const:`~re.LOCALE` flag is used, + matches characters considered alphanumeric in the current locale and the underscore. .. index:: single: \W; in regular expressions ``\W`` - Matches any character which is not a word character. This is - the opposite of ``\w``. If the :const:`ASCII` flag is used this - becomes the equivalent of ``[^a-zA-Z0-9_]``. If the :const:`LOCALE` flag is - used, matches characters which are neither alphanumeric in the current locale + Matches any character which is not a word character. + This is the opposite of ``\w``. + By default, matches non-underscore (``_``) characters + for which :py:meth:`str.isalnum` returns ``False``. + + Matches ``[^a-zA-Z0-9_]`` if the :py:const:`~re.ASCII` flag is used. + + If the :py:const:`~re.LOCALE` flag is used, + matches characters which are neither alphanumeric in the current locale nor the underscore. .. index:: single: \Z; in regular expressions @@ -644,9 +679,11 @@ string literals are also accepted by the regular expression parser:: (Note that ``\b`` is used to represent word boundaries, and means "backspace" only inside character classes.) -``'\u'``, ``'\U'``, and ``'\N'`` escape sequences are only recognized in Unicode -patterns. In bytes patterns they are errors. Unknown escapes of ASCII -letters are reserved for future use and treated as errors. +``'\u'``, ``'\U'``, and ``'\N'`` escape sequences are +only recognized in Unicode (str) patterns. +In bytes patterns they are errors. +Unknown escapes of ASCII letters are reserved +for future use and treated as errors. Octal escapes are included in a limited form. If the first digit is a 0, or if there are three octal digits, it is considered an octal escape. Otherwise, it is @@ -694,30 +731,37 @@ Flags Make ``\w``, ``\W``, ``\b``, ``\B``, ``\d``, ``\D``, ``\s`` and ``\S`` perform ASCII-only matching instead of full Unicode matching. This is only - meaningful for Unicode patterns, and is ignored for byte patterns. + meaningful for Unicode (str) patterns, and is ignored for bytes patterns. + Corresponds to the inline flag ``(?a)``. - Note that for backward compatibility, the :const:`re.U` flag still - exists (as well as its synonym :const:`re.UNICODE` and its embedded - counterpart ``(?u)``), but these are redundant in Python 3 since - matches are Unicode by default for strings (and Unicode matching - isn't allowed for bytes). + .. note:: + + The :py:const:`~re.U` flag still exists for backward compatibility, + but is redundant in Python 3 since + matches are Unicode by default for ``str`` patterns, + and Unicode matching isn't allowed for bytes patterns. + :py:const:`~re.UNICODE` and the inline flag ``(?u)`` are similarly redundant. .. data:: DEBUG Display debug information about compiled expression. + No corresponding inline flag. .. data:: I IGNORECASE - Perform case-insensitive matching; expressions like ``[A-Z]`` will also - match lowercase letters. Full Unicode matching (such as ``Ü`` matching - ``ü``) also works unless the :const:`re.ASCII` flag is used to disable - non-ASCII matches. The current locale does not change the effect of this - flag unless the :const:`re.LOCALE` flag is also used. + Perform case-insensitive matching; + expressions like ``[A-Z]`` will also match lowercase letters. + Full Unicode matching (such as ``Ü`` matching ``ü``) + also works unless the :py:const:`~re.ASCII` flag + is used to disable non-ASCII matches. + The current locale does not change the effect of this flag + unless the :py:const:`~re.LOCALE` flag is also used. + Corresponds to the inline flag ``(?i)``. Note that when the Unicode patterns ``[a-z]`` or ``[A-Z]`` are used in @@ -725,29 +769,35 @@ Flags letters and 4 additional non-ASCII letters: 'İ' (U+0130, Latin capital letter I with dot above), 'ı' (U+0131, Latin small letter dotless i), 'ſ' (U+017F, Latin small letter long s) and 'K' (U+212A, Kelvin sign). - If the :const:`ASCII` flag is used, only letters 'a' to 'z' + If the :py:const:`~re.ASCII` flag is used, only letters 'a' to 'z' and 'A' to 'Z' are matched. .. data:: L LOCALE Make ``\w``, ``\W``, ``\b``, ``\B`` and case-insensitive matching - dependent on the current locale. This flag can be used only with bytes - patterns. The use of this flag is discouraged as the locale mechanism - is very unreliable, it only handles one "culture" at a time, and it only - works with 8-bit locales. Unicode matching is already enabled by default - in Python 3 for Unicode (str) patterns, and it is able to handle different - locales/languages. + dependent on the current locale. + This flag can be used only with bytes patterns. + Corresponds to the inline flag ``(?L)``. + .. warning:: + + This flag is discouraged; consider Unicode matching instead. + The locale mechanism is very unreliable + as it only handles one "culture" at a time + and only works with 8-bit locales. + Unicode matching is enabled by default for Unicode (str) patterns + and it is able to handle different locales and languages. + .. versionchanged:: 3.6 - :const:`re.LOCALE` can be used only with bytes patterns and is - not compatible with :const:`re.ASCII`. + :py:const:`~re.LOCALE` can be used only with bytes patterns + and is not compatible with :py:const:`~re.ASCII`. .. versionchanged:: 3.7 - Compiled regular expression objects with the :const:`re.LOCALE` flag no - longer depend on the locale at compile time. Only the locale at - matching time affects the result of matching. + Compiled regular expression objects with the :py:const:`~re.LOCALE` flag + no longer depend on the locale at compile time. + Only the locale at matching time affects the result of matching. .. data:: M @@ -759,6 +809,7 @@ Flags end of each line (immediately preceding each newline). By default, ``'^'`` matches only at the beginning of the string, and ``'$'`` only at the end of the string and immediately before the newline (if any) at the end of the string. + Corresponds to the inline flag ``(?m)``. .. data:: NOFLAG @@ -778,19 +829,19 @@ Flags Make the ``'.'`` special character match any character at all, including a newline; without this flag, ``'.'`` will match anything *except* a newline. + Corresponds to the inline flag ``(?s)``. .. data:: U UNICODE - In Python 2, this flag made :ref:`special sequences <re-special-sequences>` - include Unicode characters in matches. Since Python 3, Unicode characters - are matched by default. - - See :const:`A` for restricting matching on ASCII characters instead. + In Python 3, Unicode characters are matched by default + for ``str`` patterns. + This flag is therefore redundant with **no effect** + and is only kept for backward compatibility. - This flag is only kept for backward compatibility. + See :py:const:`~re.ASCII` to restrict matching to ASCII characters instead. .. data:: X VERBOSE @@ -829,8 +880,8 @@ Functions below. The expression's behaviour can be modified by specifying a *flags* value. - Values can be any of the following variables, combined using bitwise OR (the - ``|`` operator). + Values can be any of the `flags`_ variables, combined using bitwise OR + (the ``|`` operator). The sequence :: @@ -914,6 +965,8 @@ Functions Empty matches for the pattern split the string only when not adjacent to a previous empty match. + .. code:: pycon + >>> re.split(r'\b', 'Words, words, words.') ['', 'Words', ', ', 'words', ', ', 'words', '.'] >>> re.split(r'\W*', '...words...') @@ -1231,7 +1284,7 @@ Regular Expression Objects The regex matching flags. This is a combination of the flags given to :func:`.compile`, any ``(?...)`` inline flags in the pattern, and implicit - flags such as :data:`UNICODE` if the pattern is a Unicode string. + flags such as :py:const:`~re.UNICODE` if the pattern is a Unicode string. .. attribute:: Pattern.groups diff --git a/Doc/library/readline.rst b/Doc/library/readline.rst index 8fb0eca8df7..3fb5ceef086 100644 --- a/Doc/library/readline.rst +++ b/Doc/library/readline.rst @@ -5,7 +5,7 @@ :platform: Unix :synopsis: GNU readline support for Python. -.. sectionauthor:: Skip Montanaro <skip@pobox.com> +.. sectionauthor:: Skip Montanaro <skip.montanaro@gmail.com> -------------- @@ -213,6 +213,8 @@ Startup hooks if Python was compiled for a version of the library that supports it. +.. _readline-completion: + Completion ---------- diff --git a/Doc/library/resource.rst b/Doc/library/resource.rst index ef65674d1b0..4e58b043f1d 100644 --- a/Doc/library/resource.rst +++ b/Doc/library/resource.rst @@ -277,7 +277,7 @@ These functions are used to retrieve resource usage information: This function returns an object that describes the resources consumed by either the current process or its children, as specified by the *who* parameter. The - *who* parameter should be specified using one of the :const:`RUSAGE_\*` + *who* parameter should be specified using one of the :const:`!RUSAGE_\*` constants described below. A simple example:: @@ -353,7 +353,7 @@ These functions are used to retrieve resource usage information: Returns the number of bytes in a system page. (This need not be the same as the hardware page size.) -The following :const:`RUSAGE_\*` symbols are passed to the :func:`getrusage` +The following :const:`!RUSAGE_\*` symbols are passed to the :func:`getrusage` function to specify which processes information should be provided for. diff --git a/Doc/library/rlcompleter.rst b/Doc/library/rlcompleter.rst index 40b09ce8978..8287699c5f0 100644 --- a/Doc/library/rlcompleter.rst +++ b/Doc/library/rlcompleter.rst @@ -10,12 +10,14 @@ -------------- -The :mod:`rlcompleter` module defines a completion function suitable for the -:mod:`readline` module by completing valid Python identifiers and keywords. +The :mod:`!rlcompleter` module defines a completion function suitable to be +passed to :func:`~readline.set_completer` in the :mod:`readline` module. When this module is imported on a Unix platform with the :mod:`readline` module available, an instance of the :class:`Completer` class is automatically created -and its :meth:`complete` method is set as the :mod:`readline` completer. +and its :meth:`~Completer.complete` method is set as the +:ref:`readline completer <readline-completion>`. The method provides +completion of valid Python :ref:`identifiers and keywords <identifiers>`. Example:: @@ -28,7 +30,7 @@ Example:: readline.__name__ readline.parse_and_bind( >>> readline. -The :mod:`rlcompleter` module is designed for use with Python's +The :mod:`!rlcompleter` module is designed for use with Python's :ref:`interactive mode <tut-interactive>`. Unless Python is run with the :option:`-S` option, the module is automatically imported and configured (see :ref:`rlcompleter-config`). @@ -39,23 +41,25 @@ this module can still be used for custom purposes. .. _completer-objects: -Completer Objects ------------------ +.. class:: Completer -Completer objects have the following method: + Completer objects have the following method: + .. method:: Completer.complete(text, state) -.. method:: Completer.complete(text, state) + Return the next possible completion for *text*. - Return the *state*\ th completion for *text*. + When called by the :mod:`readline` module, this method is called + successively with ``state == 0, 1, 2, ...`` until the method returns + ``None``. - If called for *text* that doesn't include a period character (``'.'``), it will - complete from names currently defined in :mod:`__main__`, :mod:`builtins` and - keywords (as defined by the :mod:`keyword` module). - - If called for a dotted name, it will try to evaluate anything without obvious - side-effects (functions will not be evaluated, but it can generate calls to - :meth:`__getattr__`) up to the last part, and find matches for the rest via the - :func:`dir` function. Any exception raised during the evaluation of the - expression is caught, silenced and :const:`None` is returned. + If called for *text* that doesn't include a period character (``'.'``), it will + complete from names currently defined in :mod:`__main__`, :mod:`builtins` and + keywords (as defined by the :mod:`keyword` module). + If called for a dotted name, it will try to evaluate anything without obvious + side-effects (functions will not be evaluated, but it can generate calls to + :meth:`~object.__getattr__`) up to the last part, and find matches for the + rest via the :func:`dir` function. Any exception raised during the + evaluation of the expression is caught, silenced and :const:`None` is + returned. diff --git a/Doc/library/select.rst b/Doc/library/select.rst index c2941e628d9..a0058046d0c 100644 --- a/Doc/library/select.rst +++ b/Doc/library/select.rst @@ -185,8 +185,8 @@ The module defines the following: ----------------------------- Solaris and derivatives have ``/dev/poll``. While :c:func:`!select` is -O(highest file descriptor) and :c:func:`!poll` is O(number of file -descriptors), ``/dev/poll`` is O(active file descriptors). +*O*\ (*highest file descriptor*) and :c:func:`!poll` is *O*\ (*number of file +descriptors*), ``/dev/poll`` is *O*\ (*active file descriptors*). ``/dev/poll`` behaviour is very close to the standard :c:func:`!poll` object. @@ -381,8 +381,8 @@ scalability for network servers that service many, many clients at the same time. :c:func:`!poll` scales better because the system call only requires listing the file descriptors of interest, while :c:func:`!select` builds a bitmap, turns on bits for the fds of interest, and then afterward the whole bitmap has to be -linearly scanned again. :c:func:`!select` is O(highest file descriptor), while -:c:func:`!poll` is O(number of file descriptors). +linearly scanned again. :c:func:`!select` is *O*\ (*highest file descriptor*), while +:c:func:`!poll` is *O*\ (*number of file descriptors*). .. method:: poll.register(fd[, eventmask]) diff --git a/Doc/library/shelve.rst b/Doc/library/shelve.rst index 219219af6fd..95c54991887 100644 --- a/Doc/library/shelve.rst +++ b/Doc/library/shelve.rst @@ -113,6 +113,9 @@ Restrictions differs across Unix versions and requires knowledge about the database implementation used. +* On macOS :mod:`dbm.ndbm` can silently corrupt the database file on updates, + which can cause hard crashes when trying to read from the database. + .. class:: Shelf(dict, protocol=None, writeback=False, keyencoding='utf-8') @@ -149,13 +152,14 @@ Restrictions .. class:: BsdDbShelf(dict, protocol=None, writeback=False, keyencoding='utf-8') - A subclass of :class:`Shelf` which exposes :meth:`first`, :meth:`!next`, - :meth:`previous`, :meth:`last` and :meth:`set_location` which are available - in the third-party :mod:`bsddb` module from `pybsddb + A subclass of :class:`Shelf` which exposes :meth:`!first`, :meth:`!next`, + :meth:`!previous`, :meth:`!last` and :meth:`!set_location` methods. + These are available + in the third-party :mod:`!bsddb` module from `pybsddb <https://www.jcea.es/programacion/pybsddb.htm>`_ but not in other database modules. The *dict* object passed to the constructor must support those methods. This is generally accomplished by calling one of - :func:`bsddb.hashopen`, :func:`bsddb.btopen` or :func:`bsddb.rnopen`. The + :func:`!bsddb.hashopen`, :func:`!bsddb.btopen` or :func:`!bsddb.rnopen`. The optional *protocol*, *writeback*, and *keyencoding* parameters have the same interpretation as for the :class:`Shelf` class. diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index d1949d698f5..3b98a196a8c 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -289,8 +289,8 @@ Directory and files operations copy the file more efficiently. See :ref:`shutil-platform-dependent-efficient-copy-operations` section. - .. versionadded:: 3.8 - The *dirs_exist_ok* parameter. + .. versionchanged:: 3.8 + Added the *dirs_exist_ok* parameter. .. function:: rmtree(path, ignore_errors=False, onerror=None, *, onexc=None, dir_fd=None) @@ -354,21 +354,24 @@ Directory and files operations .. function:: move(src, dst, copy_function=copy2) - Recursively move a file or directory (*src*) to another location (*dst*) - and return the destination. + Recursively move a file or directory (*src*) to another location and return + the destination. + + If *dst* is an existing directory or a symlink to a directory, then *src* + is moved inside that directory. The destination path in that directory must + not already exist. - If the destination is an existing directory, then *src* is moved inside that - directory. If the destination already exists but is not a directory, it may - be overwritten depending on :func:`os.rename` semantics. + If *dst* already exists but is not a directory, it may be overwritten + depending on :func:`os.rename` semantics. If the destination is on the current filesystem, then :func:`os.rename` is - used. Otherwise, *src* is copied to *dst* using *copy_function* and then - removed. In case of symlinks, a new symlink pointing to the target of *src* - will be created in or as *dst* and *src* will be removed. + used. Otherwise, *src* is copied to the destination using *copy_function* + and then removed. In case of symlinks, a new symlink pointing to the target + of *src* will be created as the destination and *src* will be removed. - If *copy_function* is given, it must be a callable that takes two arguments - *src* and *dst*, and will be used to copy *src* to *dst* if - :func:`os.rename` cannot be used. If the source is a directory, + If *copy_function* is given, it must be a callable that takes two arguments, + *src* and the destination, and will be used to copy *src* to the destination + if :func:`os.rename` cannot be used. If the source is a directory, :func:`copytree` is called, passing it the *copy_function*. The default *copy_function* is :func:`copy2`. Using :func:`~shutil.copy` as the *copy_function* allows the move to succeed when it is not possible to also @@ -580,7 +583,9 @@ provided. They rely on the :mod:`zipfile` and :mod:`tarfile` modules. Create an archive file (such as zip or tar) and return its name. *base_name* is the name of the file to create, including the path, minus - any format-specific extension. *format* is the archive format: one of + any format-specific extension. + + *format* is the archive format: one of "zip" (if the :mod:`zlib` module is available), "tar", "gztar" (if the :mod:`zlib` module is available), "bztar" (if the :mod:`bz2` module is available), or "xztar" (if the :mod:`lzma` module is available). diff --git a/Doc/library/signal.rst b/Doc/library/signal.rst index 7ee5ece8859..85a073aad23 100644 --- a/Doc/library/signal.rst +++ b/Doc/library/signal.rst @@ -157,6 +157,8 @@ The variables defined in the :mod:`signal` module are: Alias to :data:`SIGCHLD`. + .. availability:: not macOS. + .. data:: SIGCONT Continue the process if it is currently stopped diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index e0a75304ef1..4bfb0d8c2cf 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -311,7 +311,7 @@ Exceptions The accompanying value is a pair ``(error, string)`` representing an error returned by a library call. *string* represents the description of *error*, as returned by the :c:func:`gai_strerror` C function. The - numeric *error* value will match one of the :const:`EAI_\*` constants + numeric *error* value will match one of the :const:`!EAI_\*` constants defined in this module. .. versionchanged:: 3.3 @@ -1517,7 +1517,7 @@ to sockets. .. method:: socket.getsockopt(level, optname[, buflen]) Return the value of the given socket option (see the Unix man page - :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.) + :manpage:`getsockopt(2)`). The needed symbolic constants (:ref:`SO_\* etc. <socket-unix-constants>`) are defined in this module. If *buflen* is absent, an integer option is assumed and its integer value is returned by the function. If *buflen* is present, it specifies the maximum length of the buffer used to receive the option in, and @@ -1937,8 +1937,8 @@ to sockets. .. index:: pair: module; struct Set the value of the given socket option (see the Unix manual page - :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the - :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer, + :manpage:`setsockopt(2)`). The needed symbolic constants are defined in this + module (:ref:`!SO_\* etc. <socket-unix-constants>`). The value can be an integer, ``None`` or a :term:`bytes-like object` representing a buffer. In the later case it is up to the caller to ensure that the bytestring contains the proper bits (see the optional built-in module :mod:`struct` for a way to diff --git a/Doc/library/socketserver.rst b/Doc/library/socketserver.rst index 5fd213fa613..864b1dadb78 100644 --- a/Doc/library/socketserver.rst +++ b/Doc/library/socketserver.rst @@ -494,7 +494,7 @@ This is the server side:: def handle(self): # self.request is the TCP socket connected to the client self.data = self.request.recv(1024).strip() - print("{} wrote:".format(self.client_address[0])) + print("Received from {}:".format(self.client_address[0])) print(self.data) # just send back the same data, but upper-cased self.request.sendall(self.data.upper()) @@ -525,8 +525,9 @@ objects that simplify communication by providing the standard file interface):: The difference is that the ``readline()`` call in the second handler will call ``recv()`` multiple times until it encounters a newline character, while the -single ``recv()`` call in the first handler will just return what has been sent -from the client in one ``sendall()`` call. +single ``recv()`` call in the first handler will just return what has been +received so far from the client's ``sendall()`` call (typically all of it, but +this is not guaranteed by the TCP protocol). This is the client side:: diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index c36c3f042de..bd45cc88005 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -343,17 +343,17 @@ Module functions .. audit-event:: sqlite3.connect database sqlite3.connect .. audit-event:: sqlite3.connect/handle connection_handle sqlite3.connect - .. versionadded:: 3.4 - The *uri* parameter. + .. versionchanged:: 3.4 + Added the *uri* parameter. .. versionchanged:: 3.7 *database* can now also be a :term:`path-like object`, not only a string. - .. versionadded:: 3.10 - The ``sqlite3.connect/handle`` auditing event. + .. versionchanged:: 3.10 + Added the ``sqlite3.connect/handle`` auditing event. - .. versionadded:: 3.12 - The *autocommit* parameter. + .. versionchanged:: 3.12 + Added the *autocommit* parameter. .. function:: complete_statement(statement) @@ -738,8 +738,8 @@ Connection objects :raises NotSupportedError: If *deterministic* is used with SQLite versions older than 3.8.3. - .. versionadded:: 3.8 - The *deterministic* parameter. + .. versionchanged:: 3.8 + Added the *deterministic* parameter. Example: @@ -1101,8 +1101,8 @@ Connection objects .. versionchanged:: 3.10 Added the ``sqlite3.load_extension`` auditing event. - .. versionadded:: 3.12 - The *entrypoint* parameter. + .. versionchanged:: 3.12 + Added the *entrypoint* parameter. .. _Loading an Extension: https://www.sqlite.org/loadext.html#loading_an_extension_ @@ -1731,10 +1731,10 @@ Row objects Blob objects ^^^^^^^^^^^^ -.. versionadded:: 3.11 - .. class:: Blob + .. versionadded:: 3.11 + A :class:`Blob` instance is a :term:`file-like object` that can read and write data in an SQLite :abbr:`BLOB (Binary Large OBject)`. Call :func:`len(blob) <len>` to get the size (number of bytes) of the blob. diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index 94d19507dab..4caee84985a 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -25,7 +25,7 @@ probably additional platforms, as long as OpenSSL is installed on that platform. Some behavior may be platform dependent, since calls are made to the operating system socket APIs. The installed version of OpenSSL may also - cause variations in behavior. For example, TLSv1.3 with OpenSSL version + cause variations in behavior. For example, TLSv1.3 comes with OpenSSL version 1.1.1. .. warning:: @@ -2453,12 +2453,8 @@ provided. :exc:`SSLWantReadError` if it needs more data than the incoming BIO has available. - - There is no module-level ``wrap_bio()`` call like there is for - :meth:`~SSLContext.wrap_socket`. An :class:`SSLObject` is always created - via an :class:`SSLContext`. - .. versionchanged:: 3.7 - :class:`SSLObject` instances must to created with + :class:`SSLObject` instances must be created with :meth:`~SSLContext.wrap_bio`. In earlier versions, it was possible to create instances directly. This was never documented or officially supported. diff --git a/Doc/library/statistics.rst b/Doc/library/statistics.rst index 318e5d74611..3a4d265a6a8 100644 --- a/Doc/library/statistics.rst +++ b/Doc/library/statistics.rst @@ -1016,19 +1016,16 @@ probability that the Python room will stay within its capacity limits? >>> round(NormalDist(mu=n*p, sigma=sqrt(n*p*q)).cdf(k + 0.5), 4) 0.8402 - >>> # Solution using the cumulative binomial distribution + >>> # Exact solution using the cumulative binomial distribution >>> from math import comb, fsum >>> round(fsum(comb(n, r) * p**r * q**(n-r) for r in range(k+1)), 4) 0.8402 >>> # Approximation using a simulation - >>> from random import seed, choices + >>> from random import seed, binomialvariate >>> seed(8675309) - >>> def trial(): - ... return choices(('Python', 'Ruby'), (p, q), k=n).count('Python') - ... - >>> mean(trial() <= k for i in range(10_000)) - 0.8398 + >>> mean(binomialvariate(n, p) <= k for i in range(10_000)) + 0.8406 Naive bayesian classifier @@ -1097,17 +1094,15 @@ from a fixed number of discrete samples. The basic idea is to smooth the data using `a kernel function such as a normal distribution, triangular distribution, or uniform distribution <https://en.wikipedia.org/wiki/Kernel_(statistics)#Kernel_functions_in_common_use>`_. -The degree of smoothing is controlled by a single -parameter, ``h``, representing the variance of the kernel function. +The degree of smoothing is controlled by a scaling parameter, ``h``, +which is called the *bandwidth*. .. testcode:: - import math - def kde_normal(sample, h): "Create a continuous probability density function from a sample." - # Smooth the sample with a normal distribution of variance h. - kernel_h = NormalDist(0.0, math.sqrt(h)).pdf + # Smooth the sample with a normal distribution kernel scaled by h. + kernel_h = NormalDist(0.0, h).pdf n = len(sample) def pdf(x): return sum(kernel_h(x - x_i) for x_i in sample) / n @@ -1121,7 +1116,7 @@ a probability density function estimated from a small sample: .. doctest:: >>> sample = [-2.1, -1.3, -0.4, 1.9, 5.1, 6.2] - >>> f_hat = kde_normal(sample, h=2.25) + >>> f_hat = kde_normal(sample, h=1.5) >>> xarr = [i/100 for i in range(-750, 1100)] >>> yarr = [f_hat(x) for x in xarr] diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 29ddc65e947..ccc00198b67 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -1528,7 +1528,7 @@ between them will be implicitly converted to a single string literal. That is, ``("spam " "eggs") == "spam eggs"``. See :ref:`strings` for more about the various forms of string literal, -including supported escape sequences, and the ``r`` ("raw") prefix that +including supported :ref:`escape sequences <escape-sequences>`, and the ``r`` ("raw") prefix that disables most escape sequence processing. Strings may also be created from other objects using the :class:`str` @@ -5325,25 +5325,30 @@ Methods .. index:: pair: object; method Methods are functions that are called using the attribute notation. There are -two flavors: built-in methods (such as :meth:`append` on lists) and class -instance methods. Built-in methods are described with the types that support -them. +two flavors: :ref:`built-in methods <builtin-methods>` (such as :meth:`append` +on lists) and :ref:`class instance method <instance-methods>`. +Built-in methods are described with the types that support them. If you access a method (a function defined in a class namespace) through an instance, you get a special object: a :dfn:`bound method` (also called -:dfn:`instance method`) object. When called, it will add the ``self`` argument +:ref:`instance method <instance-methods>`) object. When called, it will add +the ``self`` argument to the argument list. Bound methods have two special read-only attributes: -``m.__self__`` is the object on which the method operates, and ``m.__func__`` is +:attr:`m.__self__ <method.__self__>` is the object on which the method +operates, and :attr:`m.__func__ <method.__func__>` is the function implementing the method. Calling ``m(arg-1, arg-2, ..., arg-n)`` is completely equivalent to calling ``m.__func__(m.__self__, arg-1, arg-2, ..., arg-n)``. -Like function objects, bound method objects support getting arbitrary +Like :ref:`function objects <user-defined-funcs>`, bound method objects support +getting arbitrary attributes. However, since method attributes are actually stored on the -underlying function object (``meth.__func__``), setting method attributes on +underlying function object (:attr:`method.__func__`), setting method attributes on bound methods is disallowed. Attempting to set an attribute on a method results in an :exc:`AttributeError` being raised. In order to set a method -attribute, you need to explicitly set it on the underlying function object:: +attribute, you need to explicitly set it on the underlying function object: + +.. doctest:: >>> class C: ... def method(self): @@ -5358,7 +5363,7 @@ attribute, you need to explicitly set it on the underlying function object:: >>> c.method.whoami 'my name is method' -See :ref:`types` for more information. +See :ref:`instance-methods` for more information. .. index:: object; code, code object @@ -5376,10 +5381,10 @@ Code objects are used by the implementation to represent "pseudo-compiled" executable Python code such as a function body. They differ from function objects because they don't contain a reference to their global execution environment. Code objects are returned by the built-in :func:`compile` function -and can be extracted from function objects through their :attr:`__code__` -attribute. See also the :mod:`code` module. +and can be extracted from function objects through their +:attr:`~function.__code__` attribute. See also the :mod:`code` module. -Accessing ``__code__`` raises an :ref:`auditing event <auditing>` +Accessing :attr:`~function.__code__` raises an :ref:`auditing event <auditing>` ``object.__getattr__`` with arguments ``obj`` and ``"__code__"``. .. index:: @@ -5453,8 +5458,9 @@ It is written as ``NotImplemented``. Internal Objects ---------------- -See :ref:`types` for this information. It describes stack frame objects, -traceback objects, and slice objects. +See :ref:`types` for this information. It describes +:ref:`stack frame objects <frame-objects>`, +:ref:`traceback objects <traceback-objects>`, and slice objects. .. _specialattrs: diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 262b785bbcb..1867678b207 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -208,13 +208,13 @@ The grammar for a replacement field is as follows: .. productionlist:: format-string replacement_field: "{" [`field_name`] ["!" `conversion`] [":" `format_spec`] "}" - field_name: arg_name ("." `attribute_name` | "[" `element_index` "]")* - arg_name: [`identifier` | `digit`+] - attribute_name: `identifier` - element_index: `digit`+ | `index_string` + field_name: `arg_name` ("." `attribute_name` | "[" `element_index` "]")* + arg_name: [`~python-grammar:identifier` | `~python-grammar:digit`+] + attribute_name: `~python-grammar:identifier` + element_index: `~python-grammar:digit`+ | `index_string` index_string: <any source character except "]"> + conversion: "r" | "s" | "a" - format_spec: <described in the next section> + format_spec: `format-spec:format_spec` In less formal terms, the replacement field can start with a *field_name* that specifies the object whose value is to be formatted and inserted @@ -316,9 +316,9 @@ The general form of a *standard format specifier* is: fill: <any character> align: "<" | ">" | "=" | "^" sign: "+" | "-" | " " - width: `digit`+ + width: `~python-grammar:digit`+ grouping_option: "_" | "," - precision: `digit`+ + precision: `~python-grammar:digit`+ type: "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" If a valid *align* value is specified, it can be preceded by a *fill* diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index 7f22a5d1852..f63ca73b3ec 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -308,10 +308,10 @@ default values. The arguments that are most commonly needed are: If text mode is not used, *stdin*, *stdout* and *stderr* will be opened as binary streams. No encoding or line ending conversion is performed. - .. versionadded:: 3.6 - Added *encoding* and *errors* parameters. + .. versionchanged:: 3.6 + Added the *encoding* and *errors* parameters. - .. versionadded:: 3.7 + .. versionchanged:: 3.7 Added the *text* parameter as an alias for *universal_newlines*. .. note:: @@ -664,7 +664,8 @@ functions. If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is passed to the underlying ``CreateProcess`` function. - *creationflags*, if given, can be one or more of the following flags: + + If given, *creationflags*, can be one or more of the following flags: * :data:`CREATE_NEW_CONSOLE` * :data:`CREATE_NEW_PROCESS_GROUP` @@ -684,8 +685,8 @@ functions. is only changed on platforms that support this (only Linux at this time of writing). Other platforms will ignore this parameter. - .. versionadded:: 3.10 - The ``pipesize`` parameter was added. + .. versionchanged:: 3.10 + Added the *pipesize* parameter. Popen objects are supported as context managers via the :keyword:`with` statement: on exit, standard file descriptors are closed, and the process is waited for. @@ -791,9 +792,10 @@ Instances of the :class:`Popen` class have the following methods: .. note:: - The function is implemented using a busy loop (non-blocking call and - short sleeps). Use the :mod:`asyncio` module for an asynchronous wait: - see :class:`asyncio.create_subprocess_exec`. + When the ``timeout`` parameter is not ``None``, then (on POSIX) the + function is implemented using a busy loop (non-blocking call and short + sleeps). Use the :mod:`asyncio` module for an asynchronous wait: see + :class:`asyncio.create_subprocess_exec`. .. versionchanged:: 3.3 *timeout* was added. @@ -1460,8 +1462,8 @@ Return code handling translates as follows:: print("There were some errors") -Replacing functions from the :mod:`popen2` module -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Replacing functions from the :mod:`!popen2` module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: @@ -1537,8 +1539,8 @@ handling consistency are valid for these functions. as it did in Python 3.3.3 and earlier. exitcode has the same value as :attr:`~Popen.returncode`. - .. versionadded:: 3.11 - Added *encoding* and *errors* arguments. + .. versionchanged:: 3.11 + Added the *encoding* and *errors* parameters. .. function:: getoutput(cmd, *, encoding=None, errors=None) @@ -1555,8 +1557,8 @@ handling consistency are valid for these functions. .. versionchanged:: 3.3.4 Windows support added - .. versionadded:: 3.11 - Added *encoding* and *errors* arguments. + .. versionchanged:: 3.11 + Added the *encoding* and *errors* parameters. Notes diff --git a/Doc/library/symtable.rst b/Doc/library/symtable.rst index 85eae5f3822..15fb85bbf0d 100644 --- a/Doc/library/symtable.rst +++ b/Doc/library/symtable.rst @@ -97,7 +97,7 @@ Examining Symbol Tables .. class:: Function - A namespace for a function or method. This class inherits + A namespace for a function or method. This class inherits from :class:`SymbolTable`. .. method:: get_parameters() @@ -123,7 +123,7 @@ Examining Symbol Tables .. class:: Class - A namespace of a class. This class inherits :class:`SymbolTable`. + A namespace of a class. This class inherits from :class:`SymbolTable`. .. method:: get_methods() diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 211b600db0f..a81ac72d246 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -1260,10 +1260,13 @@ always available. .. versionchanged:: 3.4 :term:`Module specs <module spec>` were introduced in Python 3.4, by - :pep:`451`. Earlier versions of Python looked for a method called - :meth:`!find_module`. - This is still called as a fallback if a :data:`meta_path` entry doesn't - have a :meth:`~importlib.abc.MetaPathFinder.find_spec` method. + :pep:`451`. + + .. versionchanged:: 3.12 + + Removed the fallback that looked for a :meth:`!find_module` method + if a :data:`meta_path` entry didn't have a + :meth:`~importlib.abc.MetaPathFinder.find_spec` method. .. data:: modules @@ -1282,7 +1285,10 @@ always available. The list of the original command line arguments passed to the Python executable. - See also :data:`sys.argv`. + The elements of :data:`sys.orig_argv` are the arguments to the Python interpreter, + while the elements of :data:`sys.argv` are the arguments to the user's program. + Arguments consumed by the interpreter itself will be present in :data:`sys.orig_argv` + and missing from :data:`sys.argv`. .. versionadded:: 3.10 @@ -1644,7 +1650,13 @@ always available. ``'opcode'`` event type added; :attr:`~frame.f_trace_lines` and :attr:`~frame.f_trace_opcodes` attributes added to frames -.. function:: set_asyncgen_hooks(firstiter, finalizer) + .. versionchanged:: 3.12 + ``'opcode'`` event will only be emitted if :attr:`~frame.f_trace_opcodes` + of at least one frame has been set to :const:`True` before :func:`settrace` + is called. This behavior will be changed back in 3.13 to be consistent with + previous versions. + +.. function:: set_asyncgen_hooks([firstiter] [, finalizer]) Accepts two optional keyword arguments which are callables that accept an :term:`asynchronous generator iterator` as an argument. The *firstiter* diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index 68b2091aa24..755581cfc6f 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -116,10 +116,12 @@ Some facts and figures: ``'filemode|[compression]'``. :func:`tarfile.open` will return a :class:`TarFile` object that processes its data as a stream of blocks. No random seeking will be done on the file. If given, *fileobj* may be any object that has a - :meth:`read` or :meth:`write` method (depending on the *mode*). *bufsize* - specifies the blocksize and defaults to ``20 * 512`` bytes. Use this variant - in combination with e.g. ``sys.stdin``, a socket :term:`file object` or a tape - device. However, such a :class:`TarFile` object is limited in that it does + :meth:`~io.RawIOBase.read` or :meth:`~io.RawIOBase.write` method + (depending on the *mode*) that works with bytes. + *bufsize* specifies the blocksize and defaults to ``20 * 512`` bytes. + Use this variant in combination with e.g. ``sys.stdin.buffer``, a socket + :term:`file object` or a tape device. + However, such a :class:`TarFile` object is limited in that it does not allow random access, see :ref:`tar-examples`. The currently possible modes: @@ -255,6 +257,51 @@ The following constants are available at the module level: The default character encoding: ``'utf-8'`` on Windows, the value returned by :func:`sys.getfilesystemencoding` otherwise. +.. data:: REGTYPE + AREGTYPE + + A regular file :attr:`~TarInfo.type`. + +.. data:: LNKTYPE + + A link (inside tarfile) :attr:`~TarInfo.type`. + +.. data:: SYMTYPE + + A symbolic link :attr:`~TarInfo.type`. + +.. data:: CHRTYPE + + A character special device :attr:`~TarInfo.type`. + +.. data:: BLKTYPE + + A block special device :attr:`~TarInfo.type`. + +.. data:: DIRTYPE + + A directory :attr:`~TarInfo.type`. + +.. data:: FIFOTYPE + + A FIFO special device :attr:`~TarInfo.type`. + +.. data:: CONTTYPE + + A contiguous file :attr:`~TarInfo.type`. + +.. data:: GNUTYPE_LONGNAME + + A GNU tar longname :attr:`~TarInfo.type`. + +.. data:: GNUTYPE_LONGLINK + + A GNU tar longlink :attr:`~TarInfo.type`. + +.. data:: GNUTYPE_SPARSE + + A GNU tar sparse file :attr:`~TarInfo.type`. + Each of the following constants defines a tar archive format that the :mod:`tarfile` module is able to create. See section :ref:`tar-formats` for @@ -325,7 +372,7 @@ be finalized; only the internally used file object will be closed. See the *name* is the pathname of the archive. *name* may be a :term:`path-like object`. It can be omitted if *fileobj* is given. - In this case, the file object's :attr:`name` attribute is used if it exists. + In this case, the file object's :attr:`!name` attribute is used if it exists. *mode* is either ``'r'`` to read from an existing archive, ``'a'`` to append data to an existing file, ``'w'`` to create a new file overwriting an existing @@ -359,7 +406,7 @@ be finalized; only the internally used file object will be closed. See the messages). The messages are written to ``sys.stderr``. *errorlevel* controls how extraction errors are handled, - see :attr:`the corresponding attribute <~TarFile.errorlevel>`. + see :attr:`the corresponding attribute <TarFile.errorlevel>`. The *encoding* and *errors* arguments define the character encoding to be used for reading or writing the archive and how conversion errors are going @@ -621,6 +668,7 @@ be finalized; only the internally used file object will be closed. See the .. attribute:: TarFile.pax_headers + :type: dict A dictionary containing key-value pairs of pax global headers. @@ -640,8 +688,8 @@ It does *not* contain the file's data itself. :meth:`~TarFile.getmember`, :meth:`~TarFile.getmembers` and :meth:`~TarFile.gettarinfo`. -Modifying the objects returned by :meth:`~!TarFile.getmember` or -:meth:`~!TarFile.getmembers` will affect all subsequent +Modifying the objects returned by :meth:`~TarFile.getmember` or +:meth:`~TarFile.getmembers` will affect all subsequent operations on the archive. For cases where this is unwanted, you can use :mod:`copy.copy() <copy>` or call the :meth:`~TarInfo.replace` method to create a modified copy in one step. @@ -785,13 +833,48 @@ A ``TarInfo`` object has the following public data attributes: :meth:`~TarFile.extractall`, causing extraction to skip applying this attribute. +.. attribute:: TarInfo.chksum + :type: int + + Header checksum. + + +.. attribute:: TarInfo.devmajor + :type: int + + Device major number. + + +.. attribute:: TarInfo.devminor + :type: int + + Device minor number. + + +.. attribute:: TarInfo.offset + :type: int + + The tar header starts here. + + +.. attribute:: TarInfo.offset_data + :type: int + + The file's data starts here. + + +.. attribute:: TarInfo.sparse + + Sparse member information. + + .. attribute:: TarInfo.pax_headers :type: dict A dictionary containing key-value pairs of an associated pax extended header. -.. method:: TarInfo.replace(name=..., mtime=..., mode=..., linkname=..., - uid=..., gid=..., uname=..., gname=..., +.. method:: TarInfo.replace(name=..., mtime=..., mode=..., linkname=..., \ + uid=..., gid=..., uname=..., gname=..., \ deep=True) .. versionadded:: 3.12 @@ -811,7 +894,7 @@ A :class:`TarInfo` object also provides some convenient query methods: .. method:: TarInfo.isfile() - Return :const:`True` if the :class:`Tarinfo` object is a regular file. + Return :const:`True` if the :class:`TarInfo` object is a regular file. .. method:: TarInfo.isreg() @@ -947,7 +1030,7 @@ reused in custom filters: path (after following symlinks) would end up outside the destination. This raises :class:`~tarfile.OutsideDestinationError`. - Clear high mode bits (setuid, setgid, sticky) and group/other write bits - (:const:`~stat.S_IWGRP`|:const:`~stat.S_IWOTH`). + (:const:`~stat.S_IWGRP` | :const:`~stat.S_IWOTH`). Return the modified ``TarInfo`` member. @@ -972,9 +1055,9 @@ reused in custom filters: - For regular files, including hard links: - Set the owner read and write permissions - (:const:`~stat.S_IRUSR`|:const:`~stat.S_IWUSR`). + (:const:`~stat.S_IRUSR` | :const:`~stat.S_IWUSR`). - Remove the group & other executable permission - (:const:`~stat.S_IXGRP`|:const:`~stat.S_IXOTH`) + (:const:`~stat.S_IXGRP` | :const:`~stat.S_IXOTH`) if the owner doesn’t have it (:const:`~stat.S_IXUSR`). - For other files (directories), set ``mode`` to ``None``, so diff --git a/Doc/library/tempfile.rst b/Doc/library/tempfile.rst index b68a78e8267..9add8500c77 100644 --- a/Doc/library/tempfile.rst +++ b/Doc/library/tempfile.rst @@ -18,7 +18,7 @@ This module creates temporary files and directories. It works on all supported platforms. :class:`TemporaryFile`, :class:`NamedTemporaryFile`, :class:`TemporaryDirectory`, and :class:`SpooledTemporaryFile` are high-level interfaces which provide automatic cleanup and can be used as -context managers. :func:`mkstemp` and +:term:`context managers <context manager>`. :func:`mkstemp` and :func:`mkdtemp` are lower-level functions which require manual cleanup. All the user-callable functions and constructors take additional arguments which @@ -41,7 +41,7 @@ The module defines the following user-callable items: this; your code should not rely on a temporary file created using this function having or not having a visible name in the file system. - The resulting object can be used as a context manager (see + The resulting object can be used as a :term:`context manager` (see :ref:`tempfile-examples`). On completion of the context or destruction of the file object the temporary file will be removed from the filesystem. @@ -87,9 +87,9 @@ The module defines the following user-callable items: determine whether and how the named file should be automatically deleted. The returned object is always a :term:`file-like object` whose :attr:`!file` - attribute is the underlying true file object. This :term:`file-like object` + attribute is the underlying true file object. This file-like object can be used in a :keyword:`with` statement, just like a normal file. The - name of the temporary file can be retrieved from the :attr:`name` attribute + name of the temporary file can be retrieved from the :attr:`!name` attribute of the returned file-like object. On Unix, unlike with the :func:`TemporaryFile`, the directory entry does not get unlinked immediately after the file creation. @@ -151,18 +151,20 @@ The module defines the following user-callable items: contents are written to disk and operation proceeds as with :func:`TemporaryFile`. - The resulting file has one additional method, :func:`rollover`, which - causes the file to roll over to an on-disk file regardless of its size. + .. method:: SpooledTemporaryFile.rollover - The returned object is a file-like object whose :attr:`_file` attribute + The resulting file has one additional method, :meth:`!rollover`, which + causes the file to roll over to an on-disk file regardless of its size. + + The returned object is a file-like object whose :attr:`!_file` attribute is either an :class:`io.BytesIO` or :class:`io.TextIOWrapper` object (depending on whether binary or text *mode* was specified) or a true file - object, depending on whether :func:`rollover` has been called. This + object, depending on whether :meth:`rollover` has been called. This file-like object can be used in a :keyword:`with` statement, just like a normal file. .. versionchanged:: 3.3 - the truncate method now accepts a ``size`` argument. + the truncate method now accepts a *size* argument. .. versionchanged:: 3.8 Added *errors* parameter. @@ -176,24 +178,28 @@ The module defines the following user-callable items: .. class:: TemporaryDirectory(suffix=None, prefix=None, dir=None, ignore_cleanup_errors=False, *, delete=True) This class securely creates a temporary directory using the same rules as :func:`mkdtemp`. - The resulting object can be used as a context manager (see + The resulting object can be used as a :term:`context manager` (see :ref:`tempfile-examples`). On completion of the context or destruction of the temporary directory object, the newly created temporary directory and all its contents are removed from the filesystem. - The directory name can be retrieved from the :attr:`name` attribute of the - returned object. When the returned object is used as a context manager, the - :attr:`name` will be assigned to the target of the :keyword:`!as` clause in - the :keyword:`with` statement, if there is one. - - The directory can be explicitly cleaned up by calling the - :func:`cleanup` method. If *ignore_cleanup_errors* is true, any unhandled - exceptions during explicit or implicit cleanup (such as a - :exc:`PermissionError` removing open files on Windows) will be ignored, - and the remaining removable items deleted on a "best-effort" basis. - Otherwise, errors will be raised in whatever context cleanup occurs - (the :func:`cleanup` call, exiting the context manager, when the object - is garbage-collected or during interpreter shutdown). + .. attribute:: TemporaryDirectory.name + + The directory name can be retrieved from the :attr:`!name` attribute of the + returned object. When the returned object is used as a :term:`context manager`, the + :attr:`!name` will be assigned to the target of the :keyword:`!as` clause in + the :keyword:`with` statement, if there is one. + + .. method:: TemporaryDirectory.cleanup + + The directory can be explicitly cleaned up by calling the + :meth:`!cleanup` method. If *ignore_cleanup_errors* is true, any unhandled + exceptions during explicit or implicit cleanup (such as a + :exc:`PermissionError` removing open files on Windows) will be ignored, + and the remaining removable items deleted on a "best-effort" basis. + Otherwise, errors will be raised in whatever context cleanup occurs + (the :meth:`!cleanup` call, exiting the context manager, when the object + is garbage-collected or during interpreter shutdown). The *delete* parameter can be used to disable cleanup of the directory tree upon exiting the context. While it may seem unusual for a context manager diff --git a/Doc/library/test.rst b/Doc/library/test.rst index 6cbdc39b3c0..cad1023021a 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -143,7 +143,7 @@ guidelines to be followed: arg = (1, 2, 3) When using this pattern, remember that all classes that inherit from - :class:`unittest.TestCase` are run as tests. The :class:`Mixin` class in the example above + :class:`unittest.TestCase` are run as tests. The :class:`!TestFuncAcceptsSequencesMixin` class in the example above does not have any data and so can't be run by itself, thus it does not inherit from :class:`unittest.TestCase`. @@ -1408,7 +1408,8 @@ The :mod:`test.support.os_helper` module provides support for os tests. .. class:: FakePath(path) - Simple :term:`path-like object`. It implements the :meth:`__fspath__` + Simple :term:`path-like object`. It implements the + :meth:`~os.PathLike.__fspath__` method which just returns the *path* argument. If *path* is an exception, it will be raised in :meth:`!__fspath__`. diff --git a/Doc/library/tkinter.ttk.rst b/Doc/library/tkinter.ttk.rst index 5fab1454944..66144e0eec0 100644 --- a/Doc/library/tkinter.ttk.rst +++ b/Doc/library/tkinter.ttk.rst @@ -986,19 +986,19 @@ ttk.Treeview The valid options/values are: - id + *id* Returns the column name. This is a read-only option. - anchor: One of the standard Tk anchor values. + *anchor*: One of the standard Tk anchor values. Specifies how the text in this column should be aligned with respect to the cell. - minwidth: width + *minwidth*: width The minimum width of the column in pixels. The treeview widget will not make the column any smaller than specified by this option when the widget is resized or the user drags a column. - stretch: ``True``/``False`` + *stretch*: ``True``/``False`` Specifies whether the column's width should be adjusted when the widget is resized. - width: width + *width*: width The width of the column in pixels. To configure the tree column, call this with column = "#0" @@ -1041,14 +1041,14 @@ ttk.Treeview The valid options/values are: - text: text + *text*: text The text to display in the column heading. - image: imageName + *image*: imageName Specifies an image to display to the right of the column heading. - anchor: anchor + *anchor*: anchor Specifies how the heading text should be aligned. One of the standard Tk anchor values. - command: callback + *command*: callback A callback to be invoked when the heading label is pressed. To configure the tree column heading, call this with column = "#0". @@ -1118,7 +1118,7 @@ ttk.Treeview as the item identifier; *iid* must not already exist in the tree. Otherwise, a new unique identifier is generated. - See `Item Options`_ for the list of available points. + See `Item Options`_ for the list of available options. .. method:: item(item, option=None, **kw) @@ -1515,23 +1515,24 @@ Layouts A layout can be just ``None``, if it takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an -initial cavity, each element is allocated a parcel. Valid -options/values are: +initial cavity, each element is allocated a parcel. -side: whichside +The valid options/values are: + +*side*: whichside Specifies which side of the cavity to place the element; one of top, right, bottom or left. If omitted, the element occupies the entire cavity. -sticky: nswe +*sticky*: nswe Specifies where the element is placed inside its allocated parcel. -unit: 0 or 1 +*unit*: 0 or 1 If set to 1, causes the element and all of its descendants to be treated as a single element for the purposes of :meth:`Widget.identify` et al. It's used for things like scrollbar thumbs with grips. -children: [sublayout... ] +*children*: [sublayout... ] Specifies a list of elements to place inside the element. Each element is a tuple (or other sequence type) where the first item is the layout name, and the other is a `Layout`_. diff --git a/Doc/library/tomllib.rst b/Doc/library/tomllib.rst index 918576eb37e..f9e2dfeb13d 100644 --- a/Doc/library/tomllib.rst +++ b/Doc/library/tomllib.rst @@ -95,7 +95,7 @@ Conversion Table +------------------+--------------------------------------------------------------------------------------+ | TOML | Python | +==================+======================================================================================+ -| table | dict | +| TOML document | dict | +------------------+--------------------------------------------------------------------------------------+ | string | str | +------------------+--------------------------------------------------------------------------------------+ @@ -115,3 +115,9 @@ Conversion Table +------------------+--------------------------------------------------------------------------------------+ | array | list | +------------------+--------------------------------------------------------------------------------------+ +| table | dict | ++------------------+--------------------------------------------------------------------------------------+ +| inline table | dict | ++------------------+--------------------------------------------------------------------------------------+ +| array of tables | list of dicts | ++------------------+--------------------------------------------------------------------------------------+ diff --git a/Doc/library/traceback.rst b/Doc/library/traceback.rst index 55ac361b190..1c7445b038b 100644 --- a/Doc/library/traceback.rst +++ b/Doc/library/traceback.rst @@ -16,8 +16,10 @@ interpreter. .. index:: pair: object; traceback -The module uses traceback objects --- these are objects of type :class:`types.TracebackType`, -which are assigned to the ``__traceback__`` field of :class:`BaseException` instances. +The module uses :ref:`traceback objects <traceback-objects>` --- these are +objects of type :class:`types.TracebackType`, +which are assigned to the :attr:`~BaseException.__traceback__` field of +:class:`BaseException` instances. .. seealso:: @@ -31,11 +33,13 @@ The module defines the following functions: .. function:: print_tb(tb, limit=None, file=None) - Print up to *limit* stack trace entries from traceback object *tb* (starting + Print up to *limit* stack trace entries from + :ref:`traceback object <traceback-objects>` *tb* (starting from the caller's frame) if *limit* is positive. Otherwise, print the last ``abs(limit)`` entries. If *limit* is omitted or ``None``, all entries are printed. If *file* is omitted or ``None``, the output goes to - ``sys.stderr``; otherwise it should be an open file or file-like object to + :data:`sys.stderr`; otherwise it should be an open + :term:`file <file object>` or :term:`file-like object` to receive the output. .. versionchanged:: 3.5 @@ -45,7 +49,8 @@ The module defines the following functions: .. function:: print_exception(exc, /[, value, tb], limit=None, \ file=None, chain=True) - Print exception information and stack trace entries from traceback object + Print exception information and stack trace entries from + :ref:`traceback object <traceback-objects>` *tb* to *file*. This differs from :func:`print_tb` in the following ways: @@ -66,7 +71,8 @@ The module defines the following functions: The optional *limit* argument has the same meaning as for :func:`print_tb`. If *chain* is true (the default), then chained exceptions (the - :attr:`__cause__` or :attr:`__context__` attributes of the exception) will be + :attr:`~BaseException.__cause__` or :attr:`~BaseException.__context__` + attributes of the exception) will be printed as well, like the interpreter itself does when printing an unhandled exception. @@ -96,7 +102,8 @@ The module defines the following functions: Print up to *limit* stack trace entries (starting from the invocation point) if *limit* is positive. Otherwise, print the last ``abs(limit)`` entries. If *limit* is omitted or ``None``, all entries are printed. - The optional *f* argument can be used to specify an alternate stack frame + The optional *f* argument can be used to specify an alternate + :ref:`stack frame <frame-objects>` to start. The optional *file* argument has the same meaning as for :func:`print_tb`. @@ -107,20 +114,20 @@ The module defines the following functions: .. function:: extract_tb(tb, limit=None) Return a :class:`StackSummary` object representing a list of "pre-processed" - stack trace entries extracted from the traceback object *tb*. It is useful + stack trace entries extracted from the + :ref:`traceback object <traceback-objects>` *tb*. It is useful for alternate formatting of stack traces. The optional *limit* argument has the same meaning as for :func:`print_tb`. A "pre-processed" stack trace entry is a :class:`FrameSummary` object containing attributes :attr:`~FrameSummary.filename`, :attr:`~FrameSummary.lineno`, :attr:`~FrameSummary.name`, and :attr:`~FrameSummary.line` representing the - information that is usually printed for a stack trace. The - :attr:`~FrameSummary.line` is a string with leading and trailing - whitespace stripped; if the source is not available it is ``None``. + information that is usually printed for a stack trace. .. function:: extract_stack(f=None, limit=None) - Extract the raw traceback from the current stack frame. The return value has + Extract the raw traceback from the current + :ref:`stack frame <frame-objects>`. The return value has the same format as for :func:`extract_tb`. The optional *f* and *limit* arguments have the same meaning as for :func:`print_stack`. @@ -138,7 +145,7 @@ The module defines the following functions: .. function:: format_exception_only(exc, /[, value]) Format the exception part of a traceback using an exception value such as - given by ``sys.last_value``. The return value is a list of strings, each + given by :data:`sys.last_value`. The return value is a list of strings, each ending in a newline. The list contains the exception's message, which is normally a single string; however, for :exc:`SyntaxError` exceptions, it contains several lines that (when printed) display detailed information @@ -154,7 +161,8 @@ The module defines the following functions: positional-only. .. versionchanged:: 3.11 - The returned list now includes any notes attached to the exception. + The returned list now includes any + :attr:`notes <BaseException.__notes__>` attached to the exception. .. function:: format_exception(exc, /[, value, tb], limit=None, chain=True) @@ -190,14 +198,17 @@ The module defines the following functions: .. function:: clear_frames(tb) - Clears the local variables of all the stack frames in a traceback *tb* - by calling the :meth:`clear` method of each frame object. + Clears the local variables of all the stack frames in a + :ref:`traceback <traceback-objects>` *tb* + by calling the :meth:`~frame.clear` method of each + :ref:`frame object <frame-objects>`. .. versionadded:: 3.4 .. function:: walk_stack(f) - Walk a stack following ``f.f_back`` from the given frame, yielding the frame + Walk a stack following :attr:`f.f_back <frame.f_back>` from the given frame, + yielding the frame and line number for each frame. If *f* is ``None``, the current stack is used. This helper is used with :meth:`StackSummary.extract`. @@ -205,19 +216,20 @@ The module defines the following functions: .. function:: walk_tb(tb) - Walk a traceback following ``tb_next`` yielding the frame and line number + Walk a traceback following :attr:`~traceback.tb_next` yielding the frame and + line number for each frame. This helper is used with :meth:`StackSummary.extract`. .. versionadded:: 3.5 The module also defines the following classes: -:class:`TracebackException` Objects ------------------------------------ +:class:`!TracebackException` Objects +------------------------------------ .. versionadded:: 3.5 -:class:`TracebackException` objects are created from actual exceptions to +:class:`!TracebackException` objects are created from actual exceptions to capture data for later printing in a lightweight fashion. .. class:: TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False, compact=False, max_group_width=15, max_group_depth=10) @@ -225,10 +237,11 @@ capture data for later printing in a lightweight fashion. Capture an exception for later rendering. *limit*, *lookup_lines* and *capture_locals* are as for the :class:`StackSummary` class. - If *compact* is true, only data that is required by :class:`TracebackException`'s - ``format`` method is saved in the class attributes. In particular, the - ``__context__`` field is calculated only if ``__cause__`` is ``None`` and - ``__suppress_context__`` is false. + If *compact* is true, only data that is required by + :class:`!TracebackException`'s :meth:`format` method + is saved in the class attributes. In particular, the + :attr:`__context__` field is calculated only if :attr:`__cause__` is + ``None`` and :attr:`__suppress_context__` is false. Note that when locals are captured, they are also shown in the traceback. @@ -246,27 +259,31 @@ capture data for later printing in a lightweight fashion. .. attribute:: __cause__ - A :class:`TracebackException` of the original ``__cause__``. + A :class:`!TracebackException` of the original + :attr:`~BaseException.__cause__`. .. attribute:: __context__ - A :class:`TracebackException` of the original ``__context__``. + A :class:`!TracebackException` of the original + :attr:`~BaseException.__context__`. .. attribute:: exceptions If ``self`` represents an :exc:`ExceptionGroup`, this field holds a list of - :class:`TracebackException` instances representing the nested exceptions. + :class:`!TracebackException` instances representing the nested exceptions. Otherwise it is ``None``. .. versionadded:: 3.11 .. attribute:: __suppress_context__ - The ``__suppress_context__`` value from the original exception. + The :attr:`~BaseException.__suppress_context__` value from the original + exception. .. attribute:: __notes__ - The ``__notes__`` value from the original exception, or ``None`` + The :attr:`~BaseException.__notes__` value from the original exception, + or ``None`` if the exception does not have any notes. If it is not ``None`` is it formatted in the traceback after the exception string. @@ -332,8 +349,8 @@ capture data for later printing in a lightweight fashion. Format the exception. - If *chain* is not ``True``, ``__cause__`` and ``__context__`` will not - be formatted. + If *chain* is not ``True``, :attr:`__cause__` and :attr:`__context__` + will not be formatted. The return value is a generator of strings, each ending in a newline and some containing internal newlines. :func:`~traceback.print_exception` @@ -352,31 +369,32 @@ capture data for later printing in a lightweight fashion. the syntax error occurred. .. versionchanged:: 3.11 - The exception's notes are now included in the output. + The exception's :attr:`notes <BaseException.__notes__>` are now + included in the output. -:class:`StackSummary` Objects ------------------------------ +:class:`!StackSummary` Objects +------------------------------ .. versionadded:: 3.5 -:class:`StackSummary` objects represent a call stack ready for formatting. +:class:`!StackSummary` objects represent a call stack ready for formatting. .. class:: StackSummary .. classmethod:: extract(frame_gen, *, limit=None, lookup_lines=True, capture_locals=False) - Construct a :class:`StackSummary` object from a frame generator (such as + Construct a :class:`!StackSummary` object from a frame generator (such as is returned by :func:`~traceback.walk_stack` or :func:`~traceback.walk_tb`). If *limit* is supplied, only this many frames are taken from *frame_gen*. If *lookup_lines* is ``False``, the returned :class:`FrameSummary` objects will not have read their lines in yet, making the cost of - creating the :class:`StackSummary` cheaper (which may be valuable if it + creating the :class:`!StackSummary` cheaper (which may be valuable if it may not actually get formatted). If *capture_locals* is ``True`` the - local variables in each :class:`FrameSummary` are captured as object + local variables in each :class:`!FrameSummary` are captured as object representations. .. versionchanged:: 3.12 @@ -385,14 +403,16 @@ capture data for later printing in a lightweight fashion. .. classmethod:: from_list(a_list) - Construct a :class:`StackSummary` object from a supplied list of + Construct a :class:`!StackSummary` object from a supplied list of :class:`FrameSummary` objects or old-style list of tuples. Each tuple - should be a 4-tuple with filename, lineno, name, line as the elements. + should be a 4-tuple with *filename*, *lineno*, *name*, *line* as the + elements. .. method:: format() Returns a list of strings ready for printing. Each string in the - resulting list corresponds to a single frame from the stack. + resulting list corresponds to a single :ref:`frame <frame-objects>` from + the stack. Each string ends in a newline; the strings may contain internal newlines as well, for those items with source text lines. @@ -405,7 +425,8 @@ capture data for later printing in a lightweight fashion. .. method:: format_frame_summary(frame_summary) - Returns a string for printing one of the frames involved in the stack. + Returns a string for printing one of the :ref:`frames <frame-objects>` + involved in the stack. This method is called for each :class:`FrameSummary` object to be printed by :meth:`StackSummary.format`. If it returns ``None``, the frame is omitted from the output. @@ -413,25 +434,50 @@ capture data for later printing in a lightweight fashion. .. versionadded:: 3.11 -:class:`FrameSummary` Objects ------------------------------ +:class:`!FrameSummary` Objects +------------------------------ .. versionadded:: 3.5 -A :class:`FrameSummary` object represents a single frame in a traceback. +A :class:`!FrameSummary` object represents a single :ref:`frame <frame-objects>` +in a :ref:`traceback <traceback-objects>`. .. class:: FrameSummary(filename, lineno, name, lookup_line=True, locals=None, line=None) - Represent a single frame in the traceback or stack that is being formatted - or printed. It may optionally have a stringified version of the frames + Represents a single :ref:`frame <frame-objects>` in the + :ref:`traceback <traceback-objects>` or stack that is being formatted + or printed. It may optionally have a stringified version of the frame's locals included in it. If *lookup_line* is ``False``, the source code is not - looked up until the :class:`FrameSummary` has the :attr:`~FrameSummary.line` - attribute accessed (which also happens when casting it to a tuple). + looked up until the :class:`!FrameSummary` has the :attr:`~FrameSummary.line` + attribute accessed (which also happens when casting it to a :class:`tuple`). :attr:`~FrameSummary.line` may be directly provided, and will prevent line lookups happening at all. *locals* is an optional local variable dictionary, and if supplied the variable representations are stored in the summary for later display. + :class:`!FrameSummary` instances have the following attributes: + + .. attribute:: FrameSummary.filename + + The filename of the source code for this frame. Equivalent to accessing + :attr:`f.f_code.co_filename <codeobject.co_filename>` on a + :ref:`frame object <frame-objects>` *f*. + + .. attribute:: FrameSummary.lineno + + The line number of the source code for this frame. + + .. attribute:: FrameSummary.name + + Equivalent to accessing :attr:`f.f_code.co_name <codeobject.co_name>` on + a :ref:`frame object <frame-objects>` *f*. + + .. attribute:: FrameSummary.line + + A string representing the source code for this frame, with leading and + trailing whitespace stripped. + If the source is not available, it is ``None``. + .. _traceback-example: Traceback Examples diff --git a/Doc/library/tty.rst b/Doc/library/tty.rst index 20ba7d7e0a4..ed63561c40d 100644 --- a/Doc/library/tty.rst +++ b/Doc/library/tty.rst @@ -35,8 +35,15 @@ The :mod:`tty` module defines the following functions: Convert the tty attribute list *mode*, which is a list like the one returned by :func:`termios.tcgetattr`, to that of a tty in cbreak mode. + This clears the ``ECHO`` and ``ICANON`` local mode flags in *mode* as well + as setting the minimum input to 1 byte with no delay. + .. versionadded:: 3.12 + .. versionchanged:: 3.12.2 + The ``ICRNL`` flag is no longer cleared. This matches Linux and macOS + ``stty cbreak`` behavior and what :func:`setcbreak` historically did. + .. function:: setraw(fd, when=termios.TCSAFLUSH) @@ -56,9 +63,17 @@ The :mod:`tty` module defines the following functions: :func:`termios.tcsetattr`. The return value of :func:`termios.tcgetattr` is saved before setting *fd* to cbreak mode; this value is returned. + This clears the ``ECHO`` and ``ICANON`` local mode flags as well as setting + the minimum input to 1 byte with no delay. + .. versionchanged:: 3.12 The return value is now the original tty attributes, instead of None. + .. versionchanged:: 3.12.2 + The ``ICRNL`` flag is no longer cleared. This restores the behavior + of Python 3.11 and earlier as well as matching what Linux, macOS, & BSDs + describe in their ``stty(1)`` man pages regarding cbreak mode. + .. seealso:: diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 9b100383572..f9e0ba4567b 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -376,11 +376,8 @@ Standard names are defined for the following types: .. data:: FrameType - The type of frame objects such as found in ``tb.tb_frame`` if ``tb`` is a - traceback object. - - See :ref:`the language reference <frame-objects>` for details of the - available attributes and operations. + The type of :ref:`frame objects <frame-objects>` such as found in + :attr:`tb.tb_frame <traceback.tb_frame>` if ``tb`` is a traceback object. .. data:: GetSetDescriptorType @@ -399,6 +396,10 @@ Standard names are defined for the following types: data members which use standard conversion functions; it has the same purpose as the :class:`property` type, but for classes defined in extension modules. + In addition, when a class is defined with a :attr:`~object.__slots__` attribute, then for + each slot, an instance of :class:`!MemberDescriptorType` will be added as an attribute + on the class. This allows the slot to appear in the class's :attr:`~object.__dict__`. + .. impl-detail:: In other implementations of Python, this type may be identical to diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index b00eb93f32e..c8e77299617 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -2581,10 +2581,10 @@ Functions and decorators .. function:: reveal_type(obj, /) - Reveal the inferred static type of an expression. + Ask a static type checker to reveal the inferred type of an expression. When a static type checker encounters a call to this function, - it emits a diagnostic with the type of the argument. For example:: + it emits a diagnostic with the inferred type of the argument. For example:: x: int = 1 reveal_type(x) # Revealed type is "builtins.int" @@ -2592,22 +2592,21 @@ Functions and decorators This can be useful when you want to debug how your type checker handles a particular piece of code. - The function returns its argument unchanged, which allows using - it within an expression:: + At runtime, this function prints the runtime type of its argument to + :data:`sys.stderr` and returns the argument unchanged (allowing the call to + be used within an expression):: - x = reveal_type(1) # Revealed type is "builtins.int" + x = reveal_type(1) # prints "Runtime type is int" + print(x) # prints "1" + + Note that the runtime type may be different from (more or less specific + than) the type statically inferred by a type checker. Most type checkers support ``reveal_type()`` anywhere, even if the name is not imported from ``typing``. Importing the name from - ``typing`` allows your code to run without runtime errors and + ``typing``, however, allows your code to run without runtime errors and communicates intent more clearly. - At runtime, this function prints the runtime type of its argument to stderr - and returns it unchanged:: - - x = reveal_type(1) # prints "Runtime type is int" - print(x) # prints "1" - .. versionadded:: 3.11 .. decorator:: dataclass_transform(*, eq_default=True, order_default=False, \ diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index 175ab0fb237..d11307447b2 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -820,8 +820,9 @@ apply to method calls on the mock object. .. class:: PropertyMock(*args, **kwargs) - A mock intended to be used as a property, or other descriptor, on a class. - :class:`PropertyMock` provides :meth:`__get__` and :meth:`__set__` methods + A mock intended to be used as a :class:`property`, or other + :term:`descriptor`, on a class. :class:`PropertyMock` provides + :meth:`~object.__get__` and :meth:`~object.__set__` methods so you can specify a return value when it is fetched. Fetching a :class:`PropertyMock` instance from an object calls the mock, with @@ -1658,8 +1659,9 @@ Keywords can be used in the :func:`patch.dict` call to set values in the diction :func:`patch.dict` can be used with dictionary like objects that aren't actually dictionaries. At the very minimum they must support item getting, setting, deleting and either iteration or membership test. This corresponds to the -magic methods :meth:`~object.__getitem__`, :meth:`__setitem__`, :meth:`__delitem__` and either -:meth:`__iter__` or :meth:`__contains__`. +magic methods :meth:`~object.__getitem__`, :meth:`~object.__setitem__`, +:meth:`~object.__delitem__` and either :meth:`~container.__iter__` or +:meth:`~object.__contains__`. >>> class Container: ... def __init__(self): @@ -1958,8 +1960,8 @@ Mocking Magic Methods ~~~~~~~~~~~~~~~~~~~~~ :class:`Mock` supports mocking the Python protocol methods, also known as -"magic methods". This allows mock objects to replace containers or other -objects that implement Python protocols. +:term:`"magic methods" <magic method>`. This allows mock objects to replace +containers or other objects that implement Python protocols. Because magic methods are looked up differently from normal methods [#]_, this support has been specially implemented. This means that only specific magic @@ -2057,8 +2059,8 @@ There are two ``MagicMock`` variants: :class:`MagicMock` and :class:`NonCallable .. class:: MagicMock(*args, **kw) ``MagicMock`` is a subclass of :class:`Mock` with default implementations - of most of the magic methods. You can use ``MagicMock`` without having to - configure the magic methods yourself. + of most of the :term:`magic methods <magic method>`. You can use + ``MagicMock`` without having to configure the magic methods yourself. The constructor parameters have the same meaning as for :class:`Mock`. @@ -2122,7 +2124,7 @@ For example: >>> object() in mock False -The two equality methods, :meth:`__eq__` and :meth:`__ne__`, are special. +The two equality methods, :meth:`!__eq__` and :meth:`!__ne__`, are special. They do the default equality comparison on identity, using the :attr:`~Mock.side_effect` attribute, unless you change their return value to return something else:: @@ -2472,8 +2474,8 @@ mock_open *read_data* is now reset on each call to the *mock*. .. versionchanged:: 3.8 - Added :meth:`__iter__` to implementation so that iteration (such as in for - loops) correctly consumes *read_data*. + Added :meth:`~container.__iter__` to implementation so that iteration + (such as in for loops) correctly consumes *read_data*. Using :func:`open` as a context manager is a great way to ensure your file handles are closed properly and is becoming common:: @@ -2655,7 +2657,7 @@ able to use autospec. On the other hand it is much better to design your objects so that introspection is safe [#]_. A more serious problem is that it is common for instance attributes to be -created in the :meth:`__init__` method and not to exist on the class at all. +created in the :meth:`~object.__init__` method and not to exist on the class at all. *autospec* can't know about any dynamically created attributes and restricts the api to visible attributes. :: @@ -2696,8 +2698,9 @@ this particular scenario: AttributeError: Mock object has no attribute 'a' Probably the best way of solving the problem is to add class attributes as -default values for instance members initialised in :meth:`__init__`. Note that if -you are only setting default attributes in :meth:`__init__` then providing them via +default values for instance members initialised in :meth:`~object.__init__`. +Note that if +you are only setting default attributes in :meth:`!__init__` then providing them via class attributes (shared between instances of course) is faster too. e.g. .. code-block:: python diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst index 0e62a04d672..d2f098cef39 100644 --- a/Doc/library/unittest.rst +++ b/Doc/library/unittest.rst @@ -346,8 +346,8 @@ the `load_tests protocol`_. ``python -m unittest discover -s root/namespace -t root``). .. versionchanged:: 3.11 - Python 3.11 dropped the :term:`namespace packages <namespace package>` - support. It has been broken since Python 3.7. Start directory and + :mod:`unittest` dropped the :term:`namespace packages <namespace package>` + support in Python 3.11. It has been broken since Python 3.7. Start directory and subdirectories containing tests must be regular package that have ``__init__.py`` file. @@ -390,8 +390,8 @@ testing code:: widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50)) -Note that in order to test something, we use one of the :meth:`assert\*` -methods provided by the :class:`TestCase` base class. If the test fails, an +Note that in order to test something, we use one of the :ref:`assert\* methods <assert-methods>` +provided by the :class:`TestCase` base class. If the test fails, an exception will be raised with an explanatory message, and :mod:`unittest` will identify the test case as a :dfn:`failure`. Any other exceptions will be treated as :dfn:`errors`. @@ -1725,7 +1725,7 @@ Grouping tests .. method:: __iter__() Tests grouped by a :class:`TestSuite` are always accessed by iteration. - Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note + Subclasses can lazily provide tests by overriding :meth:`!__iter__`. Note that this method may be called several times on a single suite (for example when counting tests or comparing for equality) so the tests returned by repeated iterations before :meth:`TestSuite.run` must be the @@ -1736,7 +1736,7 @@ Grouping tests .. versionchanged:: 3.2 In earlier versions the :class:`TestSuite` accessed tests directly rather - than through iteration, so overriding :meth:`__iter__` wasn't sufficient + than through iteration, so overriding :meth:`!__iter__` wasn't sufficient for providing tests. .. versionchanged:: 3.4 @@ -1932,14 +1932,14 @@ Loading and running tests String giving the prefix of method names which will be interpreted as test methods. The default value is ``'test'``. - This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` + This affects :meth:`getTestCaseNames` and all the ``loadTestsFrom*`` methods. .. attribute:: sortTestMethodsUsing Function to be used to compare method names when sorting them in - :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. + :meth:`getTestCaseNames` and all the ``loadTestsFrom*`` methods. .. attribute:: suiteClass @@ -1948,7 +1948,7 @@ Loading and running tests methods on the resulting object are needed. The default value is the :class:`TestSuite` class. - This affects all the :meth:`loadTestsFrom\*` methods. + This affects all the ``loadTestsFrom*`` methods. .. attribute:: testNamePatterns @@ -1961,7 +1961,7 @@ Loading and running tests so unlike patterns passed to the ``-k`` option, simple substring patterns will have to be converted using ``*`` wildcards. - This affects all the :meth:`loadTestsFrom\*` methods. + This affects all the ``loadTestsFrom*`` methods. .. versionadded:: 3.7 @@ -1995,7 +1995,7 @@ Loading and running tests A list containing 2-tuples of :class:`TestCase` instances and strings holding formatted tracebacks. Each tuple represents a test where a failure - was explicitly signalled using the :meth:`TestCase.assert\*` methods. + was explicitly signalled using the :ref:`assert\* methods <assert-methods>`. .. attribute:: skipped @@ -2188,8 +2188,8 @@ Loading and running tests .. versionadded:: 3.2 - .. versionadded:: 3.12 - Added *durations* keyword argument. + .. versionchanged:: 3.12 + Added the *durations* keyword parameter. .. data:: defaultTestLoader @@ -2282,7 +2282,7 @@ Loading and running tests The *testRunner* argument can either be a test runner class or an already created instance of it. By default ``main`` calls :func:`sys.exit` with an exit code indicating success (0) or failure (1) of the tests run. - An exit code of 5 indicates that no tests were run. + An exit code of 5 indicates that no tests were run or skipped. The *testLoader* argument has to be a :class:`TestLoader` instance, and defaults to :data:`defaultTestLoader`. diff --git a/Doc/library/urllib.parse.rst b/Doc/library/urllib.parse.rst index 53e5f039571..3c898c3e826 100644 --- a/Doc/library/urllib.parse.rst +++ b/Doc/library/urllib.parse.rst @@ -729,8 +729,8 @@ task isn't already covered by the URL parsing functions above. .. versionchanged:: 3.2 *query* supports bytes and string objects. - .. versionadded:: 3.5 - *quote_via* parameter. + .. versionchanged:: 3.5 + Added the *quote_via* parameter. .. seealso:: diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst index 002dab8a651..3751e81ecfc 100644 --- a/Doc/library/urllib.request.rst +++ b/Doc/library/urllib.request.rst @@ -21,6 +21,14 @@ authentication, redirections, cookies and more. The `Requests package <https://requests.readthedocs.io/en/master/>`_ is recommended for a higher-level HTTP client interface. +.. warning:: + + On macOS it is unsafe to use this module in programs using + :func:`os.fork` because the :func:`getproxies` implementation for + macOS uses a higher-level system API. Set the environment variable + ``no_proxy`` to ``*`` to avoid this problem + (e.g. ``os.environ["no_proxy"] = "*"``). + .. include:: ../includes/wasm-notavail.rst The :mod:`urllib.request` module defines the following functions: @@ -78,7 +86,7 @@ The :mod:`urllib.request` module defines the following functions: :class:`UnknownHandler` to ensure this never happens). In addition, if proxy settings are detected (for example, when a ``*_proxy`` - environment variable like :envvar:`http_proxy` is set), + environment variable like :envvar:`!http_proxy` is set), :class:`ProxyHandler` is default installed and makes sure the requests are handled through the proxy. @@ -113,7 +121,7 @@ The :mod:`urllib.request` module defines the following functions: .. versionchanged:: 3.10 HTTPS connection now send an ALPN extension with protocol indicator ``http/1.1`` when no *context* is given. Custom *context* should set - ALPN protocols with :meth:`~ssl.SSLContext.set_alpn_protocol`. + ALPN protocols with :meth:`~ssl.SSLContext.set_alpn_protocols`. .. deprecated:: 3.6 @@ -621,25 +629,25 @@ OpenerDirector Objects the actual HTTP code, for example :meth:`http_error_404` would handle HTTP 404 errors. - * :meth:`<protocol>_open` --- signal that the handler knows how to open *protocol* + * :meth:`!<protocol>_open` --- signal that the handler knows how to open *protocol* URLs. See |protocol_open|_ for more information. - * :meth:`http_error_\<type\>` --- signal that the handler knows how to handle HTTP + * :meth:`!http_error_\<type\>` --- signal that the handler knows how to handle HTTP errors with HTTP error code *type*. See |http_error_nnn|_ for more information. - * :meth:`<protocol>_error` --- signal that the handler knows how to handle errors + * :meth:`!<protocol>_error` --- signal that the handler knows how to handle errors from (non-\ ``http``) *protocol*. - * :meth:`<protocol>_request` --- signal that the handler knows how to pre-process + * :meth:`!<protocol>_request` --- signal that the handler knows how to pre-process *protocol* requests. See |protocol_request|_ for more information. - * :meth:`<protocol>_response` --- signal that the handler knows how to + * :meth:`!<protocol>_response` --- signal that the handler knows how to post-process *protocol* responses. See |protocol_response|_ for more information. @@ -666,7 +674,7 @@ OpenerDirector Objects Handle an error of the given protocol. This will call the registered error handlers for the given protocol with the given arguments (which are protocol specific). The HTTP protocol is a special case which uses the HTTP response - code to determine the specific error handler; refer to the :meth:`http_error_\<type\>` + code to determine the specific error handler; refer to the :meth:`!http_error_\<type\>` methods of the handler classes. Return values and exceptions raised are the same as those of :func:`urlopen`. @@ -676,25 +684,25 @@ OpenerDirector objects open URLs in three stages: The order in which these methods are called within each stage is determined by sorting the handler instances. -#. Every handler with a method named like :meth:`<protocol>_request` has that +#. Every handler with a method named like :meth:`!<protocol>_request` has that method called to pre-process the request. -#. Handlers with a method named like :meth:`<protocol>_open` are called to handle +#. Handlers with a method named like :meth:`!<protocol>_open` are called to handle the request. This stage ends when a handler either returns a non-\ :const:`None` value (ie. a response), or raises an exception (usually :exc:`~urllib.error.URLError`). Exceptions are allowed to propagate. In fact, the above algorithm is first tried for methods named - :meth:`default_open`. If all such methods return :const:`None`, the algorithm - is repeated for methods named like :meth:`<protocol>_open`. If all such methods + :meth:`~BaseHandler.default_open`. If all such methods return :const:`None`, the algorithm + is repeated for methods named like :meth:`!<protocol>_open`. If all such methods return :const:`None`, the algorithm is repeated for methods named - :meth:`unknown_open`. + :meth:`~BaseHandler.unknown_open`. Note that the implementation of these methods may involve calls of the parent :class:`OpenerDirector` instance's :meth:`~OpenerDirector.open` and :meth:`~OpenerDirector.error` methods. -#. Every handler with a method named like :meth:`<protocol>_response` has that +#. Every handler with a method named like :meth:`!<protocol>_response` has that method called to post-process the response. @@ -723,8 +731,8 @@ The following attribute and methods should only be used by classes derived from .. note:: The convention has been adopted that subclasses defining - :meth:`<protocol>_request` or :meth:`<protocol>_response` methods are named - :class:`\*Processor`; all others are named :class:`\*Handler`. + :meth:`!<protocol>_request` or :meth:`!<protocol>_response` methods are named + :class:`!\*Processor`; all others are named :class:`!\*Handler`. .. attribute:: BaseHandler.parent @@ -743,7 +751,7 @@ The following attribute and methods should only be used by classes derived from the return value of the :meth:`~OpenerDirector.open` method of :class:`OpenerDirector`, or ``None``. It should raise :exc:`~urllib.error.URLError`, unless a truly exceptional thing happens (for example, :exc:`MemoryError` should not be mapped to - :exc:`URLError`). + :exc:`~urllib.error.URLError`). This method will be called before any protocol-specific open method. @@ -756,7 +764,7 @@ The following attribute and methods should only be used by classes derived from define it if they want to handle URLs with the given protocol. This method, if defined, will be called by the parent :class:`OpenerDirector`. - Return values should be the same as for :meth:`default_open`. + Return values should be the same as for :meth:`~BaseHandler.default_open`. .. method:: BaseHandler.unknown_open(req) @@ -796,7 +804,7 @@ The following attribute and methods should only be used by classes derived from Subclasses should override this method to handle specific HTTP errors. Arguments, return values and exceptions raised should be the same as for - :meth:`http_error_default`. + :meth:`~BaseHandler.http_error_default`. .. _protocol_request: @@ -836,7 +844,7 @@ HTTPRedirectHandler Objects is the case, :exc:`~urllib.error.HTTPError` is raised. See :rfc:`2616` for details of the precise meanings of the various redirection codes. - An :class:`HTTPError` exception raised as a security consideration if the + An :exc:`~urllib.error.HTTPError` exception raised as a security consideration if the HTTPRedirectHandler is presented with a redirected URL which is not an HTTP, HTTPS or FTP URL. @@ -844,9 +852,9 @@ HTTPRedirectHandler Objects .. method:: HTTPRedirectHandler.redirect_request(req, fp, code, msg, hdrs, newurl) Return a :class:`Request` or ``None`` in response to a redirect. This is called - by the default implementations of the :meth:`http_error_30\*` methods when a + by the default implementations of the :meth:`!http_error_30\*` methods when a redirection is received from the server. If a redirection should take place, - return a new :class:`Request` to allow :meth:`http_error_30\*` to perform the + return a new :class:`Request` to allow :meth:`!http_error_30\*` to perform the redirect to *newurl*. Otherwise, raise :exc:`~urllib.error.HTTPError` if no other handler should try to handle this URL, or return ``None`` if you can't but another handler might. @@ -913,7 +921,7 @@ ProxyHandler Objects .. method:: ProxyHandler.<protocol>_open(request) :noindex: - The :class:`ProxyHandler` will have a method :meth:`<protocol>_open` for every + The :class:`ProxyHandler` will have a method :meth:`!<protocol>_open` for every *protocol* which has a proxy in the *proxies* dictionary given in the constructor. The method will modify requests to go through the proxy, by calling ``request.set_proxy()``, and call the next handler in the chain to @@ -1169,7 +1177,7 @@ HTTPErrorProcessor Objects For 200 error codes, the response object is returned immediately. For non-200 error codes, this simply passes the job on to the - :meth:`http_error_\<type\>` handler methods, via :meth:`OpenerDirector.error`. + :meth:`!http_error_\<type\>` handler methods, via :meth:`OpenerDirector.error`. Eventually, :class:`HTTPDefaultErrorHandler` will raise an :exc:`~urllib.error.HTTPError` if no other handler handles the error. @@ -1276,7 +1284,7 @@ Use of Basic HTTP Authentication:: :func:`build_opener` provides many handlers by default, including a :class:`ProxyHandler`. By default, :class:`ProxyHandler` uses the environment variables named ``<scheme>_proxy``, where ``<scheme>`` is the URL scheme -involved. For example, the :envvar:`http_proxy` environment variable is read to +involved. For example, the :envvar:`!http_proxy` environment variable is read to obtain the HTTP proxy's URL. This example replaces the default :class:`ProxyHandler` with one that uses @@ -1371,7 +1379,7 @@ some point in the future. points to a local file, the object will not be copied unless filename is supplied. Return a tuple ``(filename, headers)`` where *filename* is the local file name under which the object can be found, and *headers* is whatever - the :meth:`info` method of the object returned by :func:`urlopen` returned (for + the :meth:`!info` method of the object returned by :func:`urlopen` returned (for a remote object). Exceptions are the same as for :func:`urlopen`. The second argument, if present, specifies the file location to copy to (if @@ -1396,7 +1404,7 @@ some point in the future. :mimetype:`application/x-www-form-urlencoded` format; see the :func:`urllib.parse.urlencode` function. - :func:`urlretrieve` will raise :exc:`ContentTooShortError` when it detects that + :func:`urlretrieve` will raise :exc:`~urllib.error.ContentTooShortError` when it detects that the amount of data available was less than the expected amount (which is the size reported by a *Content-Length* header). This can occur, for example, when the download is interrupted. @@ -1405,8 +1413,8 @@ some point in the future. urlretrieve reads more data, but if less data is available, it raises the exception. - You can still retrieve the downloaded data in this case, it is stored in the - :attr:`content` attribute of the exception instance. + You can still retrieve the downloaded data in this case, it is stored in the + :attr:`!content` attribute of the exception instance. If no *Content-Length* header was supplied, urlretrieve can not check the size of the data it has downloaded, and just returns it. In this case you just have @@ -1500,7 +1508,7 @@ some point in the future. authentication is performed. For the 30x response codes, recursion is bounded by the value of the *maxtries* attribute, which defaults to 10. - For all other response codes, the method :meth:`http_error_default` is called + For all other response codes, the method :meth:`~BaseHandler.http_error_default` is called which you can override in subclasses to handle the error appropriately. .. note:: diff --git a/Doc/library/urllib.robotparser.rst b/Doc/library/urllib.robotparser.rst index f063e463753..b5a49d9c592 100644 --- a/Doc/library/urllib.robotparser.rst +++ b/Doc/library/urllib.robotparser.rst @@ -5,7 +5,7 @@ :synopsis: Load a robots.txt file and answer questions about fetchability of other URLs. -.. sectionauthor:: Skip Montanaro <skip@pobox.com> +.. sectionauthor:: Skip Montanaro <skip.montanaro@gmail.com> **Source code:** :source:`Lib/urllib/robotparser.py` diff --git a/Doc/library/venv.rst b/Doc/library/venv.rst index 18af1d41e40..8aaf5050b9c 100644 --- a/Doc/library/venv.rst +++ b/Doc/library/venv.rst @@ -194,10 +194,10 @@ creation according to their needs, the :class:`EnvBuilder` class. .. versionchanged:: 3.4 Added the ``with_pip`` parameter - .. versionadded:: 3.6 + .. versionchanged:: 3.6 Added the ``prompt`` parameter - .. versionadded:: 3.9 + .. versionchanged:: 3.9 Added the ``upgrade_deps`` parameter Creators of third-party virtual environment tools will be free to use the diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst index 884de08eab1..db3534dd632 100644 --- a/Doc/library/warnings.rst +++ b/Doc/library/warnings.rst @@ -396,7 +396,7 @@ Available Functions ------------------- -.. function:: warn(message, category=None, stacklevel=1, source=None, \*, skip_file_prefixes=None) +.. function:: warn(message, category=None, stacklevel=1, source=None, *, skip_file_prefixes=None) Issue a warning, or maybe ignore it or raise an exception. The *category* argument, if given, must be a :ref:`warning category class <warning-categories>`; it diff --git a/Doc/library/wsgiref.rst b/Doc/library/wsgiref.rst index be9e56b04c1..c2b0ba70469 100644 --- a/Doc/library/wsgiref.rst +++ b/Doc/library/wsgiref.rst @@ -201,8 +201,9 @@ manipulation of WSGI response headers using a mapping-like interface. an empty list. :class:`Headers` objects support typical mapping operations including - :meth:`~object.__getitem__`, :meth:`get`, :meth:`__setitem__`, :meth:`setdefault`, - :meth:`__delitem__` and :meth:`__contains__`. For each of + :meth:`~object.__getitem__`, :meth:`~dict.get`, :meth:`~object.__setitem__`, + :meth:`~dict.setdefault`, + :meth:`~object.__delitem__` and :meth:`~object.__contains__`. For each of these methods, the key is the header name (treated case-insensitively), and the value is the first value associated with that header name. Setting a header deletes any existing values for that header, then adds a new value at the end of @@ -520,8 +521,10 @@ input, output, and error streams. want to subclass this instead of :class:`BaseCGIHandler`. This class is a subclass of :class:`BaseHandler`. It overrides the - :meth:`__init__`, :meth:`get_stdin`, :meth:`get_stderr`, :meth:`add_cgi_vars`, - :meth:`_write`, and :meth:`_flush` methods to support explicitly setting the + :meth:`!__init__`, :meth:`~BaseHandler.get_stdin`, + :meth:`~BaseHandler.get_stderr`, :meth:`~BaseHandler.add_cgi_vars`, + :meth:`~BaseHandler._write`, and :meth:`~BaseHandler._flush` methods to + support explicitly setting the environment and streams via the constructor. The supplied environment and streams are stored in the :attr:`stdin`, :attr:`stdout`, :attr:`stderr`, and :attr:`environ` attributes. diff --git a/Doc/library/xml.dom.rst b/Doc/library/xml.dom.rst index b387240a371..d0e1b248d59 100644 --- a/Doc/library/xml.dom.rst +++ b/Doc/library/xml.dom.rst @@ -734,7 +734,7 @@ NamedNodeMap Objects attribute node. Get its value with the :attr:`value` attribute. There are also experimental methods that give this class more mapping behavior. -You can use them or you can use the standardized :meth:`getAttribute\*` family +You can use them or you can use the standardized :meth:`!getAttribute\*` family of methods on the :class:`Element` objects. diff --git a/Doc/library/xml.etree.elementtree.rst b/Doc/library/xml.etree.elementtree.rst index 57cfbb8d922..bb6773c361a 100644 --- a/Doc/library/xml.etree.elementtree.rst +++ b/Doc/library/xml.etree.elementtree.rst @@ -664,7 +664,7 @@ Functions given. Returns an element instance, representing a processing instruction. Note that :class:`XMLParser` skips over processing instructions - in the input instead of creating comment objects for them. An + in the input instead of creating PI objects for them. An :class:`ElementTree` will only contain processing instruction nodes if they have been inserted into to the tree using one of the :class:`Element` methods. @@ -705,11 +705,11 @@ Functions meaning as in :meth:`ElementTree.write`. Returns an (optionally) encoded string containing the XML data. - .. versionadded:: 3.4 - The *short_empty_elements* parameter. + .. versionchanged:: 3.4 + Added the *short_empty_elements* parameter. - .. versionadded:: 3.8 - The *xml_declaration* and *default_namespace* parameters. + .. versionchanged:: 3.8 + Added the *xml_declaration* and *default_namespace* parameters. .. versionchanged:: 3.8 The :func:`tostring` function now preserves the attribute order @@ -732,11 +732,11 @@ Functions .. versionadded:: 3.2 - .. versionadded:: 3.4 - The *short_empty_elements* parameter. + .. versionchanged:: 3.4 + Added the *short_empty_elements* parameter. - .. versionadded:: 3.8 - The *xml_declaration* and *default_namespace* parameters. + .. versionchanged:: 3.8 + Added the *xml_declaration* and *default_namespace* parameters. .. versionchanged:: 3.8 The :func:`tostringlist` function now preserves the attribute order @@ -858,8 +858,8 @@ Functions this is a Unicode string. If the loader fails, it can return None or raise an exception. - .. versionadded:: 3.9 - The *base_url* and *max_depth* parameters. + .. versionchanged:: 3.9 + Added the *base_url* and *max_depth* parameters. .. _elementtree-element-objects: @@ -1189,8 +1189,8 @@ ElementTree Objects :term:`file object`; make sure you do not try to write a string to a binary stream and vice versa. - .. versionadded:: 3.4 - The *short_empty_elements* parameter. + .. versionchanged:: 3.4 + Added the *short_empty_elements* parameter. .. versionchanged:: 3.8 The :meth:`write` method now preserves the attribute order specified @@ -1302,8 +1302,8 @@ TreeBuilder Objects .. method:: pi(target, text) - Creates a comment with the given *target* name and *text*. If - ``insert_pis`` is true, this will also add it to the tree. + Creates a process instruction with the given *target* name and *text*. + If ``insert_pis`` is true, this will also add it to the tree. .. versionadded:: 3.8 diff --git a/Doc/library/xml.sax.utils.rst b/Doc/library/xml.sax.utils.rst index e57e76dcac7..3a524c9c0d5 100644 --- a/Doc/library/xml.sax.utils.rst +++ b/Doc/library/xml.sax.utils.rst @@ -71,8 +71,8 @@ or as base classes. content: if ``False`` (the default) they are emitted as a pair of start/end tags, if set to ``True`` they are emitted as a single self-closed tag. - .. versionadded:: 3.2 - The *short_empty_elements* parameter. + .. versionchanged:: 3.2 + Added the *short_empty_elements* parameter. .. class:: XMLFilterBase(base) diff --git a/Doc/library/xmlrpc.client.rst b/Doc/library/xmlrpc.client.rst index 146c4fd7682..f7f23007fb0 100644 --- a/Doc/library/xmlrpc.client.rst +++ b/Doc/library/xmlrpc.client.rst @@ -269,8 +269,9 @@ DateTime Objects Write the XML-RPC encoding of this :class:`DateTime` item to the *out* stream object. - It also supports certain of Python's built-in operators through rich comparison - and :meth:`__repr__` methods. + It also supports certain of Python's built-in operators through + :meth:`rich comparison <object.__lt__>` and :meth:`~object.__repr__` + methods. A working example follows. The server code:: @@ -334,8 +335,8 @@ Binary Objects which was the de facto standard base64 specification when the XML-RPC spec was written. - It also supports certain of Python's built-in operators through :meth:`__eq__` - and :meth:`__ne__` methods. + It also supports certain of Python's built-in operators through + :meth:`~object.__eq__` and :meth:`~object.__ne__` methods. Example usage of the binary objects. We're going to transfer an image over XMLRPC:: diff --git a/Doc/library/xmlrpc.server.rst b/Doc/library/xmlrpc.server.rst index 016369d2b89..ca1ea455f0a 100644 --- a/Doc/library/xmlrpc.server.rst +++ b/Doc/library/xmlrpc.server.rst @@ -84,12 +84,12 @@ alone XML-RPC servers. Register a function that can respond to XML-RPC requests. If *name* is given, it will be the method name associated with *function*, otherwise - ``function.__name__`` will be used. *name* is a string, and may contain + :attr:`function.__name__` will be used. *name* is a string, and may contain characters not legal in Python identifiers, including the period character. This method can also be used as a decorator. When used as a decorator, *name* can only be given as a keyword argument to register *function* under - *name*. If no *name* is given, ``function.__name__`` will be used. + *name*. If no *name* is given, :attr:`function.__name__` will be used. .. versionchanged:: 3.7 :meth:`register_function` can be used as a decorator. @@ -298,12 +298,12 @@ requests sent to Python CGI scripts. Register a function that can respond to XML-RPC requests. If *name* is given, it will be the method name associated with *function*, otherwise - ``function.__name__`` will be used. *name* is a string, and may contain + :attr:`function.__name__` will be used. *name* is a string, and may contain characters not legal in Python identifiers, including the period character. This method can also be used as a decorator. When used as a decorator, *name* can only be given as a keyword argument to register *function* under - *name*. If no *name* is given, ``function.__name__`` will be used. + *name*. If no *name* is given, :attr:`function.__name__` will be used. .. versionchanged:: 3.7 :meth:`register_function` can be used as a decorator. diff --git a/Doc/library/zipapp.rst b/Doc/library/zipapp.rst index 104afca23a2..c8a059bdb1c 100644 --- a/Doc/library/zipapp.rst +++ b/Doc/library/zipapp.rst @@ -171,8 +171,8 @@ The module defines two convenience functions: passed to the ``zipfile.ZipFile`` class, and must supply the methods needed by that class. - .. versionadded:: 3.7 - Added the *filter* and *compressed* arguments. + .. versionchanged:: 3.7 + Added the *filter* and *compressed* parameters. .. function:: get_interpreter(archive) diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst index c011656d9ef..d12bd68b1c9 100644 --- a/Doc/library/zipfile.rst +++ b/Doc/library/zipfile.rst @@ -213,7 +213,7 @@ ZipFile Objects That flag takes precedence over *metadata_encoding*, which is a Python-specific extension. - .. versionadded:: 3.2 + .. versionchanged:: 3.2 Added the ability to use :class:`ZipFile` as a context manager. .. versionchanged:: 3.3 @@ -236,8 +236,8 @@ ZipFile Objects .. versionchanged:: 3.7 Add the *compresslevel* parameter. - .. versionadded:: 3.8 - The *strict_timestamps* keyword-only argument + .. versionchanged:: 3.8 + The *strict_timestamps* keyword-only parameter. .. versionchanged:: 3.11 Added support for specifying member name encoding for reading @@ -642,8 +642,8 @@ The :class:`PyZipFile` constructor takes the same parameters as the .. class:: PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, \ optimize=-1) - .. versionadded:: 3.2 - The *optimize* parameter. + .. versionchanged:: 3.2 + Added the *optimize* parameter. .. versionchanged:: 3.4 ZIP64 extensions are enabled by default. @@ -698,8 +698,8 @@ The :class:`PyZipFile` constructor takes the same parameters as the test/bogus/__init__.pyc # Subpackage directory test/bogus/myfile.pyc # Submodule test.bogus.myfile - .. versionadded:: 3.4 - The *filterfunc* parameter. + .. versionchanged:: 3.4 + Added the *filterfunc* parameter. .. versionchanged:: 3.6.2 The *pathname* parameter accepts a :term:`path-like object`. @@ -743,8 +743,8 @@ file: .. versionchanged:: 3.6.2 The *filename* parameter accepts a :term:`path-like object`. - .. versionadded:: 3.8 - The *strict_timestamps* keyword-only argument + .. versionchanged:: 3.8 + Added the *strict_timestamps* keyword-only parameter. Instances have the following methods and attributes: diff --git a/Doc/license.rst b/Doc/license.rst index 1b209922b09..21dbd8ebf43 100644 --- a/Doc/license.rst +++ b/Doc/license.rst @@ -1045,26 +1045,58 @@ https://www.w3.org/TR/xml-c14n2-testcases/ and is distributed under the Audioop ------- -The audioop module uses the code base in g771.c file of the SoX project:: - - Programming the AdLib/Sound Blaster - FM Music Chips - Version 2.0 (24 Feb 1992) - Copyright (c) 1991, 1992 by Jeffrey S. Lee - jlee@smylex.uucp - Warranty and Copyright Policy - This document is provided on an "as-is" basis, and its author makes - no warranty or representation, express or implied, with respect to - its quality performance or fitness for a particular purpose. In no - event will the author of this document be liable for direct, indirect, - special, incidental, or consequential damages arising out of the use - or inability to use the information contained within. Use of this - document is at your own risk. - This file may be used and copied freely so long as the applicable - copyright notices are retained, and no modifications are made to the - text of the document. No money shall be charged for its distribution - beyond reasonable shipping, handling and duplication costs, nor shall - proprietary changes be made to this document so that it cannot be - distributed freely. This document may not be included in published - material or commercial packages without the written consent of its - author. +The audioop module uses the code base in g771.c file of the SoX project. +https://sourceforge.net/projects/sox/files/sox/12.17.7/sox-12.17.7.tar.gz + + This source code is a product of Sun Microsystems, Inc. and is provided + for unrestricted use. Users may copy or modify this source code without + charge. + + SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING + THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + + Sun source code is provided with no support and without any obligation on + the part of Sun Microsystems, Inc. to assist in its use, correction, + modification or enhancement. + + SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE + OR ANY PART THEREOF. + + In no event will Sun Microsystems, Inc. be liable for any lost revenue + or profits or other special, indirect and consequential damages, even if + Sun has been advised of the possibility of such damages. + + Sun Microsystems, Inc. + 2550 Garcia Avenue + Mountain View, California 94043 + + +asyncio +---------- + +Parts of the :mod:`asyncio` module are incorporated from +`uvloop 0.16 <https://github.com/MagicStack/uvloop/tree/v0.16.0>`_, +which is distributed under the MIT license:: + + Copyright (c) 2015-2021 MagicStack Inc. http://magic.io + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 8f648133983..374404bf33a 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -1261,7 +1261,8 @@ except that the original function is not temporarily bound to the name ``func``. A list of :ref:`type parameters <type-params>` may be given in square brackets between the function's name and the opening parenthesis for its parameter list. This indicates to static type checkers that the function is generic. At runtime, -the type parameters can be retrieved from the function's ``__type_params__`` +the type parameters can be retrieved from the function's +:attr:`~function.__type_params__` attribute. See :ref:`generic-functions` for more. .. versionchanged:: 3.12 @@ -1361,12 +1362,15 @@ access the local variables of the function containing the def. See section :pep:`526` - Syntax for Variable Annotations Ability to type hint variable declarations, including class - variables and instance variables + variables and instance variables. :pep:`563` - Postponed Evaluation of Annotations Support for forward references within annotations by preserving annotations in a string form at runtime instead of eager evaluation. + :pep:`318` - Decorators for Functions and Methods + Function and method decorators were introduced. + Class decorators were introduced in :pep:`3129`. .. _class: @@ -1868,8 +1872,8 @@ like ``TYPE_PARAMS_OF_ListOrSet`` are not actually bound at runtime. are mappings. .. [#] A string literal appearing as the first statement in the function body is - transformed into the function's ``__doc__`` attribute and therefore the - function's :term:`docstring`. + transformed into the function's :attr:`~function.__doc__` attribute and + therefore the function's :term:`docstring`. .. [#] A string literal appearing as the first statement in the class body is transformed into the namespace's ``__doc__`` item and therefore the class's diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 017b572f2f0..fcb65b8919b 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -519,6 +519,8 @@ These are the types to which the function call operation (see section :ref:`calls`) can be applied: +.. _user-defined-funcs: + User-defined functions ^^^^^^^^^^^^^^^^^^^^^^ @@ -532,9 +534,34 @@ section :ref:`function`). It should be called with an argument list containing the same number of items as the function's formal parameter list. -Special attributes: +Special read-only attributes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. index:: + single: __closure__ (function attribute) + single: __globals__ (function attribute) + pair: global; namespace -.. tabularcolumns:: |l|L|l| +.. list-table:: + :header-rows: 1 + + * - Attribute + - Meaning + + * - .. attribute:: function.__globals__ + - A reference to the :class:`dictionary <dict>` that holds the function's + :ref:`global variables <naming>` -- the global namespace of the module + in which the function was defined. + + * - .. attribute:: function.__closure__ + - ``None`` or a :class:`tuple` of cells that contain bindings for the + function's free variables. + + A cell object has the attribute ``cell_contents``. + This can be used to get the value of the cell, as well as set the value. + +Special writable attributes +~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. index:: single: __doc__ (function attribute) @@ -542,96 +569,81 @@ Special attributes: single: __module__ (function attribute) single: __dict__ (function attribute) single: __defaults__ (function attribute) - single: __closure__ (function attribute) single: __code__ (function attribute) - single: __globals__ (function attribute) single: __annotations__ (function attribute) single: __kwdefaults__ (function attribute) single: __type_params__ (function attribute) - pair: global; namespace -+-------------------------+-------------------------------+-----------+ -| Attribute | Meaning | | -+=========================+===============================+===========+ -| :attr:`__doc__` | The function's documentation | Writable | -| | string, or ``None`` if | | -| | unavailable; not inherited by | | -| | subclasses. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`~definition.\ | The function's name. | Writable | -| __name__` | | | -+-------------------------+-------------------------------+-----------+ -| :attr:`~definition.\ | The function's | Writable | -| __qualname__` | :term:`qualified name`. | | -| | | | -| | .. versionadded:: 3.3 | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__module__` | The name of the module the | Writable | -| | function was defined in, or | | -| | ``None`` if unavailable. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__defaults__` | A tuple containing default | Writable | -| | argument values for those | | -| | arguments that have defaults, | | -| | or ``None`` if no arguments | | -| | have a default value. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__code__` | The code object representing | Writable | -| | the compiled function body. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__globals__` | A reference to the dictionary | Read-only | -| | that holds the function's | | -| | global variables --- the | | -| | global namespace of the | | -| | module in which the function | | -| | was defined. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`~object.__dict__`| The namespace supporting | Writable | -| | arbitrary function | | -| | attributes. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__closure__` | ``None`` or a tuple of cells | Read-only | -| | that contain bindings for the | | -| | function's free variables. | | -| | See below for information on | | -| | the ``cell_contents`` | | -| | attribute. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__annotations__` | A dict containing annotations | Writable | -| | of parameters. The keys of | | -| | the dict are the parameter | | -| | names, and ``'return'`` for | | -| | the return annotation, if | | -| | provided. For more | | -| | information on working with | | -| | this attribute, see | | -| | :ref:`annotations-howto`. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__kwdefaults__` | A dict containing defaults | Writable | -| | for keyword-only parameters. | | -+-------------------------+-------------------------------+-----------+ -| :attr:`__type_params__` | A tuple containing the | Writable | -| | :ref:`type parameters | | -| | <type-params>` of a | | -| | :ref:`generic function | | -| | <generic-functions>`. | | -+-------------------------+-------------------------------+-----------+ - -Most of the attributes labelled "Writable" check the type of the assigned value. +Most of these attributes check the type of the assigned value: + +.. list-table:: + :header-rows: 1 + + * - Attribute + - Meaning + + * - .. attribute:: function.__doc__ + - The function's documentation string, or ``None`` if unavailable. + Not inherited by subclasses. + + * - .. attribute:: function.__name__ + - The function's name. + See also: :attr:`__name__ attributes <definition.__name__>`. + + * - .. attribute:: function.__qualname__ + - The function's :term:`qualified name`. + See also: :attr:`__qualname__ attributes <definition.__qualname__>`. + + .. versionadded:: 3.3 + + * - .. attribute:: function.__module__ + - The name of the module the function was defined in, + or ``None`` if unavailable. + + * - .. attribute:: function.__defaults__ + - A :class:`tuple` containing default :term:`parameter` values + for those parameters that have defaults, + or ``None`` if no parameters have a default value. + + * - .. attribute:: function.__code__ + - The :ref:`code object <code-objects>` representing + the compiled function body. + + * - .. attribute:: function.__dict__ + - The namespace supporting arbitrary function attributes. + See also: :attr:`__dict__ attributes <object.__dict__>`. + + * - .. attribute:: function.__annotations__ + - A :class:`dictionary <dict>` containing annotations of + :term:`parameters <parameter>`. + The keys of the dictionary are the parameter names, + and ``'return'`` for the return annotation, if provided. + See also: :ref:`annotations-howto`. + + * - .. attribute:: function.__kwdefaults__ + - A :class:`dictionary <dict>` containing defaults for keyword-only + :term:`parameters <parameter>`. + + * - .. attribute:: function.__type_params__ + - A :class:`tuple` containing the :ref:`type parameters <type-params>` of + a :ref:`generic function <generic-functions>`. + + .. versionadded:: 3.12 Function objects also support getting and setting arbitrary attributes, which can be used, for example, to attach metadata to functions. Regular attribute -dot-notation is used to get and set such attributes. *Note that the current -implementation only supports function attributes on user-defined functions. -Function attributes on built-in functions may be supported in the future.* +dot-notation is used to get and set such attributes. + +.. impl-detail:: -A cell object has the attribute ``cell_contents``. This can be used to get -the value of the cell, as well as set the value. + CPython's current implementation only supports function attributes + on user-defined functions. Function attributes on + :ref:`built-in functions <builtin-functions>` may be supported in the + future. Additional information about a function's definition can be retrieved from its -code object; see the description of internal types below. The -:data:`cell <types.CellType>` type can be accessed in the :mod:`types` -module. +:ref:`code object <code-objects>` +(accessible via the :attr:`~function.__code__` attribute). .. _instance-methods: @@ -654,43 +666,66 @@ callable object (normally a user-defined function). single: __name__ (method attribute) single: __module__ (method attribute) -Special read-only attributes: :attr:`__self__` is the class instance object, -:attr:`__func__` is the function object; :attr:`__doc__` is the method's -documentation (same as ``__func__.__doc__``); :attr:`~definition.__name__` is the -method name (same as ``__func__.__name__``); :attr:`__module__` is the -name of the module the method was defined in, or ``None`` if unavailable. +Special read-only attributes: + +.. list-table:: + + * - .. attribute:: method.__self__ + - Refers to the class instance object to which the method is + :ref:`bound <method-binding>` + + * - .. attribute:: method.__func__ + - Refers to the original :ref:`function object <user-defined-funcs>` + + * - .. attribute:: method.__doc__ + - The method's documentation + (same as :attr:`method.__func__.__doc__ <function.__doc__>`). + A :class:`string <str>` if the original function had a docstring, else + ``None``. + + * - .. attribute:: method.__name__ + - The name of the method + (same as :attr:`method.__func__.__name__ <function.__name__>`) + + * - .. attribute:: method.__module__ + - The name of the module the method was defined in, or ``None`` if + unavailable. Methods also support accessing (but not setting) the arbitrary function -attributes on the underlying function object. +attributes on the underlying :ref:`function object <user-defined-funcs>`. User-defined method objects may be created when getting an attribute of a class (perhaps via an instance of that class), if that attribute is a -user-defined function object or a class method object. +user-defined :ref:`function object <user-defined-funcs>` or a +:class:`classmethod` object. + +.. _method-binding: When an instance method object is created by retrieving a user-defined -function object from a class via one of its instances, its -:attr:`__self__` attribute is the instance, and the method object is said -to be bound. The new method's :attr:`__func__` attribute is the original -function object. - -When an instance method object is created by retrieving a class method -object from a class or instance, its :attr:`__self__` attribute is the -class itself, and its :attr:`__func__` attribute is the function object +:ref:`function object <user-defined-funcs>` from a class via one of its +instances, its :attr:`~method.__self__` attribute is the instance, and the +method object is said to be *bound*. The new method's :attr:`~method.__func__` +attribute is the original function object. + +When an instance method object is created by retrieving a :class:`classmethod` +object from a class or instance, its :attr:`~method.__self__` attribute is the +class itself, and its :attr:`~method.__func__` attribute is the function object underlying the class method. When an instance method object is called, the underlying function -(:attr:`__func__`) is called, inserting the class instance -(:attr:`__self__`) in front of the argument list. For instance, when +(:attr:`~method.__func__`) is called, inserting the class instance +(:attr:`~method.__self__`) in front of the argument list. For instance, when :class:`!C` is a class which contains a definition for a function :meth:`!f`, and ``x`` is an instance of :class:`!C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``. -When an instance method object is derived from a class method object, the -"class instance" stored in :attr:`__self__` will actually be the class +When an instance method object is derived from a :class:`classmethod` object, the +"class instance" stored in :attr:`~method.__self__` will actually be the class itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to calling ``f(C,1)`` where ``f`` is the underlying function. -Note that the transformation from function object to instance method +Note that the transformation from :ref:`function object <user-defined-funcs>` +to instance method object happens each time the attribute is retrieved from the instance. In some cases, a fruitful optimization is to assign the attribute to a local variable and call that local variable. Also notice that this @@ -756,6 +791,8 @@ is raised and the asynchronous iterator will have reached the end of the set of values to be yielded. +.. _builtin-functions: + Built-in functions ^^^^^^^^^^^^^^^^^^ @@ -768,11 +805,17 @@ A built-in function object is a wrapper around a C function. Examples of built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a standard built-in module). The number and type of the arguments are determined by the C function. Special read-only attributes: -:attr:`__doc__` is the function's documentation string, or ``None`` if -unavailable; :attr:`~definition.__name__` is the function's name; :attr:`__self__` is -set to ``None`` (but see the next item); :attr:`__module__` is the name of -the module the function was defined in or ``None`` if unavailable. +* :attr:`!__doc__` is the function's documentation string, or ``None`` if + unavailable. See :attr:`function.__doc__`. +* :attr:`!__name__` is the function's name. See :attr:`function.__name__`. +* :attr:`!__self__` is set to ``None`` (but see the next item). +* :attr:`!__module__` is the name of + the module the function was defined in or ``None`` if unavailable. + See :attr:`function.__module__`. + + +.. _builtin-methods: Built-in methods ^^^^^^^^^^^^^^^^ @@ -785,8 +828,9 @@ Built-in methods This is really a different disguise of a built-in function, this time containing an object passed to the C function as an implicit extra argument. An example of a built-in method is ``alist.append()``, assuming *alist* is a list object. In -this case, the special read-only attribute :attr:`__self__` is set to the object -denoted by *alist*. +this case, the special read-only attribute :attr:`!__self__` is set to the object +denoted by *alist*. (The attribute has the same semantics as it does with +:attr:`other instance methods <method.__self__>`.) Classes @@ -818,7 +862,8 @@ the :ref:`import system <importsystem>` as invoked either by the :keyword:`import` statement, or by calling functions such as :func:`importlib.import_module` and built-in :func:`__import__`. A module object has a namespace implemented by a -dictionary object (this is the dictionary referenced by the ``__globals__`` +:class:`dictionary <dict>` object (this is the dictionary referenced by the +:attr:`~function.__globals__` attribute of functions defined in the module). Attribute references are translated to lookups in this dictionary, e.g., ``m.x`` is equivalent to ``m.__dict__["x"]``. A module object does not contain the code object used @@ -901,8 +946,9 @@ https://www.python.org/download/releases/2.3/mro/. When a class attribute reference (for class :class:`!C`, say) would yield a class method object, it is transformed into an instance method object whose -:attr:`__self__` attribute is :class:`!C`. When it would yield a static -method object, it is transformed into the object wrapped by the static method +:attr:`~method.__self__` attribute is :class:`!C`. +When it would yield a :class:`staticmethod` object, +it is transformed into the object wrapped by the static method object. See section :ref:`descriptors` for another way in which attributes retrieved from a class may differ from those actually contained in its :attr:`~object.__dict__`. @@ -970,7 +1016,7 @@ in which attribute references are searched. When an attribute is not found there, and the instance's class has an attribute by that name, the search continues with the class attributes. If a class attribute is found that is a user-defined function object, it is transformed into an instance method -object whose :attr:`__self__` attribute is the instance. Static method and +object whose :attr:`~method.__self__` attribute is the instance. Static method and class method objects are also transformed; see above under "Classes". See section :ref:`descriptors` for another way in which attributes of a class retrieved via its instances may differ from the objects actually stored in @@ -1173,8 +1219,8 @@ If a code object represents a function, the first item in :attr:`~codeobject.co_consts` is the documentation string of the function, or ``None`` if undefined. -The :meth:`!co_positions` method -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Methods on code objects +~~~~~~~~~~~~~~~~~~~~~~~ .. method:: codeobject.co_positions() @@ -1209,6 +1255,41 @@ The :meth:`!co_positions` method :option:`-X` ``no_debug_ranges`` command line flag or the :envvar:`PYTHONNODEBUGRANGES` environment variable can be used. +.. method:: codeobject.co_lines() + + Returns an iterator that yields information about successive ranges of + :term:`bytecode`\s. Each item yielded is a ``(start, end, lineno)`` + :class:`tuple`: + + * ``start`` (an :class:`int`) represents the offset (inclusive) of the start + of the :term:`bytecode` range + * ``end`` (an :class:`int`) represents the offset (exclusive) of the end of + the :term:`bytecode` range + * ``lineno`` is an :class:`int` representing the line number of the + :term:`bytecode` range, or ``None`` if the bytecodes in the given range + have no line number + + The items yielded will have the following properties: + + * The first range yielded will have a ``start`` of 0. + * The ``(start, end)`` ranges will be non-decreasing and consecutive. That + is, for any pair of :class:`tuple`\s, the ``start`` of the second will be + equal to the ``end`` of the first. + * No range will be backwards: ``end >= start`` for all triples. + * The last :class:`tuple` yielded will have ``end`` equal to the size of the + :term:`bytecode`. + + Zero-width ranges, where ``start == end``, are allowed. Zero-width ranges + are used for lines that are present in the source code, but have been + eliminated by the :term:`bytecode` compiler. + + .. versionadded:: 3.10 + + .. seealso:: + + :pep:`626` - Precise line numbers for debugging and other tools. + The PEP that introduced the :meth:`!co_lines` method. + .. _frame-objects: @@ -1217,8 +1298,9 @@ Frame objects .. index:: pair: object; frame -Frame objects represent execution frames. They may occur in traceback objects -(see below), and are also passed to registered trace functions. +Frame objects represent execution frames. They may occur in +:ref:`traceback objects <traceback-objects>`, +and are also passed to registered trace functions. .. index:: single: f_back (frame attribute) @@ -1325,26 +1407,31 @@ Traceback objects single: sys.exception single: sys.last_traceback -Traceback objects represent a stack trace of an exception. A traceback object +Traceback objects represent the stack trace of an :ref:`exception <tut-errors>`. +A traceback object is implicitly created when an exception occurs, and may also be explicitly created by calling :class:`types.TracebackType`. +.. versionchanged:: 3.7 + Traceback objects can now be explicitly instantiated from Python code. + For implicitly created tracebacks, when the search for an exception handler unwinds the execution stack, at each unwound level a traceback object is inserted in front of the current traceback. When an exception handler is entered, the stack trace is made available to the program. (See section :ref:`try`.) It is accessible as the third item of the -tuple returned by ``sys.exc_info()``, and as the ``__traceback__`` attribute +tuple returned by :func:`sys.exc_info`, and as the +:attr:`~BaseException.__traceback__` attribute of the caught exception. When the program contains no suitable handler, the stack trace is written (nicely formatted) to the standard error stream; if the interpreter is interactive, it is also made available to the user -as ``sys.last_traceback``. +as :data:`sys.last_traceback`. For explicitly created tracebacks, it is up to the creator of the traceback -to determine how the ``tb_next`` attributes should be linked to form a -full stack trace. +to determine how the :attr:`~traceback.tb_next` attributes should be linked to +form a full stack trace. .. index:: single: tb_frame (traceback attribute) @@ -1353,27 +1440,40 @@ full stack trace. pair: statement; try Special read-only attributes: -:attr:`tb_frame` points to the execution frame of the current level; -:attr:`tb_lineno` gives the line number where the exception occurred; -:attr:`tb_lasti` indicates the precise instruction. + +.. list-table:: + + * - .. attribute:: traceback.tb_frame + - Points to the execution :ref:`frame <frame-objects>` of the current + level. + + Accessing this attribute raises an + :ref:`auditing event <auditing>` ``object.__getattr__`` with arguments + ``obj`` and ``"tb_frame"``. + + * - .. attribute:: traceback.tb_lineno + - Gives the line number where the exception occurred + + * - .. attribute:: traceback.tb_lasti + - Indicates the "precise instruction". + The line number and last instruction in the traceback may differ from the -line number of its frame object if the exception occurred in a +line number of its :ref:`frame object <frame-objects>` if the exception +occurred in a :keyword:`try` statement with no matching except clause or with a -finally clause. - -Accessing ``tb_frame`` raises an :ref:`auditing event <auditing>` -``object.__getattr__`` with arguments ``obj`` and ``"tb_frame"``. +:keyword:`finally` clause. .. index:: single: tb_next (traceback attribute) -Special writable attribute: :attr:`tb_next` is the next level in the stack -trace (towards the frame where the exception occurred), or ``None`` if -there is no next level. +.. attribute:: traceback.tb_next -.. versionchanged:: 3.7 - Traceback objects can now be explicitly instantiated from Python code, - and the ``tb_next`` attribute of existing instances can be updated. + The special writable attribute :attr:`!tb_next` is the next level in the + stack trace (towards the frame where the exception occurred), or ``None`` if + there is no next level. + + .. versionchanged:: 3.7 + This attribute is now writable Slice objects @@ -1424,7 +1524,7 @@ Class method objects A class method object, like a static method object, is a wrapper around another object that alters the way in which that object is retrieved from classes and class instances. The behaviour of class method objects upon such retrieval is -described above, under "User-defined methods". Class method objects are created +described above, under :ref:`"instance methods" <instance-methods>`. Class method objects are created by the built-in :func:`classmethod` constructor. @@ -1771,7 +1871,7 @@ Basic customization This is intended to provide protection against a denial-of-service caused by carefully chosen inputs that exploit the worst case performance of a - dict insertion, O(n\ :sup:`2`) complexity. See + dict insertion, *O*\ (*n*\ :sup:`2`) complexity. See http://ocert.org/advisories/ocert-2011-003.html for details. Changing hash values affects the iteration order of sets. @@ -1841,7 +1941,8 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances. .. note:: This method may still be bypassed when looking up special methods as the - result of implicit invocation via language syntax or built-in functions. + result of implicit invocation via language syntax or + :ref:`built-in functions <builtin-functions>`. See :ref:`special-lookup`. .. audit-event:: object.__getattr__ obj,name object.__getattribute__ @@ -2202,7 +2303,7 @@ class defining the method. this method is implicitly converted to a class method. Keyword arguments which are given to a new class are passed to - the parent's class ``__init_subclass__``. For compatibility with + the parent class's ``__init_subclass__``. For compatibility with other classes using ``__init_subclass__``, one should take out the needed keyword arguments and pass the others over to the base class, as in:: @@ -2737,10 +2838,10 @@ through the object's keys; for sequences, it should iterate through the values. .. method:: object.__getitem__(self, key) Called to implement evaluation of ``self[key]``. For :term:`sequence` types, - the accepted keys should be integers and slice objects. Note that the - special interpretation of negative indexes (if the class wishes to emulate a - :term:`sequence` type) is up to the :meth:`__getitem__` method. If *key* is - of an inappropriate type, :exc:`TypeError` may be raised; if of a value + the accepted keys should be integers. Optionally, they may support + :class:`slice` objects as well. Negative index support is also optional. + If *key* is + of an inappropriate type, :exc:`TypeError` may be raised; if *key* is a value outside the set of indexes for the sequence (after any special interpretation of negative values), :exc:`IndexError` should be raised. For :term:`mapping` types, if *key* is missing (not in the container), diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index e78dff97978..8f7c014a6a4 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -14,7 +14,7 @@ be used to describe syntax, not lexical analysis. When (one alternative of) a syntax rule has the form .. productionlist:: python-grammar - name: `othername` + name: othername and no semantics are given, the semantics of this form of ``name`` are the same as for ``othername``. @@ -422,7 +422,8 @@ Yield expressions .. productionlist:: python-grammar yield_atom: "(" `yield_expression` ")" - yield_expression: "yield" [`expression_list` | "from" `expression`] + yield_from: "yield" "from" `expression` + yield_expression: "yield" `expression_list` | `yield_from` The yield expression is used when defining a :term:`generator` function or an :term:`asynchronous generator` function and @@ -993,7 +994,7 @@ but does not affect the semantics. The primary must evaluate to a callable object (user-defined functions, built-in functions, methods of built-in objects, class objects, methods of class -instances, and all objects having a :meth:`__call__` method are callable). All +instances, and all objects having a :meth:`~object.__call__` method are callable). All argument expressions are evaluated before the call is attempted. Please refer to section :ref:`function` for the syntax of formal :term:`parameter` lists. @@ -1151,7 +1152,7 @@ a class instance: pair: instance; call single: __call__() (object method) - The class must define a :meth:`__call__` method; the effect is then the same as + The class must define a :meth:`~object.__call__` method; the effect is then the same as if that method was called. @@ -1203,7 +1204,7 @@ Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`. Raising a negative number to a fractional power results in a :class:`complex` number. (In earlier versions it raised a :exc:`ValueError`.) -This operation can be customized using the special :meth:`__pow__` method. +This operation can be customized using the special :meth:`~object.__pow__` method. .. _unary: @@ -1226,7 +1227,7 @@ All unary arithmetic and bitwise operations have the same priority: single: - (minus); unary operator The unary ``-`` (minus) operator yields the negation of its numeric argument; the -operation can be overridden with the :meth:`__neg__` special method. +operation can be overridden with the :meth:`~object.__neg__` special method. .. index:: single: plus @@ -1234,7 +1235,7 @@ operation can be overridden with the :meth:`__neg__` special method. single: + (plus); unary operator The unary ``+`` (plus) operator yields its numeric argument unchanged; the -operation can be overridden with the :meth:`__pos__` special method. +operation can be overridden with the :meth:`~object.__pos__` special method. .. index:: single: inversion @@ -1243,7 +1244,7 @@ operation can be overridden with the :meth:`__pos__` special method. The unary ``~`` (invert) operator yields the bitwise inversion of its integer argument. The bitwise inversion of ``x`` is defined as ``-(x+1)``. It only applies to integral numbers or to custom objects that override the -:meth:`__invert__` special method. +:meth:`~object.__invert__` special method. @@ -1281,8 +1282,8 @@ the other must be a sequence. In the former case, the numbers are converted to a common type and then multiplied together. In the latter case, sequence repetition is performed; a negative repetition factor yields an empty sequence. -This operation can be customized using the special :meth:`__mul__` and -:meth:`__rmul__` methods. +This operation can be customized using the special :meth:`~object.__mul__` and +:meth:`~object.__rmul__` methods. .. index:: single: matrix multiplication @@ -1306,8 +1307,8 @@ integer; the result is that of mathematical division with the 'floor' function applied to the result. Division by zero raises the :exc:`ZeroDivisionError` exception. -This operation can be customized using the special :meth:`__truediv__` and -:meth:`__floordiv__` methods. +This operation can be customized using the special :meth:`~object.__truediv__` and +:meth:`~object.__floordiv__` methods. .. index:: single: modulo @@ -1332,7 +1333,7 @@ also overloaded by string objects to perform old-style string formatting (also known as interpolation). The syntax for string formatting is described in the Python Library Reference, section :ref:`old-string-formatting`. -The *modulo* operation can be customized using the special :meth:`__mod__` method. +The *modulo* operation can be customized using the special :meth:`~object.__mod__` method. The floor division operator, the modulo operator, and the :func:`divmod` function are not defined for complex numbers. Instead, convert to a floating @@ -1348,8 +1349,8 @@ must either both be numbers or both be sequences of the same type. In the former case, the numbers are converted to a common type and then added together. In the latter case, the sequences are concatenated. -This operation can be customized using the special :meth:`__add__` and -:meth:`__radd__` methods. +This operation can be customized using the special :meth:`~object.__add__` and +:meth:`~object.__radd__` methods. .. index:: single: subtraction @@ -1359,7 +1360,7 @@ This operation can be customized using the special :meth:`__add__` and The ``-`` (subtraction) operator yields the difference of its arguments. The numeric arguments are first converted to a common type. -This operation can be customized using the special :meth:`__sub__` method. +This operation can be customized using the special :meth:`~object.__sub__` method. .. _shifting: @@ -1380,8 +1381,8 @@ The shifting operations have lower priority than the arithmetic operations: These operators accept integers as arguments. They shift the first argument to the left or right by the number of bits given by the second argument. -This operation can be customized using the special :meth:`__lshift__` and -:meth:`__rshift__` methods. +This operation can be customized using the special :meth:`~object.__lshift__` and +:meth:`~object.__rshift__` methods. .. index:: pair: exception; ValueError @@ -1408,8 +1409,8 @@ Each of the three bitwise operations has a different priority level: pair: operator; & (ampersand) The ``&`` operator yields the bitwise AND of its arguments, which must be -integers or one of them must be a custom object overriding :meth:`__and__` or -:meth:`__rand__` special methods. +integers or one of them must be a custom object overriding :meth:`~object.__and__` or +:meth:`~object.__rand__` special methods. .. index:: pair: bitwise; xor @@ -1417,8 +1418,8 @@ integers or one of them must be a custom object overriding :meth:`__and__` or pair: operator; ^ (caret) The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, which -must be integers or one of them must be a custom object overriding :meth:`__xor__` or -:meth:`__rxor__` special methods. +must be integers or one of them must be a custom object overriding :meth:`~object.__xor__` or +:meth:`~object.__rxor__` special methods. .. index:: pair: bitwise; or @@ -1426,8 +1427,8 @@ must be integers or one of them must be a custom object overriding :meth:`__xor_ pair: operator; | (vertical bar) The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which -must be integers or one of them must be a custom object overriding :meth:`__or__` or -:meth:`__ror__` special methods. +must be integers or one of them must be a custom object overriding :meth:`~object.__or__` or +:meth:`~object.__ror__` special methods. .. _comparisons: @@ -1494,7 +1495,7 @@ comparison implementation. Because all types are (direct or indirect) subtypes of :class:`object`, they inherit the default comparison behavior from :class:`object`. Types can customize their comparison behavior by implementing -:dfn:`rich comparison methods` like :meth:`__lt__`, described in +:dfn:`rich comparison methods` like :meth:`~object.__lt__`, described in :ref:`customization`. The default behavior for equality comparison (``==`` and ``!=``) is based on @@ -1658,12 +1659,12 @@ substring of *y*. An equivalent test is ``y.find(x) != -1``. Empty strings are always considered to be a substring of any other string, so ``"" in "abc"`` will return ``True``. -For user-defined classes which define the :meth:`__contains__` method, ``x in +For user-defined classes which define the :meth:`~object.__contains__` method, ``x in y`` returns ``True`` if ``y.__contains__(x)`` returns a true value, and ``False`` otherwise. -For user-defined classes which do not define :meth:`__contains__` but do define -:meth:`__iter__`, ``x in y`` is ``True`` if some value ``z``, for which the +For user-defined classes which do not define :meth:`~object.__contains__` but do define +:meth:`~object.__iter__`, ``x in y`` is ``True`` if some value ``z``, for which the expression ``x is z or x == z`` is true, is produced while iterating over ``y``. If an exception is raised during the iteration, it is as if :keyword:`in` raised that exception. @@ -1882,8 +1883,9 @@ the unpacking. .. index:: pair: trailing; comma -The trailing comma is required only to create a single tuple (a.k.a. a -*singleton*); it is optional in all other cases. A single expression without a +A trailing comma is required only to create a one-item tuple, +such as ``1,``; it is optional in all other cases. +A single expression without a trailing comma doesn't create a tuple, but rather yields the value of that expression. (To create an empty tuple, use an empty pair of parentheses: ``()``.) diff --git a/Doc/reference/grammar.rst b/Doc/reference/grammar.rst index bc1db7b039c..b9cca4444c9 100644 --- a/Doc/reference/grammar.rst +++ b/Doc/reference/grammar.rst @@ -1,3 +1,5 @@ +.. _full-grammar-specification: + Full Grammar specification ========================== diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index a7beeea29b4..f8c9724114d 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -327,14 +327,15 @@ modules, and one that knows how to import modules from an :term:`import path` finders replaced :meth:`!find_module`, which is now deprecated. While it will continue to work without change, the import machinery will try it only if the finder does not implement - ``find_spec()``. + :meth:`~importlib.abc.MetaPathFinder.find_spec`. .. versionchanged:: 3.10 Use of :meth:`!find_module` by the import system now raises :exc:`ImportWarning`. .. versionchanged:: 3.12 - ``find_module()`` has been removed. Use :meth:`find_spec` instead. + :meth:`!find_module` has been removed. + Use :meth:`~importlib.abc.MetaPathFinder.find_spec` instead. Loading @@ -812,7 +813,7 @@ attributes on package objects are also used. These provide additional ways that the import machinery can be customized. :data:`sys.path` contains a list of strings providing search locations for -modules and packages. It is initialized from the :data:`PYTHONPATH` +modules and packages. It is initialized from the :envvar:`PYTHONPATH` environment variable and various other installation- and implementation-specific defaults. Entries in :data:`sys.path` can name directories on the file system, zip files, and potentially other "locations" diff --git a/Doc/reference/lexical_analysis.rst b/Doc/reference/lexical_analysis.rst index 55945e57bef..73542cfe500 100644 --- a/Doc/reference/lexical_analysis.rst +++ b/Doc/reference/lexical_analysis.rst @@ -708,10 +708,12 @@ and formatted string literals may be concatenated with plain string literals. single: ! (exclamation); in formatted string literal single: : (colon); in formatted string literal single: = (equals); for help in debugging using string literals + .. _f-strings: +.. _formatted-string-literals: -Formatted string literals -------------------------- +f-strings +--------- .. versionadded:: 3.6 diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst index a9e65be1eda..04132c78ce7 100644 --- a/Doc/reference/simple_stmts.rst +++ b/Doc/reference/simple_stmts.rst @@ -214,7 +214,7 @@ Assignment of an object to a single target is recursively defined as follows. object. This can either replace an existing key/value pair with the same key value, or insert a new key/value pair (if no key with the same value existed). - For user-defined objects, the :meth:`__setitem__` method is called with + For user-defined objects, the :meth:`~object.__setitem__` method is called with appropriate arguments. .. index:: pair: slicing; assignment @@ -351,7 +351,7 @@ If the right hand side is present, an annotated assignment performs the actual assignment before evaluating annotations (where applicable). If the right hand side is not present for an expression target, then the interpreter evaluates the target except for the last -:meth:`__setitem__` or :meth:`__setattr__` call. +:meth:`~object.__setitem__` or :meth:`~object.__setattr__` call. .. seealso:: @@ -578,7 +578,7 @@ The :dfn:`type` of the exception is the exception instance's class, the .. index:: pair: object; traceback A traceback object is normally created automatically when an exception is raised -and attached to it as the :attr:`__traceback__` attribute, which is writable. +and attached to it as the :attr:`~BaseException.__traceback__` attribute. You can create an exception and set your own traceback in one step using the :meth:`~BaseException.with_traceback` exception method (which returns the same exception instance, with its traceback set to its argument), like so:: @@ -592,11 +592,13 @@ same exception instance, with its traceback set to its argument), like so:: The ``from`` clause is used for exception chaining: if given, the second *expression* must be another exception class or instance. If the second expression is an exception instance, it will be attached to the raised -exception as the :attr:`__cause__` attribute (which is writable). If the +exception as the :attr:`~BaseException.__cause__` attribute (which is writable). If the expression is an exception class, the class will be instantiated and the resulting exception instance will be attached to the raised exception as the -:attr:`__cause__` attribute. If the raised exception is not handled, both -exceptions will be printed:: +:attr:`!__cause__` attribute. If the raised exception is not handled, both +exceptions will be printed: + +.. code-block:: pycon >>> try: ... print(1 / 0) @@ -605,19 +607,24 @@ exceptions will be printed:: ... Traceback (most recent call last): File "<stdin>", line 2, in <module> + print(1 / 0) + ~~^~~ ZeroDivisionError: division by zero The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<stdin>", line 4, in <module> + raise RuntimeError("Something bad happened") from exc RuntimeError: Something bad happened A similar mechanism works implicitly if a new exception is raised when an exception is already being handled. An exception may be handled when an :keyword:`except` or :keyword:`finally` clause, or a :keyword:`with` statement, is used. The previous exception is then -attached as the new exception's :attr:`__context__` attribute:: +attached as the new exception's :attr:`~BaseException.__context__` attribute: + +.. code-block:: pycon >>> try: ... print(1 / 0) @@ -626,16 +633,21 @@ attached as the new exception's :attr:`__context__` attribute:: ... Traceback (most recent call last): File "<stdin>", line 2, in <module> + print(1 / 0) + ~~^~~ ZeroDivisionError: division by zero During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 4, in <module> + raise RuntimeError("Something bad happened") RuntimeError: Something bad happened Exception chaining can be explicitly suppressed by specifying :const:`None` in -the ``from`` clause:: +the ``from`` clause: + +.. doctest:: >>> try: ... print(1 / 0) @@ -653,8 +665,8 @@ and information about handling exceptions is in section :ref:`try`. :const:`None` is now permitted as ``Y`` in ``raise X from Y``. .. versionadded:: 3.3 - The ``__suppress_context__`` attribute to suppress automatic display of the - exception context. + The :attr:`~BaseException.__suppress_context__` attribute to suppress + automatic display of the exception context. .. versionchanged:: 3.11 If the traceback of the active exception is modified in an :keyword:`except` @@ -920,7 +932,7 @@ That is not a future statement; it's an ordinary import statement with no special semantics or syntax restrictions. Code compiled by calls to the built-in functions :func:`exec` and :func:`compile` -that occur in a module :mod:`M` containing a future statement will, by default, +that occur in a module :mod:`!M` containing a future statement will, by default, use the new syntax or semantics associated with the future statement. This can be controlled by optional arguments to :func:`compile` --- see the documentation of that function for details. diff --git a/Doc/requirements.txt b/Doc/requirements.txt index 07d20a63a65..118e6c322b4 100644 --- a/Doc/requirements.txt +++ b/Doc/requirements.txt @@ -6,12 +6,13 @@ # Sphinx version is pinned so that new versions that introduce new warnings # won't suddenly cause build failures. Updating the version is fine as long # as no warnings are raised by doing so. -sphinx==4.5.0 +sphinx~=7.2.0 blurb sphinx-autobuild sphinxext-opengraph==0.7.5 +sphinx-notfound-page==1.0.0 # The theme used by the documentation is stored separately, so we need # to install that as well. diff --git a/Doc/tools/.nitignore b/Doc/tools/.nitignore index 039bbf7a844..4a1cea435d8 100644 --- a/Doc/tools/.nitignore +++ b/Doc/tools/.nitignore @@ -5,18 +5,14 @@ Doc/c-api/arg.rst Doc/c-api/descriptor.rst Doc/c-api/exceptions.rst -Doc/c-api/file.rst Doc/c-api/float.rst Doc/c-api/gcsupport.rst Doc/c-api/init.rst Doc/c-api/init_config.rst Doc/c-api/intro.rst -Doc/c-api/memory.rst -Doc/c-api/memoryview.rst Doc/c-api/module.rst Doc/c-api/object.rst Doc/c-api/stable.rst -Doc/c-api/structures.rst Doc/c-api/sys.rst Doc/c-api/type.rst Doc/c-api/typeobj.rst @@ -24,100 +20,68 @@ Doc/extending/extending.rst Doc/glossary.rst Doc/howto/descriptor.rst Doc/howto/enum.rst -Doc/howto/isolating-extensions.rst -Doc/howto/logging.rst -Doc/howto/urllib2.rst Doc/library/2to3.rst Doc/library/aifc.rst Doc/library/ast.rst Doc/library/asyncio-extending.rst Doc/library/asyncio-policy.rst Doc/library/asyncio-subprocess.rst -Doc/library/asyncio-task.rst Doc/library/audioop.rst Doc/library/bdb.rst -Doc/library/bisect.rst -Doc/library/calendar.rst Doc/library/cgi.rst Doc/library/chunk.rst -Doc/library/cmd.rst -Doc/library/collections.abc.rst Doc/library/collections.rst -Doc/library/concurrent.futures.rst -Doc/library/configparser.rst -Doc/library/contextlib.rst Doc/library/copy.rst -Doc/library/csv.rst -Doc/library/datetime.rst Doc/library/dbm.rst Doc/library/decimal.rst Doc/library/email.charset.rst Doc/library/email.compat32-message.rst Doc/library/email.errors.rst -Doc/library/email.mime.rst Doc/library/email.parser.rst Doc/library/email.policy.rst Doc/library/enum.rst Doc/library/exceptions.rst Doc/library/faulthandler.rst Doc/library/fcntl.rst -Doc/library/ftplib.rst Doc/library/functools.rst Doc/library/getopt.rst -Doc/library/http.client.rst Doc/library/http.cookiejar.rst -Doc/library/http.cookies.rst Doc/library/http.server.rst Doc/library/importlib.rst -Doc/library/inspect.rst -Doc/library/locale.rst Doc/library/logging.config.rst Doc/library/logging.handlers.rst Doc/library/lzma.rst -Doc/library/mailbox.rst Doc/library/mmap.rst Doc/library/msilib.rst Doc/library/multiprocessing.rst -Doc/library/multiprocessing.shared_memory.rst Doc/library/nntplib.rst -Doc/library/numbers.rst Doc/library/optparse.rst -Doc/library/os.path.rst Doc/library/os.rst Doc/library/ossaudiodev.rst -Doc/library/pickle.rst Doc/library/pickletools.rst Doc/library/platform.rst Doc/library/plistlib.rst Doc/library/profile.rst -Doc/library/pyclbr.rst Doc/library/pydoc.rst Doc/library/pyexpat.rst -Doc/library/random.rst Doc/library/readline.rst Doc/library/resource.rst -Doc/library/rlcompleter.rst Doc/library/select.rst -Doc/library/shelve.rst Doc/library/signal.rst Doc/library/smtplib.rst Doc/library/socket.rst Doc/library/ssl.rst Doc/library/stdtypes.rst -Doc/library/string.rst Doc/library/subprocess.rst Doc/library/sunau.rst Doc/library/syslog.rst -Doc/library/tarfile.rst Doc/library/telnetlib.rst -Doc/library/tempfile.rst Doc/library/termios.rst Doc/library/test.rst Doc/library/tkinter.rst Doc/library/tkinter.scrolledtext.rst Doc/library/tkinter.tix.rst Doc/library/tkinter.ttk.rst -Doc/library/traceback.rst Doc/library/unittest.mock.rst Doc/library/unittest.rst Doc/library/urllib.parse.rst @@ -136,15 +100,10 @@ Doc/library/xmlrpc.server.rst Doc/library/zlib.rst Doc/reference/compound_stmts.rst Doc/reference/datamodel.rst -Doc/reference/expressions.rst -Doc/reference/import.rst -Doc/reference/simple_stmts.rst Doc/tutorial/datastructures.rst Doc/using/windows.rst Doc/whatsnew/2.0.rst Doc/whatsnew/2.1.rst -Doc/whatsnew/2.2.rst -Doc/whatsnew/2.3.rst Doc/whatsnew/2.4.rst Doc/whatsnew/2.5.rst Doc/whatsnew/2.6.rst diff --git a/Doc/tools/extensions/c_annotations.py b/Doc/tools/extensions/c_annotations.py index 3551bfa4c0f..ba37634545c 100644 --- a/Doc/tools/extensions/c_annotations.py +++ b/Doc/tools/extensions/c_annotations.py @@ -126,7 +126,8 @@ def add_annotations(self, app, doctree): f"Object type mismatch in limited API annotation " f"for {name}: {record['role']!r} != {objtype!r}") stable_added = record['added'] - message = ' Part of the ' + message = sphinx_gettext('Part of the') + message = message.center(len(message) + 2) emph_node = nodes.emphasis(message, message, classes=['stableabi']) ref_node = addnodes.pending_xref( @@ -134,40 +135,40 @@ def add_annotations(self, app, doctree): reftype='ref', refexplicit="False") struct_abi_kind = record['struct_abi_kind'] if struct_abi_kind in {'opaque', 'members'}: - ref_node += nodes.Text('Limited API') + ref_node += nodes.Text(sphinx_gettext('Limited API')) else: - ref_node += nodes.Text('Stable ABI') + ref_node += nodes.Text(sphinx_gettext('Stable ABI')) emph_node += ref_node if struct_abi_kind == 'opaque': - emph_node += nodes.Text(' (as an opaque struct)') + emph_node += nodes.Text(' ' + sphinx_gettext('(as an opaque struct)')) elif struct_abi_kind == 'full-abi': - emph_node += nodes.Text(' (including all members)') + emph_node += nodes.Text(' ' + sphinx_gettext('(including all members)')) if record['ifdef_note']: emph_node += nodes.Text(' ' + record['ifdef_note']) if stable_added == '3.2': # Stable ABI was introduced in 3.2. pass else: - emph_node += nodes.Text(f' since version {stable_added}') + emph_node += nodes.Text(' ' + sphinx_gettext('since version %s') % stable_added) emph_node += nodes.Text('.') if struct_abi_kind == 'members': emph_node += nodes.Text( - ' (Only some members are part of the stable ABI.)') + ' ' + sphinx_gettext('(Only some members are part of the stable ABI.)')) node.insert(0, emph_node) # Unstable API annotation. if name.startswith('PyUnstable'): warn_node = nodes.admonition( classes=['unstable-c-api', 'warning']) - message = 'This is ' + message = sphinx_gettext('This is') + ' ' emph_node = nodes.emphasis(message, message) ref_node = addnodes.pending_xref( 'Unstable API', refdomain="std", reftarget='unstable-c-api', reftype='ref', refexplicit="False") - ref_node += nodes.Text('Unstable API') + ref_node += nodes.Text(sphinx_gettext('Unstable API')) emph_node += ref_node - emph_node += nodes.Text('. It may change without warning in minor releases.') + emph_node += nodes.Text(sphinx_gettext('. It may change without warning in minor releases.')) warn_node += emph_node node.insert(0, warn_node) diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py index cdb8cf85e20..c29846e6e70 100644 --- a/Doc/tools/extensions/pyspecific.py +++ b/Doc/tools/extensions/pyspecific.py @@ -48,6 +48,11 @@ Body.enum.converters['lowerroman'] = \ Body.enum.converters['upperroman'] = lambda x: None +# monkey-patch the productionlist directive to allow hyphens in group names +# https://github.com/sphinx-doc/sphinx/issues/11854 +from sphinx.domains import std + +std.token_re = re.compile(r'`((~?[\w-]*:)?\w+)`') # Support for marking up and linking to bugs.python.org issues diff --git a/Doc/tools/templates/dummy.html b/Doc/tools/templates/dummy.html index bab4aaeb460..49c2a71a5e4 100644 --- a/Doc/tools/templates/dummy.html +++ b/Doc/tools/templates/dummy.html @@ -9,6 +9,16 @@ In extensions/c_annotations.py: +{% trans %}Part of the{% endtrans %} +{% trans %}Limited API{% endtrans %} +{% trans %}Stable ABI{% endtrans %} +{% trans %}(as an opaque struct){% endtrans %} +{% trans %}(including all members){% endtrans %} +{% trans %}since version %s{% endtrans %} +{% trans %}(Only some members are part of the stable ABI.){% endtrans %} +{% trans %}This is{% endtrans %} +{% trans %}Unstable API{% endtrans %} +{% trans %}. It may change without warning in minor releases.{% endtrans %} {% trans %}Return value: Always NULL.{% endtrans %} {% trans %}Return value: New reference.{% endtrans %} {% trans %}Return value: Borrowed reference.{% endtrans %} diff --git a/Doc/tutorial/appendix.rst b/Doc/tutorial/appendix.rst index 588591fcdb7..4bea0d8a49c 100644 --- a/Doc/tutorial/appendix.rst +++ b/Doc/tutorial/appendix.rst @@ -20,7 +20,7 @@ In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an :keyword:`except` clause in a :keyword:`try` statement are not errors in this context.) Some errors are unconditionally fatal and -cause an exit with a nonzero exit; this applies to internal inconsistencies and +cause an exit with a nonzero exit status; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the standard error stream; normal output from executed commands is written to standard output. diff --git a/Doc/tutorial/classes.rst b/Doc/tutorial/classes.rst index 7b92e1a51b6..d1c303ef037 100644 --- a/Doc/tutorial/classes.rst +++ b/Doc/tutorial/classes.rst @@ -386,12 +386,11 @@ general, calling a method with a list of *n* arguments is equivalent to calling the corresponding function with an argument list that is created by inserting the method's instance object before the first argument. -If you still don't understand how methods work, a look at the implementation can -perhaps clarify matters. When a non-data attribute of an instance is -referenced, the instance's class is searched. If the name denotes a valid class -attribute that is a function object, a method object is created by packing -(pointers to) the instance object and the function object just found together in -an abstract object: this is the method object. When the method object is called +In general, methods work as follows. When a non-data attribute +of an instance is referenced, the instance's class is searched. +If the name denotes a valid class attribute that is a function object, +references to both the instance object and the function object +are packed into a method object. When the method object is called with an argument list, a new argument list is constructed from the instance object and the argument list, and the function object is called with this new argument list. @@ -769,8 +768,10 @@ data from a string buffer instead, and pass it as an argument. or arithmetic operators, and assigning such a "pseudo-file" to sys.stdin will not cause the interpreter to read further input from it.) -Instance method objects have attributes, too: ``m.__self__`` is the instance -object with the method :meth:`!m`, and ``m.__func__`` is the function object +:ref:`Instance method objects <instance-methods>` have attributes, too: +:attr:`m.__self__ <method.__self__>` is the instance +object with the method :meth:`!m`, and :attr:`m.__func__ <method.__func__>` is +the :ref:`function object <user-defined-funcs>` corresponding to the method. diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index aa9caa101da..77444f9cb83 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -559,10 +559,10 @@ defined to allow. For example:: def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: - ok = input(prompt) - if ok in ('y', 'ye', 'yes'): + reply = input(prompt) + if reply in {'y', 'ye', 'yes'}: return True - if ok in ('n', 'no', 'nop', 'nope'): + if reply in {'n', 'no', 'nop', 'nope'}: return False retries = retries - 1 if retries < 0: diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index 87614d082a1..de2827461e2 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -48,10 +48,9 @@ objects: :noindex: Remove the item at the given position in the list, and return it. If no index - is specified, ``a.pop()`` removes and returns the last item in the list. (The - square brackets around the *i* in the method signature denote that the parameter - is optional, not that you should type square brackets at that position. You - will see this notation frequently in the Python Library Reference.) + is specified, ``a.pop()`` removes and returns the last item in the list. + It raises an :exc:`IndexError` if the list is empty or the index is + outside the list range. .. method:: list.clear() diff --git a/Doc/tutorial/modules.rst b/Doc/tutorial/modules.rst index bf9e8e0b7b8..0316239e776 100644 --- a/Doc/tutorial/modules.rst +++ b/Doc/tutorial/modules.rst @@ -437,7 +437,8 @@ When importing the package, Python searches through the directories on ``sys.path`` looking for the package subdirectory. The :file:`__init__.py` files are required to make Python treat directories -containing the file as packages. This prevents directories with a common name, +containing the file as packages (unless using a :term:`namespace package`, a +relatively advanced feature). This prevents directories with a common name, such as ``string``, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, :file:`__init__.py` can just be an empty file, but it can also execute initialization code for the package or diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index dac54916eb0..9b7625be477 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -374,7 +374,7 @@ Miscellaneous options Hash randomization is intended to provide protection against a denial-of-service caused by carefully chosen inputs that exploit the worst - case performance of a dict construction, O(n\ :sup:`2`) complexity. See + case performance of a dict construction, *O*\ (*n*\ :sup:`2`) complexity. See http://ocert.org/advisories/ocert-2011-003.html for details. :envvar:`PYTHONHASHSEED` allows you to set a fixed value for the hash @@ -582,9 +582,7 @@ Miscellaneous options .. versionadded:: 3.10 The ``-X warn_default_encoding`` option. - - .. deprecated-removed:: 3.9 3.10 - The ``-X oldparser`` option. + Removed the ``-X oldparser`` option. .. versionadded:: 3.11 The ``-X no_debug_ranges`` option. diff --git a/Doc/whatsnew/2.0.rst b/Doc/whatsnew/2.0.rst index aa03d85f75d..65dfc3aa091 100644 --- a/Doc/whatsnew/2.0.rst +++ b/Doc/whatsnew/2.0.rst @@ -130,7 +130,7 @@ Guidelines": Read the rest of :pep:`1` for the details of the PEP editorial process, style, and format. PEPs are kept in the Python CVS tree on SourceForge, though they're not part of the Python 2.0 distribution, and are also available in HTML form from -https://peps.python.org/. As of September 2000, there are 25 PEPS, ranging +https://peps.python.org/. As of September 2000, there are 25 PEPs, ranging from :pep:`201`, "Lockstep Iteration", to PEP 225, "Elementwise/Objectwise Operators". @@ -1030,7 +1030,7 @@ Module changes Lots of improvements and bugfixes were made to Python's extensive standard library; some of the affected modules include :mod:`readline`, -:mod:`ConfigParser`, :mod:`cgi`, :mod:`calendar`, :mod:`posix`, :mod:`readline`, +:mod:`ConfigParser <configparser>`, :mod:`cgi`, :mod:`calendar`, :mod:`posix`, :mod:`readline`, :mod:`xmllib`, :mod:`aifc`, :mod:`chunk, wave`, :mod:`random`, :mod:`shelve`, and :mod:`nntplib`. Consult the CVS logs for the exact patch-by-patch details. @@ -1039,12 +1039,12 @@ is an implementation of the Secure Socket Layer, which encrypts the data being sent over a socket. When compiling Python, you can edit :file:`Modules/Setup` to include SSL support, which adds an additional function to the :mod:`socket` module: ``socket.ssl(socket, keyfile, certfile)``, which takes a socket -object and returns an SSL socket. The :mod:`httplib` and :mod:`urllib` modules +object and returns an SSL socket. The :mod:`httplib <http>` and :mod:`urllib` modules were also changed to support ``https://`` URLs, though no one has implemented FTP or SMTP over SSL. -The :mod:`httplib` module has been rewritten by Greg Stein to support HTTP/1.1. -Backward compatibility with the 1.5 version of :mod:`httplib` is provided, +The :mod:`httplib <http>` module has been rewritten by Greg Stein to support HTTP/1.1. +Backward compatibility with the 1.5 version of :mod:`!httplib` is provided, though using HTTP/1.1 features such as pipelining will require rewriting code to use a different set of interfaces. @@ -1095,8 +1095,8 @@ module. GNU gettext message catalog library. (Integrated by Barry Warsaw, from separate contributions by Martin von Löwis, Peter Funk, and James Henstridge.) -* :mod:`linuxaudiodev`: Support for the :file:`/dev/audio` device on Linux, a - twin to the existing :mod:`sunaudiodev` module. (Contributed by Peter Bosch, +* :mod:`!linuxaudiodev`: Support for the :file:`/dev/audio` device on Linux, a + twin to the existing :mod:`!sunaudiodev` module. (Contributed by Peter Bosch, with fixes by Jeremy Hylton.) * :mod:`mmap`: An interface to memory-mapped files on both Windows and Unix. A @@ -1108,7 +1108,7 @@ module. * :mod:`pyexpat`: An interface to the Expat XML parser. (Contributed by Paul Prescod.) -* :mod:`robotparser`: Parse a :file:`robots.txt` file, which is used for writing +* :mod:`robotparser <urllib.robotparser>`: Parse a :file:`robots.txt` file, which is used for writing web spiders that politely avoid certain areas of a web site. The parser accepts the contents of a :file:`robots.txt` file, builds a set of rules from it, and can then answer questions about the fetchability of a given URL. (Contributed @@ -1129,18 +1129,18 @@ module. :file:`Tools/idle/BrowserControl.py`, and adapted for the standard library by Fred.) -* :mod:`_winreg`: An interface to the Windows registry. :mod:`_winreg` is an +* :mod:`_winreg <winreg>`: An interface to the Windows registry. :mod:`!_winreg` is an adaptation of functions that have been part of PythonWin since 1995, but has now been added to the core distribution, and enhanced to support Unicode. - :mod:`_winreg` was written by Bill Tutt and Mark Hammond. + :mod:`!_winreg` was written by Bill Tutt and Mark Hammond. * :mod:`zipfile`: A module for reading and writing ZIP-format archives. These are archives produced by :program:`PKZIP` on DOS/Windows or :program:`zip` on Unix, not to be confused with :program:`gzip`\ -format files (which are supported by the :mod:`gzip` module) (Contributed by James C. Ahlstrom.) -* :mod:`imputil`: A module that provides a simpler way for writing customized - import hooks, in comparison to the existing :mod:`ihooks` module. (Implemented +* :mod:`!imputil`: A module that provides a simpler way for writing customized + import hooks, in comparison to the existing :mod:`!ihooks` module. (Implemented by Greg Stein, with much discussion on python-dev along the way.) .. ====================================================================== diff --git a/Doc/whatsnew/2.1.rst b/Doc/whatsnew/2.1.rst index f0e1ded75a9..6d2d3cc02b8 100644 --- a/Doc/whatsnew/2.1.rst +++ b/Doc/whatsnew/2.1.rst @@ -424,7 +424,8 @@ PEP 232: Function Attributes In Python 2.1, functions can now have arbitrary information attached to them. People were often using docstrings to hold information about functions and -methods, because the ``__doc__`` attribute was the only way of attaching any +methods, because the :attr:`~function.__doc__` attribute was the only way of +attaching any information to a function. For example, in the Zope web application server, functions are marked as safe for public access by having a docstring, and in John Aycock's SPARK parsing framework, docstrings hold parts of the BNF grammar diff --git a/Doc/whatsnew/2.2.rst b/Doc/whatsnew/2.2.rst index 6dfe79cef00..e6c13f957b8 100644 --- a/Doc/whatsnew/2.2.rst +++ b/Doc/whatsnew/2.2.rst @@ -53,9 +53,9 @@ A long time ago I wrote a web page listing flaws in Python's design. One of the most significant flaws was that it's impossible to subclass Python types implemented in C. In particular, it's not possible to subclass built-in types, so you can't just subclass, say, lists in order to add a single useful method to -them. The :mod:`UserList` module provides a class that supports all of the +them. The :mod:`!UserList` module provides a class that supports all of the methods of lists and that can be subclassed further, but there's lots of C code -that expects a regular Python list and won't accept a :class:`UserList` +that expects a regular Python list and won't accept a :class:`~collections.UserList` instance. Python 2.2 fixes this, and in the process adds some exciting new capabilities. @@ -69,7 +69,7 @@ A brief summary: * It's also possible to automatically call methods on accessing or setting an instance attribute by using a new mechanism called :dfn:`properties`. Many uses - of :meth:`__getattr__` can be rewritten to use properties instead, making the + of :meth:`~object.__getattr__` can be rewritten to use properties instead, making the resulting code simpler and faster. As a small side benefit, attributes can now have docstrings, too. @@ -120,7 +120,7 @@ added so if no built-in type is suitable, you can just subclass This means that :keyword:`class` statements that don't have any base classes are always classic classes in Python 2.2. (Actually you can also change this by -setting a module-level variable named :attr:`__metaclass__` --- see :pep:`253` +setting a module-level variable named :attr:`!__metaclass__` --- see :pep:`253` for the details --- but it's easier to just subclass :class:`object`.) The type objects for the built-in types are available as built-ins, named using @@ -134,8 +134,8 @@ type objects that behave as factories when called. :: 123 To make the set of types complete, new type objects such as :func:`dict` and -:func:`file` have been added. Here's a more interesting example, adding a -:meth:`lock` method to file objects:: +:func:`!file` have been added. Here's a more interesting example, adding a +:meth:`!lock` method to file objects:: class LockableFile(file): def lock (self, operation, length=0, start=0, whence=0): @@ -143,10 +143,10 @@ To make the set of types complete, new type objects such as :func:`dict` and return fcntl.lockf(self.fileno(), operation, length, start, whence) -The now-obsolete :mod:`posixfile` module contained a class that emulated all of -a file object's methods and also added a :meth:`lock` method, but this class +The now-obsolete :mod:`!posixfile` module contained a class that emulated all of +a file object's methods and also added a :meth:`!lock` method, but this class couldn't be passed to internal functions that expected a built-in file, -something which is possible with our new :class:`LockableFile`. +something which is possible with our new :class:`!LockableFile`. Descriptors @@ -154,11 +154,11 @@ Descriptors In previous versions of Python, there was no consistent way to discover what attributes and methods were supported by an object. There were some informal -conventions, such as defining :attr:`__members__` and :attr:`__methods__` +conventions, such as defining :attr:`!__members__` and :attr:`!__methods__` attributes that were lists of names, but often the author of an extension type or a class wouldn't bother to define them. You could fall back on inspecting the :attr:`~object.__dict__` of an object, but when class inheritance or an arbitrary -:meth:`__getattr__` hook were in use this could still be inaccurate. +:meth:`!__getattr__` hook were in use this could still be inaccurate. The one big idea underlying the new class model is that an API for describing the attributes of an object using :dfn:`descriptors` has been formalized. @@ -171,7 +171,7 @@ attributes of their own: * :attr:`~definition.__name__` is the attribute's name. -* :attr:`__doc__` is the attribute's docstring. +* :attr:`!__doc__` is the attribute's docstring. * ``__get__(object)`` is a method that retrieves the attribute value from *object*. @@ -186,7 +186,7 @@ are:: descriptor = obj.__class__.x descriptor.__get__(obj) -For methods, :meth:`descriptor.__get__` returns a temporary object that's +For methods, :meth:`!descriptor.__get__` returns a temporary object that's callable, and wraps up the instance and the method to be called on it. This is also why static methods and class methods are now possible; they have descriptors that wrap up just the method, or the method and the class. As a @@ -204,7 +204,7 @@ methods are defined like this:: ... g = classmethod(g) -The :func:`staticmethod` function takes the function :func:`f`, and returns it +The :func:`staticmethod` function takes the function :func:`!f`, and returns it wrapped up in a descriptor so it can be stored in the class object. You might expect there to be special syntax for creating such methods (``def static f``, ``defstatic f()``, or something like that) but no such syntax has been defined @@ -232,10 +232,10 @@ like this:: f = eiffelmethod(f, pre_f, post_f) -Note that a person using the new :func:`eiffelmethod` doesn't have to understand +Note that a person using the new :func:`!eiffelmethod` doesn't have to understand anything about descriptors. This is why I think the new features don't increase the basic complexity of the language. There will be a few wizards who need to -know about it in order to write :func:`eiffelmethod` or the ZODB or whatever, +know about it in order to write :func:`!eiffelmethod` or the ZODB or whatever, but most users will just write code on top of the resulting libraries and ignore the implementation details. @@ -263,10 +263,10 @@ from :pep:`253` by Guido van Rossum):: The lookup rule for classic classes is simple but not very smart; the base classes are searched depth-first, going from left to right. A reference to -:meth:`D.save` will search the classes :class:`D`, :class:`B`, and then -:class:`A`, where :meth:`save` would be found and returned. :meth:`C.save` -would never be found at all. This is bad, because if :class:`C`'s :meth:`save` -method is saving some internal state specific to :class:`C`, not calling it will +:meth:`!D.save` will search the classes :class:`!D`, :class:`!B`, and then +:class:`!A`, where :meth:`!save` would be found and returned. :meth:`!C.save` +would never be found at all. This is bad, because if :class:`!C`'s :meth:`!save` +method is saving some internal state specific to :class:`!C`, not calling it will result in that state never getting saved. New-style classes follow a different algorithm that's a bit more complicated to @@ -276,22 +276,22 @@ produces more useful results for really complicated inheritance graphs.) #. List all the base classes, following the classic lookup rule and include a class multiple times if it's visited repeatedly. In the above example, the list - of visited classes is [:class:`D`, :class:`B`, :class:`A`, :class:`C`, - :class:`A`]. + of visited classes is [:class:`!D`, :class:`!B`, :class:`!A`, :class:`!C`, + :class:`!A`]. #. Scan the list for duplicated classes. If any are found, remove all but one occurrence, leaving the *last* one in the list. In the above example, the list - becomes [:class:`D`, :class:`B`, :class:`C`, :class:`A`] after dropping + becomes [:class:`!D`, :class:`!B`, :class:`!C`, :class:`!A`] after dropping duplicates. -Following this rule, referring to :meth:`D.save` will return :meth:`C.save`, +Following this rule, referring to :meth:`!D.save` will return :meth:`!C.save`, which is the behaviour we're after. This lookup rule is the same as the one followed by Common Lisp. A new built-in function, :func:`super`, provides a way to get at a class's superclasses without having to reimplement Python's algorithm. The most commonly used form will be ``super(class, obj)``, which returns a bound superclass object (not the actual class object). This form will be used in methods to call a method in the superclass; for example, -:class:`D`'s :meth:`save` method would look like this:: +:class:`!D`'s :meth:`!save` method would look like this:: class D (B,C): def save (self): @@ -309,7 +309,7 @@ Attribute Access ---------------- A fair number of sophisticated Python classes define hooks for attribute access -using :meth:`__getattr__`; most commonly this is done for convenience, to make +using :meth:`~object.__getattr__`; most commonly this is done for convenience, to make code more readable by automatically mapping an attribute access such as ``obj.parent`` into a method call such as ``obj.get_parent``. Python 2.2 adds some new ways of controlling attribute access. @@ -321,22 +321,22 @@ instance's dictionary. New-style classes also support a new method, ``__getattribute__(attr_name)``. The difference between the two methods is -that :meth:`__getattribute__` is *always* called whenever any attribute is -accessed, while the old :meth:`__getattr__` is only called if ``foo`` isn't +that :meth:`~object.__getattribute__` is *always* called whenever any attribute is +accessed, while the old :meth:`~object.__getattr__` is only called if ``foo`` isn't found in the instance's dictionary. However, Python 2.2's support for :dfn:`properties` will often be a simpler way -to trap attribute references. Writing a :meth:`__getattr__` method is +to trap attribute references. Writing a :meth:`!__getattr__` method is complicated because to avoid recursion you can't use regular attribute accesses inside them, and instead have to mess around with the contents of -:attr:`~object.__dict__`. :meth:`__getattr__` methods also end up being called by Python -when it checks for other methods such as :meth:`__repr__` or :meth:`__coerce__`, +:attr:`~object.__dict__`. :meth:`~object.__getattr__` methods also end up being called by Python +when it checks for other methods such as :meth:`~object.__repr__` or :meth:`!__coerce__`, and so have to be written with this in mind. Finally, calling a function on every attribute access results in a sizable performance loss. :class:`property` is a new built-in type that packages up three functions that get, set, or delete an attribute, and a docstring. For example, if you want to -define a :attr:`size` attribute that's computed, but also settable, you could +define a :attr:`!size` attribute that's computed, but also settable, you could write:: class C(object): @@ -355,9 +355,9 @@ write:: "Storage size of this instance") That is certainly clearer and easier to write than a pair of -:meth:`__getattr__`/:meth:`__setattr__` methods that check for the :attr:`size` +:meth:`!__getattr__`/:meth:`!__setattr__` methods that check for the :attr:`!size` attribute and handle it specially while retrieving all other attributes from the -instance's :attr:`~object.__dict__`. Accesses to :attr:`size` are also the only ones +instance's :attr:`~object.__dict__`. Accesses to :attr:`!size` are also the only ones which have to perform the work of calling a function, so references to other attributes run at their usual speed. @@ -447,7 +447,7 @@ an iterator for the object *obj*, while ``iter(C, sentinel)`` returns an iterator that will invoke the callable object *C* until it returns *sentinel* to signal that the iterator is done. -Python classes can define an :meth:`__iter__` method, which should create and +Python classes can define an :meth:`!__iter__` method, which should create and return a new iterator for the object; if the object is its own iterator, this method can just return ``self``. In particular, iterators will usually be their own iterators. Extension types implemented in C can implement a :c:member:`~PyTypeObject.tp_iter` @@ -478,7 +478,7 @@ there are no more values to be returned, calling :meth:`next` should raise the In 2.2, Python's :keyword:`for` statement no longer expects a sequence; it expects something for which :func:`iter` will return an iterator. For backward compatibility and convenience, an iterator is automatically constructed for -sequences that don't implement :meth:`__iter__` or a :c:member:`~PyTypeObject.tp_iter` slot, so +sequences that don't implement :meth:`!__iter__` or a :c:member:`~PyTypeObject.tp_iter` slot, so ``for i in [1,2,3]`` will still work. Wherever the Python interpreter loops over a sequence, it's been changed to use the iterator protocol. This means you can do things like this:: @@ -510,8 +510,8 @@ Iterator support has been added to some of Python's basic types. Calling Oct 10 That's just the default behaviour. If you want to iterate over keys, values, or -key/value pairs, you can explicitly call the :meth:`iterkeys`, -:meth:`itervalues`, or :meth:`iteritems` methods to get an appropriate iterator. +key/value pairs, you can explicitly call the :meth:`!iterkeys`, +:meth:`!itervalues`, or :meth:`!iteritems` methods to get an appropriate iterator. In a minor related change, the :keyword:`in` operator now works on dictionaries, so ``key in dict`` is now equivalent to ``dict.has_key(key)``. @@ -580,7 +580,7 @@ allowed inside the :keyword:`!try` block of a :keyword:`try`...\ :keyword:`finally` statement; read :pep:`255` for a full explanation of the interaction between :keyword:`!yield` and exceptions.) -Here's a sample usage of the :func:`generate_ints` generator:: +Here's a sample usage of the :func:`!generate_ints` generator:: >>> gen = generate_ints(3) >>> gen @@ -641,7 +641,7 @@ like:: sentence := "Store it in the neighboring harbor" if (i := find("or", sentence)) > 5 then write(i) -In Icon the :func:`find` function returns the indexes at which the substring +In Icon the :func:`!find` function returns the indexes at which the substring "or" is found: 3, 23, 33. In the :keyword:`if` statement, ``i`` is first assigned a value of 3, but 3 is less than 5, so the comparison fails, and Icon retries it with the second value of 23. 23 is greater than 5, so the comparison @@ -671,7 +671,7 @@ PEP 237: Unifying Long Integers and Integers In recent versions, the distinction between regular integers, which are 32-bit values on most machines, and long integers, which can be of arbitrary size, was becoming an annoyance. For example, on platforms that support files larger than -``2**32`` bytes, the :meth:`tell` method of file objects has to return a long +``2**32`` bytes, the :meth:`!tell` method of file objects has to return a long integer. However, there were various bits of Python that expected plain integers and would raise an error if a long integer was provided instead. For example, in Python 1.5, only regular integers could be used as a slice index, and @@ -752,7 +752,7 @@ Here are the changes 2.2 introduces: 0.5. Without the ``__future__`` statement, ``/`` still means classic division. The default meaning of ``/`` will not change until Python 3.0. -* Classes can define methods called :meth:`__truediv__` and :meth:`__floordiv__` +* Classes can define methods called :meth:`~object.__truediv__` and :meth:`~object.__floordiv__` to overload the two division operators. At the C level, there are also slots in the :c:type:`PyNumberMethods` structure so extension types can define the two operators. @@ -785,17 +785,17 @@ support.) When built to use UCS-4 (a "wide Python"), the interpreter can natively handle Unicode characters from U+000000 to U+110000, so the range of legal values for -the :func:`unichr` function is expanded accordingly. Using an interpreter +the :func:`!unichr` function is expanded accordingly. Using an interpreter compiled to use UCS-2 (a "narrow Python"), values greater than 65535 will still -cause :func:`unichr` to raise a :exc:`ValueError` exception. This is all +cause :func:`!unichr` to raise a :exc:`ValueError` exception. This is all described in :pep:`261`, "Support for 'wide' Unicode characters"; consult it for further details. Another change is simpler to explain. Since their introduction, Unicode strings -have supported an :meth:`encode` method to convert the string to a selected +have supported an :meth:`!encode` method to convert the string to a selected encoding such as UTF-8 or Latin-1. A symmetric ``decode([*encoding*])`` method has been added to 8-bit strings (though not to Unicode strings) in 2.2. -:meth:`decode` assumes that the string is in the specified encoding and decodes +:meth:`!decode` assumes that the string is in the specified encoding and decodes it, returning whatever is returned by the codec. Using this new feature, codecs have been added for tasks not directly related to @@ -819,10 +819,10 @@ encoding, and compression with the :mod:`zlib` module:: >>> "sheesh".encode('rot-13') 'furrfu' -To convert a class instance to Unicode, a :meth:`__unicode__` method can be -defined by a class, analogous to :meth:`__str__`. +To convert a class instance to Unicode, a :meth:`!__unicode__` method can be +defined by a class, analogous to :meth:`!__str__`. -:meth:`encode`, :meth:`decode`, and :meth:`__unicode__` were implemented by +:meth:`!encode`, :meth:`!decode`, and :meth:`!__unicode__` were implemented by Marc-André Lemburg. The changes to support using UCS-4 internally were implemented by Fredrik Lundh and Martin von Löwis. @@ -859,7 +859,7 @@ doesn't work:: return g(value-1) + 1 ... -The function :func:`g` will always raise a :exc:`NameError` exception, because +The function :func:`!g` will always raise a :exc:`NameError` exception, because the binding of the name ``g`` isn't in either its local namespace or in the module-level namespace. This isn't much of a problem in practice (how often do you recursively define interior functions like this?), but this also made using @@ -915,7 +915,7 @@ To make the preceding explanation a bit clearer, here's an example:: Line 4 containing the ``exec`` statement is a syntax error, since ``exec`` would define a new local variable named ``x`` whose value should -be accessed by :func:`g`. +be accessed by :func:`!g`. This shouldn't be much of a limitation, since ``exec`` is rarely used in most Python code (and when it is used, it's often a sign of a poor design @@ -933,7 +933,7 @@ anyway). New and Improved Modules ======================== -* The :mod:`xmlrpclib` module was contributed to the standard library by Fredrik +* The :mod:`xmlrpclib <xmlrpc.client>` module was contributed to the standard library by Fredrik Lundh, providing support for writing XML-RPC clients. XML-RPC is a simple remote procedure call protocol built on top of HTTP and XML. For example, the following snippet retrieves a list of RSS channels from the O'Reilly Network, @@ -956,7 +956,7 @@ New and Improved Modules # 'description': 'A utility which converts HTML to XSL FO.', # 'title': 'html2fo 0.3 (Default)'}, ... ] - The :mod:`SimpleXMLRPCServer` module makes it easy to create straightforward + The :mod:`SimpleXMLRPCServer <xmlrpc.server>` module makes it easy to create straightforward XML-RPC servers. See http://xmlrpc.scripting.com/ for more information about XML-RPC. * The new :mod:`hmac` module implements the HMAC algorithm described by @@ -964,9 +964,9 @@ New and Improved Modules * Several functions that originally returned lengthy tuples now return pseudo-sequences that still behave like tuples but also have mnemonic attributes such - as memberst_mtime or :attr:`tm_year`. The enhanced functions include - :func:`stat`, :func:`fstat`, :func:`statvfs`, and :func:`fstatvfs` in the - :mod:`os` module, and :func:`localtime`, :func:`gmtime`, and :func:`strptime` in + as :attr:`!memberst_mtime` or :attr:`~time.struct_time.tm_year`. The enhanced functions include + :func:`~os.stat`, :func:`~os.fstat`, :func:`~os.statvfs`, and :func:`~os.fstatvfs` in the + :mod:`os` module, and :func:`~time.localtime`, :func:`~time.gmtime`, and :func:`~time.strptime` in the :mod:`time` module. For example, to obtain a file's size using the old tuples, you'd end up writing @@ -999,7 +999,7 @@ New and Improved Modules underlying the :mod:`re` module. For example, the :func:`re.sub` and :func:`re.split` functions have been rewritten in C. Another contributed patch speeds up certain Unicode character ranges by a factor of two, and a new - :meth:`finditer` method that returns an iterator over all the non-overlapping + :meth:`~re.finditer` method that returns an iterator over all the non-overlapping matches in a given string. (SRE is maintained by Fredrik Lundh. The BIGCHARSET patch was contributed by Martin von Löwis.) @@ -1012,33 +1012,33 @@ New and Improved Modules new extensions: the NAMESPACE extension defined in :rfc:`2342`, SORT, GETACL and SETACL. (Contributed by Anthony Baxter and Michel Pelletier.) -* The :mod:`rfc822` module's parsing of email addresses is now compliant with +* The :mod:`!rfc822` module's parsing of email addresses is now compliant with :rfc:`2822`, an update to :rfc:`822`. (The module's name is *not* going to be changed to ``rfc2822``.) A new package, :mod:`email`, has also been added for parsing and generating e-mail messages. (Contributed by Barry Warsaw, and arising out of his work on Mailman.) -* The :mod:`difflib` module now contains a new :class:`Differ` class for +* The :mod:`difflib` module now contains a new :class:`!Differ` class for producing human-readable lists of changes (a "delta") between two sequences of - lines of text. There are also two generator functions, :func:`ndiff` and - :func:`restore`, which respectively return a delta from two sequences, or one of + lines of text. There are also two generator functions, :func:`!ndiff` and + :func:`!restore`, which respectively return a delta from two sequences, or one of the original sequences from a delta. (Grunt work contributed by David Goodger, from ndiff.py code by Tim Peters who then did the generatorization.) -* New constants :const:`ascii_letters`, :const:`ascii_lowercase`, and - :const:`ascii_uppercase` were added to the :mod:`string` module. There were - several modules in the standard library that used :const:`string.letters` to +* New constants :const:`!ascii_letters`, :const:`!ascii_lowercase`, and + :const:`!ascii_uppercase` were added to the :mod:`string` module. There were + several modules in the standard library that used :const:`!string.letters` to mean the ranges A-Za-z, but that assumption is incorrect when locales are in - use, because :const:`string.letters` varies depending on the set of legal + use, because :const:`!string.letters` varies depending on the set of legal characters defined by the current locale. The buggy modules have all been fixed - to use :const:`ascii_letters` instead. (Reported by an unknown person; fixed by + to use :const:`!ascii_letters` instead. (Reported by an unknown person; fixed by Fred L. Drake, Jr.) * The :mod:`mimetypes` module now makes it easier to use alternative MIME-type - databases by the addition of a :class:`MimeTypes` class, which takes a list of + databases by the addition of a :class:`~mimetypes.MimeTypes` class, which takes a list of filenames to be parsed. (Contributed by Fred L. Drake, Jr.) -* A :class:`Timer` class was added to the :mod:`threading` module that allows +* A :class:`~threading.Timer` class was added to the :mod:`threading` module that allows scheduling an activity to happen at some future time. (Contributed by Itamar Shtull-Trauring.) @@ -1114,7 +1114,7 @@ code, none of the changes described here will affect you very much. * Two new wrapper functions, :c:func:`PyOS_snprintf` and :c:func:`PyOS_vsnprintf` were added to provide cross-platform implementations for the relatively new :c:func:`snprintf` and :c:func:`vsnprintf` C lib APIs. In contrast to the standard - :c:func:`sprintf` and :c:func:`vsprintf` functions, the Python versions check the + :c:func:`sprintf` and :c:func:`!vsprintf` functions, the Python versions check the bounds of the buffer used to protect against buffer overruns. (Contributed by M.-A. Lemburg.) @@ -1212,12 +1212,12 @@ Some of the more notable changes are: * The :file:`Tools/scripts/ftpmirror.py` script now parses a :file:`.netrc` file, if you have one. (Contributed by Mike Romberg.) -* Some features of the object returned by the :func:`xrange` function are now +* Some features of the object returned by the :func:`!xrange` function are now deprecated, and trigger warnings when they're accessed; they'll disappear in - Python 2.3. :class:`xrange` objects tried to pretend they were full sequence + Python 2.3. :class:`!xrange` objects tried to pretend they were full sequence types by supporting slicing, sequence multiplication, and the :keyword:`in` operator, but these features were rarely used and therefore buggy. The - :meth:`tolist` method and the :attr:`start`, :attr:`stop`, and :attr:`step` + :meth:`!tolist` method and the :attr:`!start`, :attr:`!stop`, and :attr:`!step` attributes are also being deprecated. At the C level, the fourth argument to the :c:func:`!PyRange_New` function, ``repeat``, has also been deprecated. diff --git a/Doc/whatsnew/2.3.rst b/Doc/whatsnew/2.3.rst index 6c8492414ad..b292b2ece0c 100644 --- a/Doc/whatsnew/2.3.rst +++ b/Doc/whatsnew/2.3.rst @@ -40,10 +40,10 @@ new feature. PEP 218: A Standard Set Datatype ================================ -The new :mod:`sets` module contains an implementation of a set datatype. The +The new :mod:`!sets` module contains an implementation of a set datatype. The :class:`Set` class is for mutable sets, sets that can have members added and -removed. The :class:`ImmutableSet` class is for sets that can't be modified, -and instances of :class:`ImmutableSet` can therefore be used as dictionary keys. +removed. The :class:`!ImmutableSet` class is for sets that can't be modified, +and instances of :class:`!ImmutableSet` can therefore be used as dictionary keys. Sets are built on top of dictionaries, so the elements within a set must be hashable. @@ -63,10 +63,10 @@ Here's a simple example:: Set([1, 2, 5]) >>> -The union and intersection of sets can be computed with the :meth:`union` and -:meth:`intersection` methods; an alternative notation uses the bitwise operators +The union and intersection of sets can be computed with the :meth:`~frozenset.union` and +:meth:`~frozenset.intersection` methods; an alternative notation uses the bitwise operators ``&`` and ``|``. Mutable sets also have in-place versions of these methods, -:meth:`union_update` and :meth:`intersection_update`. :: +:meth:`!union_update` and :meth:`~frozenset.intersection_update`. :: >>> S1 = sets.Set([1,2,3]) >>> S2 = sets.Set([4,5,6]) @@ -87,7 +87,7 @@ It's also possible to take the symmetric difference of two sets. This is the set of all elements in the union that aren't in the intersection. Another way of putting it is that the symmetric difference contains all elements that are in exactly one set. Again, there's an alternative notation (``^``), and an -in-place version with the ungainly name :meth:`symmetric_difference_update`. :: +in-place version with the ungainly name :meth:`~frozenset.symmetric_difference_update`. :: >>> S1 = sets.Set([1,2,3,4]) >>> S2 = sets.Set([3,4,5,6]) @@ -97,7 +97,7 @@ in-place version with the ungainly name :meth:`symmetric_difference_update`. :: Set([1, 2, 5, 6]) >>> -There are also :meth:`issubset` and :meth:`issuperset` methods for checking +There are also :meth:`!issubset` and :meth:`!issuperset` methods for checking whether one set is a subset or superset of another:: >>> S1 = sets.Set([1,2,3]) @@ -166,7 +166,7 @@ statement isn't allowed inside the :keyword:`try` block of a :keyword:`!try`...\ :keyword:`!finally` statement; read :pep:`255` for a full explanation of the interaction between :keyword:`!yield` and exceptions.) -Here's a sample usage of the :func:`generate_ints` generator:: +Here's a sample usage of the :func:`!generate_ints` generator:: >>> gen = generate_ints(3) >>> gen @@ -227,7 +227,7 @@ like:: sentence := "Store it in the neighboring harbor" if (i := find("or", sentence)) > 5 then write(i) -In Icon the :func:`find` function returns the indexes at which the substring +In Icon the :func:`!find` function returns the indexes at which the substring "or" is found: 3, 23, 33. In the :keyword:`if` statement, ``i`` is first assigned a value of 3, but 3 is less than 5, so the comparison fails, and Icon retries it with the second value of 23. 23 is greater than 5, so the comparison @@ -345,7 +345,7 @@ Python now allows using arbitrary Unicode strings (within the limitations of the file system) for all functions that expect file names, most notably the :func:`open` built-in function. If a Unicode string is passed to :func:`os.listdir`, Python now returns a list of Unicode strings. A new -function, :func:`os.getcwdu`, returns the current directory as a Unicode string. +function, :func:`!os.getcwdu`, returns the current directory as a Unicode string. Byte strings still work as file names, and on Windows Python will transparently convert them to Unicode using the ``mbcs`` encoding. @@ -386,10 +386,10 @@ one followed by the platform on which Python is running. Opening a file with the mode ``'U'`` or ``'rU'`` will open a file for reading in :term:`universal newlines` mode. All three line ending conventions will be translated to a ``'\n'`` in the strings returned by the various file methods such as -:meth:`read` and :meth:`readline`. +:meth:`!read` and :meth:`!readline`. Universal newline support is also used when importing modules and when executing -a file with the :func:`execfile` function. This means that Python modules can +a file with the :func:`!execfile` function. This means that Python modules can be shared between all three operating systems without needing to convert the line-endings. @@ -450,16 +450,16 @@ records to standard error or to a file or socket, send them to the system log, or even e-mail them to a particular address; of course, it's also possible to write your own handler classes. -The :class:`Logger` class is the primary class. Most application code will deal -with one or more :class:`Logger` objects, each one used by a particular -subsystem of the application. Each :class:`Logger` is identified by a name, and +The :class:`~logging.Logger` class is the primary class. Most application code will deal +with one or more :class:`~logging.Logger` objects, each one used by a particular +subsystem of the application. Each :class:`~logging.Logger` is identified by a name, and names are organized into a hierarchy using ``.`` as the component separator. -For example, you might have :class:`Logger` instances named ``server``, +For example, you might have :class:`~logging.Logger` instances named ``server``, ``server.auth`` and ``server.network``. The latter two instances are below ``server`` in the hierarchy. This means that if you turn up the verbosity for ``server`` or direct ``server`` messages to a different handler, the changes will also apply to records logged to ``server.auth`` and ``server.network``. -There's also a root :class:`Logger` that's the parent of all other loggers. +There's also a root :class:`~logging.Logger` that's the parent of all other loggers. For simple uses, the :mod:`logging` package contains some convenience functions that always use the root log:: @@ -480,14 +480,14 @@ This produces the following output:: In the default configuration, informational and debugging messages are suppressed and the output is sent to standard error. You can enable the display -of informational and debugging messages by calling the :meth:`setLevel` method +of informational and debugging messages by calling the :meth:`~logging.Logger.setLevel` method on the root logger. -Notice the :func:`warning` call's use of string formatting operators; all of the +Notice the :func:`~logging.warning` call's use of string formatting operators; all of the functions for logging messages take the arguments ``(msg, arg1, arg2, ...)`` and log the string resulting from ``msg % (arg1, arg2, ...)``. -There's also an :func:`exception` function that records the most recent +There's also an :func:`~logging.exception` function that records the most recent traceback. Any of the other functions will also record the traceback if you specify a true value for the keyword argument *exc_info*. :: @@ -517,16 +517,16 @@ it if it doesn't exist yet. ``getLogger(None)`` returns the root logger. :: ... Log records are usually propagated up the hierarchy, so a message logged to -``server.auth`` is also seen by ``server`` and ``root``, but a :class:`Logger` -can prevent this by setting its :attr:`propagate` attribute to :const:`False`. +``server.auth`` is also seen by ``server`` and ``root``, but a :class:`~logging.Logger` +can prevent this by setting its :attr:`~logging.Logger.propagate` attribute to :const:`False`. There are more classes provided by the :mod:`logging` package that can be -customized. When a :class:`Logger` instance is told to log a message, it -creates a :class:`LogRecord` instance that is sent to any number of different -:class:`Handler` instances. Loggers and handlers can also have an attached list -of filters, and each filter can cause the :class:`LogRecord` to be ignored or +customized. When a :class:`~logging.Logger` instance is told to log a message, it +creates a :class:`~logging.LogRecord` instance that is sent to any number of different +:class:`~logging.Handler` instances. Loggers and handlers can also have an attached list +of filters, and each filter can cause the :class:`~logging.LogRecord` to be ignored or can modify the record before passing it along. When they're finally output, -:class:`LogRecord` instances are converted to text by a :class:`Formatter` +:class:`~logging.LogRecord` instances are converted to text by a :class:`~logging.Formatter` class. All of these classes can be replaced by your own specially written classes. @@ -550,7 +550,7 @@ PEP 285: A Boolean Type ======================= A Boolean type was added to Python 2.3. Two new constants were added to the -:mod:`__builtin__` module, :const:`True` and :const:`False`. (:const:`True` and +:mod:`!__builtin__` module, :const:`True` and :const:`False`. (:const:`True` and :const:`False` constants were added to the built-ins in Python 2.2.1, but the 2.2.1 versions are simply set to integer values of 1 and 0 and aren't a different type.) @@ -662,7 +662,7 @@ a central catalog server. The resulting catalog is available from https://pypi.org. To make the catalog a bit more useful, a new optional *classifiers* keyword -argument has been added to the Distutils :func:`setup` function. A list of +argument has been added to the Distutils :func:`!setup` function. A list of `Trove <http://catb.org/~esr/trove/>`_-style strings can be supplied to help classify the software. @@ -703,14 +703,14 @@ PEP 302: New Import Hooks ========================= While it's been possible to write custom import hooks ever since the -:mod:`ihooks` module was introduced in Python 1.3, no one has ever been really +:mod:`!ihooks` module was introduced in Python 1.3, no one has ever been really happy with it because writing new import hooks is difficult and messy. There -have been various proposed alternatives such as the :mod:`imputil` and :mod:`iu` +have been various proposed alternatives such as the :mod:`!imputil` and :mod:`!iu` modules, but none of them has ever gained much acceptance, and none of them were easily usable from C code. :pep:`302` borrows ideas from its predecessors, especially from Gordon -McMillan's :mod:`iu` module. Three new items are added to the :mod:`sys` +McMillan's :mod:`!iu` module. Three new items are added to the :mod:`sys` module: * ``sys.path_hooks`` is a list of callable objects; most often they'll be @@ -790,7 +790,7 @@ package is much simpler:: for line in reader: print line -The :func:`reader` function takes a number of different options. The field +The :func:`~csv.reader` function takes a number of different options. The field separator isn't limited to the comma and can be changed to any character, and so can the quoting and line-ending characters. @@ -814,7 +814,7 @@ of tuples or lists, quoting strings that contain the delimiter. PEP 307: Pickle Enhancements ============================ -The :mod:`pickle` and :mod:`cPickle` modules received some attention during the +The :mod:`pickle` and :mod:`!cPickle` modules received some attention during the 2.3 development cycle. In 2.2, new-style classes could be pickled without difficulty, but they weren't pickled very compactly; :pep:`307` quotes a trivial example where a new-style class results in a pickled string three times longer @@ -829,13 +829,13 @@ fanciest protocol available. Unpickling is no longer considered a safe operation. 2.2's :mod:`pickle` provided hooks for trying to prevent unsafe classes from being unpickled -(specifically, a :attr:`__safe_for_unpickling__` attribute), but none of this +(specifically, a :attr:`!__safe_for_unpickling__` attribute), but none of this code was ever audited and therefore it's all been ripped out in 2.3. You should not unpickle untrusted data in any version of Python. To reduce the pickling overhead for new-style classes, a new interface for customizing pickling was added using three special methods: -:meth:`__getstate__`, :meth:`__setstate__`, and :meth:`__getnewargs__`. Consult +:meth:`~object.__getstate__`, :meth:`~object.__setstate__`, and :meth:`~object.__getnewargs__`. Consult :pep:`307` for the full semantics of these methods. As a way to compress pickles yet further, it's now possible to use integer codes @@ -939,7 +939,7 @@ Or use slice objects directly in subscripts:: To simplify implementing sequences that support extended slicing, slice objects now have a method ``indices(length)`` which, given the length of a sequence, returns a ``(start, stop, step)`` tuple that can be passed directly to -:func:`range`. :meth:`indices` handles omitted and out-of-bounds indices in a +:func:`range`. :meth:`!indices` handles omitted and out-of-bounds indices in a manner consistent with regular slices (and this innocuous phrase hides a welter of confusing details!). The method is intended to be used like this:: @@ -1042,7 +1042,7 @@ Here are all of the changes that Python 2.3 makes to the core Python language. execute any assertions. * Most type objects are now callable, so you can use them to create new objects - such as functions, classes, and modules. (This means that the :mod:`new` module + such as functions, classes, and modules. (This means that the :mod:`!new` module can be deprecated in a future Python version, because you can now use the type objects available in the :mod:`types` module.) For example, you can create a new module object with the following code: @@ -1069,11 +1069,11 @@ Here are all of the changes that Python 2.3 makes to the core Python language. * Using ``None`` as a variable name will now result in a :exc:`SyntaxWarning` warning. In a future version of Python, ``None`` may finally become a keyword. -* The :meth:`xreadlines` method of file objects, introduced in Python 2.1, is no +* The :meth:`!xreadlines` method of file objects, introduced in Python 2.1, is no longer necessary because files now behave as their own iterator. - :meth:`xreadlines` was originally introduced as a faster way to loop over all + :meth:`!xreadlines` was originally introduced as a faster way to loop over all the lines in a file, but now you can simply write ``for line in file_obj``. - File objects also have a new read-only :attr:`encoding` attribute that gives the + File objects also have a new read-only :attr:`!encoding` attribute that gives the encoding used by the file; Unicode strings written to the file will be automatically converted to bytes using the given encoding. @@ -1096,12 +1096,12 @@ Here are all of the changes that Python 2.3 makes to the core Python language. switching overhead. Some multithreaded applications may suffer slower response time, but that's easily fixed by setting the limit back to a lower number using ``sys.setcheckinterval(N)``. The limit can be retrieved with the new - :func:`sys.getcheckinterval` function. + :func:`!sys.getcheckinterval` function. * One minor but far-reaching change is that the names of extension types defined by the modules included with Python now contain the module and a ``'.'`` in front of the type name. For example, in Python 2.2, if you created a socket and - printed its :attr:`__class__`, you'd get this output:: + printed its :attr:`!__class__`, you'd get this output:: >>> s = socket.socket() >>> s.__class__ @@ -1138,9 +1138,9 @@ String Changes True Note that this doesn't tell you where the substring starts; if you need that - information, use the :meth:`find` string method. + information, use the :meth:`~str.find` string method. -* The :meth:`strip`, :meth:`lstrip`, and :meth:`rstrip` string methods now have +* The :meth:`~str.strip`, :meth:`~str.lstrip`, and :meth:`~str.rstrip` string methods now have an optional argument for specifying the characters to strip. The default is still to remove all whitespace characters:: @@ -1156,13 +1156,13 @@ String Changes (Suggested by Simon Brunning and implemented by Walter Dörwald.) -* The :meth:`startswith` and :meth:`endswith` string methods now accept negative +* The :meth:`~str.startswith` and :meth:`~str.endswith` string methods now accept negative numbers for the *start* and *end* parameters. -* Another new string method is :meth:`zfill`, originally a function in the - :mod:`string` module. :meth:`zfill` pads a numeric string with zeros on the +* Another new string method is :meth:`~str.zfill`, originally a function in the + :mod:`string` module. :meth:`~str.zfill` pads a numeric string with zeros on the left until it's the specified width. Note that the ``%`` operator is still more - flexible and powerful than :meth:`zfill`. :: + flexible and powerful than :meth:`~str.zfill`. :: >>> '45'.zfill(4) '0045' @@ -1173,10 +1173,10 @@ String Changes (Contributed by Walter Dörwald.) -* A new type object, :class:`basestring`, has been added. Both 8-bit strings and +* A new type object, :class:`!basestring`, has been added. Both 8-bit strings and Unicode strings inherit from this type, so ``isinstance(obj, basestring)`` will return :const:`True` for either kind of string. It's a completely abstract - type, so you can't create :class:`basestring` instances. + type, so you can't create :class:`!basestring` instances. * Interned strings are no longer immortal and will now be garbage-collected in the usual way when the only reference to them is from the internal dictionary of @@ -1191,19 +1191,19 @@ Optimizations * The creation of new-style class instances has been made much faster; they're now faster than classic classes! -* The :meth:`sort` method of list objects has been extensively rewritten by Tim +* The :meth:`~list.sort` method of list objects has been extensively rewritten by Tim Peters, and the implementation is significantly faster. * Multiplication of large long integers is now much faster thanks to an implementation of Karatsuba multiplication, an algorithm that scales better than - the O(n\*n) required for the grade-school multiplication algorithm. (Original + the *O*\ (*n*\ :sup:`2`) required for the grade-school multiplication algorithm. (Original patch by Christopher A. Craig, and significantly reworked by Tim Peters.) * The ``SET_LINENO`` opcode is now gone. This may provide a small speed increase, depending on your compiler's idiosyncrasies. See section :ref:`23section-other` for a longer explanation. (Removed by Michael Hudson.) -* :func:`xrange` objects now have their own iterator, making ``for i in +* :func:`!xrange` objects now have their own iterator, making ``for i in xrange(n)`` slightly faster than ``for i in range(n)``. (Patch by Raymond Hettinger.) @@ -1230,21 +1230,21 @@ complete list of changes, or look through the CVS logs for all the details. operator to add another array's contents, and the ``*=`` assignment operator to repeat an array. (Contributed by Jason Orendorff.) -* The :mod:`bsddb` module has been replaced by version 4.1.6 of the `PyBSDDB +* The :mod:`!bsddb` module has been replaced by version 4.1.6 of the `PyBSDDB <https://pybsddb.sourceforge.net>`_ package, providing a more complete interface to the transactional features of the BerkeleyDB library. - The old version of the module has been renamed to :mod:`bsddb185` and is no + The old version of the module has been renamed to :mod:`!bsddb185` and is no longer built automatically; you'll have to edit :file:`Modules/Setup` to enable - it. Note that the new :mod:`bsddb` package is intended to be compatible with + it. Note that the new :mod:`!bsddb` package is intended to be compatible with the old module, so be sure to file bugs if you discover any incompatibilities. When upgrading to Python 2.3, if the new interpreter is compiled with a new version of the underlying BerkeleyDB library, you will almost certainly have to convert your database files to the new version. You can do this fairly easily with the new scripts :file:`db2pickle.py` and :file:`pickle2db.py` which you will find in the distribution's :file:`Tools/scripts` directory. If you've - already been using the PyBSDDB package and importing it as :mod:`bsddb3`, you - will have to change your ``import`` statements to import it as :mod:`bsddb`. + already been using the PyBSDDB package and importing it as :mod:`!bsddb3`, you + will have to change your ``import`` statements to import it as :mod:`!bsddb`. * The new :mod:`bz2` module is an interface to the bz2 data compression library. bz2-compressed data is usually smaller than corresponding @@ -1253,11 +1253,11 @@ complete list of changes, or look through the CVS logs for all the details. * A set of standard date/time types has been added in the new :mod:`datetime` module. See the following section for more details. -* The Distutils :class:`Extension` class now supports an extra constructor +* The Distutils :class:`!Extension` class now supports an extra constructor argument named *depends* for listing additional source files that an extension depends on. This lets Distutils recompile the module if any of the dependency files are modified. For example, if :file:`sampmodule.c` includes the header - file :file:`sample.h`, you would create the :class:`Extension` object like + file :file:`sample.h`, you would create the :class:`!Extension` object like this:: ext = Extension("samp", @@ -1268,21 +1268,21 @@ complete list of changes, or look through the CVS logs for all the details. (Contributed by Jeremy Hylton.) * Other minor changes to Distutils: it now checks for the :envvar:`CC`, - :envvar:`CFLAGS`, :envvar:`CPP`, :envvar:`LDFLAGS`, and :envvar:`CPPFLAGS` + :envvar:`CFLAGS`, :envvar:`!CPP`, :envvar:`LDFLAGS`, and :envvar:`CPPFLAGS` environment variables, using them to override the settings in Python's configuration (contributed by Robert Weber). * Previously the :mod:`doctest` module would only search the docstrings of public methods and functions for test cases, but it now also examines private - ones as well. The :func:`DocTestSuite` function creates a + ones as well. The :func:`~doctest.DocTestSuite` function creates a :class:`unittest.TestSuite` object from a set of :mod:`doctest` tests. * The new ``gc.get_referents(object)`` function returns a list of all the objects referenced by *object*. -* The :mod:`getopt` module gained a new function, :func:`gnu_getopt`, that - supports the same arguments as the existing :func:`getopt` function but uses - GNU-style scanning mode. The existing :func:`getopt` stops processing options as +* The :mod:`getopt` module gained a new function, :func:`~getopt.gnu_getopt`, that + supports the same arguments as the existing :func:`~getopt.getopt` function but uses + GNU-style scanning mode. The existing :func:`~getopt.getopt` stops processing options as soon as a non-option argument is encountered, but in GNU-style mode processing continues, meaning that options and arguments can be mixed. For example:: @@ -1308,10 +1308,10 @@ complete list of changes, or look through the CVS logs for all the details. partially sorted order such that, for every index *k*, ``heap[k] <= heap[2*k+1]`` and ``heap[k] <= heap[2*k+2]``. This makes it quick to remove the smallest item, and inserting a new item while maintaining the heap property is - O(lg n). (See https://xlinux.nist.gov/dads//HTML/priorityque.html for more + *O*\ (log *n*). (See https://xlinux.nist.gov/dads//HTML/priorityque.html for more information about the priority queue data structure.) - The :mod:`heapq` module provides :func:`heappush` and :func:`heappop` functions + The :mod:`heapq` module provides :func:`~heapq.heappush` and :func:`~heapq.heappop` functions for adding and removing items while maintaining the heap property on top of some other mutable Python sequence type. Here's an example that uses a Python list:: @@ -1343,7 +1343,7 @@ complete list of changes, or look through the CVS logs for all the details. * The :mod:`itertools` contains a number of useful functions for use with iterators, inspired by various functions provided by the ML and Haskell languages. For example, ``itertools.ifilter(predicate, iterator)`` returns all - elements in the iterator for which the function :func:`predicate` returns + elements in the iterator for which the function :func:`!predicate` returns :const:`True`, and ``itertools.repeat(obj, N)`` returns ``obj`` *N* times. There are a number of other functions in the module; see the package's reference documentation for details. @@ -1356,21 +1356,21 @@ complete list of changes, or look through the CVS logs for all the details. was added to :func:`math.log` to make it easier to compute logarithms for bases other than ``e`` and ``10``. (Contributed by Raymond Hettinger.) -* Several new POSIX functions (:func:`getpgid`, :func:`killpg`, :func:`lchown`, - :func:`loadavg`, :func:`major`, :func:`makedev`, :func:`minor`, and - :func:`mknod`) were added to the :mod:`posix` module that underlies the +* Several new POSIX functions (:func:`!getpgid`, :func:`!killpg`, :func:`!lchown`, + :func:`!loadavg`, :func:`!major`, :func:`!makedev`, :func:`!minor`, and + :func:`!mknod`) were added to the :mod:`posix` module that underlies the :mod:`os` module. (Contributed by Gustavo Niemeyer, Geert Jansen, and Denis S. Otkidach.) -* In the :mod:`os` module, the :func:`\*stat` family of functions can now report +* In the :mod:`os` module, the :func:`!\*stat` family of functions can now report fractions of a second in a timestamp. Such time stamps are represented as floats, similar to the value returned by :func:`time.time`. During testing, it was found that some applications will break if time stamps are floats. For compatibility, when using the tuple interface of the - :class:`stat_result` time stamps will be represented as integers. When using + :class:`~os.stat_result` time stamps will be represented as integers. When using named fields (a feature first introduced in Python 2.2), time stamps are still - represented as integers, unless :func:`os.stat_float_times` is invoked to enable + represented as integers, unless :func:`!os.stat_float_times` is invoked to enable float return values:: >>> os.stat("/tmp").st_mtime @@ -1391,7 +1391,7 @@ complete list of changes, or look through the CVS logs for all the details. automatically generate a usage message. See the following section for more details. -* The old and never-documented :mod:`linuxaudiodev` module has been deprecated, +* The old and never-documented :mod:`!linuxaudiodev` module has been deprecated, and a new version named :mod:`ossaudiodev` has been added. The module was renamed because the OSS sound drivers can be used on platforms other than Linux, and the interface has also been tidied and brought up to date in various ways. @@ -1402,14 +1402,14 @@ complete list of changes, or look through the CVS logs for all the details. functions for getting the architecture, CPU type, the Windows OS version, and even the Linux distribution version. (Contributed by Marc-André Lemburg.) -* The parser objects provided by the :mod:`pyexpat` module can now optionally +* The parser objects provided by the :mod:`pyexpat <xml.parsers.expat>` module can now optionally buffer character data, resulting in fewer calls to your character data handler and therefore faster performance. Setting the parser object's - :attr:`buffer_text` attribute to :const:`True` will enable buffering. + :attr:`~xml.parsers.expat.xmlparser.buffer_text` attribute to :const:`True` will enable buffering. * The ``sample(population, k)`` function was added to the :mod:`random` - module. *population* is a sequence or :class:`xrange` object containing the - elements of a population, and :func:`sample` chooses *k* elements from the + module. *population* is a sequence or :class:`!xrange` object containing the + elements of a population, and :func:`~random.sample` chooses *k* elements from the population without replacing chosen elements. *k* can be any value up to ``len(population)``. For example:: @@ -1436,20 +1436,20 @@ complete list of changes, or look through the CVS logs for all the details. (All changes contributed by Raymond Hettinger.) * The :mod:`readline` module also gained a number of new functions: - :func:`get_history_item`, :func:`get_current_history_length`, and - :func:`redisplay`. + :func:`~readline.get_history_item`, :func:`~readline.get_current_history_length`, and + :func:`~readline.redisplay`. -* The :mod:`rexec` and :mod:`Bastion` modules have been declared dead, and +* The :mod:`!rexec` and :mod:`!Bastion` modules have been declared dead, and attempts to import them will fail with a :exc:`RuntimeError`. New-style classes provide new ways to break out of the restricted execution environment provided - by :mod:`rexec`, and no one has interest in fixing them or time to do so. If - you have applications using :mod:`rexec`, rewrite them to use something else. + by :mod:`!rexec`, and no one has interest in fixing them or time to do so. If + you have applications using :mod:`!rexec`, rewrite them to use something else. (Sticking with Python 2.2 or 2.1 will not make your applications any safer - because there are known bugs in the :mod:`rexec` module in those versions. To - repeat: if you're using :mod:`rexec`, stop using it immediately.) + because there are known bugs in the :mod:`!rexec` module in those versions. To + repeat: if you're using :mod:`!rexec`, stop using it immediately.) -* The :mod:`rotor` module has been deprecated because the algorithm it uses for +* The :mod:`!rotor` module has been deprecated because the algorithm it uses for encryption is not believed to be secure. If you need encryption, use one of the several AES Python modules that are available separately. @@ -1474,9 +1474,9 @@ complete list of changes, or look through the CVS logs for all the details. * On Windows, the :mod:`socket` module now ships with Secure Sockets Layer (SSL) support. -* The value of the C :c:macro:`PYTHON_API_VERSION` macro is now exposed at the +* The value of the C :c:macro:`!PYTHON_API_VERSION` macro is now exposed at the Python level as ``sys.api_version``. The current exception can be cleared by - calling the new :func:`sys.exc_clear` function. + calling the new :func:`!sys.exc_clear` function. * The new :mod:`tarfile` module allows reading from and writing to :program:`tar`\ -format archive files. (Contributed by Lars Gustäbel.) @@ -1486,7 +1486,7 @@ complete list of changes, or look through the CVS logs for all the details. string and returns a list containing the text split into lines of no more than the chosen width. The ``fill(text, width)`` function returns a single string, reformatted to fit into lines no longer than the chosen width. (As you - can guess, :func:`fill` is built on top of :func:`wrap`. For example:: + can guess, :func:`~textwrap.fill` is built on top of :func:`~textwrap.wrap`. For example:: >>> import textwrap >>> paragraph = "Not a whit, we defy augury: ... more text ..." @@ -1503,15 +1503,15 @@ complete list of changes, or look through the CVS logs for all the details. it will come: the readiness is all. >>> - The module also contains a :class:`TextWrapper` class that actually implements - the text wrapping strategy. Both the :class:`TextWrapper` class and the - :func:`wrap` and :func:`fill` functions support a number of additional keyword + The module also contains a :class:`~textwrap.TextWrapper` class that actually implements + the text wrapping strategy. Both the :class:`~textwrap.TextWrapper` class and the + :func:`~textwrap.wrap` and :func:`~textwrap.fill` functions support a number of additional keyword arguments for fine-tuning the formatting; consult the module's documentation for details. (Contributed by Greg Ward.) -* The :mod:`thread` and :mod:`threading` modules now have companion modules, - :mod:`dummy_thread` and :mod:`dummy_threading`, that provide a do-nothing - implementation of the :mod:`thread` module's interface for platforms where +* The :mod:`!thread` and :mod:`threading` modules now have companion modules, + :mod:`!dummy_thread` and :mod:`!dummy_threading`, that provide a do-nothing + implementation of the :mod:`!thread` module's interface for platforms where threads are not supported. The intention is to simplify thread-aware modules (ones that *don't* rely on threads to run) by putting the following code at the top:: @@ -1521,26 +1521,26 @@ complete list of changes, or look through the CVS logs for all the details. except ImportError: import dummy_threading as _threading - In this example, :mod:`_threading` is used as the module name to make it clear + In this example, :mod:`!_threading` is used as the module name to make it clear that the module being used is not necessarily the actual :mod:`threading` - module. Code can call functions and use classes in :mod:`_threading` whether or + module. Code can call functions and use classes in :mod:`!_threading` whether or not threads are supported, avoiding an :keyword:`if` statement and making the code slightly clearer. This module will not magically make multithreaded code run without threads; code that waits for another thread to return or to do something will simply hang forever. -* The :mod:`time` module's :func:`strptime` function has long been an annoyance - because it uses the platform C library's :func:`strptime` implementation, and +* The :mod:`time` module's :func:`~time.strptime` function has long been an annoyance + because it uses the platform C library's :func:`~time.strptime` implementation, and different platforms sometimes have odd bugs. Brett Cannon contributed a portable implementation that's written in pure Python and should behave identically on all platforms. * The new :mod:`timeit` module helps measure how long snippets of Python code take to execute. The :file:`timeit.py` file can be run directly from the - command line, or the module's :class:`Timer` class can be imported and used + command line, or the module's :class:`~timeit.Timer` class can be imported and used directly. Here's a short example that figures out whether it's faster to convert an 8-bit string to Unicode by appending an empty Unicode string to it or - by using the :func:`unicode` function:: + by using the :func:`!unicode` function:: import timeit @@ -1555,49 +1555,49 @@ complete list of changes, or look through the CVS logs for all the details. # [0.36831796169281006, 0.37441694736480713, 0.35304892063140869] # [0.17574405670166016, 0.18193507194519043, 0.17565798759460449] -* The :mod:`Tix` module has received various bug fixes and updates for the +* The :mod:`!Tix` module has received various bug fixes and updates for the current version of the Tix package. -* The :mod:`Tkinter` module now works with a thread-enabled version of Tcl. +* The :mod:`!Tkinter` module now works with a thread-enabled version of Tcl. Tcl's threading model requires that widgets only be accessed from the thread in which they're created; accesses from another thread can cause Tcl to panic. For - certain Tcl interfaces, :mod:`Tkinter` will now automatically avoid this when a + certain Tcl interfaces, :mod:`!Tkinter` will now automatically avoid this when a widget is accessed from a different thread by marshalling a command, passing it to the correct thread, and waiting for the results. Other interfaces can't be - handled automatically but :mod:`Tkinter` will now raise an exception on such an + handled automatically but :mod:`!Tkinter` will now raise an exception on such an access so that you can at least find out about the problem. See https://mail.python.org/pipermail/python-dev/2002-December/031107.html for a more detailed explanation of this change. (Implemented by Martin von Löwis.) -* Calling Tcl methods through :mod:`_tkinter` no longer returns only strings. +* Calling Tcl methods through :mod:`!_tkinter` no longer returns only strings. Instead, if Tcl returns other objects those objects are converted to their - Python equivalent, if one exists, or wrapped with a :class:`_tkinter.Tcl_Obj` + Python equivalent, if one exists, or wrapped with a :class:`!_tkinter.Tcl_Obj` object if no Python equivalent exists. This behavior can be controlled through - the :meth:`wantobjects` method of :class:`tkapp` objects. + the :meth:`!wantobjects` method of :class:`!tkapp` objects. - When using :mod:`_tkinter` through the :mod:`Tkinter` module (as most Tkinter + When using :mod:`!_tkinter` through the :mod:`!Tkinter` module (as most Tkinter applications will), this feature is always activated. It should not cause compatibility problems, since Tkinter would always convert string results to Python types where possible. If any incompatibilities are found, the old behavior can be restored by setting - the :attr:`wantobjects` variable in the :mod:`Tkinter` module to false before - creating the first :class:`tkapp` object. :: + the :attr:`!wantobjects` variable in the :mod:`!Tkinter` module to false before + creating the first :class:`!tkapp` object. :: import Tkinter Tkinter.wantobjects = 0 Any breakage caused by this change should be reported as a bug. -* The :mod:`UserDict` module has a new :class:`DictMixin` class which defines +* The :mod:`!UserDict` module has a new :class:`!DictMixin` class which defines all dictionary methods for classes that already have a minimum mapping interface. This greatly simplifies writing classes that need to be substitutable for dictionaries, such as the classes in the :mod:`shelve` module. Adding the mix-in as a superclass provides the full dictionary interface - whenever the class defines :meth:`~object.__getitem__`, :meth:`__setitem__`, - :meth:`__delitem__`, and :meth:`keys`. For example:: + whenever the class defines :meth:`~object.__getitem__`, :meth:`~object.__setitem__`, + :meth:`~object.__delitem__`, and :meth:`!keys`. For example:: >>> import UserDict >>> class SeqDict(UserDict.DictMixin): @@ -1640,15 +1640,15 @@ complete list of changes, or look through the CVS logs for all the details. * The DOM implementation in :mod:`xml.dom.minidom` can now generate XML output in a particular encoding by providing an optional encoding argument to the - :meth:`toxml` and :meth:`toprettyxml` methods of DOM nodes. + :meth:`~xml.dom.minidom.Node.toxml` and :meth:`~xml.dom.minidom.Node.toprettyxml` methods of DOM nodes. -* The :mod:`xmlrpclib` module now supports an XML-RPC extension for handling nil +* The :mod:`!xmlrpclib` module now supports an XML-RPC extension for handling nil data values such as Python's ``None``. Nil values are always supported on unmarshalling an XML-RPC response. To generate requests containing ``None``, you must supply a true value for the *allow_none* parameter when creating a - :class:`Marshaller` instance. + :class:`!Marshaller` instance. -* The new :mod:`DocXMLRPCServer` module allows writing self-documenting XML-RPC +* The new :mod:`!DocXMLRPCServer` module allows writing self-documenting XML-RPC servers. Run it in demo mode (as a program) to see it in action. Pointing the web browser to the RPC server produces pydoc-style documentation; pointing xmlrpclib to the server allows invoking the actual methods. (Contributed by @@ -1663,8 +1663,8 @@ complete list of changes, or look through the CVS logs for all the details. The :mod:`socket` module has also been extended to transparently convert Unicode hostnames to the ACE version before passing them to the C library. - Modules that deal with hostnames such as :mod:`httplib` and :mod:`ftplib`) - also support Unicode host names; :mod:`httplib` also sends HTTP ``Host`` + Modules that deal with hostnames such as :mod:`!httplib` and :mod:`ftplib`) + also support Unicode host names; :mod:`!httplib` also sends HTTP ``Host`` headers using the ACE version of the domain name. :mod:`urllib` supports Unicode URLs with non-ASCII host names as long as the ``path`` part of the URL is ASCII only. @@ -1682,17 +1682,17 @@ Date and time types suitable for expressing timestamps were added as the :mod:`datetime` module. The types don't support different calendars or many fancy features, and just stick to the basics of representing time. -The three primary types are: :class:`date`, representing a day, month, and year; +The three primary types are: :class:`~datetime.date`, representing a day, month, and year; :class:`~datetime.time`, consisting of hour, minute, and second; and :class:`~datetime.datetime`, -which contains all the attributes of both :class:`date` and :class:`~datetime.time`. -There's also a :class:`timedelta` class representing differences between two +which contains all the attributes of both :class:`~datetime.date` and :class:`~datetime.time`. +There's also a :class:`~datetime.timedelta` class representing differences between two points in time, and time zone logic is implemented by classes inheriting from -the abstract :class:`tzinfo` class. +the abstract :class:`~datetime.tzinfo` class. -You can create instances of :class:`date` and :class:`~datetime.time` by either supplying +You can create instances of :class:`~datetime.date` and :class:`~datetime.time` by either supplying keyword arguments to the appropriate constructor, e.g. ``datetime.date(year=1972, month=10, day=15)``, or by using one of a number of -class methods. For example, the :meth:`date.today` class method returns the +class methods. For example, the :meth:`~datetime.date.today` class method returns the current local date. Once created, instances of the date/time classes are all immutable. There are a @@ -1707,8 +1707,8 @@ number of methods for producing formatted strings from objects:: >>> now.strftime('%Y %d %b') '2002 30 Dec' -The :meth:`replace` method allows modifying one or more fields of a -:class:`date` or :class:`~datetime.datetime` instance, returning a new instance:: +The :meth:`~datetime.datetime.replace` method allows modifying one or more fields of a +:class:`~datetime.date` or :class:`~datetime.datetime` instance, returning a new instance:: >>> d = datetime.datetime.now() >>> d @@ -1718,10 +1718,10 @@ The :meth:`replace` method allows modifying one or more fields of a >>> Instances can be compared, hashed, and converted to strings (the result is the -same as that of :meth:`isoformat`). :class:`date` and :class:`~datetime.datetime` -instances can be subtracted from each other, and added to :class:`timedelta` +same as that of :meth:`~datetime.datetime.isoformat`). :class:`~datetime.date` and :class:`~datetime.datetime` +instances can be subtracted from each other, and added to :class:`~datetime.timedelta` instances. The largest missing feature is that there's no standard library -support for parsing strings and getting back a :class:`date` or +support for parsing strings and getting back a :class:`~datetime.date` or :class:`~datetime.datetime`. For more information, refer to the module's reference documentation. @@ -1739,7 +1739,7 @@ command-line parsing that follows the Unix conventions, automatically creates the output for :option:`!--help`, and can perform different actions for different options. -You start by creating an instance of :class:`OptionParser` and telling it what +You start by creating an instance of :class:`~optparse.OptionParser` and telling it what your program's options are. :: import sys @@ -1753,7 +1753,7 @@ your program's options are. :: action='store', type='int', dest='length', help='set maximum length of output') -Parsing a command line is then done by calling the :meth:`parse_args` method. :: +Parsing a command line is then done by calling the :meth:`~optparse.OptionParser.parse_args` method. :: options, args = op.parse_args(sys.argv[1:]) print options @@ -1925,7 +1925,7 @@ Changes to Python's build process and to the C API include: dependence on a system version or local installation of Expat. * If you dynamically allocate type objects in your extension, you should be - aware of a change in the rules relating to the :attr:`__module__` and + aware of a change in the rules relating to the :attr:`!__module__` and :attr:`~definition.__name__` attributes. In summary, you will want to ensure the type's dictionary contains a ``'__module__'`` key; making the module name the part of the type name leading up to the final period will no longer have the desired @@ -1940,7 +1940,7 @@ Port-Specific Changes Support for a port to IBM's OS/2 using the EMX runtime environment was merged into the main Python source tree. EMX is a POSIX emulation layer over the OS/2 system APIs. The Python port for EMX tries to support all the POSIX-like -capability exposed by the EMX runtime, and mostly succeeds; :func:`fork` and +capability exposed by the EMX runtime, and mostly succeeds; :func:`!fork` and :func:`fcntl` are restricted by the limitations of the underlying emulation layer. The standard OS/2 port, which uses IBM's Visual Age compiler, also gained support for case-sensitive import semantics as part of the integration of @@ -2031,9 +2031,9 @@ code: the file's encoding (UTF-8, Latin-1, or whatever) by adding a comment to the top of the file. See section :ref:`section-encodings` for more information. -* Calling Tcl methods through :mod:`_tkinter` no longer returns only strings. +* Calling Tcl methods through :mod:`!_tkinter` no longer returns only strings. Instead, if Tcl returns other objects those objects are converted to their - Python equivalent, if one exists, or wrapped with a :class:`_tkinter.Tcl_Obj` + Python equivalent, if one exists, or wrapped with a :class:`!_tkinter.Tcl_Obj` object if no Python equivalent exists. * Large octal and hex literals such as ``0xffffffff`` now trigger a @@ -2049,10 +2049,10 @@ code: * You can no longer disable assertions by assigning to ``__debug__``. -* The Distutils :func:`setup` function has gained various new keyword arguments +* The Distutils :func:`!setup` function has gained various new keyword arguments such as *depends*. Old versions of the Distutils will abort if passed unknown keywords. A solution is to check for the presence of the new - :func:`get_distutil_options` function in your :file:`setup.py` and only uses the + :func:`!get_distutil_options` function in your :file:`setup.py` and only uses the new keywords with a version of the Distutils that supports them:: from distutils import core diff --git a/Doc/whatsnew/2.4.rst b/Doc/whatsnew/2.4.rst index ceda03afd5f..f085f5c6e27 100644 --- a/Doc/whatsnew/2.4.rst +++ b/Doc/whatsnew/2.4.rst @@ -324,7 +324,8 @@ function, as previously described. In other words, ``@A @B @C(args)`` becomes:: Getting this right can be slightly brain-bending, but it's not too difficult. -A small related change makes the :attr:`func_name` attribute of functions +A small related change makes the :attr:`func_name <function.__name__>` +attribute of functions writable. This attribute is used to display function names in tracebacks, so decorators should change the name of any new function that's constructed and returned. @@ -386,13 +387,13 @@ The standard library provides a number of ways to execute a subprocess, offering different features and different levels of complexity. ``os.system(command)`` is easy to use, but slow (it runs a shell process which executes the command) and dangerous (you have to be careful about escaping -the shell's metacharacters). The :mod:`popen2` module offers classes that can +the shell's metacharacters). The :mod:`!popen2` module offers classes that can capture standard output and standard error from the subprocess, but the naming is confusing. The :mod:`subprocess` module cleans this up, providing a unified interface that offers all the features you might need. -Instead of :mod:`popen2`'s collection of classes, :mod:`subprocess` contains a -single class called :class:`Popen` whose constructor supports a number of +Instead of :mod:`!popen2`'s collection of classes, :mod:`subprocess` contains a +single class called :class:`subprocess.Popen` whose constructor supports a number of different keyword arguments. :: class Popen(args, bufsize=0, executable=None, @@ -994,7 +995,7 @@ fixes. Here's a partial list of the most notable changes, sorted alphabetically by module name. Consult the :file:`Misc/NEWS` file in the source tree for a more complete list of changes, or look through the CVS logs for all the details. -* The :mod:`asyncore` module's :func:`loop` function now has a *count* parameter +* The :mod:`!asyncore` module's :func:`!loop` function now has a *count* parameter that lets you perform a limited number of passes through the polling loop. The default is still to loop forever. @@ -1051,9 +1052,9 @@ complete list of changes, or look through the CVS logs for all the details. advantage of :class:`collections.deque` for improved performance. (Contributed by Raymond Hettinger.) -* The :mod:`ConfigParser` classes have been enhanced slightly. The :meth:`read` +* The :mod:`ConfigParser <configparser>` classes have been enhanced slightly. The :meth:`~configparser.ConfigParser.read` method now returns a list of the files that were successfully parsed, and the - :meth:`set` method raises :exc:`TypeError` if passed a *value* argument that + :meth:`~configparser.ConfigParser.set` method raises :exc:`TypeError` if passed a *value* argument that isn't a string. (Contributed by John Belmonte and David Goodger.) * The :mod:`curses` module now supports the ncurses extension @@ -1080,7 +1081,7 @@ complete list of changes, or look through the CVS logs for all the details. :func:`nsmallest` that use heaps to find the N largest or smallest values in a dataset without the expense of a full sort. (Contributed by Raymond Hettinger.) -* The :mod:`httplib` module now contains constants for HTTP status codes defined +* The :mod:`httplib <http>` module now contains constants for HTTP status codes defined in various HTTP-related RFC documents. Constants have names such as :const:`OK`, :const:`CREATED`, :const:`CONTINUE`, and :const:`MOVED_PERMANENTLY`; use pydoc to get a full list. (Contributed by @@ -1163,7 +1164,7 @@ complete list of changes, or look through the CVS logs for all the details. * A number of functions were added to the :mod:`locale` module, such as :func:`bind_textdomain_codeset` to specify a particular encoding and a family of - :func:`l\*gettext` functions that return messages in the chosen encoding. + :func:`!l\*gettext` functions that return messages in the chosen encoding. (Contributed by Gustavo Niemeyer.) * Some keyword arguments were added to the :mod:`logging` package's @@ -1217,10 +1218,10 @@ complete list of changes, or look through the CVS logs for all the details. now include the string ``'%default'``, which will be replaced by the option's default value. (Contributed by Greg Ward.) -* The long-term plan is to deprecate the :mod:`rfc822` module in some future +* The long-term plan is to deprecate the :mod:`!rfc822` module in some future Python release in favor of the :mod:`email` package. To this end, the - :func:`email.Utils.formatdate` function has been changed to make it usable as a - replacement for :func:`rfc822.formatdate`. You may want to write new e-mail + :func:`email.Utils.formatdate <email.utils.formatdate>` function has been changed to make it usable as a + replacement for :func:`!rfc822.formatdate`. You may want to write new e-mail processing code with this in mind. (Change implemented by Anthony Baxter.) * A new ``urandom(n)`` function was added to the :mod:`os` module, returning @@ -1307,7 +1308,7 @@ complete list of changes, or look through the CVS logs for all the details. sockets, and regular expression pattern objects. (Contributed by Raymond Hettinger.) -* The :mod:`xmlrpclib` module now supports a multi-call extension for +* The :mod:`xmlrpclib <xmlrpc.client>` module now supports a multi-call extension for transmitting multiple XML-RPC calls in a single HTTP operation. (Contributed by Brian Quinlan.) @@ -1322,8 +1323,8 @@ complete list of changes, or look through the CVS logs for all the details. cookielib --------- -The :mod:`cookielib` library supports client-side handling for HTTP cookies, -mirroring the :mod:`Cookie` module's server-side cookie support. Cookies are +The :mod:`cookielib <http.cookiejar>` library supports client-side handling for HTTP cookies, +mirroring the :mod:`Cookie <http.cookies>` module's server-side cookie support. Cookies are stored in cookie jars; the library transparently stores cookies offered by the web server in the cookie jar, and fetches the cookie from the jar when connecting to the server. As in web browsers, policy objects control whether @@ -1334,7 +1335,7 @@ are provided: one that stores cookies in the Netscape format so applications can use the Mozilla or Lynx cookie files, and one that stores cookies in the same format as the Perl libwww library. -:mod:`urllib2` has been changed to interact with :mod:`cookielib`: +:mod:`urllib2 <urllib.request>` has been changed to interact with :mod:`cookielib <http.cookiejar>`: :class:`HTTPCookieProcessor` manages a cookie jar that is used when accessing URLs. @@ -1528,7 +1529,7 @@ code: will now always be unequal, and relative comparisons (``<``, ``>``) will raise a :exc:`TypeError`. -* :func:`dircache.listdir` now passes exceptions to the caller instead of +* :func:`!dircache.listdir` now passes exceptions to the caller instead of returning empty lists. * :func:`LexicalHandler.startDTD` used to receive the public and system IDs in diff --git a/Doc/whatsnew/2.5.rst b/Doc/whatsnew/2.5.rst index 3608153db07..6aa3e459f91 100644 --- a/Doc/whatsnew/2.5.rst +++ b/Doc/whatsnew/2.5.rst @@ -1167,10 +1167,10 @@ marked in the following list. * It's now illegal to mix iterating over a file with ``for line in file`` and calling the file object's :meth:`read`/:meth:`readline`/:meth:`readlines` - methods. Iteration uses an internal buffer and the :meth:`read\*` methods + methods. Iteration uses an internal buffer and the :meth:`!read\*` methods don't use that buffer. Instead they would return the data following the buffer, causing the data to appear out of order. Mixing iteration and these - methods will now trigger a :exc:`ValueError` from the :meth:`read\*` method. + methods will now trigger a :exc:`ValueError` from the :meth:`!read\*` method. (Implemented by Thomas Wouters.) .. Patch 1397960 @@ -1478,8 +1478,8 @@ complete list of changes, or look through the SVN logs for all the details. .. Patch 790710 -* The :mod:`pickle` and :mod:`cPickle` modules no longer accept a return value - of ``None`` from the :meth:`__reduce__` method; the method must return a tuple +* The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a return value + of ``None`` from the :meth:`~object.__reduce__` method; the method must return a tuple of arguments instead. The ability to return ``None`` was deprecated in Python 2.4, so this completes the removal of the feature. @@ -1519,7 +1519,7 @@ complete list of changes, or look through the SVN logs for all the details. .. Patch #1472854 -* The :mod:`SimpleXMLRPCServer` and :mod:`DocXMLRPCServer` classes now have a +* The :mod:`SimpleXMLRPCServer <xmlrpc.server>` and :mod:`DocXMLRPCServer <xmlrpc.server>` classes now have a :attr:`rpc_paths` attribute that constrains XML-RPC operations to a limited set of URL paths; the default is to allow only ``'/'`` and ``'/RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables this path checking. @@ -1650,9 +1650,9 @@ complete list of changes, or look through the SVN logs for all the details. .. Patch #754022 -* The :mod:`xmlrpclib` module now supports returning :class:`~datetime.datetime` objects - for the XML-RPC date type. Supply ``use_datetime=True`` to the :func:`loads` - function or the :class:`Unmarshaller` class to enable this feature. (Contributed +* The :mod:`xmlrpclib <xmlrpc.client>` module now supports returning :class:`~datetime.datetime` objects + for the XML-RPC date type. Supply ``use_datetime=True`` to the :func:`~xmlrpc.client.loads` + function or the :class:`!Unmarshaller` class to enable this feature. (Contributed by Skip Montanaro.) .. Patch 1120353 @@ -1680,7 +1680,7 @@ The ctypes package The :mod:`ctypes` package, written by Thomas Heller, has been added to the standard library. :mod:`ctypes` lets you call arbitrary functions in shared -libraries or DLLs. Long-time users may remember the :mod:`dl` module, which +libraries or DLLs. Long-time users may remember the :mod:`!dl` module, which provides functions for loading shared libraries and calling functions in them. The :mod:`ctypes` package is much fancier. @@ -1877,12 +1877,12 @@ The hashlib package ------------------- A new :mod:`hashlib` module, written by Gregory P. Smith, has been added to -replace the :mod:`md5` and :mod:`sha` modules. :mod:`hashlib` adds support for +replace the :mod:`!md5` and :mod:`!sha` modules. :mod:`hashlib` adds support for additional secure hashes (SHA-224, SHA-256, SHA-384, and SHA-512). When available, the module uses OpenSSL for fast platform optimized implementations of algorithms. -The old :mod:`md5` and :mod:`sha` modules still exist as wrappers around hashlib +The old :mod:`!md5` and :mod:`!sha` modules still exist as wrappers around hashlib to preserve backwards compatibility. The new module's interface is very close to that of the old modules, but not identical. The most significant difference is that the constructor functions for creating new hashing objects are named @@ -2253,12 +2253,12 @@ code: appeared. In Python 2.5, the argument must be exactly one %char specifier with no surrounding text. -* Library: The :mod:`pickle` and :mod:`cPickle` modules no longer accept a - return value of ``None`` from the :meth:`__reduce__` method; the method must +* Library: The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a + return value of ``None`` from the :meth:`~object.__reduce__` method; the method must return a tuple of arguments instead. The modules also no longer accept the deprecated *bin* keyword parameter. -* Library: The :mod:`SimpleXMLRPCServer` and :mod:`DocXMLRPCServer` classes now +* Library: The :mod:`SimpleXMLRPCServer <xmlrpc.server>` and :mod:`DocXMLRPCServer <xmlrpc.server>` classes now have a :attr:`rpc_paths` attribute that constrains XML-RPC operations to a limited set of URL paths; the default is to allow only ``'/'`` and ``'/RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables this path diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst index 7d8987e100f..8ced044ad4c 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -4,8 +4,6 @@ What's New in Python 2.6 **************************** -.. XXX add trademark info for Apple, Microsoft, SourceForge. - :Author: A.M. Kuchling (amk at amk.ca) .. $Id$ @@ -128,7 +126,7 @@ and to C extension code as :c:data:`Py_Py3kWarningFlag`. The 3\ *xxx* series of PEPs, which contains proposals for Python 3.0. :pep:`3000` describes the development process for Python 3.0. Start with :pep:`3100` that describes the general goals for Python - 3.0, and then explore the higher-numbered PEPS that propose + 3.0, and then explore the higher-numbered PEPs that propose specific features. @@ -1051,8 +1049,6 @@ the :mod:`io` module: sockets, but Python 2.6 hasn't restructured its file and socket objects in this way. - .. XXX should 2.6 register them in io.py? - * :class:`BufferedIOBase` is an abstract base class that buffers data in memory to reduce the number of system calls used, making I/O processing more efficient. @@ -1086,7 +1082,7 @@ the :mod:`io` module: (In Python 2.6, :class:`io.StringIO` is implemented in pure Python, so it's pretty slow. You should therefore stick with the - existing :mod:`StringIO` module or :mod:`cStringIO` for now. At some + existing :mod:`!StringIO` module or :mod:`!cStringIO` for now. At some point Python 3.0's :mod:`io` module will be rewritten into C for speed, and perhaps the C implementation will be backported to the 2.x releases.) @@ -1133,8 +1129,6 @@ while an external caller could be modifying the contents, so there's a corresponding ``PyBuffer_Release(Py_buffer *view)`` to indicate that the external caller is done. -.. XXX PyObject_GetBuffer not documented in c-api - The *flags* argument to :c:func:`PyObject_GetBuffer` specifies constraints upon the memory returned. Some examples are: @@ -1678,8 +1672,8 @@ Some smaller changes made to the core Python language are: * Instance method objects have new attributes for the object and function comprising the method; the new synonym for :attr:`!im_self` is - :ref:`__self__ <instance-methods>`, and :attr:`!im_func` is also available as - :ref:`__func__ <instance-methods>`. + :attr:`~method.__self__`, and :attr:`!im_func` is also available as + :attr:`~method.__func__`. The old names are still supported in Python 2.6, but are gone in 3.0. * An obscure change: when you use the :func:`locals` function inside a @@ -1789,7 +1783,7 @@ changes, sorted alphabetically by module name. Consult the :file:`Misc/NEWS` file in the source tree for a more complete list of changes, or look through the Subversion logs for all the details. -* The :mod:`asyncore` and :mod:`asynchat` modules are +* The :mod:`!asyncore` and :mod:`!asynchat` modules are being actively maintained again, and a number of patches and bugfixes were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for one patch.) @@ -1813,8 +1807,8 @@ changes, or look through the Subversion logs for all the details. Nubis; :issue:`1817`.) The :func:`parse_qs` and :func:`parse_qsl` functions have been - relocated from the :mod:`cgi` module to the :mod:`urlparse` module. - The versions still available in the :mod:`cgi` module will + relocated from the :mod:`cgi` module to the :mod:`urlparse <urllib.parse>` module. + The versions still available in the :mod:`!cgi` module will trigger :exc:`PendingDeprecationWarning` messages in 2.6 (:issue:`600362`). @@ -1901,8 +1895,8 @@ changes, or look through the Subversion logs for all the details. (Contributed by Raymond Hettinger.) -* The :mod:`Cookie` module's :class:`Morsel` objects now support an - :attr:`httponly` attribute. In some browsers. cookies with this attribute +* The :mod:`Cookie <http.cookies>` module's :class:`~http.cookies.Morsel` objects now support an + :attr:`~http.cookies.Morsel.httponly` attribute. In some browsers. cookies with this attribute set cannot be accessed or manipulated by JavaScript code. (Contributed by Arvin Schnell; :issue:`1638033`.) @@ -1993,8 +1987,8 @@ changes, or look through the Subversion logs for all the details. (Contributed by Raymond Hettinger.) * An optional ``timeout`` parameter, specifying a timeout measured in - seconds, was added to the :class:`httplib.HTTPConnection` and - :class:`HTTPSConnection` class constructors. (Added by Facundo + seconds, was added to the :class:`httplib.HTTPConnection <http.client.HTTPConnection>` and + :class:`HTTPSConnection <http.client.HTTPSConnection>` class constructors. (Added by Facundo Batista.) * Most of the :mod:`inspect` module's functions, such as @@ -2377,10 +2371,10 @@ changes, or look through the Subversion logs for all the details. ``socket(socket.AF_INET, ...)`` may be all that's required to make your code work with IPv6. -* The base classes in the :mod:`SocketServer` module now support - calling a :meth:`handle_timeout` method after a span of inactivity - specified by the server's :attr:`timeout` attribute. (Contributed - by Michael Pomraning.) The :meth:`serve_forever` method +* The base classes in the :mod:`SocketServer <socketserver>` module now support + calling a :meth:`~socketserver.BaseServer.handle_timeout` method after a span of inactivity + specified by the server's :attr:`~socketserver.BaseServer.timeout` attribute. (Contributed + by Michael Pomraning.) The :meth:`~socketserver.BaseServer.serve_forever` method now takes an optional poll interval measured in seconds, controlling how often the server will check for a shutdown request. (Contributed by Pedro Werneck and Jeffrey Yasskin; @@ -2484,9 +2478,9 @@ changes, or look through the Subversion logs for all the details. ``with tempfile.NamedTemporaryFile() as tmp: ...``. (Contributed by Alexander Belopolsky; :issue:`2021`.) -* The :mod:`test.test_support` module gained a number +* The :mod:`test.test_support <test.support>` module gained a number of context managers useful for writing tests. - :func:`EnvironmentVarGuard` is a + :func:`~test.support.os_helper.EnvironmentVarGuard` is a context manager that temporarily changes environment variables and automatically restores them to their old values. @@ -2583,9 +2577,9 @@ changes, or look through the Subversion logs for all the details. (:issue:`1513695`) * An optional ``timeout`` parameter was added to the - :func:`urllib.urlopen` function and the + :func:`urllib.urlopen <urllib.request.urlopen>` function and the :class:`urllib.ftpwrapper` class constructor, as well as the - :func:`urllib2.urlopen` function. The parameter specifies a timeout + :func:`urllib2.urlopen <urllib.request.urlopen>` function. The parameter specifies a timeout measured in seconds. For example:: >>> u = urllib2.urlopen("http://slow.example.com", @@ -2610,7 +2604,7 @@ changes, or look through the Subversion logs for all the details. intended for testing purposes that lets you temporarily modify the warning filters and then restore their original values (:issue:`3781`). -* The XML-RPC :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer` +* The XML-RPC :class:`SimpleXMLRPCServer <xmlrpc.server>` and :class:`DocXMLRPCServer <xmlrpc.server>` classes can now be prevented from immediately opening and binding to their socket by passing ``False`` as the *bind_and_activate* constructor parameter. This can be used to modify the instance's @@ -2627,11 +2621,11 @@ changes, or look through the Subversion logs for all the details. information. (Contributed by Alan McIntyre as part of his project for Google's Summer of Code 2007.) -* The :mod:`xmlrpclib` module no longer automatically converts +* The :mod:`xmlrpclib <xmlrpc.client>` module no longer automatically converts :class:`datetime.date` and :class:`datetime.time` to the - :class:`xmlrpclib.DateTime` type; the conversion semantics were + :class:`xmlrpclib.DateTime <xmlrpc.client.DateTime>` type; the conversion semantics were not necessarily correct for all applications. Code using - :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time` + :mod:`!xmlrpclib` should convert :class:`date` and :class:`~datetime.time` instances. (:issue:`1330538`) The code can also handle dates before 1900 (contributed by Ralf Schmitt; :issue:`2014`) and 64-bit integers represented by using ``<i8>`` in XML-RPC responses @@ -2916,8 +2910,8 @@ Deprecations and Removals * Changes to the :class:`Exception` interface as dictated by :pep:`352` continue to be made. For 2.6, - the :attr:`message` attribute is being deprecated in favor of the - :attr:`args` attribute. + the :attr:`!message` attribute is being deprecated in favor of the + :attr:`~BaseException.args` attribute. * (3.0-warning mode) Python 3.0 will feature a reorganized standard library that will drop many outdated modules and rename others. @@ -2925,51 +2919,51 @@ Deprecations and Removals when they are imported. The list of deprecated modules is: - :mod:`audiodev`, - :mod:`bgenlocations`, - :mod:`buildtools`, - :mod:`bundlebuilder`, - :mod:`Canvas`, - :mod:`compiler`, - :mod:`dircache`, - :mod:`dl`, - :mod:`fpformat`, - :mod:`gensuitemodule`, - :mod:`ihooks`, - :mod:`imageop`, - :mod:`imgfile`, - :mod:`linuxaudiodev`, - :mod:`mhlib`, - :mod:`mimetools`, - :mod:`multifile`, - :mod:`new`, - :mod:`pure`, - :mod:`statvfs`, - :mod:`sunaudiodev`, - :mod:`test.testall`, and - :mod:`toaiff`. - -* The :mod:`gopherlib` module has been removed. - -* The :mod:`MimeWriter` module and :mod:`mimify` module + :mod:`!audiodev`, + :mod:`!bgenlocations`, + :mod:`!buildtools`, + :mod:`!bundlebuilder`, + :mod:`!Canvas`, + :mod:`!compiler`, + :mod:`!dircache`, + :mod:`!dl`, + :mod:`!fpformat`, + :mod:`!gensuitemodule`, + :mod:`!ihooks`, + :mod:`!imageop`, + :mod:`!imgfile`, + :mod:`!linuxaudiodev`, + :mod:`!mhlib`, + :mod:`!mimetools`, + :mod:`!multifile`, + :mod:`!new`, + :mod:`!pure`, + :mod:`!statvfs`, + :mod:`!sunaudiodev`, + :mod:`!test.testall`, and + :mod:`!toaiff`. + +* The :mod:`!gopherlib` module has been removed. + +* The :mod:`!MimeWriter` module and :mod:`!mimify` module have been deprecated; use the :mod:`email` package instead. -* The :mod:`md5` module has been deprecated; use the :mod:`hashlib` module +* The :mod:`!md5` module has been deprecated; use the :mod:`hashlib` module instead. -* The :mod:`posixfile` module has been deprecated; :func:`fcntl.lockf` +* The :mod:`!posixfile` module has been deprecated; :func:`fcntl.lockf` provides better locking. -* The :mod:`popen2` module has been deprecated; use the :mod:`subprocess` +* The :mod:`!popen2` module has been deprecated; use the :mod:`subprocess` module. -* The :mod:`rgbimg` module has been removed. +* The :mod:`!rgbimg` module has been removed. -* The :mod:`sets` module has been deprecated; it's better to +* The :mod:`!sets` module has been deprecated; it's better to use the built-in :class:`set` and :class:`frozenset` types. -* The :mod:`sha` module has been deprecated; use the :mod:`hashlib` module +* The :mod:`!sha` module has been deprecated; use the :mod:`hashlib` module instead. @@ -3110,8 +3104,8 @@ Port-Specific Changes: Windows * The :mod:`msvcrt` module now supports both the normal and wide char variants of the console I/O - API. The :func:`getwch` function reads a keypress and returns a Unicode - value, as does the :func:`getwche` function. The :func:`putwch` function + API. The :func:`~msvcrt.getwch` function reads a keypress and returns a Unicode + value, as does the :func:`~msvcrt.getwche` function. The :func:`~msvcrt.putwch` function takes a Unicode character and writes it to the console. (Contributed by Christian Heimes.) @@ -3120,24 +3114,24 @@ Port-Specific Changes: Windows directory path. (Contributed by Josiah Carlson; :issue:`957650`.) * The :mod:`socket` module's socket objects now have an - :meth:`ioctl` method that provides a limited interface to the + :meth:`~socket.socket.ioctl` method that provides a limited interface to the :c:func:`WSAIoctl` system interface. -* The :mod:`_winreg` module now has a function, - :func:`ExpandEnvironmentStrings`, +* The :mod:`_winreg <winreg>` module now has a function, + :func:`~winreg.ExpandEnvironmentStrings`, that expands environment variable references such as ``%NAME%`` in an input string. The handle objects provided by this module now support the context protocol, so they can be used in :keyword:`with` statements. (Contributed by Christian Heimes.) - :mod:`_winreg` also has better support for x64 systems, - exposing the :func:`DisableReflectionKey`, :func:`EnableReflectionKey`, - and :func:`QueryReflectionKey` functions, which enable and disable + :mod:`_winreg <winreg>` also has better support for x64 systems, + exposing the :func:`~winreg.DisableReflectionKey`, :func:`~winreg.EnableReflectionKey`, + and :func:`~winreg.QueryReflectionKey` functions, which enable and disable registry reflection for 32-bit processes running on 64-bit systems. (:issue:`1753245`) -* The :mod:`msilib` module's :class:`Record` object - gained :meth:`GetInteger` and :meth:`GetString` methods that +* The :mod:`msilib` module's :class:`!Record` object + gained :meth:`~msilib.Record.GetInteger` and :meth:`~msilib.Record.GetString` methods that return field values as an integer or a string. (Contributed by Floris Bruynooghe; :issue:`2125`.) @@ -3151,49 +3145,49 @@ Port-Specific Changes: Mac OS X :option:`!--with-framework-name=` option to the :program:`configure` script. -* The :mod:`macfs` module has been removed. This in turn required the - :func:`macostools.touched` function to be removed because it depended on the - :mod:`macfs` module. (:issue:`1490190`) +* The :mod:`!macfs` module has been removed. This in turn required the + :func:`!macostools.touched` function to be removed because it depended on the + :mod:`!macfs` module. (:issue:`1490190`) * Many other Mac OS modules have been deprecated and will be removed in Python 3.0: - :mod:`_builtinSuites`, - :mod:`aepack`, - :mod:`aetools`, - :mod:`aetypes`, - :mod:`applesingle`, - :mod:`appletrawmain`, - :mod:`appletrunner`, - :mod:`argvemulator`, - :mod:`Audio_mac`, - :mod:`autoGIL`, - :mod:`Carbon`, - :mod:`cfmfile`, - :mod:`CodeWarrior`, - :mod:`ColorPicker`, - :mod:`EasyDialogs`, - :mod:`Explorer`, - :mod:`Finder`, - :mod:`FrameWork`, - :mod:`findertools`, - :mod:`ic`, - :mod:`icglue`, - :mod:`icopen`, - :mod:`macerrors`, - :mod:`MacOS`, - :mod:`macfs`, - :mod:`macostools`, - :mod:`macresource`, - :mod:`MiniAEFrame`, - :mod:`Nav`, - :mod:`Netscape`, - :mod:`OSATerminology`, - :mod:`pimp`, - :mod:`PixMapWrapper`, - :mod:`StdSuites`, - :mod:`SystemEvents`, - :mod:`Terminal`, and - :mod:`terminalcommand`. + :mod:`!_builtinSuites`, + :mod:`!aepack`, + :mod:`!aetools`, + :mod:`!aetypes`, + :mod:`!applesingle`, + :mod:`!appletrawmain`, + :mod:`!appletrunner`, + :mod:`!argvemulator`, + :mod:`!Audio_mac`, + :mod:`!autoGIL`, + :mod:`!Carbon`, + :mod:`!cfmfile`, + :mod:`!CodeWarrior`, + :mod:`!ColorPicker`, + :mod:`!EasyDialogs`, + :mod:`!Explorer`, + :mod:`!Finder`, + :mod:`!FrameWork`, + :mod:`!findertools`, + :mod:`!ic`, + :mod:`!icglue`, + :mod:`!icopen`, + :mod:`!macerrors`, + :mod:`!MacOS`, + :mod:`!macfs`, + :mod:`!macostools`, + :mod:`!macresource`, + :mod:`!MiniAEFrame`, + :mod:`!Nav`, + :mod:`!Netscape`, + :mod:`!OSATerminology`, + :mod:`!pimp`, + :mod:`!PixMapWrapper`, + :mod:`!StdSuites`, + :mod:`!SystemEvents`, + :mod:`!Terminal`, and + :mod:`!terminalcommand`. .. ====================================================================== @@ -3202,29 +3196,29 @@ Port-Specific Changes: IRIX A number of old IRIX-specific modules were deprecated and will be removed in Python 3.0: -:mod:`al` and :mod:`AL`, -:mod:`cd`, -:mod:`cddb`, -:mod:`cdplayer`, -:mod:`CL` and :mod:`cl`, -:mod:`DEVICE`, -:mod:`ERRNO`, -:mod:`FILE`, -:mod:`FL` and :mod:`fl`, -:mod:`flp`, -:mod:`fm`, -:mod:`GET`, -:mod:`GLWS`, -:mod:`GL` and :mod:`gl`, -:mod:`IN`, -:mod:`IOCTL`, -:mod:`jpeg`, -:mod:`panelparser`, -:mod:`readcd`, -:mod:`SV` and :mod:`sv`, -:mod:`torgb`, -:mod:`videoreader`, and -:mod:`WAIT`. +:mod:`!al` and :mod:`!AL`, +:mod:`!cd`, +:mod:`!cddb`, +:mod:`!cdplayer`, +:mod:`!CL` and :mod:`!cl`, +:mod:`!DEVICE`, +:mod:`!ERRNO`, +:mod:`!FILE`, +:mod:`!FL` and :mod:`!fl`, +:mod:`!flp`, +:mod:`!fm`, +:mod:`!GET`, +:mod:`!GLWS`, +:mod:`!GL` and :mod:`!gl`, +:mod:`!IN`, +:mod:`!IOCTL`, +:mod:`!jpeg`, +:mod:`!panelparser`, +:mod:`!readcd`, +:mod:`!SV` and :mod:`!sv`, +:mod:`!torgb`, +:mod:`!videoreader`, and +:mod:`!WAIT`. .. ====================================================================== @@ -3280,11 +3274,11 @@ that may require changes to your code: :exc:`StandardError` but now it is, through :exc:`IOError`. (Implemented by Gregory P. Smith; :issue:`1706815`.) -* The :mod:`xmlrpclib` module no longer automatically converts +* The :mod:`xmlrpclib <xmlrpc.client>` module no longer automatically converts :class:`datetime.date` and :class:`datetime.time` to the - :class:`xmlrpclib.DateTime` type; the conversion semantics were + :class:`xmlrpclib.DateTime <xmlrpc.client.DateTime>` type; the conversion semantics were not necessarily correct for all applications. Code using - :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time` + :mod:`!xmlrpclib` should convert :class:`date` and :class:`~datetime.time` instances. (:issue:`1330538`) * (3.0-warning mode) The :class:`Exception` class now warns diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst index 9207051ef0d..401af6c8e0a 100644 --- a/Doc/whatsnew/2.7.rst +++ b/Doc/whatsnew/2.7.rst @@ -282,12 +282,12 @@ How does the :class:`~collections.OrderedDict` work? It maintains a doubly linked list of keys, appending new keys to the list as they're inserted. A secondary dictionary maps keys to their corresponding list node, so deletion doesn't have to traverse the entire linked list and therefore -remains O(1). +remains *O*\ (1). The standard library now supports use of ordered dictionaries in several modules. -* The :mod:`ConfigParser` module uses them by default, meaning that +* The :mod:`ConfigParser <configparser>` module uses them by default, meaning that configuration files can now be read, modified, and then written back in their original order. @@ -858,9 +858,10 @@ Some smaller changes made to the core Python language are: .. XXX bytearray doesn't seem to be documented -* When using ``@classmethod`` and ``@staticmethod`` to wrap +* When using :class:`@classmethod <classmethod>` and + :class:`@staticmethod <staticmethod>` to wrap methods as class or static methods, the wrapper object now - exposes the wrapped function as their :ref:`__func__ <instance-methods>` + exposes the wrapped function as their :attr:`~method.__func__` attribute. (Contributed by Amaury Forgeot d'Arc, after a suggestion by George Sakkis; :issue:`5982`.) @@ -914,7 +915,7 @@ used with the :option:`-W` switch, separated by commas. (Contributed by Brian Curtin; :issue:`7301`.) For example, the following setting will print warnings every time -they occur, but turn warnings from the :mod:`Cookie` module into an +they occur, but turn warnings from the :mod:`Cookie <http.cookies>` module into an error. (The exact syntax for setting an environment variable varies across operating systems and shells.) @@ -1011,12 +1012,12 @@ Several performance enhancements have been added: scan. This is sometimes faster by a factor of 10. (Added by Florent Xicluna; :issue:`7462` and :issue:`7622`.) -* The :mod:`pickle` and :mod:`cPickle` modules now automatically +* The :mod:`pickle` and :mod:`!cPickle` modules now automatically intern the strings used for attribute names, reducing memory usage of the objects resulting from unpickling. (Contributed by Jake McGuire; :issue:`5084`.) -* The :mod:`cPickle` module now special-cases dictionaries, +* The :mod:`!cPickle` module now special-cases dictionaries, nearly halving the time required to pickle them. (Contributed by Collin Winter; :issue:`5670`.) @@ -1133,7 +1134,7 @@ changes, or look through the Subversion logs for all the details. another type that isn't a :class:`Mapping`. (Fixed by Daniel Stutzbach; :issue:`8729`.) -* Constructors for the parsing classes in the :mod:`ConfigParser` module now +* Constructors for the parsing classes in the :mod:`ConfigParser <configparser>` module now take an *allow_no_value* parameter, defaulting to false; if true, options without values will be allowed. For example:: @@ -1162,7 +1163,7 @@ changes, or look through the Subversion logs for all the details. statement, has been deprecated, because the :keyword:`!with` statement now supports multiple context managers. -* The :mod:`cookielib` module now ignores cookies that have an invalid +* The :mod:`cookielib <http.cookiejar>` module now ignores cookies that have an invalid version field, one that doesn't contain an integer value. (Fixed by John J. Lee; :issue:`3924`.) @@ -1305,18 +1306,18 @@ changes, or look through the Subversion logs for all the details. ``('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')``. (Contributed by Carl Chenet; :issue:`7418`.) -* The default :class:`~httplib.HTTPResponse` class used by the :mod:`httplib` module now +* The default :class:`~http.client.HTTPResponse` class used by the :mod:`httplib <http>` module now supports buffering, resulting in much faster reading of HTTP responses. (Contributed by Kristján Valur Jónsson; :issue:`4879`.) - The :class:`~httplib.HTTPConnection` and :class:`~httplib.HTTPSConnection` classes + The :class:`~http.client.HTTPConnection` and :class:`~http.client.HTTPSConnection` classes now support a *source_address* parameter, a ``(host, port)`` 2-tuple giving the source address that will be used for the connection. (Contributed by Eldon Ziegler; :issue:`3972`.) -* The :mod:`ihooks` module now supports relative imports. Note that - :mod:`ihooks` is an older module for customizing imports, - superseded by the :mod:`imputil` module added in Python 2.0. +* The :mod:`!ihooks` module now supports relative imports. Note that + :mod:`!ihooks` is an older module for customizing imports, + superseded by the :mod:`!imputil` module added in Python 2.0. (Relative import support added by Neil Schemenauer.) .. revision 75423 @@ -1416,7 +1417,7 @@ changes, or look through the Subversion logs for all the details. :func:`~math.lgamma` for the natural log of the Gamma function. (Contributed by Mark Dickinson and nirinA raseliarison; :issue:`3366`.) -* The :mod:`multiprocessing` module's :class:`Manager*` classes +* The :mod:`multiprocessing` module's :class:`!Manager*` classes can now be passed a callable that will be called whenever a subprocess is started, along with a set of arguments that will be passed to the callable. @@ -1517,16 +1518,16 @@ changes, or look through the Subversion logs for all the details. the :class:`bytearray` and :class:`memoryview` objects. (Implemented by Antoine Pitrou; :issue:`8104`.) -* The :mod:`SocketServer` module's :class:`~SocketServer.TCPServer` class now +* The :mod:`SocketServer <socketserver>` module's :class:`~socketserver.TCPServer` class now supports socket timeouts and disabling the Nagle algorithm. - The :attr:`~SocketServer.TCPServer.disable_nagle_algorithm` class attribute + The :attr:`!disable_nagle_algorithm` class attribute defaults to ``False``; if overridden to be true, new request connections will have the TCP_NODELAY option set to prevent buffering many small sends into a single TCP packet. - The :attr:`~SocketServer.BaseServer.timeout` class attribute can hold + The :attr:`~socketserver.BaseServer.timeout` class attribute can hold a timeout in seconds that will be applied to the request socket; if - no request is received within that time, :meth:`~SocketServer.BaseServer.handle_timeout` - will be called and :meth:`~SocketServer.BaseServer.handle_request` will return. + no request is received within that time, :meth:`~socketserver.BaseServer.handle_timeout` + will be called and :meth:`~socketserver.BaseServer.handle_request` will return. (Contributed by Kristján Valur Jónsson; :issue:`6192` and :issue:`6267`.) * Updated module: the :mod:`sqlite3` module has been updated to @@ -1647,7 +1648,7 @@ changes, or look through the Subversion logs for all the details. and has been updated to version 5.2.0 (updated by Florent Xicluna; :issue:`8024`). -* The :mod:`urlparse` module's :func:`~urlparse.urlsplit` now handles +* The :mod:`urlparse <urllib.parse>` module's :func:`~urllib.parse.urlsplit` now handles unknown URL schemes in a fashion compliant with :rfc:`3986`: if the URL is of the form ``"<something>://..."``, the text before the ``://`` is treated as the scheme, even if it's a made-up scheme that @@ -1674,7 +1675,7 @@ changes, or look through the Subversion logs for all the details. (Python 2.7 actually produces slightly different output, since it returns a named tuple instead of a standard tuple.) - The :mod:`urlparse` module also supports IPv6 literal addresses as defined by + The :mod:`urlparse <urllib.parse>` module also supports IPv6 literal addresses as defined by :rfc:`2732` (contributed by Senthil Kumaran; :issue:`2987`). .. doctest:: @@ -1696,8 +1697,8 @@ changes, or look through the Subversion logs for all the details. or comment (which looks like ``<!-- comment -->``). (Patch by Neil Muller; :issue:`2746`.) -* The XML-RPC client and server, provided by the :mod:`xmlrpclib` and - :mod:`SimpleXMLRPCServer` modules, have improved performance by +* The XML-RPC client and server, provided by the :mod:`xmlrpclib <xmlrpc.client>` and + :mod:`SimpleXMLRPCServer <xmlrpc.server>` modules, have improved performance by supporting HTTP/1.1 keep-alive and by optionally using gzip encoding to compress the XML being exchanged. The gzip compression is controlled by the :attr:`encode_threshold` attribute of @@ -2129,7 +2130,7 @@ Changes to Python's build process and to the C API include: only the filename, function name, and first line number are required. This is useful for extension modules that are attempting to construct a more useful traceback stack. Previously such - extensions needed to call :c:func:`PyCode_New`, which had many + extensions needed to call :c:func:`!PyCode_New`, which had many more arguments. (Added by Jeffrey Yasskin.) * New function: :c:func:`PyErr_NewExceptionWithDoc` creates a new @@ -2333,11 +2334,11 @@ Port-Specific Changes: Windows and :data:`LIBRARIES_ASSEMBLY_NAME_PREFIX`. (Contributed by David Cournapeau; :issue:`4365`.) -* The :mod:`_winreg` module for accessing the registry now implements - the :func:`~_winreg.CreateKeyEx` and :func:`~_winreg.DeleteKeyEx` +* The :mod:`_winreg <winreg>` module for accessing the registry now implements + the :func:`~winreg.CreateKeyEx` and :func:`~winreg.DeleteKeyEx` functions, extended versions of previously supported functions that - take several extra arguments. The :func:`~_winreg.DisableReflectionKey`, - :func:`~_winreg.EnableReflectionKey`, and :func:`~_winreg.QueryReflectionKey` + take several extra arguments. The :func:`~winreg.DisableReflectionKey`, + :func:`~winreg.EnableReflectionKey`, and :func:`~winreg.QueryReflectionKey` were also tested and documented. (Implemented by Brian Curtin: :issue:`7347`.) @@ -2507,7 +2508,7 @@ In the standard library: which raises an exception if there's an error. (Changed by Lars Gustäbel; :issue:`7357`.) -* The :mod:`urlparse` module's :func:`~urlparse.urlsplit` now handles +* The :mod:`urlparse <urllib.parse>` module's :func:`~urllib.parse.urlsplit` now handles unknown URL schemes in a fashion compliant with :rfc:`3986`: if the URL is of the form ``"<something>://..."``, the text before the ``://`` is treated as the scheme, even if it's a made-up scheme that @@ -2710,8 +2711,8 @@ and :ref:`setuptools-index`. PEP 476: Enabling certificate verification by default for stdlib http clients ----------------------------------------------------------------------------- -:pep:`476` updated :mod:`httplib` and modules which use it, such as -:mod:`urllib2` and :mod:`xmlrpclib`, to now verify that the server +:pep:`476` updated :mod:`httplib <http>` and modules which use it, such as +:mod:`urllib2 <urllib.request>` and :mod:`xmlrpclib`, to now verify that the server presents a certificate which is signed by a Certificate Authority in the platform trust store and whose hostname matches the hostname being requested by default, significantly improving security for many applications. This diff --git a/Doc/whatsnew/3.0.rst b/Doc/whatsnew/3.0.rst index 4bd53fb14cc..22e44671caf 100644 --- a/Doc/whatsnew/3.0.rst +++ b/Doc/whatsnew/3.0.rst @@ -337,7 +337,7 @@ changed. (However, the standard library remains ASCII-only with the exception of contributor names in comments.) -* The :mod:`StringIO` and :mod:`cStringIO` modules are gone. Instead, +* The :mod:`!StringIO` and :mod:`!cStringIO` modules are gone. Instead, import the :mod:`io` module and use :class:`io.StringIO` or :class:`io.BytesIO` for text and data respectively. @@ -555,15 +555,15 @@ very extensive changes to the standard library. :pep:`3108` is the reference for the major changes to the library. Here's a capsule review: -* Many old modules were removed. Some, like :mod:`gopherlib` (no - longer used) and :mod:`md5` (replaced by :mod:`hashlib`), were +* Many old modules were removed. Some, like :mod:`!gopherlib` (no + longer used) and :mod:`!md5` (replaced by :mod:`hashlib`), were already deprecated by :pep:`4`. Others were removed as a result of the removal of support for various platforms such as Irix, BeOS and Mac OS 9 (see :pep:`11`). Some modules were also selected for removal in Python 3.0 due to lack of use or because a better replacement exists. See :pep:`3108` for an exhaustive list. -* The :mod:`bsddb3` package was removed because its presence in the +* The :mod:`!bsddb3` package was removed because its presence in the core standard library has proved over time to be a particular burden for the core developers due to testing instability and Berkeley DB's release schedule. However, the package is alive and well, @@ -588,45 +588,45 @@ review: * A common pattern in Python 2.x is to have one version of a module implemented in pure Python, with an optional accelerated version implemented as a C extension; for example, :mod:`pickle` and - :mod:`cPickle`. This places the burden of importing the accelerated + :mod:`!cPickle`. This places the burden of importing the accelerated version and falling back on the pure Python version on each user of these modules. In Python 3.0, the accelerated versions are considered implementation details of the pure Python versions. Users should always import the standard version, which attempts to import the accelerated version and falls back to the pure Python - version. The :mod:`pickle` / :mod:`cPickle` pair received this + version. The :mod:`pickle` / :mod:`!cPickle` pair received this treatment. The :mod:`profile` module is on the list for 3.1. The - :mod:`StringIO` module has been turned into a class in the :mod:`io` + :mod:`!StringIO` module has been turned into a class in the :mod:`io` module. * Some related modules have been grouped into packages, and usually the submodule names have been simplified. The resulting new packages are: - * :mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`, - :mod:`dumbdbm`, :mod:`gdbm`, :mod:`whichdb`). + * :mod:`dbm` (:mod:`!anydbm`, :mod:`!dbhash`, :mod:`!dbm`, + :mod:`!dumbdbm`, :mod:`!gdbm`, :mod:`!whichdb`). - * :mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`). + * :mod:`html` (:mod:`!HTMLParser`, :mod:`!htmlentitydefs`). - * :mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`, - :mod:`CGIHTTPServer`, :mod:`SimpleHTTPServer`, :mod:`Cookie`, - :mod:`cookielib`). + * :mod:`http` (:mod:`!httplib`, :mod:`!BaseHTTPServer`, + :mod:`!CGIHTTPServer`, :mod:`!SimpleHTTPServer`, :mod:`!Cookie`, + :mod:`!cookielib`). * :mod:`tkinter` (all :mod:`Tkinter`-related modules except :mod:`turtle`). The target audience of :mod:`turtle` doesn't really care about :mod:`tkinter`. Also note that as of Python 2.6, the functionality of :mod:`turtle` has been greatly enhanced. - * :mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`, - :mod:`robotparse`). + * :mod:`urllib` (:mod:`!urllib`, :mod:`!urllib2`, :mod:`!urlparse`, + :mod:`!robotparse`). - * :mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`, - :mod:`SimpleXMLRPCServer`). + * :mod:`xmlrpc` (:mod:`!xmlrpclib`, :mod:`!DocXMLRPCServer`, + :mod:`!SimpleXMLRPCServer`). Some other changes to standard library modules, not covered by :pep:`3108`: -* Killed :mod:`sets`. Use the built-in :func:`set` class. +* Killed :mod:`!sets`. Use the built-in :func:`set` class. * Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`, :func:`sys.exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`, @@ -642,13 +642,13 @@ Some other changes to standard library modules, not covered by * Cleanup of the :mod:`operator` module: removed :func:`sequenceIncludes` and :func:`isCallable`. -* Cleanup of the :mod:`thread` module: :func:`acquire_lock` and - :func:`release_lock` are gone; use :func:`acquire` and - :func:`release` instead. +* Cleanup of the :mod:`!thread` module: :func:`!acquire_lock` and + :func:`!release_lock` are gone; use :meth:`~threading.Lock.acquire` and + :meth:`~threading.Lock.release` instead. * Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API. -* The :mod:`new` module is gone. +* The :mod:`!new` module is gone. * The functions :func:`os.tmpnam`, :func:`os.tempnam` and :func:`os.tmpfile` have been removed in favor of the :mod:`tempfile` @@ -711,7 +711,7 @@ new powerful features added: {Exception}({args})` instead of :samp:`raise {Exception}, {args}`. Additionally, you can no longer explicitly specify a traceback; instead, if you *have* to do this, you can assign directly to the - :attr:`__traceback__` attribute (see below). + :attr:`~BaseException.__traceback__` attribute (see below). * :pep:`3110`: Catching exceptions. You must now use :samp:`except {SomeException} as {variable}` instead @@ -725,7 +725,7 @@ new powerful features added: handler block. This usually happens due to a bug in the handler block; we call this a *secondary* exception. In this case, the original exception (that was being handled) is saved as the - :attr:`__context__` attribute of the secondary exception. + :attr:`~BaseException.__context__` attribute of the secondary exception. Explicit chaining is invoked with this syntax:: raise SecondaryException() from primary_exception @@ -733,14 +733,15 @@ new powerful features added: (where *primary_exception* is any expression that produces an exception object, probably an exception that was previously caught). In this case, the primary exception is stored on the - :attr:`__cause__` attribute of the secondary exception. The + :attr:`~BaseException.__cause__` attribute of the secondary exception. The traceback printed when an unhandled exception occurs walks the chain - of :attr:`__cause__` and :attr:`__context__` attributes and prints a + of :attr:`!__cause__` and :attr:`~BaseException.__context__` attributes and + prints a separate traceback for each component of the chain, with the primary exception at the top. (Java users may recognize this behavior.) * :pep:`3134`: Exception objects now store their traceback as the - :attr:`__traceback__` attribute. This means that an exception + :attr:`~BaseException.__traceback__` attribute. This means that an exception object now contains all the information pertaining to an exception, and there are fewer reasons to use :func:`sys.exc_info` (though the latter is not removed). @@ -779,14 +780,15 @@ Operators And Special Methods * Removed support for :attr:`__members__` and :attr:`__methods__`. -* The function attributes named :attr:`func_X` have been renamed to - use the :data:`__X__` form, freeing up these names in the function +* The function attributes named :attr:`!func_X` have been renamed to + use the :attr:`!__X__` form, freeing up these names in the function attribute namespace for user-defined attributes. To wit, - :attr:`func_closure`, :attr:`func_code`, :attr:`func_defaults`, - :attr:`func_dict`, :attr:`func_doc`, :attr:`func_globals`, - :attr:`func_name` were renamed to :attr:`__closure__`, - :attr:`__code__`, :attr:`__defaults__`, :attr:`~object.__dict__`, - :attr:`__doc__`, :attr:`__globals__`, :attr:`~definition.__name__`, + :attr:`!func_closure`, :attr:`!func_code`, :attr:`!func_defaults`, + :attr:`!func_dict`, :attr:`!func_doc`, :attr:`!func_globals`, + :attr:`!func_name` were renamed to :attr:`~function.__closure__`, + :attr:`~function.__code__`, :attr:`~function.__defaults__`, + :attr:`~function.__dict__`, :attr:`~function.__doc__`, + :attr:`~function.__globals__`, :attr:`~function.__name__`, respectively. * :meth:`!__nonzero__` is now :meth:`~object.__bool__`. diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index ad25e16583f..83f2da6ca3a 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -402,9 +402,11 @@ Tracing events, with the correct line number, are generated for all lines of cod The :attr:`~frame.f_lineno` attribute of frame objects will always contain the expected line number. -The :attr:`~codeobject.co_lnotab` attribute of code objects is deprecated and +The :attr:`~codeobject.co_lnotab` attribute of +:ref:`code objects <code-objects>` is deprecated and will be removed in 3.12. -Code that needs to convert from offset to line number should use the new ``co_lines()`` method instead. +Code that needs to convert from offset to line number should use the new +:meth:`~codeobject.co_lines` method instead. PEP 634: Structural Pattern Matching ------------------------------------ @@ -1278,7 +1280,7 @@ Add negative indexing support to :attr:`PurePath.parents (Contributed by Yaroslav Pankovych in :issue:`21041`.) Add :meth:`Path.hardlink_to <pathlib.Path.hardlink_to>` method that -supersedes :meth:`~pathlib.Path.link_to`. The new method has the same argument +supersedes :meth:`!link_to`. The new method has the same argument order as :meth:`~pathlib.Path.symlink_to`. (Contributed by Barney Gale in :issue:`39950`.) @@ -1314,8 +1316,8 @@ pyclbr ------ Add an ``end_lineno`` attribute to the ``Function`` and ``Class`` -objects in the tree returned by :func:`pyclbr.readline` and -:func:`pyclbr.readline_ex`. It matches the existing (start) ``lineno``. +objects in the tree returned by :func:`pyclbr.readmodule` and +:func:`pyclbr.readmodule_ex`. It matches the existing (start) ``lineno``. (Contributed by Aviral Srivastava in :issue:`38307`.) shelve @@ -1740,7 +1742,7 @@ Deprecated (Contributed by Jelle Zijlstra in :gh:`87889`.) -* :meth:`pathlib.Path.link_to` is deprecated and slated for removal in +* :meth:`!pathlib.Path.link_to` is deprecated and slated for removal in Python 3.12. Use :meth:`pathlib.Path.hardlink_to` instead. (Contributed by Barney Gale in :issue:`39950`.) @@ -1771,7 +1773,7 @@ Deprecated * NPN features like :meth:`ssl.SSLSocket.selected_npn_protocol` and :meth:`ssl.SSLContext.set_npn_protocols` are replaced by ALPN. -* The threading debug (:envvar:`PYTHONTHREADDEBUG` environment variable) is +* The threading debug (:envvar:`!PYTHONTHREADDEBUG` environment variable) is deprecated in Python 3.10 and will be removed in Python 3.12. This feature requires a :ref:`debug build of Python <debug-build>`. (Contributed by Victor Stinner in :issue:`44584`.) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index a8c412e79a7..1c7c4121200 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -672,7 +672,7 @@ enum * Changed :meth:`Enum.__format__() <enum.Enum.__format__>` (the default for :func:`format`, :meth:`str.format` and :term:`f-string`\s) to always produce - the same result as :meth:`Enum.__str__()`: for enums inheriting from + the same result as :meth:`Enum.__str__() <enum.Enum.__str__>`: for enums inheriting from :class:`~enum.ReprEnum` it will be the member's value; for all other enums it will be the enum and member name (e.g. ``Color.RED``). @@ -1604,7 +1604,7 @@ raw, adaptive bytecode containing quickened data. New opcodes ----------- -* :opcode:`ASYNC_GEN_WRAP`, :opcode:`RETURN_GENERATOR` and :opcode:`SEND`, +* :opcode:`!ASYNC_GEN_WRAP`, :opcode:`RETURN_GENERATOR` and :opcode:`SEND`, used in generators and co-routines. * :opcode:`COPY_FREE_VARS`, @@ -1615,7 +1615,7 @@ New opcodes * :opcode:`MAKE_CELL`, to create :ref:`cell-objects`. -* :opcode:`CHECK_EG_MATCH` and :opcode:`PREP_RERAISE_STAR`, +* :opcode:`CHECK_EG_MATCH` and :opcode:`!PREP_RERAISE_STAR`, to handle the :ref:`new exception groups and except* <whatsnew311-pep654>` added in :pep:`654`. @@ -1630,38 +1630,38 @@ New opcodes Replaced opcodes ---------------- -+------------------------------------+-----------------------------------+-----------------------------------------+ -| Replaced Opcode(s) | New Opcode(s) | Notes | -+====================================+===================================+=========================================+ -| | :opcode:`!BINARY_*` | :opcode:`BINARY_OP` | Replaced all numeric binary/in-place | -| | :opcode:`!INPLACE_*` | | opcodes with a single opcode | -+------------------------------------+-----------------------------------+-----------------------------------------+ -| | :opcode:`!CALL_FUNCTION` | | :opcode:`CALL` | Decouples argument shifting for methods | -| | :opcode:`!CALL_FUNCTION_KW` | | :opcode:`KW_NAMES` | from handling of keyword arguments; | -| | :opcode:`!CALL_METHOD` | | :opcode:`PRECALL` | allows better specialization of calls | -| | | :opcode:`PUSH_NULL` | | -+------------------------------------+-----------------------------------+-----------------------------------------+ -| | :opcode:`!DUP_TOP` | | :opcode:`COPY` | Stack manipulation instructions | -| | :opcode:`!DUP_TOP_TWO` | | :opcode:`SWAP` | | -| | :opcode:`!ROT_TWO` | | | -| | :opcode:`!ROT_THREE` | | | -| | :opcode:`!ROT_FOUR` | | | -| | :opcode:`!ROT_N` | | | -+------------------------------------+-----------------------------------+-----------------------------------------+ -| | :opcode:`!JUMP_IF_NOT_EXC_MATCH` | | :opcode:`CHECK_EXC_MATCH` | Now performs check but doesn't jump | -+------------------------------------+-----------------------------------+-----------------------------------------+ -| | :opcode:`!JUMP_ABSOLUTE` | | :opcode:`JUMP_BACKWARD` | See [#bytecode-jump]_; | -| | :opcode:`!POP_JUMP_IF_FALSE` | | :opcode:`POP_JUMP_BACKWARD_IF_* | ``TRUE``, ``FALSE``, | -| | :opcode:`!POP_JUMP_IF_TRUE` | <POP_JUMP_BACKWARD_IF_TRUE>` | ``NONE`` and ``NOT_NONE`` variants | -| | | :opcode:`POP_JUMP_FORWARD_IF_* | for each direction | -| | <POP_JUMP_FORWARD_IF_TRUE>` | | -+------------------------------------+-----------------------------------+-----------------------------------------+ -| | :opcode:`!SETUP_WITH` | :opcode:`BEFORE_WITH` | :keyword:`with` block setup | -| | :opcode:`!SETUP_ASYNC_WITH` | | | -+------------------------------------+-----------------------------------+-----------------------------------------+ ++------------------------------------+------------------------------------+-----------------------------------------+ +| Replaced Opcode(s) | New Opcode(s) | Notes | ++====================================+====================================+=========================================+ +| | :opcode:`!BINARY_*` | :opcode:`BINARY_OP` | Replaced all numeric binary/in-place | +| | :opcode:`!INPLACE_*` | | opcodes with a single opcode | ++------------------------------------+------------------------------------+-----------------------------------------+ +| | :opcode:`!CALL_FUNCTION` | | :opcode:`CALL` | Decouples argument shifting for methods | +| | :opcode:`!CALL_FUNCTION_KW` | | :opcode:`!KW_NAMES` | from handling of keyword arguments; | +| | :opcode:`!CALL_METHOD` | | :opcode:`!PRECALL` | allows better specialization of calls | +| | | :opcode:`PUSH_NULL` | | ++------------------------------------+------------------------------------+-----------------------------------------+ +| | :opcode:`!DUP_TOP` | | :opcode:`COPY` | Stack manipulation instructions | +| | :opcode:`!DUP_TOP_TWO` | | :opcode:`SWAP` | | +| | :opcode:`!ROT_TWO` | | | +| | :opcode:`!ROT_THREE` | | | +| | :opcode:`!ROT_FOUR` | | | +| | :opcode:`!ROT_N` | | | ++------------------------------------+------------------------------------+-----------------------------------------+ +| | :opcode:`!JUMP_IF_NOT_EXC_MATCH` | | :opcode:`CHECK_EXC_MATCH` | Now performs check but doesn't jump | ++------------------------------------+------------------------------------+-----------------------------------------+ +| | :opcode:`!JUMP_ABSOLUTE` | | :opcode:`JUMP_BACKWARD` | See [#bytecode-jump]_; | +| | :opcode:`!POP_JUMP_IF_FALSE` | | :opcode:`!POP_JUMP_BACKWARD_IF_*`| ``TRUE``, ``FALSE``, | +| | :opcode:`!POP_JUMP_IF_TRUE` | | :opcode:`!POP_JUMP_FORWARD_IF_*` | ``NONE`` and ``NOT_NONE`` variants | +| | | for each direction | +| | | | ++------------------------------------+------------------------------------+-----------------------------------------+ +| | :opcode:`!SETUP_WITH` | :opcode:`BEFORE_WITH` | :keyword:`with` block setup | +| | :opcode:`!SETUP_ASYNC_WITH` | | | ++------------------------------------+------------------------------------+-----------------------------------------+ .. [#bytecode-jump] All jump opcodes are now relative, including the - existing :opcode:`JUMP_IF_TRUE_OR_POP` and :opcode:`JUMP_IF_FALSE_OR_POP`. + existing :opcode:`!JUMP_IF_TRUE_OR_POP` and :opcode:`!JUMP_IF_FALSE_OR_POP`. The argument is now an offset from the current instruction rather than an absolute location. @@ -1747,7 +1747,7 @@ Modules (Contributed by Brett Cannon in :issue:`47061` and Victor Stinner in :gh:`68966`.) -* The :mod:`asynchat`, :mod:`asyncore` and :mod:`smtpd` modules have been +* The :mod:`!asynchat`, :mod:`!asyncore` and :mod:`!smtpd` modules have been deprecated since at least Python 3.6. Their documentation and deprecation warnings have now been updated to note they will be removed in Python 3.12. (Contributed by Hugo van Kemenade in :issue:`47022`.) @@ -1773,7 +1773,7 @@ Standard Library * the :class:`!configparser.SafeConfigParser` class * the :attr:`!configparser.ParsingError.filename` property - * the :meth:`configparser.RawConfigParser.readfp` method + * the :meth:`!configparser.RawConfigParser.readfp` method (Contributed by Hugo van Kemenade in :issue:`45173`.) @@ -1860,7 +1860,7 @@ Standard Library (Contributed by Erlend E. Aasland in :issue:`5846`.) -* :meth:`~!unittest.TestProgram.usageExit` is marked deprecated, to be removed +* :meth:`!unittest.TestProgram.usageExit` is marked deprecated, to be removed in 3.13. (Contributed by Carlos Damázio in :gh:`67048`.) @@ -1877,8 +1877,8 @@ and will be removed in Python 3.12. C APIs pending removal are :ref:`listed separately <whatsnew311-c-api-pending-removal>`. -* The :mod:`asynchat` module -* The :mod:`asyncore` module +* The :mod:`!asynchat` module +* The :mod:`!asyncore` module * The :ref:`entire distutils package <distutils-deprecated>` * The :mod:`!imp` module * The :class:`typing.io <typing.IO>` namespace @@ -1902,10 +1902,10 @@ C APIs pending removal are * :func:`!importlib.util.set_package_wrapper` * :class:`!pkgutil.ImpImporter` * :class:`!pkgutil.ImpLoader` -* :meth:`pathlib.Path.link_to` +* :meth:`!pathlib.Path.link_to` * :func:`!sqlite3.enable_shared_cache` * :func:`!sqlite3.OptimizedUnicode` -* :envvar:`PYTHONTHREADDEBUG` environment variable +* :envvar:`!PYTHONTHREADDEBUG` environment variable * The following deprecated aliases in :mod:`unittest`: ============================ =============================== =============== @@ -1967,7 +1967,7 @@ Removed C APIs are :ref:`listed separately <whatsnew311-c-api-removed>`. (Contributed by Victor Stinner in :issue:`45085`.) -* Removed the :mod:`distutils` ``bdist_msi`` command deprecated in Python 3.9. +* Removed the :mod:`!distutils` ``bdist_msi`` command deprecated in Python 3.9. Use ``bdist_wheel`` (wheel packages) instead. (Contributed by Hugo van Kemenade in :issue:`45124`.) @@ -2007,7 +2007,7 @@ Removed C APIs are :ref:`listed separately <whatsnew311-c-api-removed>`. because it was not used and added by mistake in previous versions. (Contributed by Nikita Sobolev in :issue:`46483`.) -* Removed the :class:`!MailmanProxy` class in the :mod:`smtpd` module, +* Removed the :class:`!MailmanProxy` class in the :mod:`!smtpd` module, as it is unusable without the external :mod:`!mailman` package. (Contributed by Donghee Na in :issue:`35800`.) @@ -2295,7 +2295,7 @@ Porting to Python 3.11 as its second parameter, instead of ``PyFrameObject*``. See :pep:`523` for more details of how to use this function pointer type. -* :c:func:`PyCode_New` and :c:func:`PyCode_NewWithPosOnlyArgs` now take +* :c:func:`!PyCode_New` and :c:func:`!PyCode_NewWithPosOnlyArgs` now take an additional ``exception_table`` argument. Using these functions should be avoided, if at all possible. To get a custom code object: create a code object using the compiler, @@ -2402,7 +2402,7 @@ Porting to Python 3.11 been included directly, consider including ``Python.h`` instead. (Contributed by Victor Stinner in :issue:`35134`.) -* The :c:func:`PyUnicode_CHECK_INTERNED` macro has been excluded from the +* The :c:func:`!PyUnicode_CHECK_INTERNED` macro has been excluded from the limited C API. It was never usable there, because it used internal structures which are not available in the limited C API. (Contributed by Victor Stinner in :issue:`46007`.) @@ -2465,7 +2465,7 @@ Porting to Python 3.11 Debuggers that accessed the :attr:`~frame.f_locals` directly *must* call :c:func:`PyFrame_GetLocals` instead. They no longer need to call - :c:func:`PyFrame_FastToLocalsWithError` or :c:func:`PyFrame_LocalsToFast`, + :c:func:`!PyFrame_FastToLocalsWithError` or :c:func:`!PyFrame_LocalsToFast`, in fact they should not call those functions. The necessary updating of the frame is now managed by the virtual machine. @@ -2604,8 +2604,8 @@ and will be removed in Python 3.12. * :c:func:`!PyUnicode_GET_DATA_SIZE` * :c:func:`!PyUnicode_GET_SIZE` * :c:func:`!PyUnicode_GetSize` -* :c:func:`PyUnicode_IS_COMPACT` -* :c:func:`PyUnicode_IS_READY` +* :c:func:`!PyUnicode_IS_COMPACT` +* :c:func:`!PyUnicode_IS_READY` * :c:func:`PyUnicode_READY` * :c:func:`!PyUnicode_WSTR_LENGTH` * :c:func:`!_PyUnicode_AsUnicode` @@ -2660,7 +2660,7 @@ Removed (Contributed by Victor Stinner in :issue:`45474`.) * Exclude :c:func:`PyWeakref_GET_OBJECT` from the limited C API. It never - worked since the :c:type:`PyWeakReference` structure is opaque in the + worked since the :c:type:`!PyWeakReference` structure is opaque in the limited C API. (Contributed by Victor Stinner in :issue:`35134`.) @@ -2701,4 +2701,30 @@ Removed (Contributed by Inada Naoki in :issue:`44029`.) +Notable changes in 3.11.4 +========================= + +tarfile +------- + +* The extraction methods in :mod:`tarfile`, and :func:`shutil.unpack_archive`, + have a new a *filter* argument that allows limiting tar features than may be + surprising or dangerous, such as creating files outside the destination + directory. + See :ref:`tarfile-extraction-filter` for details. + In Python 3.12, use without the *filter* argument will show a + :exc:`DeprecationWarning`. + In Python 3.14, the default will switch to ``'data'``. + (Contributed by Petr Viktorin in :pep:`706`.) + + +Notable changes in 3.11.5 +========================= + +OpenSSL +------- + +* Windows builds and macOS installers from python.org now use OpenSSL 3.0. + + .. _libb2: https://www.blake2.net/ diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index 257f9ee1f5c..e442490f75b 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -343,7 +343,9 @@ cores. This is currently only available through the C-API, though a Python API is :pep:`anticipated for 3.13 <554>`. Use the new :c:func:`Py_NewInterpreterFromConfig` function to -create an interpreter with its own GIL:: +create an interpreter with its own GIL: + +.. code-block:: c PyInterpreterConfig config = { .check_multi_interp_extensions = 1, @@ -1372,6 +1374,18 @@ APIs: * :meth:`!unittest.TestProgram.usageExit` (:gh:`67048`) * :class:`!webbrowser.MacOSX` (:gh:`86421`) * :class:`classmethod` descriptor chaining (:gh:`89519`) +* :mod:`importlib.resources` deprecated methods: + + * ``contents()`` + * ``is_resource()`` + * ``open_binary()`` + * ``open_text()`` + * ``path()`` + * ``read_binary()`` + * ``read_text()`` + + Use :func:`importlib.resources.files()` instead. Refer to `importlib-resources: Migrating from Legacy + <https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy>`_ (:gh:`106531`) Pending Removal in Python 3.14 ------------------------------ diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst index ba1cb4ae006..ef4ba0ed898 100644 --- a/Doc/whatsnew/3.2.rst +++ b/Doc/whatsnew/3.2.rst @@ -183,7 +183,7 @@ PEP 391: Dictionary Based Configuration for Logging The :mod:`logging` module provided two kinds of configuration, one style with function calls for each option or another style driven by an external file saved -in a :mod:`ConfigParser` format. Those options did not provide the flexibility +in a :mod:`configparser` format. Those options did not provide the flexibility to create configurations from JSON or YAML files, nor did they support incremental configuration, which is needed for specifying logger options from a command line. @@ -791,8 +791,9 @@ functools * The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` attribute pointing to the original callable function. This allows wrapped functions to - be introspected. It also copies :attr:`__annotations__` if defined. And now - it also gracefully skips over missing attributes such as :attr:`__doc__` which + be introspected. It also copies :attr:`~function.__annotations__` if + defined. And now it also gracefully skips over missing attributes such as + :attr:`~function.__doc__` which might not be defined for the wrapped callable. In the above example, the cache can be removed by recovering the original @@ -1857,12 +1858,12 @@ structure. asyncore -------- -:class:`asyncore.dispatcher` now provides a -:meth:`~asyncore.dispatcher.handle_accepted()` method +:class:`!asyncore.dispatcher` now provides a +:meth:`!handle_accepted()` method returning a ``(sock, addr)`` pair which is called when a connection has actually been established with a new remote endpoint. This is supposed to be used as a -replacement for old :meth:`~asyncore.dispatcher.handle_accept()` and avoids -the user to call :meth:`~asyncore.dispatcher.accept()` directly. +replacement for old :meth:`!handle_accept()` and avoids +the user to call :meth:`!accept()` directly. (Contributed by Giampaolo Rodolà; :issue:`6706`.) @@ -2133,7 +2134,7 @@ configparser The :mod:`configparser` module was modified to improve usability and predictability of the default parser and its supported INI syntax. The old -:class:`ConfigParser` class was removed in favor of :class:`SafeConfigParser` +:class:`!ConfigParser` class was removed in favor of :class:`!SafeConfigParser` which has in turn been renamed to :class:`~configparser.ConfigParser`. Support for inline comments is now turned off by default and section or option duplicates are not allowed in a single configuration source. @@ -2413,7 +2414,7 @@ when one operand is much larger than the other (patch by Andress Bennetts in (:issue:`1569291` by Alexander Belopolsky). The :class:`BaseHTTPRequestHandler` has more efficient buffering (:issue:`3709` by Andrew Schaaf). The :func:`operator.attrgetter` function has been sped-up (:issue:`10160` by -Christos Georgiou). And :class:`ConfigParser` loads multi-line arguments a bit +Christos Georgiou). And :class:`~configparser.ConfigParser` loads multi-line arguments a bit faster (:issue:`7113` by Łukasz Langa). @@ -2613,8 +2614,8 @@ This section lists previously described changes and other bugfixes that may require changes to your code: * The :mod:`configparser` module has a number of clean-ups. The major change is - to replace the old :class:`ConfigParser` class with long-standing preferred - alternative :class:`SafeConfigParser`. In addition there are a number of + to replace the old :class:`!ConfigParser` class with long-standing preferred + alternative :class:`!SafeConfigParser`. In addition there are a number of smaller incompatibilities: * The interpolation syntax is now validated on @@ -2736,8 +2737,8 @@ require changes to your code: thread-state aware APIs (such as :c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`) should be used instead. -* Due to security risks, :func:`asyncore.handle_accept` has been deprecated, and - a new function, :func:`asyncore.handle_accepted`, was added to replace it. +* Due to security risks, :func:`!asyncore.handle_accept` has been deprecated, and + a new function, :func:`!asyncore.handle_accepted`, was added to replace it. (Contributed by Giampaolo Rodola in :issue:`6706`.) diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst index ed267f57276..0f810c17cb9 100644 --- a/Doc/whatsnew/3.3.rst +++ b/Doc/whatsnew/3.3.rst @@ -174,7 +174,7 @@ Features b or c are now hashable. (Contributed by Antoine Pitrou in :issue:`13411`.) * Arbitrary slicing of any 1-D arrays type is supported. For example, it - is now possible to reverse a memoryview in O(1) by using a negative step. + is now possible to reverse a memoryview in *O*\ (1) by using a negative step. API changes ----------- @@ -1845,7 +1845,7 @@ signal smtpd ----- -The :mod:`smtpd` module now supports :rfc:`5321` (extended SMTP) and :rfc:`1870` +The :mod:`!smtpd` module now supports :rfc:`5321` (extended SMTP) and :rfc:`1870` (size extension). Per the standard, these extensions are enabled if and only if the client initiates the session with an ``EHLO`` command. diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst index 8e2d0427daf..4fb4f3e5bee 100644 --- a/Doc/whatsnew/3.4.rst +++ b/Doc/whatsnew/3.4.rst @@ -1369,9 +1369,9 @@ error. (Contributed by Atsuo Ishimoto and Hynek Schlawack in smtpd ----- -The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now +The :class:`!SMTPServer` and :class:`!SMTPChannel` classes now accept a *map* keyword argument which, if specified, is passed in to -:class:`asynchat.async_chat` as its *map* argument. This allows an application +:class:`!asynchat.async_chat` as its *map* argument. This allows an application to avoid affecting the global socket map. (Contributed by Vinay Sajip in :issue:`11959`.) @@ -1936,7 +1936,7 @@ Other Improvements * The :ref:`python <using-on-cmdline>` command has a new :ref:`option <using-on-misc-options>`, ``-I``, which causes it to run in "isolated mode", which means that :data:`sys.path` contains neither the script's directory nor - the user's ``site-packages`` directory, and all :envvar:`PYTHON*` environment + the user's ``site-packages`` directory, and all :envvar:`!PYTHON*` environment variables are ignored (it implies both ``-s`` and ``-E``). Other restrictions may also be applied in the future, with the goal being to isolate the execution of a script from the user's environment. This is @@ -2405,8 +2405,8 @@ Changes in the Python API storage). (:issue:`17094`.) * Parameter names in ``__annotations__`` dicts are now mangled properly, - similarly to ``__kwdefaults__``. (Contributed by Yury Selivanov in - :issue:`20625`.) + similarly to :attr:`~function.__kwdefaults__`. + (Contributed by Yury Selivanov in :issue:`20625`.) * :attr:`hashlib.hash.name` now always returns the identifier in lower case. Previously some builtin hashes had uppercase names, but now that it is a diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index 108e5293bc4..d6d5f87eb34 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -1663,34 +1663,34 @@ during debugging, instead of integer "magic numbers". smtpd ----- -Both the :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now +Both the :class:`!SMTPServer` and :class:`!SMTPChannel` classes now accept a *decode_data* keyword argument to determine if the ``DATA`` portion of the SMTP transaction is decoded using the ``"utf-8"`` codec or is instead provided to the -:meth:`SMTPServer.process_message() <smtpd.SMTPServer.process_message>` +:meth:`!SMTPServer.process_message()` method as a byte string. The default is ``True`` for backward compatibility reasons, but will change to ``False`` in Python 3.6. If *decode_data* is set to ``False``, the ``process_message`` method must be prepared to accept keyword arguments. (Contributed by Maciej Szulik in :issue:`19662`.) -The :class:`~smtpd.SMTPServer` class now advertises the ``8BITMIME`` extension +The :class:`!SMTPServer` class now advertises the ``8BITMIME`` extension (:rfc:`6152`) if *decode_data* has been set ``True``. If the client specifies ``BODY=8BITMIME`` on the ``MAIL`` command, it is passed to -:meth:`SMTPServer.process_message() <smtpd.SMTPServer.process_message>` +:meth:`!SMTPServer.process_message()` via the *mail_options* keyword. (Contributed by Milan Oberkirch and R. David Murray in :issue:`21795`.) -The :class:`~smtpd.SMTPServer` class now also supports the ``SMTPUTF8`` +The :class:`!SMTPServer` class now also supports the ``SMTPUTF8`` extension (:rfc:`6531`: Internationalized Email). If the client specified ``SMTPUTF8 BODY=8BITMIME`` on the ``MAIL`` command, they are passed to -:meth:`SMTPServer.process_message() <smtpd.SMTPServer.process_message>` +:meth:`!SMTPServer.process_message()` via the *mail_options* keyword. It is the responsibility of the ``process_message`` method to correctly handle the ``SMTPUTF8`` data. (Contributed by Milan Oberkirch in :issue:`21725`.) It is now possible to provide, directly or via name resolution, IPv6 -addresses in the :class:`~smtpd.SMTPServer` constructor, and have it +addresses in the :class:`!SMTPServer` constructor, and have it successfully connect. (Contributed by Milan Oberkirch in :issue:`14758`.) @@ -1947,7 +1947,8 @@ traceback --------- New :func:`~traceback.walk_stack` and :func:`~traceback.walk_tb` -functions to conveniently traverse frame and traceback objects. +functions to conveniently traverse frame and +:ref:`traceback objects <traceback-objects>`. (Contributed by Robert Collins in :issue:`17911`.) New lightweight classes: :class:`~traceback.TracebackException`, @@ -2295,9 +2296,9 @@ slated for removal in Python 3.6. The :func:`asyncio.async` function is deprecated in favor of :func:`~asyncio.ensure_future`. -The :mod:`smtpd` module has in the past always decoded the DATA portion of +The :mod:`!smtpd` module has in the past always decoded the DATA portion of email messages using the ``utf-8`` codec. This can now be controlled by the -new *decode_data* keyword to :class:`~smtpd.SMTPServer`. The default value is +new *decode_data* keyword to :class:`!SMTPServer`. The default value is ``True``, but this default is deprecated. Specify the *decode_data* keyword with an appropriate value to avoid the deprecation warning. @@ -2417,7 +2418,7 @@ Changes in the Python API (Contributed by Victor Stinner in :issue:`21205`.) * The deprecated "strict" mode and argument of :class:`~html.parser.HTMLParser`, - :meth:`HTMLParser.error`, and the :exc:`HTMLParserError` exception have been + :meth:`!HTMLParser.error`, and the :exc:`!HTMLParserError` exception have been removed. (Contributed by Ezio Melotti in :issue:`15114`.) The *convert_charrefs* argument of :class:`~html.parser.HTMLParser` is now ``True`` by default. (Contributed by Berker Peksag in :issue:`21047`.) diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index 71e9e7489dd..ed186de0b20 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -1961,14 +1961,14 @@ Deprecated Python modules, functions and methods asynchat ~~~~~~~~ -The :mod:`asynchat` has been deprecated in favor of :mod:`asyncio`. +The :mod:`!asynchat` has been deprecated in favor of :mod:`asyncio`. (Contributed by Mariatta in :issue:`25002`.) asyncore ~~~~~~~~ -The :mod:`asyncore` has been deprecated in favor of :mod:`asyncio`. +The :mod:`!asyncore` has been deprecated in favor of :mod:`asyncio`. (Contributed by Mariatta in :issue:`25002`.) @@ -2189,7 +2189,7 @@ Changes in the Python API :mod:`calendar`, :mod:`cgi`, :mod:`csv`, :mod:`~xml.etree.ElementTree`, :mod:`enum`, :mod:`fileinput`, :mod:`ftplib`, :mod:`logging`, :mod:`mailbox`, - :mod:`mimetypes`, :mod:`optparse`, :mod:`plistlib`, :mod:`smtpd`, + :mod:`mimetypes`, :mod:`optparse`, :mod:`plistlib`, :mod:`!smtpd`, :mod:`subprocess`, :mod:`tarfile`, :mod:`threading` and :mod:`wave`. This means they will export new symbols when ``import *`` is used. @@ -2219,11 +2219,11 @@ Changes in the Python API an error (e.g. ``EBADF``) was reported by the underlying system call. (Contributed by Martin Panter in :issue:`26685`.) -* The *decode_data* argument for the :class:`smtpd.SMTPChannel` and - :class:`smtpd.SMTPServer` constructors is now ``False`` by default. +* The *decode_data* argument for the :class:`!smtpd.SMTPChannel` and + :class:`!smtpd.SMTPServer` constructors is now ``False`` by default. This means that the argument passed to - :meth:`~smtpd.SMTPServer.process_message` is now a bytes object by - default, and ``process_message()`` will be passed keyword arguments. + :meth:`!process_message` is now a bytes object by + default, and :meth:`!process_message` will be passed keyword arguments. Code that has already been updated in accordance with the deprecation warning generated by 3.5 will not be affected. diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index 625140bb156..a981083e905 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -525,8 +525,8 @@ Other Language Changes * In order to better support dynamic creation of stack traces, :class:`types.TracebackType` can now be instantiated from Python code, and - the ``tb_next`` attribute on :ref:`tracebacks <traceback-objects>` is now - writable. + the :attr:`~traceback.tb_next` attribute on + :ref:`tracebacks <traceback-objects>` is now writable. (Contributed by Nathaniel J. Smith in :issue:`30579`.) * When using the :option:`-m` switch, ``sys.path[0]`` is now eagerly expanded @@ -2004,15 +2004,15 @@ importlib --------- Methods -:meth:`MetaPathFinder.find_module() <!importlib.abc.MetaPathFinder.find_module>` +:meth:`!MetaPathFinder.find_module()` (replaced by :meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>`) and -:meth:`PathEntryFinder.find_loader() <!importlib.abc.PathEntryFinder.find_loader>` +:meth:`!PathEntryFinder.find_loader()` (replaced by :meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`) both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. -(Contributed by Matthias Bussonnier in :issue:`29576`) +(Contributed by Matthias Bussonnier in :issue:`29576`.) The :class:`importlib.abc.ResourceLoader` ABC has been deprecated in favour of :class:`importlib.abc.ResourceReader`. @@ -2144,9 +2144,9 @@ The following features and APIs have been removed from Python 3.7: * Removed support of the *exclude* argument in :meth:`tarfile.TarFile.add`. It was deprecated in Python 2.7 and 3.2. Use the *filter* argument instead. -* The ``splitunc()`` function in the :mod:`ntpath` module was deprecated in - Python 3.1, and has now been removed. Use the :func:`~os.path.splitdrive` - function instead. +* The :func:`!ntpath.splitunc` function was deprecated in + Python 3.1, and has now been removed. Use :func:`~os.path.splitdrive` + instead. * :func:`collections.namedtuple` no longer supports the *verbose* parameter or ``_source`` attribute which showed the generated source code for the @@ -2306,7 +2306,7 @@ Changes in the Python API * :func:`~cgi.parse_multipart` now accepts the *encoding* and *errors* arguments and returns the same results as - :class:`~FieldStorage`: for non-file fields, the value associated to a key + :class:`!FieldStorage`: for non-file fields, the value associated to a key is a list of strings, not bytes. (Contributed by Pierre Quentel in :issue:`29979`.) diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index e79b7cade7b..bfe8f2b818b 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -123,7 +123,7 @@ There is a new function parameter syntax ``/`` to indicate that some function parameters must be specified positionally and cannot be used as keyword arguments. This is the same notation shown by ``help()`` for C functions annotated with Larry Hastings' -`Argument Clinic <devguide.python.org/development-tools/clinic/>`__ tool. +`Argument Clinic <https://devguide.python.org/development-tools/clinic/>`__ tool. In the following example, parameters *a* and *b* are positional-only, while *c* or *d* can be positional or keyword, and *e* or *f* are @@ -754,8 +754,8 @@ datetime -------- Added new alternate constructors :meth:`datetime.date.fromisocalendar` and -:meth:`datetime.datetime.fromisocalendar`, which construct :class:`date` and -:class:`datetime` objects respectively from ISO year, week number, and weekday; +:meth:`datetime.datetime.fromisocalendar`, which construct :class:`~datetime.date` and +:class:`~datetime.datetime` objects respectively from ISO year, week number, and weekday; these are the inverse of each class's ``isocalendar`` method. (Contributed by Paul Ganssle in :issue:`36004`.) @@ -1086,7 +1086,7 @@ pathlib contain characters unrepresentable at the OS level. (Contributed by Serhiy Storchaka in :issue:`33721`.) -Added :meth:`pathlib.Path.link_to()` which creates a hard link pointing +Added :meth:`!pathlib.Path.link_to()` which creates a hard link pointing to a path. (Contributed by Joannah Nanjekye in :issue:`26978`) Note that ``link_to`` was deprecated in 3.10 and removed in 3.12 in @@ -1623,8 +1623,8 @@ Build and C API Changes allocation or deallocation may need to be adjusted. (Contributed by Eddie Elizondo in :issue:`35810`.) -* The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to create - code objects like :c:func:`PyCode_New`, but with an extra *posonlyargcount* +* The new function :c:func:`!PyCode_NewWithPosOnlyArgs` allows to create + code objects like :c:func:`!PyCode_New`, but with an extra *posonlyargcount* parameter for indicating the number of positional-only arguments. (Contributed by Pablo Galindo in :issue:`37221`.) diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 6e6961e48c4..9f81e8e6b98 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -931,7 +931,7 @@ Deprecated * Passing ``None`` as the first argument to the :func:`shlex.split` function has been deprecated. (Contributed by Zackery Spytz in :issue:`33262`.) -* :func:`smtpd.MailmanProxy` is now deprecated as it is unusable without +* :func:`!smtpd.MailmanProxy` is now deprecated as it is unusable without an external module, ``mailman``. (Contributed by Samuel Colvin in :issue:`35800`.) * The :mod:`lib2to3` module now emits a :exc:`PendingDeprecationWarning`. diff --git a/Include/internal/pycore_ast_state.h b/Include/internal/pycore_ast_state.h index 0c0d53f3e5d..863c73b0d6e 100644 --- a/Include/internal/pycore_ast_state.h +++ b/Include/internal/pycore_ast_state.h @@ -12,8 +12,8 @@ extern "C" { struct ast_state { int initialized; - int recursion_depth; - int recursion_limit; + int unused_recursion_depth; + int unused_recursion_limit; PyObject *AST_type; PyObject *Add_singleton; PyObject *Add_type; diff --git a/Include/internal/pycore_flowgraph.h b/Include/internal/pycore_flowgraph.h index 720feb18636..98d3374a752 100644 --- a/Include/internal/pycore_flowgraph.h +++ b/Include/internal/pycore_flowgraph.h @@ -26,7 +26,7 @@ typedef struct { typedef struct { - struct _PyCfgBasicblock_ *handlers[CO_MAXBLOCKS+1]; + struct _PyCfgBasicblock_ *handlers[CO_MAXBLOCKS+2]; int depth; } _PyCfgExceptStack; diff --git a/Include/internal/pycore_obmalloc.h b/Include/internal/pycore_obmalloc.h index ca2a0419b4f..b1c00654ac1 100644 --- a/Include/internal/pycore_obmalloc.h +++ b/Include/internal/pycore_obmalloc.h @@ -665,7 +665,9 @@ struct _obmalloc_global_state { struct _obmalloc_state { struct _obmalloc_pools pools; struct _obmalloc_mgmt mgmt; +#if WITH_PYMALLOC_RADIX_TREE struct _obmalloc_usage usage; +#endif }; diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 00537efac6d..1deb2b1b577 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,13 +18,13 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 12 -#define PY_MICRO_VERSION 1 +#define PY_MICRO_VERSION 2 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ // START META PATCH (append `+meta` to version string) -#define PY_VERSION "3.12.1+meta" +#define PY_VERSION "3.12.2+meta" // END META PATCH /*--end constants--*/ diff --git a/Include/pymacconfig.h b/Include/pymacconfig.h index 00459a03b98..61f08e368ef 100644 --- a/Include/pymacconfig.h +++ b/Include/pymacconfig.h @@ -10,7 +10,9 @@ #if defined(__APPLE__) +# undef ALIGNOF_MAX_ALIGN_T # undef SIZEOF_LONG +# undef SIZEOF_LONG_DOUBLE # undef SIZEOF_PTHREAD_T # undef SIZEOF_SIZE_T # undef SIZEOF_TIME_T @@ -23,6 +25,7 @@ # undef DOUBLE_IS_BIG_ENDIAN_IEEE754 # undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754 # undef HAVE_GCC_ASM_FOR_X87 +# undef HAVE_GCC_ASM_FOR_X64 # undef VA_LIST_IS_ARRAY # if defined(__LP64__) && defined(__x86_64__) @@ -80,8 +83,14 @@ #define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 #endif /* __BIG_ENDIAN */ -#ifdef __i386__ +#if defined(__i386__) || defined(__x86_64__) # define HAVE_GCC_ASM_FOR_X87 +# define ALIGNOF_MAX_ALIGN_T 16 +# define HAVE_GCC_ASM_FOR_X64 1 +# define SIZEOF_LONG_DOUBLE 16 +#else +# define ALIGNOF_MAX_ALIGN_T 8 +# define SIZEOF_LONG_DOUBLE 8 #endif diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index aa66c8b9f41..0cb064fcd79 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -507,6 +507,11 @@ def get_platform_osx(_config_vars, osname, release, machine): # MACOSX_DEPLOYMENT_TARGET. macver = _config_vars.get('MACOSX_DEPLOYMENT_TARGET', '') + if macver and '.' not in macver: + # Ensure that the version includes at least a major + # and minor version, even if MACOSX_DEPLOYMENT_TARGET + # is set to a single-label version like "14". + macver += '.0' macrelease = _get_system_version() or macver macver = macver or macrelease diff --git a/Lib/_pydatetime.py b/Lib/_pydatetime.py index 0e34d8aacf5..cd0ea900bfb 100644 --- a/Lib/_pydatetime.py +++ b/Lib/_pydatetime.py @@ -1805,7 +1805,7 @@ def fromtimestamp(cls, timestamp, tz=None): def utcfromtimestamp(cls, t): """Construct a naive UTC datetime from a POSIX timestamp.""" import warnings - warnings.warn("datetime.utcfromtimestamp() is deprecated and scheduled " + warnings.warn("datetime.datetime.utcfromtimestamp() is deprecated and scheduled " "for removal in a future version. Use timezone-aware " "objects to represent datetimes in UTC: " "datetime.datetime.fromtimestamp(t, datetime.UTC).", @@ -1823,8 +1823,8 @@ def now(cls, tz=None): def utcnow(cls): "Construct a UTC datetime from time.time()." import warnings - warnings.warn("datetime.utcnow() is deprecated and scheduled for " - "removal in a future version. Instead, Use timezone-aware " + warnings.warn("datetime.datetime.utcnow() is deprecated and scheduled for " + "removal in a future version. Use timezone-aware " "objects to represent datetimes in UTC: " "datetime.datetime.now(datetime.UTC).", DeprecationWarning, diff --git a/Lib/_pyio.py b/Lib/_pyio.py index 7f247ff47c9..9641d431018 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -2210,8 +2210,9 @@ def write(self, s): self.buffer.write(b) if self._line_buffering and (haslf or "\r" in s): self.flush() - self._set_decoded_chars('') - self._snapshot = None + if self._snapshot is not None: + self._set_decoded_chars('') + self._snapshot = None if self._decoder: self._decoder.reset() return length @@ -2525,8 +2526,9 @@ def read(self, size=None): # Read everything. result = (self._get_decoded_chars() + decoder.decode(self.buffer.read(), final=True)) - self._set_decoded_chars('') - self._snapshot = None + if self._snapshot is not None: + self._set_decoded_chars('') + self._snapshot = None return result else: # Keep reading chunks until we have size characters to return. diff --git a/Lib/_strptime.py b/Lib/_strptime.py index 77ccdc9e1d7..798cf9f9d3f 100644 --- a/Lib/_strptime.py +++ b/Lib/_strptime.py @@ -342,8 +342,6 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"): tz = -1 gmtoff = None gmtoff_fraction = 0 - # Default to -1 to signify that values not known; not critical to have, - # though iso_week = week_of_year = None week_of_year_start = None # weekday and julian defaulted to None so as to signal need to calculate @@ -470,17 +468,17 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"): # Deal with the cases where ambiguities arise # don't assume default values for ISO week/year - if year is None and iso_year is not None: - if iso_week is None or weekday is None: - raise ValueError("ISO year directive '%G' must be used with " - "the ISO week directive '%V' and a weekday " - "directive ('%A', '%a', '%w', or '%u').") + if iso_year is not None: if julian is not None: raise ValueError("Day of the year directive '%j' is not " "compatible with ISO year directive '%G'. " "Use '%Y' instead.") - elif week_of_year is None and iso_week is not None: - if weekday is None: + elif iso_week is None or weekday is None: + raise ValueError("ISO year directive '%G' must be used with " + "the ISO week directive '%V' and a weekday " + "directive ('%A', '%a', '%w', or '%u').") + elif iso_week is not None: + if year is None or weekday is None: raise ValueError("ISO week directive '%V' must be used with " "the ISO year directive '%G' and a weekday " "directive ('%A', '%a', '%w', or '%u').") @@ -490,11 +488,12 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"): "instead.") leap_year_fix = False - if year is None and month == 2 and day == 29: - year = 1904 # 1904 is first leap year of 20th century - leap_year_fix = True - elif year is None: - year = 1900 + if year is None: + if month == 2 and day == 29: + year = 1904 # 1904 is first leap year of 20th century + leap_year_fix = True + else: + year = 1900 # If we know the week of the year and what day of that week, we can figure # out the Julian day of the year. diff --git a/Lib/argparse.py b/Lib/argparse.py index 543d9944f9e..484a1efde43 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -2488,7 +2488,7 @@ def parse_known_intermixed_args(self, args=None, namespace=None): # ======================== def _get_values(self, action, arg_strings): # for everything but PARSER, REMAINDER args, strip out first '--' - if action.nargs not in [PARSER, REMAINDER]: + if not action.option_strings and action.nargs not in [PARSER, REMAINDER]: try: arg_strings.remove('--') except ValueError: diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 5318a597e09..c16c445bde3 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -16,6 +16,7 @@ import collections import collections.abc import concurrent.futures +import errno import functools import heapq import itertools @@ -1314,9 +1315,9 @@ async def create_datagram_endpoint(self, protocol_factory, allow_broadcast=None, sock=None): """Create datagram connection.""" if sock is not None: - if sock.type != socket.SOCK_DGRAM: + if sock.type == socket.SOCK_STREAM: raise ValueError( - f'A UDP Socket was expected, got {sock!r}') + f'A datagram socket was expected, got {sock!r}') if (local_addr or remote_addr or family or proto or flags or reuse_port or allow_broadcast): @@ -1556,9 +1557,22 @@ async def create_server( try: sock.bind(sa) except OSError as err: - raise OSError(err.errno, 'error while attempting ' - 'to bind on address %r: %s' - % (sa, err.strerror.lower())) from None + msg = ('error while attempting ' + 'to bind on address %r: %s' + % (sa, err.strerror.lower())) + if err.errno == errno.EADDRNOTAVAIL: + # Assume the family is not enabled (bpo-30945) + sockets.pop() + sock.close() + if self._debug: + logger.warning(msg) + continue + raise OSError(err.errno, msg) from None + + if not sockets: + raise OSError('could not bind on any address out of %r' + % ([info[4] for info in infos],)) + completed = True finally: if not completed: diff --git a/Lib/asyncio/constants.py b/Lib/asyncio/constants.py index f0ce0433a7a..b60c1e4236a 100644 --- a/Lib/asyncio/constants.py +++ b/Lib/asyncio/constants.py @@ -1,3 +1,7 @@ +# Contains code from https://github.com/MagicStack/uvloop/tree/v0.16.0 +# SPDX-License-Identifier: PSF-2.0 AND (MIT OR Apache-2.0) +# SPDX-FileCopyrightText: Copyright (c) 2015-2021 MagicStack Inc. http://magic.io + import enum # After the connection is lost, log warnings after this many write()s. diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py index 0ccf85105e6..016852880ca 100644 --- a/Lib/asyncio/events.py +++ b/Lib/asyncio/events.py @@ -1,5 +1,9 @@ """Event loop and event loop policy.""" +# Contains code from https://github.com/MagicStack/uvloop/tree/v0.16.0 +# SPDX-License-Identifier: PSF-2.0 AND (MIT OR Apache-2.0) +# SPDX-FileCopyrightText: Copyright (c) 2015-2021 MagicStack Inc. http://magic.io + __all__ = ( 'AbstractEventLoopPolicy', 'AbstractEventLoop', 'AbstractServer', diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index f895750e3cf..790711f8340 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -235,6 +235,10 @@ async def _accept_connection2( await waiter except BaseException: transport.close() + # gh-109534: When an exception is raised by the SSLProtocol object the + # exception set in this future can keep the protocol object alive and + # cause a reference cycle. + waiter = None raise # It's now up to the protocol to handle the connection. diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py index 488e17d8bcc..e51669a2ab2 100644 --- a/Lib/asyncio/sslproto.py +++ b/Lib/asyncio/sslproto.py @@ -1,3 +1,7 @@ +# Contains code from https://github.com/MagicStack/uvloop/tree/v0.16.0 +# SPDX-License-Identifier: PSF-2.0 AND (MIT OR Apache-2.0) +# SPDX-FileCopyrightText: Copyright (c) 2015-2021 MagicStack Inc. http://magic.io + import collections import enum import warnings @@ -243,13 +247,12 @@ def abort(self): The protocol's connection_lost() method will (eventually) be called with None as its argument. """ - self._closed = True - if self._ssl_protocol is not None: - self._ssl_protocol._abort() + self._force_close(None) def _force_close(self, exc): self._closed = True - self._ssl_protocol._abort(exc) + if self._ssl_protocol is not None: + self._ssl_protocol._abort(exc) def _test__append_write_backlog(self, data): # for test only @@ -576,6 +579,7 @@ def _on_handshake_complete(self, handshake_exc): peercert = sslobj.getpeercert() except Exception as exc: + handshake_exc = None self._set_state(SSLProtocolState.UNWRAPPED) if isinstance(exc, ssl.CertificateError): msg = 'SSL handshake failed on verifying the certificate' @@ -614,7 +618,7 @@ def _start_shutdown(self): if self._app_transport is not None: self._app_transport._closed = True if self._state == SSLProtocolState.DO_HANDSHAKE: - self._abort() + self._abort(None) else: self._set_state(SSLProtocolState.FLUSHING) self._shutdown_timeout_handle = self._loop.call_later( @@ -661,10 +665,10 @@ def _on_shutdown_complete(self, shutdown_exc): else: self._loop.call_soon(self._transport.close) - def _abort(self): + def _abort(self, exc): self._set_state(SSLProtocolState.UNWRAPPED) if self._transport is not None: - self._transport.abort() + self._transport._force_close(exc) # Outgoing flow diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py index f5695266e1a..f310aa2f367 100644 --- a/Lib/asyncio/streams.py +++ b/Lib/asyncio/streams.py @@ -246,6 +246,9 @@ def connection_made(self, transport): self._stream_writer) if coroutines.iscoroutine(res): def callback(task): + if task.cancelled(): + transport.close() + return exc = task.exception() if exc is not None: self._loop.call_exception_handler({ diff --git a/Lib/calendar.py b/Lib/calendar.py index baab52a1578..97d7cab3365 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -739,7 +739,7 @@ def main(args): parser.add_argument( "year", nargs='?', type=int, - help="year number (1-9999)" + help="year number" ) parser.add_argument( "month", diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index 33e62fe231e..0e452883963 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -524,11 +524,6 @@ def _terminate_broken(self, cause): self.call_queue._terminate_broken() - # gh-107219: Close the connection writer which can unblock - # Queue._feed() if it was stuck in send_bytes(). - if sys.platform == 'win32': - self.call_queue._writer.close() - # clean up resources self._join_executor_internals(broken=True) diff --git a/Lib/ctypes/_endian.py b/Lib/ctypes/_endian.py index b5446c049bc..04389008a8a 100644 --- a/Lib/ctypes/_endian.py +++ b/Lib/ctypes/_endian.py @@ -15,8 +15,8 @@ def _other_endian(typ): # if typ is array if isinstance(typ, _array_type): return _other_endian(typ._type_) * typ._length_ - # if typ is structure - if issubclass(typ, Structure): + # if typ is structure or union + if issubclass(typ, (Structure, Union)): return typ raise TypeError("This type does not support other endian: %s" % typ) diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 0c2510e1619..c550883e7c7 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -96,8 +96,11 @@ def find_library(name): def _is_elf(filename): "Return True if the given file is an ELF file" elf_header = b'\x7fELF' - with open(filename, 'br') as thefile: - return thefile.read(4) == elf_header + try: + with open(filename, 'br') as thefile: + return thefile.read(4) == elf_header + except FileNotFoundError: + return False def _findLib_gcc(name): # Run GCC's linker with the -t (aka --trace) option and examine the diff --git a/Lib/doctest.py b/Lib/doctest.py index 12966372f28..4630e4007e7 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -1120,6 +1120,8 @@ def _find_lineno(self, obj, source_lines): # Find the line number for functions & methods. if inspect.ismethod(obj): obj = obj.__func__ + if isinstance(obj, property): + obj = obj.fget if inspect.isfunction(obj) and getattr(obj, '__doc__', None): # We don't use `docstring` var here, because `obj` can be changed. obj = obj.__code__ diff --git a/Lib/email/_header_value_parser.py b/Lib/email/_header_value_parser.py index f778e656c1a..194f705e9c6 100644 --- a/Lib/email/_header_value_parser.py +++ b/Lib/email/_header_value_parser.py @@ -2766,6 +2766,7 @@ def _refold_parse_tree(parse_tree, *, policy): encoding = 'utf-8' if policy.utf8 else 'us-ascii' lines = [''] last_ew = None + last_charset = None wrap_as_ew_blocked = 0 want_encoding = False end_ew_not_allowed = Terminal('', 'wrap_as_ew_blocked') @@ -2820,8 +2821,14 @@ def _refold_parse_tree(parse_tree, *, policy): else: # It's a terminal, wrap it as an encoded word, possibly # combining it with previously encoded words if allowed. + if (last_ew is not None and + charset != last_charset and + (last_charset == 'unknown-8bit' or + last_charset == 'utf-8' and charset != 'us-ascii')): + last_ew = None last_ew = _fold_as_ew(tstr, lines, maxlen, last_ew, part.ew_combine_allowed, charset) + last_charset = charset want_encoding = False continue if len(tstr) <= maxlen - len(lines[-1]): diff --git a/Lib/email/message.py b/Lib/email/message.py index 411118c74da..fe769580fed 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -289,25 +289,26 @@ def get_payload(self, i=None, decode=False): # cte might be a Header, so for now stringify it. cte = str(self.get('content-transfer-encoding', '')).lower() # payload may be bytes here. - if isinstance(payload, str): - if utils._has_surrogates(payload): - bpayload = payload.encode('ascii', 'surrogateescape') - if not decode: + if not decode: + if isinstance(payload, str) and utils._has_surrogates(payload): + try: + bpayload = payload.encode('ascii', 'surrogateescape') try: payload = bpayload.decode(self.get_param('charset', 'ascii'), 'replace') except LookupError: payload = bpayload.decode('ascii', 'replace') - elif decode: - try: - bpayload = payload.encode('ascii') - except UnicodeError: - # This won't happen for RFC compliant messages (messages - # containing only ASCII code points in the unicode input). - # If it does happen, turn the string into bytes in a way - # guaranteed not to fail. - bpayload = payload.encode('raw-unicode-escape') - if not decode: + except UnicodeEncodeError: + pass return payload + if isinstance(payload, str): + try: + bpayload = payload.encode('ascii', 'surrogateescape') + except UnicodeEncodeError: + # This won't happen for RFC compliant messages (messages + # containing only ASCII code points in the unicode input). + # If it does happen, turn the string into bytes in a way + # guaranteed not to fail. + bpayload = payload.encode('raw-unicode-escape') if cte == 'quoted-printable': return quopri.decodestring(bpayload) elif cte == 'base64': diff --git a/Lib/email/policy.py b/Lib/email/policy.py index 611deb50bb5..8816c84ed17 100644 --- a/Lib/email/policy.py +++ b/Lib/email/policy.py @@ -210,8 +210,15 @@ def _fold(self, name, value, refold_binary=False): self.refold_source == 'long' and (lines and len(lines[0])+len(name)+2 > maxlen or any(len(x) > maxlen for x in lines[1:]))) - if refold or refold_binary and _has_surrogates(value): + + if not refold: + if not self.utf8: + refold = not value.isascii() + elif refold_binary: + refold = _has_surrogates(value) + if refold: return self.header_factory(name, ''.join(lines)).fold(policy=self) + return name + ': ' + self.linesep.join(lines) + self.linesep diff --git a/Lib/email/utils.py b/Lib/email/utils.py index 81da5394ea1..aa949aa933a 100644 --- a/Lib/email/utils.py +++ b/Lib/email/utils.py @@ -49,10 +49,10 @@ escapesre = re.compile(r'[\\"]') def _has_surrogates(s): - """Return True if s contains surrogate-escaped binary data.""" + """Return True if s may contain surrogate-escaped binary data.""" # This check is based on the fact that unless there are surrogates, utf8 # (Python's default encoding) can encode any string. This is the fastest - # way to check for surrogates, see issue 11454 for timings. + # way to check for surrogates, see bpo-11454 (moved to gh-55663) for timings. try: s.encode() return False diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 1fb1d505cfd..2ac872c25c8 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -10,7 +10,7 @@ __all__ = ["version", "bootstrap"] _PACKAGE_NAMES = ('pip',) -_PIP_VERSION = "23.2.1" +_PIP_VERSION = "24.0" _PROJECTS = [ ("pip", _PIP_VERSION, "py3"), ] diff --git a/Lib/ensurepip/_bundled/pip-23.2.1-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl similarity index 72% rename from Lib/ensurepip/_bundled/pip-23.2.1-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl index ba28ef02e265f032560e28e40b2be0bd6e2e964f..2e6aa9d2cb99232f70d3ffcd0ed8e0b8a730e3ab 100644 GIT binary patch delta 568108 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 >f(C#09t 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%0D{wQA$OKy}(RP{Fp;nSz#;q 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 Uh{@eBUvNO}< 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 NzOn~m#OGW_@;_1H4)g#3 delta 543773 zcmY&<LzE^A&urVaZQHhO+wN)OY1_7^ZQGu<ZQI6u|GWEkNtTtIlcXw1Itc*&R{_9O zk_81r0|Ekq0>YJf(QwIt-Fo}aGf%`M2OQ9}W1w|I1(icO{!_8oY=&=U6;0}Vy3KVz z4-*<cJU+h1K>$5Nn`jdfg{!`kF4BFAlNspR$!Po%O>0ge?-pwHsps{{$2PUGGjcj| z#BWp4V?=1`7fy*E8~%kM;B<P0Ici}_p!wIh8waMsD>yWM4zuGgK=kGx1e~jB1ppbM zf+~Y18Nm&7dQk#rER;-$qOR0xg6gHLtg`Lw4#!zmX4FLzJ5wu0^V&&rKb+7o9zR6W z&tr2%!B&1K8$0dM&!un56qSb4t-ZM_mtH8+%rlWHueMILbY~_ptY*3x|AAqcu$vP6 zUl1H$>sGsgftt90cYwkE50xey&|eTRy#K6Ze25eH{|lwHI29@b0|D_TBS8`a5}6f; znczZSzhEx4YEepHQJhd><S4b)ka$8@>|+<m))>lv3EG^9$i`7FC%k?hwwwusPem#q zabzt*`6KfN{gfxE#ZG&VL`Ddys2eN%RiX~4dyI-92P{m~5TsW$xB^oQgD){21$Xc% z@l9@Wd4Xk0WVdlgT7#TXLM=l86vGiU>iQNT2`B2n(|604K1)5R<C~LqJCHUISR&LJ zU_k_9M+l>KX{HWk5eM5W|9%NBa%|^6K>phA8MxQ;Q{1(KJy1<5Dx&KR=__artj8)} z&IIO8TRbu)e9IIt!8~Lu<FX#Di6kc<MG(QODg)!g*}<_!kRzu%vbc{MW#AlYT}$=o zM(Z{~*~{i*%@skw-lBmaLoAbYb>2vapRaRzRsYiyvA13&V<}w1Jk?D9fok9Ry&f`E z$&=-Hw&c9+2AjyIYTb@pY-^WL>p=Y9j5N7J#l!u7+~)^|9FgFFfO?Wq(8&S*eI`}? zQ0n8|OHNxF0a2YZ<nH_FMDBZt;h+sDnhP6f6He)rwBo-$`I-7jvWeY#S*7qaSdHzB zO^*VzbdDU^{K?rpD0OBG9v1~JKFrzE3=B_&bTqUt3s<Z?4g`W3B#!=;BMxPc`j1)} z(e~<iV$}54Nd9lSe4WrfG!1}mY(Q2%#sO_l1MIyDu5TZ84TDRjz9&m(OtNljnK*j7 z%cJswc0(%fqLL@22W+8hRb`{fn}Um%(s!b+IyO>Iw28gjO48PN_xQ7f#fRj`k%&bG z6IRS}S*(f0rXS;j?v?cJZR%w2O6EZgDKDaUB@1d<rwVTNlKKkLTNFUDx2}=b-JIul ztr`%y>p{nlLOQK;Vq?b~O`z*Wh3d3ai9Q>bTND&&h0`=4nOkO&1!HF2B21957If6r zPQ<93s>ObTa+~5eVX8bxqmcAIGLn63;QM&s_VC)~Xh2z)-`hF(p{;Cf7cp_X7mr!7 z5f!q9Jmp}Q!m#dB8w;qx05Rlry}x68GW8<93q%Bz+36pPm?+h<l1~{3ct2^O>B1pH zKeS$;CATdi1hbx3bJZaJjZ{$zWtxz5W2y2`ho5DsOi2yVnWD*}w}55VojHLmbWzo$ zNwg?tughWWnZ&;ZrE)Kmq|kVWkchJA_UFhS^LeIT<~6qi69?$ou~^6KW!RB>!BDRt z$vf;7@%<{Ls5@7wn(sBC^;WcHjE=XKi_z4e+0nb;x(<}24gU^Y6D2c_@Y>Zx4JK*O z`9G>{<y^Wq92h&=CzG+zY%++z7)7)Hc8>E8RZn$>1fDu~IqoO~`hinUz-}fY@3k{A zb1PKCo5gNaH~>iT@jY}kzOVoI_cM0WIX_;-B5mQ!@==>jAP>i=z7R8Zp0|ge?NU9M z+L27pA(l((IG4ww+b*+w7S46Zj3{sVjVV-dfA~`D&^o7ZL!p_Jxqu_8h@1o!5sJ19 zpej_*I!beGiQpN}ll*RR@PfJ!Muf`nm&BSi-uC%G#{oE!^4PhSy7>QI>oP@Jhp>}i z6=psj*pqwY9P)azD0UrkG=lJ67EyS?9_j}Q82z(Gj`|&go0?6lmX7)gIU36=A^x3p z&)(@&$7@Hs5y5TcUyq)3C>zS0!RTqK`)qcgs$nAyCYA4TC^}ej;Sl%4sLg8$k+cpO z^-FYY<N>G~FC*6?;2%M@lS_Nfar?jPh^1M<<0A#p+C`~wYc6QNIMs|tR4`HFEpff- zuJXuo``Ncug3t!B`Uz2}lhfcWuMcW>^9`_h`S64xF+y}y#Qa08@U5|OQ$Jm6;Ch5T zMPo2!ZaLYDHQ|l|EfT78E4`LhvX27=@v)U{>IQUg2^V?eo8Fsy(HxUcj{W5*)i`;G zkN^2HJ2PHwdaRs*;3kA~nH<(&d@^byEc4xL@Hs9i5dz~zP;3pA-9k&sx6E`>9<#9( zMcAQ?5jd060Ol{|a1-|yE|p+uPRTSjBY8be2A8wO_ggCChk^eZ#n7-Y>QBpvF8H0} ze*v^0XNp`{cG?g`pN=SRFSO?A$8c^4`-}M&UZ^-A;+HfLEkmQE53fo266=E@D++`E z>V~SfsXzIW3>}x7<`vfxWr8@zOPBwq<zU3g3s5qrxgJwb2Iz!|YdiiXVil7eC*gkD zOtZt@uj@j4|Ire<zHG}ClmF>-FVbfu+y>BfXROAj#dn2|{iEC-N<N;Jr>tSTl(SKC zMDn8Qw$ZZ2z;Bkrd-?O$Se36A1{4*{5<(A+QdDJXl$~^_jT{25PmE8xGlha{?0z+W zO)18>?MCE8iEe#Ep+u46ag0TB-Z3-y7lntRsLspNN^@txLrn1WyLbY3vx%w;4GiEF zo2#{BNuNf3+(Ts(jxn|8>+jI+plI1c{8=nj2%i1~4Q!!H!qtC21X|Hd+e?P8nF8U! zBCA4rVSxEEQaIKAs&cNbj;@}Z$>*w!2<j%yb63|-SLnemj}DsSfV_uI?3PNA(wsi? zKBxFjzC$eROI2G~B9aRwmRgu$W(FV=eU6-59t?~pozQ&u!-8rDgL!HZ<U91QyeE3E zDdl!>#A1~E;=eU&Vr(8q)uX^?*;z3P$AhyM4x2d^jCKXx`Y?2=6QV<SaR1!(b!*Jw zhF<D{!Tk3{1_fYlHEKTJjJ#`3!xBc-AS)l3dJk#<CV&Dic%R_ox_RSU&;w|o5mHaD znkUFcOd03`g}Ngx7mqigYKt+?j8a5l<88K*9qD;;aU1DcAStLSuCl$s*K`Y1GmG_P zA6AIAiaU@eV3DWC(P<h1iVO|i3}hynW}XpSqDIuaqs4vChiF6At?x;7gdQ44%g&@U z4cx+;r7hw8ZRfCFe31djV*qA(5iuuOSvtlSj<gvkI3XUf05iyuqCd%D(gdQ=yU*Wh zW<7%i;hiEClo5>@SQ^wO?C{OEJ|d^lO9(DbpY93Y!Qk9C&la}{v&d)7%7k4@o?x6K zX|Thdf-8(Dz06md?FC7F=CiK`a$%4B@UL}4@B+KxxjIW_u@F1Tq5#_8Po(89_k|m; zdw5zJFU#At2ALg2SX3@!_U^Z+LGawz99kjEpT_C$lg;98%X189bB}`jrX+`|#rjd+ zbb}7v>T+J69o_TVBZ=F62_sOIz!}@+Y^U}!IcQ(Ksj<l2no_2%Js^)$^fDX$+oAzF zKMO|pGiYk}Avp$ucED52FH#*<Y193*b)jCBZ$etJiZC#_3nP^Bum;XH_%UYd4d_z) z2vuQ!Qt_kq?8uNJ)vwdY*A5LOaZb|aTEvGk3&^JcD&UZ8B9-neRKLoHx@!7IWqtZP z1IuK5pw}7oWliE;ak=bBh`V(5r?2dtqt;)h<55`V46IX91R#Zhy5C)-8;u~J4IEd> zhYrr!qs%z({ssAT`iRh_pW2TC{D*hUg*b{g-!;`+m3k(6!$0o8XX?GQvz%;C@>k}G zE%t5{37@jzMa6fy5An7OWIM9X8}sOXxox)2fc!S!P`^hmkKga*tJ1MwU!yt@Nns+; zu&w0AqC+1=3*Z_+_ZibrJ9`sd_rMYSLiWvV9upAR@JE?qMLh9+@J}g07*v(N;RNco zyPOB&xA={LAXU=!Kg7<meV;9h9^I@zx3Va^ZVS49%a6%-NLC-0@Vxi+oTz6Esh_gu zl{*_Q^@~1J{tBVgFUlY-ruvA~A&(}H4i7k)m%u(xNC13S!#eA;mfb(^6q}4`@acUu zr)jBa@D|a}sjBdX0hJWini76^)GoBM9Ypew<}}_$C#WOldQ0abLlQYN5yj@E&cEjb zcYfsmgj<b0`NwItoTY>#a9AEPV8=W{yuU~3XyX(<^vOAGbV)Oi?LCFELVhrT$u$2| z)?HQ0lmbS3ka;YP^eglQ92|Pv#O3`0f?LAgVcSICQycn5H!~~R=p$u!roopA_Vc#J zirPMBlD`?RV*S8zoVdK;mwBffUZQ8<O1f4v`ywTR=#E9W+nZs-_*HI+yPAT%F};b! z-)`?}<e|7`MuU2sA*FC&L*>31*;XB{D=(&p<pEl4MIBSW=UvQZqiI;y^e3&nQ!PR$ zXDnD-?E*R0cz@3=BN9QPyN72gXfi_?UHK0S@e>X<Z@%avKAr=~bl`OZmA0$S{R`^u z)PI@91OjcnZhSSSyyNgZmCL@yueHEv?i~-x$OK^be_<p0(lWVGGdbKGM}KYTqLxky z<^Ys`?Z*oRFx9h4`scKP@eW`-mg-1g=VvZ`b?JD=Syc>u&k-ARG^uYOr~MfSx=^D+ z*=_@L`Uo1mHI}p|OaC6uHmH3{tceR6S9(@H0~FI87gTWjZ#ScK)$wWN9p$dnvI!%8 zS?kpuf$?ms5dp6!Rh+W^fVB$!ZzWsLQUHKEH~y;ga>NN*$n8CxvDfz@BM8{bPO>fa zlubvluuq^MJ2TI9VJ|`VV{1(7DYM5Jqo}V23+D`2|L(=XDC^K`sQozO3KW%>EfSFV zQyzd%{>`1LwaPothJAwvW~R<tcgT6HdebkqPA(#7<<OEkzO3AjLBzC=^K{O}&DB%d z#hR<f!Zh%<@UE2>k?Dq+=Eu|OL_7tsblbuChW+0yLWX&dJ`f2A2$3T>!3-^(CYcZk zFpc}|xXJP2@r#}lRm5^qe(Auq1^0H-IC2dxn@n^*1~D{;79Ho6NFJDS{Smaa>wn9i zghD+bt#K938nu!(KKA-OvPuNy&+zcKeS5qFMSNyOI&bTNeU`S=vxOQm_|jxrd*oQ> zNL*v<W-ORAjnY=Y=t`?07fpS{mBOVJKqO>G%~DIE)hyo#U;7dA+bC9HLYx#;W=C0x zF3Xlc>OS^be}?A|6!IK9ehs7CqY^M2bO$q?4&?z4-H9e`K#U<5`NeT)r#YVTSC75~ zh^fu4?Epo|&^b8kFR}t3$&pqj)C7j-lM2SAFcMgBpjLWl^;8;5VwCJB9W915VD!39 zWZluG4gxAb{SyU|BR>A|J0dqioZY0XzyFBhkkp+5?MvXa3-J@h-ykJIB`J0-Tpqff zJx3))na*Vmtd8Wze84)hF+r3ln_1CCl^T}&LI41J@Yb<rcJ8J8Jv<vlc6@Hdbj53_ z8d)tsLj6xo%FRh1Y>*~-lHu1E;O*~n|Ne33qLix}&e_(@6HM8^8O*yPLVx9wR~382 zY{V9HoBeF$lzPRMn@&c;aZiTPV%UUv<qe*oA)SZdkL(458-p|m1b`$hrQybd^Y7&X z_<S(@oWFT{`+xbvT!IWM9FZ8ASVNohsp|C&xCReAeW}J=)*UW-oMLJM7E!m_k5vNU zfZXd3w4pbigZzN}x`RQ{Y14X5XqMFH*2EsH3ex2wbm(v5R~M_K>w#^62<9G<&pR33 zMd(I?G`e}a-p=3bP_`^a<de?TSAEp)*+1!26l`l11?4CMQP5X!E%QUFIixu(7kz2X z5|giei~^gb`yXp|gdREpd_6Jn#XEU<^4E=Ti}&dC;Gan|E|^c0Y<f)K;4+@~*4}Pz z-Yl_<wF;%0LiEb`);tm?m<#rOq%SYLIj6oO#gO@NvkHm_P0@$RZwFsjZ8!z6gOG7R zkiju($Z4xK*rUweSzHjYK!v%6z8P`rpJsp|Y^i`88DWn1P;zwuID)0>z+%vGs2*kJ z8=@p*Fj7Bysqe(W2lxQ|eI2tk9`6V54=)8l5Ttkhmh&OLGC$fItXcL^Tcli|eF<mf z+Bmo+u?Lo})I*QxlL=Hbk=z+!eJ}nTTMQXvlNm4#VX*=MxTp@ajeM0_>bOkdBYZHa zXN9xPK$f3iUa=7%ns2j7<$;`ufwsRfkT8lv3JQ;9^~bNELNPQ5sDG8{6$@*TgwXE* z&VOnQBbNv!AQe3fT}Ov>aDIBEUjy72h6(19bGX;=E$=V5W;1rXCOHr>JyS-YX~CH( zDGV1#it;cB;V^l6Rf(FNq1_q+37j2pN70<2byw64p#d<!geZ;dTe8Uui(YwHy___~ zj}8@Bx2u-ti3+<F8?%B1RUOI~tASH=NMdeg?GcL^d@~^<BG4i%&u-~%kxA{)zV(8? zzf(Kbw2;K<xaw>-bX@d{!-SrZ%S;GwNRtW$6_@0R1cOEZYMu}$Hw*EM&;yzP?$o<X z_$)>#ayT7ulL<xy+GBV{2s%$344@WnKcgDj>l<)VV<dX&RNxyNo36yb`3RMuIPDr^ zYVaK>#_z>y#Uq-7`tB9jbyGbQSdZ0_oez&)ub#f}^1=5O)>=J2E0@n${{ZrC8}E1W z`>xSn?hBYMmsMC;i?dGD2$t2hBL<<a=aDe>hc*B}UDIgO^@A`m3;B=<y$va@$;n73 z2vmod;81IU0k^8`h2orzrI+pH5;Iry$J1b}bt5MWuvG(f&j>6wAmvf>XsU-Eq4~S5 zY)oi?lZgRU12;~n-ucuE+jiVjzclxYb4>Jq(y$bOF`W{?Qb~d*4;DMZa6$LAGfWZ~ z$BzQ8fVLUR*D&fuZKtpmmk2s4zyl>~GJ!XSq=PJtn%F8(<OP95&CtP^8v@{lp|n*+ z4DeXklt-A44%S`3s-oez*&v2trHoj|=}lu`4tc7`0c>MxRpZ=V)L#ppt}WEmbju0h z!5{b;*6_&8qVaKE(2pmvktj9ef-k-w!i0dU8WQhaWG*F;L>zUY4)!s8=9WRbEMby> z@qpf4L9mr)k3D3$h~^E!>SUG>C^&9A*zNuLrbWQQm&lG}+H=45=d$4(5ubH}qvvPP z_b?{(Xfr+qO}AO99EOKfEJN1bJ-t(r1`<ttH>ydlRh2X4of2{IzU8ov_M2~9rxV~- z+2VrhPS(|=<vo_=xoOCIRTLJvW}krIDU~Sz=c+;Umaz9>&Mi^Ie`+xdUU4Cg*kecQ zzdlY^F~-n;Rj;CIe>tMpIaV-1mZLUj5dhy=0_p$<9bQ{_oI=bUb-Wo5I>b#5QA=&x zz`-xP=d3==7kc%#wDtv3KFM;ty9jVrrq39v=F&#%+;vb1B1j2CUFo-I!1SjJ&BTPd zs&$8#0QBlM=aLPfTH|~H!k_X(>>CR?Y#fzMLS@45U+kGwO-JCc%{pmE3Bson*Qdiy zNu^qAlWGK-;rRBGh$t8?h6t2lRhVO|{oVz-^&dvW@7^$z%m5h@aMcL5HDZA1DQF_8 zq)g;7_A{uB5kdSmDFl5rJ0cRtr25S@bT11M3xy7li~JxWn<rZLA(CND-(LwCUKeo& zlmgT?EeRt($!*f_dBu%X3_g4T)lztV*0tqCGBiwn7vF)bgRnK2abaL+iHQ{?^#&I$ z2NwNyCf#-;LJ*fjx6EtZ{vg03$l!rV=n|M4l4ALZT(hJEPw1qf`V0HWr+7oyUA{yo z-E)EaBx5|~aF{5v%lQH5{O!)e53y574FZ%;i8+r%;A>aMs~K0z-DeVp;?rzGL)zbS ztePbHc-y+Y6U-imV*f6&c2bRvlLb?W+haP5@I(KN-jqLfX0jLl>&<|aK__T!)4k27 znq3okhKRuP@ER2K>|%Rbw=>c(!X_^1#hC-)Sso;xvw72_>%H5sv&`8`ZfxxOevYVZ z{7bQ&k$|Syrb0?2$!Cst;^Rxr_W1Un_m7w7+7m@(Q6v%q^Q5h@jQ6RSS8Jai!MPs- z_M6g`cq$I<a4*L9P9VUJZQYrzE$zrnR<Og$MU7p$RS{c1+eNj%e`;X<9{tfWwi#sS zsr|u_TuCzLV}!m)CR9I>fhr?G@Wk{92MkXEPwhdls$gw0|6h(v6qRx_?enN*^73@7 zUDvggBj|kNx3BWeH_+19{1i*YPee+nz*znyCBq?G`zu^(ZgRk<q^*$7&49Mh46a+# z31uv%E#$6-4ed1=6anR*A#RlSMyTLfm9vm)BSv(!XxW+^`T+%KY$*=1dW?n>!-4~) z-m@&9q&fG}Jzj1~_-E<*IyBn*M#cRR@eEEc)}1G3ISIc^cNUs2B^1LHzP3hq_W`73 z&vpIFGbDUuhHn6<+=H95{Ah@fCnxmKEMZfhxl;~qF)c<33iVR2S|HoOnPWkHEw)X> ztJpPYN-EgfenCg?9H2>-y0ySt4g;5K;g5v@7k;`wJYT_)$+{|-o8O(VfO4vsTVh2b zhC^V<H$M{v3=S|hzXG=>rIJ~qc?nHucQLG%T5x(LLmdE_vfJ`8fsO9nl3Li<ti>_H zap6A9q_6Q6?kj^G7eSpTUd-EP!qp@YimrNqZ5$KhSi(au#&v0r#9coIi2@^DYmWvp z=SK^w<AmN_6DK+J0`vjNPLc0T;n+yDNVUiAzPDKpxNYt+6=HCU*;DoMOg=8jEgKY| zpgVZ%a0$2pCjWa69-Uq@6SA7+WH^1X+53Lgb&oraPiY6?&v3lyn{57QKv?D0w0Yju zi%Pz|Li!HrJwvyh@ZkZ^?Sw<T$D;dMXaok;AUqApWCx2pyg>V#C|v9Suo76a*(_^A zkZ8|Yc{XP&llA)-(}cb<S<`B40p|m#vw!s1UIv&OC~Wi>MKw#XbHWdS>{mJXFJ0z! z*Vc|4W=q?e1D5V`73mcpwCfBiHR-B9eHoYMAXXCjOE+Cd5Djpme1{-&+iL7G5{8-v zCA9bhbzLtoXJohWnCw?dQ&iW8rFeb1DQxYhl~qL4<cBn7*z9y!_y7JY%!2G>?|iB= z&;{sEI&U^Pc63vtAqKa_X^Nc0^>+ogh2I(CA_*W!R8Pl&ehqb9%Q#@PmO^cAiTbr> z(pj17yDlWhy(CKm-R)GjP{P`GNbiQPxamiUN7_t6fbd>@sIgKmNfnCbVvM?W7(QM! z6k?QxZ?3g)(C8nWcl9*)Ys|xElJ8ZSlLPi9N=;zj^zT2Cq=PGU;Xd^n2@8L9(Y0N5 z(YR$5Vek$2l?v^uY}*dJk{QlmTg`0cRb#VwAw;HuEf=S=d=jFuHnub7^qx#0?9j@t zzns-zAIijqpA@E&p`x_-n}MM7{cw9j$G>yBTWj5tI&B)5C~8oBlGoxp0@}Vp4gtIT zJz~?LwlnLMl``!9-yaw%<<sy8x;+f9<`11{$F}3soO(S!`(u4S$K29RyI@)X1-L&I zB>8lptlWhcRrQ}3ZisdbGX3eocN#Ox9iPNMa%}0|4|@bRo}E8xt-rn;-`8VxmZ<mw zg?-_Q8@|8b6PiaVH)^vhak6gzQ~`&B-N@w|iO=obt(vf-PIGG%M{C>6klER}VJ4it z&4r#)vDIT7*M<-2heNMe&F>Y%KU;a_G3kz8P?XnYQN;rZ4sXSyx{H3@)U9*I?5IU- zmEhK!AZ7ZO9YAtBs|8RW8U~0xI{0VUV>}nr#KN)off5Yn&mRAg5fE3dF@QifQ}p5j zi*ic6?dayj2i>gPk5-SpskY7&xiaKUjR%WFK+B=^Wbv!|3|>;<#?F89C3QGFI#PvY z5OJZC7C0KI=eGhPv~tlk3j#LS+Ui%}oDtCz<wR%Ug?uOSc;0B5wesM@I^tmme&MC8 zt@YpYdG`~cPuJC+JtP&|c|cYx(C722;h2u>KH_luh|H{K!H;^k!)r#Bh*yD)ZDb)o z+KKET=Wt2Iyz;eAT?Q{IvwfEh1S!oVjfx*|g*-;gF#D1}El~cCzqdPw#ci}be|wFr zZ9sj+p945adQNU(7fKxOTngRwTEeK=4&@tKxo56)b;3E98e9c^NI-8Ag*F0OdHCm! z&eqJ<#Z+!<W%>c%hAQr9u)tO-fx$H);-7W18ze^*{x9LLK)KneO#F65mxlVsCjQV4 ze|C>}+77-!=k_#(<1g9dSL>1a{YC8DA+N<3J&+2^SAqUi;94v4h#6bXQf?8x0Flp9 z%<M~V-<j`S1S)qWEdaGR3^jSzJf<7>ZbvkNjQT9as}riBXSZGy9^X-({qryfmCcw6 zc{x|e2s?UqC(<o?QC{&4H=5y;pQa+GISodKv5cYqyBgFOtUr8sW-p$6Z3i3=m-$@f zQjS{5t4QTbQ2f+E41R5%(|5kE6NaMDyjdk-PAO@?^TL?p1;CD3&|3Ybh8I@zJWCd1 zS-p9*@SqWW`MW(bxafKS+Qg?N!6QRZ#%|lvr|<9q(qac;N6hbcE1PO|$d~Q$K9@Mp zo&5B8-p2jO;s@Qh-Y0jdw%I=2Y)d0JuR3Qmy;`R5XD`C*(tk41$fLtU_45s1=@(~n z|2)9m^$u%ulg9#S@fQ&c!7zQGM}VZ%d7Ufn>et#6>UI;9ad$l2nCXr1e>sea^d|6b zTp*whz4U-7FtjEQmN;kt!8=xV&Cu+4V{^KxWlO)smbU=nBATcEK}_c@vfAzqqzziF zaCysefhif!Ivg{Bse{N`Nj3`4CN=dbtSw{HXURA#nhn_nQ<=P<nu<(c3;Rn=dLhce zgjWVuiJMq!5J!JYLUP0EN=G`f#C!hfKkKA<Id_FiXR%V3Fj{y3%^xy81qNdc8oULW z&~aI@v-*sx%ftIq&Y>4PsR`u4Ml{^8Hu96TCH}%g46uKCAfV_DSrsQ>q{}Zg%A!V` zZ&0pW5nxve7HkP7Fhb?nQi94$*s7~g9w-$s;FsJMx7ylxF~eJHKRKC^MU_J6`c~=( zG1Xcn!5(C|9j$eMz@gqlez&Y3khoQECv3r@CMk!&RPxH@_NlRY<%?}-6Z&QyEOoYE z3Z}@w-C@$0z_K|DKQpa0&~i;9R;Yu-2p{ZG@{g_n_9f9~rpE9k3~<#HJ%I~BiAiXq zvZ(U&I46VgPqI2R>_Wz*gT2B$n#q1A#|QdFG8*Ue@vKUK$6wwJU2TD*5&XA$?Cz~Y z%-+sU9?61E?AfzoG^%H)G@F}pi5(w3i~W*Zxnpro!M}gCis|{i*yN9G8d!zcfbSnU zJA#4iz8b1Xl@W;*w{YYfFS)qSEn6ftvjkGk=AX%GAlSfq${eRx(`@GY{XL5D`Ljmj z&NZ0ZYn(U$bSE}oJn(Wa(?Z2?c<j$M1KfN!xI0tjf%29GafimIoG8x)ovU}G%ZUqK zLs<d%fZNZ|6zWMCweioA5{Gyn`9{WAejJcfKZvG*L5vBb*Fe_|mT?F&%ns2694Wxf z&<tIajXHvU0DBM4O<{v;v#V9Cx+OLD)89>HeuaO4&Vw@wTrWb?O>KVJMN~yjjJX%; z_@Eti>mWz(HF}oD7kEF)n-ciSrVVlGS7kVI8*N<YR;?jtXPH$6J9H*Ad;4WzFes3! z3v}X(J%I%syYg+44E>zNn_?U?kmIy8ENFyU1p)E)QVWs9b^G@CV>}!?)1y+f7+R-_ zyzzIy7uXinpqUsAeUn5%aUXQoP%aVh_7BXAVw)ALTn%=ZJUi<&2$nX$aO1X1jD?;h z2!dfS{scA%*72<A8AkY!_RFq==mXu)pG>zkc?xsIY)4D24Xw(meyUW$!)HtSbOUBa zK9=X$Z+@VKFGPs*84Ral$JkNttugCD3a$!p<&a^s6ieF05Y!0Nzc-Ad0wZ+=C9@nm z_5jKSb&th<lu;94sODcxUkJq4TrQ>2B320xfkhSZfHka|#9fP=4hL=}LOq7m->68V z)v<03O4cNC`g4G~4N}^rSBO#-%!T$sY#Frqw$q!VjjO;35tiV$wF!(FfMAg`)U^ZX zCm?LkKxhkMo|%SosLkL0%JACuy|lzJz6NG5xU$(6ItWU9yU)4^-oDo<hJQs1c^XCP zLJNSNg{5x7MU}hSk0LI88Spkw{#!28rinJ6p>ExI6Kiu=E6XGv-`&*U+boD-b&wkC zwu!!OtMm6wGaSVOoVP_+oy_&g&6pX`5wf`+L0agC2&WVPQqZrd*uEJ2vZ%(eF83Gd zs5TQ`_nD6$tQ4haW-$%h#wx<1{QYNM2hao?T4Pi(h`PZRzU8hiU|CUrDx0Je%%9}k zhGlmW$#!<XHAv7T^=1Ab|5*hr>An2pNpzdvlT5TA&^XWyefAfIwk|Mb$^j7o`)6r7 zryskzc%5(8{b|E4*y7KwoN2qQXfs%e!w$qx_SmN23Vr=Qx(jm*_e}P5<4itEuh-0E z$I50o4I#Zvy$lq4CJfgY>4Kd}a0x_9HJ%6wL5;MV<{1xcX}lJJ(qj14Jp4J)y4R0V z2#nf0wQ!E73REmIx5w{2zwK;*KfavSifo7kp&Ym>!PdmHG!8?VGnEjLtRSO__R=I+ zB<f!o)9N5!3^7jvQr2)`JVgYZjs!bkqkqWc)l(rr8GZfLB8sR+Zdpx&(}&LiqM>SY zTm65P#RtM9LDTjblq9O%wRhdy>l$u683xF0{S*eygAljR5xev{<E765k11SuvVQ_` z2k@n-60Bw+r{}$>NA%MK%?`ctk}vxbqMZ5TZbX-K>P^ND(0U?Os7_36PSs$L4Eo^~ z*~>52=^~B7129=#Ptf+Y16r_3-a#dz$wi6Xfsi#dmxJTU)L)uI-c6lg)&9~sOTog3 zfk0F@sV5bN%q1&d<<WBiim_xPkH^UjQsO=UuU`v;d#p+YKq$WO&5`792vp&|&Qa`7 z9zgwP_B%bpsfD10!%r${bI`yfNw-SynFy{tGLX}EoHJUM2pZPyD=e<5#k7e^VX!HO z8_Yr1&}@@80mIG5!(-40BDL710i8S8UD@PXc&;kYf7wN^pjjmWhU-WDa1<lf>76>_ z*831#B29_O!Co@L6tIwr=;ApQU68fKe{$hqos_1Pp~r^as!aP{z0xTvC8ra;%PTS~ z*d<AL^CIp~pGS*gw-~FK>?Sv1Y8dK8V9XSi*kaKu>Kju}>Q?{N*;5ta#GruK9x9in z+?lZ#-Ek6JNwM$%%J#Fgax$wThh>Ah_dJhhxOnDY&o)d(eEe6nbQsj^BPiukl!a5` zazMLkDpP{!>ouKAL)E-sbWt%_nHcA-+d+$e#{U|wmJbnj;%sKZns-19U5}L}#w13R z?EYljBc@HmYvmRa7~bD_vx$(@^fabGGVqcjfXx`Qe~wuJ=%K-Xn{2pKLpNmgaEHOL zM0Gd9fKh7;YFSV=BtDigraTfwp7+FXAT{*cnSoID5RLt0M9U`sOxeVY5@oQIzJN9P zG{~|=nIN@8LX+Tvb7%kofz>x*a0d?wx5rRvDp(|PFkNl$c4T+8+A^a<?lpIs#F|Y~ zs+k_Api5xjMP?=Cjh+(gx%z>~tsSL4T}d@pm4MB{J#`A?Bu9u*bEZQIh*Zl>W~tq@ z9`PV4C2OVb=APerOg*71BFr{eTUo_MH&o=~T&^Fk8^(>ygEjQ9N~;2oC7+40@BmpL zj~e9-H?(%k(+87WI>e4K@<i&;OgpdECcKh83?4@{Con=-vR>I8(tXsMgc~q855_Rz z+^-8KtBKPC(Czt`*<%efvz{bG5RE>o%w$S6v&69c2(#D&<kyt`3hr0bc~^Lkkx^gA zK;@i&@r<i@kr*5?BT>u1)E5m*9-1z?6*ZiexTzP7)vQVrHu-yfY<ERBRY~7nJUyt_ z*iPZ(u(<}ug;^6ub03yK61a*s_Vjsfr|KDr;o`yoHZP<!qhfXEQc^N2uFuoZ19W?d zVCklCfCC-&r%(@B&rC}?%Ok~6sx4FMP!7Xh<CghaRFlmm3wa4FI2TDC%NM7J3-ikZ zn9rL@yiw?t%asCvj`E8PeI>yfvEZ8fiyM|{B7KDVb2=^dRb{?G8P%zhzZE!H@J<?= zA!+>pjfzTgUZe+M?g^{DtO9iYyLQ4XL}j^ltz%u4d2s9vwbk|&F<Cj>7gyMvgNIbf zuN(W9s}!|6K+F~9GWz~vE_u!H;z{GKU^HQ^Fv&vJ;@ivYfVD!~8TX4+jSczxLS>ax zx+i?%@^Ezs<^>c=%Cm|>r_+*s2Kaxk*iT4+Pyt-_(B_dfgacplO)N0s?CvYAtT{tK zVxjhST=Yc$b$1#Lw_$h5l^3z}f8v5P^*bK_#jJmNGOhT(ZVV+^w#xR0I%U)~clzn1 zZ|AWj{hlm6h2i(}M@PlJOuZ<~+p~o<&N9teLugOR1nT|wf6*R}XRjkiyF2;%ayxQ> z9RvN&=$D79=V448kA+T+sti2ZbO{S<Nf18Bt>>+AaJ6jEUeEA@TjGHW$aiABqP9Je z#pT+JR$4N0;h&LEGcuU80hY4FG>^D@#_zEdy6s`2L(@*(P{bJCbM_^RNx#$iX_B33 z<IXh@L2zOG#AUQnSEQ<A6KOgKU7%QiY@?%VV>KFQk^eMM^B0iNiD#^A{G?`hTp_2u z?5b|EZC?6w54fF@bAph%O(=xu3a?=;wpn%H_r@D;V%eI25+pW+Jhd+zfeXE#2lu{C zXObR#kuUU<v|1i~7z1dt;muRowa2B_YEQ(BuM7;UHplCA1nyW>9+2x$7?%J*z$PJg z=Pb?!`R7N`FyNVR<Y5lL!!!F0nt1<y`+GMgi2tF;Snn7>_(X`n#ru?B+H@<1Y$;X< zv_=d2U?L=VF^H!J9$zb21b^0I-;~ZoJy%=p@b*V|m?oh;E2JOO6iA8bQnln+IH?7! zR0vilqLw8R25u^-ONLk$d;t;wD{$Tjx7<uS1<w+(zqdgGFuifY@s#s&JToJ8``C#} zwSXCTYuBT*$Ch3e@9xg@6|$;;s5ukNrytgZ_pa!qM4Z#U3AF6h&I3CfTmOS?vFRnW zX615LiUha9OIPXrC%618=7!y$+pcZhq;g>Ul}Z?I<C6$mn+YK-Ui%N=x>{UOdGj3y zZ&NP)g+OPkwMfA&(GM+9X9Z;yuMUURtauAbE;q|gZHFhEyus#{d&m5RgRw8IZUP<m z52DG6m7k&JQBm}42U;$kxMCb_4lX2%^c+Afw90h`=5Q&o$IgB-czkU_Z^jdF+b1ef zc4tTWYQd3T`ewCl3rGbV*E56XGne70eJ%KMFNXR*t^1B}WYo&>vn|-_k%e_V#?-c6 zfn?B!y;%}CRLF0;UZU~;sd9V@Wk5*liZbRse51IM`)+jzl=f377@~ejL*;R6buLr^ z7QHihczF80tTK8?ubLRyTwJXKK<(u8f<HcrGj+6kdI+2P?8E~kt*kHg_X!q^qD_le zCM}&s%@hAI1sf|ZyPyFLF_(MKf0(ZD22n`UZYg4FM!MR^6ya9l69sBMtVdv;qa5-Y zT~A(>S0}p8f-dTZV?_X6J6_4jNpZbh7VCdh3inh|VqA0bB}#9b-cHDpsi>iYi#Ws- z;i+I<@Tp9AG2sD-YFOkHLNkSCbon-3M=%X{AdV^`H#fZl$Gig_9d(PqZ((%D&lGfn z+l_c!4i3!U-F4*4v=o$Tyd4M@PiisHHFFnLGVb?}uO#hPr*;0kr;-n7B^zBKS$o7f z>pB!VUDk~?xn98pe1wr!TKW6|y`~+t9kBV=A3VAG2YnS_D%V(?SNf`u+#_zfQI#{v zmWakQ2hMt?lD?nYyhDagG}K$X=cw4Cwd)UF)YoN4z`O7cg9OLV<PRh_XE6Nb2V4V{ zi@ai^sz<NvVfCpPxPGJLi$vqSMPQ|`Cefa*K^(q0W(s1aLPpWi_gnp5YuZ-NDfqBP z@BgK3?9B)`NRgdBvHFF0&Vuxw1{E-OqFgnKCdtp<l!|=ZuD`iF9mt+ICKt!2s$iJe z)zAAL(R1iO@?~IJCJ26?W(h@*FkaU?3?Pk&Mxhr{Rb$W|SbrjOg<Dygeb(;2O{SY6 zM8iL%F9EG2X>_d!y-7G*O6WLQia_mrVSmp~H8lc^5tHi~X#>+mpMxG+P0cZ94$|P< zk9ds5snQ9YY|7gcg_ksg#xk;j<%6jz6XlMge2>>x$JbZ`dA{q#9a9#LAAvp<iqj<f zP>$<j)O_aAxhb$I^fn2#@D&!MaM61;-F0+o3@B$zf7W#Ht3dO{iYXx?>|g<Kv4*o! zC5Zt$w++84$(fRCv7Bq|>i0aw(JmU}ZlI1aV`QLp$2|LlguZz9=bW*GK#%ijg+64$ zlXaaf!yi%f7t7!>OEb&|DsKEw7#AN$=BEO6k*W?qmMla%pUD>)+RG~-=(7JV2%i@8 zCd=!nUuO3gdpc9~Z~R6h4?~)`XE5)VSGWPX5r5#CuoA4BC$;x-*^005^Ok^=91*d| zsFq^B?@;S#EDsrVQ`bs+&%|DPZj`rn<ipXQ++ef_JQ9p98ECY<pO@zZKK%EVDhAqI zu5s+H1yPx$mW2-e;YGP1U7q7ujW)nkDz{zkZd5QQ2PaLI?_eW;FDzqIxld7R{N6OK zr~V@(9UNtT99-_%V^-jFfN_8c4(Ho2hnOO>ln~hcGciH8%Z@)?Mg4Zq`VVz1QWDLY zzMCH4PDo*Yhkei6@1^8Us((TMmj-I$RKNsA_`gR4>nNMedT1b^ciiLvD6}Rg#d`>V zZ8z4P+e5}Io@5Ug&qj&fJGn8)Y1Q*a*|WF497L}{d61Gs^qM&c(dd?1Zv`^sBc1@p zVCFiaD*YZ!$^40srF6>(XTTrxkk#F0*yfb{6#f)+4HR|2nSd(vk^>NwpjbwHlYsj* zlQv7p?lpsG=%EeoXsE{|0tFWvLP8;+zy!M?*<bMwN)T(~#afrc=*mkV9-mnK#1)T8 zmzL+5f(yFQI%>jeWV_f@#=@xS75U6@<|3!#%SoZ(&gg(ch%t$_7^Bh1d?6C6f~J=m z;!J=u?#)`z68*o-*|S?yn8Y!UNaadCeAzx{zs$DA!)v@<MyIM}d*@RIhY}e8jCmAz zoyYn&oV*1tjxAXO)Y-|;l;LiILX~_ekR@6h=k-jcsDfLv?XFi5Kf5&G*5_mr%deoT z;Bo7{>+toIS?*xXgoyYRA5!A@l#VcA_!a##iSK*bm)^zoZ#d$^b~x{#Z=TqB2)=Qh z-0}IzQ@4tXN3cgjpw}W?Pf-`(8<Oiwa?TIyk(I}}lysL|X=xmyqB%TY6h<JxP!*H6 z9<x@jfYv&gXLFC{g*C~$Xht)|0yw1~VZTw$jk6!_8=wEeoRZkBLE3HMb<8>yk>|G4 za|9s_O}G)k0}dF57(tuokcg4)r=oCzQo`gGi12`3k7cWjZ=Vz=6kr5c-tWvU<r(g< z&>^^tc;VPNUHQW;!psvzCd2|neef~Z6&rL!b0x(c`At#{q2~SHiP)&~XxlAYUM!^$ z@L1*^M9QX6!JCBp0{+~z=hOP~-$iVDky2ubi+%1ilzM790$SX?I3^I-c`$`&i94z> zg+vE7CBz2ElSeu`aSs-&jqw_>EY$D68eNBLh&5aP;<AyHGNc#%Km>2ctx0^i;3m>2 zgrtQ0smdO+Dj#MmM$3=VyZLAB2`me(k*Ec}1;ZN%=}Id}f}^XC{;mH4{cr7i9%~YG zzyJZA5+)03(*xo++tK}B>x}T>NErD<km)uC%iFRoD7u83q!Ti?3-IB<w2SO4%#_h9 z?y-b_eENo>$tJVNx}JmS6ZyhV{hQWS8|Ud1*;h?wEeCrs?NhC(Wsfo4D>hP14h;oq zwBJuv9NLODJ~Xv2dF<7~Wh&bho@e?hi?h&Uw-!^aH2|eD&Ld)yq56%KPYn<Teec~o z4C~R&bc^y6=~p6V-V-}3I^#6-mKa4CZaG_zH0kgR(>E$4biJpsgVgckN@FVKgeYx3 zQ3c5B3^Qhb%_jJ-6l3i!CF5@X>wY!g(zT7vC-Hd8U&5cktDXc&j5O1@^=Q#Fr-(!a zbliXD-vEzw;%={li~<Oj>!;Gfb@+F@T^|c{3c$A=3exZdM*rNB9!czFbMGz;*cvw; zWdP7@|7rB7YoSV=$k}O2Pn(e?K3bWNDkD*-x?IUi@QgfN?GOKM>nCvy%=P4rE7}Fd zPY|q@l=g4M{LD2=1B7rKW{wCnE{FxXy<P8Lh5*ZlW5huxTC&ydViK%jh!eI$sSy1= zQz}EU#MxrEAu<8h@9<@D-jr3xcK2`3p;X*>(vLlT{L_M^*yS=$y$V)76OH(@Hz*H1 zVgxihblO9gC}jj=U6?eNaP2DgL&<t<P1-K^Umq-9@Bi3!o8H&^W@lecE#IHlXRDeF zH2{{HznQZZtWhBKO)ZF!%$~mXD@9}#3;c>n;Bf<KS|V4pu?eCfS<`26gqm=rjYg+} zbGMV@&{Y#B<;cV<PjC&EOet2z9MA}t3@jry=>k44eoKLL2l#;T5eyS|Aox{#RctOL z6A<`Jjr$-lH}R)6UHDj}*g0vG0W#Qe7C<PQGzNd7quKGyVtCw0T19H4JSSIMNr4+I zj-X#2k5xP6_a2yWwp(~!{pHDca|qL7&N;s27jT@|{G5<Gq&PECjqdj#KLgGfp>dZo zkWfCtYSJ`xAamini;C$9h?Ebq5%lgJSyi$u0!YeumgYQKtgJ-}oW|;-2IeUs8^B1V z;SsKIAKMO|oRVvTqQ4Xv`sY48X4PrEO*37dbl}?2dfnyqi_xD=F?z8oul`?nCtBv* zabiWQM2d)Bpaz{tdxH)Oommb(*FW=TwI)#=>v9(m%re~!JNAmi6uaTs2t5iU&C1Va zG%sHeZPhTgD!~<au=O)j%QmG5WPt6N<dgGCd_A(N6FOoO0@TK{`wmBJBuP2AhQ2z| zCuH#Qsb1sVCc&?-0B4-oRKUBwcRblYnu^&0V&d^k#o-d1?o#ui#V;&S7pplS=q>8K zU1#J@*npEei(D-qb}X@H$b_YGE??n0$a$(bvHYWRW#S;RsN#TeYTxfvKfqX?UwmEP z*Sar!?spI=%&quH?iCHfdH-i21=iZkn#9>Ff18kBQ7Kkd#kujBF{dc<_F$QxoFSYQ z=Mu$eQ1V`!l@<1tuTVe9ib~mEOLiSN@(-#}!cy>Oc#s!&z9YK1O?$_+O4h4=Xw;#; z>6Ia(-;f@fYE#@zCkh7=T0paTkEWXJ=^HL|54+so*A#?4qka9W>;r!*%9TE+Wr3bx zaU%X9Hl>yTGBZz8iiqt}Ccd~^Tuso#S+Ib!!}o}Skpo+@o<vB+Ayug%40tao7;x53 zR!dwm_7tvab+tI461sH_gt@=GVqj?+?-}At-w`SD;c5jGQVp5JApoN0r-SQ%X^uxu zdz}n^zA&C)3su#2t_~R@zUDG4h50n2s^&?}Cqy^(qQ;8i=)7zy*+Zmke=M=4PWw3w zne(O7_fPuuH3J)xd@x6Qd<Y2!AP^d0s`~`rJ1n=^$QYbYu6s2&TuCwu(d2}(bqqP_ zdtCp>Q==8E%=<<z7y){-5Y4TUKBbv?=)ET|#jT9QeXT-HkmncGeL$Zm!ADTtj~8n^ zB$Kyh)TddMBc`mE(}p1@8_+-3X!r+7i1A(7(IOvTmsqG(OhD^p+=<uENC~(@D=Ldg zC}?#Ryxj@W^w0Nc;+a{0#abpk0}X`2)7NqYKN}nq?Y}>4djR$ca=V2^buA+l|F*=q zbjcor{jk+qmx4McSHQRzmuka+hn@wA-RiH&Hcy$7O@7XCc`~f-Gjp>AiWP6I9^Oo~ z`c`<vL3xG5P_f@HzAQlf9UUDKs5*Lk)(hggTDrDT@Y~%S`KcM=u}+3$GI$=Wj+C1* zRCiO>IDVVm!vIQGJ^AadD7*|*+-`%7Ovb<`DLZ9@F^n2^0>FqUkDH34zCsU{lFZg; z7Mo569sGMgzJu_7KZHqj<hGYv?Y@f|@pGr;^~JH{)(AQn=+*elcVFEtCs;IoV%d(M zh}7o(pcAf7b`oRH+pUfb94cumI=;>odwE+W>Ud;u)qo+P32?0HSUuIWhDZv|bHv(g zSa3=HET)_Dtzv)0wxg%+2OW_K&5}%bBw+Vd=dKAD7PU~qBj#n2hv1ZM8m!9AbiQ<X z9G}jb!$Kcd3IS&MNQ{Pc>?s*3B;i#XrT`w3uu7C<vQsk4R)g&AHPlVGPrH0BoL)&C z66{YgBf#~*w2VeD^+b||=hDCGPGbW*95QyFYGBVn16TWD{J0FMo2bnK8!*Gc;eM#d zPTYUg!9{4x`U{F(EBghst&zQL#*!Y68gVBrpVyqe`Dtn_%uUSMlNK`=^zXM+86ut! z33!Vaai^E*)F$Z1AGOJ<*J-8DGoIzwpdJ;XMu0*-)rMqyt{ELgg+}i@g<He8mpl1( zJuBs#xpwB`(Vgj?1X)fPy>J?yM7#0`w>KUn+wm>$r<-HhU5ZN5`xBBj^t8WZrTJuA zF)`AN2Tsc$Cd?9G9#F7P$zcPWu$_@2T7qad7Aj~uJ(g>gwA9BMW*Q8;+U{Gvlz2Gn zHGsN5s4q&9-5M|U<HJtP`G`E>*9f2UuhY}lEPn<zkH;B<i~7B+A`p(Dv4i%*O%&&L z=)2n~jVS&*_kT_Ksi*(K7}hXg6N+)|wQigLiv1HH{6=M_d;I9s%i0_~V*p>bgq*iS zz!4n19x~joeg_x;OB=aLIeASpiXUD9p#`{?p8T5!SDmYyFi;4f|6?Q@XBKsHm;y6M z$y(#q94RX}XGod?BboV3__9;M%M)FA#pY(TAWm)9Q!_<okEJz@R`PFz82<ihDIO&y zygXgb3|FjSANl1qvHr6@iVg>l{ny}+6F?^(DEL}90(4?gEZ2#E%QA%3HcFw8BORb7 zR9i-8$B|SBYe@FE2!-)odnAD4`R9>uX%8ux7I9j)E@IV$(awYs=Vuq={YuIrYh4Fk zT1v%LLzEM8=GMdlgo0XwI9;epFT+GZOBsbg%>cv?&xUlnlst+|0^qm44-pGL=ke?9 z_AcOc|1~n3J~2}Dx|9T(Om_vhJPqK0&izBnM4rlCv|^!#ieb@H`16Bezb8ENBx+~6 zteXf<U)|(cBG(9^_nXRx2G-=35nklreQR6Lu8Z9QF=W*yfKS-UQ*~s#1p-ddiJ<*_ z&KANY4|;hMe~eXHCa&|Jz;8&co34L;O8<T@F(fF=Pb!T_b3T#cDwPd`ZeYUJSGa+k zlB2rnYb$CL@z3D!<3sjWvft(fYt$BpCSwQO!2B1K$(sY*+>j((S&+c2ok`EIuzSY| zEqs(6ULXO=1t|p9+Gcy?3h=*k?m5h-k=cK*&LYY2W=sGHCFuDI=LE^Feh4ePE~bRx z!0QsinBe~8_O3~5a`BX#Zs><yURK|Tl9C?T&1NC+wKfv&A+K4da;hkU=Mm-c!c)=B zCjPH3?5fV{EYL1N7-iYk+f7uT_3^;fXWRQnt>*)>EMbdmswj@^i=~$D{)-nUAfm^O z$?C(Q`EJ0=;8)U^bNK~4G5!qxO|hi`LeVK_i_|)2DxS(qC2nQwzT4zZoIX7VOlego zT_39a`b)j2^FQZRIA@vQ@;&)YHSoGBL$RGZRHLV`8!<-U|Hsuib!VbQSv0n7+qP}n zw$1utCl%YalZtKIwpp>d#_gx>UvM7x*<-Ca_anKVPb7IwJLuelBzq>y*C2U?O@LoM z2QAmwBG5Oe_$!=bYHHL=C=rEuJ#rwRyWFOr{HGwnH2hIynr@#bGBC|=4+2$WvI%b} zQb@%ENmK!6S{BLCa62ZLF$7v&H)yA+!^Q!=)p747v?OHp(A(O1GcYJ}JH~DbvWQsT zn6hIw_t(7_UOQD4u)QU8M#cyJnT_+_us3u@rnbm(blyE7Tzr`v4m`dkbov#5b5X!d zsH!yNm^-F6IGaX0{Rw2M7&CuIz+95y_gjz7iB6ylbIkT!Ys*xmXz<C9qxg*+M$4Z3 z%tvrnfNj_Ldn?j{^FYT;*}l6{{TzZdM}Xu0mo1Vy@V%At9E{x+W%#I65~4kVsVtCZ zs6MnHCoWpk+4{^-HJsidE>1MSH44)^*N&r|3lC_tXWAFo);9tDx&kzE#2>BqP_x(1 z?`f5<^P8$Yb4TFy3<jbQO|$p&!?Vsn5b*qma~61AlWK2OB<=~QjViZ$km|+3fnb&9 zn|@mF9|W&*rESnW-Pb=y7u&GK;&c(B??3J!WV;C;40-Ul3KHT}i4zEz_u~TDydz`~ z=dId&)@bbLK#$>^+MD12>$>)uRfI$8%^?cI2-%iRXgFOb4tAS2@K5At&zj#Qpeu8X zh+0b_Uc(JnL!BgJwi`3$4YEvl8pe4&y$+fzW?P3U*mjaVTb$0`UA6HXq^oBi9a-wR zl8Co0DgrjtJMNsiQ@#cy;3)Y7k0Ym+^WS-c6bpqZ1p;fXXG1L<gB}_&Q_e@fPf<8o z_qT)?-08r0R>|1hT*;(6rMC{gQjyL`z3qTOA57aXD?5BCl~&_{)5QJjUmatwwT|;g zFJRNDh**ziNvBqD9x*Dvg{Wg=!Mql3(3#8g&Q&2K5KsL1DrW`=7&Dd&aA_pE(?c<; z_X=l%zc!PRdNB15oeyOtw#fUhU>!u3;v;97p|)QO`Av9S!A7NTPJZs2BuVNa+=AOz z(C>eo?l#Q|{-m$l9c4<i0bkcGbWC-!4vps#ovhoTQ)W%eaU5~ft{y4XpHCHw-vtnY z6BIRk<U;jT6wL$hZ*r>bYuWE09qN)Xhu|t337Rr0NOt#YS9KZHLi<I+gF_>LpGd=C zp}D1n3hk1CP0*pxF^b)WN-MER=*;yd?!}NFskX2oG^TF7)T?AL?N?3>xN(XdH8SV) zGuOma63!+m+{_6C0}EKFP8hX2piQIdC9$u!Xv<~9IHmxwVa!rZHynZjzJo^52d((w zG5*^q>djS6R(3Wtgb>H~LlmPhpKLT8a|1>gv{_RFf!W|k?t`T@PeI;>U>+D}Q;zv( z;SYohEM3ObMiOIP<VfBq4dx2nl*GRv6L7n7jM1Wx!58-R9mrUS!{5o_rQ|=$ZzY1= zm$~Ff4R8RR`zTlPU4-SS%v)~m?0xC2|GJFLLStqagxf}6Fx#g+1Mo7E?dui_xh^Kj zEcC({gb8o%A)*mAuB8hM2+$l;KRv#Mq(&L*&s~DHu8i`Lkz>S$q+spIhm&Ux8=J|e zA2+33^*eAuC55BJ98Gc*RZ+kN;SpQq`5^d0Tr_}sEn`_vPBhx(0ju`5Kz8~Te!S(O z!}<t>sZSDy8ja|oatsie7Qs_{Q8C6!wcD_@vdSmkfHj+jizc4s1EH-eKEf;<aCBVp zsC-{7=~Cp&9nr8b*~zl6M6*Qih`+f?6j#CeLP4e<crkwW@i(hR$kWPbgt+%Tpt7K{ z1BU=C(vYdRuXo`e-3b!HcOZfgRAq<(!F%H8b6{W^l`<6hhEPb~_<;v$K?EL<TD66M zLuh<<SqL`dSHThFMO^LF;@lW~EyKc_Lf`010HaB`QF0wI9a@8R6BdC>zN;81`Fu!| zgcz-o60DqsATwdB@4?xoj0_z`&$3so8z?{~>w7Mb5^vu?D9Zq!F{!{5^r<jNAuU*) z0BBxd;gMCQ^=j4ps#hG*8L~WyUATdf@}j70ol;q(A6Zq7yy9;NXrN_kD>r9T#rjB( zI942%-C%w4ad5oa0^t38bjk$r3d%3~3d$W?jXp#5AUz%-vC?k@>&@vV7^VOhvJ$X0 z2f3Ud)p&vxLyA*kL+PLn3!G|LwJy576W~}UzgZOPTicq#TH6Gj%7g86Hm_b|jZyBF z?*s08U0=PeXuX^bOl(p#UDP;@*G6yF!_@iktNgjEF8~Akodm2Yl%|vw19`{l22z!i zE?4Yq{k@8F_JiOo5b5AGUqEa3u?GO01{-rkyNLUvq*90XgLJL?ij7wa5Bh!faIX{M zEJ0s_7Ja~ylFETX->TxK!p>NFVNq#o(!4#J`z>BJYQwc~GNB~q%GtnY4ubS-mhIJA zB@<|S7$3gWFuBCp!&cv#JYDH>c{?+6wz^S$&7)ZG3U(Z-D<kK!co9puDhE&m`C?oH zs_=JmGbmVtZeRE)zLf5r;wBH-aND7Tu;@3Y_}L|-{H9e7l$*5O9QmWJdedy17$BeK znb@QXThz5>iW(QIa%Kx;$c~UMkFj#HszD>xgqpd-fHYW5>OoDCPU+)qrDKy|pik|m z2}4NJmT|Mx=OrO?Ji*-?u>fcXn@S1^dEfZ_b57<40Lplj$nfqGYI2iol4En|)J4cX znXlZQZt3p&<-pr%o}>dI>B`_aQhwgXY<LDcBIw6Yg*-g;Q^9xAsFf1j;gmJG4~#wc zrM{B`O<waTfdOPU8LIIc-T)$+C2wT)^<{9BLF!l2aW3lZ=M=Z@XFfpBJq?RcFsIUo zjmuCjaYgb{R?-}?63vC_f>}tgMIE)%yf0(}GPmSD65;Bk1kU9#P-)Y4Qe8w!^Dn%x zht2Jl`?=T=-qC?Ow7`6mffFA?<;riFzq-1UH$)^dT%9)pbjH5l<Cb~17T|f_48A91 z#mC;{(X#bR!2D4!=I#KXu*0K*G1Ldb?go21+m((uXj=0;dK#_j_^-24o7&Tp=&;bj z3F1SSs7CSDs;DO(-@@C(HOw$djDq@+W-7Md)H|1GU2ls4UvfLy;iQS8r|{*n&!#!; z29}w#w&c-0!lO|NlB_iPUqTHk&zB!N;9!$AEz5}vZQdCSPyK+)6~|B0@XBSR_Xwc! z!DP$Ox>1N&q0ozJUfRs&j+`LVf>C5Yy}iwOF@KvIa95@c6HNDfDJFS<=vqaaW~9r0 zm{BRlrVk?hFOMKJueO*XOtU{WjAojI+m*j!RV`WnSl{d>ZsKOvd^y<M>w>7~*R{+# zKM1bL5aGHCxI+OlAufCyOX7rMV<$a&-5w<{FI?zgh-J28Db2Pj4#Oq$mG%b*W*KIh zQ59X_-S2OBLIEd4wOoy9zARbme?k!tGI+!=?Deaji{H=W#)ujNwZ&)#H!L^@`e8@x z(-z3YgTh=PCu*o-+8HFno6cnm*Q}$d`IGGS%gLsh3CIEL&mf?|C+k4fNcBEKS@@V+ zwBdUwW8Bk=`FVhU_>QM%({siLQRaI7wz)t_^-mzpbwQ@%8!60Y8Oxs{e1lU3&d<ue z6l4C=p7lfo?mWvy%BvQt4TE*#^&L+4Nm+=|PEac;LzR!!Y6O$wvA#L+U7vBTYfezE zn6A_5Jv~5jB=9%dzX~{y>JIE>1FaOMp2qeg2uYyc-)k?fO5Sb*x2{n|M=-1+p(K2b z`W2H`R1+ZRy{}QKrs2?=X-&n2Df%Rt#CtOV*MjNEV#=#<1m95}8umX&9ItN^*+9O5 zJw=Rkrl+E<UMhZ#YSF+((W~rjeP}1o2CE1&K*0c9sgLRTDA2XN`1{)6K~jA&fdj2e zNfbmaNTqr<C%#h7*Cqp-Lg)Gqx<50QuV=A3aKjnj1eWP(Q3;V1x2Zuk_2*AAM#Gf% z(Cje+VKbP&NZwZ?*l-2p4pARdVE<6NeD~|b<GCjk^c;3(lX3ij{oiFI3CB6_zr0B( z&aeam3J3@dC+)5s7%d5@2`p*X85JO(w8??eeW_`5J{WHfkNQzAR^dXf+FAQ#QEFG_ zqEsOT2QD2!9RwS|y3ni0DIgV4JmTS&0G5w?wz`eDEtPl_%yk!aM!H;#J}XBf!b?x% zY-3y6ZUyC-T<SjUada;-(RfUcZ86DWNG9E=b*D;OOi{Q@pAz--lk!u-U;}7KI}mHL zP=QsZJ+P=GJ&w&;OiSg26uhr(ryKXxQXsT#B_nKGkagKT=xH|4g62{%xP!px*D_e< z6AWw}z!Q1qm6Bkm4a(3qcIKJ4;LM)<V)W<=ip@dc<SE-5V%t`h?+yZ89FDuT*1Qa2 zSJaC-8N%t-qBCL($tb~Y{{n=5GT^l8AiV+=d&Z_>J`f4<uESy*DGcT2Q-j3`tG%2l zgscr#Ps|gRAECd=vvF?7vJAWwi>k$`?YE)iRL|9@;YSO7<*w3k;s_CWd;KVNeH=de z-(P<H5D0Af_sB|-vWbDea(HU2iylg{Y>$t8*5rnQF|GD@$Op+p2?A~fzn`hsPbzEL z6`H2AmObKufSI^+puVD1#yMDNfisO~E0a)+z=b=HM=sjQ9jkRbYPG7yKP*OPJXK)0 zDWjNUNEw_~SecVHx*><=+i-$dVo8Q;U1kE%v#tl)P2=&XX>fc@ssx%jWhUvRO!(4M z&H$#U`40AYazKP{6@Wdn!Otm$d>rvY^4~@`Y2)18*aA2sQEe>!OklODbB$4pnQCf* z+MJRae>e*?poHS1lMUC6;B$rV&CKS&2M*!-A1OLJ=zYSL3PEl<z{pyIjm?qNCGYKA z%5AsY>R?Mdd^Gd_HPrNRP4%aam}pvjPTtcg{z!97NQ5hjascN0QMcH%M@+xI`-eD0 z%x}1uN#g08dT3*kEao>l23|cZmZaW`zzfFj-|mB<PSEYe27&cV&&=QtqA!tvxuoKX z1@XH3sK*I;4}X@pDv;#;wE?O4lN1|3K^gL*h)c_AF!(H_C+Cw1p_F;lcdy=|zL%s) z{~+E%hF?CasQ@#?-M)fl%tC)DNHhGy4ob}}&XKE7^H*zf7cz$2O#G7(S>V_-ng>-J z>(?EqQLv}^P1=bblrD?QH5Rs>lJ|&_!|5|dGL5}*neB{Jvi=`wj^SaGpr&>8TC6*) zF)RL#^~Hq9Kr{jrK0H@@2gmTOj-3r?j@psj@Hf1Q7{I6PcAE5CnIHjyz>fdB+UM!b z;GmyW-v&tI@K#%XVY#>~)m|D&-8B#pT?=*wB8DO6T&uZ}!37#atefbuuz6r?-Q9P% z9eH7Jlu{!l0}nWy&6xYFHh>aI6?mR<B36*nF0S!8TZqKcbDi>%Z1b~?JuGLCj*ON? zZ&MTj0<dc3V~|)jCDoCKfy|2dn(J@!g6n7*<8oP${NyR<xS=rX@LIBq1c+_@Kq(Dh zObO)$!3-D2O>T|BdqsWZ$a2Hk>-@)8TF$9p(Wjm=FGSC)WlwtK9lOyHyxUMQTB7)x z5NgCuIM<q`U?j4Fs%gg|Xs0T1f<;X{SfYKG0O-<QafkLPftU6XaiD)h1hB26O?TqK zf&P+&#;^^!AwvL7(2xJt9#W84_n3liRee~fYM21Yp0a85fF%N#SdEcaaB1qnu0<Bl z{oTbQqWtv}mxX(lZ=nVL)V-ca>>~7G@#JCK_V&z?(Kz6gzglmWGlYagaGj>*rd4wQ z13<K;TnuRoTF=9Bbmrm^^B$xrMN3H&PuGLcB9KTIj!!a3$>WupZ=op+${j3q=HYTS zRISklRS(;o`J2YwsNS#78hKK2mfGQRD$htg`g6~q8u3HCe@JP^WKh>D^WGh|Cb^=x zD<PuPr+4c7=?4kQz2GdyIzWvZej7c`2Y?uK*WFFo?4Py(<t3K>#&lagKjGUF*=O)d znR4+xdGD>yWy<-Sw7bILc=R*o;SHaL`OtHP9xMhNuXWinY=(NnM|AXmYwzvuDV0ms zP!8`js_gAI(<R8!r-7tw5VlRY(6rhhB%zCu@jsoaYRw3nhHV7z0KZpI(zHXz0vhq& zJtZd!5^v{?H{P_u#Sd5`6oQbs8+aNgJj!W5Ch9Y>9EILE!0@tr8d_RLXOHM>nb@5^ zlkYrybFi<h4;;1|#HQehDXV*9QEBF_cHBgR&6Bg@mr=Co9z&NAO&cFHh9$(*u?S33 zJCK0+XnL#yPm$0z^cJ)`SfG<P{=GlpIz-S5{6>b$LN|wz?N#VhT8l`8kW4o+hWOh? zv&~psZl2cy50CwArOYVV@wN_~X(&9SM$OKT{<;bjrP3_C7UE1!->f;-mK0U#bt{rN zv~$fh^;l8NX!30ez3HVw87D%Apo1cJ^!&PJbciJosQvHQyJo+BvlrY9Krc)jn&T)% zwv|p{-m@<b9;k}h;f0wdVhpkLJeK~^`+Ss9wrPi7A3Ei*lp%_bSGTeS5VISc@>hA^ zbK`RIWLMJu-U|2E86uSeh)VN-$O!Op5~vI^Yj&6~gY&1U^Up3cua-$V&ODU&z-i^u z>|4>3vsnVm?c>Pd&bC1xz?tg1<ydWP9#RwUDq=A}*zIVle&Lnvl&-k*)lOT{#a9*T zEfz8<;S&ON+8np2nGl7rpHXQPk18RG38%3h`TPqLGL2f~dNJ0w6fYCDgD|t7Ti!Tx z#7AN}>Qa&D`!H<ehP89L`Jx|W{;s5EKWAQVUn1<#RHe&F;}&9%Ht3zviCpvS+;*VB zv5UgUKL4l}`2T(({Ge)m7XRh;7)kIxv;fD$|6+S0wzW8YE|7PeC41K_ZPO-&crI4@ zpn!bx4GT#Ob(N??hUeZF-r}27OUw6vD>!q**r02#3NBcGNqwUJ`L;qab2N(ab@IF- zDQbf3=dyUMighp%R_qePB8BB8Nvul^sxCd5Pm}U_=?jhokA9Vpx}`ToOv)3$*ME!P zBCj1eK`-)b(#rmCt-#>KwIT_1@ssZxF=&F#DG9&adWsZEgUnI#Hcgh|x_&BcPL$b1 zs(9*Hf?#?D-BBG&YzuU3RBN?j7WAZ5Fy~gYLM2-ogw!CF^76bDrmf^;E>H+Vb`-Z; z;^aTGiI&axMBR7w&dE77oB}eSlv}Ff31p`;huU|-1lZKR_E-l^+5wO({Vbf7GZuJ) zrjr%jRli4@+A1PIz|6;qi0Fx^`tta_f3o;_bDm%*Fzs0P_VgL}$0H9zkp4!1aYHum z1aYz~dNXU7vZqb=0nt-2`tsb0Whlfix_DJT?Xx68_S!4?cruoG<240fOU_Zz+8%YI zzM_*?h6Ix<B&9nEn{nIn1~Og3a&f(l`&Q{@%m|w@v^vq;nyca-<EVrpCSx+#B16W< zlh(Px+sg7jz?$ILzEd_>dS^K~R)JuE^Ce#T+dGD+>q$3PpoxW%#b9__+K<<~2xeX4 zgpbvS)tvfGtnix_U$G3JC>jzoTKU{gzEglprI<DN5I+vtE}WeK3NF{KP4CaUB44OU zvfmt|j({5t@9o-R^b7T{ip854C8I}!OFm)12G^jtfvszuFqSKvoZFK1884Xty(>nd zSQ>1#dPaY4rA8OmH8(2f$d3glRxhZU&zTRYE6MegH8d3N6wVF+O3p%AL;YHrfOIMd z?j{9&_LN-{F9G}@OePhBK$mJeLR>JxO{kkuZOl05IcD?%LN;CCr>fCOw>`{iYzZ)h z&5@af<!>D$8YinpR+N|~unG|aIXzeOEFz2Oe$e#nl#^)+^kb_fwvC<I!hUhxSSRnz zt_e1zA;eewW!?)wV(o>{?{iO?u`rbPIFx=#k1*{42YS)=Ir+N;PHe;aUe*~?jfH)z z$bG~8+kMCzvyx?~`hDK+g?-!e^07mP|3%~s+=iT$18PUT)-q%Jf+SL!NkfAm)i%{J zg?@J(qJ+2Vx5+&H-NJ&Bhy5!PO2&k~1kpbv!EWvtmpl&8Z0X!uIZ+V)Ddjav@0spV zA-@5l7qIU~n-CihC9cA3C~DMAvWT|qMA<X8;ITz~!=nk?ICNRiAz|aX#xmRIA@#jL ztl6;q#{$%<D!mZMff02}NXlZ2Y&wuWCX<M;3NEr=i{z?OA_G`P@6;TWEr0<E$CrK_ z_AXDTRB#c1-E@Qn;$H5OyBrvyvR1DJI`&0e6(B%+zPg4-xKC8zd1Z+Ok<l;Jng%NM zX<WMEAWDqe>m5q4{)LY!l!$F@p2@kCPZsH?K<5xDZkOfk?J^Oh<{HjoWlfL)(6Y3$ zorZ8+!WJOyGRQ_zmd3%yDVVcia1+=q(A^3|KHmhyLUcbODx}NMh)U@<z3C;?yco>r zF4TgnE3>UpT_-Oq-OQO)s}(*_4CAPICwcHS4Fi2GCi+pTy`z`%B&zJ34~-Zc>neuN zsp(&MEreb?4&lqsO1AWBNSR9``m3v7w+gW~DQ-3l^oHMiUNxC@4ipAT5UVm+zE%H8 zoGS#l{n9Aa()fddQ)QtzGW;8ZK`<X}#NEU0mW8H$Lxu%ed_gDFIH+*gSe^IuSeZn8 zVsAiSkH65EQ}J(;z_O|iB_V4|$A{A4c(J%KLjF=()R7QAQH#Dx`p}bM2E)2|^G7NT zceb~M$!Ipm^~G1*usLPf+>7c}q-Md^-y>K+WJpPY#kFYKNN}!{{z`Z!7fQZ<kl$Wn z3N1L?N7LyYG6_jSb+fqAlC~UiLO)QwvN3U{82RpCm;ZBSa8r~^JH@(ocaVYH3H-EJ z&qPSsu)}d?rb5~_JvaNicA8FI#hj8-;dFJOCcRrfQ3NqdwnaD&25hi>h}83eQM(*q zT#MOI7S5?Y<@ArtZ{rrde)+Y$t?!BfZ|9G<1H<2+7S7JzzOK`PTY7YP1P%m{FyxJI z&=_&S1cCLK6#OcL{QW3#Ei2N6FKmxXE?kywU|Q09*<VJYE4JYHFlvE!yO|G=8^5rB zD>8AMKLz7++S;T)GP=ApHC@F!CZO&ClEBeHk{AE_&)89rwrDu<HiW&rs07e!m`B1> z%O|9rut=BQElZ)fMK?Gw-6A)!cUZ&1s>rQxoud`l7e}-T44WgdQIh$-5p1Q3BCr%7 zDhr8#>;IaQQzgi1{7QA;Q4+<c>&@GJ3@;lt>3JPHh5deY^Zs%2bbow>N-@;~EKoyl zi#*Z9xU>T^ptbTBxa7$gT2BQnu7Rc*^w+l<OIyuZ&bgRYVva+XRitROcGMCP5t~Iu z7-eZt=NtSRd$te3xs=VjOn<^3<d01~Q|9jzkGG$;xphh0N%>6_i2pKCw>X=DRoYDL z%C@_mpM7<^?+B_{RvZjc?$^5kkk)X_=QcGc8zcz`@I7<zEimDKbV+?TeIATxJKF1K zfX3o?f(Pc~EA%##(Y-Yv;ZgsENRG~si`#<qpg5vIy<oxR`LtQO3|sCKtM}WVuHS8b zN0^$EZ`%W;H71@&n`ZGwzCIp}iGuBLd~61uSR%mU2PQXU%~~KM^3gf~42%%u<yG|K zQj%C+E+BC*MSVuNCt3gB2(=d+pfxBc&_NI&y*#9?4lE<+!AVT%c*ZsO?q`MeTJFdX z5yjDIxjFBfZt!#ML^y<ja$(5}y~j9Q9xA+)wqX1WM^z5TeLFu!yR2+eFgw3*0ux=E zpa)SHhk#J#nRs|E`=6NrQC2Np%EovCm7~O@jd3rk5mZ^V#d5;C9X_ayw5M_mk5Wyl zD;?w6c+2M@8x^Qyde;@;(Bs<2SurqaWK^+l7~K(1$@p%{%Mqw+<r_#>zLPV*%r3?3 z1_B?XXA@H5`s218$E-Uv(U;acZFxGjS|ZQ{_eb=4#PwN8)4BWs%3O7Iw|Rq1*$d}s zr62jydtSYlN<Za-av{E?EWEW!p5R0)ed5cj&Os%Y4T2x%ha~)Xv-r!dY+UNUdnLkg zXfg@58!pbM%XG}Qr(JNy8w77ca0FCh^$~8M26hV&^&&cv_vvv?+TjGG0}l7v@p@*@ z7Dr)u7}zwqc%~Ep-fXE=Caee!m9&0$w~lA!c(0GysTQ)T&9{LNWUlBh$wtAekGmwg zIUdXkvC^5lve~MJathL1+3yN|<7a}wc~oIQAG>Prv#SCL&3WU5IxmLmZXc`*p3=yl z1tbScWd+9CI}MYd?v-+wrAJHX<TL?TttvRIXE<Rt(+H0M5DU)^MS;M{6Dwai{$;IE zFc=!9vXBhDv9RE9)?hfur+BMVIPHmTj$|w=G9B*rd@4>D)qmPlcv}1#NlUXI+ehHj z_mhY7!+MUh3c>5JIC9O@IH~X5l{aYu4W0D#TDutP#y}a7*@Wor0))58@`wqML?u&z z)7O{~>Y51PzOy~2zLDY~R)qa-cU0=M$py191grc2eoMK6;bW=N)0yUw7k@HPc7{Zp zT5!F$EfADRKWR>WiCS$r^6+}*#}X;k+b`zE0dYQGP}jyr$gkt_Mz8W~gudGJ;3zE& zWzp>K|MSYrdyX%$5&;1zxB~&Dkz4?yq!FbOf~T#e5W*!XgyI6Obw)L$Wu8@d&@sru zNl1|PK=RFMCx5=)*%^_N&1q^oc{H_A0yA<mZgPLgzc57=8g$Fi@@pP<j87D5STk#K zs<&&ecJCakRJo_1H`(Rbwk)M+XxC(_Oh1v(Heah^u=1-c$`^fWB~KHoYb?p@uxW2t zEz><!dM2eUvdseiH26Sn)8wp}7nJhQI_&vxXbHV&H>sV&3F191KIvdS_GFfTf7Vsj zfRxAH$h*7NxfiTht6%bHT-wnCs&MtsXr}4AP6V?0v!f+6!Q%uAkC!K1l4hfSE$WuB z&*TD+UNnYCS7860x{$zxXPb3(bh$HDKJoTOY=RJ*a?b&5qd7Bz&^_l;4`K9<xKB?k z!w8KTLH${%dO%=;zpR-=H);)u>_0*hw`s8ENQncUvgzDWFp^N`upQy^$RzwqKWVvn zYFzH9&PV;4XtM6IZrtLVp3K6<+VG>Zebg-4<$O`^xS_9f0T)GYDy4hW=_7gw(BSS3 zMTX8eIUWYgT3Vi#VPcL~Epl3tKE+X({puByU?!ZY*JW4fEq;?&g`1AC%b$M2izm5l zwG~V5;${fop$xcn%LHZp0;=K+SoAAq;Oq<Hzkve#oy5Br+ZeTae#J4Yj!JQr7+^U; zl2zjUteAs#PIG4SN}PMFEf-xQ*PGO+WybmK)A0^Ce_^GUGybU2=+h}vSNC`xo7Bc} zdwo0j%g4<v;O(CIdH3!Imc2>l&Mv!xZddc7Po#0Ick13nRi(Z`)>kaAegd)e`|sZn zLV-D6+LQP0bGKH0-!Gv}iW(=4OZ%n}dJ=zz^L=do%L`exh&1c&C65}+wA0(29ytSi z!!8~`_u8&?$};OB_*yS@SzmECfeSm**;u_N++lBlWpId87TKUd9VCggy0yk-$ctQI z0tP6>ZSip7mYGSrxBBi}DsJVy=Y_rYnY3cR;MUsf2i|_rS^O_D`*?S2sFs3W@BDO0 z{1N^OFTL$0I2meIRG>peiI8KsXMsPgu1(hf51lzXWvjc_w$THlo;jeqmIwi+>fc*V zg#vxizki`N@gIVZwF(y(zH%bTfO=uCUh>&O4DQ#TQZQBpuR<JF{aqo+ZXOBvrC{}A z04yQd)=($u@zjYM<8%|5gmJ+>HatKaoLTPjo|VhK6fmM{!>2(s$w?bu2QPikEf??v zkS5G1R!r<=Z0xFYcxrvtkobb7{4~4$V7=FbE`KZ~mE$;Q*AwS5aGQ<@zP4$DAnRs} z*A`n1;}kh_=E;Lqfqal1Q)1@$91)3FSDAH4;y$Y>Ua02Nd+{L=@g}?WvQ<R8VbX%7 zPSfA{K}H9k!NX);t=HDn7AC<R*<6AL+#K@RE0J(N0^5b4x##Cj5~KrpsB9XE*s!bt zJy1OBhA)0@s(^NiPRa!O2ZEKpaQ(hd$1N}(fEX?vDe#|YX-Hg}`-VE}#@G5ZT<^tW zzeqPHJi}SLC8F%ugo3%aSv_ale1s6wubr15n%>*cTQn3M*<qtyu*pgm?-3UPyqWw0 zn#6*Wybxsrj!`W9Jw?h+?^!$VwP4h7&Vw8T6d+v3ADt@jHmJ-*=71yCp7SWLticm- zGy9z36Wa)r+=dm_$9e3ZkapgM!5!J8O2BN>0-{kU+-DZl&>~bhDbK#R)HBi7+Pp$7 zfW2zVKZ&s}x6Q~-MO(jQgBGa^FcAWx5OUz?Q^>cd))Eqj3nPka36l=0>F)xmUK*z` zW4swI-|Q{+0bw;lLgEJ@VA$$VHcqbz7LBI?+eQ=||F#1%n8(T%CoaEFe{->WMezs> z3<H2p#v(l(I!6z01h`3T+VC+<Fw-eY0c!=Nz=9nGF}n^SH)Pl^2ARhL#QWNUi|B&Y zK!MKT1Ies~Gtj64!Ww+(vQy|qGK_Ww#klfZhch!Qm&vdmR6~laa{?TMjBr^%TXWZ{ z(2R7o9oS5qRF81<qOCC1MsUH#ebP!Q9l^8&?QGHPK=eA;a8j9=tZ*6cGGfvaIz)+Y z;jmx%p_d?_XagWlE^$@>Ft!yCOM|$uvDO^vfHG!JIA_iyI?3BhI$hQ|;2#{9mr27} z1;*;k*tf&HC87azvA*$dy`qBaqyTaMht<W$`YLan*@-8Q`ptJ5Fi-gI7t*38PB|H$ zmN9Tx|C8@PfTh-v_FdPXr8k}oEyOdLIMc%)BBT5Hbk0zi>Z1`r0K%JXjL;D(SJ|}k z5kJzO4L}HhKpa!n$?AR<ivTeJy)-KeEGHnil(qD`pAK(mMXxUm$bLZ$*M5_6L4K#c z^HP4{di)ID?nb@=3}HsN(zkZ4gJ$&{egtnqUe(eyia#I}#zV6^Bd7+<MDv3s{<%=$ zv{Dc2G-v>wD(wPbfiO}#RzSQ@UM0Ks?DGw_g!Qkn3ewgK8Z^TRJ}kz<k_GP;Iwu*0 z#`VT9tgn#*K1_A9Kr>iU|4Y1o&(vCi;-i!VAH}G6;b+Z^Nibl^ZUIk-APggr)x)W9 z+w+FHXd2<hfDhbu6m3<w3;1dLxq`#2sZ6HyxadmI59}Q9lF^0};P^Z)qgMTruMOgt zl3!12GzGTB5Gh5T?;$iXg($k!yl{TqwgZA&H$qZ>0VInE_eNdZ;0ARE!k0`xN26Bu z<L>SA{rozeW%!S*?dAUmiwE;02?bgLHwqcs9@nG0>>5e;ljas1dy|0N_$ZI{J$q=Z z^r0|AMq~g|pNw(W4;6t?r<nXKkoagh#TQM+>OR%Grf!4`fYFr#YB=TXK!NI+PamrT zU-0^e;;Gh@&MwN~l}|!#8dGY`?Zu%X{NosYh`As^<9r}(S%?s~ZRUq9;9ntQ6^)n< zrlOmd%9}tlj?w~f+*c0L?$#;Sa*_-F5~&@Yq;dm-x`ZA724H^=PR9p;JwE2~rE2o^ zi|dK5oB-<`N;6v!v8Sh?$6M=TxGsd3yl>vWZLT^R#x0${y>+@mxVwD6KRk`!;}&uH zbG7$?{<g!C5}2Fjl=?KwBp6GE7{DS5Ip_nWXUx3T0YykN=U`nrMtquA56R9ibZLmF z75xNA&=<G}vzSE_P_#?K=Y-uE!9YBUe1t5}vczCU+p;6YqbiY!p5XT_lCIjrn{>LJ z;l2@$MANN)qcYWXOT=Kjc$Z|Mv3(|_&k%%lL3SNAp&eUB^86N0KM=(_0s}fLmel|% z!xtK}ya;bR3-;95RZ)xF^KuCn_;VchbN2{1o<Y=(RTW#PSvm6F3^eEe;}cDx3_^b+ zq)srF4`ObY4_0M`*f5xKUP_(7c*?iQ{XN~_^a*>Vc?L~?iC=mgmy@{PoF7WMJ43_c z71$1nKdHO+b>??~o00MFI}$3u`?`pWAPX8K6(+?tyL;eZYt}^0v<5eIUrjNHt$zfd zZHh`5dX$`~+2aW~YK=N)wHuFp*$f6B`LNejS)=R%?$fnzP+X!0Q4#mQHpcJxW^ePP z<$rt3t3xtG<&){k`#EK2kJ%r`7YJ#AO$t0$Ht!Hv5-Odc|5yc#T#kDrkF0*X{F2$V zteTcV&ss(stbipKN>&JrGdjb}B<%r^Y%D;)O}dkgIG9D0d=GyL^O#b}4j~>3n*gU$ z<>Y835$iBkGgUp&2}!QS%r}fpHpj-F0!uJ3!Gu1WaCa_u;Q<wTV8RRrN;J!sctNK_ zxT{jqB|_|QOCSL!oP`~~SxN}*GM*#hZinGry}qRacl=BCAE8VMh+T+H3|s(AJuj`I zU!en~6z4&LH}|7xfMSWp*RhU=T<q~loc>^2=|)y$<h~%0U(=Hcych_+gGq3~K2R&4 zcHAn#c2dfgub02lYwlm%pn4E;`4AWO)t<4S;o)e{FB<6Ds%#ou`!sff@pINov^H7R ztd^P<^F}(-0}&BM78^wBv6uiuR>N+=1u<)epO>L1^1viZZBA%=9L3O?hE_H2n3#@B zk&w@r`uBPDJpwWeZt*9_cBY5@0#HklM?PlYc~H&%U)s6Cy+_t-<XHGp9`!H#8%|^d zO8y`p7^e})5Z8yea9W|t?sG9#k_Ah)Dgvt_pHbzyn(O!`_ZpAHP}Bfr#LfUkq6!ne zNTvM2Co|P!Na?<*NC6Nw2%(#KpU#;sN)+yY(+2zD^pTUkYhN3nx9APzaX0_u4?~0N zlP}O`9yRJWvJdu@sRH3ab};8;<QCb^RLI0t7D_iJQ#Z*2${LHP`#?ueCgbAaQ`+-= z5xPu67GQ1jtL(68RTL0a_m}~{28m8Z>6cW7?fn}f!0MPs|2&?Eq$G<*p01LBzD)X4 zWEJ0r>+_G$s=mm4!htaH2Dx(vUl|wFLYV}JbiCwzeg_8z=19fZD(C=s8I1tv@I_FC zSyDQf^>UaA;Hl?Vt{b^4UM?Y?cK%K$Mvw378^*V-3L>%1QUJij%j)W2Mgf-{;!j2T z@5k!48tfdDZ+JJJR_XF-OQwkdQnRDqO@qt`p9ONp*tBL+{X-%pT`9C0^=+uIEp{5* z(4EK&dMu}7@FsR4cu5*f<{pr6%8q?hV72*=itK%)&95hU&D7^h=mgu0kHo^Yo9~l$ zx|tAv`y`C$7OwzIr*(*Mr_XLksb$<G$5v4uJdM-*+(3&1Aw<2mxJ~(n3Jgl&Cb>|m zx(H#$>b7i?^F_{fvBi)YRm^a`beAWt#UX!jO?&Z!K7<IxU1fJQZy6YN34Yw(sfh1Y zb+%npNDx9^M|M%AZzpMZ2u>?vl6w{-CR|*b)U*#x9Sr~=xyaI!e-#er31Bv&;`j{p z4RZCHl~3^10T3e=`yS3h9`&dFfQMiAK@<p%lomj!kF1h6W7eG5Bol&hl32i<2{%cf z1cF_yLDotO)v*)rR!K#$Y(oN&j_MJdh!Y40pU6FMCuH-Y&NOAise*U6p$za*@a)r; z`7+_<EJy$k_O>oBo<yaYuXa(2KMO)|8!EKf0WVW@XE6w$Iau`?g9|I!rMMOle~Y*w zv?keG;=<&BX&t~TkvplOMbr-bVa>4$Irp2?<OHvIP8IK@di_^!QQkdN-t=Iw*&(C* zj_`{YaR6CxKz1Nia#<tA)+3&YB_oRw2@)(c3K#$iulh@1{~YG&3i0b%(>Xf*S*=Yl z3RsJaj+GC5(bbVVh4fQitk!|=`ZnrxW(qzk!ry!-p#}0qF!nNdnZv0$A=pap93|@! zU$Up-5T{ukZG&Ehf9Z3}Q9%7)EX8!I-#hV@SzR@Hx$mmlAMI4t&z$=gN_=;<HK7>< zr?>#74tFeQq8MbUJPfTI)c52k&*d5`IH$oQ6#I%p1F=k+keV&tgmy|Z+9u!L8ysgX z&%olGN)>qSB>71%-o9XOzZ$08TZC=M-@oW~`*gAch@lid(~V6#+u}T}$RQm!)9-OU z0YlR>?}P){{jrCs__0eSQ~cCfe`%%8uj>J{_5|Ctn8<Jo1sysr#j2@pPU5^&H?Xx% zQ#n|M){lo|FSBN(Ll+_F{2SZetwmRFeDnYC%+SJnbf0Fk3DwHZeN+;&>Nv~v7gbtm z<76}~yX(JthH+@+QDy8k3FGX=0$4{oje;@OQT1rmxGwP|Fh9xM=|Q40F?0>@(j)+j zk=r3LW@_VsgFH0U#C8?xzxEnj0f88U2KhA9y69x6WB_nh97pYrv?_LqDnCK^yH=S$ zHVGEo9LU^Lz$+t7&5fBg)rolJ>YH5;p08;~mW(NXC!O3*4ZiigbX*dC>h9fabrA2G z&2@g45zh7wu~QIXiAC14XW}(>4wwP#8U8h<a|qHESu3X-1@D-YI>Ju_Ax;$d1nsuZ zk**+$Hw%6|u>wSH_R-uKkFyg#Yp_o`wZ^d{&EXL_8CKH=o0d!Sjo2;yhc8ZbAUpZZ zhBfTUQbFZ6#}4|2#g~%TN6<80GgRdeInL@2ki)tmCA3TS{uK9FX?4$AF)#zBie1c9 z&8FMtr!Fq#TNoPbl49Z3eD=JuNLW>^n61dsRquDvf2Qi`P^kddm7onXXYV}KxID&v z+2cavd}A4IGybq={(+JPj6IQ7hGL8djt7{?+T(Kt{mw|6XAfB<7#Oyw?$zHcClH{( z*?W=W5s%*}bg?+Z{l<o0+X8@hUZ>U);Hx=i7WmxeqV#+&bBX3qg@|c3Iwsg??M85E z@{xG(iRH4cWAg&-YmhE#N%vQ|$b$kBS2`f%O;8id##yp^f`2#FI-@sT)wR%MN7&^c zw!(m0uq$tuqQ?=0)DV%W{-BSPWSW<>lt2YP(}a<vUEK!q^Qg?~($WK#x=Z6wP_y@u zA(Y_GCcwTZTx3}tr~*6RFE)DOjn{fZ)&&u1L8m6_%7NX`E}t*nj@~mVH`H`jM^7QE zYeX5afe`0;!kW?V7<r<KQX+w4MDn@`X$04TMO26dPVC6VC)Q&*J6K*>@kJ5P3n5ng zZFl{FL3i)2X>sBY3ETkn6&vPs0<xI~zRy@bu!xZelR34LBf5R^a6ioDRJ2@6>-<HL z?|0!Bq@SNy(k*IOi`MNJVrs0_zI<+G+nOadpIJpJOo%{nZEGs8^KT+G3v65Y1eHD% z=N#TL2IjE11vhYgw^Vbre}2QexS?-f%dT2m8!|AyxH+MHary(=+)gupRiyOiW*5?5 zjYF(Ep5jebk8UM#FIe5ff$gUTGq{)c=1gQ<(hNoca7od(r?<|})id+X$pe+s2Bwg$ zXV%Q1c^I=Alv`b4;mL$*Ab3Vlk&!~$GBNKp?=?vmoKE^VU;C{2?}Xxn0Y4fVhw2*1 zDZSTLG}Z>H$9RBIPig+hFy;}$sgc;r->h()O>6MR${T^9XuvUdN?n&J$5Z_Hc{Y>K zj&CjG{X!R;caNS#Q%HtiPaT3PU%RcZu3><Wap!>1U#&Nz7wokDlPE56l9h@F_QKlH zhj%M%Lj!T>8L?kat-s~K!LrW3k_gK<!L1y1?XWWgwe|o$SjYvILfj!srD?X0q18?W zcpCTqu!4BTt(W!>b+aGWuG5P1{gMJ8_6xY-?ubie)6e+2`1gky=LGd%7@a=jnuS0p zt;b>djUp4q(?I(bfGV>kM*8FTnbbJ4@EN>J_jY&U&itpqr|bS}ltTE+emn7$+m;6E z@}3@Z<#YhYuZ%8tQ#q`{CS@yXzBv}L0a5w{ir1Y^1Y#}iPLRAW>{}Fg168lp5#_l7 z<|h3TEvTH~)4tXo>b=aH3iDC)H3{Pup9qM}@+v3(X1?HKD2KZtQB7Y^`Hw@1EoZ|c zDxghdt_^9@`{A%O8546!Hwh&5jNo^NaCmBLL=M0l|EC>f=qH{S(+c}C4q-M;IMT@X z8*)xKZX5mmYKJ@pS^*-SnluVsq10zNcJ6(#e3Ze&AFr@O%2BTZQ{JR*fkD)-P}Ug? z&fH2@+_{dvc9)z);Uw;@^T_tJdFN!$63NdQJl>}EH)^hLy|vC0Zy-xm2=Zu^`sf(O z-5>yHk*N%qoEFP9_(BZrG_xQSo;^|)t3-D>@Kj$u2y_(q#(dw9T3w$w#0@TV{)mD! zoP=Qgp70QtP|ChPw-!TmhkX=vEJ#TeoZFCaV$-VS_@-xEO`H?z`X<Uh=|-K5p4$vd zAr{zX^cFZ8A`Nx4<U_!SnbcuIbSTQ}$}3=Y2m0v4>(y~IRDu?rzys}FaN|0t9|Fk4 zim}xTl56S+r9p=iZOX<}sv2NGA^!I|IXw0AsHG9)TLzvBuSJM^s35v9CQL{<DtJTQ z;<kAo1v(IXMR1kec%6FLXA0QJJ2(vI_-&bb6P)|x{$EoR)R^N5Dwq;v;*fm(;~5}@ zeg2Lch807o_m~+{UD5&Ov8THW0eg>|OTDG@V$EKs8;7#{266FwE7G4xnqU;<!oA<T zxgIMZ+_Pc3Y%^2As&S-s=h%amnq~0Ft)7L5Fz<k=s%@~qV=NWcnQJqFfY3nljf(kO zYj!QI)0jZ$n#R9AkalUnmLDOP-vbb*gLs8cRj}CN%Q&?UuB%3DF#|hw9)h@Wr2Ckk z=%PlcSix$cMNw9HQ^|WnaHBd2r=pf1R8uaJ?&LVev2FIox4-cfoMXl(B*A40OR1%3 z8#5DHZv+D^@zE3fK}Y5R4aGN_$*c@**BOWFZ-?^svc^NyhzSH7D$ad4`vcep=Pz*) zTN~;SMUD*4X;SQ`GbA2_74)-2LKD8;!Jj9%*t>QT@#Y`nUew1!E(PW^6#OY|S!(Tv zs7q`y5FPx{kA^>CKJmtLXat{JH*L_5H(w@j$@6A^n4*4E0&?H*CK$sPWn{XKVPPHF z+_%V5u6O$q`LiDOI)AHLSqz96;sRbJGKL`jp!bOZrZm2%;z`x;q9KpgOIF7P&%M=7 zQB9xFH~@Bumlr3$UUy^Y2SE{$?B_~2sFG@PkQ`G8q=Qqfz5h;&y2&n)=GB7b4OWD6 z41XGFHu4zd00*0~V806gL4bc09JC@#*~78up1ml6R)!t<N1k}@c>^j6u?iBPICA15 zozVJTQ*S#DbY=1#SD;|AlB7PjNZBLs^k~q<>Tk9X+aZh)2db=0X`F<{`H_@P_9mAs z)`-LGf59rMW6ayKvbQi?W|DXWg*;=#=<v%My$5f-kNwfv2o&TQ0>g~u&vCh(YGEwO z;r7wB>dl6tS5X|{P690PXB!zDQL3ekj`g^>2oY4J>HurN7&a<=he6r3_@B1;mo8LA zdvSbcUuL<rf+w`e-LeF*xSh<M((|C<{MLCPrE^?;5uOTpA-}aUNhOK&ihoMua_(L} zDy*$2<8P-7QMRM!ap}a$+)w#^H+DU;SGy|iX6HtxauF<dT?Aks66;V2n=n)a@V_6w z!gJNvV@5p?R*3V<9iAjr?09G_fj<8#PXU_=|NT5}+Bgc@r!}2{{+F&zn5k+SzZ2BY z6a2bXQq7PJE*R?BergoyOwA_{YOT<B!;~Np5~stNKxA#$5ka0Q5$j=67~(SWaUW}I zEdZ8&#feJLA_CC$qWw_<UWJ}u2X8Fvyv1%xF{C1UBuZ9hCW+lY2*Hd1S6p8^6ndSx zbAf;I`IamX;ak}ljOHtv*B2~&p6j&<dW*oJ${gHOZsNKd_KDcB5WNKhF~466ef7+& z{o3|eK2=8{|HXfO%4||gT=C@vpP0_DLe{;T2JSNPvk1@_W9mr75&>8-`(oVGDOaMx zF?(XtR3vn16g<VKggy;$T~fdV;>;KiS~=Xd*65Xm`<^d-MBbwW1xkY)kjvoBip#Dn z2O86zd3jko2uHqpy|UJ_$tA?NyO~skMAkS~bVV<}=z@-C2TOWc1DlWiizp8<+4J$O zI`0<9(g7JlroPYOEBAqzS}bkM0jy=&SC5cW9iDTPC@wWs)!CLV^33b6T3xe-o&BCp zw!W0=QI^Ua`l3!@<_BIsq-~&{))JGav|YzECtBSG_YC={PMWFqwUyM95Yss_wHVxY zGdKZ39$M%Ih9pmsHN-mQkvEGIe6FjhccSEhTmV<YNIliDx6%xKo}C@3aT+ePH&tRl z2~2;%aL0nXd=K=tiIbrlxRORk$2|0}ntsfQ1mE#>_5;UY&|&5pwq9z=N4PGGF32eH zd^O=iRspB6=^AFY4-i;RnyW(IJ917SV&y2$tqC%Ce}wOoFnm)cugjSFy%-2dtc=JO z6o3RJ)5mF^oEIG3Y+sy>cEQZ29QsToMrmQ+RkQwED<}dfOwe(NE#JtD<P*!+<mwNH zwZ3?cf~70`r$f?r$jHoAlLh%<Yw^;|-XsITAGQnvdN5)2dRk3(du=Uho(DpK4r@0C z6)zUz)It6M21lk0<GG^l7zUBid;;@9I6!)b=BlXa8%u$6k<sCx8Q62oRNx7%UN0W3 zaU_q1OCXe3-0qxxs|v60jZ6%@=*+pE@*WxVgMT7b*Hs2f0W7)a@BL+1A0lgO7f}}B zS2@qQ$Y2d05`)mQX!4E_%gHi5HvrKn(cJ@R&x#PRw52Q$R8u=E8>MMz+sA;ZJ7A)r zTRPe~QWbNolCEuPx~(xS&yCzMAouQITVaadU=td98le@vI{EA>C86psg*cg$mnxIm zd5gk22Gem_LkHa9cZRZy+rC=EQ?OD6=u)NT=z5>+NWC*TcmtKydDw06B2N%*ES3Lp zATKr{)8XuKtFP_oMia`<yM8UmDZp2t?Q=j&onne}%`lWuFM6O1+v98hPg2OZyh2T& zS@XE0+a~6f*&=x<l;wHP*FV7>zhmd2!LP2c-G7v57cb%d^RcY~)rR^LwXKT7@Rek$ zoeGK%({V9Ch)>nxok~&MX@{iM^V08Zpnm)6%qD&H1m)4bPK4A+c;K^E3{agF?4QUq z=}5O1bbO2d*C@jY7#Hcc{Rs|USOy*ii`+_h7CTa2V*zX$)Hr0t2=*Djs$h`ani@rC z0OPNA&Nomm3n#l+!3j*Gs>oTxS6s1IS+ls^&+FIK=%c^a_b-kL0I6Sm{5_v<**&QN zy$lqM<Q=9ny;w=UV`bm@p#bJ12Z$84yxy*eyq8+;7}!$Z#=Qyx35pmOn1BGLhiU~f z+T!Ub<2*=I+i88w6_`J`Y&ym6hh<Q6q8(;oPz;LPQ%{sFkZHh+kNzcR^XVXsXi1V1 za+1~VIW}3wAc->{D43=E{|s$$xq|rZ2pVVa*Kqft%F_kTN)zrGyMXmgQ-4S+qx#d6 zl}ItyOzWN)rqB2OvE=7BL#_T@2y8z?@jA-g=5)7T+n791jlxRx@@iz-V?m}_Y9@u8 zsJ9<!XVFZbYVwcU$T!+|vCud7H>=2Alu2ZyTbAv+TwX{g!wW52H>L(Y!+a+yCNIVQ z{f<r)@4qe;6CL#25iO2plwXM2Ru*kfx5<uk4{}0wC_NJjUzp^u6W<n95vM;2v5hIa zI{3X7YJl{TQnO(VuWm>u*9fQGqkfy!-?a`%)@O9L%u4z><rqe9-7WDuzqEO?e*eD< z0!<ku*8i)Hvv8<xLjeZ@0)kCKhWwA@X`(741^?fZ_lnhd5dQ%`$pKwIlm9dX!ZiO~ z9QX(Phy%{TVFHUFx$$NmIS1tvj~vxlNO*?DWqCGaS5U{7=E$X8Tm}$x&d{xg97Z>D zd_(4aihWZ*gzqi<cw{`Q)->I>7jMiqqd_agq8V|132)66T>4Oyyw%3x(;f75Tm9zt z9;Qu6`crMruU<Gi?#r-0Tqn9(kIGtgsITmjzXkZyOkEj<siMq2)`-HM6t|Iv`15*q zZ%8<?nkNYO#LJ=Dpx=eBhl3fI@j36E8XR5qXMD#ZPY$I+(9?*Mo3+uYNJOwPJP2_) z%gUBorgbJ3b9D)N0B;v`4f-Fh&M7<-E?Bd%ZQHh!j%{^p+fKgNwr$(CZQFJ_nt#r@ znz^p~{p_lGYb^#h*`Bq##YUTpfD}_VCnsfgRq4kHb7}nF+05IRb41mF#tOia<U?%@ zHj^@BUegM604&?TKo_p8rXNR8C(6IoeMtGg{BV@ooCJ5`<d~aC4t_JO#lgN#YN-__ zGaQt07JW&yMO6}U40U5;(b<0}2}P%-7d>(^)p&?IQXdTCBXyXBaeJ*b|1()^#y!LK zaNHBY&Ks>b+vbzfH!bpT&({ISmFe+UOhA>tJ|>Ka)|`M3)#eZ!%EtJ0;kr&+Hm~eQ zOO=qxC6D`sno5p;4J}*!8i~)2=Z<ukjOGQ^qYD>=GmaDF7FkgkV%ky+fby*^#Vqw| zDLMeljLk%b$7B+U`}1vJ=IEx`g`UqCy~f+kVV@e~69<v6TR~dHq(p$M;4dfVPre0I zva8WGZYj1A@;M8U+n=U`JYhaAymM}({Cy<@AozC<WNpl7x}@M%c5WuI07%X3XcKj= z8>UBDv{A6^+{qqzW$t%WFtqk5r@_db$YS%et)}ekoIKosY*S~iBlVj^b@SA$@k=eB z;ad<AVVfx~II!kj*=vAv+g#!DSE1E0853t!zV6s2k8UhD>$K6b!xSPJ2SU!0l}1#M ziFj^O88T0I2wTBo*(^xodM{d!Nn>~643Io3N&wSnbfg0jS38MLqB<2mOJIRK{M@$1 z+h8yiXP?C|yVpUEcdHkDG>?kRh}={+zQ(U~;-ULM4ITzVw>h90!n?lLI<J|OE{0Il z2r}M$pM12!1SQf$$8|O=>mRC=dSA;#V3N=xev{AnCvW@x&4Vj#ST1sl`8_5X<K`(8 z0Lya2b?85<YiTXEHN4PG08^@sCt_wJ+{YF!bW5PeL1#FFUpy}yMqi6QTpMRwJ$)G_ z{)$b#xV*_F6BwWzd#^N;{QeBA+-yTfOVEdyIF6K-@@@uykq4YG|8M<CfhC*6g_sCf zu?&Dg354tzc90UU9Mjfcdc3x0qfkhzJ__{2mc<#d8^>z^CwWOGI?<Ls$pFfltjm0{ zDk9Edmpb9FUy{C(x%bvFFTIn?HXB&*U*pjxD>~AB+b@7l(Jct93k@yH1X0U5O3GD7 zNju}(;zcCt&FtZ0aMa9+Z5~5*7;BZEtk2eO*TX#cZGMY_Q;V`~zms#9lI<h?bF6+= zc}1l<J&WgxOHk7K<n*8mep^<1vy~k4XxQhUKrARVZm7~~=FYZXPmntkHY=iYB{uYd z5+s9Y?LR<hTc!?iS17G<a+X;5SbtH_m!xChhJGiGgI|~TNUMuQG90iwSg-=sCpnQe z6)Z`<S9~U`ie$Rzy_5t9tc~A}2vP_DlmX#$s9akcf`|$fT6}#CK?hs~#E1XbKaV(~ z!#}!C(bXTdHUP$=^-i;dsJlq;72|?*agb$*?jN8qVQ`fS%o?pQ3a4DDp2WGOz$Gh- z%>s*>9<T>%e8UF%ALCr;64LwWus9B(P%==)pDeN!9d_tSdA^{{D=2CaYUf7cUoy-a zOH|Dd5?<4~T{KTBZiR%cmK-Lx#XQ#%1|I7NWd7cyLn}?_I(D?M=;O)Lr%6IBUqYy= z%LxEyLL&;lc8HVUedH>+J4h@U8FPgqBgr~6m6wgZ0P{bk$-!QOd@}*B7E`3rEHg@H zn6=J<kj)&HSYJrox!}P%IlaEjk?%rNZ9sGCU^U++Y(FD17>_cRaUwKbFLxR1pC<9% z$3eQxa@sGq9;{B!jj^jbTCB2L>a(&&yH>!iHW`-xw7ZwkJl=yiQY6pr1Fhsxttz9B zVmY?6p3oJK374Ky7e3mLhNjEl7;pk`t5<;Snb}Us`HS__Yn?7*|K74AT183dtE%w* zilgupM3%}`hCfGu!!C>Yl}5#&38pUdk=l&GP$!e+AjV+o4Ouz-DAJ*0lb#$kLJc65 zG@%6Ov_eyuOi6>(F>hU&ipi;QSj<2!ZM0)N+%W6GYp&`${gMeyw>@lD~?<Hg(Bl z5Md{klOw<3HS(=+q!z)0dYDa~abLUJ7CrOl{TTZvnB{z6S$T<;K`f{y5`CZ--(nvg zy!<HP!IvU0n_^m9i&PRHY9DX_*#wY#M{~hdX=^US$nq6;`m>m@sO+Z!GdDrbtK|U! zY;E;4@Vj)X3Wyf|ljSz;RZ0zX%vLg?xv>`MYSnxH$FbS2Z7|hQwp|dCJVd%}0=B=v zE55uESW!Xl61Xa6-XVV%45p2BnIY~R3<wSInq{{Bh3X66Vyg=wDqXv7xC;=-TIPSP zTI*EmStS9bwso?FKD`?qI}E6G%}%DWjX;1)aIv7r1(O!a*Nu;RuU^<yH6iu7^PGX3 zOP@&8C1tQkI!;OuoM{A!(<IkR<t5LX&t~q}bO^oxlJ@M~8LafLmD|66)s{2TxM1kn zD30}SlC!VR@j?yXYG3s#Dgq?Gf<?Ole;&PW5fyi&<lICf&z_etMP`(Is0_N-gwBS^ z<3~*FGC%v9_0Uzik`mmnkJQUx>OV;D5`TnL6hKUD<Q-#Y(*HGItd2%fVpS&dOwR5b z8}YY!fQaJUMW7R<PYrj|%Apa@tR)LPnOL%6fZ%ngh%Ye!q1D(bivd`-%iZRDq`unE z0_`xvB<vmgsHENd>BI*Adu#roFLki6z+#3-!{xTh-Iiqp8m0;KnO5#SC@QetL(~VK z_>KCzj7`OM%Io`Th+NJM8^p|k8l7Pm*>JyL))Ux`@{Z0Fq70vZ7OS>CwlVY$L62gp zER>l~WlnWQ1{6naqyey3U_O|#;kjh)^a2ieW-{0u(BtQN`8&ouz{;Tx23(JY{EXG- zdfXba+!!c4NG_sV;7fzpoFhy;tq7ojlGc)jz@PE)sPN>&`%wSV3yx@ddSaz&qK$O* zI-l}Tg+`CKNx5_ehtn~{LKY&FVzl3ko%rw+_7lcv5<@o;P6BL^h7$9kj+9sFf)<9< zpiEpD{q6UE-41qrXDav1x1QMa*&zxK^nJE)0P3r=tQvg<dZ)Suu?Gq~1g%42n+aEI zebJZ>3f`ftZ>=7Ghzu*XSDktggW>7)%LEF))~xs!aG;swxk&;R<*JA&Ijp;Sxcy*_ zBZ%a#NyTCq#|5CTv4H12tN^Y%K3%m<K0NGhjR2~_=!J%@LrM0e{mFM%`A@og<aKkh zMH)W@&m;&HYB0oz&CT-Bj($tWAPqtOt^tb>r<5z;7id~&)XXp{-p!!i(lbgGY_Hj* zh}nux!`w`xIVsoG!23^u5?aC~d@X4CMT8BRQ@nyc3mTw>$0R`7ihB?1`S@#stPUtL zWr{Ut5yT%7n{q=Mc1hD`{wf&YFAX62w5uB2vF`GWrf?y|SJ@_B{xIGbggn9?#;tGp zt%$*{M`mUzGJLl_n010@HL{&IR)mPC*bRtI%s@aACrWShj6V_4=*eF(4X$H?>I`si zg@3?#A_H)UAKnPL4~#A1jcyroKyIM^@|NtcBj2FAMalY_oy}OWx#uKu;*`(JsAtwN zzQMGVN^IY@EY}GYBiqUP;$#^Av3Lu=*(Bt<oZAzW@7Aw=FL5ZJU9ZR#q1vlQMN_Um zp<T<J<QSzY3&7~eca8DV8=2^5%0{5cnMKxhW(C|ABE^7nu;;R3XQHl(i9l~<spwmW zo`EQSF6=w*lp`zV3YTMDPe^%q3AK4Z8G%$DLa2Hwx(s^O@-IVEbNeUyL=3Si!@Bbf zdQ)B0iUF|M#%;hj<zDqv<IyKSJKM^RjaAOVyJs6N9HeqF0KjDJWq)<xe4+eHV@G|d z)&QVQci=VrqJMsJ;Z*H;F@hkxQ+}v-F=+k1e{M@7^&dF|`E{QaQ~T7GW|Dg2kQQ^| z_A#A0$MOa(`aE#eEOUtc3|MkaRSS7bHA6vwkV7?gfF%hlg5I>+y9H180JDX0VSTRU zM)0PdW)5q}V{c(=T}Fb%_#EQ2yyg#Ep*$S}Gd6OB6PDYCBs)T0=6wkW#kW}<d2x8A z#A-1xh>#<)##!4yH`>0lzxx005n|I_A2sOz^fiQf<*Wi|KtNEEX$Em%XleOrgeZU& z9b5ZtuEd|+zQ8gc2i~<*R@QahY{$+m>@8mA)d=5M_n;9Xq-B(?nHH_Z$i$r8fv>kJ znnV(6rPid3p~K(-(U~=)2EAMw<=DdW=GsnK)kIhAS^29ShANoWSu%6a45^6*k}Hh? zTm*F2ky^2*02%5_8a+C@w$_~T{0cz4&0kF43C&d}y2<ooxm7cKPV~mo4kz|B6SW<B znps$-orXfc>Pa5jb>^<w$It87Unx~^d(B+-4XxzDEs?Ctd}Cj=2fXufEv4Ixb#~XS zgLc@yJ%*{a!o!=~gU-fAlftBH;8o?e?)j-hHHLN_=G~JAlE}gl;kdu6?(P7=)DKOW zCyF<x2Fok_t!K5}6<2C_==xQ8lak7sECfGLM%NSlrpB{Q^EP{jk<Qas`?a%+i>;@n zKl<Ijjw8Kwue5H|CT&K4<siFfC(*lZvJx3p@5I?0X)0se6w%M>Ck+$hv}dPO=%6|1 zLoCzpA~PY<SmBM6gH-L4FG>KWCbdy^@ICp@&YYL7mC}0=bC_xtU_abvk;O`5Ppvgu z=v{UnLFL{bB8-!VvdyY^I8g4ttVk-Uc&}ybMY@rfKg(#dZ`R3hCAj3GolTVg4Y7#! zyOSG^xdiA)Y_)o^)gK4YhDbQN!3&OrMz54Qt9y=gH?O<sEpm`iX}STWjf#7b?s2Z( zh-C4h2+4>%xR<J&c+aRA1a%2@m%o;4gI+h65hrbx*BMF%8}Jo<m!3nv3sI?e9xJ+4 znfpNWzmPT><Xx>}JJ|27I!qq@qOSS9)XmZj&M*)~Q>*0qAyqQ-|1xNlCqMwWjb=E9 zu<@W)omzOa39>a}6Zim7An7AGf^Cx}l{rfu{qj77vB4Zu-PdvJ#d*W9{cngWf<ZWl zj_qRCJ#>R;A)z+DKEiMeIq8*o^bygOP>29aC9aQJDcFU7-Y&2u`N_pPpDWGhZhJrh z?gp!}?6IIj#c%m4PN5T4qmT=3zUq&c1JfJ-F*$0ayj91RSAzgAyYH{h!KZ}<C3qg+ z2SX(s5>endUPv#)8edq=*NKy<mRhE~xus!IBZd38si*Xi5P@FLjY;)%xr6zmyYz?~ z3jlbI&$4lO6klZ%Ajf@vqah0=TdUVRn~$AH-=|YW_JOjQ;N#pEZSiy4n`RqOm*;Xb zlrI*pfooz^@=5^Mmj8%~c%UyP;OTUalqh$7=k^9}G-V<&GWo(3Q&k#uvow<b!FZKq zENvkpo(Zv&F$|BozYsadbZ>qh3IZ%W=Mn)53u83kJhG>bRzM*c|5bAnBpT=PKElp= zRV0dGyc?ajJ_OPRvd(5Eh8ids$Vj7UoDli=NwBfoegF{e4ks$#>>4tOvlW_o<kjL9 zyDmM9;(@Ner?aD%qo-TimPWX^G!^yq)<$IsR+-MR>E*c3F4h9)p^Su^30DC7^Vu_K z((iLFIB4M0K41l5UoyFD?cTr_9p-o*a*Qvk>SEa``YE^=qiz0ym<6xpgoSu>t!^B* z4(DgoG6?7_Qpk5wNBNOFzTtwhGdz=El(gf%*-~bBLW$2DrKiME`j8H5zo4vV&J)n2 zF_hx8qGeGR=C9(6hA`zSZ-gfzzfoFRMJ)7>SyLGft(X+SV)4Jt6WDl!FVuiYHq%{W za9u->s?<s#s9DczRCbaWcnC-^$hT}WBsdSd<_0`_4cI82#2u?(n!_J%l6P;_W?o;| z5Q*EK)_bs2WGen+<!KrK^5U@M?J?q1UlNiL`qhdiH-MypFe8lTvm0J#;G%=*XlV>6 z^iKr(HS^toCy8RgNQI;|&Bgi}=Zy#EpGLL-7winYIQZJxeMgCYolg6XhzA8+a7vu9 zzXQNlhX1nvCl%^zshgJ#ARa7-A_apgqKT&)RKxNiuHHA0GU{nW7gs6djW1Ga?5%R2 zr-dYKH6K-<*V@V>YJV3!h*$WR8I%IF<=-%tTpnrLRhvLLHs)Tq^=b|FZww}z;O=$i z2Mdlr-t8-F?|1BOqi6h%ndmuGXe#K(Y#N}vjJJ7~K;{9D?|uBVz{-(&n;=-dJ)jNs zif0Xmv71i3RgKDvpm@<?hP!`<L*%%*Vu?_Nit9MIii9XEqwKNbqE0~VKuVMX2VqWy zt7SP$Tx0_|AB&UEajq7<iv?Fyu~;h+<zV8g5DeUrA<iq9@d(2#av;-kmJErZoecne z7Jv-yzTFJU%X()p=t+i$cXV0&4=VQk!%F651TM6q;aV1h@5lmU`!)lKF?=_CJ+Nne zKQn~kuO{Xif#9g=HWwe90Jfl<EKBiE|C+U1>szsB=Jf)iYN2*O9jJA0wVpJ>@-pQg zeszmna%W6-O@ne3cQ5&Dm+i6SJ}uxCLl)j(5icBwGRs`ziU78GNlYU&b`5<)2-V<s zY*anNQgF_w$vp)k6M_P~9z0!wNOoy3IcOZ>tWf>pD_P@6-eL>#bmdee)NIkUynl2O zjFRmJWeE-vTkq^xm=nrYP}g=?H_nm~h&xZnLwMP6ML;(G798xGZ-JNmmJ;y8ROP_> z;nJnAvpL7bwTM6bD0xIm2htDv4E)X{i2$tQ;IUsce?a|rLs`qQ8^i{^>NeaD^{{|A zq+V-j?z!{KTNbPshp-dETgUW*kT2ua5NB0CKk$2f)wgKizsz?P(qUfyXUp)i?3szB zZZzWtDVN1ztnx8$wgr)Tj4L22LhD|E{W*|IoP*u%T0BE@@{3~}Fk&0-ogS-=O%4Te zFqj%lKN1|6CgTB8{*gW@W?=5>p?5?F6Di_}tev_vX=Sl9s9s*(I_d@F(7F*M*jM4b zhBj~*d1Ew6)@^jx=nZAfJfC|&UDAoWPa^JbT-GyltRuVsY1t&?B?nMJNE~xFMIXIK zSBuE168H;6NjRWXOLs)@ArzHqjG-SW7VJOHgq0rjMUV*npg{;XngeR|p1uOHvz?W& zq>MoeOt1fA$If9AW=toI3->G4|3FmVjnf+H^dM=V<XkZjOtnE8_?Pk#)3}}vH#f*U z-++*QGC``k+8ay<svp2i>3@boWEJVJ_X<`69pVob9qO`#3}a<~C1Ej2lR#VL+C1U3 z4P1+|#f6@e3m2t`;m2lYmxv<G30#72Y0|=A{WtglTCn1{^`_&hYzB7&jytsMJy<13 z#u5Yx6uH0i`{V2D-zOo%+|t&Q`<gi>C$-sufI&H*-0R4nuM@!GBOO2BcTJFjNubZq z`-kEC{q^gMh5!5K`Np$+Vdmqvm~GPPL5lK>NhBpwZu3<wbE3J%Iwzrt10wme@~(e& z$nHECBST>WGnvYYIcxMsIbv?JQpaFcuncp@WKP;u$TT5`N@!kd!LhNB1G~cQxYCF) zzyv8ECD$nJh8Yl0p$czQ3sOw@RESNWzHdfF8Aq&UL*H8Px8yUk6wOMYIQ7721_a2< z|3gHVAj!xE*JwHe>~c{~geIxbJD&m$0^Sz8e?$*WseOpneg|zmu_Ab$BhlNxn74H3 zZrp_SWgseAjsov*mK1;XTnS_X@@Md}UeyR2>%B$X)h!^4gp{(*+=)Zp`8kE)g>>_` z6GA`Ia|2?UID9D92TG;G+#%fm;V2ICZmw3q&!8EJg+JNG7jl7-b>}&~m~{U{b~+lF zMewy6NIHrqt)V>5)0OT5><9~=p)_#C&Av<566;nenT*a0ZN+_0{2Yct?c)c*s%Szz zy@5zsX$t_3^I#9{jcUgw{i2oUQB*u4N!R!VBz7wpzyxNt53(>9=&IHB!mpt_h+slV zrYUr#PAXbdGHw~wY<#N?tNUDQ={fJTIC=|(862oRt#y5m)Yi{GAZxFvO<e+u>u`u* z*b0e=m+6~y(0ZOSbp&}{vzfX4M>*}3e6F%rvk*`qFkk|`f%)#v#Aq&<h@u2KCD<5H zM*?ZJu!U06O!hc{x3sC*^%qN;FcqrkouCtk$;V38uxd^v_4LH#XPVr<HC}kLq5g*8 z2$o%*jvDzd2#3BKMU!QOj}7zp`oD?{)Hf^#|E?o8`1LT}cQI@oS(T0Jh_tW<lMbm8 zW*I=>1UaN7aCqU&Gv)_aR8SKam0cp+!aJeZ$XK6M!RogaB>~^=YuGXn6hBcWcaeB8 zz%{oB0eP2sK&c4jC*AoQ?uP`^SW<|}4ymh0c>wN#P7qe3;4#iLVAH+8Q6e@0Qq)+C z9|vyZJ6$b!x{(i(P}LQN@&O-9m7??gFAHGHn6bnk1EH+t96n)H^)xkUUxv4CLUSy# zM}1K;jajd+7tnn9GmQ-8s_Kh?nTs?0Q7b6~Ws;5l95}zBH;iTC<XO)9qh$2TNr)eb zMnNa9?Yo~PU{V7#%P4}3Q9lb?A6kw>G@^d2Z6+?1y&1$+E#)OB#5`JT{fA1?9Ry%w z^lo4>RG7GD`tdUkcS4Q}i}0Ad)bX_BDbW+>Rd0bJEwR`8@fwqJ6yaQiA8dQe>{Dq^ z&gBLjmstIHn9vGiDR?L^9JcX3O_ACogG#yU8j(T@@{ews0zJosMVF5I;Vxs{YCRrJ zjVA?&RV{TxJu^xr@^wJtkb0fW5*`q(y~YI94#QNc_&qwI49Q>}Z2Y7$`4d<I^{jYS z=7A^sV~T{|4b>{Lk#u0NwHJhjT9y9uC{4Y?)B0NwOMF!~Y^8{kRN_7|{g=`LSQ+I{ zo&B!mhD)*uT}SVF+Qy%^3sSx9K<FYliY`(`><^Q{U4>)2Z01tvCvMd<fdl}=5)CU* z(ZL80>0bjd3k#L+*Vk7s7dnCHB{OtE4rkSn+I+nud=c+01Rdv)_LM}|hi$Io^M30G z_3QDtc1{8|RKfQC<UQN7Q7#@QkbfoybOlPx#Y)H-cT(!+p_ZGS=l^*G%INVp1-OmU zVerKFpS<ga7iz?p{;>qSPuc?7WCP|Af>?Vu6p2E(KzjVePOR92JRm)pTi1b~_EA~N zZBgbA7Y0PKR78e=zqjm<GY5yi8(?H<4amtthSH0i`cOw)Lq!cX=B;&*Gi5$Qhd<f1 z@*kli@IE1Y1flNyUs!a_Q^D;D_H;UuOjw;rt*k8+l-KX++oJBHz8L_yZ&Ka*RoIU5 z*HwEa|AlMrTfL;M6Bq6#gqBo*1YI*6|3RQ;2M<4w<a%PD&Tp#l{5oeh_T=-v%m7o~ z5t1K~-qP^d;xkag-+W!?+LgMiT~-x42L--NH8c>o)@tr;x9lS*PY&Mm_9NYg%2!pz zky%7<U&k@=qkmXic{~BS?0@!|fF<%6`ZmgLN4U!Pb^S*7?MDu|evaMAj}P?#J{XM_ z&R;29A)-?q3^2pz-g~{4-jCuHYw^?Yj1X#U;MBVixmJZn=0^G=+&g<fQwGfu8TQ^v z_>3ZnZ**R8l+;<om0?<h-O#RWvL#$Zo!<R20kaOtbVa<bJo*4gEYQ1-`0wGUwAXQv z?<Z0*(sTeVtF%{_u^6XFc|l<hyM)E!;B$Vx2Mt^O8!b^r4>oSEXH{2<k*!`%(4P^% zM}R(ypbsna-yk!KqGUGIE0bJGI01oJX6fuV%b^Ar%A-KbG)!;E!|Fzv+cr$~+cMWC zP`Fn{Y|Lpl><z#mnGT*ojXhq{!X1!^xETvJrfgTVjXul28+V7n81rM*k6Hg{0m{6h zSk}gmXdMCKB*w%s#^e#qse`)20mkG$ePVBYGIxC{XU5bvkza_?Ps^e07hcMkDC%%b z!4h+#Rhz?Loj-DH-)@I0SP(i(l$!rihmifK0-s--iB14np-*I;SOwXUx-M9#?ey|y z)Q@-Yq?i5n65|y-2|54ZAo%n+J6)piug_@LP5*UFEW4*umvW5Bv+-cRwwbP$Sp>#h z%Hr~2&*RCHs)I@D=9q~AXL}8#@gAhFwq_{@&!zR#KT(M+E)`fOL@Pej7tRM(@1I+5 zxFyK9M{5JB-jbWm@#^^pFwhRDNdv3OXnU7wGj>J3a8|i2mY<;t7MU=ISjrH<l_z-l zeBvjbNB@<Fbkqx+k@UF{P6tkxndvuEmoC9_o{~p@{MpR{(C_Ity!~xEdo|0?i_V8d zwU%%51DYYkzqlmTg?9`~)5vP7&Q1BDm%AEQmZt+8t)u+(aRlp=sC7;?4aUrAfY5(5 zWWWSFaVHE_Y?O@HuDkdfOl5d)ynn$&{Y2{85UK8V@l%aOvREqwzObXv;0+pZx`Yrr z1Y&8$a}=NM78qCR6pAmh6)Ezd-pB`6+>`SVzEvI=d~FYwl@-wrB3FvJ6w32Id}9)# zZ8-xxRI#58-&pb?=6rU{bI<Kv>w0&G;1H&G)F0vgJXN-j`2o5AC!k}^_z5D%!l`HV z#)~!1^^X;E$;*qF)Gz!M;0s^*5KG7L(d%Onm8V8uH@-|0rBmL6mi_C8g>hhcao!X; z5iryjYMJOfQclkZ-$pW3yjGV0Uoa9~q;v=9vaEz7^f!LZF1wPA%q~nZW%Bbl^<pNN za}p0~hg7E1UhC<7;PZiR|KXiG%m1ZyqcBkk4D%}PGCZAwkW^oN>FF@AxNYTTmRmjD zQayDY5;9h;Tc^j*Oy%jLxOl9w^*?1&3ocq9$fWN%8ZYp0;V6+03-=X4rCeVc!~Ovf zio72p*5>j(zW$5{WZk&_%nq>0@TIN$k#tn|_B)v#WuP^5c$U7QT>EHq*7QrmAYEK$ zs3GIa@n9|}P(|>`T#eEH)fZjugqF<jG^grc_xeP;08%EP4i&u)@Q8NHi<X$4T}F53 zu_>7+qbpzMX#t>-KKv4hR|}kH>f8X>?RG!w*FIq}rS9Xj-^C&CWxmsIn=S>QfRmAy z%0z8-5yl4@^}xkNb-+}c@odwQMgkfi9<Y^DYsFGpyxTJ9zvUh|REka~at<2nB6mm0 ze&!yK3&uW8p1ob#c30|#KTlA;`u^XMWW}`RL@opn&<`q5nlKLt>i<QmHkGV3LHth; zBS~jB>3`;xS1BvZiC{oLG>B=yqabK$idlrvO*ngHVE<FiK#O+``47vQgP%rp3H-m+ zr0XLLfHm#bp+9K!6G7zmu5N%Bj*ZhBIVM%3=$4hKl7#X@=YL8x^Uz{Z{%n&ikeUDu z4DLHj^K>J9*oq9rropepuO@-<=3Lw2bylS-o|H(|uFt(@n|2oOe;Sx8t2aJ>@z1V} z3!bNyDx-MhBc+`+OH8-V3soOVsXBOQX5Q%30M*{CXrEY`n!{JB4`isHzFH@-OCg^8 zA%!lLxZsl9e-TcG$`t<iWHw#>>gf2i_vQ{B=dtQt39DN5p9Uoh&u*wGE!9!$6lqbn zYR?g9*ZvuVNo&%SQfR$g9sFO-mjy?bsc9uzmt+%u8=uH$bSf)E9ud^}hi{2ht|cI} z)&It2N-3Uo1c7%}CY3nELp*<NW>ZU!er7W8Bt)n2Du;`y=LiC4&A%{yY#juBMO=gG zi~5ZkC#1xB;T&O3C~g0a+%v}~f`^)dqguWxPmpf}ZT@t>!z!BgLyzyC{8Lncg62KR z2Js#tCxZ!>WHn~n&BIc&5rjlCCLaL(_48xzTDhQfcXwx4W@O!OxTRc;{i`EWi*^Z_ zy_8B{iQJZ2MmW+6GJrDiyXQZW2&u>K|Hs~B$g)c*yv>R~B(JRnO`GlB0DOi=LzuO3 zOMRZ#txE%ItIp0H-op_AL9xE4s|z<Dhqe*Jy<V>MvMTWjUgn7pnPOXHWC|cRjB&R? z-fpmQc;u9Q11&#-FT5^{q(*7MbXQY`Jy;9!_-laps9XoK%$+d|4!l$fhNSFUpK&9a z;MfAQ!vI@t8CZ_kab(&9Q|lQ)9b^cMtRsSin@hJ7Wz}UO8WNIfE*fBP;d)%Cxksmp zVydHhUsI!-Sc4{q-<$PDj|p%UPm>cH&1JRzS3+O5uiK$U5oec@>VAws#hAnC7C%9r z24i&Ha0dicZ(!*m>?uX{imGvqOWI$KJ9Kafg!Fv~G$Db3qGAJNWi$tz)n?vLje*bB zgSC%vUD4#+V3;yLtL#{{+9<K4x|(imiU3L#+FISQDFGel!XYPyJONNuGOc|_hgno9 zxk@~9M0$aesm0aIa4tf<g#UyLquat%tdb2zJQ0&n{*OTWx`SUM^x%B!E&gv8VdE-M z<OJ*ko)V*14S6YWMaKwgENGYrZ9Mc{LP;=t0D1Un{vigU;{nH%ek)~ZgcB71zu-LI zqno9!GZ(kJ&SS?CwhCZ&UW1GIFf}-Jtd|~dyhf-4w&qOEZriV^`^tpF+|`@Rm~tSm zfiA8FqHbZcwo|@9ZdcE)ha{!|zcZ`65{UwAIgN}yf9UZuhN&GHWbU0bkkebw65T^> z{4(qUH&&S}Gci-}*P@}yEbqFx7S-yDs5#%1sK7|0!pVNl5*;AMf81J!RiF&}pJp7o z7ltH`Rf!{&N-TAAoZ~%5o7X1zO**jPha3zpRAMkm5dDvF)4Xe619wtlD=ulggYY>j zNl)rwF+pxdzHd{GY#%{K0nw}{f_x5@y57+dpw>nPoZ&F9U|_Rz^D3Qj<0v>&L0=rs z^$K+`#gZg##t#5L!^Kwd+uPB>LIJw%XCYtY2X-;}IKC>UWOW6kpCEPR2TWZxI^M)c ztt^iO%EO^)fMP|%U&`#F*~ha9gyZcss9hD&@^HX*KWlX_Ab#FuvI4*lQqTghckqbc zZdje9Wny9_&=jSd$!lXNnkt3u97c57IWJV54!K=(t^k~?^PsRA-mbIuwALx-AbAr# z@PoI2jUQC%72A0`Z?ip0=e4KD(?;+kcB2Q>1vjJNd}l>B)nz=$z)(?+&anf+EZi&{ z!fWQllVj#=HZI)1NC}nBq~ld~;KigIs41TIR7X*LYxZubu)ODo+j6`G*WI$m<n4sP zoR8{_gaISv96L)y9_RP}Y!q@8+KpmMEk$YdW#P>T>_F0g<pO++4oK0*##I{3GhlgP zRB?t}Kl(1wh_0VI&8FBQOTW)`zIi<!-<-zgWozgGJ%dM%w+d=@+x0Ij6;+8M4vkuo zVI*fRGa~3il<$!|OS4G2A~Yya5jK#hij9A@s{y)cR4tlTcl{vxHk_EX<?}BgfFZwf zq9{&0sCi4v5fWQ$y>Ij^5^I^0R*!wPIDg>Z&azQanQvJ&@1fo)=ge(9Oe`+;7HjP_ zyjP@94xm$Ww0eX;9zHO$I;_mC2T@|T@slv&VW8r@cY5-O<;rs4NtX(gmC+|J{U=&f z1OSLrD`s<hH70Z8WIcxOq-eWFa(x^$I5%e`59pH}kFSHE^c*LJ?JXA}0IZPL*~R@M zRCOl%4yy<?*~38xUZZOmL`wd``=!OZO;`cnMD}}&>v|Wj2p`cqIcQ$W@}GJ|u%R7f zHkDIFS#2))^|4bi^L*%lh`}h7Hq=sgMu0PDg;ne+2dV7k%tPXEDv~oH;N>9l`(&$c zR`Wn?3HP7hH0-s~8vG1nl*Bk}HyHp1Gj84JSYcrgGwwy{&Vo}H^IkWtLR?+p!SJu! zGvB15CJb444U8U&T2ynjJN5IXj<BXT5okvgsXhpl;q5|&VgZW$4_=fCXj8sw2Ed;* zIz);sj3!0hh0?X!-Gfq$)Bg*YvV_jMSi)k4^L;M#Q-0vnL-`S4SOVUleDkX?+_o9$ z+jo&N1NsMaQMIrFR0<Y}yhXUd0XUGvqe!q;_~qIjfkqYh{b0k?uC6AU`Mn+ZjgZUo z)fjZ^blLn(zu@N1d$^fDJ{)Xa5^&V5asJ-YcotZ7Da(sLO7q;V>6+f}T)hMuvGl9T zvyn3nOUgRFLApF)v!SW)8R|bsH>r$A1h=YqLIWjn9AduNjA`4?SV2&J^6_!t5H5!{ zCTut7{Nteaq;;@%h%cDiHooI>=;u2#=r4*`PX-wU1iEHh2v=|RI;Q5{iBaAxbr-|d z_y0Lun|7~5L6HBizqmL*Jm}=VZ%ra15D;0KkQ^{hQrsOPV9V}^1IhR8FC1EtOiQZU zPFv?aNW>Ko@ZxZN4g~C&B6^hD`nh_d6GQE9kBD?*?e0#eSAytlb_VOvK|EbJDT7dV z1cJ;Ta^Doj?HFEb0&t`e7PpT4_?e%Bf6(X`**;O4?Gxs;8SyzTBxVga^@_>_oxMGe z8Q<qHm(_(t00$AqzgQ)GW2(U}rX-3JMI?VSc4EYjHmc>w6Q(iU`iE&ScNH&&`8Hj6 zFwdGASUbOco%nP0cXs=c;D*k#slnDGC@(*~1<#D~q%lJLQ#-aJ(9IjR2~!Hs|66{b z_0QU{^<++)TNtbX`@kK4o4_@5j}t&XWP^mIhh^;C0`4maLU{2NYWv`zT_S#5Z|%$a zW<tf?+i3kT|1i9HgAx$XY_>>5#U+2$Yx@91ES=aLXYWqiJg-NG1YADvpU&b4cKqN_ z_aISWe&0Ta%tzw_(E}vb><(q>8LqYs%N~=g48y%H#=J>Q%%#B%`!maJ=ma$T)~A{x znb)3h07707?UYPBV@4{m(8NVu7cM@mZU0I=MSI!tDiVGgaZ+$f*sUG3C=aB^`W=^T z2+%8qRhb#6LT3T=N}!2qiF3l}hN#l*@F{Ey#W5=Tla$~X(rF<ebP%a(plK8?uv4Wg zbw}wnskjA!erobgEw16~<|xQQxTV@_jM_ux0F3j>?MY~bziXS|LCvD`Z2ej-jCEXI z1v+WY^rSZM!P6D-tD++(EHd-^2Zpx-vHHfGXz$j6C9h1h(PUqm2g|kEdXLY8y8M*P z4E0(S3YO;(%bkgATxOVB{+l#+^|h0e#Z`?PLA7@<o^iCT2LZVq_eCqLc6zY#oX@V@ z0IX?MKc^GKD1e`?9}}iJz;cco*32r4Y~`y83q!FL1Nlu>0GU({0!!|7^M`92L3%~o z-$#tCYA2EZrp{7-$sx$H-m2<0e@A%&Ug%Mz)o&WFm6)YOsCi~l{pI&lwB>gX&6Z1h zfvQB0e;HGi{Ge;iNSkGLe{n?j8kt-W;M)1u=B84o<TL!wMy8cTOMZ|Z&qyQh=|`_> z@uz%QlQ4Jz0+eRacq|N=cUF+j7hZk5@g(sd?QtjqYO+AD`q;>W!n5^Gb6VF{Xi|B6 z`Coag-Zr-F!_B;>;L@l68c=P=d#GTqK&Z>QhJSyC<j@ue2He?g>OklzuZ06t0pmES zC37G>o9D*1!z&#)IKni04%Qfr6a{0U;;=Xb$qpnto0Y6Ik|M@<`)1mgy_XgxMXEzA zzr1a47*=;>%GQB7)7Rg>C`&nAvo^joO&HBd6)W}f`|6j$uAvVVaB)Vt(@p3L*Qytn zyfAGKXd)fc?>x8!<jfz-RpP^RfXXb&g4#<06Lx{|TTXt54~XC89J2uPl#*KSZfi8t zxUF%pIVNR)pF;Stq85T(rfoGM*It*!c~B6}tkabNzf$|cWvgb3Uhs<5XiwJtG8dgO z%5NhJ2uA*8QtI{&x;$$Z->&!-;UH;(MOehmaeMz(34WZ(%T6VQs4b5T00}xRe{{TM zQIN+tS!Eo;(<c^lRZjCi%&Ppv%^3PIDP6qMI=x9F4QB13Q&kE+zHQtm!xeJt<2@un zuVm-X5LT(I;+O{)FJAoqG^zk1WE7*7BDc@5`SBfApeMt1fEXQF%CK*W<IEV~|HEV( zDGYLBK*0h5{iOf`qWs?%k?92=0AkXzQ{?Cyz#!LUpovO0vlD~~)hM>5WvWD4LM9&n z+v|)VC6#Pab|HqD-$I^y$CxX^vy~#OPKTK#r*1=$;fFTqr}EO6Y&4RRSzWTutfX#A zf^Kg19Y<Ezp;`4xK3`8u809<8z@ip%-B`_{MD`&%l%k0}qN(HveOIUk$Q7FseefW6 z>nfI{|Ecif3ofiIu0$s)(a}t9y1JUWir?AJ&CT7}jy8%k%CWV|$QQ(z$zyuwy<rG> zz9iI4xU|RB8$qz^o^`5yK6D2PsvE!(`Ds5a_9Z=5Q_q#6KE`s<HSLIuW~BpBJQG77 z+8UzjlC7cRn}iYA3ceNsn4!ms>87}{XAo&JY;5!Jg7m|BosBsrTzlX_CQX>6P)c{K zGS%My2MQr=;h!s-15k)H9tgUo9K+$aPmG}S^1Mb;fO)Gh#$>I?_GL8U8JUPD3|7*c zPgG9cc0|qi5NE_P`wK3ysy(W;&U)ZrvGC3KPh)>62r>v1n1F`^BpeKUW56iV8yIzp zwvFjn=k=-^iw~*2$1CYsAH@T=E$-0{cO0fFVVNmeAZi()9x?vtO_82Vc`Y$dE0T(x zQY6CkuW15<Swmq)Ky^(p)o!@={*|>A%PF&&(4-+6;WlBLFk(gewN%0y4T*I^K|3Lu z3IfPL;}K?*?c6i~OnOfDd7-w8*Ewk#=Jt7h(yu4CksgWsV^}OCP#KUzKaQGHxwq8S zD$MS7v8yG=XL#fI<EK}lHv6d%4w#3vLCeVI=&jKkO?BbdOAZUh#S+EUT94v!uZO(x z$M_-W0?_;YF{zvC3&-Dv!^*Xk^@bLMKRz<i3-@KKH(ay;v<xEeY?c9|Ir8Wx6f*uY z&<*`dNbNi3jg<wGB*1$8NmOp}??nmKSc)Oa9cJSY1ahlHj#(s`^Q6IXk?Z8$DTo<| z#2FTp%96Qig|tf?)G~VY(nt)GRU33~qM#(S6;Cu)jk&!hS;CS8GCzAfL37?n*j7`V zmPUQ*8fd2gxs?9CHjUKvLryY*72wxT{F7f;qNoeiGWt(Bfc#YP<{*fGoStAP9-&PA z5R{dF|7Ny8w0Or4k9_iBt>(Zwoz#-X5S9Le4}Sf{-8HR;*XsPx+JcpY1C15(7ervW zR+neN6T$1W)ol!eA(0UB6B^wEFb?=2o|xm`Rz60+8H4>HptJ`f0bD7BaC_C9O?21} zUA6Ylti9bIJtlwNPnVyY$4pNV;ho@i1(Q^|hA-1}b97Y_$Gj507@gt#6z25qU8mC8 z7)^ObB}9j5A4l*FhyKvKB%K)Sg)T7>!;GD($h%U+{B;fJe(B?HZgA!WiIt%c{VKeb zbp0X#y85b8jl;p3RZC^bFpzJ7S6@Ea%Nok7$a^1))+jFZ<syKv(+z4fllUsoO3cE| zj-9oK8_lOfsWVQaTzXfDJ>aK-o<f^SgF6jo@+HYyzItX?mUZN=!Hz?RRFSwr5yTDU zT;5n$$ID+ak{-{k!q#~~upC1e8)~KrQep(KD!e#^#a>w#`?ZM=%ATuD*ln1{^}Nb! zQ7UV}CR4hd&)=YRaCZ2O-xIXEsO5M%p5JvFZanoznW)bx_B-`p_^XYkpGDINT6dJ; zQjDY^cslBbl*NJ5<&*D)evil@0Q5}iu`)G;AVJF%eyd}}bQ=zF%cceY?hm=z3wbNx z7g}{6f#=Kj5DAWYy%Gook2l_~FWMINh1eTU9A{ek_7g*vXtUuV(^_J*A|-m!(?Tr? zn3%S|b92pkuN)>;OA#-WXI&UqrXb>|Yu_LJg=%fuetwwMZ+MN5h2tCfPq!gvJ~>+e zIKTmZht@w9@zl=w4u?dAWUSWDt{NGzfys=8zu7-p{dB5bMuvZiL)=d2V!HO4&o%t2 z-<CA5?gZ^4>$biikEViKFX3Y+gn@H1Yp)|M{>{|&`TIW7-9iZ?*K!lKA27K!x))6! zGG6h#xfBmhz_{I#NJ6~z8eokX>%r8<J;xQ)-!%`HY_M;L^X|fgytA9F%h?DJo7p9R zlZg^~cXIq_i^HUsF5BXcc5(i>sTQ+*-7I2<zO2~NaKDVJXwfa2{x=Ra&-@_BcEoS< zH;292wz(v06m7Jr)8DC-Nt*mmK<B81U=hWN&<Xc_$cJ0;c{x;AqNIY3fM)+She<dv zNM}7_NGzYj>M>;0>Y{tC8e%12*XX%fF>Gc<TrSI~+;tYV?<&@R=InaNhAyhpV78V7 z6-y{f_2$K{8FO&HuQGr2NJj<(7*j|g01~a5q2RoOzxS*Slmn*;zj?>EdC%4m#T_Se zty!KlNJDl<HhNy*2QzaPnx_BDw@ekGY4!Sm)D$CmBVft9_lDr&V^<r%4uGZi2{V)6 z-!lB}wi9gKa1O&c)aem~a4$X!;}~plduo^gotSS#9Og~ExH^G<ar_+kQ=)br$yJzb zm23<fxFY@Yaz0z$IoSczTu_+keS6xrr_^X`3P{;{W*%uj5_eeyiRrkOSjK+c{!^EF z=IMfAHTx)-Uh!&_VS)ls=r8t%LHIt-oN{|yjInw{yNow{uAf)X<WH1JPcy>05`?xy zx14zm&H39Y9Pw#Zdy_qn!eggV-*f$vpkont$s_s?Cnb?qRn%RfD^!psJ5YFx7+i4~ zPM?ORv1_ke$G|K(Vt8O@F#ZLn2#On}<{(zseDvl!<WHj#GW9lq;kg$&U~5Y<V$9(U zFNvLPEQeKGErDr>;l+`~U=3lqJ-kQpJbgY?#JHH^9Wn3{jR}gi(+nrhy*uMvBE%b> zWYxo|n%Xr8ucv6mzAck<MdM(+b`3}D8eusqE=`vQidg)mn{>8cvS*pc;e4Yl{E{5T z?Z@~mSa&FTq|F?#?rrPSoquZ0;l$R644VO`g76y+hV)~7clkx*2Xd(d@0|P`bavo* z?tyC%4i|GxF!|*J%@KA##J!EwnqydYQ~={xkDgy$4tC%ULt|FVKwn7-{PU72d6&#! z=YS=-m6X+(3}QsvpzAZ%wmg&TL8;mvA0zVv|JgcoO|A)WRL<~h%|IsLvItreS$9uN z_I$-h1WKa0MCQ?7vgSn&^Y>0nw8^gh^_SE<;~tVht997)90u+L`B`9232PdjuvCtR zo?p3PFY85JDhU(?$5fS4C&Ikj8$qr3^;yhXK$ttZnFB6dNv-Q0t0J5Gewj!zdz<DH zS>%Nt2;>9Ioq3S5VXgiN64V!a(OeeuvasR=C5Th}SCAF1)dWGj+Oh6By?VB@aDY~P zc9G)8LpCPU+LngL39q{yn%SlMHG6LkbA7Q9<$xnalPBS&JoxtgRQeiUuvB!Od}C^1 z!KiKyM^G?0d#{uB_-fqXetEj*spr%gzCn&u4Z{fF>N0o4EvPd!Y26r9)V)guiph%F zUe=J!!LbSzN~SOXWPs{Rgyd}c^NPd0fTu5m1L!_rW>^Qo*;%R-<`%}q<|FpXulf16 z)M4pxp99yma2{8Ghz1dHg22c4;2t4wg@zBL)^f8rm^sp`dHwO%Vw-0mIeIv+_0Q|j zAyxr6ks}1d;7&ISmfkD!plt0}5pP~oyK&6dgG>Vwr8xPgh%E2ZKlP?x<ukRhq64-8 zSx%&7Q_;F7e8A?C@_nWQ(&5w@Oy@J7Yu*x^A<j>r*uGp5CxGkw+x1Y%UjOb)SCIh% zhyU_$i-s{c8%51)x(@D;kIy}2VOvPg-K892Sd>e2jC8BIap}E0zVysNu55k)gSL|$ zYrW=|-~VsE5GV(~pY`85q%RHF2$&$n9~cIpZNJ@#?6;>sPze<aW)pnu>c}Bz#cKh~ zd1lnbSSvJ-(lRBEqL$d$#PqetI}{~q<&Ik9S5NMAdNl1&+jtI90f+pmKuaJq(t@Wp z@-kVIpsrqh^0Z|~`A^p)1vNw9T&>7N;@AM9l<h73Sic&-V~;f~;Hv&XK{JlNFQf!u zi5fq2d-hXLkyglJ?L^P^^<&E<{93IWf(pr;{2cMtqKZJIMMYa1Z6PY?z3V&@R{^2! zYh14IF`NSNE_lagu*t93*A<B*YTpjxI9Zt^U(u<hMg4+3_?Q5!Mcx(r;=14IP<N(b zHs3$rV4sas>b5<9VDL(`j;&{#j?E6h)0i{s>*#84@9f~7Ao&!(79Wu{iH!1iK>Ire zUzK4P06cQ|out@!=V3435G~%^`P_^4E~*d89kTL7mou;CgD^jx7UZFmVC%4mLREXC zC2u*$BX8NDRb#b_)RQ*%49(9v76ZQ^UK63ao_~dY{7w0&_Uh9_a(@&rv%m>pncKa9 z_bh8-7m}Y#-WR4)jBhw8?`7BiA>|`tRC$zB*JyNEsRY`@UrK8?=FSb-kO-ZIbtm`{ zr7@R8gvstlj8u(e9rDdqeA=0hg_nnioAkD3e1EBrnB|uz`7f@l0RL<ENC(5m#rq#j zab7bZVRgFjC*?~Z&^?Ku`@fsXQUVY1OwfNav|fU-<$v0=Y9kJFd;;@t5Cx}c<RM0I zA95tcp4a<PhXon_RpMKV4p4!uxH6M!8r0u^H>0Q%Cnf`Z%kVdYxDe+Lj2-?Afm#9) zQ1@RJ1CMChD)p-t5^uO=9Y8S1r6X3Qpnj@1=z#(t$;1<@o1mFRa3N~|*7Yq(3XZHa zZSlMj*<=nNk%{Am<WQUuhKKRgp=utZQ?o_pxFD~7XWiWoft~1Acg05hp2sG55VbU= zH=a*wTFlL0JoUj4b96b+3ql5a=kSUBti$HOskmD0&3xW*vqHXL{**qwJ@33wke7(! zlNgWb6xA%G)?1(n{9ibL-kbAlM+T?N=W+T8vtXOoX4P6cp~-E2rOU6(#qJ2-cAtoJ zeW7z*T0%`&&OSHxCH@D>UAsSM5BUF~?~GLm0&0w<4zr$s&%cR#2bR(>E04eNvSJaI zy^AQhG=m`RC>`;k^=8Qsz+0HB(5nny^fLQ##-3_;kQ^Q$l$U}5aIq>+V-0oMdXU7- zq_Yp>&8Hf7*LqTxq=KT62>xUH1E|z!cy)%VUXR`t1*2KMny}~<+(PJxBf*LyX~0PR zv93XfRVZ;qa(fc151S+l6jB&X8~*%b-}71?xSoXRk*hi!*(!{7I%i5S2-aC*2zsh% zbW{1)$W3PgiWC)q`YS9n6I>8%O=fGm<sk!aFt?WLXamCeLFjazom-UhL}TqOZ4bB@ zg1RY(&hMxUqQ)(p*kCjS6E-J*)X9{=d-<`HsYz+xTK26CrWrFtXpX4tml)<G9Wtv# zqms2wG-3s}noY94s}0h3rg!eqzKrNo-!0I(iSmLU6G|jNA>ZX>&b~@J8nsA5H-3hp z<<&+iy+syVi|3?He4h;_m`wfQZ~e@Oy?&q0@6n-K5*4>FZgEU*)EB|`WwK@ejGkUp z^{~^#bc3XMbd$w)>z4awt6hX~DTGEDObPxG2?t<#m0PP_&>|cy=!;X#{#0cE`V8_Z z=c0RedAA3^A3|n@-MZ94$im@gpj{3@){LIhkM{8}G+8G`3YGd&)IsKt0St;ROJ!5r za)wzz--$NASsx_F8=D#oJbsNm?UY{C4@@Ki9dx2UL8%n>e1r$4JM_eW=mO?K*-x`u zUCW=%3L89*Lc!ufWY=HwP2s7z7*xmO%hMxbfb|H-M}p2G6x81L@b%2u?f_SEz{Y`q z)W`ck-Je!l-2#=FDhejJ{`<Ia`U)N9lWA{*f#0@`(|&>x`8b}$Z(WtsyC>U?NSnsS z_9yBQoCm-6Uxv34JCOMFhx%{xQ0((?BQ#pb-&I<?yo^Vl&)jkDd9R<YzF!iw<d-z5 zg1=<|s!m`1#Jz$cqPsmvR^ii8c#s;?kNWYpgG!3xn`hN*wNc$n+;S|}9)uQNyXD>D zrIr|OCjU8#b)Lf<!Lv(z^qTh=!qwnHV*F9Z9+znHsw=$kp?pO%uDar!%%W^=U*|;M z6eaM-*lP>wP@)iS8R~HEOD{dV43-6J(9j{k?YHM#hj017WQ~dI>DRatq#ae@av%k2 zns&odwC|wfC^m?R9$gOFC<*_tRxbCehOI=p90d&QQ-p-Ln}|69RgwT9z2eXR;p!cO zGl{yk?Od^K+qP|cl1yydx?*Qyn-kl~#5O0kZBFp!z3=Dys@~^cSNE@7)zy2iUgtUv zsVG5@!4p`GXhshhzw2q>^Vr9>vGvx)c05GA#MY`L!X{GqN93enjG7uc{u2TDAi?X> zafFf)Q0&5+T8eq=-2;96Z`$v8unR$6nl|`H-}WQBMrzO(HsCK&D7gi{{%E2aN0FIb zqcl5*z}vt-e~$C{C`L%W>L?v{9_-`%F`^*HYlgRSJ1L`OAtCgQhKFV%p4B?x6&zhN z7|ruC&iVxAO%pe-jCRtySFN~Q+_N9;*P5|RfkIpf>}IBE^Bvm}84xVC-ljzfSELMF zXCVe;$awHpH#o3Fb@aW~>HXqx;~-u`c23DfIFcsXVu8uAe6$hkflv$q6$0mdCd$|# z!Y~p;6B*R3-Va02=1a4^J7rn^-V@Oa@-HRU=22VIN%z-XxCl>kxhDGDGvIpxP<8bj zz^+<y$u<kYt(Sx{;aC$Ae%yE37IEG!KCslabw42~kat1|nuuk#r$XoKlF8^tB}VAb zkPstgCC`k3^Pt_u<FO@~NrM}@H>U3CHl!SoKV_yP1zy90K>ZIV4>uPdF($!<o=v|$ zUEQF}*s~wKzr6FvdBHrKo{t}q3NXPfxD6HG7xJ6F7)IfGAC!bF{&YEy=z=bcJ(8g@ zNktC%ZzM_ibT@^>y?lZFzwwaPI2Zuuf3qO1V@Lpb@c+a@T5-?;cwqm%<i-M!g8nB3 z!lQVIzV%J?X#ZA={C_Es)=(UP8wBtmXn^|nSui18CJf#RwEXaV_(*YGZ3~5kmfD^v z%OEq723q9<eAU!Azc(%q7iXvlCT;bng6v1#M2nN%(r&)+ysmHdK@yc+CO?1S!!AoS z!)Q+3STNPm8**-`39P&!_HlPR<Er?H%NGI9oarOp|5}9~5g-!$KOLV5LC%|>_#hyV zP9Pv8|M|ZOw6b?`HL|s3bo81M_;6SsP3iepo6ZU?Ux50jv-c6UNLM$rZS!G%Fe2#+ zLqAwfg)9RvN}aoyfMoRJ@>$S)6vvqwNN%a5WlQcXxYgygeLcm!eO1wc(oi#TMtw}w zQ(nQoU71t0P+HNsJ?^WvY?p+!S=*H$b>6Wi8fTsc{3{FlakTgG`nuj29ewb-@yD^t zZCsOO$zJJ{e_9&e!i`2vX1iyj&0U3jG?{(FgolbV*@T9Mlv}P|)^O)H@-c+C8MmKJ zTkM!xuJIf(D6h7JK6f9@VS$tjq4Bb!@N`Lhpv=MO&2|Ba)oR|GEX%ajp$3p2+1>n} zZo1?S%u1zO;NeHT@uCxI@nUFgu+6>y$0N|AaLzimEVG#^Q<2zFf%`$~P?J;@Z?$@L zB-L0Bqmjf}9mMma0qptWa-GZJxQ=EfZy@)@dt52QHLWa=xAMFqH#&_X<|jH0XMt3= zNEEGH4hymXth?d)W^lFbyvACwyN&kNftv;?P_s+VP$M+T87{Lpb@3;XG1yz`*2}OF zsFZS%Sr!)ECvbkz>Ph4;r|@(%UszCzIg$5!$~oywCRW{em$Hk90~!MF1yauwDgkmV z&T!NAK`&C>-#9gbh<R6=w0U+}`XG}a;{e!pnMS`t(}k;mR5XQCH1x0yB)IC9&L*)} z;0%*NkLP`3T2<RCFH`YarKG(=nq&oKd-Xk~9ww{yq5h=vap9URy%)ge4mS7YImpM> zC8ZsECuLk|qiTgpc=c4$`d3nkwM|eE5KZlv4_UYwRQ+Z^PmhCjAB)=sv^c%ih4Kab zvvW#BcawIivW`7N-LBClD>xlI`@+#22zJf)@&W2j19sY(cLgaw-(&^Y*keQwk%SqQ zU2~>5FLoGGe*8AI$Z|?F%SXeU*sFN6-afwz3mxZ!RbYAs@tEi>VJakza`Vz!hKp}p zYo?Q%b)?9!^6~PHN2$|@rRq$Fn0RsXQIrJ}*Ntgi1Yj85Ckxjp#hq-5W?#<$4Wf`s zY?pM&MgszsRHwu%<Gs)PT?^b<gR6r#V_lDd{5`!0p9r&z-}&L(9?(EdR|idR17{vf z<t64%%oDM)ifT5RdEQP)|4?&zzE{QK(25Xij|geAHe3?211L=2I_85kLq_{rmFK<( zu2<Q4X)7Ajil=<?r^50F*(Xw9XsHHCD22f7qiSa40qvQijDZdWbqE6MD8?SmWFtyi z=11*dUKjO06<zChCg_3a8b5RiG%^Nj3ugUo6UYu->40-ewI}lrPmA#WRS9I><?y$6 z83)2&e)Akx$gPPs2{oFM@?o-==NVe>)cQY4_?Jvz1LNlGd);Zz_(J{w8BkWaVJsS< z9w8nJglP`rPGGBg5<8(h)|XH_`OD&T>qB~$b@kv#7l({BuCa(`g4*v%r|O*WsSU-M z`_42GaRXKt1_7>$!#PIx^DUNpJs@1N&r8kp?)7kBeYb_Qad_Fy5<^BWFxV(nf`;4e zFVz}r%n+2|C7#j!C|XQF)IQIq<KEuhl<Gu7gj7)QBUUDv(0DH@%xGV={(ek??Kerl zU%{G^iYPoUdf~Ozc?AjkaP6MS@M{saUZM+Fyg&NcHa^&c2Rj_N-dt7)ovhww?%?gm z{&=jaU;(eP?=WGXbJ2G~*Hh#H6}o`j0vBzLfF`|!pt{t&UI-GPOpNifsb0bOfRSI( zsn=HU??$brPKBHr@~E{rLrhQjYzOwWd(|yiJL?Ubd-~7*9G5O+DS9_PU!od<E4KI( z&sxW{U5OwjG}lkU@oWz}T0_*+*KEvSTU8Hyi>7P+fH9J%d`my<P(90?4^GtU-l@q5 zi?8Pp{-izAUzy+Lp>F^I*36cG&)Wo(cjkEKf>5IXR^*MSEMA31O7p1IWD7LBF{wAu z>5238zA>6@+i=BtbB}ffFT#8~UJlFbk)g#VR&=h_poZy-BcPD&o1bq$US`{qad09n z3+hl`1xYE<b0f)`5lAl$$Li7NC<fw<8XZ)tLs>TN_BjUZRQ7+gOXHnVk}u?^vZT_M zQ#qJu2Pq-*R%<VJj|QDpf1ybmGJ^G!8LTE{cEdf0Xqp?B0yrKNt~T2Di9g0bg~2%r z)2M462S~!fFIrj((AhnME`m5_u-tov&A&?v!d0PsGF5QkuDjr3nDGN(kboac7vr@( z-p$~5+!??VZmj0gKH!JO4PmseLak#%A`vw?*^F}g50MgzTGkB>*+V&GIgk@$Jvp9x z1Y_;HaM%9eDi#fk=f)k#hj)Kl2+OJCH0~{rI8B7>=0u5PTrSfkvL80^%7x7BAc*5| zP27ImOR|{iV6JVDs3c!-Wnhy=FoMz<ffnBf(?uXGn(J?@Hes-?ge-v!7lT$gw3o|L z?vNAH1{As2eA?&_QUfMgnjg*_mMMBacy4rkd8{GDp|NX%D}8XsM+4Toz|r-8v<fH! z1i-2GGRdGU0cdX@e=kcQ-_`k-wrhOpeX9Dvm^N00(A9C-=;BGTn!+NJ`~3u;v<#OM z&4_`vZh!w0J7jK+hXdHBpdmyRs-50p3LWt`qCzF0!b<-tPrcLO<P)YIFoJCty;CNF z`?Qem9%&;6w-fO|gcHA&hQNg>QerhPVn56?G|QB(Z73;&JD43utu|mTrY9`<^c(3c zvg(nbFlJiUgGxH3{0mNdai&KI7tHcl+MotzSU-3!WDGBjkHuH_L1}df_hHA1KLvCC ztbOtcA65?QrXfBD!&{~_oCsliu<4458>NR}vsTFLJZ*!j+Fn<W3|3@#6?L~@LmRO^ z-}a;9DB}`s44=<kAS<NC2bt<aqKZB)Aj>!FPU`%6`4l2zdEV!9q0cq~%Hu=BR7?X! zE@K8xk$xc=p^|SKUIDDm`|=&ZJMX=SOxEd{Qvm*7`-SqK(~`H{!S;f4kJ&yrK-G~L znm1vUbw4r|pJz8?*qr`<Ra3{01UmRkyAU?{7Y5C!@==T{W?Jd=`($YnuNs838Q5nv z2#b{?30ibNcYXJl)$NJ`<OW|GJ%oUMIb2q$+h*`R=DVk;AabQ)-lP3i<jUAfP{ILr zfdaP8U<sMu!Y*K)H0b?Ff}Y2LnP5YsCdrsvMa>}@=-CqFL!4}?)yGZ-i@vB4!Iq!Y zlZs%dcl63HOw~EiFKJG<r7K<4Mh)^<VLM$`;+3-5qTC}Z|2P?MZLX`3?I|F`i8<2g z(-J^|5$(nq5;OUPHON!|(@W2E`2K3QAfsm-6%MkO6$9Amd7oKK(GPGoi3ANvgidGC zJ)}b~9G-kU1oSd5toEg3fqCj)iCE}Td*3mzqHNXCj!!^HDnZ95HwJ<x4Ujr;J1LHf zanK<%FPOMWR$K96b&8hCo&i&2^f5r2wLp{`SPJmJc;~ZVk-Mja5>nt^xI&?_hmPkg zM_&4J{1<?$5PVXZTFhcfeXs3dk~wF4Wjt+kcrT$4Drr0O1}d5?Oj&~E&@F9t{O(42 zh=r$IewdI6F?(xM@_WA(U3!!BcF|D1EOQiB_>S;<SrGhfQH4eVhk!mxgDw@G^*NS& z5Po!l+_s0(3CsZ%Tm;qi@(Pgi;zTC^SpgwFEa1xk5t&opsXczA$(W1LPXBB-M{48~ z0F4G7s(xLulqn)n7Yf71D+as2%~4T=EJu^7QCMfd=(zFA%j4<kvGGUkXZy>)#^sq$ z@24OdEU|xvAH<u0TOeRgh)&{%0tNMG6|F^vA;!t0lRv1`$$d^Cn#KdDI!9X*&#(xY zTtD7-_g*sPWHeMy0HSakL$Iy2fCM#%&<)yx8p1-+qtgtldgPGAO`*j#^43s|j#bc_ zuTi^K@2`L|OD3v{6Ou=1-qvAmxpm>JajcOoq8vk}b-_Lx9PnGp$z<Rn<RLm^82q$Z zNf?wc0aZ2I`zbn+Z3n4#T7os`BhixAjLdi#2_h$#f6MHtbjYq$&u^woWwy@j&w>#Q zK8d{iAbp+PnX~n)#<&@p;t4r!y^X5ZQ$ERl;a9~zN=_%j>V6s>Js?TX<hXp9dmb$- zv38;6>~X&Q4cGz7&$B3WB89A-qw)j3Qwx2G>3K2w)JPXLOceE|rFjKM8hI8mUi?&b zw`aF4flfrSDmstK_>Y~UM6-UJe#R}$L$U7w8CzTjipzOTdyu&YsQG|OhwO*z;%pJG zl-&(lSJ7(OMnsW?EPY?hEHBSxQtW*<IUvczYjxbx7Fej|I(Q>kOYt+It4hQ_yK;*c zPP)}d{sp_ZQY>Z@b?^pk<-D|sES=zNypWGjurvpo4+XW+{Um~uSb9K&$fn*tW+c%! z7_07Rf^MBb8Qm+!i*wC`bLrbd7(bLQ!b1$LH=?oSN3~!P`zddCH0Q)Y(D7ZY{^-YP zXL+cF2DWH@ou`<=%UrzULQ^}0un{`G?=;WYcvKdeY){8p7Zdzwq8caBL+C0K<z#Jn zbk?pvy{L&PpUdMm3_4l5C5|$>cKJiJGH_SaATv}xDc0E4`1ja*;MlxUH<epUb(2mv z+o5+>*KvXh+xYxOl<LpPQUK4*y?EDYgIG&>HE=d(%}BNeP#t2<aH3`>2gE`M^VB{g z_f1{a?hI9tl^+a0fkH8LahIuFZz!8zf|vJE{<;`N468USWti6q@ggUSw>CsLr|r!+ zq5YhLEpkeM8_Sfn5-MDZ<Gzb9cxBm>pfFzvfnxQxv8210@A$2^XKCYswqQs<D1&** zoQA^+fCq*P86PjV-HM<HbCZI`a1i{`=Sx-dMe>0avfVnI5~O5z6WUB|1T4gF3k@;| z;qNaP@^Tswb~W(b+TJSL`h7`q<KoJSd9D3Pzj)IM+}Isa$aepLnh`iB@PxU&2_%xp zHgvujhzm1i(Y%)4V%09CodIDvr#(<0U~lF@DF#v~Cl=&M1928m#v%3_PQ1ODJG3FW zaf`X05k+jY$HkylsQgaw#V>fw&=LRcse4fEq@PXUWaUB;BeS%{MjOII`@ao1l8i5= z|C3-|g2m@w$73Vvjki#FArY%z8=LOM31r3UV|ejxn53mYj0kSgX8OdQqz*bJLKote zZvtAkb~-{6TB;&KrYXD+Y~c6HXrvzN<_Y{!;q_+8O+m-0z(<oKF^Hiz{5z&sz+jdC zNesP^WWmomm4?c0K;u+S++LPHX{ub8ua?M1@JhW@04>{Vx!&8G0D>=rB*neOUO{#J zYbC&REwNnG^x8w9zk^T51IN&iqwV|K><uiXLaG^V+zn5z)9iaDv5Ko@^##p3)*b<8 z(6RXa4mYTD!<K@Yaq_ZYL_1+c7j)7}%Oti#@fox*V_Cq1!ILa_WB!RUQd!wITRCy% zSz^<KWT)_MxClO#?HRHc_=p2J>$>Ca<f!uAx{>schcHL6^xIKV#KsKel*AYE0~rYN zT;(>|QX41rla-;96}NJbd^`5`e(-EN5Wr2yHi9f2n>dQDQ=NFYg~!%)Ez&icLE`Qo zyM#Q)rfm)~ap)QD*YRRc8EH@5biHeB7}5D_E;N{VC<V@yb=m!pcM1+UhZ^G~(7??7 z{2y#1%mL)iY!bmR5}1i?(?q2c+%l|5+-4q>0&H(;XIeQsfC%_1=Vw(`v*A&zlpYwh zjtR%?7ccXY06QzWUK)O|x&d9zTWG2!Wq37iksP;jeNf&)dreaWiG5kpYUf(;;54oI zgJYNpl3Wl`LIqRWg08I&1n~Qzm~l_^+&&%AIaG9c3DypAS~;#i`(@7dTUm^KD12j* z6|r{XelAs=9RhTi1tV0MS?vC0lGzM6yqOzEpL^OAU3bSP&PDpIeTc2=H*Y0zF8t{| zyF@<C?D*GgqNcB3TUPt&m5WPqmnNs4)VX_EjWQcU1`>qd=$)m7(%j<mXxe0`VdVH& zpvFIZw=?ALi@*`|l`QtoamU*D3Kk0iml^#=&U(72>;=&0B{q9!Q-9gljo{%r_^xv_ zO-3o&m7c#oj{<KtQP#T!Qly>97D@Ql&*PHhrxB{Khgk@=&=V8?FcDI14>UnB0*0|i z6&^w0P4LFZ(R3=c9j-V4Ix)WbE0D@kH)4WL=>#F}F8|_+68oM+d$QhMuETm#S+Hn1 zFsmVf85T&N9(>PpM3KfoK{>|z{A_>}o?hj26VQbyxZlbYJ#$5z;2zN(qtV6LG9xbv z?8i__x!aSGI7M`e)}L3#)j7MHW!2((agEx}J<<P1fL(Nzl+`q?=GbHPuKx(X?I9C) z>!@a$VJL!j)D?Q@Sf0@0y6z+XnNwrvIA@MCiU{P_weq1#`poAmagaF5+Ir){GL<g8 zXBzpgxc~i(Ivl6a;+2f^xK+C~q3`x^YJ#wQy$X$C^^_?=#pRxJ7=|lZ&Xulbdp7NQ zh+lE_5I=si>QEMAlj2u~W^z9!6KkpxEEO||@-^yk8l{!_rZ*$dli!+S|L~6^i-sX0 zkOjUu4MX1-zlDR%gj1lSdDasXVd|;6BDOmt=ihJan0f_t8v-!H2z0QpVzkrIh#92h zc-_=&UC^EcFeWPYsAG>yqduRqW)<T-uA9B${NEd_YldouoXaUz$2`|?dwy~iIVuk^ zXK+OM89UJQef1c%TBmnkb>x4FA?VkY)&Uzkzc|xhSm~;(UZt=D&X3pxsBbr~JHu3{ zR@)tliJoGyUqs0KS2+5KbJs!h+9r?wDr&hP$>Q3Q<LQ~T3bI=wolg$)2R?PK=-&t& zH9_(*|JHsJ(46DAL<u%E1OdkzxjOu10R;&FwGDXRl`05pT5oAvC+?}QbDpq}764`v zx;V`~$xQf_-GsGvs9-lB{Rr{x2sUghoLCro{z0fbHL{o)6U#+u0#1G#U_GHORJU)3 z2hRh*co4%I{R#SwY0VU6fkQRqEe;}53tPY<<=4<-PAWJ*lcgf%-&CFsB}#T-TlT+U zxjY47_lM+8x4+o-dzZJz@u#mkt^kfsAUzNA`ggNP%HRe__&^D&1sY1KYtN<#m)NP< z^&RidYq?a96Oiq4S5$rtcedG+lMb%s`t*W9k_^9n8rT(=q+Zv@`SMw)J7npMs|Y!? zo@NvK)AAn#t>7aau}E1tTVG1UGo&=Nr6ZwmH`)>#yxUkpxb@-c(Ft{L-2f|E-6+K( zKQaZDgiQ++HkPs9oZG`U#Z7)>wdSgkT$pU=o6K{uwZx*S#18T#aZ!Y+(KGz0&Ti|1 z)H>5T#q5|rP}k*}Qq0NCwiR}1l7rvKzIf_<0LRT!R&!GwU+=4jBr>OlTz6PA8cFt; z>XLqd;Qqb;k0som3a4F7vl3Wdr>6BrWDoG|h?$TF6EZ(BLNIS;fRj~m>ZzgLIJ+W? zB(r(zsGqTJ+eJ_0zcL>Ev9odA`!l~FW{$NviPy(YuVPkXyNb3P{>F2!uI1+|li?f- z6fI8hWkQCF3C31jf(iZ$@1L<-a!*08(?G$SawaUT9}+5?d&-#L0v|v{l)qY_RzGH= z2Z*}=?RJKGq4DD<g{!P=g3J{Y6?eB$OjKY}KGWyfSDhu{N7ZJ@*!)`?0-~@o{62cj z^04^rIRevP5CXa^UbUuIpjHfOFxkE*W`Vl|6Pazf%*RXZ?RrPM+o)Z#i|J82iSo5# zJ|@?BzI5oZFJ07J=5GpY&7!K`3{|8I63MII$GTk|yqEt}jGWO#JfHBTO<O+vh{t{t zcu+SXnmi^!um6MD6Z^gN93S&=BDkwIskOuB-1jrBK0f?{daj%Buq=KWP@<l>7|=KK zRO=}I>eWxTtT?lmyl0Jn5+G`dtEqh!U_9_vfuAKxh{qJ$!P!72IESIno>0l1&YlEq z#f{5RQ#Q8pKPFql0fXG|J70ap(=LY`Fg}3-zoJQRAd|zDuJVoSewumWqWgw1zmzPJ zSe!)+ok&@h;4AVNsmBeNQWlNo8|jV!7sIwqY_Dg1l0ffbr^brQw@mL{pCB58ncfyj zNb5E*$1|I!N$h}8%DZ20Qpw=w*J-W0u~TWEDT<-DLhtEZa(JO>_R=<j5&C+ke!bXD zJVXT@biHCoq{m<vD3Ui5<pR|%LAI{do^6>t^S`E(f;M2O#tNjyv2l14%%!dGn6uCv zTQx&_4OX*&JJeWQjbh#5<u}s>*|rDqgivh=L7%*}pRPcMP%NdAtLkjsqrz+12|0dh zyZ*z;BBo_VUS-F-V$VBHy=rI3^go2%-Eh$iMPpm){vqLb&U!5{Aa%b7`?<e8C;b@J z(A)@%01ggXk|<3h`{+x%mcA56&BRodb*qpo=Fi01ojo>;x^RZHV4Q>b9`!2Ozc>W= zm?Ya_16aTyt|h9QWIbv&!QQwMcGm)8J;}B?IA78;b)x=ZXMr_&wNclL?LZSo??F^l z!=Q`Iz5x^Oq9;nOvB0hPeph!qI?4iwJ6Xnc1#IEpp>oXF<f10*4$=;Q5y+y02#tjV zq^EHn1R-rE=R7rUk6h2=xj2@4spZJSb-i7;@1lsWG8>P%^WY=-7>w>lZ;WW#H@aQQ z>St?VPSxBK2<yq;Vv?fD=-1&jiQ|?RT|B)(ucUpml*Ebl0Az1Zst=wtkS!t4`+sWu z9mFZ7pgs(oG&G#sWf4d=sgtAVoW=ErXCd}(vphtXn%>&m@+Y$ub~_n-tm)K>@~_DS zD*u2Fy!y~PGR|9l*p;b!<9ZC3OJ+RBoJe<LXbemA59tEQ6cqy)gqdYGxk2c12RUO? zv~?VM=DtsFt9b@F6t2H-hvaU)nbcdXa<|#qe5I^@7z1ZlW*f3wI=m-C$J{Etal5%i zlA^zTYWR|R|46vwlvgNr5Y!3pb)#EWeaHZv1chg<<lCh4qad@di7_8$T^&ogZuIMn z=hJdmlIpuy*iuj2(UbTIEx-SmvT`1!Lye8|XqEJ0pp;4)3sTE)FX==elC5K+92Sio zfv}aZ@qCJ2p?<`|MTOzU#XWViCs{TY7Qls7(%aZ{#0dSSma4Ah0XHIMqoriMMQ;Q$ z@E+_|7&~KB;oqa(diYH+#Y)T`<WP$q*wMN?!|S_eM%hn&cn(|CN5xA00JAB*{_%UP z|E4fnk?VaW7D!8P?5q!P7Yow=Sz})|ML@yI)ya>7)!AivQIbZ7#!tFWUNRAD+9O7C zOlk44$Aq<Q5V;-v1$CvxWecZXEe!&!T^HT{`FC?ijxpVyrvG}1$o>`@HGulvsI+o! zD(tyI6bByl2IV7x%~j%5&h-iYoY9*cS>tS?^u$pqW@(o<ah!NIWwuIc%57GFOZ)!m zqnywiL}Q2i<TPMtkmwx7LQmLxl;=BVw<We0?ePnV<t6p}`5bKURvg#1ZKn)aW`Dc* z+}4Z-&x?NJM(xDi2X6Nb8Y+=!$ZUb9AknDbLaU`+8E}a|jY8+Jw(PwNtI3%A)9M>c zTeph@e5q*+>hzi-YGdtj@^~M7e4AQ5_sDfmZ*-!ixW(Xy-CSn7HG%504N@T(gb@1U z`*D?QGO1&Elyx4q^bLIF@9G6&5w<_+2p?s4A2h=Ss0n?fA$boXbe@@{4cA2s3RR|d zq46KkDBBbe&-ej#NQ9kMuMxKUh2U$TDAhuNNw8|_D*8Dm2Ti=YHPN8?KX>da4Cvh# z!3&nOc0z(k=~*@b9v`_w^I!jK{DP6ElHBlHcTf&sPKr1E?;w3zd^QnO+JrCw0mxew z`m_{qr<|7s$7mTOw>HqnjD8i>IiW>YUVIRT`FhPYz?6X6+_Hb5Z%@=^<802IeT@@I z)S>xs&}f^5Rs&qVv>(aZ9Mf!qns@h;3N;<H{Zu>;l=-u~?EzxpA^3UxA>s8I7kv-x zetmq5>M}<_YjPNh>N;#NNbt~`0j`JrrMnCKV5u`7&^*|mUAk#5Xb_rX=i53wM6jvQ zJRsQARWqd^^46F0nGNH#8{ld>0yZ=hKphp`m0Ex*j&X5#K!;aogik>9>edO3EBJ8F zmNrN`WJYcN!MvQ!Igh2#U0v{x571{B*$dyEo?#O7jVP$=L|B;AG8Fp~1x9ENGIKj8 zI;?e=<Hi4$@R`Uucj;`4`5ihs&hU92zkR-BuxJeb+Uu<|m#Y(!S8fV~5`gU{jQ@wR zTHkFtg@9$}VyHkw0m@o##)!iTBW*^t;*OrE=Z{n=pD!Vfu~_%ng0U<tDI4JaV`mfU z52~0dCYUInYf~$BL#=f;Be3&a?*Tv7dB@oV#k+&hdM!9~3wEoqf#A&^MDB2Xc5Oxx z+V__<i^0NNs4vUsbVx@aX<d1Fa`E5?@ZSFmQ!(`;%Y405?bPB;{GD9pE_0iC{u-y8 zA9=n;DA*H*A`A0ROw-T)D{qmp)W(j)*GRHkr<s7xpZd$DQ_{=sXTW)ka>&5Xk5jY? z+$;TE>rB75WH4AL0a<R9hi7m_*FnSw+;@<6lwN_{sGd2#QKOZM-NYDC)6oyOn5xCI zX=IROt?9ys%wBu1DPq)mw%OX*<niZ12$RGrQC}HYEN4ct`9HioJbmd<TPiC%X#*+S z70pfRET!~pAPczto<Q?#&YVz~BHS(ve=_=A1aO#}#VBlt<ZmqYqFCsi83vSCWrjxN zt%6LMVKJm{?>+)8YSj+9WxeDbp&MggwqYYi3Pu?k<u*sPAq99#-~gBSB3|336bo~+ zfHXG%lRhh?>qNYhER9lGpGOp99aTr8WL3H^qZNn8Pr~0056GEG!g!2qiK2K!CVEDU z?(^HOA+su5XCm`L83Qj${K+$ckUI|q#KN`g-yW8Z9H#xH_9jMT;-8W$@oSZ_+{sU7 z3*gBcrqYYx#m}?tun!uf-tOk^>w)eP#oi8P{IPfK_hpyQb4=Pmhi^i54e#lcCLalT zmw!ITn_5r!2C(6G;>DS}f(<uj@N|?qgVmaTJEP1|GP|oEkQWKg3p!UoO7nNHsj<7m zDwd4t{_C0l^5U~Nm9z%|(@o&T&5Bxt?nNXgbE*SRR8vSyw^Cy*GPF9;7o3<%AOS;e z4lK13^Sz0lc0HbEE5Tpc!2_<0q`d1(oXYfSVIC2kWFUR211f8_GiA8{pl&W>t{oj> zlMrP=83#>{xKs5FYMEZR7#Y=imfu95QIzWj)tDyp6V-shN+S8{zG;n|jD{69+9EuP zw`JBQ4hvNLVqJ1|grFtFm>P$Wm;9SDc0wBNO-Tv#CKN9hx~$<0hPuLseh%LeOX1-^ zyA&{sTwtc@Cq^XdBRKjv1gw6qdrf5!o+h#9dX(F2q6lEf==Y{1Z079mJbxj}=vf=W zv|lYJv2$`~6;Ua0rVkQK58C?9^J%jfU7Y#HhvjMmBWw-lMGhwWQzi~YV>UB`-Z$Fy zD`itiBNdnG5y}SMH!IlKtcQqj=6UIosuOg69l%W9h;o|KCH!c^x$s4QT`wsMB@sCL ztXMOLc0y0R6eFk{$mAcxtA`mGF~l6@K3KIP8uLSiJSUyOl+z!ASn%fpyk{yNS53jV z6=?We|1jUt)|fPm)B7X{OEm9~I`A!^B)B<8xz6eqZ!YZB(jAoEg+Q)n{{<|!wjK)D z)d00i8cA7;IuQ!fMjj5LY12W_=Z=IP3SVU^M+M&{GAZYHhh4OyA<6sRMA!=mtI$F3 z3U;Dyw&Rn=E~Cc2*aT-=24{=mAjO9eKL;#*VF)f$8t}Frikfe#CC2rp`(Otc*K&91 zcT|-T$M3=wtnQ}e3%d?NLxxL-<va|{ZGhh`4JCdj!NI5>`0<5~rynBIN9|f>RAOU? z2epdB`v_gcO{<MlZl~7rc=t!$#I*(Vbi&tuXH&@y>FV+U$-A)$AZ0K-@)rA(O=CBO z#eIcdvLpNbrCV%?@{oiu%pN#@b=04%P;vZ)OEk;?)P&V%k7EH$ZZ!}MW6ov!62Q~5 zfO#T;vGzChG)-fQbAEM(YV-INijaUd)^HcKB;*yw8I;m7*BFe293IBA%3h($NSsxJ zAO88`eXmQHJn*WW@iiGOx}${F-s()h?3sg%<E3V9M{T_jScl<%)iYN0aaJQEo1Fd2 z?g9(OYCREQH1ibi?a;4i<jH^XodC{>P_R^$n}3UJ&`sq{eR}sqb~2k8@>Ka2F;wS$ z3v3V~;Gg>M(og@9LQidDWQ0!tQ41{DPq)4DO^Cl|cH{aJqwJ2U;ZwZN!Y;WcN@%7d za;`JEgobVD*~mAXIHvjJ6f{BDmqH0KmQcqm$7y238Z3~-iUNuL@a(lRI{;Ml`-wqJ z&sKu-*BP4UZY4H0EJ2kJF?fvbk2f0*m_ewq)7c9U1+I8$WR&8j_L>1NLgSF5Q%dO7 zCNaG9TY>BHjv^x}Y1^oE0HPKCue_r>v66^v0p7=_hwXI_%Ib%?80H8Fd|%xkqhj0+ z+?RXE8aj<xLr@A`5mgO$pJJflWhQ{>tsuMs)|VK7(wM;A9qw5{i?(e;Rln7`Q6Bn@ zSTayHDwEr9r9y9l)f&$+Oi|ZZKvdR5GUyt=j{x|iH98{sGhv+}_&Vl)>BnLgffwTs zy6TluI4xnBGpy@`rsl5~k@n_3*oH;eOm~gi4(-7h>v!je7N8qH!vN_(lLP$b39x#X zR%7@%S@L_Mir(g|*w=adQ+7)^pOn{EV~DXKbOM&)r;wJyo|){P^x-fdvYk9}AO_;V zeufCMxhq>&5GorCvb8$La~>S(dJ7n$f1H`NOxpK4mfJ_gb}dEpComBVZV=y?5L!`V zprbTTPK>q}{<U-|q6bDLRN@m|rR@6S!qQee!$>evA)UR)!7xKJry)TO=Eho?i+ZIx zV0w+#dq@&&Ug1>kXA5@?{!V~37K|{PeJ2`9qW<L3XV+6?bVnZ({0T|_5)~mmrbO{E z^x&4ScLtHhQe}Qmmw_IqBPM6?cSAsM;2Cikx<y&vKPjKkc@LP@cZTA6Ld@s_Ss5Q5 zl}Y#)gJbuhY(hNi^pw3%kV_e7O^+V_vgtQngN6DrbZiW}Z1B7Cl3TH}2l=}g=3Ar` zf~c{E(xNoIM%}I(T=jZo&^tO8`qxm3C-#8SoharIoXk8H>p&!kwdCy2>ZJTG_AjIR zt&uLO#ZBrc3Me4r3!5$e@lFD$W?Wo9TW}-4obYS}jww=m>cZFH&@BEW$c(~mO_iT# z(jSWFx4;vTW?Jgl(~68foc7T9Um}kY6c!6xw9qik?1IU28_3D&-vbWju?@5Eyk$hk zTSldO+|aF<{Jd|EHG}PnjRR{i(;{iD4iZ*{^_jR*I2ynb>+@d~I?O<Fv8}+=+B{8i z5}D8TLxl>H@+cAy<X%OzJ1%Dn?g`d7tOxSZ;_(E@M5#$Yz%2xkx;wdKHue@F7DtNg zQe|u!8yPk*{2C^wbt+b)o#6fa`5JeY<CpoHKsP<Rbha{0^5X}Xdj=F$8@6Xg`YD&7 z83&UFMJZ4iRcwJ6V!0H((P$!aZV%lRy+)A6!ejPL{nV^5+JOI(>|p+2{KQJ>kUJ(g z*wQ6$s~wQ5x|^etA35e|9l*|)=)Uq*GB$M3jAp!_lA|YtEk*^t{p-ab_;YwtCRD(n z98<l(B;f2kK+R{J7~Qt-)BslUhCsRrq|9hmS|6y>-lLANH~yCC4f+e2FjfX8<TFxZ zYQ<8N9AF*~!E_RoQffU0xm9Th-C6|{o8Q`+gIOJIpa3UY(KOrzaqNRNcBR*{nsBp$ z<tC8E%r&DwUc$*jvz{R}A361h)+AX20d%d_r~LlmIa%~0ewh%hU3~}CEr(&{#Mv$= z<q~MSl9W$CVUc7?7=&#iy||ub6@M%>%A|xw$Lf;7oz_Dtq19xmC!w7EE`{HUZbD-J zcJ$J_f+6BD5J^UF^7H)p3fVrUdA2YEZ%_i{%Q#xN9*+@}&Ynncrq#AM{WZ0EYpgs> zj7lNn_J4^Be$?DE8AE-8GDI-{>nr%b{I9f)Y$BLeQw4x6)PM4y8pPs5eNZ4EXgL3W z?b7;B9WW2|-=OH6F5rLkZmlmyfbjph8*Bye{jU%%IoA;z3KRrn2t4hk{Tm`?m`j8K z3{_vZUuTB@W^o{UWq`4N27nNxUV%Os4KZJA<}>jArIo7?XS&>uYp|xe3Yr!Mky~t! z=dCB~f`eaal9+?w3Rv#0Xf}hzR4Az~JRUds7a>*A*#w`@b|kg+!D*)thBR0fUvJGk zAJdWa%*5+FJ2kqtYSSyMbbsrEhZFk>lu;@|WRE{Aq}B;$=`TRRw0%vimd{js)zqm# z^vLU(7<M-Z;Ln;m0!d1fpKS*b&@pQg2$~jM!3Kq|;xqcC!2$q2g701slg)KIele-~ zm)pni4f%x)AS!|nVB_G@{C2qzPH^S3q>JVd(88w%1IVhNIz~T%iJgn)r%uTMTXGWq zu5O;h0W^3qt$s38j2)eCN^o0Uk)X!;FHKDCAt<;u_Gy1sD-rw+mM*qG@Pf3$FH2VZ z5ok`SO`klbe1~5mM$&&`i~9rn@>jDh%^kT_Lv?AJpMz(0fOe{**XvH^HY;Ji#kFw* zscIvX?FLan1{%*Xi4FBxe(H-Au;!dK@zh>5?H}FldjAy}Keyb!4D7uVn&fqBl9gOJ zQI618&Rer;C7QGsT)o=`zGhEu)aAw@9lc>*7KJs3FF^|;Kr{KjzT1zTDbv)&W#nwn ze?1LI2Na!jb3?N2)+grLhckWtA0*sqSt@uM=O^%riUm&7*%Nk3mnJz#WMh9uCf-t5 zdX~5T*BgnI_Ua)A00CJAP5ZC|Fasy72bht&{?TFPp-Mjjc+hoZ3({0&ug&eM_e&az zt<B25x*IfvL<^IOGYF<)HX)aTEoy075`rX(*yZ4LkrHw+G>VWNuk|8s)TzL;UK&i$ zFRMX+D)fw-+{a>7tes+G#>V;n<2BgAyP_!^j+p3mVRd{oRAGmd*qM?QHvvjt&kYE~ zjko};Qp{du1mojlK`jHZAYPs;qB35V>I2-#4fVj~A_Lq**w0vYilM2I`GSOnz`{cs z?etFA{!$<-5HIf2|3K5W)V&Uu)?v`RQ_Iw8Q?5!~T>6%6##_bR+<2;qBC=O6f|sOH zmde^ElOxTuo>mYBx&(PxoSK6lHYrTO)7-V0G5shPc7lHDUOeJ#75*Xl<6pRjttwCT z?{}o^+MZ9yWiULwdTur@&#*O~#y$n9DUTGH%&v>u_FS4B%}Avjbm0G+ofg4-z1jW- z1nT4bUqnv46@Vyh)8TufO~qk@6W;$D`PqiO1E%ZXXUPRV8en%BW~`@EMewAIUNe29 zxA;P@l$b;q^!}WXXeQTk-O+L$00E8q6J5feTu2r3pC;{qb^CgxdFvW&yT#G$-j{q^ z$!|#X?Zx=|G(*;>3L6_Oo<7YcFA`jIOV1n!UX>pZ?92YgaSwYkKo^E&+o##|5`~mm z$w&o@5L?&oUEKF8BF?scxqI$-t$C1ZIm^qZzCB4i{pD<ZK^57G61&3k9lx!+yQu5@ zmHDDOSpBwEq4hMmtY<^dAp|0RiB2I?D#k_L<;_x!25<qb%8pWi#s;*Dwk3Ej;Zxf$ z$SO^Atfun~DC+G%pqKe}iNxHE0Q!)3vrY<!R49|#@A1)Jt}ug-t5Lg3iR3+EmBJ>b z?ECWToAmI~-3^JgjDZD)6Dgs|R$vV4vO|*;SLO)9C95DZJ-yzR9Bhepy|ilp-Vp?K z957cbf^&AWwP-4)l>w-2)>DJoPh9sd{<>CN`Q@X_z&`tMpr!rc`o{Y8WTjzrrot`* zwJ4S<!lV1t6;LQTK`hW8JvV=rA$bzxT>|?j!KpWY?<-Qm)$X9HvIK9#?wHw<cDB-f z108ljiQE!fOF{!-+Jqc+Ei9F~NacXr`CO>2;lm!G52e@88rab?AGL!0LH9KD2P`wh zb0NUp1qRa{h}3pc6kI2U!DAFyreefGO)p(AGMEz))7$YkY+`K;(t?$;<%JMQSRzMR z7`*qP<U$!1$u(%Vz`a}wjCmi5ZnmW`H1*<8fkVPhIpBDRSJD#FWKMGn-hvIgeXIiW z7dI%76Pu?O!`DHaM+Mt6Y$?WDflx*Z2{w;s`bysjc&2J1F!zEMiXV48+y{l?4Na-u z&&`TCyc~a}LyBrw^ma1Gr6q~hoVJ14#zaof_N8v`!Sk2Pn$c@PTCAX)xf<J115Uj= zFwq2LCARWD(pa9b(gMJu+W|?@0@dKkTz`!cjD@fkM5VMCHHQeBJTA&+&n+6b_S%dt zHX6YW+;}xornDXl#LZ|HJh-TDVwh$YN5-ygHsw;)BT<xfM|X6dF#KaRqq9h8;s?}y z_r86fiN=pS6+}Tx`C;;!?TQxtFnj_kQ?CS)9GFQG?Od!AYDTeSRG6j{crl61ENT_A z%s)~l>#K^igPF<Ij}I$HcFMkx3t6sDP?r<|bO!X6_+Fu0Z;Dt6$eHJj`XQ#}s3!Lq zwUhkTjfQ=T5stEEvC5}`IH957CM1XC?}Jrq(9I83QJRD&>w9$!J)ZngG_~RZ$a)Dv ztfHZ%COx&3qRFyjkRAUWa~ax#z{Kr{UF2-xh#kj1-(>4cjv7u-53MMaMdJd{)Fo~K z>MQ?_WVq_C8W5(?F0*%6zg|Bz@g_-=`WW!uisX+(B;c}~lEVJmvUiBtwIY!Blq02V zr6{$0_~f`9AplOBDtDZ8f1Y>v7r)90StySukuiYJJiGRCpXc~y5;JC8i!|ZZ#=p0# zO|<^rRDXRe-?nLgn=ZmgjylLBn(iYMSfqq8m|%P&^}Cix@MXG{BSPk0OB<gKhHL+r zOIKw(J<ap(XWUqJ9*y>X;LNXWgH!&o)Coin3o7ir;Fh+|00AUC_BQ@ShUCRlFMcr7 z7VE@z)Gq8-FB3TkiMs*%-OQTnz=;}iMVC*+PS1{GyD0bonQ}X3NL=mO-!;Fofg+n; zCx$gr>(l&OSnq$HIS}6+h9eS;;M#G*7dKCtBb9Wo<`1x#lS!P!tq5C*bzBm;`Ex_X zKI;T#8@E&)?y`Pyke{nCp>HU`S@@iNRvoi%8DzartKBQUeNQ<~-VqfF&6F?f-cV9f zRU8Aca{;f+qHtteQXUK4KkguzfLGVCdvL+IohKm+5IE4hwz<z6m!{jNw~B^*O_1c; zU00-0qikz_&JktIvnV-dZjbt)n^GvqKJCJq{RZ3nJ}07(Li3LNF-`%O0>;wdT|rq+ zysd5paTEXO)EvJMjX4es@Sj->1)-EQ*UO+30+mz_E7z~zs`Ld3U$qI|fF>hLGnv8O zL{2Y#a%;KE`xlL-BFsTCOPp@RpXumpwiy>OBoxE7Fb!;P-M4H0IevB!5!~DO|FoJY zOcX@68*BrNj}z0Jk>nuc28QfF#y5*QskUfGbXwKcucucS^xtGDF0j@+eXR(=-%QWF zaP6XPr#97W9SrAQ?~>U#fCs*Bq?kyy{38)h!NW1etz(zMq#oisg*1oVhmwYFkI1vf zu(~-)A|Z!$d?t#&+N$%6O98)rDlo6bz;PxW<@GE;&v~6mcrd5A`YSifNMt-vxIkaq z?+3Pi01eo=-kn4omE;rhem!jezx!eT`3~q200a^w=KDDOKO3T~$M=TV_bZzj{?9$e z-)!N+*MJ0_a*gKS8XC<hPZ97eVof9kGAj%pZ@gpu!X9C0^&k50xj9>_D3lzLN1-uI zit;N0`w|(^>A~}ai`?2+`C=xqXUdg5i`e+()NcqC^28R(aOJ*^6=ua8`b{TRLqL0; zV7-@)%C@2Wm|`IZ1?2_cNYPK8?&A|N*e%dFbY<gS3}wvTZ7h2epj}QOl5CQJZ~m<n z@jQ=b!ED#C2^msA1$C5S(Q|y%v+W^+*%HrOj^b}3cAh)aAgB;=1Rraa;(mkRJ7NYe zX3hYT!~k<ZnBoaDCg>advlIF(>H_y!kiH@39Al#KA2t`+v!q<$QgU$de9{%&%gt#H zU;8~*sZ{j57&bJgP0}Sx;?RRF*$oK&kC?v<8?E3{M($x44!ZyFuwwz{Gu9eqNybv% zyD7oR{K`LDow(lw8jljD(Em}k0&|gW7mL{YhD3jEEmO|3qlFcOEhxdxNpo@pTq1pr zuMQy=`*CDyY+J+vCuY=@ys%FqjvxEwc(c-10gX{{Uk*B6wLR9q+21@Y@FvhJwtGhJ zW{oxUmWj`c!KPZU4&Chrm)B`}{@mX#=`CDVHQ6S&^1gb6{nhbP@Bnk0QD97DfAtf* z+~l%3>99fT)P4V7^KoKAa?`}$5^F+`|IWP4)&n5Z(!Bs2|EY+`?N?#O&_F;uh5uVM z{paat9uYk7kk86xUD|#7m9AswE^{N$&_`{RT%M&FO<Rz*MapcfGeuP$8`?4oI}ij4 zA>ybbdpp<T0VW{T{MbZY&7^Mb<L$9CP7+<BaUvFdy{c-c#=#>tu~0kOUX8ZiE~+~b zG`B-?l<DEhPkTFuQ-k8Z#wsa0Pj%_Rj&aF1VUiRWz)jcMS$Y}bugBTUDu(J_kyx!x z+nHkSxVa2cQ+`p^kYvYv6K!pMuglTeYUXF-&*`qZt*POabkU$W)~7`Wyev60KW|x$ zQfRIA)TDc8`c_kI<t;!fS-BG^FkgRVYSiU!yM+_jI&4i^fPON5{d=bu@bhthGq@J) zj<f=vuvb=GlqSBPYh-x5KOjyY4R5E(#sN?G@IT`(k@@5NCR-ZXE<DVil=#TaHE(O- z_|<dHJ+_)=I3}YkqH)N&=saY+na&IAkCz^li(tZ3$0y&(mk?j5;%4Lz(sWUcw+g=} zf}8CYhWGaN1O#43lR1z9(=7E5MHf#BaI8ShWqRH&Ph*CN-&N|Wf#R7%)H&N36{dfW zveXZ!rk$UHh8Z0#t<9!RdR0q6a2n6LHuP>rpD`cxv{!?hwaZOA?AO%Yw3jQ(Lz{@T z(^9}mlH9GzRmB^+!XIz0zFi9C&LexIU`vy4_DOp|=;}t+hko|Yfl^Z?;x<iQE}6h3 z32oCH_1fJ>o)dfd!R~yk`nJ=Fidl1zMIZs~U}CYesMqv*sZFo!WB^~HMFvSd>eLhy zF=!(WEq~eBxTU`{UFS19r_uthI=O<#Vr+hQiZ;nlhy}6O4pjnaviECm&MXXPhIzZc zf$Y5nBBY$objQL46w_J}NndpxVduaa9IiUM>#QS15VRo!B_?ntFw!MM=8~89Q$N<C zNa8O)IM&Sst57}DU4{sVs;`wr;$TZFGrBw)6)t`@7Cx3KLrSK81&}52>oMqEqF#`$ zq>5EA0ZbU^AM53Qt9D2HZX^L7+=ms3%{ZNsj&n#8qkVlnsW*T5rn^uEF-L)^KQdHF zKUQ3Ya(loqE=@P5W?~STu(9Vb4=OL_U29C6fAyivE~1xYQsd*nC1a`{{yJ%k6O(!5 z<4p=Z8h{a@-ymIKxupsse-Rpp6ogMd`C>OFwOMLqopLwpAX&|9)mcpa%ZnJ#b-}ke z`u?j}814K36~&nOKm&$zidh&4qwP2%Yq|&eP;49%xZ}=6W@f39{K9iEGNV&5SpYGY zFAj4Ka^R<#66)m<bS)Z*r#x+#!aNP@=0N!RJJJ}%ujcy9+(0UN6<SgU;lzR5tu&M? z`(mQ@aPhmFSC(YZaeOjZ#O(`+(ogXUYj}C@W=tf&&JssKNcxv1^bQ7;W4^jcWuAwl zDySm#wPw8$JH(c)DlJWAgAVCXP@@N3^7ira5>%}q=*mHs2Aj=ftaH3bOU;erCC$Ow z84)4f%Kdm5hZY<!<}_njjfDbN7tj&DRo7$(bft{?Kts>TCso7Mi-^et_=iVC*GJ&d z!P|FO-(g#>+ZhA+TEc<YUFz<gLvEGCx$-;Vpem>F^P29>R>O9Ex&E=7daYu9y+DnJ zsU$Qyyg|KcDruD!DVG>^_&%^hI%QNtdzF?Qz|vX6<zYWe29`uT!~D)Kt%}eDJmt+~ zoTr}$!#9iL({ViDkiG9ZSyX#n7>J9yw?`L=LsFec2EI+Uy2ijT0KX~)WLC0slPV~a z@V_+vLo?DX9<TD=ds;^r>mNsE3zcWY6?clHguLASY}}FhX$)hHyCQ;i(EvF3&pC?D z{lPM*RX;Fe^?+~nVO4J#1zTN3)gOq!P%U~RlDzm^Vb1$1Ns{)29RiZ8wbW+%Dpw+u zn+7&gJLE}zbZubqS8@c=eGQZs5A;n6G1gB7+ZHBVK5==^dQR{LUP%laWg%qTp_@+{ zuN4bBwtQag&_C#{#ZG8JhOv~9fkg?xQOMvtzjDa8NDCygEuP`bVlQ-jlgVS8T@%Q; z@dw$j%EyrXvEq2Hk4t`UvQET|&ft7aehn3V9G-=v1#4h5;oM%(`Wn%iMNM~@AQXn> zvV>e<Dd}qo&G~HK?)H*pNa`o2$K%h`LYH@s+w(JtyE|;~a}Ter=<>+rzERTb8}WAp z^!)NXH{-me16zAyKRRL0Rb}DyYzuS-v6_SeDeNlXG_+87jM$Mjl4z)|HStDI3dg}x z8PwebA{$W3(5iK;0}x=3R6#|o0hxjcd;vQWHSFk1)x=0=d?8vQW%diphD3K1(CtYG zw|I7iUE$NJX#~01&w1HSV*;o4LV{TU0kM1}q=^rJxJYT^3BY&5{aMrWuGfN4fmr}{ zCIn(gEg4>mB-m$MAGmTxxP*?}4v4BU>NNKZ(+BRluU|~SM7*Ct5P*<l#5!(fBX^}& z2nq`ZkAj4pA@fAcxaB}Kh)t*3ngNn$a)L^cgh9N<?Or`17}jk6FuJgB9Z2582Zsq9 zNw^}aPAZfJSb`zHQdT<bUIb7w6Su5?%+ukoT0l)s-Q}Lnar)`OudafEvE0mJt`mas zV*`;*t`|znD+dg{)Q(XvYaA~WA=UK3ZtNC}Kg0g=n5=^0gsJr>7`+;$2|)39-^~C& z)3A2WPSCxaf}R@eXxXt-t#Z%&_D90^gQ-B}{4StqR*d1`YTio$3B&g=4>03x%*^J< zAed3v9gqdMG1{^2R<-<&|A(q`3KO#lw`?nI+iBajZQHhud~Msdowm}pZ5wHunSaha zb8+gbuIs9H)w|akiuAHQW@<8^0~V2$M2PANiQvXyCz$|@{7cxuDE>~f<w;{BSOz#^ zLN;VEd&e&ti=QN$Rub;VX~ohmD%fS(IiMK9BWkx`wjep8`JQuRlPd%Wf$z4+6dWKZ zbX`Y**zmiMd7~^$KJ*=8|Jk?4(78z%C%Fz1KB;Y9#_*>jqVsnTT?FM)0QViEvB6F2 zcGs_ZSzq_sW8SAEO^PjHfxpV}H|utp1b%;nt{jDQr@6ZWgpickPzVvQaE9o(TleyV zRb1}_|K)ax^gq+wFYcY;u2>0a?qkkW1`Y?Bfg}ght8j-pv2V_h^5b*wWvt!rx&5ay zIDP**u*wZ>{;5h@(`FqK2c&5!dGrZ&SHr!D&&E>7(12(L4UeqDXuqRhmU|((!5Z6# z3^|LtTJE&oYj#opaFW%pDBgC+D#I-sEpR^~?bn*I7MBxd?$>hip12P8PSdKzZX~#C zgHmjmhn|Zw-;U)N;(h=rll@&e6@OQfm91l{)IQOl$|t9;I@~KF1*{?ll1Voc7Ea5p zbAy)~`TzGe)H6ahX(GJ0HOnLpfUlrWRmIAz6{twa;AllarfWH`4RW49gCg*xqqA37 z!nX9(^Dy@&Lp2B>N6ATVkzn#?Te!gpm?=yriV2bqzd4IkCFIvP$&Bag=O`ipzhm=D zY<wwJ@bz+n8jM0+fUX9=^)}?*Am(X=FzO}?RMQeF4vny>`32>ETB89F%*ZI1JN_vr z%O8u9?In=q#Ud=B;MifLW?5|L7V(v?GwdUhai{r|Ar?$f(qEIx%;dxr(xi0Dccu#G zK`2J3e~CmPI!KWRCMa<OM5$>Xi>Q{lAs$6E(1{aR#o9N<fQmrqSeaP4EudoOwc_u@ zBrmn3wz4BjKU09T8HcA|zY@fv#-mz$*cWS@QLDH6A82kxgjx&&9^#j1yeVg%&Eg@A z0=~=xh74RS--mE2VK16sEIAiFF725mgar)spU61Z@iU_6HF&EjZN2+b%Dc6S-|Y7V z<hIn&0W!#NKtC8a=VeS^5?;e-X(3)jhAOMV++S!r3kzkVNs<tH`@Au513#vs-<baq z3C%=E&oGuzrX*+|kh$Iun}5!47kAuA_6TTizma(w<w$=s&o_f!;Kzyk#Ig@Sj>#Q! zsAbRQ@93674+Qs>cLgXf0x%Xo8`I|7SF3*4!^fu?12v}<YbHg(9IY<sBp_G6%PK|Z zoij|PpuXv;$L>8O1<j7(Q7tfuaeK%CYcpHupj*}_vHR2y`AkQv2pc<JCJu&*pSAfs z2uGFJRmh4Mle&evxf!#hO??MA=YD&N_F05ShY}Yx0w||YV~S%8r0}Jde2|#p8zJD3 zH9{0FKtD5e#Ai~Xa&}4Eu8`}W?D18kmsP$GBf>$LnmGY~ui!{3lc4XO?%=&QXW~zM z@9%N3iGqERp}=9+bWzMgS64<ZhOT6nQDaoB{CS;-w)`1`<mkyUR@Dhz^$m&N2+MWX znPZ)G^p1Ks#yZ8^YzSG)NH6llxmPN3+&Uc`0757VCG;LTZ_GAcg@9aX40(oa41Ktu z*IlUYP5*?gp0E3rLK`TmFqy=4`=rAY@xF8$Wda){g}!?x1dlL$jky_mu!L9C*fHLU zzud+(0&-MUHxrsF|0h2soy1If*#*sLGdSXl?mVoeCN0va-CWX(be7SQ2G#?ZRh6<f zzy+&Amg&|TXoObD`(0Str{Wt!(2_TR1<AuFs6cY${9)ziQ|k|5UXjFeNDjKnviDTk zz}rs<-||Zuk#_~fzN|r4+%xyps@1Ye9~IM|FOVIpv5rVG+IrWPwC~Q2h|7sek3S6_ zSN}&Seizn?-ke`CcFpe+(O)OjO#79n0Hw%wsvF7=69GQCn)n8%Rpsj=BGn~If*p>C zpZC>%InHML+J`qO-eLUz3Pkq7bA6|lWZ6#cUZ)cmCb+t_GQ)`)w6ukUqs`?amc7O_ zy7dBSOPVP44&q033pG*($fT;_Z8?HO(9y0jB^3j<8L>1O>*NuhmsSkFXvK~Mfv7OE z(Uj%its6H?pc|8TQDn`!PMT>6iK?p^cCCkDfA-QtJ@Z@Gku9A%4pL~V+BsL2^J(aZ zTK82*@>KXE&I`DYkYPq?tLLYRr62lIx~2l0hT0*zl#p>m)q=g}@84X9R8*Z;Q?_&u zuDuu2I$=!TzbmcZ%0G9-s`ClU0G%(ZV<%Y;(pVW}6&0E_Tf!Z7aVB7(&5Gdkwc!@^ z4<!jLtet-f#zk>ZyQydydPS8eU{?SF{}%~$__saee*a4FZ-(ERg=E`WxBP@b!o))t z{HLw6#ll&U2k+oHC*DV(-Jj>nin4Rgh$cQppshg-=B0-Vol})5(XouvfPaMN?Ci{N z{=chIsEB`Ro)vn}CX5qrd~iM*?-W}Q_yry-m^l)Yj0GNUc*#kB!jqqw`RwHR2cL0| zim7P4n}+L%%2n(1=bZR)S%QYz#L>V+_4Ot&NGS^q___Xav;LT3$0jWg$M)xX0;@!t zW~Q#Y-WX(Qs2B-Q)H}^M1AGo?uD>^Fsp6X<u{JE%S3)d*Q0NNkP0!nBQbBkWXDjO2 zPQ7Xb?H=K5#87YU<qqnT3r&JE{<<kt;>f4jbQ$PE=xGuW%!5Y?rDwm$;kLhBr6P*) zi-{Q#?TbHKW&Itm9}ZVpZjGhqh2M)%S1qsl>pkc>0(>-x8`0m$1^`*o$NrZaFlGOM zf{oZJ<d|UU<w-vHVcXRj7~vERLsw#_>tHKWs7CH0l`+BY0#cnP%4Nj;JKVGlz*aTD zRxN2?xR3l(5904z{{52Z8JkQ0$3P0A0o~B}tIf)%ZPJA{yT_OA6`HqZ@5^WL&SkYN zQ|zd-988BzO?Cb<N@<|%?$tBP^wU0)j^VM5@>&<>>a33&Q?JutLy^4B4*Jxg-q6)I z9%YzhGI$XIv4525eIct7;Y{lf8z<g$8xxW7FK*p7yFQFW=$)WJ`o8prC{Q|JmzEu$ znot2^>|6FF^}p%Xo&&3vc$clc!x(iCbFM_e;RenIx5==$8OcVdap6mz^SDIKi^OuP z*QzZQ;Qg=`j2FqIW}(w~zcmvJYi*0TSV*AgMuU@{VN5I*9+KiH?J<|Px~_QGH08T& zGO3}pyB5zs_2j6;L7_cs>=X{b@B1~_qRM3Vr$dO`AJV2UmjRFGtA8Sn!q7yrei$jN z42G+QLv|ZX(1qP~N_lKJQ;(F-?Cgr7UPDW4ml)->6O=ABC0S9=FxteQ_~tAXPQ`)- zcX=lf3Tqn@qbPu7weIh;m|ue@b#6<MER7y*ccQHsfx-7miv#@}+$cEUxIdvXiwEKM z#Sdk3;>?LdBMa?+On68-s@pN@6lJ__Gq(NTedI6Tuq5GWU4t8Xh9I)-b-O^|e*EuM zp$EsIjvh`7hBpEdaixY!rQL@W<3Fr)R>xmvHb+9=oaxf2#OR}r2unUtEXo0r5X0d1 zJPro8-_XUb7Y<78)r>cQ>udJzJ~A;&?b1l9Vu~D_#jno&m?q6M{LWlbh96cjt)V@q zxa^5jqn0&MWe<YyWYd{D#%_C*J66Vk4IDHW9GwDO_bsS&2AvOLyD;(7sAEFu9H&01 zG-r6>O8D0Z`&~hp$pt{j$)WIyGGOI&F;`vLf2VSxzaWW>Gv);JrI)BxCUNg5fxCL? zt{g7^7d1SjiK+Fy5$VP3(R<{l;O&WY<hdwyrhoHror^3cZroa4!-WR7NmV4(ba&|~ z6n^J7jJPZQ+?(<`c)>Z$EQ9g+$lEw#x~Lgx^tr>0X?hcRSY8Ky{bKD|6|%!Iv^SIl z&<)>YcO2(m>34u5GEdtcSjBsUjE1+2^E)kZEK)D6sfRB1Eo2!vtX+7h%etTbN%gO( z<nmg6O((u}m}lMEXTw7%q<lwz>@a}5-<XE}^Z#1m(~aoFb@Af^ivCr)lMS|e)hu%O zrw9=|eE8*CiCqrQQw3ng;OzTu|8HCt(zAx$KQzZgQV@{4WDpSY^gwS=taQ18pD5`V zaiIJ_xy&#s)8hZEdTTj~<e%C8hRcm;wOc8F^dfsu80!r9awDq@#$Ot<<tQX2mpxXS z|0F#9ss;>iF3oq@vK0g?eAa!CIHupc)$=a}b-kM%vTM)kJ#N)1%FF+~9h7)IevKFR z^7(&n%kf!f8=8NqJhR@R@1<Jeaih&v0f^t<#;cn0`VJOB2Km>Xuh-?cgoMmT`Yn^u zo{a|V_C2)ej+3sI1rC(y%biK~oC{nxlMgcm8hP>TKRWH@HqEs;-CO85m+KoVCTsC8 z-w+c(YTS1ZHXD<HLrc!HR@zO4sK!G>*rye8admK*K$8x?-V`zZU`G$Ky;I$F;K^n$ zJX<5Jy1LwbH9b34Z@Qx2w7^d{_v-h}Lm9B}*Y@ee`U{bw>-|k+VmjG|)OqIfq`Y(U z#tC`c(Nb~|U17-Jtue4aAYLbSt*PqQhm>GWWrzKqaXMI|y@t!;vCx-#3)u6r(h{4@ z&`07gZZM<m=FLXNH2LkeX$etpKt%E9-C*KQL|*hisYQjftNWs}wCNe5kEFamLz2b( zi4;uvCaV+fmb}%YjC+-K=6_O5Q!XZ-^`3{Xt9l!9++>gp=b93G(%Z8-k?8HKoM{0V zjeW_t$sU_yjTQeY@T=l(5bMGZP?lLCk1>z-H(V`5h)6cK*SC-4WXs`k0LaPX1Ku9P zPY3xKC$0xPKJvbC9cs-o9OC43Um`A@((RY&-9MWATeLA+{&G&cv`dmzr(wCgwOVC5 z<m%M!e}CW-bA1_pKOPJt3FhVTwL*Bqi1=N}ZgShNO6@iHF&uputmM+NDg^HAUQK$q zyQ!f!)QJ;g9xM-Sk|$>Z83k(0+1HZmSDgF;zl57o6cfU(j-KY{=ff~@0y2Kg!lLGh zGxPJjV_HM8VDBU+0OF|s)H(cXL;lec4ax-s_<X&O#k`<0{doLGQeTk2IQ2b?(e|wN zpW0muDeA2DNC&+ey?t=-$p|IN@uc}u`<<E@Ubflcgc`!Ywd<lAaL~aS$cbj<5(a&s zJT3$G=D`?6Izy?)$QypWiErF(YY9MDHv|FQ2M)S}j?ucqL%FGWe%rP3A_qIgMNL-q zB9j~YwV8U^*m{g^Ig<!g+?f9ob37&To3v*t4nMd&B(x;YVpo8|fI^lcu!A!b5)+3( zE&SDbESUA|rMvtH{4?LgeiT|Jx<9#g5)FCNR%}(4x2my%w9v|m1j+kZsNmn`37z80 zcD-5M0jl91Dmo_a6Kqk|VG+Y;#r&Yt9-`k4tXZhO$HqHK29GbFf2aul&bZH;(7d+; zu1VRvqs&OD`~Qdw@h1B3DEz<=jj9y9p=iQWur_@T4CZ$N8b!xjDzbMd&-lbK3+~DC zkN#Oz@oc7b!9TxEk*>R4xGx4Q{yk)OKZ5|7%~G(K_btM9uq_nsU(r^#<uUa&rdqkH z=qnKFhL{f0E;TezTw@FL7wHnDmxV?pmHb9UV1brjXBzJeA>}whIrwziF_mNGc^jl4 zRP>o}RcYb_>|dD1i;v6x@}LfTshC^U98uo(QrGvWqhgtj9Ub>LvQXq|Ybn)b0RbYZ zR<7zRj)6pXaHV|LwL839QjUMx`w^Sf?bHIkLFm)5A~`@y!?HR{xP-a2f*AM(VdD}U zpe%XES@rnGubhsh|EsB!U+ns~Y&lM7P)%r2OZS2RG#ifr@=y`YETg#yQ^_sKhuiAU z7vGwOz2Cmyr<yNu|6bo`7kA~C4z^L^@zDF!|7`u$G#Xz5ONlyZR0;_@Y=c-9hH*ju z*u1Yr-zJnuB%i{Gsf`6&3cP{|!Y>1_61SWY{{c;>3nM9DXLKebI;PH`z_{lYas_Is z)DhkWz^Vbt&rFYv3zSQlA%UR$Z@=0q(=ZNXC1DZcmvn+$_=1UPh0aABJaFd}IJ{)Q z7+QoDW%A?J@~oxae>jOPV}))<7M#}8H_;X)Yp_Y`kM^)oSYD7f>2kI~KGCYB*n!U? zXZTVC*dNtFRZ~1~&vDzM)7X9EVjp;`(oQA-%{ZTnQKr*zuf^yfz(lzai&mb--pPhq zLrx97Y~am9gR4}E>VH&ayY6aYoM&ag%A;_5j&zg?xx>qQ{x2u3Sv=}W&C3v)wT|a( zRi|D3HSC#Bo9*+J%EFB$LN^3O)jM>klQIa(uaa3jl~3XA3vCpz0pwusU?|>oDz0Uq z?4llhcMzEKWIwF^*Rz$xSn9|pM0c@%@enXIcj-jUiT93$laqyb2D}y{fe=4DY+0Kj z`gZUqS7RXKLJ!hZY0=gPK~ahN&F;I|OuDjBl@oDj6!9_AHn1y)_yO;$mNLT_u_oeo z2S=f=gMaG%-J#=x?zNh3?i8r|%x3|__zc0%>4IhDp+<0+`Jxg~7plx;YHCm)=hIn` zB@2<$ctd$<qARnmTAyQY-sI;D6BNDQ2n5Ei?OE{m%T_vs6j3yyDMTHc`$5=Q9vxm& zDjg3*{YE9$N8|noS=zX|W}=4pN)K+E;uTW`1ygW0V_II(=*^Gf;52tT!3Dq*5#~9T zup_+yrcMIHjX&qq!0u~5y1qBG{I+2H6n7B^f7b*Hk0}0P3IyY3kq*DfAUA!)&tgB& zVEL?MHG643W&-|+eZ~9cW6THcY6~mI#+HnhBj^m!R(`8ARX!HsLsY}t2S#X*X+n#1 zJif~XcCVHU@b}tz`g0QwGz5S%D7XzyZ2ovS6(n!)PARywr^BoB*+Rqp(}beO$gdY9 z6Y>5!rbfX~=0btUshLf*+}i(}^61m40%y!$P2DF&3x#PUUC9zht0*3)b(PUq32#;N z9KnK~VoUzIhx7~Aj=n`uNrQyqZY8sPPRj{!P_76UTK}(hr4Su+0R<!%P+A{lTCgtT zAZA4lfM$jXPY*+V9~W!D=+_8OVChVJtnK5mfw2E_knP?7*lG55G<<`sgmXUeI2YPJ z+rOc+wj79FtBA4qnGMOx+<#3@fS(M_7B?HFz7WaDXSSe&KS;W6%<o)_?It^jON#?J z`D4vrF2i%4j-uvW?omn2uP{PS%FQ6eU~}maowAN{cHc{^0Rvy=c}~pZ9eI2_K6$ei z0SRl?QkNn7`s>RVEeF9F3cmvDT8`qae%ZlAH*M}#S+6AX0NKQwf%YXmF&z{e$alJ) zfL3TC`j%_XoQkm3gVLkDLl3Y}7GfaP;-1#_Yn7t;A^O0|=e5q^1aJKlG<OW=-YW>a zoEffjh=nau4=D|f6eP?XHcFL2WkW2k_u!IF8fz$x+Bm>mV9h!U)-!-~O=)y7Qm8L- z^lo8;+irOu3l|MjPBX9t)Douwux*0MZSJzl%A>a)9SIO^0)JvvjHWh%mIs5UZ%9ul z4_&kr7=+18TW6yPZ)+d?+m$!xyjpXZY58*s<fnG7=hl!lq)~)+S3UCu$ruu4Tzo1i z>Z}jZSSegMCOLwgl>%tIcuy$`VbcV};^I)MdoZt^h{wqH_RY|GYNJO0K#<+`BN}Lh zwFIl7_9FEbAJ+WmbCaj9j$UVnXXvWs=Mnq)fCLNaedu~1VJUXDpb>)WVqq#&OK+@q zML*b=J+EtW&B`N9_X9PF)-9eeC|k6#cVI&;&TP@@A4Qcl^G{VdUV3keJSb)HG1jM{ zY#4XEqWbr%<(%weqqOD%pzF_b)@ES=R2wf8b@Sx4WO&`;V^ecM3%x^i+VBU<`Y+V* zr@0D8U9E%?9t#913*Aw_KO6;>fJu25Ry{7IRFLbU$Aih#1|q4njrmy69VN%u+D~+m zpT$BW;c9>Pd1eS*`Y64&qMPKXT*K@;XL->^51e3<b+F?Eaq)MU0VjLgDAhq`2o7Fo zn&SpKuIa$^rOuR-6xk=5Ov2)v!L9kbLzk!!pX^)7WLIN|nxCD&L?WUrcDwTGCgJ!# z)NCN}i?OkkSTpBQ3Z#^ybPNcYeLeUI$1x-B1q#S_;T~UK%=~nV3H!2%z;mFvHsIsw zeU6M(pZ;TJYyADX1$YZ#^f*7O<HqaGZY}AUJBfbv<)y2alQkiT@E&^Uqd%9JW@-h- ztD30Y_dFj-6Q9C6lM0i>+|8S>uhb;$8_U~us5m<>!hMDC$`IM?m*S*>luFLHV}b=C zo>`KR5m?K!+XjW;c5h2@ttdZPlb5C%sZv~S<g<;MFi1~Z0c_kD@j>c76y~+tif7K` ztBpLj?4Z;x0foh3MH2cg9boRmatK*!wQ*JZ%v*^z<EkUywCn1%I?t8)KMNodHyF<C zZ+LThi=Q-8QgWpM5aPX|tw)qkZ(by}vGJ;lG;`T4WlqHYL8d=7tRF5Hy>6UNGCeye z0K0LktT)y-5Z`1st&*P_&~R*#%7`jOx0S;HE6D(kF0Z>J|GR3&JbWfi(@$&{h2|>0 zAlSjR1}7|Nk_O4P&C!#HCPiPV7+Rwip2$auPI!;x(f1Kvm}`gM6N^VSe8Jn;P}#uH z>vpaZ6iy0kMbN{;-14j2<*<FX!M;#TYNWb%4*)X-CWpT!L)!%pnp{ru(z|kNG}8`x zSb}#(s&*!Y{=sUHfQmhI1g8!MD&o6zmiG}1YyIO`aT$?q!dk%NGHlB(nj~9;#l&h! zjjH|269dg4;h||lbGR+&=l16L{i4%X9H|oBWL3{Yi(|I}<DtGnpVN{#o3)rxyI6o8 zxKLyb+(Vlq&$$c1X71s3YX(h5mBLU2Re)LsC5b@P0~v6vR4EH!k&+WQm`(qULhRlW zBPN)LDJd=x1hK0T+c5qXdq^6uVA6?Aw#OsW$XS|nS-s+PL-m+m;X?Fig-gr`T)cyU zRT%Y-mVuEvQ!e5b<#8AO9yXSS;A(7~7(^EZwj+u`Gge@x-6zDV?u?Z`L7f!5l5`R- zK<MM#lifmsYeLAR&>rCOKJ@uvm5`_3HftP6oR_KUkwRtECBdf_c`YTvMLEat7^m3{ z2L*?5?i#LdB`ST6#P<XD)5{>2AqGF5CPIRwJ3!avUsym|`=`mCD)?qN&*(Q^Sg@&q z>>d=|0?($-AB$UKRz#2kpE2Y+Yg7(ftD~FD0wX+xBM}S?NXBu!f1TkDP)RORZzgPl zxjvjdV_+okbMt;uSg&d3@uPx3Q%3T)AxN!+oYV$~5>a+%5Pm06BoU&`ENg_lc8P&H zBzxgVJZrlMsNPKn?MRGP<F4n6@dVWakcC{DHVG)T67C3+l~5pWUENX~A~4KRp?Br$ zh{2)|5%gekSI+~RN>s^In2I@7H>|N)<2HXP=(UCHn*@8I;cK?^mEG0$y|lTKts~+K z2g`-4e;$1~!!Oog<u`^?FjB-X1j^wm;BW=A2BC@JP8CD(CV#$JB_=PjAZPpo6e51p zv6JbyqK4L_W@KL%4E-URoE+ofgql^%F%8JSN2UzpSU<#sq8!Dqm(GBAz|JQYRL;5M zj9hg+_`OU@QbL6WSKmy?*>r?fHj&xfLL_;8o^?XR@(ijpvgig0?Za8BClymBjoPob z)U(Y<eJ_+w$SlxWKR&a6J%6_c(2WjmoYYZ|VY889{SfgQg#R}p8c0Co_}5?9l75<} zC*>=fdLfvYt7|p5v^)9^r%ZEucuq4$PjNkgCwzzUABoNdHcWDf-hpMF<k}P)!dQ<% z1Za`j@5L<%ZK%WQ!U%Afy=>1qbgdHlT(6<ff2VZ(>7j4*Zns=6Ci`E<0H@qUl=yw+ z?!2p!n8u0Yl+E*L-I8Q?LTZYx=)nb`Vn@jETDL4eI9`N4SThB@T_E`puIu4r7@KQ6 zrVWnqDq(7#=@{~sm5qTRxazkUp~Y)y4?8k7sV#xxJ}~xgI@8kG@#Z|8waHyyH^`@O z?ejb7sWH-);3j1;P}v>=1UlAj9?&r)C^Ur|pdtN`LR~gG6B%J0G^DZJkG$@5DM#t$ zg}>_Ynx0MrME-*$LmiEm45`ykRgsW*Gnw1OFv70hH6Z^4!|@fsTE5`7m8yPW<yVy( zA~R>4LS)_+-1v$kVXj>CM?Ji608t&Ax`;a}h?;;?q5zks_VOG86wyg2hYPA!z2=AT zuVz3Ys3sPE_jql->RQ_shhpZB?g$KKbG*05rD5fU-S{~&F+B24G|d^gto%68dLp=E zb?PZAiW9I6Es^+%7)L~v;6`yyD34ru*RR|hrQdrNTBC{GzW<o;tGD<7#gEpttQ418 zEmsaS8kY3vLWL0*0Ihs>oQ>9~no8KehsBh!tPdsco4;~(&pl}D9<T<jk^-fGy#m(m zbwNU5o@){q7$@HO*zr6NlP|nsK9@Lo14;+A2rsDMcGb_wqj35MNJXJliO{jnXtO4L z!sY^(hpR$S)KcooYe<b!t#cfPe_6`oAG<u0QUxyJ0w%G5iBfh11nl8I<Ucd4Y9+>2 zDn7ZogHndCmgK@8C0e-$6nZ1h0D4$tTBURX?zv(M3l7${ZFJT%3=$8Xgy`M-=(85t zJ{dd1OAJBW1^odyo65qi<arIjDM*~6Eyd0R?GJ2T^xN|4n{&&Hlfc6xnJBxYvq;(x zYw2$Y+UW`)brc)Vf&OTVlW7l+X?^y^3M)}I)8QB;{I;g--4mQHQZf7@m7jvZHdzs6 zYr-$KaFg-B&og<zb7UQaD>oTuvkGAp>~GyN{iDA`Bl~8Q%ekl5(1G}*2BfeTRJbam zmk^5Yqm_~$;E>HPJRSGU-_R!Z!}!D-^8C4%Wrhn-0kcxbErB~70}EW?mN5nYAPNb^ z!N-l_cz!%)8LgiT2g@wGU=Z-`tc8ocgJq$k@lTv^VUQN*Ltv0KunUo;H7+(u!)6rT z6!}+K<yWl4<|$_V#v3mHF+qljEmZlTH&4JI&a?-WZUZtuARQZ`&5$zO7fkeKc2#qx zipUKV50pFfj>$_>(`vHWS;~RCa)8^rwgE-;S<qz$4gE^)h|mrP8?!I21te6`dfWjX z@xC9I)q0?oRspkJRY!8Jxh8rEzjW=GqcW97^}miT^^P4bCZTe9@pc2+L+s~_si~3& zi;<nJRP#V@F5HyD1@kzma;owItm^jq;Pe6UqshGNlWv{HvS2pflN0a?^H@&TQJnga z6ngBrTBX?|5eWh4WV?mJO4GE!2ZIRW<zb=d(xFQsX>I8lSwUXEzNL9vaG#z%p^htC z%@DY?gw(wyQ|E5RZp^q?V;6?o(~T6^Tw-C`Q(yb*guI2c0vQTMQm<H~p8bSwQcxfb z>ycl<(l$;<e^C1{Evtz+nr>ZC;qp1Zf)*DTgpW*awcii}qnW3#8D>{HJs6bqm#lTu zL%g^T?Rcw6QWuuIf^ylUY%n2PTza0AUkIi+m@7@D`r_DUj-bpm>G>cgBivwW%(MPW zG4wMxb88~!*Yw6XU=A4ib5GwhmI1xlQzBM(a%vFKpxma@Lq~pwtxjIjY3o_oQ`BxG z!)ol{7%AmjZ`PBQyo4S_aC|NAbP#tJJD2BlV4oM?ws6r0E^eCOr5Xj+_ZrSa;aB0_ z%5^KztLC7=X1FQUQ#_umw^VfPN8s?ThJO3Pd%-SI75%(s^6qY7I<>QB#DGE1y<PZY zzU0<%Z>tEs_6`IzM!+JvVyB#RFyg>V{*<?iJlB^F6zsuqg&nW^kMsw$G_Qx{Dl`fU z1mD>{7qlv=K>Z>RTKV}>C%aU;^oa#m%=L$4vBY)zH-WC1AQ%wDAFfafv;ynz@DzC= zZr&yO5e_ns*<vr87S53OAOK{HCdpg_FJmSKvT|NP3APW_H6ER)iGb*eEAoO=zu-{c z^PS!+;Pas#TJeYOXEK@C36c$LnS#_Q#YZ2YTUmo8@Y8HvA48^cgxB1~TUoRBZ|Q`$ zJrx&BFB&|8OIUe019j6N<q(pBE1B440K~x4-T(sb@L({ToA}VuDUbt|$}Qitt0y&5 z|L1&2y?Y?Y8Dygd32VrWr>ybu;5)x30KwAje9loc4TEj~6CQ%edwL;X`uVInAx?%g z!-XLObYvXTZZ<g^$Ez{=aF6(j@LgRtwasIM)MTWi%HqPMx3kmIwEe&M1yA{_en#XY zq`Ie1&DimxSsV)=3Q&}BKP8VNMWQn}4ZFx>Inuk^i#LNQ(J0jkFD@+}GA<Tp*<6f$ zhg3Jk+6Nb!(v5*ft1e@msLxU;J}S*tV}W5p$b+~7bm`Fy5i2gBpM~e%DN^O@3iE+u zwIWM`LwLQsIMvkJ#j>OK;lGN?>3U2b&qW>Zq^6%~(Xg|>fs995U0ibuhSSQ4qM*h7 z?_LWW)w`2OB`88tVedol#)dn`@xlW&vR-I=9=P$@y;w4bkn>7U>v33>(TVaX?H+X5 zX~rbee=kY70^YcD2?9)Hz2KzN@@X&{E3>$QWZo1IPVy|%pfF<nC7AuY&QI!H%b4H! zO~yqG-MuPkfO#bwQ}3K=ykHMmJkNVQ(jTh7f$iTDOmK8+A?BNgIM&DVD<}P(cI-&2 z<j$=Kfu6M8x@QWpFQ9whHr}BJ%SzXzUb`<ex7qmaC;VAm&}7YPw#o&jOaoL|eBRRM zMlGt8Xlsld930MYCRWIC6n{6T_k+Dkn!cd4OSV1F0H$6mp;LttnGf*7es|$KV+IsK zvFW%4IFIGJxm)2>Zm7%IbWhFHp-x<d<JZ4%;J*^8lZ!@*9Bd;bACbglbga1JXxtEE zkkSrngC&H|cdns2CX+|ovUHtpMspWIZbeT}Pg>TwiEbM#gkD-VuH^VzF1<1~#Ju_S zQW#R&fug=HDThq{a6E$2RjfAKWvClj1KqPew=Zmz9MWr8)6u3#8YV}`$}4vA!Xh>$ zamad`--H(2T0Qe>UM~Cc+gFt~%oH(*&+gQ#4K|r?qQm9Q;rq3yzrIlZJLSscX59*4 zH12MQn*CP>l*TC~{hINY+!0K3IM`|z$e;BHK(*x5w(G~)EOWja<&lK`s^iK8>e6{V zYo|{%xyiD*##B@W%tPP$L=G{C266_Ui>kfxM^c+{3nftKD?T<1D&)>36WBY~@{rl% zGvj1FtwBCLxE4R-Q)QCXLL$~qa9&FtMuxU*ers(|_h0`_I_<5qETo7R%m0oSfwrdz zC<V}eENm|;%&Wa8Nw|1{4JD$4j3<@qBux_p=a^@uqW9Q^Nhdu{b0~PKIxeyEw3li+ zOgzANE&d@jaAM0}Ej`*L-)420{Lf2(#p<=A?#Bq@Z%Fe+9$;xyDPx_&+Z`S&C5^3V zve<5I_j<UR<Q?g@D1h8;Q9ChqE0-Aoe2a{@l3f$?aPeXchq*`~NpOcSj-U20xoOVn zY`4J*^6Tr0Agt!H;{;_)2I3g4sL1aYd5}=5=kuEDY!#?%=pn?dhzmt+)%Rc42l1N= zx+-XAQ>Gg*0MRiIElrnH444kXWZa*F(KAIxDub5T9D48?kvdcka=Fm|2@~;wJ5g*p z9zMGIZ7#*n#Dkxsg;MUHIexV#33zYBdV;4*c}R7io&$+;u<!re`WUamP7mxalIh8R z=t;hMVTL5b2`XU>8Q0v_(b-;1qy8mG4uKufXrG#)rN5KZ{0@`lQwcwfRMU>`9Q!dc z*B-|QU0H1y>&tz|js|sU=FY+b(ChZ(*<jMKIHQ0r(zqJ=fRTcvxy4nodmWQe9ol8& zx>cf|lKNyKEyao`5oUe$X=64N!hT_ou{9Ou+G+G#P8@wW7&9yUIv&m}4-a8Mn+~UX zknajd_}!hb-s-m-sNEnGB=3I{(q`LfOP4rk2ICVIYy)N;xUZ(+e9?9YAcZ5&i*9m% zBgB2<ghyboAsI8do{OdmdPYUU)VZZefN2j*rlfvLz|Al#yjfcB+}T^h<IQ;@!6Qeh zC@F;FQ}OM&2A$-m*q`Y-YvkQO2M#Lj24k=3UvO^!ZGFx(L1tKt#P4i~kuV&lMq795 zRI{M^T*z^x{DZwo<xKt)$bz{Bhnj`0*3WeOkANNBSmi3xqas-v&yY-s)Ms{QPAu=x z&45zZFJ#KIiAqm{rsENpAA*gL(C9*!(})){EYjU9?;r~cx1S#j8={z#%Sz!ox;AF; z*x)AOj(QxSS1?O6ZDl2YZ>-}^$*$t~1kqYqHI^nQ@b+AOQzoMVytOC?Jrwsss}ajH z)X)9*TK}mGllDu&88JJ?AwybOcE)Y5q2cv>)Dk74U*tT*tmNT{BEP*4GMIc(@zK)5 z5fOj(*HG`p&4t*Od~iP9fU=~(9*4JuPGztVPH-z72f`)cqo*8)%6Q_Sj{XrRmeP3g zL7DrSj~1ciFP!TopzqR>pp?ZUo!}SwCs3&%UiCL3%ta{`7Q<&c*&-lPhQfc0xb%?u zo@s(m#r}w^t1x>mJ}S<q3n?;+@aVnQI5qeV7lLyc25Iv0lhSDZ5>;Fp&Hd71!zF5C ztuVUq<ias$`&LmqbjZZIm)0%2dG(b|ejVbROGG5Y+vaZt&;a*lS%W=R>uvZC6Za&J z*ODlidt!uLcaS;`Pv`d5Chv9RMeeWXseMOM&Y3qa=bp9i@Tc%k50Q@{1C9`9deNNj z-9jYDpELN`qy6Dr28AKk^bsj;pCQjtmKz3OUzYa0zKZ;}4)T<QngjqXVwRwz55paT zT%cbiL!#gjP}5vqCgbeKyJN1XDgbU#ETERBT%+ZGr~3>?BXOYDd%yB~E|D+1E!+%` zb%OB?8~os7lVzVhbpgG~o937hkTbSaHQl|B|M=lZPp0plIv1w?w?WC>*@OM>-zW*? zW>4Qy!@dIOuqaX+9C6)<ztL~*<jYp9AeSM|kP8z!K*yjdp`dG|LbhjX3Fz*e=C{Ka z0f?H1^frQ#eu|b}e+MvjjOg@XB`X2E<{EtrqktK;RY@DsB16nM7{(jj7Q<?+%hT*k z+)MWi<|CQ1BU;G|jzD&Q_uG>1=#*v~cpf7Fw~IEfl{o)!GaRFa@vA?BX!hLv-6hNg z>4g95eI>XCWyPOeRQCA52hFD#2;H>r;N?dB(iZ;kPH)HJ8jqNN6cBze%X+o?F>!Nd z+&sR(GPI<V16fKHG`o45JC?GhfV}T*s+g0yDBiJoHc8c5!CD|lfSVP(_t=s1`xf_m zEnv==T*;bD#%|ba!Skb0AE7y4%=koD0rxWtfH`h~P(s}2f`R}BS?>nIi(iVokc)Br zy(Dw5nn9D2aTC5ws}G8kU&&TpEtl>rT~N2OMyu~&E8#f;n-aI=*_@ivF1@ZiNBv#p zQan!5ca+&i6Y$S1tPe)*gLTKomjV=puwhF-nuc2l3gnVv+R8^kQI<DdXSkdx^o(VI zMX(`jjY-+@r^-6Cg7CWiShK2HEWGFyh|I7QZW^-T@AeJMWTsL?tHbBqKQ>jK?@wmg zeEb=qjr!KYl;d6qo_=5x+#I;M;-qCk?+uE=GJG`WCz~?4TjmtC;h)Hrj{S?jm6ltB zxZfaOtFW@()%f+c7mIA#Mf|-qhS&Ch(!eT#426WpKdixhqIa<u_j{9$=y6DYubv|v zxchZfTzD~Na*1D5cRJt%a^}vTBJPf5^=Zd0Msh39PA%Z;UN2*-CGOvpWMkIn<oSa} zLOI>k5i=&a(<+S##cS@sHP5Ps+prNQ=JktuN(407^$7XAj4YtShPT}p(TBBxb;8}* zn{9Ubq9F-8PxxuOWZMiPJ>aAfScC(HbZ<jHmSwhFd<O0M`%1D9rm*~2QP^ctB&@^& zV$<OWj@0I|j$L*ybZKpENV^2jaRqsrDkW%(Dc;ndMwpLlLxUtOsIamsc+@G!3QFwb zpxsNlSv0Artwwyh=nbrT&;$X`(ihYwCyLQP1+$*ygVvZNIrbsVhYNOpQ!=CF6up|b zziDmayp2ys!C}wyE+o6~-+RHOieybf*#F}80)zT}sO5W@o&K}bn0A{0HpJ?+L%(BZ zm{7C%*N&`-U2HPLs{B9+JGg{3NgTrJ?>|;y!iRQNcDIdkBHQq9AS`6ojUD3usZ%nt zm_6ez&+Be^;YBg3vnM6`&>K^OUxqWqoD?#j-mcGi5{NooIQkcSbN=r_XS%q_(e;1Y zx}5)qE%~pbhXQEXJ8p6yf7clbdtuXHHMY*~=+&HIP6e!DXty#35>KMqqZNt=mMp&R z-dtC3PRL|&Nrxk#fk~3w#J#-ZOaEp}ZI!FK(m>x7YM=eH=ITq=Q3<8?pi$;QIn1+W z)nX|Gu2+-wo*<K1M;^bn<#M(2i?LQooQBlHor)X@-w>dl;6nMK)UVd9$(>Fyvp|C7 zZR1VvXn-9}qC61pa}Nrtg3if)1GW<`g`@#;EG#?714*ty&V<SQ+V6>vchED9%VC^A z3O(nl*Q9+l;5B&_G%`R&y}+-S<czFWA)3g^flXAe@5XO+yx?4bLCB0q7pyV&<Ls4s z+ohoL4**<66fxE|z$e_*s~wath@!5@jGH4vWXi=7r+*hB@*FM(^gpOps*ktuFKEti z!h<8@GH{x5c&~=+NW1dA#z+*)Iv{m2O<i+=vv#COPLUqPXRPhDpE$y+{)i9kHeRk| z%JEn8=m|I5aE*}tj$V-o-#gTaMxBz$GGnO~`2!Gn;kuhN3A3~c1QFRQ)ixVd&UhT8 z1&56s%++i5(yvL3u`Y?$LC{~>O7uUcxa>PVGLz2^h4HDMn`$wz&DQV<7{r65N)h>c zdN86bQIMq)WtUHB$-^2S<<ew{ER%?I^E;WM`Z>Om9HC|A>X$6s-aWm@a%BHbJobF% z)dS3zj+9(LtzTKsYaZv#Ro5t1)@rpgXW$VuJm3@*v}!4mW2x?8I-H(K(=LXpV7Lyp zZ7_HR4X;81gVZ<~hFN|PQh^LpHPPhvzoUe3)YC!CqFw506{ZVUFQ;@U8NCW4s59kR zbaB9CQ2C8JlSca;P5Kx@IcC6-uA9k%?E$2ANg?u1%+^IG)u}l|2ILj*DY;-`lYxlE zLS4kLFOpQvm2Dz9@Y0Y8*tplu2e3lg?oqF3pGc{Zcf2cnsjsL9v+Xp|u8AcR@=M>` z$GxDBq`Aa|wLgA?e1^=09HycE9DA8)ud)r<o7~7@Al}m|w5wkV=%I`+f`*}q0ta3w z;({h~l(9MmN!0krp5P<A`3Li@-AvWs@ZnNR@4-s=L2!fD3LYWIKslHiFsbW6)7*Hp z!H9bYI|Ph>kUSvBuIH!2Sv^hRPpE)_33~=@&-ZJ!o-kcb_`)^@GI-$66w<>rMGYC3 z(#n{jf}!sP=#Kf2RHkh}+uQxUy#(m=f((|Q%ff}uV3(-Xn9r4aSze8dau({t1e)P; z=4BXz7;2YJji!jOn~M$?QJp6_MdL+-H4bo`oK)HrSL-ipI$apw479(87QRfzeM;Z+ zYq1*lT6c;SGuzDnRhb{#io_Q1-a66@5C?arJ}9p4f0eS0egad^Z-oM<9KfW4SbfOe z>;NKyt!Nb9U#F}nEZ;>WB`ncakyH~(Me#u0>)J6Xd<S~Es1SNzoizN{y|qT2L>6Wd z_*>!4!8$3B2jInfc<3LjwC?$44$~?W@xxH=o*o4G-@Un&nf=4skC$dC0Wh>TeV8ej zlDCw&#wV8bne`+!$q%2j8lVWS>XL%6;E3gZ@UY5GTYQ|LgwH2}k3hmHYi99f1`K^! zlH?cE_E<=Z?}+M1kFhKGaJXpFN+h0O{`CN!#7%@Gr;5WshuA>Ula!rZRqY$y9uY?o z{ogVAkGuo^(knYhX+<5&)R|OmMGT#V?PT|wE=9X5Onk_#+esJ4RzPTz1XQ3{e0XBV z&vu6>ehpLR!EZuBpm5W{HE>mCPs8r;$Ss7d5v)(9Y#rgfyVGtgBhYO9p&euSeRcb7 zIA2viAOblhdd(XBB1%Y>q|tH<Tl*)f&)%WKDi5c<(c}5|IIBa2hlOZx;^+z1{M5fk z>EA{cPmy%E6-Ddka{w2vlkOF=r|A)o##}w5@$H#(xlFyYr_9FU4BIc<P8}Y8x4ct^ zQ<kpm{dmFUjnUHm7i!M64nvhLONn!oL>CI5!Xi}>MvdC(FVYX$qpM2_(%L;N&%s-e zEiON5+<-z_;f&zbX9vfn^>DSMDt#%ZqImG=-v3YIg#v*F!IOE`XglcuwM9kvzgzbb z#AXy25Rj#GgQ@>;LtE`A-#xuS3Cdd86FLw-uA}I;4ia8B3ar7FsFMbmAnL@fSXQEV zlJ0%*$a=r>_M;6}JnGKcAOkf?!Ur?=S!dx>$;NfnU1-&9*NiEfjiCB*ORu$R*=W^u zCu_$u>|&4Q2V<@-c}xe=q?70{E&mQG2sK(S3AgHw-MkdF08@X}cGc`iGcbMK8EHnC zE1rYgWlRiOrxpfwo^_6tngl&Y*_&;(H{g~N`MWzlGdU&Z7#wX@#;>;;YK!b^O#YzM zBr%Ong#E>Pwo5Jb_dSI8EnV43N;n2${4qnbjJ=`k;F)&y`X_)rU)<W5OitAy*6OBI zgZ?dPP}~~(8_=x6uycK65WjM!XUodn8cf0+>096ey<zgChuGBK%zUzGN%dHDbQ!W) zCgAM}vZS?^W1PB(7yQ0m_>reZOW%fSOe8qDgFO^-m*%ms1trC`J{b3zz2?;i8Nu{; z0#_Y>`D3uRDB(lFS{L0~1wN71qq|!+twXRZNKYyq4!Bc_nrVED)pagyS-|-iKXBvt zgK_PD-r}*9F+5-kY1hi+g=d%=sd!?A*`o1rH+1h3@AR>*34-uxvemHaED*!5a~%Ev zJzB8;{-2`m+gbhd>tc8H-*MDy6#uAJNPm%^kE_@I12N4ytgf46m#Y2zSS(iCXj}mb znF06=4&V!if#dsADfc(f;x(o<9;^SV?xwc31B(#oS5G7Sk;)qw6DiQyRz3tJ$!o+X z1^7K&KYhfn&PIdpwn7DMe6)+b*uyPG_tb_kjJz3{^z2K>@$Wv&%3%4fAKd(zgP0u- zA|hhziqRS)ep`wC4>WZDhbrpW<adP_e`J>@8{i&Lq)d6XM&xQb=KjY5kBkAGSK;=M zSKNfTjx(V*w2!wWAb(Y6{bpLW7&i{xU&gasoc?D|+q<|@qd17zexmYHBg%=|Zj%1z zx^Q5M+0kn4Ea8FD`xj+|G-=0ZMoh?Myg!XUn5+-(orPag=OFgM_!Fi?EG8GoyW~LG z18|kr{gI?}mi*)eZ}=zq37d|SN!33&LuGQNm#pNJqNCkv`3J$4xVB^RrV)Hu8AVxe zl=)WJ*+*ppVi#fvM@FKjUiN>(PxxYB>HWv3)=xTfhNDKV^#5s%6*35_gi1s1JetiH zHHoy>H7G9#?mC0YesESzTTUcI@PZpw|Ce)1*Wl<tk9-6zY5l*Cpz5fx7T0qI`|#Q< zz*3ZoDoef*%~s&5;)+7EheU(;*u9hZS5khH{flwQqDfBfXXrm4Tb$`yO;k9YaOv5C z(zF*)TsTbWFs&0)#zH8H6{`C&vOrdV-<lFpjFJA+jj`JY9aC5wLbg;ePB=G&g#?&= z)V`Rp%3XCG+4=L&sio||k(wk#Iz>a0km}z^stzfwGw}s3Mt0=}9vW>oT1^S!M#EC2 zlbe(=tZq1A)df3!O{LT1zlebs7L)`_cs$|PjKXQ2di+TtEF|lh2}p+zi%>b+<t3J6 zMQ~9R>0EL(UVeRgRt-uvkGIh8UkJcpy5Z-|>QN%t=~g5dZr7&>kgrVS+IDk{EGvkt z>V><{JZ^UFZlsO63{Se>UwJ<(Jh1M0KHE3FpqfGIGn(_^?D~j)k{8jN4dV>C=xtIA z-i;<H@?H{&UHg2`iA*d6-ixoVM3cyi;tcb_Zw>uEOM+iPYE*_+T2p#S=MTJO1|yi3 z<5GWz3cc~EOt$(nQ{BZ<vGAvMj8*owd?I#-oTU_r{30cMfe<zKtP#bM|4?2$z;Np$ zl}O_j-OvhbWy{A6i}C5t1{ci2GQ&D-!9dxI7k#1ZM5}1!ZUmQnKwPx4MKEKrB$>%U zHSg=o1h4lx!_}7AR2uz+>jZRHjltJuymrSN=lmPzTzyHRiDW2FD9{CF33n(S>q`mN zO}%{#ym!@&l9wVw_w;5+5{99t!_)V%jr&}$lz7$=Ok5KddqJ1L)y{v)-Dcj!+*(1x zpmfNkWu3NWm`_5~k1IH3Ttzz{c}hMjo@FNcqE_ulk4wcgmz%mDbOF1Jv(3Th_m|^Q zg|*n>qC=)j)R~lizyaqLm5#ca&Q5fsC8Si7gA<j7pXnK=KYGIP{mJo_+@<44Ow7bd z_HMV{F63m3<Bmx2iLWl~*gr$f%Xc+kHshrn_#v(oMX^&3(NWdHlxtJ%MDU`yU)Khm z9F|{zmfRH&E*kqB2q>8=w%KUX8zV9-q%tx8tMzIad`jPSUB5+O==ild2R@?9#<m}W z|Ls!RRxMZ~0=D0Viu5*foz1$_E*p=5wMcU{Ykx(TONekKqqqb%=L+R<pu4KHpU?uK z_~Foxm6+u)%r$HS(eSSZB>?>xnro5ZtA9{Ndw>P4*P<O{5zu3?e;>p}iYi~7)6+w< zc_XV~r4hypmJm5VL^dBh#q)OSU~`)qMda1K&L}crqf4KgW`F9zD(T6h!QO{jNPij1 ztTUTpfKZE9TBbQhC7@Kak0YG=Y#kU^xW28(v@VB#N27V%)rhCiT{eIK<?<K^>j}@@ zz+T)t_j+Hq1W0+TJPGzZNpPDi&$tP<y(D?u3dXjWEvFvj;mt68o2WPS6vu|iJt`~` zCkK38cv0<Zf`cP~{3wV$0|ApEJ5-g<^H`F7f103$$#8F<$mB^FUI#N>uU-{NUZNs* zD?$PP_ht)6ow7Mnc>&dsA`_PP9CY2$q_#LNE|nWTV0QK#j?4-sgH>C}61|17R_G;A zm7(%bB(^A?oYzy`hAavbOg_AAmXeK|8r)f!$AN!KYp^`+w+i=aT)8;el1`dlctot` z5^L+Zxhi!7rIFDZH(O5ezR6EeC3hmXs$RKjGIDt}20{>$<ahb>2cI{*G$S7qaiKIr zG?SMmVBz>E__B)AXPIiq=?60a)jEb$N85UO{9&ts_VzQSCwjXUChM1t6Jq;zQk7$M zn@e$rK;2GNtu{A*NnVd`C%R9lsYdLW_i6|Giwge8M<_4&9^T|L=jBhOUZ>Ik1gLh_ zj>)YW!?2F!CzR>a|3pjL`8>H({IX@0&wtip>Aeuw-M~%?Ouh@5$Pc5PIH|rQuQO@# zyZ!~!0KVTC|2tu~MJ<CO!TvuAXzng(C&d52ar{V?_l^I{-R;Qfpd(=axel&DVE{uz zYX@sLL&N`M>@Av`4u>4b{;Qhs_bS}#5D?Lrq4V@vX1Vqa*+W*_nBvG|&0>;vWXeR; zmfQ6=@Y3T+jM5%$Ptm2s-07}kgNanOmGC8vET75LLnO#EjdoQ_Qrc%LL|v4BR{B-O zQKvdFm%+Ur{??z9b-bFp-0feS_yZ6>Lpe~kRwTxvFi@se*yD-JHy|9`=`XlYur>F+ zwy>4Y+R=IJzpRU6^o(GC{pvQ#Y70Jn{X`_C`fWueVn&~AL!MG2V_<wHtL!AVe0x8e z<2tpMm9A3z75xPV_8b3%9}xubt;(jcHj5g+6>;UPX7ATci0<`{3MGf3jRMGoCv$UM znsZN;n}5GF+E43px1AWA)LP%(_sJ*Sk=w#1-|E-1`SpE@IV9OBhGk)CsWcj$lh(5| z??4F$2oueB*hSG<vnk?pwc95p;iWMT4xr?GLWpI9pPxmjuybn~k?rC3S!T?3{U5H* zDLNBqNu#lij@7Yk+qP}n`D5F*-LY-kPRF*B>A4TH)}8nBT4#Ny>eSvTj-5_?kQENa zem)Xts||{js}_$~fT4gV_Z|p+OA+pHp7Wq<s`OgfSb+V(;-WpVfvQ=K4R`@XqLL3v z<|xBt$ViM<e_)V~V~I$rqmMS|V9>%6cxKw|(2Cck6IW;z=_61mx^f^bOeJ%Mo@~-C zAd5tOb#YVQoS<$d>0<oya(n#}uE>aR`VWd>HL<@;aVQoI;A}j|EuTdvJjEQD;=4~J zv{Ou3saEF(R(Vyz;?lWmTWqk`^{@2NL~VxT186|Eb#bC8*1?^^7&x^Af0LocTO;`4 zpEeT@pJQjp26wdvahkQHc5~2RS<{Q6m>^~}K{Nd|B`P_8;}o8Uo#%W1H~d+Z!8mcp zPU@?lBnD4;z^Bpn5^LznK4ecW1*s|+puTYb*^}j&2uP7Vrt*>vkvj*bB-Zz_v&h_l zqk|x(njDRQ=km`9bh88HzBtsbh=W%L&Xmx}3a8}8(WvdHpOeQ(1|!v04o-g~XQ2VH zUb+QRF}U#K>^38u_VNSt^RTUr=(nBr!}Zlr?#9zG;HkQpp5J{{PN$qqQZw_R-XyQ- zHLSN=FjZVFFm&TD$><5YU4pM<DcfturYYpIK^9O)rw{?z#uN^CryPW~N8iNUxWUdC z>?JU({UomcO2nl%fb3HUP8<izoS_itws>v7NikARY_<+Vt;&l|GDc|q1U8s=oAL#N z_-(udKqmXR5na_ew`pUq#w{kHh7r?;ThscMJp*JV7b}hjj(ucc8{$7U3d?cpRpeai zF^e%yQqLl~{Cl0sVG=I3Wz^fdYN&h4D9>?CyeE#sv}9Bl)mfZ(8qe<X;{&7JU=uE% z3)R8bbAeTUSm`$U`qvU~Wa!50lMhg{6xKEXz+u+S8;*|9+L;8xIkN$7S`=d%BH|n2 zd6Gq_ON58x8O8t0v<w|Q^uita8Kme|Bbav)EWknJ?(!j{PzW`vmDtolEqEYgjS&7l zy`DL)BIOba2Wn;J><nJ03Vl;1a)M~?&#LH#^tQlneR<umrXo2t^7JiYyQK6)o`Ojb z0HO^2qc!1G*#W~9uFdVaapxvM=n4zOuDJ0aA$33#89Mcwxj^@ihmAn9VbA;r<r_hO z-61~21|8<A%pa$+Pn-%VwLRMu!5R`@G$8n<qbDIBN<+6l#D+Lue2%nA!q+y{c4KUO zDS{!|)qhT0Vt!Eg1-YnlED=W)Z{I<m0Kb=Y0TO=-rq6r#*0!tH&9>YmTZGFEdO(MK zB(CxE={`}>`&&@T%uu$Ov|U69nAhqFORSbz%fkGq`wh4<23~f*kY1SA;vLWOI<mHY zTR*v~m$`f{dna!J&VF4v6g_g^4j=^K=@iM*A5U&+gsyXcP`qON-*t`fpJ%V2Ey3Xe zC=d{F8o@a*6T7e=h?=jq=mxRqbgkEVlPbHnULl2(0hC>zn{5&;7uU~MG`tNIiFk7| zEc4+k^WmFW8xdk}Oj`Ik@IRAfTK73HH{fjF@=oS@e1o{nZcJTEP$bpWGM$FVZ+;Ig zp!c#c{0E{0c_?m-n3gqI(cHjYE_gK>1HKGhTCqpzN%FJ1m<*#5dos`3@-Tp=$4*gI zg>^AVpe$0-c|IbE?wha;*zQ1;xJ=O};8?X>Mjnko6#UQ7U->`7)b!xf2WbTIsDPs` zwh#sNp+B8}Bb+3$*k1$AdXmm3cF0pfR+Y*5lU1x!ng3BlW(aPp%wSx)`Wo6RKX>v6 z7rT1S63Fv8XvtTrhvX$>)3W}Yk2Sc}6{`QkioUlj7J@O)+wsg!5|Z;b?`hL;LopmM zWg*+DNF4ND-b@)%Ff<<wRU|2O1p;6OL;`3mVFCz<i+i625o#AcYLK;~u=jp6XN4gx zIa|fH#*`cu3qN||RNcV-l3v9`tgXu+bqNG4%+BuijI8mKu-d4Dj3Yr*p~7<aZ|4U6 zF}I$`Fzm2L5M;E@=)T5*#_#5go2E-eEyY?5b%HAo@906zrMZ-f$|PvIf(B$U|C6Cz zVo%wN_#5Xr`G)4bROe#`xQ_PNw)K+p4LBEz|J$q^$;;d{RdLodT!r_9s4u6l8hwo= zWJP?h{PVzJnFIH^@%Ii-Z=dxdDX+M(+XALnIez4LYk&^-HAqS5D{nE+X#o7$;L;$v zmwYK6rJU`QA7CyKJM=}|x&gRS?%lAKE>G@jB*ffS@xXUhKhwbLHy8t>9qDs3P!HA< zM~PYdw~=+C|6(&azzA`Yf``*WCiZYt4U$tc9n9J^#7WP0IT*cqOU5G*WFFIog8;l; zaY7-kwKC^CFh3W||6$+giQ_iNO18x4;)ushki?r#OFMaY=9VJ?vIYR7e+__)-RB-d zxW+{!c49nKC3tUVrmezZlGla54yI(V=J+y#Po%Qam!_BvPhD%4Yk-Avi#3Yi&<pBU zlYL(qlrqEq#|>r{*)v^l&(kSvCU|2Lw(X!-v(F27V(h<U{^!HGaEVCu(D0YoHw$E# zKE-qoXQa{AF0!85E#+;sj8b11kuybmZrzaVn8s8lPmk&Uw7I1+G~^!4MUSPZsd*vz zzcTz!74GSOvwi%7E_WNH)oX&Fr_o`7K&8zV5<mi$d90l`ITCljs1>GUMJFVuOb8mi zGw-)OQO#F6Jzr7GOYM~TU{HuMj3fUhs-W4jy=>MI072anZ91COt*~NAlFV7KyvIN! z$|j^WYp4;#qI_4fF-Z=_R8qC89q(IZ(O&S#Q$OsTP|Z%gu;|w%+1UF1YUq(l3VGAi zA_M@WBUKYCi&Qi0MY`$p<L2tb#6iAi^yE(;4ti(hi^>2zzV9cE>ioAwNj9_k|6K2t zsji9U$L?yAB+8^eKB+X;-)?GEN_0v`pOwzr=b}nyYIT3bhA}n=n!I%hEi$Y`GBIwL zu$_E{PBA2r#Ryb>otSEj9W{%<1ed&Duu%e*#Y|mIOP@<U-O8<1%S{`kR4lo3O$kgg zhwP`LBI@;bD}(A=Tobhz>h7ID9llGAvM&nk2n-z3i_cz#YL1+Ki21XjzJ_xEiNLA> z8U^odDk2=_OETRm&C#Z`@{>&T9~~ucN?zTS#cIgJ#g!3jYL(Hqn))ZQ_*G3X#`%D& zhS(O<^M{4TM)op!`a*YmJrR0&db!*jootahIlWwLwtl^viKeFq@nVjB5s5>u7dY8R z__Q|&jqO6c(Y{AT$L`u-4?;RUes5k>`Uga*A*&P<=m9kKN|k*Ek!C${%S2tA^ketn z-{^*|<s0gc)|g{t6{!#cN}>{nF24axgW&9sEn5aBr0P^k1Q$vO?jQ%7q`^0eIS&+D z#L)_x=`UGUF*lL`TvBTN74s%+-uL~ksSBTsGV%Jqk=hyJ2O58)@(kZ%V{-#E(#DOV znpQ4h>?NIcUz{I~=I1qACT4-PH&F~^qETRHTT2F7=a81OsR}Yy-1oJX=}!Uc6p>8v zH54FM4oxzqsuBESQaNU>?fkO=8pJ`D>5f0Mg;TJqE8g$maKGz+%9YNnXi9$&rc|7S zKdDWXD3QwFZ9q4mp28y|xWyTC_*oQiH|wD6bdNU=r2Fs;Z!9v*^R=w@GAmQ_yAPqJ zfgTuPtAwPcHMW_)1{u0c)@1+&zFvB7>0pAl$>PXL#Z5~C2<#>M1MkF}WFCqqAj{$z z&<ZGZyF5iFMDjleQdm&bXxM01T`K6!6@A$y`2+&hz+&*S$h`eh6!b5se>wyEZ{dL# zi?$%*)w~O*9=v|5v?0)<sRSq&{mSZR8E6zrbuzY)sD_j813IFPF-!v>EOEGWGG}yl z3qs0%aeAe9YFK-eRJNL`O@}9XU8&lH7PHMhDAA~Z`$3+~nIsfTc4KsciPb&hEP3XC zUsQpaWep}bc8M7i9y_;}hue-kv;!3d_8mJ9VcXcJlo6oyWI)XUgQx(zfaAJ*dQR8F za(819-;<#6&j(JQ1QP%Rz>W4FE53a2L!l6+*sYujNA+8o(4CU(naNNBm=6Rht@*_N zo!o_;vp<GBHFBtl#MTHFLu#Pt11gF=RJ6!Rj?Reeg&EEhaGr~Qno;0iwuZQr%bT(Z zZja9>z5B4IAHMqoHNapogvKEFdqE21?(X61QBq!**y%t&ZWsWiFFW$ATjbN7Itph8 zahq8hy!dD2bUb>O!8(5}wmNWl*(Vr?>;SnLpIuAkLk`_?LGiH4lJ&ezn;C4P1I$+S z!I^l{TJ_#uowKv0uqd};U2Iw1(<X&5L!TO~$P@<G3V`CHBq@l~CakT|g3%srsc2jV z-57(0bH(5)vIR&`HkUwA+q>zB)d~W#-WO0l?w=d}ivVF5k87r*bXtC5{pch9iv?x; zyFNy?GehIj`lv~O!U8HHbK1CG++w$ArOG?8)9gwlJs(%v@Ka=9u;3H?oahyiMIri8 z4lZZt?X3Ovy0tgVGrW0%VL-q$^>=x#z~OPH|H$$;bTj~p&47{_)}sKEEFDttJZfHe zIVlJv>OnVk01SzYYRWco!F@=F&U#50%&+d8F7Hv{<De9)Re)vk4tE*Ok5mPoS5rJO zm95Ct;MF<|#Re|Quc(<PkXjX3Mc}fBtLVBmSxVFF>_P^Nf8U$|IkoDVw#T|Y0&DQ5 zHVpq6OdVhV?WJ&sO3rmUS1ao++cpCvk~T3E#eXMon?T9XJ>V3-h|}f}rCVG!Wj^c& zk+5Y`3;J}6$n-6(L<r(+D9n@W556&gvc`OAa7S0w0{(tEVc>L(0B21Lz8`T0#I}T# zo*z_vkZQS)Ik?uv?F{;si_D~o2G3b%6Q|byuggV{>Lechu6b*ZhXnXV{B3)%JbT!O z2O_ZJ9&9l7#3szPCmRZqvo9UT2^hF-n9LDy`U||o+*gKhm`zwYhK)vN!0m#})I78$ zpHaN09FO3i-l&G-l-uVi*-*kSuw3q)L1fKQ6oETODVkzGNh<bel5Em0(I*xJ0HOiv zO$DeEa-d^VPhn4;#16-6E^`yb6Gq6HCd#t!WqF3)Ysx(UncUN8D$Pwwg_cQ5N#lsG zLObG(A*HVjR5ib+oo3SAvuMJ&C<rD2F+i&UZ5ycQl(-?+0A#L@g_gNXuuJlm{#GIz zhCJVHo%vQ=U)0A&CSju*B+U1_@0Y-e3j?zJia+61^1!{SNoOaA;J6Q_jp__TU3(<w z%T);pL^Uomq|@5U;eq4v=A5q%fu7A=O@dsS!VRaE<wcTG3(#2~g$&Gw{g2W-!R^>; zDM!dQwPeAZFqx36w*VR%ayw@l@igr6I(40%8~54U>IITZB4)pe{_Jkelgfpf{ss8^ z1HyQoAP;JU6pKW`IEPIZlM`jfB2N1+O}t_@fQEQYG}F*$Jjttm6=SZN7675R4wXb0 zK)_!YtoBPA8_F<buV8y>Ic=4uuQo~(HuhMnzA(^N7D)xX#VGoXXKw`K9F=tLz1q8| zu8OjHe|o@I8h7>$?HccyytPS0jshfAZB?IM$6I^fr|U+ArH?h^T5JXA2om?nOr6yC zU5}0oNkL#K>q#tOZNc@-v90BQUDBO9L2E5Y^9$r}h>(k|(PrB=m*hTh#@d%fGqP|a z4f%0(qXYpGkB6I(jkDgHfi&%1`u<6yLcv8?)!ejD7wW{UQGvwMh#4k7fB@lb{CDW- z3(}yNn$JWj#!P2MU@(xNKPK(6rkr=o7+ktYalM&TqqkRbxVHoOHQhb8yfSY$5<`=2 zY>+EO=r>)mY|vAY&3iuAbcJ2(rniNhqplX09~c|1GT4$yiq->K#Kc}bSOZ-v<HXbR zuqJ45unuVx{?bX-e?#O~DgfS}<6h>A@*|87gC_tcf}or_{hdXNrX?eSeW)hdx!bef zvx_ZdQswJwvqu49ct}_=4GadZOv?|(zDRyQKx(WG9fuvj^Qr1{K+zbSgk8<+6pZ;8 znH;yStNC~mq5`Kg6<uTVLiJS1i?#>)cc@_2k@sNJ2fvlALx=Eq769@7r)<uetpL_8 z<e0L3-b?Ab^|YRtC5V%Du$z3_kS?EWNaN@o=!HEtIKqB-jk=rO$2~9qB#`_Ku?dZI zk|<Oc4DZJ=xsG^)7;#S+DdB&3kzZVpxGB}oX6A(e=#3?U-=Eu-cJO~D4q!4|(ef=} z>;%ni@L0Q|MB*HldjN@ZoNh{Gb=*oXrd9o+4b;w$xN5j+Fs+!=S_Q5P86LkzD*PB# z31qztIufur;Qy563j!$R+U8wU)ofjDY@ADI+KXNA;z||K>`D>TX0fpkWa2ooM+8zy zbs34=;%)iIr_DFU4v`s0h;!77J`GBQ90Lzkr4nY&lxu~@w*dNj`j4*Gj0_2+m;lxz z(BQ6^Yod%jgTEJ2LVLD{;5i1XOua0!ptIETo`@zKk2y4u4YDnLpC-Pe)2X5f=XkUj z9;9qcBOFr$mP69f7Q~m8Q>_=&$<$`DjTtPtP%scLf3X4>E-sxwD<If~QW@X6k^#S9 z9p(+2IeA+X_W(X|46xsu<h?i!?ms`A3n)(n!-*@j(Vw=yy=W(X+@IADIBUGkh%eZE ze`w7J3<!tMuDY}8vrtyXDqN5JGc&*Ru2c=Ha+eZ<{cG2ZFF~#!p16eSGEl+|bJ*9S z*QwsT$3XdNP(yLZ34HE;gMZ_JFB<#~v{*Z5lT6K>n*^jHyaBIWfUA}C%UpUlUMwkb z&OGkkj=VW+Tu2puP#w#yKwelJs}-?0GGE`-dTAwg6n=X1m(+*$B_Veknt);GtaDWM zzs82bRA-Z*iGQ{MfT~}3cFm?-x`iY(;{|D4h^43E8^kzD62$76FULS{5&j~xJTQm+ ztTyXjdjr7Gzt65N)Prb4t%qcy7(0M!ns6}SL%1~q8+)G}e{Z0|O_9dme}xX<yr%c} z8Z21)wN*}k6)oSRE4C_L%zHQ(+SPX-`CFY<7hMVPESXmBT`q4%C1KFZ?SgHC`+lWD z)A<b%Y6EW2u%9np3Hy9@oHL4%mIFZgaqSOQM*$AS(Gxf|;~>U1XA;n)wG8&@CN-A9 z=$OaYyQ)`BS4^r*gO_-2Jf+`6FfNSef7!N6gWC056}3CTgR&$v$P1|E-h}xQst9E3 zF}gUv>fFoh>E-g^t;MqLc;PSzoXp%E<c%Dlq@oCJk7m>$c{p+&HS8u)T-U;ii*=n- z`T?yx!rZ5&$O}1J>Ia2eiO<^=VMzG(#sS``TNoV(ZJgAH>rKop;V4dLSH6giI1JeS z9(@?G^=7|NTZBnEvE-ZZTJE2(#}EY&+iN3rn0hf?O(1ayGSk&@e0taaMMPxgM+jW* zk43RHBod6AnP5tZtCN>9bt}&pP1{HV27tIwidyEPcKh~FaPfYQ`wZ}512lV)6|_{; zBnR$6R^_`L$U7&Ps2t5#{D(Rsv~ILfW+d_^yhyuc*mwi2C=ba9($7VX5L_!xAH!l- zG~-pgdL^C$Yh->i4#=DbF8frbh1MNgnT{T`olD$(&`3Qzox^5|AE++e@9wCL3c%;7 zV|{#bw&w_RCXCb*a+QtE@3jHzfC~*30$jn0cgG@;aC;!g>a(;v;yW)D14-8`*#7da zm#A9$8>AlvqA=Qw0gyU~E_XsQpYc5Rh?>j&3<lcPc@z%m7`A(3@bmrG@iucGE0kUA zAV`(VAZ>8QQ&~j;4#fBC)%}}bI>2xSlx|O^O6kVhF`*3;3_Dy)Y=ie4?mIMALAj)k zV+EC%g`3p$hSu6fw>5IhozH7cv~gBXw2P!UE0gbt?Ul72Tn5a;_sU;THI~a*)cY>z z$4OaA*dqs<VcgU32mT)hUhk*Rr#`;Q5e!w9l`ohWe@AZGlt+Z(HM4tALO^8pmh$#8 zeM+}K4d#sWzuIDw<W~2wkxDaioqP!`JV8i8$h6sHkV|dOD$`i`=e$q6^34+TEWYU} z^5>IvScL^`p!9%*-cX{tu4fH&^M1gm4ov@AqziM75B(YvGqTf4kh{0=AkGk?C234a zs2Ha+j9pCol@%&b$hL%Y03hX_ZVnu)g9mV&Ghk)!`=|u5l5T`D!fPK1?tB9=PggAx z$nWL@Z<3@)#w!tB$mmeFcyMeNm+~H0`JD6(Hs^+;zY-?1vrfElO}c9)k)mZobY_Tf zSTUTzUWHkfJXsE@6%b{3r#kq%mA?CV$@wBC%sU@gL|W~-@ldFW18n5DDY)Q=xsOq) zlYhlW<u@kSQ!&4r2DR?SeT1)O#w6)WsL65;{u?zE9;VmJg&qblj4N#5(w%`Ot2S>u z7{>Yn15<L{Ret8mHqd1yAH*3b_g9=aIrfIau*Vwe;s5f84n!hwcOt!NEaJ_eG>(lG zb*M$W^HElcoY%}|1Hc-noh$fBgXX+etVAeuSCjx}VgviPUU`V@XJDn!qT+?fytaw6 zI?sS7p#)jRjP$sl;toBzZZShrVNAiDSp0!1(GEOV7Lv1Jg(P5P@BltFQ<2t~+6*$u zsJGA<cwhT^&Sj<uMU;f&!(FTz^}H_sR<@#)k>8T|5mz|Q28>pfvV7A^XG%CPGo_F& zgo+;|ip0`*+Z1Cw>fuYcAry1GjTy4{zJYt*LtgI8W&ZnPNokc`0%mK?jFduTFgg&; zby7d!^YXnZ9goA6ka!b+Jb4akST~_azRuZ0O4}ZKf{|}JyFOAUq`_AR%~edOgobwA zVg{&@uvZyP29RJEVNv3erk*@G3_}rQad)9hA!S#iV|3y%C<Z?=K)d>cJWb?GPdi$` zO!SrE?vLS7u}QvQG3E9{Ty=UAHgQ6EA#uCU{^|(xp;!d*OIC@qgPm|_T)n?7Ft-05 zP8ZK>s=t#>H3bFS%8gVH|G4jY%9t%uo4Q}BAA69W1NcERmFe{rk(~n!GF6&oGqer< z;c%+nwh(QEu*Fu7Il&=$2Q@U1R{J@g!)?T!7#l}ZlDtOb`f2gFoQN`PO|**(W;GTA zI)--yx1x5!)y<H+7o7H)PGfQ=vK8g#OvA*5JL~<tCOMiiq$r3k=3wgyGEe&ZX3R}u zJM3GO0er0s<B>RAR{zjcho;x&L68C+lXIzY-O3#`@%RtqDk63UjKCK1q!*kzJL>T9 z5sm8Ri^UyG)>ESUb^zaoohL+L#{-hgwb}eiuv^;H`t*r4+1f<c=itYT{R!OTG988z ze4Hmy3s%Ss7uCmb*j~cd3?~uAv0_|yNmxESfYl$HJ;keZ=j?T0i+ZdN((_Umcn+iu zyEInw@wXnhC0j9_fHi5kz}XY~3<M2o@ny4LgdtWqzK`G+=i}BV2Sn6bn3cD3*f~k# zR1S*@1n8#sz)dT@urMHLqCInw+&K=GajbU?W6-Z~aL5KQi5jetth4wlNN@hYi%r+N zfT!hjg0<`JVK#czNHUvwSME-0G#;oCW&|SkG4S0e6L_s5csE@tvURoQes_T$#F6BU z5)4_zr4szJp@|XnH;?Uv@I+K(S!^w?2iP4@l7=*wP*=36z-!8MJ(HIRslyd$fH+93 zBNE;Yo;5CJfbsXK1$CBik8k)xP^BvnU_Bf9W?qtxU-?=L5xDpj4J?n>?9ZlS?Dy4j z5$#I<qO6NBgfktGgZTL`u*Zd^E0hTid``kq-X(WEM5RVl=iR_kz3gKU4hb{y-Xo2) z8X3)KH}xiIbyoE*mdvGvoNM8HnfumWcN%N$#?S-sydRDxq0{&!v1KF8_`^O#z?l}+ z0iIf!iXU|22gM(t#eq%3Iy?eAhpO}f{f<1i7*kZ66-A>36v%{{Lt!sjjmDaB2vSz% zNcqGjOJO%enOr`S+TmQETBZtIL@2`Q`a-jU@(R}!55wl=@COK9Z-eM*anVph$H{8t z(V;cChB@@o(pNN^Mwz=<Foy(3z`I?BRWJH`WTNGbCiK(tZ@l>?FQ+Gm$8p>D4Anm^ zvIa?ftgY6bh3}jmr-G^#aYOx#H{jnRobA(E0vqCT-F|{|Wao1V)tPDmWI2O*dBZOU zNo1xDQT@84C;pBqx<5O_=D%X{r{CF;Tt)4VZ%A^79E&z|!a@V3(V%=o0D+yVXe}@i z@nze8UBR3f@0CNZl*~*V=0a(ouhkED#iOPzZnTRG@X_CQqO<dwF9v5en)yDP#`(fE zt)WC@wdrnVST9C4v-;(jW;<6Ian1$lwT=efJEj=#bQUv_f_Jn<_wu$%S@kFvwr~#M zu61yn;;f}9R{K^{=T<e70HS@=G@L;WH+N@|>>3hj*jf;ulZuyn+uBN6d_dd52jVPU z$oa-PH+l`A>d>cI@@!7@E?AODs8DC!-O*vB){Qlv#u@Mz=Z&MDe%-X!dCYE#*AWr+ zg$mq@&NxQ?>&1z1+2)NzsVr>^o+DR*Ym%KfF5qyZ0NHx;YZTNQK+`;33oMTljGdUb zor-DQByW@coWfEx9KI$l`4mnYF<Aa>C@(ZZDzDp7RAz7)WaXTFZyhjmrz7o#w4(>< z93++oyf<^w)N?v`Q0}Qz3to&ynr1r|CgN~vrZ=G;LZX!ZqX=;8bZ!QYi-&S8cvXA< z;v{0^L$QZOMAEA{pdHLhuUz(SY6ZF!CQzS-chouYY7_sF^Y|ylHR1SgU`JW9%+Y<z z9Ql_)$5Bgpvrmfw<IWBdvVx6AVq9W^0EDk%(DUAx!&0{lm65_|zG5FvMVk8d#yit% z-uy?>nSM{s_vX>=G{zT}*y5!4@%pR2m(<nSNI(|Msd|MDKz-DIU>&heub0!;>;Cys zL9&}IZ`;%5YDX3l@|K=s@DYgf(W`gGILDrf@x2uLW$J3>p%MP-2quTj9p(jDO*$|O ztec)h?jC_A;cIxc_^)P1o}wd-1CW{xJACCuaXRa&P}a7=iQi7CZ6fWWZT00e=`xVa z#|}X{n_s3HKxLF?X^)QTET&euu!-ebVt0Y74*(nScEiKm(N#sDSny!EDQ2#%Yqo#n zljD4fTfB@EwldjA`lV6ZYJ#~Hd`4{WCI0>`)1hI6Dd;?nrnYoSO_RL^XpvgkR3h+G zA+UtLS|)NKg6B5hmR{32=G1nq_>pKG8H~RjSlR0Yh|~C9GhcgOXaK*atGu#!=m-$^ z!&$izGIUL==T06_OFT<cBEEK$D`MY7Mx5QYcJ><ByI(PIP35gCpYTf$yUS($!o##B zngeSx=`83Z#_Q(&Vy@}v!sKR6j5$H}I#2CB9Vbf-YnzNQ#r3;=ViCf+8;))wO;w0d zm$701JPF*=nPqjf28dM<djB2)-T3`<<!}+Qr10e?kc~=`6PVre+yl%wY8pSBrLA*@ z-}j7H_3T5xJ5`CLHAc12ipUn5-5#s3E9$Y?S>}0r^85>1Ea<z=aqr^e_FdE$usbAP zMLzWM{BTC+(CzpW!fY_nvJ=;($grMr%<b_awQV1(XqP$OUCixt&Bxdk)TZJDTKM|T zt2^N3nbz(FkBOqG@p%u66bSqhzyAaD-(#gGYO*FMSRf!;G9V!GH2!N~>@)>v5H!H% z*weN?qk=-R*4Wl{6%d9j+r_{s7mmv!goVKz8fRizDaR$8Wex7%UGJF;Zpm@W7B7jh z{i*idQKMbSW#%4w(WIO9m7`ewaF0LKDaR8vtWK?{S2NvGSGl>Ot?2N*YyTXdUw?vR zr~KX(+2HHEh&ItX&)TWj;alaqRj2{ajdNd-+o^c?T7TS+a#smL5!k;L_Wv}rGdOVn zL*}8{TUX%TUOTE&)E?zi)slDmzn}jRiF6+RVTKxh>AGs>{(Px-yFQ(Z8p-n{U+%FP zVy;V=L$8`pYbh)&DGVubj?Zmd=!+-EH=UHS#fSM|HB)OMBtsII0aS57526B`7Wse| z-VZ@f;3Z^RK2u*zb)S#qr3!R@=FbZTYqo4ML8YsYd|Iio=lQtiuDeesz6<({MTx6W z=JOyLFgl!otO`0yc^2N#t#igszgU7nl`_UkIWVu$=&c`gE@_j%GqQkF?WN+2c++(m zUb_QQS`9R$Y#^9;d*78es}2F)&~1m!<OL>Cp$5MWi+)(F7zyk)YJB2!=ChE$hwl$S z@Peq_j(A9R@4n5oCSjPO3jK94RF$o!L7+A3pN}#H4t7{UFCQVO@C#RS5{1q6@T#+( zQ*TPRxQ=irqJ|GfYP!_#C6@$reiWWbq^7gcu%r~36OEv)h}mhE8G8YQ3<UVWW~N1? zn`yc(mB%U7^TWiAm!zQdCURx_sG*>_+zoJhnf98%?-;&{CYkJ;DUdyG1$(IV?M7L~ zvrpTRSXbU>H0wus<EQYwufh!Nt%wRC-nds#@dol9(80XP8$o}DN<7$=*nsN}zVfv; zK(^w>pcMKEXM{ukVUz(3@wX_3k_7-ED0j|^AaiLz-x&UH|2{<fGiFh6I5r;e&&Y0k zH;Xp|0$fVkFbE-_E57jWfYcHcgJl`JGx!)X`3h=qk3Eh9lX3h{TZ~XRdx3r=!>0!g zLH(6W=AS^NFPXYv&jbP88EMQzjMYXbH%_Rl3%kM*l7heD{aFC6z!Y*Vk+#Wjpg5gV zt@1kd9BT(gKG4zt3Ktk8vuRHRzHM*?D+^d%%K4{X;hxZbCVf^CisWCFK@5k3vbdOy zj`7VzHY4psM2{B<Hc3fkTUdyJSqFg7s$L{K!a_(*Z=2*o0VM@90g9<gF=D9?>{skX zoOmK1FoE*Rb{)X}3|$h}YFDEb8~%eCk}NzhDsupAqm11*Jfu2Vx>4z1{HaSu;}bBG zRbMzIEMqN?9Y!J$LGBDuNF<-Levq>`G99{wj4WG7p2KZw5XNPH?RWuoMf{maXKEgW z*P*-(Zx?PQP7LyIZ3A#eN<vn;R7;0~?)+Hj8phJI2u^_H?QS50#o+y7-nGyWD58{N zP>O?cq)hoRtMv7%a#Y68k4UrX)q#^B4~d#Z4BmLS%Nk|G1R<0<zNSQ``n4fvECduJ zB8|RNUU5AY6|^U=)DhCad<7ZX=}V1lAp$p&R5%k+x=6H0o}Pnz90E03{M?DiYt&{Q zUzgv<`yk+A*h@-7;On0gJ<T<nj6oe#pL0iT+`KNzQ8JbEZ(Wx~>e-vf=$-W1^VLR4 zwiO65Z>{YW*929WDg&iNIUAt{=aO{G&t$5GA&>oH&8x6GbBj*?sjzDv@8(uZb~b07 z8+|Jh4aP3L+GW^L*(AaB3V9ZUP<U7=)LmEzlqkTyoGZ7LQz_JwBWoA_Zf@^JdikFQ zTGz*I%J0pOk@wf-T&ks-+gnz{ciL&~zGJBjGrHQ=qp8^I3{?%1?EC(r5(DkDoKgCc zLtkt~cRr07>0@mun3*<n`Rs3eK%IGv#yi`OR6zDa!_R!@o(&}D(W&m_em+$g?wBmi zu{5AjVbSAWF5nk!y2|2h$Ey`dPfRb@YJV1&T1wb&SFU;!cPrkiY$%&#w|z`tmrl7{ zS+|_=O*It_I619qllXW~_`Fo2w*8wq<c25)y_NZ6337{AWTcW|J{GMh`;JF*%V`YV zIeYg~{W_u|COC-Jp5P%j9+1`ckzAf6S_J?FtlBdKHl*WIeVFy-)x<NDT>%F)59FCr zCkF7Q!>x|RPRdeF#>zg0u*zHjB5$lU)MV&G>M{y<E511>CXMu3_>B?4azxp?I-2CK zh&BhAzm_5`h8NAop&KKb;ffC|%kg<L34b7`i<P?~;AKL+7{?vKI4!;0QZX22{uzl% zyZ;$dq7^qv%9qhL{xU7<6<n_PvAK54M+=k+$Lg7q{9uBzK=qeLl{-e$Y{@!`*NWIS zj*B2qNa}Yo2t553lGe<cI8Lf24MNd&@kTiC2t{y+G+o%y0TD?9eQ8S-)=pYBwajh` zDT%UxcyysbTHKHIA1vmz>*LDU6_W-0u+U?95bHW-Q~kn=MIXf;uoUO|h)xdSlL;C| z7e)%aU>Lcd!rJ?2m`vp~*u1bI;R!bKN(@H;GclaWbHWa;bTAFgQA<OPC*2Wz3^aN@ zuqw@GTKNU9>T5SE3)$OLUw67&FQKD9-<tp)YNdGDNhZP6PBLyk{S$zfZQB7jVWm`+ zZ|)Ft&gay|eMBD(ly3YO5=wi4{x=YYf;7JKHL{uXwnm50=97-=^B2S_t2xkUd5@H` zEoP+0z3?b_<4Rg258L^<s!L<PsRclXkwFt<JEunuLxzHFkeJGRvV(i~=n>&Cq+!G# zmQOLjxA)GBB`#Jl%3<Y&LB0djPWI9#gFh82f619fxijS^f#{#A1LmTZF`w^~!HBij zoXXXwYVg%u=1KMa;PZACjhC)OKAe4K<YKW8a#V>~<%-46g5A4nJhh?uv%o_tmFkML zg(gS^v|409HC(hYMCoa?X`yH$jGWC@U`;KwrdH4w6Y)3}O<@g>JXrvfY~KDrWBRjQ z%U!cmC?b4aTXUgP9Q>O%<_k65eoF{T5)8G+)Ke!Jw_ipzQjkT|WPqZS7`rw(c}qku zo}w>`Wn#?Lx-Nds0^a;`g!d_+fgQ@d$9_bt-(IE57)x`MSdhYEz#Sfr3ju!l)5Ssf zs|7nR%nzOR#l+!3k?;V#Rp}7=be+H1RY@bDsfzfe-|Oc3bK*uBWb>r9E=##6$eC%C z{~}L%H{UH2r!bO9y!HHw3nQj!mG8PbVkzj}<v0HR&Mxu%>r4>O1H)Rew}^0Nr|l;~ zX5I}--`pUNAcK%~UO<acH{62&Nr0QptMD6%fRht!Q}M<CPX++W$P>VyN3h5SeCfFX zRNQV>NUg+I&%)$?MDiBj7<;E1Ly=B~Y@O(W$fQ*yx31k6d}hD=P5n$wX`@vupuZvU zW+4L<S(dYIoP+jv9+Gl1ApXw@=V3P5q>C!c>S+i!q43T$8);P{s0ZZACyw0$$+xT6 zVm*ad8wW1VA~k@`C4TlbJp!F&nstTLBd$?YJYAx2E2VInSi<Dg`;Yf&f$lZodP2#q zPuihMrKvb)TLo}i%G)54fDaOSavw@$V>*>BG*(9!cc4?A2Ql~W$lF+UjkdKd0w`@T zX?WUHl%-L`nxeh~(H2}v1HO3nH$6Vb&At-jKncDX$yR_+KrF9Hnod8x;#76g_MFCD zE|AGufbk;+jKrZaHBntM4)jy)Y0Phsl+3Yca-u>nFfT}Ayl7ToaAX1duu@Klg|+|? zXr12zf5btKG75&NpOIPhS^<}5*l3z`n?)DbSg}$=YJHm%@rdR9Nt&=7O2iVSv(m)L zcwnCto3@O^m3%eAItUJIS<|VVWp&Fs$e+uH&1u<>z5kt`{h6Fa<o+37t<xsaKwNOf zuv1*nlH<{+hMj=_U(#;1MF+_RMgHII!QVroBTfId2cHOlfT+@D(LhMk=!yxT(j>7! zFab45!ipq}Uf1XxgYlLT_YDamqJKy9aK3MHup&_?Emxr(`i_LV3di=lW|@gKTPvAm zmUPrCX`7DS4<t53KgtqYZwGDzajthLuKb#}Yz)G@eUfb{sU20^D$UGRCyr~$2M>rL ze*9EaNu7vQ8w*dIGjKjG$cef9w4rat%K<Zd-6yn(4TuEVJTufEkM?(-)R|rUsm}0! z6Nx7Us5e<YerF1~T24O5e<Fkz<7LO^l#3cS8DFP4Ud_$dBrH1|2c28#jf*S#>@{oj zZ^u}f$VqF0N{3PSBIiI*uH}!&!HzV4B|O>tGMa#516L^D#ltT2^^M6-W3)BB+5(70 znvHtdyfzOy>Zzq!vUwM^5mq4}-htI-O4xF`wqwl(mRn=a+%RCmITm9&zm2i3ZC8`e zK|TlgG+X+}V145G7PZc|80R@k%uY2wX5lhjAX(`}$?#=HUkI2A?HYyLuBS+O@`Bc# z9h$bkjbA7P4Js~o&O1=M>U){X768$oyC~9)I?IG%+)-L2!}Z*T{>Zk~dAN8-=&Ku* z6YADHi2X}|ylTl|MYJ5&%j4saZFcq{2I3tK;+{p~LI<^sn2jCV)Cj^^R3RR5`lb3_ zM9&QuXJcDBTN70@g{}A^YqMk{#bE+>WNOv0O1~0KVvzz(A9@BqJ*;QRa6oECjKNRJ z6}JlM!scyhIhb;d#VJJ(<b(m2+PD&?=HO&vDr}s5sT~0FkgPjC4TsZMTA=5m5|2{s z!zJfdpxzw`!mhvp7P(5)cC{&>h#CU-Hz2+#xCNUH$4<$dU{a7sDmB1cGRc%}>o)I~ zYCCqWLWb9s(vE7L!D5sxIe;!X6>%lN&fQ`5$wNwL$~0v{vXWJsPqY)&?H+MVH%0>z zuJ~_TW{wubfIG138VZm0{I?_>oYrQ!Q9Sxn{1XDxM3%aj$>$%P&dP*mG6H=gmuf6b z7aeR<+*HXzi(fqRTuTU;PQy%lJFxq&e{|+)$Lldv!>lmhh5?SkoB%(?x<|TYTT)rv z?pU=;Str-~V=hS$nA6ra<aFQy<xfrER>wB!)F~zAF6MVVkS8WDr%(Rg*pVyAQ>MOq zWr0dm^oGuztP+V=C++zb&c^HM2}Pk9N$$aw6Vo4JJbKCrTMhVMSanyy>u&H|;xhNu zLYd>3f+!8lxG|J=>422^W!!skNc_~G6R*c8<L5sCdnc+T*AX;2;H1MgTvDOw2*;j; zcp-EzW6*M#NlK_o85nvO5g`<^!GBo?QDV=gcERkfu8ow#r>sT+562=t2-|3ZGsn zgegQW62u71y8VIV{AiEy#EFkfCmxz%e>#7+<IiXt4EX)xHUc;)s!VZz*o!0Yxm9w8 zjHwbGSXfUa^?K{=?%q=q(s}^oI#2mT<bM~N!@iseA%K3)5v@G9!xn<P(KkGXgSv$E zgELU&hMzuU@<y1mTqi9KF<0=yl#qSMB5TU9PxBCz5abK^gOsLM(|_nI%hu!8V#ND! zje7i@H^jo)8UYZc<sS&df-va&41agCLaqx(4d#t!4U(F7xKF^~rPKAOl!rpa{Sk@* z<`11;Lb^zMAb^+@poG2*l)-0{nULif4@52NcZp~sTX(u&>-4@)gb2I`+Cz6>V3G8u zdZ}N(($-c%5y}Wb*>Qt0)MWE~3Ji@~?-db#jU<W{e*gd#ns{)AalkpT>e&#j`;y-Q zbq%o|Yv4J*&Y{ZK{2FqcqZrCFQO*{-W-5PiPw4<x-!x^l2a^9)mbR@%Lg~s7E5fvj zv%IvJ5VT6;_49mx`FVLyqqUQh$bnVCnR~{6=ki4S7*@J@JmRGlWs8%-CRFd=aZ_-8 zq`*N)Nef76se74?7d)}>-gdG4h;$l^+Ob5&87BMEdFdvFwchr_$VA5-QuieodIC~G zr6Ki~4ywsjGLvA2cc=|Y=1n`}ar?kNHn>6TI!(9{f^Q@pvcEfww~5oYoh2%Dm$9DR z!7&qsF({+8#^D$MF46d<vHLFc7KM<G^&?MCX$ioRlu7>E1(XQpqHM<A=D#V3d4g09 ztkR+)l>Y)t9Y5+0B>m1h<N)hJR^c*YR{!=hbpcFP)_kYUk%PWzZ_18)Kg9Q<yb%HE z+-P8xs5s}#`ZE`#FVu_hhFHFa8$PYETS5Q)u@sI6k9PSg(CC$AuQ6V5Gb#us0x@7u zKn^JVF8N_r9`t>RJhRoDfRqrDQuh60TNd=KtPjtv{kIR_K3VV*Tb#1;0Sr+PD@w`H z-JBrN-ho%KbLVB~xo21R=AqM2MCuo=?XOs+(av#^T0BmZuV7#nM7AN~zU;D!vtqWE z$c;f){usP<-E^PYGIy{boj5G^x2F$H+fBe-_t#~O(()xpT=D9UXG|FxbJBF+O2*8b z3G<>SxpoyjZzOxutRWa)BQqPWE2W8pk>2)0j+r8~G;)+TBI=p$L|;|CYbC0K{!u~_ z$Dg30@3HHYQn-o0*H@2m5C0hrxXy?+@fiY<0o8^49N;tm0m$UBtQ_(nbbUy8UPeHz zWCt0Bv|=-ihGuj!GH{UgF^(qsAueI`+%9msB1*KESs{t*Lk#p;4w^t%d5N3NWi{8; z4~7mD3y;zT@F9|>cg~o4G<Q>WJpuw%>ApFoY?spBNl3K+`4WabwIjM;0MwQff>M9f zNcR+oArPL7Gp#ITNUqPE1R_}4Y#Km43IaC@^eAC>Pgv`H=ldzcHw^s52=cVW5Fokh z^HR19^26a>4rFfOCb-Kv<oyzOVF+S-*1q3gi(Wyi7~dN`p&F995s2twwh1&f%8Bvb zL#q?hQTAP)s^z`7W4vbU;D8X1vn{)bmbDF=xoE7Op{`Bk7H@-00SYbCNekFjjl^(F zY}ggL-qSMeY#jfa19jMex1fvwOl?R2F7ucv%%_guP3yvlzS&}+)Nc*rK)6{!-!kf4 zSVm(fIb7%b@$&l7>-W>jPmcy-dmx%r<AdQ~mN7-h+@<l$U+uJWF>y5%tErdul6DkP zo$)JAVIe<HcmXpW{2ZGFO&oynY~_3Zi(P2DyW^RBFe#W`YaXp|+%)f4J(bVp^6*9D z0R3b~k|OZM^3f|%2*3Wsoxq^(R+$b()38sMxT2~o{5oPKAbGqIJpl&n&JmAfO3r7d z{`cN!cQ?%G`U1H|bj|0Y%qNz{ZCjjp$3q6UiLXb_O4kQThv$j8Gria)6nUsBU`a}F zo<T_xoJB@EyvsvH7>$>FR|F46txKd~wbwQE8@T!C(&;vp|Nn(N8woE|jDN`vHjRK7 zgbAQ+zcqsHx2w;%O~}BmF)jRXEF_ApA_m_khlJyREJ$cJzJINvgD{CDwFCBb^EHE| z7m7j2greeaO6Pve{Zcj6-V%c$s%^Tnv0y9Xf&5K9EtuP^-hN;CQ`$6IR1y0n&aG3C z!oM%{Gp`$J@5ktBD23+>C!baL$9$ij^%lStc~G+&bKkNa<v#M({aWxmqE@*Th4{{2 zQ_CbP|9W7o4ay|2RGNAgRO_@kre*pP$&p;cUUK2MyLntK^$<0)TgA-4q`E#~@<~;5 zOBKq5-Uc);=;5g#_oA?S_;zDZ%NUlLzWI=qb>7d?!gVoG_j_F@O^z?OiOxG;{t;k! z#o$cmtjo@&EK=Az-@EX(xGJ$cSAj3`^B9+v<$gBZ%eT|@bNd|jl9SIgeTl_}Q!??h zE{Oy7j{Lk8RrG9$V5lj+UsM5;mCEL@5;UI?U{swm9m*rde$e5L2OaPJNhgWLChMLx zO|}{WRNd`vX?g8BQ7PrcRR>P!egHVHI{@PM?M8lO3@NAaG~xKY4|F~Ms?3z+ff2hX zU*x-~au7q66U$hg^tX3`Lupsw37maByuX%mTNa0QcEY@@c$8$9h*A6>T&5F4cgnw@ z$s4y$SW~ki8`ZM<l)ZGq6*azf)Ap633;uonciaqD`@S=QyjFHfg~&Era|j@6Q|L9x z@%P>#@XPGG4KitAy={uTp&m5K)Ky4hw0YHipuVyZ7;5nXrvP?=sv8QC94n~A9XnGI z`MrZ>0+9wLqD)gCA`dBKo1e7fDf9wx!*TJ`L_`o@1*CD-wjKq8Wav0;2|6M)UI=?X z(W$5{uh3FCN;U)s>tPEBbsRteFC=q@^2ouCSal6@n}uu?Z-hJJ(9$d3gdJR2)Q<9w zl!MfcY5BB}mb-hGQ1dO-(*w-Q81Y<Sw(`E((REg7fMf<&O7<pu1-2)UKy3yzLU&Nm zSb#=4LIkE+fCmXZL`{KzKpkBI9i+_khAbeD-DD%L$yz#&<7mmNlLi3nl=<|&<g;lW z)%owYbV4+Xp-(26TpIZ3mG`OHqqi5WvK!?L@HK16)23x+4=6K(b3>E^?5iuxj+EF= zlxg6p^q4Kl^0q{KR7?eN((-b;qy*#FTisBY_bZ7hS*>!4F(eZ1y^;@ui974-!{f)y zCvrL!!SZkfq(nv(i9KMwEpZ7p)<BcNZtrfx9A(BPUWL@rOH@<6&pJ~Y>{zaaHmH+e z&oR}K9g11?$*-U+abmy4lWtoK%SuKHc|T5VOZ{2#be8JjpJ)+OwnyeTLv$&3hnPom zK`4lb0tXqTU(tsXAs6%{j@P+PRSt{De%6&>g46-pY?u?0Lkhqsk~dbJowdeGG_l&+ zz2?r`PF{jA(?$V+F1R9dHz=TlqE_H-$a2RN7S(O9<2UcfT{4ET>K=k~RpqNJ4fIN+ zZKtF@w<hQ6ec!NsQ6_p8niQiJH#I?k`nfB$dion>6+WitFM5&uxFAc^E+9ug_<OPs zfJG4Ht#stcL=0ds-7|8*>H?GoGv>s1e!Kn7aQD$qmt`BYtZdbhE=M6UV(mbe8WTR% ze;!yk$=m&=P)W*}3QA?H2}znIiDKdTJ5FwdeVn1|+K9`WeaS4zb#9UIxsT=Idp>z; zr5701iK;ip!MY?tUxSrJq^a2F2ky(>%zm%yS_f!d2LK8m(Jpie;?%)t%e9@i!d#}e z1~|vgy{73qg8k<H$bX7zblh6ZRXdQQ8MHTKmlurq9{ygXn5W=y6!OE*B6$?{B^K>L z%>+0zl-yyA!=aT5E{NFZpE+NRGJ$5ej6PBjI|G9gvR3qYEm)XOLQ?UGi;AV|c(C4! z@5g{9R{$W8$8m6EWv7C6#v@X6S3RgehUyHu6FPT5ZvPQB{)G;+hYkW2Qcv3@6>&$w zrzRZ8_{yxmZ&qXHJQ;}>T5S-BTJ4Y~eB`>?XvdAOi_L2jdV-r6$AZ`nT$tJyRO<=Q zktyduRh$x8b3r7oD;&~Y&(Ace=zUe86R0!+S%8%9OVl2|_Fw))u)O)A>vrl3J#qPZ z6dLYCQqTsO7mc6nTAp4KVsqQcrx?Y9SUKB?-DzgnMwauL1GxyiARp5=;|!C-BVUXq zNY+_4*;g5VNxE&+kbZqcf4`%l#;TkbP0$fTc;i55h6ReEz-tu^j`Zqb25_rfcYR77 zAOdRp%}Egb2FGRs>U9}MlD<*0a<)ASB1w>pm}@{Gr6CKB2KMAPexbhoOtv78^RF~S zv9ap>6`igxNE%GCQ&Tcst&AN7usvz}by#9=ewwXhr_-s~$vdmuPWjWbZ2^6Sxp;y- z$~cD=hC5PBJz;j^sSCi0^=70W;yCuzLjfkG?;^x9y?JN8K{x8pVOcjdGYiXYmkzJ< z=gp;!(aWbOh8PHot1g8M!<@7WHvn}7zSBo8yZvE3#7#i&Hat%Rhu@A<kcMjp7o1VC z--7J1Q7mMAFhVauTEGyJQu`i!2oNRRj&UsN(2M~sAqig*Zi;c_QKcnbA-Ta}Vt`(~ z<ph<Ht8EhTns&G_ITe%xm+lQ%p4RXW6p+6wcMvz7h9`8BrLxQ^IWA6Wd3d22)>g&t zESP}6o)g$gzvC8#YB+1<224dM;w)0?X)c9pv&nSFl57!aNo=ILs4MO&rv{4ril6u9 zuuu97>n_UHk5fC{N|{CcPp>HCWB{8@(;{)F7<ZzfDf%vNAoc0F*T;$dQS0`H<0h8v zTGIN6?~B*e(%k{&lEn^f2tR(crN3Wb{{Z%HmvCL8uUJds&RiS5xjz2oRK9VkQ4MCh zUz@tw(p#h)XV+Ld_c?uFf{0Uy$3^@R^<eI^Ng<mMifZB=s-<c@CgE)mN&s!{s`^2< z8&OmG>f*Z9=aq3gC9G6<ow;FUV2pgyxQ9uGYsEva#T<m@{R}e)-WDjyT2yS#BH^UE z9vIext-zQf^jn~f%@A4^(nEDai>wtp`^RNqWY3$wu*ElFn<?w9`aJL@Od?QEhQ_Sf zQ%~}12|r!Pp;6G{jIWi~hx~Zl+9|v+83xCyQ2|B`{kYHa+d@{h#H_jyv|Cx?S#r_5 zVPkd={Quoj^B$-8=Kj}G;|EGJhyz1Q%clWR|4-WtogrV|6Br0+=if3i(f@GuO~IK( zTeq=o+Z~%7vt!$~oqVxv+qP}ncG9tp+y6OF_q^?gUA3#$u9|DiIR{b&c|ovJiReJ! z(3%xHZ3h|Qw!YA-C~)ncfCaPjvr`4={%x@j#iQEJl;N3e?#Fm?aP740Cmb9El(c5E zw=R!V)9Lv05GQcts~dj@B>pBEvxgSRoo+C_%##+eD>|vJR)DNYUWY$Zi%6AvQBXJr zXI$#pyHkLu%C-K}cq`-cD<jdS2@W_%CQQ)^+u}8mwYkD%$QxR*iaBo(>qFp_DK8uV zOvZ^zt*8jP3Fi(G{ghXu=@ejsuN#(U11BT^o;x*$p#fc$nma(2=%W*1Wet@V6(Mv4 z?4l$jR7E7BCxm#ui(<P>SK{}<)}<AQIr5i`R!%-6gWzFEUxtl?^d@(>tK%X6{KQ1b z^k(i9oNzrR-PzT>>ONkWD^pWeC(_X>gyd;y%39P+rP+Krh^j{IWW2!FWSiYwc#)ZR zq?@CUAZ40=`^^b@QKt%<l3xq^w19%IH5byRHNEHob3x=@ZYCTliXR6KqyH})^McMN z<?8>aQhCa8Q_3KLfKYM&>)P?}UqQC+(1UCM12h{u8HV`Q6(u)l;&RZMiQHa{&-2_~ z99TimVk+W7618wWh}8VB<pxyDfPB^-Y-rZ_>B4e<a%FX=K?5(+CLoh|g1I&8T|&7A zi%Xv8T^R~^@?7OytCjWd_(+%JBV=&{ee%+25UFn^FAOJ$<Bzw{)0!9Q2GGQRiDX8v z0BRty-X0~ZSlZ@#mSMxh8$mU({g(PeB7)~jxd6IhS8Yk^)czFZutGA?Qt@PKDUr6# zvqie1fkeR2QmWY7M)#l|-|dD=0m#k8%cn3P;9=o2XcuO<yQ)2)S3OS#{eN!NG=VoB zGwp0`%iACbh48GzgX6CzrmZ{&o#Xxe08<m};vdAMs00hkDKV$p(^;3zT6O}y&XxNt zhY?pttSbr^u--Q?_N#<&rxDkT*abUa6rc)-K=#Qc-74h2B8PnXkrO=;K(-AaDcyhj z8M(5Ab5X1jOlazOXuzbg%S}Vu6f@4p-NC&A6MVw=8y$40!29nLQ&R7BG%I`s16meh z%5Ab=TKWj$3cN}*s8OrrW&P*!Gwbr(Y`gw81Fs$(8Xj=1f~P@(wivhv5@Q%#1sRqM z3z&&Hpy>0E%Vj%24JH~X(Odszr5uI&9li!jrGkrE04sYEQ0f#XNqTG}&r5S1&d6nw z$0z_I(*buMQo|Ve3Gx7)4z}(70gx9{$D@c1!9U>75YhvYTUH=etLobb)3eVS3<Gvq z@FvAs%i6kcAQSxsL@%MlVIzrtF%#OpG_Retb=lJKXeqKSpu)#_v8PLj;*TzdoNrM= zz@|MDHD(kLPMrg~NWc`cdtlQK$MW!}!CJ-V1kPX@JmRpd)N+A+HQ)p;70{+puVrXT zDYQ@aImwdth1dwZ&YyR_y1W{pJ%342q}O1Tfghz77oH;wzZe&R5-P8W%Sa7jYMA1B zJ^wRftmMcRjiDfvGup3FGHUM_Zr)KDBMFegZ0RLASSCOYq_;j8T(gk9Zn9>~6(dE- zkJ@A4e~ejC{0zSHIF)980Z2O%TI$^waAf1}^Kr*A-Sy;!v4&cF&iOYRHUDiGf<mWI z*f3GxpeFeY?@R(jdq>CygCK5z1>`X~17ET``2@zmu}0)p>6k-j72|8oKKCa(YfoOe zze2lY9c%BW{ialN(E*9iwV)<Ux4gveYnl8R9(>;3qwcZ-$Dc(h18}%6l89W>G|!c| zbH8vS3y}`+MhO*KUHL%4RTAp0=tfbl9EWFza2&pbzlnczgCE%+4EOn4X;BIxrd}m` z7?tN614iKBvVai3L-c(TwajbwLuL^p6JP#%2-WGpgJZuht$?WyD{GkPAhHo^3esVG z;tt6_k~Fw92=ih50hm^DU~g3^dhgdi_E(pK29!Zqek?`S$pNp{O}g8W&k)VD8i0?i z;)WX0qsLvXYKxMx%H<GCeKJY?W50uLz-el?WOHW_iW2)lP;j%!2$Cp%WdRE=l&bEr zv`HD_Z96tE)6B&0*w8sH$bW%F%mZzxk%KOC^@#k%fM?`g1f+Ia&Wh?>sRuKd1Q<a` zwXveE*F|CC-4auDK(2y0EzWuV5J<m$cc;>NZjG0*wmO4s9$gLBvgjGM+G-=TooYzK zqEfL-dZywou8(*#FU6lvRT(j8#Wq;}8l=6=%_nN48w{V6mujlBm$&I8-x3_k*TM|Y zExZb`GtSvn0Qmiudoi6c?AD4^4(ky-lhZP`Ip*6?8Id8U9X|0d2UHLwo3^5FfEDq( zYzI~Ei!L(A2Cnz-;t&k7>cZ_#i?OV}pUIy$2c@rSLN-d;S4Ki!Ue#JrA;vj?4pXD( zw0rsmc@=Ys8KMfr==JmGpBf_n_5l`Ob$vPS+2P%r1t@Sx#fWulzZ9>_4)YB~!xf77 zC&mtQe20dF+pWJega+W)cUun}Ha3*BXH9T6m6dpREx8sw?ssjoImRUuNz*CAwDPp8 zho^W1wM*v*%`rC*%FKe4Rw2h8($&FEy3ajtmA(DXbzpcFZDjuMc3y)9O3h~nVFBFK zrZr&F6{y7jqmY3I;9M1R9nA$AAT_aGn8?J#NO~M%ec#|KGAQnF3LxQQOzux{?DBdv zm4N;%{qaF;xQKqTx0zO3%AHHSt$$fC&zH(Ov~`1<=)U~*9oE6taxVHnbUogJ)1_=H zW*)?@$u2ZrJJx*0$d<fONInJA%L>4{!|X&Xxd^iTX<Av^wq2##$J55$g#PI_w~MZD z6CgCYWKibQ<ivqBM&SwqwcrlxnW0?I66lja2BmBhj@$6aM{7a%za+sqmBqf{4E@z+ zuyM;%9_(XC&RDp-=-q|iti_uUytLq?D<b)dS7Fqig%RaBz6Vc!JL2Kx^#`E)&4i<N zH8k$_^kV<YM{qH$O`rxK+CE_~6qZNush6`sy-BTB3SR#m*(r6G`qM6jkdU=dbYLcB zF-3+25Yh^4|3Jhg4D4ZXdP>dXLymb`g2$LI!0UD(&<cI<A&3y=SC?UW@9oqz2wjS} zq6g2OIt_U}wlr>tpa;=~JqFkhrxz`m4)b~LcV`!Pt_?1uPc?)yK?`H@%UjuQ-7Frd zUtT5Uq#>S1dtSuz^`gx(kn{FlYOu))$KOpi3jYk)JL=k=tM|}s1TZ_i2R2-rEavm4 zyBc^D?5m7*_9F^8WZ1DaokfV}LsWqtqIA`v0pOjy7>aYiQ+arWlmSOeo^C1M%5|Wd z7-|xs>oDU+h=e?NO<dAGuef*!#6xe^2WJZO{D=z$fiD8up>t&DlW{9=^X?_CIb%;! z?*Yly-6i-%Na`}#@{RI(3%hV?mo;Mfb>r$GcG62)Y6Uit&^*0%3gB`aF0a)^ws(^S zP&a#DHYH!bKL0?o1p-P<$_ESlSq3!B5qAWB>5y8(zJ@)I=MJQxBamRQh6FWr`ap;e z8@lx6haHCLhH<C-YPlpqAVtc!EAUNwwih2{G3tfzCN<c%Is=aP?DJ+3TUxzQLH2#d zq+vTg9Pm+0x^qm2L2;5w<1(5orL^3DjNCnAm6fpmIR=kGjR(ZE<0erK%v$>tW?@?g zUXtUd;<>NW{{7RqZUpQeZabn)D)MBr^wjKy>SWl}FCB7dCcicCMb&DNPhdnmkjbG* zrb51{zJ#n-prz*2(@hd<XFU?N^v_Z$D0BGponCUyvvc<g@&CuqyQ$^V1OH$$1Q<}O z5I4v*@PGW(Fm1KQfxv)(m|#+oazX!tsv%RgO9(Mi?RY_80rEX-eq^Im8O;#S5YC_w za8~ivxd8(DMTx`d6dDN)ztG-pcob7;nQSSD!bAyjJH4*=vn>k|_PD2y5ncs<9qy^E z7vK7)(g*k6{fTTC8ZLNt&A8~|ET~EvXZ!VHEk1e=%HqZ9%BgEGt+@}AByO9;o9CQ* z7^on~IO0ei2`~hiE*2(DAA|S312pO5qZ)EPiT`-YDL4f3-4~!uZ5Tvy4Rndyb?X4} z{ga*_CUh34YofWpn9U7n>tDJ`KkXMMj;h2S6C%cAt`hByR*ps5Kc*rb1M3u4{Lx1J z7$`3wnMp0KLnEoSt}W^exGa^=fV_}C|Mlb!9gRm64>+1VN#>T!R~MzXOcu)iEY@#< zXlA~h-uz8T8X%ZE+<Ldo&vE;=RnES(Js41(u%BjS4;DE40yuFx%Svz97r)fQF~tqw ztD_I_5z?1SNeEC1WcHJF4@7MQ%~cni3*#WxLX&T3=!c3Or}<}7MFh17j#TaZr-LZ2 zG$u+Q8~`ITcc2mA91(Br0j}5%wWMDz4L)I?;CYQbW`;3N`(W%9{N-JCNfX`IUJQRP zz}C1Y9octL$;-&OiM-yVQFtd6d|bY7f*LrX*o4j$gYI@IIW>1l1JAoGy>{afc^je~ zLQ<C(+S+P2rWC9fjx*Mf;cFH!*&Tg`t%O&G4Zt*H_C_=JN&gOotE@j_ySexaubIF{ zyPhK&CToG@PS!3>WC-G3)s$nqv~(PHgrE%1bPGlwI>KesdeJOq<Fq{wp4!gL^OLjP z^R{p6!(z%_YN}08cIScCvaBiZ$i(OW*xC7wqNrbSkH5JqW=T_JNRQwccHzt|Ggxu^ zuhd-~k`6sZhfYbk%q{UsGOVlg8LQ(LZ08qBX(qV*wgykv0|5{KJaY7mvCffF?kZWP zYzx7BU$Rd$q09N-8(<x;E1i&KV-r2yq+OlJ6|KD5<aHlQ#z~ubVjG)S8S6A<2Q;cF zZ04KAJi~_9Iz#_lo%UDiym`CtC?`5y0En3rWteMSgsRKiF6AgpjNMjf*LkPdKOYRG zqaTJ#+h7LndL>?KqnfZUjcCW!l7F6`x8F_gq2sc9QAnZyzkOfZf*aVD=CjTg9->>N z<X65;H+?rAchMMui(r5V(#^}8#q*RZ8#mFa&OdlvQWJjw_r3#aqQY0Kr3SdXfMvR5 zSV`eKvbtzX@NiXkqL$JVVrmf8lnQbVsSiX%OIe%sSBwM`KH_yoqonZLv49ek<^8w- zu|-Ck{A6F&U`BJkCIYVM5_vE)chL_#(WeJDn1;g|i(JQ!1*>g~77D@Y_GYrLC(}lc zA6xoD=--lmCssF|?fDqKLI0HxEHJcx9ru52u1B}y)H|?%fRq$~fbjm?X734rzyRE~ zT9S94ezh%8>>ov${|R3d*|xaimbzN0_n|dw?9@yS2*H9UMc^WqkVF;#@wow&OCY7T zkabeMa^NJgcW`jnZPTyUT>Up$@37oiaVd9&v8B>n2ZJ~9aZpgkJTbG;tFltrsuJyF zg^y;H(@{zp_UOQfPT+|w(G_hs9|m-xNlBvrm2C<4YRY7jHqxcwLH_LixoH(&f4~%< z{rSFs(koqhtlGF8TpjK@E>#O&klT%51KB669hN$|>2#rfd&zXsT1uvROMN-$gxM(N zNyHa3)~Q;oD)U2_<GR`?P`037jn0Av)1P0JVcz|1t&oJWa=h~S6<JuQwhovFbn|=q zeBMuAT#=><(QVgZK3aL*sN|mzAFmXc*T5F5t&M3<ZAv>|F$)u6TO;)<Tr}M3DL2qv zw7<yiG)ZJ!DXq5C(iH$wGkc-PA5NcO*!6t1w$PTJ>-~c9!=sX#*$hHH180Y{d4@@j z0)>Ta!ORto?<ulZO{o1#aRH!j<m~*l`D)A8mqa|16dBk(vJA!_5gQ4#m3}4-a99Rr z9G;6ub9UsKel;cWXfhfCfjeo%Z3*#Vap1=EmF-dIzudJz_}6~J_U(I8YXZ5_6<!q3 z0`I?>EUhS%8h0e(174o5GTm-sduDWbd3+t5;nd0NH6tiLAn#ZQN&&MypW6KRyl(@% z_-QRZpEooB6w(p7YF=`I%v@tOuU%)y24NW@(q(c-WK@P2BWwAvi7aZ+U)#48N9Won z?Nb)m^T|{^<qKzD4f4o?B=sTnlQ?REK(ld<X7d$FHqHn^<?Qn?`>YDxVKWf0e2as; zc}@!Z5`7S7P(s0F;Q*RbpWj|9Q>nwr-Wqi0jjZp!(2nRHHpuq^$%md$^g!>McbThR zQtZK0k-0-$kEhK8B~`a~SM!@^kzb=q>LG)`62uWOsTA@25nR{#DWziho+#4j+VuJ2 zNBP+~tMH7%T9V*f0kuF9=+mi=zTu#?sVF!&=IC_&M0GgC8vrO|>a%W?KI$uG?mw`} z2EEcrCO&iz#*QfiJxu%d--8m(QFz4t{C_!Og^4v;4-COOGucqmD&vXpE7_1@lfk~P z#A<&W!#>kj6;xWGDuHAZqNq@WB>R|S=`%XC#3kSVl7R$3Ut`f7M?=yu&=*-MA#p8B z#mgbrfH2W=%ma#(tU{p86AEg17he7~s$-zP=<U^_a6}YUMF#l(==do~A`NM?(0uB_ z1mD91O&@!>`8%l*Ot~lpN`ZX?Z#l~67K~c}1bfw7Ej$JNvImNRg7C1)%N}*D1Yekf zRjNe7y(++=lHG@$MRGJ!4H1Nl#8~gfuSZMAL*E+cPXLPBvZmwX{J(#HIir+92{+jm zhUv6z(tdNv0?Hz3{PC0hJ~Szsj>j-i55zuD%?QVKhlH~0DsmYQj~tOru(6&onrPO7 zX%!l@r3<?GMQbml2sRAN#{`=XHk~hM;U1`MZeiMbXWIMU@hsMz*R}iTDSkN=M&usB zm8Pp}V*v6NLZ`B({)n;%sOQwNw0x1VN6`OvSqoUh3;fPuP#8)3h!YF&ka4M$NWydh zHEeZEfS2kPqf>Xg>afxnkpO~MUc>j}1cgxjTQ*c2K_Qd3j*M4@jR=MTZ!r<lag`CF zyXHD%UV%Ox1zAcKMdP6VB+y6R|IK1I7xn$*stzclg*+X<qU%tk6iB0194*X*c<;A; zAim)Q?t%wmuH=cMt?0+-GBO_sV~S`JnDpqT^&{xQRM7DkIJnLmo8pOUj5wyv>mG?B zCjT8ki7>dRWjF6*6R};QDTIjs!#Jd*ImmTuUI+3~l^Otn!O;{;LoJa*$-OIL#yhFO z4FiB3!R2#+6!#{TBLA2?bpRDMC}$GIPpL=9<m%YEq4WNw<&WP3tYp9!l8RnQ_UJ#% z6$TC?4<BMu>?MA7U0_*u3jRK9JqA{xhSc$ZAkK}-PUJHdT-qy73XE+L9Ft-`9rC!8 z0c)OYt)e{yIH`t2hYp1*w~fvzo`T=pZ3U#ri$Ccy`*!vzSH4I1l-4vTF$y~%^*f+2 zZbls9F*d=n7Ziid!lzal1P_vzP4<|!2VTAFxb$i~=5t5Yq;ckH#c_s!YPEyd1PN3s zMC@d6IVh#@ZO`R0?AglPTO<6bk{DDh0{T|Z+~c2t=mXHzE&y^5k@kAAK8DZ2BLHWe zZnacPVF@J37GxM_wMu!51sXsrF}Wjoks_cwz?|QStU&F!J`4tKzL%D_aVs(kiGlw7 z4y?R2L*(l32t^>O9ZNNmx^8EF3uU}dt7niC)ZKCc6nyB_&dksj{tKqi_l%lEH?$FA z25rIh-U7&uGh>Yk7a7?W?(p+@Q~<7nfVU+Gyv}5~euA;x=)BJPM#W{NtXr>JoO7$^ z18Ajze+Ngab$C#yYT5S&+W*f|Lnbah+hjYL%i+8|o77Xu0B(6Z?*)47wJ`ZP`^nuS z@C}L`#s&J-+>d}!-6=4}%!Vs3o?j@<L?CZb6E!HL?j-nd$Y`r@w4_aS37`o%m-D#O zKMVS><AB=M-;f@-zOlG7W5D|9)dboDM>YLx&aExh5=nY!d@+}w`_&YsFhf%B`{^mu zO?);NpHSvsmQ+6=Os&*BC47+CRyfg%5cDA>z*Sh-Se^5z!f+nc+9etT|5m^N+9*JT zj~r{Wa}+GXT-<Jxse#Xy25^;Cl0Nzo(+>@GU0xx1&FUwniw=`ItV<J&@bmVGg$YF< z8i=Ae7z2D-1^>DfR7z)gwl7;u7AfL*1wX$vHyFjmWpYO`<?f*r%BQdIC>cHtUjl?* zfEd6SEqn0l%=~wLQaUc6JYbI3K}33r7WK482rZ%qJm{SH{p^I|0FWmp8ZO;G;p1E< zkRyQ6>4owKjS<iwN#QxHscneQ3NB0+I|0)yJwlRUf!rZn=xc?JN+k)!EzdyLf$}_} z_GcGJ<v3d1paFUP9`#j^57KNtB)G2iw&eJ8j_V$NIBdf!f}h(R&nYTI5V|G*bQs2d z_G~;u5jJN2ojV0v2{0Qno}lRzl@>TK+gvgHg4vJ|P36$OjaNp&7Q`|kGd3t5%PIT{ zg?%0i1oj9$^J*r~GHtpl!fz%fS6*Z7KPptXlJvL-QmEr<EHH{{53{Rw;mUHH<R{n_ z51T|{mio>fZU!$xNFgpWlU4+$7YWyWc|oy_oa?n=f$^DP4PZOGEv$6+$5AhNNh-1z zD~!L=Hl@d&%#@|=?M@`SMz_T>+jTVMa)c6nRGnfN4nC4TrHoLb7h%4zF-xbpP&L7Z z>53F)4hflD)gGDt+Wi+@CzJP4T#!}28*x$sq}})gfz^DkXCvYQ&BCTwb{h;$sE&B3 z#E4h|$*gTt0&ueb*79&LAhq2l07Kw5tplYxZ|sfo>%?fKnN2T!0Crt7;!nrR%>iMX zw{ZdT1iQ`4tK~l<KsxT35f<_w{fx8Wbe0fpX`Vwq{JrXcG=4^k&Y%nJ7b{}uYwsn2 z695hWlh?k|Qh(id2gDMSt|j$M@dwFn5tu3aG5<Bw2#^TL*td&%m4l5n-`vORt#)i1 z{tBs?E@QosYh33)n#H&fLs~8c<ohi9vg!5bYX;<2SA=#F@2n-|0VHQU%kbo_aW?l% zn!IFN@S>C8G?P)c*r|apaD|`{Jv>F&(qd{X@@2Q@fV}kp1T_UX2@j6u(G7~%<8xjA zFQ4gAG+@B&>L@i0SjF#OF2yy^@_MX(&0UOugE49%JyUjtoMx{cjsSDHHeTNw!!!ZY zd{F363`S6lYVxi26IA&!3Duz{y3MvV-n^ob-$-06kSkC{1-wCAcOPXZjiWYc@WITc zxV!NPT&?IRGa35TkQ(HXS2bg@;wu-%Oc?IU9$;~_za*L(TnZTr1MEES_H<;xh#$c7 z{!3}w`>z<Ltxtx5sMCCPS|4ntk)Y*iSOMHyjG<Ismx%GEZ$%ghdG-e;QnzUH3iqCf z0Yo9K=U!JJTR@aN1RD0D%WQ!tHN87hRlYE6glx|WhPxP$?o>tDz!y^}yO<s|>#Gd$ zJb-Cs980<<Z>im;^vz$>j>Aq5Vs0#Q^{XjY<(!4%1aF;$Ch0tLfu#AAQ@vn*VOE*~ z3Ve`2IzDtrgWolUkpaqzz0~Mrwq_klJsz{K3QbWENGG{@Y%r_%w6?eOc7^K5LeK8L z1R;H~0dbgxfOq0!p(o3Z<Yr8uekv4F6cDfoyw%&+<mMmRiGTyqC;-A+M9oni%b`i^ zvjXLRcyYR?=+q)W=M&`Dnr{Xp2C-%Q*pc`O*k{NIS{DgofB5(1Quxp4C8q{4ZG)KE z02UDYwM|VeCOopS8>@(4XvC#&^O2!p$kha|cSHsH`F@4Gj5dw)J$&~mKrio_07BzO z#-=i^B}u=qQq$*0&TU5`RQ=hh@nbMDoW`?3I+P{BC2DaL!PTsc!0^4Mqnaa5QoD!5 zuXLMT#vDTIxBW#qnSv!=F2>gGFK6r6QvPT0wQ@?tBt~d0eVZ?e0&)9S;X05(xVV5_ zgH`14%;>QE)`A$4<E8hBR7aLV014b}-uUjg#I0%V82N>QVV-3?N#KZm+)bmf+YWRu zQ@S-5R}rb;Rx+Xf_DuQcp}@x=OCbI1chyE#2fbBTa>LvUA(zM{KGDYMsdl~}<?zLH zM;H>Oe5%ueB?Sp?2M#B-_)fr(#V6xfQGp-5E3tZh!Vp$GxT8Vmj#u0nV3Y^zF2<A_ zBwNG+MYyCqd*aVp6-S0!Xxg*33gX3Y!WRfjKuxV=2)+y}jHk)Lg{yPvciqn$u{aoG z!ns19guN{=qVsK^<?PrX>+Pj$Gj=_@CSk$c9uCWZGiy|bJFw?7UVyF6D=?FnRu*R7 zD2J_9^<2IjhqkbvL|fxNU~K-X8<I1p?P~uQASCC`m7X9#|3wp$G{8`J0(60ii^k;8 zKqC3Q4P!#YP||NP3F4`WT#ncN>obAIv9tLmHI`w0)!KI{6E5Z$B#QSW*(7)3<p4S= zz}s*A_dVZxF(KmMoC*gcj!$LN<P4!A{x&ZD1YXA&SuHuCHHz*FV3uHlzc#W-jw<3F z!Vu1Ryn;wSpGqqtOGjuLwf{L(-<}1TE0#I{AxYruPDGE=ed1QvnJd776XkBfJ`*{Y zv98<cJx*U&MRfNH_5peZHcg{>eR0&kI9KC~YddC!mTX6YjCE0Vk}rx8m%W|%1xHIm zs$t^r8N<~>g9F<OP&~oWA;^4T`w$5@75ZXVO=pT=-N>anWm1~)sdVTWWmWRDT+ym+ z5x=ET-glmYukLMEU{}sSd8LE!fE%r+UBEB#_yuKE1W4a5uJ6sg+wREPU4gU9HeDj> zY~D4BrG_2C;j+z?9oeA2Xz|?lCsFcet2rW9pu_qN)b($ncVNl_|LWEdh*;PXI#b&a zXxo#&{Y8m~Dtt;^(%x1CS9TSu(?*tb*dm~kGQ?u{@Z{SkzY(lq2TLF}>wo&tPvl~L z+nycdgb>~r#A%7MSKU2k{8N*O!;*R<$kIdwaGj)MS^!3?sh2CiX2<Rt=Kn1|4-@am zsqNG$sxBQ2co6?aUZM&gd%<%~|Afh4j{WAh2lvhHK7C-CBl4BZ<~thUS5jEzM~231 z962M6NyxF_`ebB(c177G4hH*G6?J*6B{psGxz8>|bsb`VJ9y=O%=$vO6Ci2*ZN+>w z%MKm|Lgdzdjgx-IwK0-Oxdvn})N<n&(jN8$x{Xo;80`K^lpXwitQqHOl%IZV4Q}kP z1_8VtOcONHe@5yAB0PEpubJn9!hes3gMFUfiJww1SuhzhRo}j&qr6vC<T<gHtUA{X z#!DJ7cE~JL0U=Hntj9J7s;K<XFiGwSw-?UZQsV`0d+oCQxRlcKBBH}`8E}Eujaxiv z_1A+LFam;;`CCxz;=N3N_iaHtb7I68*=T$aveWEmW$QpeddI*9%G{t)EwI4cy2~oC zeP&-)?Cx6c&QV9z3o7xKFu{NaJz~y%o(&P76r$j}ESDY;Na^m%)04XKR_bm@a<7YU z6@f_WJ^`ZXon?KP?|VizsEixx4b@mHsaTLTK$(+Li-RG}?P6vfnv(LP)U7O6dX=(W z`I^&u=c_!KyQU={g+%|;*LE%b+Sb!(8$P#$%uN<)G=xBK!$W>$EY&G5vO9@|DcRS~ zq%d~A*BD{a5077B?$bHg{=%k`;#=JD-uebWaO30h-smy+Bh%RZuVQW<?S2d=;URkg zT1X|*wYVV_S_|9StC*)+yf9U=qR*`?aK8QYT{%2eMS-?$3^i6$-9<dZEktD+BvAiY zaVxC23)ajHr@}!RZ)8D`CbI8&X5fTV3<v#Q9a;#7R)wwu{X4Y18+*GU-N3J&bJA!J ztAvyITHU>s+zG;aVjZ{J61HyH*%@2_5GV4HEU2jD6DCl+5N1$Si{CHPm`as!i64ob zSDGL#gO_$3?Ef>k3S9=(pJ@kn4Q@@$In(&MC;9Gv<dd&VY4-7<clkr?&E*{HV`zb_ zw9Q30v@(72TjSy5IoNjSHcIe2IH3-{6QD`vX~Xy3XjPZPos$~9_dDgW0kgafuoXJV z-DSl=n(BxmpsAcGi4*&}N?Jb`$WXdo|2`M7&WGO!-s)Nqnisd@a$U)kzaU8%*zeOO zi0E`|<@(aJZ`1xk-}+=*s6!w|saBel)3Nko{CQ~Vq;=x@%gCtL>ut?5Q$MAikq7!@ z&uViVtN@204nLO$R_9xfW!GmBP-fzjy^Wh|?PRuQL^erq6QHw|o5lN^4IaP_uSLm# zc2)b&duk1nllzE6o&q9tsQ*h)3Vz?8(>y8^Xz?L|y#}4fB$zo+=^}DB`1MI~;+{CM zzlCVy3sKrS)SFFhb1%kQ3)nOBhPv-i;O1ip)HRg8oN6*kYYAW7UiXj~01L;mwDZ-& zqs{|MZh^+h9@6z$+sP^g<1MLSQxPdBOT7VDeo|nB8c+FERMtxIV#%mBlr#U7<)(a{ z(}q~vhT`h<d(h;<o%g{=%`YKg*?Uk8@FgddhSEKtTU<W*t7mF97qU)Isja5I%62w+ z_B;wTISpCBneT1@P8A0iU?iz__hnTs;_(6vqjJ>Hk0KaoJUJW-HaD8Zk3w8?PNL?G zA&Bi!@i-V4F7;V*62dZQcag#T;xwc6fS#&8_00b}7k_9zIl|EW6$|G8+KiU-yfjuc z37o*&6`j!k{D59slS-!d)Eg07Ra(?3iOMcDI>|d6t_s6tQ?9TUAgCXPlV|OKoZUlx z`a6Ga;;n(^M7c!5V^0EI-6<M88~%E9%SX{))2}2lxX5enq>-d-+^GvS`1b7+Xc9s* zFx|W~<G4OyT0mH(P&uD}(_ubb42aX>S!+F#F^G*ow5>XWIRyd@eV$qj0}JNno`)6^ zoBX{649UB>B+_#f(5$!9HFCiw5exMi|5maG^XE2B?a~TWL>t$%8f=Qi4j!@Azy9&= zQ4ptlI4@aOL0w8eF7|Z@mjCx)Dt`ZqtYF<VCf8+V&BR|Pl7B*{^FQrOii7&`?6tdH z952P+So75~h8+HvA#f1AX}g~p(u^)9e_;cQaTxX+S-Cra0jRtTaqEu8B`VdLN(DBD zxW?twLH17VwuOz2eZ%}bgKyJOJ1?e>1SDo>4+7jl<(5Zq`I45F%Hzl6wnjqj*`*9= zd1yec+F~&rVx~;HP{AC2!6$YL9LiAIOx4si1D%Q2ZKFZe&_09#0Sn>Cwob~1z0ZOu z2!n#mG*zd?fW$@|h9=b(5hpq;-tZB=f<?576%mWFu<MHD1UO4M{U-5Y&&Y;Ko?)r@ zv^jyscY}ykm|AjQ`XW{Dy6ENQVbS7BDYfeWEI#{?W5%h{xnd^Ozf0k-<NSN0H@0{C zzq?=DR(vu?uqJO8yxf_R3<*C^<M3P?3VTGk9^-}>037?+KK#Fm>|&;!IsSn!+$-|m zCJYXCKgwqIId2@hJ3bG*@Ar49dNMlTQz#zT&nVqZ!cb0NLD$Y7uzF`+rm!p;yEaY9 zj8VZX;~0}`1BOc1<lO->d4NVjl>#&7FA4}y<FhoRWxFloekSct6t`SO3L;?J-&o<L zmOIgz0F0K|KSQ^}P(FK|0ozn@CSTJn%vLBU-h_DG@k@b)cAWxPv>Ir$<YTNmq2SSi zCYXiwZEEG0a(`9rQ9c+Bl)}K)q#H*h&x+z@*-BqMm_6_BIr++-Cyrhl_|T8h7_D?a zpt1iz!jCH)0<#h^O#Pa7MV}zTa~)4@lX9IM0r2YsM>+gu0S5pCKYaWfPf$#U^jW6O zo+n70E~m&8C84Jd)`~6mM~8}oU%#?xrFFW9{Y7s9k9Ni2%d(Hii66aWL7EU6xCI;+ zL~#}CW;%mWfIVu0(>`3sr=+ECF!1hOPsa7P|6wEI;@zKH|J$Y>wAN~XWCH&;wn|nD zqy*x>kFN$GNdHy!Du9cd^#0qhq96hRk^g6J0&q5PG&6D5v-fZ|x3m2hV%4qo$L?Q< zRnLW*bhfaKz@NPJXTv^l$2Ab}2-~?6Q!q`<0&8|O>NsUMm-?S>mL!t!goNpG?jd%z z+1OoPlFAKr#2Ob#3mNd9>f+ylmoYzaGo`of&kN=?itgr?<O#A3DQuHD!SqokY_qwq z*Z}nOQ?r+XufAC&jq>g~^AI*&no&ok<*ms?<%QOD<r`Y>lZ=d>NRnVP1N?XKuLa{B z;|;WtUfb3LdO&?qbah+8PlUB4nPh^t!zrUcWY4u0fXOqL%x~7T5jr>5dB$p$>N*${ zfGn@21badL%}Q>6)<ncvTiw^I-vkuC0O+R)K!!^mDR72F>RFj_3YNe)sYu>W%em#k z)edFQI7zyrpWFi)wMWr4GYhvjbHOEVloW^dO|X5(Rgf=0*>LLU`<sb_IyhD#;oa2b z+i{!9N7^RZ*7^NfKbeO_Zc5zzsL_Idlr4W;#urpa2<1xFgP+|R8=Ll?8+Izf3qUX` zK$Gwoij?qYYAKMa>zb8>TN4Q#BK?c+{mS;a6>I;vly9czG+Aj8<CZta-~eeu%oQib zj-`L=wT><3*EY>C#<+wn9el*|j)d9{X$ubb1YF8~%VJkG+*h8^U54d7BJ7onFs)mx z7~igVZfMGKiX#gm8?B60bWQbx0^pnA4y`FNz4f~bf7%;EJg-Qh?MA{|E(3#+w8+gs zP;1(uA6yuTWui(n%5Sm;{+k8qh9eD-*$amWVruC3M^{fn5X_GWp(i!-`Fd{gvo@$D z;@N{|mF-ilV+mw{qRRB-z2^VzyIw!GHVA%^L)3L^1}t^f*xM&Zy;b5o2_W3}M9$zI zYZT$dpmzE64kYUD!mH`e9D8esZ|L}%AGUGs3~ZS97>iA;7e#Zr-hFcT)H9HtJcamv zhR~3uh10R~z4BKAUjC&>7|!fASWq*#;zg<Ycu9t>CD?u&UOtLWxYo<qE|w-JO7)@x zdZA>+gStijs~fqQ!+P+W37}~AOV{oWX0bi=@cY?;V;%tr8B!tr_W>poojlp^u;9@c z2dvIfX=9v=*F(1ao1MjJfyok5@&#Zo^E`x@;}OGXr{$m;0X$+u`oByF4R3jU<fd3? zhxQj4qN5db=}-?q^SXqPz2JB8Gt@iv-vSi=A2kfFI=Sy;AgeX0qJSSq5dAPqq4n0W z7$k*I9YuEw*FAYM%)NWp$ghDLp{7T8ty3*qQdra#zHoL}%)<h@(3~r0zI0@()ESY( zZR4Ctp)Rd>u^9%i6P`s)bm^p#iGO?}f3~xUX*KEB&3!A0H^>hg)Z4+vrc%lRPJgi4 z27Uqt8^$(V4^BqUJ;0v8h6}~_vZ$mqo?6(4+{^956$4U=eMMg6SZ-N2jHps|oTz%> zTl(Vn#K<4-JRwqYO-XK`feb&E!n|NCuQK%FzG1Ra4^8YWyKVpCW&zDpw+m^)GG2@m z&yQ|@uZ^RR3)fJ2rLyYjf_hztJ?Ft8$tW{ZiWa}_A^%EIdQ*o=fjkdX)r7{W!~Wid zuU!q8n{0;1F2$Qi+EdA@y7$>d+`^z7zh?t>1-%D{GycWkKKaJbwxHAm<*?9vvecXM zcZ6RqX)_s<kE;Q{L*vw#YggN~@BfGO)#`2u!U_JLa+um=2V(OdzKO89)K3&T5D=ey zsv!5jJiptHe|a@~WrUEeiuNG?=r{l8gCH$QtRwr6E@l9g7-#(7R{%x^M&>5}S1MKd zV~W_3x*yQV9ifb|cO5M(3XBW0W$4$bI$ITBv8f<tu{P^vUY>VLt+&$B*W(=}Iayh2 zJfC#C8>lDmTN(7egK}O_1Ja_0u#-=9&4(izXd?r3EiVK+4VyeebbrO_b)(@IB|n;; zMDXY76n+jvJ=sUU0>WVEUN+co$HC0$BiUx41~*VE1hp`@z!)pZH=%+*U$*vZ_lJ8W z9apP(h<7I%US9%cc-Sw1k5le2xeJpA`M3lRXpv1LF&FCN1-6GhvT7y0-H-U5s-7Ax z1|2~$qKn+@3a191R=t&N>(>wlFhrU5paz<W>!U4cGCA?t0j_LYpJ3T5_wqnG7+;3y zyhQCMR~Wkj=?W7N*KI}0G<OfMy+V?$Si<25p=>>(R?RLdw9V~qKcT8YnSj_|pg4)U z;+&*1@$We}3ol^cz5}ePk3|d2y!11HUMLhb!PxtjKt?WOlAfw|eu)f+7_KMueuW3w zL;gCjqn)j(fMm%wdXQtJpZ!&W=uo*_elRw!0ec!1w14(;-Y5T((G+bGRS9!cUcmzz z=jQL@l(Q-4<%}^ng@9@e9H87`6a#mNcAfsT0BJ<>J>7t?^onp6^Esz+lS?3(!<zl_ zMoMiS4&9Uc14`z-sfuvCX50tLX;&!OA5#?<l)sHh0m#TdvDCpvzqSBZLMcTWn1Bzb z0JTwRj26sJ4TGH|YQ?q}&w4D4XWo(v?>%5KJ$Ig+>J994pXl0Iak!{fw`PfIF0{;R z^z=yMougmO!|W8+k|8MX#=ps(*+RH3S!Ibw&W;<<JNQ(<;kRIl3w0nX$37pS%|`n| zuoC0{3t;u!&uGgu$FqHq9F%`@E>ITK@6P1-bLb7L$f;K?`4UPP%hnb6@pR)5DbuOJ zgYiC0&@8|FAjWYk3|8foT0UOhDA$%5exc#DtHaxI=nMK9{wlJSihwL+>WhK)da@q} z+^TLPuL2xeGUaN5&wlsHYg_7A6qts%EF11s3@GwPO@)pAgEl``!oCFUHg-PtL|P6V z_z_)wn`=I8=IY`SkrQ~K;GK=e7wG$xtuDNKHa9ll;HQH2148ekTM-`|A(Pa0LF_Xh z$K1<=^doFmhL2(9BXu4D_#drm!7qZdF9;x@Im~}@iht}6dkcF8z0`3#5aia;NDu%B z00r<SmB64!>0p|l_Ncdrlr33iwP43o#)n&;olO?kr$}~Z7CdFXl6+JgvDg<kE+GIh z5HqGQoKrO$mF!2GLz_A#*Ln%sX`;eRZ09|lmEHTXW@m_Uz%vllRj4m)Hf6NKN3sd^ zB>>_Ie(H!i1~2dyLdH)Je=~kjSXc-O(1OGnK#I{a|E-n4OocO-;=qh=!Q+!QU+;g? zt$2-9_e*nAU%zq?pUOXCy1sm700-h5^l=*EEHa?Ft7&`jF1G-Fl_<@PEZHcSM3mxs zBrY%?;?<6?j~M7j&vigVI5s?6K-xBbA#C48Du(CTYm(SEf;1H6PxQKghFPgRK;zF7 zx0XCx)1U^Ncd4h-q^=e7{R}fMFjq&p=PAOgv;TSSUwJ8WrI4At3|qT{ChQ*nmpD%E zX>>Tn>K%kY1yC4>2bJf_uiUkw6(2Q0vZ2*F-yxsI6+2#1wiRy#<RX`aP7VjZr~Nxl zA3<NUA_D;tP4_CShi=tZARVX>0E>(iy}wM*mXJ|V>)eMqy7_^hTZL=Uytz3@#E=FC z>J%>pRtXOSR@x7vI&n0gJVe{efzWmT-adBUuN{kGLEP=YSq5q0Z)gVW>UW!~CRqAf zKNDO>?p!^08vhZ&N|<s_!ARV&BAb@FwJ3LD!?-_rTXuq8TtQMugo|ij0G1%U<-+qZ z(>=5V5TKf%He%(>XaWcpb~g1ceH;pqhJbV}4WX@2jnNp}1Hm|Qg53TN0t=&J?vy)9 zbT28-8b&-oZRyt%MEL-XgOVX)YUS!Gu~A_X2RK2U^%gY+i^14Fos~VFEP?B0k_n8) z`QF+U<J@oi=TL0lt$HwM!0;^hQ78S3eXmtPq0CK=*4egK1TatY;rY;##9CIubsi&p z43rn!K}0DodASJuAoWZ}_7DS+VJ)Sa_^NNzaFj+jMOU};M!)j(rvfPRlsVrZ!LCBz z%z7cNJfx07^PY}^!r6zdtD%kzZtlMPfJ+YLS5;qy2@dZSWFG(zkY0b+91bIUx9Gn> z>o!V%^Dy%wPlzFYiv^B>DgUHj&%~Pbk$=07b<<H$KY-UzD;+!Zeg+>AxC@47;D*++ zrs)|F7;{U*A}&rbx?fK<c0}a|GFsi72()n$#_F3!fyRAmk1IhkNJzmfUbm)GpD-0q zt-UVO7YugbXHOmoh#dh4|C8@LD#mv<-x0RWA+CJUr;B3FDX+VP`FD&nqJ@o{M_mwD z33tx-$Cem8FaMP8$s8!6EaYR}A6|aX*YA?z_iOdmzBx!VRY_)n3plw&x(8rG^E@ET z3Xn}-n<6oqO1}&cM3}k7;hUZ=`?|G)yty>pw8gN$fOYWzTwY8=CwSpMrCsX3a~=BU z3=@snu4dmQ5LbCV=Q2-IHCpPl8wT-KW9>t65<<EA2%wT;^tpv08P`cMGuO?K;dJH5 zvAcS*&2K%Etfl7&NV62mAtlV6ZH@sS(6!^fw4rdptG)Wvl;6fB0~h@Izq)e9)khxf z4Csu`3#ZVDYCI9V_M4BZXn1N99SAZ-{@1&-bv*$D4dy>cBDdQ3DB@ootCje#X6!#` z12Y>07g2UYT5I;qRC{!Mu@cqGI#n<m<QMR-RGVy&Dw@iNv&)-Pv)<|5?sUaPi<U)x z-SM`C-kmUMAfJ0heq9L@?wxxOgY(eIRN)*DP6&g|bXy*oRR0_h41mk``{UO?0PW)8 zad$C%yl$ryBG8LJw`*rt+fl}4lk49E+#`$2saEV4h%w%Lozq~IAHf@#xQi&LVuG*6 z#%S?}k^F>_TB#u+7G$=Qe-}>>YG_6zic<RsVLEf=m-#lo7VmJtTA>CWW(+WHV=zB! zWs9`Is3=f{h-54YB%o``PrJ{GI1B};{lN8AN?Cy<rAxL_!Z@~Jsxf-3qQ6{ZfiZbK zFxv;XH#7t%8~MINbF<#g0Q!vvvO2DxY2p>_{WnLd`igAN{+~O|k_-m%LQr-NkZMIS z#shC9d-oZQ;6`Rn;vIRuSbs->@u*{sjz9+g3{s5!x%Z-aApqzskh&APO8ExAH+U(= z=KL$JoWaj+wDR<sDBU7iKwzxBJJ_b&gZqR8Q+nx_pT6cGF;u|>sel)}l>6U{3e*L1 zFh~p2aZe|IA^MyOg-!l{fuDo8Id{qCO$f}lTHCBR(eh@(yHhkbNLUvE8zTxychO-a zbNU=Z1F6M9!~n*WrY(G^jimY1<uJFRhim=XB?kb2zko&0#Dlsj#gsf%ip;tb1G^Hv z1&<(LszQn^^g>%@f9(9ho?3}0(+3YSfe2jx)ty|`qdgNo5;KptgNxq_;6tFJJG(oz zyPXxs-s{BSh{)4UdXLXo$Du-S`ZtLfqRoy|GB4$C58xQlk5=K$8h-a69mE#6FoPjo zH}@D!ss1h+iPBm}Wq5pkUP#rTgU9oG*3s=@b3G_88uU`RE_{#Yi!D6^!4slqpW2XV z>Fsk^ZlCGf?eRhWWqkah@RXrLM?lmd)eBO{m>a>bP+$VR4MD3%$&@rd9n9x<#5=9s zst_~;Hz1u$GnDUM@m>^$rWL3=lFqrqBzr!5RRe@KB=BAnIIfXP^HIuLd2G#!F$`o$ z7!=GMlIju;WEqG=XRxD;^pepp(0q(GehePk59CN7zo>j=sn0%QSU|Eb=n)o3V`F%4 zk8|>T8l-3sC^w?3Oi6cxtrSkIG~f_BaKj(C4e)%M;~(Uwje_D)v=6s9R)Lp(p+F&I zH@O%2N{p}<Qv8Nd);Q)b6_#5fr*cp3?!ftF>Bd$%z3i7vHueU(%T(^rP-)^Jy3vGY z)#Mxtawm9TEB}hY>#LsJ1`)UFSO$WjGj6HFAa6&2-WfpXkHM87<<E%U{rPXeC1&<; z2Kd~*dAOK#vzy)B7VFK`os|Q0bM^x7W8<=Of5CzSd8+`kLu~O`!~6R1_qwCczkI6b zb6pdXcmYv6gmQM5ir#gu`F{-07-I)6rwuaH=~~i7QhSkBCNW^K?+6IzdmOib5vmGS zhIp{s<z@4umq+>Q3zwFx^R{K^i9Te80Zj83fD&O&<N3>|k`YNFj@<_keozr8<(etP z<gkBqVeOfijh#3HQDTEjn6gTyJI?EV)_EU^@ap)%{@h<`Om65Ot$GA_`|Iw4&WMH_ zS5>%L(+;SZqm?M*WsD?-`!^vmi4*Dc17qU3k7e)1SsAKF91Zv}T~M~mhou~A0f=C* zPsEROoj2J&0;rJ^Tyw`1BeQl4$}I*Px3So$*X__Vl=AS`Pkg3KVnLpj#q`S?q;f&A zlKYMJ)`VL`vA}~6B@~1DpaSH49*bqio>pDq3V@p+3Cj~9Kr&U4l*5@h4G2MpuzbPn zo63-*Ya!@jcAqUaX6Ri7q%K?Y0kUOUmuGiF*l;Oa=wmq|>e{t`3w;~iF_ZYGgUuP= zin>AN(b~2<ueo2`aG0&VArhQS<ZbgVGmSZ7!8SYj0zhE)D_0=UTb(c<M4PO}B4{CD zf&YYlx$0}eG0CMp!{I>HS=%uNL6yzzUnmqc(bloaWxKpoZ(DWpyzPHy0>;pS1YgbQ z8|zy!8g^bSgh=j!?&q}1bdEQn-ea#d0u;s_gvi%2aY!!!Kg6?w?_Rvm3<Hz*d=An0 z;P=|9mayDbcz(qdxdD=qV?9KCzz>=yg{F8iQDrLhmWn|vEL20&0azQOs!KMorZ$gx zuDMIXq16y*D4ej#v#cAGfagsprXCHlEWYfz($3SDMcp602CU2ndo--iBuRUI{I%7g zP$ujrfWqS=AePL}#ewY7*&Kr6W>USs{m@;nMu&S5hN&Lu+n&;MbRU!`Wa+El$LY-T zEESu6|5(+uKS;aBbSNa#W*dLk4ZXHe*$SXPa2##t58>Zj(K{Rh$O^a{(xX%^U=9bf zf46}0`+2okn6M=jA#9tk-UZs8y2Ui_dsOq=uI}%?tg*)&61@Vo5MvjRCg{tyTBOHP z5zYbvh~c++0Q)vck*Xc`Ik|hdd?SF|p1nL=WWF8q@WDT8V4}B$M;JqeT#wKF^H_Z1 z41h?oFojGEN#sTXL`TK~Yo~(D$Rldh(c@F8QgY!WDAw+~(i!b3!VMbfFZ2%+CFog( zvTpj94x^v-AhLpzxP!ieYB{D0<rNT}O;tFX(XzOY!Dm%$y%mTu7If7_;83rg0EF)Y zW#sfSx3Ikh@o>Q8wW#*~SwnEy+uG{s^z>#oNZEo3Wa5Vc7+%Vdv-<=0`pNFOcYxib zlO&RFJN<L6b+y6k=GvH7Pnv>;$5gyl&c0s4X_n`z5F^bzj~;H1Bmd1Fe;UF7F#zv+ z^*YQ^h8#kIUS8gBll$HEMnup=;&&uDB-0V}4^+Q1AQ1{lnl<&oOnv6cbD3q{(wDyt znY~V7-85?e)=Nw@pEM{|A5{{>H7_XDxOVk%>Ht3?GNW1#DJHlHQb)p}o?meP(!Awp zr)9!W>-6)U;*PaU4h*xJk<g%)G;rMnvjisBZm~&!SWS?utQeUiA82K*qB8vJ(Zgt` zxMWm*n`pr)=gp4X#PU}AG&OGd&FlC*h42#%vLGP?!V4XR6wQe2S%#L&l7KX_DWJva zOpGLty6Aw@E<+2)Tts+e{=mdjvG6(-&@M3<McD4{X6cES+A($&<krgC$!U=<&U{CC zT0kJ{PA`tZKL^CJwm@fG-^_V#0l3ebaZ}oVhJGI$&zBM{Me#qYX78(6ojV-C^$ry6 zpjk=-y7Nf<1@C&qrbqgdQ1tu37R61_`NFa@h~c9L{fJGn0$v+nrR%zTnB0(!PD2L6 zD8zD*gemC6kXUK8jHgrvC2u?n@b&yXx3c7SfF#7Cwx4mxofoDv=@+xqloEB=5Fby! z37})e7eRoTCyuX0^jNm{g}6^GIZN@eA{%-EXzgjfIBw?1^0{(~RAwFR&`zcviBwXp zsjRXBkOx9cKU34LvGBx9T71}CM=IcOP4akp*k1Cbs?8DdxqW4rqockYeL^}*Lbkv! zmk0rhnzpy6YX$3#5UCueCh3bh7)`GN2vr9qVEJsg?32?9n`6A6E^5$hy~b|`a>#0c zMFg-pBz6lBn*0GP7C~5Bfzvyc(FwS?{n10h58<fr9EC7mh$V{r>A#3@Ct6tRhTOUk zg!ojsvTNdgKnpa?ipPRFbN~bjgmTXn`$S4dYJVt}7sd539*H`vMc_Ww0{Dp`G?z(B zC5!qefqitUHdN$mus$}m$$gkWF-u#39O9PV+!bx#$N%H%oMSTy`?g(oYuj$OwryKm z+cxjowzuB8cWrlT+qP|d`##T?FZtg8CX-37WHOm+GUxd_jzqE>*uKlFYY%$QAkMUg zg7d!a%G<i-px--k`);0aKLTj43RjWrJ8`f`b<}M#=4XUPd!FRmcPe;%ZAM^R=*->+ z1l=~W{Gel}>_nNBat=u|9)^dkY9Jz$^UCmal_^U9UMUyxSWRH7Q(A#<7bbw4u{$jQ zwoGskJ~RYItE6vd(O{t!QBiA=h-OIQA5)Ns61LvjvCRH4G*k9MZ#|bME=pX>ltr=N zcBHCD)^-hF0?1lA<pNaQDA78XWDKO{2!L%uaBl8I6WBcXO;6xPy7l0=GC&$8gb)0Q z4Ex!+fukMA+2>H<jNDKTrpK)L(QS7CBTSZDI24@CvBYtI&8c^cVP7e8D$-K<qy<Mx zJn6)|#H_%;W3EZTFCLyXeoG|s6P@7eZXXbq>Rx=dCNyxW7}>ByaD#C9r*Z;KEbPiK zggMNQ;!Wg7E{}|NjwSsyaA(iYl?U4wv@!KR|1=)Aq9%FoW=K<MPLGzJ+kq~C)U)D7 zYWMRw!<jD9K+E0tK4)I;j3-cqb{5OgRWfZ(N$>FVm1jak#8>kv2ZIi5nW+hbp5z}q zMGid!WQOaD-X;p#BcAaB8BefMF-1o-$$@j}j3D?K%n&R3%pDm|P9&4iH5$bP4bx6% z(tmP_FCje+LuwX!PL4inKRP}EEH)X#n;^zA8$yTDtS<m-V5SuyO(So2xmdEYU|>b@ z>iZADTn+sb9_L@V(!QB;BCY_92Jbh#2_ebMUFb$B={x};h=5_l*qfCc3i*WHY$(+p z6r)WrkUDWEcc2d^1<6l9e>)CmRsLR#KbLUp_c&c@7u?`9j6_oQm4GW?RW&&l8E+L6 zPlYmO3?G<&WyU`l{&SBKU$@HPO^UZZ4sviB)CU?d>!)YcJ#pupmFNw#X;bO@2=xpM zzGJF!O-KzFa{N;2j8YUnwpAkRPjLCZzv{Rk{kl7Jdwnze8OVV;Q5kQTs*?K=;lt6c z{vOW^Uw_oaA+g*dwSOl8a%*Ce!({O!p3~WDUiAX@k*s{Py_j11d^CFZ*g8MiF)(fN zD9WdLcdTV(lY4L%+b5yMH-_kIr`CRNtyv%w_8IN0H6NYfidhX)?}L&W@^w|qsb2E1 zbh=Dy!<$ZW8cGou+MH~{1~*}h0%?nQBJ9)ef>Xhf1qh-wydb9lMKw-+RfV|<R@4e@ z{5YzUvZ|yL4Tx3j0Q7=o2_*|C4bC`zGsbuTQvt1Bnb9RI#)0*-Cz)sI8sCb|51V`p z2vto}xBRA>A3BF4+lI_zxEB&ZoeHb1^xL6Z6*F~(Kerme;qif(NHKW5ij2%c!zy^5 zBBcw&YKY-C@NqT($Ux{jQvFre{M5IYO2+_@;hmqCS?$Gyp1n7&1K&aNn;$d3KliXj zm(v;jjl&HfT+)u*?r;&6JRRlCK^9c$fLxaD&|LC~5~?Bb27;T<3Jk(3We91B_wtBF zu=Vg^xHle=(vkF~KbhN*#2TI=AE)RT(dZo{AVHz+I0_p9huFk@@hn$B^ct{eG1<7l zjSDW{+qqkGACHf?UfrM-?eqa!9);q$Chg)-W>#7>6&R9iO|_k%U+aOUGUuafB=rbr zhC7sQyV!F>=udUe%UE%ybCVIdusP;wiqw9#Vg`qZbebpfB$(=ixVr%*M36av*L+o} zMwjJYeBe4D8gCM24LNobR)*b5IXR3k5hh&N2cEleXHin3tlH7X`wA(Ay}E^rZYZ|V zK&U{_{1hELY{^i#JFPHis+cB<Ep09^d?KKXv}uAC&b!i_sGue;$Vp}Oj?#iB0V8Fx zVJxqTX-SN%i1s|I`cDVhjs?PU;Zg6Ll)|a8yNxWM-m;<0_$CRAqYGp{`Us7iH$AF` zB%~m)k`Pgf!!+_w`eHr+^53jD)2F=%D+~zzVe%i5gE=mpZZ3~_hmn@6!@wUi6SO^q zsyfGC_=4aT+e8PgMy$ur-RqvQ+)&juvh2Mf-(Q=)3}&ljPgtg=?ePrTLXkBg&Bl`R zQaIUwLL()#6nMvQ#V5q&qK+N@I)Ukk$~qBjb>w!=;GGE&kmWZ1Os*XzB&*CRo;cUv z*nHA_-Z8f}GS=AFucWGR_9}hyma16P7s}@`%6U#>EOoIPy@iof-BXv>3IM8R9tDyp zrLP*xM)+r6IR~4iZLwwV_;UxnDWD#bXRjn6f72me&R<IMU`d&gx)K-uD^I9eQtR9P z43Ct&Yp;`D)EzdbO~9YU$g?9-03^*fSiCn{Azls0ni!&Y;*R!5JNs+FuC(7pM%SDp zP@)7qmj2XJ_`r40^E{-&<AqD;(D-4gDDL;G3N7&hOYa5q8}m?-rHt>OAb?izRTCbN z0lr{)E&riCvQ1{mL3w|ptoX)uTX34rCQ`+QJAf{EaAJoxiL3f9<UcXtgA!UiPMhFN zNgCz%aPk%P8K=4C`pm8m)iO0S3u=r<;C{C5<nn^8!KHSKNpLOdA;Ko|$KPOOb(t8v zNJJmq)1d>9JDTtO*fm@5>|NyzmfQe9VV$e#3-Ox{Dx&1(E#A!ir&6qc*L;JWNoGLe zUB}N~>Xqp6YoO{2FaTl=Ot(QnU(o->-oc|{W<>K|mGG%Yr_5hC^9X#pIDl*9eFeM3 zg{0kOW`UY>RQ7RO>_j^2;$&n0iP4i=*p-WJRoKP%y;zjzw@{1e$KPQy@`eE*;wSP? zLPo=;?`mfV$=F!Uy?ZvVqUbgjYm$E;H9SUu_T#ICKsG01Eihp1i>_c<OjqCNz7r!U z_g~Z;G<+*wb46E8u9&$#-*e;p#5S?Y`rF?ox}+s>xvo_ze7*K${dvUNpwGC#$4l@J z=Y4^DCYG^vDJBck$=Ud0HJcCcQWOGo*kS9!i>nL8!s;%xB&9T8CXq>`g`sOI%Eu%l zT*!EWB!fE}jIBbVu7!3|A*gi{0VXXzzkSkqGomsVJ~xSQ<b{*w)XUl~!B`AwX7sz7 z=y}`x*tVTpfPJ1Lx{mxz11^N>^*sY$?ngIwT^N^-oe+)&A6)fZ4!Z!<!<f7kwsVnz zEVY^`y)OI4N^n|M2^U`T_EE(vQ7L1bb)>Ux8<UqdQenPFiykpjtdo<PeEvJMKd8zi zCMeHE6gBu~tp?qsOyr=7BGO{zgJ&yCH5=-n%g;q!r}rHi7;HbU!Cco2u`MIII|Az> zC#-ihAs@z!Z-Q%IO>6<i+s{bC(wV<aB&o}%3RSrSh~DFoT!}M|>O}u>*UDS0HscEF zhmX2wCKQ5>DujNzk_KcpVRx~YWKU$B5F_=@NfYWNNX8f`tV_w?^OV8*B+nL{vhNKS zOdARkX0lQiV}T5#9lLHGbrI*(9S!=3LR-t<&ff&CuONl7hkgN&v!?V=$zT!f^g=Da zV<QBZh=H%1v^NNb5lO`g#VhH<;Sq9GmLH<5S8(fRt+*C%u70`l=9QJTlTn{0Zu0SD zA+JJSRkR7_FEg{Q;oMF^*PMRU*s6#sREU~h>X9)<j%<H7%?WL?_0DzG^wO@x6QK@l ztdp@+&pQ>+bnF2EPHjYtT$e?kT<Vl1ng<VQt-=b8VPJ=ARkc{|4gML@;y-UQ7DB52 zEo&}!u6UAsWY$?qPAdN^n2sNIxl>3ElJ%1Jl=8e{o0?-(gOSrhgo$;_B4KBV^CIL2 zj||2;k{MDOr;~|^wrg)l$HOXFehQV55Y9EZ7z^rZjyhnbRKPh?1?*VaIr%J1{@*r8 zI>m_>5xv4tJE}cHrrZOQ7l0PnG@%3k><F^Oqjc-P5iCZnl|-`jCIS~vvTkQYs7E7k zZ*UBa%Lm6B7<|6u*Jd(D%QY_@Jv7O_j55@*=unqcC8dh7v*rE%Jm6!kfwV$%sSp{p zMR_=}aHO?j<M}}0d9C1-pE4ZNLK5kf<NH^p^y{folV$%>=4jT%!a!O*A8aOyr-n&# zvn%v61zr2jx*t^@fqRqo{2TQDXEro8;X(I7f`FVN{l6r<<-HMX9`Zkbx9Mwr4BEj! zK)#{UiO)d)6O^L@QnwxEnUIIK?=`j3C`(k#w`fz-txSGo{7i&K7Rk%j)d@C%USIu1 z^5ro#bzM3WPS3sV=lA7X%TV&5Mx%ozbERb;>fThBH&UUY6!_FHTZATKm1IaqN8`dJ z<#%F$S1DpeUllB{^pj;lEY#FNUi_nNh;)wPz@X*%<LdSca5eC+0*o_?w?S`(W~0r@ z&;(r>YV7zkACbPb`vK;ovQF?iW=Sa|)yF2bOQUjK?x>f0;vBNM{%b?xOLM`qJdD3O z0r6!^>k3(FKjE*xf0&!d4ceo5_%+5$k&}SnastX1j50x}iZK=<fnyLwb{;Knz&ExD z&G9d_-q)YffFu!^W07lv!jBy_o^^Xy$3^#$A-ig?L<(f#yjreLUn6#}MAG88l)R#Z z)lZ>~DlGXuQ5c{8#N3CRKg_5ChzkN_D(Q}UTm&|Ios&|>{oeh8WC+Ieq0o%9TFJT0 zu)=&lLW|H-G!CBVy;yLUiab@xGBNO)b7iW+8r?nc0W#N0PCP~M2797BuB};3Q?0ad zKOoL2e^w#ro4Xe^oyK!I*WFZt9y0>r9VBzY*$W1AXGW7|O2F2g@d|SZw=?fz%BBc6 zT3^82EjA$gZB4Oz47X2gA1o!XO|~T)xeSrJ-xRFzUG#)-vnE9F$O;Ipc*Ii^IU3IS zqVwdx0dbEJ?@=VN_VkfwCiN}HbzKoqVlW&R-`RTzJ5JUPWc*^My9e7lA@hO_sBm1z zYr+qfdpMPo3%SyORnmxi3Jz89G#WjN?5l4UP@14Jjy5~P?$)dpAE(7)zwi4-&y*=Q zKJ8~$C&z8AO>>F%&U9S1OpMwhd!Oa6{h+_6az9{Pc-tfUxXvjo&M!BIU}?MPLVnGa z#(Q;BAak}l9XwKFAa{cJy;Qe4xkfs*W7(kG_NM?Rbh*4BUGK2||HnUlvkOe<Ka4-E zl-jkle?Yl3-2X8CV8HRyWxBy|z|iv3&AP!zL6g!Wy20E*71O`F!Dv9W(`kCZ(m<`# zdwal=K-be%d%<!*Jz8#h!KA=I4br&>zzjeu(=!LaEWre^)4>P90Dx<Xatc+679DDm zI9AoB+m8<~=SG^AKT`-}-6kmmLXZSk6Kdgh_YY#v5YguR#d|n%#b}ubA$Q1PK0(HX zU$G95g7rUv1L$R71M5AYeosckgnl?XOtfm9*}fTVu@4ELeb*tk2Nd@HV9}HcpuZ!U zwG}y29>;yQU!a`<B7kpj?L3ebReW-i4aOTN$iq<DHhBXFL-ZV(q0yL3J#iQHXoa<( zI&&UOY3Mh)gTJ+Lq0CkoZ;HlqSa6OB@fBUlc_1zi3DZDS9&X04=J+I@FFaBE<?0PX z)B&1fU72Mh`*r@|_MS;thOif_Z^!9^pLf>nZQyglMp}#p-2fQ_`hia_DgB*+2Lj5e zKXi6+iNm6DA*LVTUR5(raJ!)P*e@2PuP#-C)7s|NoZrN}>?81^UChgy0UHBn1MoVj zfIqu4nw~LDYa!p^ZMf&*tCdE1{X5*8kq*u?+9LbM_~jT^d;hCNdBj(^!43-oqSZVE zX8GU9F1paLbAkW_WY97FrtRNLEuo4C4&dl)=4j;nKmDIg{?GVzj<lX>gT6=Nh^}L0 zj?JsBEjnNEHS%Q;Y20FIA0g$|dim)xGTC3sgv0c2J=^c3;wmW?bNS%|ICjRe2V}2X z`|p&jnQ~i=?V~z&YBe08r)$Pd*HP^%>+R~|X6>DHF20T&nQ~K8Q;Quo2-jov00H#H z)L+XTxivgyHRpb9%CyzLx+)zWB@S<ZTULt;ke!S_7mbGfS{&S<4Bdy1Jj)$B-8_^z zxkU6C@{UVpEiC@ll&>qKJ}zRw8w0MQa<AfIIi7?syEAPvT)mp@&U1q(xmdmK(RZd7 zqZL|SD;8WHQJ1(hw?_gjHcDu+0JdJ0mGYbB^4;B|PAl-jxNsJ^nr`Y<_w_I0jFrBB zK5Kv?n_#UI!};g!;|>pVfCh*S2FR9ijc*$RkU5ZO50Qytw0up&9w1WQKc|P|LwJ*Y zkd^#2x^G_p%6W}_{Pp_X`G#&!?L>Fqvp4G>sFxdcBX_Ts?yKLOwIHLZ0K5DC{bUO} zotBT6)T=xBtwY8N_82&{5ca$5<#yhM%Slc4UM<P401}62Z-?#;EDE~HM}5B*j$rO7 zl}h@G*e~MZg>m{X+spRtoB87hrbRER`DTLdiP)!EUQNw*oiz<mv*ew#SOx@SRFtlb zmXgr-Vm$+_mN)UHYQ+ayK=j$rlPAo!A{)Q1&1F6yUQi{LcF3=}97$dKINLu{X!p;Z zQj5zXKoGKY0>I4>oS0eH?f-l=x!&16=MdP}bP5#{>ZwC&comz0Q&37UW@)0trY(Xw z+44cYSZ;4PeqW<aLUsFlyaw{_c|u6;DeiYke(%-b_oaPo^XB?Iz$YCdLh|LXiNQ!? z7V%-LNOvZ?kW87~GqOy?9=i`U-W}mxv;(EP)W8K2ZzVu#|Mz~b_|Do^t7wHijN)*| z1#CmyvPl+;AVYR1T410{ki6xxtDY^JDjoo1h!jf`p`)C?ty|$5*Vc5{7rG}G9`Cxj zRtekFW*?fZQmu9!&@@2e%g-x10kTY2r7$K0(OGOUPf;Fx=<M$9-aM<*Bz8Ij)YycW z3%mutaLqI%9+K!SP6zdI22V3fFF?P4$1F7$_AS?NqnFY*u+gI9Tsax~N1b-N{SE%= zF0Ds7#nw8`GBU%`%kVn3Gr{|dZRcz&$^mxU0%A|eb(sVe!19*;>t+y&%q-}_k(&1R zpBmNpZm*ciR}j&fWw{8bFj<UP-U_JFG^~*EfKbb0h1+;p)P0wo;-(oGo~gxZd(9>q z9$-`eTqM&!yu*DKN-ylJvK>h6P4rM2Rfsw`+=>-0@%}a6?FROw+yw}_gu0vLjLA;D zVyU~m3*@^iz=)GhG@Oyup&jlS0jrC_NazvY9YZmP10tdGByGHW_RzgXiD4wGk4`At zFj8Z)gmuh6z(Y{tM=z55G>|hN<lC7s$_@ku3;W5nE7&}Gt8k)5NF2wTPkg3<=<BZN z9HHWo5cu(1#IJbPZJ9lU7i?$t_bl1Zr#aQ;UAz=G0E)FClde9aPSfo#V9Yfh3aL*J z*K6Ak@niImeRF1`H^tsTnsbbcxqat!O=1g<Xpc*Mtux)Ol|nh-6S%ZVkzCR8-)4}< zxSo-<aAkG<W}a<)Jr|(fu3lx2;nP9O_}8Th^~DNW86I&F7FdyAdS~{h{b0vE$eeBh zv@h*GAV%mSoSc9zIEKyLj_k|v9A@=YH?`fz(%aUZeW!VyJz{CM^&Y$GlIpzSpu~^m z-XnrZrg!**&cyamlRL^B*Zd3${UG8)R3Ix(&iu%UUqxW_@p<>W!;{C{N=fj$gm;%C z!C@(zE}m{teHJI^6n*h}-_TeGcNcS`ck<f?0EL*ja4pUga3UM)<EyV5A<+ZmC{upK zg!oeYc&GBshZ`&eW4MfS87zB{ECa$l*q3lplLE(e0}D{JYQ7;<NYQbAa7I5+J+tBE zLQ&U)Cm@bk2-V^g*Zm?0Op`o~w_}#tJ(2-2+L7H!es(a>uj-Xr+X=ao!Hyx42IM~i z1cfVqauB<D7@hfbq=g2kgVzkmyn~yjncjAHF6Z&pQ6yfH-kYd>hER?W;L@-uef^+6 z+}g|Xcg=q1uNJ8z(+%{!s7B)zz<JUc#=>bhq|gd|okI8$+aOV|^<Toq2uchTUEFQw z;4$U5Y+TP)@KQ$l0D1j%j3~0n#_ELy4Ej^Ece}?>`69*$6EKY}Swl}LcqoXN8SIXn zK+x1nJ6h+(+M-JZ;8l0OpXuaqak+(`8*f%-gG26|VLB$ZK#mAxr9|yfu&zOHhg~Df z2N@ad!Dg(r|F*;^ytSbFJ=YCwfspq+kyY<-Oz4-SVcg?uY?zeXT^%)4P9P5efHdHi z$)Y-%mmowQE*vx~&?Kz%n@1~=#LCW!6Uzyc2OKUTp~4IjI$Q3nDxN-Ne6EnpE3RHY zZbKxW8MK`;pG9svBa#=K1_+KulH{7hB+~d*(i&pF6xECs^*BJ}^fHmB#53^>fFB(N zO05K~Zh|QW0*aa0fDAx>NlXj?q!YfdFYa76=(Mf0eIF6dcy*rDiIJ(c=Z6SGN9!64 zyVu;5Irm}6W`@>YOL%8>+K#l!i!qf?9=}CnULRrHA?6rARdYA#`T$WT-?2o0wwWO+ znrPyEM~x2KsFgjwuDI%7ff9FOt>#BUu`ol3OT4+Mk>ajRBhKdRAj=!T8uD1f@AJZ} zFy1~I4|uBwb4Zo>r$Pd&Qc$I7Rw7&L<|ZfwkSpPoMB}VF-w%;S)FJiy!nLLOQ5O+8 zdlmmdaMsN5%IsLH#Tx#t<p+5Xa?oDetMPAS(wMBHjQrFVAzK7IM;=ebL7)AX1Ja{p z=n&SXF>P(Lv+C{}cUKNTCY3N093Dp|q@s09W}+NXpQN1awa3f=BxI*nIz-wU*IbA+ zbuErrj^&X*I!Ofd!+64sJg_HN9Z5c=JJD)6vW5!G`UMBBB6L%6@Xiwjy|4SBaP@P% zw7T{eyj<0tr#;nPfE-N!-keOUqqz_G7_#dnDtdjK!4v4`i~JY>teEiarvXtq(|mj9 zU+Kq96{8%#BH?t4xO`FzI%!rCD5;;XnBDFnVNh2-6_E&!j3P22^64DqKwxpi7B7|4 zuJ)j+6)%z$TXcJk<NG^EA^Lb%zSNyH3Hr5@TO1AHgC!48gi%aVhy9Ae6v=Kj@F(P> zJk-yQmEr?GorfGiNGE6$;}P{*B%a<`Tv9AA5bj<fcy6p^XO|jFak_sM>dYR+Rse9s z7^6jF@1mXk5RFdpt`Y62`li%#$lfr|sF7e%A(p>?8O_|u^@9&04(}{ztzcUC)t+OI z>|_@TVr4fN!Zh8u!V%C6`+O8y%(UMIjfWio-Gc^P<r)B-dbdMx@VvmljOfca>_&nU zT`fNf4+b_@HA_Cx#YdzeJ_#041znN<kf^)#Ai6@^;kj9O4(knI9<LYIUPbMTCPz}> z^xYfqFY$1@g`?w}`(ro|#IbpZu!s<_47v0{fupt>K{s<kh;@Di9c3Kd@_z2{WvJm- zIodSTB@hVUkLwFWzzO8m{)MV0MUFOLR6Tm~M=lK>b0}A#7dA`IJg))*T$DxWgeMX6 zc;#K{iiV^_nr6A>uY^m&wWuVTWRhnC2rSu@ZSy$f%FV!+=TV0_xt7w@4%|78qp?fw zKq;(z3BeDs9X~Bn1+!`z<PZr1OZULcm8&XOkY93uPl$sB`M%I9^E`RZhzlPRfAw?< zOsWkVxluHekN{`x?y7Yb$@ADG4Hu9Aln9Vye5OL;EjxWB7B%^f^M23#mEo2&Cdibf zL&DeAA5e*nPF^{G7kbmZ{<3N>1Ap~@^(N56OBY#J|1px?ds>|-el$er7a|GCKTiN5 z0SaFOCdAuI8$9Ps&Le4_9P(wUqKwVYmb>R28b&kYYszo>H?H|q0lzl7Xwg;+J2;%2 zflS3aZQ`d(%yrirMhA{h+Fw>dz(CfgJa=MH)N9%m{k(Z8V<}B@BwVEJ{fczsDRImX zOA-7c1g&+odI?Ng_lYWq+54EG<XkaKsV)qFayEKHU@Mp&Ob5-0e4+`HSB&}Yv9XE2 z76Trdr}9eh@CzZk<0DWt^(Z1L#7Rqd;HrXIONvoj@y3;u8ZWzPJP7N;zfBTVVSqa{ z+WG63@sd$5eVzcGI(7xkCONF@er0scB2Sh))0GH<xRdo$w_kMPn5aLSal}&rb?_>{ zovhhXm91h^laRuZ+(>|_CGC^0bRhOrH)4it>RE5Hh=FTvzb6LU1?7`a?A((Ze?)k` zZp$NTpBfm<{N7TFh+PHg-#Xi_tjYds>A(?^aFiR?S4SqCl3x3?QG7P%ytTdn9FvT` z1CoEwnXb7<vt^eb@U_=tz~7-(<{$(ZCl0>KuEY#MgGQivguI`iHNzP^r<1T&B%E*w zIrtv6`MS#fvpu4e^m`yE1e{0s-yN3B=kS!Z5$c&P9^fgk;u0II!v9jhL_;KFKszXK zi#xZUSqNZHu!Y~dMgn|Z7OY)F%Ds|<7A<07^7<jCaaLq~y{*%!UOUd-5J>>;j0#|g zF}tJDpvb|i4&^j6j3jc9W>5`R7{F;;h26EiO0lFuKjZEw)E2B;Fq6n+g}qhJHncR6 zc}emSHN=D)Y?JE1vXb=Bl*t2*Y@pzC8nh_?_6p4M+b+}=0k_)TlJ4p&Xx%%Z28XkL z8XwpF8(elo9Mw|1TH3~;MeqeEd_>%pNVvexf(tmn_<#W8AW?&J;MY_GBPE6~>Il^Z zug^4|W!^MsW8ou4%_hk9n)_p~uLn<E7TAdH^nwq^Sm46A=l~cLf!qcEzAwC$)^hHu z*kVHHlszm0g{26;XSBQIBFqY_63T6!OLf-d{-B4282emu?=hhSXFdRyT+ditDTSh) z30NGDBz&aDe#BzO1UTVsDnk$YZD&L3h4;faiiOqn_)bC|7*gs5D0gnA$9URo<B910 zc7khvI`|6)oezG)-BILqOip5H6{W*@L2f5889;0x@q?h?(ABVNTat>k5lww#K7gay zetpb#iMXx65{lc?u1gZ&By21QEqjnKCz4->>mDL38>u9^3-c7Ef34$s6Zs-n5(F+A zwujqiuAE=g$4J?bG!MejgiC;Z@~#whJzFF>a>M3>x(1}Kxem`Ahe|8S8PjBU8Jh|Y zs$%S>-6e~D4qch1>ow^~eJ}p8yF8?5atQ$cRny*DVUunuac~Xrw2AWB)Z}~+FM#jW z#o`sCpee;q>BU`SJ+9B>q#=lf*WNx601S4a5WFjh*e!;6AWm~XQ-nA}Lk1PRHbSd} z7^_0B!pgB>**wq#d5fWPA2JYr@|AX{tystWZikg^{5xFuO%-iDK(42I^|oK4_^zf! zL*D2qhS#-5<;)2{^EufK(uMv7W~IZ>PL8DK$qQ>IuAM!fi3w=_Q~dl#ks}=<H`>el zk&}qujOnY_+4KG)_U(Q9t6)PIP6g5BXq0|PNHb-vhUTU0z!5a9p><{?V18vZjw`G` z;sP*t-FZ&BkEAh&cRmvPXQx%_AGj`eXKCK#8)XA->%s+)6CAF|g9KS6!6xzh6wEFW zZW)9sG=M1ys4j0eq7n14ce<b155~Kv&6Zz0)k|hT10sfFY=@yvDy3cregqVC<V$Dr zM6vD%D%Ll1{<Y3~9+&u~^>AT_7-a`>L%ChWqx{AY=m>8tMO{UNEx`mO0+q*@HK1%d zs}puj;vE6_vORK^3lXFV%2y%&_&i(fpi=zZ=|hUmiR}hiJ6*(zxrIf*e2aYQp-~+( zG0S301frN$0nx>J(;<F0tx`!ruK{lVr|+Q{+jOpmk`<kQor{mwj=&rf7SixaM=@Ze zhjdsYD`DUd*21*bG(|*3Y>N9YCK%IEoUmKm?|C!;p0gM-r7VjaW;cw+!>gRMC*0`= zF0Ot*DqESJ<VOInZXZs!aBEF2G=?C@<$*RqUK<9x|K}kEHUc!yZU2!3aSgOdN&Y}y zT>cPkQWq>Cuz-trJ;Bt~qwCG}er3UiToyUW5ZHz-VVvLT|FqfA(pxPb+-&E@cQD+0 zg_i@k&4EgpzKB4FAmn%|&uE-eJthg4$;3Z}*%RHXjAK>v<{{(J3NfBJR&ZOaY(-JW z(A4k?a^E92sNGXM&4+W{XK3b;^f0WO6i!y2N~>Vg<hcyv{^pRg-m2y;j1p;tQ$TM- z`K7R~&B)J7*;q~3sQW`4UQx1y<}LV78Sf-O5A~2w^p(%v=aE#CrQMaq6<7Syj%-bt z=Bji{d*wwHo!Vxq;0|9#l2E&ICdG4*wMiud(SUV6MVvD?XW+>TAO8RcJ#f{#WLJ8D z#(|5k1bZnG9<G0Ax-HKzaTI)hUXLdr1%!$GCn%!1=1tk6Rl73=d3$^NK!*1^hL<Ct zaVo~n)Jg~H@q1=gw|)Lj5MF+c2pnYK0)8ftuVeO%Xk}??5EKPpV!o_Un*dl*;_+`1 zqEUq`39hS6Y}lNQaCM^Z?+Gipr%~W+jhc@hr`CsoNt4jkFe%e9DJZ+xj}fNa>jly1 zoN$-Ngw}nM^kF{q$)|)Gp#Z8pgj*|sMOFQmF68uu`WAIAxUuj4x@KANzT;Fr1;vou zA{(}2-;;y~Ay?FdDy+pRDzjjDR_f1_p=SGERgW-X339RuHSI)wG_uE7*q!$UL-@Gr zr;>ja_`S<6>nqdOyQckBRQiTPP;-VUFfm8cST8N%V_ckp9(>^-7RXnV4=MftU@S%K zrmC6JT581$ZdwS{(1`s5GceH)QAV0qms_(=^_2~8VjRbq6#pyb#cM4+nnj17SfL<? z0lWoh0{Xy+(nRBmQV|yBFk+)NHUtbV<zN>3i0(kC`rZqUjd2=cydnk#$jM&1`iTF6 z;!%#jACCXNeeD@%hKc;4y3+-S&JRg<59lMxQRhRqi41#s7Qz1OKqgc??~Jw83l=4> zzekhYt3I{R(q2TKI1FSi+XG*{f|RVV^Twv%#rRQ**L)5`lV6FD7Ii}6f1_<c;6TMZ zzJOM=g}>dIZ#vp-XXF#un5ygHbMD{-wJ^P%9V6eOq)~nr4Y8ZKdQJxbyUnqRoF5W1 zDED~r2&OOzn0yOMHpbt%Ab?7hG_0x#hFZ^=o7Qazbp+Hy_q{J9&C|<H41S=42J<Ud zY3KFi`yvkmmk;x#wp4y1jzoA&I$p(sP3Y7^BcU*b38k1^=g#DR#l#)|<{u1=h?HRu zgT!_^%uJTHJpVXxpcDj*g%yK-2h9bi4z1BFL;-OXqLVkS=p7KnICV`+KE<L|Yj1Hb zUGNrP^>}Xg51VMSaY$$^@X2Tg;YM;#aI(aRv;&OgbGG`W4e|qi@1TYXna$5;WmTEd z3v`lIIqbz)(GMvU&P?l-1pMZO^_{{XQlV)!R!w>1sC`qVY@P#5gz6P-?M1#HTON`k z_T)0Yf^*8g0JOL+AkTH1)?kj|1Z$?!P?8mxpj)No9Ug>~Kk8Uzem7!QQE$=-tYeTq z`%LvFJ`GMn(^3DadU=38s(i&pP6)KFr`DTTW#rRg0ZYF(vU4;YRQD>5TWw{o9W}!N zjfO~8ZPlQ!ec%CX<84w!Rkhg9UpQY;M#zLJ33nS{sOv{52L&q`rpV4jQ1$8=!DT$; zw}hc245(^4N6hQ%O2B&<`5~=kvE^ljQ89=DAx|hOMsDXQzQ7=%E(V`o{>|sr|3+v{ z(MC1BW18I)d$c{1QtVvzHh+FvapW9jcQ7#yXxw3Na3}*14wj*?LJ2;r7z`K#U5zZc z=<9jkXbuT}O_KkLbhn+>8aD%>MSP${6HIZIlR*$<?o)nNeHlawy`8C|P!$_&t|pO~ zb|_xfLa&t^v*8|z(G9bh_xQ``d!O2G(*Q&bdu*{BTmi_5V}EfSj*lyr?R0=4JuePL z^0@0aF9iM*ra|Yx{UuoaL{ej%g6Sn2emjEW$84aNpWcFuYX7_TOoLs2iAV?X^Svfc zL<~(M!&%6bIs-cF;M+<3%+*{(usxg3IR80aJ1x^cyz!P=pj-UVek{*Bt(NpxqzWMk zE^osl10DAm0^yv*t^~VLP1o(7#>KO(?o#bT5*8I8$jfur%vzAdVmnz`k>x!BxhQ#* z`o12=S@G8zAPU}i&{?RjM0(W7ZX|nMmSJWff<I+#U8E%*oOBe2tZMjtGE`6;^OfJE zj_UTo>hBOb>Q_<D?{_YK69(Co`)e3CK;nLTE7_Jp)uz`<Uv?TAe@3EI8k8pin3q=t zsGb~Pr{|A~l+FoKm8xz0($OC)qQ($-DZ@c!J*OH=3KT6RG?*4cY;Ei}hS|P65R{bR z%=hIa#J_capMXURUKBnfMm|-4p~)G~FGqH?W#GsWOL8iyaxctfGC@h}n(YHbIynPS z$P2hV24wcMAi;<DBLgWUNeXp@NpktjMv|KV4zY~48VbGthKi=m(G<e^9>SsUPpSkd zQ61%BZ7&RMZ5b9lx`QT)1ZNA5cc1nQd5c3Ix~^C}ml^-T`TuNQOi~mOjkn697ojmp zz;90!MO8+L2Go0Q%MzY4e&t?&-r3e0h3`TE=f?Boij2hXqz>PSJA^!O(fsM|hvH-a zn+1EFVvpsdy8>WDXd3C55R}S^{8841;-S4z+6#R@ZktqTbc>4!?Hv7g#2n3vQE4pq z5wX8XgtJD1c1<1M^le-d3;K|4bTL_4`F%{W{KUoS{w<_FS=-Y_kK_a2FlT}nK)YMO zkL!26-5pZ9OM{p}YY`ZB0XVy;a`*-y!8=)m4D<X{Z(7^u_d?3z9p#-mn7+IeiHwHD zau(0JlxkW9PwqX5+q2SS#{hOjQKr#1UPH5ggA<D?9_sQZtA<F3ePB?!u6qOA=wI{v z#H)%*C5EH6v)rD@3msO(jmWQA=yS3zQMli4bFfD7{v0k<IeJVLwsnm;G!_C5f|_ic zJ*xG~&JLv-4LMpkUfq$Q`6QomI&zRfOIrV^jujT4#>AB3V;=VQ)KS^&m_a1M?Yarg zQ<HN^>D}&fRb{fJ#}n#dY(Dyjh9?oR4^sjb&?m{p9y284iN1%A0iWA-{d7ixQ>f>h zqk0^eiT1PGoBWp@=1)-@7ry|274(1Ar1@R)(Kov@a|0EH8HJc)L`?XgQ6PzRz>W?E z#mH#^J833ep+Mfq;2ue{Pk2BR&XZsuF+7x9FYd>M1Hj-T3dukFg%niLsDKXgs3bU* zgBJ>SNiap2J?gUh$^ni7lzI_;G;7TGT$!XsQpRkYZ1A}uW#mu~D-Pf@gT~&~x5*Xx zynbR{P-X%MeFBR6=E_uL_0jg7ZEEt-r#R~gKB2-T22$-Co7mg58}rrg`DQ&GcLDVs zvzo_qz|9VCiOD35*)&%f#nEub*=|LN{*jFh^zb3YW{lMop~n>#lRgo3?o3Pe&vE1R z*(Ei#z-q1~$k^hF9syLwXcqDaxxL4{`uE+Zhd`Mb)cq^c5iQB#cN;O;o|*yKYb4<; zGA}J!FYKP}sx;)M!hsjcZZRd-Vu|}Wyw?j5l--x@k<kRMc?i;@0i3Xtm|7J08tt|s z2gm5a7SB<&yE_3Y5QSClo^RyI&$|cpyS(ta;?DPDo&|^)WB`p$dI-Sr_fHAUS)_#R zyn2{~d910mcXmG6$2iw7Kg1A}Qh~8cp=16~lm}wdQCiKD>DzGYiN~F*r$(xwzD_1_ zT5bMNndX0Liaiqu%<Yp)ZiYXd7)A++IwT)9$6<a?lTZ-V`+r9kq_^sCl{K25<GW{u z8kea(SxvdIO8_o{Dxc$OVa^W>ti4UrnP4aZC@#HCxSTLIX!HqSbPEM54B}%5wSxCN z6tOV0viRZt^-KjvoZ<}!gRvg0`;w73$_H4VOKstuPS5F#n#0_7)ZYT&PjQ{RQ@023 zc@u=acSqMcJoh6ynYOU*>_9rycd7cQZcY{vzFNy+1;9%7P&K{;Zji!fP5bmKSUe>$ z^{kN6JhV9!>b%ZM&h*?Mnb~dNlh3m3re<$mbD|~a_FHM3mTMf!hTWs9W!5-l^0O~8 zwa+K40wJ2tr?lStHDQ^D-|jXxdUk7n_JA9BDaELd-X^A<o|8mbPXTh}rDQ0do_9^Y zLCbWXD{)&FYt7Gfj#r1(L_@(>#><cY<u*xYzXX%`Pba1%Zs;NKUt@*>IX(aFpU>o9 zd`tq!)zoo7<3{(Nt_7Bg@Cq9d&InYIx-|*GRg`Hhr2Q$w<z`hd=Ba~TpQj}LdiNjB zvta>EOI$O(aQU2Kch<4q*D6g#<JBBF6bnm6XvyBPDOk2CUz)6JPEMWGIeIDqRta>n z@}bG*@o(%lc0p^3I+Cz*np}sVhVj~&Uu*;Bq^mudO<KS>2RTiCqfb!=_N164$*h<Q zrP{hNz-FVX@UxND-ulHXL@+*tgP(gUvmI#eK1%qO7o+GDY+$<_k}q)8(a-B<E%A36 z1keVbzK@0=qlD#h&XC*e)_iK`ltwv-XDLu6j|vhrN`JbIV?eKxW6^4)a(j?soG}Bc z9p>M7{J;3t9h)%Sr>a<0pZ2a1+y6pWgQ!1$`wJL(;&U>AOIT$Km9mA9>*dtxd{M8E zG5&<08#E`w^{#QoOqo69xTTY+RJ$m46M~V*gubrU_lE+zT}aj%nV2Vby&C8UD0lmT z73eClw7nhtxb89CI2VQ@z*;(}YG@8nS$wl24eW^h(?@ijyz0Ri{tJsdG6Y(&-$s_+ zJ(HTihw&+W$nqY}SR&^N{<NHUZs;xGrgx$XU7WBpb)>A&!)?euMEnQjyhP1ub0n<L ziE&aRJb^xfDD<!GaFc_R#7Z&_-lM~WXu^dxt_s4{{wNbn`)Z*Qsq=9KGg3mpSzf3d z6x6|jyTMhw7=8fX!M7KGAg7*2{fKI~Jw(r5aDSx!{H0!NjD*aHB|jbU&kL?M&qrpz z&(pIv(yk7#$D_|fd32c_>2~>AKgx98Q+tA9QRWspmkvbA!G2ju2&rA<o?ndE`Pi{# zr_i_g*MmqZhsTK?x8j$^Y`K&G3Xkl-RugVPOLobr++_CoQz2tZPicm<MV`2t6xSrI zyULNwmM|}yvUQi?JZ+(KGr3<lgyjNnbyUPD){<cXFSyn<$gfpG-Utv7-mpGVNA!AG zLmKFn`EBP}qE(Tk(l(8!`#VtiIMSE!WL8dmjMOyMmbg323=T0MW8iWCLraiiRlNaJ zIV2<4W}o12ZXUsc)1(!DVbyHIeszi0%D|^wX#0Tvs%>Fa+`D^s4Ms~DMtv7r20xF# zyPuy4piOH<L`j4Z`cIJ0&*51&Y9I|Fj_RpSL{d>30wpqK^8uKlZ3ZZv*axCip-*@L z9$R!gk()Q^jNdVlRONDjM3wflu@c&WWpqz9)v!-8i8{MMhV%^ePr9;M@pWSGr0HK3 zt<n8eOUtb3$6m?Rd*i;QtT;~mQH7dbaZdaqQ#k_EgAfOLuZvxom}GZ#obg*m;Q4(G zNuk6vicrZA^N{@B<1`#GjDZlAGp%xe>hP2a?z(xhSSo^N%Pt-PL9BGqJ|lbF>@n^H zBygziO~!M~g1>FG<acgVJe?JJP54^ZlA-54h0%SoqDy9N$g0FCERhXtK9y4ap@~HX zN-(@EzGlOAby68Zqj))ei+-gJi%xT@LaI(X<tD&%HI{KEv^ZV_yF0j*+$E|Pi#hV7 z70tGXQk~2zA^W`pww_&Seh37CU0$s}Q^Szhp!{wcLeOc0&X1STt;7!b;pB-5FjQX6 zpMGI8!=wm=4|cy`(;~zF`!~Fw^Ir_XlH`)7QDGE+NjoqBVa6+}aJ;5vYfk4avV4yL zdv#ytT!{q`FCr0*@eLZbgoaRa7(<AWEfYHJZg5@!C`VcXh^H@vca3EIC88m<6kUBi zi;4bTqkqR9^C^FKNBP%+>qdxh^}IJ!<r#G2DBZq_+9}DGXb4Oo2vviyb;%@-ytrQe z7HNapmlT4o<zEOF_`<(1S85z^`|<O#ASF+LU5^iVX_)-v@jb9H&}KWt5kOSc5DTr} z&uBWX2*7W~RcOrI%yAdglpy%uQmPia2e3jgg#V%b1W?h9+5T%Y_NVVcffJ`IRTJU1 zXgq_tgZ&q%HuDPR2maqf<xeo$|9dvz8!Y1g9>RlxOGEsZHlz&&?(^SESD?VP!2Yu_ zAQX@G^%DQn*Vv>Jll=n^{ZFqbov4=R2dsysnVIdsYSAQrx&sV21po!*2QdhBrW1G1 z=NmgCNXq5rTBV6P9csqu>FL$!>9SlQHP8Bz+oG$rI{Qz?bq3m~&Q3M$Hnn>@eY#u8 zmZhKV+BSM()_LjL4XSR<tz!)A?(3#{&dB1keZt)&O3@Y64~65E^=|PTZu*uWS9vM9 z{__~G8v<6flbT=qT>#pOaoOI%kE*resrIJVRm=NoJ%^5sxY;W@Five%uz)ASMKwJ3 z>0h5Wa5xfn*@crDJh_4&BI(iA<!y;ure2A*uIqbZC6}sSqx5$QoO<dQ)m|N17GB)y zm7M{cl~tCHYM|1AV(iZ+?(C>)S;Nq<0)M9eJUo9~Gb+pt0|4A!AItL=+qXrMhjBf= zqH3J<MBoGsUInkq$-c9<E!VE)*;SReUtX|Mt>zEo-R}YpCG)I)F5Q(Sv-h~GX&4{p za^LNcQI_|z-Z>67;1B9BldtEbq7i6$#|~ZyVnDTbNqqpE;GdVnMqPF2jf$yr@~)-B zdg~+#VhDJ}HGp{Xa&E~9&Zlpd-l;i&=%DS?vAjdAr?0l0p~IZ>;%_0GZN7h;hqiX= zD=F>Ww(Bo*yi2moU?7K3x>%34Wnto_$5=GwKsc4WD!a*MlyxFx7xJY1lk8$~c4r8n z)@{E3y{;Q?(`>wIT%`OJO6&z@qG$AYeToIN9A0Jn6flX@s{2Y3Ctk^^2Sq?xR22Au zMW4_dNRiV&$21_o?dNs(!sqvR_x^A?`dUO4KSfkBO~}um83bayt|{*X*Xdrjghz{H zL42gBIM<W+@o5W7H>7Fe7b!S8HZ|%xoz`Otw`0F%cjhV{w0P1UVDVmHd*{BZrRT9O z!8qTn1JGEvuW()McOX_|RX?xNgPY;8Y42Pgz=Z0cSI&X5@vgJO6?5zuU86k`*(&Aq zYMB~OvC?6$Z`Mg#sTsv2$PXd=qnFC?_;VeTm|Uo*k)fHsaW>lS7?Z844xMd=a&o|< z$kxnO8Wz5ksY9c|FyKr-^vyy-H0I=A7j{uSAFzw$nJ2!~Ozu|a#k^a?)?l94uU2WE zS=gReenRo-4Jt^wZvC&#wiWEUHk>azF58t;?qw#izeKxezRY9qR+m*aP`lVrv0yLv zvG7l=+Xrfo+paup{w!rk;;T5lm!jdBrGSWtFEgW(Vst?k^|Lb*e}rdweAoiuqrE9) z0+<WNs-a-dsaNO(8JoXet_4LCYoDdouFE}9n-r$iZOXSd2j07b+;qSF^R(>{PDTZ) z@`m)Ih3Gw%K+V#tPw+0HhMc0FaH@wgFm^nKJUQWu+UXqN#z|Yd<?_D_40r~;vx)r5 zCS<Bg^%R*Juo02>g0RG5PS}_7<Je%`2e|bk?2nRbTYIAyXwY3tCKn5LsSeLN4Km?n zhV~Ka53>YE&cICsvenMfuCy_(W2b{A#zq9|5Y9unkAT|MJX}F(73S}|gI5C8^-9i4 zE8J8s&_8I@O9P@?6>aphDOS1CxouHk!)4&5h}K(Bx}(e&j4KLNwgaj|kVuh}01+o3 zY{T2@_HHj`4+^FAW81}@wcJnhd`gY{7t*2SyuTMZ?DbM%7a>1*`UNEQ+y>*z+a?}5 zSA!JvX2p63ttJa$W_ybKKW-%<*WO>psRnH~!7d7wN|t1cCv_|B5OiYnReZGg*Ko9@ zw|=c=-0+YOCd834DYM2?&dA@A12&Cy4-u|rN}x`6J*0~oC<G#@nla?^t9X{Vgp<o{ zoKidqah%1H9TVYHyTxh8yFvIP;PArNn<D3<B7e{bK+^9tqYtnptSMJH`KEY)zp#?S zb=$bv1xRRjjNFfaT6%VQvZk#f{_toBcbt1H1%)Ki@ul3qc4{@$F3^fN0o-<PtEq>t ziy?I2TL!OWptG7xKNTzQWSC2_C`E!C+%)q0_6aE+7@1)$BAm=e@<4sg^tC3!%eiCY z8oEJ_RmaZ$OP8uJ6&KssW8ds6`nT&x`fMy|SBPU%J*&35P4FzTk%$Tz$njM~z|y%3 z6Z1FoycyS4lIas9uGO7a0cz`6=F51zuz%~GpZdcClkRb6?tbf8{9Q_3H@*gLO?ZoX zI|vwa?b;!2mm|q*QP(JDP4-E#T&rkRSgDsX66StWq*<_@(-05nqp8MHIiXzWE3zf{ z2g|}8WvB9*d8V;vrGWecQ_6i&y{F|@{`HdOTU>4*9&5LxJ*mN90{E$dw({q%dR7Q+ zb8>oBj{5$1EIA=#<#y0UI|L2{QZHRc$eS0x#x<j?`R|S^^v%r-RYIv}H{4Nf^)K;n z7tnCslN0FD6=FG0-xs1WL#59kUl3|vP;XlD))lEE-a>*S*(qUz_u|+g_9zJ$&o|Vn zs?7c_<!>MJ;R(5K1vn0LDbydbJnhKCclpm)Yo~h55`{nh&_TLOuppIiLd;fek!S`# z4KbS_MCY@OBikYE0Y+f!_9d<b;8mD>gZf9_M>YxX5S-X6uAA(DpF%UbdgXGekG>&F zVp1$GiErVQH9y;AF3?2PJ7>pQ-`AMw5nYL>BLCn8WO{5-0KlLGkI(TrZehEGQ7Lj_ zD>Ps)l5Bc!*V+?*5NMQu{UPa*pp7nKTd@!MC9N?~+7KfcWbEe!W5JSmsnX1j4^7#i zn6e!gaWFAr)BEGu-&zv`NSVU6u$|4pM!Y3R0`1LG@QC0DPKwg%(G3N>Z<mMkwP{Q# zBk}IEVpOe11t=*P5XHzNeMxuGWYtX^@aceTFg&Qo*8H78NW_$f_r~%8f>i`a6NGPC z6?GF`k(t_;V8@b?{l@Lbge9~|0U}<3wzWR5A%Jgn`3rVpg7#m~59UMrJC;-Q^qMac z*}8iYHK$CgiDiS~nsh<k2n29AZ51947(&h@90N@q0fl*C8Xnu-9dPEV-CE$FAF*Vs z@g3Q>3;Rw;<%Hfl+#Vr1?Q6sZ_zNe@RX4scHMC{Qx~l=CWio46v<diz7d2}^l0}*` zL)>#HY}PI8d=AP!AW!w83Vk>WXE(qq#M@C4w5u72lB5xxaZ>g)N54QECAN(40wuA5 zbs<S|z!_;uDiRdrP;-wUF`Kq;eA><tNph92(XeT01mPF|jH*>Smh8qselVF2qOm;Y z^7X7>3k@->m(-Y}7^mA?CajMNu^2JP;Dp8Ww4ymIg<6m_9SAn(w2<NGSVSN{n|umt z*2#3wH{YXJ5OE!oLp^~sE0@okJc2CDAOSokAi)RnfYEtXJ81-Mp(_V>$AQ~;f^{P{ zBN(W*2vwDyqx;i9Hi{$G|EJj@Z#fzooA{$V$*LLbx}NH0qa5WcbA#|zw7&1r<3qrO z(p;Jm6U7a6??2A*&`l7?4}8w8iI+*sH*#poq;8VjYSw((MsgiUZ18n=Nf`(%<7M(Q z0EI|jI!G&eQ>d(0vK}*}<+Q|nj=Y9eyXAf&N+9V<;N;?18I?H@-)?&vi8m)1RT8z! zI|FmbR!WxPCvs+U%@_rwAj@APt_&2Pm#-@HjFewpTwVnN-}|CxvD-bKH<EQs!W&WU zNz@ysKa7eI0{gh|6eH5!t#y*RcuF)P0Ps+Y$~!v-F=EDSh&g&+q3%4tO!M<Hir{q} z&g`ie-;ChR)#{2sXZoSh$^xWQ{~}5X?-RkO*&qhWTNzO7Qt`s_z~p0=f!+_cfgK59 z=~>31*SR&9F=@owR>5g;aEAF{{^31i+<6A;v4RiT$|9aaphLI-eKEU$wY?j613=UD zmjn-1U;+!(J(9C0#t60<#5%A?CB15JT{whP3Z0Tw`Oxg-Cs_Y+ZY}fCC7glT0l%W6 zQ(N#%*R&DsafIQ`ah-?uA@fNCFjMXGX<^z<#p?&@Pv6~Ai@=65XbuH3epn8GNyC>b z**j91gey%p{Kdd^JwzqfI3EzT0yJN>x91WN=min3PoeGfDR)&i6!Fx?-!*TZJ)IyK z2z<;f;~Rfz@niVRnnxb|AFj?RJj{k^x3O)bQDfUlW81cEJh9o>YHX*m&BnHEHraiz z@95v>b2=yY%)OS2ZK669w1h-fepO+MMfEoxUDX8FlM2^G<yNi;tM}XOZ+X#nw4een z_&-!*)TGzswH5r5FUpv(Vothl$wq>m2+&vyj_#HJCZx%vBc^9!0#={wqr7y_;wG9; znSU3sJgD!~j@!%9D<^y*!$Moo)Kt^bu?JSh)NI^2Skc!Y(-3?2VMuKY{benGWsqFA zKKQA_NoCmwROWQ#v|O<NQC(BISkV4kM>xRYi6NfFEV>$f@lHMxfeDqP1ZFwYVqRd& zJ@ls=n|32}ua;uO1n`caI+zH1XNa{60@o|<TbG$W-1Fgu>$%Oic5wcS=!j)GgS%3^ zIy`cNYAecK>e*mkFCLko7x<6jV>O8vu?-n>7Al8e`QJCQ2oTZI$nwi}8wd<Xe{6o^ zdtl~jO^Sd7(>0qM8w?PeTDOA62m|m|wqk<v%D-#_uVEGd?g6IG)>)<}mSl_*)HeR& z?o+phdxf)#I3J<Xze@c#9>_RX)ZYmEss>DvW2mKyQ3)5pPqAj~a<k+fcWkeFuIhIL z9u<`=^?7vjXM+9npo0Yp(s6>FBODm(4~_L{qhMAJ=QIe(GF=YK<DL_p*}aHMu7zjL zF`XC2ptXDfqggNCG9^tFc~0Cs>0}+4J`F43d`>%?E=v<Hu5+=~92VHZmWOBFhUmEj zkY-_Aqne-f%>H7DqKf$ND!ImvWJRdzJI(dVrk=33-}}oQF8E1(EE_KaCLokKJ#@^@ z$bG+$9O17ZJTjzS_6=4FW5v|f-J!l%Fj*pX;AMmXh9(K@D`5TXX%D?WYz1*KZ8x)^ zyvX_rdBNav*cudPIZAiTqM=MTReJ&$*Mb6LO{yKy#rEB}Rv-vnZQSX(v!fl7yd^N~ z*a}g#_`a2N>^+3?{76UsDX3i5Zw7n)-BWzuFW2{Ki~5CKtzC!wEQ?+%ODGV8sGZK` zMrkDtK>a7)PzDXGmJG~LPQ-a>#5d%Wt3ZnuSv#u6))&TB%Qrhyv9a*AhKV6c+mY-J zh(|Z0>oe{GHTYl=&eREFKe;nWP068b5_B=nXAq8#dbLSB3ZZ({w7jsyNdEnZ&|-MW z<Nl5#yO>=Dnbb|X%7(@N?P);>NZ1JOn<B3T`aB9hieND(;QrL1MVP9KbLj~Ru*~Qk zpFH-KEkkKBU7B6JGntoKQ=RHReO^w=5lsg~x0uBRG<-8Y3OqQ9lrIrLkj1s=*KutM z(F^J&hs7G^^iDK78Pie!PSymXIM`yD(4bkC9PK!{*EXGHpB3od_2f&QR41N}rPap{ zC|N8fZ^$T`srkXSOtlR5Gv%@8`UDF<Q5slBX2t*6Y;$GP8639`u_y7z43m%r0i-Gd z{#5h+utba-Cw(&;_0B$mu@5W16ta!UET4`279*4fCSIq#v?HrkT6yS;Dqx@(3AUz= z2!%$$0;35-Cvh=tEQ`QUaTb+|nl3L0eEHs8Tr5r`VV5%gIcA*x2fO8cf3={vt&4R* zscEF7DmS*s+A++oD2MYhU227e8W=vf4DX|Z7A3L}qp~ZG1Pgs8$no#}8acQg#3ebO z*1QORnLUBGp;lz&J=vNI6TSWZO9IIDe-MiFR$rwEBmP73<1xzl*RRS4W4*giAmGd; zAm!VYJHqeBfZa@@+2gUX)_8qC;7ShE<Ga*1u!?*U=O$I{nbDEe4C+kSca_Is0y55f z6rQM@UAu8hM2Q=y7_7;xm6b9Zf|ZXs!@ESO<u*fG#$Be3vsl<ra1$&MzoXb=3Ye87 zM3K&c+p#s}JP;g-vy)&Y9CIEJAgT4bOtz0g)7|b{G{k6oMelMt6wW&c--iRPhuHoF zHCrrINC5tBjz$j{8pM)zDRsVlhO>h3H(@`D(+h`y;=~o~Dj`WmTzvWwur>(ucFhsQ zZ&+VVA9SD8fdCbd`|&CmFsy-|HeCM~*K$T?E;P``X~@slX@e}#KdJjW5a;^kG5$+1 z8|D}Wig@^tX@Qt-qB{l=!l~9)cI4(Xa_45f+8BM(OVvM!R4XBfbemR9Am9asTxKvj zbfO<Gv0-brH7e_S|23aX?;bi1vhjn9`dlXJyKmBup3{UpXI+vw?~N>Nt5k@3sh|wS z6BKf;K;69e_|8wL3y7{kKtwN>U<k)(+$*g_o~f?HoriAyaX{0k`6{_0fjOFqRqT_1 zj}YtV+r=+vJl2)nq`KdP2zYDPMo9}KAaaw-b)i3$clej#+Fye|ifY`72c7wh60VUY zq(A)sQp*v1tdA#Odqzs%T@9jqZ`gKk>NBTh!sZqn7?HYpi9VN`1`u(7a<~~{W1A_~ z749l*c_6%O4^3@@gHgI#2Jap(RTL!9>VF@@ntgY}g5J^;G(>`QEWXpxMO<vDY$cpQ zG5Hrv{=t7kY@@)?%Wt4$Qp&XZUDsTWU|XYssgTo<2X{^)2P<3d@ZyMCC0swk%qhlh zp}Dc{PDC=kQD+hk3!px!_v$aF+0xc$h@cJ?j;9{HH`$~Y#LKZuV9O7Y;J`wQoe|16 z+QG*NsIN~n_eYTk0ANfla!LpHGk#O2f7lSVKp+=5^O3F!mCBjY;1JlEu~NK1);7(N zjyQ%hcsQh}k5}@P3iVUO^!0JAAtw%z%!8TDtWLD5!JG@30c6<%aVQY3I`|6CGT#P~ z@XihE{Yumxcv+bxUMeentiZOdry<&f0nFSMp$%wd%d9@Qq0mU{Q1vRUGJSN03Akle zwF7Abni0KFvW|vLN7LE>?7YyNn}LzJ?{uNypbE@bzkhk_<ss}#aMMZiPwW-VL?ggb z;)CbatToc!0Oq~z{QVqr0@d~p*NV?^CqC;1U(P*e&u<s2kWXhX>#lY2a2#0|!KaJY z*F^{OokJjT+!-D%dcviijvTfPY18`kH8SUqH=9f8bTVP@9R7v#cRaLr#jq9LEu#pu z5lD+<_!*ZP5ltZsG+E+b?V+)-ol7IMS&42`M{O8_KzZgwkpK+(-Y=S;WO#oQ=nIN? z^TCmXO^ETH0W)h?A0frHxs`%Ka+4PCWZ0-Oa^9@N>Qq<4sqIRhc<^7tqvJn#h_dkz ze0T%{Gi9`JM2rk@@+jlNNS9&y`0oPCt<LzJem;Dw?GlZzf8InVq9eggw+kMVr|6%Z z*5!8h1YDu+om3|!*$5*)_m9aeFY*EnC!|bMQIImV59nxPLFL_9W{_f$q+ItD1g1c& z=d`mvT`W?f5@V0yES$R&@)miyBPU13Z%{NE*@f!VWg5s!*zA90@Z#bss>KQYJ0cEo ze7V85_h%cko=G*d$jcXgM^iI0u2g;?)6$_F09Yq$RcRY9fBNl!aryhi%bPmD)?02m zF}c*7${L^`CQXOgd&&nZjE?Wh(a1Hpr!sSP_45(K$?_krcu$4!?N=n)O(3D>x&2&? zSn5mI!$@pWHl6nK3E;;Hl9SS>6o2r@5lF_??-wqdcio~Qnf+eN@5!`3lyczQ=>kF8 z2T0N;tD^5$d6i=w&RHHd8M;V4s4<@E*68TuIXj`E^#y7MSN||m_H9>X47D;1H=HG= z&Ak8Jx=JJFi2QX_JmS4`+Vnu0Az``BNIPX6(|Mc=oGHImM#-q!J{_zGa^mR-XVKJ7 z3j*7}$z}=@2k8jYM5twc(N`Xmi1ORQ0lc&vm}%LYsw(y7rqQ0r9aGJ*uimHX%-T#K z`bDMF(E4_xc{J;6xVBzWBF4fmOQ4_$+qU0)IH}V`S<a@ZbaMlat*HO-*7xe3tON`+ zhVov&I<G%q=Yq6QORW|QR6z_8{#?@t6LHs|5}(s#k4lp}ystJLdyF!dMCF8U0lvLE zLHJ8&p{7@3(86LKc58x-9?w@1(dt+|FI3-5kl(?f1`NK-Kp}XOrGUGKVY4v*3IVx~ z_2w<^9cHFtyA6qPy%T||Q?E<iu6%Z8JI|RLh_`LH5J`~{V39IY!1_jfBs&omP_o0} zxD;b<360JWz#5yX=qbrg-bE0L18`3fi68_#^5M7`RvO&PR`Iu1USCp8@j7?0B0<eM z{QDn%nH_WvCt+%t&0HWV+O^VvKzD~LI=8Julzk?xU_mq~<sl<a?+BSh&=V(nZSq&t zXfQS@wHJNLyIv0q<bb+BnnG`k3G_l$O^*CJT6G<ckbNJxqO~VKL7+6H1k^2U&bJWb zHe*uxn4zZo;K#qEscP&8BEE0Z%<B6#jHv2U3zM@|VLf(wi(1b}aZ(wNNFI4c_^eCZ zF*PX*<|eY>oeL<QX?SyrdQhI%U8Kkv@S)BO)!snHGG2eidO(Y2oG9#n$x<3RAqRgi zCsl@9fzMmJ)D7?v4W(jf1E3y+xj+oI3qQjkHJd8J2R2KxZ_vAF`cxKhe3gz)4%a<c zm1$u$wJgcK>h)lA5SuajSST)B<euiy+_Pv=!a58h#}HXR-%e<=r<XmFNMpv*uU2LB zJ}y-3S!@*cp6>>dxNM^8KlHc+x`@c$4Ib^0=T<9SH<gm#q5F*iplr<1nz*;EvZ0+i zrKtK*JR<N~RrWE|yfy=d_xaX-)GR(nv#&Yly;M80@7*xbDvuhyuO4RDVOvfh;rjC% zEZcfO+gF9=h1w=jcz@_yAdT<J*LLODdlUoPU}xG_jPURpOjUh(yTZ`bw1`Rl-Pwwc zimU9BTmEfzwAk?*5S?wWSrFGWkiNB*V^VJ+<{a7KxUt=Ka;y4Cwb~FovP?8Yrkd_O zFb*NkDMkZB)NIL@$6QxEcAK&4GtSVBIgi&^P$ViFjt(bhrE>S?#8-8?vU3{{i44_O z9mH^Fd810N&ZA<5|4Crh^86-{$I8~q!!(`DbnRrp6__9hOw$l&UBGy(cHgWl8Gxo+ z5^@^zwcJjOq1Zj?@uxl-$w`!)IuUDt>K9<o*Pg=ML{9X0>}8o)J8;uc-(2$~!Cc>< zu}So8O<Cod=g8U>^$|KTi}9C;s9X1IdABPJK&1LC=dVmCfEl?}E8m{%3tv%SEbyKk z3}Ji@xV(}BdQ^<${c&ak86J>f(PS@u&AbA0`K(0HZYh~t-Xvl@RDT<;+aq>yp*^jq z-(M=h6Rr&|MM<eaV*m#8a09O3peyNB@TsXUaKo*hXCom{?Wg+hPYUV}>prqvU391I zXfm&&BQ>9du<rLPvz^8`ljScn!XSU8Ukq_Cl^US|q|Lb@-okjkIbvLkHfF@3PGt3^ zSO18J@(JCoKYpsEF)c?&!!HvQ#uo;r?6PP`VEQIfQ&tX}qYjZ^UU>Oi^nY5`IN+7q ze{7_ycXcf#-E$=C=K}`s?I5-4bKw*8#D_~pD3cddCFA+^5-#-!?W5K;`Zv9}B6XtR z<fWs4c65Uo*ikZdnmIvz-(Sx?QSN=wMzYa_h-S^I{6>!Be4nE85^a0zs;N}(?nfE@ z7liM`1_vxRc*yN7^m-A>DMqJ~=d&;hhw1xV!{xI%yyhkfN3z}%e$DhzP0;(EGgi}e zT9%#C4^<w`YcLOEvl1*~m?j_+Bq4BBwLMP&*v26qK{~2uL7DTT{I#LA=K-eRm9oH> zF?k4y$5LWPhy<PxR=rT!SVx?^6m)^M%kY>ke72*O7?cgyP(oJ~!B<>6?^(TRFq67{ zgE@;mEwtE&YT^XyAuZ#WsS^ouwTFx4WLoRobK*}_ms2J~IPX>6G!%l5hD$jW^|Thi zDtZ121yPT~XO4_=emG^s5$B_69a8Orz^9dk>Ta<I3Jps0#6;S+!l3o{)yX>wDrrUl zAu+mO#4oyRW>`Gvn7l2&5M^4^-plK7dhuzuE4%o-ty@Ffeg5O<5rOw@gr``dTzgGu z(YTJE(lJ_Fb#RFbYJ9f{-ji{UG%%h(PeO7=7lkC&7%Vobu~TZ^@t~gYQXzM{Ysq6c z!CcSRVV4h5mZ_5JJ-5+N8X8p5+8;5WDkxfzQ#L7TwQo<>?A%hONFHXP)dw9#(w&i@ zEhOBYoVBUE?WhHW1Ae(4_m_Lp9;!nkClmaC_(F?jz8nwadW~JGw#4UnS;18R4a+k# zx}Ym#?m(LGXKh|gpAOvb_JK!ws;>%0AH5?u=L2<cRTB4eL1r5kJw9%4wHOT1NiOTm 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 c@H~3hRB<JS?xE>C-Gk<qAKNvOJ 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 yY4)7^r-548=BgA1_;_fH^xi3E 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 diff --git a/Lib/fractions.py b/Lib/fractions.py index c95db0730e5..88b418fe383 100644 --- a/Lib/fractions.py +++ b/Lib/fractions.py @@ -55,17 +55,17 @@ def _hash_algorithm(numerator, denominator): return -2 if result == -1 else result _RATIONAL_FORMAT = re.compile(r""" - \A\s* # optional whitespace at the start, - (?P<sign>[-+]?) # an optional sign, then - (?=\d|\.\d) # lookahead for digit or .digit - (?P<num>\d*|\d+(_\d+)*) # numerator (possibly empty) - (?: # followed by - (?:\s*/\s*(?P<denom>\d+(_\d+)*))? # an optional denominator - | # or - (?:\.(?P<decimal>d*|\d+(_\d+)*))? # an optional fractional part - (?:E(?P<exp>[-+]?\d+(_\d+)*))? # and optional exponent + \A\s* # optional whitespace at the start, + (?P<sign>[-+]?) # an optional sign, then + (?=\d|\.\d) # lookahead for digit or .digit + (?P<num>\d*|\d+(_\d+)*) # numerator (possibly empty) + (?: # followed by + (?:\s*/\s*(?P<denom>\d+(_\d+)*))? # an optional denominator + | # or + (?:\.(?P<decimal>\d*|\d+(_\d+)*))? # an optional fractional part + (?:E(?P<exp>[-+]?\d+(_\d+)*))? # and optional exponent ) - \s*\Z # and optional whitespace to finish + \s*\Z # and optional whitespace to finish """, re.VERBOSE | re.IGNORECASE) diff --git a/Lib/ftplib.py b/Lib/ftplib.py index a56e0c30857..10c5d1ea08a 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -900,11 +900,17 @@ def ftpcp(source, sourcename, target, targetname = '', type = 'I'): def test(): '''Test program. - Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ... + Usage: ftplib [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ... - -d dir - -l list - -p password + Options: + -d increase debugging level + -r[file] set alternate ~/.netrc file + + Commands: + -l[dir] list directory + -d[dir] change the current directory + -p toggle passive and active mode + file retrieve the file and write it to stdout ''' if len(sys.argv) < 2: @@ -930,15 +936,14 @@ def test(): netrcobj = netrc.netrc(rcfile) except OSError: if rcfile is not None: - sys.stderr.write("Could not open account file" - " -- using anonymous login.") + print("Could not open account file -- using anonymous login.", + file=sys.stderr) else: try: userid, acct, passwd = netrcobj.authenticators(host) - except KeyError: + except (KeyError, TypeError): # no account for host - sys.stderr.write( - "No account -- using anonymous login.") + print("No account -- using anonymous login.", file=sys.stderr) ftp.login(userid, passwd, acct) for file in sys.argv[2:]: if file[:2] == '-l': @@ -951,7 +956,9 @@ def test(): ftp.set_pasv(not ftp.passiveserver) else: ftp.retrbinary('RETR ' + file, \ - sys.stdout.write, 1024) + sys.stdout.buffer.write, 1024) + sys.stdout.buffer.flush() + sys.stdout.flush() ftp.quit() diff --git a/Lib/hmac.py b/Lib/hmac.py index 8b4f920db95..8b4eb2fe741 100644 --- a/Lib/hmac.py +++ b/Lib/hmac.py @@ -53,7 +53,7 @@ def __init__(self, key, msg=None, digestmod=''): raise TypeError("key: expected bytes or bytearray, but got %r" % type(key).__name__) if not digestmod: - raise TypeError("Missing required parameter 'digestmod'.") + raise TypeError("Missing required argument 'digestmod'.") if _hashopenssl and isinstance(digestmod, (str, _functype)): try: diff --git a/Lib/http/client.py b/Lib/http/client.py index 7bb5d824bb6..5eebfccafbc 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -665,6 +665,8 @@ def read1(self, n=-1): self._close_conn() elif self.length is not None: self.length -= len(result) + if not self.length: + self._close_conn() return result def peek(self, n=-1): @@ -689,6 +691,8 @@ def readline(self, limit=-1): self._close_conn() elif self.length is not None: self.length -= len(result) + if not self.length: + self._close_conn() return result def _read1_chunked(self, n): diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/News3.txt similarity index 98% rename from Lib/idlelib/NEWS.txt rename to Lib/idlelib/News3.txt index f258797c6e0..8d04ff30ad7 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/News3.txt @@ -1,9 +1,35 @@ +What's New in IDLE 3.12.z +(since 3.12.0) +Released after 2023-10-02 +========================= + + +gh-96905: In idlelib code, stop redefining built-ins 'dict' and 'object'. + +gh-72284: Improve the lists of features, editor key bindings, +and shell key bingings in the IDLE doc. + +gh-113903: Fix rare failure of test.test_idle, in test_configdialog. + +gh-113729: Fix the "Help -> IDLE Doc" menu bug in 3.11.7 and 3.12.1. + +gh-57795: Enter selected text into the Find box when opening +a Replace dialog. Patch by Roger Serwy and Zackery Spytz. + +gh-113269: Fix test_editor hang on macOS Catalina. +Patch by Terry Reedy. + +gh-112939: Fix processing unsaved files when quitting IDLE on macOS. +Patch by Ronald Oussoren and Christopher Chavez. + +gh-79871: Add docstrings to debugger.py. Fix two bugs in test_debugger and expand coverage by 47%. Patch by Anthony Shaw. + + What's New in IDLE 3.12.0 (since 3.11.0) Released on 2023-10-02 ========================= - gh-104719: Remove IDLE's modification of tokenize.tabsize and test other uses of tokenize data and methods. diff --git a/Lib/idlelib/debugger.py b/Lib/idlelib/debugger.py index f487b4c4b16..d90dbcd11f9 100644 --- a/Lib/idlelib/debugger.py +++ b/Lib/idlelib/debugger.py @@ -508,11 +508,11 @@ def show_source(self, index): class NamespaceViewer: "Global/local namespace viewer for debugger GUI." - def __init__(self, master, title, dict=None): + def __init__(self, master, title, odict=None): # XXX odict never passed. width = 0 height = 40 - if dict: - height = 20*len(dict) # XXX 20 == observed height of Entry widget + if odict: + height = 20*len(odict) # XXX 20 == observed height of Entry widget self.master = master self.title = title import reprlib @@ -533,24 +533,24 @@ def __init__(self, master, title, dict=None): canvas["yscrollcommand"] = vbar.set self.subframe = subframe = Frame(canvas) self.sfid = canvas.create_window(0, 0, window=subframe, anchor="nw") - self.load_dict(dict) + self.load_dict(odict) - dict = -1 + prev_odict = -1 # Needed for initial comparison below. - def load_dict(self, dict, force=0, rpc_client=None): - if dict is self.dict and not force: + def load_dict(self, odict, force=0, rpc_client=None): + if odict is self.prev_odict and not force: return subframe = self.subframe frame = self.frame for c in list(subframe.children.values()): c.destroy() - self.dict = None - if not dict: + self.prev_odict = None + if not odict: l = Label(subframe, text="None") l.grid(row=0, column=0) else: #names = sorted(dict) - ### + # # Because of (temporary) limitations on the dict_keys type (not yet # public or pickleable), have the subprocess to send a list of # keys, not a dict_keys object. sorted() will take a dict_keys @@ -560,12 +560,12 @@ def load_dict(self, dict, force=0, rpc_client=None): # interpreter gets into a loop requesting non-existing dict[0], # dict[1], dict[2], etc from the debugger_r.DictProxy. # TODO recheck above; see debugger_r 159ff, debugobj 60. - keys_list = dict.keys() + keys_list = odict.keys() names = sorted(keys_list) - ### + row = 0 for name in names: - value = dict[name] + value = odict[name] svalue = self.repr.repr(value) # repr(value) # Strip extra quotes caused by calling repr on the (already) # repr'd value sent across the RPC interface: @@ -577,7 +577,7 @@ def load_dict(self, dict, force=0, rpc_client=None): l.insert(0, svalue) l.grid(row=row, column=1, sticky="nw") row = row+1 - self.dict = dict + self.prev_odict = odict # XXX Could we use a <Configure> callback for the following? subframe.update_idletasks() # Alas! width = subframe.winfo_reqwidth() diff --git a/Lib/idlelib/debugger_r.py b/Lib/idlelib/debugger_r.py index 26204438858..ad3355d9f82 100644 --- a/Lib/idlelib/debugger_r.py +++ b/Lib/idlelib/debugger_r.py @@ -125,16 +125,16 @@ def frame_attr(self, fid, name): def frame_globals(self, fid): frame = frametable[fid] - dict = frame.f_globals - did = id(dict) - dicttable[did] = dict + gdict = frame.f_globals + did = id(gdict) + dicttable[did] = gdict return did def frame_locals(self, fid): frame = frametable[fid] - dict = frame.f_locals - did = id(dict) - dicttable[did] = dict + ldict = frame.f_locals + did = id(ldict) + dicttable[did] = ldict return did def frame_code(self, fid): @@ -158,20 +158,17 @@ def code_filename(self, cid): def dict_keys(self, did): raise NotImplementedError("dict_keys not public or pickleable") -## dict = dicttable[did] -## return dict.keys() +## return dicttable[did].keys() - ### Needed until dict_keys is type is finished and pickealable. + ### Needed until dict_keys type is finished and pickleable. + # xxx finished. pickleable? ### Will probably need to extend rpc.py:SocketIO._proxify at that time. def dict_keys_list(self, did): - dict = dicttable[did] - return list(dict.keys()) + return list(dicttable[did].keys()) def dict_item(self, did, key): - dict = dicttable[did] - value = dict[key] - value = reprlib.repr(value) ### can't pickle module 'builtins' - return value + value = dicttable[did][key] + return reprlib.repr(value) # Can't pickle module 'builtins'. #----------end class IdbAdapter---------- diff --git a/Lib/idlelib/debugobj.py b/Lib/idlelib/debugobj.py index 156377f8ed2..fb448ece2fa 100644 --- a/Lib/idlelib/debugobj.py +++ b/Lib/idlelib/debugobj.py @@ -1,3 +1,5 @@ +"""Define tree items for debug stackviewer, which is only user. +""" # XXX TO DO: # - popup menu # - support partial or total redisplay @@ -17,9 +19,9 @@ myrepr.maxother = 100 class ObjectTreeItem(TreeItem): - def __init__(self, labeltext, object, setfunction=None): + def __init__(self, labeltext, object_, setfunction=None): self.labeltext = labeltext - self.object = object + self.object = object_ self.setfunction = setfunction def GetLabelText(self): return self.labeltext @@ -51,8 +53,8 @@ def GetSubList(self): item = make_objecttreeitem( str(key) + " =", value, - lambda value, key=key, object=self.object: - setattr(object, key, value)) + lambda value, key=key, object_=self.object: + setattr(object_, key, value)) sublist.append(item) return sublist @@ -85,8 +87,8 @@ def GetSubList(self): value = self.object[key] except KeyError: continue - def setfunction(value, key=key, object=self.object): - object[key] = value + def setfunction(value, key=key, object_=self.object): + object_[key] = value item = make_objecttreeitem(f"{key!r}:", value, setfunction) sublist.append(item) return sublist @@ -111,13 +113,13 @@ def keys(self): type: ClassTreeItem, } -def make_objecttreeitem(labeltext, object, setfunction=None): - t = type(object) +def make_objecttreeitem(labeltext, object_, setfunction=None): + t = type(object_) if t in dispatch: c = dispatch[t] else: c = ObjectTreeItem - return c(labeltext, object, setfunction) + return c(labeltext, object_, setfunction) def _debug_object_browser(parent): # htest # diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 6ad383f460c..8ee8eba6436 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -166,8 +166,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None): text.bind("<3>",self.right_menu_event) text.bind('<MouseWheel>', wheel_event) - text.bind('<Button-4>', wheel_event) - text.bind('<Button-5>', wheel_event) + if text._windowingsystem == 'x11': + text.bind('<Button-4>', wheel_event) + text.bind('<Button-5>', wheel_event) text.bind('<Configure>', self.handle_winconfig) text.bind("<<cut>>", self.cut) text.bind("<<copy>>", self.copy) diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html index 722406b81a8..827d230b54e 100644 --- a/Lib/idlelib/help.html +++ b/Lib/idlelib/help.html @@ -1,33 +1,31 @@ - <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>IDLE — Python 3.12.0a0 documentation + IDLE — Python 3.13.0a2 documentation - + + - - - + - + @@ -41,35 +39,48 @@ } } - + + + +
-

Next topic

@@ -1117,7 +1123,7 @@

Navigation

next |
  • - previous |
  • python logo
  • @@ -1130,7 +1136,7 @@

    Navigation

  • - 3.12.0a0 Documentation » + 3.13.0a2 Documentation »
  • @@ -1141,19 +1147,26 @@

    Navigation

    | +
  • + |
  • diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py index 3cc7e36e355..bdf4b2b29f1 100644 --- a/Lib/idlelib/help.py +++ b/Lib/idlelib/help.py @@ -102,7 +102,7 @@ def handle_starttag(self, tag, attrs): if self.level > 0: self.nested_dl = True elif tag == 'li': - s = '\n* ' if self.simplelist else '\n\n* ' + s = '\n* ' elif tag == 'dt': s = '\n\n' if not self.nested_dl else '\n' # Avoid extra line. self.nested_dl = False @@ -241,12 +241,13 @@ def __init__(self, parent, filename, title): Toplevel.__init__(self, parent) self.wm_title(title) self.protocol("WM_DELETE_WINDOW", self.destroy) - HelpFrame(self, filename).grid(column=0, row=0, sticky='nsew') + self.frame = HelpFrame(self, filename) + self.frame.grid(column=0, row=0, sticky='nsew') self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) -def copy_strip(): +def copy_strip(): # pragma: no cover """Copy idle.html to idlelib/help.html, stripping trailing whitespace. Files with trailing whitespace cannot be pushed to the git cpython @@ -279,13 +280,13 @@ def copy_strip(): print(f'{src} copied to {dst}') -def _helpwindow(parent): +def show_idlehelp(parent): "Create HelpWindow; called from Idle Help event handler." filename = join(abspath(dirname(__file__)), 'help.html') - if not isfile(filename): + if not isfile(filename): # pragma: no cover # Try copy_strip, present message. return - HelpWindow(parent, filename, 'IDLE Help (%s)' % python_version()) + return HelpWindow(parent, filename, 'IDLE Doc (%s)' % python_version()) if __name__ == '__main__': @@ -293,4 +294,4 @@ def _helpwindow(parent): main('idlelib.idle_test.test_help', verbosity=2, exit=False) from idlelib.idle_test.htest import run - run(_helpwindow) + run(show_idlehelp) diff --git a/Lib/idlelib/help_about.py b/Lib/idlelib/help_about.py index cfa4ca781f0..aa1c352897f 100644 --- a/Lib/idlelib/help_about.py +++ b/Lib/idlelib/help_about.py @@ -129,11 +129,11 @@ def create_widgets(self): idle.grid(row=12, column=0, sticky=W, padx=10, pady=0) idle_buttons = Frame(frame_background, bg=self.bg) idle_buttons.grid(row=13, column=0, columnspan=3, sticky=NSEW) - self.readme = Button(idle_buttons, text='README', width=8, + self.readme = Button(idle_buttons, text='Readme', width=8, highlightbackground=self.bg, command=self.show_readme) self.readme.pack(side=LEFT, padx=10, pady=10) - self.idle_news = Button(idle_buttons, text='NEWS', width=8, + self.idle_news = Button(idle_buttons, text='News', width=8, highlightbackground=self.bg, command=self.show_idle_news) self.idle_news.pack(side=LEFT, padx=10, pady=10) @@ -167,7 +167,7 @@ def show_readme(self): def show_idle_news(self): "Handle News button event." - self.display_file_text('About - NEWS', 'NEWS.txt', 'utf-8') + self.display_file_text('About - News', 'News3.txt', 'utf-8') def display_printer_text(self, title, printer): """Create textview for built-in constants. diff --git a/Lib/idlelib/idle_test/example_stub.pyi b/Lib/idlelib/idle_test/example_stub.pyi index a9811a78d10..17b58010a9d 100644 --- a/Lib/idlelib/idle_test/example_stub.pyi +++ b/Lib/idlelib/idle_test/example_stub.pyi @@ -1,2 +1,4 @@ +" Example to test recognition of .pyi file as Python source code. + class Example: def method(self, argument1: str, argument2: list[int]) -> None: ... diff --git a/Lib/idlelib/idle_test/htest.py b/Lib/idlelib/idle_test/htest.py index 997f85ff5a7..a7293774eec 100644 --- a/Lib/idlelib/idle_test/htest.py +++ b/Lib/idlelib/idle_test/htest.py @@ -190,13 +190,6 @@ ", [Cancel], or [X] prints None to shell" } -_helpwindow_spec = { - 'file': 'help', - 'kwds': {}, - 'msg': "If the help text displays, this works.\n" - "Text is selectable. Window is scrollable." - } - _io_binding_spec = { 'file': 'iomenu', 'kwds': {}, @@ -299,6 +292,13 @@ "Its only action is to close." } +show_idlehelp_spec = { + 'file': 'help', + 'kwds': {}, + 'msg': "If the help text displays, this works.\n" + "Text is selectable. Window is scrollable." + } + _sidebar_number_scrolling_spec = { 'file': 'sidebar', 'kwds': {}, diff --git a/Lib/idlelib/idle_test/test_calltip.py b/Lib/idlelib/idle_test/test_calltip.py index 1ccb63b9dbd..28c196a4267 100644 --- a/Lib/idlelib/idle_test/test_calltip.py +++ b/Lib/idlelib/idle_test/test_calltip.py @@ -7,6 +7,7 @@ import types import re from idlelib.idle_test.mock_tk import Text +from test.support import MISSING_C_DOCSTRINGS # Test Class TC is used in multiple get_argspec test methods @@ -50,6 +51,8 @@ class Get_argspecTest(unittest.TestCase): # but a red buildbot is better than a user crash (as has happened). # For a simple mismatch, change the expected output to the actual. + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_builtins(self): def tiptest(obj, out): @@ -76,6 +79,7 @@ class SB: __call__ = None tiptest(list.append, '(self, object, /)' + append_doc) tiptest(List.append, '(self, object, /)' + append_doc) tiptest([].append, '(object, /)' + append_doc) + # The use of 'object' above matches the signature text. tiptest(types.MethodType, '(function, instance, /)\n' @@ -143,6 +147,8 @@ def f(): pass f.__doc__ = 'a'*300 self.assertEqual(get_spec(f), f"()\n{'a'*(calltip._MAX_COLS-3) + '...'}") + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_multiline_docstring(self): # Test fewer lines than max. self.assertEqual(get_spec(range), @@ -157,6 +163,7 @@ def test_multiline_docstring(self): bytes(int) -> bytes object of size given by the parameter initialized with null bytes bytes() -> empty bytes object''') + def test_multiline_docstring_2(self): # Test more than max lines def f(): pass f.__doc__ = 'a\n' * 15 diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 6f8518a9bb1..5099d093382 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -420,20 +420,14 @@ def test_highlight_target_text_mouse(self): # Set highlight_target through clicking highlight_sample. eq = self.assertEqual d = self.page - - elem = {} - count = 0 hs = d.highlight_sample hs.focus_force() - hs.see(1.0) - hs.update_idletasks() - def tag_to_element(elem): - for element, tag in d.theme_elements.items(): - elem[tag] = element - - def click_it(start): - x, y, dx, dy = hs.bbox(start) + def click_char(index): + "Simulate click on character at *index*." + hs.see(index) + hs.update_idletasks() + x, y, dx, dy = hs.bbox(index) x += dx // 2 y += dy // 2 hs.event_generate('', x=0, y=0) @@ -441,17 +435,20 @@ def click_it(start): hs.event_generate('', x=x, y=y) hs.event_generate('', x=x, y=y) - # Flip theme_elements to make the tag the key. - tag_to_element(elem) + # Reverse theme_elements to make the tag the key. + elem = {tag: element for element, tag in d.theme_elements.items()} # If highlight_sample has a tag that isn't in theme_elements, there # will be a KeyError in the test run. + count = 0 for tag in hs.tag_names(): - for start_index in hs.tag_ranges(tag)[0::2]: - count += 1 - click_it(start_index) + try: + click_char(hs.tag_nextrange(tag, "1.0")[0]) eq(d.highlight_target.get(), elem[tag]) + count += 1 eq(d.set_highlight_target.called, count) + except IndexError: + pass # Skip unused theme_elements tag, like 'sel'. def test_highlight_sample_double_click(self): # Test double click on highlight_sample. diff --git a/Lib/idlelib/idle_test/test_editor.py b/Lib/idlelib/idle_test/test_editor.py index 9296a6d235f..0dfe2f3c58b 100644 --- a/Lib/idlelib/idle_test/test_editor.py +++ b/Lib/idlelib/idle_test/test_editor.py @@ -95,7 +95,7 @@ def test_tabwidth_8(self): def insert(text, string): text.delete('1.0', 'end') text.insert('end', string) - text.update() # Force update for colorizer to finish. + text.update_idletasks() # Force update for colorizer to finish. class IndentAndNewlineTest(unittest.TestCase): diff --git a/Lib/idlelib/idle_test/test_help.py b/Lib/idlelib/idle_test/test_help.py index b5426599818..c528d4e77f8 100644 --- a/Lib/idlelib/idle_test/test_help.py +++ b/Lib/idlelib/idle_test/test_help.py @@ -1,4 +1,4 @@ -"Test help, coverage 87%." +"Test help, coverage 94%." from idlelib import help import unittest @@ -8,25 +8,27 @@ from tkinter import Tk -class HelpFrameTest(unittest.TestCase): +class IdleDocTest(unittest.TestCase): @classmethod def setUpClass(cls): "By itself, this tests that file parsed without exception." cls.root = root = Tk() root.withdraw() - helpfile = join(dirname(dirname(abspath(__file__))), 'help.html') - cls.frame = help.HelpFrame(root, helpfile) + cls.window = help.show_idlehelp(root) @classmethod def tearDownClass(cls): - del cls.frame + del cls.window cls.root.update_idletasks() cls.root.destroy() del cls.root - def test_line1(self): - text = self.frame.text + def test_1window(self): + self.assertIn('IDLE Doc', self.window.wm_title()) + + def test_4text(self): + text = self.window.frame.text self.assertEqual(text.get('1.0', '1.end'), ' IDLE ') diff --git a/Lib/idlelib/idle_test/test_help_about.py b/Lib/idlelib/idle_test/test_help_about.py index 8b79487b15d..7e16abdb7c9 100644 --- a/Lib/idlelib/idle_test/test_help_about.py +++ b/Lib/idlelib/idle_test/test_help_about.py @@ -71,7 +71,7 @@ def test_file_buttons(self): """Test buttons that display files.""" dialog = self.dialog button_sources = [(self.dialog.readme, 'README.txt', 'readme'), - (self.dialog.idle_news, 'NEWS.txt', 'news'), + (self.dialog.idle_news, 'News3.txt', 'news'), (self.dialog.idle_credits, 'CREDITS.txt', 'credits')] for button, filename, name in button_sources: diff --git a/Lib/idlelib/idle_test/test_sidebar.py b/Lib/idlelib/idle_test/test_sidebar.py index fb52b3a0179..605e7a89257 100644 --- a/Lib/idlelib/idle_test/test_sidebar.py +++ b/Lib/idlelib/idle_test/test_sidebar.py @@ -690,16 +690,22 @@ def test_mousewheel(self): last_lineno = get_end_linenumber(text) self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) - # Scroll up using the event. - # The meaning of delta is platform-dependent. - delta = -1 if sys.platform == 'darwin' else 120 - sidebar.canvas.event_generate('', x=0, y=0, delta=delta) + # Delta for , whose meaning is platform-dependent. + delta = 1 if sidebar.canvas._windowingsystem == 'aqua' else 120 + + # Scroll up. + if sidebar.canvas._windowingsystem == 'x11': + sidebar.canvas.event_generate('', x=0, y=0) + else: + sidebar.canvas.event_generate('', x=0, y=0, delta=delta) yield - if sys.platform != 'darwin': # .update_idletasks() does not work. - self.assertIsNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) + self.assertIsNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) - # Scroll back down using the event. - sidebar.canvas.event_generate('', x=0, y=0) + # Scroll back down. + if sidebar.canvas._windowingsystem == 'x11': + sidebar.canvas.event_generate('', x=0, y=0) + else: + sidebar.canvas.event_generate('', x=0, y=0, delta=-delta) yield self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) diff --git a/Lib/idlelib/iomenu.py b/Lib/idlelib/iomenu.py index 667623ec71a..464126e2df0 100644 --- a/Lib/idlelib/iomenu.py +++ b/Lib/idlelib/iomenu.py @@ -7,7 +7,7 @@ from tkinter import filedialog from tkinter import messagebox -from tkinter.simpledialog import askstring +from tkinter.simpledialog import askstring # loadfile encoding. from idlelib.config import idleConf from idlelib.util import py_extensions @@ -180,24 +180,25 @@ def loadfile(self, filename): return True def maybesave(self): + """Return 'yes', 'no', 'cancel' as appropriate. + + Tkinter messagebox.askyesnocancel converts these tk responses + to True, False, None. Convert back, as now expected elsewhere. + """ if self.get_saved(): return "yes" - message = "Do you want to save %s before closing?" % ( - self.filename or "this untitled document") + message = ("Do you want to save " + f"{self.filename or 'this untitled document'}" + " before closing?") confirm = messagebox.askyesnocancel( title="Save On Close", message=message, default=messagebox.YES, parent=self.text) if confirm: - reply = "yes" self.save(None) - if not self.get_saved(): - reply = "cancel" - elif confirm is None: - reply = "cancel" - else: - reply = "no" + reply = "yes" if self.get_saved() else "cancel" + else: reply = "cancel" if confirm is None else "no" self.text.focus_set() return reply diff --git a/Lib/idlelib/macosx.py b/Lib/idlelib/macosx.py index 2ea02ec04d6..332952f4572 100644 --- a/Lib/idlelib/macosx.py +++ b/Lib/idlelib/macosx.py @@ -221,7 +221,7 @@ def help_dialog(event=None): # The binding above doesn't reliably work on all versions of Tk # on macOS. Adding command definition below does seem to do the # right thing for now. - root.createcommand('exit', flist.close_all_callback) + root.createcommand('::tk::mac::Quit', flist.close_all_callback) if isCarbonTk(): # for Carbon AquaTk, replace the default Tk apple menu diff --git a/Lib/idlelib/replace.py b/Lib/idlelib/replace.py index a29ca591427..1cddb638b21 100644 --- a/Lib/idlelib/replace.py +++ b/Lib/idlelib/replace.py @@ -4,6 +4,7 @@ and replace+find. """ import re +re.PatternError = re.error # New in 3.13. from tkinter import StringVar, TclError @@ -25,7 +26,8 @@ def replace(text, insert_tags=None): if not hasattr(engine, "_replacedialog"): engine._replacedialog = ReplaceDialog(root, engine) dialog = engine._replacedialog - dialog.open(text, insert_tags=insert_tags) + searchphrase = text.get("sel.first", "sel.last") + dialog.open(text, searchphrase, insert_tags=insert_tags) class ReplaceDialog(SearchDialogBase): @@ -51,27 +53,17 @@ def __init__(self, root, engine): self.replvar = StringVar(root) self.insert_tags = None - def open(self, text, insert_tags=None): + def open(self, text, searchphrase=None, *, insert_tags=None): """Make dialog visible on top of others and ready to use. - Also, highlight the currently selected text and set the - search to include the current selection (self.ok). + Also, set the search to include the current selection + (self.ok). Args: text: Text widget being searched. + searchphrase: String phrase to search. """ - SearchDialogBase.open(self, text) - try: - first = text.index("sel.first") - except TclError: - first = None - try: - last = text.index("sel.last") - except TclError: - last = None - first = first or text.index("insert") - last = last or first - self.show_hit(first, last) + SearchDialogBase.open(self, text, searchphrase) self.ok = True self.insert_tags = insert_tags @@ -120,7 +112,7 @@ def _replace_expand(self, m, repl): if self.engine.isre(): try: new = m.expand(repl) - except re.error: + except re.PatternError: self.engine.report_error(repl, 'Invalid Replace Expression') new = None else: diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py index b08b80c9004..3f0b2230dd1 100644 --- a/Lib/idlelib/rpc.py +++ b/Lib/idlelib/rpc.py @@ -158,8 +158,8 @@ def debug(self, *args): s = s + " " + str(a) print(s, file=sys.__stderr__) - def register(self, oid, object): - self.objtable[oid] = object + def register(self, oid, object_): + self.objtable[oid] = object_ def unregister(self, oid): try: diff --git a/Lib/idlelib/searchengine.py b/Lib/idlelib/searchengine.py index 0684142f436..5119de05865 100644 --- a/Lib/idlelib/searchengine.py +++ b/Lib/idlelib/searchengine.py @@ -1,5 +1,6 @@ '''Define SearchEngine for search dialogs.''' import re +re.PatternError = re.error # New in 3.13. from tkinter import StringVar, BooleanVar, TclError from tkinter import messagebox @@ -84,7 +85,7 @@ def getprog(self): flags = flags | re.IGNORECASE try: prog = re.compile(pat, flags) - except re.error as e: + except re.PatternError as e: self.report_error(pat, e.msg, e.pos) return None return prog diff --git a/Lib/idlelib/stackviewer.py b/Lib/idlelib/stackviewer.py index 977c56ef15f..95042d4debd 100644 --- a/Lib/idlelib/stackviewer.py +++ b/Lib/idlelib/stackviewer.py @@ -106,8 +106,8 @@ def GetSubList(self): value = self.object[key] except KeyError: continue - def setfunction(value, key=key, object=self.object): - object[key] = value + def setfunction(value, key=key, object_=self.object): + object_[key] = value item = make_objecttreeitem(key + " =", value, setfunction) sublist.append(item) return sublist diff --git a/Lib/idlelib/tree.py b/Lib/idlelib/tree.py index 9c2eb47b24a..0726d7e2366 100644 --- a/Lib/idlelib/tree.py +++ b/Lib/idlelib/tree.py @@ -285,8 +285,9 @@ def drawtext(self): self.label.bind("<1>", self.select_or_edit) self.label.bind("", self.flip) self.label.bind("", lambda e: wheel_event(e, self.canvas)) - self.label.bind("", lambda e: wheel_event(e, self.canvas)) - self.label.bind("", lambda e: wheel_event(e, self.canvas)) + if self.label._windowingsystem == 'x11': + self.label.bind("", lambda e: wheel_event(e, self.canvas)) + self.label.bind("", lambda e: wheel_event(e, self.canvas)) self.text_id = id def select_or_edit(self, event=None): @@ -460,8 +461,9 @@ def __init__(self, master, **opts): self.canvas.bind("", self.unit_up) self.canvas.bind("", self.unit_down) self.canvas.bind("", wheel_event) - self.canvas.bind("", wheel_event) - self.canvas.bind("", wheel_event) + if self.canvas._windowingsystem == 'x11': + self.canvas.bind("", wheel_event) + self.canvas.bind("", wheel_event) #if isinstance(master, Toplevel) or isinstance(master, Tk): self.canvas.bind("", self.zoom_height) self.canvas.focus_set() diff --git a/Lib/idlelib/util.py b/Lib/idlelib/util.py index 5ac69a7b94c..a7ae74b0579 100644 --- a/Lib/idlelib/util.py +++ b/Lib/idlelib/util.py @@ -13,9 +13,9 @@ * warning stuff (pyshell, run). """ -# .pyw is for Windows; .pyi is for stub files. -py_extensions = ('.py', '.pyw', '.pyi') # Order needed for open/save dialogs. - +# .pyw is for Windows; .pyi is for typing stub files. +# The extension order is needed for iomenu open/save dialogs. +py_extensions = ('.py', '.pyw', '.pyi') if __name__ == '__main__': from unittest import main diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 73ac4405cb5..e6f75a9f6f6 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -413,6 +413,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a7 3492 (make POP_JUMP_IF_NONE/NOT_NONE/TRUE/FALSE relative) # Python 3.11a7 3493 (Make JUMP_IF_TRUE_OR_POP/JUMP_IF_FALSE_OR_POP relative) # Python 3.11a7 3494 (New location info table) +# Python 3.11b4 3495 (Set line number of module's RESUME instr to 0 per PEP 626) # Python 3.12a1 3500 (Remove PRECALL opcode) # Python 3.12a1 3501 (YIELD_VALUE oparg == stack_depth) # Python 3.12a1 3502 (LOAD_FAST_CHECK, no NULL-check in LOAD_FAST) diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 8eae263a500..33417b75d51 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -1,4 +1,4 @@ -# Copyright 2001-2022 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2023 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -740,7 +740,7 @@ def _configure_queue_handler(self, klass, **kwargs): lklass = kwargs['listener'] else: lklass = logging.handlers.QueueListener - listener = lklass(q, *kwargs['handlers'], respect_handler_level=rhl) + listener = lklass(q, *kwargs.get('handlers', []), respect_handler_level=rhl) handler = klass(q) handler.listener = listener return handler @@ -782,11 +782,12 @@ def configure_handler(self, config): raise ValueError('Unable to set target handler %r' % tn) from e elif issubclass(klass, logging.handlers.QueueHandler): # Another special case for handler which refers to other handlers - if 'handlers' not in config: - raise ValueError('No handlers specified for a QueueHandler') + # if 'handlers' not in config: + # raise ValueError('No handlers specified for a QueueHandler') if 'queue' in config: + from multiprocessing.queues import Queue as MPQueue qspec = config['queue'] - if not isinstance(qspec, queue.Queue): + if not isinstance(qspec, (queue.Queue, MPQueue)): if isinstance(qspec, str): q = self.resolve(qspec) if not callable(q): @@ -819,18 +820,19 @@ def configure_handler(self, config): if not callable(listener): raise TypeError('Invalid listener specifier %r' % lspec) config['listener'] = listener - hlist = [] - try: - for hn in config['handlers']: - h = self.config['handlers'][hn] - if not isinstance(h, logging.Handler): - config.update(config_copy) # restore for deferred cfg - raise TypeError('Required handler %r ' - 'is not configured yet' % hn) - hlist.append(h) - except Exception as e: - raise ValueError('Unable to set required handler %r' % hn) from e - config['handlers'] = hlist + if 'handlers' in config: + hlist = [] + try: + for hn in config['handlers']: + h = self.config['handlers'][hn] + if not isinstance(h, logging.Handler): + config.update(config_copy) # restore for deferred cfg + raise TypeError('Required handler %r ' + 'is not configured yet' % hn) + hlist.append(h) + except Exception as e: + raise ValueError('Unable to set required handler %r' % hn) from e + config['handlers'] = hlist elif issubclass(klass, logging.handlers.SMTPHandler) and\ 'mailhost' in config: config['mailhost'] = self.as_tuple(config['mailhost']) diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 59834a2b3b5..c8b3444f646 100644 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -778,10 +778,11 @@ def get_message(self, key): """Return a Message representation or raise a KeyError.""" start, stop = self._lookup(key) self._file.seek(start) - from_line = self._file.readline().replace(linesep, b'') + from_line = self._file.readline().replace(linesep, b'').decode('ascii') string = self._file.read(stop - self._file.tell()) msg = self._message_factory(string.replace(linesep, b'\n')) - msg.set_from(from_line[5:].decode('ascii')) + msg.set_unixfrom(from_line) + msg.set_from(from_line[5:]) return msg def get_string(self, key, from_=False): diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py index b6534939b4d..75d9c18c201 100644 --- a/Lib/multiprocessing/managers.py +++ b/Lib/multiprocessing/managers.py @@ -153,7 +153,7 @@ def __init__(self, registry, address, authkey, serializer): Listener, Client = listener_client[serializer] # do authentication later - self.listener = Listener(address=address, backlog=16) + self.listener = Listener(address=address, backlog=128) self.address = self.listener.address self.id_to_obj = {'0': (None, ())} diff --git a/Lib/multiprocessing/popen_spawn_win32.py b/Lib/multiprocessing/popen_spawn_win32.py index af044305709..49d4c7eea22 100644 --- a/Lib/multiprocessing/popen_spawn_win32.py +++ b/Lib/multiprocessing/popen_spawn_win32.py @@ -101,18 +101,20 @@ def duplicate_for_child(self, handle): return reduction.duplicate(handle, self.sentinel) def wait(self, timeout=None): - if self.returncode is None: - if timeout is None: - msecs = _winapi.INFINITE - else: - msecs = max(0, int(timeout * 1000 + 0.5)) - - res = _winapi.WaitForSingleObject(int(self._handle), msecs) - if res == _winapi.WAIT_OBJECT_0: - code = _winapi.GetExitCodeProcess(self._handle) - if code == TERMINATE: - code = -signal.SIGTERM - self.returncode = code + if self.returncode is not None: + return self.returncode + + if timeout is None: + msecs = _winapi.INFINITE + else: + msecs = max(0, int(timeout * 1000 + 0.5)) + + res = _winapi.WaitForSingleObject(int(self._handle), msecs) + if res == _winapi.WAIT_OBJECT_0: + code = _winapi.GetExitCodeProcess(self._handle) + if code == TERMINATE: + code = -signal.SIGTERM + self.returncode = code return self.returncode @@ -120,18 +122,22 @@ def poll(self): return self.wait(timeout=0) def terminate(self): - if self.returncode is None: - try: - _winapi.TerminateProcess(int(self._handle), TERMINATE) - except PermissionError: - # ERROR_ACCESS_DENIED (winerror 5) is received when the - # process already died. - code = _winapi.GetExitCodeProcess(int(self._handle)) - if code == _winapi.STILL_ACTIVE: - raise - self.returncode = code - else: - self.returncode = -signal.SIGTERM + if self.returncode is not None: + return + + try: + _winapi.TerminateProcess(int(self._handle), TERMINATE) + except PermissionError: + # ERROR_ACCESS_DENIED (winerror 5) is received when the + # process already died. + code = _winapi.GetExitCodeProcess(int(self._handle)) + if code == _winapi.STILL_ACTIVE: + raise + + # gh-113009: Don't set self.returncode. Even if GetExitCodeProcess() + # returns an exit code different than STILL_ACTIVE, the process can + # still be running. Only set self.returncode once WaitForSingleObject() + # returns WAIT_OBJECT_0 in wait(). kill = terminate diff --git a/Lib/multiprocessing/queues.py b/Lib/multiprocessing/queues.py index d36de75749f..852ae87b276 100644 --- a/Lib/multiprocessing/queues.py +++ b/Lib/multiprocessing/queues.py @@ -164,6 +164,11 @@ def _terminate_broken(self): # gh-94777: Prevent queue writing to a pipe which is no longer read. self._reader.close() + # gh-107219: Close the connection writer which can unblock + # Queue._feed() if it was stuck in send_bytes(). + if sys.platform == 'win32': + self._writer.close() + self.close() self.join_thread() diff --git a/Lib/multiprocessing/resource_sharer.py b/Lib/multiprocessing/resource_sharer.py index 66076509a12..b8afb0fbed3 100644 --- a/Lib/multiprocessing/resource_sharer.py +++ b/Lib/multiprocessing/resource_sharer.py @@ -123,7 +123,7 @@ def _start(self): from .connection import Listener assert self._listener is None, "Already have Listener" util.debug('starting listener and thread for sending handles') - self._listener = Listener(authkey=process.current_process().authkey) + self._listener = Listener(authkey=process.current_process().authkey, backlog=128) self._address = self._listener.address t = threading.Thread(target=self._serve) t.daemon = True diff --git a/Lib/multiprocessing/util.py b/Lib/multiprocessing/util.py index 6ee0d33e88a..79559823fb4 100644 --- a/Lib/multiprocessing/util.py +++ b/Lib/multiprocessing/util.py @@ -43,19 +43,19 @@ def sub_debug(msg, *args): if _logger: - _logger.log(SUBDEBUG, msg, *args) + _logger.log(SUBDEBUG, msg, *args, stacklevel=2) def debug(msg, *args): if _logger: - _logger.log(DEBUG, msg, *args) + _logger.log(DEBUG, msg, *args, stacklevel=2) def info(msg, *args): if _logger: - _logger.log(INFO, msg, *args) + _logger.log(INFO, msg, *args, stacklevel=2) def sub_warning(msg, *args): if _logger: - _logger.log(SUBWARNING, msg, *args) + _logger.log(SUBWARNING, msg, *args, stacklevel=2) def get_logger(): ''' @@ -130,7 +130,10 @@ def is_abstract_socket_namespace(address): # def _remove_temp_dir(rmtree, tempdir): - rmtree(tempdir) + def onerror(func, path, err_info): + if not issubclass(err_info[0], FileNotFoundError): + raise + rmtree(tempdir, onerror=onerror) current_process = process.current_process() # current_process() can be None if the finalizer is called diff --git a/Lib/pdb.py b/Lib/pdb.py index 2e048ac5ba6..a838a26b038 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -76,6 +76,7 @@ import dis import code import glob +import token import pprint import signal import inspect @@ -467,6 +468,39 @@ def default(self, line): except: self._error_exc() + def _replace_convenience_variables(self, line): + """Replace the convenience variables in 'line' with their values. + e.g. $foo is replaced by __pdb_convenience_variables["foo"]. + Note: such pattern in string literals will be skipped""" + + if "$" not in line: + return line + + dollar_start = dollar_end = -1 + replace_variables = [] + try: + for t in tokenize.generate_tokens(io.StringIO(line).readline): + token_type, token_string, start, end, _ = t + if token_type == token.OP and token_string == '$': + dollar_start, dollar_end = start, end + elif start == dollar_end and token_type == token.NAME: + # line is a one-line command so we only care about column + replace_variables.append((dollar_start[1], end[1], token_string)) + except tokenize.TokenError: + return line + + if not replace_variables: + return line + + last_end = 0 + line_pieces = [] + for start, end, name in replace_variables: + line_pieces.append(line[last_end:start] + f'__pdb_convenience_variables["{name}"]') + last_end = end + line_pieces.append(line[last_end:]) + + return ''.join(line_pieces) + def precmd(self, line): """Handle alias expansion and ';;' separator.""" if not line.strip(): @@ -492,7 +526,8 @@ def precmd(self, line): line = line[:marker].rstrip() # Replace all the convenience variables - line = re.sub(r'\$([a-zA-Z_][a-zA-Z0-9_]*)', r'__pdb_convenience_variables["\1"]', line) + line = self._replace_convenience_variables(line) + return line def onecmd(self, line): diff --git a/Lib/pickle.py b/Lib/pickle.py index fe86f80f51d..6e3c61fd0b2 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -855,13 +855,13 @@ def save_str(self, obj): else: self.write(BINUNICODE + pack(" 1: + name = '' if arg == '-' else arg + preamble = args.preamble.format(name=name) + output.write(preamble + '\n') + if arg == '-': + dis(sys.stdin.buffer, output, memo, args.indentlevel, annotate) + else: + with open(arg, 'rb') as f: + dis(f, output, memo, args.indentlevel, annotate) + finally: + if output is not sys.stdout: + output.close() diff --git a/Lib/pprint.py b/Lib/pprint.py index 34ed12637e2..9314701db34 100644 --- a/Lib/pprint.py +++ b/Lib/pprint.py @@ -128,6 +128,9 @@ def __init__(self, indent=1, width=80, depth=None, stream=None, *, sort_dicts If true, dict keys are sorted. + underscore_numbers + If true, digit groups are separated with underscores. + """ indent = int(indent) width = int(width) diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 41f48580202..e97e543a876 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Thu Dec 7 21:32:35 2023 +# Autogenerated by Sphinx on Tue Feb 6 21:16:37 2024 # as part of the release process. topics = {'assert': 'The "assert" statement\n' '**********************\n' @@ -3058,8 +3058,7 @@ 'standard\n' 'Python grammar. Triple-quoted strings are supported. Raw ' 'strings and\n' - 'byte strings are supported. Formatted string literals are not\n' - 'supported.\n' + 'byte strings are supported. f-strings are not supported.\n' '\n' 'The forms "signed_number \'+\' NUMBER" and "signed_number \'-\' ' 'NUMBER"\n' @@ -3713,7 +3712,7 @@ ' **PEP 526** - Syntax for Variable Annotations\n' ' Ability to type hint variable declarations, including ' 'class\n' - ' variables and instance variables\n' + ' variables and instance variables.\n' '\n' ' **PEP 563** - Postponed Evaluation of Annotations\n' ' Support for forward references within annotations by ' @@ -3721,6 +3720,11 @@ ' annotations in a string form at runtime instead of eager\n' ' evaluation.\n' '\n' + ' **PEP 318** - Decorators for Functions and Methods\n' + ' Function and method decorators were introduced. Class ' + 'decorators\n' + ' were introduced in **PEP 3129**.\n' + '\n' '\n' 'Class definitions\n' '=================\n' @@ -4837,8 +4841,8 @@ 'denial-of-service caused\n' ' by carefully chosen inputs that exploit the worst ' 'case\n' - ' performance of a dict insertion, O(n^2) complexity. ' - 'See\n' + ' performance of a dict insertion, *O*(*n*^2) ' + 'complexity. See\n' ' http://ocert.org/advisories/ocert-2011-003.html for\n' ' details.Changing hash values affects the iteration ' 'order of sets.\n' @@ -4917,7 +4921,7 @@ 'and continue running without the debugger using the "continue"\n' 'command.\n' '\n' - 'New in version 3.7: The built-in "breakpoint()", when called ' + 'Changed in version 3.7: The built-in "breakpoint()", when called ' 'with\n' 'defaults, can be used instead of "import pdb; pdb.set_trace()".\n' '\n' @@ -4961,11 +4965,11 @@ 'the\n' 'debugger upon program’s exit.\n' '\n' - 'New in version 3.2: "-c" option is introduced to execute ' + 'Changed in version 3.2: Added the "-c" option to execute ' 'commands as\n' - 'if given in a ".pdbrc" file, see Debugger Commands.\n' + 'if given in a ".pdbrc" file; see Debugger Commands.\n' '\n' - 'New in version 3.7: "-m" option is introduced to execute ' + 'Changed in version 3.7: Added the "-m" option to execute ' 'modules\n' 'similar to the way "python -m" does. As with a script, the ' 'debugger\n' @@ -5111,11 +5115,11 @@ '\n' ' Raises an auditing event "pdb.Pdb" with no arguments.\n' '\n' - ' New in version 3.1: The *skip* argument.\n' + ' Changed in version 3.1: Added the *skip* parameter.\n' '\n' - ' New in version 3.2: The *nosigint* argument. Previously, a ' - 'SIGINT\n' - ' handler was never set by Pdb.\n' + ' Changed in version 3.2: Added the *nosigint* parameter. ' + 'Previously,\n' + ' a SIGINT handler was never set by Pdb.\n' '\n' ' Changed in version 3.6: The *readrc* argument.\n' '\n' @@ -5458,7 +5462,7 @@ 'differs\n' ' from the current line.\n' '\n' - ' New in version 3.2: The ">>" marker.\n' + ' Changed in version 3.2: Added the ">>" marker.\n' '\n' 'll | longlist\n' '\n' @@ -6390,15 +6394,15 @@ 'originally\n' 'proposed by **PEP 448**.\n' '\n' - 'The trailing comma is required only to create a single tuple ' - '(a.k.a. a\n' - '*singleton*); it is optional in all other cases. A single ' - 'expression\n' - 'without a trailing comma doesn’t create a tuple, but rather ' - 'yields the\n' - 'value of that expression. (To create an empty tuple, use an ' - 'empty pair\n' - 'of parentheses: "()".)\n', + 'A trailing comma is required only to create a one-item tuple, ' + 'such as\n' + '"1,"; it is optional in all other cases. A single expression ' + 'without a\n' + 'trailing comma doesn’t create a tuple, but rather yields the ' + 'value of\n' + 'that expression. (To create an empty tuple, use an empty pair ' + 'of\n' + 'parentheses: "()".)\n', 'floating': 'Floating point literals\n' '***********************\n' '\n' @@ -6512,7 +6516,7 @@ ' index_string ::= ' '+\n' ' conversion ::= "r" | "s" | "a"\n' - ' format_spec ::= \n' + ' format_spec ::= format-spec:format_spec\n' '\n' 'In less formal terms, the replacement field can start with ' 'a\n' @@ -6647,12 +6651,11 @@ 'contained\n' 'within a format string to define how individual values are ' 'presented\n' - '(see Format String Syntax and Formatted string literals). ' - 'They can\n' - 'also be passed directly to the built-in "format()" ' - 'function. Each\n' - 'formattable type may define how the format specification is ' - 'to be\n' + '(see Format String Syntax and f-strings). They can also be ' + 'passed\n' + 'directly to the built-in "format()" function. Each ' + 'formattable type\n' + 'may define how the format specification is to be ' 'interpreted.\n' '\n' 'Most built-in types implement the following options for ' @@ -7467,13 +7470,18 @@ ' **PEP 526** - Syntax for Variable Annotations\n' ' Ability to type hint variable declarations, including ' 'class\n' - ' variables and instance variables\n' + ' variables and instance variables.\n' '\n' ' **PEP 563** - Postponed Evaluation of Annotations\n' ' Support for forward references within annotations by ' 'preserving\n' ' annotations in a string form at runtime instead of eager\n' - ' evaluation.\n', + ' evaluation.\n' + '\n' + ' **PEP 318** - Decorators for Functions and Methods\n' + ' Function and method decorators were introduced. Class ' + 'decorators\n' + ' were introduced in **PEP 3129**.\n', 'global': 'The "global" statement\n' '**********************\n' '\n' @@ -9170,15 +9178,13 @@ '\n' 'A traceback object is normally created automatically when an ' 'exception\n' - 'is raised and attached to it as the "__traceback__" attribute, ' - 'which\n' - 'is writable. You can create an exception and set your own traceback ' - 'in\n' - 'one step using the "with_traceback()" exception method (which ' - 'returns\n' - 'the same exception instance, with its traceback set to its ' - 'argument),\n' - 'like so:\n' + 'is raised and attached to it as the "__traceback__" attribute. You ' + 'can\n' + 'create an exception and set your own traceback in one step using ' + 'the\n' + '"with_traceback()" exception method (which returns the same ' + 'exception\n' + 'instance, with its traceback set to its argument), like so:\n' '\n' ' raise Exception("foo occurred").with_traceback(tracebackobj)\n' '\n' @@ -9204,6 +9210,8 @@ ' ...\n' ' Traceback (most recent call last):\n' ' File "", line 2, in \n' + ' print(1 / 0)\n' + ' ~~^~~\n' ' ZeroDivisionError: division by zero\n' '\n' ' The above exception was the direct cause of the following ' @@ -9211,6 +9219,7 @@ '\n' ' Traceback (most recent call last):\n' ' File "", line 4, in \n' + ' raise RuntimeError("Something bad happened") from exc\n' ' RuntimeError: Something bad happened\n' '\n' 'A similar mechanism works implicitly if a new exception is raised ' @@ -9229,6 +9238,8 @@ ' ...\n' ' Traceback (most recent call last):\n' ' File "", line 2, in \n' + ' print(1 / 0)\n' + ' ~~^~~\n' ' ZeroDivisionError: division by zero\n' '\n' ' During handling of the above exception, another exception ' @@ -9236,6 +9247,7 @@ '\n' ' Traceback (most recent call last):\n' ' File "", line 4, in \n' + ' raise RuntimeError("Something bad happened")\n' ' RuntimeError: Something bad happened\n' '\n' 'Exception chaining can be explicitly suppressed by specifying ' @@ -9424,23 +9436,20 @@ '\n' ' Called to implement evaluation of "self[key]". For ' '*sequence*\n' - ' types, the accepted keys should be integers and slice ' - 'objects.\n' - ' Note that the special interpretation of negative ' - 'indexes (if the\n' - ' class wishes to emulate a *sequence* type) is up to ' - 'the\n' - ' "__getitem__()" method. If *key* is of an inappropriate ' - 'type,\n' - ' "TypeError" may be raised; if of a value outside the ' - 'set of indexes\n' - ' for the sequence (after any special interpretation of ' - 'negative\n' - ' values), "IndexError" should be raised. For *mapping* ' - 'types, if\n' - ' *key* is missing (not in the container), "KeyError" ' - 'should be\n' - ' raised.\n' + ' types, the accepted keys should be integers. ' + 'Optionally, they may\n' + ' support "slice" objects as well. Negative index ' + 'support is also\n' + ' optional. If *key* is of an inappropriate type, ' + '"TypeError" may be\n' + ' raised; if *key* is a value outside the set of indexes ' + 'for the\n' + ' sequence (after any special interpretation of negative ' + 'values),\n' + ' "IndexError" should be raised. For *mapping* types, if ' + '*key* is\n' + ' missing (not in the container), "KeyError" should be ' + 'raised.\n' '\n' ' Note:\n' '\n' @@ -10162,8 +10171,8 @@ ' intended to provide protection against a ' 'denial-of-service caused\n' ' by carefully chosen inputs that exploit the worst case\n' - ' performance of a dict insertion, O(n^2) complexity. ' - 'See\n' + ' performance of a dict insertion, *O*(*n*^2) ' + 'complexity. See\n' ' http://ocert.org/advisories/ocert-2011-003.html for\n' ' details.Changing hash values affects the iteration ' 'order of sets.\n' @@ -10706,7 +10715,7 @@ '\n' ' Keyword arguments which are given to a new class are ' 'passed to the\n' - ' parent’s class "__init_subclass__". For compatibility ' + ' parent class’s "__init_subclass__". For compatibility ' 'with other\n' ' classes using "__init_subclass__", one should take out ' 'the needed\n' @@ -11393,22 +11402,20 @@ '\n' ' Called to implement evaluation of "self[key]". For ' '*sequence*\n' - ' types, the accepted keys should be integers and slice ' - 'objects.\n' - ' Note that the special interpretation of negative indexes ' - '(if the\n' - ' class wishes to emulate a *sequence* type) is up to the\n' - ' "__getitem__()" method. If *key* is of an inappropriate ' - 'type,\n' - ' "TypeError" may be raised; if of a value outside the set ' - 'of indexes\n' - ' for the sequence (after any special interpretation of ' - 'negative\n' - ' values), "IndexError" should be raised. For *mapping* ' - 'types, if\n' - ' *key* is missing (not in the container), "KeyError" ' - 'should be\n' - ' raised.\n' + ' types, the accepted keys should be integers. Optionally, ' + 'they may\n' + ' support "slice" objects as well. Negative index support ' + 'is also\n' + ' optional. If *key* is of an inappropriate type, ' + '"TypeError" may be\n' + ' raised; if *key* is a value outside the set of indexes ' + 'for the\n' + ' sequence (after any special interpretation of negative ' + 'values),\n' + ' "IndexError" should be raised. For *mapping* types, if ' + '*key* is\n' + ' missing (not in the container), "KeyError" should be ' + 'raised.\n' '\n' ' Note:\n' '\n' @@ -13001,12 +13008,11 @@ '\n' 'A string literal with "\'f\'" or "\'F\'" in its prefix is a ' '*formatted\n' - 'string literal*; see Formatted string literals. The "\'f\'" may ' - 'be\n' - 'combined with "\'r\'", but not with "\'b\'" or "\'u\'", therefore ' - 'raw\n' - 'formatted strings are possible, but formatted bytes literals are ' - 'not.\n' + 'string literal*; see f-strings. The "\'f\'" may be combined with ' + '"\'r\'",\n' + 'but not with "\'b\'" or "\'u\'", therefore raw formatted strings ' + 'are\n' + 'possible, but formatted bytes literals are not.\n' '\n' 'In triple-quoted literals, unescaped newlines and quotes are ' 'allowed\n' @@ -13910,130 +13916,117 @@ 'function’s\n' 'formal parameter list.\n' '\n' - 'Special attributes:\n' '\n' - '+---------------------------+---------------------------------+-------------+\n' - '| Attribute | Meaning ' - '| |\n' - '|===========================|=================================|=============|\n' - '| "__doc__" | The function’s documentation | ' - 'Writable |\n' - '| | string, or "None" if ' - '| |\n' - '| | unavailable; not inherited by ' - '| |\n' - '| | subclasses. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__name__" | The function’s name. | ' - 'Writable |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__qualname__" | The function’s *qualified | ' - 'Writable |\n' - '| | name*. New in version 3.3. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__module__" | The name of the module the | ' - 'Writable |\n' - '| | function was defined in, or ' - '| |\n' - '| | "None" if unavailable. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__defaults__" | A tuple containing default | ' - 'Writable |\n' - '| | argument values for those ' - '| |\n' - '| | arguments that have defaults, ' - '| |\n' - '| | or "None" if no arguments have ' - '| |\n' - '| | a default value. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__code__" | The code object representing | ' - 'Writable |\n' - '| | the compiled function body. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__globals__" | A reference to the dictionary | ' - 'Read-only |\n' - '| | that holds the function’s ' - '| |\n' - '| | global variables — the global ' - '| |\n' - '| | namespace of the module in ' - '| |\n' - '| | which the function was defined. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__dict__" | The namespace supporting | ' - 'Writable |\n' - '| | arbitrary function attributes. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__closure__" | "None" or a tuple of cells that | ' - 'Read-only |\n' - '| | contain bindings for the ' - '| |\n' - '| | function’s free variables. See ' - '| |\n' - '| | below for information on the ' - '| |\n' - '| | "cell_contents" attribute. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__annotations__" | A dict containing annotations | ' - 'Writable |\n' - '| | of parameters. The keys of the ' - '| |\n' - '| | dict are the parameter names, ' - '| |\n' - '| | and "\'return\'" for the return ' - '| |\n' - '| | annotation, if provided. For ' - '| |\n' - '| | more information on working ' - '| |\n' - '| | with this attribute, see ' - '| |\n' - '| | Annotations Best Practices. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__kwdefaults__" | A dict containing defaults for | ' - 'Writable |\n' - '| | keyword-only parameters. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '| "__type_params__" | A tuple containing the type | ' - 'Writable |\n' - '| | parameters of a generic ' - '| |\n' - '| | function. ' - '| |\n' - '+---------------------------+---------------------------------+-------------+\n' - '\n' - 'Most of the attributes labelled “Writable” check the type of the\n' - 'assigned value.\n' + 'Special read-only attributes\n' + '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n' + '\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| Attribute | ' + 'Meaning |\n' + '|====================================================|====================================================|\n' + '| function.__globals__ | A reference ' + 'to the "dictionary" that holds the |\n' + '| | function’s ' + 'global variables – the global namespace |\n' + '| | of the ' + 'module in which the function was defined. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__closure__ | "None" or a ' + '"tuple" of cells that contain bindings |\n' + '| | for the ' + 'function’s free variables. A cell object |\n' + '| | has the ' + 'attribute "cell_contents". This can be |\n' + '| | used to get ' + 'the value of the cell, as well as set |\n' + '| | the ' + 'value. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '\n' + '\n' + 'Special writable attributes\n' + '~~~~~~~~~~~~~~~~~~~~~~~~~~~\n' + '\n' + 'Most of these attributes check the type of the assigned value:\n' + '\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| Attribute | ' + 'Meaning |\n' + '|====================================================|====================================================|\n' + '| function.__doc__ | The ' + 'function’s documentation string, or "None" if |\n' + '| | unavailable. ' + 'Not inherited by subclasses. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__name__ | The ' + 'function’s name. See also: "__name__ |\n' + '| | ' + 'attributes". |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__qualname__ | The ' + 'function’s *qualified name*. See also: |\n' + '| | ' + '"__qualname__ attributes". New in version 3.3. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__module__ | The name of ' + 'the module the function was defined |\n' + '| | in, or ' + '"None" if unavailable. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__defaults__ | A "tuple" ' + 'containing default *parameter* values |\n' + '| | for those ' + 'parameters that have defaults, or "None" |\n' + '| | if no ' + 'parameters have a default value. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__code__ | The code ' + 'object representing the compiled function |\n' + '| | ' + 'body. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__dict__ | The ' + 'namespace supporting arbitrary function |\n' + '| | attributes. ' + 'See also: "__dict__ attributes". |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__annotations__ | A ' + '"dictionary" containing annotations of |\n' + '| | ' + '*parameters*. The keys of the dictionary are the |\n' + '| | parameter ' + 'names, and "\'return\'" for the return |\n' + '| | annotation, ' + 'if provided. See also: Annotations |\n' + '| | Best ' + 'Practices. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__kwdefaults__ | A ' + '"dictionary" containing defaults for keyword- |\n' + '| | only ' + '*parameters*. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| function.__type_params__ | A "tuple" ' + 'containing the type parameters of a |\n' + '| | generic ' + 'function. New in version 3.12. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' '\n' 'Function objects also support getting and setting arbitrary\n' 'attributes, which can be used, for example, to attach metadata to\n' 'functions. Regular attribute dot-notation is used to get and set ' 'such\n' - 'attributes. *Note that the current implementation only supports\n' - 'function attributes on user-defined functions. Function attributes ' - 'on\n' - 'built-in functions may be supported in the future.*\n' + 'attributes.\n' '\n' - 'A cell object has the attribute "cell_contents". This can be used ' - 'to\n' - 'get the value of the cell, as well as set the value.\n' + '**CPython implementation detail:** CPython’s current ' + 'implementation\n' + 'only supports function attributes on user-defined functions. ' + 'Function\n' + 'attributes on built-in functions may be supported in the future.\n' '\n' 'Additional information about a function’s definition can be ' 'retrieved\n' - 'from its code object; see the description of internal types below. ' - 'The\n' - '"cell" type can be accessed in the "types" module.\n' + 'from its code object (accessible via the "__code__" attribute).\n' '\n' '\n' 'Instance methods\n' @@ -14043,14 +14036,34 @@ 'any\n' 'callable object (normally a user-defined function).\n' '\n' - 'Special read-only attributes: "__self__" is the class instance ' - 'object,\n' - '"__func__" is the function object; "__doc__" is the method’s\n' - 'documentation (same as "__func__.__doc__"); "__name__" is the ' - 'method\n' - 'name (same as "__func__.__name__"); "__module__" is the name of ' - 'the\n' - 'module the method was defined in, or "None" if unavailable.\n' + 'Special read-only attributes:\n' + '\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| method.__self__ | Refers to ' + 'the class instance object to which the |\n' + '| | method is ' + 'bound |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| method.__func__ | Refers to ' + 'the original function object |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| method.__doc__ | The method’s ' + 'documentation (same as |\n' + '| | ' + '"method.__func__.__doc__"). A "string" if the |\n' + '| | original ' + 'function had a docstring, else "None". |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| method.__name__ | The name of ' + 'the method (same as |\n' + '| | ' + '"method.__func__.__name__") |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| method.__module__ | The name of ' + 'the module the method was defined in, |\n' + '| | or "None" if ' + 'unavailable. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' '\n' 'Methods also support accessing (but not setting) the arbitrary\n' 'function attributes on the underlying function object.\n' @@ -14059,24 +14072,20 @@ 'attribute\n' 'of a class (perhaps via an instance of that class), if that ' 'attribute\n' - 'is a user-defined function object or a class method object.\n' + 'is a user-defined function object or a "classmethod" object.\n' '\n' 'When an instance method object is created by retrieving a ' 'user-defined\n' 'function object from a class via one of its instances, its ' '"__self__"\n' - 'attribute is the instance, and the method object is said to be ' - 'bound.\n' - 'The new method’s "__func__" attribute is the original function ' - 'object.\n' + 'attribute is the instance, and the method object is said to be\n' + '*bound*. The new method’s "__func__" attribute is the original\n' + 'function object.\n' '\n' - 'When an instance method object is created by retrieving a class ' - 'method\n' - 'object from a class or instance, its "__self__" attribute is the ' - 'class\n' - 'itself, and its "__func__" attribute is the function object ' - 'underlying\n' - 'the class method.\n' + 'When an instance method object is created by retrieving a\n' + '"classmethod" object from a class or instance, its "__self__"\n' + 'attribute is the class itself, and its "__func__" attribute is the\n' + 'function object underlying the class method.\n' '\n' 'When an instance method object is called, the underlying function\n' '("__func__") is called, inserting the class instance ("__self__") ' @@ -14087,7 +14096,7 @@ 'of\n' '"C", calling "x.f(1)" is equivalent to calling "C.f(x, 1)".\n' '\n' - 'When an instance method object is derived from a class method ' + 'When an instance method object is derived from a "classmethod" ' 'object,\n' 'the “class instance” stored in "__self__" will actually be the ' 'class\n' @@ -14175,13 +14184,18 @@ 'of built-in functions are "len()" and "math.sin()" ("math" is a\n' 'standard built-in module). The number and type of the arguments ' 'are\n' - 'determined by the C function. Special read-only attributes: ' - '"__doc__"\n' - 'is the function’s documentation string, or "None" if unavailable;\n' - '"__name__" is the function’s name; "__self__" is set to "None" ' - '(but\n' - 'see the next item); "__module__" is the name of the module the\n' - 'function was defined in or "None" if unavailable.\n' + 'determined by the C function. Special read-only attributes:\n' + '\n' + '* "__doc__" is the function’s documentation string, or "None" if\n' + ' unavailable. See "function.__doc__".\n' + '\n' + '* "__name__" is the function’s name. See "function.__name__".\n' + '\n' + '* "__self__" is set to "None" (but see the next item).\n' + '\n' + '* "__module__" is the name of the module the function was defined ' + 'in\n' + ' or "None" if unavailable. See "function.__module__".\n' '\n' '\n' 'Built-in methods\n' @@ -14193,7 +14207,9 @@ 'argument. An example of a built-in method is "alist.append()",\n' 'assuming *alist* is a list object. In this case, the special ' 'read-only\n' - 'attribute "__self__" is set to the object denoted by *alist*.\n' + 'attribute "__self__" is set to the object denoted by *alist*. (The\n' + 'attribute has the same semantics as it does with "other instance\n' + 'methods".)\n' '\n' '\n' 'Classes\n' @@ -14225,16 +14241,15 @@ 'statement, or by calling functions such as ' '"importlib.import_module()"\n' 'and built-in "__import__()". A module object has a namespace\n' - 'implemented by a dictionary object (this is the dictionary ' - 'referenced\n' - 'by the "__globals__" attribute of functions defined in the ' - 'module).\n' - 'Attribute references are translated to lookups in this dictionary,\n' - 'e.g., "m.x" is equivalent to "m.__dict__["x"]". A module object ' - 'does\n' - 'not contain the code object used to initialize the module (since ' - 'it\n' - 'isn’t needed once the initialization is done).\n' + 'implemented by a "dictionary" object (this is the dictionary\n' + 'referenced by the "__globals__" attribute of functions defined in ' + 'the\n' + 'module). Attribute references are translated to lookups in this\n' + 'dictionary, e.g., "m.x" is equivalent to "m.__dict__["x"]". A ' + 'module\n' + 'object does not contain the code object used to initialize the ' + 'module\n' + '(since it isn’t needed once the initialization is done).\n' '\n' 'Attribute assignment updates the module’s namespace dictionary, ' 'e.g.,\n' @@ -14308,14 +14323,13 @@ 'a\n' 'class method object, it is transformed into an instance method ' 'object\n' - 'whose "__self__" attribute is "C". When it would yield a static\n' - 'method object, it is transformed into the object wrapped by the ' - 'static\n' - 'method object. See section Implementing Descriptors for another way ' - 'in\n' - 'which attributes retrieved from a class may differ from those ' - 'actually\n' - 'contained in its "__dict__".\n' + 'whose "__self__" attribute is "C". When it would yield a\n' + '"staticmethod" object, it is transformed into the object wrapped ' + 'by\n' + 'the static method object. See section Implementing Descriptors for\n' + 'another way in which attributes retrieved from a class may differ ' + 'from\n' + 'those actually contained in its "__dict__".\n' '\n' 'Class attribute assignments update the class’s dictionary, never ' 'the\n' @@ -14568,8 +14582,8 @@ 'undefined.\n' '\n' '\n' - 'The "co_positions()" method\n' - '~~~~~~~~~~~~~~~~~~~~~~~~~~~\n' + 'Methods on code objects\n' + '~~~~~~~~~~~~~~~~~~~~~~~\n' '\n' 'codeobject.co_positions()\n' '\n' @@ -14617,14 +14631,63 @@ 'the\n' ' "PYTHONNODEBUGRANGES" environment variable can be used.\n' '\n' + 'codeobject.co_lines()\n' + '\n' + ' Returns an iterator that yields information about successive ' + 'ranges\n' + ' of *bytecode*s. Each item yielded is a "(start, end, lineno)"\n' + ' "tuple":\n' + '\n' + ' * "start" (an "int") represents the offset (inclusive) of the ' + 'start\n' + ' of the *bytecode* range\n' + '\n' + ' * "end" (an "int") represents the offset (exclusive) of the end ' + 'of\n' + ' the *bytecode* range\n' + '\n' + ' * "lineno" is an "int" representing the line number of the\n' + ' *bytecode* range, or "None" if the bytecodes in the given ' + 'range\n' + ' have no line number\n' + '\n' + ' The items yielded will have the following properties:\n' + '\n' + ' * The first range yielded will have a "start" of 0.\n' + '\n' + ' * The "(start, end)" ranges will be non-decreasing and ' + 'consecutive.\n' + ' That is, for any pair of "tuple"s, the "start" of the second ' + 'will\n' + ' be equal to the "end" of the first.\n' + '\n' + ' * No range will be backwards: "end >= start" for all triples.\n' + '\n' + ' * The last "tuple" yielded will have "end" equal to the size of ' + 'the\n' + ' *bytecode*.\n' + '\n' + ' Zero-width ranges, where "start == end", are allowed. ' + 'Zero-width\n' + ' ranges are used for lines that are present in the source code, ' + 'but\n' + ' have been eliminated by the *bytecode* compiler.\n' + '\n' + ' New in version 3.10.\n' + '\n' + ' See also:\n' + '\n' + ' **PEP 626** - Precise line numbers for debugging and other ' + 'tools.\n' + ' The PEP that introduced the "co_lines()" method.\n' + '\n' '\n' 'Frame objects\n' '-------------\n' '\n' 'Frame objects represent execution frames. They may occur in ' 'traceback\n' - 'objects (see below), and are also passed to registered trace\n' - 'functions.\n' + 'objects, and are also passed to registered trace functions.\n' '\n' '\n' 'Special read-only attributes\n' @@ -14737,11 +14800,14 @@ 'Traceback objects\n' '-----------------\n' '\n' - 'Traceback objects represent a stack trace of an exception. A\n' + 'Traceback objects represent the stack trace of an exception. A\n' 'traceback object is implicitly created when an exception occurs, ' 'and\n' 'may also be explicitly created by calling "types.TracebackType".\n' '\n' + 'Changed in version 3.7: Traceback objects can now be explicitly\n' + 'instantiated from Python code.\n' + '\n' 'For implicitly created tracebacks, when the search for an ' 'exception\n' 'handler unwinds the execution stack, at each unwound level a ' @@ -14764,30 +14830,40 @@ 'linked\n' 'to form a full stack trace.\n' '\n' - 'Special read-only attributes: "tb_frame" points to the execution ' - 'frame\n' - 'of the current level; "tb_lineno" gives the line number where the\n' - 'exception occurred; "tb_lasti" indicates the precise instruction. ' - 'The\n' - 'line number and last instruction in the traceback may differ from ' - 'the\n' - 'line number of its frame object if the exception occurred in a ' - '"try"\n' - 'statement with no matching except clause or with a finally clause.\n' + 'Special read-only attributes:\n' '\n' - 'Accessing "tb_frame" raises an auditing event "object.__getattr__"\n' - 'with arguments "obj" and ""tb_frame"".\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| traceback.tb_frame | Points to ' + 'the execution frame of the current |\n' + '| | level. ' + 'Accessing this attribute raises an |\n' + '| | auditing ' + 'event "object.__getattr__" with arguments |\n' + '| | "obj" and ' + '""tb_frame"". |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| traceback.tb_lineno | Gives the ' + 'line number where the exception occurred |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' + '| traceback.tb_lasti | Indicates ' + 'the “precise instruction”. |\n' + '+----------------------------------------------------+----------------------------------------------------+\n' '\n' - 'Special writable attribute: "tb_next" is the next level in the ' - 'stack\n' - 'trace (towards the frame where the exception occurred), or "None" ' - 'if\n' - 'there is no next level.\n' + 'The line number and last instruction in the traceback may differ ' + 'from\n' + 'the line number of its frame object if the exception occurred in a\n' + '"try" statement with no matching except clause or with a "finally"\n' + 'clause.\n' '\n' - 'Changed in version 3.7: Traceback objects can now be explicitly\n' - 'instantiated from Python code, and the "tb_next" attribute of ' - 'existing\n' - 'instances can be updated.\n' + 'traceback.tb_next\n' + '\n' + ' The special writable attribute "tb_next" is the next level in ' + 'the\n' + ' stack trace (towards the frame where the exception occurred), ' + 'or\n' + ' "None" if there is no next level.\n' + '\n' + ' Changed in version 3.7: This attribute is now writable\n' '\n' '\n' 'Slice objects\n' @@ -14844,8 +14920,8 @@ 'around another object that alters the way in which that object is\n' 'retrieved from classes and class instances. The behaviour of class\n' 'method objects upon such retrieval is described above, under ' - '“User-\n' - 'defined methods”. Class method objects are created by the built-in\n' + '“instance\n' + 'methods”. Class method objects are created by the built-in\n' '"classmethod()" constructor.\n', 'typesfunctions': 'Functions\n' '*********\n' @@ -15364,7 +15440,7 @@ 'notation.\n' 'There are two flavors: built-in methods (such as "append()" ' 'on lists)\n' - 'and class instance methods. Built-in methods are described ' + 'and class instance method. Built-in methods are described ' 'with the\n' 'types that support them.\n' '\n' @@ -15372,8 +15448,8 @@ 'namespace)\n' 'through an instance, you get a special object: a *bound ' 'method* (also\n' - 'called *instance method*) object. When called, it will add ' - 'the "self"\n' + 'called instance method) object. When called, it will add the ' + '"self"\n' 'argument to the argument list. Bound methods have two ' 'special read-\n' 'only attributes: "m.__self__" is the object on which the ' @@ -15388,7 +15464,7 @@ 'arbitrary\n' 'attributes. However, since method attributes are actually ' 'stored on\n' - 'the underlying function object ("meth.__func__"), setting ' + 'the underlying function object ("method.__func__"), setting ' 'method\n' 'attributes on bound methods is disallowed. Attempting to ' 'set an\n' @@ -15413,7 +15489,7 @@ ' >>> c.method.whoami\n' " 'my name is method'\n" '\n' - 'See The standard type hierarchy for more information.\n', + 'See Instance methods for more information.\n', 'typesmodules': 'Modules\n' '*******\n' '\n' diff --git a/Lib/shutil.py b/Lib/shutil.py index b99614fabcf..96463007d12 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -302,11 +302,15 @@ def copymode(src, dst, *, follow_symlinks=True): sys.audit("shutil.copymode", src, dst) if not follow_symlinks and _islink(src) and os.path.islink(dst): - if hasattr(os, 'lchmod'): + if os.name == 'nt': + stat_func, chmod_func = os.lstat, os.chmod + elif hasattr(os, 'lchmod'): stat_func, chmod_func = os.lstat, os.lchmod else: return else: + if os.name == 'nt' and os.path.islink(dst): + dst = os.path.realpath(dst, strict=True) stat_func, chmod_func = _stat, os.chmod st = stat_func(src) @@ -382,8 +386,16 @@ def lookup(name): # We must copy extended attributes before the file is (potentially) # chmod()'ed read-only, otherwise setxattr() will error with -EACCES. _copyxattr(src, dst, follow_symlinks=follow) + _chmod = lookup("chmod") + if os.name == 'nt': + if follow: + if os.path.islink(dst): + dst = os.path.realpath(dst, strict=True) + else: + def _chmod(*args, **kwargs): + os.chmod(*args) try: - lookup("chmod")(dst, mode, follow_symlinks=follow) + _chmod(dst, mode, follow_symlinks=follow) except NotImplementedError: # if we got a NotImplementedError, it's because # * follow_symlinks=False, @@ -834,12 +846,12 @@ def move(src, dst, copy_function=copy2): similar to the Unix "mv" command. Return the file or directory's destination. - If the destination is a directory or a symlink to a directory, the source - is moved inside the directory. The destination path must not already - exist. + If dst is an existing directory or a symlink to a directory, then src is + moved inside that directory. The destination path in that directory must + not already exist. - If the destination already exists but is not a directory, it may be - overwritten depending on os.rename() semantics. + If dst already exists but is not a directory, it may be overwritten + depending on os.rename() semantics. If the destination is on our current filesystem, then rename() is used. Otherwise, src is copied to the destination and then removed. Symlinks are @@ -858,7 +870,7 @@ def move(src, dst, copy_function=copy2): sys.audit("shutil.move", src, dst) real_dst = dst if os.path.isdir(dst): - if _samefile(src, dst): + if _samefile(src, dst) and not os.path.islink(src): # We might be on a case insensitive filesystem, # perform the rename anyway. os.rename(src, dst) diff --git a/Lib/signal.py b/Lib/signal.py index 50b215b29d2..c8cd3d4f597 100644 --- a/Lib/signal.py +++ b/Lib/signal.py @@ -22,9 +22,11 @@ def _int_to_enum(value, enum_klass): - """Convert a numeric value to an IntEnum member. - If it's not a known member, return the numeric value itself. + """Convert a possible numeric value to an IntEnum member. + If it's not a known member, return the value itself. """ + if not isinstance(value, int): + return value try: return enum_klass(value) except ValueError: diff --git a/Lib/site.py b/Lib/site.py index 9a861403d9f..c030455b372 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -74,6 +74,7 @@ import builtins import _sitebuiltins import io +import stat # Prefixes for site-packages; add additional prefixes like /usr/local here PREFIXES = [sys.prefix, sys.exec_prefix] @@ -168,6 +169,14 @@ def addpackage(sitedir, name, known_paths): else: reset = False fullname = os.path.join(sitedir, name) + try: + st = os.lstat(fullname) + except OSError: + return + if ((getattr(st, 'st_flags', 0) & stat.UF_HIDDEN) or + (getattr(st, 'st_file_attributes', 0) & stat.FILE_ATTRIBUTE_HIDDEN)): + _trace(f"Skipping hidden .pth file: {fullname!r}") + return _trace(f"Processing .pth file: {fullname!r}") try: # locale encoding is not ideal especially on Windows. But we have used @@ -221,7 +230,8 @@ def addsitedir(sitedir, known_paths=None): names = os.listdir(sitedir) except OSError: return - names = [name for name in names if name.endswith(".pth")] + names = [name for name in names + if name.endswith(".pth") and not name.startswith(".")] for name in sorted(names): addpackage(sitedir, name, known_paths) if reset: diff --git a/Lib/socket.py b/Lib/socket.py index 321fcda5150..42ee1307732 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -382,7 +382,7 @@ def _sendfile_use_sendfile(self, file, offset=0, count=None): if timeout and not selector_select(timeout): raise TimeoutError('timed out') if count: - blocksize = count - total_sent + blocksize = min(count - total_sent, blocksize) if blocksize <= 0: break try: diff --git a/Lib/ssl.py b/Lib/ssl.py index 3586d3adf9e..983c2db6361 100644 --- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -969,71 +969,67 @@ def _create(cls, sock, server_side=False, do_handshake_on_connect=True, if context.check_hostname and not server_hostname: raise ValueError("check_hostname requires server_hostname") + sock_timeout = sock.gettimeout() kwargs = dict( family=sock.family, type=sock.type, proto=sock.proto, fileno=sock.fileno() ) self = cls.__new__(cls, **kwargs) super(SSLSocket, self).__init__(**kwargs) - sock_timeout = sock.gettimeout() sock.detach() - - self._context = context - self._session = session - self._closed = False - self._sslobj = None - self.server_side = server_side - self.server_hostname = context._encode_hostname(server_hostname) - self.do_handshake_on_connect = do_handshake_on_connect - self.suppress_ragged_eofs = suppress_ragged_eofs - - # See if we are connected + # Now SSLSocket is responsible for closing the file descriptor. try: - self.getpeername() - except OSError as e: - if e.errno != errno.ENOTCONN: - raise - connected = False - blocking = self.getblocking() - self.setblocking(False) + self._context = context + self._session = session + self._closed = False + self._sslobj = None + self.server_side = server_side + self.server_hostname = context._encode_hostname(server_hostname) + self.do_handshake_on_connect = do_handshake_on_connect + self.suppress_ragged_eofs = suppress_ragged_eofs + + # See if we are connected try: - # We are not connected so this is not supposed to block, but - # testing revealed otherwise on macOS and Windows so we do - # the non-blocking dance regardless. Our raise when any data - # is found means consuming the data is harmless. - notconn_pre_handshake_data = self.recv(1) + self.getpeername() except OSError as e: - # EINVAL occurs for recv(1) on non-connected on unix sockets. - if e.errno not in (errno.ENOTCONN, errno.EINVAL): + if e.errno != errno.ENOTCONN: raise - notconn_pre_handshake_data = b'' - self.setblocking(blocking) - if notconn_pre_handshake_data: - # This prevents pending data sent to the socket before it was - # closed from escaping to the caller who could otherwise - # presume it came through a successful TLS connection. - reason = "Closed before TLS handshake with data in recv buffer." - notconn_pre_handshake_data_error = SSLError(e.errno, reason) - # Add the SSLError attributes that _ssl.c always adds. - notconn_pre_handshake_data_error.reason = reason - notconn_pre_handshake_data_error.library = None - try: - self.close() - except OSError: - pass + connected = False + blocking = self.getblocking() + self.setblocking(False) try: - raise notconn_pre_handshake_data_error - finally: - # Explicitly break the reference cycle. - notconn_pre_handshake_data_error = None - else: - connected = True + # We are not connected so this is not supposed to block, but + # testing revealed otherwise on macOS and Windows so we do + # the non-blocking dance regardless. Our raise when any data + # is found means consuming the data is harmless. + notconn_pre_handshake_data = self.recv(1) + except OSError as e: + # EINVAL occurs for recv(1) on non-connected on unix sockets. + if e.errno not in (errno.ENOTCONN, errno.EINVAL): + raise + notconn_pre_handshake_data = b'' + self.setblocking(blocking) + if notconn_pre_handshake_data: + # This prevents pending data sent to the socket before it was + # closed from escaping to the caller who could otherwise + # presume it came through a successful TLS connection. + reason = "Closed before TLS handshake with data in recv buffer." + notconn_pre_handshake_data_error = SSLError(e.errno, reason) + # Add the SSLError attributes that _ssl.c always adds. + notconn_pre_handshake_data_error.reason = reason + notconn_pre_handshake_data_error.library = None + try: + raise notconn_pre_handshake_data_error + finally: + # Explicitly break the reference cycle. + notconn_pre_handshake_data_error = None + else: + connected = True - self.settimeout(sock_timeout) # Must come after setblocking() calls. - self._connected = connected - if connected: - # create the SSL object - try: + self.settimeout(sock_timeout) # Must come after setblocking() calls. + self._connected = connected + if connected: + # create the SSL object self._sslobj = self._context._wrap_socket( self, server_side, self.server_hostname, owner=self, session=self._session, @@ -1044,9 +1040,12 @@ def _create(cls, sock, server_side=False, do_handshake_on_connect=True, # non-blocking raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") self.do_handshake() - except (OSError, ValueError): + except: + try: self.close() - raise + except OSError: + pass + raise return self @property diff --git a/Lib/subprocess.py b/Lib/subprocess.py index b2e042415c6..9cb89617abe 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1940,16 +1940,21 @@ def _execute_child(self, args, executable, preexec_fn, close_fds, SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) - child_exec_never_called = (err_msg == "noexec") - if child_exec_never_called: + if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd + elif err_msg == "noexec": + err_msg = "" + err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) - raise child_exception_type(errno_num, err_msg, err_filename) + if err_filename is not None: + raise child_exception_type(errno_num, err_msg, err_filename) + else: + raise child_exception_type(errno_num, err_msg) raise child_exception_type(err_msg) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 02f5e3b66c0..3bbbcaa6211 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -331,10 +331,11 @@ def write(self, s): class _Stream: """Class that serves as an adapter between TarFile and a stream-like object. The stream-like object only - needs to have a read() or write() method and is accessed - blockwise. Use of gzip or bzip2 compression is possible. - A stream-like object could be for example: sys.stdin, - sys.stdout, a socket, a tape device etc. + needs to have a read() or write() method that works with bytes, + and the method is accessed blockwise. + Use of gzip or bzip2 compression is possible. + A stream-like object could be for example: sys.stdin.buffer, + sys.stdout.buffer, a socket, a tape device etc. _Stream is intended to be used only internally. """ @@ -2448,7 +2449,8 @@ def makedir(self, tarinfo, targetpath): # later in _extract_member(). os.mkdir(targetpath, 0o700) except FileExistsError: - pass + if not os.path.isdir(targetpath): + raise def makefile(self, tarinfo, targetpath): """Make a file called targetpath. diff --git a/Lib/test/.ruff.toml b/Lib/test/.ruff.toml index 231b0e508f5..1632900057c 100644 --- a/Lib/test/.ruff.toml +++ b/Lib/test/.ruff.toml @@ -1,7 +1,4 @@ fix = true -select = [ - "F811", # Redefinition of unused variable (useful for finding test methods with the same name) -] extend-exclude = [ # Excluded (run with the other AC files in its own separate ruff job in pre-commit) "test_clinic.py", @@ -32,3 +29,8 @@ extend-exclude = [ "test_yield_from.py", "time_hashlib.py", ] + +[lint] +select = [ + "F811", # Redefinition of unused variable (useful for finding test methods with the same name) +] diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index d52b10c2ec1..e42c7ab4bde 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -2694,9 +2694,18 @@ def test_make_pool(self): def test_terminate(self): # Simulate slow tasks which take "forever" to complete + sleep_time = support.LONG_TIMEOUT + + if self.TYPE == 'threads': + # Thread pool workers can't be forced to quit, so if the first + # task starts early enough, we will end up waiting for it. + # Sleep for a shorter time, so the test doesn't block. + sleep_time = 1 + p = self.Pool(3) - args = [support.LONG_TIMEOUT for i in range(10_000)] + args = [sleep_time for i in range(10_000)] result = p.map_async(time.sleep, args, chunksize=1) + time.sleep(0.2) # give some tasks a chance to start p.terminate() p.join() @@ -4630,6 +4639,29 @@ def test_level(self): root_logger.setLevel(root_level) logger.setLevel(level=LOG_LEVEL) + def test_filename(self): + logger = multiprocessing.get_logger() + original_level = logger.level + try: + logger.setLevel(util.DEBUG) + stream = io.StringIO() + handler = logging.StreamHandler(stream) + logging_format = '[%(levelname)s] [%(filename)s] %(message)s' + handler.setFormatter(logging.Formatter(logging_format)) + logger.addHandler(handler) + logger.info('1') + util.info('2') + logger.debug('3') + filename = os.path.basename(__file__) + log_record = stream.getvalue() + self.assertIn(f'[INFO] [{filename}] 1', log_record) + self.assertIn(f'[INFO] [{filename}] 2', log_record) + self.assertIn(f'[DEBUG] [{filename}] 3', log_record) + finally: + logger.setLevel(original_level) + logger.removeHandler(handler) + handler.close() + # class _TestLoggingProcessName(BaseTestCase): # diff --git a/Lib/test/archiver_tests.py b/Lib/test/archiver_tests.py new file mode 100644 index 00000000000..1a4bbb9e570 --- /dev/null +++ b/Lib/test/archiver_tests.py @@ -0,0 +1,155 @@ +"""Tests common to tarfile and zipfile.""" + +import os +import sys + +from test.support import os_helper + +class OverwriteTests: + + def setUp(self): + os.makedirs(self.testdir) + self.addCleanup(os_helper.rmtree, self.testdir) + + def create_file(self, path, content=b''): + with open(path, 'wb') as f: + f.write(content) + + def open(self, path): + raise NotImplementedError + + def extractall(self, ar): + raise NotImplementedError + + + def test_overwrite_file_as_file(self): + target = os.path.join(self.testdir, 'test') + self.create_file(target, b'content') + with self.open(self.ar_with_file) as ar: + self.extractall(ar) + self.assertTrue(os.path.isfile(target)) + with open(target, 'rb') as f: + self.assertEqual(f.read(), b'newcontent') + + def test_overwrite_dir_as_dir(self): + target = os.path.join(self.testdir, 'test') + os.mkdir(target) + with self.open(self.ar_with_dir) as ar: + self.extractall(ar) + self.assertTrue(os.path.isdir(target)) + + def test_overwrite_dir_as_implicit_dir(self): + target = os.path.join(self.testdir, 'test') + os.mkdir(target) + with self.open(self.ar_with_implicit_dir) as ar: + self.extractall(ar) + self.assertTrue(os.path.isdir(target)) + self.assertTrue(os.path.isfile(os.path.join(target, 'file'))) + with open(os.path.join(target, 'file'), 'rb') as f: + self.assertEqual(f.read(), b'newcontent') + + def test_overwrite_dir_as_file(self): + target = os.path.join(self.testdir, 'test') + os.mkdir(target) + with self.open(self.ar_with_file) as ar: + with self.assertRaises(PermissionError if sys.platform == 'win32' + else IsADirectoryError): + self.extractall(ar) + self.assertTrue(os.path.isdir(target)) + + def test_overwrite_file_as_dir(self): + target = os.path.join(self.testdir, 'test') + self.create_file(target, b'content') + with self.open(self.ar_with_dir) as ar: + with self.assertRaises(FileExistsError): + self.extractall(ar) + self.assertTrue(os.path.isfile(target)) + with open(target, 'rb') as f: + self.assertEqual(f.read(), b'content') + + def test_overwrite_file_as_implicit_dir(self): + target = os.path.join(self.testdir, 'test') + self.create_file(target, b'content') + with self.open(self.ar_with_implicit_dir) as ar: + with self.assertRaises(FileNotFoundError if sys.platform == 'win32' + else NotADirectoryError): + self.extractall(ar) + self.assertTrue(os.path.isfile(target)) + with open(target, 'rb') as f: + self.assertEqual(f.read(), b'content') + + @os_helper.skip_unless_symlink + def test_overwrite_file_symlink_as_file(self): + # XXX: It is potential security vulnerability. + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + self.create_file(target2, b'content') + os.symlink('test2', target) + with self.open(self.ar_with_file) as ar: + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertTrue(os.path.isfile(target2)) + with open(target2, 'rb') as f: + self.assertEqual(f.read(), b'newcontent') + + @os_helper.skip_unless_symlink + def test_overwrite_broken_file_symlink_as_file(self): + # XXX: It is potential security vulnerability. + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + os.symlink('test2', target) + with self.open(self.ar_with_file) as ar: + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertTrue(os.path.isfile(target2)) + with open(target2, 'rb') as f: + self.assertEqual(f.read(), b'newcontent') + + @os_helper.skip_unless_symlink + def test_overwrite_dir_symlink_as_dir(self): + # XXX: It is potential security vulnerability. + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + os.mkdir(target2) + os.symlink('test2', target, target_is_directory=True) + with self.open(self.ar_with_dir) as ar: + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertTrue(os.path.isdir(target2)) + + @os_helper.skip_unless_symlink + def test_overwrite_dir_symlink_as_implicit_dir(self): + # XXX: It is potential security vulnerability. + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + os.mkdir(target2) + os.symlink('test2', target, target_is_directory=True) + with self.open(self.ar_with_implicit_dir) as ar: + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertTrue(os.path.isdir(target2)) + self.assertTrue(os.path.isfile(os.path.join(target2, 'file'))) + with open(os.path.join(target2, 'file'), 'rb') as f: + self.assertEqual(f.read(), b'newcontent') + + @os_helper.skip_unless_symlink + def test_overwrite_broken_dir_symlink_as_dir(self): + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + os.symlink('test2', target, target_is_directory=True) + with self.open(self.ar_with_dir) as ar: + with self.assertRaises(FileExistsError): + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertFalse(os.path.exists(target2)) + + @os_helper.skip_unless_symlink + def test_overwrite_broken_dir_symlink_as_implicit_dir(self): + target = os.path.join(self.testdir, 'test') + target2 = os.path.join(self.testdir, 'test2') + os.symlink('test2', target, target_is_directory=True) + with self.open(self.ar_with_implicit_dir) as ar: + with self.assertRaises(FileExistsError): + self.extractall(ar) + self.assertTrue(os.path.islink(target)) + self.assertFalse(os.path.exists(target2)) diff --git a/Lib/test/clinic.test.c b/Lib/test/clinic.test.c index 04227e41a4d..b1471f75f91 100644 --- a/Lib/test/clinic.test.c +++ b/Lib/test/clinic.test.c @@ -4629,7 +4629,7 @@ Test_cls_no_params_impl(TestObj *self, PyTypeObject *cls); static PyObject * Test_cls_no_params(TestObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "cls_no_params() takes no arguments"); return NULL; } @@ -4638,7 +4638,7 @@ Test_cls_no_params(TestObj *self, PyTypeObject *cls, PyObject *const *args, Py_s static PyObject * Test_cls_no_params_impl(TestObj *self, PyTypeObject *cls) -/*[clinic end generated code: output=cc8845f22cff3dcb input=e7e2e4e344e96a11]*/ +/*[clinic end generated code: output=4d68b4652c144af3 input=e7e2e4e344e96a11]*/ /*[clinic input] diff --git a/Lib/test/libregrtest/findtests.py b/Lib/test/libregrtest/findtests.py index 78343775bc5..ee890b5b1db 100644 --- a/Lib/test/libregrtest/findtests.py +++ b/Lib/test/libregrtest/findtests.py @@ -19,6 +19,7 @@ SPLITTESTDIRS: set[TestName] = { "test_asyncio", "test_concurrent_futures", + "test_doctests", "test_future_stmt", "test_gdb", "test_inspect", diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 5d5df1658c4..5b9bceceba1 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -1825,6 +1825,14 @@ def test_unicode_high_plane(self): t2 = self.loads(p) self.assert_is_copy(t, t2) + def test_unicode_memoization(self): + # Repeated str is re-used (even when escapes added). + for proto in protocols: + for s in '', 'xyz', 'xyz\n', 'x\\yz', 'x\xa1yz\r': + p = self.dumps((s, s), proto) + s1, s2 = self.loads(p) + self.assertIs(s1, s2) + def test_bytes(self): for proto in protocols: for s in b'', b'xyz', b'xyz'*100: diff --git a/Lib/test/pydocfodder.py b/Lib/test/pydocfodder.py index d0750e5a43c..a3ef2231243 100644 --- a/Lib/test/pydocfodder.py +++ b/Lib/test/pydocfodder.py @@ -2,8 +2,8 @@ import types -class A_new: - "A new-style class." +class A: + "A class." def A_method(self): "Method defined in A." @@ -41,8 +41,8 @@ def _delx(self): A_int_alias = int -class B_new(A_new): - "A new-style class, derived from A_new." +class B(A): + "A class, derived from A." def AB_method(self): "Method defined in A and B." @@ -61,8 +61,8 @@ def BD_method(self): def BCD_method(self): "Method defined in B, C and D." -class C_new(A_new): - "A new-style class, derived from A_new." +class C(A): + "A class, derived from A." def AC_method(self): "Method defined in A and C." @@ -81,8 +81,8 @@ def C_method(self): def CD_method(self): "Method defined in C and D." -class D_new(B_new, C_new): - """A new-style class, derived from B_new and C_new. +class D(B, C): + """A class, derived from B and C. """ def AD_method(self): diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 4f3ebb12ed9..74ebb5e5b8a 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -864,26 +864,36 @@ def collect_subprocess(info_add): def collect_windows(info_add): - try: - import ctypes - except ImportError: - return - - if not hasattr(ctypes, 'WinDLL'): + if sys.platform != "win32": + # Code specific to Windows return - ntdll = ctypes.WinDLL('ntdll') - BOOLEAN = ctypes.c_ubyte - + # windows.RtlAreLongPathsEnabled: RtlAreLongPathsEnabled() + # windows.is_admin: IsUserAnAdmin() try: - RtlAreLongPathsEnabled = ntdll.RtlAreLongPathsEnabled - except AttributeError: - res = '' + import ctypes + if not hasattr(ctypes, 'WinDLL'): + raise ImportError + except ImportError: + pass else: - RtlAreLongPathsEnabled.restype = BOOLEAN - RtlAreLongPathsEnabled.argtypes = () - res = bool(RtlAreLongPathsEnabled()) - info_add('windows.RtlAreLongPathsEnabled', res) + ntdll = ctypes.WinDLL('ntdll') + BOOLEAN = ctypes.c_ubyte + try: + RtlAreLongPathsEnabled = ntdll.RtlAreLongPathsEnabled + except AttributeError: + res = '' + else: + RtlAreLongPathsEnabled.restype = BOOLEAN + RtlAreLongPathsEnabled.argtypes = () + res = bool(RtlAreLongPathsEnabled()) + info_add('windows.RtlAreLongPathsEnabled', res) + + shell32 = ctypes.windll.shell32 + IsUserAnAdmin = shell32.IsUserAnAdmin + IsUserAnAdmin.restype = BOOLEAN + IsUserAnAdmin.argtypes = () + info_add('windows.is_admin', IsUserAnAdmin()) try: import _winapi @@ -892,6 +902,7 @@ def collect_windows(info_add): except (ImportError, AttributeError): pass + # windows.version_caption: "wmic os get Caption,Version /value" command import subprocess try: # When wmic.exe output is redirected to a pipe, @@ -918,12 +929,15 @@ def collect_windows(info_add): if line: info_add('windows.version', line) + # windows.ver: "ver" command try: proc = subprocess.Popen(["ver"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) output = proc.communicate()[0] + if proc.returncode == 0xc0000142: + return if proc.returncode: output = "" except OSError: @@ -934,6 +948,22 @@ def collect_windows(info_add): if line: info_add('windows.ver', line) + # windows.developer_mode: get AllowDevelopmentWithoutDevLicense registry + import winreg + try: + key = winreg.OpenKey( + winreg.HKEY_LOCAL_MACHINE, + r"SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock") + subkey = "AllowDevelopmentWithoutDevLicense" + try: + value, value_type = winreg.QueryValueEx(key, subkey) + finally: + winreg.CloseKey(key) + except OSError: + pass + else: + info_add('windows.developer_mode', "enabled" if value else "disabled") + def collect_fips(info_add): try: diff --git a/Lib/test/shadowed_super.py b/Lib/test/shadowed_super.py deleted file mode 100644 index 2a62f667e93..00000000000 --- a/Lib/test/shadowed_super.py +++ /dev/null @@ -1,7 +0,0 @@ -class super: - msg = "truly super" - - -class C: - def method(self): - return super().msg diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index d2b15bd3578..49a57694475 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -2186,7 +2186,9 @@ def _findwheel(pkgname): If set, the wheels are searched for in WHEEL_PKG_DIR (see ensurepip). Otherwise, they are searched for in the test directory. """ - wheel_dir = sysconfig.get_config_var('WHEEL_PKG_DIR') or TEST_HOME_DIR + wheel_dir = sysconfig.get_config_var('WHEEL_PKG_DIR') or os.path.join( + TEST_HOME_DIR, 'wheeldata', + ) filenames = os.listdir(wheel_dir) filenames = sorted(filenames, reverse=True) # approximate "newest" first for filename in filenames: diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py index 7a67d87fb9e..20f38fd36a8 100644 --- a/Lib/test/support/os_helper.py +++ b/Lib/test/support/os_helper.py @@ -247,15 +247,15 @@ def can_chmod(): global _can_chmod if _can_chmod is not None: return _can_chmod - if not hasattr(os, "chown"): + if not hasattr(os, "chmod"): _can_chmod = False return _can_chmod try: with open(TESTFN, "wb") as f: try: - os.chmod(TESTFN, 0o777) + os.chmod(TESTFN, 0o555) mode1 = os.stat(TESTFN).st_mode - os.chmod(TESTFN, 0o666) + os.chmod(TESTFN, 0o777) mode2 = os.stat(TESTFN).st_mode except OSError as e: can = False @@ -302,6 +302,10 @@ def can_dac_override(): else: _can_dac_override = True finally: + try: + os.chmod(TESTFN, 0o700) + except OSError: + pass unlink(TESTFN) return _can_dac_override diff --git a/Lib/test/support/pty_helper.py b/Lib/test/support/pty_helper.py index 11037d22516..6587fd40333 100644 --- a/Lib/test/support/pty_helper.py +++ b/Lib/test/support/pty_helper.py @@ -58,3 +58,23 @@ def terminate(proc): input = b"" # Stop writing if not input: sel.modify(master, selectors.EVENT_READ) + + +###################################################################### +## Fake stdin (for testing interactive debugging) +###################################################################### + +class FakeInput: + """ + A fake input stream for pdb's interactive debugger. Whenever a + line is read, print it (to simulate the user typing it), and then + return it. The set of lines to return is specified in the + constructor; they should not have trailing newlines. + """ + def __init__(self, lines): + self.lines = lines + + def readline(self): + line = self.lines.pop(0) + print(line) + return line + '\n' diff --git a/Lib/test/smtpd.py b/Lib/test/support/smtpd.py similarity index 100% rename from Lib/test/smtpd.py rename to Lib/test/support/smtpd.py diff --git a/Lib/test/test_abstract_numbers.py b/Lib/test/test_abstract_numbers.py index 2e06f0d16fd..72232b670cd 100644 --- a/Lib/test/test_abstract_numbers.py +++ b/Lib/test/test_abstract_numbers.py @@ -1,14 +1,34 @@ """Unit tests for numbers.py.""" +import abc import math import operator import unittest -from numbers import Complex, Real, Rational, Integral +from numbers import Complex, Real, Rational, Integral, Number + + +def concretize(cls): + def not_implemented(*args, **kwargs): + raise NotImplementedError() + + for name in dir(cls): + try: + value = getattr(cls, name) + if value.__isabstractmethod__: + setattr(cls, name, not_implemented) + except AttributeError: + pass + abc.update_abstractmethods(cls) + return cls + class TestNumbers(unittest.TestCase): def test_int(self): self.assertTrue(issubclass(int, Integral)) + self.assertTrue(issubclass(int, Rational)) + self.assertTrue(issubclass(int, Real)) self.assertTrue(issubclass(int, Complex)) + self.assertTrue(issubclass(int, Number)) self.assertEqual(7, int(7).real) self.assertEqual(0, int(7).imag) @@ -18,8 +38,11 @@ def test_int(self): self.assertEqual(1, int(7).denominator) def test_float(self): + self.assertFalse(issubclass(float, Integral)) self.assertFalse(issubclass(float, Rational)) self.assertTrue(issubclass(float, Real)) + self.assertTrue(issubclass(float, Complex)) + self.assertTrue(issubclass(float, Number)) self.assertEqual(7.3, float(7.3).real) self.assertEqual(0, float(7.3).imag) @@ -27,8 +50,11 @@ def test_float(self): self.assertEqual(-7.3, float(-7.3).conjugate()) def test_complex(self): + self.assertFalse(issubclass(complex, Integral)) + self.assertFalse(issubclass(complex, Rational)) self.assertFalse(issubclass(complex, Real)) self.assertTrue(issubclass(complex, Complex)) + self.assertTrue(issubclass(complex, Number)) c1, c2 = complex(3, 2), complex(4,1) # XXX: This is not ideal, but see the comment in math_trunc(). @@ -40,5 +66,135 @@ def test_complex(self): self.assertRaises(TypeError, int, c1) +class TestNumbersDefaultMethods(unittest.TestCase): + def test_complex(self): + @concretize + class MyComplex(Complex): + def __init__(self, real, imag): + self.r = real + self.i = imag + + @property + def real(self): + return self.r + + @property + def imag(self): + return self.i + + def __add__(self, other): + if isinstance(other, Complex): + return MyComplex(self.imag + other.imag, + self.real + other.real) + raise NotImplementedError + + def __neg__(self): + return MyComplex(-self.real, -self.imag) + + def __eq__(self, other): + if isinstance(other, Complex): + return self.imag == other.imag and self.real == other.real + if isinstance(other, Number): + return self.imag == 0 and self.real == other.real + + # test __bool__ + self.assertTrue(bool(MyComplex(1, 1))) + self.assertTrue(bool(MyComplex(0, 1))) + self.assertTrue(bool(MyComplex(1, 0))) + self.assertFalse(bool(MyComplex(0, 0))) + + # test __sub__ + self.assertEqual(MyComplex(2, 3) - complex(1, 2), MyComplex(1, 1)) + + # test __rsub__ + self.assertEqual(complex(2, 3) - MyComplex(1, 2), MyComplex(1, 1)) + + def test_real(self): + @concretize + class MyReal(Real): + def __init__(self, n): + self.n = n + + def __pos__(self): + return self.n + + def __float__(self): + return float(self.n) + + def __floordiv__(self, other): + return self.n // other + + def __rfloordiv__(self, other): + return other // self.n + + def __mod__(self, other): + return self.n % other + + def __rmod__(self, other): + return other % self.n + + # test __divmod__ + self.assertEqual(divmod(MyReal(3), 2), (1, 1)) + + # test __rdivmod__ + self.assertEqual(divmod(3, MyReal(2)), (1, 1)) + + # test __complex__ + self.assertEqual(complex(MyReal(1)), 1+0j) + + # test real + self.assertEqual(MyReal(3).real, 3) + + # test imag + self.assertEqual(MyReal(3).imag, 0) + + # test conjugate + self.assertEqual(MyReal(123).conjugate(), 123) + + + def test_rational(self): + @concretize + class MyRational(Rational): + def __init__(self, numerator, denominator): + self.n = numerator + self.d = denominator + + @property + def numerator(self): + return self.n + + @property + def denominator(self): + return self.d + + # test__float__ + self.assertEqual(float(MyRational(5, 2)), 2.5) + + + def test_integral(self): + @concretize + class MyIntegral(Integral): + def __init__(self, n): + self.n = n + + def __pos__(self): + return self.n + + def __int__(self): + return self.n + + # test __index__ + self.assertEqual(operator.index(MyIntegral(123)), 123) + + # test __float__ + self.assertEqual(float(MyIntegral(123)), 123.0) + + # test numerator + self.assertEqual(MyIntegral(123).numerator, 123) + + # test denominator + self.assertEqual(MyIntegral(123).denominator, 1) + + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index 3a62a16cee3..88cc62a4cd3 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -5332,6 +5332,22 @@ def test_zero_or_more_optional(self): args = parser.parse_args([]) self.assertEqual(NS(x=[]), args) + def test_double_dash(self): + parser = argparse.ArgumentParser() + parser.add_argument('-f', '--foo', nargs='*') + parser.add_argument('bar', nargs='*') + + args = parser.parse_args(['--foo=--']) + self.assertEqual(NS(foo=['--'], bar=[]), args) + args = parser.parse_args(['--foo', '--']) + self.assertEqual(NS(foo=[], bar=[]), args) + args = parser.parse_args(['-f--']) + self.assertEqual(NS(foo=['--'], bar=[]), args) + args = parser.parse_args(['-f', '--']) + self.assertEqual(NS(foo=[], bar=[]), args) + args = parser.parse_args(['--foo', 'a', 'b', '--', 'c', 'd']) + self.assertEqual(NS(foo=['a', 'b'], bar=['c', 'd']), args) + # =========================== # parse_intermixed_args tests diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index abcb6f55c4b..85c8152d492 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -1195,7 +1195,7 @@ def test_create_datagram_endpoint_wrong_sock(self): with sock: coro = self.loop.create_datagram_endpoint(MyProto, sock=sock) with self.assertRaisesRegex(ValueError, - 'A UDP Socket was expected'): + 'A datagram socket was expected'): self.loop.run_until_complete(coro) def test_create_connection_no_host_port_sock(self): diff --git a/Lib/test/test_asyncio/test_runners.py b/Lib/test/test_asyncio/test_runners.py index 0a1ad070c0c..2e65e444e25 100644 --- a/Lib/test/test_asyncio/test_runners.py +++ b/Lib/test/test_asyncio/test_runners.py @@ -482,6 +482,24 @@ async def coro(): self.assertEqual(1, policy.set_event_loop.call_count) runner.close() + def test_no_repr_is_call_on_the_task_result(self): + # See https://github.com/python/cpython/issues/112559. + class MyResult: + def __init__(self): + self.repr_count = 0 + def __repr__(self): + self.repr_count += 1 + return super().__repr__() + + async def coro(): + return MyResult() + + + with asyncio.Runner() as runner: + result = runner.run(coro()) + + self.assertEqual(0, result.repr_count) + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_asyncio/test_ssl.py b/Lib/test/test_asyncio/test_ssl.py index e9cc735613f..e072ede29ee 100644 --- a/Lib/test/test_asyncio/test_ssl.py +++ b/Lib/test/test_asyncio/test_ssl.py @@ -1,3 +1,7 @@ +# Contains code from https://github.com/MagicStack/uvloop/tree/v0.16.0 +# SPDX-License-Identifier: PSF-2.0 AND (MIT OR Apache-2.0) +# SPDX-FileCopyrightText: Copyright (c) 2015-2021 MagicStack Inc. http://magic.io + import asyncio import contextlib import gc diff --git a/Lib/test/test_asyncio/test_sslproto.py b/Lib/test/test_asyncio/test_sslproto.py index 37d01533976..f5f0afeab51 100644 --- a/Lib/test/test_asyncio/test_sslproto.py +++ b/Lib/test/test_asyncio/test_sslproto.py @@ -47,6 +47,7 @@ def connection_made(self, ssl_proto, *, do_handshake=None): sslobj = mock.Mock() # emulate reading decompressed data sslobj.read.side_effect = ssl.SSLWantReadError + sslobj.write.side_effect = ssl.SSLWantReadError if do_handshake is not None: sslobj.do_handshake = do_handshake ssl_proto._sslobj = sslobj @@ -120,7 +121,19 @@ def test_close_during_handshake(self): test_utils.run_briefly(self.loop) ssl_proto._app_transport.close() - self.assertTrue(transport.abort.called) + self.assertTrue(transport._force_close.called) + + def test_close_during_ssl_over_ssl(self): + # gh-113214: passing exceptions from the inner wrapped SSL protocol to the + # shim transport provided by the outer SSL protocol should not raise + # attribute errors + outer = self.ssl_protocol(proto=self.ssl_protocol()) + self.connection_made(outer) + # Closing the outer app transport should not raise an exception + messages = [] + self.loop.set_exception_handler(lambda loop, ctx: messages.append(ctx)) + outer._app_transport.close() + self.assertEqual(messages, []) def test_get_extra_info_on_closed_connection(self): waiter = self.loop.create_future() diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py index b408cd1f7da..3c8cc5f3649 100644 --- a/Lib/test/test_asyncio/test_streams.py +++ b/Lib/test/test_asyncio/test_streams.py @@ -1129,7 +1129,7 @@ async def inner(httpd): self.assertEqual(messages, []) - def test_unhandled_exceptions(self) -> None: + def _basetest_unhandled_exceptions(self, handle_echo): port = socket_helper.find_unused_port() messages = [] @@ -1143,9 +1143,6 @@ async def client(): await wr.wait_closed() async def main(): - async def handle_echo(reader, writer): - raise Exception('test') - server = await asyncio.start_server( handle_echo, 'localhost', port) await server.start_serving() @@ -1154,11 +1151,20 @@ async def handle_echo(reader, writer): await server.wait_closed() self.loop.run_until_complete(main()) + return messages + def test_unhandled_exception(self): + async def handle_echo(reader, writer): + raise Exception('test') + messages = self._basetest_unhandled_exceptions(handle_echo) self.assertEqual(messages[0]['message'], - 'Unhandled exception in client_connected_cb') - # Break explicitly reference cycle - messages = None + 'Unhandled exception in client_connected_cb') + + def test_unhandled_cancel(self): + async def handle_echo(reader, writer): + asyncio.current_task().cancel() + messages = self._basetest_unhandled_exceptions(handle_echo) + self.assertEqual(messages, []) if __name__ == '__main__': diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 179c8cb8cc1..859d2932c33 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -975,8 +975,13 @@ async def in_thread(): async def main(): # asyncio.Runner did not call asyncio.set_event_loop() - with self.assertRaises(RuntimeError): - asyncio.get_event_loop_policy().get_event_loop() + with warnings.catch_warnings(): + warnings.simplefilter('error', DeprecationWarning) + # get_event_loop() raises DeprecationWarning if + # set_event_loop() was never called and RuntimeError if + # it was called at least once. + with self.assertRaises((RuntimeError, DeprecationWarning)): + asyncio.get_event_loop_policy().get_event_loop() return await asyncio.to_thread(asyncio.run, in_thread()) with self.assertWarns(DeprecationWarning): asyncio.set_child_watcher(asyncio.PidfdChildWatcher()) diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py index fa03fa1d61c..f6171d3ed4e 100644 --- a/Lib/test/test_base64.py +++ b/Lib/test/test_base64.py @@ -586,6 +586,7 @@ def test_a85decode(self): eq(base64.a85decode(b'y+', b"www.python.org") @@ -689,6 +690,8 @@ def test_a85decode_errors(self): self.assertRaises(ValueError, base64.a85decode, b's8W', adobe=False) self.assertRaises(ValueError, base64.a85decode, b's8W-', adobe=False) self.assertRaises(ValueError, base64.a85decode, b's8W-"', adobe=False) + self.assertRaises(ValueError, base64.a85decode, b'aaaay', + foldspaces=True) def test_b85decode_errors(self): illegal = list(range(33)) + \ diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index de83b523f98..4d03c46382e 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -604,8 +604,8 @@ def __dir__(self): def test___ne__(self): self.assertFalse(None.__ne__(None)) - self.assertTrue(None.__ne__(0)) - self.assertTrue(None.__ne__("abc")) + self.assertIs(None.__ne__(0), NotImplemented) + self.assertIs(None.__ne__("abc"), NotImplemented) def test_divmod(self): self.assertEqual(divmod(12, 7), (1, 5)) @@ -812,6 +812,32 @@ class customdict(dict): # this one should not do anything fancy self.assertRaisesRegex(NameError, "name 'superglobal' is not defined", exec, code, {'__builtins__': customdict()}) + def test_eval_builtins_mapping(self): + code = compile("superglobal", "test", "eval") + # works correctly + ns = {'__builtins__': types.MappingProxyType({'superglobal': 1})} + self.assertEqual(eval(code, ns), 1) + # custom builtins mapping is missing key + ns = {'__builtins__': types.MappingProxyType({})} + self.assertRaisesRegex(NameError, "name 'superglobal' is not defined", + eval, code, ns) + + def test_exec_builtins_mapping_import(self): + code = compile("import foo.bar", "test", "exec") + ns = {'__builtins__': types.MappingProxyType({})} + self.assertRaisesRegex(ImportError, "__import__ not found", exec, code, ns) + ns = {'__builtins__': types.MappingProxyType({'__import__': lambda *args: args})} + exec(code, ns) + self.assertEqual(ns['foo'], ('foo.bar', ns, ns, None, 0)) + + def test_eval_builtins_mapping_reduce(self): + # list_iterator.__reduce__() calls _PyEval_GetBuiltin("iter") + code = compile("x.__reduce__()", "test", "eval") + ns = {'__builtins__': types.MappingProxyType({}), 'x': iter([1, 2])} + self.assertRaisesRegex(AttributeError, "iter", eval, code, ns) + ns = {'__builtins__': types.MappingProxyType({'iter': iter}), 'x': iter([1, 2])} + self.assertEqual(eval(code, ns), (iter, ([1, 2],), 0)) + def test_exec_redirected(self): savestdout = sys.stdout sys.stdout = None # Whatever that cannot flush() diff --git a/Lib/test/test_c_locale_coercion.py b/Lib/test/test_c_locale_coercion.py index 71f934756e2..7334a325ba2 100644 --- a/Lib/test/test_c_locale_coercion.py +++ b/Lib/test/test_c_locale_coercion.py @@ -112,12 +112,16 @@ class EncodingDetails(_EncodingDetails): ]) @classmethod - def get_expected_details(cls, coercion_expected, fs_encoding, stream_encoding, env_vars): + def get_expected_details(cls, coercion_expected, fs_encoding, stream_encoding, stream_errors, env_vars): """Returns expected child process details for a given encoding""" _stream = stream_encoding + ":{}" - # stdin and stdout should use surrogateescape either because the - # coercion triggered, or because the C locale was detected - stream_info = 2*[_stream.format("surrogateescape")] + if stream_errors is None: + # stdin and stdout should use surrogateescape either because the + # coercion triggered, or because the C locale was detected + stream_errors = "surrogateescape" + + stream_info = [_stream.format(stream_errors)] * 2 + # stderr should always use backslashreplace stream_info.append(_stream.format("backslashreplace")) expected_lang = env_vars.get("LANG", "not set") @@ -210,6 +214,7 @@ def _check_child_encoding_details(self, env_vars, expected_fs_encoding, expected_stream_encoding, + expected_stream_errors, expected_warnings, coercion_expected): """Check the C locale handling for the given process environment @@ -225,6 +230,7 @@ def _check_child_encoding_details(self, coercion_expected, expected_fs_encoding, expected_stream_encoding, + expected_stream_errors, env_vars ) self.assertEqual(encoding_details, expected_details) @@ -257,6 +263,7 @@ def test_external_target_locale_configuration(self): "LC_CTYPE": "", "LC_ALL": "", "PYTHONCOERCECLOCALE": "", + "PYTHONIOENCODING": "", } for env_var in ("LANG", "LC_CTYPE"): for locale_to_set in AVAILABLE_TARGETS: @@ -273,10 +280,43 @@ def test_external_target_locale_configuration(self): self._check_child_encoding_details(var_dict, expected_fs_encoding, expected_stream_encoding, + expected_stream_errors=None, expected_warnings=None, coercion_expected=False) + def test_with_ioencoding(self): + # Explicitly setting a target locale should give the same behaviour as + # is seen when implicitly coercing to that target locale + self.maxDiff = None + + expected_fs_encoding = "utf-8" + expected_stream_encoding = "utf-8" + base_var_dict = { + "LANG": "", + "LC_CTYPE": "", + "LC_ALL": "", + "PYTHONCOERCECLOCALE": "", + "PYTHONIOENCODING": "UTF-8", + } + for env_var in ("LANG", "LC_CTYPE"): + for locale_to_set in AVAILABLE_TARGETS: + # XXX (ncoghlan): LANG=UTF-8 doesn't appear to work as + # expected, so skip that combination for now + # See https://bugs.python.org/issue30672 for discussion + if env_var == "LANG" and locale_to_set == "UTF-8": + continue + + with self.subTest(env_var=env_var, + configured_locale=locale_to_set): + var_dict = base_var_dict.copy() + var_dict[env_var] = locale_to_set + self._check_child_encoding_details(var_dict, + expected_fs_encoding, + expected_stream_encoding, + expected_stream_errors="strict", + expected_warnings=None, + coercion_expected=False) @support.cpython_only @unittest.skipUnless(sysconfig.get_config_var("PY_COERCE_C_LOCALE"), @@ -316,6 +356,7 @@ def _check_c_locale_coercion(self, "LC_CTYPE": "", "LC_ALL": "", "PYTHONCOERCECLOCALE": "", + "PYTHONIOENCODING": "", } base_var_dict.update(extra_vars) if coerce_c_locale is not None: @@ -340,6 +381,7 @@ def _check_c_locale_coercion(self, self._check_child_encoding_details(base_var_dict, fs_encoding, stream_encoding, + None, _expected_warnings, _coercion_expected) @@ -348,13 +390,15 @@ def _check_c_locale_coercion(self, for env_var in ("LANG", "LC_CTYPE"): with self.subTest(env_var=env_var, nominal_locale=locale_to_set, - PYTHONCOERCECLOCALE=coerce_c_locale): + PYTHONCOERCECLOCALE=coerce_c_locale, + PYTHONIOENCODING=""): var_dict = base_var_dict.copy() var_dict[env_var] = locale_to_set # Check behaviour on successful coercion self._check_child_encoding_details(var_dict, fs_encoding, stream_encoding, + None, expected_warnings, coercion_expected) diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py index 96365cb4bf7..2594be76797 100644 --- a/Lib/test/test_capi/test_misc.py +++ b/Lib/test/test_capi/test_misc.py @@ -462,6 +462,8 @@ def __del__(self): del L self.assertEqual(PyList.num, 0) + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_heap_ctype_doc_and_text_signature(self): self.assertEqual(_testcapi.HeapDocCType.__doc__, "somedoc") self.assertEqual(_testcapi.HeapDocCType.__text_signature__, "(arg1, arg2)") diff --git a/Lib/test/test_capi/test_structmembers.py b/Lib/test/test_capi/test_structmembers.py index 2cf46b20347..a294c3b13a5 100644 --- a/Lib/test/test_capi/test_structmembers.py +++ b/Lib/test/test_capi/test_structmembers.py @@ -14,6 +14,13 @@ PY_SSIZE_T_MAX, PY_SSIZE_T_MIN, ) + +class Index: + def __init__(self, value): + self.value = value + def __index__(self): + return self.value + # There are two classes: one using and another using # `Py_`-prefixed API. They should behave the same in Python @@ -38,75 +45,115 @@ class ReadWriteTests: def setUp(self): self.ts = _make_test_object(self.cls) + def _test_write(self, name, value, expected=None): + if expected is None: + expected = value + ts = self.ts + setattr(ts, name, value) + self.assertEqual(getattr(ts, name), expected) + + def _test_warn(self, name, value, expected=None): + ts = self.ts + self.assertWarns(RuntimeWarning, setattr, ts, name, value) + if expected is not None: + self.assertEqual(getattr(ts, name), expected) + + def _test_overflow(self, name, value): + ts = self.ts + self.assertRaises(OverflowError, setattr, ts, name, value) + + def _test_int_range(self, name, minval, maxval, *, hardlimit=None, + indexlimit=None): + if hardlimit is None: + hardlimit = (minval, maxval) + ts = self.ts + self._test_write(name, minval) + self._test_write(name, maxval) + hardminval, hardmaxval = hardlimit + self._test_overflow(name, hardminval-1) + self._test_overflow(name, hardmaxval+1) + self._test_overflow(name, 2**1000) + self._test_overflow(name, -2**1000) + if hardminval < minval: + self._test_warn(name, hardminval) + self._test_warn(name, minval-1, maxval) + if maxval < hardmaxval: + self._test_warn(name, maxval+1, minval) + self._test_warn(name, hardmaxval) + + if indexlimit is None: + indexlimit = hardlimit + if not indexlimit: + self.assertRaises(TypeError, setattr, ts, name, Index(minval)) + self.assertRaises(TypeError, setattr, ts, name, Index(maxval)) + else: + hardminindexval, hardmaxindexval = indexlimit + self._test_write(name, Index(minval), minval) + if minval < hardminindexval: + self._test_write(name, Index(hardminindexval), hardminindexval) + if maxval < hardmaxindexval: + self._test_write(name, Index(maxval), maxval) + else: + self._test_write(name, Index(hardmaxindexval), hardmaxindexval) + self._test_overflow(name, Index(hardminindexval-1)) + if name in ('T_UINT', 'T_ULONG'): + self.assertRaises(TypeError, setattr, self.ts, name, + Index(hardmaxindexval+1)) + self.assertRaises(TypeError, setattr, self.ts, name, + Index(2**1000)) + else: + self._test_overflow(name, Index(hardmaxindexval+1)) + self._test_overflow(name, Index(2**1000)) + self._test_overflow(name, Index(-2**1000)) + if hardminindexval < minval and name != 'T_ULONGLONG': + self._test_warn(name, Index(hardminindexval)) + self._test_warn(name, Index(minval-1)) + if maxval < hardmaxindexval: + self._test_warn(name, Index(maxval+1)) + self._test_warn(name, Index(hardmaxindexval)) + def test_bool(self): ts = self.ts ts.T_BOOL = True - self.assertEqual(ts.T_BOOL, True) + self.assertIs(ts.T_BOOL, True) ts.T_BOOL = False - self.assertEqual(ts.T_BOOL, False) + self.assertIs(ts.T_BOOL, False) self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 1) + self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 0) + self.assertRaises(TypeError, setattr, ts, 'T_BOOL', None) def test_byte(self): - ts = self.ts - ts.T_BYTE = CHAR_MAX - self.assertEqual(ts.T_BYTE, CHAR_MAX) - ts.T_BYTE = CHAR_MIN - self.assertEqual(ts.T_BYTE, CHAR_MIN) - ts.T_UBYTE = UCHAR_MAX - self.assertEqual(ts.T_UBYTE, UCHAR_MAX) + self._test_int_range('T_BYTE', CHAR_MIN, CHAR_MAX, + hardlimit=(LONG_MIN, LONG_MAX)) + self._test_int_range('T_UBYTE', 0, UCHAR_MAX, + hardlimit=(LONG_MIN, LONG_MAX)) def test_short(self): - ts = self.ts - ts.T_SHORT = SHRT_MAX - self.assertEqual(ts.T_SHORT, SHRT_MAX) - ts.T_SHORT = SHRT_MIN - self.assertEqual(ts.T_SHORT, SHRT_MIN) - ts.T_USHORT = USHRT_MAX - self.assertEqual(ts.T_USHORT, USHRT_MAX) + self._test_int_range('T_SHORT', SHRT_MIN, SHRT_MAX, + hardlimit=(LONG_MIN, LONG_MAX)) + self._test_int_range('T_USHORT', 0, USHRT_MAX, + hardlimit=(LONG_MIN, LONG_MAX)) def test_int(self): - ts = self.ts - ts.T_INT = INT_MAX - self.assertEqual(ts.T_INT, INT_MAX) - ts.T_INT = INT_MIN - self.assertEqual(ts.T_INT, INT_MIN) - ts.T_UINT = UINT_MAX - self.assertEqual(ts.T_UINT, UINT_MAX) + self._test_int_range('T_INT', INT_MIN, INT_MAX, + hardlimit=(LONG_MIN, LONG_MAX)) + self._test_int_range('T_UINT', 0, UINT_MAX, + hardlimit=(LONG_MIN, ULONG_MAX), + indexlimit=(LONG_MIN, LONG_MAX)) def test_long(self): - ts = self.ts - ts.T_LONG = LONG_MAX - self.assertEqual(ts.T_LONG, LONG_MAX) - ts.T_LONG = LONG_MIN - self.assertEqual(ts.T_LONG, LONG_MIN) - ts.T_ULONG = ULONG_MAX - self.assertEqual(ts.T_ULONG, ULONG_MAX) + self._test_int_range('T_LONG', LONG_MIN, LONG_MAX) + self._test_int_range('T_ULONG', 0, ULONG_MAX, + hardlimit=(LONG_MIN, ULONG_MAX), + indexlimit=(LONG_MIN, LONG_MAX)) def test_py_ssize_t(self): - ts = self.ts - ts.T_PYSSIZET = PY_SSIZE_T_MAX - self.assertEqual(ts.T_PYSSIZET, PY_SSIZE_T_MAX) - ts.T_PYSSIZET = PY_SSIZE_T_MIN - self.assertEqual(ts.T_PYSSIZET, PY_SSIZE_T_MIN) + self._test_int_range('T_PYSSIZET', PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, indexlimit=False) def test_longlong(self): - ts = self.ts - if not hasattr(ts, "T_LONGLONG"): - self.skipTest("long long not present") - - ts.T_LONGLONG = LLONG_MAX - self.assertEqual(ts.T_LONGLONG, LLONG_MAX) - ts.T_LONGLONG = LLONG_MIN - self.assertEqual(ts.T_LONGLONG, LLONG_MIN) - - ts.T_ULONGLONG = ULLONG_MAX - self.assertEqual(ts.T_ULONGLONG, ULLONG_MAX) - - ## make sure these will accept a plain int as well as a long - ts.T_LONGLONG = 3 - self.assertEqual(ts.T_LONGLONG, 3) - ts.T_ULONGLONG = 4 - self.assertEqual(ts.T_ULONGLONG, 4) + self._test_int_range('T_LONGLONG', LLONG_MIN, LLONG_MAX) + self._test_int_range('T_ULONGLONG', 0, ULLONG_MAX, + indexlimit=(LONG_MIN, LONG_MAX)) def test_bad_assignments(self): ts = self.ts @@ -116,10 +163,9 @@ def test_bad_assignments(self): 'T_SHORT', 'T_USHORT', 'T_INT', 'T_UINT', 'T_LONG', 'T_ULONG', + 'T_LONGLONG', 'T_ULONGLONG', 'T_PYSSIZET' ] - if hasattr(ts, 'T_LONGLONG'): - integer_attributes.extend(['T_LONGLONG', 'T_ULONGLONG']) # issue8014: this produced 'bad argument to internal function' # internal error @@ -139,46 +185,6 @@ class ReadWriteTests_OldAPI(ReadWriteTests, unittest.TestCase): class ReadWriteTests_NewAPI(ReadWriteTests, unittest.TestCase): cls = _test_structmembersType_NewAPI -class TestWarnings: - def setUp(self): - self.ts = _make_test_object(self.cls) - - def test_byte_max(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_BYTE = CHAR_MAX+1 - - def test_byte_min(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_BYTE = CHAR_MIN-1 - - def test_ubyte_max(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_UBYTE = UCHAR_MAX+1 - - def test_short_max(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_SHORT = SHRT_MAX+1 - - def test_short_min(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_SHORT = SHRT_MIN-1 - - def test_ushort_max(self): - ts = self.ts - with warnings_helper.check_warnings(('', RuntimeWarning)): - ts.T_USHORT = USHRT_MAX+1 - -class TestWarnings_OldAPI(TestWarnings, unittest.TestCase): - cls = _test_structmembersType_OldAPI - -class TestWarnings_NewAPI(TestWarnings, unittest.TestCase): - cls = _test_structmembersType_NewAPI - if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py index e60d0facd51..3cb7e4fb4a3 100644 --- a/Lib/test/test_clinic.py +++ b/Lib/test/test_clinic.py @@ -2,6 +2,7 @@ # Copyright 2012-2013 by Larry Hastings. # Licensed to the PSF under a contributor agreement. +from functools import partial from test import support, test_tools from test.support import os_helper from test.support.os_helper import TESTFN, unlink @@ -2097,6 +2098,26 @@ def test_cloned_func_with_converter_exception_message(self): func = getattr(ac_tester, name) self.assertEqual(func(), name) + def test_meth_method_no_params(self): + obj = ac_tester.TestClass() + meth = obj.meth_method_no_params + check = partial(self.assertRaisesRegex, TypeError, "no arguments") + check(meth, 1) + check(meth, a=1) + + def test_meth_method_no_params_capi(self): + from _testcapi import pyobject_vectorcall + obj = ac_tester.TestClass() + meth = obj.meth_method_no_params + pyobject_vectorcall(meth, None, None) + pyobject_vectorcall(meth, (), None) + pyobject_vectorcall(meth, (), ()) + pyobject_vectorcall(meth, None, ()) + + check = partial(self.assertRaisesRegex, TypeError, "no arguments") + check(pyobject_vectorcall, meth, (1,), None) + check(pyobject_vectorcall, meth, (1,), ("a",)) + class PermutationTests(unittest.TestCase): """Test permutation support functions.""" diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py index 2abb6c6d935..787bd1b6a79 100644 --- a/Lib/test/test_codeop.py +++ b/Lib/test/test_codeop.py @@ -223,6 +223,9 @@ def test_incomplete(self): ai("(x for x in") ai("(x for x in (") + ai('a = f"""') + ai('a = \\') + def test_invalid(self): ai = self.assertInvalid ai("a b") diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index 25c981d1511..d848bfbd46c 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -953,11 +953,12 @@ async def b(): def test_corotype_1(self): ct = types.CoroutineType - self.assertIn('into coroutine', ct.send.__doc__) - self.assertIn('inside coroutine', ct.close.__doc__) - self.assertIn('in coroutine', ct.throw.__doc__) - self.assertIn('of the coroutine', ct.__dict__['__name__'].__doc__) - self.assertIn('of the coroutine', ct.__dict__['__qualname__'].__doc__) + if not support.MISSING_C_DOCSTRINGS: + self.assertIn('into coroutine', ct.send.__doc__) + self.assertIn('inside coroutine', ct.close.__doc__) + self.assertIn('in coroutine', ct.throw.__doc__) + self.assertIn('of the coroutine', ct.__dict__['__name__'].__doc__) + self.assertIn('of the coroutine', ct.__dict__['__qualname__'].__doc__) self.assertEqual(ct.__name__, 'coroutine') async def f(): pass diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index bc9961e0831..30383698d04 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -309,13 +309,18 @@ def test_read_oddinputs(self): [b'abc'], None) def test_read_eol(self): - self._read_test(['a,b'], [['a','b']]) - self._read_test(['a,b\n'], [['a','b']]) - self._read_test(['a,b\r\n'], [['a','b']]) - self._read_test(['a,b\r'], [['a','b']]) - self.assertRaises(csv.Error, self._read_test, ['a,b\rc,d'], []) - self.assertRaises(csv.Error, self._read_test, ['a,b\nc,d'], []) - self.assertRaises(csv.Error, self._read_test, ['a,b\r\nc,d'], []) + self._read_test(['a,b', 'c,d'], [['a','b'], ['c','d']]) + self._read_test(['a,b\n', 'c,d\n'], [['a','b'], ['c','d']]) + self._read_test(['a,b\r\n', 'c,d\r\n'], [['a','b'], ['c','d']]) + self._read_test(['a,b\r', 'c,d\r'], [['a','b'], ['c','d']]) + + errmsg = "with newline=''" + with self.assertRaisesRegex(csv.Error, errmsg): + next(csv.reader(['a,b\rc,d'])) + with self.assertRaisesRegex(csv.Error, errmsg): + next(csv.reader(['a,b\nc,d'])) + with self.assertRaisesRegex(csv.Error, errmsg): + next(csv.reader(['a,b\r\nc,d'])) def test_read_eof(self): self._read_test(['a,"'], [['a', '']]) diff --git a/Lib/test/test_ctypes/test_as_parameter.py b/Lib/test/test_ctypes/test_as_parameter.py index 36fec572b16..27a5d3ac064 100644 --- a/Lib/test/test_ctypes/test_as_parameter.py +++ b/Lib/test/test_ctypes/test_as_parameter.py @@ -227,5 +227,16 @@ class AsParamPropertyWrapperTestCase(BasicWrapTestCase): #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class AsParamNestedWrapperTestCase(BasicWrapTestCase): + """Test that _as_parameter_ is evaluated recursively. + + The _as_parameter_ attribute can be another object which + defines its own _as_parameter_ attribute. + """ + + def wrap(self, param): + return AsParamWrapper(AsParamWrapper(AsParamWrapper(param))) + + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_ctypes/test_byteswap.py b/Lib/test/test_ctypes/test_byteswap.py index caefb774cc5..44d32ff27ba 100644 --- a/Lib/test/test_ctypes/test_byteswap.py +++ b/Lib/test/test_ctypes/test_byteswap.py @@ -352,5 +352,24 @@ class TestUnion(parent): self.assertEqual(s.point.x, 1) self.assertEqual(s.point.y, 2) + def test_build_struct_union_opposite_system_byteorder(self): + # gh-105102 + if sys.byteorder == "little": + _Structure = BigEndianStructure + _Union = BigEndianUnion + else: + _Structure = LittleEndianStructure + _Union = LittleEndianUnion + + class S1(_Structure): + _fields_ = [("a", c_byte), ("b", c_byte)] + + class U1(_Union): + _fields_ = [("s1", S1), ("ab", c_short)] + + class S2(_Structure): + _fields_ = [("u1", U1), ("c", c_byte)] + + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py index 1ff9d019b13..a41e94971df 100644 --- a/Lib/test/test_ctypes/test_find.py +++ b/Lib/test/test_ctypes/test_find.py @@ -122,6 +122,9 @@ def test_find_library_with_ld(self): unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None): self.assertNotEqual(find_library('c'), None) + def test_gh114257(self): + self.assertIsNone(find_library("libc")) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_ctypes/test_structures.py b/Lib/test/test_ctypes/test_structures.py index 3bffaa32286..ce2d1b370c4 100644 --- a/Lib/test/test_ctypes/test_structures.py +++ b/Lib/test/test_ctypes/test_structures.py @@ -1,4 +1,6 @@ import platform +from platform import architecture as _architecture +import struct import sys import unittest from test.test_ctypes import need_symbol @@ -7,8 +9,10 @@ c_uint8, c_uint16, c_uint32, c_short, c_ushort, c_int, c_uint, c_long, c_ulong, c_longlong, c_ulonglong, c_float, c_double) +from ctypes.util import find_library from struct import calcsize import _ctypes_test +from collections import namedtuple from test import support # The following definition is meant to be used from time to time to assist @@ -188,7 +192,6 @@ class X(Structure): self.assertEqual(sizeof(X), 10) self.assertEqual(X.b.offset, 2) - import struct longlong_size = struct.calcsize("q") longlong_align = struct.calcsize("bq") - longlong_size @@ -479,39 +482,116 @@ class X(Structure): self.assertEqual(s.first, got.first) self.assertEqual(s.second, got.second) + def _test_issue18060(self, Vector): + # The call to atan2() should succeed if the + # class fields were correctly cloned in the + # subclasses. Otherwise, it will segfault. + if sys.platform == 'win32': + libm = CDLL(find_library('msvcrt.dll')) + else: + libm = CDLL(find_library('m')) + + libm.atan2.argtypes = [Vector] + libm.atan2.restype = c_double + + arg = Vector(y=0.0, x=-1.0) + self.assertAlmostEqual(libm.atan2(arg), 3.141592653589793) + + @unittest.skipIf(_architecture() == ('64bit', 'WindowsPE'), "can't test Windows x64 build") + @unittest.skipUnless(sys.byteorder == 'little', "can't test on this platform") + def test_issue18060_a(self): + # This test case calls + # PyCStructUnionType_update_stgdict() for each + # _fields_ assignment, and PyCStgDict_clone() + # for the Mid and Vector class definitions. + class Base(Structure): + _fields_ = [('y', c_double), + ('x', c_double)] + class Mid(Base): + pass + Mid._fields_ = [] + class Vector(Mid): pass + self._test_issue18060(Vector) + + @unittest.skipIf(_architecture() == ('64bit', 'WindowsPE'), "can't test Windows x64 build") + @unittest.skipUnless(sys.byteorder == 'little', "can't test on this platform") + def test_issue18060_b(self): + # This test case calls + # PyCStructUnionType_update_stgdict() for each + # _fields_ assignment. + class Base(Structure): + _fields_ = [('y', c_double), + ('x', c_double)] + class Mid(Base): + _fields_ = [] + class Vector(Mid): + _fields_ = [] + self._test_issue18060(Vector) + + @unittest.skipIf(_architecture() == ('64bit', 'WindowsPE'), "can't test Windows x64 build") + @unittest.skipUnless(sys.byteorder == 'little', "can't test on this platform") + def test_issue18060_c(self): + # This test case calls + # PyCStructUnionType_update_stgdict() for each + # _fields_ assignment. + class Base(Structure): + _fields_ = [('y', c_double)] + class Mid(Base): + _fields_ = [] + class Vector(Mid): + _fields_ = [('x', c_double)] + self._test_issue18060(Vector) + def test_array_in_struct(self): # See bpo-22273 + # Load the shared library + dll = CDLL(_ctypes_test.__file__) + # These should mirror the structures in Modules/_ctypes/_ctypes_test.c class Test2(Structure): _fields_ = [ ('data', c_ubyte * 16), ] - class Test3(Structure): + class Test3AParent(Structure): + _fields_ = [ + ('data', c_float * 2), + ] + + class Test3A(Test3AParent): + _fields_ = [ + ('more_data', c_float * 2), + ] + + class Test3B(Structure): _fields_ = [ ('data', c_double * 2), ] - class Test3A(Structure): + class Test3C(Structure): _fields_ = [ - ('data', c_float * 2), + ("data", c_double * 4) ] - class Test3B(Test3A): + class Test3D(Structure): _fields_ = [ - ('more_data', c_float * 2), + ("data", c_double * 8) + ] + + class Test3E(Structure): + _fields_ = [ + ("data", c_double * 9) ] - # Load the shared library - dll = CDLL(_ctypes_test.__file__) + # Tests for struct Test2 s = Test2() expected = 0 for i in range(16): s.data[i] = i expected += i - func = dll._testfunc_array_in_struct1 + func = dll._testfunc_array_in_struct2 func.restype = c_int func.argtypes = (Test2,) result = func(s) @@ -520,29 +600,16 @@ class Test3B(Test3A): for i in range(16): self.assertEqual(s.data[i], i) - s = Test3() - s.data[0] = 3.14159 - s.data[1] = 2.71828 - expected = 3.14159 + 2.71828 - func = dll._testfunc_array_in_struct2 - func.restype = c_double - func.argtypes = (Test3,) - result = func(s) - self.assertEqual(result, expected) - # check the passed-in struct hasn't changed - self.assertEqual(s.data[0], 3.14159) - self.assertEqual(s.data[1], 2.71828) - - s = Test3B() + # Tests for struct Test3A + s = Test3A() s.data[0] = 3.14159 s.data[1] = 2.71828 s.more_data[0] = -3.0 s.more_data[1] = -2.0 - - expected = 3.14159 + 2.71828 - 5.0 - func = dll._testfunc_array_in_struct2a + expected = 3.14159 + 2.71828 - 3.0 - 2.0 + func = dll._testfunc_array_in_struct3A func.restype = c_double - func.argtypes = (Test3B,) + func.argtypes = (Test3A,) result = func(s) self.assertAlmostEqual(result, expected, places=6) # check the passed-in struct hasn't changed @@ -551,129 +618,60 @@ class Test3B(Test3A): self.assertAlmostEqual(s.more_data[0], -3.0, places=6) self.assertAlmostEqual(s.more_data[1], -2.0, places=6) - @unittest.skipIf( - 'ppc64le' in platform.uname().machine, - "gh-110190: currently fails on ppc64le", - ) - def test_array_in_struct_registers(self): - dll = CDLL(_ctypes_test.__file__) - - class Test3C1(Structure): - _fields_ = [ - ("data", c_double * 4) - ] - - class DataType4(Array): - _type_ = c_double - _length_ = 4 - - class Test3C2(Structure): - _fields_ = [ - ("data", DataType4) - ] - - class Test3C3(Structure): - _fields_ = [ - ("x", c_double), - ("y", c_double), - ("z", c_double), - ("t", c_double) - ] - - class Test3D1(Structure): - _fields_ = [ - ("data", c_double * 5) - ] - - class DataType5(Array): - _type_ = c_double - _length_ = 5 - - class Test3D2(Structure): - _fields_ = [ - ("data", DataType5) - ] - - class Test3D3(Structure): - _fields_ = [ - ("x", c_double), - ("y", c_double), - ("z", c_double), - ("t", c_double), - ("u", c_double) - ] - - # Tests for struct Test3C - expected = (1.0, 2.0, 3.0, 4.0) - func = dll._testfunc_array_in_struct_set_defaults_3C - func.restype = Test3C1 - result = func() - # check the default values have been set properly - self.assertEqual( - (result.data[0], - result.data[1], - result.data[2], - result.data[3]), - expected - ) - - func = dll._testfunc_array_in_struct_set_defaults_3C - func.restype = Test3C2 - result = func() - # check the default values have been set properly - self.assertEqual( - (result.data[0], - result.data[1], - result.data[2], - result.data[3]), - expected - ) - - func = dll._testfunc_array_in_struct_set_defaults_3C - func.restype = Test3C3 - result = func() - # check the default values have been set properly - self.assertEqual((result.x, result.y, result.z, result.t), expected) - - # Tests for struct Test3D - expected = (1.0, 2.0, 3.0, 4.0, 5.0) - func = dll._testfunc_array_in_struct_set_defaults_3D - func.restype = Test3D1 - result = func() - # check the default values have been set properly - self.assertEqual( - (result.data[0], - result.data[1], - result.data[2], - result.data[3], - result.data[4]), - expected - ) - - func = dll._testfunc_array_in_struct_set_defaults_3D - func.restype = Test3D2 - result = func() - # check the default values have been set properly - self.assertEqual( - (result.data[0], - result.data[1], - result.data[2], - result.data[3], - result.data[4]), - expected + # Test3B, Test3C, Test3D, Test3E have the same logic with different + # sizes hence putting them in a loop. + StructCtype = namedtuple( + "StructCtype", + ["cls", "cfunc1", "cfunc2", "items"] ) - - func = dll._testfunc_array_in_struct_set_defaults_3D - func.restype = Test3D3 - result = func() - # check the default values have been set properly - self.assertEqual( - (result.x, - result.y, - result.z, - result.t, - result.u), - expected) + structs_to_test = [ + StructCtype( + Test3B, + dll._testfunc_array_in_struct3B, + dll._testfunc_array_in_struct3B_set_defaults, + 2), + StructCtype( + Test3C, + dll._testfunc_array_in_struct3C, + dll._testfunc_array_in_struct3C_set_defaults, + 4), + StructCtype( + Test3D, + dll._testfunc_array_in_struct3D, + dll._testfunc_array_in_struct3D_set_defaults, + 8), + StructCtype( + Test3E, + dll._testfunc_array_in_struct3E, + dll._testfunc_array_in_struct3E_set_defaults, + 9), + ] + + for sut in structs_to_test: + s = sut.cls() + + # Test for cfunc1 + expected = 0 + for i in range(sut.items): + float_i = float(i) + s.data[i] = float_i + expected += float_i + func = sut.cfunc1 + func.restype = c_double + func.argtypes = (sut.cls,) + result = func(s) + self.assertEqual(result, expected) + # check the passed-in struct hasn't changed + for i in range(sut.items): + self.assertEqual(s.data[i], float(i)) + + # Test for cfunc2 + func = sut.cfunc2 + func.restype = sut.cls + result = func() + # check if the default values have been set correctly + for i in range(sut.items): + self.assertEqual(result.data[i], float(i+1)) def test_38368(self): class U(Union): diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 31bc108e771..83d10dd8579 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -8,7 +8,7 @@ from unittest.mock import MagicMock from test.support import (requires, verbose, SaveSignals, cpython_only, - check_disallow_instantiation) + check_disallow_instantiation, MISSING_C_DOCSTRINGS) from test.support.import_helper import import_module # Optionally test curses module. This currently requires that the @@ -1142,6 +1142,8 @@ def test_encoding(self): with self.assertRaises(TypeError): del stdscr.encoding + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_issue21088(self): stdscr = self.stdscr # diff --git a/Lib/test/test_doctest/__init__.py b/Lib/test/test_doctest/__init__.py new file mode 100644 index 00000000000..4b16ecc3115 --- /dev/null +++ b/Lib/test/test_doctest/__init__.py @@ -0,0 +1,5 @@ +import os +from test.support import load_package_tests + +def load_tests(*args): + return load_package_tests(os.path.dirname(__file__), *args) diff --git a/Lib/test/doctest_aliases.py b/Lib/test/test_doctest/doctest_aliases.py similarity index 100% rename from Lib/test/doctest_aliases.py rename to Lib/test/test_doctest/doctest_aliases.py diff --git a/Lib/test/doctest_lineno.py b/Lib/test/test_doctest/doctest_lineno.py similarity index 71% rename from Lib/test/doctest_lineno.py rename to Lib/test/test_doctest/doctest_lineno.py index 729a68aceaa..677c569cf71 100644 --- a/Lib/test/doctest_lineno.py +++ b/Lib/test/test_doctest/doctest_lineno.py @@ -49,5 +49,21 @@ def method_with_doctest(self): 'method_with_doctest' """ + @classmethod + def classmethod_with_doctest(cls): + """ + This has a doctest! + >>> MethodWrapper.classmethod_with_doctest.__name__ + 'classmethod_with_doctest' + """ + + @property + def property_with_doctest(self): + """ + This has a doctest! + >>> MethodWrapper.property_with_doctest.__name__ + 'property_with_doctest' + """ + # https://github.com/python/cpython/issues/99433 str_wrapper = object().__str__ diff --git a/Lib/test/sample_doctest.py b/Lib/test/test_doctest/sample_doctest.py similarity index 91% rename from Lib/test/sample_doctest.py rename to Lib/test/test_doctest/sample_doctest.py index 89eb5cb7cf1..049f737a0a4 100644 --- a/Lib/test/sample_doctest.py +++ b/Lib/test/test_doctest/sample_doctest.py @@ -32,8 +32,8 @@ def bar(): def test_silly_setup(): """ - >>> import test.test_doctest - >>> test.test_doctest.sillySetup + >>> import test.test_doctest.test_doctest + >>> test.test_doctest.test_doctest.sillySetup True """ diff --git a/Lib/test/sample_doctest_no_docstrings.py b/Lib/test/test_doctest/sample_doctest_no_docstrings.py similarity index 100% rename from Lib/test/sample_doctest_no_docstrings.py rename to Lib/test/test_doctest/sample_doctest_no_docstrings.py diff --git a/Lib/test/sample_doctest_no_doctests.py b/Lib/test/test_doctest/sample_doctest_no_doctests.py similarity index 100% rename from Lib/test/sample_doctest_no_doctests.py rename to Lib/test/test_doctest/sample_doctest_no_doctests.py diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest/test_doctest.py similarity index 94% rename from Lib/test/test_doctest.py rename to Lib/test/test_doctest/test_doctest.py index 71cb5a0dc8b..1b9811b4f8f 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest/test_doctest.py @@ -4,6 +4,7 @@ from test import support from test.support import import_helper +from test.support.pty_helper import FakeInput # used in doctests import doctest import functools import os @@ -77,6 +78,15 @@ def get(self): """ return self.val + def setter(self, val): + """ + >>> s = SampleClass(-5) + >>> s.setter(1) + >>> print(s.val) + 1 + """ + self.val = val + def a_staticmethod(v): """ >>> print(SampleClass.a_staticmethod(10)) @@ -95,7 +105,7 @@ def a_classmethod(cls, v): return v+2 a_classmethod = classmethod(a_classmethod) - a_property = property(get, doc=""" + a_property = property(get, setter, doc=""" >>> print(SampleClass(22).a_property) 22 """) @@ -148,25 +158,6 @@ def get(self): """ return self.val -###################################################################### -## Fake stdin (for testing interactive debugging) -###################################################################### - -class _FakeInput: - """ - A fake input stream for pdb's interactive debugger. Whenever a - line is read, print it (to simulate the user typing it), and then - return it. The set of lines to return is specified in the - constructor; they should not have trailing newlines. - """ - def __init__(self, lines): - self.lines = lines - - def readline(self): - line = self.lines.pop(0) - print(line) - return line+'\n' - ###################################################################### ## Test Cases ###################################################################### @@ -460,14 +451,14 @@ def basics(): r""" We'll simulate a __file__ attr that ends in pyc: - >>> import test.test_doctest - >>> old = test.test_doctest.__file__ - >>> test.test_doctest.__file__ = 'test_doctest.pyc' + >>> from test.test_doctest import test_doctest + >>> old = test_doctest.__file__ + >>> test_doctest.__file__ = 'test_doctest.pyc' >>> tests = finder.find(sample_func) >>> print(tests) # doctest: +ELLIPSIS - [] + [] The exact name depends on how test_doctest was invoked, so allow for leading path components. @@ -475,7 +466,7 @@ def basics(): r""" >>> tests[0].filename # doctest: +ELLIPSIS '...test_doctest.py' - >>> test.test_doctest.__file__ = old + >>> test_doctest.__file__ = old >>> e = tests[0].examples[0] @@ -528,6 +519,7 @@ def basics(): r""" 1 SampleClass.a_staticmethod 1 SampleClass.double 1 SampleClass.get + 3 SampleClass.setter New-style classes are also supported: @@ -567,10 +559,10 @@ def basics(): r""" ... 'c': triple}}) >>> finder = doctest.DocTestFinder() - >>> # Use module=test.test_doctest, to prevent doctest from + >>> # Use module=test_doctest, to prevent doctest from >>> # ignoring the objects since they weren't defined in m. - >>> import test.test_doctest - >>> tests = finder.find(m, module=test.test_doctest) + >>> from test.test_doctest import test_doctest + >>> tests = finder.find(m, module=test_doctest) >>> for t in tests: ... print('%2s %s' % (len(t.examples), t.name)) 1 some_module @@ -583,23 +575,38 @@ def basics(): r""" 1 some_module.SampleClass.a_staticmethod 1 some_module.SampleClass.double 1 some_module.SampleClass.get + 3 some_module.SampleClass.setter 1 some_module.__test__.c 2 some_module.__test__.d 1 some_module.sample_func +However, doctest will ignore imported objects from other modules +(without proper `module=`): + + >>> import types + >>> m = types.ModuleType('poluted_namespace') + >>> m.__dict__.update({ + ... 'sample_func': sample_func, + ... 'SampleClass': SampleClass, + ... }) + + >>> finder = doctest.DocTestFinder() + >>> finder.find(m) + [] + Duplicate Removal ~~~~~~~~~~~~~~~~~ If a single object is listed twice (under different names), then tests will only be generated for it once: - >>> from test import doctest_aliases + >>> from test.test_doctest import doctest_aliases >>> assert doctest_aliases.TwoNames.f >>> assert doctest_aliases.TwoNames.g >>> tests = excl_empty_finder.find(doctest_aliases) >>> print(len(tests)) 2 >>> print(tests[0].name) - test.doctest_aliases.TwoNames + test.test_doctest.doctest_aliases.TwoNames TwoNames.f and TwoNames.g are bound to the same object. We can't guess which will be found in doctest's traversal of @@ -624,6 +631,7 @@ def basics(): r""" 1 SampleClass.a_staticmethod 1 SampleClass.double 1 SampleClass.get + 3 SampleClass.setter By default, that excluded objects with no doctests. exclude_empty=False tells it to include (empty) tests for objects with no doctests. This feature @@ -644,26 +652,29 @@ def basics(): r""" 1 SampleClass.a_staticmethod 1 SampleClass.double 1 SampleClass.get + 3 SampleClass.setter When used with `exclude_empty=False` we are also interested in line numbers of doctests that are empty. It used to be broken for quite some time until `bpo-28249`. - >>> from test import doctest_lineno + >>> from test.test_doctest import doctest_lineno >>> tests = doctest.DocTestFinder(exclude_empty=False).find(doctest_lineno) >>> for t in tests: ... print('%5s %s' % (t.lineno, t.name)) - None test.doctest_lineno - 22 test.doctest_lineno.ClassWithDocstring - 30 test.doctest_lineno.ClassWithDoctest - None test.doctest_lineno.ClassWithoutDocstring - None test.doctest_lineno.MethodWrapper - 39 test.doctest_lineno.MethodWrapper.method_with_docstring - 45 test.doctest_lineno.MethodWrapper.method_with_doctest - None test.doctest_lineno.MethodWrapper.method_without_docstring - 4 test.doctest_lineno.func_with_docstring - 12 test.doctest_lineno.func_with_doctest - None test.doctest_lineno.func_without_docstring + None test.test_doctest.doctest_lineno + 22 test.test_doctest.doctest_lineno.ClassWithDocstring + 30 test.test_doctest.doctest_lineno.ClassWithDoctest + None test.test_doctest.doctest_lineno.ClassWithoutDocstring + None test.test_doctest.doctest_lineno.MethodWrapper + 53 test.test_doctest.doctest_lineno.MethodWrapper.classmethod_with_doctest + 39 test.test_doctest.doctest_lineno.MethodWrapper.method_with_docstring + 45 test.test_doctest.doctest_lineno.MethodWrapper.method_with_doctest + None test.test_doctest.doctest_lineno.MethodWrapper.method_without_docstring + 61 test.test_doctest.doctest_lineno.MethodWrapper.property_with_doctest + 4 test.test_doctest.doctest_lineno.func_with_docstring + 12 test.test_doctest.doctest_lineno.func_with_doctest + None test.test_doctest.doctest_lineno.func_without_docstring Turning off Recursion ~~~~~~~~~~~~~~~~~~~~~ @@ -1878,9 +1889,9 @@ def test_testsource(): r""" example code is converted to regular Python code. The surrounding words and expected output are converted to comments: - >>> import test.test_doctest - >>> name = 'test.test_doctest.sample_func' - >>> print(doctest.testsource(test.test_doctest, name)) + >>> from test.test_doctest import test_doctest + >>> name = 'test.test_doctest.test_doctest.sample_func' + >>> print(doctest.testsource(test_doctest, name)) # Blah blah # print(sample_func(22)) @@ -1890,8 +1901,8 @@ def test_testsource(): r""" # Yee ha! - >>> name = 'test.test_doctest.SampleNewStyleClass' - >>> print(doctest.testsource(test.test_doctest, name)) + >>> name = 'test.test_doctest.test_doctest.SampleNewStyleClass' + >>> print(doctest.testsource(test_doctest, name)) print('1\n2\n3') # Expected: ## 1 @@ -1899,8 +1910,8 @@ def test_testsource(): r""" ## 3 - >>> name = 'test.test_doctest.SampleClass.a_classmethod' - >>> print(doctest.testsource(test.test_doctest, name)) + >>> name = 'test.test_doctest.test_doctest.SampleClass.a_classmethod' + >>> print(doctest.testsource(test_doctest, name)) print(SampleClass.a_classmethod(10)) # Expected: ## 12 @@ -1923,7 +1934,7 @@ def test_debug(): r""" Create some fake stdin input, to feed to the debugger: >>> real_stdin = sys.stdin - >>> sys.stdin = _FakeInput(['next', 'print(x)', 'continue']) + >>> sys.stdin = FakeInput(['next', 'print(x)', 'continue']) Run the debugger on the docstring, and then restore sys.stdin. @@ -1966,7 +1977,7 @@ def test_pdb_set_trace(): captures our debugger input: >>> real_stdin = sys.stdin - >>> sys.stdin = _FakeInput([ + >>> sys.stdin = FakeInput([ ... 'print(x)', # print data defined by the example ... 'continue', # stop debugging ... '']) @@ -1993,7 +2004,7 @@ def test_pdb_set_trace(): ... ''' >>> test = parser.get_doctest(doc, globals(), "foo-bar@baz", "foo-bar@baz.py", 0) >>> real_stdin = sys.stdin - >>> sys.stdin = _FakeInput([ + >>> sys.stdin = FakeInput([ ... 'print(y)', # print data defined in the function ... 'up', # out of function ... 'print(x)', # print data defined by the example @@ -2005,7 +2016,7 @@ def test_pdb_set_trace(): ... finally: ... sys.stdin = real_stdin --Return-- - > (3)calls_set_trace()->None + > (3)calls_set_trace()->None -> import pdb; pdb.set_trace() (Pdb) print(y) 2 @@ -2030,7 +2041,7 @@ def test_pdb_set_trace(): ... ''' >>> test = parser.get_doctest(doc, globals(), "foo-bar@baz", "foo-bar@baz.py", 0) >>> real_stdin = sys.stdin - >>> sys.stdin = _FakeInput([ + >>> sys.stdin = FakeInput([ ... 'list', # list source from example 2 ... 'next', # return from g() ... 'list', # list source from example 1 @@ -2102,7 +2113,7 @@ def test_pdb_set_trace_nested(): >>> runner = doctest.DocTestRunner(verbose=False) >>> test = parser.get_doctest(doc, globals(), "foo-bar@baz", "foo-bar@baz.py", 0) >>> real_stdin = sys.stdin - >>> sys.stdin = _FakeInput([ + >>> sys.stdin = FakeInput([ ... 'print(y)', # print data defined in the function ... 'step', 'step', 'step', 'step', 'step', 'step', 'print(z)', ... 'up', 'print(x)', @@ -2116,39 +2127,39 @@ def test_pdb_set_trace_nested(): ... finally: ... sys.stdin = real_stdin ... # doctest: +REPORT_NDIFF - > (5)calls_set_trace() + > (5)calls_set_trace() -> self.f1() (Pdb) print(y) 1 (Pdb) step --Call-- - > (7)f1() + > (7)f1() -> def f1(self): (Pdb) step - > (8)f1() + > (8)f1() -> x = 1 (Pdb) step - > (9)f1() + > (9)f1() -> self.f2() (Pdb) step --Call-- - > (11)f2() + > (11)f2() -> def f2(self): (Pdb) step - > (12)f2() + > (12)f2() -> z = 1 (Pdb) step - > (13)f2() + > (13)f2() -> z = 2 (Pdb) print(z) 1 (Pdb) up - > (9)f1() + > (9)f1() -> self.f2() (Pdb) print(x) 1 (Pdb) up - > (5)calls_set_trace() + > (5)calls_set_trace() -> self.f1() (Pdb) print(y) 1 @@ -2168,39 +2179,39 @@ def test_DocTestSuite(): by passing a module object: >>> import unittest - >>> import test.sample_doctest - >>> suite = doctest.DocTestSuite(test.sample_doctest) + >>> import test.test_doctest.sample_doctest + >>> suite = doctest.DocTestSuite(test.test_doctest.sample_doctest) >>> suite.run(unittest.TestResult()) We can also supply the module by name: - >>> suite = doctest.DocTestSuite('test.sample_doctest') + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest') >>> suite.run(unittest.TestResult()) The module need not contain any doctest examples: - >>> suite = doctest.DocTestSuite('test.sample_doctest_no_doctests') + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest_no_doctests') >>> suite.run(unittest.TestResult()) The module need not contain any docstrings either: - >>> suite = doctest.DocTestSuite('test.sample_doctest_no_docstrings') + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest_no_docstrings') >>> suite.run(unittest.TestResult()) We can use the current module: - >>> suite = test.sample_doctest.test_suite() + >>> suite = test.test_doctest.sample_doctest.test_suite() >>> suite.run(unittest.TestResult()) We can also provide a DocTestFinder: >>> finder = doctest.DocTestFinder() - >>> suite = doctest.DocTestSuite('test.sample_doctest', + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', ... test_finder=finder) >>> suite.run(unittest.TestResult()) @@ -2208,7 +2219,7 @@ def test_DocTestSuite(): The DocTestFinder need not return any tests: >>> finder = doctest.DocTestFinder() - >>> suite = doctest.DocTestSuite('test.sample_doctest_no_docstrings', + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest_no_docstrings', ... test_finder=finder) >>> suite.run(unittest.TestResult()) @@ -2217,14 +2228,14 @@ def test_DocTestSuite(): used instead of the module globals. Here we'll pass an empty globals, triggering an extra error: - >>> suite = doctest.DocTestSuite('test.sample_doctest', globs={}) + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', globs={}) >>> suite.run(unittest.TestResult()) Alternatively, we can provide extra globals. Here we'll make an error go away by providing an extra global variable: - >>> suite = doctest.DocTestSuite('test.sample_doctest', + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', ... extraglobs={'y': 1}) >>> suite.run(unittest.TestResult()) @@ -2232,7 +2243,7 @@ def test_DocTestSuite(): You can pass option flags. Here we'll cause an extra error by disabling the blank-line feature: - >>> suite = doctest.DocTestSuite('test.sample_doctest', + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', ... optionflags=doctest.DONT_ACCEPT_BLANKLINE) >>> suite.run(unittest.TestResult()) @@ -2240,27 +2251,27 @@ def test_DocTestSuite(): You can supply setUp and tearDown functions: >>> def setUp(t): - ... import test.test_doctest - ... test.test_doctest.sillySetup = True + ... from test.test_doctest import test_doctest + ... test_doctest.sillySetup = True >>> def tearDown(t): - ... import test.test_doctest - ... del test.test_doctest.sillySetup + ... from test.test_doctest import test_doctest + ... del test_doctest.sillySetup Here, we installed a silly variable that the test expects: - >>> suite = doctest.DocTestSuite('test.sample_doctest', + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', ... setUp=setUp, tearDown=tearDown) >>> suite.run(unittest.TestResult()) But the tearDown restores sanity: - >>> import test.test_doctest - >>> test.test_doctest.sillySetup + >>> from test.test_doctest import test_doctest + >>> test_doctest.sillySetup Traceback (most recent call last): ... - AttributeError: module 'test.test_doctest' has no attribute 'sillySetup' + AttributeError: module 'test.test_doctest.test_doctest' has no attribute 'sillySetup' The setUp and tearDown functions are passed test objects. Here we'll use the setUp function to supply the missing variable y: @@ -2268,7 +2279,7 @@ def test_DocTestSuite(): >>> def setUp(test): ... test.globs['y'] = 1 - >>> suite = doctest.DocTestSuite('test.sample_doctest', setUp=setUp) + >>> suite = doctest.DocTestSuite('test.test_doctest.sample_doctest', setUp=setUp) >>> suite.run(unittest.TestResult()) @@ -2299,7 +2310,7 @@ def test_DocFileSuite(): >>> suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', ... 'test_doctest4.txt', - ... package='test') + ... package='test.test_doctest') >>> suite.run(unittest.TestResult()) @@ -2315,7 +2326,7 @@ def test_DocFileSuite(): ... suite = doctest.DocFileSuite('test_doctest.txt', ... 'test_doctest2.txt', ... 'test_doctest4.txt', - ... package='test') + ... package='test.test_doctest') ... suite.run(unittest.TestResult()) ... finally: ... if added_loader: @@ -2325,16 +2336,17 @@ def test_DocFileSuite(): '/' should be used as a path separator. It will be converted to a native separator at run time: - >>> suite = doctest.DocFileSuite('../test/test_doctest.txt') + >>> suite = doctest.DocFileSuite('../test_doctest/test_doctest.txt') >>> suite.run(unittest.TestResult()) If DocFileSuite is used from an interactive session, then files are resolved relative to the directory of sys.argv[0]: - >>> import types, os.path, test.test_doctest + >>> import types, os.path + >>> from test.test_doctest import test_doctest >>> save_argv = sys.argv - >>> sys.argv = [test.test_doctest.__file__] + >>> sys.argv = [test_doctest.__file__] >>> suite = doctest.DocFileSuite('test_doctest.txt', ... package=types.ModuleType('__main__')) >>> sys.argv = save_argv @@ -2344,7 +2356,7 @@ def test_DocFileSuite(): working directory): >>> # Get the absolute path of the test package. - >>> test_doctest_path = os.path.abspath(test.test_doctest.__file__) + >>> test_doctest_path = os.path.abspath(test_doctest.__file__) >>> test_pkg_path = os.path.split(test_doctest_path)[0] >>> # Use it to find the absolute path of test_doctest.txt. @@ -2384,12 +2396,12 @@ def test_DocFileSuite(): And, you can provide setUp and tearDown functions: >>> def setUp(t): - ... import test.test_doctest - ... test.test_doctest.sillySetup = True + ... from test.test_doctest import test_doctest + ... test_doctest.sillySetup = True >>> def tearDown(t): - ... import test.test_doctest - ... del test.test_doctest.sillySetup + ... from test.test_doctest import test_doctest + ... del test_doctest.sillySetup Here, we installed a silly variable that the test expects: @@ -2402,11 +2414,11 @@ def test_DocFileSuite(): But the tearDown restores sanity: - >>> import test.test_doctest - >>> test.test_doctest.sillySetup + >>> from test.test_doctest import test_doctest + >>> test_doctest.sillySetup Traceback (most recent call last): ... - AttributeError: module 'test.test_doctest' has no attribute 'sillySetup' + AttributeError: module 'test.test_doctest.test_doctest' has no attribute 'sillySetup' The setUp and tearDown functions are passed test objects. Here, we'll use a setUp function to set the favorite color in @@ -3163,8 +3175,8 @@ def test_run_doctestsuite_multiple_times(): http://bugs.python.org/issue9736 >>> import unittest - >>> import test.sample_doctest - >>> suite = doctest.DocTestSuite(test.sample_doctest) + >>> import test.test_doctest.sample_doctest + >>> suite = doctest.DocTestSuite(test.test_doctest.sample_doctest) >>> suite.run(unittest.TestResult()) >>> suite.run(unittest.TestResult()) @@ -3341,4 +3353,4 @@ def load_tests(loader, tests, pattern): if __name__ == '__main__': - unittest.main(module='test.test_doctest') + unittest.main(module='test.test_doctest.test_doctest') diff --git a/Lib/test/test_doctest.txt b/Lib/test/test_doctest/test_doctest.txt similarity index 100% rename from Lib/test/test_doctest.txt rename to Lib/test/test_doctest/test_doctest.txt diff --git a/Lib/test/test_doctest2.py b/Lib/test/test_doctest/test_doctest2.py similarity index 100% rename from Lib/test/test_doctest2.py rename to Lib/test/test_doctest/test_doctest2.py diff --git a/Lib/test/test_doctest2.txt b/Lib/test/test_doctest/test_doctest2.txt similarity index 77% rename from Lib/test/test_doctest2.txt rename to Lib/test/test_doctest/test_doctest2.txt index 2e14856c27d..76dab94a9c0 100644 --- a/Lib/test/test_doctest2.txt +++ b/Lib/test/test_doctest/test_doctest2.txt @@ -2,8 +2,8 @@ This is a sample doctest in a text file. In this example, we'll rely on some silly setup: - >>> import test.test_doctest - >>> test.test_doctest.sillySetup + >>> import test.test_doctest.test_doctest + >>> test.test_doctest.test_doctest.sillySetup True This test also has some (random) encoded (utf-8) unicode text: diff --git a/Lib/test/test_doctest3.txt b/Lib/test/test_doctest/test_doctest3.txt similarity index 100% rename from Lib/test/test_doctest3.txt rename to Lib/test/test_doctest/test_doctest3.txt diff --git a/Lib/test/test_doctest4.txt b/Lib/test/test_doctest/test_doctest4.txt similarity index 100% rename from Lib/test/test_doctest4.txt rename to Lib/test/test_doctest/test_doctest4.txt diff --git a/Lib/test/test_email/test__header_value_parser.py b/Lib/test/test_email/test__header_value_parser.py index 854f2ff009c..bdb0e55f210 100644 --- a/Lib/test/test_email/test__header_value_parser.py +++ b/Lib/test/test_email/test__header_value_parser.py @@ -2915,6 +2915,45 @@ def test_ews_combined_before_wrap(self): "mich. And that's\n" " all I'm sayin.\n") + def test_unicode_after_unknown_not_combined(self): + self._test(parser.get_unstructured("=?unknown-8bit?q?=A4?=\xa4"), + "=?unknown-8bit?q?=A4?==?utf-8?q?=C2=A4?=\n") + prefix = "0123456789 "*5 + self._test(parser.get_unstructured(prefix + "=?unknown-8bit?q?=A4?=\xa4"), + prefix + "=?unknown-8bit?q?=A4?=\n =?utf-8?q?=C2=A4?=\n") + + def test_ascii_after_unknown_not_combined(self): + self._test(parser.get_unstructured("=?unknown-8bit?q?=A4?=abc"), + "=?unknown-8bit?q?=A4?=abc\n") + prefix = "0123456789 "*5 + self._test(parser.get_unstructured(prefix + "=?unknown-8bit?q?=A4?=abc"), + prefix + "=?unknown-8bit?q?=A4?=\n =?utf-8?q?abc?=\n") + + def test_unknown_after_unicode_not_combined(self): + self._test(parser.get_unstructured("\xa4" + "=?unknown-8bit?q?=A4?="), + "=?utf-8?q?=C2=A4?==?unknown-8bit?q?=A4?=\n") + prefix = "0123456789 "*5 + self._test(parser.get_unstructured(prefix + "\xa4=?unknown-8bit?q?=A4?="), + prefix + "=?utf-8?q?=C2=A4?=\n =?unknown-8bit?q?=A4?=\n") + + def test_unknown_after_ascii_not_combined(self): + self._test(parser.get_unstructured("abc" + "=?unknown-8bit?q?=A4?="), + "abc=?unknown-8bit?q?=A4?=\n") + prefix = "0123456789 "*5 + self._test(parser.get_unstructured(prefix + "abcd=?unknown-8bit?q?=A4?="), + prefix + "abcd\n =?unknown-8bit?q?=A4?=\n") + + def test_unknown_after_unknown(self): + self._test(parser.get_unstructured("=?unknown-8bit?q?=C2?=" + "=?unknown-8bit?q?=A4?="), + "=?unknown-8bit?q?=C2=A4?=\n") + prefix = "0123456789 "*5 + self._test(parser.get_unstructured(prefix + "=?unknown-8bit?q?=C2?=" + "=?unknown-8bit?q?=A4?="), + prefix + "=?unknown-8bit?q?=C2?=\n =?unknown-8bit?q?=A4?=\n") + # XXX Need test of an encoded word so long that it needs to be wrapped def test_simple_address(self): diff --git a/Lib/test/test_email/test_message.py b/Lib/test/test_email/test_message.py index d3f396f02e7..034f7626c1f 100644 --- a/Lib/test/test_email/test_message.py +++ b/Lib/test/test_email/test_message.py @@ -748,6 +748,35 @@ def test_iter_attachments_mutation(self): self.assertEqual(len(list(m.iter_attachments())), 2) self.assertEqual(m.get_payload(), orig) + get_payload_surrogate_params = { + + 'good_surrogateescape': ( + "String that can be encod\udcc3\udcabd with surrogateescape", + b'String that can be encod\xc3\xabd with surrogateescape' + ), + + 'string_with_utf8': ( + "String with utf-8 charactër", + b'String with utf-8 charact\xebr' + ), + + 'surrogate_and_utf8': ( + "String that cannot be ëncod\udcc3\udcabd with surrogateescape", + b'String that cannot be \xebncod\\udcc3\\udcabd with surrogateescape' + ), + + 'out_of_range_surrogate': ( + "String with \udfff cannot be encoded with surrogateescape", + b'String with \\udfff cannot be encoded with surrogateescape' + ), + } + + def get_payload_surrogate_as_gh_94606(self, msg, expected): + """test for GH issue 94606""" + m = self._str_msg(msg) + payload = m.get_payload(decode=True) + self.assertEqual(expected, payload) + class TestEmailMessage(TestEmailMessageBase, TestEmailBase): message = EmailMessage diff --git a/Lib/test/test_email/test_policy.py b/Lib/test/test_email/test_policy.py index e87c2755494..c6b9c80efe1 100644 --- a/Lib/test/test_email/test_policy.py +++ b/Lib/test/test_email/test_policy.py @@ -135,6 +135,23 @@ def test_policy_addition(self): for attr, value in expected.items(): self.assertEqual(getattr(added, attr), value) + def test_fold_utf8(self): + expected_ascii = 'Subject: =?utf-8?q?=C3=A1?=\n' + expected_utf8 = 'Subject: á\n' + + msg = email.message.EmailMessage() + s = 'á' + msg['Subject'] = s + + p_ascii = email.policy.default.clone() + p_utf8 = email.policy.default.clone(utf8=True) + + self.assertEqual(p_ascii.fold('Subject', msg['Subject']), expected_ascii) + self.assertEqual(p_utf8.fold('Subject', msg['Subject']), expected_utf8) + + self.assertEqual(p_ascii.fold('Subject', s), expected_ascii) + self.assertEqual(p_utf8.fold('Subject', s), expected_utf8) + def test_fold_zero_max_line_length(self): expected = 'Subject: =?utf-8?q?=C3=A1?=\n' diff --git a/Lib/test/test_email/test_utils.py b/Lib/test/test_email/test_utils.py index c9d973df0a2..d04b3909efa 100644 --- a/Lib/test/test_email/test_utils.py +++ b/Lib/test/test_email/test_utils.py @@ -143,12 +143,12 @@ def test_localtime_epoch_notz_daylight_false(self): t2 = utils.localtime(t0.replace(tzinfo=None)) self.assertEqual(t1, t2) - @unittest.skipUnless("Europe/Kyiv" in zoneinfo.available_timezones(), - "Can't find a Kyiv timezone database") @test.support.run_with_tz('Europe/Kyiv') def test_variable_tzname(self): t0 = datetime.datetime(1984, 1, 1, tzinfo=datetime.timezone.utc) t1 = utils.localtime(t0) + if t1.tzname() in ('Europe', 'UTC'): + self.skipTest("Can't find a Kyiv timezone database") self.assertEqual(t1.tzname(), 'MSK') t0 = datetime.datetime(1994, 1, 1, tzinfo=datetime.timezone.utc) t1 = utils.localtime(t0) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 3bd918fb941..23be142c24d 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -3164,6 +3164,37 @@ class NTEnum(Enum): [TTuple(id=0, a=0, blist=[]), TTuple(id=1, a=2, blist=[4]), TTuple(id=2, a=4, blist=[0, 1, 2])], ) + self.assertRaises(AttributeError, getattr, NTEnum.NONE, 'id') + # + class NTCEnum(TTuple, Enum): + NONE = 0, 0, [] + A = 1, 2, [4] + B = 2, 4, [0, 1, 2] + self.assertEqual(repr(NTCEnum.NONE), "") + self.assertEqual(NTCEnum.NONE.value, TTuple(id=0, a=0, blist=[])) + self.assertEqual(NTCEnum.NONE.id, 0) + self.assertEqual(NTCEnum.A.a, 2) + self.assertEqual(NTCEnum.B.blist, [0, 1 ,2]) + self.assertEqual( + [x.value for x in NTCEnum], + [TTuple(id=0, a=0, blist=[]), TTuple(id=1, a=2, blist=[4]), TTuple(id=2, a=4, blist=[0, 1, 2])], + ) + # + class NTDEnum(Enum): + def __new__(cls, id, a, blist): + member = object.__new__(cls) + member.id = id + member.a = a + member.blist = blist + return member + NONE = TTuple(0, 0, []) + A = TTuple(1, 2, [4]) + B = TTuple(2, 4, [0, 1, 2]) + self.assertEqual(repr(NTDEnum.NONE), "") + self.assertEqual(NTDEnum.NONE.id, 0) + self.assertEqual(NTDEnum.A.a, 2) + self.assertEqual(NTDEnum.B.blist, [0, 1 ,2]) + def test_flag_with_custom_new(self): class FlagFromChar(IntFlag): def __new__(cls, c): diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py index 4f4ea7c03f9..1e97d5c6b37 100644 --- a/Lib/test/test_fractions.py +++ b/Lib/test/test_fractions.py @@ -261,6 +261,30 @@ def testFromString(self): self.assertRaisesMessage( ValueError, "Invalid literal for Fraction: '1.1e+1__1'", F, "1.1e+1__1") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '123.dd'", + F, "123.dd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '123.5_dd'", + F, "123.5_dd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: 'dd.5'", + F, "dd.5") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '7_dd'", + F, "7_dd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/dd'", + F, "1/dd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/123_dd'", + F, "1/123_dd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '789edd'", + F, "789edd") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '789e2_dd'", + F, "789e2_dd") # Test catastrophic backtracking. val = "9"*50 + "_" self.assertRaisesMessage( diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index ce2bdeb62a4..80d01760334 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -939,6 +939,8 @@ def mycmp(x, y): self.assertRaises(TypeError, hash, k) self.assertNotIsInstance(k, collections.abc.Hashable) + @unittest.skipIf(support.MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_cmp_to_signature(self): self.assertEqual(str(Signature.from_callable(self.cmp_to_key)), '(mycmp)') diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index caa4c76a913..089bf5be40a 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1546,11 +1546,14 @@ def test_readline(self): resp = self.resp self._verify_readline(self.resp.readline, self.lines_expected) - def _verify_readline(self, readline, expected): + def test_readline_without_limit(self): + self._verify_readline(self.resp.readline, self.lines_expected, limit=-1) + + def _verify_readline(self, readline, expected, limit=5): all = [] while True: # short readlines - line = readline(5) + line = readline(limit) if line and line != b"foo": if len(line) < 5: self.assertTrue(line.endswith(b"\n")) @@ -1558,6 +1561,7 @@ def _verify_readline(self, readline, expected): if not line: break self.assertEqual(b"".join(all), expected) + self.assertTrue(self.resp.isclosed()) def test_read1(self): resp = self.resp @@ -1577,6 +1581,7 @@ def test_read1_unbounded(self): break all.append(data) self.assertEqual(b"".join(all), self.lines_expected) + self.assertTrue(resp.isclosed()) def test_read1_bounded(self): resp = self.resp @@ -1588,15 +1593,22 @@ def test_read1_bounded(self): self.assertLessEqual(len(data), 10) all.append(data) self.assertEqual(b"".join(all), self.lines_expected) + self.assertTrue(resp.isclosed()) def test_read1_0(self): self.assertEqual(self.resp.read1(0), b"") + self.assertFalse(self.resp.isclosed()) def test_peek_0(self): p = self.resp.peek(0) self.assertLessEqual(0, len(p)) +class ExtendedReadTestContentLengthKnown(ExtendedReadTest): + _header, _body = ExtendedReadTest.lines.split('\r\n\r\n', 1) + lines = _header + f'\r\nContent-Length: {len(_body)}\r\n\r\n' + _body + + class ExtendedReadTestChunked(ExtendedReadTest): """ Test peek(), read1(), readline() in chunked mode diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 26610818863..336b70a0ea7 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -407,9 +407,12 @@ def test_case_sensitivity(self): import RAnDoM def test_double_const(self): - # Another brief digression to test the accuracy of manifest float - # constants. - from test import double_const # don't blink -- that *was* the test + # Importing double_const checks that float constants + # serialiazed by marshal as PYC files don't lose precision + # (SF bug 422177). + from test.test_import.data import double_const + unload('test.test_import.data.double_const') + from test.test_import.data import double_const def test_import(self): def test_with_extension(ext): diff --git a/Lib/test/double_const.py b/Lib/test/test_import/data/double_const.py similarity index 100% rename from Lib/test/double_const.py rename to Lib/test/test_import/data/double_const.py diff --git a/Lib/test/test_importlib/extension/test_loader.py b/Lib/test/test_importlib/extension/test_loader.py index a7c6245825f..1b5a8baf29c 100644 --- a/Lib/test/test_importlib/extension/test_loader.py +++ b/Lib/test/test_importlib/extension/test_loader.py @@ -10,6 +10,7 @@ import warnings import importlib.util import importlib +from test.support import MISSING_C_DOCSTRINGS from test.support.script_helper import assert_python_failure @@ -375,7 +376,8 @@ def test_nonascii(self): with self.subTest(name): module = self.load_module_by_name(name) self.assertEqual(module.__name__, name) - self.assertEqual(module.__doc__, "Module named in %s" % lang) + if not MISSING_C_DOCSTRINGS: + self.assertEqual(module.__doc__, "Module named in %s" % lang) (Frozen_MultiPhaseExtensionModuleTests, diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index a8671f9c5bb..ec50acecef8 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -3722,6 +3722,8 @@ def foo(a, *, b:1): pass foo_sig = MySignature.from_callable(foo) self.assertIsInstance(foo_sig, MySignature) + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_signature_from_callable_class(self): # A regression test for a class inheriting its signature from `object`. class MySignature(inspect.Signature): pass @@ -3812,7 +3814,8 @@ def test_signature_eval_str(self): par('c', PORK, annotation="'MyClass'"), ))) - self.assertEqual(signature_func(isa.UnannotatedClass), sig()) + if not MISSING_C_DOCSTRINGS: + self.assertEqual(signature_func(isa.UnannotatedClass), sig()) self.assertEqual(signature_func(isa.unannotated_function), sig( parameters=( diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py index 2b0cff596da..0cd9e721b20 100644 --- a/Lib/test/test_interpreters.py +++ b/Lib/test/test_interpreters.py @@ -1053,3 +1053,7 @@ def test_recv_nowait_default(self): self.assertEqual(obj4, b'spam') self.assertEqual(obj5, b'eggs') self.assertIs(obj6, default) + + +if __name__ == "__main__": + unittest.main() diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 196b7d2b142..cceaed8af59 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -3891,6 +3891,14 @@ def test_issue25862(self): t.write('x') t.tell() + def test_issue35928(self): + p = self.BufferedRWPair(self.BytesIO(b'foo\nbar\n'), self.BytesIO()) + f = self.TextIOWrapper(p) + res = f.readline() + self.assertEqual(res, 'foo\n') + f.write(res) + self.assertEqual(res + f.readline(), 'foo\nbar\n') + class MemviewBytesIO(io.BytesIO): '''A BytesIO object whose read method returns memoryviews diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index fdae35b5dff..d1ec2d6cf7a 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -43,11 +43,13 @@ import tempfile from test.support.script_helper import assert_python_ok, assert_python_failure from test import support +from test.support import import_helper from test.support import os_helper from test.support import socket_helper from test.support import threading_helper from test.support import warnings_helper from test.support import asyncore +from test.support import smtpd from test.support.logging_helper import TestHandler import textwrap import threading @@ -62,9 +64,6 @@ from socketserver import (ThreadingUDPServer, DatagramRequestHandler, ThreadingTCPServer, StreamRequestHandler) -with warnings.catch_warnings(): - from . import smtpd - try: import win32evtlog, win32evtlogutil, pywintypes except ImportError: @@ -3892,6 +3891,26 @@ def test_90195(self): # Logger should be enabled, since explicitly mentioned self.assertFalse(logger.disabled) + def test_111615(self): + # See gh-111615 + import_helper.import_module('_multiprocessing') # see gh-113692 + mp = import_helper.import_module('multiprocessing') + + config = { + 'version': 1, + 'handlers': { + 'sink': { + 'class': 'logging.handlers.QueueHandler', + 'queue': mp.get_context('spawn').Queue(), + }, + }, + 'root': { + 'handlers': ['sink'], + 'level': 'DEBUG', + }, + } + logging.config.dictConfig(config) + class ManagerTest(BaseTest): def test_manager_loggerclass(self): logged = [] diff --git a/Lib/test/test_lzma.py b/Lib/test/test_lzma.py index 13b200912f6..65e6488c5d7 100644 --- a/Lib/test/test_lzma.py +++ b/Lib/test/test_lzma.py @@ -1401,6 +1401,14 @@ def test__decode_filter_properties(self): self.assertEqual(filterspec["lc"], 3) self.assertEqual(filterspec["dict_size"], 8 << 20) + # see gh-104282 + filters = [lzma.FILTER_X86, lzma.FILTER_POWERPC, + lzma.FILTER_IA64, lzma.FILTER_ARM, + lzma.FILTER_ARMTHUMB, lzma.FILTER_SPARC] + for f in filters: + filterspec = lzma._decode_filter_properties(f, b"") + self.assertEqual(filterspec, {"id": f}) + def test_filter_properties_roundtrip(self): spec1 = lzma._decode_filter_properties( lzma.FILTER_LZMA1, b"]\x00\x00\x80\x00") diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 4977a9369dd..9f13d2ff4f6 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -1027,12 +1027,14 @@ def test_add_from_string(self): # Add a string starting with 'From ' to the mailbox key = self._box.add('From foo@bar blah\nFrom: foo\n\n0\n') self.assertEqual(self._box[key].get_from(), 'foo@bar blah') + self.assertEqual(self._box[key].get_unixfrom(), 'From foo@bar blah') self.assertEqual(self._box[key].get_payload(), '0\n') def test_add_from_bytes(self): # Add a byte string starting with 'From ' to the mailbox key = self._box.add(b'From foo@bar blah\nFrom: foo\n\n0\n') self.assertEqual(self._box[key].get_from(), 'foo@bar blah') + self.assertEqual(self._box[key].get_unixfrom(), 'From foo@bar blah') self.assertEqual(self._box[key].get_payload(), '0\n') def test_add_mbox_or_mmdf_message(self): @@ -1545,18 +1547,23 @@ def test_initialize_with_unixfrom(self): msg = mailbox.Message(_sample_message) msg.set_unixfrom('From foo@bar blah') msg = mailbox.mboxMessage(msg) - self.assertEqual(msg.get_from(), 'foo@bar blah', msg.get_from()) + self.assertEqual(msg.get_from(), 'foo@bar blah') + self.assertEqual(msg.get_unixfrom(), 'From foo@bar blah') def test_from(self): # Get and set "From " line msg = mailbox.mboxMessage(_sample_message) self._check_from(msg) + self.assertIsNone(msg.get_unixfrom()) msg.set_from('foo bar') self.assertEqual(msg.get_from(), 'foo bar') + self.assertIsNone(msg.get_unixfrom()) msg.set_from('foo@bar', True) self._check_from(msg, 'foo@bar') + self.assertIsNone(msg.get_unixfrom()) msg.set_from('blah@temp', time.localtime()) self._check_from(msg, 'blah@temp') + self.assertIsNone(msg.get_unixfrom()) def test_flags(self): # Use get_flags(), set_flags(), add_flag(), remove_flag() @@ -1744,6 +1751,7 @@ def test_maildir_to_mboxmmdf(self): self.assertEqual(msg.get_flags(), result) self.assertEqual(msg.get_from(), 'MAILER-DAEMON %s' % time.asctime(time.gmtime(0.0))) + self.assertIsNone(msg.get_unixfrom()) msg_maildir.set_subdir('cur') self.assertEqual(class_(msg_maildir).get_flags(), 'RODFA') @@ -1792,10 +1800,12 @@ def test_mboxmmdf_to_mboxmmdf(self): msg_mboxMMDF = class_(_sample_message) msg_mboxMMDF.set_flags('RODFA') msg_mboxMMDF.set_from('foo@bar') + self.assertIsNone(msg_mboxMMDF.get_unixfrom()) for class2_ in (mailbox.mboxMessage, mailbox.MMDFMessage): msg2 = class2_(msg_mboxMMDF) self.assertEqual(msg2.get_flags(), 'RODFA') self.assertEqual(msg2.get_from(), 'foo@bar') + self.assertIsNone(msg2.get_unixfrom()) def test_mboxmmdf_to_mh(self): # Convert mboxMessage and MMDFMessage to MHMessage diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py index 731299294e6..8192502a407 100644 --- a/Lib/test/test_memoryio.py +++ b/Lib/test/test_memoryio.py @@ -6,10 +6,12 @@ import unittest from test import support +import gc import io import _pyio as pyio import pickle import sys +import weakref class IntLike: def __init__(self, num): @@ -477,6 +479,25 @@ def test_getbuffer_empty(self): buf2.release() memio.write(b'x') + def test_getbuffer_gc_collect(self): + memio = self.ioclass(b"1234567890") + buf = memio.getbuffer() + memiowr = weakref.ref(memio) + bufwr = weakref.ref(buf) + # Create a reference loop. + a = [buf] + a.append(a) + # The Python implementation emits an unraisable exception. + with support.catch_unraisable_exception(): + del memio + del buf + del a + # The C implementation emits an unraisable exception. + with support.catch_unraisable_exception(): + gc.collect() + self.assertIsNone(memiowr()) + self.assertIsNone(bufwr()) + def test_read1(self): buf = self.buftype("1234567890") self.assertEqual(self.ioclass(buf).read1(), buf) diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index dfcf3039422..1867e8c957f 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -671,14 +671,16 @@ def test_tagname(self): m2.close() m1.close() + with self.assertRaisesRegex(TypeError, 'tagname'): + mmap.mmap(-1, 8, tagname=1) + @cpython_only @unittest.skipUnless(os.name == 'nt', 'requires Windows') def test_sizeof(self): m1 = mmap.mmap(-1, 100) tagname = random_tagname() m2 = mmap.mmap(-1, 100, tagname=tagname) - self.assertEqual(sys.getsizeof(m2), - sys.getsizeof(m1) + len(tagname) + 1) + self.assertGreater(sys.getsizeof(m2), sys.getsizeof(m1)) @unittest.skipUnless(os.name == 'nt', 'requires Windows') def test_crasher_on_windows(self): diff --git a/Lib/test/test_module/__init__.py b/Lib/test/test_module/__init__.py index d49c44df4d8..98d1cbe824d 100644 --- a/Lib/test/test_module/__init__.py +++ b/Lib/test/test_module/__init__.py @@ -30,7 +30,7 @@ def test_uninitialized(self): self.fail("__name__ = %s" % repr(s)) except AttributeError: pass - self.assertEqual(foo.__doc__, ModuleType.__doc__) + self.assertEqual(foo.__doc__, ModuleType.__doc__ or '') def test_uninitialized_missing_getattr(self): # Issue 8297 diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 1f0836b2476..fc58f8d2dcd 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -1735,7 +1735,7 @@ def tearDown(self): os.removedirs(path) -@os_helper.skip_unless_working_chmod +@unittest.skipUnless(hasattr(os, "chown"), "requires os.chown()") class ChownFileTests(unittest.TestCase): @classmethod @@ -3077,6 +3077,66 @@ def test_stat_unlink_race(self): except subprocess.TimeoutExpired: proc.terminate() + @support.requires_subprocess() + def test_stat_inaccessible_file(self): + filename = os_helper.TESTFN + ICACLS = os.path.expandvars(r"%SystemRoot%\System32\icacls.exe") + + with open(filename, "wb") as f: + f.write(b'Test data') + + stat1 = os.stat(filename) + + try: + # Remove all permissions from the file + subprocess.check_output([ICACLS, filename, "/inheritance:r"], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as ex: + if support.verbose: + print(ICACLS, filename, "/inheritance:r", "failed.") + print(ex.stdout.decode("oem", "replace").rstrip()) + try: + os.unlink(filename) + except OSError: + pass + self.skipTest("Unable to create inaccessible file") + + def cleanup(): + # Give delete permission. We are the file owner, so we can do this + # even though we removed all permissions earlier. + subprocess.check_output([ICACLS, filename, "/grant", "Everyone:(D)"], + stderr=subprocess.STDOUT) + os.unlink(filename) + + self.addCleanup(cleanup) + + if support.verbose: + print("File:", filename) + print("stat with access:", stat1) + + # First test - we shouldn't raise here, because we still have access to + # the directory and can extract enough information from its metadata. + stat2 = os.stat(filename) + + if support.verbose: + print(" without access:", stat2) + + # We cannot get st_dev/st_ino, so ensure those are 0 or else our test + # is not set up correctly + self.assertEqual(0, stat2.st_dev) + self.assertEqual(0, stat2.st_ino) + + # st_mode and st_size should match (for a normal file, at least) + self.assertEqual(stat1.st_mode, stat2.st_mode) + self.assertEqual(stat1.st_size, stat2.st_size) + + # st_ctime and st_mtime should be the same + self.assertEqual(stat1.st_ctime, stat2.st_ctime) + self.assertEqual(stat1.st_mtime, stat2.st_mtime) + + # st_atime should be the same or later + self.assertGreaterEqual(stat1.st_atime, stat2.st_atime) + @os_helper.skip_unless_symlink class NonLocalSymlinkTests(unittest.TestCase): diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 08b2867266e..51b844262ed 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -16,11 +16,12 @@ from test import support from test.support import os_helper from test.support.import_helper import import_module -from test.support.pty_helper import run_pty -# This little helper class is essential for testing pdb under doctest. -from test.test_doctest import _FakeInput +from test.support.pty_helper import run_pty, FakeInput from unittest.mock import patch +# gh-114275: WASI fails to run asyncio tests, similar skip than test_asyncio. +SKIP_ASYNCIO_TESTS = (not support.has_socket_support) + class PdbTestInput(object): """Context manager that makes testing Pdb in doctests easier.""" @@ -30,7 +31,7 @@ def __init__(self, input): def __enter__(self): self.real_stdin = sys.stdin - sys.stdin = _FakeInput(self.input) + sys.stdin = FakeInput(self.input) self.orig_trace = sys.gettrace() if hasattr(sys, 'gettrace') else None def __exit__(self, *exc): @@ -389,7 +390,7 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): 1 breakpoint keep yes at ...test_pdb.py:... 2 breakpoint keep yes at ...test_pdb.py:... (Pdb) break pdb.find_function - Breakpoint 3 at ...pdb.py:97 + Breakpoint 3 at ...pdb.py:... (Pdb) break Num Type Disp Enb Where 1 breakpoint keep yes at ...test_pdb.py:... @@ -770,9 +771,12 @@ def test_convenience_variables(): >>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE ... '$_frame.f_lineno', # Check frame convenience variable + ... '$ _frame', # This should be a syntax error ... '$a = 10', # Set a convenience variable ... '$a', # Print its value + ... 'p "$a"', # Print the string $a ... 'p $a + 2', # Do some calculation + ... 'p f"$a = {$a}"', # Make sure $ in string is not converted and f-string works ... 'u', # Switch frame ... '$_frame.f_lineno', # Make sure the frame changed ... '$a', # Make sure the value persists @@ -792,11 +796,17 @@ def test_convenience_variables(): -> try: (Pdb) $_frame.f_lineno 3 + (Pdb) $ _frame + *** SyntaxError: invalid syntax (Pdb) $a = 10 (Pdb) $a 10 + (Pdb) p "$a" + '$a' (Pdb) p $a + 2 12 + (Pdb) p f"$a = {$a}" + '$a = 10' (Pdb) u > (2)test_function() -> util_function() @@ -1173,122 +1183,123 @@ def test_pdb_next_command_for_generator(): finished """ -def test_pdb_next_command_for_coroutine(): - """Testing skip unwindng stack on yield for coroutines for "next" command - - >>> import asyncio - - >>> async def test_coro(): - ... await asyncio.sleep(0) - ... await asyncio.sleep(0) - ... await asyncio.sleep(0) - - >>> async def test_main(): - ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() - ... await test_coro() - - >>> def test_function(): - ... loop = asyncio.new_event_loop() - ... loop.run_until_complete(test_main()) - ... loop.close() - ... asyncio.set_event_loop_policy(None) - ... print("finished") - - >>> with PdbTestInput(['step', - ... 'step', - ... 'next', - ... 'next', - ... 'next', - ... 'step', - ... 'continue']): - ... test_function() - > (3)test_main() - -> await test_coro() - (Pdb) step - --Call-- - > (1)test_coro() - -> async def test_coro(): - (Pdb) step - > (2)test_coro() - -> await asyncio.sleep(0) - (Pdb) next - > (3)test_coro() - -> await asyncio.sleep(0) - (Pdb) next - > (4)test_coro() - -> await asyncio.sleep(0) - (Pdb) next - Internal StopIteration - > (3)test_main() - -> await test_coro() - (Pdb) step - --Return-- - > (3)test_main()->None - -> await test_coro() - (Pdb) continue - finished - """ - -def test_pdb_next_command_for_asyncgen(): - """Testing skip unwindng stack on yield for coroutines for "next" command - - >>> import asyncio - - >>> async def agen(): - ... yield 1 - ... await asyncio.sleep(0) - ... yield 2 - - >>> async def test_coro(): - ... async for x in agen(): - ... print(x) - - >>> async def test_main(): - ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() - ... await test_coro() - - >>> def test_function(): - ... loop = asyncio.new_event_loop() - ... loop.run_until_complete(test_main()) - ... loop.close() - ... asyncio.set_event_loop_policy(None) - ... print("finished") +if not SKIP_ASYNCIO_TESTS: + def test_pdb_next_command_for_coroutine(): + """Testing skip unwindng stack on yield for coroutines for "next" command + + >>> import asyncio + + >>> async def test_coro(): + ... await asyncio.sleep(0) + ... await asyncio.sleep(0) + ... await asyncio.sleep(0) + + >>> async def test_main(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... await test_coro() + + >>> def test_function(): + ... loop = asyncio.new_event_loop() + ... loop.run_until_complete(test_main()) + ... loop.close() + ... asyncio.set_event_loop_policy(None) + ... print("finished") + + >>> with PdbTestInput(['step', + ... 'step', + ... 'next', + ... 'next', + ... 'next', + ... 'step', + ... 'continue']): + ... test_function() + > (3)test_main() + -> await test_coro() + (Pdb) step + --Call-- + > (1)test_coro() + -> async def test_coro(): + (Pdb) step + > (2)test_coro() + -> await asyncio.sleep(0) + (Pdb) next + > (3)test_coro() + -> await asyncio.sleep(0) + (Pdb) next + > (4)test_coro() + -> await asyncio.sleep(0) + (Pdb) next + Internal StopIteration + > (3)test_main() + -> await test_coro() + (Pdb) step + --Return-- + > (3)test_main()->None + -> await test_coro() + (Pdb) continue + finished + """ - >>> with PdbTestInput(['step', - ... 'step', - ... 'next', - ... 'next', - ... 'step', - ... 'next', - ... 'continue']): - ... test_function() - > (3)test_main() - -> await test_coro() - (Pdb) step - --Call-- - > (1)test_coro() - -> async def test_coro(): - (Pdb) step - > (2)test_coro() - -> async for x in agen(): - (Pdb) next - > (3)test_coro() - -> print(x) - (Pdb) next - 1 - > (2)test_coro() - -> async for x in agen(): - (Pdb) step - --Call-- - > (2)agen() - -> yield 1 - (Pdb) next - > (3)agen() - -> await asyncio.sleep(0) - (Pdb) continue - 2 - finished - """ + def test_pdb_next_command_for_asyncgen(): + """Testing skip unwindng stack on yield for coroutines for "next" command + + >>> import asyncio + + >>> async def agen(): + ... yield 1 + ... await asyncio.sleep(0) + ... yield 2 + + >>> async def test_coro(): + ... async for x in agen(): + ... print(x) + + >>> async def test_main(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... await test_coro() + + >>> def test_function(): + ... loop = asyncio.new_event_loop() + ... loop.run_until_complete(test_main()) + ... loop.close() + ... asyncio.set_event_loop_policy(None) + ... print("finished") + + >>> with PdbTestInput(['step', + ... 'step', + ... 'next', + ... 'next', + ... 'step', + ... 'next', + ... 'continue']): + ... test_function() + > (3)test_main() + -> await test_coro() + (Pdb) step + --Call-- + > (1)test_coro() + -> async def test_coro(): + (Pdb) step + > (2)test_coro() + -> async for x in agen(): + (Pdb) next + > (3)test_coro() + -> print(x) + (Pdb) next + 1 + > (2)test_coro() + -> async for x in agen(): + (Pdb) step + --Call-- + > (2)agen() + -> yield 1 + (Pdb) next + > (3)agen() + -> await asyncio.sleep(0) + (Pdb) continue + 2 + finished + """ def test_pdb_return_command_for_generator(): """Testing no unwindng stack on yield for generators @@ -1345,47 +1356,48 @@ def test_pdb_return_command_for_generator(): finished """ -def test_pdb_return_command_for_coroutine(): - """Testing no unwindng stack on yield for coroutines for "return" command - - >>> import asyncio - - >>> async def test_coro(): - ... await asyncio.sleep(0) - ... await asyncio.sleep(0) - ... await asyncio.sleep(0) - - >>> async def test_main(): - ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() - ... await test_coro() - - >>> def test_function(): - ... loop = asyncio.new_event_loop() - ... loop.run_until_complete(test_main()) - ... loop.close() - ... asyncio.set_event_loop_policy(None) - ... print("finished") - - >>> with PdbTestInput(['step', - ... 'step', - ... 'next', - ... 'continue']): - ... test_function() - > (3)test_main() - -> await test_coro() - (Pdb) step - --Call-- - > (1)test_coro() - -> async def test_coro(): - (Pdb) step - > (2)test_coro() - -> await asyncio.sleep(0) - (Pdb) next - > (3)test_coro() - -> await asyncio.sleep(0) - (Pdb) continue - finished - """ +if not SKIP_ASYNCIO_TESTS: + def test_pdb_return_command_for_coroutine(): + """Testing no unwindng stack on yield for coroutines for "return" command + + >>> import asyncio + + >>> async def test_coro(): + ... await asyncio.sleep(0) + ... await asyncio.sleep(0) + ... await asyncio.sleep(0) + + >>> async def test_main(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... await test_coro() + + >>> def test_function(): + ... loop = asyncio.new_event_loop() + ... loop.run_until_complete(test_main()) + ... loop.close() + ... asyncio.set_event_loop_policy(None) + ... print("finished") + + >>> with PdbTestInput(['step', + ... 'step', + ... 'next', + ... 'continue']): + ... test_function() + > (3)test_main() + -> await test_coro() + (Pdb) step + --Call-- + > (1)test_coro() + -> async def test_coro(): + (Pdb) step + > (2)test_coro() + -> await asyncio.sleep(0) + (Pdb) next + > (3)test_coro() + -> await asyncio.sleep(0) + (Pdb) continue + finished + """ def test_pdb_until_command_for_generator(): """Testing no unwindng stack on yield for generators @@ -1431,52 +1443,53 @@ def test_pdb_until_command_for_generator(): finished """ -def test_pdb_until_command_for_coroutine(): - """Testing no unwindng stack for coroutines - for "until" command if target breakpoint is not reached - - >>> import asyncio - - >>> async def test_coro(): - ... print(0) - ... await asyncio.sleep(0) - ... print(1) - ... await asyncio.sleep(0) - ... print(2) - ... await asyncio.sleep(0) - ... print(3) - - >>> async def test_main(): - ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() - ... await test_coro() - - >>> def test_function(): - ... loop = asyncio.new_event_loop() - ... loop.run_until_complete(test_main()) - ... loop.close() - ... asyncio.set_event_loop_policy(None) - ... print("finished") - - >>> with PdbTestInput(['step', - ... 'until 8', - ... 'continue']): - ... test_function() - > (3)test_main() - -> await test_coro() - (Pdb) step - --Call-- - > (1)test_coro() - -> async def test_coro(): - (Pdb) until 8 - 0 - 1 - 2 - > (8)test_coro() - -> print(3) - (Pdb) continue - 3 - finished - """ +if not SKIP_ASYNCIO_TESTS: + def test_pdb_until_command_for_coroutine(): + """Testing no unwindng stack for coroutines + for "until" command if target breakpoint is not reached + + >>> import asyncio + + >>> async def test_coro(): + ... print(0) + ... await asyncio.sleep(0) + ... print(1) + ... await asyncio.sleep(0) + ... print(2) + ... await asyncio.sleep(0) + ... print(3) + + >>> async def test_main(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... await test_coro() + + >>> def test_function(): + ... loop = asyncio.new_event_loop() + ... loop.run_until_complete(test_main()) + ... loop.close() + ... asyncio.set_event_loop_policy(None) + ... print("finished") + + >>> with PdbTestInput(['step', + ... 'until 8', + ... 'continue']): + ... test_function() + > (3)test_main() + -> await test_coro() + (Pdb) step + --Call-- + > (1)test_coro() + -> async def test_coro(): + (Pdb) until 8 + 0 + 1 + 2 + > (8)test_coro() + -> print(3) + (Pdb) continue + 3 + finished + """ def test_pdb_next_command_in_generator_for_loop(): """The next command on returning from a generator controlled by a for loop. diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py index b08ababa341..3f10f16d719 100644 --- a/Lib/test/test_plistlib.py +++ b/Lib/test/test_plistlib.py @@ -908,12 +908,13 @@ def test_cycles(self): self.assertIs(b['x'], b) def test_deep_nesting(self): - for N in [300, 100000]: + tests = [50, 100_000] if support.is_wasi else [50, 300, 100_000] + for N in tests: chunks = [b'\xa1' + (i + 1).to_bytes(4, 'big') for i in range(N)] try: result = self.decode(*chunks, b'\x54seed', offset_size=4, ref_size=4) except RecursionError: - pass + self.assertGreater(N, sys.getrecursionlimit()//2) else: for i in range(N): self.assertIsInstance(result, list) diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 1722c84727b..887420f8cac 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -791,7 +791,7 @@ def check_stat(uid, gid): self.assertRaises(TypeError, chown_func, first_param, uid, t(gid)) check_stat(uid, gid) - @os_helper.skip_unless_working_chmod + @unittest.skipUnless(hasattr(os, "chown"), "requires os.chown()") @unittest.skipIf(support.is_emscripten, "getgid() is a stub") def test_chown(self): # raise an OSError if the file does not exist @@ -935,6 +935,124 @@ def test_utime(self): posix.utime(os_helper.TESTFN, (int(now), int(now))) posix.utime(os_helper.TESTFN, (now, now)) + def check_chmod(self, chmod_func, target, **kwargs): + mode = os.stat(target).st_mode + try: + new_mode = mode & ~(stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(target, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, new_mode) + if stat.S_ISREG(mode): + try: + with open(target, 'wb+'): + pass + except PermissionError: + pass + new_mode = mode | (stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(target, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, new_mode) + if stat.S_ISREG(mode): + with open(target, 'wb+'): + pass + finally: + posix.chmod(target, mode) + + @os_helper.skip_unless_working_chmod + def test_chmod_file(self): + self.check_chmod(posix.chmod, os_helper.TESTFN) + + def tempdir(self): + target = os_helper.TESTFN + 'd' + posix.mkdir(target) + self.addCleanup(posix.rmdir, target) + return target + + @os_helper.skip_unless_working_chmod + def test_chmod_dir(self): + target = self.tempdir() + self.check_chmod(posix.chmod, target) + + @unittest.skipUnless(hasattr(posix, 'lchmod'), 'test needs os.lchmod()') + def test_lchmod_file(self): + self.check_chmod(posix.lchmod, os_helper.TESTFN) + self.check_chmod(posix.chmod, os_helper.TESTFN, follow_symlinks=False) + + @unittest.skipUnless(hasattr(posix, 'lchmod'), 'test needs os.lchmod()') + def test_lchmod_dir(self): + target = self.tempdir() + self.check_chmod(posix.lchmod, target) + self.check_chmod(posix.chmod, target, follow_symlinks=False) + + def check_chmod_link(self, chmod_func, target, link, **kwargs): + target_mode = os.stat(target).st_mode + link_mode = os.lstat(link).st_mode + try: + new_mode = target_mode & ~(stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(link, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, new_mode) + self.assertEqual(os.lstat(link).st_mode, link_mode) + new_mode = target_mode | (stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(link, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, new_mode) + self.assertEqual(os.lstat(link).st_mode, link_mode) + finally: + posix.chmod(target, target_mode) + + def check_lchmod_link(self, chmod_func, target, link, **kwargs): + target_mode = os.stat(target).st_mode + link_mode = os.lstat(link).st_mode + new_mode = link_mode & ~(stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(link, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, target_mode) + self.assertEqual(os.lstat(link).st_mode, new_mode) + new_mode = link_mode | (stat.S_IWOTH | stat.S_IWGRP | stat.S_IWUSR) + chmod_func(link, new_mode, **kwargs) + self.assertEqual(os.stat(target).st_mode, target_mode) + self.assertEqual(os.lstat(link).st_mode, new_mode) + + @os_helper.skip_unless_symlink + def test_chmod_file_symlink(self): + target = os_helper.TESTFN + link = os_helper.TESTFN + '-link' + os.symlink(target, link) + self.addCleanup(posix.unlink, link) + if os.name == 'nt': + self.check_lchmod_link(posix.chmod, target, link) + else: + self.check_chmod_link(posix.chmod, target, link) + self.check_chmod_link(posix.chmod, target, link, follow_symlinks=True) + + @os_helper.skip_unless_symlink + def test_chmod_dir_symlink(self): + target = self.tempdir() + link = os_helper.TESTFN + '-link' + os.symlink(target, link, target_is_directory=True) + self.addCleanup(posix.unlink, link) + if os.name == 'nt': + self.check_lchmod_link(posix.chmod, target, link) + else: + self.check_chmod_link(posix.chmod, target, link) + self.check_chmod_link(posix.chmod, target, link, follow_symlinks=True) + + @unittest.skipUnless(hasattr(posix, 'lchmod'), 'test needs os.lchmod()') + @os_helper.skip_unless_symlink + def test_lchmod_file_symlink(self): + target = os_helper.TESTFN + link = os_helper.TESTFN + '-link' + os.symlink(target, link) + self.addCleanup(posix.unlink, link) + self.check_lchmod_link(posix.chmod, target, link, follow_symlinks=False) + self.check_lchmod_link(posix.lchmod, target, link) + + @unittest.skipUnless(hasattr(posix, 'lchmod'), 'test needs os.lchmod()') + @os_helper.skip_unless_symlink + def test_lchmod_dir_symlink(self): + target = self.tempdir() + link = os_helper.TESTFN + '-link' + os.symlink(target, link) + self.addCleanup(posix.unlink, link) + self.check_lchmod_link(posix.chmod, target, link, follow_symlinks=False) + self.check_lchmod_link(posix.lchmod, target, link) + def _test_chflags_regular_file(self, chflags_func, target_file, **kwargs): st = os.stat(target_file) self.assertTrue(hasattr(st, 'st_flags')) diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py index f31a68c5d84..51e3a46d0df 100644 --- a/Lib/test/test_pty.py +++ b/Lib/test/test_pty.py @@ -1,4 +1,5 @@ from test.support import verbose, reap_children +from test.support.os_helper import TESTFN, unlink from test.support.import_helper import import_module # Skip these tests if termios or fcntl are not available @@ -292,7 +293,26 @@ def test_master_read(self): self.assertEqual(data, b"") def test_spawn_doesnt_hang(self): - pty.spawn([sys.executable, '-c', 'print("hi there")']) + self.addCleanup(unlink, TESTFN) + with open(TESTFN, 'wb') as f: + STDOUT_FILENO = 1 + dup_stdout = os.dup(STDOUT_FILENO) + os.dup2(f.fileno(), STDOUT_FILENO) + buf = b'' + def master_read(fd): + nonlocal buf + data = os.read(fd, 1024) + buf += data + return data + try: + pty.spawn([sys.executable, '-c', 'print("hi there")'], + master_read) + finally: + os.dup2(dup_stdout, STDOUT_FILENO) + os.close(dup_stdout) + self.assertEqual(buf, b'hi there\r\n') + with open(TESTFN, 'rb') as f: + self.assertEqual(f.read(), b'hi there\r\n') class SmallPtyTests(unittest.TestCase): """These tests don't spawn children or hang.""" diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py index e70a80f13e8..dbd86a6b182 100644 --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -29,7 +29,7 @@ from test.support import threading_helper from test.support import (reap_children, captured_output, captured_stdout, captured_stderr, is_emscripten, is_wasi, - requires_docstrings) + requires_docstrings, MISSING_C_DOCSTRINGS) from test.support.os_helper import (TESTFN, rmtree, unlink) from test import pydoc_mod @@ -1062,13 +1062,15 @@ def test_generic_alias(self): doc = pydoc.render_doc(typing.List[int], renderer=pydoc.plaintext) self.assertIn('_GenericAlias in module typing', doc) self.assertIn('List = class list(object)', doc) - self.assertIn(list.__doc__.strip().splitlines()[0], doc) + if not MISSING_C_DOCSTRINGS: + self.assertIn(list.__doc__.strip().splitlines()[0], doc) self.assertEqual(pydoc.describe(list[int]), 'GenericAlias') doc = pydoc.render_doc(list[int], renderer=pydoc.plaintext) self.assertIn('GenericAlias in module builtins', doc) self.assertIn('\nclass list(object)', doc) - self.assertIn(list.__doc__.strip().splitlines()[0], doc) + if not MISSING_C_DOCSTRINGS: + self.assertIn(list.__doc__.strip().splitlines()[0], doc) def test_union_type(self): self.assertEqual(pydoc.describe(typing.Union[int, str]), '_UnionGenericAlias') @@ -1082,7 +1084,8 @@ def test_union_type(self): doc = pydoc.render_doc(int | str, renderer=pydoc.plaintext) self.assertIn('UnionType in module types object', doc) self.assertIn('\nclass UnionType(builtins.object)', doc) - self.assertIn(types.UnionType.__doc__.strip().splitlines()[0], doc) + if not MISSING_C_DOCSTRINGS: + self.assertIn(types.UnionType.__doc__.strip().splitlines()[0], doc) def test_special_form(self): self.assertEqual(pydoc.describe(typing.NoReturn), '_SpecialForm') diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py index 6b5fc9a0247..07ec9e43569 100644 --- a/Lib/test/test_rlcompleter.py +++ b/Lib/test/test_rlcompleter.py @@ -2,6 +2,7 @@ from unittest.mock import patch import builtins import rlcompleter +from test.support import MISSING_C_DOCSTRINGS class CompleteMe: """ Trivial class used in testing rlcompleter.Completer. """ @@ -40,12 +41,12 @@ def test_global_matches(self): # test with a customized namespace self.assertEqual(self.completer.global_matches('CompleteM'), - ['CompleteMe()']) + ['CompleteMe(' if MISSING_C_DOCSTRINGS else 'CompleteMe()']) self.assertEqual(self.completer.global_matches('eg'), ['egg(']) # XXX: see issue5256 self.assertEqual(self.completer.global_matches('CompleteM'), - ['CompleteMe()']) + ['CompleteMe(' if MISSING_C_DOCSTRINGS else 'CompleteMe()']) def test_attr_matches(self): # test with builtins namespace diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 5fd8fb497f1..bf60f379345 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -1046,23 +1046,23 @@ def test_copymode_follow_symlinks(self): shutil.copymode(src, dst) self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) # On Windows, os.chmod does not follow symlinks (issue #15411) - if os.name != 'nt': - # follow src link - os.chmod(dst, stat.S_IRWXO) - shutil.copymode(src_link, dst) - self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) - # follow dst link - os.chmod(dst, stat.S_IRWXO) - shutil.copymode(src, dst_link) - self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) - # follow both links - os.chmod(dst, stat.S_IRWXO) - shutil.copymode(src_link, dst_link) - self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) - - @unittest.skipUnless(hasattr(os, 'lchmod'), 'requires os.lchmod') + # follow src link + os.chmod(dst, stat.S_IRWXO) + shutil.copymode(src_link, dst) + self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) + # follow dst link + os.chmod(dst, stat.S_IRWXO) + shutil.copymode(src, dst_link) + self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) + # follow both links + os.chmod(dst, stat.S_IRWXO) + shutil.copymode(src_link, dst_link) + self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) + + @unittest.skipUnless(hasattr(os, 'lchmod') or os.name == 'nt', 'requires os.lchmod') @os_helper.skip_unless_symlink def test_copymode_symlink_to_symlink(self): + _lchmod = os.chmod if os.name == 'nt' else os.lchmod tmp_dir = self.mkdtemp() src = os.path.join(tmp_dir, 'foo') dst = os.path.join(tmp_dir, 'bar') @@ -1074,19 +1074,20 @@ def test_copymode_symlink_to_symlink(self): os.symlink(dst, dst_link) os.chmod(src, stat.S_IRWXU|stat.S_IRWXG) os.chmod(dst, stat.S_IRWXU) - os.lchmod(src_link, stat.S_IRWXO|stat.S_IRWXG) + _lchmod(src_link, stat.S_IRWXO|stat.S_IRWXG) # link to link - os.lchmod(dst_link, stat.S_IRWXO) + _lchmod(dst_link, stat.S_IRWXO) + old_mode = os.stat(dst).st_mode shutil.copymode(src_link, dst_link, follow_symlinks=False) self.assertEqual(os.lstat(src_link).st_mode, os.lstat(dst_link).st_mode) - self.assertNotEqual(os.stat(src).st_mode, os.stat(dst).st_mode) + self.assertEqual(os.stat(dst).st_mode, old_mode) # src link - use chmod - os.lchmod(dst_link, stat.S_IRWXO) + _lchmod(dst_link, stat.S_IRWXO) shutil.copymode(src_link, dst, follow_symlinks=False) self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) # dst link - use chmod - os.lchmod(dst_link, stat.S_IRWXO) + _lchmod(dst_link, stat.S_IRWXO) shutil.copymode(src, dst_link, follow_symlinks=False) self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) @@ -1123,11 +1124,13 @@ def test_copystat_symlinks(self): os.symlink(dst, dst_link) if hasattr(os, 'lchmod'): os.lchmod(src_link, stat.S_IRWXO) + elif os.name == 'nt': + os.chmod(src_link, stat.S_IRWXO) if hasattr(os, 'lchflags') and hasattr(stat, 'UF_NODUMP'): os.lchflags(src_link, stat.UF_NODUMP) src_link_stat = os.lstat(src_link) # follow - if hasattr(os, 'lchmod'): + if hasattr(os, 'lchmod') or os.name == 'nt': shutil.copystat(src_link, dst_link, follow_symlinks=True) self.assertNotEqual(src_link_stat.st_mode, os.stat(dst).st_mode) # don't follow @@ -1138,7 +1141,7 @@ def test_copystat_symlinks(self): # The modification times may be truncated in the new file. self.assertLessEqual(getattr(src_link_stat, attr), getattr(dst_link_stat, attr) + 1) - if hasattr(os, 'lchmod'): + if hasattr(os, 'lchmod') or os.name == 'nt': self.assertEqual(src_link_stat.st_mode, dst_link_stat.st_mode) if hasattr(os, 'lchflags') and hasattr(src_link_stat, 'st_flags'): self.assertEqual(src_link_stat.st_flags, dst_link_stat.st_flags) @@ -1615,6 +1618,17 @@ def test_tarfile_vs_tar(self): # now create another tarball using `tar` tarball2 = os.path.join(root_dir, 'archive2.tar') tar_cmd = ['tar', '-cf', 'archive2.tar', base_dir] + if sys.platform == 'darwin': + # macOS tar can include extended attributes, + # ACLs and other mac specific metadata into the + # archive (an recentish version of the OS). + # + # This feature can be disabled with the + # '--no-mac-metadata' option on macOS 11 or + # later. + import platform + if int(platform.mac_ver()[0].split('.')[0]) >= 11: + tar_cmd.insert(1, '--no-mac-metadata') subprocess.check_call(tar_cmd, cwd=root_dir, stdout=subprocess.DEVNULL) @@ -2622,6 +2636,35 @@ def test_move_dir_caseinsensitive(self): finally: os.rmdir(dst_dir) + # bpo-26791: Check that a symlink to a directory can + # be moved into that directory. + @mock_rename + def _test_move_symlink_to_dir_into_dir(self, dst): + src = os.path.join(self.src_dir, 'linktodir') + dst_link = os.path.join(self.dst_dir, 'linktodir') + os.symlink(self.dst_dir, src, target_is_directory=True) + shutil.move(src, dst) + self.assertTrue(os.path.islink(dst_link)) + self.assertTrue(os.path.samefile(self.dst_dir, dst_link)) + self.assertFalse(os.path.exists(src)) + + # Repeat the move operation with the destination + # symlink already in place (should raise shutil.Error). + os.symlink(self.dst_dir, src, target_is_directory=True) + with self.assertRaises(shutil.Error): + shutil.move(src, dst) + self.assertTrue(os.path.samefile(self.dst_dir, dst_link)) + self.assertTrue(os.path.exists(src)) + + @os_helper.skip_unless_symlink + def test_move_symlink_to_dir_into_dir(self): + self._test_move_symlink_to_dir_into_dir(self.dst_dir) + + @os_helper.skip_unless_symlink + def test_move_symlink_to_dir_into_symlink_to_dir(self): + dst = os.path.join(self.src_dir, 'otherlinktodir') + os.symlink(self.dst_dir, dst, target_is_directory=True) + self._test_move_symlink_to_dir_into_dir(dst) @os_helper.skip_unless_dac_override @unittest.skipUnless(hasattr(os, 'lchflags') diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index f2ae28c38dd..637a0ca3b36 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -1,5 +1,6 @@ import enum import errno +import functools import inspect import os import random @@ -76,6 +77,9 @@ class PosixTests(unittest.TestCase): def trivial_signal_handler(self, *args): pass + def create_handler_with_partial(self, argument): + return functools.partial(self.trivial_signal_handler, argument) + def test_out_of_range_signal_number_raises_error(self): self.assertRaises(ValueError, signal.getsignal, 4242) @@ -96,6 +100,28 @@ def test_getsignal(self): signal.signal(signal.SIGHUP, hup) self.assertEqual(signal.getsignal(signal.SIGHUP), hup) + def test_no_repr_is_called_on_signal_handler(self): + # See https://github.com/python/cpython/issues/112559. + + class MyArgument: + def __init__(self): + self.repr_count = 0 + + def __repr__(self): + self.repr_count += 1 + return super().__repr__() + + argument = MyArgument() + self.assertEqual(0, argument.repr_count) + + handler = self.create_handler_with_partial(argument) + hup = signal.signal(signal.SIGHUP, handler) + self.assertIsInstance(hup, signal.Handlers) + self.assertEqual(signal.getsignal(signal.SIGHUP), handler) + signal.signal(signal.SIGHUP, hup) + self.assertEqual(signal.getsignal(signal.SIGHUP), hup) + self.assertEqual(0, argument.repr_count) + def test_strsignal(self): self.assertIn("Interrupt", signal.strsignal(signal.SIGINT)) self.assertIn("Terminated", signal.strsignal(signal.SIGTERM)) @@ -1318,6 +1344,7 @@ def handler(signum, frame): # Python handler self.assertEqual(len(sigs), N, "Some signals were lost") + @unittest.skipIf(sys.platform == "darwin", "crashes due to system bug (FB13453490)") @unittest.skipUnless(hasattr(signal, "SIGUSR1"), "test needs SIGUSR1") @threading_helper.requires_working_threading() diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 1aa06131f22..1a9c81d0d56 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -18,6 +18,7 @@ import os import re import shutil +import stat import subprocess import sys import sysconfig @@ -194,6 +195,45 @@ def test_addsitedir(self): finally: pth_file.cleanup() + def test_addsitedir_dotfile(self): + pth_file = PthFile('.dotfile') + pth_file.cleanup(prep=True) + try: + pth_file.create() + site.addsitedir(pth_file.base_dir, set()) + self.assertNotIn(site.makepath(pth_file.good_dir_path)[0], sys.path) + self.assertIn(pth_file.base_dir, sys.path) + finally: + pth_file.cleanup() + + @unittest.skipUnless(hasattr(os, 'chflags'), 'test needs os.chflags()') + def test_addsitedir_hidden_flags(self): + pth_file = PthFile() + pth_file.cleanup(prep=True) + try: + pth_file.create() + st = os.stat(pth_file.file_path) + os.chflags(pth_file.file_path, st.st_flags | stat.UF_HIDDEN) + site.addsitedir(pth_file.base_dir, set()) + self.assertNotIn(site.makepath(pth_file.good_dir_path)[0], sys.path) + self.assertIn(pth_file.base_dir, sys.path) + finally: + pth_file.cleanup() + + @unittest.skipUnless(sys.platform == 'win32', 'test needs Windows') + @support.requires_subprocess() + def test_addsitedir_hidden_file_attribute(self): + pth_file = PthFile() + pth_file.cleanup(prep=True) + try: + pth_file.create() + subprocess.check_call(['attrib', '+H', pth_file.file_path]) + site.addsitedir(pth_file.base_dir, set()) + self.assertNotIn(site.makepath(pth_file.good_dir_path)[0], sys.path) + self.assertIn(pth_file.base_dir, sys.path) + finally: + pth_file.cleanup() + # This tests _getuserbase, hence the double underline # to distinguish from a test for getuserbase def test__getuserbase(self): diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index b6d5b8c3d82..4d8e1438deb 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -22,10 +22,9 @@ from test.support import socket_helper from test.support import threading_helper from test.support import asyncore +from test.support import smtpd from unittest.mock import Mock -from . import smtpd - support.requires_working_socket(module=True) diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 86701caf053..4eb5af99d66 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1082,7 +1082,20 @@ def testInterfaceNameIndex(self): 'socket.if_indextoname() not available.') def testInvalidInterfaceIndexToName(self): self.assertRaises(OSError, socket.if_indextoname, 0) + self.assertRaises(OverflowError, socket.if_indextoname, -1) + self.assertRaises(OverflowError, socket.if_indextoname, 2**1000) self.assertRaises(TypeError, socket.if_indextoname, '_DEADBEEF') + if hasattr(socket, 'if_nameindex'): + indices = dict(socket.if_nameindex()) + for index in indices: + index2 = index + 2**32 + if index2 not in indices: + with self.assertRaises((OverflowError, OSError)): + socket.if_indextoname(index2) + for index in 2**32-1, 2**64-1: + if index not in indices: + with self.assertRaises((OverflowError, OSError)): + socket.if_indextoname(index) @unittest.skipUnless(hasattr(socket, 'if_nametoindex'), 'socket.if_nametoindex() not available.') diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 330515a42b3..5648ebdec8a 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2206,14 +2206,15 @@ def _test_get_server_certificate(test, host, port, cert=None): sys.stdout.write("\nVerified certificate for %s:%s is\n%s\n" % (host, port ,pem)) def _test_get_server_certificate_fail(test, host, port): - try: - pem = ssl.get_server_certificate((host, port), ca_certs=CERTFILE) - except ssl.SSLError as x: - #should fail - if support.verbose: - sys.stdout.write("%s\n" % x) - else: - test.fail("Got server certificate %s for %s:%s!" % (pem, host, port)) + with warnings_helper.check_no_resource_warning(test): + try: + pem = ssl.get_server_certificate((host, port), ca_certs=CERTFILE) + except ssl.SSLError as x: + #should fail + if support.verbose: + sys.stdout.write("%s\n" % x) + else: + test.fail("Got server certificate %s for %s:%s!" % (pem, host, port)) from test.ssl_servers import make_https_server @@ -3026,6 +3027,16 @@ def test_check_hostname_idn(self): server_hostname="python.example.org") as s: with self.assertRaises(ssl.CertificateError): s.connect((HOST, server.port)) + with ThreadedEchoServer(context=server_context, chatty=True) as server: + with warnings_helper.check_no_resource_warning(self): + with self.assertRaises(UnicodeError): + context.wrap_socket(socket.socket(), + server_hostname='.pythontest.net') + with ThreadedEchoServer(context=server_context, chatty=True) as server: + with warnings_helper.check_no_resource_warning(self): + with self.assertRaises(UnicodeDecodeError): + context.wrap_socket(socket.socket(), + server_hostname=b'k\xf6nig.idn.pythontest.net') def test_wrong_cert_tls12(self): """Connecting when the server rejects the client's certificate @@ -4882,7 +4893,8 @@ def call_after_accept(conn_to_client): self.assertIsNone(wrap_error.library, msg="attr must exist") finally: # gh-108342: Explicitly break the reference cycle - wrap_error = None + with warnings_helper.check_no_resource_warning(self): + wrap_error = None server = None def test_https_client_non_tls_response_ignored(self): @@ -4931,7 +4943,8 @@ def call_after_accept(conn_to_client): # socket; that fails if the connection is broken. It may seem pointless # to test this. It serves as an illustration of something that we never # want to happen... properly not happening. - with self.assertRaises(OSError): + with warnings_helper.check_no_resource_warning(self), \ + self.assertRaises(OSError): connection.request("HEAD", "/test", headers={"Host": "localhost"}) response = connection.getresponse() diff --git a/Lib/test/test_stat.py b/Lib/test/test_stat.py index 4ba37aed2dc..c77fec3d39d 100644 --- a/Lib/test/test_stat.py +++ b/Lib/test/test_stat.py @@ -145,12 +145,19 @@ def test_mode(self): self.assertEqual(modestr, '-r--r--r--') self.assertEqual(self.statmod.S_IMODE(st_mode), 0o444) else: + os.chmod(TESTFN, 0o500) + st_mode, modestr = self.get_mode() + self.assertEqual(modestr[:3], '-r-') + self.assertS_IS("REG", st_mode) + self.assertEqual(self.statmod.S_IMODE(st_mode), 0o444) + os.chmod(TESTFN, 0o700) st_mode, modestr = self.get_mode() self.assertEqual(modestr[:3], '-rw') self.assertS_IS("REG", st_mode) self.assertEqual(self.statmod.S_IFMT(st_mode), self.statmod.S_IFREG) + self.assertEqual(self.statmod.S_IMODE(st_mode), 0o666) @os_helper.skip_unless_working_chmod def test_directory(self): diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py index 810c5a36e02..05c8afc907a 100644 --- a/Lib/test/test_strptime.py +++ b/Lib/test/test_strptime.py @@ -224,35 +224,55 @@ def test_ValueError(self): else: self.fail("'%s' did not raise ValueError" % bad_format) + msg_week_no_year_or_weekday = r"ISO week directive '%V' must be used with " \ + r"the ISO year directive '%G' and a weekday directive " \ + r"\('%A', '%a', '%w', or '%u'\)." + msg_week_not_compatible = r"ISO week directive '%V' is incompatible with " \ + r"the year directive '%Y'. Use the ISO year '%G' instead." + msg_julian_not_compatible = r"Day of the year directive '%j' is not " \ + r"compatible with ISO year directive '%G'. Use '%Y' instead." + msg_year_no_week_or_weekday = r"ISO year directive '%G' must be used with " \ + r"the ISO week directive '%V' and a weekday directive " \ + r"\('%A', '%a', '%w', or '%u'\)." + + locale_time = _strptime.LocaleTime() + # Ambiguous or incomplete cases using ISO year/week/weekday directives - # 1. ISO week (%V) is specified, but the year is specified with %Y - # instead of %G - with self.assertRaises(ValueError): - _strptime._strptime("1999 50", "%Y %V") - # 2. ISO year (%G) and ISO week (%V) are specified, but weekday is not - with self.assertRaises(ValueError): - _strptime._strptime("1999 51", "%G %V") - # 3. ISO year (%G) and weekday are specified, but ISO week (%V) is not - for w in ('A', 'a', 'w', 'u'): - with self.assertRaises(ValueError): - _strptime._strptime("1999 51","%G %{}".format(w)) - # 4. ISO year is specified alone (e.g. time.strptime('2015', '%G')) - with self.assertRaises(ValueError): - _strptime._strptime("2015", "%G") - # 5. Julian/ordinal day (%j) is specified with %G, but not %Y - with self.assertRaises(ValueError): - _strptime._strptime("1999 256", "%G %j") - # 6. Invalid ISO weeks - invalid_iso_weeks = [ - "2019-00-1", - "2019-54-1", - "2021-53-1", + subtests = [ + # 1. ISO week (%V) is specified, but the year is specified with %Y + # instead of %G + ("1999 50", "%Y %V", msg_week_no_year_or_weekday), + ("1999 50 5", "%Y %V %u", msg_week_not_compatible), + # 2. ISO year (%G) and ISO week (%V) are specified, but weekday is not + ("1999 51", "%G %V", msg_year_no_week_or_weekday), + # 3. ISO year (%G) and weekday are specified, but ISO week (%V) is not + ("1999 {}".format(locale_time.f_weekday[5]), "%G %A", + msg_year_no_week_or_weekday), + ("1999 {}".format(locale_time.a_weekday[5]), "%G %a", + msg_year_no_week_or_weekday), + ("1999 5", "%G %w", msg_year_no_week_or_weekday), + ("1999 5", "%G %u", msg_year_no_week_or_weekday), + # 4. ISO year is specified alone (e.g. time.strptime('2015', '%G')) + ("2015", "%G", msg_year_no_week_or_weekday), + # 5. Julian/ordinal day (%j) is specified with %G, but not %Y + ("1999 256", "%G %j", msg_julian_not_compatible), + ("1999 50 5 256", "%G %V %u %j", msg_julian_not_compatible), + # ISO week specified alone + ("50", "%V", msg_week_no_year_or_weekday), + # ISO year is unspecified, falling back to year + ("50 5", "%V %u", msg_week_no_year_or_weekday), + # 6. Invalid ISO weeks + ("2019-00-1", "%G-%V-%u", + "time data '2019-00-1' does not match format '%G-%V-%u'"), + ("2019-54-1", "%G-%V-%u", + "time data '2019-54-1' does not match format '%G-%V-%u'"), + ("2021-53-1", "%G-%V-%u", "Invalid week: 53"), ] - for invalid_iso_dtstr in invalid_iso_weeks: - with self.subTest(invalid_iso_dtstr): - with self.assertRaises(ValueError): - _strptime._strptime(invalid_iso_dtstr, "%G-%V-%u") + for (data_string, format, message) in subtests: + with self.subTest(data_string=data_string, format=format): + with self.assertRaisesRegex(ValueError, message): + _strptime._strptime(data_string, format) def test_strptime_exception_context(self): # check that this doesn't chain exceptions needlessly (see #17572) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 59b989317a3..0a605158e55 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -795,6 +795,19 @@ def test_env(self): stdout, stderr = p.communicate() self.assertEqual(stdout, b"orange") + @unittest.skipUnless(sys.platform == "win32", "Windows only issue") + def test_win32_duplicate_envs(self): + newenv = os.environ.copy() + newenv["fRUit"] = "cherry" + newenv["fruit"] = "lemon" + newenv["FRUIT"] = "orange" + newenv["frUit"] = "banana" + with subprocess.Popen(["CMD", "/c", "SET", "fruit"], + stdout=subprocess.PIPE, + env=newenv) as p: + stdout, _ = p.communicate() + self.assertEqual(stdout.strip(), b"frUit=banana") + # Windows requires at least the SYSTEMROOT environment variable to start # Python @unittest.skipIf(sys.platform == 'win32', @@ -826,6 +839,26 @@ def is_env_var_to_ignore(n): if not is_env_var_to_ignore(k)] self.assertEqual(child_env_names, []) + @unittest.skipIf(sysconfig.get_config_var('Py_ENABLE_SHARED') == 1, + 'The Python shared library cannot be loaded ' + 'without some system environments.') + @unittest.skipIf(check_sanitizer(address=True), + 'AddressSanitizer adds to the environment.') + def test_one_environment_variable(self): + newenv = {'fruit': 'orange'} + cmd = [sys.executable, '-c', + 'import sys,os;' + 'sys.stdout.write("fruit="+os.getenv("fruit"))'] + if sys.platform == "win32": + cmd = ["CMD", "/c", "SET", "fruit"] + with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=newenv) as p: + stdout, stderr = p.communicate() + if p.returncode and support.verbose: + print("STDOUT:", stdout.decode("ascii", "replace")) + print("STDERR:", stderr.decode("ascii", "replace")) + self.assertEqual(p.returncode, 0) + self.assertEqual(stdout.strip(), b"fruit=orange") + def test_invalid_cmd(self): # null character in the command name cmd = sys.executable + '\0' @@ -866,6 +899,19 @@ def test_invalid_env(self): stdout, stderr = p.communicate() self.assertEqual(stdout, b"orange=lemon") + @unittest.skipUnless(sys.platform == "win32", "Windows only issue") + def test_win32_invalid_env(self): + # '=' in the environment variable name + newenv = os.environ.copy() + newenv["FRUIT=VEGETABLE"] = "cabbage" + with self.assertRaises(ValueError): + subprocess.Popen(ZERO_RETURN_CMD, env=newenv) + + newenv = os.environ.copy() + newenv["==FRUIT"] = "cabbage" + with self.assertRaises(ValueError): + subprocess.Popen(ZERO_RETURN_CMD, env=newenv) + def test_communicate_stdin(self): p = subprocess.Popen([sys.executable, "-c", 'import sys;' @@ -1964,9 +2010,9 @@ def test_process_group_0(self): @unittest.skipUnless(hasattr(os, 'setreuid'), 'no setreuid on platform') def test_user(self): - # For code coverage of the user parameter. We don't care if we get an - # EPERM error from it depending on the test execution environment, that - # still indicates that it was called. + # For code coverage of the user parameter. We don't care if we get a + # permission error from it depending on the test execution environment, + # that still indicates that it was called. uid = os.geteuid() test_users = [65534 if uid != 65534 else 65533, uid] @@ -1990,11 +2036,11 @@ def test_user(self): "import os; print(os.getuid())"], user=user, close_fds=close_fds) - except PermissionError: # (EACCES, EPERM) - pass - except OSError as e: - if e.errno not in (errno.EACCES, errno.EPERM): - raise + except PermissionError as e: # (EACCES, EPERM) + if e.errno == errno.EACCES: + self.assertEqual(e.filename, sys.executable) + else: + self.assertIsNone(e.filename) else: if isinstance(user, str): user_uid = pwd.getpwnam(user).pw_uid @@ -2038,8 +2084,8 @@ def test_group(self): "import os; print(os.getgid())"], group=group, close_fds=close_fds) - except PermissionError: # (EACCES, EPERM) - pass + except PermissionError as e: # (EACCES, EPERM) + self.assertIsNone(e.filename) else: if isinstance(group, str): group_gid = grp.getgrnam(group).gr_gid @@ -2087,7 +2133,8 @@ def _test_extra_groups_impl(self, *, gid, group_list): [sys.executable, "-c", "import os, sys, json; json.dump(os.getgroups(), sys.stdout)"], extra_groups=group_list) - except PermissionError: + except PermissionError as e: + self.assertIsNone(e.filename) self.skipTest("setgroup() EPERM; this test may require root.") else: parent_groups = os.getgroups() diff --git a/Lib/test/test_super.py b/Lib/test/test_super.py index 43162c540b5..3ea01413c8e 100644 --- a/Lib/test/test_super.py +++ b/Lib/test/test_super.py @@ -1,8 +1,9 @@ """Unit tests for zero-argument super() & related machinery.""" +import textwrap import unittest from unittest.mock import patch -from test import shadowed_super +from test.support import import_helper ADAPTIVE_WARMUP_DELAY = 2 @@ -342,7 +343,20 @@ def test_super_argtype(self): super(1, int) def test_shadowed_global(self): + source = textwrap.dedent( + """ + class super: + msg = "truly super" + + class C: + def method(self): + return super().msg + """, + ) + with import_helper.ready_to_import(name="shadowed_super", source=source): + import shadowed_super self.assertEqual(shadowed_super.C().method(), "truly super") + import_helper.unload("shadowed_super") def test_shadowed_local(self): class super: diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 3005d0547fe..d8f1ee5f8af 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1995,6 +1995,7 @@ def f(x: *b) import re import doctest +import textwrap import unittest from test import support @@ -2241,6 +2242,31 @@ def test_nested_named_except_blocks(self): code += f"{' '*4*12}pass" self._check_error(code, "too many statically nested blocks") + @support.cpython_only + def test_with_statement_many_context_managers(self): + # See gh-113297 + + def get_code(n): + code = textwrap.dedent(""" + def bug(): + with ( + a + """) + for i in range(n): + code += f" as a{i}, a\n" + code += "): yield a" + return code + + CO_MAXBLOCKS = 20 # static nesting limit of the compiler + + for n in range(CO_MAXBLOCKS): + with self.subTest(f"within range: {n=}"): + compile(get_code(n), "", "exec") + + for n in range(CO_MAXBLOCKS, CO_MAXBLOCKS + 5): + with self.subTest(f"out of range: {n=}"): + self._check_error(get_code(n), "too many statically nested blocks") + def test_barry_as_flufl_with_syntax_errors(self): # The "barry_as_flufl" rule can produce some "bugs-at-a-distance" if # is reading the wrong token in the presence of syntax errors later @@ -2296,9 +2322,11 @@ def test_error_parenthesis(self): """ self._check_error(code, "parenthesis '\\)' does not match opening parenthesis '\\['") + self._check_error("match y:\n case e(e=v,v,", " was never closed") + # Examples with dencodings s = b'# coding=latin\n(aaaaaaaaaaaaaaaaa\naaaaaaaaaaa\xb5' - self._check_error(s, "'\(' was never closed") + self._check_error(s, r"'\(' was never closed") def test_error_string_literal(self): diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index c5fc76dc020..71489ea493f 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -15,6 +15,7 @@ import unittest.mock import tarfile +from test import archiver_tests from test import support from test.support import os_helper from test.support import script_helper @@ -3429,7 +3430,7 @@ def expect_file(self, name, type=None, symlink_to=None, mode=None, path = pathlib.Path(os.path.normpath(self.destdir / name)) self.assertIn(path, self.expected_paths) self.expected_paths.remove(path) - if mode is not None and os_helper.can_chmod(): + if mode is not None and os_helper.can_chmod() and os.name != 'nt': got = stat.filemode(stat.S_IMODE(path.stat().st_mode)) self.assertEqual(got, mode) if type is None and isinstance(name, str) and name.endswith('/'): @@ -4089,6 +4090,38 @@ def valueerror_filter(tarinfo, path): self.expect_exception(TypeError) # errorlevel is not int +class OverwriteTests(archiver_tests.OverwriteTests, unittest.TestCase): + testdir = os.path.join(TEMPDIR, "testoverwrite") + + @classmethod + def setUpClass(cls): + p = cls.ar_with_file = os.path.join(TEMPDIR, 'tar-with-file.tar') + cls.addClassCleanup(os_helper.unlink, p) + with tarfile.open(p, 'w') as tar: + t = tarfile.TarInfo('test') + t.size = 10 + tar.addfile(t, io.BytesIO(b'newcontent')) + + p = cls.ar_with_dir = os.path.join(TEMPDIR, 'tar-with-dir.tar') + cls.addClassCleanup(os_helper.unlink, p) + with tarfile.open(p, 'w') as tar: + tar.addfile(tar.gettarinfo(os.curdir, 'test')) + + p = os.path.join(TEMPDIR, 'tar-with-implicit-dir.tar') + cls.ar_with_implicit_dir = p + cls.addClassCleanup(os_helper.unlink, p) + with tarfile.open(p, 'w') as tar: + t = tarfile.TarInfo('test/file') + t.size = 10 + tar.addfile(t, io.BytesIO(b'newcontent')) + + def open(self, path): + return tarfile.open(path, 'r') + + def extractall(self, ar): + ar.extractall(self.testdir, filter='fully_trusted') + + def setUpModule(): os_helper.unlink(TEMPDIR) os.makedirs(TEMPDIR) diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 756d5e329fc..00d9e591c76 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -115,6 +115,7 @@ def tearDown(self): class ThreadTests(BaseTestCase): + maxDiff = 9999 @cpython_only def test_name(self): @@ -627,19 +628,25 @@ def test_main_thread_after_fork(self): import os, threading from test import support + ident = threading.get_ident() pid = os.fork() if pid == 0: + print("current ident", threading.get_ident() == ident) main = threading.main_thread() - print(main.name) - print(main.ident == threading.current_thread().ident) - print(main.ident == threading.get_ident()) + print("main", main.name) + print("main ident", main.ident == ident) + print("current is main", threading.current_thread() is main) else: support.wait_process(pid, exitcode=0) """ _, out, err = assert_python_ok("-c", code) data = out.decode().replace('\r', '') self.assertEqual(err, b"") - self.assertEqual(data, "MainThread\nTrue\nTrue\n") + self.assertEqual(data, + "current ident True\n" + "main MainThread\n" + "main ident True\n" + "current is main True\n") @skip_unless_reliable_fork @unittest.skipUnless(hasattr(os, 'waitpid'), "test needs os.waitpid()") @@ -649,15 +656,17 @@ def test_main_thread_after_fork_from_nonmain_thread(self): from test import support def func(): + ident = threading.get_ident() with warnings.catch_warnings(record=True) as ws: warnings.filterwarnings( "always", category=DeprecationWarning) pid = os.fork() if pid == 0: + print("current ident", threading.get_ident() == ident) main = threading.main_thread() - print(main.name) - print(main.ident == threading.current_thread().ident) - print(main.ident == threading.get_ident()) + print("main", main.name, type(main).__name__) + print("main ident", main.ident == ident) + print("current is main", threading.current_thread() is main) # stdout is fully buffered because not a tty, # we have to flush before exit. sys.stdout.flush() @@ -673,7 +682,80 @@ def func(): _, out, err = assert_python_ok("-c", code) data = out.decode().replace('\r', '') self.assertEqual(err.decode('utf-8'), "") - self.assertEqual(data, "Thread-1 (func)\nTrue\nTrue\n") + self.assertEqual(data, + "current ident True\n" + "main Thread-1 (func) Thread\n" + "main ident True\n" + "current is main True\n" + ) + + @unittest.skipIf(sys.platform in platforms_to_skip, "due to known OS bug") + @support.requires_fork() + @unittest.skipUnless(hasattr(os, 'waitpid'), "test needs os.waitpid()") + def test_main_thread_after_fork_from_foreign_thread(self, create_dummy=False): + code = """if 1: + import os, threading, sys, traceback, _thread + from test import support + + def func(lock): + ident = threading.get_ident() + if %s: + # call current_thread() before fork to allocate DummyThread + current = threading.current_thread() + print("current", current.name, type(current).__name__) + print("ident in _active", ident in threading._active) + # flush before fork, so child won't flush it again + sys.stdout.flush() + pid = os.fork() + if pid == 0: + print("current ident", threading.get_ident() == ident) + main = threading.main_thread() + print("main", main.name, type(main).__name__) + print("main ident", main.ident == ident) + print("current is main", threading.current_thread() is main) + print("_dangling", [t.name for t in list(threading._dangling)]) + # stdout is fully buffered because not a tty, + # we have to flush before exit. + sys.stdout.flush() + try: + threading._shutdown() + os._exit(0) + except: + traceback.print_exc() + sys.stderr.flush() + os._exit(1) + else: + try: + support.wait_process(pid, exitcode=0) + except Exception: + # avoid 'could not acquire lock for + # <_io.BufferedWriter name=''> at interpreter shutdown,' + traceback.print_exc() + sys.stderr.flush() + finally: + lock.release() + + join_lock = _thread.allocate_lock() + join_lock.acquire() + th = _thread.start_new_thread(func, (join_lock,)) + join_lock.acquire() + """ % create_dummy + # "DeprecationWarning: This process is multi-threaded, use of fork() + # may lead to deadlocks in the child" + _, out, err = assert_python_ok("-W", "ignore::DeprecationWarning", "-c", code) + data = out.decode().replace('\r', '') + self.assertEqual(err.decode(), "") + self.assertEqual(data, + ("current Dummy-1 _DummyThread\n" if create_dummy else "") + + f"ident in _active {create_dummy!s}\n" + + "current ident True\n" + "main MainThread _MainThread\n" + "main ident True\n" + "current is main True\n" + "_dangling ['MainThread']\n") + + def test_main_thread_after_fork_from_dummy_thread(self, create_dummy=False): + self.test_main_thread_after_fork_from_foreign_thread(create_dummy=True) def test_main_thread_during_shutdown(self): # bpo-31516: current_thread() should still point to the main thread diff --git a/Lib/test/test_tkinter/test_misc.py b/Lib/test/test_tkinter/test_misc.py index a84bb02b88c..62daf1cdc5c 100644 --- a/Lib/test/test_tkinter/test_misc.py +++ b/Lib/test/test_tkinter/test_misc.py @@ -227,6 +227,18 @@ def assertApprox(col1, col2): with self.assertRaises(tkinter.TclError): rgb((111, 78, 55)) + def test_winfo_pathname(self): + t = tkinter.Toplevel(self.root) + w = tkinter.Button(t) + wid = w.winfo_id() + self.assertIsInstance(wid, int) + self.assertEqual(self.root.winfo_pathname(hex(wid)), str(w)) + self.assertEqual(self.root.winfo_pathname(hex(wid), displayof=None), str(w)) + self.assertEqual(self.root.winfo_pathname(hex(wid), displayof=t), str(w)) + self.assertEqual(self.root.winfo_pathname(wid), str(w)) + self.assertEqual(self.root.winfo_pathname(wid, displayof=None), str(w)) + self.assertEqual(self.root.winfo_pathname(wid, displayof=t), str(w)) + def test_event_repr_defaults(self): e = tkinter.Event() e.serial = 12345 @@ -640,6 +652,101 @@ def test3(e): pass self.assertCommandExist(funcid2) self.assertCommandExist(funcid3) + def _test_tag_bind(self, w): + tag = 'sel' + event = '' + w.pack() + self.assertRaises(TypeError, w.tag_bind) + tag_bind = w._tag_bind if isinstance(w, tkinter.Text) else w.tag_bind + if isinstance(w, tkinter.Text): + self.assertRaises(TypeError, w.tag_bind, tag) + self.assertRaises(TypeError, w.tag_bind, tag, event) + self.assertEqual(tag_bind(tag), ()) + self.assertEqual(tag_bind(tag, event), '') + def test1(e): pass + def test2(e): pass + + funcid = w.tag_bind(tag, event, test1) + self.assertEqual(tag_bind(tag), (event,)) + script = tag_bind(tag, event) + self.assertIn(funcid, script) + self.assertCommandExist(funcid) + + funcid2 = w.tag_bind(tag, event, test2, add=True) + script = tag_bind(tag, event) + self.assertIn(funcid, script) + self.assertIn(funcid2, script) + self.assertCommandExist(funcid) + self.assertCommandExist(funcid2) + + def _test_tag_unbind(self, w): + tag = 'sel' + event = '' + w.pack() + tag_bind = w._tag_bind if isinstance(w, tkinter.Text) else w.tag_bind + self.assertEqual(tag_bind(tag), ()) + self.assertEqual(tag_bind(tag, event), '') + def test1(e): pass + def test2(e): pass + + funcid = w.tag_bind(tag, event, test1) + funcid2 = w.tag_bind(tag, event, test2, add=True) + + self.assertRaises(TypeError, w.tag_unbind, tag) + w.tag_unbind(tag, event) + self.assertEqual(tag_bind(tag, event), '') + self.assertEqual(tag_bind(tag), ()) + + def _test_tag_bind_rebind(self, w): + tag = 'sel' + event = '' + w.pack() + tag_bind = w._tag_bind if isinstance(w, tkinter.Text) else w.tag_bind + self.assertEqual(tag_bind(tag), ()) + self.assertEqual(tag_bind(tag, event), '') + def test1(e): pass + def test2(e): pass + def test3(e): pass + + funcid = w.tag_bind(tag, event, test1) + funcid2 = w.tag_bind(tag, event, test2, add=True) + script = tag_bind(tag, event) + self.assertIn(funcid2, script) + self.assertIn(funcid, script) + self.assertCommandExist(funcid) + self.assertCommandExist(funcid2) + + funcid3 = w.tag_bind(tag, event, test3) + script = tag_bind(tag, event) + self.assertNotIn(funcid, script) + self.assertNotIn(funcid2, script) + self.assertIn(funcid3, script) + self.assertCommandExist(funcid3) + + def test_canvas_tag_bind(self): + c = tkinter.Canvas(self.frame) + self._test_tag_bind(c) + + def test_canvas_tag_unbind(self): + c = tkinter.Canvas(self.frame) + self._test_tag_unbind(c) + + def test_canvas_tag_bind_rebind(self): + c = tkinter.Canvas(self.frame) + self._test_tag_bind_rebind(c) + + def test_text_tag_bind(self): + t = tkinter.Text(self.frame) + self._test_tag_bind(t) + + def test_text_tag_unbind(self): + t = tkinter.Text(self.frame) + self._test_tag_unbind(t) + + def test_text_tag_bind_rebind(self): + t = tkinter.Text(self.frame) + self._test_tag_bind_rebind(t) + def test_bindtags(self): f = self.frame self.assertEqual(self.root.bindtags(), ('.', 'Tk', 'all')) diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py index bbbc337b188..2886bceb7ba 100644 --- a/Lib/test/test_tokenize.py +++ b/Lib/test/test_tokenize.py @@ -620,6 +620,16 @@ def test_string(self): OP '}' (3, 0) (3, 1) FSTRING_MIDDLE '__' (3, 1) (3, 3) FSTRING_END "'" (3, 3) (3, 4) + """) + + self.check_tokenize("""\ + '''Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli + aktualni pracownicy, obecni pracownicy''' +""", """\ + INDENT ' ' (1, 0) (1, 4) + STRING "'''Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli\\n aktualni pracownicy, obecni pracownicy'''" (1, 4) (2, 45) + NEWLINE '\\n' (2, 45) (2, 46) + DEDENT '' (3, 0) (3, 0) """) def test_function(self): diff --git a/Lib/test/test_tools/test_freeze.py b/Lib/test/test_tools/test_freeze.py index 671ec2961e7..0e7ed67de71 100644 --- a/Lib/test/test_tools/test_freeze.py +++ b/Lib/test/test_tools/test_freeze.py @@ -14,6 +14,8 @@ @support.requires_zlib() @unittest.skipIf(sys.platform.startswith('win'), 'not supported on Windows') +@unittest.skipIf(sys.platform == 'darwin' and sys._framework, + 'not supported for frameworks builds on macOS') @support.skip_if_buildbot('not all buildbots have enough space') # gh-103053: Skip test if Python is built with Profile Guided Optimization # (PGO), since the test is just too slow in this case. diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 035fd5f9aff..5f433407dd7 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -1654,6 +1654,21 @@ def __repr__(self): err_msg = "b'please do not show me as numbers'" self.assertEqual(self.get_report(e), vanilla + err_msg + '\n') + # an exception with a broken __getattr__ raising a non expected error + class BrokenException(Exception): + broken = False + def __getattr__(self, name): + if self.broken: + raise ValueError(f'no {name}') + raise AttributeError(name) + + e = BrokenException(123) + vanilla = self.get_report(e) + e.broken = True + self.assertEqual( + self.get_report(e), + vanilla + "Ignored error getting __notes__: ValueError('no __notes__')\n") + def test_exception_with_multiple_notes(self): for e in [ValueError(42), SyntaxError('bad syntax')]: with self.subTest(e=e): diff --git a/Lib/test/test_tty.py b/Lib/test/test_tty.py index af20864aac3..4cb730c226f 100644 --- a/Lib/test/test_tty.py +++ b/Lib/test/test_tty.py @@ -19,7 +19,6 @@ def setUp(self): self.addCleanup(termios.tcsetattr, self.fd, termios.TCSAFLUSH, self.mode) def check_cbreak(self, mode): - self.assertEqual(mode[0] & termios.ICRNL, 0) self.assertEqual(mode[3] & termios.ECHO, 0) self.assertEqual(mode[3] & termios.ICANON, 0) self.assertEqual(mode[6][termios.VMIN], 1) @@ -56,6 +55,14 @@ def test_cfmakecbreak(self): self.assertEqual(mode[2], self.mode[2]) self.assertEqual(mode[4], self.mode[4]) self.assertEqual(mode[5], self.mode[5]) + mode[tty.IFLAG] |= termios.ICRNL + tty.cfmakecbreak(mode) + self.assertEqual(mode[tty.IFLAG] & termios.ICRNL, termios.ICRNL, + msg="ICRNL should not be cleared by cbreak") + mode[tty.IFLAG] &= ~termios.ICRNL + tty.cfmakecbreak(mode) + self.assertEqual(mode[tty.IFLAG] & termios.ICRNL, 0, + msg="ICRNL should not be set by cbreak") def test_setraw(self): mode0 = termios.tcgetattr(self.fd) @@ -74,6 +81,9 @@ def test_setcbreak(self): self.assertEqual(mode1, mode0) mode2 = termios.tcgetattr(self.fd) self.check_cbreak(mode2) + ICRNL = termios.ICRNL + self.assertEqual(mode2[tty.IFLAG] & ICRNL, mode0[tty.IFLAG] & ICRNL, + msg="ICRNL should not be altered by cbreak") mode3 = tty.setcbreak(self.fd, termios.TCSANOW) self.assertEqual(mode3, mode2) tty.setcbreak(self.stream) diff --git a/Lib/test/test_type_cache.py b/Lib/test/test_type_cache.py index 72587ecc11b..2ebaa47fd03 100644 --- a/Lib/test/test_type_cache.py +++ b/Lib/test/test_type_cache.py @@ -1,5 +1,6 @@ """ Tests for the internal type cache in CPython. """ import unittest +import dis from test import support from test.support import import_helper try: @@ -8,8 +9,11 @@ _clear_type_cache = None # Skip this test if the _testcapi module isn't available. -type_get_version = import_helper.import_module('_testcapi').type_get_version -type_assign_version = import_helper.import_module('_testcapi').type_assign_version +_testcapi = import_helper.import_module("_testcapi") +type_get_version = _testcapi.type_get_version +type_assign_specific_version_unsafe = _testcapi.type_assign_specific_version_unsafe +type_assign_version = _testcapi.type_assign_version +type_modified = _testcapi.type_modified @support.cpython_only @@ -56,6 +60,144 @@ class C: self.assertNotEqual(type_get_version(C), 0) self.assertNotEqual(type_get_version(C), c_ver) + def test_type_assign_specific_version(self): + """meta-test for type_assign_specific_version_unsafe""" + class C: + pass + + type_assign_version(C) + orig_version = type_get_version(C) + if orig_version == 0: + self.skipTest("Could not assign a valid type version") + + type_modified(C) + type_assign_specific_version_unsafe(C, orig_version + 5) + type_assign_version(C) # this should do nothing + + new_version = type_get_version(C) + self.assertEqual(new_version, orig_version + 5) + + _clear_type_cache() + + +@support.cpython_only +class TypeCacheWithSpecializationTests(unittest.TestCase): + def tearDown(self): + _clear_type_cache() + + def _assign_valid_version_or_skip(self, type_): + type_modified(type_) + type_assign_version(type_) + if type_get_version(type_) == 0: + self.skipTest("Could not assign valid type version") + + def _assign_and_check_version_0(self, user_type): + type_modified(user_type) + type_assign_specific_version_unsafe(user_type, 0) + self.assertEqual(type_get_version(user_type), 0) + + def _all_opnames(self, func): + return set(instr.opname for instr in dis.Bytecode(func, adaptive=True)) + + def _check_specialization(self, func, arg, opname, *, should_specialize): + for _ in range(100): + func(arg) + + if should_specialize: + self.assertNotIn(opname, self._all_opnames(func)) + else: + self.assertIn(opname, self._all_opnames(func)) + + def test_class_load_attr_specialization_user_type(self): + class A: + def foo(self): + pass + + self._assign_valid_version_or_skip(A) + + def load_foo_1(type_): + type_.foo + + self._check_specialization(load_foo_1, A, "LOAD_ATTR", should_specialize=True) + del load_foo_1 + + self._assign_and_check_version_0(A) + + def load_foo_2(type_): + return type_.foo + + self._check_specialization(load_foo_2, A, "LOAD_ATTR", should_specialize=False) + + def test_class_load_attr_specialization_static_type(self): + self._assign_valid_version_or_skip(str) + self._assign_valid_version_or_skip(bytes) + + def get_capitalize_1(type_): + return type_.capitalize + + self._check_specialization(get_capitalize_1, str, "LOAD_ATTR", should_specialize=True) + self.assertEqual(get_capitalize_1(str)('hello'), 'Hello') + self.assertEqual(get_capitalize_1(bytes)(b'hello'), b'Hello') + del get_capitalize_1 + + # Permanently overflow the static type version counter, and force str and bytes + # to have tp_version_tag == 0 + for _ in range(2**16): + type_modified(str) + type_assign_version(str) + type_modified(bytes) + type_assign_version(bytes) + + self.assertEqual(type_get_version(str), 0) + self.assertEqual(type_get_version(bytes), 0) + + def get_capitalize_2(type_): + return type_.capitalize + + self._check_specialization(get_capitalize_2, str, "LOAD_ATTR", should_specialize=False) + self.assertEqual(get_capitalize_2(str)('hello'), 'Hello') + self.assertEqual(get_capitalize_2(bytes)(b'hello'), b'Hello') + + def test_property_load_attr_specialization_user_type(self): + class G: + @property + def x(self): + return 9 + + self._assign_valid_version_or_skip(G) + + def load_x_1(instance): + instance.x + + self._check_specialization(load_x_1, G(), "LOAD_ATTR", should_specialize=True) + del load_x_1 + + self._assign_and_check_version_0(G) + + def load_x_2(instance): + instance.x + + self._check_specialization(load_x_2, G(), "LOAD_ATTR", should_specialize=False) + + def test_store_attr_specialization_user_type(self): + class B: + __slots__ = ("bar",) + + self._assign_valid_version_or_skip(B) + + def store_bar_1(type_): + type_.bar = 10 + + self._check_specialization(store_bar_1, B(), "STORE_ATTR", should_specialize=True) + del store_bar_1 + + self._assign_and_check_version_0(B) + + def store_bar_2(type_): + type_.bar = 10 + + self._check_specialization(store_bar_2, B(), "STORE_ATTR", should_specialize=False) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index f2efee90dc0..b86392f43cc 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -1,6 +1,6 @@ # Python test set -- part 6, built-in types -from test.support import run_with_locale, cpython_only +from test.support import run_with_locale, cpython_only, MISSING_C_DOCSTRINGS import collections.abc from collections import namedtuple import copy @@ -597,6 +597,8 @@ def test_slot_wrapper_types(self): self.assertIsInstance(object.__lt__, types.WrapperDescriptorType) self.assertIsInstance(int.__lt__, types.WrapperDescriptorType) + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_dunder_get_signature(self): sig = inspect.signature(object.__init__.__get__) self.assertEqual(list(sig.parameters), ["instance", "owner"]) diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 5681298d803..05bc6c47bb8 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3449,8 +3449,8 @@ def meth(self): pass self.assertNotIn("__protocol_attrs__", vars(NonP)) self.assertNotIn("__protocol_attrs__", vars(NonPR)) - self.assertNotIn("__callable_proto_members_only__", vars(NonP)) - self.assertNotIn("__callable_proto_members_only__", vars(NonPR)) + self.assertNotIn("__non_callable_proto_members__", vars(NonP)) + self.assertNotIn("__non_callable_proto_members__", vars(NonPR)) acceptable_extra_attrs = { '_is_protocol', '_is_runtime_protocol', '__parameters__', @@ -3995,6 +3995,40 @@ def method(self) -> None: ... self.assertNotIsInstance(42, ProtocolWithMixedMembers) + def test_nonruntime_protocol_interaction_with_evil_classproperty(self): + class classproperty: + def __get__(self, instance, type): + raise RuntimeError("NO") + + class Commentable(Protocol): + evil = classproperty() + + # recognised as a protocol attr, + # but not actually accessed by the protocol metaclass + # (which would raise RuntimeError) for non-runtime protocols. + # See gh-113320 + self.assertEqual(Commentable.__protocol_attrs__, {"evil"}) + + def test_runtime_protocol_interaction_with_evil_classproperty(self): + class CustomError(Exception): pass + + class classproperty: + def __get__(self, instance, type): + raise CustomError + + with self.assertRaises(TypeError) as cm: + @runtime_checkable + class Commentable(Protocol): + evil = classproperty() + + exc = cm.exception + self.assertEqual( + exc.args[0], + "Failed to determine whether protocol member 'evil' is a method member" + ) + self.assertIs(type(exc.__cause__), CustomError) + + class GenericTests(BaseTestCase): def test_basics(self): diff --git a/Lib/test/test_unittest/test_discovery.py b/Lib/test/test_unittest/test_discovery.py index 50565361bb6..3eca811d3d5 100644 --- a/Lib/test/test_unittest/test_discovery.py +++ b/Lib/test/test_unittest/test_discovery.py @@ -571,7 +571,7 @@ def _get_module_from_name(name): result = unittest.TestResult() suite.run(result) self.assertEqual(len(result.skipped), 1) - self.assertEqual(result.testsRun, 0) + self.assertEqual(result.testsRun, 1) self.assertEqual(import_calls, ['my_package']) # Check picklability diff --git a/Lib/test/test_unittest/test_program.py b/Lib/test/test_unittest/test_program.py index f6d52f93e4a..d8f5d3692a5 100644 --- a/Lib/test/test_unittest/test_program.py +++ b/Lib/test/test_unittest/test_program.py @@ -167,6 +167,18 @@ def test_ExitAsDefault(self): 'expected failures=1, unexpected successes=1)\n') self.assertTrue(out.endswith(expected)) + def test_ExitSkippedSuite(self): + stream = BufferedWriter() + with self.assertRaises(SystemExit) as cm: + unittest.main( + argv=["foobar", "-k", "testSkipped"], + testRunner=unittest.TextTestRunner(stream=stream), + testLoader=self.TestLoader(self.FooBar)) + self.assertEqual(cm.exception.code, 0) + out = stream.getvalue() + expected = '\n\nOK (skipped=1)\n' + self.assertTrue(out.endswith(expected)) + def test_ExitEmptySuite(self): stream = BufferedWriter() with self.assertRaises(SystemExit) as cm: diff --git a/Lib/test/test_unittest/test_skipping.py b/Lib/test/test_unittest/test_skipping.py index 1a6af06d32b..f146dcac18e 100644 --- a/Lib/test/test_unittest/test_skipping.py +++ b/Lib/test/test_unittest/test_skipping.py @@ -103,16 +103,16 @@ def test_dont_skip(self): pass result = LoggingResult(events) self.assertIs(suite.run(result), result) self.assertEqual(len(result.skipped), 1) - expected = ['addSkip', 'stopTest', 'startTest', - 'addSuccess', 'stopTest'] + expected = ['startTest', 'addSkip', 'stopTest', + 'startTest', 'addSuccess', 'stopTest'] self.assertEqual(events, expected) - self.assertEqual(result.testsRun, 1) + self.assertEqual(result.testsRun, 2) self.assertEqual(result.skipped, [(test_do_skip, "testing")]) self.assertTrue(result.wasSuccessful()) events = [] result = test_do_skip.run() - self.assertEqual(events, ['startTestRun', 'addSkip', + self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip', 'stopTest', 'stopTestRun']) self.assertEqual(result.skipped, [(test_do_skip, "testing")]) @@ -135,13 +135,13 @@ def test_1(self): test = Foo("test_1") suite = unittest.TestSuite([test]) self.assertIs(suite.run(result), result) - self.assertEqual(events, ['addSkip', 'stopTest']) + self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) self.assertEqual(result.skipped, [(test, "testing")]) self.assertEqual(record, []) events = [] result = test.run() - self.assertEqual(events, ['startTestRun', 'addSkip', + self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip', 'stopTest', 'stopTestRun']) self.assertEqual(result.skipped, [(test, "testing")]) self.assertEqual(record, []) diff --git a/Lib/test/test_winconsoleio.py b/Lib/test/test_winconsoleio.py index 70a85552cc0..cf8b105823b 100644 --- a/Lib/test/test_winconsoleio.py +++ b/Lib/test/test_winconsoleio.py @@ -6,7 +6,7 @@ import sys import tempfile import unittest -from test.support import os_helper +from test.support import os_helper, requires_resource if sys.platform != 'win32': raise unittest.SkipTest("test only relevant on win32") @@ -140,6 +140,7 @@ def assertStdinRoundTrip(self, text): sys.stdin = old_stdin self.assertEqual(actual, text) + @requires_resource('console') def test_input(self): # ASCII self.assertStdinRoundTrip('abc123') @@ -154,6 +155,7 @@ def test_input_nonbmp(self): # Non-BMP self.assertStdinRoundTrip('\U00100000\U0010ffff\U0010fffd') + @requires_resource('console') def test_partial_reads(self): # Test that reading less than 1 full character works when stdin # contains multibyte UTF-8 sequences @@ -189,6 +191,7 @@ def test_partial_surrogate_reads(self): self.assertEqual(actual, expected, 'stdin.read({})'.format(read_count)) + @requires_resource('console') def test_ctrl_z(self): with open('CONIN$', 'rb', buffering=0) as stdin: source = '\xC4\x1A\r\n'.encode('utf-16-le') diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 53a4e9f821d..b50898f1d18 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -536,7 +536,9 @@ def test_iterparse(self): iterparse = ET.iterparse context = iterparse(SIMPLE_XMLFILE) + self.assertIsNone(context.root) action, elem = next(context) + self.assertIsNone(context.root) self.assertEqual((action, elem.tag), ('end', 'element')) self.assertEqual([(action, elem.tag) for action, elem in context], [ ('end', 'element'), diff --git a/Lib/test/test_zipfile/_path/test_path.py b/Lib/test/test_zipfile/_path/test_path.py index c66cb3cba69..171ab6fdb5f 100644 --- a/Lib/test/test_zipfile/_path/test_path.py +++ b/Lib/test/test_zipfile/_path/test_path.py @@ -577,3 +577,15 @@ def test_getinfo_missing(self, alpharep): zipfile.Path(alpharep) with self.assertRaises(KeyError): alpharep.getinfo('does-not-exist') + + def test_root_folder_in_zipfile(self): + """ + gh-112795: Some tools or self constructed codes will add '/' folder to + the zip file, this is a strange behavior, but we should support it. + """ + in_memory_file = io.BytesIO() + zf = zipfile.ZipFile(in_memory_file, "w") + zf.mkdir('/') + zf.writestr('./a.txt', 'aaa') + tmpdir = pathlib.Path(self.fixtures.enter_context(temp_dir())) + zf.extractall(tmpdir) diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index d8a83d4dbba..ecc3dd6d0b5 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -18,6 +18,7 @@ from tempfile import TemporaryFile from random import randint, random, randbytes +from test import archiver_tests from test.support import script_helper from test.support import ( findfile, requires_zlib, requires_bz2, requires_lzma, @@ -1687,6 +1688,33 @@ def _test_extract_hackers_arcnames(self, hacknames): unlink(TESTFN2) +class OverwriteTests(archiver_tests.OverwriteTests, unittest.TestCase): + testdir = TESTFN + + @classmethod + def setUpClass(cls): + p = cls.ar_with_file = TESTFN + '-with-file.zip' + cls.addClassCleanup(unlink, p) + with zipfile.ZipFile(p, 'w') as zipfp: + zipfp.writestr('test', b'newcontent') + + p = cls.ar_with_dir = TESTFN + '-with-dir.zip' + cls.addClassCleanup(unlink, p) + with zipfile.ZipFile(p, 'w') as zipfp: + zipfp.mkdir('test') + + p = cls.ar_with_implicit_dir = TESTFN + '-with-implicit-dir.zip' + cls.addClassCleanup(unlink, p) + with zipfile.ZipFile(p, 'w') as zipfp: + zipfp.writestr('test/file', b'newcontent') + + def open(self, path): + return zipfile.ZipFile(path, 'r') + + def extractall(self, ar): + ar.extractall(self.testdir) + + class OtherTests(unittest.TestCase): def test_open_via_zip_info(self): # Create the ZIP archive @@ -2272,6 +2300,66 @@ def test_decompress_without_3rd_party_library(self): with zipfile.ZipFile(zip_file) as zf: self.assertRaises(RuntimeError, zf.extract, 'a.txt') + @requires_zlib() + def test_full_overlap(self): + data = ( + b'PK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe2\x1e' + b'8\xbb\x10\x00\x00\x00\t\x04\x00\x00\x01\x00\x00\x00a\xed' + b'\xc0\x81\x08\x00\x00\x00\xc00\xd6\xfbK\\d\x0b`P' + b'K\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe2' + b'\x1e8\xbb\x10\x00\x00\x00\t\x04\x00\x00\x01\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00aPK' + b'\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0lH\x05\xe2\x1e' + b'8\xbb\x10\x00\x00\x00\t\x04\x00\x00\x01\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00bPK\x05' + b'\x06\x00\x00\x00\x00\x02\x00\x02\x00^\x00\x00\x00/\x00\x00' + b'\x00\x00\x00' + ) + with zipfile.ZipFile(io.BytesIO(data), 'r') as zipf: + self.assertEqual(zipf.namelist(), ['a', 'b']) + zi = zipf.getinfo('a') + self.assertEqual(zi.header_offset, 0) + self.assertEqual(zi.compress_size, 16) + self.assertEqual(zi.file_size, 1033) + zi = zipf.getinfo('b') + self.assertEqual(zi.header_offset, 0) + self.assertEqual(zi.compress_size, 16) + self.assertEqual(zi.file_size, 1033) + self.assertEqual(len(zipf.read('a')), 1033) + with self.assertRaisesRegex(zipfile.BadZipFile, 'File name.*differ'): + zipf.read('b') + + @requires_zlib() + def test_quoted_overlap(self): + data = ( + b'PK\x03\x04\x14\x00\x00\x00\x08\x00\xa0lH\x05Y\xfc' + b'8\x044\x00\x00\x00(\x04\x00\x00\x01\x00\x00\x00a\x00' + b'\x1f\x00\xe0\xffPK\x03\x04\x14\x00\x00\x00\x08\x00\xa0l' + b'H\x05\xe2\x1e8\xbb\x10\x00\x00\x00\t\x04\x00\x00\x01\x00' + b'\x00\x00b\xed\xc0\x81\x08\x00\x00\x00\xc00\xd6\xfbK\\' + b'd\x0b`PK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0' + b'lH\x05Y\xfc8\x044\x00\x00\x00(\x04\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00aPK\x01\x02\x14\x00\x14\x00\x00\x00\x08\x00\xa0l' + b'H\x05\xe2\x1e8\xbb\x10\x00\x00\x00\t\x04\x00\x00\x01\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00' + b'bPK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00^\x00\x00' + b'\x00S\x00\x00\x00\x00\x00' + ) + with zipfile.ZipFile(io.BytesIO(data), 'r') as zipf: + self.assertEqual(zipf.namelist(), ['a', 'b']) + zi = zipf.getinfo('a') + self.assertEqual(zi.header_offset, 0) + self.assertEqual(zi.compress_size, 52) + self.assertEqual(zi.file_size, 1064) + zi = zipf.getinfo('b') + self.assertEqual(zi.header_offset, 36) + self.assertEqual(zi.compress_size, 16) + self.assertEqual(zi.file_size, 1033) + with self.assertRaisesRegex(zipfile.BadZipFile, 'Overlapped entries'): + zipf.read('a') + self.assertEqual(len(zipf.read('b')), 1033) + def tearDown(self): unlink(TESTFN) unlink(TESTFN2) @@ -2899,7 +2987,7 @@ def test_create_directory_with_write(self): directory = os.path.join(TESTFN2, "directory2") os.mkdir(directory) - mode = os.stat(directory).st_mode + mode = os.stat(directory).st_mode & 0xFFFF zf.write(directory, arcname="directory2/") zinfo = zf.filelist[1] self.assertEqual(zinfo.filename, "directory2/") diff --git a/Lib/test/test_zipimport_support.py b/Lib/test/test_zipimport_support.py index 7bf50a33728..71039d2a8e7 100644 --- a/Lib/test/test_zipimport_support.py +++ b/Lib/test/test_zipimport_support.py @@ -29,8 +29,9 @@ # test_cmd_line_script (covers the zipimport support in runpy) # Retrieve some helpers from other test cases -from test import (test_doctest, sample_doctest, sample_doctest_no_doctests, - sample_doctest_no_docstrings) +from test.test_doctest import (test_doctest, + sample_doctest, sample_doctest_no_doctests, + sample_doctest_no_docstrings) def _run_object_doctest(obj, module): @@ -100,18 +101,18 @@ def test_doctest_issue4197(self): # everything still works correctly test_src = inspect.getsource(test_doctest) test_src = test_src.replace( - "from test import test_doctest", + "from test.test_doctest import test_doctest", "import test_zipped_doctest as test_doctest") - test_src = test_src.replace("test.test_doctest", + test_src = test_src.replace("test.test_doctest.test_doctest", "test_zipped_doctest") - test_src = test_src.replace("test.sample_doctest", + test_src = test_src.replace("test.test_doctest.sample_doctest", "sample_zipped_doctest") # The sample doctest files rewritten to include in the zipped version. sample_sources = {} for mod in [sample_doctest, sample_doctest_no_doctests, sample_doctest_no_docstrings]: src = inspect.getsource(mod) - src = src.replace("test.test_doctest", "test_zipped_doctest") + src = src.replace("test.test_doctest.test_doctest", "test_zipped_doctest") # Rewrite the module name so that, for example, # "test.sample_doctest" becomes "sample_zipped_doctest". mod_name = mod.__name__.split(".")[-1] diff --git a/Lib/test/test_zoneinfo/test_zoneinfo.py b/Lib/test/test_zoneinfo/test_zoneinfo.py index 3766ceac838..1e71b72dc87 100644 --- a/Lib/test/test_zoneinfo/test_zoneinfo.py +++ b/Lib/test/test_zoneinfo/test_zoneinfo.py @@ -17,9 +17,10 @@ from datetime import date, datetime, time, timedelta, timezone from functools import cached_property +from test.support import MISSING_C_DOCSTRINGS from test.test_zoneinfo import _support as test_support from test.test_zoneinfo._support import OS_ENV_LOCK, TZPATH_TEST_LOCK, ZoneInfoTestBase -from test.support.import_helper import import_module +from test.support.import_helper import import_module, CleanImport lzma = import_module('lzma') py_zoneinfo, c_zoneinfo = test_support.get_modules() @@ -404,6 +405,8 @@ def test_time_fixed_offset(self): class CZoneInfoTest(ZoneInfoTest): module = c_zoneinfo + @unittest.skipIf(MISSING_C_DOCSTRINGS, + "Signature information for builtins requires docstrings") def test_signatures(self): """Ensure that C module has valid method signatures.""" import inspect @@ -1716,13 +1719,26 @@ def test_env_variable_relative_paths(self): with self.subTest("warning", path_var=path_var): # Note: Per PEP 615 the warning is implementation-defined # behavior, other implementations need not warn. - with self.assertWarns(self.module.InvalidTZPathWarning): + with self.assertWarns(self.module.InvalidTZPathWarning) as w: self.module.reset_tzpath() + self.assertEqual(w.warnings[0].filename, __file__) tzpath = self.module.TZPATH with self.subTest("filtered", path_var=path_var): self.assertSequenceEqual(tzpath, expected_paths) + def test_env_variable_relative_paths_warning_location(self): + path_var = "path/to/somewhere" + + with self.python_tzpath_context(path_var): + with CleanImport("zoneinfo", "zoneinfo._tzpath"): + with self.assertWarns(RuntimeWarning) as w: + import zoneinfo + InvalidTZPathWarning = zoneinfo.InvalidTZPathWarning + self.assertIsInstance(w.warnings[0].message, InvalidTZPathWarning) + # It should represent the current file: + self.assertEqual(w.warnings[0].filename, __file__) + def test_reset_tzpath_kwarg(self): self.module.reset_tzpath(to=["/a/b/c"]) diff --git a/Lib/test/setuptools-67.6.1-py3-none-any.whl b/Lib/test/wheeldata/setuptools-67.6.1-py3-none-any.whl similarity index 100% rename from Lib/test/setuptools-67.6.1-py3-none-any.whl rename to Lib/test/wheeldata/setuptools-67.6.1-py3-none-any.whl diff --git a/Lib/test/wheel-0.40.0-py3-none-any.whl b/Lib/test/wheeldata/wheel-0.40.0-py3-none-any.whl similarity index 100% rename from Lib/test/wheel-0.40.0-py3-none-any.whl rename to Lib/test/wheeldata/wheel-0.40.0-py3-none-any.whl diff --git a/Lib/threading.py b/Lib/threading.py index 8dcaf8ca6a0..98cb43c6972 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -1460,7 +1460,6 @@ class _DummyThread(Thread): def __init__(self): Thread.__init__(self, name=_newname("Dummy-%d"), daemon=_daemon_threads_allowed()) - self._started.set() self._set_ident() if _HAVE_THREAD_NATIVE_ID: @@ -1685,6 +1684,11 @@ def _after_fork(): # its new value since it can have changed. thread._reset_internal_locks(True) ident = get_ident() + if isinstance(thread, _DummyThread): + thread.__class__ = _MainThread + thread._name = 'MainThread' + thread._daemonic = False + thread._set_tstate_lock() thread._ident = ident new_active[ident] = thread else: diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index c47c8c27d46..8b8fdfe3fb6 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -1181,6 +1181,8 @@ def winfo_parent(self): def winfo_pathname(self, id, displayof=0): """Return the pathname of the widget given by ID.""" + if isinstance(id, int): + id = hex(id) args = ('winfo', 'pathname') \ + self._displayof(displayof) + (id,) return self.tk.call(args) @@ -1456,16 +1458,19 @@ def unbind(self, sequence, funcid=None): Otherwise destroy the current binding for SEQUENCE, leaving SEQUENCE unbound. """ + self._unbind(('bind', self._w, sequence), funcid) + + def _unbind(self, what, funcid=None): if funcid is None: - self.tk.call('bind', self._w, sequence, '') + self.tk.call(*what, '') else: - lines = self.tk.call('bind', self._w, sequence).split('\n') + lines = self.tk.call(what).split('\n') prefix = f'if {{"[{funcid} ' keep = '\n'.join(line for line in lines if not line.startswith(prefix)) if not keep.strip(): keep = '' - self.tk.call('bind', self._w, sequence, keep) + self.tk.call(*what, keep) self.deletecommand(funcid) def bind_all(self, sequence=None, func=None, add=None): @@ -1477,7 +1482,7 @@ def bind_all(self, sequence=None, func=None, add=None): def unbind_all(self, sequence): """Unbind for all widgets for event SEQUENCE all functions.""" - self.tk.call('bind', 'all' , sequence, '') + self._root()._unbind(('bind', 'all', sequence)) def bind_class(self, className, sequence=None, func=None, add=None): """Bind to widgets with bindtag CLASSNAME at event @@ -1492,7 +1497,7 @@ def bind_class(self, className, sequence=None, func=None, add=None): def unbind_class(self, className, sequence): """Unbind for all widgets with bindtag CLASSNAME for event SEQUENCE all functions.""" - self.tk.call('bind', className , sequence, '') + self._root()._unbind(('bind', className, sequence)) def mainloop(self, n=0): """Call the mainloop of Tk.""" @@ -2804,9 +2809,7 @@ def bbox(self, *args): def tag_unbind(self, tagOrId, sequence, funcid=None): """Unbind for all items with TAGORID for event SEQUENCE the function identified with FUNCID.""" - self.tk.call(self._w, 'bind', tagOrId, sequence, '') - if funcid: - self.deletecommand(funcid) + self._unbind((self._w, 'bind', tagOrId, sequence), funcid) def tag_bind(self, tagOrId, sequence=None, func=None, add=None): """Bind to all items with TAGORID at event SEQUENCE a call to function FUNC. @@ -3913,9 +3916,7 @@ def tag_add(self, tagName, index1, *args): def tag_unbind(self, tagName, sequence, funcid=None): """Unbind for all characters with TAGNAME for event SEQUENCE the function identified with FUNCID.""" - self.tk.call(self._w, 'tag', 'bind', tagName, sequence, '') - if funcid: - self.deletecommand(funcid) + return self._unbind((self._w, 'tag', 'bind', tagName, sequence), funcid) def tag_bind(self, tagName, sequence, func, add=None): """Bind to all characters with TAGNAME at event SEQUENCE a call to function FUNC. @@ -3926,6 +3927,11 @@ def tag_bind(self, tagName, sequence, func, add=None): return self._bind((self._w, 'tag', 'bind', tagName), sequence, func, add) + def _tag_bind(self, tagName, sequence=None, func=None, add=None): + # For tests only + return self._bind((self._w, 'tag', 'bind', tagName), + sequence, func, add) + def tag_cget(self, tagName, option): """Return the value of OPTION for tag TAGNAME.""" if option[:1] != '-': @@ -4631,7 +4637,7 @@ def panes(self): def _test(): root = Tk() - text = "This is Tcl/Tk version %s" % TclVersion + text = "This is Tcl/Tk %s" % root.globalgetvar('tk_patchLevel') text += "\nThis should be a cedilla: \xe7" label = Label(root, text=text) label.pack() diff --git a/Lib/trace.py b/Lib/trace.py index fb9a423ea09..761916b1809 100755 --- a/Lib/trace.py +++ b/Lib/trace.py @@ -258,8 +258,7 @@ def write_results(self, show_missing=True, summary=False, coverdir=None): modulename = _modname(filename) else: dir = coverdir - if not os.path.exists(dir): - os.makedirs(dir) + os.makedirs(dir, exist_ok=True) modulename = _fullmodname(filename) # If desired, get a list of the line numbers which represent diff --git a/Lib/traceback.py b/Lib/traceback.py index f61d5db0621..8247d8ff8cd 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -738,7 +738,11 @@ def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, # Capture now to permit freeing resources: only complication is in the # unofficial API _format_final_exc_line self._str = _safe_string(exc_value, 'exception') - self.__notes__ = getattr(exc_value, '__notes__', None) + try: + self.__notes__ = getattr(exc_value, '__notes__', None) + except Exception as e: + self.__notes__ = [ + f'Ignored error getting __notes__: {_safe_string(e, '__notes__', repr)}'] if exc_type and issubclass(exc_type, SyntaxError): # Handle SyntaxError's specially diff --git a/Lib/tty.py b/Lib/tty.py index 283e5c334f5..5a49e040042 100644 --- a/Lib/tty.py +++ b/Lib/tty.py @@ -45,9 +45,6 @@ def cfmakeraw(mode): def cfmakecbreak(mode): """Make termios mode cbreak.""" - # Do not map CR to NL on input. - mode[IFLAG] &= ~(ICRNL) - # Do not echo characters; disable canonical input. mode[LFLAG] &= ~(ECHO | ICANON) diff --git a/Lib/typing.py b/Lib/typing.py index eb61012e8c9..ffe7ce8d8a8 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -1683,7 +1683,7 @@ class _TypingEllipsis: _TYPING_INTERNALS = frozenset({ '__parameters__', '__orig_bases__', '__orig_class__', '_is_protocol', '_is_runtime_protocol', '__protocol_attrs__', - '__callable_proto_members_only__', '__type_params__', + '__non_callable_proto_members__', '__type_params__', }) _SPECIAL_NAMES = frozenset({ @@ -1820,11 +1820,6 @@ def __init__(cls, *args, **kwargs): super().__init__(*args, **kwargs) if getattr(cls, "_is_protocol", False): cls.__protocol_attrs__ = _get_protocol_attrs(cls) - # PEP 544 prohibits using issubclass() - # with protocols that have non-method members. - cls.__callable_proto_members_only__ = all( - callable(getattr(cls, attr, None)) for attr in cls.__protocol_attrs__ - ) def __subclasscheck__(cls, other): if cls is Protocol: @@ -1836,18 +1831,19 @@ def __subclasscheck__(cls, other): if not isinstance(other, type): # Same error message as for issubclass(1, int). raise TypeError('issubclass() arg 1 must be a class') + if not getattr(cls, '_is_runtime_protocol', False): + raise TypeError( + "Instance and class checks can only be used with " + "@runtime_checkable protocols" + ) if ( - not cls.__callable_proto_members_only__ + # this attribute is set by @runtime_checkable: + cls.__non_callable_proto_members__ and cls.__dict__.get("__subclasshook__") is _proto_hook ): raise TypeError( "Protocols with non-method members don't support issubclass()" ) - if not getattr(cls, '_is_runtime_protocol', False): - raise TypeError( - "Instance and class checks can only be used with " - "@runtime_checkable protocols" - ) return super().__subclasscheck__(other) def __instancecheck__(cls, instance): @@ -1875,7 +1871,8 @@ def __instancecheck__(cls, instance): val = getattr_static(instance, attr) except AttributeError: break - if val is None and callable(getattr(cls, attr, None)): + # this attribute is set by @runtime_checkable: + if val is None and attr not in cls.__non_callable_proto_members__: break else: return True @@ -2113,6 +2110,22 @@ def close(self): ... raise TypeError('@runtime_checkable can be only applied to protocol classes,' ' got %r' % cls) cls._is_runtime_protocol = True + # PEP 544 prohibits using issubclass() + # with protocols that have non-method members. + # See gh-113320 for why we compute this attribute here, + # rather than in `_ProtocolMeta.__init__` + cls.__non_callable_proto_members__ = set() + for attr in cls.__protocol_attrs__: + try: + is_callable = callable(getattr(cls, attr, None)) + except Exception as e: + raise TypeError( + f"Failed to determine whether protocol member {attr!r} " + "is a method member" + ) from e + else: + if not is_callable: + cls.__non_callable_proto_members__.add(attr) return cls @@ -3280,7 +3293,7 @@ class re(metaclass=_DeprecatedType): def reveal_type[T](obj: T, /) -> T: - """Reveal the inferred type of a variable. + """Ask a static type checker to reveal the inferred type of an expression. When a static type checker encounters a call to ``reveal_type()``, it will emit the inferred type of the argument:: @@ -3292,7 +3305,7 @@ def reveal_type[T](obj: T, /) -> T: will produce output similar to 'Revealed type is "builtins.int"'. At runtime, the function prints the runtime type of the - argument and returns it unchanged. + argument and returns the argument unchanged. """ print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr) return obj diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 811557498bb..001b640dc43 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -606,6 +606,7 @@ def run(self, result=None): else: stopTestRun = None + result.startTest(self) try: testMethod = getattr(self, self._testMethodName) if (getattr(self.__class__, "__unittest_skip__", False) or @@ -616,9 +617,6 @@ def run(self, result=None): _addSkip(result, self, skip_why) return result - # Increase the number of tests only if it hasn't been skipped - result.startTest(self) - expecting_failure = ( getattr(self, "__unittest_expecting_failure__", False) or getattr(testMethod, "__unittest_expecting_failure__", False) diff --git a/Lib/unittest/main.py b/Lib/unittest/main.py index 51b81a6c372..dd4dbf7535f 100644 --- a/Lib/unittest/main.py +++ b/Lib/unittest/main.py @@ -280,7 +280,7 @@ def runTests(self): testRunner = self.testRunner self.result = testRunner.run(self.test) if self.exit: - if self.result.testsRun == 0: + if self.result.testsRun == 0 and len(self.result.skipped) == 0: sys.exit(_NO_TESTS_EXITCODE) elif self.result.wasSuccessful(): sys.exit(0) diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 30e8f1550f0..a2187580af2 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2199,8 +2199,11 @@ def __get__(self, obj, _type=None): return self.create_mock() -_CODE_ATTRS = dir(CodeType) -_CODE_SIG = inspect.signature(partial(CodeType.__init__, None)) +try: + _CODE_SIG = inspect.signature(partial(CodeType.__init__, None)) + _CODE_ATTRS = dir(CodeType) +except ValueError: + _CODE_SIG = None class AsyncMockMixin(Base): @@ -2220,9 +2223,12 @@ def __init__(self, /, *args, **kwargs): self.__dict__['_mock_await_count'] = 0 self.__dict__['_mock_await_args'] = None self.__dict__['_mock_await_args_list'] = _CallList() - code_mock = NonCallableMock(spec_set=_CODE_ATTRS) - code_mock.__dict__["_spec_class"] = CodeType - code_mock.__dict__["_spec_signature"] = _CODE_SIG + if _CODE_SIG: + code_mock = NonCallableMock(spec_set=_CODE_ATTRS) + code_mock.__dict__["_spec_class"] = CodeType + code_mock.__dict__["_spec_signature"] = _CODE_SIG + else: + code_mock = NonCallableMock(spec_set=CodeType) code_mock.co_flags = ( inspect.CO_COROUTINE + inspect.CO_VARARGS diff --git a/Lib/unittest/result.py b/Lib/unittest/result.py index 9e56f658027..3ace0a5b7bf 100644 --- a/Lib/unittest/result.py +++ b/Lib/unittest/result.py @@ -97,12 +97,10 @@ def _restoreStdout(self): sys.stdout = self._original_stdout sys.stderr = self._original_stderr - if self._stdout_buffer is not None: - self._stdout_buffer.seek(0) - self._stdout_buffer.truncate() - if self._stderr_buffer is not None: - self._stderr_buffer.seek(0) - self._stderr_buffer.truncate() + self._stdout_buffer.seek(0) + self._stdout_buffer.truncate() + self._stderr_buffer.seek(0) + self._stderr_buffer.truncate() def stopTestRun(self): """Called once after all tests are executed. diff --git a/Lib/unittest/runner.py b/Lib/unittest/runner.py index e3c020e0ace..2bcadf0c998 100644 --- a/Lib/unittest/runner.py +++ b/Lib/unittest/runner.py @@ -274,7 +274,7 @@ def run(self, test): infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) - elif run == 0: + elif run == 0 and not skipped: self.stream.write("NO TESTS RAN") else: self.stream.write("OK") diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index 91650661db0..d5914e0cbb4 100644 --- a/Lib/venv/scripts/common/activate +++ b/Lib/venv/scripts/common/activate @@ -36,7 +36,7 @@ deactivate () { deactivate nondestructive # on Windows, a path can contain colons and backslashes and has to be converted: -if [ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ] ; then +if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then # transform D:\path\to\venv to /d/path/to/venv on MSYS # and to /cygdrive/d/path/to/venv on Cygwin export VIRTUAL_ENV=$(cygpath "__VENV_DIR__") diff --git a/Lib/warnings.py b/Lib/warnings.py index 98ae708ca34..391a501f728 100644 --- a/Lib/warnings.py +++ b/Lib/warnings.py @@ -58,15 +58,16 @@ def _formatwarnmsg_impl(msg): # catch Exception, not only ImportError and RecursionError. except Exception: # don't suggest to enable tracemalloc if it's not available - tracing = True + suggest_tracemalloc = False tb = None else: - tracing = tracemalloc.is_tracing() try: + suggest_tracemalloc = not tracemalloc.is_tracing() tb = tracemalloc.get_object_traceback(msg.source) except Exception: # When a warning is logged during Python shutdown, tracemalloc # and the import machinery don't work anymore + suggest_tracemalloc = False tb = None if tb is not None: @@ -85,7 +86,7 @@ def _formatwarnmsg_impl(msg): if line: line = line.strip() s += ' %s\n' % line - elif not tracing: + elif suggest_tracemalloc: s += (f'{category}: Enable tracemalloc to get the object ' f'allocation traceback\n') return s diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index e0170afdf4d..ba6711e4ef5 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -634,6 +634,7 @@ def _name(self, val): self.name = val def open(self, url, new=0, autoraise=True): + sys.audit("webbrowser.open", url) if self.name == 'default': script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser else: diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index 42574eefd81..bb7362d1634 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -99,6 +99,7 @@ import collections import collections.abc import contextlib +import weakref from . import ElementPath @@ -1223,13 +1224,14 @@ def iterparse(source, events=None, parser=None): # parser argument of iterparse is removed, this can be killed. pullparser = XMLPullParser(events=events, _parser=parser) - def iterator(source): + if not hasattr(source, "read"): + source = open(source, "rb") + close_source = True + else: close_source = False + + def iterator(source): try: - if not hasattr(source, "read"): - source = open(source, "rb") - close_source = True - yield None while True: yield from pullparser.read_events() # load event buffer @@ -1239,18 +1241,23 @@ def iterator(source): pullparser.feed(data) root = pullparser._close_and_return_root() yield from pullparser.read_events() - it.root = root + it = wr() + if it is not None: + it.root = root finally: if close_source: source.close() class IterParseIterator(collections.abc.Iterator): __next__ = iterator(source).__next__ + + def __del__(self): + if close_source: + source.close() + it = IterParseIterator() it.root = None - del iterator, IterParseIterator - - next(it) + wr = weakref.ref(it) return it diff --git a/Lib/zipfile/__init__.py b/Lib/zipfile/__init__.py index 420d2f87323..8918484207a 100644 --- a/Lib/zipfile/__init__.py +++ b/Lib/zipfile/__init__.py @@ -381,6 +381,7 @@ class ZipInfo (object): 'compress_size', 'file_size', '_raw_time', + '_end_offset', ) def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)): @@ -415,6 +416,7 @@ def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)): self.external_attr = 0 # External file attributes self.compress_size = 0 # Size of the compressed file self.file_size = 0 # Size of the uncompressed file + self._end_offset = None # Start of the next local header or central directory # Other attributes are set by class ZipFile: # header_offset Byte offset to the file header # CRC CRC-32 of the uncompressed file @@ -1474,6 +1476,12 @@ def _RealGetContents(self): if self.debug > 2: print("total", total) + end_offset = self.start_dir + for zinfo in sorted(self.filelist, + key=lambda zinfo: zinfo.header_offset, + reverse=True): + zinfo._end_offset = end_offset + end_offset = zinfo.header_offset def namelist(self): """Return a list of file names in the archive.""" @@ -1630,6 +1638,10 @@ def open(self, name, mode="r", pwd=None, *, force_zip64=False): 'File name in directory %r and header %r differ.' % (zinfo.orig_filename, fname)) + if (zinfo._end_offset is not None and + zef_file.tell() + zinfo.compress_size > zinfo._end_offset): + raise BadZipFile(f"Overlapped entries: {zinfo.orig_filename!r} (possible zip bomb)") + # check for encrypted flag & handle password is_encrypted = zinfo.flag_bits & _MASK_ENCRYPTED if is_encrypted: @@ -1758,7 +1770,7 @@ def _extract_member(self, member, targetpath, pwd): # filter illegal characters on Windows arcname = self._sanitize_windows_name(arcname, os.path.sep) - if not arcname: + if not arcname and not member.is_dir(): raise ValueError("Empty filename.") targetpath = os.path.join(targetpath, arcname) diff --git a/Lib/zoneinfo/_tzpath.py b/Lib/zoneinfo/_tzpath.py index 4985dce2dc3..5db17bea045 100644 --- a/Lib/zoneinfo/_tzpath.py +++ b/Lib/zoneinfo/_tzpath.py @@ -2,7 +2,7 @@ import sysconfig -def reset_tzpath(to=None): +def _reset_tzpath(to=None, stacklevel=4): global TZPATH tzpaths = to @@ -18,17 +18,22 @@ def reset_tzpath(to=None): base_tzpath = tzpaths else: env_var = os.environ.get("PYTHONTZPATH", None) - if env_var is not None: - base_tzpath = _parse_python_tzpath(env_var) - else: - base_tzpath = _parse_python_tzpath( - sysconfig.get_config_var("TZPATH") - ) + if env_var is None: + env_var = sysconfig.get_config_var("TZPATH") + base_tzpath = _parse_python_tzpath(env_var, stacklevel) TZPATH = tuple(base_tzpath) -def _parse_python_tzpath(env_var): +def reset_tzpath(to=None): + """Reset global TZPATH.""" + # We need `_reset_tzpath` helper function because it produces a warning, + # it is used as both a module-level call and a public API. + # This is how we equalize the stacklevel for both calls. + _reset_tzpath(to) + + +def _parse_python_tzpath(env_var, stacklevel): if not env_var: return () @@ -45,6 +50,7 @@ def _parse_python_tzpath(env_var): "Invalid paths specified in PYTHONTZPATH environment variable. " + msg, InvalidTZPathWarning, + stacklevel=stacklevel, ) return new_tzpath @@ -172,4 +178,4 @@ class InvalidTZPathWarning(RuntimeWarning): TZPATH = () -reset_tzpath() +_reset_tzpath(stacklevel=5) diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py index 84e1422a628..f15c43317ed 100755 --- a/Mac/BuildScript/build-installer.py +++ b/Mac/BuildScript/build-installer.py @@ -246,9 +246,9 @@ def library_recipes(): result.extend([ dict( - name="OpenSSL 3.0.11", - url="https://www.openssl.org/source/openssl-3.0.11.tar.gz", - checksum='b3425d3bb4a2218d0697eb41f7fc0cdede016ed19ca49d168b78e8d947887f55', + name="OpenSSL 3.0.13", + url="https://www.openssl.org/source/openssl-3.0.13.tar.gz", + checksum='88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313', buildrecipe=build_universal_openssl, configure=None, install=None, @@ -359,9 +359,9 @@ def library_recipes(): ), ), dict( - name="SQLite 3.43.1", - url="https://sqlite.org/2023/sqlite-autoconf-3430100.tar.gz", - checksum="77e61befe9c3298da0504f87772a24b0", + name="SQLite 3.45.1", + url="https://sqlite.org/2024/sqlite-autoconf-3450100.tar.gz", + checksum="cd9c27841b7a5932c9897651e20b86c701dd740556989b01ca596fcfa3d49a0a", extra_cflags=('-Os ' '-DSQLITE_ENABLE_FTS5 ' '-DSQLITE_ENABLE_FTS4 ' diff --git a/Mac/IDLE/IDLE.app/Contents/Info.plist b/Mac/IDLE/IDLE.app/Contents/Info.plist index fea06d46324..20b97b67f41 100644 --- a/Mac/IDLE/IDLE.app/Contents/Info.plist +++ b/Mac/IDLE/IDLE.app/Contents/Info.plist @@ -56,5 +56,7 @@ %version% NSHighResolutionCapable + CFBundleAllowMixedLocalizations + diff --git a/Mac/Resources/app/Info.plist.in b/Mac/Resources/app/Info.plist.in index 4ec828ff176..8362b19b361 100644 --- a/Mac/Resources/app/Info.plist.in +++ b/Mac/Resources/app/Info.plist.in @@ -58,5 +58,7 @@ (c) 2001-2023 Python Software Foundation. NSHighResolutionCapable + CFBundleAllowMixedLocalizations + diff --git a/Mac/Resources/framework/Info.plist.in b/Mac/Resources/framework/Info.plist.in index e131c205ef0..238441ce2c7 100644 --- a/Mac/Resources/framework/Info.plist.in +++ b/Mac/Resources/framework/Info.plist.in @@ -24,5 +24,7 @@ ???? CFBundleVersion %VERSION% + CFBundleAllowMixedLocalizations + diff --git a/Makefile.pre.in b/Makefile.pre.in index 8ea724a64fd..6fe703065b8 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -626,11 +626,13 @@ check-clean-src: @if test -n "$(VPATH)" -a \( \ -f "$(srcdir)/$(BUILDPYTHON)" \ -o -f "$(srcdir)/Programs/python.o" \ - -o -f "$(srcdir)\Python/frozen_modules/importlib._bootstrap.h" \ + -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \ \); then \ echo "Error: The source directory ($(srcdir)) is not clean" ; \ echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \ - echo "Try to run: make -C \"$(srcdir)\" clean" ; \ + echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \ + echo "Try to run:" ; \ + echo " (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \ exit 1; \ fi @@ -1319,7 +1321,7 @@ regen-limited-abi: all regen-all: regen-cases regen-opcode regen-opcode-targets regen-typeslots \ regen-token regen-ast regen-keyword regen-sre regen-frozen \ regen-pegen-metaparser regen-pegen regen-test-frozenmain \ - regen-test-levenshtein regen-global-objects + regen-test-levenshtein regen-global-objects regen-sbom @echo @echo "Note: make regen-stdlib-module-names and make regen-configure should be run manually" @@ -2150,6 +2152,7 @@ TESTSUBDIRS= idlelib/idle_test \ test/test_cppext \ test/test_ctypes \ test/test_dataclasses \ + test/test_doctest \ test/test_email \ test/test_email/data \ test/test_future_stmt \ @@ -2247,6 +2250,7 @@ TESTSUBDIRS= idlelib/idle_test \ test/tokenizedata \ test/tracedmodules \ test/typinganndata \ + test/wheeldata \ test/xmltestdata \ test/xmltestdata/c14n-20 \ test/ziptestdata @@ -2610,6 +2614,10 @@ autoconf: regen-configure: $(srcdir)/Tools/build/regen-configure.sh +.PHONY: regen-sbom +regen-sbom: + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py + # Create a tags file for vi tags:: ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h diff --git a/Misc/ACKS b/Misc/ACKS index 7438debc4af..2693c3c593e 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -31,6 +31,7 @@ Farhan Ahmad Matthew Ahrens Nir Aides Akira +Ege Akman Yaniv Aknin Jyrki Alakuijala Tatiana Al-Chueyr @@ -958,6 +959,7 @@ Carsten Klein Bastian Kleineidam Joel Klimont Bob Kline +Alois Klink Matthias Klose Jeremy Kloth Thomas Kluyver diff --git a/Misc/NEWS.d/3.10.0a1.rst b/Misc/NEWS.d/3.10.0a1.rst index 62538d73ce4..ef4f2229f67 100644 --- a/Misc/NEWS.d/3.10.0a1.rst +++ b/Misc/NEWS.d/3.10.0a1.rst @@ -4,7 +4,7 @@ .. release date: 2020-10-05 .. section: Security -Fixes `python3x._pth` being ignored on Windows, caused by the fix for +Fixes ``python3x._pth`` being ignored on Windows, caused by the fix for :issue:`29778` (CVE-2020-15801). .. @@ -217,7 +217,7 @@ Port the :mod:`_opcode` extension module to multi-phase initialization .. nonce: 3-VJiH .. section: Core and Builtins -Fixes the wrong error description in the error raised by using 2 `,` in +Fixes the wrong error description in the error raised by using 2 ``,`` in format string in f-string and :meth:`str.format`. .. @@ -605,8 +605,8 @@ Opt out serialization/deserialization for _random.Random .. nonce: jxJ4yn .. section: Core and Builtins -Rename `PyPegen*` functions to `PyParser*`, so that we can remove the old -set of `PyParser*` functions that were using the old parser, but keep +Rename ``PyPegen*`` functions to ``PyParser*``, so that we can remove the old +set of ``PyParser*`` functions that were using the old parser, but keep everything backwards-compatible. .. @@ -747,7 +747,7 @@ Galindo. Fix a bug where a line with only a line continuation character is not considered a blank line at tokenizer level. In such cases, more than a -single `NEWLINE` token was emitted. The old parser was working around the +single ``NEWLINE`` token was emitted. The old parser was working around the issue, but the new parser threw a :exc:`SyntaxError` for valid input due to this. For example, an empty line following a line continuation character was interpreted as a :exc:`SyntaxError`. @@ -1157,7 +1157,7 @@ The :class:`threading.Thread` constructor now uses the target name if the .. nonce: bnh-VG .. section: Library -fix `tkinter.EventType` Enum so all members are strings, and none are tuples +fix ``tkinter.EventType`` Enum so all members are strings, and none are tuples .. @@ -1220,7 +1220,7 @@ class Previously there was no way to check that without using private API. See the `relevant issue in python/typing -` +`_. .. @@ -1229,8 +1229,8 @@ Previously there was no way to check that without using private API. See the .. nonce: pI_uZQ .. section: Library -Honor `object` overrides in `Enum` class creation (specifically, `__str__`, -`__repr__`, `__format__`, and `__reduce_ex__`). +Honor ``object`` overrides in ``Enum`` class creation (specifically, ``__str__``, +``__repr__``, ``__format__``, and ``__reduce_ex__``). .. @@ -1239,7 +1239,7 @@ Honor `object` overrides in `Enum` class creation (specifically, `__str__`, .. nonce: IpYkEe .. section: Library -`enum.Flag` and `enum.IntFlag` members are now iterable +``enum.Flag`` and ``enum.IntFlag`` members are now iterable. .. @@ -1557,7 +1557,7 @@ activation. .. nonce: wqrj8C .. section: Library -Recursive evaluation of `typing.ForwardRef` in `get_type_hints`. +Recursive evaluation of ``typing.ForwardRef`` in ``get_type_hints``. .. @@ -1851,8 +1851,8 @@ Merry. .. nonce: 1dk8Bu .. section: Library -:mod:`ensurepip` now disables the use of `pip` cache when installing the -bundled versions of `pip` and `setuptools`. Patch by Krzysztof Konopko. +:mod:`ensurepip` now disables the use of ``pip`` cache when installing the +bundled versions of ``pip`` and ``setuptools``. Patch by Krzysztof Konopko. .. @@ -1933,7 +1933,7 @@ Smith and Tal Einat. .. nonce: n7fOwS .. section: Library -Added a `defaults` parameter to :class:`logging.Formatter`, to allow +Added a ``defaults`` parameter to :class:`logging.Formatter`, to allow specifying default values for custom fields. Patch by Asaf Alon and Bar Harel. @@ -2225,7 +2225,7 @@ policy. .. nonce: ps7Yf1 .. section: Library -func:`hashlib.new` passed ``usedforsecurity`` to OpenSSL EVP constructor +:func:`hashlib.new` passed ``usedforsecurity`` to OpenSSL EVP constructor ``_hashlib.new()``. test_hashlib and test_smtplib handle strict security policy better. @@ -2393,8 +2393,8 @@ closes connection during TLS negotiation .. nonce: kOOaHn .. section: Library -fix default `_missing_` so a duplicate `ValueError` is not set as the -`__context__` of the original `ValueError` +fix default ``_missing_`` so a duplicate ``ValueError`` is not set as the +``__context__`` of the original ``ValueError``. .. @@ -2527,7 +2527,7 @@ in Python 3.4 and removed in Python 3.5. .. nonce: BE7zbu .. section: Library -Fix `cgi.parse_multipart` without content_length. Patch by Roger Duran +Fix ``cgi.parse_multipart`` without content_length. Patch by Roger Duran .. diff --git a/Misc/NEWS.d/3.10.0a2.rst b/Misc/NEWS.d/3.10.0a2.rst index 78f4377656b..79f570439b5 100644 --- a/Misc/NEWS.d/3.10.0a2.rst +++ b/Misc/NEWS.d/3.10.0a2.rst @@ -88,10 +88,10 @@ Goldschmidt. .. nonce: d4a-8o .. section: Core and Builtins -Fix a bug in the parser, where a curly brace following a `primary` didn't -fail immediately. This led to invalid expressions like `a {b}` to throw a +Fix a bug in the parser, where a curly brace following a ``primary`` didn't +fail immediately. This led to invalid expressions like ``a {b}`` to throw a :exc:`SyntaxError` with a wrong offset, or invalid expressions ending with a -curly brace like `a {` to not fail immediately in the REPL. +curly brace like ``a {`` to not fail immediately in the REPL. .. @@ -214,7 +214,7 @@ Micro optimization for range.index if step is 1. Patch by Donghee Na. .. nonce: qPWjJA .. section: Core and Builtins -Add `sys._current_exceptions()` function to retrieve a dictionary mapping +Add ``sys._current_exceptions()`` function to retrieve a dictionary mapping each thread's identifier to the topmost exception currently active in that thread at the time the function is called. @@ -302,7 +302,7 @@ type to a heap type. Patch by Mohamed Koubaa and Victor Stinner. .. section: Library Fix memory leak in :func:`subprocess.Popen` in case an uid (gid) specified -in `user` (`group`, `extra_groups`) overflows `uid_t` (`gid_t`). +in ``user`` (``group``, ``extra_groups``) overflows ``uid_t`` (``gid_t``). .. @@ -649,7 +649,7 @@ Document __format__ functionality for IP addresses. .. nonce: CzBMit .. section: Documentation -Document the default implementation of `object.__eq__`. +Document the default implementation of ``object.__eq__``. .. @@ -878,7 +878,7 @@ targeting 3.10 or later. .. nonce: sh8IDY .. section: C API -Add `_Py_closerange` function to provide performant closing of a range of +Add ``_Py_closerange`` function to provide performant closing of a range of file descriptors. .. @@ -898,7 +898,7 @@ available again in limited API. .. nonce: ZZ5wJG .. section: C API -Add `PyIter_Send` function to allow sending value into +Add ``PyIter_Send`` function to allow sending value into generator/coroutine/iterator without raising StopIteration exception to signal return. diff --git a/Misc/NEWS.d/3.10.0a3.rst b/Misc/NEWS.d/3.10.0a3.rst index 0e89984d4bc..b09b74acd37 100644 --- a/Misc/NEWS.d/3.10.0a3.rst +++ b/Misc/NEWS.d/3.10.0a3.rst @@ -247,8 +247,8 @@ fixes union type expressions not de-duplicating ``GenericAlias`` objects. .. nonce: B-Veg7 .. section: Core and Builtins -The import system triggers a `ImportWarning` when it falls back to using -`load_module()`. +The import system triggers a ``ImportWarning`` when it falls back to using +``load_module()``. .. @@ -464,8 +464,8 @@ Support signal module on VxWorks. .. nonce: r9rNCj .. section: Library -We fixed an issue in `pickle.whichmodule` in which importing -`multiprocessing` could change the how pickle identifies which module an +We fixed an issue in ``pickle.whichmodule`` in which importing +``multiprocessing`` could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects. .. @@ -602,7 +602,7 @@ function when ``os.open`` fails. .. nonce: F363jO .. section: Library -Fix `os.sendfile()` on illumos. +Fix ``os.sendfile()`` on illumos. .. @@ -718,8 +718,8 @@ Improve asyncio.wait function to create the futures set just one time. .. nonce: BzizYV .. section: Library -Update various modules in the stdlib to fall back on `__spec__.loader` when -`__loader__` isn't defined on a module. +Update various modules in the stdlib to fall back on ``__spec__.loader`` when +``__loader__`` isn't defined on a module. .. @@ -728,8 +728,8 @@ Update various modules in the stdlib to fall back on `__spec__.loader` when .. nonce: CAsI3O .. section: Library -The `load_module()` methods found in importlib now trigger a -DeprecationWarning. +The ``load_module()`` methods found in ``importlib`` now trigger a +``DeprecationWarning``. .. @@ -872,7 +872,7 @@ extension during TLS handshake when no custom context is supplied. .. nonce: 5mi7b0 .. section: Library -Add func:`os.eventfd` to provide a low level interface for Linux's event +Add :func:`os.eventfd` to provide a low level interface for Linux's event notification file descriptor. .. diff --git a/Misc/NEWS.d/3.10.0a4.rst b/Misc/NEWS.d/3.10.0a4.rst index 414823f162d..398f7e5d342 100644 --- a/Misc/NEWS.d/3.10.0a4.rst +++ b/Misc/NEWS.d/3.10.0a4.rst @@ -516,7 +516,7 @@ Define THREAD_STACK_SIZE for VxWorks. .. nonce: x8TASR .. section: Library -[Enum] `_EnumDict.update()` is now supported +[Enum] ``_EnumDict.update()`` is now supported. .. diff --git a/Misc/NEWS.d/3.10.0a7.rst b/Misc/NEWS.d/3.10.0a7.rst index d9cdfbd04c8..74120a3b40c 100644 --- a/Misc/NEWS.d/3.10.0a7.rst +++ b/Misc/NEWS.d/3.10.0a7.rst @@ -261,7 +261,7 @@ the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and _Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed. To disable the radix tree map, set a preprocessor flag as follows: -`-DWITH_PYMALLOC_RADIX_TREE=0`. +``-DWITH_PYMALLOC_RADIX_TREE=0``. Co-authored-by: Tim Peters @@ -664,11 +664,11 @@ on failure. .. nonce: f1dr_5 .. section: Library -Enum's `repr()` and `str()` have changed: `repr()` is now -*EnumClass.MemberName* and `str()` is *MemberName*. Additionally, stdlib +Enum's ``repr()`` and ``str()`` have changed: ``repr()`` is now +*EnumClass.MemberName* and ``str()`` is *MemberName*. Additionally, stdlib Enum's whose contents are available as module attributes, such as -`RegexFlag.IGNORECASE`, have their `repr()` as *module.name*, e.g. -`re.IGNORECASE`. +``RegexFlag.IGNORECASE``, have their ``repr()`` as *module.name*, e.g. +``re.IGNORECASE``. .. diff --git a/Misc/NEWS.d/3.10.0b1.rst b/Misc/NEWS.d/3.10.0b1.rst index e7b6b93d0b6..640f3ee58ad 100644 --- a/Misc/NEWS.d/3.10.0b1.rst +++ b/Misc/NEWS.d/3.10.0b1.rst @@ -1181,8 +1181,8 @@ Lewis Gaul. .. nonce: NzLVaR .. section: Library -Add `pathlib.Path.hardlink_to()` method that supersedes `link_to()`. The new -method has the same argument order as `symlink_to()`. +Add ``pathlib.Path.hardlink_to()`` method that supersedes ``link_to()``. The new +method has the same argument order as ``symlink_to()``. .. diff --git a/Misc/NEWS.d/3.11.0a1.rst b/Misc/NEWS.d/3.11.0a1.rst index d30acb3e064..3728086e93d 100644 --- a/Misc/NEWS.d/3.11.0a1.rst +++ b/Misc/NEWS.d/3.11.0a1.rst @@ -819,7 +819,7 @@ always available when needed. Patch by Mark Shannon. .. nonce: qKnSqV .. section: Core and Builtins -The threading debug (:envvar:`PYTHONTHREADDEBUG` environment variable) is +The threading debug (:envvar:`!PYTHONTHREADDEBUG` environment variable) is deprecated in Python 3.10 and will be removed in Python 3.12. This feature requires a debug build of Python. Patch by Victor Stinner. @@ -1642,9 +1642,9 @@ interval specified with nanosecond precision. .. nonce: UptGAn .. section: Library -Remove from the :mod:`configparser` module: the :class:`SafeConfigParser` -class, the :attr:`filename` property of the :class:`ParsingError` class, the -:meth:`readfp` method of the :class:`ConfigParser` class, deprecated since +Remove from the :mod:`configparser` module: the :class:`!SafeConfigParser` +class, the :attr:`!filename` property of the :class:`~configparser.ParsingError` class, the +:meth:`!readfp` method of the :class:`~configparser.ConfigParser` class, deprecated since Python 3.2. Patch by Hugo van Kemenade. @@ -2808,7 +2808,7 @@ behaves differently than the similar implementation in :mod:`sysconfig`. .. nonce: 3hmkWw .. section: Library -:class:`smtpd.MailmanProxy` is now removed as it is unusable without an +:class:`!smtpd.MailmanProxy` is now removed as it is unusable without an external module, ``mailman``. Patch by Donghee Na. .. @@ -3204,7 +3204,7 @@ deprecated, for removal in 3.14. .. section: Library When :class:`http.server.SimpleHTTPRequestHandler` sends a ``301 (Moved -Permanently)`` for a directory path not ending with `/`, add a +Permanently)`` for a directory path not ending with ``/``, add a ``Content-Length: 0`` header. This improves the behavior for certain clients. @@ -3240,7 +3240,7 @@ Patch by Erlend E. Aasland. .. nonce: m72tlH .. section: Library -AIX: `Lib/_aix_support.get_platform()` may fail in an AIX WPAR. The fileset +AIX: ``Lib/_aix_support.get_platform()`` may fail in an AIX WPAR. The fileset bos.rte appears to have a builddate in both LPAR and WPAR so this fileset is queried rather than bos.mp64. To prevent a similar situation (no builddate in ODM) a value (9988) sufficient for completing a build is provided. Patch @@ -3685,9 +3685,9 @@ equivalents are valid. .. nonce: aJuvQF .. section: Documentation -Removed the othergui.rst file, any references to it, and the list of GUI +Removed the ``othergui.rst`` file, any references to it, and the list of GUI frameworks in the FAQ. In their place I've added links to the Python Wiki -`page on GUI frameworks `. +`page on GUI frameworks `_. .. diff --git a/Misc/NEWS.d/3.11.0a2.rst b/Misc/NEWS.d/3.11.0a2.rst index 503e489b658..a6b5fe54b39 100644 --- a/Misc/NEWS.d/3.11.0a2.rst +++ b/Misc/NEWS.d/3.11.0a2.rst @@ -507,7 +507,7 @@ Waygood. .. section: Library Make :func:`inspect.getmodule` catch ``FileNotFoundError`` raised by -:'func:`inspect.getabsfile`, and return ``None`` to indicate that the module +:func:`inspect.getabsfile`, and return ``None`` to indicate that the module could not be determined. .. @@ -897,8 +897,8 @@ was often the case on macOS. .. nonce: F18qcE .. section: Tests -Add more test cases for `@functools.singledispatchmethod` when combined with -`@classmethod` or `@staticmethod`. +Add more test cases for ``@functools.singledispatchmethod`` when combined with +``@classmethod`` or ``@staticmethod``. .. @@ -1189,7 +1189,7 @@ context objects can now be disabled. .. section: C API Exclude :c:func:`PyWeakref_GET_OBJECT` from the limited C API. It never -worked since the :c:type:`PyWeakReference` structure is opaque in the +worked since the :c:type:`!PyWeakReference` structure is opaque in the limited C API. .. diff --git a/Misc/NEWS.d/3.11.0a3.rst b/Misc/NEWS.d/3.11.0a3.rst index 41a3a4b94c4..373285ecbaa 100644 --- a/Misc/NEWS.d/3.11.0a3.rst +++ b/Misc/NEWS.d/3.11.0a3.rst @@ -350,7 +350,7 @@ Galindo. .. section: Library Fix possible crash when getting an attribute of -class:`xml.etree.ElementTree.Element` simultaneously with replacing the +:class:`xml.etree.ElementTree.Element` simultaneously with replacing the ``attrib`` dict. .. diff --git a/Misc/NEWS.d/3.11.0a4.rst b/Misc/NEWS.d/3.11.0a4.rst index 3dd335929d6..78b682f7a22 100644 --- a/Misc/NEWS.d/3.11.0a4.rst +++ b/Misc/NEWS.d/3.11.0a4.rst @@ -161,7 +161,7 @@ faster due to reference-counting optimizations. Patch by Dennis Sweeney. .. nonce: 7oGp-I .. section: Core and Builtins -:opcode:`PREP_RERAISE_STAR` no longer pushes ``lasti`` to the stack. +:opcode:`!PREP_RERAISE_STAR` no longer pushes ``lasti`` to the stack. .. @@ -170,7 +170,7 @@ faster due to reference-counting optimizations. Patch by Dennis Sweeney. .. nonce: IKx4v6 .. section: Core and Builtins -Remove :opcode:`POP_EXCEPT_AND_RERAISE` and replace it by an equivalent +Remove :opcode:`!POP_EXCEPT_AND_RERAISE` and replace it by an equivalent sequence of other opcodes. .. @@ -510,7 +510,7 @@ Remove special-casing of ``__new__`` in :meth:`enum.Enum.__dir__`. Improve day constants in :mod:`calendar`. -Now all constants (`MONDAY` ... `SUNDAY`) are documented, tested, and added +Now all constants (``MONDAY`` ... ``SUNDAY``) are documented, tested, and added to ``__all__``. .. @@ -1171,7 +1171,7 @@ Replaced deprecated usage of :c:func:`PyImport_ImportModuleNoBlock` with .. nonce: sMgDLz .. section: C API -The :c:func:`PyUnicode_CHECK_INTERNED` macro has been excluded from the +The :c:func:`!PyUnicode_CHECK_INTERNED` macro has been excluded from the limited C API. It was never usable there, because it used internal structures which are not available in the limited C API. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/3.11.0a5.rst b/Misc/NEWS.d/3.11.0a5.rst index 08d94e82ed8..30a462e9bfd 100644 --- a/Misc/NEWS.d/3.11.0a5.rst +++ b/Misc/NEWS.d/3.11.0a5.rst @@ -275,7 +275,7 @@ Do not use POSIX semaphores on NetBSD .. nonce: M9m8Qd .. section: Core and Builtins -Improve the exc:`TypeError` message for non-string second arguments passed +Improve the :exc:`TypeError` message for non-string second arguments passed to the built-in functions :func:`getattr` and :func:`hasattr`. Patch by Géry Ogam. @@ -673,7 +673,7 @@ file .. section: Tests Mocks can no longer be provided as the specs for other Mocks. As a result, -an already-mocked object cannot be passed to `mock.Mock()`. This can uncover +an already-mocked object cannot be passed to ``mock.Mock()``. This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and builtin assert functions (e.g. assert_called_once_with) will unconditionally pass. diff --git a/Misc/NEWS.d/3.11.0a6.rst b/Misc/NEWS.d/3.11.0a6.rst index 52055b3fafd..2fdceef7746 100644 --- a/Misc/NEWS.d/3.11.0a6.rst +++ b/Misc/NEWS.d/3.11.0a6.rst @@ -248,7 +248,7 @@ Don't un-adapt :opcode:`COMPARE_OP` when collecting specialization stats. .. nonce: RX_AzJ .. section: Core and Builtins -Fix specialization stats gathering for :opcode:`PRECALL` instructions. +Fix specialization stats gathering for :opcode:`!PRECALL` instructions. .. @@ -941,7 +941,7 @@ uvloop library. Make the :class:`configparser.ConfigParser` constructor raise :exc:`TypeError` if the ``interpolation`` parameter is not of type -:class:`configparser.Interpolation` +:class:`!configparser.Interpolation` .. @@ -1034,7 +1034,7 @@ if zlib uses the s390x hardware accelerator. Patch by Victor Stinner. .. nonce: jfciLG .. section: Build -Respect `--with-suffix` when building on case-insensitive file systems. +Respect ``--with-suffix`` when building on case-insensitive file systems. .. @@ -1151,7 +1151,7 @@ Make query dialogs on Windows start with a cursor in the entry box. .. nonce: FhiH5P .. section: IDLE -Apply IDLE syntax highlighting to `.pyi` files. Patch by Alex Waygood and +Apply IDLE syntax highlighting to ``.pyi`` files. Patch by Alex Waygood and Terry Jan Reedy. .. diff --git a/Misc/NEWS.d/3.11.0a7.rst b/Misc/NEWS.d/3.11.0a7.rst index 20f2aa3c56a..9a96c6aad83 100644 --- a/Misc/NEWS.d/3.11.0a7.rst +++ b/Misc/NEWS.d/3.11.0a7.rst @@ -138,7 +138,7 @@ Replaced :opcode:`JUMP_ABSOLUTE` by the relative jump .. nonce: SwrrFO .. section: Core and Builtins -:c:func:`PyFrame_FastToLocalsWithError` and :c:func:`PyFrame_LocalsToFast` +:c:func:`!PyFrame_FastToLocalsWithError` and :c:func:`!PyFrame_LocalsToFast` are no longer called during profiling nor tracing. C code can access the ``f_locals`` attribute of :c:type:`PyFrameObject` by calling :c:func:`PyFrame_GetLocals`. @@ -295,7 +295,7 @@ oparg) as an adaptive counter. .. nonce: O12Pba .. section: Core and Builtins -Use inline caching for :opcode:`PRECALL` and :opcode:`CALL`, and remove the +Use inline caching for :opcode:`!PRECALL` and :opcode:`CALL`, and remove the internal machinery for managing the (now unused) non-inline caches. .. @@ -717,7 +717,7 @@ Fix :class:`asyncio.Semaphore` re-aquiring FIFO order. .. nonce: uaEDcI .. section: Library -The :mod:`asynchat`, :mod:`asyncore` and :mod:`smtpd` modules have been +The :mod:`!asynchat`, :mod:`!asyncore` and :mod:`!smtpd` modules have been deprecated since at least Python 3.6. Their documentation and deprecation warnings and have now been updated to note they will removed in Python 3.12 (:pep:`594`). @@ -1324,7 +1324,7 @@ extensions. .. section: Tests A test case for :func:`os.sendfile` is converted from deprecated -:mod:`asyncore` (see :pep:`594`) to :mod:`asyncio`. Patch by Oleg Iarygin. +:mod:`!asyncore` (see :pep:`594`) to :mod:`asyncio`. Patch by Oleg Iarygin. .. diff --git a/Misc/NEWS.d/3.11.0b1.rst b/Misc/NEWS.d/3.11.0b1.rst index c663ca8de98..21c7df8002b 100644 --- a/Misc/NEWS.d/3.11.0b1.rst +++ b/Misc/NEWS.d/3.11.0b1.rst @@ -403,8 +403,8 @@ so this led to crashes. The problem is now fixed. .. nonce: 6S_uoU .. section: Core and Builtins -Make opcodes :opcode:`JUMP_IF_TRUE_OR_POP` and -:opcode:`JUMP_IF_FALSE_OR_POP` relative rather than absolute. +Make opcodes :opcode:`!JUMP_IF_TRUE_OR_POP` and +:opcode:`!JUMP_IF_FALSE_OR_POP` relative rather than absolute. .. @@ -437,7 +437,7 @@ cache when applicable. .. section: Core and Builtins Classes and functions that unconditionally declared their docstrings -ignoring the `--without-doc-strings` compilation flag no longer do so. +ignoring the ``--without-doc-strings`` compilation flag no longer do so. The classes affected are :class:`ctypes.UnionType`, :class:`pickle.PickleBuffer`, :class:`testcapi.RecursingInfinitelyError`, @@ -576,7 +576,7 @@ planned). Patch by Alex Waygood. .. section: Library Deprecate nested classes in enum definitions becoming members -- in 3.13 -they will be normal classes; add `member` and `nonmember` functions to allow +they will be normal classes; add ``member`` and ``nonmember`` functions to allow control over results now. .. @@ -785,7 +785,7 @@ avoid :exc:`BrokenPipeError` at garbage collection and at .. nonce: V0YveU .. section: Library -Add `datetime.UTC` alias for `datetime.timezone.utc`. +Add ``datetime.UTC`` alias for ``datetime.timezone.utc``. Patch by Kabir Kwatra. @@ -1657,9 +1657,9 @@ Convert :mod:`csv` to use Argument Clinic for :func:`csv.field_size_limit`, .. nonce: z2WhDQ .. section: Library -Raise an ArgumentError when the same subparser name is added twice to an -`argparse.ArgumentParser`. This is consistent with the (default) behavior -when the same option string is added twice to an ArgumentParser. +Raise an ``ArgumentError`` when the same subparser name is added twice to an +``argparse.ArgumentParser``. This is consistent with the (default) behavior +when the same option string is added twice to an ``ArgumentParser``. .. @@ -1712,7 +1712,7 @@ Aviv Palivoda and Erlend E. Aasland. .. nonce: kTjJLx .. section: Documentation -Add a new `gh` role to the documentation to link to GitHub issues. +Add a new ``gh`` role to the documentation to link to GitHub issues. .. diff --git a/Misc/NEWS.d/3.12.0a1.rst b/Misc/NEWS.d/3.12.0a1.rst index 15630b590fb..5bce9e1a9ec 100644 --- a/Misc/NEWS.d/3.12.0a1.rst +++ b/Misc/NEWS.d/3.12.0a1.rst @@ -1462,7 +1462,7 @@ expression, but there's no trailing brace. For example, f"{i=". .. nonce: Jf6gAj .. section: Core and Builtins -Cache the result of :c:func:`PyCode_GetCode` function to restore the O(1) +Cache the result of :c:func:`PyCode_GetCode` function to restore the *O*\ (1) lookup of the :attr:`~types.CodeType.co_code` attribute. .. @@ -1913,7 +1913,7 @@ Stinner. .. nonce: Uxc9al .. section: Library -Allow :mod:`venv` to pass along :envvar:`PYTHON*` variables to ``ensurepip`` +Allow :mod:`venv` to pass along :envvar:`!PYTHON*` variables to ``ensurepip`` and ``pip`` when they do not impact path resolution .. @@ -3617,7 +3617,7 @@ allow access to handlers by name. .. nonce: uw6x5z .. section: Library -The :mod:`smtpd` module was removed per the schedule in :pep:`594`. +The :mod:`!smtpd` module was removed per the schedule in :pep:`594`. .. diff --git a/Misc/NEWS.d/3.12.0a2.rst b/Misc/NEWS.d/3.12.0a2.rst index 1a04ed473f3..a9c5038fa48 100644 --- a/Misc/NEWS.d/3.12.0a2.rst +++ b/Misc/NEWS.d/3.12.0a2.rst @@ -584,8 +584,8 @@ Use the frame bound builtins when offering a name suggestion in .. nonce: qtm-9T .. section: Library -In :mod:`importlib._bootstrap`, enhance namespace package repr to ``. +In :mod:`importlib._bootstrap`, enhance namespace package repr to ````. .. @@ -695,7 +695,7 @@ Make sure ``patch.dict()`` can be applied on async functions. .. nonce: jUpzF3 .. section: Library -Remove modules :mod:`asyncore` and :mod:`asynchat`, which were deprecated by +Remove modules :mod:`!asyncore` and :mod:`!asynchat`, which were deprecated by :pep:`594`. .. diff --git a/Misc/NEWS.d/3.12.0a4.rst b/Misc/NEWS.d/3.12.0a4.rst index 75246f3f135..82faa5ad0b2 100644 --- a/Misc/NEWS.d/3.12.0a4.rst +++ b/Misc/NEWS.d/3.12.0a4.rst @@ -13,8 +13,8 @@ Fix misleading default value in :func:`input`'s ``__text_signature__``. .. nonce: cmGwxv .. section: Core and Builtins -Remove :opcode:`UNARY_POSITIVE`, :opcode:`ASYNC_GEN_WRAP` and -:opcode:`LIST_TO_TUPLE`, replacing them with intrinsics. +Remove :opcode:`!UNARY_POSITIVE`, :opcode:`!ASYNC_GEN_WRAP` and +:opcode:`!LIST_TO_TUPLE`, replacing them with intrinsics. .. @@ -147,8 +147,8 @@ clinic. .. nonce: yRWQ1y .. section: Core and Builtins -Improve the output of ``co_lines`` by emitting only one entry for each line -range. +Improve the output of :meth:`codeobject.co_lines` by emitting only one entry +for each line range. .. diff --git a/Misc/NEWS.d/3.12.0a6.rst b/Misc/NEWS.d/3.12.0a6.rst index 5bd600cd8b6..cf28bdb9258 100644 --- a/Misc/NEWS.d/3.12.0a6.rst +++ b/Misc/NEWS.d/3.12.0a6.rst @@ -170,7 +170,7 @@ all as not all platform C libraries generate an error. .. section: Core and Builtins Add :opcode:`CALL_INTRINSIC_2` and use it instead of -:opcode:`PREP_RERAISE_STAR`. +:opcode:`!PREP_RERAISE_STAR`. .. diff --git a/Misc/NEWS.d/3.12.0a7.rst b/Misc/NEWS.d/3.12.0a7.rst index 1ef81747558..a859be8a047 100644 --- a/Misc/NEWS.d/3.12.0a7.rst +++ b/Misc/NEWS.d/3.12.0a7.rst @@ -24,7 +24,7 @@ Reduce the number of inline :opcode:`CACHE` entries for .. nonce: PRkGca .. section: Core and Builtins -Removed :opcode:`JUMP_IF_FALSE_OR_POP` and :opcode:`JUMP_IF_TRUE_OR_POP` +Removed :opcode:`!JUMP_IF_FALSE_OR_POP` and :opcode:`!JUMP_IF_TRUE_OR_POP` instructions. .. @@ -429,7 +429,7 @@ an awaitable object. Patch by Kumar Aditya. Speed up setting or deleting mutable attributes on non-dataclass subclasses of frozen dataclasses. Due to the implementation of ``__setattr__`` and ``__delattr__`` for frozen dataclasses, this previously had a time -complexity of ``O(n)``. It now has a time complexity of ``O(1)``. +complexity of *O*\ (*n*). It now has a time complexity of *O*\ (1). .. diff --git a/Misc/NEWS.d/3.12.0b1.rst b/Misc/NEWS.d/3.12.0b1.rst index 4bd2c52b28d..c850608b8ca 100644 --- a/Misc/NEWS.d/3.12.0b1.rst +++ b/Misc/NEWS.d/3.12.0b1.rst @@ -880,7 +880,7 @@ Update the ``repr`` of :class:`typing.Unpack` according to :pep:`692`. .. section: Library Make :mod:`dis` display the names of the args for -:opcode:`CALL_INTRINSIC_*`. +:opcode:`!CALL_INTRINSIC_*`. .. diff --git a/Misc/NEWS.d/3.12.0b4.rst b/Misc/NEWS.d/3.12.0b4.rst index 5212f359ec5..5e3742a7f7e 100644 --- a/Misc/NEWS.d/3.12.0b4.rst +++ b/Misc/NEWS.d/3.12.0b4.rst @@ -185,7 +185,7 @@ Added PY_THROW event hook for :mod:`cProfile` for generators .. nonce: W7tMRb .. section: Library -Added `asyncio.taskgroups.__all__` to `asyncio.__all__` for export in star +Added ``asyncio.taskgroups.__all__`` to ``asyncio.__all__`` for export in star imports. .. diff --git a/Misc/NEWS.d/3.12.0rc1.rst b/Misc/NEWS.d/3.12.0rc1.rst index ca826cf2425..bbc961dccda 100644 --- a/Misc/NEWS.d/3.12.0rc1.rst +++ b/Misc/NEWS.d/3.12.0rc1.rst @@ -38,7 +38,7 @@ from 800 to 1500. This should allow functions like ``list.__repr__`` and .. section: Core and Builtins Fix potential unaligned memory access on C APIs involving returned sequences -of `char *` pointers within the :mod:`grp` and :mod:`socket` modules. These +of ``char *`` pointers within the :mod:`grp` and :mod:`socket` modules. These were revealed using a ``-fsaniziter=alignment`` build on ARM macOS. Patch by Christopher Chavez. @@ -259,7 +259,7 @@ Update the bundled copy of pip to version 23.2.1. .. nonce: BT1Yxw .. section: Library -Fixed several bugs in zipfile.Path, including: in ``Path.match`, Windows +Fixed several bugs in zipfile.Path, including: in ``Path.match``, Windows separators are no longer honored (and never were meant to be); Fixed ``name``/``suffix``/``suffixes``/``stem`` operations when no filename is present and the Path is not at the root of the zipfile; Reworked glob for @@ -334,8 +334,8 @@ and not ``{}``. .. nonce: faPTlx .. section: Library -Ensure `gettext(msg)` retrieve translations even if a plural form exists. In -other words: `gettext(msg) == ngettext(msg, '', 1)`. +Ensure ``gettext(msg)`` retrieve translations even if a plural form exists. In +other words: ``gettext(msg) == ngettext(msg, '', 1)``. .. @@ -424,7 +424,7 @@ Moved tests for ``zipfile.Path`` into ``Lib/test/test_zipfile/_path``. Made .. nonce: U3Ezdq .. section: Build -Check for `linux/limits.h` before including it in `Modules/posixmodule.c`. +Check for ``linux/limits.h`` before including it in ``Modules/posixmodule.c``. .. diff --git a/Misc/NEWS.d/3.12.2.rst b/Misc/NEWS.d/3.12.2.rst new file mode 100644 index 00000000000..2708d58f610 --- /dev/null +++ b/Misc/NEWS.d/3.12.2.rst @@ -0,0 +1,1096 @@ +.. date: 2024-01-02-19-52-23 +.. gh-issue: 113659 +.. nonce: DkmnQc +.. release date: 2024-02-06 +.. section: Security + +Skip ``.pth`` files with names starting with a dot or hidden file attribute. + +.. + +.. date: 2024-02-03-04-07-18 +.. gh-issue: 114887 +.. nonce: uLSFmN +.. section: Core and Builtins + +Changed socket type validation in +:meth:`~asyncio.loop.create_datagram_endpoint` to accept all non-stream +sockets. This fixes a regression in compatibility with raw sockets. + +.. + +.. date: 2024-01-21-17-29-32 +.. gh-issue: 114388 +.. nonce: UVGO4K +.. section: Core and Builtins + +Fix a :exc:`RuntimeWarning` emitted when assign an integer-like value that +is not an instance of :class:`int` to an attribute that corresponds to a C +struct member of :ref:`type ` T_UINT and T_ULONG. Fix a +double :exc:`RuntimeWarning` emitted when assign a negative integer value to +an attribute that corresponds to a C struct member of type T_UINT. + +.. + +.. date: 2024-01-04-17-15-30 +.. gh-issue: 113703 +.. nonce: Zsk0pY +.. section: Core and Builtins + +Fix a regression in the :mod:`codeop` module that was causing it to +incorrectly identify incomplete f-strings. Patch by Pablo Galindo + +.. + +.. date: 2024-01-03-12-19-37 +.. gh-issue: 89811 +.. nonce: cZOj6d +.. section: Core and Builtins + +Check for a valid ``tp_version_tag`` before performing bytecode +specializations that rely on this value being usable. + +.. + +.. date: 2024-01-01-00-07-02 +.. gh-issue: 113602 +.. nonce: cWuTzk +.. section: Core and Builtins + +Fix an error that was causing the parser to try to overwrite existing errors +and crashing in the process. Patch by Pablo Galindo + +.. + +.. date: 2023-12-20-18-27-11 +.. gh-issue: 113297 +.. nonce: BZyAI_ +.. section: Core and Builtins + +Fix segfault in the compiler on with statement with 19 context managers. + +.. + +.. date: 2023-12-13-11-45-53 +.. gh-issue: 106905 +.. nonce: 5dslTN +.. section: Core and Builtins + +Use per AST-parser state rather than global state to track recursion depth +within the AST parser to prevent potential race condition due to +simultaneous parsing. + +The issue primarily showed up in 3.11 by multithreaded users of +:func:`ast.parse`. In 3.12 a change to when garbage collection can be +triggered prevented the race condition from occurring. + +.. + +.. date: 2023-12-11-00-50-00 +.. gh-issue: 112943 +.. nonce: RHNZie +.. section: Core and Builtins + +Correctly compute end column offsets for multiline tokens in the +:mod:`tokenize` module. Patch by Pablo Galindo + +.. + +.. date: 2023-12-05-20-41-58 +.. gh-issue: 112716 +.. nonce: hOcx0Y +.. section: Core and Builtins + +Fix SystemError in the ``import`` statement and in ``__reduce__()`` methods +of builtin types when ``__builtins__`` is not a dict. + +.. + +.. date: 2022-07-07-05-37-53 +.. gh-issue: 94606 +.. nonce: hojJ54 +.. section: Core and Builtins + +Fix UnicodeEncodeError when :func:`email.message.get_payload` reads a +message with a Unicode surrogate character and the message content is not +well-formed for surrogateescape encoding. Patch by Sidney Markowitz. + +.. + +.. date: 2024-02-03-17-54-17 +.. gh-issue: 114965 +.. nonce: gHksCK +.. section: Library + +Update bundled pip to 24.0 + +.. + +.. date: 2024-02-03-16-59-25 +.. gh-issue: 114959 +.. nonce: dCfAG2 +.. section: Library + +:mod:`tarfile` no longer ignores errors when trying to extract a directory +on top of a file. + +.. + +.. date: 2024-01-31-20-07-11 +.. gh-issue: 109475 +.. nonce: lmTb9S +.. section: Library + +Fix support of explicit option value "--" in :mod:`argparse` (e.g. +``--option=--``). + +.. + +.. date: 2024-01-30-15-34-08 +.. gh-issue: 110190 +.. nonce: Z5PQQX +.. section: Library + +Fix ctypes structs with array on Windows ARM64 platform by setting +``MAX_STRUCT_SIZE`` to 32 in stgdict. Patch by Diego Russo + +.. + +.. date: 2024-01-27-20-11-24 +.. gh-issue: 113280 +.. nonce: CZPQMf +.. section: Library + +Fix a leak of open socket in rare cases when error occurred in +:class:`ssl.SSLSocket` creation. + +.. + +.. date: 2024-01-26-16-46-21 +.. gh-issue: 77749 +.. nonce: NY_7TS +.. section: Library + +:meth:`email.policy.EmailPolicy.fold` now always encodes non-ASCII +characters in headers if :attr:`~email.policy.EmailPolicy.utf8` is false. + +.. + +.. date: 2024-01-23-21-20-40 +.. gh-issue: 114492 +.. nonce: vKxl5o +.. section: Library + +Make the result of :func:`termios.tcgetattr` reproducible on Alpine Linux. +Previously it could leave a random garbage in some fields. + +.. + +.. date: 2024-01-23-11-04-21 +.. gh-issue: 113267 +.. nonce: xe_Pxe +.. section: Library + +Revert changes in :gh:`106584` which made calls of ``TestResult`` methods +``startTest()`` and ``stopTest()`` unbalanced. + +.. + +.. date: 2024-01-22-12-10-34 +.. gh-issue: 75128 +.. nonce: 4FGlRS +.. section: Library + +Ignore an :exc:`OSError` in :meth:`asyncio.BaseEventLoop.create_server` when +IPv6 is available but the interface cannot actually support it. + +.. + +.. date: 2024-01-21-16-32-55 +.. gh-issue: 114257 +.. nonce: bCFld5 +.. section: Library + +Dismiss the :exc:`FileNotFound` error in :func:`ctypes.util.find_library` +and just return ``None`` on Linux. + +.. + +.. date: 2024-01-19-15-48-06 +.. gh-issue: 114328 +.. nonce: hixxW3 +.. section: Library + +The :func:`tty.setcbreak` and new :func:`tty.cfmakecbreak` no longer clears +the terminal input ICRLF flag. This fixes a regression introduced in 3.12 +that no longer matched how OSes define cbreak mode in their ``stty(1)`` +manual pages. + +.. + +.. date: 2024-01-18-22-29-28 +.. gh-issue: 101438 +.. nonce: 1-uUi_ +.. section: Library + +Avoid reference cycle in ElementTree.iterparse. The iterator returned by +``ElementTree.iterparse`` may hold on to a file descriptor. The reference +cycle prevented prompt clean-up of the file descriptor if the returned +iterator was not exhausted. + +.. + +.. date: 2024-01-17-18-53-51 +.. gh-issue: 104522 +.. nonce: 3NyDf4 +.. section: Library + +:exc:`OSError` raised when run a subprocess now only has *filename* +attribute set to *cwd* if the error was caused by a failed attempt to change +the current directory. + +.. + +.. date: 2024-01-16-15-59-06 +.. gh-issue: 114149 +.. nonce: LJ8IPm +.. section: Library + +Enum: correctly handle tuple subclasses in custom ``__new__``. + +.. + +.. date: 2024-01-15-18-42-44 +.. gh-issue: 109534 +.. nonce: wYaLMZ +.. section: Library + +Fix a reference leak in +:class:`asyncio.selector_events.BaseSelectorEventLoop` when SSL handshakes +fail. Patch contributed by Jamie Phan. + +.. + +.. date: 2024-01-15-12-12-54 +.. gh-issue: 114077 +.. nonce: KcVnfj +.. section: Library + +Fix possible :exc:`OverflowError` in :meth:`socket.socket.sendfile` when +pass *count* larger than 2 GiB on 32-bit platform. + +.. + +.. date: 2024-01-13-11-34-29 +.. gh-issue: 114014 +.. nonce: WRHifN +.. section: Library + +Fixed a bug in :class:`fractions.Fraction` where an invalid string using +``d`` in the decimals part creates a different error compared to other +invalid letters/characters. Patch by Jeremiah Gabriel Pascual. + +.. + +.. date: 2024-01-11-20-47-49 +.. gh-issue: 113951 +.. nonce: AzlqFK +.. section: Library + +Fix the behavior of ``tag_unbind()`` methods of :class:`tkinter.Text` and +:class:`tkinter.Canvas` classes with three arguments. Previously, +``widget.tag_unbind(tag, sequence, funcid)`` destroyed the current binding +for *sequence*, leaving *sequence* unbound, and deleted the *funcid* +command. Now it removes only *funcid* from the binding for *sequence*, +keeping other commands, and deletes the *funcid* command. It leaves +*sequence* unbound only if *funcid* was the last bound command. + +.. + +.. date: 2024-01-10-12-03-38 +.. gh-issue: 113877 +.. nonce: RxKlrQ +.. section: Library + +Fix :mod:`tkinter` method ``winfo_pathname()`` on 64-bit Windows. + +.. + +.. date: 2024-01-09-08-59-43 +.. gh-issue: 113661 +.. nonce: asvXSx +.. section: Library + +unittest runner: Don't exit 5 if tests were skipped. The intention of +exiting 5 was to detect issues where the test suite wasn't discovered at +all. If we skipped tests, it was correctly discovered. + +.. + +.. date: 2024-01-08-14-57-09 +.. gh-issue: 113781 +.. nonce: IoTnwi +.. section: Library + +Silence unraisable AttributeError when warnings are emitted during Python +finalization. + +.. + +.. date: 2024-01-07-00-56-41 +.. gh-issue: 112932 +.. nonce: OfhUu7 +.. section: Library + +Restore the ability for :mod:`zipfile` to ``extractall`` from zip files with +a "/" directory entry in them as is commonly added to zips by some wiki or +bug tracker data exporters. + +.. + +.. date: 2024-01-05-12-42-07 +.. gh-issue: 113594 +.. nonce: 4t8HiR +.. section: Library + +Fix :exc:`UnicodeEncodeError` in :mod:`email` when re-fold lines that +contain unknown-8bit encoded part followed by non-unknown-8bit encoded part. + +.. + +.. date: 2024-01-03-14-19-26 +.. gh-issue: 113538 +.. nonce: ahuBCo +.. section: Library + +In :meth:`asyncio.StreamReaderProtocol.connection_made`, there is callback +that logs an error if the task wrapping the "connected callback" fails. This +callback would itself fail if the task was cancelled. Prevent this by +checking whether the task was cancelled first. If so, close the transport +but don't log an error. + +.. + +.. date: 2024-01-01-13-26-02 +.. gh-issue: 85567 +.. nonce: K4U15m +.. section: Library + +Fix resource warnings for unclosed files in :mod:`pickle` and +:mod:`pickletools` command line interfaces. + +.. + +.. date: 2023-12-29-17-46-06 +.. gh-issue: 101225 +.. nonce: QaEyxF +.. section: Library + +Increase the backlog for :class:`multiprocessing.connection.Listener` +objects created by :mod:`multiprocessing.manager` and +:mod:`multiprocessing.resource_sharer` to significantly reduce the risk of +getting a connection refused error when creating a +:class:`multiprocessing.connection.Connection` to them. + +.. + +.. date: 2023-12-28-14-36-20 +.. gh-issue: 113543 +.. nonce: 2iWkOR +.. section: Library + +Make sure that ``webbrowser.MacOSXOSAScript`` sends ``webbrowser.open`` +audit event. + +.. + +.. date: 2023-12-23-16-51-17 +.. gh-issue: 113028 +.. nonce: 3Jmdoj +.. section: Library + +When a second reference to a string appears in the input to :mod:`pickle`, +and the Python implementation is in use, we are guaranteed that a single +copy gets pickled and a single object is shared when reloaded. Previously, +in protocol 0, when a string contained certain characters (e.g. newline) it +resulted in duplicate objects. + +.. + +.. date: 2023-12-23-16-10-07 +.. gh-issue: 113421 +.. nonce: w7vs08 +.. section: Library + +Fix multiprocessing logger for ``%(filename)s``. + +.. + +.. date: 2023-12-23-13-10-42 +.. gh-issue: 111784 +.. nonce: Nb4L1j +.. section: Library + +Fix segfaults in the ``_elementtree`` module. Fix first segfault during +deallocation of ``_elementtree.XMLParser`` instances by keeping strong +reference to ``pyexpat`` module in module state for capsule lifetime. Fix +second segfault which happens in the same deallocation process by keeping +strong reference to ``_elementtree`` module in ``XMLParser`` structure for +``_elementtree`` module lifetime. + +.. + +.. date: 2023-12-22-20-49-52 +.. gh-issue: 113407 +.. nonce: C_O13_ +.. section: Library + +Fix import of :mod:`unittest.mock` when CPython is built without docstrings. + +.. + +.. date: 2023-12-22-11-30-57 +.. gh-issue: 113320 +.. nonce: Vp5suS +.. section: Library + +Fix regression in Python 3.12 where :class:`~typing.Protocol` classes that +were not marked as :func:`runtime-checkable ` +would be unnecessarily introspected, potentially causing exceptions to be +raised if the protocol had problematic members. Patch by Alex Waygood. + +.. + +.. date: 2023-12-21-14-55-06 +.. gh-issue: 113358 +.. nonce: nRkiSL +.. section: Library + +Fix rendering tracebacks for exceptions with a broken ``__getattr__``. + +.. + +.. date: 2023-12-20-21-18-51 +.. gh-issue: 113214 +.. nonce: JcV9Mn +.. section: Library + +Fix an ``AttributeError`` during asyncio SSL protocol aborts in SSL-over-SSL +scenarios. + +.. + +.. date: 2023-12-18-09-47-54 +.. gh-issue: 113246 +.. nonce: em930H +.. section: Library + +Update bundled pip to 23.3.2. + +.. + +.. date: 2023-12-16-01-10-47 +.. gh-issue: 113199 +.. nonce: oDjnjL +.. section: Library + +Make ``http.client.HTTPResponse.read1`` and +``http.client.HTTPResponse.readline`` close IO after reading all data when +content length is known. Patch by Illia Volochii. + +.. + +.. date: 2023-12-15-20-29-49 +.. gh-issue: 113188 +.. nonce: AvoraB +.. section: Library + +Fix :func:`shutil.copymode` and :func:`shutil.copystat` on Windows. +Previously they worked differenly if *dst* is a symbolic link: they modified +the permission bits of *dst* itself rather than the file it points to if +*follow_symlinks* is true or *src* is not a symbolic link, and did not +modify the permission bits if *follow_symlinks* is false and *src* is a +symbolic link. + +.. + +.. date: 2023-12-15-12-35-28 +.. gh-issue: 61648 +.. nonce: G-4pz0 +.. section: Library + +Detect line numbers of properties in doctests. + +.. + +.. date: 2023-12-12-20-15-57 +.. gh-issue: 112559 +.. nonce: IgXkje +.. section: Library + +:func:`signal.signal` and :func:`signal.getsignal` no longer call ``repr`` +on callable handlers. :func:`asyncio.run` and :meth:`asyncio.Runner.run` no +longer call ``repr`` on the task results. Patch by Yilei Yang. + +.. + +.. date: 2023-12-11-14-12-46 +.. gh-issue: 110190 +.. nonce: e0iEUa +.. section: Library + +Fix ctypes structs with array on PPC64LE platform by setting +``MAX_STRUCT_SIZE`` to 64 in stgdict. Patch by Diego Russo. + +.. + +.. date: 2023-12-08-11-52-08 +.. gh-issue: 79429 +.. nonce: Nf9VK2 +.. section: Library + +Ignore FileNotFoundError when remove a temporary directory in the +multiprocessing finalizer. + +.. + +.. date: 2023-12-01-16-09-59 +.. gh-issue: 81194 +.. nonce: FFad1c +.. section: Library + +Fix a crash in :func:`socket.if_indextoname` with specific value (UINT_MAX). +Fix an integer overflow in :func:`socket.if_indextoname` on 64-bit +non-Windows platforms. + +.. + +.. date: 2023-11-24-19-08-50 +.. gh-issue: 112343 +.. nonce: RarGFC +.. section: Library + +Improve handling of pdb convenience variables to avoid replacing string +contents. + +.. + +.. date: 2023-11-02-10-13-31 +.. gh-issue: 111615 +.. nonce: 3SMixi +.. section: Library + +Fix a regression caused by a fix to gh-93162 whereby you couldn't configure +a :class:`QueueHandler` without specifying handlers. + +.. + +.. date: 2023-10-23-18-42-26 +.. gh-issue: 111049 +.. nonce: Ys7-o_ +.. section: Library + +Fix crash during garbage collection of the :class:`io.BytesIO` buffer +object. + +.. + +.. date: 2023-10-04-11-09-30 +.. gh-issue: 110345 +.. nonce: fZU1ud +.. section: Library + +Show the Tcl/Tk patchlevel (rather than version) in :meth:`tkinter._test`. + +.. + +.. date: 2023-09-28-13-15-51 +.. gh-issue: 109858 +.. nonce: 43e2dg +.. section: Library + +Protect :mod:`zipfile` from "quoted-overlap" zipbomb. It now raises +BadZipFile when try to read an entry that overlaps with other entry or +central directory. + +.. + +.. date: 2023-09-25-02-11-14 +.. gh-issue: 114440 +.. nonce: b2TrqG +.. section: Library + +On Windows, closing the connection writer when cleaning up a broken +:class:`multiprocessing.Queue` queue is now done for all queues, rather than +only in :mod:`concurrent.futures` manager thread. This can prevent a +deadlock when a ``multiprocessing`` worker process terminates without +cleaning up. This completes the backport of patches by Victor Stinner and +Serhiy Storchaka. + +.. + +.. date: 2023-09-22-22-17-45 +.. gh-issue: 38807 +.. nonce: m9McRN +.. section: Library + +Fix race condition in :mod:`trace`. Instead of checking if a directory +exists and creating it, directly call :func:`os.makedirs` with the kwarg +``exist_ok=True``. + +.. + +.. date: 2023-07-23-12-28-26 +.. gh-issue: 75705 +.. nonce: aB2-Ww +.. section: Library + +Set unixfrom envelope in :class:`mailbox.mbox` and :class:`mailbox.MMDF`. + +.. + +.. date: 2023-06-29-14-26-56 +.. gh-issue: 106233 +.. nonce: Aqw2HI +.. section: Library + +Fix stacklevel in ``InvalidTZPathWarning`` during :mod:`zoneinfo` module +import. + +.. + +.. date: 2023-05-30-18-30-11 +.. gh-issue: 105102 +.. nonce: SnpK04 +.. section: Library + +Allow :class:`ctypes.Union` to be nested in :class:`ctypes.Structure` when +the system endianness is the opposite of the classes. + +.. + +.. date: 2023-05-08-09-30-00 +.. gh-issue: 104282 +.. nonce: h4c6Eb +.. section: Library + +Fix null pointer dereference in :func:`lzma._decode_filter_properties` due +to improper handling of BCJ filters with properties of zero length. Patch by +Radislav Chugunov. + +.. + +.. date: 2023-03-08-00-02-30 +.. gh-issue: 102512 +.. nonce: LiugDr +.. section: Library + +When :func:`os.fork` is called from a foreign thread (aka ``_DummyThread``), +the type of the thread in a child process is changed to ``_MainThread``. +Also changed its name and daemonic status, it can be now joined. + +.. + +.. bpo: 35928 +.. date: 2020-10-03-23-47-28 +.. nonce: E0iPAa +.. section: Library + +:class:`io.TextIOWrapper` now correctly handles the decoding buffer after +``read()`` and ``write()``. + +.. + +.. bpo: 26791 +.. date: 2020-08-06-14-43-55 +.. nonce: KxoEfO +.. section: Library + +:func:`shutil.move` now moves a symlink into a directory when that directory +is the target of the symlink. This provides the same behavior as the mv +shell command. The previous behavior raised an exception. Patch by Jeffrey +Kintscher. + +.. + +.. bpo: 36959 +.. date: 2019-05-18-15-50-14 +.. nonce: ew6WZ4 +.. section: Library + +Fix some error messages for invalid ISO format string combinations in +``strptime()`` that referred to directives not contained in the format +string. Patch by Gordon P. Hemsley. + +.. + +.. bpo: 18060 +.. date: 2019-05-17-07-22-33 +.. nonce: 5mqTQM +.. section: Library + +Fixed a class inheritance issue that can cause segfaults when deriving two +or more levels of subclasses from a base class of Structure or Union. + +.. + +.. date: 2023-10-23-23-43-43 +.. gh-issue: 110746 +.. nonce: yg77IE +.. section: Documentation + +Improved markup for valid options/values for methods ttk.treeview.column and +ttk.treeview.heading, and for Layouts. + +.. + +.. date: 2023-08-01-13-11-39 +.. gh-issue: 95649 +.. nonce: F4KhPS +.. section: Documentation + +Document that the :mod:`asyncio` module contains code taken from `v0.16.0 of +the uvloop project `_, as +well as the required MIT licensing information. + +.. + +.. date: 2023-12-09-21-27-46 +.. gh-issue: 109980 +.. nonce: y--500 +.. section: Tests + +Fix ``test_tarfile_vs_tar`` in ``test_shutil`` for macOS, where system tar +can include more information in the archive than :mod:`shutil.make_archive`. + +.. + +.. date: 2023-06-02-05-04-15 +.. gh-issue: 105089 +.. nonce: KaZFtU +.. section: Tests + +Fix +``test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write`` +test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be in +sync with ``zinfo.external_attr`` + +.. + +.. bpo: 40648 +.. date: 2020-05-16-18-00-21 +.. nonce: p2uPqy +.. section: Tests + +Test modes that file can get with chmod() on Windows. + +.. + +.. date: 2023-12-21-05-35-06 +.. gh-issue: 112305 +.. nonce: VfqQPx +.. section: Build + +Fixed the ``check-clean-src`` step performed on out of tree builds to detect +errant ``$(srcdir)/Python/frozen_modules/*.h`` files and recommend +appropriate source tree cleanup steps to get a working build again. + +.. + +.. date: 2023-12-08-11-33-37 +.. gh-issue: 112867 +.. nonce: ZzDfXQ +.. section: Build + +Fix the build for the case that WITH_PYMALLOC_RADIX_TREE=0 set. + +.. + +.. bpo: 11102 +.. date: 2020-05-01-23-44-31 +.. nonce: Fw9zeS +.. section: Build + +The :func:`os.major`, :func:`os.makedev`, and :func:`os.minor` functions are +now available on HP-UX v3. + +.. + +.. bpo: 36351 +.. date: 2020-01-11-23-49-17 +.. nonce: ce8BBh +.. section: Build + +Do not set ipv6type when cross-compiling. + +.. + +.. date: 2024-02-05-16-53-12 +.. gh-issue: 109991 +.. nonce: YqjnDz +.. section: Windows + +Update Windows build to use OpenSSL 3.0.13. + +.. + +.. date: 2024-02-01-14-35-05 +.. gh-issue: 111239 +.. nonce: SO7SUF +.. section: Windows + +Update Windows builds to use zlib v1.3.1. + +.. + +.. date: 2024-01-23-00-05-05 +.. gh-issue: 100107 +.. nonce: lkbP_Q +.. section: Windows + +The ``py.exe`` launcher will no longer attempt to run the Microsoft Store +redirector when launching a script containing a ``/usr/bin/env`` shebang + +.. + +.. date: 2024-01-15-23-53-25 +.. gh-issue: 114096 +.. nonce: G-Myja +.. section: Windows + +Process privileges that are activated for creating directory junctions are +now restored afterwards, avoiding behaviour changes in other parts of the +program. + +.. + +.. date: 2024-01-04-21-16-31 +.. gh-issue: 111877 +.. nonce: fR-B4c +.. section: Windows + +:func:`os.stat` calls were returning incorrect time values for files that +could not be accessed directly. + +.. + +.. date: 2023-12-14-19-00-29 +.. gh-issue: 113009 +.. nonce: 6LNdjz +.. section: Windows + +:mod:`multiprocessing`: On Windows, fix a race condition in +``Process.terminate()``: no longer set the ``returncode`` attribute to +always call ``WaitForSingleObject()`` in ``Process.wait()``. Previously, +sometimes the process was still running after ``TerminateProcess()`` even if +``GetExitCodeProcess()`` is not ``STILL_ACTIVE``. Patch by Victor Stinner. + +.. + +.. date: 2023-03-15-23-53-45 +.. gh-issue: 87868 +.. nonce: 4C36oQ +.. section: Windows + +Correctly sort and remove duplicate environment variables in +:py:func:`!_winapi.CreateProcess`. + +.. + +.. bpo: 37308 +.. date: 2019-06-16-11-27-05 +.. nonce: Iz_NU_ +.. section: Windows + +Fix mojibake in :class:`mmap.mmap` when using a non-ASCII *tagname* argument +on Windows. + +.. + +.. date: 2024-02-06-09-01-10 +.. gh-issue: 115009 +.. nonce: ysau7e +.. section: macOS + +Update macOS installer to use SQLite 3.45.1. + +.. + +.. date: 2024-02-05-18-30-27 +.. gh-issue: 109991 +.. nonce: tun6Yu +.. section: macOS + +Update macOS installer to use OpenSSL 3.0.13. + +.. + +.. date: 2023-12-23-22-41-07 +.. gh-issue: 110459 +.. nonce: NaMBJy +.. section: macOS + +Running ``configure ... --with-openssl-rpath=X/Y/Z`` no longer fails to +detect OpenSSL on macOS. + +.. + +.. date: 2023-12-21-11-53-47 +.. gh-issue: 74573 +.. nonce: MA6Vys +.. section: macOS + +Document that :mod:`dbm.ndbm` can silently corrupt DBM files on updates when +exceeding undocumented platform limits, and can crash (segmentation fault) +when reading such a corrupted file. (FB8919203) + +.. + +.. date: 2023-12-21-10-20-41 +.. gh-issue: 65701 +.. nonce: Q2hNbN +.. section: macOS + +The :program:`freeze` tool doesn't work with framework builds of Python. +Document this and bail out early when running the tool with such a build. + +.. + +.. date: 2023-12-16-11-45-32 +.. gh-issue: 108269 +.. nonce: wVgCHF +.. section: macOS + +Set ``CFBundleAllowMixedLocalizations`` to true in the Info.plist for the +framework, embedded Python.app and IDLE.app with framework installs on +macOS. This allows applications to pick up the user's preferred locale when +that's different from english. + +.. + +.. date: 2023-12-10-20-30-06 +.. gh-issue: 102362 +.. nonce: y8svbF +.. section: macOS + +Make sure the result of :func:`sysconfig.get_plaform` includes at least a +major and minor versions, even if ``MACOSX_DEPLOYMENT_TARGET`` is set to +only a major version during build to match the format expected by pip. + +.. + +.. date: 2023-12-07-15-53-16 +.. gh-issue: 110017 +.. nonce: UMYzMR +.. section: macOS + +Disable a signal handling stress test on macOS due to a bug in macOS +(FB13453490). + +.. + +.. date: 2023-12-07-14-19-46 +.. gh-issue: 110820 +.. nonce: DIxb_F +.. section: macOS + +Make sure the preprocessor definitions for ``ALIGNOF_MAX_ALIGN_T``, +``SIZEOF_LONG_DOUBLE`` and ``HAVE_GCC_ASM_FOR_X64`` are correct for +Universal 2 builds on macOS. + +.. + +.. date: 2024-01-17-23-18-15 +.. gh-issue: 96905 +.. nonce: UYaxoU +.. section: IDLE + +In idlelib code, stop redefining built-ins 'dict' and 'object'. + +.. + +.. date: 2024-01-17-02-15-33 +.. gh-issue: 72284 +.. nonce: cAQiYO +.. section: IDLE + +Improve the lists of features, editor key bindings, and shell key bingings +in the IDLE doc. + +.. + +.. date: 2024-01-11-21-26-58 +.. gh-issue: 113903 +.. nonce: __GLlQ +.. section: IDLE + +Fix rare failure of test.test_idle, in test_configdialog. + +.. + +.. date: 2024-01-05-12-24-01 +.. gh-issue: 113729 +.. nonce: qpluea +.. section: IDLE + +Fix the "Help -> IDLE Doc" menu bug in 3.11.7 and 3.12.1. + +.. + +.. date: 2023-12-19-00-03-12 +.. gh-issue: 113269 +.. nonce: lrU-IC +.. section: IDLE + +Fix test_editor hang on macOS Catalina. + +.. + +.. date: 2023-12-10-20-01-11 +.. gh-issue: 112898 +.. nonce: 98aWv2 +.. section: IDLE + +Fix processing unsaved files when quitting IDLE on macOS. + +.. + +.. date: 2023-04-25-03-01-23 +.. gh-issue: 103820 +.. nonce: LCSpza +.. section: IDLE + +Revise IDLE bindings so that events from mouse button 4/5 on non-X11 +windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling. + +.. + +.. bpo: 13586 +.. date: 2019-12-13-12-26-56 +.. nonce: 1grqsR +.. section: IDLE + +Enter the selected text when opening the "Replace" dialog. + +.. + +.. date: 2024-02-05-19-00-32 +.. gh-issue: 109991 +.. nonce: yJSEkw +.. section: Tools/Demos + +Update GitHub CI workflows to use OpenSSL 3.0.13 and multissltests to use +1.1.1w, 3.0.13, 3.1.5, and 3.2.1. + +.. + +.. date: 2024-02-05-02-45-51 +.. gh-issue: 115015 +.. nonce: rgtiDB +.. section: Tools/Demos + +Fix a bug in Argument Clinic that generated incorrect code for methods with +no parameters that use the :ref:`METH_METHOD | METH_FASTCALL | METH_KEYWORDS +` calling convention. Only the +positional parameter count was checked; any keyword argument passed would be +silently accepted. diff --git a/Misc/NEWS.d/3.5.0a1.rst b/Misc/NEWS.d/3.5.0a1.rst index 96e59206cb1..26b3d8253db 100644 --- a/Misc/NEWS.d/3.5.0a1.rst +++ b/Misc/NEWS.d/3.5.0a1.rst @@ -251,8 +251,8 @@ and "surrogatepass" error handlers. .. nonce: FM72m- .. section: Core and Builtins -speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the common case -that the second argument has metaclass `type`. +speed up ``PyObject_IsInstance`` and ``PyObject_IsSubclass`` in the common case +that the second argument has metaclass ``type``. .. @@ -261,8 +261,8 @@ that the second argument has metaclass `type`. .. nonce: ds5wQa .. section: Core and Builtins -Add a new `PyErr_FormatV` function, similar to `PyErr_Format` but accepting -a `va_list` argument. +Add a new ``PyErr_FormatV`` function, similar to ``PyErr_Format`` but accepting +a ``va_list`` argument. .. @@ -1522,7 +1522,7 @@ Fixed fcntl() with integer argument on 64-bit big-endian platforms. .. nonce: 62MLqr .. section: Library -Add an `--sort-keys` option to json.tool CLI. +Add an ``--sort-keys`` option to ``json.tool`` CLI. .. @@ -1745,7 +1745,7 @@ already failed. .. section: Library Make it possible to examine the errors from unittest discovery without -executing the test suite. The new `errors` attribute on TestLoader exposes +executing the test suite. The new ``errors`` attribute on ``TestLoader`` exposes these non-fatal errors encountered during discovery. .. @@ -2342,9 +2342,9 @@ as normal call attributes. .. nonce: Nghn-Y .. section: Library -load_tests() is now unconditionally run when it is present in a package's -__init__.py. TestLoader.loadTestsFromModule() still accepts use_load_tests, -but it is deprecated and ignored. A new keyword-only attribute `pattern` is +``load_tests()`` is now unconditionally run when it is present in a package's +``__init__.py``. ``TestLoader.loadTestsFromModule()`` still accepts use_load_tests, +but it is deprecated and ignored. A new keyword-only attribute ``pattern`` is added and documented. Patch given by Robert Collins, tweaked by Barry Warsaw. @@ -2648,7 +2648,7 @@ module. .. nonce: THJSYB .. section: Library -Changed FeedParser feed() to avoid O(N\ :sup:`2`) behavior when parsing long line. +Changed FeedParser feed() to avoid *O*\ (*n*\ :sup:`2`) behavior when parsing long line. Original patch by Raymond Hettinger. .. @@ -2736,8 +2736,8 @@ Convert posixmodule to use Argument Clinic. .. nonce: YccmZF .. section: Library -Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic `mkdir -p` and -`os.makedirs()` functionality. When true, ignore FileExistsErrors. Patch +Add an *exists_ok* argument to ``Pathlib.mkdir()`` to mimic ``mkdir -p`` and +``os.makedirs()`` functionality. When true, ignore ``FileExistsErrors``. Patch by Berker Peksag. .. @@ -3930,7 +3930,7 @@ has been called. .. nonce: 5CDoox .. section: Library -New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of +New keyword argument ``unsafe`` to Mock. It raises ``AttributeError`` incase of an attribute startswith assert or assret. .. @@ -4173,7 +4173,7 @@ provide better security by default. .. nonce: FP5FY0 .. section: Library -`assertRaisesRegex` and `assertWarnsRegex` now raise a TypeError if the +``assertRaisesRegex`` and ``assertWarnsRegex`` now raise a ``TypeError`` if the second argument is not a string or compiled regex. .. diff --git a/Misc/NEWS.d/3.5.0b4.rst b/Misc/NEWS.d/3.5.0b4.rst index 2b1b98a4316..e42d93689d0 100644 --- a/Misc/NEWS.d/3.5.0b4.rst +++ b/Misc/NEWS.d/3.5.0b4.rst @@ -129,7 +129,7 @@ Random.setstate() now validates the value of state last element. .. nonce: HvJf6T .. section: Library -Fixed an issue that caused `inspect.getsource` to return incorrect results +Fixed an issue that caused ``inspect.getsource`` to return incorrect results on nested functions. .. diff --git a/Misc/NEWS.d/3.5.2rc1.rst b/Misc/NEWS.d/3.5.2rc1.rst index 01fcd866a89..a7e5c1b130f 100644 --- a/Misc/NEWS.d/3.5.2rc1.rst +++ b/Misc/NEWS.d/3.5.2rc1.rst @@ -710,9 +710,9 @@ Fixed the comparison of plistlib.Data with other types. .. nonce: RMRMtM .. section: Library -Fix an uninitialized variable in `ctypes.util`. +Fix an uninitialized variable in ``ctypes.util``. The bug only occurs on SunOS when the ctypes implementation searches for the -`crle` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. +``crle`` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. .. diff --git a/Misc/NEWS.d/3.6.0a1.rst b/Misc/NEWS.d/3.6.0a1.rst index 98f1215fb91..144d217f609 100644 --- a/Misc/NEWS.d/3.6.0a1.rst +++ b/Misc/NEWS.d/3.6.0a1.rst @@ -1113,9 +1113,9 @@ Fixed the comparison of plistlib.Data with other types. .. nonce: RMRMtM .. section: Library -Fix an uninitialized variable in `ctypes.util`. +Fix an uninitialized variable in ``ctypes.util``. The bug only occurs on SunOS when the ctypes implementation searches for the -`crle` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. +``crle`` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. .. @@ -3915,7 +3915,7 @@ Fix output of python-config --extension-suffix. .. nonce: yLO-r4 .. section: Tools/Demos -The pyvenv script has been deprecated in favour of `python3 -m venv`. +The pyvenv script has been deprecated in favour of ``python3 -m venv``. .. diff --git a/Misc/NEWS.d/3.6.0a2.rst b/Misc/NEWS.d/3.6.0a2.rst index 1b336d7bc51..05b3d9f0463 100644 --- a/Misc/NEWS.d/3.6.0a2.rst +++ b/Misc/NEWS.d/3.6.0a2.rst @@ -603,7 +603,7 @@ configuring text widget colors to a new function. .. nonce: RbyFuV .. section: IDLE -Rename many `idlelib/*.py` and `idle_test/test_*.py` files. Edit files to +Rename many ``idlelib/*.py`` and ``idle_test/test_*.py`` files. Edit files to replace old names with new names when the old name referred to the module rather than the class it contained. See the issue and IDLE section in What's New in 3.6 for more. diff --git a/Misc/NEWS.d/3.6.0b1.rst b/Misc/NEWS.d/3.6.0b1.rst index 3fbae5c6a4b..4fb6bdd6f89 100644 --- a/Misc/NEWS.d/3.6.0b1.rst +++ b/Misc/NEWS.d/3.6.0b1.rst @@ -166,7 +166,7 @@ a DeprecationWarning. Patch by Emanuel Barry. .. nonce: aABzcL .. section: Core and Builtins -`dict` implementation is changed like PyPy. It is more compact and preserves +``dict`` implementation is changed like PyPy. It is more compact and preserves insertion order. (Concept developed by Raymond Hettinger and patch by Inada Naoki.) diff --git a/Misc/NEWS.d/3.6.3.rst b/Misc/NEWS.d/3.6.3.rst index 4d591d77ffe..58fd009aea1 100644 --- a/Misc/NEWS.d/3.6.3.rst +++ b/Misc/NEWS.d/3.6.3.rst @@ -4,7 +4,7 @@ .. release date: 2017-10-03 .. section: Library -Re-allow arbitrary iterables in `concurrent.futures.as_completed()`. Fixes +Re-allow arbitrary iterables in ``concurrent.futures.as_completed()``. Fixes regression in 3.6.3rc1. .. diff --git a/Misc/NEWS.d/3.6.3rc1.rst b/Misc/NEWS.d/3.6.3rc1.rst index 4b2aae9dc88..ebda7665e2b 100644 --- a/Misc/NEWS.d/3.6.3rc1.rst +++ b/Misc/NEWS.d/3.6.3rc1.rst @@ -24,8 +24,8 @@ fixes. .. nonce: 0yiA5Q .. section: Core and Builtins -Fix an assertion failure in `subprocess.Popen()` on Windows, in case the env -argument has a bad keys() method. Patch by Oren Milman. +Fix an assertion failure in ``subprocess.Popen()`` on Windows, in case the env +argument has a bad ``keys()`` method. Patch by Oren Milman. .. @@ -34,7 +34,7 @@ argument has a bad keys() method. Patch by Oren Milman. .. nonce: rS-FlC .. section: Core and Builtins -Fix an assertion failure in `PyErr_WriteUnraisable()` in case of an +Fix an assertion failure in ``PyErr_WriteUnraisable()`` in case of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. .. @@ -95,7 +95,7 @@ plans to remove the functions from sys/types.h. .. nonce: t8QggK .. section: Core and Builtins -Fix an assertion failure in `zipimport.zipimporter.get_data` on Windows, +Fix an assertion failure in ``zipimport.zipimporter.get_data`` on Windows, when the return value of ``pathname.replace('/','\\')`` isn't a string. Patch by Oren Milman. @@ -106,7 +106,7 @@ Patch by Oren Milman. .. nonce: YMduKF .. section: Core and Builtins -Fix an assertion failure in the write() method of `io.TextIOWrapper`, when +Fix an assertion failure in the ``write()`` method of ``io.TextIOWrapper``, when the encoder doesn't return a bytes object. Patch by Oren Milman. .. @@ -116,7 +116,7 @@ the encoder doesn't return a bytes object. Patch by Oren Milman. .. nonce: dRJzqR .. section: Core and Builtins -Fix a crash in some methods of `io.TextIOWrapper`, when the decoder's state +Fix a crash in some methods of ``io.TextIOWrapper``, when the decoder's state is invalid. Patch by Oren Milman. .. @@ -477,7 +477,7 @@ attributes to help the garbage collector to destroy all widgets. .. nonce: 1t2hn5 .. section: Library -Fix `copyreg._slotnames()` mangled attribute calculation for classes whose +Fix ``copyreg._slotnames()`` mangled attribute calculation for classes whose name begins with an underscore. Patch by Shane Harvey. .. @@ -585,7 +585,7 @@ socket.close() now ignores ECONNRESET error. .. nonce: CLvEvV .. section: Library -Fix out of bounds write in `asyncio.CFuture.remove_done_callback()`. +Fix out of bounds write in ``asyncio.CFuture.remove_done_callback()``. .. @@ -933,7 +933,7 @@ Add tests for configdialog keys tab. Patch by Cheryl Sabella. .. nonce: sqE1FS .. section: IDLE -IDLE: Calltips use `inspect.signature` instead of `inspect.getfullargspec`. +IDLE: Calltips use ``inspect.signature`` instead of ``inspect.getfullargspec``. This improves calltips for builtins converted to use Argument Clinic. Patch by Louie Lu. diff --git a/Misc/NEWS.d/3.6.4rc1.rst b/Misc/NEWS.d/3.6.4rc1.rst index dc9ab7ad56d..8461da6972c 100644 --- a/Misc/NEWS.d/3.6.4rc1.rst +++ b/Misc/NEWS.d/3.6.4rc1.rst @@ -138,7 +138,7 @@ integer with binary base. .. section: Core and Builtins Fixed an assertion failure in Python parser in case of a bad -`unicodedata.normalize()`. Patch by Oren Milman. +``unicodedata.normalize()``. Patch by Oren Milman. .. @@ -147,7 +147,7 @@ Fixed an assertion failure in Python parser in case of a bad .. nonce: wT9Iy7 .. section: Core and Builtins -Raise a `TypeError` with a helpful error message when class creation fails +Raise a ``TypeError`` with a helpful error message when class creation fails due to a metaclass with a bad ``__prepare__()`` method. Patch by Oren Milman. @@ -158,7 +158,7 @@ Milman. .. nonce: OxwINs .. section: Core and Builtins -Fix an assertion failure in `_warnings.warn()` in case of a bad ``__name__`` +Fix an assertion failure in ``_warnings.warn()`` in case of a bad ``__name__`` global. Patch by Oren Milman. .. @@ -168,8 +168,8 @@ global. Patch by Oren Milman. .. nonce: VomaFa .. section: Core and Builtins -Fix an assertion failure in `json`, in case `_json.make_encoder()` received -a bad `encoder()` argument. Patch by Oren Milman. +Fix an assertion failure in ``json``, in case ``_json.make_encoder()`` received +a bad ``encoder()`` argument. Patch by Oren Milman. .. @@ -189,7 +189,7 @@ such a module. Patch by Oren Milman. .. nonce: r7m2sj .. section: Core and Builtins -Fix an assertion failure in `ctypes` class definition, in case the class has +Fix an assertion failure in ``ctypes`` class definition, in case the class has an attribute whose name is specified in ``_anonymous_`` but not in ``_fields_``. Patch by Oren Milman. @@ -200,7 +200,7 @@ an attribute whose name is specified in ``_anonymous_`` but not in .. nonce: o06iKD .. section: Core and Builtins -Fix an assertion failure in `_random.Random.seed()` in case the argument has +Fix an assertion failure in ``_random.Random.seed()`` in case the argument has a bad ``__abs__()`` method. Patch by Oren Milman. .. @@ -220,7 +220,7 @@ string. Patch by Oren Milman. .. nonce: bNE2l- .. section: Core and Builtins -Fix a crash in the ``__setstate__()`` method of `ctypes._CData`, in case of +Fix a crash in the ``__setstate__()`` method of ``ctypes._CData``, in case of a bad ``__dict__``. Patch by Oren Milman. .. @@ -240,8 +240,8 @@ float with a bad as_integer_ratio() method. Patch by Oren Milman. .. nonce: 7lzaKV .. section: Core and Builtins -Fix an assertion failure in `warnings.warn_explicit`, when the return value -of the received loader's get_source() has a bad splitlines() method. Patch +Fix an assertion failure in ``warnings.warn_explicit``, when the return value +of the received loader's ``get_source()`` has a bad ``splitlines()`` method. Patch by Oren Milman. .. @@ -251,8 +251,8 @@ by Oren Milman. .. nonce: j7ZvN_ .. section: Core and Builtins -`PyErr_PrintEx()` clears now the ignored exception that may be raised by -`_PySys_SetObjectId()`, for example when no memory. +``PyErr_PrintEx()`` clears now the ignored exception that may be raised by +``_PySys_SetObjectId()``, for example when no memory. .. @@ -599,8 +599,8 @@ On Windows, faulthandler.enable() now ignores MSC and COM exceptions. .. nonce: XrVMME .. section: Library -Prevent crashes in `_elementtree` due to unsafe cleanup of `Element.text` -and `Element.tail`. Patch by Oren Milman. +Prevent crashes in ``_elementtree`` due to unsafe cleanup of ``Element.text`` +and ``Element.tail``. Patch by Oren Milman. .. @@ -813,8 +813,8 @@ reference leaks. .. nonce: lo7FQX .. section: Tests -Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` functions to -the _testcapi module. +Add the ``set_nomemory(start, stop)`` and ``remove_mem_hooks()`` functions to +the ``_testcapi`` module. .. @@ -897,7 +897,7 @@ Prevent double substitution of prefix in python-config.sh. .. nonce: KUDjno .. section: Build -Avoid wholesale rebuild after `make regen-all` if nothing changed. +Avoid wholesale rebuild after ``make regen-all`` if nothing changed. .. @@ -1123,7 +1123,7 @@ and Py_SetPath() .. nonce: Q3T_8n .. section: C API -The `PyExc_RecursionErrorInst` singleton is removed and -`PyErr_NormalizeException()` does not use it anymore. This singleton is +The ``PyExc_RecursionErrorInst`` singleton is removed and +``PyErr_NormalizeException()`` does not use it anymore. This singleton is persistent and its members being never cleared may cause a segfault during finalization of the interpreter. See also issue #22898. diff --git a/Misc/NEWS.d/3.6.5rc1.rst b/Misc/NEWS.d/3.6.5rc1.rst index 448baed5413..056bacb5267 100644 --- a/Misc/NEWS.d/3.6.5rc1.rst +++ b/Misc/NEWS.d/3.6.5rc1.rst @@ -283,7 +283,7 @@ Make sure sys.argv remains as a list when running trace. .. nonce: bvHDOc .. section: Library -Fixed `asyncio.Condition` issue which silently ignored cancellation after +Fixed ``asyncio.Condition`` issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. .. @@ -599,7 +599,7 @@ deprecation. .. nonce: w1m_8r .. section: Documentation -Improve docstrings for `pathlib.PurePath` subclasses. +Improve docstrings for ``pathlib.PurePath`` subclasses. .. diff --git a/Misc/NEWS.d/3.6.6rc1.rst b/Misc/NEWS.d/3.6.6rc1.rst index 9624195c790..f70649af055 100644 --- a/Misc/NEWS.d/3.6.6rc1.rst +++ b/Misc/NEWS.d/3.6.6rc1.rst @@ -110,7 +110,7 @@ on Windows. .. nonce: UoC319 .. section: Core and Builtins -Fix a crash in `ctypes.cast()` in case the type argument is a ctypes +Fix a crash in ``ctypes.cast()`` in case the type argument is a ctypes structured data type. Patch by Eryk Sun and Oren Milman. .. @@ -248,7 +248,7 @@ Patch by Zvi Effron .. nonce: taxbVT .. section: Library -Fix race condition with `ReadTransport.resume_reading` in Windows proactor +Fix race condition with ``ReadTransport.resume_reading`` in Windows proactor event loop. .. @@ -346,7 +346,7 @@ tree of tuples or lists with ``line_info=False`` and ``col_info=True``. .. nonce: B56Hc1 .. section: Library -Fix FD leak in `_SelectorSocketTransport` Patch by Vlad Starostin. +Fix FD leak in ``_SelectorSocketTransport`` Patch by Vlad Starostin. .. diff --git a/Misc/NEWS.d/3.7.0a1.rst b/Misc/NEWS.d/3.7.0a1.rst index bee424241fd..aca79c4cc8c 100644 --- a/Misc/NEWS.d/3.7.0a1.rst +++ b/Misc/NEWS.d/3.7.0a1.rst @@ -86,7 +86,7 @@ information. .. nonce: r7m2sj .. section: Core and Builtins -Fix an assertion failure in `ctypes` class definition, in case the class has +Fix an assertion failure in ``ctypes`` class definition, in case the class has an attribute whose name is specified in ``_anonymous_`` but not in ``_fields_``. Patch by Oren Milman. @@ -97,8 +97,8 @@ an attribute whose name is specified in ``_anonymous_`` but not in .. nonce: 0yiA5Q .. section: Core and Builtins -Fix an assertion failure in `subprocess.Popen()` on Windows, in case the env -argument has a bad keys() method. Patch by Oren Milman. +Fix an assertion failure in ``subprocess.Popen()`` on Windows, in case the env +argument has a bad ``keys()`` method. Patch by Oren Milman. .. @@ -107,7 +107,7 @@ argument has a bad keys() method. Patch by Oren Milman. .. nonce: rS-FlC .. section: Core and Builtins -Fix an assertion failure in `PyErr_WriteUnraisable()` in case of an +Fix an assertion failure in ``PyErr_WriteUnraisable()`` in case of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. .. @@ -224,7 +224,7 @@ plans to remove the functions from sys/types.h. .. nonce: t8QggK .. section: Core and Builtins -Fix an assertion failure in `zipimport.zipimporter.get_data` on Windows, +Fix an assertion failure in ``zipimport.zipimporter.get_data`` on Windows, when the return value of ``pathname.replace('/','\\')`` isn't a string. Patch by Oren Milman. @@ -235,7 +235,7 @@ Patch by Oren Milman. .. nonce: YMduKF .. section: Core and Builtins -Fix an assertion failure in the write() method of `io.TextIOWrapper`, when +Fix an assertion failure in the ``write()`` method of ``io.TextIOWrapper``, when the encoder doesn't return a bytes object. Patch by Oren Milman. .. @@ -245,7 +245,7 @@ the encoder doesn't return a bytes object. Patch by Oren Milman. .. nonce: dRJzqR .. section: Core and Builtins -Fix a crash in some methods of `io.TextIOWrapper`, when the decoder's state +Fix a crash in some methods of ``io.TextIOWrapper``, when the decoder's state is invalid. Patch by Oren Milman. .. @@ -1855,7 +1855,7 @@ docserver attribute to None to break a reference cycle. .. nonce: gwnthq .. section: Library -Many asserts in `multiprocessing` are now more informative, and some error +Many asserts in ``multiprocessing`` are now more informative, and some error types have been changed to more specific ones. .. @@ -1896,7 +1896,7 @@ child exit. .. nonce: -2_YGj .. section: Library -`dis` now works with asynchronous generator and coroutine objects. Patch by +``dis`` now works with asynchronous generator and coroutine objects. Patch by George Collins based on diagnosis by Luciano Ramalho. .. @@ -1906,10 +1906,10 @@ George Collins based on diagnosis by Luciano Ramalho. .. nonce: huQi2Y .. section: Library -There are a number of uninformative asserts in the `multiprocessing` module, +There are a number of uninformative asserts in the ``multiprocessing`` module, as noted in issue 5001. This change fixes two of the most potentially problematic ones, since they are in error-reporting code, in the -`multiprocessing.managers.convert_to_error` function. (It also makes more +``multiprocessing.managers.convert_to_error`` function. (It also makes more informative a ValueError message.) The only potentially problematic change is that the AssertionError is now a TypeError; however, this should also help distinguish it from an AssertionError being *reported* by the @@ -1973,7 +1973,7 @@ attributes to help the garbage collector to destroy all widgets. .. nonce: 1t2hn5 .. section: Library -Fix `copyreg._slotnames()` mangled attribute calculation for classes whose +Fix ``copyreg._slotnames()`` mangled attribute calculation for classes whose name begins with an underscore. Patch by Shane Harvey. .. @@ -1983,7 +1983,7 @@ name begins with an underscore. Patch by Shane Harvey. .. nonce: 2CFVCO .. section: Library -Allow `logging.config.fileConfig` to accept kwargs and/or args. +Allow ``logging.config.fileConfig`` to accept kwargs and/or args. .. @@ -2159,7 +2159,7 @@ socket.close() now ignores ECONNRESET error. .. nonce: CLvEvV .. section: Library -Fix out of bounds write in `asyncio.CFuture.remove_done_callback()`. +Fix out of bounds write in ``asyncio.CFuture.remove_done_callback()``. .. @@ -2406,7 +2406,7 @@ Don't log exceptions if Task/Future "cancel()" method was called. .. nonce: xihJ4Y .. section: Library -Fix path calculation in `imp.load_package()`, fixing it for cases when a +Fix path calculation in ``imp.load_package()``, fixing it for cases when a package is only shipped with bytecodes. Patch by Alexandru Ardelean. .. @@ -4947,8 +4947,8 @@ run test_zipfile64. .. nonce: lo7FQX .. section: Tests -Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` functions to -the _testcapi module. +Add the ``set_nomemory(start, stop)`` and ``remove_mem_hooks()`` functions to +the ``_testcapi`` module. .. @@ -5076,7 +5076,7 @@ on the Android armv7 qemu emulator. .. nonce: 4f-VJK .. section: Build -Allow --with-lto to be used on all builds, not just `make profile-opt`. +Allow ``--with-lto`` to be used on all builds, not just ``make profile-opt``. .. @@ -5819,7 +5819,7 @@ Add tests for configdialog keys tab. Patch by Cheryl Sabella. .. nonce: sqE1FS .. section: IDLE -IDLE: Calltips use `inspect.signature` instead of `inspect.getfullargspec`. +IDLE: Calltips use ``inspect.signature`` instead of ``inspect.getfullargspec``. This improves calltips for builtins converted to use Argument Clinic. Patch by Louie Lu. @@ -6224,9 +6224,9 @@ Added the slice index converter in Argument Clinic. .. nonce: KPFC7o .. section: Tools/Demos -Argument Clinic now uses the converter `bool(accept={int})` rather than -`int` for semantical booleans. This avoids repeating the default value for -Python and C and will help in converting to `bool` in future. +Argument Clinic now uses the converter ``bool(accept={int})`` rather than +``int`` for semantical booleans. This avoids repeating the default value for +Python and C and will help in converting to ``bool`` in future. .. diff --git a/Misc/NEWS.d/3.7.0a2.rst b/Misc/NEWS.d/3.7.0a2.rst index 0f107d8c5f5..06ca32d37fa 100644 --- a/Misc/NEWS.d/3.7.0a2.rst +++ b/Misc/NEWS.d/3.7.0a2.rst @@ -65,8 +65,8 @@ integer with binary base. .. nonce: MtgLCn .. section: Core and Builtins -Fix an assertion failure in `zipimporter.get_source()` in case of a bad -`zlib.decompress()`. Patch by Oren Milman. +Fix an assertion failure in ``zipimporter.get_source()`` in case of a bad +``zlib.decompress()``. Patch by Oren Milman. .. @@ -76,7 +76,7 @@ Fix an assertion failure in `zipimporter.get_source()` in case of a bad .. section: Core and Builtins Fixed an assertion failure in Python parser in case of a bad -`unicodedata.normalize()`. Patch by Oren Milman. +``unicodedata.normalize()``. Patch by Oren Milman. .. @@ -85,7 +85,7 @@ Fixed an assertion failure in Python parser in case of a bad .. nonce: wT9Iy7 .. section: Core and Builtins -Raise a `TypeError` with a helpful error message when class creation fails +Raise a ``TypeError`` with a helpful error message when class creation fails due to a metaclass with a bad ``__prepare__()`` method. Patch by Oren Milman. @@ -105,7 +105,7 @@ Importlib was instrumented with two dtrace probes to profile import timing. .. nonce: OxwINs .. section: Core and Builtins -Fix an assertion failure in `_warnings.warn()` in case of a bad ``__name__`` +Fix an assertion failure in ``_warnings.warn()`` in case of a bad ``__name__`` global. Patch by Oren Milman. .. @@ -115,7 +115,7 @@ global. Patch by Oren Milman. .. nonce: pRVTRB .. section: Core and Builtins -Improved the error message logic for object.__new__ and object.__init__. +Improved the error message logic for ``object.__new__`` and ``object.__init__``. .. @@ -124,8 +124,8 @@ Improved the error message logic for object.__new__ and object.__init__. .. nonce: VomaFa .. section: Core and Builtins -Fix an assertion failure in `json`, in case `_json.make_encoder()` received -a bad `encoder()` argument. Patch by Oren Milman. +Fix an assertion failure in ``json``, in case ``_json.make_encoder()`` received +a bad ``encoder()`` argument. Patch by Oren Milman. .. @@ -145,7 +145,7 @@ such a module. Patch by Oren Milman. .. nonce: o06iKD .. section: Core and Builtins -Fix an assertion failure in `_random.Random.seed()` in case the argument has +Fix an assertion failure in ``_random.Random.seed()`` in case the argument has a bad ``__abs__()`` method. Patch by Oren Milman. .. @@ -218,7 +218,7 @@ string. Patch by Oren Milman. .. nonce: bNE2l- .. section: Core and Builtins -Fix a crash in the ``__setstate__()`` method of `ctypes._CData`, in case of +Fix a crash in the ``__setstate__()`` method of ``ctypes._CData``, in case of a bad ``__dict__``. Patch by Oren Milman. .. @@ -238,8 +238,8 @@ float with a bad as_integer_ratio() method. Patch by Oren Milman. .. nonce: 7lzaKV .. section: Core and Builtins -Fix an assertion failure in `warnings.warn_explicit`, when the return value -of the received loader's get_source() has a bad splitlines() method. Patch +Fix an assertion failure in ``warnings.warn_explicit``, when the return value +of the received loader's ``get_source()`` has a bad ``splitlines()`` method. Patch by Oren Milman. .. @@ -286,8 +286,8 @@ On Windows, faulthandler.enable() now ignores MSC and COM exceptions. .. nonce: XrVMME .. section: Library -Prevent crashes in `_elementtree` due to unsafe cleanup of `Element.text` -and `Element.tail`. Patch by Oren Milman. +Prevent crashes in ``_elementtree`` due to unsafe cleanup of ``Element.text`` +and ``Element.tail``. Patch by Oren Milman. .. @@ -307,8 +307,8 @@ compiling. bm_regex_compile benchmark shows 14% performance improvements. .. section: Library The types of compiled regular objects and match objects are now exposed as -`re.Pattern` and `re.Match`. This adds information in pydoc output for the -re module. +``re.Pattern`` and ``re.Match``. This adds information in pydoc output for the +``re`` module. .. @@ -485,10 +485,10 @@ since Python 3.3.) .. nonce: cIMFJW .. section: Library -Reprs of subclasses of some collection and iterator classes (`bytearray`, -`array.array`, `collections.deque`, `collections.defaultdict`, -`itertools.count`, `itertools.repeat`) now contain actual type name insteads -of hardcoded name of the base class. +Reprs of subclasses of some collection and iterator classes (``bytearray``, +``array.array``, ``collections.deque``, ``collections.defaultdict``, +``itertools.count``, ``itertools.repeat``) now contain actual type name instead +of hardcoded names of the base class. .. @@ -584,7 +584,7 @@ Correct PCBuild/ case to PCbuild/ in build scripts and documentation. .. nonce: KUDjno .. section: Build -Avoid wholesale rebuild after `make regen-all` if nothing changed. +Avoid wholesale rebuild after ``make regen-all`` if nothing changed. .. @@ -657,8 +657,8 @@ for code and tests by Guilherme Polo and Cheryl Sabella, respectively. .. nonce: K_EjpO .. section: C API -Make `PyMapping_Keys()`, `PyMapping_Values()` and `PyMapping_Items()` always -return a `list` (rather than a `list` or a `tuple`). Patch by Oren Milman. +Make ``PyMapping_Keys()``, ``PyMapping_Values()`` and ``PyMapping_Items()`` always +return a ``list`` (rather than a ``list`` or a ``tuple``). Patch by Oren Milman. .. diff --git a/Misc/NEWS.d/3.7.0a3.rst b/Misc/NEWS.d/3.7.0a3.rst index 69db9fcd1c8..2fbdb235c8e 100644 --- a/Misc/NEWS.d/3.7.0a3.rst +++ b/Misc/NEWS.d/3.7.0a3.rst @@ -240,8 +240,8 @@ after shrinking a memory block. .. nonce: j7ZvN_ .. section: Core and Builtins -`PyErr_PrintEx()` clears now the ignored exception that may be raised by -`_PySys_SetObjectId()`, for example when no memory. +``PyErr_PrintEx()`` clears now the ignored exception that may be raised by +``_PySys_SetObjectId()``, for example when no memory. .. @@ -643,7 +643,7 @@ undocumented. .. nonce: RwietE .. section: Library -cProfile command line now accepts `-m module_name` as an alternative to +cProfile command line now accepts ``-m module_name`` as an alternative to script path. Patch by Sanyam Khurana. .. @@ -926,7 +926,7 @@ Fix multiprocessing.Process when stdout and/or stderr is closed or None. .. nonce: -1MBEy .. section: Library -Add `subnet_of` and `superset_of` containment tests to +Add ``subnet_of`` and ``superset_of`` containment tests to :class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch by Michel Albert and Cheryl Sabella. @@ -948,7 +948,7 @@ for backward compatibility with Python 2.2, and was deprecated since Python .. nonce: IxCvGB .. section: Library -Add a ``subprocess.Popen(text=False)`` keyword argument to `subprocess` +Add a ``subprocess.Popen(text=False)`` keyword argument to ``subprocess`` functions to be more explicit about when the library should attempt to decode outputs into text. Patch by Andrew Clegg. @@ -1191,7 +1191,7 @@ interruptions. If it crashes, restart it when necessary. .. nonce: AniZuz .. section: Library -Added support for AF_UNIX socket in asyncio `create_datagram_endpoint`. +Added support for AF_UNIX socket in asyncio ``create_datagram_endpoint``. .. @@ -1609,7 +1609,7 @@ comparison functions. .. nonce: Q3T_8n .. section: C API -The `PyExc_RecursionErrorInst` singleton is removed and -`PyErr_NormalizeException()` does not use it anymore. This singleton is +The ``PyExc_RecursionErrorInst`` singleton is removed and +``PyErr_NormalizeException()`` does not use it anymore. This singleton is persistent and its members being never cleared may cause a segfault during finalization of the interpreter. See also issue #22898. diff --git a/Misc/NEWS.d/3.7.0a4.rst b/Misc/NEWS.d/3.7.0a4.rst index f19d1a18235..4ed00a5ced8 100644 --- a/Misc/NEWS.d/3.7.0a4.rst +++ b/Misc/NEWS.d/3.7.0a4.rst @@ -152,7 +152,7 @@ option or the ``PYTHONWARNINGS`` environment variable. .. nonce: PgGQaB .. section: Core and Builtins -`-X dev` now injects a ``'default'`` entry into sys.warnoptions, ensuring +``-X dev`` now injects a ``'default'`` entry into sys.warnoptions, ensuring that it behaves identically to actually passing ``-Wdefault`` at the command line. @@ -192,7 +192,7 @@ by Ivan Levkivskyi. .. nonce: mDeCLK .. section: Core and Builtins -The `atexit` module now has its callback stored per interpreter. +The ``atexit`` module now has its callback stored per interpreter. .. @@ -792,7 +792,7 @@ to more readily adjust to platform dependent behaviour. .. nonce: ODpc9y .. section: Windows -Implement support for `subprocess.Popen(close_fds=True)` on Windows. Patch +Implement support for ``subprocess.Popen(close_fds=True)`` on Windows. Patch by Segev Finer. .. diff --git a/Misc/NEWS.d/3.7.0b2.rst b/Misc/NEWS.d/3.7.0b2.rst index 9590914599b..702dbc960c0 100644 --- a/Misc/NEWS.d/3.7.0b2.rst +++ b/Misc/NEWS.d/3.7.0b2.rst @@ -214,7 +214,7 @@ helper methods that can be used instead ``_dump_registry``, .. nonce: bvHDOc .. section: Library -Fixed `asyncio.Condition` issue which silently ignored cancellation after +Fixed ``asyncio.Condition`` issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. .. @@ -497,7 +497,7 @@ deprecation. .. nonce: w1m_8r .. section: Documentation -Improve docstrings for `pathlib.PurePath` subclasses. +Improve docstrings for ``pathlib.PurePath`` subclasses. .. diff --git a/Misc/NEWS.d/3.7.0b4.rst b/Misc/NEWS.d/3.7.0b4.rst index 1d4fc921406..b17c7e08d1d 100644 --- a/Misc/NEWS.d/3.7.0b4.rst +++ b/Misc/NEWS.d/3.7.0b4.rst @@ -371,8 +371,8 @@ suffixes). .. nonce: o7G_UO .. section: Build -By default, modules configured in `Modules/Setup` are no longer built with -`-DPy_BUILD_CORE`. Instead, modules that specifically need that preprocessor +By default, modules configured in ``Modules/Setup`` are no longer built with +``-DPy_BUILD_CORE``. Instead, modules that specifically need that preprocessor definition include it in their individual entries. .. diff --git a/Misc/NEWS.d/3.7.0b5.rst b/Misc/NEWS.d/3.7.0b5.rst index fb291098691..459eaddbc91 100644 --- a/Misc/NEWS.d/3.7.0b5.rst +++ b/Misc/NEWS.d/3.7.0b5.rst @@ -26,7 +26,7 @@ module_globals is not a dict. .. nonce: kqBNzv .. section: Core and Builtins -The new `os.posix_spawn` added in 3.7.0b1 was removed as we are still +The new ``os.posix_spawn`` added in 3.7.0b1 was removed as we are still working on what the API should look like. Expect this in 3.8 instead. .. @@ -77,7 +77,7 @@ their body. Based on patch by Inada Naoki. .. nonce: UoC319 .. section: Core and Builtins -Fix a crash in `ctypes.cast()` in case the type argument is a ctypes +Fix a crash in ``ctypes.cast()`` in case the type argument is a ctypes structured data type. Patch by Eryk Sun and Oren Milman. .. @@ -254,8 +254,8 @@ default. .. nonce: C6Hnd1 .. section: Library -Do not simplify arguments to `typing.Union`. Now `Union[Manager, Employee]` -is not simplified to `Employee` at runtime. Such simplification previously +Do not simplify arguments to ``typing.Union``. Now ``Union[Manager, Employee]`` +is not simplified to ``Employee`` at runtime. Such simplification previously caused several bugs and limited possibilities for introspection. .. @@ -314,7 +314,7 @@ Patch by Zvi Effron .. nonce: taxbVT .. section: Library -Fix race condition with `ReadTransport.resume_reading` in Windows proactor +Fix race condition with ``ReadTransport.resume_reading`` in Windows proactor event loop. .. @@ -324,7 +324,7 @@ event loop. .. nonce: pj2Mbb .. section: Library -Fix failure in `typing.get_type_hints()` when ClassVar was provided as a +Fix failure in ``typing.get_type_hints()`` when ClassVar was provided as a string forward reference. .. @@ -427,7 +427,7 @@ Donghee Na. .. nonce: B56Hc1 .. section: Library -Fix FD leak in `_SelectorSocketTransport` Patch by Vlad Starostin. +Fix FD leak in ``_SelectorSocketTransport`` Patch by Vlad Starostin. .. @@ -466,7 +466,7 @@ Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. .. nonce: E5gba1 .. section: Documentation -Document that `asyncio.wait()` does not cancel its futures on timeout. +Document that ``asyncio.wait()`` does not cancel its futures on timeout. .. diff --git a/Misc/NEWS.d/3.8.0a1.rst b/Misc/NEWS.d/3.8.0a1.rst index 4a5467a8bbd..ffe4f957db9 100644 --- a/Misc/NEWS.d/3.8.0a1.rst +++ b/Misc/NEWS.d/3.8.0a1.rst @@ -882,7 +882,7 @@ Update valgrind suppression list to use .. nonce: GIOm_8 .. section: Core and Builtins -Added the "socket" option in the `stat.filemode()` Python implementation to +Added the "socket" option in the ``stat.filemode()`` Python implementation to match the C implementation. .. @@ -1271,8 +1271,8 @@ parentheses in the string representation. .. nonce: tDBciE .. section: Core and Builtins -Added support for the `setpgroup`, `resetids`, `setsigmask`, `setsigdef` and -`scheduler` parameters of `posix_spawn`. Patch by Pablo Galindo. +Added support for the ``setpgroup``, ``resetids``, ``setsigmask``, ``setsigdef`` and +``scheduler`` parameters of ``posix_spawn``. Patch by Pablo Galindo. .. @@ -1735,7 +1735,7 @@ Patch by Zackery Spytz. .. nonce: UoC319 .. section: Core and Builtins -Fix a crash in `ctypes.cast()` in case the type argument is a ctypes +Fix a crash in ``ctypes.cast()`` in case the type argument is a ctypes structured data type. Patch by Eryk Sun and Oren Milman. .. @@ -1745,7 +1745,7 @@ structured data type. Patch by Eryk Sun and Oren Milman. .. nonce: jgYsSA .. section: Core and Builtins -Fix a crash in `os.utime()` in case of a bad ns argument. Patch by Oren +Fix a crash in ``os.utime()`` in case of a bad ns argument. Patch by Oren Milman. .. @@ -2006,8 +2006,8 @@ Improved support of custom data descriptors in :func:`help` and .. nonce: V4kNN3 .. section: Library -The `crypt` module now internally uses the `crypt_r()` library function -instead of `crypt()` when available. +The ``crypt`` module now internally uses the ``crypt_r()`` library function +instead of ``crypt()`` when available. .. @@ -2025,7 +2025,7 @@ Fixed help() on metaclasses. Patch by Sanyam Khurana. .. nonce: PutiOC .. section: Library -Expose ``raise(signum)`` as `raise_signal` +Expose ``raise(signum)`` as ``raise_signal`` .. @@ -2248,7 +2248,7 @@ the pool is still running. .. nonce: abB4BN .. section: Library -When a :class:`Mock` instance was used to wrap an object, if `side_effect` +When a :class:`Mock` instance was used to wrap an object, if ``side_effect`` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. @@ -2377,7 +2377,7 @@ compliant, and will not throw an exception on a trailing '%'. .. nonce: vepCSJ .. section: Library -The function `platform.popen` has been removed, it was deprecated since +The function ``platform.popen`` has been removed, it was deprecated since Python 3.3: use :func:`os.popen` instead. .. @@ -2529,9 +2529,9 @@ Fix incorrect parsing of :class:`_io.IncrementalNewlineDecoder`'s .. nonce: CulMN8 .. section: Library -Remove `StreamReaderProtocol._untrack_reader`. The call to `_untrack_reader` +Remove ``StreamReaderProtocol._untrack_reader``. The call to ``_untrack_reader`` is currently performed too soon, causing the protocol to forget about the -reader before `connection_lost` can run and feed the EOF to the reader. +reader before ``connection_lost`` can run and feed the EOF to the reader. .. @@ -2583,8 +2583,8 @@ polling for new events. .. nonce: ltSrtr .. section: Library -`importlib` no longer logs `wrote ` redundantly after -`(created|could not create) ` is already logged. Patch by +``importlib`` no longer logs ``wrote `` redundantly after +``(created|could not create) `` is already logged. Patch by Quentin Agren. .. @@ -2717,7 +2717,7 @@ Use :func:`socket.CMSG_SPACE` to calculate ancillary data size instead of .. nonce: rWBb43 .. section: Library -The `mailbox.mbox.get_string` function *from_* parameter can now +The ``mailbox.mbox.get_string`` function *from_* parameter can now successfully be set to a non-default value. .. @@ -2799,7 +2799,7 @@ children which are instances of ``Element`` subclasses. .. nonce: z2FbOp .. section: Library -:class:`smtplib.SMTP` objects now always have a `sock` attribute present +:class:`smtplib.SMTP` objects now always have a ``sock`` attribute present .. @@ -2914,7 +2914,7 @@ Fix inspect module polluted ``sys.modules`` when parsing .. nonce: Wo2PoJ .. section: Library -Add `mtime` argument to `gzip.compress` for reproducible output. Patch by +Add ``mtime`` argument to ``gzip.compress`` for reproducible output. Patch by Guo Ci Teo. .. @@ -3019,7 +3019,7 @@ argument. Patch by Andrés Delfino. .. nonce: rSPBW9 .. section: Library -In :class:`QueueHandler`, clear `exc_text` from :class:`LogRecord` to +In :class:`QueueHandler`, clear ``exc_text`` from :class:`LogRecord` to prevent traceback from being written twice. .. @@ -3060,8 +3060,8 @@ and will be removed in future Python versions. .. nonce: CUE8LU .. section: Library -Add deprecation warning when `loop` is used in methods: `asyncio.sleep`, -`asyncio.wait` and `asyncio.wait_for`. +Add deprecation warning when ``loop`` is used in methods: ``asyncio.sleep``, +``asyncio.wait`` and ``asyncio.wait_for``. .. @@ -3191,7 +3191,7 @@ the stream is deleted (garbage collected) without ``close()`` call. .. nonce: 3IPIH5 .. section: Library -`Enum._missing_`: raise `ValueError` if None returned and `TypeError` if +``Enum._missing_``: raise ``ValueError`` if None returned and ``TypeError`` if non-member is returned. .. @@ -3302,8 +3302,8 @@ issues on Windows. .. nonce: xL7-kG .. section: Library -Fix possible mojibake in the error message of `pwd.getpwnam` and -`grp.getgrnam` using string representation because of invisible characters +Fix possible mojibake in the error message of ``pwd.getpwnam`` and +``grp.getgrnam`` using string representation because of invisible characters or trailing whitespaces. Patch by William Grzybowski. .. @@ -3395,8 +3395,8 @@ Zackery Spytz. .. nonce: S0Irst .. section: Library -Fix parsing non-ASCII identifiers in :mod:`lib2to3.pgen2.tokenize` (PEP -3131). +Fix parsing non-ASCII identifiers in :mod:`!lib2to3.pgen2.tokenize` +(:pep:`3131`). .. @@ -4575,8 +4575,8 @@ OpenSSL 1.1.1 .. nonce: nzQgD8 .. section: Library -Release GIL on `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam` and -`pwd.getpwuid` if reentrant variants of these functions are available. Patch +Release GIL on ``grp.getgrnam``, ``grp.getgrgid``, ``pwd.getpwnam`` and +``pwd.getpwuid`` if reentrant variants of these functions are available. Patch by William Grzybowski. .. @@ -4656,8 +4656,8 @@ default. .. nonce: C6Hnd1 .. section: Library -Do not simplify arguments to `typing.Union`. Now `Union[Manager, Employee]` -is not simplified to `Employee` at runtime. Such simplification previously +Do not simplify arguments to ``typing.Union``. Now ``Union[Manager, Employee]`` +is not simplified to ``Employee`` at runtime. Such simplification previously caused several bugs and limited possibilities for introspection. .. @@ -4736,7 +4736,7 @@ Patch by Zvi Effron .. nonce: taxbVT .. section: Library -Fix race condition with `ReadTransport.resume_reading` in Windows proactor +Fix race condition with ``ReadTransport.resume_reading`` in Windows proactor event loop. .. @@ -4746,7 +4746,7 @@ event loop. .. nonce: pj2Mbb .. section: Library -Fix failure in `typing.get_type_hints()` when ClassVar was provided as a +Fix failure in ``typing.get_type_hints()`` when ClassVar was provided as a string forward reference. .. @@ -5044,8 +5044,8 @@ functionality. .. nonce: C_K-J9 .. section: Library -`ConfigParser.items()` was fixed so that key-value pairs passed in via -`vars` are not included in the resulting output. +``ConfigParser.items()`` was fixed so that key-value pairs passed in via +:func:`vars` are not included in the resulting output. .. @@ -5150,7 +5150,7 @@ instead of a wrapper function for exit callbacks. .. nonce: B56Hc1 .. section: Library -Fix FD leak in `_SelectorSocketTransport` Patch by Vlad Starostin. +Fix FD leak in ``_SelectorSocketTransport`` Patch by Vlad Starostin. .. @@ -5777,7 +5777,7 @@ helper methods that can be used instead ``_dump_registry``, .. nonce: bvHDOc .. section: Library -Fixed `asyncio.Condition` issue which silently ignored cancellation after +Fixed ``asyncio.Condition`` issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. .. @@ -5992,7 +5992,7 @@ Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D Moore. .. nonce: flC-dE .. section: Library -:mod:`profile` CLI accepts `-m module_name` as an alternative to script +:mod:`profile` CLI accepts ``-m module_name`` as an alternative to script path. .. @@ -6147,8 +6147,8 @@ Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. .. nonce: pDsFJl .. section: Library -Removed support of arguments in `tkinter.ttk.Treeview.selection`. It was -deprecated in 3.6. Use specialized methods like `selection_set` for +Removed support of arguments in ``tkinter.ttk.Treeview.selection``. It was +deprecated in 3.6. Use specialized methods like ``selection_set`` for changing the selection. .. @@ -6224,7 +6224,7 @@ imported from ``typing`` directly. .. nonce: 2eVOYS .. section: Documentation -Fix the documentation about an unexisting `f_restricted` attribute in the +Fix the documentation about an unexisting ``f_restricted`` attribute in the frame object. Patch by Stéphane Wirtel .. @@ -6311,7 +6311,7 @@ Document how passing coroutines to asyncio.wait() can be confusing. .. nonce: p9PoYv .. section: Documentation -Make clear that ``==`` operator sometimes is equivalent to `is`. The ``<``, +Make clear that ``==`` operator sometimes is equivalent to ``is``. The ``<``, ``<=``, ``>`` and ``>=`` operators are only defined where they make sense. .. @@ -6409,7 +6409,7 @@ Improve the documentation of :func:`asyncio.open_connection`, .. nonce: E5gba1 .. section: Documentation -Document that `asyncio.wait()` does not cancel its futures on timeout. +Document that ``asyncio.wait()`` does not cancel its futures on timeout. .. @@ -6660,7 +6660,7 @@ Stéphane Wirtel .. nonce: w1m_8r .. section: Documentation -Improve docstrings for `pathlib.PurePath` subclasses. +Improve docstrings for ``pathlib.PurePath`` subclasses. .. @@ -6997,7 +6997,7 @@ Use 3072 RSA keys and SHA-256 signature for test certs and keys. .. nonce: H8fCGa .. section: Tests -Remove special condition for AIX in `test_subprocess.test_undecodable_env` +Remove special condition for AIX in ``test_subprocess.test_undecodable_env`` .. @@ -7006,7 +7006,7 @@ Remove special condition for AIX in `test_subprocess.test_undecodable_env` .. nonce: IsRDPB .. section: Tests -Fix `test_utf8_mode.test_cmd_line` for AIX +Fix ``test_utf8_mode.test_cmd_line`` for AIX .. @@ -7034,9 +7034,9 @@ Fix ftplib test for TLS 1.3 by reading from data socket. .. nonce: g7TwYm .. section: Tests -Fix `test_socket` on AIX 6.1 and later IPv6 zone id supports only -supported by inet_pton6_zone() Switch to runtime-based platform.system() to -establish current platform rather than build-time based sys.platform() +Fix ``test_socket`` on AIX 6.1 and later IPv6 zone id supports only +supported by ``inet_pton6_zone()``. Switch to runtime-based ``platform.system()`` to +establish current platform rather than build-time based ``sys.platform()`` .. @@ -7172,8 +7172,8 @@ Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport of .. nonce: IKDsqu .. section: Tests -Making sure the `SMTPUTF8SimTests` class of tests gets run in -test_smtplib.py. +Making sure the ``SMTPUTF8SimTests`` class of tests gets run in +``test_smtplib.py``. .. @@ -7282,7 +7282,7 @@ CFLAGS to build third-party C extensions through distutils. .. nonce: XZTttb .. section: Build -Fix a compiler error when statically linking `pyexpat` in `Modules/Setup`. +Fix a compiler error when statically linking ``pyexpat`` in ``Modules/Setup``. .. @@ -7520,8 +7520,8 @@ suffixes). .. nonce: o7G_UO .. section: Build -By default, modules configured in `Modules/Setup` are no longer built with -`-DPy_BUILD_CORE`. Instead, modules that specifically need that preprocessor +By default, modules configured in ``Modules/Setup`` are no longer built with +``-DPy_BUILD_CORE``. Instead, modules that specifically need that preprocessor definition include it in their individual entries. .. @@ -8090,7 +8090,7 @@ Fix imports in idlelib.window. .. nonce: QEaANl .. section: IDLE -Proper format `calltip` when the function has no docstring. +Proper format ``calltip`` when the function has no docstring. .. diff --git a/Misc/NEWS.d/3.8.0a2.rst b/Misc/NEWS.d/3.8.0a2.rst index 223126145c7..c8620aeea7f 100644 --- a/Misc/NEWS.d/3.8.0a2.rst +++ b/Misc/NEWS.d/3.8.0a2.rst @@ -4,7 +4,7 @@ .. release date: 2019-02-25 .. section: Core and Builtins -Raise a :exc:`SyntaxError` when assigning a value to `__debug__` with the +Raise a :exc:`SyntaxError` when assigning a value to ``__debug__`` with the Assignment Operator. Contributed by Stéphane Wirtel and Pablo Galindo. .. diff --git a/Misc/NEWS.d/3.8.0a3.rst b/Misc/NEWS.d/3.8.0a3.rst index 66308c6bca2..a06efb9abe7 100644 --- a/Misc/NEWS.d/3.8.0a3.rst +++ b/Misc/NEWS.d/3.8.0a3.rst @@ -324,7 +324,7 @@ Raise ModuleNotFoundError in pyclbr when a module can't be found. Thanks to .. nonce: MDXLw6 .. section: Library -Switch the default format used for writing tars with mod:`tarfile` to the +Switch the default format used for writing tars with :mod:`tarfile` to the modern POSIX.1-2001 pax standard, from the vendor-specific GNU. Contributed by C.A.M. Gerlach. @@ -473,7 +473,7 @@ path string. .. nonce: NA_rXa .. section: Library -Ensure custom :func:`warnings.formatwarning` function can receive `line` as +Ensure custom :func:`warnings.formatwarning` function can receive ``line`` as positional argument. Based on patch by Tashrif Billah. .. @@ -533,10 +533,10 @@ Kumar Akshay. .. nonce: yffB3F .. section: Library -`pprint.pp` has been added to pretty-print objects with dictionary keys +``pprint.pp`` has been added to pretty-print objects with dictionary keys being sorted with their insertion order by default. Parameter *sort_dicts* -has been added to `pprint.pprint`, `pprint.pformat` and -`pprint.PrettyPrinter`. Contributed by Rémi Lapeyre. +has been added to ``pprint.pprint``, ``pprint.pformat`` and +``pprint.PrettyPrinter``. Contributed by Rémi Lapeyre. .. diff --git a/Misc/NEWS.d/3.8.0a4.rst b/Misc/NEWS.d/3.8.0a4.rst index f19717c8e2f..f87fa002d3b 100644 --- a/Misc/NEWS.d/3.8.0a4.rst +++ b/Misc/NEWS.d/3.8.0a4.rst @@ -168,7 +168,7 @@ decoder. Changing ``dict`` keys during iteration of the dict itself, ``keys()``, ``values()``, or ``items()`` will now be detected in certain corner cases where keys are deleted/added so that the number of keys isn't changed. A -`RuntimeError` will be raised after ``len(dict)`` iterations. Contributed by +``RuntimeError`` will be raised after ``len(dict)`` iterations. Contributed by Thomas Perl. .. @@ -255,7 +255,7 @@ all tags in a namespace. Patch by Stefan Behnel. .. nonce: Lpm-SI .. section: Library -`pathlib.path.link_to()` is now implemented. It creates a hard link pointing +``pathlib.path.link_to()`` is now implemented. It creates a hard link pointing to a path. .. @@ -580,7 +580,7 @@ is a dictionary. .. section: Library Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` -object will now return `None` instead of raising :exc:`RuntimeError`, making +object will now return ``None`` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch by Karthikeyan Singaravelan. .. @@ -609,9 +609,9 @@ Add time module support and fix test_time faiures for VxWorks. .. nonce: i2Z1XR .. section: Library -Added support for keyword arguments `default_namespace` and -`xml_declaration` in functions ElementTree.tostring() and -ElementTree.tostringlist(). +Added support for keyword arguments ``default_namespace`` and +``xml_declaration`` in functions ``ElementTree.tostring()`` and +``ElementTree.tostringlist()``. .. @@ -744,7 +744,7 @@ Remove stale unix datagram socket before binding .. nonce: _4Q_bi .. section: Library -Implemented Happy Eyeballs in `asyncio.create_connection()`. Added two new +Implemented Happy Eyeballs in ``asyncio.create_connection()``. Added two new arguments, *happy_eyeballs_delay* and *interleave*, to specify Happy Eyeballs behavior. @@ -1405,7 +1405,7 @@ only present in alpha releases of Python 3.8. Patch by Paul Ganssle. .. nonce: wpbWeb .. section: C API -Modify ``PyObject_Init`` to correctly increase the refcount of heap- -allocated Type objects. Also fix the refcounts of the heap-allocated types +Modify ``PyObject_Init`` to correctly increase the refcount of heap-allocated +Type objects. Also fix the refcounts of the heap-allocated types that were either doing this manually or not decreasing the type's refcount in tp_dealloc diff --git a/Misc/NEWS.d/3.8.0b1.rst b/Misc/NEWS.d/3.8.0b1.rst index f8f180bc731..484981c6932 100644 --- a/Misc/NEWS.d/3.8.0b1.rst +++ b/Misc/NEWS.d/3.8.0b1.rst @@ -146,8 +146,8 @@ constant expressions inside the f-string). .. nonce: VeVvhJ .. section: Core and Builtins -The `bytes.hex`, `bytearray.hex`, and `memoryview.hex` methods as well as -the `binascii.hexlify` and `b2a_hex` functions now have the ability to +The ``bytes.hex``, ``bytearray.hex``, and ``memoryview.hex`` methods as well as +the ``binascii.hexlify`` and ``b2a_hex`` functions now have the ability to include an optional separator between hex bytes. This functionality was inspired by MicroPython's hexlify implementation. @@ -198,8 +198,8 @@ any error. .. nonce: QwLa3P .. section: Core and Builtins -Only accept text after `# type: ignore` if the first character is ASCII. -This is to disallow things like `# type: ignoreé`. +Only accept text after ``# type: ignore`` if the first character is ASCII. +This is to disallow things like ``# type: ignoreé``. .. @@ -208,9 +208,9 @@ This is to disallow things like `# type: ignoreé`. .. nonce: EFRHZ3 .. section: Core and Builtins -Store text appearing after a `# type: ignore` comment in the AST. For -example a type ignore like `# type: ignore[E1000]` will have the string -`"[E1000]"` stored in its AST node. +Store text appearing after a ``# type: ignore`` comment in the AST. For +example a type ignore like ``# type: ignore[E1000]`` will have the string +``"[E1000]"`` stored in its AST node. .. @@ -414,7 +414,7 @@ Fix incorrect use of ``%p`` in format strings. Patch by Zackery Spytz. .. nonce: RO20OV .. section: Core and Builtins -builtins.help() now prefixes `async` for async functions +``builtins.help()`` now prefixes ``async`` for async functions. .. @@ -443,7 +443,7 @@ Added fix for broken symlinks in combination with pathlib .. section: Core and Builtins Added new trashcan macros to deal with a double deallocation that could -occur when the `tp_dealloc` of a subclass calls the `tp_dealloc` of a base +occur when the ``tp_dealloc`` of a subclass calls the ``tp_dealloc`` of a base class and that base class uses the trashcan mechanism. Patch by Jeroen Demeyer. @@ -768,7 +768,7 @@ Taskaya .. nonce: u7cxu7 .. section: Library -PDB command `args` now display positional only arguments. Patch contributed +PDB command ``args`` now display positional only arguments. Patch contributed by Rémi Lapeyre. .. @@ -778,7 +778,7 @@ by Rémi Lapeyre. .. nonce: JkZORP .. section: Library -PDB command `args` now display keyword only arguments. Patch contributed by +PDB command ``args`` now display keyword only arguments. Patch contributed by Rémi Lapeyre. .. @@ -799,7 +799,7 @@ Add missing names to ``typing.__all__``: ``ChainMap``, ``ForwardRef``, .. section: Library Add SupportsIndex protocol to the typing module to allow type checking to -detect classes that can be passed to `hex()`, `oct()` and `bin()`. +detect classes that can be passed to ``hex()``, ``oct()`` and ``bin()``. .. @@ -1023,10 +1023,10 @@ reading metadata from third-party packages. .. nonce: iigeqk .. section: Library -When using `type_comments=True` in `ast.parse`, treat `# type: ignore` +When using ``type_comments=True`` in ``ast.parse``, treat ``# type: ignore`` followed by a non-alphanumeric character and then arbitrary text as a type ignore, instead of requiring nothing but whitespace or another comment. This -is to permit formations such as `# type: ignore[E1000]`. +is to permit formations such as ``# type: ignore[E1000]``. .. @@ -1066,7 +1066,7 @@ exposed to the user. Patch by Aviv Palivoda. .. nonce: WK8Y-k .. section: Library -In `shutil.copystat()`, first copy extended file attributes and then file +In ``shutil.copystat()``, first copy extended file attributes and then file permissions, since extended attributes can only be set on the destination while it is still writeable. @@ -1120,7 +1120,7 @@ add_done_callback correctly when the Future has already completed. .. nonce: 4payXb .. section: Library -Limit `max_workers` in `ProcessPoolExecutor` to 61 to work around a +Limit ``max_workers`` in ``ProcessPoolExecutor`` to 61 to work around a WaitForMultipleObjects limitation. .. @@ -1676,7 +1676,7 @@ documentation covers it independently. .. nonce: 6hg6J8 .. section: Documentation -Add detail to the documentation on the `pty.spawn` function. +Add detail to the documentation on the ``pty.spawn`` function. .. @@ -1704,7 +1704,7 @@ Added the context variable in glossary. .. nonce: Q7s2FB .. section: Documentation -Clarify that `copy()` is not part of the `MutableSequence` ABC. +Clarify that ``copy()`` is not part of the ``MutableSequence`` ABC. .. @@ -1713,7 +1713,7 @@ Clarify that `copy()` is not part of the `MutableSequence` ABC. .. nonce: jalAaQ .. section: Documentation -Make `codecs.StreamRecoder.writelines` take a list of bytes. +Make ``codecs.StreamRecoder.writelines`` take a list of bytes. .. diff --git a/Misc/NEWS.d/3.9.0a1.rst b/Misc/NEWS.d/3.9.0a1.rst index a4d71d0290c..807cbb7f42c 100644 --- a/Misc/NEWS.d/3.9.0a1.rst +++ b/Misc/NEWS.d/3.9.0a1.rst @@ -1304,7 +1304,7 @@ parameter. Patch by Pablo Galindo. .. nonce: J12cWT .. section: Library -Fixed `hmac.new` and `hmac.HMAC` to raise TypeError instead of ValueError +Fixed ``hmac.new`` and ``hmac.HMAC`` to raise TypeError instead of ValueError when the digestmod parameter, now required in 3.8, is omitted. Also clarified the hmac module documentation and docstrings. @@ -1478,7 +1478,7 @@ Removes _AwaitEvent from AsyncMock. .. section: Library Allow the rare code that wants to send invalid http requests from the -`http.client` library a way to do so. The fixes for bpo-30458 led to +``http.client`` library a way to do so. The fixes for bpo-30458 led to breakage for some projects that were relying on this ability to test their own behavior in the face of bad requests. @@ -1813,9 +1813,9 @@ Update importlib.metadata with changes from `importlib_metadata 0.21 .. nonce: 8zn2o3 .. section: Library -Remove `__code__` check in AsyncMock that incorrectly evaluated function -specs as async objects but failed to evaluate classes with `__await__` but -no `__code__` attribute defined as async objects. +Remove ``__code__`` check in AsyncMock that incorrectly evaluated function +specs as async objects but failed to evaluate classes with ``__await__`` but +no ``__code__`` attribute defined as async objects. .. @@ -1976,11 +1976,11 @@ thread at a time. .. nonce: kP-n4L .. section: Library -Subscripts to the `unittest.mock.call` objects now receive the same chaining +Subscripts to the ``unittest.mock.call`` objects now receive the same chaining mechanism as any other custom attributes, so that the following usage no -longer raises a `TypeError`: +longer raises a ``TypeError``: -call().foo().__getitem__('bar') +``call().foo().__getitem__('bar')`` Patch by blhsing @@ -2069,7 +2069,7 @@ Restores instantiation of Windows IOCP event loops from the non-main thread. .. section: Library Add default implementation of the :meth:`ast.NodeVisitor.visit_Constant` -method which emits a deprecation warning and calls corresponding methody +method which emits a deprecation warning and calls corresponding methods ``visit_Num()``, ``visit_Str()``, etc. .. @@ -2210,7 +2210,7 @@ Add C fastpath for statistics.NormalDist.inv_cdf() Patch by Donghee Na .. nonce: Ene6L- .. section: Library -Remove the deprecated method `threading.Thread.isAlive()`. Patch by Donghee +Remove the deprecated method ``threading.Thread.isAlive()``. Patch by Donghee Na. .. @@ -2260,8 +2260,8 @@ directories are added and that duplicates are excluded. .. nonce: xfvdb_ .. section: Library -Renamed and documented `test.bytecode_helper` as -`test.support.bytecode_helper`. Patch by Joannah Nanjekye. +Renamed and documented ``test.bytecode_helper`` as +``test.support.bytecode_helper``. Patch by Joannah Nanjekye. .. @@ -2289,8 +2289,8 @@ many small lines are passed. Patch by Sergey Fedoseev. .. nonce: ycbL2z .. section: Library -`ensurepip` now uses `importlib.resources.read_binary()` to read data -instead of `pkgutil.get_data()`. Patch by Joannah Nanjekye. +``ensurepip`` now uses ``importlib.resources.read_binary()`` to read data +instead of ``pkgutil.get_data()``. Patch by Joannah Nanjekye. .. @@ -2524,8 +2524,8 @@ Make internal attributes for statistics.NormalDist() private. .. nonce: S5am28 .. section: Library -Fix `NonCallableMock._call_matcher` returning tuple instead of `_Call` -object when `self._spec_signature` exists. Patch by Elizabeth Uselton +Fix ``NonCallableMock._call_matcher`` returning tuple instead of ``_Call`` +object when ``self._spec_signature`` exists. Patch by Elizabeth Uselton .. @@ -2534,7 +2534,7 @@ object when `self._spec_signature` exists. Patch by Elizabeth Uselton .. nonce: iXGuoi .. section: Library -Make `from tkinter import *` import only the expected objects. +Make ``from tkinter import *`` import only the expected objects. .. @@ -2673,7 +2673,7 @@ which had a too large value in some situations. .. nonce: 0i1MR- .. section: Library -Fixes a possible hang when using a timeout on `subprocess.run()` while +Fixes a possible hang when using a timeout on ``subprocess.run()`` while capturing output. If the child process spawned its own children or otherwise connected its stdout or stderr handles with another process, we could hang after the timeout was reached and our child was killed when @@ -2708,8 +2708,8 @@ The distutils ``bdist_wininst`` command is deprecated in Python 3.8, use .. nonce: O53a5S .. section: Library -When `Enum.__str__` is overridden in a derived class, the override will be -used by `Enum.__format__` regardless of whether mixin classes are present. +When ``Enum.__str__`` is overridden in a derived class, the override will be +used by ``Enum.__format__`` regardless of whether mixin classes are present. .. @@ -2857,8 +2857,8 @@ Patch by Justin Blanchard. Add formal support for UDPLITE sockets. Support was present before, but it is now easier to detect support with ``hasattr(socket, 'IPPROTO_UDPLITE')`` and there are constants defined for each of the values needed: -:py:obj:`socket.IPPROTO_UDPLITE`, :py:obj:`UDPLITE_SEND_CSCOV`, and -:py:obj:`UDPLITE_RECV_CSCOV`. Patch by Gabe Appleton. +``socket.IPPROTO_UDPLITE``, ``UDPLITE_SEND_CSCOV``, and +``UDPLITE_RECV_CSCOV``. Patch by Gabe Appleton. .. @@ -3117,9 +3117,9 @@ Ensure cookies with ``expires`` attribute are handled in .. section: Library Fix an unintended ValueError from :func:`subprocess.run` when checking for -conflicting `input` and `stdin` or `capture_output` and `stdout` or `stderr` -args when they were explicitly provided but with `None` values within a -passed in `**kwargs` dict rather than as passed directly by name. Patch +conflicting *input* and *stdin* or *capture_output* and *stdout* or *stderr* +args when they were explicitly provided but with ``None`` values within a +passed in ``**kwargs`` dict rather than as passed directly by name. Patch contributed by Rémi Lapeyre. .. @@ -3195,9 +3195,9 @@ Remove ``Enum._convert`` method, deprecated in 3.8. .. nonce: TTzHxj .. section: Library -`argparse._ActionsContainer.add_argument` now throws error, if someone +``argparse._ActionsContainer.add_argument`` now throws error, if someone accidentally pass FileType class object instead of instance of FileType as -`type` argument +``type`` argument. .. @@ -3458,7 +3458,7 @@ Patch contributed by Rémi Lapeyre. .. section: Library Fixes a bug in :mod:`cgi` module when a multipart/form-data request has no -`Content-Length` header. +``Content-Length`` header. .. @@ -3546,7 +3546,7 @@ Patch by Stein Karlsen. .. nonce: XaJDei .. section: Library -lib2to3 now recognizes expressions after ``*`` and `**` like in ``f(*[] or +lib2to3 now recognizes expressions after ``*`` and ``**`` like in ``f(*[] or [])``. .. @@ -3566,8 +3566,8 @@ source argument. Patch by Emily Morehouse and Maxwell "5.13b" McKinnon. .. nonce: 0stF0u .. section: Library -Added __format__ to IPv4 and IPv6 classes. Always outputs a fully zero- -padded string. Supports b/x/n modifiers (bin/hex/native format). Native +Added ``__format__`` to IPv4 and IPv6 classes. Always outputs a fully +zero-padded string. Supports b/x/n modifiers (bin/hex/native format). Native format for IPv4 is bin, native format for IPv6 is hex. Also supports '#' and '_' modifiers. @@ -3789,7 +3789,7 @@ verify the maildir folder layout correctness. Patch by Sviatoslav Sydorenko. .. nonce: 7tiFR- .. section: Documentation -Fix `importlib` examples to insert any newly created modules via +Fix ``importlib`` examples to insert any newly created modules via importlib.util.module_from_spec() immediately into sys.modules instead of after calling loader.exec_module(). @@ -3888,7 +3888,7 @@ Make C-API docs clear about what the "main" interpreter is. .. nonce: Iqiqtm .. section: Documentation -The documentation for decimal string formatting using the `:g` specifier has +The documentation for decimal string formatting using the ``:g`` specifier has been updated to reflect the correct exponential notation cutoff point. Original patch contributed by Tuomas Suutari. @@ -4450,8 +4450,8 @@ Fix _hashlib build when Blake2 is disabled, but OpenSSL supports it. .. nonce: buCO84 .. section: Build -Misc/python-config.in now uses `getvar()` for all still existing -`sysconfig.get_config_var()` calls. Patch by Joannah Nanjekye. +Misc/python-config.in now uses ``getvar()`` for all still existing +``sysconfig.get_config_var()`` calls. Patch by Joannah Nanjekye. .. @@ -5715,8 +5715,8 @@ The :c:macro:`METH_FASTCALL` calling convention has been documented. .. nonce: 4tClQT .. section: C API -The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to create code -objects like :c:func:`PyCode_New`, but with an extra *posonlyargcount* +The new function :c:func:`!PyCode_NewWithPosOnlyArgs` allows to create code +objects like :c:func:`!PyCode_New`, but with an extra *posonlyargcount* parameter for indicating the number of positonal-only arguments. .. diff --git a/Misc/NEWS.d/3.9.0a2.rst b/Misc/NEWS.d/3.9.0a2.rst index a03eb10f1d5..7d878cfe227 100644 --- a/Misc/NEWS.d/3.9.0a2.rst +++ b/Misc/NEWS.d/3.9.0a2.rst @@ -403,7 +403,7 @@ locale encoding is not UTF-8. Prevent UnboundLocalError to pop up in parse_message_id. parse_message_id() was improperly using a token defined inside an exception -handler, which was raising `UnboundLocalError` on parsing an invalid value. +handler, which was raising ``UnboundLocalError`` on parsing an invalid value. Patch by Claudiu Popa. .. @@ -444,12 +444,12 @@ random.choices() now raises a ValueError when all the weights are zero. Raise pickle.UnpicklingError when loading an item from memo for invalid input. -The previous code was raising a `KeyError` for both the Python and C +The previous code was raising a ``KeyError`` for both the Python and C implementation. This was caused by the specified index of an invalid input which did not exist in the memo structure, where the pickle stores what -objects it has seen. The malformed input would have caused either a `BINGET` -or `LONG_BINGET` load from the memo, leading to a `KeyError` as the -determined index was bogus. Patch by Claudiu Popa +objects it has seen. The malformed input would have caused either a ``BINGET`` +or ``LONG_BINGET`` load from the memo, leading to a ``KeyError`` as the +determined index was bogus. Patch by Claudiu Popa. .. @@ -458,7 +458,7 @@ determined index was bogus. Patch by Claudiu Popa .. nonce: iKx23z .. section: Library -Calling func:`shutil.copytree` to copy a directory tree from one directory +Calling func:``shutil.copytree`` to copy a directory tree from one directory to another subdirectory resulted in an endless loop and a RecursionError. A fix was added to consume an iterator and create the list of the entries to be copied, avoiding the recursion for newly created directories. Patch by @@ -685,7 +685,7 @@ added. .. section: Documentation Update documentation to state that to activate virtual environments under -fish one should use `source`, not `.` as documented at +fish one should use ``source``, not ``.`` as documented at https://fishshell.com/docs/current/cmds/source.html. .. @@ -884,7 +884,7 @@ Add support for building and releasing Windows ARM64 packages. Fixed a crash on OSX dynamic builds that occurred when re-initializing the posix module after a Py_Finalize if the environment had changed since the -previous `import posix`. Patch by Benoît Hudson. +previous ``import posix``. Patch by Benoît Hudson. .. diff --git a/Misc/NEWS.d/3.9.0a3.rst b/Misc/NEWS.d/3.9.0a3.rst index a56573dd2c3..7e2df8f62fd 100644 --- a/Misc/NEWS.d/3.9.0a3.rst +++ b/Misc/NEWS.d/3.9.0a3.rst @@ -266,8 +266,8 @@ The :func:`os.unsetenv` function is now also available on Windows. .. nonce: D2tSXk .. section: Library -Fixed a regression with the `ignore` callback of :func:`shutil.copytree`. -The argument types are now str and List[str] again. +Fixed a regression with the ``ignore`` callback of :func:`shutil.copytree`. +The argument types are now ``str`` and ``List[str]`` again. .. @@ -507,8 +507,8 @@ for examples of :class:`~nntplib.NNTP` news reader server and nntplib tests. .. nonce: ihRT1z .. section: Library -Proxy the `SimpleHTTPRequestHandler.guess_type` to `mimetypes.guess_type` so -the `mimetypes.init` is called lazily to avoid unnecessary costs when +Proxy the ``SimpleHTTPRequestHandler.guess_type`` to ``mimetypes.guess_type`` so +the ``mimetypes.init`` is called lazily to avoid unnecessary costs when :mod:`http.server` module is imported. .. @@ -547,10 +547,10 @@ all options. Giovanni Lombardo contributed part of the patch. .. nonce: nzwGyG .. section: Library -If an exception were to be thrown in `Logger.isEnabledFor` (say, by asyncio -timeouts or stopit) , the `logging` global lock may not be released +If an exception were to be thrown in ``Logger.isEnabledFor`` (say, by asyncio +timeouts or stopit) , the ``logging`` global lock may not be released appropriately, resulting in deadlock. This change wraps that block of code -with `try...finally` to ensure the lock is released. +with ``try...finally`` to ensure the lock is released. .. @@ -571,7 +571,7 @@ new task spawning before exception raising. .. section: Library Correctly parenthesize filter-based statements that contain lambda -expressions in mod:`lib2to3`. Patch by Donghee Na. +expressions in :mod:`lib2to3`. Patch by Donghee Na. .. @@ -732,9 +732,9 @@ different process. .. nonce: beZ0Sk .. section: Library -Removes trailing space in formatted currency with `international=True` and a -locale with symbol following value. E.g. `locale.currency(12.34, -international=True)` returned `'12,34 EUR '` instead of `'12,34 EUR'`. +Removes trailing space in formatted currency with ``international=True`` and a +locale with symbol following value. E.g. ``locale.currency(12.34, +international=True)`` returned ``'12,34 EUR '`` instead of ``'12,34 EUR'``. .. @@ -835,7 +835,7 @@ functions are now required to build Python. .. nonce: aBmj13 .. section: Build -Updated the documentation in `./configure --help` to show default values, +Updated the documentation in ``./configure --help`` to show default values, reference documentation where required and add additional explanation where needed. diff --git a/Misc/NEWS.d/3.9.0a4.rst b/Misc/NEWS.d/3.9.0a4.rst index e59435b5509..ca0eb2abf1d 100644 --- a/Misc/NEWS.d/3.9.0a4.rst +++ b/Misc/NEWS.d/3.9.0a4.rst @@ -4,8 +4,8 @@ .. release date: 2020-02-25 .. section: Security -Add audit events to functions in `fcntl`, `msvcrt`, `os`, `resource`, -`shutil`, `signal` and `syslog`. +Add audit events to functions in ``fcntl``, ``msvcrt``, ``os``, ``resource``, +``shutil``, ``signal`` and ``syslog``. .. @@ -81,9 +81,9 @@ Fix regression caused by fix for bpo-39386, that prevented calling .. nonce: itNmC0 .. section: Core and Builtins -Change the ending column offset of `Attribute` nodes constructed in -`ast_for_dotted_name` to point at the end of the current node and not at the -end of the last `NAME` node. +Change the ending column offset of ``Attribute`` nodes constructed in +``ast_for_dotted_name`` to point at the end of the current node and not at the +end of the last ``NAME`` node. .. @@ -269,7 +269,7 @@ codec. .. nonce: qiubSp .. section: Library -Remove obsolete check for `__args__` in bdb.Bdb.format_stack_entry. +Remove obsolete check for ``__args__`` in ``bdb.Bdb.format_stack_entry``. .. @@ -599,7 +599,7 @@ default return values. Patch by Karthikeyan Singaravelan. .. nonce: udRSWE .. section: Library -`inspect.Signature.parameters` and `inspect.BoundArguments.arguments` are +``inspect.Signature.parameters`` and ``inspect.BoundArguments.arguments`` are now dicts instead of OrderedDicts. Patch contributed by Rémi Lapeyre. .. @@ -619,9 +619,9 @@ multiprocessing.Process. .. nonce: e0C5dF .. section: Library -* Add `lazycache` function to `__all__`. -* Use `dict.clear` to clear the cache. -* Refactoring `getline` function and `checkcache` function. +* Add ``lazycache`` function to ``__all__``. +* Use ``dict.clear`` to clear the cache. +* Refactoring ``getline`` function and ``checkcache`` function. .. diff --git a/Misc/NEWS.d/3.9.0a5.rst b/Misc/NEWS.d/3.9.0a5.rst index 6ff05788214..f0015ac54df 100644 --- a/Misc/NEWS.d/3.9.0a5.rst +++ b/Misc/NEWS.d/3.9.0a5.rst @@ -691,7 +691,7 @@ Fix AttributeError when calling get_stack on a PyAsyncGenObject Task .. section: Library The :func:`compileall.compile_dir` function's *ddir* parameter and the -compileall command line flag `-d` no longer write the wrong pathname to the +compileall command line flag ``-d`` no longer write the wrong pathname to the generated pyc file for submodules beneath the root of the directory tree being compiled. This fixes a regression introduced with Python 3.5. @@ -1122,7 +1122,7 @@ a different condition than the GIL. .. nonce: Nbl7lF .. section: Tools/Demos -Added support to fix ``getproxies`` in the :mod:`lib2to3.fixes.fix_urllib` +Added support to fix ``getproxies`` in the :mod:`!lib2to3.fixes.fix_urllib` module. Patch by José Roberto Meza Cabrera. .. diff --git a/Misc/NEWS.d/3.9.0a6.rst b/Misc/NEWS.d/3.9.0a6.rst index fec792a998b..4de3808e435 100644 --- a/Misc/NEWS.d/3.9.0a6.rst +++ b/Misc/NEWS.d/3.9.0a6.rst @@ -59,8 +59,8 @@ anything that depends on it. .. section: Core and Builtins Fix the tokenizer to display the correct error message, when there is a -SyntaxError on the last input character and no newline follows. It used to -be `unexpected EOF while parsing`, while it should be `invalid syntax`. +``SyntaxError`` on the last input character and no newline follows. It used to +be ``unexpected EOF while parsing``, while it should be ``invalid syntax``. .. @@ -79,7 +79,7 @@ evaluation for annotations activated. Patch by Batuhan Taskaya. .. nonce: vXPze5 .. section: Core and Builtins -Report a specialized error message, `invalid string prefix`, when the +Report a specialized error message, ``invalid string prefix``, when the tokenizer encounters a string with an invalid prefix. .. @@ -434,7 +434,7 @@ for the correspondent concrete type (``list`` in this case). .. nonce: ux8FUr .. section: Library -func:`inspect.getdoc` no longer returns docstring inherited from the type of +:func:`inspect.getdoc` no longer returns docstring inherited from the type of the object or from parent class if it is a class if it is not defined in the object itself. In :mod:`pydoc` the documentation string is now shown not only for class, function, method etc, but for any object that has its own @@ -504,7 +504,7 @@ extension. This allows the use of functions such as ``json_object``. .. nonce: 4EcyIN .. section: Library -Wait in `KqueueSelector.select` when no fds are registered +Wait in ``KqueueSelector.select`` when no fds are registered .. @@ -701,7 +701,7 @@ per header: use the realm of the first Basic challenge. .. section: Library Removed daemon threads from :mod:`concurrent.futures` by adding an internal -`threading._register_atexit()`, which calls registered functions prior to +``threading._register_atexit()``, which calls registered functions prior to joining all non-daemon threads. This allows for compatibility with subinterpreters, which don't support daemon threads. @@ -781,9 +781,9 @@ Added :pep:`584` operators to :class:`weakref.WeakKeyDictionary`. .. nonce: 56Yokh .. section: Library -Fix linear runtime behaviour of the `__getitem__` and `__setitem__` methods +Fix linear runtime behaviour of the ``__getitem__`` and ``__setitem__`` methods in :class:`multiprocessing.shared_memory.ShareableList`. This avoids -quadratic performance when iterating a `ShareableList`. Patch by Thomas +quadratic performance when iterating a ``ShareableList``. Patch by Thomas Krennwallner. .. @@ -793,9 +793,9 @@ Krennwallner. .. nonce: AxXZNz .. section: Library -Remove undocumented support for *closing* a `pathlib.Path` object via its +Remove undocumented support for *closing* a ``pathlib.Path`` object via its context manager. The context manager magic methods remain, but they are now -a no-op, making `Path` objects immutable. +a no-op, making ``Path`` objects immutable. .. diff --git a/Misc/NEWS.d/3.9.0b1.rst b/Misc/NEWS.d/3.9.0b1.rst index 49418640093..cf1bbb60202 100644 --- a/Misc/NEWS.d/3.9.0b1.rst +++ b/Misc/NEWS.d/3.9.0b1.rst @@ -112,8 +112,8 @@ Port :mod:`syslog` to multiphase initialization (:pep:`489`). Reporting a specialised error message for invalid string prefixes, which was introduced in :issue:`40246`, is being reverted due to backwards compatibility concerns for strings that immediately follow a reserved -keyword without whitespace between them. Constructs like `bg="#d00" if clear -else"#fca"` were failing to parse, which is not an acceptable breakage on +keyword without whitespace between them. Constructs like ``bg="#d00" if clear +else"#fca"`` were failing to parse, which is not an acceptable breakage on such short notice. .. @@ -684,7 +684,7 @@ The ``isocalendar()`` methods of :class:`datetime.date` and .. nonce: t6kW_1 .. section: Documentation -Add version of removal for explicit passing of coros to `asyncio.wait()`'s +Add version of removal for explicit passing of coros to ``asyncio.wait()``'s documentation .. diff --git a/Misc/sbom.spdx.json b/Misc/sbom.spdx.json new file mode 100644 index 00000000000..d783d14255e --- /dev/null +++ b/Misc/sbom.spdx.json @@ -0,0 +1,2918 @@ +{ + "SPDXID": "SPDXRef-DOCUMENT", + "files": [ + { + "SPDXID": "SPDXRef-FILE-Modules-expat-COPYING", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "39e6f567a10e36b2e77727e98e60bbcb3eb3af0b" + }, + { + "algorithm": "SHA256", + "checksumValue": "122f2c27000472a201d337b9b31f7eb2b52d091b02857061a8880371612d9534" + } + ], + "fileName": "Modules/expat/COPYING" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-ascii.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b0235fa3cf845a7d68e8e66dd344d5e32e8951b5" + }, + { + "algorithm": "SHA256", + "checksumValue": "42f8b392c70366743eacbc60ce021389ccaa333598dd49eef6ee5c93698ca205" + } + ], + "fileName": "Modules/expat/ascii.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-asciitab.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cbb53d16ca1f35ee9c9e296116efd222ae611ed9" + }, + { + "algorithm": "SHA256", + "checksumValue": "1cc0ae749019fc0e488cd1cf245f6beaa6d4f7c55a1fc797e5aa40a408bc266b" + } + ], + "fileName": "Modules/expat/asciitab.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-expat.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ab7bb32514d170592dfb3f76e41bbdc075a4e7e0" + }, + { + "algorithm": "SHA256", + "checksumValue": "f521acdad222644365b0e81a33bcd6939a98c91b225c47582cc84bd73d96febc" + } + ], + "fileName": "Modules/expat/expat.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-expat-config.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "73627287302ee3e84347c4fe21f37a9cb828bc3b" + }, + { + "algorithm": "SHA256", + "checksumValue": "f17e59f9d95eeb05694c02508aa284d332616c22cbe2e6a802d8a0710310eaab" + } + ], + "fileName": "Modules/expat/expat_config.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-expat-external.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b70ce53fdc25ae482681ae2f6623c3c8edc9c1b7" + }, + { + "algorithm": "SHA256", + "checksumValue": "86afb425ec9999eb4f1ec9ab2fb41c58c4aa5cb9bf934b8c94264670fc5a961d" + } + ], + "fileName": "Modules/expat/expat_external.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-iasciitab.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "1b0e9014c0baa4c6254d2b5e6a67c70148309c34" + }, + { + "algorithm": "SHA256", + "checksumValue": "ad8b01e9f323cc4208bcd22241df383d7e8641fe3c8b3415aa513de82531f89f" + } + ], + "fileName": "Modules/expat/iasciitab.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-internal.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2790d37e7de2f13dccc4f4fb352cbdf9ed6abaa2" + }, + { + "algorithm": "SHA256", + "checksumValue": "d2efe5a1018449968a689f444cca432e3d5875aba6ad08ee18ca235d64f41bb9" + } + ], + "fileName": "Modules/expat/internal.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-latin1tab.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d335ecca380e331a0ea7dc33838a4decd93ec1e4" + }, + { + "algorithm": "SHA256", + "checksumValue": "eab66226da100372e01e42e1cbcd8ac2bbbb5c1b5f95d735289cc85c7a8fc2ba" + } + ], + "fileName": "Modules/expat/latin1tab.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-nametab.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cf2bc9626c945826602ba9170786e9a2a44645e4" + }, + { + "algorithm": "SHA256", + "checksumValue": "67dcf415d37a4b692a6a8bb46f990c02d83f2ef3d01a65cd61c8594a084246f2" + } + ], + "fileName": "Modules/expat/nametab.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-pyexpatns.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "baa44fe4581895d42e8d5e83d8ce6a69b1c34dbe" + }, + { + "algorithm": "SHA256", + "checksumValue": "33a7b9ac8bf4571e23272cdf644c6f9808bd44c66b149e3c41ab3870d1888609" + } + ], + "fileName": "Modules/expat/pyexpatns.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-siphash.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2b984f806f10fbfbf72d8d1b7ba2992413c15299" + }, + { + "algorithm": "SHA256", + "checksumValue": "fbce56cd680e690043bbf572188cc2d0a25dbfc0d47ac8cb98eb3de768d4e694" + } + ], + "fileName": "Modules/expat/siphash.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-utf8tab.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b77c8fcfb551553c81d6fbd94c798c8aa04ad021" + }, + { + "algorithm": "SHA256", + "checksumValue": "8cd26bd461d334d5e1caedb3af4518d401749f2fc66d56208542b29085159c18" + } + ], + "fileName": "Modules/expat/utf8tab.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-winconfig.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "e774ae6ee9391aa6ffb8f775fb74e48f4b428959" + }, + { + "algorithm": "SHA256", + "checksumValue": "3c71cea9a6174718542331971a35db317902b2433be9d8dd1cb24239b635c0cc" + } + ], + "fileName": "Modules/expat/winconfig.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmlparse.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b580e827e16baa6b035586ffcd4d90301e5a353f" + }, + { + "algorithm": "SHA256", + "checksumValue": "483518bbd69338eefc706cd7fc0b6039df2d3e347f64097989059ed6d2385a1e" + } + ], + "fileName": "Modules/expat/xmlparse.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmlrole.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "5ef21312af73deb2428be3fe97a65244608e76de" + }, + { + "algorithm": "SHA256", + "checksumValue": "6fcf8c72ac0112c1b98bd2039c632a66b4c3dc516ce7c1f981390951121ef3c0" + } + ], + "fileName": "Modules/expat/xmlrole.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmlrole.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "c1a4ea6356643d0820edb9c024c20ad2aaf562dc" + }, + { + "algorithm": "SHA256", + "checksumValue": "2b5d674be6ef20c7e3f69295176d75e68c5616e4dfce0a186fdd5e2ed8315f7a" + } + ], + "fileName": "Modules/expat/xmlrole.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmltok.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "e6d66ae9fd61d7950c62c5d87693c30a707e8577" + }, + { + "algorithm": "SHA256", + "checksumValue": "1110f651bdccfa765ad3d6f3857a35887ab35fc0fe7f3f3488fde2b238b482e3" + } + ], + "fileName": "Modules/expat/xmltok.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmltok.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "9c2a544875fd08ba9c2397296c97263518a410aa" + }, + { + "algorithm": "SHA256", + "checksumValue": "4299a03828b98bfe47ec6809f6e279252954a9a911dc7e0f19551bd74e3af971" + } + ], + "fileName": "Modules/expat/xmltok.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmltok-impl.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "aa96882de8e3d1d3083124b595aa911efe44e5ad" + }, + { + "algorithm": "SHA256", + "checksumValue": "0fbcba7931707c60301305dab78d2298d96447d0a5513926d8b18135228c0818" + } + ], + "fileName": "Modules/expat/xmltok_impl.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmltok-impl.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "788332fe8040bed71172cddedb69abd848cc62f7" + }, + { + "algorithm": "SHA256", + "checksumValue": "f05ad4fe5e98429a7349ff04f57192cac58c324601f2a2e5e697ab0bc05d36d5" + } + ], + "fileName": "Modules/expat/xmltok_impl.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-expat-xmltok-ns.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2d82d0a1201f78d478b30d108ff8fc27ee3e2672" + }, + { + "algorithm": "SHA256", + "checksumValue": "6ce6d03193279078d55280150fe91e7370370b504a6c123a79182f28341f3e90" + } + ], + "fileName": "Modules/expat/xmltok_ns.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-MD5.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "f77449b2b4eb99f1da0938633cc558baf9c444fb" + }, + { + "algorithm": "SHA256", + "checksumValue": "0f252967debca5b35362ca53951ea16ca8bb97a19a1d24f6695f44d50010859e" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_MD5.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-MD5.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "c24e6779a91c840f3d65d24abbce225b608b676e" + }, + { + "algorithm": "SHA256", + "checksumValue": "9cd062e782801013e3cacaba583e44e1b5e682e217d20208d5323354d42011f1" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_MD5.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA1.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "560f6ff541b5eff480ea047b147f4212bb0db7ed" + }, + { + "algorithm": "SHA256", + "checksumValue": "0ade3ab264e912d7b4e5cdcf773db8c63e4440540d295922d74b06bcfc74c77a" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA1.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA1.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "853b77d45379146faaeac5fe899b28db386ad13c" + }, + { + "algorithm": "SHA256", + "checksumValue": "b13eb14f91582703819235ea7c8f807bb93e4f1e6b695499dc1d86021dc39e72" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA1.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA2.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "667120b6100c946cdaa442f1173c723339923071" + }, + { + "algorithm": "SHA256", + "checksumValue": "b189459b863341a3a9c5c78c0208b6554a2f2ac26e0748fbd4432a91db21fae6" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA2.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "81db38b0b920e63ec33c7109d1144c35cf091da0" + }, + { + "algorithm": "SHA256", + "checksumValue": "631c9ba19c1c2c835bb63d3f2f22b8d76fb535edfed3c254ff2a52f12af3fe61" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA3.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "9c832b98a2f2a68202d2da016fb718965d7b7602" + }, + { + "algorithm": "SHA256", + "checksumValue": "38d350d1184238966cfa821a59ae00343f362182b6c2fbea7f2651763d757fb7" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA3.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA3.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ecc766fb6f7ee85e902b593b61b41e5a728fca34" + }, + { + "algorithm": "SHA256", + "checksumValue": "bae290a94366a2460f51e8468144baaade91d9048db111e10d2e2ffddc3f98cf" + } + ], + "fileName": "Modules/_hacl/Hacl_Hash_SHA3.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-Hacl-Streaming-Types.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ab7b4d9465a2765a07f8d5bccace7182b28ed1b8" + }, + { + "algorithm": "SHA256", + "checksumValue": "26913613f3b4f8ffff0a3e211a5ebc849159094e5e11de0a31fcb95b6105b74c" + } + ], + "fileName": "Modules/_hacl/Hacl_Streaming_Types.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-FStar-UInt128-Verified.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2ea61d6a236147462045f65c20311819d74db80c" + }, + { + "algorithm": "SHA256", + "checksumValue": "2c22b4d49ba06d6a3053cdc66405bd5ae953a28fcfed1ab164e8f5e0f6e2fb8b" + } + ], + "fileName": "Modules/_hacl/include/krml/FStar_UInt128_Verified.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-FStar-UInt-8-16-32-64.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "1a647d841180ac8ca667afa968c353425e81ad0d" + }, + { + "algorithm": "SHA256", + "checksumValue": "e5d1c5854833bec7ea02e227ec35bd7b49c5fb9e0f339efa0dd83e1595f722d4" + } + ], + "fileName": "Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-fstar-uint128-struct-endianness.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "1987119a563a8fdc5966286e274f716dbcea77ee" + }, + { + "algorithm": "SHA256", + "checksumValue": "fe57e1bc5ce3224d106e36cb8829b5399c63a68a70b0ccd0c91d82a4565c8869" + } + ], + "fileName": "Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-internal-target.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "903c9eb76b01f3a95c04c3bc841c2fb71dea5403" + }, + { + "algorithm": "SHA256", + "checksumValue": "08ec602c7f90a1540389c0cfc95769fa7fec251e7ca143ef83c0b9f7afcf89a7" + } + ], + "fileName": "Modules/_hacl/include/krml/internal/target.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-lowstar-endianness.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "964e09bd99ff2366afd6193b59863fc925e7fb05" + }, + { + "algorithm": "SHA256", + "checksumValue": "3734c7942bec9a434e16df069fa45bdcb84b130f14417bc5f7bfe8546272d9f5" + } + ], + "fileName": "Modules/_hacl/include/krml/lowstar_endianness.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-include-krml-types.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "df8e0ed74a5970d09d3cc4c6e7c6c7a4c4e5015c" + }, + { + "algorithm": "SHA256", + "checksumValue": "de7444c345caa4c47902c4380500356a3ee7e199d2aab84fd8c4960410154f3d" + } + ], + "fileName": "Modules/_hacl/include/krml/types.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-MD5.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "5dd4ee3c835a0d176a6e9fecbe9752fd1474ff41" + }, + { + "algorithm": "SHA256", + "checksumValue": "d82ef594cba44203576d67b047240316bb3c542912ebb7034afa1e07888cec56" + } + ], + "fileName": "Modules/_hacl/internal/Hacl_Hash_MD5.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA1.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "515b3082eb7c30597773e1c63ec46688f6da3634" + }, + { + "algorithm": "SHA256", + "checksumValue": "10aacf847006b8e0dfb64d5c327443f954db6718b4aec712fb3268230df6a752" + } + ], + "fileName": "Modules/_hacl/internal/Hacl_Hash_SHA1.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "a044ec12b70ba97b67e9a312827d6270452a20ca" + }, + { + "algorithm": "SHA256", + "checksumValue": "a1426b54fa7273ba5b50817c25b2b26fc85c4d1befb14092cd27dc4c99439463" + } + ], + "fileName": "Modules/_hacl/internal/Hacl_Hash_SHA2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA3.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cfb7b520c39a73cb84c541d370455f92b998781f" + }, + { + "algorithm": "SHA256", + "checksumValue": "fd41997f9e96b3c9a3337b1b51fab965a1e21b0c16f353d156f1a1fa00709fbf" + } + ], + "fileName": "Modules/_hacl/internal/Hacl_Hash_SHA3.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-hacl-python-hacl-namespaces.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "f5c7b3ed911af6c8d582e8b3714b0c36195dc994" + }, + { + "algorithm": "SHA256", + "checksumValue": "07de72398b12957e014e97b9ac197bceef12d6d6505c2bfe8b23ee17b94ec5fa" + } + ], + "fileName": "Modules/_hacl/python_hacl_namespaces.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2-config.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ff5e3ae2360adf7279a9c54d12a1d32e16a1f223" + }, + { + "algorithm": "SHA256", + "checksumValue": "1eb919e885244e43cdf7b2104ad30dc9271513478c0026f6bfb4bad6e2f0ab42" + } + ], + "fileName": "Modules/_blake2/impl/blake2-config.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2-impl.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "28b947b43bdc680b9f4335712bb2a5f2d5d32623" + }, + { + "algorithm": "SHA256", + "checksumValue": "4277092643b289f1d36d32cf0fd2efc30ead8bdd99342e5da3b3609dd8ea7d86" + } + ], + "fileName": "Modules/_blake2/impl/blake2-impl.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "caa3da7953109d0d2961e3b686d2d285c484b901" + }, + { + "algorithm": "SHA256", + "checksumValue": "2f6c9d0ecf70be474f2853b52394993625a32960e0a64eae147ef97a3a5c1460" + } + ], + "fileName": "Modules/_blake2/impl/blake2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2b-load-sse2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "029a98f87a178936d9e5211c7798b3e0fc622f94" + }, + { + "algorithm": "SHA256", + "checksumValue": "b392a6e7b43813a05609e994db5fc3552c5912bd482efc781daa0778eb56ab4e" + } + ], + "fileName": "Modules/_blake2/impl/blake2b-load-sse2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2b-load-sse41.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "fb466dd72344170d09e311e5ea12de99ce071357" + }, + { + "algorithm": "SHA256", + "checksumValue": "cc3072c92164142bf2f9dda4e6c08db61be68ec15a95442415e861090d08f6a2" + } + ], + "fileName": "Modules/_blake2/impl/blake2b-load-sse41.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2b-ref.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "4c0d79128cf891a95b1f668031d55c0c6d2e0270" + }, + { + "algorithm": "SHA256", + "checksumValue": "07b257d44e9cc2d95d4911629c92138feafd16d63fef0a5fa7b38914dfd82349" + } + ], + "fileName": "Modules/_blake2/impl/blake2b-ref.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2b-round.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "4c7418e2026417c9c6736fcd305a31f23e05a661" + }, + { + "algorithm": "SHA256", + "checksumValue": "fa34a60c2d198a0585033f43fd4003f4ba279c9ebcabdf5d6650def0e6d1e914" + } + ], + "fileName": "Modules/_blake2/impl/blake2b-round.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2b.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "6fa074693aa7305018dfa8db48010a8ef1050ad4" + }, + { + "algorithm": "SHA256", + "checksumValue": "c8c6dd861ac193d4a0e836242ff44900f83423f86d2c2940c8c4c1e41fbd5812" + } + ], + "fileName": "Modules/_blake2/impl/blake2b.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-sse2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ad3f79b6cbe3fd812722114a0d5d08064e69e4d0" + }, + { + "algorithm": "SHA256", + "checksumValue": "57f1ac6c09f4a50d95811529062220eab4f29cec3805bc6081dec00426c6df62" + } + ], + "fileName": "Modules/_blake2/impl/blake2s-load-sse2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-sse41.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "51c32d79f419f3d2eb9875cd9a7f5c0d7892f8a8" + }, + { + "algorithm": "SHA256", + "checksumValue": "ecc9e09adcbe098629eafd305596bed8d7004be1d83f326995def42bbde93b23" + } + ], + "fileName": "Modules/_blake2/impl/blake2s-load-sse41.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-xop.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2749a7ba0104b765d4f56f13faf70b6eb89cf203" + }, + { + "algorithm": "SHA256", + "checksumValue": "8bc95595cec4c50f5d70f2b330d3798de07cc784e8890791b3328890e602d5c5" + } + ], + "fileName": "Modules/_blake2/impl/blake2s-load-xop.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s-ref.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "883fcfe85f9063819f21b1100296d1f9eb55bac1" + }, + { + "algorithm": "SHA256", + "checksumValue": "9715c00d0f11587a139b07fa26678e6d26e44d3d4910b96158d158da2b022bfb" + } + ], + "fileName": "Modules/_blake2/impl/blake2s-ref.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s-round.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "5d9f69adda40ed163b287b9ed4cedb35b88f2daa" + }, + { + "algorithm": "SHA256", + "checksumValue": "65d90111c89c43bb18a9e1d1a4fdbd9f85bebd1ff00129335b85995d0f30ee8b" + } + ], + "fileName": "Modules/_blake2/impl/blake2s-round.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-blake2-impl-blake2s.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d2691353fa54ac6ffcd7c0a294984dc9d7968ef7" + }, + { + "algorithm": "SHA256", + "checksumValue": "cfd7948c9fd50e9f9c62f8a93b20a254d1d510a862d1092af4f187b7c1a859a3" + } + ], + "fileName": "Modules/_blake2/impl/blake2s.c" + }, + { + "SPDXID": "SPDXRef-FILE-Lib-ctypes-macholib-init-.py", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "0fbc026a9771d9675e7094790b5b945334d3cb53" + }, + { + "algorithm": "SHA256", + "checksumValue": "1e77c01eec8f167ed10b754f153c0c743c8e5196ae9c81dffc08f129ab56dbfd" + } + ], + "fileName": "Lib/ctypes/macholib/__init__.py" + }, + { + "SPDXID": "SPDXRef-FILE-Lib-ctypes-macholib-dyld.py", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "4a78ebd73ce4167c722689781a15fe0b4578e967" + }, + { + "algorithm": "SHA256", + "checksumValue": "eb8e7b17f1533bc3e86e23e8695f7a5e4b7a99ef1b1575d10af54f389161b655" + } + ], + "fileName": "Lib/ctypes/macholib/dyld.py" + }, + { + "SPDXID": "SPDXRef-FILE-Lib-ctypes-macholib-dylib.py", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "f339420cc01bd01f8d0da19b6102f099075e8bcd" + }, + { + "algorithm": "SHA256", + "checksumValue": "f19ee056b18165cc6735efab0b4ca3508be9405b9646c38113316c15e8278a6f" + } + ], + "fileName": "Lib/ctypes/macholib/dylib.py" + }, + { + "SPDXID": "SPDXRef-FILE-Lib-ctypes-macholib-framework.py", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "0b219f58467d7f193fa1de0c1b118485840d855b" + }, + { + "algorithm": "SHA256", + "checksumValue": "302439e40d9cbdd61b8b7cffd0b7e1278a6811b635044ee366a36e0d991f62da" + } + ], + "fileName": "Lib/ctypes/macholib/framework.py" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-README.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "bda6e0bd6121f7069b420bdc0bc7c49414d948d1" + }, + { + "algorithm": "SHA256", + "checksumValue": "89926cd0fe6cfb33a2b5b7416c101e9b5d42b0d639d348e0871acf6ffc8258a3" + } + ], + "fileName": "Modules/_decimal/libmpdec/README.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-basearith.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "33757ce2ec0c93c1b5e03c45a495563a00e498ae" + }, + { + "algorithm": "SHA256", + "checksumValue": "ad498362c31a5b99ab19fce320ac540cf14c5c4ec09478f0ad3858da1428113d" + } + ], + "fileName": "Modules/_decimal/libmpdec/basearith.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-basearith.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "bf03919412c068e6969e7ac48850f91bfcd3b2b1" + }, + { + "algorithm": "SHA256", + "checksumValue": "2eaac88a71b9bcf3144396c12dcfeced573e0e550a0050d75b9ed3903248596d" + } + ], + "fileName": "Modules/_decimal/libmpdec/basearith.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-bench.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "c925b7f26754ae182aaa461d51802e8b6a2bb5e9" + }, + { + "algorithm": "SHA256", + "checksumValue": "007e38542ec8d9d8805fe243b5390d79211b9360e2797a20079e833e68ad9e45" + } + ], + "fileName": "Modules/_decimal/libmpdec/bench.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-bench-full.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cb22686269685a53a17afdea9ed984714e399d9d" + }, + { + "algorithm": "SHA256", + "checksumValue": "1b9e892d4b268deea835ec8906f20a1e5d25e037b2e698edcd34315613f3608c" + } + ], + "fileName": "Modules/_decimal/libmpdec/bench_full.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-bits.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "fc91c2450cdf1e785d1347411662294c3945eb27" + }, + { + "algorithm": "SHA256", + "checksumValue": "ce7741e58ea761a24250c0bfa10058cec8c4fd220dca70a41de3927a2e4f5376" + } + ], + "fileName": "Modules/_decimal/libmpdec/bits.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-constants.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "7187c18916b0a546ec19b4fc4bec43d0d9fb5fc2" + }, + { + "algorithm": "SHA256", + "checksumValue": "cd430b8657cf8a616916e02f9bd5ca044d5fc19e69333f5d427e1fdb90b0864b" + } + ], + "fileName": "Modules/_decimal/libmpdec/constants.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-constants.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "af9cbd016fb0ef0b30ced49c0aa4ce2ca3c20125" + }, + { + "algorithm": "SHA256", + "checksumValue": "19dc46df04abb7ee08e9a403f87c8aac8d4a077efcce314c597f8b73e22884f2" + } + ], + "fileName": "Modules/_decimal/libmpdec/constants.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-context.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "666162870230bebd3f2383020d908806fd03909e" + }, + { + "algorithm": "SHA256", + "checksumValue": "9a265d366f31894aad78bca7fcdc1457bc4a3aa3887ca231b7d78e41f79541c0" + } + ], + "fileName": "Modules/_decimal/libmpdec/context.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-convolute.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "0545547a8b37b922fbe2574fbad8fc3bf16f1d33" + }, + { + "algorithm": "SHA256", + "checksumValue": "66fe27b9bb37039cad5be32b105ed509e5aefa15c1957a9058af8ee23cddc97a" + } + ], + "fileName": "Modules/_decimal/libmpdec/convolute.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-convolute.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "05ff0936c5bb08f40d460f5843004a1cc0751d9b" + }, + { + "algorithm": "SHA256", + "checksumValue": "c00d17450c2b8e1d7f1eb8a084f7e6a68f257a453f8701600e860bf357c531d7" + } + ], + "fileName": "Modules/_decimal/libmpdec/convolute.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-crt.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "fe8176849bc99a306332ba25caa4e91bfa3c6f7d" + }, + { + "algorithm": "SHA256", + "checksumValue": "1f4e65c44864c3e911a6e91f33adec76765293e90553459e3ebce35a58898dba" + } + ], + "fileName": "Modules/_decimal/libmpdec/crt.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-crt.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "1930b9e0910014b3479aec4e940f02118d9e4a08" + }, + { + "algorithm": "SHA256", + "checksumValue": "7d31f1d0dd73b62964dab0f7a1724473bf87f1f95d8febf0b40c15430ae9a47c" + } + ], + "fileName": "Modules/_decimal/libmpdec/crt.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-difradix2.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "415c51e7d7f517b6366bec2a809610d0d38ada14" + }, + { + "algorithm": "SHA256", + "checksumValue": "0a9fef8a374f55277e9f6000b7277bb037b9763c32b156c29950422b057498bd" + } + ], + "fileName": "Modules/_decimal/libmpdec/difradix2.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-difradix2.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d8a998c3bee4c3d9059ba7bf9ae6a8b64649c2ba" + }, + { + "algorithm": "SHA256", + "checksumValue": "5c6766496224de657400995b58b64db3e7084004bf00daebdd7e08d0c5995243" + } + ], + "fileName": "Modules/_decimal/libmpdec/difradix2.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-README.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "158f6ad18edf348efa4fdd7cf61114c77c1d22e9" + }, + { + "algorithm": "SHA256", + "checksumValue": "7b0da2758097a2688f06b3c7ca46b2ebc8329addbd28bb4f5fe95626cc81f8a9" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/README.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-compare.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ef80ba26847287fb351ab0df0a78b5f08ba0b5b7" + }, + { + "algorithm": "SHA256", + "checksumValue": "452666ee4eb10a8cf0a926cb3bcf5e95b5c361fa129dbdfe27b654e6d640417e" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/compare.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-div.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "6ca3a369b3d1e140fdc93c4fdbedb724f7daf969" + }, + { + "algorithm": "SHA256", + "checksumValue": "6d369f5a24d0bb1e7cb6a4f8b0e97a273260e7668c8a540a8fcc92e039f7af2e" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/div.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-divmod.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "3872a28b4f77e07e1760256067ea338a8dd183f8" + }, + { + "algorithm": "SHA256", + "checksumValue": "5db54bae75ac3d7fa12f1bb0f7ce1bf797df86a81030e8c3ce44d3b1f9b958b7" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/divmod.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-multiply.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "25dbc94fd4ee5dec21061d2d40dd5d0f88849cb1" + }, + { + "algorithm": "SHA256", + "checksumValue": "22ed39b18fa740a27aacfd29a7bb40066be24500ba49b9b1f24e2af1e039fcd9" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/multiply.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-pow.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "13d3b7657dc2dc5000fea428f57963d520792ef7" + }, + { + "algorithm": "SHA256", + "checksumValue": "cd8c037649b3d4d6897c9acd2f92f3f9d5390433061d5e48623a5d526a3f4f9c" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/pow.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-powmod.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "1f7e6c3d3e38df52bbcec0f5a180a8f328679618" + }, + { + "algorithm": "SHA256", + "checksumValue": "e29614b43abf1856b656a84d6b67c22cc5dc7af8cbae8ddc7acf17022220ee12" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/powmod.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-shift.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "0bd9ce89c7987d1109eb7b0c8f1f9a1298e1422e" + }, + { + "algorithm": "SHA256", + "checksumValue": "203f2dbf11d115580cb3c7c524ac6ccca2a7b31d89545db1b6263381b5de2b6a" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/shift.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-sqrt.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b401ba0814e17c9164c0df26e01cc0a355382f46" + }, + { + "algorithm": "SHA256", + "checksumValue": "f3dc2ce321833bbd4b3d1d9ea6fa2e0bcc1bfe1e39abb8d55be53e46c33949db" + } + ], + "fileName": "Modules/_decimal/libmpdec/examples/sqrt.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-fnt.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "060615ddef089a5a8f879a57e4968d920972a0e2" + }, + { + "algorithm": "SHA256", + "checksumValue": "a9f923524d53a9445769f27405375ec3d95fa804bb11db5ee249ae047f11cfce" + } + ], + "fileName": "Modules/_decimal/libmpdec/fnt.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-fnt.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b205043ebeaf065b16505a299342a992654f19b0" + }, + { + "algorithm": "SHA256", + "checksumValue": "3b03e69adf78fde68c8f87d33595d557237581d33fc067e1039eed9e9f2cc44c" + } + ], + "fileName": "Modules/_decimal/libmpdec/fnt.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-fourstep.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "702c27599b43280c94906235d7e1a74193ba701b" + }, + { + "algorithm": "SHA256", + "checksumValue": "cf2e69b946ec14b087e523c0ff606553070d13c23e851fb0ba1df51a728017e6" + } + ], + "fileName": "Modules/_decimal/libmpdec/fourstep.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-fourstep.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "ee5291c265ef1f5ae373bc243a4d96975eb3e7b5" + }, + { + "algorithm": "SHA256", + "checksumValue": "dbaced03b52d0f880c377b86c943bcb36f24d557c99a5e9732df3ad5debb5917" + } + ], + "fileName": "Modules/_decimal/libmpdec/fourstep.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-io.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "12402bcf7f0161adb83f78163f41cc10a5e5de5f" + }, + { + "algorithm": "SHA256", + "checksumValue": "cba044c76b6bc3ae6cfa49df1121cad7552140157b9e61e11cbb6580cc5d74cf" + } + ], + "fileName": "Modules/_decimal/libmpdec/io.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-io.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "28c653cd40b1ce46575e41f5dbfda5f6dd0db4d1" + }, + { + "algorithm": "SHA256", + "checksumValue": "259eab89fe27914e0e39e61199094a357ac60d86b2aab613c909040ff64a4a0c" + } + ], + "fileName": "Modules/_decimal/libmpdec/io.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-REFERENCES.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "218d1d7bedb335cd2c31eae89a15873c3139e13f" + }, + { + "algorithm": "SHA256", + "checksumValue": "a57e8bed93ded481ef264166aec2c49d1a7f3252f29a873ee41fff053cfd9c20" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/REFERENCES.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-bignum.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "f67eab2431336cf6eeafb30cdafd7e54c251def3" + }, + { + "algorithm": "SHA256", + "checksumValue": "dc34aa122c208ce79e3fc6baee8628094ffaf6a662862dd5647836241f6ebd79" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/bignum.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-fnt.py", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "a58cfbcd8ea57d66ddfd11fb5a170138c8bbfb3a" + }, + { + "algorithm": "SHA256", + "checksumValue": "122de20eebf87274af2d02072251a94500e7df2d5ef29e81aeabeda991c079e3" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/fnt.py" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-matrix-transform.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "9a947f6b660150cbd457c4458da2956a36c5824d" + }, + { + "algorithm": "SHA256", + "checksumValue": "592659e7192e3a939b797f5bc7455455834a285f5d8b643ccd780b5114914f73" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/matrix-transform.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-mulmod-64.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "69fe9afb8353b5a2b57917469c51c64ac518169d" + }, + { + "algorithm": "SHA256", + "checksumValue": "229a80ca940c594a32e3345412370cbc097043fe59c66a6153cbcf01e7837266" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/mulmod-64.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-mulmod-ppro.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "720d468a1f51098036c7a0c869810fff22ed9b79" + }, + { + "algorithm": "SHA256", + "checksumValue": "f3549fc73f697a087267c7b042e30a409e191cbba69a2c0902685e507fbae9f7" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/mulmod-ppro.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-six-step.txt", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "6815ec3a39baebebe7b3f51d45d10c180a659f17" + }, + { + "algorithm": "SHA256", + "checksumValue": "bf15f73910a173c98fca9db56122b6cc71983668fa8b934c46ca21a57398ec54" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/six-step.txt" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-umodarith.lisp", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "c91ac4438e661ce78f86e981257546e5adff39ae" + }, + { + "algorithm": "SHA256", + "checksumValue": "783a1b4b9b7143677b0c3d30ffaf28aa0cb01956409031fa38ed8011970bdee0" + } + ], + "fileName": "Modules/_decimal/libmpdec/literature/umodarith.lisp" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-mpalloc.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "7e8dfb4b7a801b48c501969b001153203b14679e" + }, + { + "algorithm": "SHA256", + "checksumValue": "5ba2f4c80302e71fb216aa247c858e0bf6c8cfabffe7980ac17d4d023c0fef2b" + } + ], + "fileName": "Modules/_decimal/libmpdec/mpalloc.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-mpalloc.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "bccb6a6ae76fd7f6c8a9102a78958bcad7862950" + }, + { + "algorithm": "SHA256", + "checksumValue": "f7412521de38afb837fcabc2b1d48b971b86bfaa55f3f40d58ff9e46e92debd3" + } + ], + "fileName": "Modules/_decimal/libmpdec/mpalloc.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-mpdecimal.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "f4539afb1ace58c52d18ffd0cc7704f53ca55182" + }, + { + "algorithm": "SHA256", + "checksumValue": "4f89b8095e408a18deff79cfb605299e615bae747898eb105d8936064f7fb626" + } + ], + "fileName": "Modules/_decimal/libmpdec/mpdecimal.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-mpdecimal.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "4b80e25ac49b7e1ea0d1e84967ee32a3d111fc4c" + }, + { + "algorithm": "SHA256", + "checksumValue": "ea0b9c6b296c13aed6ecaa50b463e39a9c1bdc059b84f50507fd8247b2e660f9" + } + ], + "fileName": "Modules/_decimal/libmpdec/mpdecimal.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-mpsignal.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "5c7305a6db0fddf64c6d97e29d3b0c402e3d5d6e" + }, + { + "algorithm": "SHA256", + "checksumValue": "653171cf2549719478417db7e9800fa0f9d99c02dec6da6876329ccf2c07b93f" + } + ], + "fileName": "Modules/_decimal/libmpdec/mpsignal.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-numbertheory.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d736b874c43777ca021dde5289ea718893f39219" + }, + { + "algorithm": "SHA256", + "checksumValue": "bdbf2e246f341a3ba3f6f9d8759e7cb222eb9b15f9ed1e7c9f6a59cbb9f8bc91" + } + ], + "fileName": "Modules/_decimal/libmpdec/numbertheory.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-numbertheory.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d341508d8c6dd4c4cbd8b99afc8029945f9bbe0d" + }, + { + "algorithm": "SHA256", + "checksumValue": "2f7d5b40af508fa6ac86f5d62101fa3bf683c63b24aa87c9548e3fdd13abc57b" + } + ], + "fileName": "Modules/_decimal/libmpdec/numbertheory.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-sixstep.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cbd05d68bb3940d0d7d0818b14cc03b090a4dd74" + }, + { + "algorithm": "SHA256", + "checksumValue": "7602aaf98ec9525bc4b3cab9631615e1be2efd9af894002ef4e3f5ec63924fcf" + } + ], + "fileName": "Modules/_decimal/libmpdec/sixstep.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-sixstep.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "4c059463ec4b4522562dab24760fc64c172c9eee" + }, + { + "algorithm": "SHA256", + "checksumValue": "a191366348b3d3dd49b9090ec5c77dbd77bb3a523c01ff32adafa137e5097ce7" + } + ], + "fileName": "Modules/_decimal/libmpdec/sixstep.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-transpose.c", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "cc5593ac9fdb60480cc23fc9d6f27d85670bd35f" + }, + { + "algorithm": "SHA256", + "checksumValue": "2d12fcae512143a9376c8a0d4c1ba3008e420e024497a7e7ec64c6bec23fcddc" + } + ], + "fileName": "Modules/_decimal/libmpdec/transpose.c" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-transpose.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "2f616425756b6cbdf7d189744870b98b613455bd" + }, + { + "algorithm": "SHA256", + "checksumValue": "fafeb2b901b2b41bf0df00be7d99b84df1a78e3cc1e582e09cbfc3b6d44d4abe" + } + ], + "fileName": "Modules/_decimal/libmpdec/transpose.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-typearith.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "b1e9341e173cc8e219ad4aa45fad36d92cce10d3" + }, + { + "algorithm": "SHA256", + "checksumValue": "25e0a0703b51744277834e6b2398d7b7d2c17f92bf30f8b6f949e0486ae2b346" + } + ], + "fileName": "Modules/_decimal/libmpdec/typearith.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-umodarith.h", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "46f6483fce136cd3cc2f7516ee119a487d86333e" + }, + { + "algorithm": "SHA256", + "checksumValue": "bfe1ddb2ca92906456b80745adcbe02c83cadac3ef69caa21bc09b7292cc152b" + } + ], + "fileName": "Modules/_decimal/libmpdec/umodarith.h" + }, + { + "SPDXID": "SPDXRef-FILE-Modules-decimal-libmpdec-vcdiv64.asm", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "d0cc1052fcba08b773d935b0ae2dc6b80d0f2f68" + }, + { + "algorithm": "SHA256", + "checksumValue": "aacc3e47ea8f41e8840c6c67f64ec96d54696a16889903098fa1aab56949a00f" + } + ], + "fileName": "Modules/_decimal/libmpdec/vcdiv64.asm" + }, + { + "SPDXID": "SPDXRef-FILE-Lib-ensurepip-bundled-pip-24.0-py3-none-any.whl", + "checksums": [ + { + "algorithm": "SHA1", + "checksumValue": "e44313ae1e6af3c2bd3b60ab2fa8c34308d00555" + }, + { + "algorithm": "SHA256", + "checksumValue": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc" + } + ], + "fileName": "Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl" + } + ], + "packages": [ + { + "SPDXID": "SPDXRef-PACKAGE-expat", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "6b902ab103843592be5e99504f846ec109c1abb692e85347587f237a4ffa1033" + } + ], + "downloadLocation": "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": "cpe:2.3:a:libexpat_project:libexpat:2.5.0:*:*:*:*:*:*:*", + "referenceType": "cpe23Type" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "expat", + "originator": "Organization: Expat development team", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2.5.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-hacl-star", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "c23ac158b238c368389dc86bfc315263e5c0e57785da74144aea2cab9a3d51a2" + } + ], + "downloadLocation": "https://github.com/hacl-star/hacl-star/archive/521af282fdf6d60227335120f18ae9309a4b8e8c.zip", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": "cpe:2.3:a:hacl-star:hacl-star:521af282fdf6d60227335120f18ae9309a4b8e8c:*:*:*:*:*:*:*", + "referenceType": "cpe23Type" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "hacl-star", + "originator": "Organization: HACL* Developers", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "521af282fdf6d60227335120f18ae9309a4b8e8c" + }, + { + "SPDXID": "SPDXRef-PACKAGE-libb2", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "53626fddce753c454a3fea581cbbc7fe9bbcf0bc70416d48fdbbf5d87ef6c72e" + } + ], + "downloadLocation": "https://github.com/BLAKE2/libb2/releases/download/v0.98.1/libb2-0.98.1.tar.gz", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": "cpe:2.3:a:blake2:libb2:0.98.1:*:*:*:*:*:*:*", + "referenceType": "cpe23Type" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "libb2", + "originator": "Organization: BLAKE2 - fast secure hashing", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.98.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-macholib", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "c76f268f5054024e962f2515a0e522baf85313064f6740d80375afc850787a38" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/ec/57/f0a712efc3ed982cf4038a3cee172057303b9be914c32c93b2fbec27f785/macholib-1.0.tar.gz", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/macholib@1.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "macholib", + "originator": "Person: Ronald Oussoren (ronaldoussoren@mac.com)", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-mpdecimal", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "9f9cd4c041f99b5c49ffb7b59d9f12d95b683d88585608aa56a6307667b2b21f" + } + ], + "downloadLocation": "https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": "cpe:2.3:a:bytereef:mpdecimal:2.5.1:*:*:*:*:*:*:*", + "referenceType": "cpe23Type" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "mpdecimal", + "originator": "Organization: bytereef.org", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2.5.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-cachecontrol", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "95dedbec849f46dda3137866dc28b9d133fc9af55f5b805ab1291833e4457aa4" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/1d/e3/a22348e6226dcd585d5a4b5f0175b3a16dabfd3912cbeb02f321d00e56c7/cachecontrol-0.13.1-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/cachecontrol@0.13.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "cachecontrol", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.13.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-colorama", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/colorama@0.4.6", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "colorama", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.4.6" + }, + { + "SPDXID": "SPDXRef-PACKAGE-distlib", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/8e/41/9307e4f5f9976bc8b7fea0b66367734e8faf3ec84bc0d412d8cfabbb66cd/distlib-0.3.8-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/distlib@0.3.8", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "distlib", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.3.8" + }, + { + "SPDXID": "SPDXRef-PACKAGE-distro", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "99522ca3e365cac527b44bde033f64c6945d90eb9f769703caaec52b09bbd3ff" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/f4/2c/c90a3adaf0ddb70afe193f5ebfb539612af57cffe677c3126be533df3098/distro-1.8.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/distro@1.8.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "distro", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.8.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-msgpack", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/9f/4a/36d936e54cf71e23ad276564465f6a54fb129e3d61520b76e13e0bb29167/msgpack-1.0.5-cp310-cp310-macosx_10_9_universal2.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/msgpack@1.0.5", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "msgpack", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.0.5" + }, + { + "SPDXID": "SPDXRef-PACKAGE-packaging", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/packaging@21.3", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "packaging", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "21.3" + }, + { + "SPDXID": "SPDXRef-PACKAGE-platformdirs", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/9e/d8/563a9fc17153c588c8c2042d2f0f84a89057cdb1c30270f589c88b42d62c/platformdirs-3.8.1-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/platformdirs@3.8.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "platformdirs", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "3.8.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-pyparsing", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "d554a96d1a7d3ddaf7183104485bc19fd80543ad6ac5bdb6426719d766fb06c1" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/a4/24/6ae4c9c45cf99d96b06b5d99e25526c060303171fb0aea9da2bfd7dbde93/pyparsing-3.1.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/pyparsing@3.1.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "pyparsing", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "3.1.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-pyproject-hooks", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/d5/ea/9ae603de7fbb3df820b23a70f6aff92bf8c7770043254ad8d2dc9d6bcba4/pyproject_hooks-1.0.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/pyproject-hooks@1.0.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "pyproject-hooks", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.0.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-requests", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/requests@2.31.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "requests", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2.31.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-certifi", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/certifi@2023.7.22", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "certifi", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2023.7.22" + }, + { + "SPDXID": "SPDXRef-PACKAGE-chardet", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/74/8f/8fc49109009e8d2169d94d72e6b1f4cd45c13d147ba7d6170fb41f22b08f/chardet-5.1.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/chardet@5.1.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "chardet", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "5.1.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-idna", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/idna@3.4", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "idna", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "3.4" + }, + { + "SPDXID": "SPDXRef-PACKAGE-rich", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/fc/1e/482e5eec0b89b593e81d78f819a9412849814e22225842b598908e7ac560/rich-13.4.2-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/rich@13.4.2", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "rich", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "13.4.2" + }, + { + "SPDXID": "SPDXRef-PACKAGE-pygments", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/34/a7/37c8d68532ba71549db4212cb036dbd6161b40e463aba336770e80c72f84/Pygments-2.15.1-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/pygments@2.15.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "pygments", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2.15.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-typing-extensions", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/ec/6b/63cc3df74987c36fe26157ee12e09e8f9db4de771e0f3404263117e75b95/typing_extensions-4.7.1-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/typing_extensions@4.7.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "typing_extensions", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "4.7.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-resolvelib", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/d2/fc/e9ccf0521607bcd244aa0b3fbd574f71b65e9ce6a112c83af988bbbe2e23/resolvelib-1.0.1-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/resolvelib@1.0.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "resolvelib", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.0.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-setuptools", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/c7/42/be1c7bbdd83e1bfb160c94b9cafd8e25efc7400346cf7ccdbdb452c467fa/setuptools-68.0.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/setuptools@68.0.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "setuptools", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "68.0.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-six", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/six@1.16.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "six", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.16.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-tenacity", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/e7/b0/c23bd61e1b32c9b96fbca996c87784e196a812da8d621d8d04851f6c8181/tenacity-8.2.2-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/tenacity@8.2.2", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "tenacity", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "8.2.2" + }, + { + "SPDXID": "SPDXRef-PACKAGE-tomli", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/tomli@2.0.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "tomli", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "2.0.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-truststore", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "e37a5642ae9fc48caa8f120b6283d77225d600d224965a672c9e8ef49ce4bb4c" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/20/56/7811d5439b6a56374f274a8672d8f18b4deadadeb3a9f0c86424b98b6f96/truststore-0.8.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/truststore@0.8.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "truststore", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.8.0" + }, + { + "SPDXID": "SPDXRef-PACKAGE-webencodings", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/webencodings@0.5.1", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "webencodings", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "0.5.1" + }, + { + "SPDXID": "SPDXRef-PACKAGE-urllib3", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/48/fe/a5c6cc46e9fe9171d7ecf0f33ee7aae14642f8d74baa7af4d7840f9358be/urllib3-1.26.17-py2.py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/urllib3@1.26.17", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "urllib3", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "1.26.17" + }, + { + "SPDXID": "SPDXRef-PACKAGE-pip", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc" + } + ], + "downloadLocation": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": "cpe:2.3:a:pypa:pip:24.0:*:*:*:*:*:*:*", + "referenceType": "cpe23Type" + }, + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": "pkg:pypi/pip@24.0", + "referenceType": "purl" + } + ], + "licenseConcluded": "NOASSERTION", + "name": "pip", + "originator": "Organization: Python Packaging Authority", + "primaryPackagePurpose": "SOURCE", + "versionInfo": "24.0" + } + ], + "relationships": [ + { + "relatedSpdxElement": "SPDXRef-PACKAGE-cachecontrol", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-certifi", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-chardet", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-colorama", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-distlib", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-distro", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-idna", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-msgpack", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-packaging", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-platformdirs", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-pygments", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-pyparsing", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-pyproject-hooks", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-requests", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-resolvelib", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-rich", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-setuptools", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-six", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-tenacity", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-tomli", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-truststore", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-typing-extensions", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-urllib3", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-PACKAGE-webencodings", + "relationshipType": "DEPENDS_ON", + "spdxElementId": "SPDXRef-PACKAGE-pip" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-COPYING", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-ascii.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-asciitab.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-expat.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-expat-config.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-expat-external.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-iasciitab.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-internal.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-latin1tab.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-nametab.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-pyexpatns.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-siphash.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-utf8tab.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-winconfig.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmlparse.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmlrole.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmlrole.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmltok.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmltok.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmltok-impl.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmltok-impl.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-expat-xmltok-ns.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-expat" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-MD5.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-MD5.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA1.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA1.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA2.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA3.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Hash-SHA3.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-Hacl-Streaming-Types.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-FStar-UInt128-Verified.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-FStar-UInt-8-16-32-64.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-fstar-uint128-struct-endianness.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-internal-target.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-lowstar-endianness.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-include-krml-types.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-MD5.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA1.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-internal-Hacl-Hash-SHA3.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-hacl-python-hacl-namespaces.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-hacl-star" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2-config.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2-impl.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2b-load-sse2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2b-load-sse41.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2b-ref.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2b-round.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2b.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-sse2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-sse41.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s-load-xop.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s-ref.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s-round.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-blake2-impl-blake2s.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-libb2" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Lib-ctypes-macholib-init-.py", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-macholib" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Lib-ctypes-macholib-dyld.py", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-macholib" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Lib-ctypes-macholib-dylib.py", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-macholib" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Lib-ctypes-macholib-framework.py", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-macholib" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-README.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-basearith.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-basearith.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-bench.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-bench-full.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-bits.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-constants.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-constants.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-context.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-convolute.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-convolute.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-crt.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-crt.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-difradix2.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-difradix2.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-README.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-compare.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-div.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-divmod.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-multiply.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-pow.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-powmod.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-shift.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-examples-sqrt.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-fnt.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-fnt.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-fourstep.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-fourstep.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-io.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-io.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-REFERENCES.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-bignum.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-fnt.py", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-matrix-transform.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-mulmod-64.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-mulmod-ppro.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-six-step.txt", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-literature-umodarith.lisp", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-mpalloc.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-mpalloc.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-mpdecimal.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-mpdecimal.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-mpsignal.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-numbertheory.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-numbertheory.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-sixstep.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-sixstep.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-transpose.c", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-transpose.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-typearith.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-umodarith.h", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Modules-decimal-libmpdec-vcdiv64.asm", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-mpdecimal" + }, + { + "relatedSpdxElement": "SPDXRef-FILE-Lib-ensurepip-bundled-pip-24.0-py3-none-any.whl", + "relationshipType": "CONTAINS", + "spdxElementId": "SPDXRef-PACKAGE-pip" + } + ], + "spdxVersion": "SPDX-2.3" +} \ No newline at end of file diff --git a/Modules/_csv.c b/Modules/_csv.c index 9ab2ad266c2..91cb63628a1 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -841,7 +841,8 @@ parse_process_char(ReaderObj *self, _csvstate *module_state, Py_UCS4 c) self->state = START_RECORD; else { PyErr_Format(module_state->error_obj, - "new-line character seen in unquoted field - do you need to open the file in universal-newline mode?"); + "new-line character seen in unquoted field - " + "do you need to open the file with newline=''?"); return -1; } break; diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 534ef8c1d6c..c5157560f6e 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -4352,10 +4352,10 @@ _init_pos_args(PyObject *self, PyTypeObject *type, return index; } - for (i = 0; - i < dict->length && (i+index) < PyTuple_GET_SIZE(args); + for (i = index; + i < dict->length && i < PyTuple_GET_SIZE(args); ++i) { - PyObject *pair = PySequence_GetItem(fields, i); + PyObject *pair = PySequence_GetItem(fields, i - index); PyObject *name, *val; int res; if (!pair) @@ -4365,7 +4365,7 @@ _init_pos_args(PyObject *self, PyTypeObject *type, Py_DECREF(pair); return -1; } - val = PyTuple_GET_ITEM(args, i + index); + val = PyTuple_GET_ITEM(args, i); if (kwds) { res = PyDict_Contains(kwds, name); if (res != 0) { @@ -4386,7 +4386,7 @@ _init_pos_args(PyObject *self, PyTypeObject *type, if (res == -1) return -1; } - return index + dict->length; + return dict->length; } static int diff --git a/Modules/_ctypes/_ctypes_test.c b/Modules/_ctypes/_ctypes_test.c index 15a9efa60ef..3915786548f 100644 --- a/Modules/_ctypes/_ctypes_test.c +++ b/Modules/_ctypes/_ctypes_test.c @@ -81,11 +81,10 @@ typedef struct { } Test2; EXPORT(int) -_testfunc_array_in_struct1(Test2 in) +_testfunc_array_in_struct2(Test2 in) { int result = 0; - - for (unsigned i = 0; i < 16; i++) + for (unsigned i = 0; i < sizeof(in.data)/sizeof(in.data[0]); i++) result += in.data[i]; /* As the structure is passed by value, changes to it shouldn't be * reflected in the caller. @@ -94,22 +93,25 @@ _testfunc_array_in_struct1(Test2 in) return result; } -typedef struct { - double data[2]; -} Test3; - +/* + * Test3A struct test the MAX_STRUCT_SIZE 16 with single precision floats. + * These structs should be passed via registers on all platforms and they are + * used for within bounds tests. + */ typedef struct { float data[2]; float more_data[2]; -} Test3B; +} Test3A; EXPORT(double) -_testfunc_array_in_struct2(Test3 in) +_testfunc_array_in_struct3A(Test3A in) { double result = 0; - for (unsigned i = 0; i < 2; i++) + for (unsigned i = 0; i < sizeof(in.data)/sizeof(in.data[0]); i++) result += in.data[i]; + for (unsigned i = 0; i < sizeof(in.more_data)/sizeof(in.more_data[0]); i++) + result += in.more_data[i]; /* As the structure is passed by value, changes to it shouldn't be * reflected in the caller. */ @@ -117,56 +119,116 @@ _testfunc_array_in_struct2(Test3 in) return result; } +/* The structs Test3B..Test3E use the same functions hence using the MACRO + * to define their implementation. + */ + +#define _TESTFUNC_ARRAY_IN_STRUCT_IMPL \ + double result = 0; \ + \ + for (unsigned i = 0; i < sizeof(in.data)/sizeof(in.data[0]); i++) \ + result += in.data[i]; \ + /* As the structure is passed by value, changes to it shouldn't be \ + * reflected in the caller. \ + */ \ + memset(in.data, 0, sizeof(in.data)); \ + return result; \ + +#define _TESTFUNC_ARRAY_IN_STRUCT_SET_DEFAULTS_IMPL \ + for (unsigned i = 0; i < sizeof(s.data)/sizeof(s.data[0]); i++) \ + s.data[i] = (double)i+1; \ + return s; \ + + +/* + * Test3B struct test the MAX_STRUCT_SIZE 16 with double precision floats. + * These structs should be passed via registers on all platforms and they are + * used for within bounds tests. + */ +typedef struct { + double data[2]; +} Test3B; + EXPORT(double) -_testfunc_array_in_struct2a(Test3B in) +_testfunc_array_in_struct3B(Test3B in) { - double result = 0; + _TESTFUNC_ARRAY_IN_STRUCT_IMPL +} - for (unsigned i = 0; i < 2; i++) - result += in.data[i]; - for (unsigned i = 0; i < 2; i++) - result += in.more_data[i]; - /* As the structure is passed by value, changes to it shouldn't be - * reflected in the caller. - */ - memset(in.data, 0, sizeof(in.data)); - return result; +EXPORT(Test3B) +_testfunc_array_in_struct3B_set_defaults(void) +{ + Test3B s; + _TESTFUNC_ARRAY_IN_STRUCT_SET_DEFAULTS_IMPL } /* - * See gh-110190. structs containing arrays of up to four floating point types - * (max 32 bytes) are passed in registers on Arm. + * Test3C struct tests the MAX_STRUCT_SIZE 32. Structs containing arrays of up + * to four floating point types are passed in registers on Arm platforms. + * This struct is used for within bounds test on Arm platfroms and for an + * out-of-bounds tests for platfroms where MAX_STRUCT_SIZE is less than 32. + * See gh-110190. */ - typedef struct { double data[4]; } Test3C; +EXPORT(double) +_testfunc_array_in_struct3C(Test3C in) +{ + _TESTFUNC_ARRAY_IN_STRUCT_IMPL +} + EXPORT(Test3C) -_testfunc_array_in_struct_set_defaults_3C(void) +_testfunc_array_in_struct3C_set_defaults(void) { Test3C s; - s.data[0] = 1.0; - s.data[1] = 2.0; - s.data[2] = 3.0; - s.data[3] = 4.0; - return s; + _TESTFUNC_ARRAY_IN_STRUCT_SET_DEFAULTS_IMPL } +/* + * Test3D struct tests the MAX_STRUCT_SIZE 64. Structs containing arrays of up + * to eight floating point types are passed in registers on PPC64LE platforms. + * This struct is used for within bounds test on PPC64LE platfroms and for an + * out-of-bounds tests for platfroms where MAX_STRUCT_SIZE is less than 64. + * See gh-110190. + */ typedef struct { - double data[5]; + double data[8]; } Test3D; +EXPORT(double) +_testfunc_array_in_struct3D(Test3D in) +{ + _TESTFUNC_ARRAY_IN_STRUCT_IMPL +} + EXPORT(Test3D) -_testfunc_array_in_struct_set_defaults_3D(void) +_testfunc_array_in_struct3D_set_defaults(void) { Test3D s; - s.data[0] = 1.0; - s.data[1] = 2.0; - s.data[2] = 3.0; - s.data[3] = 4.0; - s.data[4] = 5.0; - return s; + _TESTFUNC_ARRAY_IN_STRUCT_SET_DEFAULTS_IMPL +} + +/* + * Test3E struct tests the out-of-bounds for all architectures. + * See gh-110190. + */ +typedef struct { + double data[9]; +} Test3E; + +EXPORT(double) +_testfunc_array_in_struct3E(Test3E in) +{ + _TESTFUNC_ARRAY_IN_STRUCT_IMPL +} + +EXPORT(Test3E) +_testfunc_array_in_struct3E_set_defaults(void) +{ + Test3E s; + _TESTFUNC_ARRAY_IN_STRUCT_SET_DEFAULTS_IMPL } typedef union { diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c index d088d0cef5f..ae3f356c2e0 100644 --- a/Modules/_ctypes/stgdict.c +++ b/Modules/_ctypes/stgdict.c @@ -694,16 +694,15 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct stgdict->size = aligned_size; stgdict->align = total_align; - stgdict->length = len; /* ADD ffi_ofs? */ + stgdict->length = ffi_ofs + len; /* - * On Arm platforms, structs with at most 4 elements of any floating point - * type values can be passed through registers. If the type is double the - * maximum size of the struct is 32 bytes. - * By Arm platforms it is meant both 32 and 64-bit. -*/ -#if defined(__aarch64__) || defined(__arm__) + * The value of MAX_STRUCT_SIZE depends on the platform Python is running on. + */ +#if defined(__aarch64__) || defined(__arm__) || defined(_M_ARM64) # define MAX_STRUCT_SIZE 32 +#elif defined(__powerpc64__) +# define MAX_STRUCT_SIZE 64 #else # define MAX_STRUCT_SIZE 16 #endif @@ -714,24 +713,29 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct * pointers, which is fine when an array name is being passed as * parameter, but not when passing structures by value that contain * arrays. - * On x86_64 Linux and Arm platforms, small structures passed by - * value are passed in registers, and in order to do this, libffi needs - * to know the true type of the array members of structs. Treating them - * as pointers breaks things. + * Small structures passed by value are passed in registers, and in + * order to do this, libffi needs to know the true type of the array + * members of structs. Treating them as pointers breaks things. + * + * Small structures have different sizes depending on the platform + * where Python is running on: + * + * * x86-64: 16 bytes or less + * * Arm platforms (both 32 and 64 bit): 32 bytes or less + * * PowerPC 64 Little Endian: 64 bytes or less * - * By small structures, we mean ones that are 16 bytes or less on - * x86-64 and 32 bytes or less on Arm. In that case, there can't be - * more than 16 or 32 elements after unrolling arrays, as we (will) - * disallow bitfields. So we can collect the true ffi_type values in - * a fixed-size local array on the stack and, if any arrays were seen, - * replace the ffi_type_pointer.elements with a more accurate set, - * to allow libffi to marshal them into registers correctly. + * In that case, there can't be more than 16, 32 or 64 elements after + * unrolling arrays, as we (will) disallow bitfields. + * So we can collect the true ffi_type values in a fixed-size local + * array on the stack and, if any arrays were seen, replace the + * ffi_type_pointer.elements with a more accurate set, to allow + * libffi to marshal them into registers correctly. * It means one more loop over the fields, but if we got here, * the structure is small, so there aren't too many of those. * - * Although the passing in registers is specific to x86_64 Linux - * and Arm platforms, the array-in-struct vs. pointer problem is - * general. But we restrict the type transformation to small structs + * Although the passing in registers is specific to the above + * platforms, the array-in-struct vs. pointer problem is general. + * But we restrict the type transformation to small structs * nonetheless. * * Note that although a union may be small in terms of memory usage, it @@ -758,8 +762,7 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct * struct { uint_32 e1; uint_32 e2; ... uint_32 e_4; } f6; * } * - * The same principle applies for a struct 32 bytes in size like in - * the case of Arm platforms. + * The same principle applies for a struct 32 or 64 bytes in size. * * So the struct/union needs setting up as follows: all non-array * elements copied across as is, and all array elements replaced with diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 6244fcc2064..620de8bb4c6 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -93,6 +93,7 @@ typedef struct { PyTypeObject *TreeBuilder_Type; PyTypeObject *XMLParser_Type; + PyObject *expat_capsule; struct PyExpat_CAPI *expat_capi; } elementtreestate; @@ -150,6 +151,7 @@ elementtree_clear(PyObject *m) Py_CLEAR(st->ElementIter_Type); Py_CLEAR(st->TreeBuilder_Type); Py_CLEAR(st->XMLParser_Type); + Py_CLEAR(st->expat_capsule); st->expat_capi = NULL; return 0; @@ -170,6 +172,7 @@ elementtree_traverse(PyObject *m, visitproc visit, void *arg) Py_VISIT(st->ElementIter_Type); Py_VISIT(st->TreeBuilder_Type); Py_VISIT(st->XMLParser_Type); + Py_VISIT(st->expat_capsule); return 0; } @@ -3065,6 +3068,7 @@ typedef struct { PyObject *handle_close; elementtreestate *state; + PyObject *elementtree_module; } XMLParserObject; /* helpers */ @@ -3611,7 +3615,11 @@ xmlparser_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self->handle_start = self->handle_data = self->handle_end = NULL; self->handle_comment = self->handle_pi = self->handle_close = NULL; self->handle_doctype = NULL; - self->state = get_elementtree_state_by_type(type); + self->elementtree_module = PyType_GetModuleByDef(type, &elementtreemodule); + assert(self->elementtree_module != NULL); + Py_INCREF(self->elementtree_module); + // See gh-111784 for explanation why is reference to module needed here. + self->state = get_elementtree_state(self->elementtree_module); } return (PyObject *)self; } @@ -3788,6 +3796,7 @@ xmlparser_gc_clear(XMLParserObject *self) EXPAT(st, ParserFree)(parser); } + Py_CLEAR(self->elementtree_module); Py_CLEAR(self->handle_close); Py_CLEAR(self->handle_pi); Py_CLEAR(self->handle_comment); @@ -4347,7 +4356,10 @@ module_exec(PyObject *m) goto error; /* link against pyexpat */ - st->expat_capi = PyCapsule_Import(PyExpat_CAPSULE_NAME, 0); + if (!(st->expat_capsule = _PyImport_GetModuleAttrString("pyexpat", "expat_CAPI"))) + goto error; + if (!(st->expat_capi = PyCapsule_GetPointer(st->expat_capsule, PyExpat_CAPSULE_NAME))) + goto error; if (st->expat_capi) { /* check that it's usable */ if (strcmp(st->expat_capi->magic, PyExpat_CAPI_MAGIC) != 0 || diff --git a/Modules/_io/bytesio.c b/Modules/_io/bytesio.c index 7636394c35a..9459affa4a8 100644 --- a/Modules/_io/bytesio.c +++ b/Modules/_io/bytesio.c @@ -988,7 +988,9 @@ static int bytesio_clear(bytesio *self) { Py_CLEAR(self->dict); - Py_CLEAR(self->buf); + if (self->exports == 0) { + Py_CLEAR(self->buf); + } return 0; } @@ -1093,13 +1095,6 @@ bytesiobuf_releasebuffer(bytesiobuf *obj, Py_buffer *view) b->exports--; } -static int -bytesiobuf_clear(bytesiobuf *self) -{ - Py_CLEAR(self->source); - return 0; -} - static int bytesiobuf_traverse(bytesiobuf *self, visitproc visit, void *arg) { @@ -1114,7 +1109,7 @@ bytesiobuf_dealloc(bytesiobuf *self) PyTypeObject *tp = Py_TYPE(self); /* bpo-31095: UnTrack is needed before calling any callbacks */ PyObject_GC_UnTrack(self); - (void)bytesiobuf_clear(self); + Py_CLEAR(self->source); tp->tp_free(self); Py_DECREF(tp); } @@ -1122,7 +1117,6 @@ bytesiobuf_dealloc(bytesiobuf *self) static PyType_Slot bytesiobuf_slots[] = { {Py_tp_dealloc, bytesiobuf_dealloc}, {Py_tp_traverse, bytesiobuf_traverse}, - {Py_tp_clear, bytesiobuf_clear}, // Buffer protocol {Py_bf_getbuffer, bytesiobuf_getbuffer}, diff --git a/Modules/_io/clinic/bufferedio.c.h b/Modules/_io/clinic/bufferedio.c.h index 4f40fdadf8e..3becf4a5e3b 100644 --- a/Modules/_io/clinic/bufferedio.c.h +++ b/Modules/_io/clinic/bufferedio.c.h @@ -100,7 +100,7 @@ _io__BufferedIOBase_detach_impl(PyObject *self, PyTypeObject *cls); static PyObject * _io__BufferedIOBase_detach(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "detach() takes no arguments"); return NULL; } @@ -1098,4 +1098,4 @@ _io_BufferedRandom___init__(PyObject *self, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=b7ddf84a5bc2bf34 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=e51a6ca8bc8ed33d input=a9049054013a1b77]*/ diff --git a/Modules/_io/clinic/bytesio.c.h b/Modules/_io/clinic/bytesio.c.h index 9550c8728c2..c816ef5d6bb 100644 --- a/Modules/_io/clinic/bytesio.c.h +++ b/Modules/_io/clinic/bytesio.c.h @@ -95,7 +95,7 @@ _io_BytesIO_getbuffer_impl(bytesio *self, PyTypeObject *cls); static PyObject * _io_BytesIO_getbuffer(bytesio *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "getbuffer() takes no arguments"); return NULL; } @@ -538,4 +538,4 @@ _io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=098584d485420b65 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=1c540b54a10919d7 input=a9049054013a1b77]*/ diff --git a/Modules/_io/clinic/fileio.c.h b/Modules/_io/clinic/fileio.c.h index 33a37a389d2..0d94e6cec69 100644 --- a/Modules/_io/clinic/fileio.c.h +++ b/Modules/_io/clinic/fileio.c.h @@ -26,7 +26,7 @@ _io_FileIO_close_impl(fileio *self, PyTypeObject *cls); static PyObject * _io_FileIO_close(fileio *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "close() takes no arguments"); return NULL; } @@ -536,4 +536,4 @@ _io_FileIO_isatty(fileio *self, PyObject *Py_UNUSED(ignored)) #ifndef _IO_FILEIO_TRUNCATE_METHODDEF #define _IO_FILEIO_TRUNCATE_METHODDEF #endif /* !defined(_IO_FILEIO_TRUNCATE_METHODDEF) */ -/*[clinic end generated code: output=bef47b31b644996a input=a9049054013a1b77]*/ +/*[clinic end generated code: output=17d5c63e9b37ccb1 input=a9049054013a1b77]*/ diff --git a/Modules/_io/clinic/iobase.c.h b/Modules/_io/clinic/iobase.c.h index e29a4f182dc..328ea95e3f8 100644 --- a/Modules/_io/clinic/iobase.c.h +++ b/Modules/_io/clinic/iobase.c.h @@ -265,7 +265,7 @@ _io__IOBase_fileno_impl(PyObject *self, PyTypeObject *cls); static PyObject * _io__IOBase_fileno(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "fileno() takes no arguments"); return NULL; } @@ -441,4 +441,4 @@ _io__RawIOBase_readall(PyObject *self, PyObject *Py_UNUSED(ignored)) { return _io__RawIOBase_readall_impl(self); } -/*[clinic end generated code: output=7c2df7a330be8b5b input=a9049054013a1b77]*/ +/*[clinic end generated code: output=60faa842b41185d2 input=a9049054013a1b77]*/ diff --git a/Modules/_io/clinic/textio.c.h b/Modules/_io/clinic/textio.c.h index 4a3c133068d..1f67434f881 100644 --- a/Modules/_io/clinic/textio.c.h +++ b/Modules/_io/clinic/textio.c.h @@ -25,7 +25,7 @@ _io__TextIOBase_detach_impl(PyObject *self, PyTypeObject *cls); static PyObject * _io__TextIOBase_detach(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "detach() takes no arguments"); return NULL; } @@ -982,4 +982,4 @@ _io_TextIOWrapper_close(textio *self, PyObject *Py_UNUSED(ignored)) { return _io_TextIOWrapper_close_impl(self); } -/*[clinic end generated code: output=a3614e1c64747ff5 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=408adcf5b8c5d8a6 input=a9049054013a1b77]*/ diff --git a/Modules/_io/clinic/winconsoleio.c.h b/Modules/_io/clinic/winconsoleio.c.h index cd3348dc122..064ed3814d9 100644 --- a/Modules/_io/clinic/winconsoleio.c.h +++ b/Modules/_io/clinic/winconsoleio.c.h @@ -28,7 +28,7 @@ _io__WindowsConsoleIO_close_impl(winconsoleio *self, PyTypeObject *cls); static PyObject * _io__WindowsConsoleIO_close(winconsoleio *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "close() takes no arguments"); return NULL; } @@ -465,4 +465,4 @@ _io__WindowsConsoleIO_isatty(winconsoleio *self, PyObject *Py_UNUSED(ignored)) #ifndef _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF #define _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF #endif /* !defined(_IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF) */ -/*[clinic end generated code: output=235393758365c229 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=9a9f95a1b52c95f9 input=a9049054013a1b77]*/ diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index c8be9982890..bab68077a21 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -153,7 +153,7 @@ _io_FileIO_close_impl(fileio *self, PyTypeObject *cls) return res; } - PyObject *exc; + PyObject *exc = NULL; if (res == NULL) { exc = PyErr_GetRaisedException(); } diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index efada7f0495..14dd19d95c2 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -1767,8 +1767,10 @@ _io_TextIOWrapper_write_impl(textio *self, PyObject *text) Py_DECREF(ret); } - textiowrapper_set_decoded_chars(self, NULL); - Py_CLEAR(self->snapshot); + if (self->snapshot != NULL) { + textiowrapper_set_decoded_chars(self, NULL); + Py_CLEAR(self->snapshot); + } if (self->decoder) { ret = PyObject_CallMethodNoArgs(self->decoder, &_Py_ID(reset)); @@ -2003,8 +2005,10 @@ _io_TextIOWrapper_read_impl(textio *self, Py_ssize_t n) if (result == NULL) goto fail; - textiowrapper_set_decoded_chars(self, NULL); - Py_CLEAR(self->snapshot); + if (self->snapshot != NULL) { + textiowrapper_set_decoded_chars(self, NULL); + Py_CLEAR(self->snapshot); + } return result; } else { diff --git a/Modules/_lzmamodule.c b/Modules/_lzmamodule.c index e34fbad230d..7bbd6569aa2 100644 --- a/Modules/_lzmamodule.c +++ b/Modules/_lzmamodule.c @@ -494,7 +494,9 @@ build_filter_spec(const lzma_filter *f) case LZMA_FILTER_ARMTHUMB: case LZMA_FILTER_SPARC: { lzma_options_bcj *options = f->options; - ADD_FIELD(options, start_offset); + if (options) { + ADD_FIELD(options, start_offset); + } break; } default: diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index 85634d7efe2..d75bb92757c 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -589,9 +589,10 @@ child_exec(char *const exec_array[], PyObject *preexec_fn, PyObject *preexec_fn_args_tuple) { - int i, saved_errno, reached_preexec = 0; + int i, saved_errno; PyObject *result; - const char* err_msg = ""; + /* Indicate to the parent that the error happened before exec(). */ + const char *err_msg = "noexec"; /* Buffer large enough to hold a hex integer. We can't malloc. */ char hex_errno[sizeof(saved_errno)*2+1]; @@ -651,8 +652,12 @@ child_exec(char *const exec_array[], /* We no longer manually close p2cread, c2pwrite, and errwrite here as * _close_open_fds takes care when it is not already non-inheritable. */ - if (cwd) - POSIX_CALL(chdir(cwd)); + if (cwd) { + if (chdir(cwd) == -1) { + err_msg = "noexec:chdir"; + goto error; + } + } if (child_umask >= 0) umask(child_umask); /* umask() always succeeds. */ @@ -699,7 +704,7 @@ child_exec(char *const exec_array[], #endif /* HAVE_SETREUID */ - reached_preexec = 1; + err_msg = ""; if (preexec_fn != Py_None && preexec_fn_args_tuple) { /* This is where the user has asked us to deadlock their program. */ result = PyObject_Call(preexec_fn, preexec_fn_args_tuple, NULL); @@ -757,16 +762,12 @@ child_exec(char *const exec_array[], } _Py_write_noraise(errpipe_write, cur, hex_errno + sizeof(hex_errno) - cur); _Py_write_noraise(errpipe_write, ":", 1); - if (!reached_preexec) { - /* Indicate to the parent that the error happened before exec(). */ - _Py_write_noraise(errpipe_write, "noexec", 6); - } /* We can't call strerror(saved_errno). It is not async signal safe. * The parent process will look the error message up. */ } else { _Py_write_noraise(errpipe_write, "SubprocessError:0:", 18); - _Py_write_noraise(errpipe_write, err_msg, strlen(err_msg)); } + _Py_write_noraise(errpipe_write, err_msg, strlen(err_msg)); } diff --git a/Modules/_sre/clinic/sre.c.h b/Modules/_sre/clinic/sre.c.h index da641081ce9..529c634e76d 100644 --- a/Modules/_sre/clinic/sre.c.h +++ b/Modules/_sre/clinic/sre.c.h @@ -1433,7 +1433,7 @@ _sre_SRE_Scanner_match_impl(ScannerObject *self, PyTypeObject *cls); static PyObject * _sre_SRE_Scanner_match(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "match() takes no arguments"); return NULL; } @@ -1454,10 +1454,10 @@ _sre_SRE_Scanner_search_impl(ScannerObject *self, PyTypeObject *cls); static PyObject * _sre_SRE_Scanner_search(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "search() takes no arguments"); return NULL; } return _sre_SRE_Scanner_search_impl(self, cls); } -/*[clinic end generated code: output=e3ba72156dd71572 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=045de53cfe02dee0 input=a9049054013a1b77]*/ diff --git a/Modules/_testcapi/datetime.c b/Modules/_testcapi/datetime.c index 88f992915fa..b1796039f0d 100644 --- a/Modules/_testcapi/datetime.c +++ b/Modules/_testcapi/datetime.c @@ -85,17 +85,25 @@ make_timezones_capi(PyObject *self, PyObject *args) { PyObject *offset = PyDelta_FromDSU(0, -18000, 0); PyObject *name = PyUnicode_FromString("EST"); + if (offset == NULL || name == NULL) { + Py_XDECREF(offset); + Py_XDECREF(name); + return NULL; + } PyObject *est_zone_capi = PyDateTimeAPI->TimeZone_FromTimeZone(offset, name); PyObject *est_zone_macro = PyTimeZone_FromOffsetAndName(offset, name); PyObject *est_zone_macro_noname = PyTimeZone_FromOffset(offset); - - Py_DecRef(offset); - Py_DecRef(name); - + Py_DECREF(offset); + Py_DECREF(name); + if (est_zone_capi == NULL || est_zone_macro == NULL || + est_zone_macro_noname == NULL) + { + goto error; + } PyObject *rv = PyTuple_New(3); if (rv == NULL) { - return NULL; + goto error; } PyTuple_SET_ITEM(rv, 0, est_zone_capi); @@ -103,6 +111,11 @@ make_timezones_capi(PyObject *self, PyObject *args) PyTuple_SET_ITEM(rv, 2, est_zone_macro_noname); return rv; +error: + Py_XDECREF(est_zone_capi); + Py_XDECREF(est_zone_macro); + Py_XDECREF(est_zone_macro_noname); + return NULL; } static PyObject * @@ -110,6 +123,11 @@ get_timezones_offset_zero(PyObject *self, PyObject *args) { PyObject *offset = PyDelta_FromDSU(0, 0, 0); PyObject *name = PyUnicode_FromString(""); + if (offset == NULL || name == NULL) { + Py_XDECREF(offset); + Py_XDECREF(name); + return NULL; + } // These two should return the UTC singleton PyObject *utc_singleton_0 = PyTimeZone_FromOffset(offset); @@ -117,16 +135,28 @@ get_timezones_offset_zero(PyObject *self, PyObject *args) // This one will return +00:00 zone, but not the UTC singleton PyObject *non_utc_zone = PyTimeZone_FromOffsetAndName(offset, name); - - Py_DecRef(offset); - Py_DecRef(name); + Py_DECREF(offset); + Py_DECREF(name); + if (utc_singleton_0 == NULL || utc_singleton_1 == NULL || + non_utc_zone == NULL) + { + goto error; + } PyObject *rv = PyTuple_New(3); + if (rv == NULL) { + goto error; + } PyTuple_SET_ITEM(rv, 0, utc_singleton_0); PyTuple_SET_ITEM(rv, 1, utc_singleton_1); PyTuple_SET_ITEM(rv, 2, non_utc_zone); return rv; +error: + Py_XDECREF(utc_singleton_0); + Py_XDECREF(utc_singleton_1); + Py_XDECREF(non_utc_zone); + return NULL; } static PyObject * diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index b1cb9350e59..48c8f92213b 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -212,11 +212,11 @@ test_dict_inner(int count) for (i = 0; i < count; i++) { v = PyLong_FromLong(i); if (v == NULL) { - return -1; + goto error; } if (PyDict_SetItem(dict, v, v) < 0) { Py_DECREF(v); - return -1; + goto error; } Py_DECREF(v); } @@ -230,11 +230,12 @@ test_dict_inner(int count) assert(v != UNINITIALIZED_PTR); i = PyLong_AS_LONG(v) + 1; o = PyLong_FromLong(i); - if (o == NULL) - return -1; + if (o == NULL) { + goto error; + } if (PyDict_SetItem(dict, k, o) < 0) { Py_DECREF(o); - return -1; + goto error; } Py_DECREF(o); k = v = UNINITIALIZED_PTR; @@ -252,6 +253,9 @@ test_dict_inner(int count) } else { return 0; } +error: + Py_DECREF(dict); + return -1; } @@ -1700,7 +1704,9 @@ test_structseq_newtype_doesnt_leak(PyObject *Py_UNUSED(self), descr.n_in_sequence = 1; PyTypeObject* structseq_type = PyStructSequence_NewType(&descr); - assert(structseq_type != NULL); + if (structseq_type == NULL) { + return NULL; + } assert(PyType_Check(structseq_type)); assert(PyType_FastSubclass(structseq_type, Py_TPFLAGS_TUPLE_SUBCLASS)); Py_DECREF(structseq_type); @@ -2524,6 +2530,32 @@ type_get_version(PyObject *self, PyObject *type) return res; } +static PyObject * +type_modified(PyObject *self, PyObject *type) +{ + if (!PyType_Check(type)) { + PyErr_SetString(PyExc_TypeError, "argument must be a type"); + return NULL; + } + PyType_Modified((PyTypeObject *)type); + Py_RETURN_NONE; +} + +// Circumvents standard version assignment machinery - use with caution and only on +// short-lived heap types +static PyObject * +type_assign_specific_version_unsafe(PyObject *self, PyObject *args) +{ + PyTypeObject *type; + unsigned int version; + if (!PyArg_ParseTuple(args, "Oi:type_assign_specific_version_unsafe", &type, &version)) { + return NULL; + } + assert(!PyType_HasFeature(type, Py_TPFLAGS_IMMUTABLETYPE)); + type->tp_version_tag = version; + type->tp_flags |= Py_TPFLAGS_VALID_VERSION_TAG; + Py_RETURN_NONE; +} static PyObject * type_assign_version(PyObject *self, PyObject *type) @@ -3351,6 +3383,9 @@ static PyMethodDef TestMethods[] = { {"test_py_is_macros", test_py_is_macros, METH_NOARGS}, {"test_py_is_funcs", test_py_is_funcs, METH_NOARGS}, {"type_get_version", type_get_version, METH_O, PyDoc_STR("type->tp_version_tag")}, + {"type_modified", type_modified, METH_O, PyDoc_STR("PyType_Modified")}, + {"type_assign_specific_version_unsafe", type_assign_specific_version_unsafe, METH_VARARGS, + PyDoc_STR("forcefully assign type->tp_version_tag")}, {"type_assign_version", type_assign_version, METH_O, PyDoc_STR("PyUnstable_Type_AssignVersionTag")}, {"type_get_tp_bases", type_get_tp_bases, METH_O}, {"type_get_tp_mro", type_get_tp_mro, METH_O}, diff --git a/Modules/_testclinic.c b/Modules/_testclinic.c index 6ff55a2755c..676535f5463 100644 --- a/Modules/_testclinic.c +++ b/Modules/_testclinic.c @@ -1194,6 +1194,40 @@ clone_with_conv_f2_impl(PyObject *module, custom_t path) } +/*[clinic input] +class _testclinic.TestClass "PyObject *" "PyObject" +[clinic start generated code]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=668a591c65bec947]*/ + +/*[clinic input] +_testclinic.TestClass.meth_method_no_params + cls: defining_class + / +[clinic start generated code]*/ + +static PyObject * +_testclinic_TestClass_meth_method_no_params_impl(PyObject *self, + PyTypeObject *cls) +/*[clinic end generated code: output=c140f100080c2fc8 input=6bd34503d11c63c1]*/ +{ + Py_RETURN_NONE; +} + +static struct PyMethodDef test_class_methods[] = { + _TESTCLINIC_TESTCLASS_METH_METHOD_NO_PARAMS_METHODDEF + {NULL, NULL} +}; + +static PyTypeObject TestClass = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_testclinic.TestClass", + .tp_basicsize = sizeof(PyObject), + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_methods = test_class_methods, +}; + + static PyMethodDef tester_methods[] = { TEST_EMPTY_FUNCTION_METHODDEF OBJECTS_CONVERTER_METHODDEF @@ -1262,7 +1296,18 @@ static struct PyModuleDef _testclinic_module = { PyMODINIT_FUNC PyInit__testclinic(void) { - return PyModule_Create(&_testclinic_module); + PyObject *m = PyModule_Create(&_testclinic_module); + if (m == NULL) { + return NULL; + } + if (PyModule_AddType(m, &TestClass) < 0) { + goto error; + } + return m; + +error: + Py_DECREF(m); + return NULL; } #undef RETURN_PACKED_ARGS diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 77275408aed..2784a815696 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -439,7 +439,7 @@ _winapi_ConnectNamedPipe_impl(PyObject *module, HANDLE handle, /*[clinic input] _winapi.CreateFile -> HANDLE - file_name: LPCTSTR + file_name: LPCWSTR desired_access: DWORD share_mode: DWORD security_attributes: LPSECURITY_ATTRIBUTES @@ -450,12 +450,12 @@ _winapi.CreateFile -> HANDLE [clinic start generated code]*/ static HANDLE -_winapi_CreateFile_impl(PyObject *module, LPCTSTR file_name, +_winapi_CreateFile_impl(PyObject *module, LPCWSTR file_name, DWORD desired_access, DWORD share_mode, LPSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD flags_and_attributes, HANDLE template_file) -/*[clinic end generated code: output=417ddcebfc5a3d53 input=6423c3e40372dbd5]*/ +/*[clinic end generated code: output=818c811e5e04d550 input=1fa870ed1c2e3d69]*/ { HANDLE handle; @@ -466,14 +466,15 @@ _winapi_CreateFile_impl(PyObject *module, LPCTSTR file_name, } Py_BEGIN_ALLOW_THREADS - handle = CreateFile(file_name, desired_access, - share_mode, security_attributes, - creation_disposition, - flags_and_attributes, template_file); + handle = CreateFileW(file_name, desired_access, + share_mode, security_attributes, + creation_disposition, + flags_and_attributes, template_file); Py_END_ALLOW_THREADS - if (handle == INVALID_HANDLE_VALUE) + if (handle == INVALID_HANDLE_VALUE) { PyErr_SetFromWindowsErr(0); + } return handle; } @@ -530,7 +531,12 @@ _winapi_CreateJunction_impl(PyObject *module, LPCWSTR src_path, { /* Privilege adjustment */ HANDLE token = NULL; - TOKEN_PRIVILEGES tp; + struct { + TOKEN_PRIVILEGES base; + /* overallocate by a few array elements */ + LUID_AND_ATTRIBUTES privs[4]; + } tp, previousTp; + int previousTpSize = 0; /* Reparse data buffer */ const USHORT prefix_len = 4; @@ -554,17 +560,21 @@ _winapi_CreateJunction_impl(PyObject *module, LPCWSTR src_path, /* Adjust privileges to allow rewriting directory entry as a junction point. */ - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) + if (!OpenProcessToken(GetCurrentProcess(), + TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)) { goto cleanup; + } - if (!LookupPrivilegeValue(NULL, SE_RESTORE_NAME, &tp.Privileges[0].Luid)) + if (!LookupPrivilegeValue(NULL, SE_RESTORE_NAME, &tp.base.Privileges[0].Luid)) { goto cleanup; + } - tp.PrivilegeCount = 1; - tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - if (!AdjustTokenPrivileges(token, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), - NULL, NULL)) + tp.base.PrivilegeCount = 1; + tp.base.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + if (!AdjustTokenPrivileges(token, FALSE, &tp.base, sizeof(previousTp), + &previousTp.base, &previousTpSize)) { goto cleanup; + } if (GetFileAttributesW(src_path) == INVALID_FILE_ATTRIBUTES) goto cleanup; @@ -645,6 +655,11 @@ _winapi_CreateJunction_impl(PyObject *module, LPCWSTR src_path, cleanup: ret = GetLastError(); + if (previousTpSize) { + AdjustTokenPrivileges(token, FALSE, &previousTp.base, previousTpSize, + NULL, NULL); + } + if (token != NULL) CloseHandle(token); if (junction != NULL) @@ -772,12 +787,157 @@ gethandle(PyObject* obj, const char* name) return ret; } +static PyObject * +sortenvironmentkey(PyObject *module, PyObject *item) +{ + return _winapi_LCMapStringEx_impl(NULL, LOCALE_NAME_INVARIANT, + LCMAP_UPPERCASE, item); +} + +static PyMethodDef sortenvironmentkey_def = { + "sortenvironmentkey", _PyCFunction_CAST(sortenvironmentkey), METH_O, "", +}; + +static int +sort_environment_keys(PyObject *keys) +{ + PyObject *keyfunc = PyCFunction_New(&sortenvironmentkey_def, NULL); + if (keyfunc == NULL) { + return -1; + } + PyObject *kwnames = Py_BuildValue("(s)", "key"); + if (kwnames == NULL) { + Py_DECREF(keyfunc); + return -1; + } + PyObject *args[] = { keys, keyfunc }; + PyObject *ret = PyObject_VectorcallMethod(&_Py_ID(sort), args, 1, kwnames); + Py_DECREF(keyfunc); + Py_DECREF(kwnames); + if (ret == NULL) { + return -1; + } + Py_DECREF(ret); + + return 0; +} + +static int +compare_string_ordinal(PyObject *str1, PyObject *str2, int *result) +{ + wchar_t *s1 = PyUnicode_AsWideCharString(str1, NULL); + if (s1 == NULL) { + return -1; + } + wchar_t *s2 = PyUnicode_AsWideCharString(str2, NULL); + if (s2 == NULL) { + PyMem_Free(s1); + return -1; + } + *result = CompareStringOrdinal(s1, -1, s2, -1, TRUE); + PyMem_Free(s1); + PyMem_Free(s2); + return 0; +} + +static PyObject * +dedup_environment_keys(PyObject *keys) +{ + PyObject *result = PyList_New(0); + if (result == NULL) { + return NULL; + } + + // Iterate over the pre-ordered keys, check whether the current key is equal + // to the next key (ignoring case), if different, insert the current value + // into the result list. If they are equal, do nothing because we always + // want to keep the last inserted one. + for (Py_ssize_t i = 0; i < PyList_GET_SIZE(keys); i++) { + PyObject *key = PyList_GET_ITEM(keys, i); + + // The last key will always be kept. + if (i + 1 == PyList_GET_SIZE(keys)) { + if (PyList_Append(result, key) < 0) { + Py_DECREF(result); + return NULL; + } + continue; + } + + PyObject *next_key = PyList_GET_ITEM(keys, i + 1); + int compare_result; + if (compare_string_ordinal(key, next_key, &compare_result) < 0) { + Py_DECREF(result); + return NULL; + } + if (compare_result == CSTR_EQUAL) { + continue; + } + if (PyList_Append(result, key) < 0) { + Py_DECREF(result); + return NULL; + } + } + + return result; +} + +static PyObject * +normalize_environment(PyObject *environment) +{ + PyObject *keys = PyMapping_Keys(environment); + if (keys == NULL) { + return NULL; + } + + if (sort_environment_keys(keys) < 0) { + Py_DECREF(keys); + return NULL; + } + + PyObject *normalized_keys = dedup_environment_keys(keys); + Py_DECREF(keys); + if (normalized_keys == NULL) { + return NULL; + } + + PyObject *result = PyDict_New(); + if (result == NULL) { + Py_DECREF(normalized_keys); + return NULL; + } + + for (int i = 0; i < PyList_GET_SIZE(normalized_keys); i++) { + PyObject *key = PyList_GET_ITEM(normalized_keys, i); + PyObject *value = PyObject_GetItem(environment, key); + if (value == NULL) { + Py_DECREF(normalized_keys); + Py_DECREF(result); + return NULL; + } + + int ret = PyObject_SetItem(result, key, value); + Py_DECREF(value); + if (ret < 0) { + Py_DECREF(normalized_keys); + Py_DECREF(result); + return NULL; + } + } + + Py_DECREF(normalized_keys); + + return result; +} + static wchar_t * getenvironment(PyObject* environment) { Py_ssize_t i, envsize, totalsize; wchar_t *buffer = NULL, *p, *end; - PyObject *keys, *values; + PyObject *normalized_environment = NULL; + PyObject *keys = NULL; + PyObject *values = NULL; /* convert environment dictionary to windows environment string */ if (! PyMapping_Check(environment)) { @@ -786,11 +946,16 @@ getenvironment(PyObject* environment) return NULL; } - keys = PyMapping_Keys(environment); - if (!keys) { + normalized_environment = normalize_environment(environment); + if (normalize_environment == NULL) { return NULL; } - values = PyMapping_Values(environment); + + keys = PyMapping_Keys(normalized_environment); + if (!keys) { + goto error; + } + values = PyMapping_Values(normalized_environment); if (!values) { goto error; } @@ -882,6 +1047,7 @@ getenvironment(PyObject* environment) cleanup: error: + Py_XDECREF(normalized_environment); Py_XDECREF(keys); Py_XDECREF(values); return buffer; diff --git a/Modules/audioop.c b/Modules/audioop.c index 604306d4492..94e82f1c2e6 100644 --- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -1,33 +1,31 @@ /* The audioop module uses the code base in g777.c file of the Sox project. - * Source: https://web.archive.org/web/19970716121258/http://www.spies.com/Sox/Archive/soxgamma.tar.gz - * Programming the AdLib/Sound Blaster - * FM Music Chips - * Version 2.0 (24 Feb 1992) - * - * Copyright (c) 1991, 1992 by Jeffrey S. Lee - * - * jlee@smylex.uucp + Source: https://sourceforge.net/projects/sox/files/sox/12.17.7/sox-12.17.7.tar.gz + + Copyright of g771.c: + + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use. Users may copy or modify this source code without + * charge. * + * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING + * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. * + * Sun source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. * - * Warranty and Copyright Policy + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE + * OR ANY PART THEREOF. * - * This document is provided on an "as-is" basis, and its author makes - * no warranty or representation, express or implied, with respect to - * its quality performance or fitness for a particular purpose. In no - * event will the author of this document be liable for direct, indirect, - * special, incidental, or consequential damages arising out of the use - * or inability to use the information contained within. Use of this - * document is at your own risk. + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. * - * This file may be used and copied freely so long as the applicable - * copyright notices are retained, and no modifications are made to the - * text of the document. No money shall be charged for its distribution - * beyond reasonable shipping, handling and duplication costs, nor shall - * proprietary changes be made to this document so that it cannot be - * distributed freely. This document may not be included in published - * material or commercial packages without the written consent of its - * author. */ + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 */ /* audioopmodule - Module to detect peak values in arrays */ diff --git a/Modules/cjkcodecs/clinic/multibytecodec.c.h b/Modules/cjkcodecs/clinic/multibytecodec.c.h index 1b41c231eac..3f200405f4d 100644 --- a/Modules/cjkcodecs/clinic/multibytecodec.c.h +++ b/Modules/cjkcodecs/clinic/multibytecodec.c.h @@ -676,7 +676,7 @@ _multibytecodec_MultibyteStreamWriter_reset_impl(MultibyteStreamWriterObject *se static PyObject * _multibytecodec_MultibyteStreamWriter_reset(MultibyteStreamWriterObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "reset() takes no arguments"); return NULL; } @@ -690,4 +690,4 @@ PyDoc_STRVAR(_multibytecodec___create_codec__doc__, #define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF \ {"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__}, -/*[clinic end generated code: output=5f0e8dacddb0ac76 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=57bae129ab6c7a67 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_asynciomodule.c.h b/Modules/clinic/_asynciomodule.c.h index 6a780a80cd0..860d55cb3bb 100644 --- a/Modules/clinic/_asynciomodule.c.h +++ b/Modules/clinic/_asynciomodule.c.h @@ -120,7 +120,7 @@ _asyncio_Future_exception_impl(FutureObj *self, PyTypeObject *cls); static PyObject * _asyncio_Future_exception(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "exception() takes no arguments"); return NULL; } @@ -453,7 +453,7 @@ _asyncio_Future_get_loop_impl(FutureObj *self, PyTypeObject *cls); static PyObject * _asyncio_Future_get_loop(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "get_loop() takes no arguments"); return NULL; } @@ -1487,4 +1487,4 @@ _asyncio_current_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, exit: return return_value; } -/*[clinic end generated code: output=6b0e283177b07639 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=127ba6153250d769 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_curses_panel.c.h b/Modules/clinic/_curses_panel.c.h index bb6cc90f043..b45f28d40cd 100644 --- a/Modules/clinic/_curses_panel.c.h +++ b/Modules/clinic/_curses_panel.c.h @@ -23,7 +23,7 @@ _curses_panel_panel_bottom_impl(PyCursesPanelObject *self, PyTypeObject *cls); static PyObject * _curses_panel_panel_bottom(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "bottom() takes no arguments"); return NULL; } @@ -47,7 +47,7 @@ _curses_panel_panel_hide_impl(PyCursesPanelObject *self, PyTypeObject *cls); static PyObject * _curses_panel_panel_hide(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "hide() takes no arguments"); return NULL; } @@ -69,7 +69,7 @@ _curses_panel_panel_show_impl(PyCursesPanelObject *self, PyTypeObject *cls); static PyObject * _curses_panel_panel_show(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "show() takes no arguments"); return NULL; } @@ -91,7 +91,7 @@ _curses_panel_panel_top_impl(PyCursesPanelObject *self, PyTypeObject *cls); static PyObject * _curses_panel_panel_top(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "top() takes no arguments"); return NULL; } @@ -331,7 +331,7 @@ _curses_panel_panel_userptr_impl(PyCursesPanelObject *self, static PyObject * _curses_panel_panel_userptr(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "userptr() takes no arguments"); return NULL; } @@ -422,4 +422,4 @@ _curses_panel_update_panels(PyObject *module, PyObject *Py_UNUSED(ignored)) { return _curses_panel_update_panels_impl(module); } -/*[clinic end generated code: output=8d0533681891523c input=a9049054013a1b77]*/ +/*[clinic end generated code: output=550ee3ad1ce9ec07 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_dbmmodule.c.h b/Modules/clinic/_dbmmodule.c.h index 172dc4b9d57..a880e3cebfb 100644 --- a/Modules/clinic/_dbmmodule.c.h +++ b/Modules/clinic/_dbmmodule.c.h @@ -41,7 +41,7 @@ _dbm_dbm_keys_impl(dbmobject *self, PyTypeObject *cls); static PyObject * _dbm_dbm_keys(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "keys() takes no arguments"); return NULL; } @@ -200,4 +200,4 @@ dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=28dcf736654137c2 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=f924d467af2e2f4e input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_elementtree.c.h b/Modules/clinic/_elementtree.c.h index a0bc751ca21..0b3a86159cc 100644 --- a/Modules/clinic/_elementtree.c.h +++ b/Modules/clinic/_elementtree.c.h @@ -86,7 +86,7 @@ _elementtree_Element___copy___impl(ElementObject *self, PyTypeObject *cls); static PyObject * _elementtree_Element___copy__(ElementObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments"); return NULL; } @@ -643,7 +643,7 @@ _elementtree_Element_itertext_impl(ElementObject *self, PyTypeObject *cls); static PyObject * _elementtree_Element_itertext(ElementObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "itertext() takes no arguments"); return NULL; } @@ -1218,4 +1218,4 @@ _elementtree_XMLParser__setevents(XMLParserObject *self, PyObject *const *args, exit: return return_value; } -/*[clinic end generated code: output=40767b1a98e54b60 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=31c4780c4df68441 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_gdbmmodule.c.h b/Modules/clinic/_gdbmmodule.c.h index 5c6aeeee778..e5d6b075dbc 100644 --- a/Modules/clinic/_gdbmmodule.c.h +++ b/Modules/clinic/_gdbmmodule.c.h @@ -110,7 +110,7 @@ _gdbm_gdbm_keys_impl(gdbmobject *self, PyTypeObject *cls); static PyObject * _gdbm_gdbm_keys(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "keys() takes no arguments"); return NULL; } @@ -136,7 +136,7 @@ _gdbm_gdbm_firstkey_impl(gdbmobject *self, PyTypeObject *cls); static PyObject * _gdbm_gdbm_firstkey(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "firstkey() takes no arguments"); return NULL; } @@ -215,7 +215,7 @@ _gdbm_gdbm_reorganize_impl(gdbmobject *self, PyTypeObject *cls); static PyObject * _gdbm_gdbm_reorganize(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "reorganize() takes no arguments"); return NULL; } @@ -240,7 +240,7 @@ _gdbm_gdbm_sync_impl(gdbmobject *self, PyTypeObject *cls); static PyObject * _gdbm_gdbm_sync(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "sync() takes no arguments"); return NULL; } @@ -322,4 +322,4 @@ dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=c6e721d82335adb3 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=37665074bba905bf input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_lsprof.c.h b/Modules/clinic/_lsprof.c.h index 5fcc7ae02e3..14af6b48c67 100644 --- a/Modules/clinic/_lsprof.c.h +++ b/Modules/clinic/_lsprof.c.h @@ -45,10 +45,10 @@ _lsprof_Profiler_getstats_impl(ProfilerObject *self, PyTypeObject *cls); static PyObject * _lsprof_Profiler_getstats(ProfilerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "getstats() takes no arguments"); return NULL; } return _lsprof_Profiler_getstats_impl(self, cls); } -/*[clinic end generated code: output=7425d3481349629a input=a9049054013a1b77]*/ +/*[clinic end generated code: output=cc3b236bc414a372 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_pickle.c.h b/Modules/clinic/_pickle.c.h index 539acc34a05..b39c04dcaac 100644 --- a/Modules/clinic/_pickle.c.h +++ b/Modules/clinic/_pickle.c.h @@ -285,7 +285,7 @@ _pickle_Unpickler_load_impl(UnpicklerObject *self, PyTypeObject *cls); static PyObject * _pickle_Unpickler_load(UnpicklerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "load() takes no arguments"); return NULL; } @@ -1034,4 +1034,4 @@ _pickle_loads(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObjec exit: return return_value; } -/*[clinic end generated code: output=a0e04b85e7bae626 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=5886b563df7b866d input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_queuemodule.c.h b/Modules/clinic/_queuemodule.c.h index 94fb59a5b17..906d0582a99 100644 --- a/Modules/clinic/_queuemodule.c.h +++ b/Modules/clinic/_queuemodule.c.h @@ -269,7 +269,7 @@ _queue_SimpleQueue_get_nowait_impl(simplequeueobject *self, static PyObject * _queue_SimpleQueue_get_nowait(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "get_nowait() takes no arguments"); return NULL; } @@ -331,4 +331,4 @@ _queue_SimpleQueue_qsize(simplequeueobject *self, PyObject *Py_UNUSED(ignored)) exit: return return_value; } -/*[clinic end generated code: output=9a72a8d1b5767f6a input=a9049054013a1b77]*/ +/*[clinic end generated code: output=78816f171ecc4422 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_testclinic.c.h b/Modules/clinic/_testclinic.c.h index cc69f5c3d2f..3fce2624591 100644 --- a/Modules/clinic/_testclinic.c.h +++ b/Modules/clinic/_testclinic.c.h @@ -3075,4 +3075,26 @@ clone_with_conv_f2(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py exit: return return_value; } -/*[clinic end generated code: output=f58202a6e5df2d16 input=a9049054013a1b77]*/ + +PyDoc_STRVAR(_testclinic_TestClass_meth_method_no_params__doc__, +"meth_method_no_params($self, /)\n" +"--\n" +"\n"); + +#define _TESTCLINIC_TESTCLASS_METH_METHOD_NO_PARAMS_METHODDEF \ + {"meth_method_no_params", _PyCFunction_CAST(_testclinic_TestClass_meth_method_no_params), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _testclinic_TestClass_meth_method_no_params__doc__}, + +static PyObject * +_testclinic_TestClass_meth_method_no_params_impl(PyObject *self, + PyTypeObject *cls); + +static PyObject * +_testclinic_TestClass_meth_method_no_params(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { + PyErr_SetString(PyExc_TypeError, "meth_method_no_params() takes no arguments"); + return NULL; + } + return _testclinic_TestClass_meth_method_no_params_impl(self, cls); +} +/*[clinic end generated code: output=999de26ba394ab5d input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_testmultiphase.c.h b/Modules/clinic/_testmultiphase.c.h index 42ec7475e5e..4f2b1bcf98b 100644 --- a/Modules/clinic/_testmultiphase.c.h +++ b/Modules/clinic/_testmultiphase.c.h @@ -27,7 +27,7 @@ _testmultiphase_StateAccessType_get_defining_module_impl(StateAccessTypeObject * static PyObject * _testmultiphase_StateAccessType_get_defining_module(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "get_defining_module() takes no arguments"); return NULL; } @@ -50,7 +50,7 @@ _testmultiphase_StateAccessType_getmodulebydef_bad_def_impl(StateAccessTypeObjec static PyObject * _testmultiphase_StateAccessType_getmodulebydef_bad_def(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "getmodulebydef_bad_def() takes no arguments"); return NULL; } @@ -156,10 +156,10 @@ _testmultiphase_StateAccessType_get_count_impl(StateAccessTypeObject *self, static PyObject * _testmultiphase_StateAccessType_get_count(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "get_count() takes no arguments"); return NULL; } return _testmultiphase_StateAccessType_get_count_impl(self, cls); } -/*[clinic end generated code: output=52ea97ab2f03bb6d input=a9049054013a1b77]*/ +/*[clinic end generated code: output=2193fe33d5e2b739 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/_winapi.c.h b/Modules/clinic/_winapi.c.h index 1394a8fcffd..5b87b24246f 100644 --- a/Modules/clinic/_winapi.c.h +++ b/Modules/clinic/_winapi.c.h @@ -161,7 +161,7 @@ PyDoc_STRVAR(_winapi_CreateFile__doc__, {"CreateFile", _PyCFunction_CAST(_winapi_CreateFile), METH_FASTCALL, _winapi_CreateFile__doc__}, static HANDLE -_winapi_CreateFile_impl(PyObject *module, LPCTSTR file_name, +_winapi_CreateFile_impl(PyObject *module, LPCWSTR file_name, DWORD desired_access, DWORD share_mode, LPSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, @@ -171,7 +171,7 @@ static PyObject * _winapi_CreateFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs) { PyObject *return_value = NULL; - LPCTSTR file_name; + LPCWSTR file_name = NULL; DWORD desired_access; DWORD share_mode; LPSECURITY_ATTRIBUTES security_attributes; @@ -180,8 +180,8 @@ _winapi_CreateFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs) HANDLE template_file; HANDLE _return_value; - if (!_PyArg_ParseStack(args, nargs, "skk" F_POINTER "kk" F_HANDLE ":CreateFile", - &file_name, &desired_access, &share_mode, &security_attributes, &creation_disposition, &flags_and_attributes, &template_file)) { + if (!_PyArg_ParseStack(args, nargs, "O&kk" F_POINTER "kk" F_HANDLE ":CreateFile", + _PyUnicode_WideCharString_Converter, &file_name, &desired_access, &share_mode, &security_attributes, &creation_disposition, &flags_and_attributes, &template_file)) { goto exit; } _return_value = _winapi_CreateFile_impl(module, file_name, desired_access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file); @@ -194,6 +194,9 @@ _winapi_CreateFile(PyObject *module, PyObject *const *args, Py_ssize_t nargs) return_value = HANDLE_TO_PYNUM(_return_value); exit: + /* Cleanup for file_name */ + PyMem_Free((void *)file_name); + return return_value; } @@ -1479,4 +1482,4 @@ _winapi_CopyFile2(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyO return return_value; } -/*[clinic end generated code: output=9d43ae4bdbe1126a input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a1f20d03c363db1d input=a9049054013a1b77]*/ diff --git a/Modules/clinic/arraymodule.c.h b/Modules/clinic/arraymodule.c.h index e68c3920072..844865f44a5 100644 --- a/Modules/clinic/arraymodule.c.h +++ b/Modules/clinic/arraymodule.c.h @@ -665,7 +665,7 @@ array_arrayiterator___reduce___impl(arrayiterobject *self, PyTypeObject *cls); static PyObject * array_arrayiterator___reduce__(arrayiterobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "__reduce__() takes no arguments"); return NULL; } @@ -680,4 +680,4 @@ PyDoc_STRVAR(array_arrayiterator___setstate____doc__, #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \ {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__}, -/*[clinic end generated code: output=69bc1451f7bda234 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=7478fe6a5e4096f5 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/md5module.c.h b/Modules/clinic/md5module.c.h index b4602104f18..eb2ed49e9ef 100644 --- a/Modules/clinic/md5module.c.h +++ b/Modules/clinic/md5module.c.h @@ -23,7 +23,7 @@ MD5Type_copy_impl(MD5object *self, PyTypeObject *cls); static PyObject * MD5Type_copy(MD5object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -148,4 +148,4 @@ _md5_md5(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kw exit: return return_value; } -/*[clinic end generated code: output=b4924c9905cc9f34 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=d0082f6ba5dda0c6 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index 3e6d429eb9e..3802182143c 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -10681,7 +10681,7 @@ os_DirEntry_is_symlink(DirEntry *self, PyTypeObject *defining_class, PyObject *c PyObject *return_value = NULL; int _return_value; - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "is_symlink() takes no arguments"); goto exit; } @@ -10713,7 +10713,7 @@ os_DirEntry_is_junction(DirEntry *self, PyTypeObject *defining_class, PyObject * PyObject *return_value = NULL; int _return_value; - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "is_junction() takes no arguments"); goto exit; } @@ -11999,4 +11999,4 @@ os_waitstatus_to_exitcode(PyObject *module, PyObject *const *args, Py_ssize_t na #ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF #define OS_WAITSTATUS_TO_EXITCODE_METHODDEF #endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */ -/*[clinic end generated code: output=fa29739d72cfc07e input=a9049054013a1b77]*/ +/*[clinic end generated code: output=56e83d6b7cac0d58 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/sha1module.c.h b/Modules/clinic/sha1module.c.h index ad15ddaadfc..e0858e77b5e 100644 --- a/Modules/clinic/sha1module.c.h +++ b/Modules/clinic/sha1module.c.h @@ -23,7 +23,7 @@ SHA1Type_copy_impl(SHA1object *self, PyTypeObject *cls); static PyObject * SHA1Type_copy(SHA1object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -148,4 +148,4 @@ _sha1_sha1(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject * exit: return return_value; } -/*[clinic end generated code: output=4d1293ca3472acdb input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ffe267896009b5ed input=a9049054013a1b77]*/ diff --git a/Modules/clinic/sha2module.c.h b/Modules/clinic/sha2module.c.h index 8f855ca345e..557a61791bd 100644 --- a/Modules/clinic/sha2module.c.h +++ b/Modules/clinic/sha2module.c.h @@ -23,7 +23,7 @@ SHA256Type_copy_impl(SHA256object *self, PyTypeObject *cls); static PyObject * SHA256Type_copy(SHA256object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -45,7 +45,7 @@ SHA512Type_copy_impl(SHA512object *self, PyTypeObject *cls); static PyObject * SHA512Type_copy(SHA512object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -437,4 +437,4 @@ _sha2_sha384(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject exit: return return_value; } -/*[clinic end generated code: output=f81dacb48f3fee72 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=d83a27cd9522cf22 input=a9049054013a1b77]*/ diff --git a/Modules/clinic/zlibmodule.c.h b/Modules/clinic/zlibmodule.c.h index 65412b2435a..a8d488ec67c 100644 --- a/Modules/clinic/zlibmodule.c.h +++ b/Modules/clinic/zlibmodule.c.h @@ -656,7 +656,7 @@ zlib_Compress_copy_impl(compobject *self, PyTypeObject *cls); static PyObject * zlib_Compress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -681,7 +681,7 @@ zlib_Compress___copy___impl(compobject *self, PyTypeObject *cls); static PyObject * zlib_Compress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments"); return NULL; } @@ -754,7 +754,7 @@ zlib_Decompress_copy_impl(compobject *self, PyTypeObject *cls); static PyObject * zlib_Decompress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); return NULL; } @@ -779,7 +779,7 @@ zlib_Decompress___copy___impl(compobject *self, PyTypeObject *cls); static PyObject * zlib_Decompress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { - if (nargs) { + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments"); return NULL; } @@ -1129,4 +1129,4 @@ zlib_crc32(PyObject *module, PyObject *const *args, Py_ssize_t nargs) #ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF #define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF #endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */ -/*[clinic end generated code: output=57ff7b511ab23132 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=244bf5f33deee674 input=a9049054013a1b77]*/ diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index c5e6c27f73b..827f619e6eb 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -29,10 +29,6 @@ #include "structmember.h" // PyMemberDef #include // offsetof() -// to support MS_WINDOWS_SYSTEM OpenFileMappingA / CreateFileMappingA -// need to be replaced with OpenFileMappingW / CreateFileMappingW -#if !defined(MS_WINDOWS) || defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_GAMES) - #ifndef MS_WINDOWS #define UNIX # ifdef HAVE_FCNTL_H @@ -113,7 +109,7 @@ typedef struct { #ifdef MS_WINDOWS HANDLE map_handle; HANDLE file_handle; - char * tagname; + wchar_t * tagname; #endif #ifdef UNIX @@ -531,7 +527,7 @@ mmap_resize_method(mmap_object *self, CloseHandle(self->map_handle); /* if the file mapping still exists, it cannot be resized. */ if (self->tagname) { - self->map_handle = OpenFileMappingA(FILE_MAP_WRITE, FALSE, + self->map_handle = OpenFileMappingW(FILE_MAP_WRITE, FALSE, self->tagname); if (self->map_handle) { PyErr_SetFromWindowsErr(ERROR_USER_MAPPED_FILE); @@ -560,7 +556,7 @@ mmap_resize_method(mmap_object *self, /* create a new file mapping and map a new view */ /* FIXME: call CreateFileMappingW with wchar_t tagname */ - self->map_handle = CreateFileMappingA( + self->map_handle = CreateFileMappingW( self->file_handle, NULL, PAGE_READWRITE, @@ -836,7 +832,7 @@ mmap__sizeof__method(mmap_object *self, void *unused) { size_t res = _PyObject_SIZE(Py_TYPE(self)); if (self->tagname) { - res += strlen(self->tagname) + 1; + res += (wcslen(self->tagname) + 1) * sizeof(self->tagname[0]); } return PyLong_FromSize_t(res); } @@ -1390,7 +1386,7 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict) DWORD off_lo; /* lower 32 bits of offset */ DWORD size_hi; /* upper 32 bits of size */ DWORD size_lo; /* lower 32 bits of size */ - const char *tagname = ""; + PyObject *tagname = Py_None; DWORD dwErr = 0; int fileno; HANDLE fh = 0; @@ -1400,7 +1396,7 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict) "tagname", "access", "offset", NULL }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "in|ziL", keywords, + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "in|OiL", keywords, &fileno, &map_size, &tagname, &access, &offset)) { return NULL; @@ -1533,17 +1529,19 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict) m_obj->weakreflist = NULL; m_obj->exports = 0; /* set the tag name */ - if (tagname != NULL && *tagname != '\0') { - m_obj->tagname = PyMem_Malloc(strlen(tagname)+1); + if (!Py_IsNone(tagname)) { + if (!PyUnicode_Check(tagname)) { + Py_DECREF(m_obj); + return PyErr_Format(PyExc_TypeError, "expected str or None for " + "'tagname', not %.200s", + Py_TYPE(tagname)->tp_name); + } + m_obj->tagname = PyUnicode_AsWideCharString(tagname, NULL); if (m_obj->tagname == NULL) { - PyErr_NoMemory(); Py_DECREF(m_obj); return NULL; } - strcpy(m_obj->tagname, tagname); } - else - m_obj->tagname = NULL; m_obj->access = (access_mode)access; size_hi = (DWORD)(size >> 32); @@ -1552,7 +1550,7 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict) off_lo = (DWORD)(offset & 0xFFFFFFFF); /* For files, it would be sufficient to pass 0 as size. For anonymous maps, we have to pass the size explicitly. */ - m_obj->map_handle = CreateFileMappingA(m_obj->file_handle, + m_obj->map_handle = CreateFileMappingW(m_obj->file_handle, NULL, flProtect, size_hi, @@ -1763,5 +1761,3 @@ PyInit_mmap(void) { return PyModuleDef_Init(&mmapmodule); } - -#endif /* !MS_WINDOWS || MS_WINDOWS_DESKTOP || MS_WINDOWS_GAMES */ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 0ac5a8d3714..1c230619679 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -226,15 +226,16 @@ corresponding Unix manual entries for more information on calls."); # include #endif +#ifdef HAVE_SYS_TYPES_H +/* Should be included before on HP-UX v3 */ +# include +#endif /* HAVE_SYS_TYPES_H */ + #ifdef HAVE_SYS_SYSMACROS_H /* GNU C Library: major(), minor(), makedev() */ # include #endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif /* HAVE_SYS_TYPES_H */ - #ifdef HAVE_SYS_STAT_H # include #endif /* HAVE_SYS_STAT_H */ @@ -1863,8 +1864,9 @@ win32_xstat_slow_impl(const wchar_t *path, struct _Py_stat_struct *result, HANDLE hFile; BY_HANDLE_FILE_INFORMATION fileInfo; FILE_BASIC_INFO basicInfo; + FILE_BASIC_INFO *pBasicInfo = NULL; FILE_ID_INFO idInfo; - FILE_ID_INFO *pIdInfo = &idInfo; + FILE_ID_INFO *pIdInfo = NULL; FILE_ATTRIBUTE_TAG_INFO tagInfo = { 0 }; DWORD fileType, error; BOOL isUnhandledTag = FALSE; @@ -2015,14 +2017,17 @@ win32_xstat_slow_impl(const wchar_t *path, struct _Py_stat_struct *result, retval = -1; goto cleanup; } - } - if (!GetFileInformationByHandleEx(hFile, FileIdInfo, &idInfo, sizeof(idInfo))) { - /* Failed to get FileIdInfo, so do not pass it along */ - pIdInfo = NULL; + /* Successfully got FileBasicInfo, so we'll pass it along */ + pBasicInfo = &basicInfo; + + if (GetFileInformationByHandleEx(hFile, FileIdInfo, &idInfo, sizeof(idInfo))) { + /* Successfully got FileIdInfo, so pass it along */ + pIdInfo = &idInfo; + } } - _Py_attribute_data_to_stat(&fileInfo, tagInfo.ReparseTag, &basicInfo, pIdInfo, result); + _Py_attribute_data_to_stat(&fileInfo, tagInfo.ReparseTag, pBasicInfo, pIdInfo, result); update_st_mode_from_path(path, fileInfo.dwFileAttributes, result); cleanup: diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index de7229d2ced..97248792c0f 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -7085,17 +7085,23 @@ Returns the interface index corresponding to the interface name if_name."); static PyObject * socket_if_indextoname(PyObject *self, PyObject *arg) { + unsigned long index_long = PyLong_AsUnsignedLong(arg); + if (index_long == (unsigned long) -1 && PyErr_Occurred()) { + return NULL; + } + #ifdef MS_WINDOWS - NET_IFINDEX index; + NET_IFINDEX index = (NET_IFINDEX)index_long; #else - unsigned long index; + unsigned int index = (unsigned int)index_long; #endif - char name[IF_NAMESIZE + 1]; - index = PyLong_AsUnsignedLong(arg); - if (index == (unsigned long) -1) + if ((unsigned long)index != index_long) { + PyErr_SetString(PyExc_OverflowError, "index is too large"); return NULL; + } + char name[IF_NAMESIZE + 1]; if (if_indextoname(index, name) == NULL) { PyErr_SetFromErrno(PyExc_OSError); return NULL; diff --git a/Modules/termios.c b/Modules/termios.c index c3d96cc5b2c..402e6ac908a 100644 --- a/Modules/termios.c +++ b/Modules/termios.c @@ -84,6 +84,8 @@ termios_tcgetattr_impl(PyObject *module, int fd) struct termios mode; int r; + /* Alpine Linux can leave some fields uninitialized. */ + memset(&mode, 0, sizeof(mode)); Py_BEGIN_ALLOW_THREADS r = tcgetattr(fd, &mode); Py_END_ALLOW_THREADS diff --git a/Objects/clinic/unicodeobject.c.h b/Objects/clinic/unicodeobject.c.h index d3769eb079f..27cbf9d1543 100644 --- a/Objects/clinic/unicodeobject.c.h +++ b/Objects/clinic/unicodeobject.c.h @@ -937,9 +937,11 @@ PyDoc_STRVAR(unicode_split__doc__, " character (including \\n \\r \\t \\f and spaces) and will discard\n" " empty strings from the result.\n" " maxsplit\n" -" Maximum number of splits (starting from the left).\n" +" Maximum number of splits.\n" " -1 (the default value) means no limit.\n" "\n" +"Splitting starts at the front of the string and works to the end.\n" +"\n" "Note, str.split() is mainly useful for data that has been intentionally\n" "delimited. With natural text that includes punctuation, consider using\n" "the regular expression module."); @@ -1061,7 +1063,7 @@ PyDoc_STRVAR(unicode_rsplit__doc__, " character (including \\n \\r \\t \\f and spaces) and will discard\n" " empty strings from the result.\n" " maxsplit\n" -" Maximum number of splits (starting from the left).\n" +" Maximum number of splits.\n" " -1 (the default value) means no limit.\n" "\n" "Splitting starts at the end of the string and works to the front."); @@ -1497,4 +1499,4 @@ unicode_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=32edbbf75dc8a03b input=a9049054013a1b77]*/ +/*[clinic end generated code: output=d8f67f37fdbe21c4 input=a9049054013a1b77]*/ diff --git a/Objects/lnotab_notes.txt b/Objects/lnotab_notes.txt index 362b87a86a4..a11ad937ec9 100644 --- a/Objects/lnotab_notes.txt +++ b/Objects/lnotab_notes.txt @@ -57,7 +57,7 @@ Final form: Iterating over the table. ------------------------- -For the `co_lines` attribute we want to emit the full form, omitting the (350, 360, No line number) and empty entries. +For the `co_lines` method we want to emit the full form, omitting the (350, 360, No line number) and empty entries. The code is as follows: diff --git a/Objects/object_layout.md b/Objects/object_layout.md index 82483022a01..894c4129de0 100644 --- a/Objects/object_layout.md +++ b/Objects/object_layout.md @@ -7,7 +7,7 @@ Each Python object starts with two fields: * ob_refcnt * ob_type -which the form the header common to all Python objects, for all versions, +which form the header common to all Python objects, for all versions, and hold the reference count and class of the object, respectively. ## Pre-header @@ -36,7 +36,7 @@ and the ``dict`` field points to the dictionary. ## 3.12 pre-header -In 3.12 the pointer to the list of weak references is added to the +In 3.12, the pointer to the list of weak references is added to the pre-header. In order to make space for it, the ``dict`` and ``values`` pointers are combined into a single tagged pointer: @@ -62,7 +62,7 @@ the values pointer, to enable the (legacy) C-API function * ob_refcnt * ob_type -For a "normal" Python object, that is one that doesn't inherit from a builtin +For a "normal" Python object, one that doesn't inherit from a builtin class or have slots, the header and pre-header form the entire object. ![Layout of "normal" object in 3.12](./object_layout_312.png) diff --git a/Objects/setobject.c b/Objects/setobject.c index 2e4580fbf8c..a147028f06c 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -1747,7 +1747,11 @@ set_issubset(PySetObject *so, PyObject *other) Py_RETURN_TRUE; } -PyDoc_STRVAR(issubset_doc, "Report whether another set contains this set."); +PyDoc_STRVAR(issubset_doc, +"issubset($self, other, /)\n\ +--\n\ +\n\ +Test whether every element in the set is in other."); static PyObject * set_issuperset(PySetObject *so, PyObject *other) @@ -1779,7 +1783,11 @@ set_issuperset(PySetObject *so, PyObject *other) Py_RETURN_TRUE; } -PyDoc_STRVAR(issuperset_doc, "Report whether this set contains another set."); +PyDoc_STRVAR(issuperset_doc, +"issuperset($self, other, /)\n\ +--\n\ +\n\ +Test whether every element in other is in the set."); static PyObject * set_richcompare(PySetObject *v, PyObject *w, int op) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index ec82eda9ac0..65d0842cb11 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -12410,11 +12410,13 @@ str.split as unicode_split character (including \n \r \t \f and spaces) and will discard empty strings from the result. maxsplit: Py_ssize_t = -1 - Maximum number of splits (starting from the left). + Maximum number of splits. -1 (the default value) means no limit. Return a list of the substrings in the string, using sep as the separator string. +Splitting starts at the front of the string and works to the end. + Note, str.split() is mainly useful for data that has been intentionally delimited. With natural text that includes punctuation, consider using the regular expression module. @@ -12423,7 +12425,7 @@ the regular expression module. static PyObject * unicode_split_impl(PyObject *self, PyObject *sep, Py_ssize_t maxsplit) -/*[clinic end generated code: output=3a65b1db356948dc input=07b9040d98c5fe8d]*/ +/*[clinic end generated code: output=3a65b1db356948dc input=a29bcc0c7a5af0eb]*/ { if (sep == Py_None) return split(self, NULL, maxsplit); diff --git a/PC/config.c b/PC/config.c index 9d0fe6f87df..48d4bef27eb 100644 --- a/PC/config.c +++ b/PC/config.c @@ -43,9 +43,7 @@ extern PyObject* PyInit__collections(void); extern PyObject* PyInit__heapq(void); extern PyObject* PyInit__bisect(void); extern PyObject* PyInit__symtable(void); -#if defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_GAMES) extern PyObject* PyInit_mmap(void); -#endif extern PyObject* PyInit__csv(void); extern PyObject* PyInit__sre(void); #if defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_SYSTEM) || defined(MS_WINDOWS_GAMES) diff --git a/PC/launcher2.c b/PC/launcher2.c index bb500d4b6bf..0387700cb72 100644 --- a/PC/launcher2.c +++ b/PC/launcher2.c @@ -565,6 +565,21 @@ findArgv0End(const wchar_t *buffer, int bufferLength) *** COMMAND-LINE PARSING *** \******************************************************************************/ +// Adapted from https://stackoverflow.com/a/65583702 +typedef struct AppExecLinkFile { // For tag IO_REPARSE_TAG_APPEXECLINK + DWORD reparseTag; + WORD reparseDataLength; + WORD reserved; + ULONG version; + wchar_t stringList[MAX_PATH * 4]; // Multistring (Consecutive UTF-16 strings each ending with a NUL) + /* There are normally 4 strings here. Ex: + Package ID: L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe" + Entry Point: L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!PythonRedirector" + Executable: L"C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.17.106910_x64__8wekyb3d8bbwe\AppInstallerPythonRedirector.exe" + Applic. Type: L"0" // Integer as ASCII. "0" = Desktop bridge application; Else sandboxed UWP application + */ +} AppExecLinkFile; + int parseCommandLine(SearchInfo *search) @@ -756,6 +771,55 @@ _shebangStartsWith(const wchar_t *buffer, int bufferLength, const wchar_t *prefi } +int +ensure_no_redirector_stub(wchar_t* filename, wchar_t* buffer) +{ + // Make sure we didn't find a reparse point that will open the Microsoft Store + // If we did, pretend there was no shebang and let normal handling take over + WIN32_FIND_DATAW findData; + HANDLE hFind = FindFirstFileW(buffer, &findData); + if (!hFind) { + // Let normal handling take over + debug(L"# Did not find %s on PATH\n", filename); + return RC_NO_SHEBANG; + } + + FindClose(hFind); + + if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && + findData.dwReserved0 & IO_REPARSE_TAG_APPEXECLINK)) { + return 0; + } + + HANDLE hReparsePoint = CreateFileW(buffer, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT, NULL); + if (!hReparsePoint) { + // Let normal handling take over + debug(L"# Did not find %s on PATH\n", filename); + return RC_NO_SHEBANG; + } + + AppExecLinkFile appExecLink; + + if (!DeviceIoControl(hReparsePoint, FSCTL_GET_REPARSE_POINT, NULL, 0, &appExecLink, sizeof(appExecLink), NULL, NULL)) { + // Let normal handling take over + debug(L"# Did not find %s on PATH\n", filename); + CloseHandle(hReparsePoint); + return RC_NO_SHEBANG; + } + + CloseHandle(hReparsePoint); + + const wchar_t* redirectorPackageId = L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe"; + + if (0 == wcscmp(appExecLink.stringList, redirectorPackageId)) { + debug(L"# ignoring redirector that would launch store\n"); + return RC_NO_SHEBANG; + } + + return 0; +} + + int searchPath(SearchInfo *search, const wchar_t *shebang, int shebangLength) { @@ -817,6 +881,11 @@ searchPath(SearchInfo *search, const wchar_t *shebang, int shebangLength) return RC_BAD_VIRTUAL_PATH; } + int result = ensure_no_redirector_stub(filename, buffer); + if (result) { + return result; + } + // Check that we aren't going to call ourselves again // If we are, pretend there was no shebang and let normal handling take over if (GetModuleFileNameW(NULL, filename, MAXLEN) && diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index 2656aa4c03f..b44878fd8f8 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -53,13 +53,13 @@ echo.Fetching external libraries... set libraries= set libraries=%libraries% bzip2-1.0.8 if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4 -if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.11 +if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.13 set libraries=%libraries% sqlite-3.43.1.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.13.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.13.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tix-8.4.3.6 set libraries=%libraries% xz-5.2.5 -set libraries=%libraries% zlib-1.2.13 +set libraries=%libraries% zlib-1.3.1 for %%e in (%libraries%) do ( if exist "%EXTERNALS_DIR%\%%e" ( @@ -77,7 +77,7 @@ echo.Fetching external binaries... set binaries= if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4 -if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.0.11 +if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.0.13 if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.13.0 if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06 diff --git a/PCbuild/python.props b/PCbuild/python.props index 496bc3dd4cf..fcdd9b40756 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -74,11 +74,11 @@ $(ExternalsDir)libffi-3.4.4\ $(libffiDir)$(ArchName)\ $(libffiOutDir)include - $(ExternalsDir)openssl-3.0.11\ - $(ExternalsDir)openssl-bin-3.0.11\$(ArchName)\ + $(ExternalsDir)openssl-3.0.13\ + $(ExternalsDir)openssl-bin-3.0.13\$(ArchName)\ $(opensslOutDir)include $(ExternalsDir)\nasm-2.11.06\ - $(ExternalsDir)\zlib-1.2.13\ + $(ExternalsDir)\zlib-1.3.1\ diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index aa093b30a74..d42c26396d5 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -731,7 +731,7 @@ def emit_sequence_constructor(self, name, type): class PyTypesDeclareVisitor(PickleVisitor): def visitProduct(self, prod, name): - self.emit("static PyObject* ast2obj_%s(struct ast_state *state, void*);" % name, 0) + self.emit("static PyObject* ast2obj_%s(struct ast_state *state, struct validator *vstate, void*);" % name, 0) if prod.attributes: self.emit("static const char * const %s_attributes[] = {" % name, 0) for a in prod.attributes: @@ -752,7 +752,7 @@ def visitSum(self, sum, name): ptype = "void*" if is_simple(sum): ptype = get_c_type(name) - self.emit("static PyObject* ast2obj_%s(struct ast_state *state, %s);" % (name, ptype), 0) + self.emit("static PyObject* ast2obj_%s(struct ast_state *state, struct validator *vstate, %s);" % (name, ptype), 0) for t in sum.types: self.visitConstructor(t, name) @@ -984,7 +984,8 @@ def visitModule(self, mod): /* Conversion AST -> Python */ -static PyObject* ast2obj_list(struct ast_state *state, asdl_seq *seq, PyObject* (*func)(struct ast_state *state, void*)) +static PyObject* ast2obj_list(struct ast_state *state, struct validator *vstate, asdl_seq *seq, + PyObject* (*func)(struct ast_state *state, struct validator *vstate, void*)) { Py_ssize_t i, n = asdl_seq_LEN(seq); PyObject *result = PyList_New(n); @@ -992,7 +993,7 @@ def visitModule(self, mod): if (!result) return NULL; for (i = 0; i < n; i++) { - value = func(state, asdl_seq_GET_UNTYPED(seq, i)); + value = func(state, vstate, asdl_seq_GET_UNTYPED(seq, i)); if (!value) { Py_DECREF(result); return NULL; @@ -1002,7 +1003,7 @@ def visitModule(self, mod): return result; } -static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), void *o) +static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), void *o) { PyObject *op = (PyObject*)o; if (!op) { @@ -1014,7 +1015,7 @@ def visitModule(self, mod): #define ast2obj_identifier ast2obj_object #define ast2obj_string ast2obj_object -static PyObject* ast2obj_int(struct ast_state *Py_UNUSED(state), long b) +static PyObject* ast2obj_int(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), long b) { return PyLong_FromLong(b); } @@ -1123,8 +1124,6 @@ def visitModule(self, mod): for dfn in mod.dfns: self.visit(dfn) self.file.write(textwrap.dedent(''' - state->recursion_depth = 0; - state->recursion_limit = 0; state->initialized = 1; return 1; } @@ -1265,7 +1264,7 @@ class ObjVisitor(PickleVisitor): def func_begin(self, name): ctype = get_c_type(name) self.emit("PyObject*", 0) - self.emit("ast2obj_%s(struct ast_state *state, void* _o)" % (name), 0) + self.emit("ast2obj_%s(struct ast_state *state, struct validator *vstate, void* _o)" % (name), 0) self.emit("{", 0) self.emit("%s o = (%s)_o;" % (ctype, ctype), 1) self.emit("PyObject *result = NULL, *value = NULL;", 1) @@ -1273,16 +1272,17 @@ def func_begin(self, name): self.emit('if (!o) {', 1) self.emit("Py_RETURN_NONE;", 2) self.emit("}", 1) - self.emit("if (++state->recursion_depth > state->recursion_limit) {", 1) + self.emit("if (++vstate->recursion_depth > vstate->recursion_limit) {", 1) self.emit("PyErr_SetString(PyExc_RecursionError,", 2) self.emit('"maximum recursion depth exceeded during ast construction");', 3) self.emit("return 0;", 2) self.emit("}", 1) def func_end(self): - self.emit("state->recursion_depth--;", 1) + self.emit("vstate->recursion_depth--;", 1) self.emit("return result;", 1) self.emit("failed:", 0) + self.emit("vstate->recursion_depth--;", 1) self.emit("Py_XDECREF(value);", 1) self.emit("Py_XDECREF(result);", 1) self.emit("return NULL;", 1) @@ -1300,7 +1300,7 @@ def visitSum(self, sum, name): self.visitConstructor(t, i + 1, name) self.emit("}", 1) for a in sum.attributes: - self.emit("value = ast2obj_%s(state, o->%s);" % (a.type, a.name), 1) + self.emit("value = ast2obj_%s(state, vstate, o->%s);" % (a.type, a.name), 1) self.emit("if (!value) goto failed;", 1) self.emit('if (PyObject_SetAttr(result, state->%s, value) < 0)' % a.name, 1) self.emit('goto failed;', 2) @@ -1308,7 +1308,7 @@ def visitSum(self, sum, name): self.func_end() def simpleSum(self, sum, name): - self.emit("PyObject* ast2obj_%s(struct ast_state *state, %s_ty o)" % (name, name), 0) + self.emit("PyObject* ast2obj_%s(struct ast_state *state, struct validator *vstate, %s_ty o)" % (name, name), 0) self.emit("{", 0) self.emit("switch(o) {", 1) for t in sum.types: @@ -1326,7 +1326,7 @@ def visitProduct(self, prod, name): for field in prod.fields: self.visitField(field, name, 1, True) for a in prod.attributes: - self.emit("value = ast2obj_%s(state, o->%s);" % (a.type, a.name), 1) + self.emit("value = ast2obj_%s(state, vstate, o->%s);" % (a.type, a.name), 1) self.emit("if (!value) goto failed;", 1) self.emit("if (PyObject_SetAttr(result, state->%s, value) < 0)" % a.name, 1) self.emit('goto failed;', 2) @@ -1367,7 +1367,7 @@ def set(self, field, value, depth): self.emit("for(i = 0; i < n; i++)", depth+1) # This cannot fail, so no need for error handling self.emit( - "PyList_SET_ITEM(value, i, ast2obj_{0}(state, ({0}_ty)asdl_seq_GET({1}, i)));".format( + "PyList_SET_ITEM(value, i, ast2obj_{0}(state, vstate, ({0}_ty)asdl_seq_GET({1}, i)));".format( field.type, value ), @@ -1376,9 +1376,9 @@ def set(self, field, value, depth): ) self.emit("}", depth) else: - self.emit("value = ast2obj_list(state, (asdl_seq*)%s, ast2obj_%s);" % (value, field.type), depth) + self.emit("value = ast2obj_list(state, vstate, (asdl_seq*)%s, ast2obj_%s);" % (value, field.type), depth) else: - self.emit("value = ast2obj_%s(state, %s);" % (field.type, value), depth, reflow=False) + self.emit("value = ast2obj_%s(state, vstate, %s);" % (field.type, value), depth, reflow=False) class PartingShots(StaticVisitor): @@ -1396,21 +1396,22 @@ class PartingShots(StaticVisitor): int COMPILER_STACK_FRAME_SCALE = 2; PyThreadState *tstate = _PyThreadState_GET(); if (!tstate) { - return 0; + return NULL; } - state->recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE; + struct validator vstate; + vstate.recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE; int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining; starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE; - state->recursion_depth = starting_recursion_depth; + vstate.recursion_depth = starting_recursion_depth; - PyObject *result = ast2obj_mod(state, t); + PyObject *result = ast2obj_mod(state, &vstate, t); /* Check that the recursion depth counting balanced correctly */ - if (result && state->recursion_depth != starting_recursion_depth) { + if (result && vstate.recursion_depth != starting_recursion_depth) { PyErr_Format(PyExc_SystemError, "AST constructor recursion depth mismatch (before=%d, after=%d)", - starting_recursion_depth, state->recursion_depth); - return 0; + starting_recursion_depth, vstate.recursion_depth); + return NULL; } return result; } @@ -1478,8 +1479,8 @@ def visit(self, object): def generate_ast_state(module_state, f): f.write('struct ast_state {\n') f.write(' int initialized;\n') - f.write(' int recursion_depth;\n') - f.write(' int recursion_limit;\n') + f.write(' int unused_recursion_depth;\n') + f.write(' int unused_recursion_limit;\n') for s in module_state: f.write(' PyObject *' + s + ';\n') f.write('};') @@ -1545,6 +1546,11 @@ def generate_module_def(mod, metadata, f, internal_h): #include "structmember.h" #include + struct validator { + int recursion_depth; /* current recursion depth */ + int recursion_limit; /* recursion limit */ + }; + // Forward declaration static int init_types(struct ast_state *state); diff --git a/Parser/pegen.c b/Parser/pegen.c index ff02e88cee7..cbceaae599d 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -18,12 +18,8 @@ _PyPegen_interactive_exit(Parser *p) } Py_ssize_t -_PyPegen_byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset) +_PyPegen_byte_offset_to_character_offset_raw(const char* str, Py_ssize_t col_offset) { - const char *str = PyUnicode_AsUTF8(line); - if (!str) { - return -1; - } Py_ssize_t len = strlen(str); if (col_offset > len + 1) { col_offset = len + 1; @@ -93,6 +89,16 @@ _PyPegen_calculate_display_width(PyObject *line, Py_ssize_t character_offset) return width; } +Py_ssize_t +_PyPegen_byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset) +{ + const char *str = PyUnicode_AsUTF8(line); + if (!str) { + return -1; + } + return _PyPegen_byte_offset_to_character_offset_raw(str, col_offset); +} + // Here, mark is the start of the node, while p->mark is the end. // If node==NULL, they should be the same. int diff --git a/Parser/pegen.h b/Parser/pegen.h index 268f380262b..c2a3e02b2e0 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -151,6 +151,7 @@ expr_ty _PyPegen_name_token(Parser *p); expr_ty _PyPegen_number_token(Parser *p); void *_PyPegen_string_token(Parser *p); Py_ssize_t _PyPegen_byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset); +Py_ssize_t _PyPegen_byte_offset_to_character_offset_raw(const char*, Py_ssize_t col_offset); Py_ssize_t _PyPegen_calculate_display_width(PyObject *segment, Py_ssize_t character_offset); // Error handling functions and APIs diff --git a/Parser/pegen_errors.c b/Parser/pegen_errors.c index c13ba97a248..cefec5d2757 100644 --- a/Parser/pegen_errors.c +++ b/Parser/pegen_errors.c @@ -309,6 +309,10 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, Py_ssize_t end_lineno, Py_ssize_t end_col_offset, const char *errmsg, va_list va) { + // Bail out if we already have an error set. + if (p->error_indicator && PyErr_Occurred()) { + return NULL; + } PyObject *value = NULL; PyObject *errstr = NULL; PyObject *error_line = NULL; diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index d2f967d35ac..04ba04428fe 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -2851,9 +2851,13 @@ tok_get_fstring_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct tok->lineno = the_current_tok->f_string_line_start; if (current_tok->f_string_quote_size == 3) { - return MAKE_TOKEN(syntaxerror(tok, - "unterminated triple-quoted f-string literal" - " (detected at line %d)", start)); + syntaxerror(tok, + "unterminated triple-quoted f-string literal" + " (detected at line %d)", start); + if (c != '\n') { + tok->done = E_EOFS; + } + return MAKE_TOKEN(ERRORTOKEN); } else { return MAKE_TOKEN(syntaxerror(tok, diff --git a/Python/Python-ast.c b/Python/Python-ast.c index f8bb6124fa4..6c95f07c386 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -9,6 +9,11 @@ #include "structmember.h" #include +struct validator { + int recursion_depth; /* current recursion depth */ + int recursion_limit; /* recursion limit */ +}; + // Forward declaration static int init_types(struct ast_state *state); @@ -385,7 +390,8 @@ GENERATE_ASDL_SEQ_CONSTRUCTOR(pattern, pattern_ty) GENERATE_ASDL_SEQ_CONSTRUCTOR(type_ignore, type_ignore_ty) GENERATE_ASDL_SEQ_CONSTRUCTOR(type_param, type_param_ty) -static PyObject* ast2obj_mod(struct ast_state *state, void*); +static PyObject* ast2obj_mod(struct ast_state *state, struct validator *vstate, + void*); static const char * const Module_fields[]={ "body", "type_ignores", @@ -406,7 +412,8 @@ static const char * const stmt_attributes[] = { "end_lineno", "end_col_offset", }; -static PyObject* ast2obj_stmt(struct ast_state *state, void*); +static PyObject* ast2obj_stmt(struct ast_state *state, struct validator + *vstate, void*); static const char * const FunctionDef_fields[]={ "name", "args", @@ -541,7 +548,8 @@ static const char * const expr_attributes[] = { "end_lineno", "end_col_offset", }; -static PyObject* ast2obj_expr(struct ast_state *state, void*); +static PyObject* ast2obj_expr(struct ast_state *state, struct validator + *vstate, void*); static const char * const BoolOp_fields[]={ "op", "values", @@ -654,12 +662,18 @@ static const char * const Slice_fields[]={ "upper", "step", }; -static PyObject* ast2obj_expr_context(struct ast_state *state, expr_context_ty); -static PyObject* ast2obj_boolop(struct ast_state *state, boolop_ty); -static PyObject* ast2obj_operator(struct ast_state *state, operator_ty); -static PyObject* ast2obj_unaryop(struct ast_state *state, unaryop_ty); -static PyObject* ast2obj_cmpop(struct ast_state *state, cmpop_ty); -static PyObject* ast2obj_comprehension(struct ast_state *state, void*); +static PyObject* ast2obj_expr_context(struct ast_state *state, struct validator + *vstate, expr_context_ty); +static PyObject* ast2obj_boolop(struct ast_state *state, struct validator + *vstate, boolop_ty); +static PyObject* ast2obj_operator(struct ast_state *state, struct validator + *vstate, operator_ty); +static PyObject* ast2obj_unaryop(struct ast_state *state, struct validator + *vstate, unaryop_ty); +static PyObject* ast2obj_cmpop(struct ast_state *state, struct validator + *vstate, cmpop_ty); +static PyObject* ast2obj_comprehension(struct ast_state *state, struct + validator *vstate, void*); static const char * const comprehension_fields[]={ "target", "iter", @@ -672,13 +686,15 @@ static const char * const excepthandler_attributes[] = { "end_lineno", "end_col_offset", }; -static PyObject* ast2obj_excepthandler(struct ast_state *state, void*); +static PyObject* ast2obj_excepthandler(struct ast_state *state, struct + validator *vstate, void*); static const char * const ExceptHandler_fields[]={ "type", "name", "body", }; -static PyObject* ast2obj_arguments(struct ast_state *state, void*); +static PyObject* ast2obj_arguments(struct ast_state *state, struct validator + *vstate, void*); static const char * const arguments_fields[]={ "posonlyargs", "args", @@ -688,7 +704,8 @@ static const char * const arguments_fields[]={ "kwarg", "defaults", }; -static PyObject* ast2obj_arg(struct ast_state *state, void*); +static PyObject* ast2obj_arg(struct ast_state *state, struct validator *vstate, + void*); static const char * const arg_attributes[] = { "lineno", "col_offset", @@ -700,7 +717,8 @@ static const char * const arg_fields[]={ "annotation", "type_comment", }; -static PyObject* ast2obj_keyword(struct ast_state *state, void*); +static PyObject* ast2obj_keyword(struct ast_state *state, struct validator + *vstate, void*); static const char * const keyword_attributes[] = { "lineno", "col_offset", @@ -711,7 +729,8 @@ static const char * const keyword_fields[]={ "arg", "value", }; -static PyObject* ast2obj_alias(struct ast_state *state, void*); +static PyObject* ast2obj_alias(struct ast_state *state, struct validator + *vstate, void*); static const char * const alias_attributes[] = { "lineno", "col_offset", @@ -722,12 +741,14 @@ static const char * const alias_fields[]={ "name", "asname", }; -static PyObject* ast2obj_withitem(struct ast_state *state, void*); +static PyObject* ast2obj_withitem(struct ast_state *state, struct validator + *vstate, void*); static const char * const withitem_fields[]={ "context_expr", "optional_vars", }; -static PyObject* ast2obj_match_case(struct ast_state *state, void*); +static PyObject* ast2obj_match_case(struct ast_state *state, struct validator + *vstate, void*); static const char * const match_case_fields[]={ "pattern", "guard", @@ -739,7 +760,8 @@ static const char * const pattern_attributes[] = { "end_lineno", "end_col_offset", }; -static PyObject* ast2obj_pattern(struct ast_state *state, void*); +static PyObject* ast2obj_pattern(struct ast_state *state, struct validator + *vstate, void*); static const char * const MatchValue_fields[]={ "value", }; @@ -770,7 +792,8 @@ static const char * const MatchAs_fields[]={ static const char * const MatchOr_fields[]={ "patterns", }; -static PyObject* ast2obj_type_ignore(struct ast_state *state, void*); +static PyObject* ast2obj_type_ignore(struct ast_state *state, struct validator + *vstate, void*); static const char * const TypeIgnore_fields[]={ "lineno", "tag", @@ -781,7 +804,8 @@ static const char * const type_param_attributes[] = { "end_lineno", "end_col_offset", }; -static PyObject* ast2obj_type_param(struct ast_state *state, void*); +static PyObject* ast2obj_type_param(struct ast_state *state, struct validator + *vstate, void*); static const char * const TypeVar_fields[]={ "name", "bound", @@ -1010,7 +1034,8 @@ add_attributes(struct ast_state *state, PyObject *type, const char * const *attr /* Conversion AST -> Python */ -static PyObject* ast2obj_list(struct ast_state *state, asdl_seq *seq, PyObject* (*func)(struct ast_state *state, void*)) +static PyObject* ast2obj_list(struct ast_state *state, struct validator *vstate, asdl_seq *seq, + PyObject* (*func)(struct ast_state *state, struct validator *vstate, void*)) { Py_ssize_t i, n = asdl_seq_LEN(seq); PyObject *result = PyList_New(n); @@ -1018,7 +1043,7 @@ static PyObject* ast2obj_list(struct ast_state *state, asdl_seq *seq, PyObject* if (!result) return NULL; for (i = 0; i < n; i++) { - value = func(state, asdl_seq_GET_UNTYPED(seq, i)); + value = func(state, vstate, asdl_seq_GET_UNTYPED(seq, i)); if (!value) { Py_DECREF(result); return NULL; @@ -1028,7 +1053,7 @@ static PyObject* ast2obj_list(struct ast_state *state, asdl_seq *seq, PyObject* return result; } -static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), void *o) +static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), void *o) { PyObject *op = (PyObject*)o; if (!op) { @@ -1040,7 +1065,7 @@ static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), void *o) #define ast2obj_identifier ast2obj_object #define ast2obj_string ast2obj_object -static PyObject* ast2obj_int(struct ast_state *Py_UNUSED(state), long b) +static PyObject* ast2obj_int(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), long b) { return PyLong_FromLong(b); } @@ -1919,8 +1944,6 @@ init_types(struct ast_state *state) "TypeVarTuple(identifier name)"); if (!state->TypeVarTuple_type) return 0; - state->recursion_depth = 0; - state->recursion_limit = 0; state->initialized = 1; return 1; } @@ -3776,7 +3799,7 @@ _PyAST_TypeVarTuple(identifier name, int lineno, int col_offset, int PyObject* -ast2obj_mod(struct ast_state *state, void* _o) +ast2obj_mod(struct ast_state *state, struct validator *vstate, void* _o) { mod_ty o = (mod_ty)_o; PyObject *result = NULL, *value = NULL; @@ -3784,7 +3807,7 @@ ast2obj_mod(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -3794,12 +3817,14 @@ ast2obj_mod(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Module_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Module.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Module.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Module.type_ignores, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.Module.type_ignores, ast2obj_type_ignore); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_ignores, value) == -1) @@ -3810,7 +3835,7 @@ ast2obj_mod(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Interactive_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Interactive.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Interactive.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) @@ -3821,7 +3846,7 @@ ast2obj_mod(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Expression_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Expression.body); + value = ast2obj_expr(state, vstate, o->v.Expression.body); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; @@ -3831,29 +3856,31 @@ ast2obj_mod(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->FunctionType_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.FunctionType.argtypes, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.FunctionType.argtypes, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->argtypes, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.FunctionType.returns); + value = ast2obj_expr(state, vstate, o->v.FunctionType.returns); if (!value) goto failed; if (PyObject_SetAttr(result, state->returns, value) == -1) goto failed; Py_DECREF(value); break; } - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_stmt(struct ast_state *state, void* _o) +ast2obj_stmt(struct ast_state *state, struct validator *vstate, void* _o) { stmt_ty o = (stmt_ty)_o; PyObject *result = NULL, *value = NULL; @@ -3861,7 +3888,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -3871,39 +3898,41 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->FunctionDef_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.FunctionDef.name); + value = ast2obj_identifier(state, vstate, o->v.FunctionDef.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_arguments(state, o->v.FunctionDef.args); + value = ast2obj_arguments(state, vstate, o->v.FunctionDef.args); if (!value) goto failed; if (PyObject_SetAttr(result, state->args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.FunctionDef.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.FunctionDef.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.FunctionDef.decorator_list, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.FunctionDef.decorator_list, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->decorator_list, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.FunctionDef.returns); + value = ast2obj_expr(state, vstate, o->v.FunctionDef.returns); if (!value) goto failed; if (PyObject_SetAttr(result, state->returns, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.FunctionDef.type_comment); + value = ast2obj_string(state, vstate, o->v.FunctionDef.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.FunctionDef.type_params, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.FunctionDef.type_params, ast2obj_type_param); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_params, value) == -1) @@ -3914,40 +3943,41 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->AsyncFunctionDef_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.AsyncFunctionDef.name); + value = ast2obj_identifier(state, vstate, o->v.AsyncFunctionDef.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_arguments(state, o->v.AsyncFunctionDef.args); + value = ast2obj_arguments(state, vstate, o->v.AsyncFunctionDef.args); if (!value) goto failed; if (PyObject_SetAttr(result, state->args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.AsyncFunctionDef.body, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.AsyncFunctionDef.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFunctionDef.decorator_list, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->decorator_list, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.AsyncFunctionDef.returns); + value = ast2obj_expr(state, vstate, o->v.AsyncFunctionDef.returns); if (!value) goto failed; if (PyObject_SetAttr(result, state->returns, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.AsyncFunctionDef.type_comment); + value = ast2obj_string(state, vstate, o->v.AsyncFunctionDef.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFunctionDef.type_params, ast2obj_type_param); if (!value) goto failed; @@ -3959,36 +3989,38 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->ClassDef_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.ClassDef.name); + value = ast2obj_identifier(state, vstate, o->v.ClassDef.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.bases, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.bases, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->bases, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.keywords, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.keywords, ast2obj_keyword); if (!value) goto failed; if (PyObject_SetAttr(result, state->keywords, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.decorator_list, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.ClassDef.decorator_list, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->decorator_list, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.type_params, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.ClassDef.type_params, ast2obj_type_param); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_params, value) == -1) @@ -3999,7 +4031,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Return_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Return.value); + value = ast2obj_expr(state, vstate, o->v.Return.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4009,7 +4041,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Delete_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Delete.targets, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Delete.targets, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->targets, value) == -1) @@ -4020,18 +4052,18 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Assign_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Assign.targets, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Assign.targets, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->targets, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Assign.value); + value = ast2obj_expr(state, vstate, o->v.Assign.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.Assign.type_comment); + value = ast2obj_string(state, vstate, o->v.Assign.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; @@ -4041,18 +4073,19 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->TypeAlias_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.TypeAlias.name); + value = ast2obj_expr(state, vstate, o->v.TypeAlias.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.TypeAlias.type_params, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.TypeAlias.type_params, ast2obj_type_param); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_params, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.TypeAlias.value); + value = ast2obj_expr(state, vstate, o->v.TypeAlias.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4062,17 +4095,17 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->AugAssign_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.AugAssign.target); + value = ast2obj_expr(state, vstate, o->v.AugAssign.target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_operator(state, o->v.AugAssign.op); + value = ast2obj_operator(state, vstate, o->v.AugAssign.op); if (!value) goto failed; if (PyObject_SetAttr(result, state->op, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.AugAssign.value); + value = ast2obj_expr(state, vstate, o->v.AugAssign.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4082,22 +4115,22 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->AnnAssign_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.AnnAssign.target); + value = ast2obj_expr(state, vstate, o->v.AnnAssign.target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.AnnAssign.annotation); + value = ast2obj_expr(state, vstate, o->v.AnnAssign.annotation); if (!value) goto failed; if (PyObject_SetAttr(result, state->annotation, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.AnnAssign.value); + value = ast2obj_expr(state, vstate, o->v.AnnAssign.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->v.AnnAssign.simple); + value = ast2obj_int(state, vstate, o->v.AnnAssign.simple); if (!value) goto failed; if (PyObject_SetAttr(result, state->simple, value) == -1) goto failed; @@ -4107,27 +4140,29 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->For_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.For.target); + value = ast2obj_expr(state, vstate, o->v.For.target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.For.iter); + value = ast2obj_expr(state, vstate, o->v.For.iter); if (!value) goto failed; if (PyObject_SetAttr(result, state->iter, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.For.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.For.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.For.orelse, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.For.orelse, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.For.type_comment); + value = ast2obj_string(state, vstate, o->v.For.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; @@ -4137,29 +4172,29 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->AsyncFor_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.AsyncFor.target); + value = ast2obj_expr(state, vstate, o->v.AsyncFor.target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.AsyncFor.iter); + value = ast2obj_expr(state, vstate, o->v.AsyncFor.iter); if (!value) goto failed; if (PyObject_SetAttr(result, state->iter, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.AsyncFor.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFor.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.AsyncFor.orelse, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFor.orelse, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.AsyncFor.type_comment); + value = ast2obj_string(state, vstate, o->v.AsyncFor.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; @@ -4169,17 +4204,19 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->While_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.While.test); + value = ast2obj_expr(state, vstate, o->v.While.test); if (!value) goto failed; if (PyObject_SetAttr(result, state->test, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.While.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.While.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.While.orelse, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.While.orelse, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; @@ -4189,17 +4226,19 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->If_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.If.test); + value = ast2obj_expr(state, vstate, o->v.If.test); if (!value) goto failed; if (PyObject_SetAttr(result, state->test, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.If.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.If.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.If.orelse, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.If.orelse, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; @@ -4209,18 +4248,19 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->With_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.With.items, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.With.items, ast2obj_withitem); if (!value) goto failed; if (PyObject_SetAttr(result, state->items, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.With.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.With.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.With.type_comment); + value = ast2obj_string(state, vstate, o->v.With.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; @@ -4230,19 +4270,19 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->AsyncWith_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.AsyncWith.items, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncWith.items, ast2obj_withitem); if (!value) goto failed; if (PyObject_SetAttr(result, state->items, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.AsyncWith.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncWith.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.AsyncWith.type_comment); + value = ast2obj_string(state, vstate, o->v.AsyncWith.type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; @@ -4252,12 +4292,12 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Match_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Match.subject); + value = ast2obj_expr(state, vstate, o->v.Match.subject); if (!value) goto failed; if (PyObject_SetAttr(result, state->subject, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Match.cases, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Match.cases, ast2obj_match_case); if (!value) goto failed; if (PyObject_SetAttr(result, state->cases, value) == -1) @@ -4268,12 +4308,12 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Raise_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Raise.exc); + value = ast2obj_expr(state, vstate, o->v.Raise.exc); if (!value) goto failed; if (PyObject_SetAttr(result, state->exc, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Raise.cause); + value = ast2obj_expr(state, vstate, o->v.Raise.cause); if (!value) goto failed; if (PyObject_SetAttr(result, state->cause, value) == -1) goto failed; @@ -4283,23 +4323,25 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Try_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Try.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Try.handlers, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.handlers, ast2obj_excepthandler); if (!value) goto failed; if (PyObject_SetAttr(result, state->handlers, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Try.orelse, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.orelse, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Try.finalbody, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.finalbody, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->finalbody, value) == -1) @@ -4310,24 +4352,25 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->TryStar_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.TryStar.body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.body, + ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.TryStar.handlers, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.handlers, ast2obj_excepthandler); if (!value) goto failed; if (PyObject_SetAttr(result, state->handlers, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.TryStar.orelse, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.orelse, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.TryStar.finalbody, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.finalbody, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->finalbody, value) == -1) @@ -4338,12 +4381,12 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Assert_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Assert.test); + value = ast2obj_expr(state, vstate, o->v.Assert.test); if (!value) goto failed; if (PyObject_SetAttr(result, state->test, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Assert.msg); + value = ast2obj_expr(state, vstate, o->v.Assert.msg); if (!value) goto failed; if (PyObject_SetAttr(result, state->msg, value) == -1) goto failed; @@ -4353,7 +4396,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Import_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Import.names, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Import.names, ast2obj_alias); if (!value) goto failed; if (PyObject_SetAttr(result, state->names, value) == -1) @@ -4364,18 +4407,18 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->ImportFrom_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.ImportFrom.module); + value = ast2obj_identifier(state, vstate, o->v.ImportFrom.module); if (!value) goto failed; if (PyObject_SetAttr(result, state->module, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ImportFrom.names, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ImportFrom.names, ast2obj_alias); if (!value) goto failed; if (PyObject_SetAttr(result, state->names, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->v.ImportFrom.level); + value = ast2obj_int(state, vstate, o->v.ImportFrom.level); if (!value) goto failed; if (PyObject_SetAttr(result, state->level, value) == -1) goto failed; @@ -4385,7 +4428,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Global_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Global.names, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Global.names, ast2obj_identifier); if (!value) goto failed; if (PyObject_SetAttr(result, state->names, value) == -1) @@ -4396,7 +4439,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Nonlocal_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Nonlocal.names, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Nonlocal.names, ast2obj_identifier); if (!value) goto failed; if (PyObject_SetAttr(result, state->names, value) == -1) @@ -4407,7 +4450,7 @@ ast2obj_stmt(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Expr_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Expr.value); + value = ast2obj_expr(state, vstate, o->v.Expr.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4429,36 +4472,37 @@ ast2obj_stmt(struct ast_state *state, void* _o) if (!result) goto failed; break; } - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_expr(struct ast_state *state, void* _o) +ast2obj_expr(struct ast_state *state, struct validator *vstate, void* _o) { expr_ty o = (expr_ty)_o; PyObject *result = NULL, *value = NULL; @@ -4466,7 +4510,7 @@ ast2obj_expr(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -4476,12 +4520,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->BoolOp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_boolop(state, o->v.BoolOp.op); + value = ast2obj_boolop(state, vstate, o->v.BoolOp.op); if (!value) goto failed; if (PyObject_SetAttr(result, state->op, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.BoolOp.values, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.BoolOp.values, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->values, value) == -1) @@ -4492,12 +4536,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->NamedExpr_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.NamedExpr.target); + value = ast2obj_expr(state, vstate, o->v.NamedExpr.target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.NamedExpr.value); + value = ast2obj_expr(state, vstate, o->v.NamedExpr.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4507,17 +4551,17 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->BinOp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.BinOp.left); + value = ast2obj_expr(state, vstate, o->v.BinOp.left); if (!value) goto failed; if (PyObject_SetAttr(result, state->left, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_operator(state, o->v.BinOp.op); + value = ast2obj_operator(state, vstate, o->v.BinOp.op); if (!value) goto failed; if (PyObject_SetAttr(result, state->op, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.BinOp.right); + value = ast2obj_expr(state, vstate, o->v.BinOp.right); if (!value) goto failed; if (PyObject_SetAttr(result, state->right, value) == -1) goto failed; @@ -4527,12 +4571,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->UnaryOp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_unaryop(state, o->v.UnaryOp.op); + value = ast2obj_unaryop(state, vstate, o->v.UnaryOp.op); if (!value) goto failed; if (PyObject_SetAttr(result, state->op, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.UnaryOp.operand); + value = ast2obj_expr(state, vstate, o->v.UnaryOp.operand); if (!value) goto failed; if (PyObject_SetAttr(result, state->operand, value) == -1) goto failed; @@ -4542,12 +4586,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Lambda_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_arguments(state, o->v.Lambda.args); + value = ast2obj_arguments(state, vstate, o->v.Lambda.args); if (!value) goto failed; if (PyObject_SetAttr(result, state->args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Lambda.body); + value = ast2obj_expr(state, vstate, o->v.Lambda.body); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; @@ -4557,17 +4601,17 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->IfExp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.IfExp.test); + value = ast2obj_expr(state, vstate, o->v.IfExp.test); if (!value) goto failed; if (PyObject_SetAttr(result, state->test, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.IfExp.body); + value = ast2obj_expr(state, vstate, o->v.IfExp.body); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.IfExp.orelse); + value = ast2obj_expr(state, vstate, o->v.IfExp.orelse); if (!value) goto failed; if (PyObject_SetAttr(result, state->orelse, value) == -1) goto failed; @@ -4577,12 +4621,14 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Dict_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Dict.keys, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Dict.keys, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->keys, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Dict.values, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Dict.values, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->values, value) == -1) goto failed; @@ -4592,7 +4638,8 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Set_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Set.elts, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Set.elts, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->elts, value) == -1) goto failed; @@ -4602,12 +4649,13 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->ListComp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.ListComp.elt); + value = ast2obj_expr(state, vstate, o->v.ListComp.elt); if (!value) goto failed; if (PyObject_SetAttr(result, state->elt, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ListComp.generators, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.ListComp.generators, ast2obj_comprehension); if (!value) goto failed; if (PyObject_SetAttr(result, state->generators, value) == -1) @@ -4618,12 +4666,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->SetComp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.SetComp.elt); + value = ast2obj_expr(state, vstate, o->v.SetComp.elt); if (!value) goto failed; if (PyObject_SetAttr(result, state->elt, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.SetComp.generators, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.SetComp.generators, ast2obj_comprehension); if (!value) goto failed; if (PyObject_SetAttr(result, state->generators, value) == -1) @@ -4634,17 +4682,18 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->DictComp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.DictComp.key); + value = ast2obj_expr(state, vstate, o->v.DictComp.key); if (!value) goto failed; if (PyObject_SetAttr(result, state->key, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.DictComp.value); + value = ast2obj_expr(state, vstate, o->v.DictComp.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.DictComp.generators, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.DictComp.generators, ast2obj_comprehension); if (!value) goto failed; if (PyObject_SetAttr(result, state->generators, value) == -1) @@ -4655,12 +4704,13 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->GeneratorExp_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.GeneratorExp.elt); + value = ast2obj_expr(state, vstate, o->v.GeneratorExp.elt); if (!value) goto failed; if (PyObject_SetAttr(result, state->elt, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.GeneratorExp.generators, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.GeneratorExp.generators, ast2obj_comprehension); if (!value) goto failed; if (PyObject_SetAttr(result, state->generators, value) == -1) @@ -4671,7 +4721,7 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Await_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Await.value); + value = ast2obj_expr(state, vstate, o->v.Await.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4681,7 +4731,7 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Yield_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Yield.value); + value = ast2obj_expr(state, vstate, o->v.Yield.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4691,7 +4741,7 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->YieldFrom_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.YieldFrom.value); + value = ast2obj_expr(state, vstate, o->v.YieldFrom.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -4701,7 +4751,7 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Compare_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Compare.left); + value = ast2obj_expr(state, vstate, o->v.Compare.left); if (!value) goto failed; if (PyObject_SetAttr(result, state->left, value) == -1) goto failed; @@ -4711,14 +4761,14 @@ ast2obj_expr(struct ast_state *state, void* _o) value = PyList_New(n); if (!value) goto failed; for(i = 0; i < n; i++) - PyList_SET_ITEM(value, i, ast2obj_cmpop(state, (cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i))); + PyList_SET_ITEM(value, i, ast2obj_cmpop(state, vstate, (cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i))); } if (!value) goto failed; if (PyObject_SetAttr(result, state->ops, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Compare.comparators, - ast2obj_expr); + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.Compare.comparators, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->comparators, value) == -1) goto failed; @@ -4728,17 +4778,18 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Call_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Call.func); + value = ast2obj_expr(state, vstate, o->v.Call.func); if (!value) goto failed; if (PyObject_SetAttr(result, state->func, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Call.args, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Call.args, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.Call.keywords, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Call.keywords, ast2obj_keyword); if (!value) goto failed; if (PyObject_SetAttr(result, state->keywords, value) == -1) @@ -4749,17 +4800,17 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->FormattedValue_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.FormattedValue.value); + value = ast2obj_expr(state, vstate, o->v.FormattedValue.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->v.FormattedValue.conversion); + value = ast2obj_int(state, vstate, o->v.FormattedValue.conversion); if (!value) goto failed; if (PyObject_SetAttr(result, state->conversion, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.FormattedValue.format_spec); + value = ast2obj_expr(state, vstate, o->v.FormattedValue.format_spec); if (!value) goto failed; if (PyObject_SetAttr(result, state->format_spec, value) == -1) goto failed; @@ -4769,7 +4820,7 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->JoinedStr_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.JoinedStr.values, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.JoinedStr.values, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->values, value) == -1) @@ -4780,12 +4831,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Constant_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_constant(state, o->v.Constant.value); + value = ast2obj_constant(state, vstate, o->v.Constant.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.Constant.kind); + value = ast2obj_string(state, vstate, o->v.Constant.kind); if (!value) goto failed; if (PyObject_SetAttr(result, state->kind, value) == -1) goto failed; @@ -4795,17 +4846,17 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Attribute_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Attribute.value); + value = ast2obj_expr(state, vstate, o->v.Attribute.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(state, o->v.Attribute.attr); + value = ast2obj_identifier(state, vstate, o->v.Attribute.attr); if (!value) goto failed; if (PyObject_SetAttr(result, state->attr, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.Attribute.ctx); + value = ast2obj_expr_context(state, vstate, o->v.Attribute.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4815,17 +4866,17 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Subscript_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Subscript.value); + value = ast2obj_expr(state, vstate, o->v.Subscript.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Subscript.slice); + value = ast2obj_expr(state, vstate, o->v.Subscript.slice); if (!value) goto failed; if (PyObject_SetAttr(result, state->slice, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.Subscript.ctx); + value = ast2obj_expr_context(state, vstate, o->v.Subscript.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4835,12 +4886,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Starred_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Starred.value); + value = ast2obj_expr(state, vstate, o->v.Starred.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.Starred.ctx); + value = ast2obj_expr_context(state, vstate, o->v.Starred.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4850,12 +4901,12 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Name_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.Name.id); + value = ast2obj_identifier(state, vstate, o->v.Name.id); if (!value) goto failed; if (PyObject_SetAttr(result, state->id, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.Name.ctx); + value = ast2obj_expr_context(state, vstate, o->v.Name.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4865,12 +4916,13 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->List_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.List.elts, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.List.elts, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->elts, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.List.ctx); + value = ast2obj_expr_context(state, vstate, o->v.List.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4880,12 +4932,13 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Tuple_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.Tuple.elts, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Tuple.elts, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->elts, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr_context(state, o->v.Tuple.ctx); + value = ast2obj_expr_context(state, vstate, o->v.Tuple.ctx); if (!value) goto failed; if (PyObject_SetAttr(result, state->ctx, value) == -1) goto failed; @@ -4895,52 +4948,54 @@ ast2obj_expr(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->Slice_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.Slice.lower); + value = ast2obj_expr(state, vstate, o->v.Slice.lower); if (!value) goto failed; if (PyObject_SetAttr(result, state->lower, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Slice.upper); + value = ast2obj_expr(state, vstate, o->v.Slice.upper); if (!value) goto failed; if (PyObject_SetAttr(result, state->upper, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.Slice.step); + value = ast2obj_expr(state, vstate, o->v.Slice.step); if (!value) goto failed; if (PyObject_SetAttr(result, state->step, value) == -1) goto failed; Py_DECREF(value); break; } - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } -PyObject* ast2obj_expr_context(struct ast_state *state, expr_context_ty o) +PyObject* ast2obj_expr_context(struct ast_state *state, struct validator + *vstate, expr_context_ty o) { switch(o) { case Load: @@ -4952,7 +5007,8 @@ PyObject* ast2obj_expr_context(struct ast_state *state, expr_context_ty o) } Py_UNREACHABLE(); } -PyObject* ast2obj_boolop(struct ast_state *state, boolop_ty o) +PyObject* ast2obj_boolop(struct ast_state *state, struct validator *vstate, + boolop_ty o) { switch(o) { case And: @@ -4962,7 +5018,8 @@ PyObject* ast2obj_boolop(struct ast_state *state, boolop_ty o) } Py_UNREACHABLE(); } -PyObject* ast2obj_operator(struct ast_state *state, operator_ty o) +PyObject* ast2obj_operator(struct ast_state *state, struct validator *vstate, + operator_ty o) { switch(o) { case Add: @@ -4994,7 +5051,8 @@ PyObject* ast2obj_operator(struct ast_state *state, operator_ty o) } Py_UNREACHABLE(); } -PyObject* ast2obj_unaryop(struct ast_state *state, unaryop_ty o) +PyObject* ast2obj_unaryop(struct ast_state *state, struct validator *vstate, + unaryop_ty o) { switch(o) { case Invert: @@ -5008,7 +5066,8 @@ PyObject* ast2obj_unaryop(struct ast_state *state, unaryop_ty o) } Py_UNREACHABLE(); } -PyObject* ast2obj_cmpop(struct ast_state *state, cmpop_ty o) +PyObject* ast2obj_cmpop(struct ast_state *state, struct validator *vstate, + cmpop_ty o) { switch(o) { case Eq: @@ -5035,7 +5094,8 @@ PyObject* ast2obj_cmpop(struct ast_state *state, cmpop_ty o) Py_UNREACHABLE(); } PyObject* -ast2obj_comprehension(struct ast_state *state, void* _o) +ast2obj_comprehension(struct ast_state *state, struct validator *vstate, void* + _o) { comprehension_ty o = (comprehension_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5043,7 +5103,7 @@ ast2obj_comprehension(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5051,36 +5111,38 @@ ast2obj_comprehension(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->comprehension_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_expr(state, o->target); + value = ast2obj_expr(state, vstate, o->target); if (!value) goto failed; if (PyObject_SetAttr(result, state->target, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->iter); + value = ast2obj_expr(state, vstate, o->iter); if (!value) goto failed; if (PyObject_SetAttr(result, state->iter, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->ifs, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->ifs, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->ifs, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->is_async); + value = ast2obj_int(state, vstate, o->is_async); if (!value) goto failed; if (PyObject_SetAttr(result, state->is_async, value) == -1) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_excepthandler(struct ast_state *state, void* _o) +ast2obj_excepthandler(struct ast_state *state, struct validator *vstate, void* + _o) { excepthandler_ty o = (excepthandler_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5088,7 +5150,7 @@ ast2obj_excepthandler(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5098,17 +5160,17 @@ ast2obj_excepthandler(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->ExceptHandler_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.ExceptHandler.type); + value = ast2obj_expr(state, vstate, o->v.ExceptHandler.type); if (!value) goto failed; if (PyObject_SetAttr(result, state->type, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(state, o->v.ExceptHandler.name); + value = ast2obj_identifier(state, vstate, o->v.ExceptHandler.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.ExceptHandler.body, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ExceptHandler.body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) @@ -5116,36 +5178,37 @@ ast2obj_excepthandler(struct ast_state *state, void* _o) Py_DECREF(value); break; } - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_arguments(struct ast_state *state, void* _o) +ast2obj_arguments(struct ast_state *state, struct validator *vstate, void* _o) { arguments_ty o = (arguments_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5153,7 +5216,7 @@ ast2obj_arguments(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5161,51 +5224,53 @@ ast2obj_arguments(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->arguments_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_list(state, (asdl_seq*)o->posonlyargs, ast2obj_arg); + value = ast2obj_list(state, vstate, (asdl_seq*)o->posonlyargs, ast2obj_arg); if (!value) goto failed; if (PyObject_SetAttr(result, state->posonlyargs, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->args, ast2obj_arg); + value = ast2obj_list(state, vstate, (asdl_seq*)o->args, ast2obj_arg); if (!value) goto failed; if (PyObject_SetAttr(result, state->args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_arg(state, o->vararg); + value = ast2obj_arg(state, vstate, o->vararg); if (!value) goto failed; if (PyObject_SetAttr(result, state->vararg, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->kwonlyargs, ast2obj_arg); + value = ast2obj_list(state, vstate, (asdl_seq*)o->kwonlyargs, ast2obj_arg); if (!value) goto failed; if (PyObject_SetAttr(result, state->kwonlyargs, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->kw_defaults, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->kw_defaults, + ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->kw_defaults, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_arg(state, o->kwarg); + value = ast2obj_arg(state, vstate, o->kwarg); if (!value) goto failed; if (PyObject_SetAttr(result, state->kwarg, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->defaults, ast2obj_expr); + value = ast2obj_list(state, vstate, (asdl_seq*)o->defaults, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->defaults, value) == -1) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_arg(struct ast_state *state, void* _o) +ast2obj_arg(struct ast_state *state, struct validator *vstate, void* _o) { arg_ty o = (arg_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5213,7 +5278,7 @@ ast2obj_arg(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5221,51 +5286,52 @@ ast2obj_arg(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->arg_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_identifier(state, o->arg); + value = ast2obj_identifier(state, vstate, o->arg); if (!value) goto failed; if (PyObject_SetAttr(result, state->arg, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->annotation); + value = ast2obj_expr(state, vstate, o->annotation); if (!value) goto failed; if (PyObject_SetAttr(result, state->annotation, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->type_comment); + value = ast2obj_string(state, vstate, o->type_comment); if (!value) goto failed; if (PyObject_SetAttr(result, state->type_comment, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_keyword(struct ast_state *state, void* _o) +ast2obj_keyword(struct ast_state *state, struct validator *vstate, void* _o) { keyword_ty o = (keyword_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5273,7 +5339,7 @@ ast2obj_keyword(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5281,46 +5347,47 @@ ast2obj_keyword(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->keyword_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_identifier(state, o->arg); + value = ast2obj_identifier(state, vstate, o->arg); if (!value) goto failed; if (PyObject_SetAttr(result, state->arg, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->value); + value = ast2obj_expr(state, vstate, o->value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_alias(struct ast_state *state, void* _o) +ast2obj_alias(struct ast_state *state, struct validator *vstate, void* _o) { alias_ty o = (alias_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5328,7 +5395,7 @@ ast2obj_alias(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5336,46 +5403,47 @@ ast2obj_alias(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->alias_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_identifier(state, o->name); + value = ast2obj_identifier(state, vstate, o->name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(state, o->asname); + value = ast2obj_identifier(state, vstate, o->asname); if (!value) goto failed; if (PyObject_SetAttr(result, state->asname, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_withitem(struct ast_state *state, void* _o) +ast2obj_withitem(struct ast_state *state, struct validator *vstate, void* _o) { withitem_ty o = (withitem_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5383,7 +5451,7 @@ ast2obj_withitem(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5391,26 +5459,27 @@ ast2obj_withitem(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->withitem_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_expr(state, o->context_expr); + value = ast2obj_expr(state, vstate, o->context_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->context_expr, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->optional_vars); + value = ast2obj_expr(state, vstate, o->optional_vars); if (!value) goto failed; if (PyObject_SetAttr(result, state->optional_vars, value) == -1) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_match_case(struct ast_state *state, void* _o) +ast2obj_match_case(struct ast_state *state, struct validator *vstate, void* _o) { match_case_ty o = (match_case_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5418,7 +5487,7 @@ ast2obj_match_case(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5426,31 +5495,32 @@ ast2obj_match_case(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->match_case_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; - value = ast2obj_pattern(state, o->pattern); + value = ast2obj_pattern(state, vstate, o->pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->pattern, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->guard); + value = ast2obj_expr(state, vstate, o->guard); if (!value) goto failed; if (PyObject_SetAttr(result, state->guard, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->body, ast2obj_stmt); + value = ast2obj_list(state, vstate, (asdl_seq*)o->body, ast2obj_stmt); if (!value) goto failed; if (PyObject_SetAttr(result, state->body, value) == -1) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_pattern(struct ast_state *state, void* _o) +ast2obj_pattern(struct ast_state *state, struct validator *vstate, void* _o) { pattern_ty o = (pattern_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5458,7 +5528,7 @@ ast2obj_pattern(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5468,7 +5538,7 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchValue_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.MatchValue.value); + value = ast2obj_expr(state, vstate, o->v.MatchValue.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -5478,7 +5548,7 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchSingleton_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_constant(state, o->v.MatchSingleton.value); + value = ast2obj_constant(state, vstate, o->v.MatchSingleton.value); if (!value) goto failed; if (PyObject_SetAttr(result, state->value, value) == -1) goto failed; @@ -5488,7 +5558,8 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchSequence_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.MatchSequence.patterns, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.MatchSequence.patterns, ast2obj_pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->patterns, value) == -1) @@ -5499,19 +5570,20 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchMapping_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.MatchMapping.keys, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.MatchMapping.keys, ast2obj_expr); if (!value) goto failed; if (PyObject_SetAttr(result, state->keys, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.MatchMapping.patterns, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.MatchMapping.patterns, ast2obj_pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->patterns, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(state, o->v.MatchMapping.rest); + value = ast2obj_identifier(state, vstate, o->v.MatchMapping.rest); if (!value) goto failed; if (PyObject_SetAttr(result, state->rest, value) == -1) goto failed; @@ -5521,24 +5593,27 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchClass_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_expr(state, o->v.MatchClass.cls); + value = ast2obj_expr(state, vstate, o->v.MatchClass.cls); if (!value) goto failed; if (PyObject_SetAttr(result, state->cls, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.MatchClass.patterns, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.MatchClass.patterns, ast2obj_pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->patterns, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.MatchClass.kwd_attrs, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.MatchClass.kwd_attrs, ast2obj_identifier); if (!value) goto failed; if (PyObject_SetAttr(result, state->kwd_attrs, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(state, (asdl_seq*)o->v.MatchClass.kwd_patterns, + value = ast2obj_list(state, vstate, + (asdl_seq*)o->v.MatchClass.kwd_patterns, ast2obj_pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->kwd_patterns, value) == -1) @@ -5549,7 +5624,7 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchStar_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.MatchStar.name); + value = ast2obj_identifier(state, vstate, o->v.MatchStar.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; @@ -5559,12 +5634,12 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchAs_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_pattern(state, o->v.MatchAs.pattern); + value = ast2obj_pattern(state, vstate, o->v.MatchAs.pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->pattern, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(state, o->v.MatchAs.name); + value = ast2obj_identifier(state, vstate, o->v.MatchAs.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; @@ -5574,7 +5649,7 @@ ast2obj_pattern(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->MatchOr_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_list(state, (asdl_seq*)o->v.MatchOr.patterns, + value = ast2obj_list(state, vstate, (asdl_seq*)o->v.MatchOr.patterns, ast2obj_pattern); if (!value) goto failed; if (PyObject_SetAttr(result, state->patterns, value) == -1) @@ -5582,36 +5657,37 @@ ast2obj_pattern(struct ast_state *state, void* _o) Py_DECREF(value); break; } - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_type_ignore(struct ast_state *state, void* _o) +ast2obj_type_ignore(struct ast_state *state, struct validator *vstate, void* _o) { type_ignore_ty o = (type_ignore_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5619,7 +5695,7 @@ ast2obj_type_ignore(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5629,28 +5705,29 @@ ast2obj_type_ignore(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->TypeIgnore_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_int(state, o->v.TypeIgnore.lineno); + value = ast2obj_int(state, vstate, o->v.TypeIgnore.lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_string(state, o->v.TypeIgnore.tag); + value = ast2obj_string(state, vstate, o->v.TypeIgnore.tag); if (!value) goto failed; if (PyObject_SetAttr(result, state->tag, value) == -1) goto failed; Py_DECREF(value); break; } - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; } PyObject* -ast2obj_type_param(struct ast_state *state, void* _o) +ast2obj_type_param(struct ast_state *state, struct validator *vstate, void* _o) { type_param_ty o = (type_param_ty)_o; PyObject *result = NULL, *value = NULL; @@ -5658,7 +5735,7 @@ ast2obj_type_param(struct ast_state *state, void* _o) if (!o) { Py_RETURN_NONE; } - if (++state->recursion_depth > state->recursion_limit) { + if (++vstate->recursion_depth > vstate->recursion_limit) { PyErr_SetString(PyExc_RecursionError, "maximum recursion depth exceeded during ast construction"); return 0; @@ -5668,12 +5745,12 @@ ast2obj_type_param(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->TypeVar_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.TypeVar.name); + value = ast2obj_identifier(state, vstate, o->v.TypeVar.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(state, o->v.TypeVar.bound); + value = ast2obj_expr(state, vstate, o->v.TypeVar.bound); if (!value) goto failed; if (PyObject_SetAttr(result, state->bound, value) == -1) goto failed; @@ -5683,7 +5760,7 @@ ast2obj_type_param(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->ParamSpec_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.ParamSpec.name); + value = ast2obj_identifier(state, vstate, o->v.ParamSpec.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; @@ -5693,36 +5770,37 @@ ast2obj_type_param(struct ast_state *state, void* _o) tp = (PyTypeObject *)state->TypeVarTuple_type; result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; - value = ast2obj_identifier(state, o->v.TypeVarTuple.name); + value = ast2obj_identifier(state, vstate, o->v.TypeVarTuple.name); if (!value) goto failed; if (PyObject_SetAttr(result, state->name, value) == -1) goto failed; Py_DECREF(value); break; } - value = ast2obj_int(state, o->lineno); + value = ast2obj_int(state, vstate, o->lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->col_offset); + value = ast2obj_int(state, vstate, o->col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->col_offset, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_lineno); + value = ast2obj_int(state, vstate, o->end_lineno); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_lineno, value) < 0) goto failed; Py_DECREF(value); - value = ast2obj_int(state, o->end_col_offset); + value = ast2obj_int(state, vstate, o->end_col_offset); if (!value) goto failed; if (PyObject_SetAttr(result, state->end_col_offset, value) < 0) goto failed; Py_DECREF(value); - state->recursion_depth--; + vstate->recursion_depth--; return result; failed: + vstate->recursion_depth--; Py_XDECREF(value); Py_XDECREF(result); return NULL; @@ -13077,21 +13155,22 @@ PyObject* PyAST_mod2obj(mod_ty t) int COMPILER_STACK_FRAME_SCALE = 2; PyThreadState *tstate = _PyThreadState_GET(); if (!tstate) { - return 0; + return NULL; } - state->recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE; + struct validator vstate; + vstate.recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE; int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining; starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE; - state->recursion_depth = starting_recursion_depth; + vstate.recursion_depth = starting_recursion_depth; - PyObject *result = ast2obj_mod(state, t); + PyObject *result = ast2obj_mod(state, &vstate, t); /* Check that the recursion depth counting balanced correctly */ - if (result && state->recursion_depth != starting_recursion_depth) { + if (result && vstate.recursion_depth != starting_recursion_depth) { PyErr_Format(PyExc_SystemError, "AST constructor recursion depth mismatch (before=%d, after=%d)", - starting_recursion_depth, state->recursion_depth); - return 0; + starting_recursion_depth, vstate.recursion_depth); + return NULL; } return result; } diff --git a/Python/Python-tokenize.c b/Python/Python-tokenize.c index 19385627069..179f71aa1f5 100644 --- a/Python/Python-tokenize.c +++ b/Python/Python-tokenize.c @@ -224,7 +224,7 @@ tokenizeriter_next(tokenizeriterobject *it) col_offset = _PyPegen_byte_offset_to_character_offset(line, token.start - line_start); } if (token.end != NULL && token.end >= it->tok->line_start) { - end_col_offset = _PyPegen_byte_offset_to_character_offset(line, token.end - it->tok->line_start); + end_col_offset = _PyPegen_byte_offset_to_character_offset_raw(it->tok->line_start, token.end - it->tok->line_start); } if (it->tok->tok_extra_tokens) { diff --git a/Python/ceval.c b/Python/ceval.c index f3130b989d3..28bb22e154c 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2305,11 +2305,8 @@ PyObject * _PyEval_GetBuiltin(PyObject *name) { PyThreadState *tstate = _PyThreadState_GET(); - PyObject *attr = PyDict_GetItemWithError(PyEval_GetBuiltins(), name); - if (attr) { - Py_INCREF(attr); - } - else if (!_PyErr_Occurred(tstate)) { + PyObject *attr = PyObject_GetItem(PyEval_GetBuiltins(), name); + if (attr == NULL && _PyErr_ExceptionMatches(tstate, PyExc_KeyError)) { _PyErr_SetObject(tstate, PyExc_AttributeError, name); } return attr; diff --git a/Python/flowgraph.c b/Python/flowgraph.c index b53e771bb7b..fbbe053ae58 100644 --- a/Python/flowgraph.c +++ b/Python/flowgraph.c @@ -645,6 +645,7 @@ push_except_block(ExceptStack *stack, cfg_instr *setup) { if (opcode == SETUP_WITH || opcode == SETUP_CLEANUP) { target->b_preserve_lasti = 1; } + assert(stack->depth <= CO_MAXBLOCKS); stack->handlers[++stack->depth] = target; return target; } diff --git a/Python/import.c b/Python/import.c index 6caccb13142..6c186d5f391 100644 --- a/Python/import.c +++ b/Python/import.c @@ -2995,15 +2995,16 @@ _PyImport_ImportName(PyThreadState *tstate, PyObject *builtins, PyObject *global PyObject *import_func, *res; PyObject* stack[5]; - import_func = _PyDict_GetItemWithError(builtins, &_Py_ID(__import__)); + import_func = PyObject_GetItem(builtins, &_Py_ID(__import__)); if (import_func == NULL) { - if (!_PyErr_Occurred(tstate)) { + if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) { _PyErr_SetString(tstate, PyExc_ImportError, "__import__ not found"); } return NULL; } /* Fast path for not overloaded __import__. */ if (_PyImport_IsDefaultImportFunc(tstate->interp, import_func)) { + Py_DECREF(import_func); int ilevel = _PyLong_AsInt(level); if (ilevel == -1 && _PyErr_Occurred(tstate)) { return NULL; @@ -3016,8 +3017,6 @@ _PyImport_ImportName(PyThreadState *tstate, PyObject *builtins, PyObject *global return res; } - Py_INCREF(import_func); - stack[0] = name; stack[1] = globals; stack[2] = locals == NULL ? Py_None : locals; @@ -4106,7 +4105,7 @@ _imp_get_frozen_object_impl(PyObject *module, PyObject *name, struct frozen_info info = {0}; Py_buffer buf = {0}; if (PyObject_CheckBuffer(dataobj)) { - if (PyObject_GetBuffer(dataobj, &buf, PyBUF_READ) != 0) { + if (PyObject_GetBuffer(dataobj, &buf, PyBUF_SIMPLE) != 0) { return NULL; } info.data = (const char *)buf.buf; diff --git a/Python/perf_trampoline.c b/Python/perf_trampoline.c index a91f4f82877..ea9dc83dd0f 100644 --- a/Python/perf_trampoline.c +++ b/Python/perf_trampoline.c @@ -247,7 +247,7 @@ new_code_arena(void) mem_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, // fd (not used here) 0); // offset (not used here) - if (!memory) { + if (memory == MAP_FAILED) { PyErr_SetFromErrno(PyExc_OSError); _PyErr_WriteUnraisableMsg( "Failed to create new mmap for perf trampoline", NULL); diff --git a/Python/pythonrun.c b/Python/pythonrun.c index f4c5d39c59b..5f3d249df45 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1164,6 +1164,37 @@ print_exception_notes(struct exception_print_context *ctx, PyObject *notes) return -1; } +static int +get_exception_notes(struct exception_print_context *ctx, PyObject *value, PyObject **notes) { + PyObject *note = NULL; + + if (_PyObject_LookupAttr(value, &_Py_ID(__notes__), notes) < 0) { + PyObject *type, *errvalue, *tback; + PyErr_Fetch(&type, &errvalue, &tback); + PyErr_NormalizeException(&type, &errvalue, &tback); + note = PyUnicode_FromFormat("Ignored error getting __notes__: %R", errvalue); + Py_XDECREF(type); + Py_XDECREF(errvalue); + Py_XDECREF(tback); + if (!note) { + goto error; + } + *notes = PyList_New(1); + if (!*notes) { + goto error; + } + if (PyList_SetItem(*notes, 0, note) < 0) { + Py_DECREF(*notes); + goto error; + } + } + + return 0; +error: + Py_XDECREF(note); + return -1; +} + static int print_exception(struct exception_print_context *ctx, PyObject *value) { @@ -1183,7 +1214,7 @@ print_exception(struct exception_print_context *ctx, PyObject *value) /* grab the type and notes now because value can change below */ PyObject *type = (PyObject *) Py_TYPE(value); - if (_PyObject_LookupAttr(value, &_Py_ID(__notes__), ¬es) < 0) { + if (get_exception_notes(ctx, value, ¬es) < 0) { goto error; } diff --git a/Python/specialize.c b/Python/specialize.c index 63b44461007..2c0d99b04ed 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -464,6 +464,7 @@ _PyCode_Quicken(PyCodeObject *code) static int function_kind(PyCodeObject *code); static bool function_check_args(PyObject *o, int expected_argcount, int opcode); static uint32_t function_get_version(PyObject *o, int opcode); +static uint32_t type_get_version(PyTypeObject *t, int opcode); static int specialize_module_load_attr( @@ -746,6 +747,9 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name) PyObject *descr = NULL; DescriptorClassification kind = analyze_descriptor(type, name, &descr, 0); assert(descr != NULL || kind == ABSENT || kind == GETSET_OVERRIDDEN); + if (type_get_version(type, LOAD_ATTR) == 0) { + goto fail; + } switch(kind) { case OVERRIDING: SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR); @@ -917,6 +921,9 @@ _Py_Specialize_StoreAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name) } PyObject *descr; DescriptorClassification kind = analyze_descriptor(type, name, &descr, 1); + if (type_get_version(type, STORE_ATTR) == 0) { + goto fail; + } switch(kind) { case OVERRIDING: SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR); @@ -1043,6 +1050,9 @@ specialize_class_load_attr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *descr = NULL; DescriptorClassification kind = 0; kind = analyze_descriptor((PyTypeObject *)owner, name, &descr, 0); + if (type_get_version((PyTypeObject *)owner, LOAD_ATTR) == 0) { + return -1; + } switch (kind) { case METHOD: case NON_DESCRIPTOR: @@ -1317,6 +1327,18 @@ function_get_version(PyObject *o, int opcode) return version; } +/* Returning 0 indicates a failure. */ +static uint32_t +type_get_version(PyTypeObject *t, int opcode) +{ + uint32_t version = t->tp_version_tag; + if (version == 0) { + SPECIALIZATION_FAIL(opcode, SPEC_FAIL_OUT_OF_VERSIONS); + return 0; + } + return version; +} + void _Py_Specialize_BinarySubscr( PyObject *container, PyObject *sub, _Py_CODEUNIT *instr) diff --git a/Python/structmember.c b/Python/structmember.c index 19a75224a0f..ebebaa0a034 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -197,45 +197,74 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) WARN("Truncation of value to int"); break; } - case T_UINT:{ - unsigned long ulong_val = PyLong_AsUnsignedLong(v); - if ((ulong_val == (unsigned long)-1) && PyErr_Occurred()) { - /* XXX: For compatibility, accept negative int values - as well. */ - PyErr_Clear(); - ulong_val = PyLong_AsLong(v); - if ((ulong_val == (unsigned long)-1) && - PyErr_Occurred()) + case T_UINT: { + /* XXX: For compatibility, accept negative int values + as well. */ + int overflow; + long long_val = PyLong_AsLongAndOverflow(v, &overflow); + if (long_val == -1 && PyErr_Occurred()) { + return -1; + } + if (overflow < 0) { + PyErr_SetString(PyExc_OverflowError, + "Python int too large to convert to C long"); + return -1; + } + else if (!overflow) { + *(unsigned int *)addr = (unsigned int)(unsigned long)long_val; + if (long_val < 0) { + WARN("Writing negative value into unsigned field"); + } + else if ((unsigned long)long_val > UINT_MAX) { + WARN("Truncation of value to unsigned short"); + } + } + else { + unsigned long ulong_val = PyLong_AsUnsignedLong(v); + if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) { return -1; - *(unsigned int *)addr = (unsigned int)ulong_val; - WARN("Writing negative value into unsigned field"); - } else - *(unsigned int *)addr = (unsigned int)ulong_val; - if (ulong_val > UINT_MAX) - WARN("Truncation of value to unsigned int"); - break; + } + *(unsigned int*)addr = (unsigned int)ulong_val; + if (ulong_val > UINT_MAX) { + WARN("Truncation of value to unsigned int"); + } } + break; + } case T_LONG:{ *(long*)addr = PyLong_AsLong(v); if ((*(long*)addr == -1) && PyErr_Occurred()) return -1; break; } - case T_ULONG:{ - *(unsigned long*)addr = PyLong_AsUnsignedLong(v); - if ((*(unsigned long*)addr == (unsigned long)-1) - && PyErr_Occurred()) { - /* XXX: For compatibility, accept negative int values - as well. */ - PyErr_Clear(); - *(unsigned long*)addr = PyLong_AsLong(v); - if ((*(unsigned long*)addr == (unsigned long)-1) - && PyErr_Occurred()) + case T_ULONG: { + /* XXX: For compatibility, accept negative int values + as well. */ + int overflow; + long long_val = PyLong_AsLongAndOverflow(v, &overflow); + if (long_val == -1 && PyErr_Occurred()) { + return -1; + } + if (overflow < 0) { + PyErr_SetString(PyExc_OverflowError, + "Python int too large to convert to C long"); + return -1; + } + else if (!overflow) { + *(unsigned long *)addr = (unsigned long)long_val; + if (long_val < 0) { + WARN("Writing negative value into unsigned field"); + } + } + else { + unsigned long ulong_val = PyLong_AsUnsignedLong(v); + if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) { return -1; - WARN("Writing negative value into unsigned field"); + } + *(unsigned long*)addr = ulong_val; } break; - } + } case T_PYSSIZET:{ *(Py_ssize_t*)addr = PyLong_AsSsize_t(v); if ((*(Py_ssize_t*)addr == (Py_ssize_t)-1) diff --git a/Python/symtable.c b/Python/symtable.c index 70b6eacd4ac..a5c6b465b71 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -872,6 +872,12 @@ update_symbols(PyObject *symbols, PyObject *scopes, } Py_DECREF(name); } + + /* Check if loop ended because of exception in PyIter_Next */ + if (PyErr_Occurred()) { + goto error; + } + Py_DECREF(itr); Py_DECREF(v_free); return 1; diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 00b9f896daf..046269b4378 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1361,7 +1361,7 @@ sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw) } PyDoc_STRVAR(set_asyncgen_hooks_doc, -"set_asyncgen_hooks(* [, firstiter] [, finalizer])\n\ +"set_asyncgen_hooks([firstiter] [, finalizer])\n\ \n\ Set a finalizer for async generators objects." ); diff --git a/README.rst b/README.rst index d720096f35d..a5321cf3e20 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.12.1 +This is Python version 3.12.2 ============================= .. image:: https://github.com/python/cpython/workflows/Tests/badge.svg @@ -14,7 +14,7 @@ This is Python version 3.12.1 :target: https://discuss.python.org/ -Copyright © 2001-2023 Python Software Foundation. All rights reserved. +Copyright © 2001-2024 Python Software Foundation. All rights reserved. See the end of this file for further copyright and license information. @@ -221,7 +221,7 @@ Copyright and License Information --------------------------------- -Copyright © 2001-2023 Python Software Foundation. All rights reserved. +Copyright © 2001-2024 Python Software Foundation. All rights reserved. Copyright © 2000 BeOpen.com. All rights reserved. diff --git a/Tools/build/generate_sbom.py b/Tools/build/generate_sbom.py new file mode 100644 index 00000000000..442487f2d25 --- /dev/null +++ b/Tools/build/generate_sbom.py @@ -0,0 +1,476 @@ +"""Tool for generating Software Bill of Materials (SBOM) for Python's dependencies""" +import os +import re +import hashlib +import json +import glob +import pathlib +import subprocess +import sys +import typing +import zipfile +from urllib.request import urlopen + +CPYTHON_ROOT_DIR = pathlib.Path(__file__).parent.parent.parent + +# Before adding a new entry to this list, double check that +# the license expression is a valid SPDX license expression: +# See: https://spdx.org/licenses +ALLOWED_LICENSE_EXPRESSIONS = { + "Apache-2.0", + "Apache-2.0 OR BSD-2-Clause", + "BSD-2-Clause", + "BSD-3-Clause", + "CC0-1.0", + "ISC", + "LGPL-2.1-only", + "MIT", + "MPL-2.0", + "Python-2.0.1", +} + +# Properties which are required for our purposes. +REQUIRED_PROPERTIES_PACKAGE = frozenset([ + "SPDXID", + "name", + "versionInfo", + "downloadLocation", + "checksums", + "licenseConcluded", + "externalRefs", + "primaryPackagePurpose", +]) + + +class PackageFiles(typing.NamedTuple): + """Structure for describing the files of a package""" + include: list[str] | None + exclude: list[str] | None = None + + +# SBOMS don't have a method to specify the sources of files +# so we need to do that external to the SBOM itself. Add new +# values to 'exclude' if we create new files within tracked +# directories that aren't sourced from third-party packages. +PACKAGE_TO_FILES = { + # NOTE: pip's entry in this structure is automatically generated in + # the 'discover_pip_sbom_package()' function below. + "mpdecimal": PackageFiles( + include=["Modules/_decimal/libmpdec/**"] + ), + "expat": PackageFiles( + include=["Modules/expat/**"] + ), + "macholib": PackageFiles( + include=["Lib/ctypes/macholib/**"], + exclude=[ + "Lib/ctypes/macholib/README.ctypes", + "Lib/ctypes/macholib/fetch_macholib", + "Lib/ctypes/macholib/fetch_macholib.bat", + ], + ), + "libb2": PackageFiles( + include=["Modules/_blake2/impl/**"] + ), + "hacl-star": PackageFiles( + include=["Modules/_hacl/**"], + exclude=[ + "Modules/_hacl/refresh.sh", + "Modules/_hacl/README.md", + "Modules/_hacl/python_hacl_namespace.h", + ] + ), +} + + +def spdx_id(value: str) -> str: + """Encode a value into characters that are valid in an SPDX ID""" + return re.sub(r"[^a-zA-Z0-9.\-]+", "-", value) + + +def error_if(value: bool, error_message: str) -> None: + """Prints an error if a comparison fails along with a link to the devguide""" + if value: + print(error_message) + print("See 'https://devguide.python.org/developer-workflow/sbom' for more information.") + sys.exit(1) + + +def filter_gitignored_paths(paths: list[str]) -> list[str]: + """ + Filter out paths excluded by the gitignore file. + The output of 'git check-ignore --non-matching --verbose' looks + like this for non-matching (included) files: + + '::' + + And looks like this for matching (excluded) files: + + '.gitignore:9:*.a Tools/lib.a' + """ + # Filter out files in gitignore. + # Non-matching files show up as '::' + git_check_ignore_proc = subprocess.run( + ["git", "check-ignore", "--verbose", "--non-matching", *paths], + cwd=CPYTHON_ROOT_DIR, + check=False, + stdout=subprocess.PIPE, + ) + # 1 means matches, 0 means no matches. + assert git_check_ignore_proc.returncode in (0, 1) + + # Return the list of paths sorted + git_check_ignore_lines = git_check_ignore_proc.stdout.decode().splitlines() + return sorted([line.split()[-1] for line in git_check_ignore_lines if line.startswith("::")]) + + +def fetch_package_metadata_from_pypi(project: str, version: str, filename: str | None = None) -> tuple[str, str] | None: + """ + Fetches the SHA256 checksum and download location from PyPI. + If we're given a filename then we match with that, otherwise we use wheels. + """ + # Get pip's download location from PyPI. Check that the checksum is correct too. + try: + raw_text = urlopen(f"https://pypi.org/pypi/{project}/{version}/json").read() + release_metadata = json.loads(raw_text) + url: dict[str, typing.Any] + + # Look for a matching artifact filename and then check + # its remote checksum to the local one. + for url in release_metadata["urls"]: + # pip can only use Python-only dependencies, so there's + # no risk of picking the 'incorrect' wheel here. + if ( + (filename is None and url["packagetype"] == "bdist_wheel") + or (filename is not None and url["filename"] == filename) + ): + break + else: + raise ValueError(f"No matching filename on PyPI for '{filename}'") + + # Successfully found the download URL for the matching artifact. + download_url = url["url"] + checksum_sha256 = url["digests"]["sha256"] + return download_url, checksum_sha256 + + except (OSError, ValueError) as e: + # Fail if we're running in CI where we should have an internet connection. + error_if( + "CI" in os.environ, + f"Couldn't fetch metadata for project '{project}' from PyPI: {e}" + ) + return None + + +def find_ensurepip_pip_wheel() -> pathlib.Path | None: + """Try to find the pip wheel bundled in ensurepip. If missing return None""" + + ensurepip_bundled_dir = CPYTHON_ROOT_DIR / "Lib/ensurepip/_bundled" + + pip_wheels = [] + try: + for wheel_filename in os.listdir(ensurepip_bundled_dir): + if wheel_filename.startswith("pip-"): + pip_wheels.append(wheel_filename) + else: + print(f"Unexpected wheel in ensurepip: '{wheel_filename}'") + sys.exit(1) + + # Ignore this error, likely caused by downstream distributors + # deleting the 'ensurepip/_bundled' directory. + except FileNotFoundError: + pass + + if len(pip_wheels) == 0: + return None + elif len(pip_wheels) > 1: + print("Multiple pip wheels detected in 'Lib/ensurepip/_bundled'") + sys.exit(1) + # Otherwise return the one pip wheel. + return ensurepip_bundled_dir / pip_wheels[0] + + +def maybe_remove_pip_and_deps_from_sbom(sbom_data: dict[str, typing.Any]) -> None: + """ + Removes pip and its dependencies from the SBOM data + if the pip wheel is removed from ensurepip. This is done + by redistributors of Python and pip. + """ + + # If there's a wheel we don't remove anything. + if find_ensurepip_pip_wheel() is not None: + return + + # Otherwise we traverse the relationships + # to find dependent packages to remove. + sbom_pip_spdx_id = spdx_id("SPDXRef-PACKAGE-pip") + sbom_spdx_ids_to_remove = {sbom_pip_spdx_id} + + # Find all package SPDXIDs that pip depends on. + for sbom_relationship in sbom_data["relationships"]: + if ( + sbom_relationship["relationshipType"] == "DEPENDS_ON" + and sbom_relationship["spdxElementId"] == sbom_pip_spdx_id + ): + sbom_spdx_ids_to_remove.add(sbom_relationship["relatedSpdxElement"]) + + # Remove all the packages and relationships. + sbom_data["packages"] = [ + sbom_package for sbom_package in sbom_data["packages"] + if sbom_package["SPDXID"] not in sbom_spdx_ids_to_remove + ] + sbom_data["relationships"] = [ + sbom_relationship for sbom_relationship in sbom_data["relationships"] + if sbom_relationship["relatedSpdxElement"] not in sbom_spdx_ids_to_remove + ] + + +def discover_pip_sbom_package(sbom_data: dict[str, typing.Any]) -> None: + """pip is a part of a packaging ecosystem (Python, surprise!) so it's actually + automatable to discover the metadata we need like the version and checksums + so let's do that on behalf of our friends at the PyPA. This function also + discovers vendored packages within pip and fetches their metadata. + """ + global PACKAGE_TO_FILES + + pip_wheel_filepath = find_ensurepip_pip_wheel() + if pip_wheel_filepath is None: + return # There's no pip wheel, nothing to discover. + + # Add the wheel filename to the list of files so the SBOM file + # and relationship generator can work its magic on the wheel too. + PACKAGE_TO_FILES["pip"] = PackageFiles( + include=[str(pip_wheel_filepath.relative_to(CPYTHON_ROOT_DIR))] + ) + + # Wheel filename format puts the version right after the project name. + pip_version = pip_wheel_filepath.name.split("-")[1] + pip_checksum_sha256 = hashlib.sha256( + pip_wheel_filepath.read_bytes() + ).hexdigest() + + pip_metadata = fetch_package_metadata_from_pypi( + project="pip", + version=pip_version, + filename=pip_wheel_filepath.name, + ) + # We couldn't fetch any metadata from PyPI, + # so we give up on verifying if we're not in CI. + if pip_metadata is None: + return + + pip_download_url, pip_actual_sha256 = pip_metadata + if pip_actual_sha256 != pip_checksum_sha256: + raise ValueError("Unexpected") + + # Parse 'pip/_vendor/vendor.txt' from the wheel for sub-dependencies. + with zipfile.ZipFile(pip_wheel_filepath) as whl: + vendor_txt_data = whl.read("pip/_vendor/vendor.txt").decode() + + # With this version regex we're assuming that pip isn't using pre-releases. + # If any version doesn't match we get a failure below, so we're safe doing this. + version_pin_re = re.compile(r"^([a-zA-Z0-9_.-]+)==([0-9.]*[0-9])$") + sbom_pip_dependency_spdx_ids = set() + for line in vendor_txt_data.splitlines(): + line = line.partition("#")[0].strip() # Strip comments and whitespace. + if not line: # Skip empty lines. + continue + + # Non-empty lines we must be able to match. + match = version_pin_re.match(line) + error_if(match is None, f"Couldn't parse line from pip vendor.txt: '{line}'") + assert match is not None # Make mypy happy. + + # Parse out and normalize the project name. + project_name, project_version = match.groups() + project_name = project_name.lower() + + # At this point if pip's metadata fetch succeeded we should + # expect this request to also succeed. + project_metadata = ( + fetch_package_metadata_from_pypi(project_name, project_version) + ) + assert project_metadata is not None + project_download_url, project_checksum_sha256 = project_metadata + + # Update our SBOM data with what we received from PyPI. + # Don't overwrite any existing values. + sbom_project_spdx_id = spdx_id(f"SPDXRef-PACKAGE-{project_name}") + sbom_pip_dependency_spdx_ids.add(sbom_project_spdx_id) + for package in sbom_data["packages"]: + if package["SPDXID"] != sbom_project_spdx_id: + continue + + # Only thing missing from this blob is the `licenseConcluded`, + # that needs to be triaged by human maintainers if the list changes. + package.update({ + "SPDXID": sbom_project_spdx_id, + "name": project_name, + "versionInfo": project_version, + "downloadLocation": project_download_url, + "checksums": [ + {"algorithm": "SHA256", "checksumValue": project_checksum_sha256} + ], + "externalRefs": [ + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": f"pkg:pypi/{project_name}@{project_version}", + "referenceType": "purl", + }, + ], + "primaryPackagePurpose": "SOURCE" + }) + break + + PACKAGE_TO_FILES[project_name] = PackageFiles(include=None) + + # Remove pip from the existing SBOM packages if it's there + # and then overwrite its entry with our own generated one. + sbom_pip_spdx_id = spdx_id("SPDXRef-PACKAGE-pip") + sbom_data["packages"] = [ + sbom_package + for sbom_package in sbom_data["packages"] + if sbom_package["name"] != "pip" + ] + sbom_data["packages"].append( + { + "SPDXID": sbom_pip_spdx_id, + "name": "pip", + "versionInfo": pip_version, + "originator": "Organization: Python Packaging Authority", + "licenseConcluded": "NOASSERTION", + "downloadLocation": pip_download_url, + "checksums": [ + {"algorithm": "SHA256", "checksumValue": pip_checksum_sha256} + ], + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceLocator": f"cpe:2.3:a:pypa:pip:{pip_version}:*:*:*:*:*:*:*", + "referenceType": "cpe23Type", + }, + { + "referenceCategory": "PACKAGE_MANAGER", + "referenceLocator": f"pkg:pypi/pip@{pip_version}", + "referenceType": "purl", + }, + ], + "primaryPackagePurpose": "SOURCE", + } + ) + for sbom_dep_spdx_id in sorted(sbom_pip_dependency_spdx_ids): + sbom_data["relationships"].append({ + "spdxElementId": sbom_pip_spdx_id, + "relatedSpdxElement": sbom_dep_spdx_id, + "relationshipType": "DEPENDS_ON" + }) + + +def main() -> None: + sbom_path = CPYTHON_ROOT_DIR / "Misc/sbom.spdx.json" + sbom_data = json.loads(sbom_path.read_bytes()) + + # Check if pip should be removed if the wheel is missing. + # We can't reset the SBOM relationship data until checking this. + maybe_remove_pip_and_deps_from_sbom(sbom_data) + + # We regenerate all of this information. Package information + # should be preserved though since that is edited by humans. + sbom_data["files"] = [] + sbom_data["relationships"] = [] + + # Insert pip's SBOM metadata from the wheel. + discover_pip_sbom_package(sbom_data) + + # Ensure all packages in this tool are represented also in the SBOM file. + actual_names = {package["name"] for package in sbom_data["packages"]} + expected_names = set(PACKAGE_TO_FILES) + error_if( + actual_names != expected_names, + f"Packages defined in SBOM tool don't match those defined in SBOM file: {actual_names}, {expected_names}", + ) + + # Make a bunch of assertions about the SBOM data to ensure it's consistent. + for package in sbom_data["packages"]: + # Properties and ID must be properly formed. + error_if( + "name" not in package, + "Package is missing the 'name' field" + ) + missing_required_keys = REQUIRED_PROPERTIES_PACKAGE - set(package.keys()) + error_if( + bool(missing_required_keys), + f"Package '{package['name']}' is missing required fields: {missing_required_keys}", + ) + error_if( + package["SPDXID"] != spdx_id(f"SPDXRef-PACKAGE-{package['name']}"), + f"Package '{package['name']}' has a malformed SPDXID", + ) + + # Version must be in the download and external references. + version = package["versionInfo"] + error_if( + version not in package["downloadLocation"], + f"Version '{version}' for package '{package['name']} not in 'downloadLocation' field", + ) + error_if( + any(version not in ref["referenceLocator"] for ref in package["externalRefs"]), + ( + f"Version '{version}' for package '{package['name']} not in " + f"all 'externalRefs[].referenceLocator' fields" + ), + ) + + # License must be on the approved list for SPDX. + license_concluded = package["licenseConcluded"] + error_if( + license_concluded != "NOASSERTION", + f"License identifier must be 'NOASSERTION'" + ) + + # We call 'sorted()' here a lot to avoid filesystem scan order issues. + for name, files in sorted(PACKAGE_TO_FILES.items()): + package_spdx_id = spdx_id(f"SPDXRef-PACKAGE-{name}") + exclude = files.exclude or () + for include in sorted(files.include or ()): + # Find all the paths and then filter them through .gitignore. + paths = glob.glob(include, root_dir=CPYTHON_ROOT_DIR, recursive=True) + paths = filter_gitignored_paths(paths) + error_if( + len(paths) == 0, + f"No valid paths found at path '{include}' for package '{name}", + ) + + for path in paths: + # Skip directories and excluded files + if not (CPYTHON_ROOT_DIR / path).is_file() or path in exclude: + continue + + # SPDX requires SHA1 to be used for files, but we provide SHA256 too. + data = (CPYTHON_ROOT_DIR / path).read_bytes() + checksum_sha1 = hashlib.sha1(data).hexdigest() + checksum_sha256 = hashlib.sha256(data).hexdigest() + + file_spdx_id = spdx_id(f"SPDXRef-FILE-{path}") + sbom_data["files"].append({ + "SPDXID": file_spdx_id, + "fileName": path, + "checksums": [ + {"algorithm": "SHA1", "checksumValue": checksum_sha1}, + {"algorithm": "SHA256", "checksumValue": checksum_sha256}, + ], + }) + + # Tie each file back to its respective package. + sbom_data["relationships"].append({ + "spdxElementId": package_spdx_id, + "relatedSpdxElement": file_spdx_id, + "relationshipType": "CONTAINS", + }) + + # Update the SBOM on disk + sbom_path.write_text(json.dumps(sbom_data, indent=2, sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/Tools/c-analyzer/cpython/globals-to-fix.tsv b/Tools/c-analyzer/cpython/globals-to-fix.tsv index 38021909ad1..3350a59384f 100644 --- a/Tools/c-analyzer/cpython/globals-to-fix.tsv +++ b/Tools/c-analyzer/cpython/globals-to-fix.tsv @@ -325,6 +325,7 @@ Modules/_testcapi/vectorcall.c - MethodDescriptorBase_Type - Modules/_testcapi/vectorcall.c - MethodDescriptorDerived_Type - Modules/_testcapi/vectorcall.c - MethodDescriptorNopGet_Type - Modules/_testcapi/vectorcall.c - MethodDescriptor2_Type - +Modules/_testclinic.c - TestClass - ################################## diff --git a/Tools/clinic/.ruff.toml b/Tools/clinic/.ruff.toml index cbb3a9a8f3a..c019572d0cb 100644 --- a/Tools/clinic/.ruff.toml +++ b/Tools/clinic/.ruff.toml @@ -1,5 +1,7 @@ target-version = "py310" fix = true + +[lint] select = [ "F", # Enable all pyflakes rules "UP", # Enable all pyupgrade rules by default diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 921b77bad51..d2ff422911c 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -904,7 +904,7 @@ def parser_body(prototype, *fields, declarations=''): return_error = ('return NULL;' if default_return_converter else 'goto exit;') parser_code = [normalize_snippet(""" - if (nargs) {{ + if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) {{ PyErr_SetString(PyExc_TypeError, "{name}() takes no arguments"); %s }} diff --git a/Tools/freeze/README b/Tools/freeze/README index 098107c5d1a..18815fa03fb 100644 --- a/Tools/freeze/README +++ b/Tools/freeze/README @@ -222,6 +222,11 @@ source tree). It is possible to create frozen programs that don't have a console window, by specifying the option '-s windows'. See the Usage below. +Usage under macOS +----------------- + +On macOS the freeze tool is not supported for framework builds. + Usage ----- diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py index bc5e43f4853..de9772732cd 100755 --- a/Tools/freeze/freeze.py +++ b/Tools/freeze/freeze.py @@ -136,6 +136,11 @@ def main(): makefile = 'Makefile' subsystem = 'console' + if sys.platform == "darwin" and sysconfig.get_config_var("PYTHONFRAMEWORK"): + print(f"{sys.argv[0]} cannot be used with framework builds of Python", file=sys.stderr) + sys.exit(1) + + # parse command line by first replacing any "-i" options with the # file contents. pos = 1 diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py index f066fb52cfd..efc4b243f64 100755 --- a/Tools/ssl/multissltests.py +++ b/Tools/ssl/multissltests.py @@ -47,8 +47,9 @@ OPENSSL_RECENT_VERSIONS = [ "1.1.1w", - "3.0.11", - "3.1.3", + "3.0.13", + "3.1.5", + "3.2.1", ] LIBRESSL_OLD_VERSIONS = [ diff --git a/configure b/configure index 99dd1fe5958..e962a6aed12 100755 --- a/configure +++ b/configure @@ -16947,7 +16947,7 @@ ipv6type=unknown ipv6lib=none ipv6trylibc=no -if test "$ipv6" = "yes"; then +if test "$ipv6" = yes -a "$cross_compiling" = no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5 printf %s "checking ipv6 stack type... " >&6; } for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; @@ -22359,6 +22359,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #if defined(MAJOR_IN_MKDEV) #include #elif defined(MAJOR_IN_SYSMACROS) +#include #include #else #include @@ -28114,7 +28115,12 @@ then : else $as_nop - rpath_arg="-Wl,-rpath=" + if test "$ac_sys_system" = "Darwin" + then + rpath_arg="-Wl,-rpath," + else + rpath_arg="-Wl,-rpath=" + fi fi diff --git a/configure.ac b/configure.ac index bd2be94b47c..384718db1f0 100644 --- a/configure.ac +++ b/configure.ac @@ -4540,7 +4540,7 @@ ipv6type=unknown ipv6lib=none ipv6trylibc=no -if test "$ipv6" = "yes"; then +if test "$ipv6" = yes -a "$cross_compiling" = no; then AC_MSG_CHECKING([ipv6 stack type]) for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; do @@ -5260,6 +5260,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #if defined(MAJOR_IN_MKDEV) #include #elif defined(MAJOR_IN_SYSMACROS) +#include #include #else #include @@ -7002,7 +7003,12 @@ AX_CHECK_OPENSSL([have_openssl=yes],[have_openssl=no]) AS_VAR_IF([GNULD], [yes], [ rpath_arg="-Wl,--enable-new-dtags,-rpath=" ], [ - rpath_arg="-Wl,-rpath=" + if test "$ac_sys_system" = "Darwin" + then + rpath_arg="-Wl,-rpath," + else + rpath_arg="-Wl,-rpath=" + fi ]) AC_MSG_CHECKING([for --with-openssl-rpath])