From 1e5655582c5ecbdf15f6c33507dae77560180029 Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Wed, 9 Dec 2020 10:06:55 +0900 Subject: [PATCH] Imported Upstream version 3.9.1 --- Doc/c-api/file.rst | 2 + Doc/c-api/type.rst | 6 +- Doc/data/refcounts.dat | 5 + Doc/faq/programming.rst | 56 +- Doc/faq/windows.rst | 4 +- Doc/glossary.rst | 24 +- Doc/howto/descriptor.rst | 1489 ++++++++++-- Doc/library/argparse.rst | 27 +- Doc/library/ast.rst | 35 + Doc/library/asyncio-policy.rst | 4 +- Doc/library/asyncio-subprocess.rst | 6 +- Doc/library/asyncio-task.rst | 10 +- Doc/library/audit_events.rst | 26 + Doc/library/bz2.rst | 8 - Doc/library/collections.abc.rst | 2 +- Doc/library/collections.rst | 3 + Doc/library/concurrent.futures.rst | 6 +- Doc/library/ctypes.rst | 18 +- Doc/library/dis.rst | 12 +- Doc/library/functions.rst | 44 +- Doc/library/functools.rst | 33 +- Doc/library/idle.rst | 47 +- Doc/library/imaplib.rst | 6 +- Doc/library/importlib.rst | 14 +- Doc/library/ipaddress.rst | 36 +- Doc/library/itertools.rst | 10 +- Doc/library/mailbox.rst | 14 +- Doc/library/math.rst | 2 +- Doc/library/multiprocessing.rst | 8 +- Doc/library/os.rst | 4 +- Doc/library/platform.rst | 7 - Doc/library/poplib.rst | 2 +- Doc/library/random.rst | 68 +- Doc/library/shutil.rst | 8 +- Doc/library/signal.rst | 2 +- Doc/library/site.rst | 4 +- Doc/library/smtplib.rst | 2 +- Doc/library/socket.rst | 19 + Doc/library/stdtypes.rst | 208 ++ Doc/library/string.rst | 43 +- Doc/library/sys.rst | 35 +- Doc/library/tarfile.rst | 9 +- Doc/library/test.rst | 2 + Doc/library/types.rst | 33 +- Doc/library/typing.rst | 126 +- Doc/library/unittest.rst | 17 +- Doc/library/xml.dom.minidom.rst | 4 +- Doc/library/xml.etree.elementtree.rst | 6 + Doc/reference/datamodel.rst | 67 +- Doc/reference/expressions.rst | 13 +- Doc/reference/import.rst | 20 +- Doc/reference/simple_stmts.rst | 4 +- Doc/tools/extensions/c_annotations.py | 4 +- Doc/tools/extensions/pyspecific.py | 36 +- Doc/tools/static/switchers.js | 1 - Doc/tools/susp-ignored.csv | 12 +- Doc/tools/templates/indexsidebar.html | 1 - Doc/tutorial/datastructures.rst | 2 +- Doc/tutorial/errors.rst | 19 +- Doc/tutorial/inputoutput.rst | 15 +- Doc/using/cmdline.rst | 2 +- Doc/using/venv-create.inc | 2 +- Doc/using/windows.rst | 10 +- Doc/whatsnew/3.8.rst | 13 +- Doc/whatsnew/3.9.rst | 109 +- Grammar/python.gram | 18 +- Include/cpython/fileobject.h | 8 - Include/fileobject.h | 7 + Include/internal/pycore_byteswap.h | 15 +- Include/internal/pycore_pylifecycle.h | 1 + Include/patchlevel.h | 4 +- Include/pyport.h | 12 + Lib/_osx_support.py | 78 +- Lib/ast.py | 110 +- Lib/asyncio/base_futures.py | 25 +- Lib/asyncio/exceptions.py | 3 +- Lib/asyncio/tasks.py | 10 +- Lib/binhex.py | 4 +- Lib/cProfile.py | 5 + Lib/collections/__init__.py | 2 +- Lib/copyreg.py | 4 + Lib/ctypes/macholib/dyld.py | 12 + Lib/ctypes/test/test_find.py | 12 +- Lib/ctypes/test/test_macholib.py | 15 +- Lib/ctypes/test/test_wintypes.py | 8 +- Lib/ctypes/util.py | 30 +- Lib/datetime.py | 2 +- Lib/distutils/spawn.py | 4 +- Lib/distutils/tests/test_build_ext.py | 12 +- Lib/distutils/unixccompiler.py | 2 +- Lib/email/generator.py | 6 +- .../_bundled/pip-20.2.1-py2.py3-none-any.whl | Bin 1503343 -> 0 bytes Lib/graphlib.py | 7 +- Lib/http/server.py | 7 +- Lib/idlelib/Icons/README.txt | 4 + Lib/idlelib/Icons/idle.ico | Bin 19790 -> 57746 bytes Lib/idlelib/NEWS.txt | 26 +- Lib/idlelib/calltip.py | 46 +- Lib/idlelib/configdialog.py | 12 +- Lib/idlelib/help.html | 111 +- Lib/idlelib/help.py | 8 +- Lib/idlelib/idle_test/mock_tk.py | 13 +- Lib/idlelib/idle_test/test_calltip.py | 116 +- Lib/idlelib/idle_test/test_searchbase.py | 14 +- Lib/idlelib/idle_test/test_searchengine.py | 6 +- Lib/idlelib/pyshell.py | 4 +- Lib/idlelib/runscript.py | 26 +- Lib/idlelib/searchbase.py | 19 +- Lib/idlelib/searchengine.py | 11 +- Lib/idlelib/statusbar.py | 5 +- Lib/inspect.py | 14 +- Lib/logging/__init__.py | 6 +- Lib/pickle.py | 4 +- Lib/plistlib.py | 41 +- Lib/profile.py | 5 + Lib/pstats.py | 6 +- Lib/pydoc_data/topics.py | 274 ++- Lib/shutil.py | 9 +- Lib/subprocess.py | 6 +- Lib/symtable.py | 23 +- Lib/tarfile.py | 12 +- Lib/test/datetimetester.py | 3 + Lib/test/inspect_fodder.py | 22 + Lib/test/multibytecodec_support.py | 22 +- Lib/test/pickletester.py | 18 + Lib/test/test__locale.py | 4 + Lib/test/test_asyncio/test_events.py | 5 +- Lib/test/test_asyncio/test_futures2.py | 18 + Lib/test/test_asyncio/test_streams.py | 8 +- Lib/test/test_asyncio/test_tasks.py | 24 + Lib/test/test_binhex.py | 12 + Lib/test/test_bytes.py | 1 + Lib/test/test_clinic.py | 26 +- Lib/test/test_codecs.py | 12 + Lib/test/test_collections.py | 72 + Lib/test/test_email/test_email.py | 35 + Lib/test/test_exceptions.py | 1 + Lib/test/test_finalization.py | 23 +- Lib/test/test_format.py | 7 +- Lib/test/test_gc.py | 6 +- Lib/test/test_gdb.py | 5 - Lib/test/test_genericalias.py | 97 +- Lib/test/test_hashlib.py | 27 +- Lib/test/test_httpservers.py | 37 +- Lib/test/test_inspect.py | 34 +- Lib/test/test_isinstance.py | 10 + Lib/test/test_itertools.py | 4 +- Lib/test/test_lib2to3.py | 4 +- Lib/test/test_logging.py | 21 +- Lib/test/test_named_expressions.py | 69 +- Lib/test/test_peepholer.py | 7 + Lib/test/test_peg_generator/test_c_parser.py | 6 + Lib/test/test_platform.py | 7 +- Lib/test/test_plistlib.py | 420 +++- Lib/test/test_posix.py | 230 +- Lib/test/test_profile.py | 16 +- Lib/test/test_pstats.py | 4 + Lib/test/test_shutil.py | 17 + Lib/test/test_site.py | 4 +- Lib/test/test_ssl.py | 1 + Lib/test/test_subprocess.py | 26 + Lib/test/test_symtable.py | 18 +- Lib/test/test_syntax.py | 37 + Lib/test/test_tarfile.py | 20 +- Lib/test/test_threading.py | 29 + Lib/test/test_time.py | 30 + Lib/test/test_traceback.py | 63 +- Lib/test/test_typing.py | 37 + Lib/test/test_unicode.py | 2 + Lib/test/test_unparse.py | 42 +- Lib/test/test_urllib2.py | 12 + Lib/test/test_with.py | 8 +- Lib/test/test_xml_etree.py | 8 + Lib/test/test_zipfile.py | 3 + Lib/test/test_zoneinfo/test_zoneinfo.py | 3 +- Lib/threading.py | 8 +- Lib/tkinter/__init__.py | 17 +- Lib/tkinter/test/test_tkinter/test_misc.py | 48 + Lib/tkinter/test/test_tkinter/test_widgets.py | 3 +- Lib/tkinter/test/test_ttk/test_extensions.py | 6 - Lib/tkinter/test/test_ttk/test_functions.py | 7 +- Lib/tkinter/test/test_ttk/test_style.py | 99 +- Lib/tkinter/test/test_ttk/test_widgets.py | 34 +- Lib/tkinter/ttk.py | 38 +- Lib/traceback.py | 5 +- Lib/typing.py | 102 +- Lib/urllib/request.py | 5 + Lib/webbrowser.py | 2 +- Lib/xml/etree/ElementTree.py | 5 + Lib/zipfile.py | 2 + Mac/BuildScript/build-installer.py | 95 +- Mac/BuildScript/openssl-mac-arm64.patch | 41 + Mac/BuildScript/resources/ReadMe.rtf | 18 +- Mac/README.rst | 37 + Mac/Tools/pythonw.c | 12 +- Makefile.pre.in | 1 + Misc/ACKS | 6 + Misc/NEWS | 440 +++- Modules/_ctypes/callbacks.c | 46 +- Modules/_ctypes/callproc.c | 127 +- Modules/_ctypes/cfield.c | 9 +- Modules/_ctypes/ctypes.h | 8 + Modules/_ctypes/malloc_closure.c | 15 +- Modules/_decimal/libmpdec/mpdecimal.h | 3 + Modules/_localemodule.c | 25 +- Modules/_operator.c | 2 +- Modules/_posixsubprocess.c | 4 +- Modules/_randommodule.c | 17 - Modules/_ssl.c | 1 + Modules/_testcapimodule.c | 20 + Modules/_tracemalloc.c | 2 +- Modules/clinic/_randommodule.c.h | 19 +- Modules/getpath.c | 4 - Modules/posixmodule.c | 840 +++++-- Modules/signalmodule.c | 52 +- Modules/timemodule.c | 231 +- Objects/abstract.c | 2 - Objects/funcobject.c | 29 +- Objects/genericaliasobject.c | 10 +- Objects/methodobject.c | 6 +- Objects/typeobject.c | 45 +- Objects/unicodeobject.c | 12 +- PC/icons/idlex150.png | Bin 0 -> 20537 bytes PC/icons/idlex44.png | Bin 0 -> 3473 bytes PC/layout/support/appxmanifest.py | 9 +- PC/pyconfig.h | 1 - PCbuild/build.bat | 4 +- PCbuild/env.bat | 21 +- PCbuild/env.ps1 | 2 + PCbuild/get_externals.bat | 2 +- PCbuild/idle.bat | 18 +- PCbuild/prepare_libffi.bat | 13 +- PCbuild/pyproject.props | 4 +- PCbuild/python.props | 2 +- PCbuild/readme.txt | 2 +- PCbuild/rt.bat | 18 +- Parser/pegen/parse.c | 2043 ++++++++--------- Parser/pegen/parse_string.c | 3 + Parser/pegen/pegen.c | 19 +- Parser/pegen/pegen.h | 3 +- Python/_warnings.c | 7 +- Python/bootstrap_hash.c | 42 +- Python/ceval.c | 38 +- Python/compile.c | 19 +- Python/dynload_aix.c | 14 +- Python/dynload_hpux.c | 15 +- Python/dynload_shlib.c | 4 +- Python/fileutils.c | 15 +- Python/import.c | 23 +- Python/initconfig.c | 3 +- Python/peephole.c | 2 +- Python/pylifecycle.c | 34 +- Python/pytime.c | 31 +- README.rst | 2 +- Tools/c-analyzer/c_analyzer/common/files.py | 4 +- Tools/clinic/clinic.py | 54 +- Tools/msi/sdktools.psm1 | 6 +- Tools/msi/test/test_files.wxs | 4 +- Tools/nuget/python.nuspec | 2 +- Tools/nuget/pythonarm32.nuspec | 3 +- Tools/nuget/pythondaily.nuspec | 3 +- Tools/nuget/pythonx86.nuspec | 3 +- Tools/peg_generator/pegen/c_generator.py | 8 +- .../scripts/test_parse_directory.py | 5 - configure | 70 +- configure.ac | 31 +- pyconfig.h.in | 3 + setup.py | 134 +- 268 files changed, 8250 insertions(+), 2860 deletions(-) delete mode 100644 Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl create mode 100644 Lib/test/test_asyncio/test_futures2.py create mode 100644 Mac/BuildScript/openssl-mac-arm64.patch create mode 100644 PC/icons/idlex150.png create mode 100644 PC/icons/idlex44.png create mode 100644 PCbuild/env.ps1 diff --git a/Doc/c-api/file.rst b/Doc/c-api/file.rst index ea027ee9..ed3735aa 100644 --- a/Doc/c-api/file.rst +++ b/Doc/c-api/file.rst @@ -82,6 +82,8 @@ the :mod:`io` APIs instead. This function is safe to call before :c:func:`Py_Initialize`. + .. audit-event:: setopencodehook "" c.PyFile_SetOpenCodeHook + .. versionadded:: 3.8 diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst index 73f26875..822360e0 100644 --- a/Doc/c-api/type.rst +++ b/Doc/c-api/type.rst @@ -155,7 +155,8 @@ The following functions and structs are used to create If *bases* is a tuple, the created heap type contains all types contained in it as base types. - If *bases* is ``NULL``, the *Py_tp_base* slot is used instead. + If *bases* is ``NULL``, the *Py_tp_bases* slot is used instead. + If that also is ``NULL``, the *Py_tp_base* slot is used instead. If that also is ``NULL``, the new type derives from :class:`object`. The *module* argument can be used to record the module in which the new @@ -247,7 +248,8 @@ The following functions and structs are used to create * :c:member:`~PyBufferProcs.bf_getbuffer` * :c:member:`~PyBufferProcs.bf_releasebuffer` - Setting :c:data:`Py_tp_bases` may be problematic on some platforms. + Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be + problematic on some platforms. To avoid issues, use the *bases* argument of :py:func:`PyType_FromSpecWithBases` instead. diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 4dacbe20..aac13511 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -2306,6 +2306,11 @@ PyType_CheckExact:PyObject*:o:0: PyType_FromSpec:PyObject*::+1: PyType_FromSpec:PyType_Spec*:spec:: +PyType_FromModuleAndSpec:PyObject*::+1: +PyType_FromModuleAndSpec:PyObject*:module:+1: +PyType_FromModuleAndSpec:PyType_Spec*:spec:: +PyType_FromModuleAndSpec:PyObject*:bases:0: + PyType_FromSpecWithBases:PyObject*::+1: PyType_FromSpecWithBases:PyType_Spec*:spec:: PyType_FromSpecWithBases:PyObject*:bases:0: diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 66d210a5..8df62c56 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -942,7 +942,7 @@ There are various techniques. f() -* Use :func:`locals` or :func:`eval` to resolve the function name:: +* Use :func:`locals` to resolve the function name:: def myFunc(): print("hello") @@ -952,12 +952,6 @@ There are various techniques. f = locals()[fname] f() - f = eval(fname) - f() - - Note: Using :func:`eval` is slow and dangerous. If you don't have absolute - control over the contents of the string, someone could pass a string that - resulted in an arbitrary function being executed. Is there an equivalent to Perl's chomp() for removing trailing newlines from strings? ------------------------------------------------------------------------------------- @@ -1122,7 +1116,7 @@ trailing newline from a string. How do I iterate over a sequence in reverse order? -------------------------------------------------- -Use the :func:`reversed` built-in function, which is new in Python 2.4:: +Use the :func:`reversed` built-in function:: for x in reversed(sequence): ... # do something with x ... @@ -1130,11 +1124,6 @@ Use the :func:`reversed` built-in function, which is new in Python 2.4:: This won't touch your original sequence, but build a new copy with reversed order to iterate over. -With Python 2.3, you can use an extended slice syntax:: - - for x in sequence[::-1]: - ... # do something with x ... - How do you remove duplicates from a list? ----------------------------------------- @@ -1164,6 +1153,21 @@ This converts the list into a set, thereby removing duplicates, and then back into a list. +How do you remove multiple items from a list +-------------------------------------------- + +As with removing duplicates, explicitly iterating in reverse with a +delete condition is one possibility. However, it is easier and faster +to use slice replacement with an implicit or explicit forward iteration. +Here are three variations.:: + + mylist[:] = filter(keep_function, mylist) + mylist[:] = (x for x in mylist if keep_condition) + mylist[:] = [x for x in mylist if keep_condition] + +The list comprehension may be fastest. + + How do you make an array in Python? ----------------------------------- @@ -1366,20 +1370,6 @@ out the element you want. :: ['else', 'sort', 'to', 'something'] -An alternative for the last step is:: - - >>> result = [] - >>> for p in pairs: result.append(p[1]) - -If you find this more legible, you might prefer to use this instead of the final -list comprehension. However, it is almost twice as slow for long lists. Why? -First, the ``append()`` operation has to reallocate memory, and while it uses -some tricks to avoid doing that each time, it still has to do it occasionally, -and that costs quite a bit. Second, the expression "result.append" requires an -extra attribute lookup, and third, there's a speed reduction from having to make -all those function calls. - - Objects ======= @@ -1523,18 +1513,18 @@ provide the ``self`` argument. How can I organize my code to make it easier to change the base class? ---------------------------------------------------------------------- -You could define an alias for the base class, assign the real base class to it -before your class definition, and use the alias throughout your class. Then all +You could assign the base class to an alias and derive from the alias. Then all you have to change is the value assigned to the alias. Incidentally, this trick is also handy if you want to decide dynamically (e.g. depending on availability of resources) which base class to use. Example:: - BaseAlias = + class Base: + ... + + BaseAlias = Base class Derived(BaseAlias): - def meth(self): - BaseAlias.meth(self) - ... + ... How do I create static class data and static class methods? diff --git a/Doc/faq/windows.rst b/Doc/faq/windows.rst index a181086e..c8e9c5fb 100644 --- a/Doc/faq/windows.rst +++ b/Doc/faq/windows.rst @@ -140,7 +140,7 @@ offender. How do I make an executable from a Python script? ------------------------------------------------- -See `cx_Freeze `_ for a distutils extension +See `cx_Freeze `_ for a distutils extension that allows you to create console and GUI executables from Python code. `py2exe `_, the most popular extension for building Python 2.x-based executables, does not yet support Python 3 but a version that @@ -279,7 +279,7 @@ in batch mode. How do I check for a keypress without blocking? ----------------------------------------------- -Use the msvcrt module. This is a standard Windows-specific extension module. +Use the :mod:`msvcrt` module. This is a standard Windows-specific extension module. It defines a function ``kbhit()`` which checks whether a keyboard hit is present, and ``getch()`` which gets one character without echoing it. diff --git a/Doc/glossary.rst b/Doc/glossary.rst index 9fdbdb1a..4fd01e01 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -301,13 +301,20 @@ Glossary including functions, methods, properties, class methods, static methods, and reference to super classes. - For more information about descriptors' methods, see :ref:`descriptors`. + For more information about descriptors' methods, see :ref:`descriptors` + or the :ref:`Descriptor How To Guide `. dictionary An associative array, where arbitrary keys are mapped to values. The keys can be any object with :meth:`__hash__` and :meth:`__eq__` methods. Called a hash in Perl. + dictionary comprehension + A compact way to process all or part of the elements in an iterable and + return a dictionary with the results. ``results = {n: n ** 2 for n in + range(10)}`` generates a dictionary containing key ``n`` mapped to + value ``n ** 2``. See :ref:`comprehensions`. + dictionary view The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and :meth:`dict.items` are called dictionary views. They provide a dynamic @@ -476,6 +483,13 @@ Glossary See also the :term:`single dispatch` glossary entry, the :func:`functools.singledispatch` decorator, and :pep:`443`. + generic type + A :term:`type` that can be parameterized; typically a container like + :class:`list`. Used for :term:`type hints ` and + :term:`annotations `. + + See :pep:`483` for more details, and :mod:`typing` or + :ref:`generic alias type ` for its uses. GIL See :term:`global interpreter lock`. @@ -1024,7 +1038,13 @@ Glossary :meth:`index`, :meth:`__contains__`, and :meth:`__reversed__`. Types that implement this expanded interface can be registered explicitly using - :func:`~abc.register`. + :func:`~abc.ABCMeta.register`. + + set comprehension + A compact way to process all or part of the elements in an iterable and + return a set with the results. ``results = {c for c in 'abracadabra' if + c not in 'abc'}`` generates the set of strings ``{'r', 'd'}``. See + :ref:`comprehensions`. single dispatch A form of :term:`generic function` dispatch where the implementation is diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index b792b6c6..ab5a573c 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -1,3 +1,5 @@ +.. _descriptorhowto: + ====================== Descriptor HowTo Guide ====================== @@ -7,45 +9,514 @@ Descriptor HowTo Guide .. Contents:: + +:term:`Descriptors ` let objects customize attribute lookup, +storage, and deletion. + +This guide has four major sections: + +1) The "primer" gives a basic overview, moving gently from simple examples, + adding one feature at a time. Start here if you're new to descriptors. + +2) The second section shows a complete, practical descriptor example. If you + already know the basics, start there. + +3) The third section provides a more technical tutorial that goes into the + detailed mechanics of how descriptors work. Most people don't need this + level of detail. + +4) The last section has pure Python equivalents for built-in descriptors that + are written in C. Read this if you're curious about how functions turn + into bound methods or about the implementation of common tools like + :func:`classmethod`, :func:`staticmethod`, :func:`property`, and + :term:`__slots__`. + + +Primer +^^^^^^ + +In this primer, we start with the most basic possible example and then we'll +add new capabilities one by one. + + +Simple example: A descriptor that returns a constant +---------------------------------------------------- + +The :class:`Ten` class is a descriptor that always returns the constant ``10`` +from its :meth:`__get__` method: + +.. testcode:: + + class Ten: + def __get__(self, obj, objtype=None): + return 10 + +To use the descriptor, it must be stored as a class variable in another class: + +.. testcode:: + + class A: + x = 5 # Regular class attribute + y = Ten() # Descriptor instance + +An interactive session shows the difference between normal attribute lookup +and descriptor lookup: + +.. doctest:: + + >>> a = A() # Make an instance of class A + >>> a.x # Normal attribute lookup + 5 + >>> a.y # Descriptor lookup + 10 + +In the ``a.x`` attribute lookup, the dot operator finds the key ``x`` and the +value ``5`` in the class dictionary. In the ``a.y`` lookup, the dot operator +finds a descriptor instance, recognized by its ``__get__`` method, and calls +that method which returns ``10``. + +Note that the value ``10`` is not stored in either the class dictionary or the +instance dictionary. Instead, the value ``10`` is computed on demand. + +This example shows how a simple descriptor works, but it isn't very useful. +For retrieving constants, normal attribute lookup would be better. + +In the next section, we'll create something more useful, a dynamic lookup. + + +Dynamic lookups +--------------- + +Interesting descriptors typically run computations instead of returning +constants: + +.. testcode:: + + import os + + class DirectorySize: + + def __get__(self, obj, objtype=None): + return len(os.listdir(obj.dirname)) + + class Directory: + + size = DirectorySize() # Descriptor instance + + def __init__(self, dirname): + self.dirname = dirname # Regular instance attribute + +An interactive session shows that the lookup is dynamic — it computes +different, updated answers each time:: + + >>> s = Directory('songs') + >>> g = Directory('games') + >>> s.size # The songs directory has twenty files + 20 + >>> g.size # The games directory has three files + 3 + >>> open('games/newfile').close() # Add a fourth file to the directory + >>> g.size # File count is automatically updated + 4 + +Besides showing how descriptors can run computations, this example also +reveals the purpose of the parameters to :meth:`__get__`. The *self* +parameter is *size*, an instance of *DirectorySize*. The *obj* parameter is +either *g* or *s*, an instance of *Directory*. It is the *obj* parameter that +lets the :meth:`__get__` method learn the target directory. The *objtype* +parameter is the class *Directory*. + + +Managed attributes +------------------ + +A popular use for descriptors is managing access to instance data. The +descriptor is assigned to a public attribute in the class dictionary while the +actual data is stored as a private attribute in the instance dictionary. The +descriptor's :meth:`__get__` and :meth:`__set__` methods are triggered when +the public attribute is accessed. + +In the following example, *age* is the public attribute and *_age* is the +private attribute. When the public attribute is accessed, the descriptor logs +the lookup or update: + +.. testcode:: + + import logging + + logging.basicConfig(level=logging.INFO) + + class LoggedAgeAccess: + + def __get__(self, obj, objtype=None): + value = obj._age + logging.info('Accessing %r giving %r', 'age', value) + return value + + def __set__(self, obj, value): + logging.info('Updating %r to %r', 'age', value) + obj._age = value + + class Person: + + age = LoggedAgeAccess() # Descriptor instance + + def __init__(self, name, age): + self.name = name # Regular instance attribute + self.age = age # Calls __set__() + + def birthday(self): + self.age += 1 # Calls both __get__() and __set__() + + +An interactive session shows that all access to the managed attribute *age* is +logged, but that the regular attribute *name* is not logged: + +.. testcode:: + :hide: + + import logging, sys + logging.basicConfig(level=logging.INFO, stream=sys.stdout, force=True) + +.. doctest:: + + >>> mary = Person('Mary M', 30) # The initial age update is logged + INFO:root:Updating 'age' to 30 + >>> dave = Person('David D', 40) + INFO:root:Updating 'age' to 40 + + >>> vars(mary) # The actual data is in a private attribute + {'name': 'Mary M', '_age': 30} + >>> vars(dave) + {'name': 'David D', '_age': 40} + + >>> mary.age # Access the data and log the lookup + INFO:root:Accessing 'age' giving 30 + 30 + >>> mary.birthday() # Updates are logged as well + INFO:root:Accessing 'age' giving 30 + INFO:root:Updating 'age' to 31 + + >>> dave.name # Regular attribute lookup isn't logged + 'David D' + >>> dave.age # Only the managed attribute is logged + INFO:root:Accessing 'age' giving 40 + 40 + +One major issue with this example is that the private name *_age* is hardwired in +the *LoggedAgeAccess* class. That means that each instance can only have one +logged attribute and that its name is unchangeable. In the next example, +we'll fix that problem. + + +Customized names +---------------- + +When a class uses descriptors, it can inform each descriptor about which +variable name was used. + +In this example, the :class:`Person` class has two descriptor instances, +*name* and *age*. When the :class:`Person` class is defined, it makes a +callback to :meth:`__set_name__` in *LoggedAccess* so that the field names can +be recorded, giving each descriptor its own *public_name* and *private_name*: + +.. testcode:: + + import logging + + logging.basicConfig(level=logging.INFO) + + class LoggedAccess: + + def __set_name__(self, owner, name): + self.public_name = name + self.private_name = '_' + name + + def __get__(self, obj, objtype=None): + value = getattr(obj, self.private_name) + logging.info('Accessing %r giving %r', self.public_name, value) + return value + + def __set__(self, obj, value): + logging.info('Updating %r to %r', self.public_name, value) + setattr(obj, self.private_name, value) + + class Person: + + name = LoggedAccess() # First descriptor instance + age = LoggedAccess() # Second descriptor instance + + def __init__(self, name, age): + self.name = name # Calls the first descriptor + self.age = age # Calls the second descriptor + + def birthday(self): + self.age += 1 + +An interactive session shows that the :class:`Person` class has called +:meth:`__set_name__` so that the field names would be recorded. Here +we call :func:`vars` to look up the descriptor without triggering it: + +.. doctest:: + + >>> vars(vars(Person)['name']) + {'public_name': 'name', 'private_name': '_name'} + >>> vars(vars(Person)['age']) + {'public_name': 'age', 'private_name': '_age'} + +The new class now logs access to both *name* and *age*: + +.. testcode:: + :hide: + + import logging, sys + logging.basicConfig(level=logging.INFO, stream=sys.stdout, force=True) + +.. doctest:: + + >>> pete = Person('Peter P', 10) + INFO:root:Updating 'name' to 'Peter P' + INFO:root:Updating 'age' to 10 + >>> kate = Person('Catherine C', 20) + INFO:root:Updating 'name' to 'Catherine C' + INFO:root:Updating 'age' to 20 + +The two *Person* instances contain only the private names:: + + >>> vars(pete) + {'_name': 'Peter P', '_age': 10} + >>> vars(kate) + {'_name': 'Catherine C', '_age': 20} + + +Closing thoughts +---------------- + +A :term:`descriptor` is what we call any object that defines :meth:`__get__`, +:meth:`__set__`, or :meth:`__delete__`. + +Optionally, descriptors can have a :meth:`__set_name__` method. This is only +used in cases where a descriptor needs to know either the class where it was +created or the name of class variable it was assigned to. (This method, if +present, is called even if the class is not a descriptor.) + +Descriptors get invoked by the dot "operator" during attribute lookup. If a +descriptor is accessed indirectly with ``vars(some_class)[descriptor_name]``, +the descriptor instance is returned without invoking it. + +Descriptors only work when used as class variables. When put in instances, +they have no effect. + +The main motivation for descriptors is to provide a hook allowing objects +stored in class variables to control what happens during attribute lookup. + +Traditionally, the calling class controls what happens during lookup. +Descriptors invert that relationship and allow the data being looked-up to +have a say in the matter. + +Descriptors are used throughout the language. It is how functions turn into +bound methods. Common tools like :func:`classmethod`, :func:`staticmethod`, +:func:`property`, and :func:`functools.cached_property` are all implemented as +descriptors. + + +Complete Practical Example +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In this example, we create a practical and powerful tool for locating +notoriously hard to find data corruption bugs. + + +Validator class +--------------- + +A validator is a descriptor for managed attribute access. Prior to storing +any data, it verifies that the new value meets various type and range +restrictions. If those restrictions aren't met, it raises an exception to +prevent data corruption at its source. + +This :class:`Validator` class is both an :term:`abstract base class` and a +managed attribute descriptor: + +.. testcode:: + + from abc import ABC, abstractmethod + + class Validator(ABC): + + def __set_name__(self, owner, name): + self.private_name = '_' + name + + def __get__(self, obj, objtype=None): + return getattr(obj, self.private_name) + + def __set__(self, obj, value): + self.validate(value) + setattr(obj, self.private_name, value) + + @abstractmethod + def validate(self, value): + pass + +Custom validators need to inherit from :class:`Validator` and must supply a +:meth:`validate` method to test various restrictions as needed. + + +Custom validators +----------------- + +Here are three practical data validation utilities: + +1) :class:`OneOf` verifies that a value is one of a restricted set of options. + +2) :class:`Number` verifies that a value is either an :class:`int` or + :class:`float`. Optionally, it verifies that a value is between a given + minimum or maximum. + +3) :class:`String` verifies that a value is a :class:`str`. Optionally, it + validates a given minimum or maximum length. It can validate a + user-defined `predicate + `_ as well. + +.. testcode:: + + class OneOf(Validator): + + def __init__(self, *options): + self.options = set(options) + + def validate(self, value): + if value not in self.options: + raise ValueError(f'Expected {value!r} to be one of {self.options!r}') + + class Number(Validator): + + def __init__(self, minvalue=None, maxvalue=None): + self.minvalue = minvalue + self.maxvalue = maxvalue + + def validate(self, value): + if not isinstance(value, (int, float)): + raise TypeError(f'Expected {value!r} to be an int or float') + if self.minvalue is not None and value < self.minvalue: + raise ValueError( + f'Expected {value!r} to be at least {self.minvalue!r}' + ) + if self.maxvalue is not None and value > self.maxvalue: + raise ValueError( + f'Expected {value!r} to be no more than {self.maxvalue!r}' + ) + + class String(Validator): + + def __init__(self, minsize=None, maxsize=None, predicate=None): + self.minsize = minsize + self.maxsize = maxsize + self.predicate = predicate + + def validate(self, value): + if not isinstance(value, str): + raise TypeError(f'Expected {value!r} to be an str') + if self.minsize is not None and len(value) < self.minsize: + raise ValueError( + f'Expected {value!r} to be no smaller than {self.minsize!r}' + ) + if self.maxsize is not None and len(value) > self.maxsize: + raise ValueError( + f'Expected {value!r} to be no bigger than {self.maxsize!r}' + ) + if self.predicate is not None and not self.predicate(value): + raise ValueError( + f'Expected {self.predicate} to be true for {value!r}' + ) + + +Practical application +--------------------- + +Here's how the data validators can be used in a real class: + +.. testcode:: + + class Component: + + name = String(minsize=3, maxsize=10, predicate=str.isupper) + kind = OneOf('wood', 'metal', 'plastic') + quantity = Number(minvalue=0) + + def __init__(self, name, kind, quantity): + self.name = name + self.kind = kind + self.quantity = quantity + +The descriptors prevent invalid instances from being created: + +.. doctest:: + + >>> Component('Widget', 'metal', 5) # Blocked: 'Widget' is not all uppercase + Traceback (most recent call last): + ... + ValueError: Expected to be true for 'Widget' + + >>> Component('WIDGET', 'metle', 5) # Blocked: 'metle' is misspelled + Traceback (most recent call last): + ... + ValueError: Expected 'metle' to be one of {'metal', 'plastic', 'wood'} + + >>> Component('WIDGET', 'metal', -5) # Blocked: -5 is negative + Traceback (most recent call last): + ... + ValueError: Expected -5 to be at least 0 + >>> Component('WIDGET', 'metal', 'V') # Blocked: 'V' isn't a number + Traceback (most recent call last): + ... + TypeError: Expected 'V' to be an int or float + + >>> c = Component('WIDGET', 'metal', 5) # Allowed: The inputs are valid + + +Technical Tutorial +^^^^^^^^^^^^^^^^^^ + +What follows is a more technical tutorial for the mechanics and details of how +descriptors work. + + Abstract -------- Defines descriptors, summarizes the protocol, and shows how descriptors are -called. Examines a custom descriptor and several built-in Python descriptors -including functions, properties, static methods, and class methods. Shows how -each works by giving a pure Python equivalent and a sample application. +called. Provides an example showing how object relational mappings work. Learning about descriptors not only provides access to a larger toolset, it -creates a deeper understanding of how Python works and an appreciation for the -elegance of its design. +creates a deeper understanding of how Python works. -Definition and Introduction +Definition and introduction --------------------------- -In general, a descriptor is an object attribute with "binding behavior", one -whose attribute access has been overridden by methods in the descriptor -protocol. Those methods are :meth:`__get__`, :meth:`__set__`, and -:meth:`__delete__`. If any of those methods are defined for an object, it is -said to be a descriptor. +In general, a descriptor is an attribute value that has one of the methods in +the descriptor protocol. Those methods are :meth:`__get__`, :meth:`__set__`, +and :meth:`__delete__`. If any of those methods are defined for an the +attribute, it is said to be a :term:`descriptor`. The default behavior for attribute access is to get, set, or delete the attribute from an object's dictionary. For instance, ``a.x`` has a lookup chain starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and -continuing through the base classes of ``type(a)`` excluding metaclasses. If the +continuing through the method resolution order of ``type(a)``. If the looked-up value is an object defining one of the descriptor methods, then Python may override the default behavior and invoke the descriptor method instead. Where this occurs in the precedence chain depends on which descriptor methods were defined. Descriptors are a powerful, general purpose protocol. They are the mechanism -behind properties, methods, static methods, class methods, and :func:`super()`. -They are used throughout Python itself to implement the new style classes -introduced in version 2.2. Descriptors simplify the underlying C-code and offer -a flexible set of new tools for everyday Python programs. +behind properties, methods, static methods, class methods, and +:func:`super()`. They are used throughout Python itself. Descriptors +simplify the underlying C code and offer a flexible set of new tools for +everyday Python programs. -Descriptor Protocol +Descriptor protocol ------------------- ``descr.__get__(self, obj, type=None) -> value`` @@ -60,7 +531,7 @@ as an attribute. If an object defines :meth:`__set__` or :meth:`__delete__`, it is considered a data descriptor. Descriptors that only define :meth:`__get__` are called -non-data descriptors (they are typically used for methods but other uses are +non-data descriptors (they are often used for methods but other uses are possible). Data and non-data descriptors differ in how overrides are calculated with @@ -75,124 +546,372 @@ called. Defining the :meth:`__set__` method with an exception raising placeholder is enough to make it a data descriptor. -Invoking Descriptors --------------------- +Overview of descriptor invocation +--------------------------------- + +A descriptor can be called directly with ``desc.__get__(obj)`` or +``desc.__get__(None, cls)``. + +But it is more common for a descriptor to be invoked automatically from +attribute access. + +The expression ``obj.x`` looks up the attribute ``x`` in the chain of +namespaces for ``obj``. If the search finds a descriptor outside of the +instance ``__dict__``, its :meth:`__get__` method is invoked according to the +precedence rules listed below. + +The details of invocation depend on whether ``obj`` is an object, class, or +instance of super. + + +Invocation from an instance +--------------------------- + +Instance lookup scans through a chain of namespaces giving data descriptors +the highest priority, followed by instance variables, then non-data +descriptors, then class variables, and lastly :meth:`__getattr__` if it is +provided. -A descriptor can be called directly by its method name. For example, -``d.__get__(obj)``. +If a descriptor is found for ``a.x``, then it is invoked with: +``desc.__get__(a, type(a))``. -Alternatively, it is more common for a descriptor to be invoked automatically -upon attribute access. For example, ``obj.d`` looks up ``d`` in the dictionary -of ``obj``. If ``d`` defines the method :meth:`__get__`, then ``d.__get__(obj)`` -is invoked according to the precedence rules listed below. +The logic for a dotted lookup is in :meth:`object.__getattribute__`. Here is +a pure Python equivalent: -The details of invocation depend on whether ``obj`` is an object or a class. +.. testcode:: + + def object_getattribute(obj, name): + "Emulate PyObject_GenericGetAttr() in Objects/object.c" + null = object() + objtype = type(obj) + cls_var = getattr(objtype, name, null) + descr_get = getattr(type(cls_var), '__get__', null) + if descr_get is not null: + if (hasattr(type(cls_var), '__set__') + or hasattr(type(cls_var), '__delete__')): + return descr_get(cls_var, obj, objtype) # data descriptor + if hasattr(obj, '__dict__') and name in vars(obj): + return vars(obj)[name] # instance variable + if descr_get is not null: + return descr_get(cls_var, obj, objtype) # non-data descriptor + if cls_var is not null: + return cls_var # class variable + raise AttributeError(name) -For objects, the machinery is in :meth:`object.__getattribute__` which -transforms ``b.x`` into ``type(b).__dict__['x'].__get__(b, type(b))``. The -implementation works through a precedence chain that gives data descriptors -priority over instance variables, instance variables priority over non-data -descriptors, and assigns lowest priority to :meth:`__getattr__` if provided. -The full C implementation can be found in :c:func:`PyObject_GenericGetAttr()` in -:source:`Objects/object.c`. -For classes, the machinery is in :meth:`type.__getattribute__` which transforms -``B.x`` into ``B.__dict__['x'].__get__(None, B)``. In pure Python, it looks -like:: +.. testcode:: + :hide: - def __getattribute__(self, key): - "Emulate type_getattro() in Objects/typeobject.c" - v = object.__getattribute__(self, key) - if hasattr(v, '__get__'): - return v.__get__(None, self) - return v + # Test the fidelity of object_getattribute() by comparing it with the + # normal object.__getattribute__(). The former will be accessed by + # square brackets and the latter by the dot operator. + + class Object: + + def __getitem__(obj, name): + try: + return object_getattribute(obj, name) + except AttributeError: + if not hasattr(type(obj), '__getattr__'): + raise + return type(obj).__getattr__(obj, name) # __getattr__ + + class DualOperator(Object): + + x = 10 + + def __init__(self, z): + self.z = z + + @property + def p2(self): + return 2 * self.x + + @property + def p3(self): + return 3 * self.x + + def m5(self, y): + return 5 * y + + def m7(self, y): + return 7 * y + + def __getattr__(self, name): + return ('getattr_hook', self, name) + + class DualOperatorWithSlots: + + __getitem__ = Object.__getitem__ + + __slots__ = ['z'] + + x = 15 + + def __init__(self, z): + self.z = z + + @property + def p2(self): + return 2 * self.x + + def m5(self, y): + return 5 * y + + def __getattr__(self, name): + return ('getattr_hook', self, name) + + +.. doctest:: + :hide: + + >>> a = DualOperator(11) + >>> vars(a).update(p3 = '_p3', m7 = '_m7') + >>> a.x == a['x'] == 10 + True + >>> a.z == a['z'] == 11 + True + >>> a.p2 == a['p2'] == 20 + True + >>> a.p3 == a['p3'] == 30 + True + >>> a.m5(100) == a.m5(100) == 500 + True + >>> a.m7 == a['m7'] == '_m7' + True + >>> a.g == a['g'] == ('getattr_hook', a, 'g') + True + + >>> b = DualOperatorWithSlots(22) + >>> b.x == b['x'] == 15 + True + >>> b.z == b['z'] == 22 + True + >>> b.p2 == b['p2'] == 30 + True + >>> b.m5(200) == b['m5'](200) == 1000 + True + >>> b.g == b['g'] == ('getattr_hook', b, 'g') + True + + +Interestingly, attribute lookup doesn't call :meth:`object.__getattribute__` +directly. Instead, both the dot operator and the :func:`getattr` function +perform attribute lookup by way of a helper function: + +.. testcode:: + + def getattr_hook(obj, name): + "Emulate slot_tp_getattr_hook() in Objects/typeobject.c" + try: + return obj.__getattribute__(name) + except AttributeError: + if not hasattr(type(obj), '__getattr__'): + raise + return type(obj).__getattr__(obj, name) # __getattr__ + +So if :meth:`__getattr__` exists, it is called whenever :meth:`__getattribute__` +raises :exc:`AttributeError` (either directly or in one of the descriptor calls). + +Also, if a user calls :meth:`object.__getattribute__` directly, the +:meth:`__getattr__` hook is bypassed entirely. + + +Invocation from a class +----------------------- + +The logic for a dotted lookup such as ``A.x`` is in +:meth:`type.__getattribute__`. The steps are similar to those for +:meth:`object.__getattribute__` but the instance dictionary lookup is replaced +by a search through the class's :term:`method resolution order`. + +If a descriptor is found, it is invoked with ``desc.__get__(None, A)``. + +The full C implementation can be found in :c:func:`type_getattro()` and +:c:func:`_PyType_Lookup()` in :source:`Objects/typeobject.c`. + + +Invocation from super +--------------------- + +The logic for super's dotted lookup is in the :meth:`__getattribute__` method for +object returned by :class:`super()`. + +A dotted lookup such as ``super(A, obj).m`` searches ``obj.__class__.__mro__`` +for the base class ``B`` immediately following ``A`` and then returns +``B.__dict__['m'].__get__(obj, A)``. If not a descriptor, ``m`` is returned +unchanged. + +The full C implementation can be found in :c:func:`super_getattro()` in +:source:`Objects/typeobject.c`. A pure Python equivalent can be found in +`Guido's Tutorial +`_. + + +Summary of invocation logic +--------------------------- + +The mechanism for descriptors is embedded in the :meth:`__getattribute__()` +methods for :class:`object`, :class:`type`, and :func:`super`. The important points to remember are: -* descriptors are invoked by the :meth:`__getattribute__` method -* overriding :meth:`__getattribute__` prevents automatic descriptor calls +* Descriptors are invoked by the :meth:`__getattribute__` method. + +* Classes inherit this machinery from :class:`object`, :class:`type`, or + :func:`super`. + +* Overriding :meth:`__getattribute__` prevents automatic descriptor calls + because all the descriptor logic is in that method. + * :meth:`object.__getattribute__` and :meth:`type.__getattribute__` make - different calls to :meth:`__get__`. -* data descriptors always override instance dictionaries. -* non-data descriptors may be overridden by instance dictionaries. + different calls to :meth:`__get__`. The first includes the instance and may + include the class. The second puts in ``None`` for the instance and always + includes the class. -The object returned by ``super()`` also has a custom :meth:`__getattribute__` -method for invoking descriptors. The attribute lookup ``super(B, obj).m`` searches -``obj.__class__.__mro__`` for the base class ``A`` immediately following ``B`` -and then returns ``A.__dict__['m'].__get__(obj, B)``. If not a descriptor, -``m`` is returned unchanged. If not in the dictionary, ``m`` reverts to a -search using :meth:`object.__getattribute__`. +* Data descriptors always override instance dictionaries. -The implementation details are in :c:func:`super_getattro()` in -:source:`Objects/typeobject.c`. and a pure Python equivalent can be found in -`Guido's Tutorial`_. +* Non-data descriptors may be overridden by instance dictionaries. -.. _`Guido's Tutorial`: https://www.python.org/download/releases/2.2.3/descrintro/#cooperation -The details above show that the mechanism for descriptors is embedded in the -:meth:`__getattribute__()` methods for :class:`object`, :class:`type`, and -:func:`super`. Classes inherit this machinery when they derive from -:class:`object` or if they have a meta-class providing similar functionality. -Likewise, classes can turn-off descriptor invocation by overriding -:meth:`__getattribute__()`. +Automatic name notification +--------------------------- +Sometimes it is desirable for a descriptor to know what class variable name it +was assigned to. When a new class is created, the :class:`type` metaclass +scans the dictionary of the new class. If any of the entries are descriptors +and if they define :meth:`__set_name__`, that method is called with two +arguments. The *owner* is the class where the descriptor is used, and the +*name* is the class variable the descriptor was assigned to. -Descriptor Example ------------------- +The implementation details are in :c:func:`type_new()` and +:c:func:`set_names()` in :source:`Objects/typeobject.c`. -The following code creates a class whose objects are data descriptors which -print a message for each get or set. Overriding :meth:`__getattribute__` is -alternate approach that could do this for every attribute. However, this -descriptor is useful for monitoring just a few chosen attributes:: +Since the update logic is in :meth:`type.__new__`, notifications only take +place at the time of class creation. If descriptors are added to the class +afterwards, :meth:`__set_name__` will need to be called manually. - class RevealAccess: - """A data descriptor that sets and returns values - normally and prints a message logging their access. - """ - def __init__(self, initval=None, name='var'): - self.val = initval - self.name = name +ORM example +----------- - def __get__(self, obj, objtype): - print('Retrieving', self.name) - return self.val +The following code is simplified skeleton showing how data descriptors could +be used to implement an `object relational mapping +`_. - def __set__(self, obj, val): - print('Updating', self.name) - self.val = val +The essential idea is that the data is stored in an external database. The +Python instances only hold keys to the database's tables. Descriptors take +care of lookups or updates: - >>> class MyClass: - ... x = RevealAccess(10, 'var "x"') - ... y = 5 - ... - >>> m = MyClass() - >>> m.x - Retrieving var "x" - 10 - >>> m.x = 20 - Updating var "x" - >>> m.x - Retrieving var "x" - 20 - >>> m.y - 5 +.. testcode:: + + class Field: + + def __set_name__(self, owner, name): + self.fetch = f'SELECT {name} FROM {owner.table} WHERE {owner.key}=?;' + self.store = f'UPDATE {owner.table} SET {name}=? WHERE {owner.key}=?;' + + def __get__(self, obj, objtype=None): + return conn.execute(self.fetch, [obj.key]).fetchone()[0] + + def __set__(self, obj, value): + conn.execute(self.store, [value, obj.key]) + conn.commit() + +We can use the :class:`Field` class to define `models +`_ that describe the schema for +each table in a database: + +.. testcode:: + + class Movie: + table = 'Movies' # Table name + key = 'title' # Primary key + director = Field() + year = Field() + + def __init__(self, key): + self.key = key + + class Song: + table = 'Music' + key = 'title' + artist = Field() + year = Field() + genre = Field() + + def __init__(self, key): + self.key = key -The protocol is simple and offers exciting possibilities. Several use cases are -so common that they have been packaged into individual function calls. -Properties, bound methods, static methods, and class methods are all -based on the descriptor protocol. +To use the models, first connect to the database:: + + >>> import sqlite3 + >>> conn = sqlite3.connect('entertainment.db') + +An interactive session shows how data is retrieved from the database and how +it can be updated: + +.. testsetup:: + + song_data = [ + ('Country Roads', 'John Denver', 1972), + ('Me and Bobby McGee', 'Janice Joplin', 1971), + ('Coal Miners Daughter', 'Loretta Lynn', 1970), + ] + + movie_data = [ + ('Star Wars', 'George Lucas', 1977), + ('Jaws', 'Steven Spielberg', 1975), + ('Aliens', 'James Cameron', 1986), + ] + + import sqlite3 + + conn = sqlite3.connect(':memory:') + conn.execute('CREATE TABLE Music (title text, artist text, year integer);') + conn.execute('CREATE INDEX MusicNdx ON Music (title);') + conn.executemany('INSERT INTO Music VALUES (?, ?, ?);', song_data) + conn.execute('CREATE TABLE Movies (title text, director text, year integer);') + conn.execute('CREATE INDEX MovieNdx ON Music (title);') + conn.executemany('INSERT INTO Movies VALUES (?, ?, ?);', movie_data) + conn.commit() + +.. doctest:: + + >>> Movie('Star Wars').director + 'George Lucas' + >>> jaws = Movie('Jaws') + >>> f'Released in {jaws.year} by {jaws.director}' + 'Released in 1975 by Steven Spielberg' + + >>> Song('Country Roads').artist + 'John Denver' + + >>> Movie('Star Wars').director = 'J.J. Abrams' + >>> Movie('Star Wars').director + 'J.J. Abrams' + + +Pure Python Equivalents +^^^^^^^^^^^^^^^^^^^^^^^ + +The descriptor protocol is simple and offers exciting possibilities. Several +use cases are so common that they have been prepackaged into built-in tools. +Properties, bound methods, static methods, class methods, and \_\_slots\_\_ are +all based on the descriptor protocol. Properties ---------- Calling :func:`property` is a succinct way of building a data descriptor that -triggers function calls upon access to an attribute. Its signature is:: +triggers a function call upon access to an attribute. Its signature is:: - property(fget=None, fset=None, fdel=None, doc=None) -> property attribute + property(fget=None, fset=None, fdel=None, doc=None) -> property -The documentation shows a typical use to define a managed attribute ``x``:: +The documentation shows a typical use to define a managed attribute ``x``: + +.. testcode:: class C: def getx(self): return self.__x @@ -201,7 +920,9 @@ The documentation shows a typical use to define a managed attribute ``x``:: x = property(getx, setx, delx, "I'm the 'x' property.") To see how :func:`property` is implemented in terms of the descriptor protocol, -here is a pure Python equivalent:: +here is a pure Python equivalent: + +.. testcode:: class Property: "Emulate PyProperty_Type() in Objects/descrobject.c" @@ -240,6 +961,57 @@ here is a pure Python equivalent:: def deleter(self, fdel): return type(self)(self.fget, self.fset, fdel, self.__doc__) +.. testcode:: + :hide: + + # Verify the Property() emulation + + class CC: + def getx(self): + return self.__x + def setx(self, value): + self.__x = value + def delx(self): + del self.__x + x = Property(getx, setx, delx, "I'm the 'x' property.") + + # Now do it again but use the decorator style + + class CCC: + @Property + def x(self): + return self.__x + @x.setter + def x(self, value): + self.__x = value + @x.deleter + def x(self): + del self.__x + + +.. doctest:: + :hide: + + >>> cc = CC() + >>> hasattr(cc, 'x') + False + >>> cc.x = 33 + >>> cc.x + 33 + >>> del cc.x + >>> hasattr(cc, 'x') + False + + >>> ccc = CCC() + >>> hasattr(ccc, 'x') + False + >>> ccc.x = 333 + >>> ccc.x == 333 + True + >>> del ccc.x + >>> hasattr(ccc, 'x') + False + The :func:`property` builtin helps whenever a user interface has granted attribute access and then subsequent changes require the intervention of a method. @@ -248,100 +1020,137 @@ For instance, a spreadsheet class may grant access to a cell value through ``Cell('b10').value``. Subsequent improvements to the program require the cell to be recalculated on every access; however, the programmer does not want to affect existing client code accessing the attribute directly. The solution is -to wrap access to the value attribute in a property data descriptor:: +to wrap access to the value attribute in a property data descriptor: + +.. testcode:: class Cell: - . . . - def getvalue(self): + ... + + @property + def value(self): "Recalculate the cell before returning value" self.recalc() return self._value - value = property(getvalue) +Either the built-in :func:`property` or our :func:`Property` equivalent would +work in this example. -Functions and Methods + +Functions and methods --------------------- Python's object oriented features are built upon a function based environment. Using non-data descriptors, the two are merged seamlessly. -Class dictionaries store methods as functions. In a class definition, methods -are written using :keyword:`def` or :keyword:`lambda`, the usual tools for -creating functions. Methods only differ from regular functions in that the -first argument is reserved for the object instance. By Python convention, the -instance reference is called *self* but may be called *this* or any other -variable name. +Functions stored in class dictionaries get turned into methods when invoked. +Methods only differ from regular functions in that the object instance is +prepended to the other arguments. By convention, the instance is called +*self* but could be called *this* or any other variable name. + +Methods can be created manually with :class:`types.MethodType` which is +roughly equivalent to: -To support method calls, functions include the :meth:`__get__` method for -binding methods during attribute access. This means that all functions are -non-data descriptors which return bound methods when they are invoked from an -object. In pure Python, it works like this:: +.. testcode:: + + class MethodType: + "Emulate Py_MethodType in Objects/classobject.c" + + def __init__(self, func, obj): + self.__func__ = func + self.__self__ = obj + + def __call__(self, *args, **kwargs): + func = self.__func__ + obj = self.__self__ + return func(obj, *args, **kwargs) + +To support automatic creation of methods, functions include the +:meth:`__get__` method for binding methods during attribute access. This +means that functions are non-data descriptors that return bound methods +during dotted lookup from an instance. Here's how it works: + +.. testcode:: class Function: - . . . + ... + def __get__(self, obj, objtype=None): "Simulate func_descr_get() in Objects/funcobject.c" if obj is None: return self - return types.MethodType(self, obj) + return MethodType(self, obj) -Running the interpreter shows how the function descriptor works in practice:: +Running the following class in the interpreter shows how the function +descriptor works in practice: - >>> class D: - ... def f(self, x): - ... return x - ... - >>> d = D() +.. testcode:: + + class D: + def f(self, x): + return x + +The function has a :term:`qualified name` attribute to support introspection: + +.. doctest:: + + >>> D.f.__qualname__ + 'D.f' + +Accessing the function through the class dictionary does not invoke +:meth:`__get__`. Instead, it just returns the underlying function object:: - # Access through the class dictionary does not invoke __get__. - # It just returns the underlying function object. >>> D.__dict__['f'] - # Dotted access from a class calls __get__() which just returns - # the underlying function unchanged. +Dotted access from a class calls :meth:`__get__` which just returns the +underlying function unchanged:: + >>> D.f - # The function has a __qualname__ attribute to support introspection - >>> D.f.__qualname__ - 'D.f' +The interesting behavior occurs during dotted access from an instance. The +dotted lookup calls :meth:`__get__` which returns a bound method object:: - # Dotted access from an instance calls __get__() which returns the - # function wrapped in a bound method object + >>> d = D() >>> d.f > - # Internally, the bound method stores the underlying function and - # the bound instance. +Internally, the bound method stores the underlying function and the bound +instance:: + >>> d.f.__func__ - + + >>> d.f.__self__ <__main__.D object at 0x1012e1f98> +If you have ever wondered where *self* comes from in regular methods or where +*cls* comes from in class methods, this is it! + -Static Methods and Class Methods --------------------------------- +Static methods +-------------- Non-data descriptors provide a simple mechanism for variations on the usual patterns of binding functions into methods. To recap, functions have a :meth:`__get__` method so that they can be converted to a method when accessed as attributes. The non-data descriptor transforms an -``obj.f(*args)`` call into ``f(obj, *args)``. Calling ``klass.f(*args)`` +``obj.f(*args)`` call into ``f(obj, *args)``. Calling ``cls.f(*args)`` becomes ``f(*args)``. This chart summarizes the binding and its two most useful variants: +-----------------+----------------------+------------------+ | Transformation | Called from an | Called from a | - | | Object | Class | + | | object | class | +=================+======================+==================+ | function | f(obj, \*args) | f(\*args) | +-----------------+----------------------+------------------+ | staticmethod | f(\*args) | f(\*args) | +-----------------+----------------------+------------------+ - | classmethod | f(type(obj), \*args) | f(klass, \*args) | + | classmethod | f(type(obj), \*args) | f(cls, \*args) | +-----------------+----------------------+------------------+ Static methods return the underlying function without changes. Calling either @@ -362,21 +1171,27 @@ in statistical work but does not directly depend on a particular dataset. It can be called either from an object or the class: ``s.erf(1.5) --> .9332`` or ``Sample.erf(1.5) --> .9332``. -Since staticmethods return the underlying function with no changes, the example -calls are unexciting:: +Since static methods return the underlying function with no changes, the +example calls are unexciting: + +.. testcode:: + + class E: + @staticmethod + def f(x): + print(x) + +.. doctest:: - >>> class E: - ... def f(x): - ... print(x) - ... f = staticmethod(f) - ... >>> E.f(3) 3 >>> E().f(3) 3 Using the non-data descriptor protocol, a pure Python version of -:func:`staticmethod` would look like this:: +:func:`staticmethod` would look like this: + +.. doctest:: class StaticMethod: "Emulate PyStaticMethod_Type() in Objects/funcobject.c" @@ -387,44 +1202,59 @@ Using the non-data descriptor protocol, a pure Python version of def __get__(self, obj, objtype=None): return self.f + +Class methods +------------- + Unlike static methods, class methods prepend the class reference to the argument list before calling the function. This format is the same -for whether the caller is an object or a class:: +for whether the caller is an object or a class: - >>> class E: - ... def f(klass, x): - ... return klass.__name__, x - ... f = classmethod(f) - ... - >>> print(E.f(3)) - ('E', 3) - >>> print(E().f(3)) - ('E', 3) +.. testcode:: + + class F: + @classmethod + def f(cls, x): + return cls.__name__, x +.. doctest:: -This behavior is useful whenever the function only needs to have a class -reference and does not care about any underlying data. One use for classmethods -is to create alternate class constructors. In Python 2.3, the classmethod -:func:`dict.fromkeys` creates a new dictionary from a list of keys. The pure -Python equivalent is:: + >>> F.f(3) + ('F', 3) + >>> F().f(3) + ('F', 3) - class Dict: - . . . - def fromkeys(klass, iterable, value=None): +This behavior is useful whenever the method only needs to have a class +reference and does not rely on data stored in a specific instance. One use for +class methods is to create alternate class constructors. For example, the +classmethod :func:`dict.fromkeys` creates a new dictionary from a list of +keys. The pure Python equivalent is: + +.. testcode:: + + class Dict(dict): + @classmethod + def fromkeys(cls, iterable, value=None): "Emulate dict_fromkeys() in Objects/dictobject.c" - d = klass() + d = cls() for key in iterable: d[key] = value return d - fromkeys = classmethod(fromkeys) -Now a new dictionary of unique keys can be constructed like this:: +Now a new dictionary of unique keys can be constructed like this: + +.. doctest:: - >>> Dict.fromkeys('abracadabra') - {'a': None, 'r': None, 'b': None, 'c': None, 'd': None} + >>> d = Dict.fromkeys('abracadabra') + >>> type(d) is Dict + True + >>> d + {'a': None, 'b': None, 'r': None, 'c': None, 'd': None} Using the non-data descriptor protocol, a pure Python version of -:func:`classmethod` would look like this:: +:func:`classmethod` would look like this: + +.. testcode:: class ClassMethod: "Emulate PyClassMethod_Type() in Objects/funcobject.c" @@ -432,10 +1262,301 @@ Using the non-data descriptor protocol, a pure Python version of def __init__(self, f): self.f = f - def __get__(self, obj, klass=None): - if klass is None: - klass = type(obj) - def newfunc(*args): - return self.f(klass, *args) - return newfunc + def __get__(self, obj, cls=None): + if cls is None: + cls = type(obj) + if hasattr(obj, '__get__'): + return self.f.__get__(cls) + return MethodType(self.f, cls) + +.. testcode:: + :hide: + + # Verify the emulation works + class T: + @ClassMethod + def cm(cls, x, y): + return (cls, x, y) + +.. doctest:: + :hide: + + >>> T.cm(11, 22) + (, 11, 22) + + # Also call it from an instance + >>> t = T() + >>> t.cm(11, 22) + (, 11, 22) + +The code path for ``hasattr(obj, '__get__')`` was added in Python 3.9 and +makes it possible for :func:`classmethod` to support chained decorators. +For example, a classmethod and property could be chained together: +.. testcode:: + + class G: + @classmethod + @property + def __doc__(cls): + return f'A doc for {cls.__name__!r}' + +.. doctest:: + + >>> G.__doc__ + "A doc for 'G'" + + +Member objects and __slots__ +---------------------------- + +When a class defines ``__slots__``, it replaces instance dictionaries with a +fixed-length array of slot values. From a user point of view that has +several effects: + +1. Provides immediate detection of bugs due to misspelled attribute +assignments. Only attribute names specified in ``__slots__`` are allowed: + +.. testcode:: + + class Vehicle: + __slots__ = ('id_number', 'make', 'model') + +.. doctest:: + + >>> auto = Vehicle() + >>> auto.id_nubmer = 'VYE483814LQEX' + Traceback (most recent call last): + ... + AttributeError: 'Vehicle' object has no attribute 'id_nubmer' + +2. Helps create immutable objects where descriptors manage access to private +attributes stored in ``__slots__``: + +.. testcode:: + + class Immutable: + + __slots__ = ('_dept', '_name') # Replace the instance dictionary + + def __init__(self, dept, name): + self._dept = dept # Store to private attribute + self._name = name # Store to private attribute + + @property # Read-only descriptor + def dept(self): + return self._dept + + @property + def name(self): # Read-only descriptor + return self._name + +.. doctest:: + + >>> mark = Immutable('Botany', 'Mark Watney') + >>> mark.dept + 'Botany' + >>> mark.dept = 'Space Pirate' + Traceback (most recent call last): + ... + AttributeError: can't set attribute + >>> mark.location = 'Mars' + Traceback (most recent call last): + ... + AttributeError: 'Immutable' object has no attribute 'location' + +3. Saves memory. On a 64-bit Linux build, an instance with two attributes +takes 48 bytes with ``__slots__`` and 152 bytes without. This `flyweight +design pattern `_ likely only +matters when a large number of instances are going to be created. + +4. Blocks tools like :func:`functools.cached_property` which require an +instance dictionary to function correctly: + +.. testcode:: + + from functools import cached_property + + class CP: + __slots__ = () # Eliminates the instance dict + + @cached_property # Requires an instance dict + def pi(self): + return 4 * sum((-1.0)**n / (2.0*n + 1.0) + for n in reversed(range(100_000))) + +.. doctest:: + + >>> CP().pi + Traceback (most recent call last): + ... + TypeError: No '__dict__' attribute on 'CP' instance to cache 'pi' property. + +It is not possible to create an exact drop-in pure Python version of +``__slots__`` because it requires direct access to C structures and control +over object memory allocation. However, we can build a mostly faithful +simulation where the actual C structure for slots is emulated by a private +``_slotvalues`` list. Reads and writes to that private structure are managed +by member descriptors: + +.. testcode:: + + null = object() + + class Member: + + def __init__(self, name, clsname, offset): + 'Emulate PyMemberDef in Include/structmember.h' + # Also see descr_new() in Objects/descrobject.c + self.name = name + self.clsname = clsname + self.offset = offset + + def __get__(self, obj, objtype=None): + 'Emulate member_get() in Objects/descrobject.c' + # Also see PyMember_GetOne() in Python/structmember.c + value = obj._slotvalues[self.offset] + if value is null: + raise AttributeError(self.name) + return value + + def __set__(self, obj, value): + 'Emulate member_set() in Objects/descrobject.c' + obj._slotvalues[self.offset] = value + + def __delete__(self, obj): + 'Emulate member_delete() in Objects/descrobject.c' + value = obj._slotvalues[self.offset] + if value is null: + raise AttributeError(self.name) + obj._slotvalues[self.offset] = null + + def __repr__(self): + 'Emulate member_repr() in Objects/descrobject.c' + return f'' + +The :meth:`type.__new__` method takes care of adding member objects to class +variables: + +.. testcode:: + + class Type(type): + 'Simulate how the type metaclass adds member objects for slots' + + def __new__(mcls, clsname, bases, mapping): + 'Emuluate type_new() in Objects/typeobject.c' + # type_new() calls PyTypeReady() which calls add_methods() + slot_names = mapping.get('slot_names', []) + for offset, name in enumerate(slot_names): + mapping[name] = Member(name, clsname, offset) + return type.__new__(mcls, clsname, bases, mapping) + +The :meth:`object.__new__` method takes care of creating instances that have +slots instead of an instance dictionary. Here is a rough simulation in pure +Python: + +.. testcode:: + + class Object: + 'Simulate how object.__new__() allocates memory for __slots__' + + def __new__(cls, *args): + 'Emulate object_new() in Objects/typeobject.c' + inst = super().__new__(cls) + if hasattr(cls, 'slot_names'): + empty_slots = [null] * len(cls.slot_names) + object.__setattr__(inst, '_slotvalues', empty_slots) + return inst + + def __setattr__(self, name, value): + 'Emulate _PyObject_GenericSetAttrWithDict() Objects/object.c' + cls = type(self) + if hasattr(cls, 'slot_names') and name not in cls.slot_names: + raise AttributeError( + f'{type(self).__name__!r} object has no attribute {name!r}' + ) + super().__setattr__(name, value) + + def __delattr__(self, name): + 'Emulate _PyObject_GenericSetAttrWithDict() Objects/object.c' + cls = type(self) + if hasattr(cls, 'slot_names') and name not in cls.slot_names: + raise AttributeError( + f'{type(self).__name__!r} object has no attribute {name!r}' + ) + super().__delattr__(name) + +To use the simulation in a real class, just inherit from :class:`Object` and +set the :term:`metaclass` to :class:`Type`: + +.. testcode:: + + class H(Object, metaclass=Type): + 'Instance variables stored in slots' + + slot_names = ['x', 'y'] + + def __init__(self, x, y): + self.x = x + self.y = y + +At this point, the metaclass has loaded member objects for *x* and *y*:: + + >>> from pprint import pp + >>> pp(dict(vars(H))) + {'__module__': '__main__', + '__doc__': 'Instance variables stored in slots', + 'slot_names': ['x', 'y'], + '__init__': , + 'x': , + 'y': } + +.. doctest:: + :hide: + + # We test this separately because the preceding section is not + # doctestable due to the hex memory address for the __init__ function + >>> isinstance(vars(H)['x'], Member) + True + >>> isinstance(vars(H)['y'], Member) + True + +When instances are created, they have a ``slot_values`` list where the +attributes are stored: + +.. doctest:: + + >>> h = H(10, 20) + >>> vars(h) + {'_slotvalues': [10, 20]} + >>> h.x = 55 + >>> vars(h) + {'_slotvalues': [55, 20]} + +Misspelled or unassigned attributes will raise an exception: + +.. doctest:: + + >>> h.xz + Traceback (most recent call last): + ... + AttributeError: 'H' object has no attribute 'xz' + +.. doctest:: + :hide: + + # Examples for deleted attributes are not shown because this section + # is already a bit lengthy. We still test that code here. + >>> del h.x + >>> hasattr(h, 'x') + False + + # Also test the code for uninitialized slots + >>> class HU(Object, metaclass=Type): + ... slot_names = ['x', 'y'] + ... + >>> hu = HU() + >>> hasattr(hu, 'x') + False + >>> hasattr(hu, 'y') + False diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 7a7a4cf9..02cd70f4 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -696,7 +696,7 @@ The add_argument() method * const_ - A constant value required by some action_ and nargs_ selections. * default_ - The value produced if the argument is absent from the - command line. + command line and if it is absent from the namespace object. * type_ - The type to which the command-line argument should be converted. @@ -1006,6 +1006,14 @@ was not present at the command line:: >>> parser.parse_args([]) Namespace(foo=42) +If the target namespace already has an attribute set, the action *default* +will not over write it:: + + >>> parser = argparse.ArgumentParser() + >>> parser.add_argument('--foo', default=42) + >>> parser.parse_args([], namespace=argparse.Namespace(foo=101)) + Namespace(foo=101) + If the ``default`` value is a string, the parser parses the value as if it were a command-line argument. In particular, the parser applies any type_ conversion argument, if provided, before setting the attribute on the @@ -1133,20 +1141,9 @@ container should match the type_ specified:: Any container can be passed as the *choices* value, so :class:`list` objects, :class:`set` objects, and custom containers are all supported. -This includes :class:`enum.Enum`, which could be used to restrain -argument's choices; if we reuse previous rock/paper/scissors game example, -this could be as follows:: - - >>> from enum import Enum - >>> class GameMove(Enum): - ... ROCK = 'rock' - ... PAPER = 'paper' - ... SCISSORS = 'scissors' - ... - >>> parser = argparse.ArgumentParser(prog='game.py') - >>> parser.add_argument('move', type=GameMove, choices=GameMove) - >>> parser.parse_args(['rock']) - Namespace(move=) + +Use of :class:`enum.Enum` is not recommended because it is difficult to +control its appearance in usage, help, and error messages. required diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index 755c60fb..95cb017d 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -1503,6 +1503,13 @@ Async and await fields as :class:`For` and :class:`With`, respectively. Only valid in the body of an :class:`AsyncFunctionDef`. +.. note:: + When a string is parsed by :func:`ast.parse`, operator nodes (subclasses + of :class:`ast.operator`, :class:`ast.unaryop`, :class:`ast.cmpop`, + :class:`ast.boolop` and :class:`ast.expr_context`) on the returned tree + will be singletons. Changes to one will be reflected in all other + occurrences of the same value (e.g. :class:`ast.Add`). + :mod:`ast` Helpers ------------------ @@ -1753,6 +1760,34 @@ and classes for traversing abstract syntax trees: Added the *indent* option. +.. _ast-compiler-flags: + +Compiler Flags +-------------- + +The following flags may be passed to :func:`compile` in order to change +effects on the compilation of a program: + +.. data:: PyCF_ALLOW_TOP_LEVEL_AWAIT + + Enables support for top-level ``await``, ``async for``, ``async with`` + and async comprehensions. + + .. versionadded:: 3.8 + +.. data:: PyCF_ONLY_AST + + Generates and returns an abstract syntax tree instead of returning a + compiled code object. + +.. data:: PyCF_TYPE_COMMENTS + + Enables support for :pep:`484` and :pep:`526` style type comments + (``# type: ``, ``# type: ignore ``). + + .. versionadded:: 3.8 + + .. _ast-cli: Command-Line Usage diff --git a/Doc/library/asyncio-policy.rst b/Doc/library/asyncio-policy.rst index d9d3232d..5e69525e 100644 --- a/Doc/library/asyncio-policy.rst +++ b/Doc/library/asyncio-policy.rst @@ -209,7 +209,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 - time a child terminates), but stating a thread per process requires extra memory. + time a child terminates), but starting a thread per process requires extra memory. This watcher is used by default. @@ -219,7 +219,7 @@ implementation used by the asyncio event loop: This implementation registers a :py:data:`SIGCHLD` signal handler on instantiation. That can break third-party code that installs a custom handler for - `SIGCHLD`. signal). + :py:data:`SIGCHLD` signal. The watcher avoids disrupting other code spawning processes by polling every process explicitly on a :py:data:`SIGCHLD` signal. diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index eb1312a9..b0330349 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -110,10 +110,8 @@ Creating Subprocesses .. note:: - The default asyncio event loop implementation on **Windows** does not - support subprocesses. Subprocesses are available for Windows if a - :class:`ProactorEventLoop` is used. - See :ref:`Subprocess Support on Windows ` + Subprocesses are available for Windows if a :class:`ProactorEventLoop` is + used. See :ref:`Subprocess Support on Windows ` for details. .. seealso:: diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index 99f01254..c638f126 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -504,10 +504,10 @@ Waiting Primitives return_when=ALL_COMPLETED) Run :ref:`awaitable objects ` in the *aws* - set concurrently and block until the condition specified + iterable concurrently and block until the condition specified by *return_when*. - The *aws* set must not be empty. + The *aws* iterable must not be empty. Returns two sets of Tasks/Futures: ``(done, pending)``. @@ -593,9 +593,9 @@ Waiting Primitives .. function:: as_completed(aws, \*, loop=None, timeout=None) Run :ref:`awaitable objects ` in the *aws* - set concurrently. Return an iterator of coroutines. + iterable concurrently. Return an iterator of coroutines. Each coroutine returned can be awaited to get the earliest next - result from the set of the remaining awaitables. + result from the iterable of the remaining awaitables. Raises :exc:`asyncio.TimeoutError` if the timeout occurs before all Futures are done. @@ -618,7 +618,7 @@ Running in Threads Asynchronously run function *func* in a separate thread. Any \*args and \*\*kwargs supplied for this function are directly passed - to *func*. Also, the current :class:`contextvars.Context` is propogated, + to *func*. Also, the current :class:`contextvars.Context` is propagated, allowing context variables from the event loop thread to be accessed in the separate thread. diff --git a/Doc/library/audit_events.rst b/Doc/library/audit_events.rst index 3c68a151..367d56e4 100644 --- a/Doc/library/audit_events.rst +++ b/Doc/library/audit_events.rst @@ -19,3 +19,29 @@ information on handling these events. specific documentation for actual events raised. .. audit-event-table:: + +The following events are raised internally and do not correspond to any +public API of CPython: + ++--------------------------+-------------------------------------------+ +| Audit event | Arguments | ++==========================+===========================================+ +| _winapi.CreateFile | ``file_name``, ``desired_access``, | +| | ``share_mode``, ``creation_disposition``, | +| | ``flags_and_attributes`` | ++--------------------------+-------------------------------------------+ +| _winapi.CreateJunction | ``src_path``, ``dst_path`` | ++--------------------------+-------------------------------------------+ +| _winapi.CreateNamedPipe | ``name``, ``open_mode``, ``pipe_mode`` | ++--------------------------+-------------------------------------------+ +| _winapi.CreatePipe | | ++--------------------------+-------------------------------------------+ +| _winapi.CreateProcess | ``application_name``, ``command_line``, | +| | ``current_directory`` | ++--------------------------+-------------------------------------------+ +| _winapi.OpenProcess | ``process_id``, ``desired_access`` | ++--------------------------+-------------------------------------------+ +| _winapi.TerminateProcess | ``handle``, ``exit_code`` | ++--------------------------+-------------------------------------------+ +| ctypes.PyObj_FromPtr | ``obj`` | ++--------------------------+-------------------------------------------+ diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst index 85cdc16a..637baf49 100644 --- a/Doc/library/bz2.rst +++ b/Doc/library/bz2.rst @@ -266,7 +266,6 @@ Below are some examples of typical usage of the :mod:`bz2` module. Using :func:`compress` and :func:`decompress` to demonstrate round-trip compression: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -275,11 +274,9 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> c = bz2.compress(data) >>> len(data) / len(c) # Data compression ratio 1.513595166163142 - >>> d = bz2.decompress(c) >>> data == d # Check equality to original object after round-trip True @@ -287,7 +284,6 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress Using :class:`BZ2Compressor` for incremental compression: >>> import bz2 - >>> def gen_data(chunks=10, chunksize=1000): ... """Yield incremental blocks of chunksize bytes.""" ... for _ in range(chunks): @@ -310,7 +306,6 @@ while ordered, repetitive data usually yields a high compression ratio. Writing and reading a bzip2-compressed file in binary mode: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -319,14 +314,11 @@ Writing and reading a bzip2-compressed file in binary mode: ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> with bz2.open("myfile.bz2", "wb") as f: ... # Write compressed data to file ... unused = f.write(data) - >>> with bz2.open("myfile.bz2", "rb") as f: ... # Decompress data from file ... content = f.read() - >>> content == data # Check equality to original object after round-trip True diff --git a/Doc/library/collections.abc.rst b/Doc/library/collections.abc.rst index db0e25bb..2345e78a 100644 --- a/Doc/library/collections.abc.rst +++ b/Doc/library/collections.abc.rst @@ -291,7 +291,7 @@ Notes on using :class:`Set` and :class:`MutableSet` as a mixin: :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` - with a classmethod that can construct new instances from + with a classmethod or regular method that can construct new instances from an iterable argument. (2) diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 549ac1bc..2ffdb49d 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -849,6 +849,9 @@ they add the ability to access fields by name instead of position index. Named tuple instances do not have per-instance dictionaries, so they are lightweight and require no more memory than regular tuples. + To support pickling, the named tuple class should be assigned to a variable + that matches *typename*. + .. versionchanged:: 3.1 Added support for *rename*. diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst index 675a9ffd..61d6c114 100644 --- a/Doc/library/concurrent.futures.rst +++ b/Doc/library/concurrent.futures.rst @@ -236,9 +236,9 @@ to a :class:`ProcessPoolExecutor` will result in deadlock. An :class:`Executor` subclass that executes calls asynchronously using a pool of at most *max_workers* processes. If *max_workers* is ``None`` or not given, it will default to the number of processors on the machine. - If *max_workers* is lower or equal to ``0``, then a :exc:`ValueError` + If *max_workers* is less than or equal to ``0``, then a :exc:`ValueError` will be raised. - On Windows, *max_workers* must be equal or lower than ``61``. If it is not + On Windows, *max_workers* must be less than or equal to ``61``. If it is not then :exc:`ValueError` will be raised. If *max_workers* is ``None``, then the default chosen will be at most ``61``, even if more processors are available. @@ -250,7 +250,7 @@ to a :class:`ProcessPoolExecutor` will result in deadlock. each worker process; *initargs* is a tuple of arguments passed to the initializer. Should *initializer* raise an exception, all currently pending jobs will raise a :exc:`~concurrent.futures.process.BrokenProcessPool`, - as well any attempt to submit more jobs to the pool. + as well as any attempt to submit more jobs to the pool. .. versionchanged:: 3.3 When one of the worker processes terminates abruptly, a diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index 2d6c6d0a..bf32d3e5 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -1326,6 +1326,21 @@ way is to instantiate one of the following classes: libraries use the standard C calling convention, and are assumed to return :c:type:`int`. + On Windows creating a :class:`CDLL` instance may fail even if the DLL name + exists. When a dependent DLL of the loaded DLL is not found, a + :exc:`OSError` error is raised with the message *"[WinError 126] The + specified module could not be found".* This error message does not contain + the name of the missing DLL because the Windows API does not return this + information making this error hard to diagnose. To resolve this error and + determine which DLL is not found, you need to find the list of dependent + DLLs and determine which one is not found using Windows debugging and + tracing tools. + +.. seealso:: + + `Microsoft DUMPBIN tool `_ + -- A tool to find DLL dependents. + .. class:: OleDLL(name, mode=DEFAULT_MODE, handle=None, use_errno=False, use_last_error=False, winmode=0) @@ -1618,7 +1633,7 @@ They are instances of a private class: ``ctypes.seh_exception`` with argument ``code`` will be raised, allowing an audit hook to replace the exception with its own. -.. audit-event:: ctypes.call_function func_pointer,arguments ctype-foreign-functions +.. audit-event:: ctypes.call_function func_pointer,arguments foreign-functions Some ways to invoke foreign function calls may raise an auditing event ``ctypes.call_function`` with arguments ``function pointer`` and ``arguments``. @@ -2545,4 +2560,3 @@ Arrays and pointers Returns the object to which to pointer points. Assigning to this attribute changes the pointer to point to the assigned object. - diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index d0307bd8..c1e72d1d 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -861,7 +861,7 @@ All of the following opcodes use their arguments. .. opcode:: LIST_TO_TUPLE - Pops a list from the stack and pushes a tuple containing the same values. + Pops a list from the stack and pushes a tuple containing the same values. .. versionadded:: 3.9 @@ -889,7 +889,7 @@ All of the following opcodes use their arguments. .. opcode:: DICT_MERGE - Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys. + Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys. .. versionadded:: 3.9 @@ -907,14 +907,14 @@ All of the following opcodes use their arguments. .. opcode:: IS_OP (invert) - Performs ``is`` comparison, or ``is not`` if ``invert`` is 1. + Performs ``is`` comparison, or ``is not`` if ``invert`` is 1. .. versionadded:: 3.9 .. opcode:: CONTAINS_OP (invert) - Performs ``in`` comparison, or ``not in`` if ``invert`` is 1. + Performs ``in`` comparison, or ``not in`` if ``invert`` is 1. .. versionadded:: 3.9 @@ -955,8 +955,8 @@ All of the following opcodes use their arguments. .. opcode:: JUMP_IF_NOT_EXC_MATCH (target) - Tests whether the second value on the stack is an exception matching TOS, - and jumps if it is not. Pops two values from the stack. + Tests whether the second value on the stack is an exception matching TOS, + and jumps if it is not. Pops two values from the stack. .. versionadded:: 3.9 diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 124085ed..9c12b6c4 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -150,8 +150,8 @@ are always available. They are listed here in alphabetical order. * If it is an *integer*, the array will have that size and will be initialized with null bytes. - * If it is an object conforming to the *buffer* interface, a read-only buffer - of the object will be used to initialize the bytes array. + * If it is an object conforming to the :ref:`buffer interface `, + a read-only buffer of the object will be used to initialize the bytes array. * If it is an *iterable*, it must be an iterable of integers in the range ``0 <= x < 256``, which are used as the initial contents of the array. @@ -245,26 +245,24 @@ are always available. They are listed here in alphabetical order. interactive statement (in the latter case, expression statements that evaluate to something other than ``None`` will be printed). - The optional arguments *flags* and *dont_inherit* control which :ref:`future - statements ` affect the compilation of *source*. If neither - is present (or both are zero) the code is compiled with those future - statements that are in effect in the code that is calling :func:`compile`. If the - *flags* argument is given and *dont_inherit* is not (or is zero) then the - future statements specified by the *flags* argument are used in addition to - those that would be used anyway. If *dont_inherit* is a non-zero integer then - the *flags* argument is it -- the future statements in effect around the call - to compile are ignored. - - Future statements are specified by bits which can be bitwise ORed together to - specify multiple statements. The bitfield required to specify a given feature - can be found as the :attr:`~__future__._Feature.compiler_flag` attribute on - the :class:`~__future__._Feature` instance in the :mod:`__future__` module. - - The optional argument *flags* also controls whether the compiled source is - allowed to contain top-level ``await``, ``async for`` and ``async with``. - When the bit ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` is set, the return code - object has ``CO_COROUTINE`` set in ``co_code``, and can be interactively - executed via ``await eval(code_object)``. + The optional arguments *flags* and *dont_inherit* control which + :ref:`compiler options ` should be activated + and which :ref:`future features ` should be allowed. If neither + is present (or both are zero) the code is compiled with the same flags that + affect the code that is calling :func:`compile`. If the *flags* + argument is given and *dont_inherit* is not (or is zero) then the compiler + options and the future statements specified by the *flags* argument are used + in addition to those that would be used anyway. If *dont_inherit* is a + non-zero integer then the *flags* argument is it -- the flags (future + features and compiler options) in the surrounding code are ignored. + + Compiler options and future statements are specified by bits which can be + bitwise ORed together to specify multiple options. The bitfield required to + specify a given future feature can be found as the + :attr:`~__future__._Feature.compiler_flag` attribute on the + :class:`~__future__._Feature` instance in the :mod:`__future__` module. + :ref:`Compiler flags ` can be found in :mod:`ast` + module, with ``PyCF_`` prefix. The argument *optimize* specifies the optimization level of the compiler; the default value of ``-1`` selects the optimization level of the interpreter as @@ -768,6 +766,8 @@ are always available. They are listed here in alphabetical order. .. impl-detail:: This is the address of the object in memory. + .. audit-event:: builtins.id id id + .. function:: input([prompt]) diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst index 14aa184e..4869b67c 100644 --- a/Doc/library/functools.rst +++ b/Doc/library/functools.rst @@ -73,16 +73,31 @@ The :mod:`functools` module defines the following functions: def variance(self): return statistics.variance(self._data) - .. versionadded:: 3.8 + Note, this decorator interferes with the operation of :pep:`412` + key-sharing dictionaries. This means that instance dictionaries + can take more space than usual. - .. note:: + Also, this decorator requires that the ``__dict__`` attribute on each instance + be a mutable mapping. This means it will not work with some types, such as + metaclasses (since the ``__dict__`` attributes on type instances are + read-only proxies for the class namespace), and those that specify + ``__slots__`` without including ``__dict__`` as one of the defined slots + (as such classes don't provide a ``__dict__`` attribute at all). + + If a mutable mapping is not available or if space-efficient key sharing + is desired, an effect similar to :func:`cached_property` can be achieved + by a stacking :func:`property` on top of :func:`cache`:: - This decorator requires that the ``__dict__`` attribute on each instance - be a mutable mapping. This means it will not work with some types, such as - metaclasses (since the ``__dict__`` attributes on type instances are - read-only proxies for the class namespace), and those that specify - ``__slots__`` without including ``__dict__`` as one of the defined slots - (as such classes don't provide a ``__dict__`` attribute at all). + class DataSet: + def __init__(self, sequence_of_numbers): + self._data = sequence_of_numbers + + @property + @cache + def stdev(self): + return statistics.stdev(self._data) + + .. versionadded:: 3.8 .. function:: cmp_to_key(func) @@ -651,4 +666,4 @@ callable, weak referencable, 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 -during instance attribute look-up. \ No newline at end of file +during instance attribute look-up. diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst index 43096b01..a59a5d3a 100644 --- a/Doc/library/idle.rst +++ b/Doc/library/idle.rst @@ -527,30 +527,33 @@ by typing '_' after '.', either before or after the box is opened. Calltips ^^^^^^^^ -A calltip is shown when one types :kbd:`(` after the name of an *accessible* -function. A name expression may include dots and subscripts. A calltip -remains until it is clicked, the cursor is moved out of the argument area, -or :kbd:`)` is typed. When the cursor is in the argument part of a definition, -the menu or shortcut display a calltip. - -A calltip consists of the function signature and the first line of the -docstring. For builtins without an accessible signature, the calltip -consists of all lines up the fifth line or the first blank line. These -details may change. - -The set of *accessible* functions depends on what modules have been imported -into the user process, including those imported by Idle itself, -and what definitions have been run, all since the last restart. +A calltip is shown automatically when one types :kbd:`(` after the name +of an *accessible* function. A function name expression may include +dots and subscripts. A calltip remains until it is clicked, the cursor +is moved out of the argument area, or :kbd:`)` is typed. Whenever the +cursor is in the argument part of a definition, select Edit and "Show +Call Tip" on the menu or enter its shortcut to display a calltip. + +The calltip consists of the function's signature and docstring up to +the latter's first blank line or the fifth non-blank line. (Some builtin +functions lack an accessible signature.) A '/' or '*' in the signature +indicates that the preceding or following arguments are passed by +position or name (keyword) only. Details are subject to change. + +In Shell, the accessible functions depends on what modules have been +imported into the user process, including those imported by Idle itself, +and which definitions have been run, all since the last restart. For example, restart the Shell and enter ``itertools.count(``. A calltip -appears because Idle imports itertools into the user process for its own use. -(This could change.) Enter ``turtle.write(`` and nothing appears. Idle does -not import turtle. The menu or shortcut do nothing either. Enter -``import turtle`` and then ``turtle.write(`` will work. - -In an editor, import statements have no effect until one runs the file. One -might want to run a file after writing the import statements at the top, -or immediately run an existing file before editing. +appears because Idle imports itertools into the user process for its own +use. (This could change.) Enter ``turtle.write(`` and nothing appears. +Idle does not itself import turtle. The menu entry and shortcut also do +nothing. Enter ``import turtle``. Thereafter, ``turtle.write(`` +will display a calltip. + +In an editor, import statements have no effect until one runs the file. +One might want to run a file after writing import statements, after +adding function definitions, or after opening an existing file. .. _code-context: diff --git a/Doc/library/imaplib.rst b/Doc/library/imaplib.rst index 02ecfd95..65681ec0 100644 --- a/Doc/library/imaplib.rst +++ b/Doc/library/imaplib.rst @@ -174,9 +174,9 @@ example of usage. .. seealso:: - Documents describing the protocol, and sources and binaries for servers - implementing it, can all be found at the University of Washington's *IMAP - Information Center* (https://www.washington.edu/imap/). + Documents describing the protocol, sources for servers + implementing it, by the University of Washington's IMAP Information Center + can all be found at (**Source Code**) https://github.com/uw-imap/imap (**Not Maintained**). .. _imap4-objects: diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index b51db9e8..9027ba58 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -438,8 +438,9 @@ ABC hierarchy:: package. This attribute is not set on modules. - :attr:`__package__` - The parent package for the module/package. If the module is - top-level then it has a value of the empty string. The + The fully-qualified name of the package under which the module was + loaded as a submodule (or the empty string for top-level modules). + For packages, it is the same as :attr:`__name__`. The :func:`importlib.util.module_for_loader` decorator can handle the details for :attr:`__package__`. @@ -1344,8 +1345,8 @@ find and load modules. (``__loader__``) - The loader to use for loading. For namespace packages this should be - set to ``None``. + The :term:`Loader ` that should be used when loading + the module. :term:`Finders ` should always set this. .. attribute:: origin @@ -1378,8 +1379,9 @@ find and load modules. (``__package__``) - (Read-only) Fully-qualified name of the package to which the module - belongs as a submodule (or ``None``). + (Read-only) The fully-qualified name of the package under which the module + should be loaded as a submodule (or the empty string for top-level modules). + For packages, it is the same as :attr:`__name__`. .. attribute:: has_location diff --git a/Doc/library/ipaddress.rst b/Doc/library/ipaddress.rst index 5f5e6641..d6d1f1e3 100644 --- a/Doc/library/ipaddress.rst +++ b/Doc/library/ipaddress.rst @@ -202,6 +202,32 @@ write code that handles both IP versions correctly. Address objects are .. _iana-ipv4-special-registry: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml .. _iana-ipv6-special-registry: https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml +.. method:: IPv4Address.__format__(fmt) + + Returns a string representation of the IP address, controlled by + an explicit format string. + *fmt* can be one of the following: ``'s'``, the default option, + equivalent to :func:`str`, ``'b'`` for a zero-padded binary string, + ``'X'`` or ``'x'`` for an uppercase or lowercase hexadecimal + representation, or ``'n'``, which is equivalent to ``'b'`` for IPv4 + addresses and ``'x'`` for IPv6. For binary and hexadecimal + representations, the form specifier ``'#'`` and the grouping option + ``'_'`` are available. ``__format__`` is used by ``format``, ``str.format`` + and f-strings. + + >>> format(ipaddress.IPv4Address('192.168.0.1')) + '192.168.0.1' + >>> '{:#b}'.format(ipaddress.IPv4Address('192.168.0.1')) + '0b11000000101010000000000000000001' + >>> f'{ipaddress.IPv6Address("2001:db8::1000"):s}' + '2001:db8::1000' + >>> format(ipaddress.IPv6Address('2001:db8::1000'), '_X') + '2001_0DB8_0000_0000_0000_0000_0000_1000' + >>> '{:#_n}'.format(ipaddress.IPv6Address('2001:db8::1000')) + '0x2001_0db8_0000_0000_0000_0000_0000_1000' + + .. versionadded:: 3.9 + .. class:: IPv6Address(address) @@ -246,8 +272,8 @@ write code that handles both IP versions correctly. Address objects are groups consisting entirely of zeroes included. - For the following attributes, see the corresponding documentation of the - :class:`IPv4Address` class: + For the following attributes and methods, see the corresponding + documentation of the :class:`IPv4Address` class: .. attribute:: packed .. attribute:: reverse_pointer @@ -297,6 +323,12 @@ write code that handles both IP versions correctly. Address objects are the embedded ``(server, client)`` IP address pair. For any other address, this property will be ``None``. +.. method:: IPv6Address.__format__(fmt) + + Refer to the corresponding method documentation in + :class:`IPv4Address`. + + .. versionadded:: 3.9 Conversion to Strings and Integers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 107bc515..3de66c93 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -755,7 +755,7 @@ which incur interpreter overhead. "Count how many times the predicate is true" return sum(map(pred, iterable)) - def padnone(iterable): + def pad_none(iterable): """Returns the sequence elements and then returns None indefinitely. Useful for emulating the behavior of the built-in map() function. @@ -809,7 +809,7 @@ which incur interpreter overhead. nexts = cycle(islice(nexts, num_active)) def partition(pred, iterable): - 'Use a predicate to partition entries into false entries and true entries' + "Use a predicate to partition entries into false entries and true entries" # partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9 t1, t2 = tee(iterable) return filterfalse(pred, t1), filter(pred, t2) @@ -881,7 +881,7 @@ which incur interpreter overhead. def random_product(*args, repeat=1): "Random selection from itertools.product(*args, **kwds)" pools = [tuple(pool) for pool in args] * repeat - return tuple(random.choice(pool) for pool in pools) + return tuple(map(random.choice, pools)) def random_permutation(iterable, r=None): "Random selection from itertools.permutations(iterable, r)" @@ -900,11 +900,11 @@ which incur interpreter overhead. "Random selection from itertools.combinations_with_replacement(iterable, r)" pool = tuple(iterable) n = len(pool) - indices = sorted(random.randrange(n) for i in range(r)) + indices = sorted(random.choices(range(n), k=r)) return tuple(pool[i] for i in indices) def nth_combination(iterable, r, index): - 'Equivalent to list(combinations(iterable, r))[index]' + "Equivalent to list(combinations(iterable, r))[index]" pool = tuple(iterable) n = len(pool) if r < 0 or r > n: diff --git a/Doc/library/mailbox.rst b/Doc/library/mailbox.rst index f82a3b20..94d95d10 100644 --- a/Doc/library/mailbox.rst +++ b/Doc/library/mailbox.rst @@ -426,17 +426,14 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. seealso:: - `maildir man page from qmail `_ - The original specification of the format. + `maildir man page from Courier `_ + A specification of the format. Describes a common extension for + supporting folders. `Using maildir format `_ Notes on Maildir by its inventor. Includes an updated name-creation scheme and details on "info" semantics. - `maildir man page from Courier `_ - Another specification of the format. Describes a common extension for supporting - folders. - .. _mailbox-mbox: @@ -485,11 +482,8 @@ Supported mailbox formats are Maildir, mbox, MH, Babyl, and MMDF. .. seealso:: - `mbox man page from qmail `_ - A specification of the format and its variations. - `mbox man page from tin `_ - Another specification of the format, with details on locking. + A specification of the format, with details on locking. `Configuring Netscape Mail on Unix: Why The Content-Length Format is Bad `_ An argument for using the original mbox format rather than a variation. diff --git a/Doc/library/math.rst b/Doc/library/math.rst index 6ec1feee..b20e557b 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -130,7 +130,7 @@ Number-theoretic and representation functions Return the greatest common divisor of the specified integer arguments. If any of the arguments is nonzero, then the returned value is the largest - positive integer that is a divisor af all arguments. If all arguments + positive integer that is a divisor of all arguments. If all arguments are zero, then the returned value is ``0``. ``gcd()`` without arguments returns ``0``. diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index c9992ee0..ab84d39e 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -98,7 +98,7 @@ to start a process. These *start methods* are *spawn* The parent process starts a fresh python interpreter process. The child process will only inherit those resources necessary to run - the process objects :meth:`~Process.run` method. In particular, + the process object's :meth:`~Process.run` method. In particular, unnecessary file descriptors and handles from the parent process will not be inherited. Starting a process using this method is rather slow compared to using *fork* or *forkserver*. @@ -2569,9 +2569,9 @@ Address Formats filesystem. * An ``'AF_PIPE'`` address is a string of the form - :samp:`r'\\\\.\\pipe\\{PipeName}'`. To use :func:`Client` to connect to a named - pipe on a remote computer called *ServerName* one should use an address of the - form :samp:`r'\\\\{ServerName}\\pipe\\{PipeName}'` instead. + :samp:`r'\\\\.\\pipe\\{PipeName}'`. To use :func:`Client` to connect to a named + pipe on a remote computer called *ServerName* one should use an address of the + form :samp:`r'\\\\{ServerName}\\pipe\\{PipeName}'` instead. Note that any string beginning with two backslashes is assumed by default to be an ``'AF_PIPE'`` address rather than an ``'AF_UNIX'`` address. diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 64bc7358..6e287abb 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -3695,8 +3695,8 @@ written in Python, such as a mail server's external command delivery program. The positional-only arguments *path*, *args*, and *env* are similar to :func:`execve`. - The *path* parameter is the path to the executable file.The *path* should - contain a directory.Use :func:`posix_spawnp` to pass an executable file + The *path* parameter is the path to the executable file. The *path* should + contain a directory. Use :func:`posix_spawnp` to pass an executable file without directory. The *file_actions* argument may be a sequence of tuples describing actions diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst index 8e8e3775..b293adf4 100644 --- a/Doc/library/platform.rst +++ b/Doc/library/platform.rst @@ -209,13 +209,6 @@ Windows Platform which means the OS version uses debugging code, i.e. code that checks arguments, ranges, etc. - .. note:: - - This function works best with Mark Hammond's - :mod:`win32all` package installed, but also on Python 2.3 and - later (support for this was added in Python 2.6). It obviously - only runs on Win32 compatible platforms. - .. function:: win32_edition() Returns a string representing the current Windows edition. Possible diff --git a/Doc/library/poplib.rst b/Doc/library/poplib.rst index 2f349b35..9bf9212d 100644 --- a/Doc/library/poplib.rst +++ b/Doc/library/poplib.rst @@ -67,7 +67,7 @@ The :mod:`poplib` module provides two classes: .. audit-event:: poplib.connect self,host,port poplib.POP3_SSL - .. audit-event:: poplib.putline self,line popplib.POP3_SSL + .. audit-event:: poplib.putline self,line poplib.POP3_SSL All commands will raise an :ref:`auditing event ` ``poplib.putline`` with arguments ``self`` and ``line``, diff --git a/Doc/library/random.rst b/Doc/library/random.rst index 90366f49..8154dfc1 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -253,6 +253,8 @@ Functions for sequences order so that the sample is reproducible. +.. _real-valued-distributions: + Real-valued distributions ------------------------- @@ -317,6 +319,13 @@ be found in any statistics text. deviation. This is slightly faster than the :func:`normalvariate` function defined below. + Multithreading note: When two threads call this function + simultaneously, it is possible that they will receive the + same return value. This can be avoided in three ways. + 1) Have each thread use a different instance of the random + number generator. 2) Put locks around all calls. 3) Use the + slower, but thread-safe :func:`normalvariate` function instead. + .. function:: lognormvariate(mu, sigma) @@ -391,8 +400,8 @@ change across Python versions, but two aspects are guaranteed not to change: .. _random-examples: -Examples and Recipes --------------------- +Examples +-------- Basic examples:: @@ -536,3 +545,58 @@ Simulation of arrival times and service deliveries for a multiserver queue:: a tutorial by `Peter Norvig `_ covering the basics of probability theory, how to write simulations, and how to perform data analysis using Python. + + +Recipes +------- + +The default :func:`.random` returns multiples of 2⁻⁵³ in the range +*0.0 ≤ x < 1.0*. All such numbers are evenly spaced and are exactly +representable as Python floats. However, many other representable +floats in that interval are not possible selections. For example, +``0.05954861408025609`` isn't an integer multiple of 2⁻⁵³. + +The following recipe takes a different approach. All floats in the +interval are possible selections. The mantissa comes from a uniform +distribution of integers in the range *2⁵² ≤ mantissa < 2⁵³*. The +exponent comes from a geometric distribution where exponents smaller +than *-53* occur half as often as the next larger exponent. + +:: + + from random import Random + from math import ldexp + + class FullRandom(Random): + + def random(self): + mantissa = 0x10_0000_0000_0000 | self.getrandbits(52) + exponent = -53 + x = 0 + while not x: + x = self.getrandbits(32) + exponent += x.bit_length() - 32 + return ldexp(mantissa, exponent) + +All :ref:`real valued distributions ` +in the class will use the new method:: + + >>> fr = FullRandom() + >>> fr.random() + 0.05954861408025609 + >>> fr.expovariate(0.25) + 8.87925541791544 + +The recipe is conceptually equivalent to an algorithm that chooses from +all the multiples of 2⁻¹⁰⁷⁴ in the range *0.0 ≤ x < 1.0*. All such +numbers are evenly spaced, but most have to be rounded down to the +nearest representable Python float. (The value 2⁻¹⁰⁷⁴ is the smallest +positive unnormalized float and is equal to ``math.ulp(0.0)``.) + + +.. seealso:: + + `Generating Pseudo-random Floating-Point Values + `_ a + paper by Allen B. Downey describing ways to generate more + fine-grained floats than normally generated by :func:`.random`. diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index 1b094aeb..3f512276 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -158,9 +158,9 @@ Directory and files operations .. function:: copy(src, dst, *, follow_symlinks=True) Copies the file *src* to the file or directory *dst*. *src* and *dst* - should be strings. If *dst* specifies a directory, the file will be - copied into *dst* using the base filename from *src*. Returns the - path to the newly created file. + should be :term:`path-like objects ` or strings. If + *dst* specifies a directory, the file will be copied into *dst* using the + base filename from *src*. Returns the path to the newly created file. If *follow_symlinks* is false, and *src* is a symbolic link, *dst* will be created as a symbolic link. If *follow_symlinks* @@ -349,7 +349,7 @@ Directory and files operations will be created in or as *dst* 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 *dest* if + *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, :func:`copytree` is called, passing it the :func:`copy_function`. The default *copy_function* is :func:`copy2`. Using :func:`~shutil.copy` as the diff --git a/Doc/library/signal.rst b/Doc/library/signal.rst index 05b285ed..e1daeff4 100644 --- a/Doc/library/signal.rst +++ b/Doc/library/signal.rst @@ -117,7 +117,7 @@ The variables defined in the :mod:`signal` module are: Child process stopped or terminated. - .. availability:: Windows. + .. availability:: Unix. .. data:: SIGCLD diff --git a/Doc/library/site.rst b/Doc/library/site.rst index b424e1ba..2e3646f6 100644 --- a/Doc/library/site.rst +++ b/Doc/library/site.rst @@ -231,7 +231,9 @@ Module contents Return the path of the user-specific site-packages directory, :data:`USER_SITE`. If it is not initialized yet, this function will also set - it, respecting :envvar:`PYTHONNOUSERSITE` and :data:`USER_BASE`. + it, respecting :data:`USER_BASE`. To determine if the user-specific + site-packages was added to ``sys.path`` :data:`ENABLE_USER_SITE` should be + used. .. versionadded:: 3.2 diff --git a/Doc/library/smtplib.rst b/Doc/library/smtplib.rst index a88e358e..c1a20fee 100644 --- a/Doc/library/smtplib.rst +++ b/Doc/library/smtplib.rst @@ -115,7 +115,7 @@ Protocol) and :rfc:`1869` (SMTP Service Extensions). If the *timeout* parameter is set to be zero, it will raise a :class:`ValueError` to prevent the creation of a non-blocking socket -.. class:: LMTP(host='', port=LMTP_PORT, local_hostname=None, +.. class:: LMTP(host='', port=LMTP_PORT, local_hostname=None, \ source_address=None[, timeout]) The LMTP protocol, which is very similar to ESMTP, is heavily based on the diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index 5bcac20a..faf8a762 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -1091,6 +1091,19 @@ The :mod:`socket` module also offers various network-related services: .. versionchanged:: 3.8 Windows support was added. + .. note:: + + On Windows network interfaces have different names in different contexts + (all names are examples): + + * UUID: ``{FB605B73-AAC2-49A6-9A2F-25416AEA0573}`` + * name: ``ethernet_32770`` + * friendly name: ``vEthernet (nat)`` + * description: ``Hyper-V Virtual Ethernet Adapter`` + + This function returns names of the second form from the list, ``ethernet_32770`` + in this example case. + .. function:: if_nametoindex(if_name) @@ -1105,6 +1118,9 @@ The :mod:`socket` module also offers various network-related services: .. versionchanged:: 3.8 Windows support was added. + .. seealso:: + "Interface name" is a name as documented in :func:`if_nameindex`. + .. function:: if_indextoname(if_index) @@ -1119,6 +1135,9 @@ The :mod:`socket` module also offers various network-related services: .. versionchanged:: 3.8 Windows support was added. + .. seealso:: + "Interface name" is a name as documented in :func:`if_nameindex`. + .. _socket-objects: diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index c3f5c04a..a48cfa13 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -4119,6 +4119,12 @@ The constructors for both classes work the same: objects. If *iterable* is not specified, a new empty set is returned. + Sets can be created by several means: + + * Use a comma-separated list of elements within braces: ``{'jack', 'sjoerd'}`` + * Use a set comprehension: ``{c for c in 'abracadabra' if c not in 'abc'}`` + * Use the type constructor: ``set()``, ``set('foobar')``, ``set(['a', 'b', 'foo'])`` + Instances of :class:`set` and :class:`frozenset` provide the following operations: @@ -4311,6 +4317,14 @@ pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: Return a new dictionary initialized from an optional positional argument and a possibly empty set of keyword arguments. + Dictionaries can be created by several means: + + * Use a comma-separated list of ``key: value`` pairs within braces: + ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: 'sjoerd'}`` + * Use a dict comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}`` + * Use the type constructor: ``dict()``, + ``dict([('foo', 100), ('bar', 200)])``, ``dict(foo=100, bar=200)`` + If no positional argument is given, an empty dictionary is created. If a positional argument is given and it is a mapping object, a dictionary is created with the same key-value pairs as the mapping object. Otherwise, @@ -4717,6 +4731,200 @@ Compared to the overhead of setting up the runtime context, the overhead of a single class dictionary lookup is negligible. +.. _types-genericalias: + +Generic Alias Type +================== + +.. index:: + object: GenericAlias + pair: Generic; Alias + +``GenericAlias`` objects are created by subscripting a class (usually a +container), such as ``list[int]``. They are intended primarily for +:term:`type annotations `. + +Usually, the :ref:`subscription ` of container objects calls the +method :meth:`__getitem__` of the object. However, the subscription of some +containers' classes may call the classmethod :meth:`__class_getitem__` of the +class instead. The classmethod :meth:`__class_getitem__` should return a +``GenericAlias`` object. + +.. note:: + If the :meth:`__getitem__` of the class' metaclass is present, it will take + precedence over the :meth:`__class_getitem__` defined in the class (see + :pep:`560` for more details). + +The ``GenericAlias`` object acts as a proxy for :term:`generic types +`, implementing *parameterized generics* - a specific instance +of a generic which provides the types for container elements. + +The user-exposed type for the ``GenericAlias`` object can be accessed from +:class:`types.GenericAlias` and used for :func:`isinstance` checks. It can +also be used to create ``GenericAlias`` objects directly. + +.. describe:: T[X, Y, ...] + + Creates a ``GenericAlias`` representing a type ``T`` containing elements + of types *X*, *Y*, and more depending on the ``T`` used. + For example, a function expecting a :class:`list` containing + :class:`float` elements:: + + def average(values: list[float]) -> float: + return sum(values) / len(values) + + Another example for :term:`mapping` objects, using a :class:`dict`, which + is a generic type expecting two type parameters representing the key type + and the value type. In this example, the function expects a ``dict`` with + keys of type :class:`str` and values of type :class:`int`:: + + def send_post_request(url: str, body: dict[str, int]) -> None: + ... + +The builtin functions :func:`isinstance` and :func:`issubclass` do not accept +``GenericAlias`` types for their second argument:: + + >>> isinstance([1, 2], list[str]) + Traceback (most recent call last): + File "", line 1, in + TypeError: isinstance() argument 2 cannot be a parameterized generic + +The Python runtime does not enforce :term:`type annotations `. +This extends to generic types and their type parameters. When creating +an object from a ``GenericAlias``, container elements are not checked +against their type. For example, the following code is discouraged, but will +run without errors:: + + >>> t = list[str] + >>> t([1, 2, 3]) + [1, 2, 3] + +Furthermore, parameterized generics erase type parameters during object +creation:: + + >>> t = list[str] + >>> type(t) + + + >>> l = t() + >>> type(l) + + +Calling :func:`repr` or :func:`str` on a generic shows the parameterized type:: + + >>> repr(list[int]) + 'list[int]' + + >>> str(list[int]) + 'list[int]' + +The :meth:`__getitem__` method of generics will raise an exception to disallow +mistakes like ``dict[str][str]``:: + + >>> dict[str][str] + Traceback (most recent call last): + File "", line 1, in + TypeError: There are no type variables left in dict[str] + +However, such expressions are valid when :ref:`type variables ` are +used. The index must have as many elements as there are type variable items +in the ``GenericAlias`` object's :attr:`__args__ `. :: + + >>> from typing import TypeVar + >>> Y = TypeVar('Y') + >>> dict[str, Y][int] + dict[str, int] + + +Standard Generic Collections +---------------------------- + +These standard library collections support parameterized generics. + +* :class:`tuple` +* :class:`list` +* :class:`dict` +* :class:`set` +* :class:`frozenset` +* :class:`type` +* :class:`collections.deque` +* :class:`collections.defaultdict` +* :class:`collections.OrderedDict` +* :class:`collections.Counter` +* :class:`collections.ChainMap` +* :class:`collections.abc.Awaitable` +* :class:`collections.abc.Coroutine` +* :class:`collections.abc.AsyncIterable` +* :class:`collections.abc.AsyncIterator` +* :class:`collections.abc.AsyncGenerator` +* :class:`collections.abc.Iterable` +* :class:`collections.abc.Iterator` +* :class:`collections.abc.Generator` +* :class:`collections.abc.Reversible` +* :class:`collections.abc.Container` +* :class:`collections.abc.Collection` +* :class:`collections.abc.Callable` +* :class:`collections.abc.Set` +* :class:`collections.abc.MutableSet` +* :class:`collections.abc.Mapping` +* :class:`collections.abc.MutableMapping` +* :class:`collections.abc.Sequence` +* :class:`collections.abc.MutableSequence` +* :class:`collections.abc.ByteString` +* :class:`collections.abc.MappingView` +* :class:`collections.abc.KeysView` +* :class:`collections.abc.ItemsView` +* :class:`collections.abc.ValuesView` +* :class:`contextlib.AbstractContextManager` +* :class:`contextlib.AbstractAsyncContextManager` +* :ref:`re.Pattern ` +* :ref:`re.Match ` + + +Special Attributes of Generic Alias +----------------------------------- + +All parameterized generics implement special read-only attributes. + +.. attribute:: genericalias.__origin__ + + This attribute points at the non-parameterized generic class:: + + >>> list[int].__origin__ + + + +.. attribute:: genericalias.__args__ + + This attribute is a :class:`tuple` (possibly of length 1) of generic + types passed to the original :meth:`__class_getitem__` + of the generic container:: + + >>> dict[str, list[int]].__args__ + (, list[int]) + + +.. attribute:: genericalias.__parameters__ + + This attribute is a lazily computed tuple (possibly empty) of unique type + variables found in ``__args__``:: + + >>> from typing import TypeVar + + >>> T = TypeVar('T') + >>> list[T].__parameters__ + (~T,) + + +.. seealso:: + + * :pep:`585` -- "Type Hinting Generics In Standard Collections" + * :meth:`__class_getitem__` -- Used to implement parameterized generics. + * :ref:`generics` -- Generics in the :mod:`typing` module. + +.. versionadded:: 3.9 + + .. _typesother: Other Built-in Types diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 91f43e93..5542e9b7 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -384,10 +384,10 @@ following: The ``'#'`` option causes the "alternate form" to be used for the conversion. The alternate form is defined differently for different -types. This option is only valid for integer, float, complex and -Decimal types. For integers, when binary, octal, or hexadecimal output +types. This option is only valid for integer, float and complex +types. For integers, when binary, octal, or hexadecimal output is used, this option adds the prefix respective ``'0b'``, ``'0o'``, or -``'0x'`` to the output value. For floats, complex and Decimal the +``'0x'`` to the output value. For float and complex the alternate form causes the result of the conversion to always contain a decimal-point character, even if no digits follow it. Normally, a decimal-point character appears in the result of these conversions @@ -476,20 +476,36 @@ with the floating point presentation types listed below (except ``'n'`` and ``None``). When doing so, :func:`float` is used to convert the integer to a floating point number before formatting. -The available presentation types for floating point and decimal values are: +The available presentation types for :class:`float` and +:class:`~decimal.Decimal` values are: +---------+----------------------------------------------------------+ | Type | Meaning | +=========+==========================================================+ - | ``'e'`` | Exponent notation. Prints the number in scientific | - | | notation using the letter 'e' to indicate the exponent. | - | | The default precision is ``6``. | + | ``'e'`` | Scientific notation. For a given precision ``p``, | + | | formats the number in scientific notation with the | + | | letter 'e' separating the coefficient from the exponent. | + | | The coefficient has one digit before and ``p`` digits | + | | after the decimal point, for a total of ``p + 1`` | + | | significant digits. With no precision given, uses a | + | | precision of ``6`` digits after the decimal point for | + | | :class:`float`, and shows all coefficient digits | + | | for :class:`~decimal.Decimal`. If no digits follow the | + | | decimal point, the decimal point is also removed unless | + | | the ``#`` option is used. | +---------+----------------------------------------------------------+ - | ``'E'`` | Exponent notation. Same as ``'e'`` except it uses an | - | | upper case 'E' as the separator character. | + | ``'E'`` | Scientific notation. Same as ``'e'`` except it uses | + | | an upper case 'E' as the separator character. | +---------+----------------------------------------------------------+ - | ``'f'`` | Fixed-point notation. Displays the number as a | - | | fixed-point number. The default precision is ``6``. | + | ``'f'`` | Fixed-point notation. For a given precision ``p``, | + | | formats the number as a decimal number with exactly | + | | ``p`` digits following the decimal point. With no | + | | precision given, uses a precision of ``6`` digits after | + | | the decimal point for :class:`float`, and uses a | + | | precision large enough to show all coefficient digits | + | | for :class:`~decimal.Decimal`. If no digits follow the | + | | decimal point, the decimal point is also removed unless | + | | the ``#`` option is used. | +---------+----------------------------------------------------------+ | ``'F'`` | Fixed-point notation. Same as ``'f'``, but converts | | | ``nan`` to ``NAN`` and ``inf`` to ``INF``. | @@ -518,7 +534,10 @@ The available presentation types for floating point and decimal values are: | | the precision. | | | | | | A precision of ``0`` is treated as equivalent to a | - | | precision of ``1``. The default precision is ``6``. | + | | precision of ``1``. With no precision given, uses a | + | | precision of ``6`` significant digits for | + | | :class:`float`, and shows all coefficient digits | + | | for :class:`~decimal.Decimal`. | +---------+----------------------------------------------------------+ | ``'G'`` | General format. Same as ``'g'`` except switches to | | | ``'E'`` if the number gets too large. The | diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 880f252f..3df529f8 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -31,16 +31,22 @@ always available. When an auditing event is raised through the :func:`sys.audit` function, each hook will be called in the order it was added with the event name and the tuple of arguments. Native hooks added by :c:func:`PySys_AddAuditHook` are - called first, followed by hooks added in the current interpreter. + called first, followed by hooks added in the current interpreter. Hooks + can then log the event, raise an exception to abort the operation, + or terminate the process entirely. .. audit-event:: sys.addaudithook "" sys.addaudithook - Raise an auditing event ``sys.addaudithook`` with no arguments. If any + Calling :func:`sys.addaudithook` will itself raise an auditing event + named ``sys.addaudithook`` with no arguments. If any existing hooks raise an exception derived from :class:`RuntimeError`, the new hook will not be added and the exception suppressed. As a result, callers cannot assume that their hook has been added unless they control all existing hooks. + See the :ref:`audit events table ` for all events raised by + CPython, and :pep:`578` for the original design discussion. + .. versionadded:: 3.8 .. versionchanged:: 3.8.1 @@ -79,14 +85,23 @@ always available. .. index:: single: auditing - Raise an auditing event with any active hooks. The event name is a string - identifying the event and its associated schema, which is the number and - types of arguments. The schema for a given event is considered public and - stable API and should not be modified between releases. - - This function will raise the first exception raised by any hook. In general, - these errors should not be handled and should terminate the process as - quickly as possible. + Raise an auditing event and trigger any active auditing hooks. + *event* is a string identifying the event, and *args* may contain + optional arguments with more information about the event. The + number and types of arguments for a given event are considered a + public and stable API and should not be modified between releases. + + For example, one auditing event is named ``os.chdir``. This event has + one argument called *path* that will contain the requested new + working directory. + + :func:`sys.audit` will call the existing auditing hooks, passing + the event name and arguments, and will re-raise the first exception + from any hook. In general, if an exception is raised, it should not + be handled and the process should be terminated as quickly as + possible. This allows hook implementations to decide how to respond + to particular events: they can merely log the event or abort the + operation by raising an exception. Hooks are added using the :func:`sys.addaudithook` or :c:func:`PySys_AddAuditHook` functions. diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index cca466b5..7a114fdf 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -445,10 +445,11 @@ be finalized; only the internally used file object will be closed. See the .. method:: TarFile.extractfile(member) - Extract a member from the archive as a file object. *member* may be a filename - or a :class:`TarInfo` object. If *member* is a regular file or a link, an - :class:`io.BufferedReader` object is returned. Otherwise, :const:`None` is - returned. + Extract a member from the archive as a file object. *member* may be + a filename or a :class:`TarInfo` object. If *member* is a regular file or + a link, an :class:`io.BufferedReader` object is returned. For all other + existing members, :const:`None` is returned. If *member* does not appear + in the archive, :exc:`KeyError` is raised. .. versionchanged:: 3.3 Return an :class:`io.BufferedReader` object. diff --git a/Doc/library/test.rst b/Doc/library/test.rst index f7e6eba0..e24f69cd 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -1609,6 +1609,8 @@ script execution tests. The :mod:`test.support.bytecode_helper` module provides support for testing and inspecting bytecode generation. +.. versionadded:: 3.9 + The module defines the following class: .. class:: BytecodeTestCase(unittest.TestCase) diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 79acdf44..0fe3822f 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -109,6 +109,11 @@ Standard names are defined for the following types: The type of user-defined functions and functions created by :keyword:`lambda` expressions. + .. audit-event:: function.__new__ code types.FunctionType + + The audit event only occurs for direct instantiation of function objects, + and is not raised for normal compilation. + .. data:: GeneratorType @@ -138,10 +143,11 @@ Standard names are defined for the following types: The type for code objects such as returned by :func:`compile`. - .. audit-event:: code.__new__ code,filename,name,argcount,posonlyargcount,kwonlyargcount,nlocals,stacksize,flags CodeType + .. audit-event:: code.__new__ code,filename,name,argcount,posonlyargcount,kwonlyargcount,nlocals,stacksize,flags types.CodeType Note that the audited arguments may not match the names or positions - required by the initializer. + required by the initializer. The audit event only occurs for direct + instantiation of code objects, and is not raised for normal compilation. .. method:: CodeType.replace(**kwargs) @@ -236,6 +242,25 @@ Standard names are defined for the following types: Defaults to ``None``. Previously the attribute was optional. +.. class:: GenericAlias(t_origin, t_args) + + The type of :ref:`parameterized generics ` such as + ``list[int]``. + + ``t_origin`` should be a non-parameterized generic class, such as ``list``, + ``tuple`` or ``dict``. ``t_args`` should be a :class:`tuple` (possibly of + length 1) of types which parameterize ``t_origin``:: + + >>> from types import GenericAlias + + >>> list[int] == GenericAlias(list, (int,)) + True + >>> dict[str, int] == GenericAlias(dict, (str, int)) + True + + .. versionadded:: 3.9 + + .. class:: TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno) The type of traceback objects such as found in ``sys.exc_info()[2]``. @@ -359,7 +384,9 @@ Additional Utility Classes and Functions return "{}({})".format(type(self).__name__, ", ".join(items)) def __eq__(self, other): - return self.__dict__ == other.__dict__ + if isinstance(self, SimpleNamespace) and isinstance(other, SimpleNamespace): + return self.__dict__ == other.__dict__ + return NotImplemented ``SimpleNamespace`` may be useful as a replacement for ``class NS: pass``. However, for a structured record type use :func:`~collections.namedtuple` diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 3900e496..af2cafb8 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -509,7 +509,8 @@ These can be used as types in annotations using ``[]``, each having a unique syn is equivalent to ``Tuple[Any, ...]``, and in turn to :class:`tuple`. .. deprecated:: 3.9 - :class:`builtins.tuple ` now supports ``[]``. See :pep:`585`. + :class:`builtins.tuple ` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. data:: Union @@ -583,7 +584,8 @@ These can be used as types in annotations using ``[]``, each having a unique syn :class:`collections.abc.Callable`. .. deprecated:: 3.9 - :class:`collections.abc.Callable` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Callable` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: Type(Generic[CT_co]) @@ -620,7 +622,7 @@ These can be used as types in annotations using ``[]``, each having a unique syn :ref:`type variables `, and unions of any of these types. For example:: - def new_non_team_user(user_class: Type[Union[BaseUser, ProUser]]): ... + def new_non_team_user(user_class: Type[Union[BasicUser, ProUser]]): ... ``Type[Any]`` is equivalent to ``Type`` which in turn is equivalent to ``type``, which is the root of Python's metaclass hierarchy. @@ -628,7 +630,8 @@ These can be used as types in annotations using ``[]``, each having a unique syn .. versionadded:: 3.5.2 .. deprecated:: 3.9 - :class:`builtins.type ` now supports ``[]``. See :pep:`585`. + :class:`builtins.type ` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. data:: Literal @@ -652,6 +655,12 @@ These can be used as types in annotations using ``[]``, each having a unique syn .. versionadded:: 3.8 + .. versionchanged:: 3.9.1 + ``Literal`` now de-duplicates parameters. Equality comparison of + ``Literal`` objects are no longer order dependent. ``Literal`` objects + will now raise a :exc:`TypeError` exception during equality comparisons + if one of their parameters are not :term:`immutable`. + .. data:: ClassVar Special type construct to mark class variables. @@ -821,7 +830,7 @@ These are not used in annotations. They are building blocks for creating generic Type variables exist primarily for the benefit of static type checkers. They serve as the parameters for generic types as well - as for generic function definitions. See class Generic for more + as for generic function definitions. See :class:`Generic` for more information on generic types. Generic functions work as follows:: def repeat(x: T, n: int) -> Sequence[T]: @@ -1060,7 +1069,8 @@ Corresponding to built-in types ... .. deprecated:: 3.9 - :class:`builtins.dict ` now supports ``[]``. See :pep:`585`. + :class:`builtins.dict ` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: List(list, MutableSequence[T]) @@ -1080,7 +1090,8 @@ Corresponding to built-in types return [item for item in vector if item > 0] .. deprecated:: 3.9 - :class:`builtins.list ` now supports ``[]``. See :pep:`585`. + :class:`builtins.list ` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: Set(set, MutableSet[T]) @@ -1089,14 +1100,16 @@ Corresponding to built-in types to use an abstract collection type such as :class:`AbstractSet`. .. deprecated:: 3.9 - :class:`builtins.set ` now supports ``[]``. See :pep:`585`. + :class:`builtins.set ` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: FrozenSet(frozenset, AbstractSet[T_co]) A generic version of :class:`builtins.frozenset `. .. deprecated:: 3.9 - :class:`builtins.frozenset ` now supports ``[]``. See :pep:`585`. + :class:`builtins.frozenset ` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. .. note:: :data:`Tuple` is a special form. @@ -1110,7 +1123,8 @@ Corresponding to types in :mod:`collections` .. versionadded:: 3.5.2 .. deprecated:: 3.9 - :class:`collections.defaultdict` now supports ``[]``. See :pep:`585`. + :class:`collections.defaultdict` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: OrderedDict(collections.OrderedDict, MutableMapping[KT, VT]) @@ -1119,7 +1133,8 @@ Corresponding to types in :mod:`collections` .. versionadded:: 3.7.2 .. deprecated:: 3.9 - :class:`collections.OrderedDict` now supports ``[]``. See :pep:`585`. + :class:`collections.OrderedDict` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: ChainMap(collections.ChainMap, MutableMapping[KT, VT]) @@ -1129,7 +1144,8 @@ Corresponding to types in :mod:`collections` .. versionadded:: 3.6.1 .. deprecated:: 3.9 - :class:`collections.ChainMap` now supports ``[]``. See :pep:`585`. + :class:`collections.ChainMap` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: Counter(collections.Counter, Dict[T, int]) @@ -1139,7 +1155,8 @@ Corresponding to types in :mod:`collections` .. versionadded:: 3.6.1 .. deprecated:: 3.9 - :class:`collections.Counter` now supports ``[]``. See :pep:`585`. + :class:`collections.Counter` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: Deque(deque, MutableSequence[T]) @@ -1149,7 +1166,8 @@ Corresponding to types in :mod:`collections` .. versionadded:: 3.6.1 .. deprecated:: 3.9 - :class:`collections.deque` now supports ``[]``. See :pep:`585`. + :class:`collections.deque` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. Other concrete types """""""""""""""""""" @@ -1174,7 +1192,8 @@ Other concrete types ``Match[bytes]``. These types are also in the ``typing.re`` namespace. .. deprecated:: 3.9 - Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. See :pep:`585`. + Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. + See :pep:`585` and :ref:`types-genericalias`. .. class:: Text @@ -1201,7 +1220,8 @@ Corresponding to collections in :mod:`collections.abc` A generic version of :class:`collections.abc.Set`. .. deprecated:: 3.9 - :class:`collections.abc.Set` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Set` now supports ``[]``. See :pep:`585` and + :ref:`types-genericalias`. .. class:: ByteString(Sequence[int]) @@ -1214,7 +1234,8 @@ Corresponding to collections in :mod:`collections.abc` annotate arguments of any of the types mentioned above. .. deprecated:: 3.9 - :class:`collections.abc.ByteString` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.ByteString` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Collection(Sized, Iterable[T_co], Container[T_co]) @@ -1223,28 +1244,32 @@ Corresponding to collections in :mod:`collections.abc` .. versionadded:: 3.6.0 .. deprecated:: 3.9 - :class:`collections.abc.Collection` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Collection` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Container(Generic[T_co]) A generic version of :class:`collections.abc.Container`. .. deprecated:: 3.9 - :class:`collections.abc.Container` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Container` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: ItemsView(MappingView, Generic[KT_co, VT_co]) A generic version of :class:`collections.abc.ItemsView`. .. deprecated:: 3.9 - :class:`collections.abc.ItemsView` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.ItemsView` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: KeysView(MappingView[KT_co], AbstractSet[KT_co]) A generic version of :class:`collections.abc.KeysView`. .. deprecated:: 3.9 - :class:`collections.abc.KeysView` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.KeysView` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Mapping(Sized, Collection[KT], Generic[VT_co]) @@ -1255,49 +1280,56 @@ Corresponding to collections in :mod:`collections.abc` return word_list[word] .. deprecated:: 3.9 - :class:`collections.abc.Mapping` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Mapping` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: MappingView(Sized, Iterable[T_co]) A generic version of :class:`collections.abc.MappingView`. .. deprecated:: 3.9 - :class:`collections.abc.MappingView` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.MappingView` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: MutableMapping(Mapping[KT, VT]) A generic version of :class:`collections.abc.MutableMapping`. .. deprecated:: 3.9 - :class:`collections.abc.MutableMapping` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.MutableMapping` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. .. class:: MutableSequence(Sequence[T]) A generic version of :class:`collections.abc.MutableSequence`. .. deprecated:: 3.9 - :class:`collections.abc.MutableSequence` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.MutableSequence` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. .. class:: MutableSet(AbstractSet[T]) A generic version of :class:`collections.abc.MutableSet`. .. deprecated:: 3.9 - :class:`collections.abc.MutableSet` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.MutableSet` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Sequence(Reversible[T_co], Collection[T_co]) A generic version of :class:`collections.abc.Sequence`. .. deprecated:: 3.9 - :class:`collections.abc.Sequence` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Sequence` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: ValuesView(MappingView[VT_co]) A generic version of :class:`collections.abc.ValuesView`. .. deprecated:: 3.9 - :class:`collections.abc.ValuesView` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.ValuesView` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. Corresponding to other types in :mod:`collections.abc` """""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -1307,14 +1339,16 @@ Corresponding to other types in :mod:`collections.abc` A generic version of :class:`collections.abc.Iterable`. .. deprecated:: 3.9 - :class:`collections.abc.Iterable` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Iterable` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Iterator(Iterable[T_co]) A generic version of :class:`collections.abc.Iterator`. .. deprecated:: 3.9 - :class:`collections.abc.Iterator` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Iterator` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Generator(Iterator[T_co], Generic[T_co, T_contra, V_co]) @@ -1348,7 +1382,8 @@ Corresponding to other types in :mod:`collections.abc` start += 1 .. deprecated:: 3.9 - :class:`collections.abc.Generator` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Generator` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Hashable @@ -1359,7 +1394,8 @@ Corresponding to other types in :mod:`collections.abc` A generic version of :class:`collections.abc.Reversible`. .. deprecated:: 3.9 - :class:`collections.abc.Reversible` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Reversible` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Sized @@ -1384,7 +1420,8 @@ Asynchronous programming .. versionadded:: 3.5.3 .. deprecated:: 3.9 - :class:`collections.abc.Coroutine` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Coroutine` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: AsyncGenerator(AsyncIterator[T_co], Generic[T_co, T_contra]) @@ -1420,7 +1457,8 @@ Asynchronous programming .. versionadded:: 3.6.1 .. deprecated:: 3.9 - :class:`collections.abc.AsyncGenerator` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.AsyncGenerator` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. .. class:: AsyncIterable(Generic[T_co]) @@ -1429,7 +1467,8 @@ Asynchronous programming .. versionadded:: 3.5.2 .. deprecated:: 3.9 - :class:`collections.abc.AsyncIterable` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.AsyncIterable` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: AsyncIterator(AsyncIterable[T_co]) @@ -1438,7 +1477,8 @@ Asynchronous programming .. versionadded:: 3.5.2 .. deprecated:: 3.9 - :class:`collections.abc.AsyncIterator` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.AsyncIterator` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. .. class:: Awaitable(Generic[T_co]) @@ -1447,7 +1487,8 @@ Asynchronous programming .. versionadded:: 3.5.2 .. deprecated:: 3.9 - :class:`collections.abc.Awaitable` now supports ``[]``. See :pep:`585`. + :class:`collections.abc.Awaitable` now supports ``[]``. See :pep:`585` + and :ref:`types-genericalias`. Context manager types @@ -1461,7 +1502,8 @@ Context manager types .. versionadded:: 3.6.0 .. deprecated:: 3.9 - :class:`collections.contextlib.AbstractContextManager` now supports ``[]``. See :pep:`585`. + :class:`contextlib.AbstractContextManager` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. .. class:: AsyncContextManager(Generic[T_co]) @@ -1471,7 +1513,8 @@ Context manager types .. versionadded:: 3.6.2 .. deprecated:: 3.9 - :class:`collections.contextlib.AbstractAsyncContextManager` now supports ``[]``. See :pep:`585`. + :class:`contextlib.AbstractAsyncContextManager` now supports ``[]``. See + :pep:`585` and :ref:`types-genericalias`. Protocols --------- @@ -1650,6 +1693,9 @@ Introspection helpers For a typing object of the form ``X[Y, Z, ...]`` these functions return ``X`` and ``(Y, Z, ...)``. If ``X`` is a generic alias for a builtin or :mod:`collections` class, it gets normalized to the original class. + If ``X`` is a :class:`Union` or :class:`Literal` contained in another + generic type, the order of ``(Y, Z, ...)`` may be different from the order + of the original arguments ``[Y, Z, ...]`` due to type caching. For unsupported objects return ``None`` and ``()`` correspondingly. Examples:: @@ -1691,7 +1737,7 @@ Constant If ``from __future__ import annotations`` is used in Python 3.7 or later, annotations are not evaluated at function definition time. - Instead, the are stored as strings in ``__annotations__``, + Instead, they are stored as strings in ``__annotations__``, This makes it unnecessary to use quotes around the annotation. (see :pep:`563`). diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst index 285bb9e8..9fc66203 100644 --- a/Doc/library/unittest.rst +++ b/Doc/library/unittest.rst @@ -593,8 +593,9 @@ The following decorators and exception implement test skipping and expected fail .. decorator:: expectedFailure - Mark the test as an expected failure. If the test fails it will be - considered a success. If the test passes, it will be considered a failure. + Mark the test as an expected failure or error. If the test fails or errors + it will be considered a success. If the test passes, it will be considered + a failure. .. exception:: SkipTest(reason) @@ -896,8 +897,7 @@ Test cases .. method:: assertIs(first, second, msg=None) assertIsNot(first, second, msg=None) - Test that *first* and *second* evaluate (or don't evaluate) to the - same object. + Test that *first* and *second* are (or are not) the same object. .. versionadded:: 3.1 @@ -1088,7 +1088,8 @@ Test cases If given, *logger* should be a :class:`logging.Logger` object or a :class:`str` giving the name of a logger. The default is the root - logger, which will catch all messages. + logger, which will catch all messages that were not blocked by a + non-propagating descendent logger. If given, *level* should be either a numeric logging level or its string equivalent (for example either ``"ERROR"`` or @@ -1945,7 +1946,7 @@ Loading and running tests A list containing 2-tuples of :class:`TestCase` instances and strings holding formatted tracebacks. Each tuple represents an expected failure - of the test case. + or error of the test case. .. attribute:: unexpectedSuccesses @@ -2071,8 +2072,8 @@ Loading and running tests .. method:: addExpectedFailure(test, err) - Called when the test case *test* fails, but was marked with the - :func:`expectedFailure` decorator. + Called when the test case *test* fails or errors, but was marked with + the :func:`expectedFailure` decorator. The default implementation appends a tuple ``(test, formatted_err)`` to the instance's :attr:`expectedFailures` attribute, where *formatted_err* diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index 2c78cd93..bf72c465 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -132,7 +132,7 @@ module documentation. This section lists the differences between the API and ... # Work with dom. -.. method:: Node.writexml(writer, indent="", addindent="", newl="", +.. method:: Node.writexml(writer, indent="", addindent="", newl="", \ encoding=None, standalone=None) Write XML to the writer object. The writer receives texts but not bytes as input, @@ -174,7 +174,7 @@ module documentation. This section lists the differences between the API and The :meth:`toxml` method now preserves the attribute order specified by the user. -.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, +.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, \ standalone=None) Return a pretty-printed version of the document. *indent* specifies the diff --git a/Doc/library/xml.etree.elementtree.rst b/Doc/library/xml.etree.elementtree.rst index 7725e4d1..f4bccf66 100644 --- a/Doc/library/xml.etree.elementtree.rst +++ b/Doc/library/xml.etree.elementtree.rst @@ -251,12 +251,18 @@ We can remove elements using :meth:`Element.remove`. Let's say we want to remove all countries with a rank higher than 50:: >>> for country in root.findall('country'): + ... # using root.findall() to avoid removal during traversal ... rank = int(country.find('rank').text) ... if rank > 50: ... root.remove(country) ... >>> tree.write('output.xml') +Note that concurrent modification while iterating can lead to problems, +just like when iterating and modifying Python lists or dicts. +Therefore, the example first collects all matching elements with +``root.findall()``, and only then iterates over the list of matches. + Our XML now looks like this: .. code-block:: xml diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index fc304a19..89063876 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -187,6 +187,24 @@ Ellipsis related to mathematical numbers, but subject to the limitations of numerical representation in computers. + The string representations of the numeric classes, computed by + :meth:`__repr__` and :meth:`__str__`, have the following + properties: + + * They are valid numeric literals which, when passed to their + class constructor, produce an object having the value of the + original numeric. + + * The representation is in base 10, when possible. + + * Leading zeros, possibly excepting a single zero before a + decimal point, are not shown. + + * Trailing zeros, possibly excepting a single zero after a + decimal point, are not shown. + + * A sign is shown only when the number is negative. + Python distinguishes between integers, floating point numbers, and complex numbers: @@ -1377,12 +1395,14 @@ Basic customization context (e.g., in the condition of an ``if`` statement), Python will call :func:`bool` on the value to determine if the result is true or false. - By default, :meth:`__ne__` delegates to :meth:`__eq__` and - inverts the result unless it is ``NotImplemented``. There are no other - implied relationships among the comparison operators, for example, - the truth of ``(x` ``object.__getattr__`` with arguments + ``obj`` and ``name``. + .. method:: object.__setattr__(self, name, value) @@ -1551,12 +1577,24 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances. call the base class method with the same name, for example, ``object.__setattr__(self, name, value)``. + .. audit-event:: object.__setattr__ obj,name,value object.__setattr__ + + For certain sensitive attribute assignments, raises an + :ref:`auditing event ` ``object.__setattr__`` with arguments + ``obj``, ``name``, ``value``. + .. method:: object.__delattr__(self, name) Like :meth:`__setattr__` but for attribute deletion instead of assignment. This should only be implemented if ``del obj.name`` is meaningful for the object. + .. audit-event:: object.__delattr__ obj,name object.__delattr__ + + For certain sensitive attribute deletions, raises an + :ref:`auditing event ` ``object.__delattr__`` with arguments + ``obj`` and ``name``. + .. method:: object.__dir__(self) @@ -2130,7 +2168,7 @@ Emulating callable objects .. index:: pair: call; instance Called when the instance is "called" as a function; if this method is defined, - ``x(arg1, arg2, ...)`` is a shorthand for ``x.__call__(arg1, arg2, ...)``. + ``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, arg1, ...)``. .. _sequence-types: @@ -2376,10 +2414,11 @@ left undefined. .. note:: - If the right operand's type is a subclass of the left operand's type and that - subclass provides the reflected method for the operation, this method will be - called before the left operand's non-reflected method. This behavior allows - subclasses to override their ancestors' operations. + If the right operand's type is a subclass of the left operand's type and + that subclass provides a different implementation of the reflected method + for the operation, this method will be called before the left operand's + non-reflected method. This behavior allows subclasses to override their + ancestors' operations. .. method:: object.__iadd__(self, other) @@ -2778,6 +2817,6 @@ An example of an asynchronous context manager class:: method—that will instead have the opposite effect of explicitly *blocking* such fallback. -.. [#] For operands of the same type, it is assumed that if the non-reflected method - (such as :meth:`__add__`) fails the operation is not supported, which is why the - reflected method is not called. +.. [#] For operands of the same type, it is assumed that if the non-reflected + method -- such as :meth:`__add__` -- fails then the overall operation is not + supported, which is why the reflected method is not called. diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index b68c2986..512aa5af 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -162,6 +162,8 @@ ambiguities and allow common typos to pass uncaught. Displays for lists, sets and dictionaries ----------------------------------------- +.. index:: single: comprehensions + For constructing a list, a set or a dictionary Python provides special syntax called "displays", each of them in two flavors: @@ -260,6 +262,7 @@ Set displays .. index:: pair: set; display + pair: set; comprehensions object: set single: {} (curly brackets); set expression single: , (comma); expression list @@ -287,6 +290,7 @@ Dictionary displays .. index:: pair: dictionary; display + pair: dictionary; comprehensions key, datum, key/datum pair object: dictionary single: {} (curly brackets); dictionary expression @@ -796,8 +800,8 @@ Subscriptions object: dictionary pair: sequence; item -A subscription selects an item of a sequence (string, tuple or list) or mapping -(dictionary) object: +Subscription of a sequence (string, tuple or list) or mapping (dictionary) +object usually selects an item from the collection: .. productionlist:: python-grammar subscription: `primary` "[" `expression_list` "]" @@ -833,6 +837,11 @@ this method will need to explicitly add that support. A string's items are characters. A character is not a separate data type but a string of exactly one character. +Subscription of certain :term:`classes ` or :term:`types ` +creates a :ref:`generic alias `. +In this case, user-defined classes can support subscription by providing a +:meth:`__class_getitem__` classmethod. + .. _slicings: diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index 4c36e15d..c5952426 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -680,7 +680,7 @@ Here are the exact rules used: Cached bytecode invalidation ---------------------------- -Before Python loads cached bytecode from ``.pyc`` file, it checks whether the +Before Python loads cached bytecode from a ``.pyc`` file, it checks whether the cache is up-to-date with the source ``.py`` file. By default, Python does this by storing the source's last-modified timestamp and size in the cache file when writing it. At runtime, the import system then validates the cache file by @@ -857,9 +857,8 @@ module. ``find_spec()`` returns a fully populated spec for the module. This spec will always have "loader" set (with one exception). To indicate to the import machinery that the spec represents a namespace -:term:`portion`, the path entry finder sets "loader" on the spec to -``None`` and "submodule_search_locations" to a list containing the -portion. +:term:`portion`, the path entry finder sets "submodule_search_locations" to +a list containing the portion. .. versionchanged:: 3.4 :meth:`~importlib.abc.PathEntryFinder.find_spec` replaced @@ -875,18 +874,7 @@ portion. :meth:`~importlib.abc.PathEntryFinder.find_loader` takes one argument, the fully qualified name of the module being imported. ``find_loader()`` returns a 2-tuple where the first item is the loader and the second item - is a namespace :term:`portion`. When the first item (i.e. the loader) is - ``None``, this means that while the path entry finder does not have a - loader for the named module, it knows that the path entry contributes to - a namespace portion for the named module. This will almost always be the - case where Python is asked to import a namespace package that has no - physical presence on the file system. When a path entry finder returns - ``None`` for the loader, the second item of the 2-tuple return value must - be a sequence, although it can be empty. - - If ``find_loader()`` returns a non-``None`` loader value, the portion is - ignored and the loader is returned from the path based finder, terminating - the search through the path entries. + is a namespace :term:`portion`. For backwards compatibility with other implementations of the import protocol, many path entry finders also support the same, diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst index 93be3271..f8ab2e91 100644 --- a/Doc/reference/simple_stmts.rst +++ b/Doc/reference/simple_stmts.rst @@ -874,8 +874,8 @@ can appear before a future statement are: * blank lines, and * other future statements. -The only feature in Python 3.7 that requires using the future statement is -``annotations``. +The only feature that requires using the future statement is +``annotations`` (see :pep:`563`). All historical features enabled by the future statement are still recognized by Python 3. The list includes ``absolute_import``, ``division``, diff --git a/Doc/tools/extensions/c_annotations.py b/Doc/tools/extensions/c_annotations.py index fa8244a8..76c9d920 100644 --- a/Doc/tools/extensions/c_annotations.py +++ b/Doc/tools/extensions/c_annotations.py @@ -79,9 +79,9 @@ class Annotations(dict): classes=['stableabi'])) if par['objtype'] != 'function': continue - if not par[0].has_key('names') or not par[0]['names']: + if not par[0].has_key('ids') or not par[0]['ids']: continue - name = par[0]['names'][0] + name = par[0]['ids'][0] if name.startswith("c."): name = name[2:] entry = self.get(name) diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py index f08f4abb..2fad9ec0 100644 --- a/Doc/tools/extensions/pyspecific.py +++ b/Doc/tools/extensions/pyspecific.py @@ -31,7 +31,12 @@ from sphinx.util import status_iterator, logging from sphinx.util.nodes import split_explicit_title from sphinx.writers.text import TextWriter, TextTranslator from sphinx.writers.latex import LaTeXTranslator -from sphinx.domains.python import PyModulelevel, PyClassmember + +try: + from sphinx.domains.python import PyFunction, PyMethod +except ImportError: + from sphinx.domains.python import PyClassmember as PyMethod + from sphinx.domains.python import PyModulelevel as PyFunction # Support for checking for suspicious markup @@ -238,17 +243,18 @@ class PyDecoratorMixin(object): return False -class PyDecoratorFunction(PyDecoratorMixin, PyModulelevel): +class PyDecoratorFunction(PyDecoratorMixin, PyFunction): def run(self): # a decorator function is a function after all self.name = 'py:function' - return PyModulelevel.run(self) + return PyFunction.run(self) -class PyDecoratorMethod(PyDecoratorMixin, PyClassmember): +# TODO: Use sphinx.domains.python.PyDecoratorMethod when possible +class PyDecoratorMethod(PyDecoratorMixin, PyMethod): def run(self): self.name = 'py:method' - return PyClassmember.run(self) + return PyMethod.run(self) class PyCoroutineMixin(object): @@ -265,31 +271,31 @@ class PyAwaitableMixin(object): return ret -class PyCoroutineFunction(PyCoroutineMixin, PyModulelevel): +class PyCoroutineFunction(PyCoroutineMixin, PyFunction): def run(self): self.name = 'py:function' - return PyModulelevel.run(self) + return PyFunction.run(self) -class PyCoroutineMethod(PyCoroutineMixin, PyClassmember): +class PyCoroutineMethod(PyCoroutineMixin, PyMethod): def run(self): self.name = 'py:method' - return PyClassmember.run(self) + return PyMethod.run(self) -class PyAwaitableFunction(PyAwaitableMixin, PyClassmember): +class PyAwaitableFunction(PyAwaitableMixin, PyFunction): def run(self): self.name = 'py:function' - return PyClassmember.run(self) + return PyFunction.run(self) -class PyAwaitableMethod(PyAwaitableMixin, PyClassmember): +class PyAwaitableMethod(PyAwaitableMixin, PyMethod): def run(self): self.name = 'py:method' - return PyClassmember.run(self) + return PyMethod.run(self) -class PyAbstractMethod(PyClassmember): +class PyAbstractMethod(PyMethod): def handle_signature(self, sig, signode): ret = super(PyAbstractMethod, self).handle_signature(sig, signode) @@ -299,7 +305,7 @@ class PyAbstractMethod(PyClassmember): def run(self): self.name = 'py:method' - return PyClassmember.run(self) + return PyMethod.run(self) # Support for documenting version of removal in deprecations diff --git a/Doc/tools/static/switchers.js b/Doc/tools/static/switchers.js index c51f178c..1a1c7d0f 100644 --- a/Doc/tools/static/switchers.js +++ b/Doc/tools/static/switchers.js @@ -15,7 +15,6 @@ '3.8': '3.8', '3.7': '3.7', '3.6': '3.6', - '3.5': '3.5', '2.7': '2.7', }; diff --git a/Doc/tools/susp-ignored.csv b/Doc/tools/susp-ignored.csv index 7be8d0ab..c9777c6b 100644 --- a/Doc/tools/susp-ignored.csv +++ b/Doc/tools/susp-ignored.csv @@ -5,14 +5,13 @@ c-api/sequence,,:i2,o[i1:i2] c-api/tuple,,:high,p[low:high] c-api/unicode,,:end,str[start:end] c-api/unicode,,:start,unicode[start:start+length] -distutils/examples,267,`,This is the description of the ``foobar`` package. +distutils/examples,,`,This is the description of the ``foobar`` package. distutils/setupscript,,::, extending/embedding,,:numargs,"if(!PyArg_ParseTuple(args, "":numargs""))" extending/extending,,:myfunction,"PyArg_ParseTuple(args, ""D:myfunction"", &c);" extending/extending,,:set,"if (PyArg_ParseTuple(args, ""O:set_callback"", &temp)) {" extending/newtypes,,:call,"if (!PyArg_ParseTuple(args, ""sss:call"", &arg1, &arg2, &arg3)) {" faq/programming,,:chr,">=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr(" -faq/programming,,::,for x in sequence[::-1]: faq/programming,,:reduce,"print((lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y," faq/programming,,:reduce,"Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro," faq/windows,,:d48eceb,"Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32" @@ -24,6 +23,9 @@ howto/curses,,:blue,"2:green, 3:yellow, 4:blue, 5:magenta, 6:cyan, and 7:white. howto/curses,,:magenta,"2:green, 3:yellow, 4:blue, 5:magenta, 6:cyan, and 7:white. The" howto/curses,,:cyan,"2:green, 3:yellow, 4:blue, 5:magenta, 6:cyan, and 7:white. The" howto/curses,,:white,"2:green, 3:yellow, 4:blue, 5:magenta, 6:cyan, and 7:white. The" +howto/descriptor,,:root,"INFO:root" +howto/descriptor,,:Updating,"root:Updating" +howto/descriptor,,:Accessing,"root:Accessing" howto/instrumentation,,::,python$target:::function-entry howto/instrumentation,,:function,python$target:::function-entry howto/instrumentation,,::,python$target:::function-return @@ -147,8 +149,10 @@ library/ipaddress,,:db8,IPv6Address('2001:db8::') library/ipaddress,,::,IPv6Address('2001:db8::') library/ipaddress,,:db8,>>> ipaddress.IPv6Address('2001:db8::1000') library/ipaddress,,::,>>> ipaddress.IPv6Address('2001:db8::1000') -library/ipaddress,,:db8,IPv6Address('2001:db8::1000') -library/ipaddress,,::,IPv6Address('2001:db8::1000') +library/ipaddress,,:db8,'2001:db8::1000' +library/ipaddress,,::,'2001:db8::1000' +library/ipaddress,231,:db8,">>> f'{ipaddress.IPv6Address(""2001:db8::1000""):s}'" +library/ipaddress,231,::,">>> f'{ipaddress.IPv6Address(""2001:db8::1000""):s}'" library/ipaddress,,::,IPv6Address('ff02::5678%1') library/ipaddress,,::,fe80::1234 library/ipaddress,,:db8,">>> ipaddress.ip_address(""2001:db8::1"").reverse_pointer" diff --git a/Doc/tools/templates/indexsidebar.html b/Doc/tools/templates/indexsidebar.html index 7a40be77..1c1cb548 100644 --- a/Doc/tools/templates/indexsidebar.html +++ b/Doc/tools/templates/indexsidebar.html @@ -7,7 +7,6 @@
  • {% trans %}Python 3.8 (stable){% endtrans %}
  • {% trans %}Python 3.7 (stable){% endtrans %}
  • {% trans %}Python 3.6 (security-fixes){% endtrans %}
  • -
  • {% trans %}Python 3.5 (security-fixes){% endtrans %}
  • {% trans %}Python 2.7 (EOL){% endtrans %}
  • {% trans %}All versions{% endtrans %}
  • diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index ff4c797f..5c6b65f0 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -78,7 +78,7 @@ objects: Return the number of times *x* appears in the list. -.. method:: list.sort(key=None, reverse=False) +.. method:: list.sort(*, key=None, reverse=False) :noindex: Sort the items of the list in place (the arguments can be used for sort diff --git a/Doc/tutorial/errors.rst b/Doc/tutorial/errors.rst index 0ce96466..efe44da3 100644 --- a/Doc/tutorial/errors.rst +++ b/Doc/tutorial/errors.rst @@ -273,15 +273,15 @@ Exception Chaining ================== The :keyword:`raise` statement allows an optional :keyword:`from` which enables -chaining exceptions by setting the ``__cause__`` attribute of the raised -exception. For example:: +chaining exceptions. For example:: - raise RuntimeError from OSError + # exc must be exception instance or None. + raise RuntimeError from exc This can be useful when you are transforming exceptions. For example:: >>> def func(): - ... raise IOError + ... raise IOError ... >>> try: ... func() @@ -297,12 +297,11 @@ This can be useful when you are transforming exceptions. For example:: Traceback (most recent call last): File "", line 4, in - RuntimeError + RuntimeError: Failed to open database -The expression following the :keyword:`from` must be either an exception or -``None``. Exception chaining happens automatically when an exception is raised -inside an exception handler or :keyword:`finally` section. Exception chaining -can be disabled by using ``from None`` idiom: +Exception chaining happens automatically when an exception is raised inside an +:keyword:`except` or :keyword:`finally` section. Exception chaining can be +disabled by using ``from None`` idiom: >>> try: ... open('database.sqlite') @@ -313,6 +312,8 @@ can be disabled by using ``from None`` idiom: File "", line 4, in RuntimeError +For more information about chaining mechanics, see :ref:`bltin-exceptions`. + .. _tut-userexceptions: diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index 366a532e..4e27cff8 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -329,11 +329,16 @@ equivalent :keyword:`try`\ -\ :keyword:`finally` blocks:: If you're not using the :keyword:`with` keyword, then you should call ``f.close()`` to close the file and immediately free up any system -resources used by it. If you don't explicitly close a file, Python's -garbage collector will eventually destroy the object and close the -open file for you, but the file may stay open for a while. Another -risk is that different Python implementations will do this clean-up at -different times. +resources used by it. + +.. warning:: + Calling ``f.write()`` without using the :keyword:`!with` keyword or calling + ``f.close()`` **might** result in the arguments + of ``f.write()`` not being completely written to the disk, even if the + program exits successfully. + +.. + See also https://bugs.python.org/issue17852 After a file object is closed, either by a :keyword:`with` statement or by calling ``f.close()``, attempts to use the file object will diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index f91ab020..95342f3a 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -555,7 +555,7 @@ conflict. the interactive session. You can also change the prompts :data:`sys.ps1` and :data:`sys.ps2` and the hook :data:`sys.__interactivehook__` in this file. - .. audit-event:: cpython.run_startup filename PYTHONSTARTUP + .. audit-event:: cpython.run_startup filename envvar-PYTHONSTARTUP Raises an :ref:`auditing event ` ``cpython.run_startup`` with the filename as the argument when called on startup. diff --git a/Doc/using/venv-create.inc b/Doc/using/venv-create.inc index c8f6e8f8..5e724cd5 100644 --- a/Doc/using/venv-create.inc +++ b/Doc/using/venv-create.inc @@ -67,7 +67,7 @@ The command, if run with ``-h``, will show the available options:: Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory. -.. versionchanged:: 3.8 +.. versionchanged:: 3.9 Add ``--upgrade-deps`` option to upgrade pip + setuptools to the latest on PyPI .. versionchanged:: 3.4 diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index b95a43c8..d0c342e1 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -23,8 +23,8 @@ available for application-local distributions. As specified in :pep:`11`, a Python release only supports a Windows platform while Microsoft considers the platform under extended support. This means that -Python |version| supports Windows Vista and newer. If you require Windows XP -support then please install Python 3.4. +Python |version| supports Windows 8.1 and newer. If you require Windows 7 +support, please install Python 3.8. There are a number of different installers available for Windows, each with certain benefits and downsides. @@ -103,9 +103,9 @@ paths longer than this would not resolve and errors would result. In the latest versions of Windows, this limitation can be expanded to approximately 32,000 characters. Your administrator will need to activate the -"Enable Win32 long paths" group policy, or set the registry value -``HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem@LongPathsEnabled`` -to ``1``. +"Enable Win32 long paths" group policy, or set ``LongPathsEnabled`` to ``1`` +in the registry key +``HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem``. This allows the :func:`open` function, the :mod:`os` module and most other path functionality to accept and return paths longer than 260 characters. diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index a2fa1781..0b4820f3 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -870,8 +870,18 @@ clipboard. Converting strings from Tcl to Python and back now never fails. (Many people worked on this for eight years but the problem was finally solved by Serhiy Storchaka in :issue:`13153`.) +New in 3.8.1: + +Add option to toggle cursor blink off. (Contributed by Zackery Spytz +in :issue:`4603`.) + +Escape key now closes IDLE completion windows. (Contributed by Johnny +Najera in :issue:`38944`.) + The changes above have been backported to 3.7 maintenance releases. +Add keywords to module name completion list. (Contributed by Terry J. +Reedy in :issue:`37765`.) inspect ------- @@ -2103,9 +2113,6 @@ Changes in the C API (Contributed by Antoine Pitrou in :issue:`32388`.) -* The :c:func:`PyCode_New` has a new parameter in the second position (*posonlyargcount*) - to support :pep:`570`, indicating the number of positional-only arguments. - * The functions :c:func:`PyNode_AddChild` and :c:func:`PyParser_AddToken` now accept two additional ``int`` arguments *end_lineno* and *end_col_offset*. diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 9a09e710..f8f421bd 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -135,8 +135,8 @@ More generally, try to run your tests in the :ref:`Python Development Mode ` which helps to prepare your code to make it compatible with the next Python version. -Note: a number of pre-existing deprecatations were removed in this version -of Python as well. Consult the :ref:`removed-in-python-39` section. +Note: a number of pre-existing deprecations were removed in this version of +Python as well. Consult the :ref:`removed-in-python-39` section. New Features @@ -781,41 +781,41 @@ Here's a summary of performance improvements from Python 3.4 through Python 3.9: -------------- --- --- --- --- --- --- Variable and attribute read access: - read_local 7.1 7.1 5.4 5.1 3.9 4.0 - read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8 - read_global 15.5 19.0 14.3 13.6 7.6 7.7 - read_builtin 21.1 21.6 18.5 19.0 7.5 7.7 - read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6 - read_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 20.1 - read_instancevar 32.4 33.1 28.0 26.3 25.4 27.7 - read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5 - read_namedtuple 73.8 57.5 45.0 46.8 18.4 23.2 - read_boundmethod 37.6 37.9 29.6 26.9 27.7 45.9 + read_local 7.1 7.1 5.4 5.1 3.9 3.9 + read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.5 + read_global 15.5 19.0 14.3 13.6 7.6 7.8 + read_builtin 21.1 21.6 18.5 19.0 7.5 7.8 + read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 17.9 + read_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 16.9 + read_instancevar 32.4 33.1 28.0 26.3 25.4 25.3 + read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 20.5 + read_namedtuple 73.8 57.5 45.0 46.8 18.4 18.7 + read_boundmethod 37.6 37.9 29.6 26.9 27.7 41.1 Variable and attribute write access: - write_local 8.7 9.3 5.5 5.3 4.3 4.2 - write_nonlocal 10.5 11.1 5.6 5.5 4.7 4.9 - write_global 19.7 21.2 18.0 18.0 15.8 17.2 - write_classvar 92.9 96.0 104.6 102.1 39.2 43.2 - write_instancevar 44.6 45.8 40.0 38.9 35.5 40.7 - write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7 + write_local 8.7 9.3 5.5 5.3 4.3 4.3 + write_nonlocal 10.5 11.1 5.6 5.5 4.7 4.8 + write_global 19.7 21.2 18.0 18.0 15.8 16.7 + write_classvar 92.9 96.0 104.6 102.1 39.2 39.8 + write_instancevar 44.6 45.8 40.0 38.9 35.5 37.4 + write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 25.8 Data structure read access: - read_list 24.2 24.5 20.8 20.8 19.0 21.1 - read_deque 24.7 25.5 20.2 20.6 19.8 21.6 - read_dict 24.3 25.7 22.3 23.0 21.0 22.5 - read_strdict 22.6 24.3 19.5 21.2 18.9 21.6 + read_list 24.2 24.5 20.8 20.8 19.0 19.5 + read_deque 24.7 25.5 20.2 20.6 19.8 20.2 + read_dict 24.3 25.7 22.3 23.0 21.0 22.4 + read_strdict 22.6 24.3 19.5 21.2 18.9 21.5 Data structure write access: - write_list 27.1 28.5 22.5 21.6 20.0 21.6 - write_deque 28.7 30.1 22.7 21.8 23.5 23.2 - write_dict 31.4 33.3 29.3 29.2 24.7 27.8 - write_strdict 28.4 29.9 27.5 25.2 23.1 29.8 + write_list 27.1 28.5 22.5 21.6 20.0 20.0 + write_deque 28.7 30.1 22.7 21.8 23.5 21.7 + write_dict 31.4 33.3 29.3 29.2 24.7 25.4 + write_strdict 28.4 29.9 27.5 25.2 23.1 24.5 Stack (or queue) operations: - list_append_pop 93.4 112.7 75.4 74.2 50.8 53.9 - deque_append_pop 43.5 57.0 49.4 49.2 42.5 45.5 - deque_append_popleft 43.7 57.3 49.7 49.7 42.8 45.5 + list_append_pop 93.4 112.7 75.4 74.2 50.8 50.6 + deque_append_pop 43.5 57.0 49.4 49.2 42.5 44.2 + deque_append_popleft 43.7 57.3 49.7 49.7 42.8 46.4 Timing loop: loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3 @@ -891,7 +891,7 @@ Deprecated and will be removed in future Python versions. ``value`` itself should be used instead of ``Index(value)``. ``Tuple(slices, Load())`` should be used instead of ``ExtSlice(slices)``. - (Contributed by Serhiy Storchaka in :issue:`32892`.) + (Contributed by Serhiy Storchaka in :issue:`34822`.) * :mod:`ast` classes ``Suite``, ``Param``, ``AugLoad`` and ``AugStore`` are considered deprecated and will be removed in future Python versions. @@ -1177,7 +1177,7 @@ CPython bytecode changes * ``COMPARE_OP`` for rich comparisons * ``IS_OP`` for 'is' and 'is not' tests - * ``CONTAINS_OP`` for 'in' and 'is not' tests + * ``CONTAINS_OP`` for 'in' and 'not in' tests * ``JUMP_IF_NOT_EXC_MATCH`` for checking exceptions in 'try-except' statements. @@ -1289,6 +1289,10 @@ New Features representation of a function-like object. (Patch by Jeroen Demeyer in :issue:`37645`.) +* Added :c:func:`PyObject_CallOneArg` for calling an object with one + positional argument + (Patch by Jeroen Demeyer in :issue:`37483`.) + Porting to Python 3.9 --------------------- @@ -1450,3 +1454,46 @@ Removed ``PyNullImporter_Type``, ``PyCmpWrapper_Type``, ``PySortWrapper_Type``, ``PyNoArgsFunction``. (Contributed by Pablo Galindo Salgado in :issue:`39372`.) + +Notable changes in Python 3.9.1 +=============================== + +typing +------ + +The behavior of :class:`typing.Literal` was changed to conform with :pep:`586` +and to match the behavior of static type checkers specified in the PEP. + +1. ``Literal`` now de-duplicates parameters. +2. Equality comparisons between ``Literal`` objects are now order independent. +3. ``Literal`` comparisons now respect types. For example, + ``Literal[0] == Literal[False]`` previously evaluated to ``True``. It is + now ``False``. To support this change, the internally used type cache now + supports differentiating types. +4. ``Literal`` objects will now raise a :exc:`TypeError` exception during + equality comparisons if one of their parameters are not :term:`immutable`. + Note that declaring ``Literal`` with mutable parameters will not throw + an error:: + + >>> from typing import Literal + >>> Literal[{0}] + >>> Literal[{0}] == Literal[{False}] + Traceback (most recent call last): + File "", line 1, in + TypeError: unhashable type: 'set' + +(Contributed by Yurii Karabas in :issue:`42345`.) + +macOS 11.0 (Big Sur) and Apple Silicon Mac support +-------------------------------------------------- + +As of 3.9.1, Python now fully supports building and running on macOS 11.0 +(Big Sur) and on Apple Silicon Macs (based on the ``ARM64`` architecture). +A new universal build variant, ``universal2``, is now available to natively +support both ``ARM64`` and ``Intel 64`` in one set of executables. Binaries +can also now be built on current versions of macOS to be deployed on a range +of older macOS versions (tested to 10.9) while making some newer OS +functions and options conditionally available based on the operating system +version in use at runtime ("weaklinking"). + +(Contributed by Ronald Oussoren and Lawrence D'Anna in :issue:`41100`.) diff --git a/Grammar/python.gram b/Grammar/python.gram index 334a7f56..ce783971 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -182,7 +182,7 @@ with_stmt[stmt_ty]: | ASYNC 'with' a=','.with_item+ ':' tc=[TYPE_COMMENT] b=block { CHECK_VERSION(5, "Async with statements are", _Py_AsyncWith(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA)) } with_item[withitem_ty]: - | e=expression 'as' t=target &(',' | ')' | ':') { _Py_withitem(e, t, p->arena) } + | e=expression 'as' t=star_target &(',' | ')' | ':') { _Py_withitem(e, t, p->arena) } | invalid_with_item | e=expression { _Py_withitem(e, NULL, p->arena) } @@ -301,7 +301,6 @@ block[asdl_seq*] (memo): | simple_stmt | invalid_block -expressions_list[asdl_seq*]: a=','.star_expression+ [','] { a } star_expressions[expr_ty]: | a=star_expression b=(',' c=star_expression { c })+ [','] { _Py_Tuple(CHECK(_PyPegen_seq_insert_in_front(p, a, b)), Load, EXTRA) } @@ -413,7 +412,7 @@ compare_op_bitwise_or_pair[CmpopExprPair*]: | is_bitwise_or eq_bitwise_or[CmpopExprPair*]: '==' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, Eq, a) } noteq_bitwise_or[CmpopExprPair*]: - | (tok='!=' {_PyPegen_check_barry_as_flufl(p) ? NULL : tok}) a=bitwise_or {_PyPegen_cmpop_expr_pair(p, NotEq, a) } + | (tok='!=' { _PyPegen_check_barry_as_flufl(p, tok) ? NULL : tok}) a=bitwise_or {_PyPegen_cmpop_expr_pair(p, NotEq, a) } lte_bitwise_or[CmpopExprPair*]: '<=' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, LtE, a) } lt_bitwise_or[CmpopExprPair*]: '<' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, Lt, a) } gte_bitwise_or[CmpopExprPair*]: '>=' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, GtE, a) } @@ -460,6 +459,7 @@ await_primary[expr_ty] (memo): | AWAIT a=primary { CHECK_VERSION(5, "Await expressions are", _Py_Await(a, EXTRA)) } | primary primary[expr_ty]: + | invalid_primary # must be before 'primay genexp' because of invalid_genexp | a=primary '.' b=NAME { _Py_Attribute(a, b->v.Name.id, Load, EXTRA) } | a=primary b=genexp { _Py_Call(a, CHECK(_PyPegen_singleton_seq(p, b)), NULL, EXTRA) } | a=primary '(' b=[arguments] ')' { @@ -502,11 +502,11 @@ group[expr_ty]: | '(' a=(yield_expr | named_expression) ')' { a } | invalid_group genexp[expr_ty]: - | '(' a=expression ~ b=for_if_clauses ')' { _Py_GeneratorExp(a, b, EXTRA) } + | '(' a=named_expression ~ b=for_if_clauses ')' { _Py_GeneratorExp(a, b, EXTRA) } | invalid_comprehension -set[expr_ty]: '{' a=expressions_list '}' { _Py_Set(a, EXTRA) } +set[expr_ty]: '{' a=star_named_expressions '}' { _Py_Set(a, EXTRA) } setcomp[expr_ty]: - | '{' a=expression ~ b=for_if_clauses '}' { _Py_SetComp(a, b, EXTRA) } + | '{' a=named_expression ~ b=for_if_clauses '}' { _Py_SetComp(a, b, EXTRA) } | invalid_comprehension dict[expr_ty]: | '{' a=[double_starred_kvpairs] '}' { @@ -534,7 +534,7 @@ yield_expr[expr_ty]: arguments[expr_ty] (memo): | a=args [','] &')' { a } - | incorrect_arguments + | invalid_arguments args[expr_ty]: | a=','.(starred_expression | named_expression !'=')+ b=[',' k=kwargs {k}] { _PyPegen_collect_call_seqs(p, a, b, EXTRA) } | a=kwargs { _Py_Call(_PyPegen_dummy_name(p), @@ -619,7 +619,7 @@ t_atom[expr_ty]: # From here on, there are rules for invalid syntax with specialised error messages -incorrect_arguments: +invalid_arguments: | args ',' '*' { RAISE_SYNTAX_ERROR("iterable argument unpacking follows keyword argument unpacking") } | a=expression for_if_clauses ',' [args | expression for_if_clauses] { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "Generator expression must be parenthesized") } @@ -664,6 +664,8 @@ invalid_del_stmt: RAISE_SYNTAX_ERROR_INVALID_TARGET(DEL_TARGETS, a) } invalid_block: | NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block") } +invalid_primary: + | primary a='{' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid syntax") } invalid_comprehension: | ('[' | '(' | '{') a=starred_expression for_if_clauses { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "iterable unpacking cannot be used in comprehension") } diff --git a/Include/cpython/fileobject.h b/Include/cpython/fileobject.h index 57eac13c..3005ce1f 100644 --- a/Include/cpython/fileobject.h +++ b/Include/cpython/fileobject.h @@ -8,14 +8,6 @@ extern "C" { PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); -#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 -PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; -#endif - -#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000 -PyAPI_DATA(int) Py_UTF8Mode; -#endif - /* The std printer acts as a preliminary sys.stderr until the new io infrastructure is in place. */ PyAPI_FUNC(PyObject *) PyFile_NewStdPrinter(int); diff --git a/Include/fileobject.h b/Include/fileobject.h index 456887ef..6ec2994a 100644 --- a/Include/fileobject.h +++ b/Include/fileobject.h @@ -20,8 +20,15 @@ PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); If non-NULL, this is different than the default encoding for strings */ PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; +#endif PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000 +PyAPI_DATA(int) Py_UTF8Mode; +#endif + /* A routine to check if a file descriptor can be select()-ed. */ #ifdef _MSC_VER /* On Windows, any socket fd can be select()-ed, no matter how high */ diff --git a/Include/internal/pycore_byteswap.h b/Include/internal/pycore_byteswap.h index 975e150d..2b20fc6c 100644 --- a/Include/internal/pycore_byteswap.h +++ b/Include/internal/pycore_byteswap.h @@ -15,12 +15,9 @@ extern "C" { # error "this header requires Py_BUILD_CORE define" #endif -#if ((defined(__GNUC__) \ - && ((__GNUC__ >= 5) || (__GNUC__ == 4) && (__GNUC_MINOR__ >= 8))) \ - || (defined(__clang__) \ - && (__clang_major__ >= 4 \ - || (__clang_major__ == 3 && __clang_minor__ >= 2)))) - /* __builtin_bswap16() is available since GCC 4.8 and clang 3.2, +#if defined(__GNUC__) \ + && ((__GNUC__ >= 5) || (__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) + /* __builtin_bswap16() is available since GCC 4.8, __builtin_bswap32() is available since GCC 4.3, __builtin_bswap64() is available since GCC 4.3. */ # define _PY_HAVE_BUILTIN_BSWAP @@ -34,7 +31,7 @@ extern "C" { static inline uint16_t _Py_bswap16(uint16_t word) { -#ifdef _PY_HAVE_BUILTIN_BSWAP +#if defined(_PY_HAVE_BUILTIN_BSWAP) || _Py__has_builtin(__builtin_bswap16) return __builtin_bswap16(word); #elif defined(_MSC_VER) Py_BUILD_ASSERT(sizeof(word) == sizeof(unsigned short)); @@ -49,7 +46,7 @@ _Py_bswap16(uint16_t word) static inline uint32_t _Py_bswap32(uint32_t word) { -#ifdef _PY_HAVE_BUILTIN_BSWAP +#if defined(_PY_HAVE_BUILTIN_BSWAP) || _Py__has_builtin(__builtin_bswap32) return __builtin_bswap32(word); #elif defined(_MSC_VER) Py_BUILD_ASSERT(sizeof(word) == sizeof(unsigned long)); @@ -66,7 +63,7 @@ _Py_bswap32(uint32_t word) static inline uint64_t _Py_bswap64(uint64_t word) { -#ifdef _PY_HAVE_BUILTIN_BSWAP +#if defined(_PY_HAVE_BUILTIN_BSWAP) || _Py__has_builtin(__builtin_bswap64) return __builtin_bswap64(word); #elif defined(_MSC_VER) return _byteswap_uint64(word); diff --git a/Include/internal/pycore_pylifecycle.h b/Include/internal/pycore_pylifecycle.h index b76bb2c7..50ab645f 100644 --- a/Include/internal/pycore_pylifecycle.h +++ b/Include/internal/pycore_pylifecycle.h @@ -68,6 +68,7 @@ extern void _PyFloat_Fini(void); extern void _PySlice_Fini(void); extern void _PyAsyncGen_Fini(void); +extern int _PySignal_Init(int install_signal_handlers); extern void PyOS_FiniInterrupts(void); extern void _PyExc_Fini(void); diff --git a/Include/patchlevel.h b/Include/patchlevel.h index a9e8ef19..0b5d280b 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 9 -#define PY_MICRO_VERSION 0 +#define PY_MICRO_VERSION 1 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.9.0" +#define PY_VERSION "3.9.1" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Include/pyport.h b/Include/pyport.h index 6505af46..4bd4eb47 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -863,4 +863,16 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; # define _Py_NO_RETURN #endif + +// Preprocessor check for a builtin preprocessor function. Always return 0 +// if __has_builtin() macro is not defined. +// +// __has_builtin() is available on clang and GCC 10. +#ifdef __has_builtin +# define _Py__has_builtin(x) __has_builtin(x) +#else +# define _Py__has_builtin(x) 0 +#endif + + #endif /* Py_PYPORT_H */ diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index e9efce7d..37975fe8 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -52,7 +52,7 @@ def _find_executable(executable, path=None): return executable -def _read_output(commandstring): +def _read_output(commandstring, capture_stderr=False): """Output from successful command execution or None""" # Similar to os.popen(commandstring, "r").read(), # but without actually using os.popen because that @@ -67,7 +67,10 @@ def _read_output(commandstring): os.getpid(),), "w+b") with contextlib.closing(fp) as fp: - cmd = "%s 2>/dev/null >'%s'" % (commandstring, fp.name) + if capture_stderr: + cmd = "%s >'%s' 2>&1" % (commandstring, fp.name) + else: + cmd = "%s 2>/dev/null >'%s'" % (commandstring, fp.name) return fp.read().decode('utf-8').strip() if not os.system(cmd) else None @@ -110,6 +113,26 @@ def _get_system_version(): return _SYSTEM_VERSION +_SYSTEM_VERSION_TUPLE = None +def _get_system_version_tuple(): + """ + Return the macOS system version as a tuple + + The return value is safe to use to compare + two version numbers. + """ + global _SYSTEM_VERSION_TUPLE + if _SYSTEM_VERSION_TUPLE is None: + osx_version = _get_system_version() + if osx_version: + try: + _SYSTEM_VERSION_TUPLE = tuple(int(i) for i in osx_version.split('.')) + except ValueError: + _SYSTEM_VERSION_TUPLE = () + + return _SYSTEM_VERSION_TUPLE + + def _remove_original_values(_config_vars): """Remove original unmodified values for testing""" # This is needed for higher-level cross-platform tests of get_platform. @@ -125,6 +148,33 @@ def _save_modified_value(_config_vars, cv, newvalue): _config_vars[_INITPRE + cv] = oldvalue _config_vars[cv] = newvalue + +_cache_default_sysroot = None +def _default_sysroot(cc): + """ Returns the root of the default SDK for this system, or '/' """ + global _cache_default_sysroot + + if _cache_default_sysroot is not None: + return _cache_default_sysroot + + contents = _read_output('%s -c -E -v - "): + in_incdirs = True + elif line.startswith("End of search list"): + in_incdirs = False + elif in_incdirs: + line = line.strip() + if line == '/usr/include': + _cache_default_sysroot = '/' + elif line.endswith(".sdk/usr/include"): + _cache_default_sysroot = line[:-12] + if _cache_default_sysroot is None: + _cache_default_sysroot = '/' + + return _cache_default_sysroot + def _supports_universal_builds(): """Returns True if universal builds are supported on this system""" # As an approximation, we assume that if we are running on 10.4 or above, @@ -132,14 +182,18 @@ def _supports_universal_builds(): # builds, in particular -isysroot and -arch arguments to the compiler. This # is in support of allowing 10.4 universal builds to run on 10.3.x systems. - osx_version = _get_system_version() - if osx_version: - try: - osx_version = tuple(int(i) for i in osx_version.split('.')) - except ValueError: - osx_version = '' + osx_version = _get_system_version_tuple() return bool(osx_version >= (10, 4)) if osx_version else False +def _supports_arm64_builds(): + """Returns True if arm64 builds are supported on this system""" + # There are two sets of systems supporting macOS/arm64 builds: + # 1. macOS 11 and later, unconditionally + # 2. macOS 10.15 with Xcode 12.2 or later + # For now the second category is ignored. + osx_version = _get_system_version_tuple() + return osx_version >= (11, 0) if osx_version else False + def _find_appropriate_compiler(_config_vars): """Find appropriate C compiler for extension module builds""" @@ -331,6 +385,12 @@ def compiler_fixup(compiler_so, cc_args): except ValueError: break + elif not _supports_arm64_builds(): + # Look for "-arch arm64" and drop that + for idx in reversed(range(len(compiler_so))): + if compiler_so[idx] == '-arch' and compiler_so[idx+1] == "arm64": + del compiler_so[idx:idx+2] + if 'ARCHFLAGS' in os.environ and not stripArch: # User specified different -arch flags in the environ, # see also distutils.sysconfig @@ -481,6 +541,8 @@ def get_platform_osx(_config_vars, osname, release, machine): if len(archs) == 1: machine = archs[0] + elif archs == ('arm64', 'x86_64'): + machine = 'universal2' elif archs == ('i386', 'ppc'): machine = 'fat' elif archs == ('i386', 'x86_64'): diff --git a/Lib/ast.py b/Lib/ast.py index d860917f..ecd4895f 100644 --- a/Lib/ast.py +++ b/Lib/ast.py @@ -662,17 +662,23 @@ class _Precedence(IntEnum): except ValueError: return self + +_SINGLE_QUOTES = ("'", '"') +_MULTI_QUOTES = ('"""', "'''") +_ALL_QUOTES = (*_SINGLE_QUOTES, *_MULTI_QUOTES) + class _Unparser(NodeVisitor): """Methods in this class recursively traverse an AST and output source code for the abstract syntax; original formatting is disregarded.""" - def __init__(self): + def __init__(self, *, _avoid_backslashes=False): self._source = [] self._buffer = [] self._precedences = {} self._type_ignores = {} self._indent = 0 + self._avoid_backslashes = _avoid_backslashes def interleave(self, inter, f, seq): """Call f on each item in seq, calling inter() in between.""" @@ -1067,15 +1073,85 @@ class _Unparser(NodeVisitor): with self.block(extra=self.get_type_comment(node)): self.traverse(node.body) + def _str_literal_helper( + self, string, *, quote_types=_ALL_QUOTES, escape_special_whitespace=False + ): + """Helper for writing string literals, minimizing escapes. + Returns the tuple (string literal to write, possible quote types). + """ + def escape_char(c): + # \n and \t are non-printable, but we only escape them if + # escape_special_whitespace is True + if not escape_special_whitespace and c in "\n\t": + return c + # Always escape backslashes and other non-printable characters + if c == "\\" or not c.isprintable(): + return c.encode("unicode_escape").decode("ascii") + return c + + escaped_string = "".join(map(escape_char, string)) + possible_quotes = quote_types + if "\n" in escaped_string: + possible_quotes = [q for q in possible_quotes if q in _MULTI_QUOTES] + possible_quotes = [q for q in possible_quotes if q not in escaped_string] + if not possible_quotes: + # If there aren't any possible_quotes, fallback to using repr + # on the original string. Try to use a quote from quote_types, + # e.g., so that we use triple quotes for docstrings. + string = repr(string) + quote = next((q for q in quote_types if string[0] in q), string[0]) + return string[1:-1], [quote] + if escaped_string: + # Sort so that we prefer '''"''' over """\"""" + possible_quotes.sort(key=lambda q: q[0] == escaped_string[-1]) + # If we're using triple quotes and we'd need to escape a final + # quote, escape it + if possible_quotes[0][0] == escaped_string[-1]: + assert len(possible_quotes[0]) == 3 + escaped_string = escaped_string[:-1] + "\\" + escaped_string[-1] + return escaped_string, possible_quotes + + def _write_str_avoiding_backslashes(self, string, *, quote_types=_ALL_QUOTES): + """Write string literal value with a best effort attempt to avoid backslashes.""" + string, quote_types = self._str_literal_helper(string, quote_types=quote_types) + quote_type = quote_types[0] + self.write(f"{quote_type}{string}{quote_type}") + def visit_JoinedStr(self, node): self.write("f") - self._fstring_JoinedStr(node, self.buffer_writer) - self.write(repr(self.buffer)) + if self._avoid_backslashes: + self._fstring_JoinedStr(node, self.buffer_writer) + self._write_str_avoiding_backslashes(self.buffer) + return + + # If we don't need to avoid backslashes globally (i.e., we only need + # to avoid them inside FormattedValues), it's cosmetically preferred + # to use escaped whitespace. That is, it's preferred to use backslashes + # for cases like: f"{x}\n". To accomplish this, we keep track of what + # in our buffer corresponds to FormattedValues and what corresponds to + # Constant parts of the f-string, and allow escapes accordingly. + buffer = [] + for value in node.values: + meth = getattr(self, "_fstring_" + type(value).__name__) + meth(value, self.buffer_writer) + buffer.append((self.buffer, isinstance(value, Constant))) + new_buffer = [] + quote_types = _ALL_QUOTES + for value, is_constant in buffer: + # Repeatedly narrow down the list of possible quote_types + value, quote_types = self._str_literal_helper( + value, quote_types=quote_types, + escape_special_whitespace=is_constant + ) + new_buffer.append(value) + value = "".join(new_buffer) + quote_type = quote_types[0] + self.write(f"{quote_type}{value}{quote_type}") def visit_FormattedValue(self, node): self.write("f") self._fstring_FormattedValue(node, self.buffer_writer) - self.write(repr(self.buffer)) + self._write_str_avoiding_backslashes(self.buffer) def _fstring_JoinedStr(self, node, write): for value in node.values: @@ -1090,11 +1166,13 @@ class _Unparser(NodeVisitor): def _fstring_FormattedValue(self, node, write): write("{") - unparser = type(self)() + unparser = type(self)(_avoid_backslashes=True) unparser.set_precedence(_Precedence.TEST.next(), node.value) expr = unparser.visit(node.value) if expr.startswith("{"): write(" ") # Separate pair of opening brackets as "{ {" + if "\\" in expr: + raise ValueError("Unable to avoid backslash in f-string expression part") write(expr) if node.conversion != -1: conversion = chr(node.conversion) @@ -1111,33 +1189,17 @@ class _Unparser(NodeVisitor): self.write(node.id) def _write_docstring(self, node): - def esc_char(c): - if c in ("\n", "\t"): - # In the AST form, we don't know the author's intentation - # about how this should be displayed. We'll only escape - # \n and \t, because they are more likely to be unescaped - # in the source - return c - return c.encode('unicode_escape').decode('ascii') - self.fill() if node.kind == "u": self.write("u") - - value = node.value - if value: - # Preserve quotes in the docstring by escaping them - value = "".join(map(esc_char, value)) - if value[-1] == '"': - value = value.replace('"', '\\"', -1) - value = value.replace('"""', '""\\"') - - self.write(f'"""{value}"""') + self._write_str_avoiding_backslashes(node.value, quote_types=_MULTI_QUOTES) def _write_constant(self, value): if isinstance(value, (float, complex)): # Substitute overflowing decimal literal for AST infinities. self.write(repr(value).replace("inf", _INFSTR)) + elif self._avoid_backslashes and isinstance(value, str): + self._write_str_avoiding_backslashes(value) else: self.write(repr(value)) diff --git a/Lib/asyncio/base_futures.py b/Lib/asyncio/base_futures.py index 22f29806..2c01ac98 100644 --- a/Lib/asyncio/base_futures.py +++ b/Lib/asyncio/base_futures.py @@ -1,6 +1,7 @@ __all__ = () import reprlib +from _thread import get_ident from . import format_helpers @@ -41,6 +42,16 @@ def _format_callbacks(cb): return f'cb=[{cb}]' +# bpo-42183: _repr_running is needed for repr protection +# when a Future or Task result contains itself directly or indirectly. +# The logic is borrowed from @reprlib.recursive_repr decorator. +# Unfortunately, the direct decorator usage is impossible because of +# AttributeError: '_asyncio.Task' object has no attribute '__module__' error. +# +# After fixing this thing we can return to the decorator based approach. +_repr_running = set() + + def _future_repr_info(future): # (Future) -> str """helper function for Future.__repr__""" @@ -49,9 +60,17 @@ def _future_repr_info(future): if future._exception is not None: info.append(f'exception={future._exception!r}') else: - # use reprlib to limit the length of the output, especially - # for very long strings - result = reprlib.repr(future._result) + key = id(future), get_ident() + if key in _repr_running: + result = '...' + else: + _repr_running.add(key) + try: + # use reprlib to limit the length of the output, especially + # for very long strings + result = reprlib.repr(future._result) + finally: + _repr_running.discard(key) info.append(f'result={result}') if future._callbacks: info.append(_format_callbacks(future._callbacks)) diff --git a/Lib/asyncio/exceptions.py b/Lib/asyncio/exceptions.py index e03602ef..f07e4486 100644 --- a/Lib/asyncio/exceptions.py +++ b/Lib/asyncio/exceptions.py @@ -34,8 +34,9 @@ class IncompleteReadError(EOFError): - expected: total number of expected bytes (or None if unknown) """ def __init__(self, partial, expected): + r_expected = 'undefined' if expected is None else repr(expected) super().__init__(f'{len(partial)} bytes read on a total of ' - f'{expected!r} expected bytes') + f'{r_expected} expected bytes') self.partial = partial self.expected = expected diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 8b05434f..f486b672 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -373,7 +373,7 @@ ALL_COMPLETED = concurrent.futures.ALL_COMPLETED async def wait(fs, *, loop=None, timeout=None, return_when=ALL_COMPLETED): """Wait for the Futures and coroutines given by fs to complete. - The sequence futures must not be empty. + The fs iterable must not be empty. Coroutines will be wrapped in Tasks. @@ -400,13 +400,15 @@ async def wait(fs, *, loop=None, timeout=None, return_when=ALL_COMPLETED): "and scheduled for removal in Python 3.10.", DeprecationWarning, stacklevel=2) - if any(coroutines.iscoroutine(f) for f in set(fs)): + fs = set(fs) + + if any(coroutines.iscoroutine(f) for f in fs): warnings.warn("The explicit passing of coroutine objects to " "asyncio.wait() is deprecated since Python 3.8, and " "scheduled for removal in Python 3.11.", DeprecationWarning, stacklevel=2) - fs = {ensure_future(f, loop=loop) for f in set(fs)} + fs = {ensure_future(f, loop=loop) for f in fs} return await _wait(fs, timeout, return_when, loop) @@ -573,7 +575,7 @@ def as_completed(fs, *, loop=None, timeout=None): Note: The futures 'f' are not necessarily members of fs. """ if futures.isfuture(fs) or coroutines.iscoroutine(fs): - raise TypeError(f"expect a list of futures, not {type(fs).__name__}") + raise TypeError(f"expect an iterable of futures, not {type(fs).__name__}") from .queues import Queue # Import here to avoid circular import problem. done = Queue(loop=loop) diff --git a/Lib/binhex.py b/Lib/binhex.py index 9559f46d..ace5217d 100644 --- a/Lib/binhex.py +++ b/Lib/binhex.py @@ -117,12 +117,12 @@ class _Hqxcoderengine: first = 0 while first <= len(self.hqxdata) - self.linelen: last = first + self.linelen - self.ofp.write(self.hqxdata[first:last] + b'\n') + self.ofp.write(self.hqxdata[first:last] + b'\r') self.linelen = LINELEN first = last self.hqxdata = self.hqxdata[first:] if force: - self.ofp.write(self.hqxdata + b':\n') + self.ofp.write(self.hqxdata + b':\r') def close(self): if self.data: diff --git a/Lib/cProfile.py b/Lib/cProfile.py index 4f202038..59b4699f 100755 --- a/Lib/cProfile.py +++ b/Lib/cProfile.py @@ -152,6 +152,11 @@ def main(): (options, args) = parser.parse_args() sys.argv[:] = args + # The script that we're profiling may chdir, so capture the absolute path + # to the output file at startup. + if options.outfile is not None: + options.outfile = os.path.abspath(options.outfile) + if len(args) > 0: if options.module: code = "run_module(modname, run_name='__main__')" diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index efd654e8..bc69a675 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -949,7 +949,7 @@ class ChainMap(_collections_abc.MutableMapping): def __iter__(self): d = {} for mapping in reversed(self.maps): - d.update(mapping) # reuses stored hash values if possible + d.update(dict.fromkeys(mapping)) # reuses stored hash values if possible return iter(d) def __contains__(self, key): diff --git a/Lib/copyreg.py b/Lib/copyreg.py index dfc463c4..7ab8c128 100644 --- a/Lib/copyreg.py +++ b/Lib/copyreg.py @@ -48,6 +48,7 @@ def _reconstructor(cls, base, state): return obj _HEAPTYPE = 1<<9 +_new_type = type(int.__new__) # Python code for object.__reduce_ex__ for protocols 0 and 1 @@ -57,6 +58,9 @@ def _reduce_ex(self, proto): for base in cls.__mro__: if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE: break + new = base.__new__ + if isinstance(new, _new_type) and new.__self__ is base: + break else: base = object # not really reachable if base is object: diff --git a/Lib/ctypes/macholib/dyld.py b/Lib/ctypes/macholib/dyld.py index 9d86b058..1c3f8fd3 100644 --- a/Lib/ctypes/macholib/dyld.py +++ b/Lib/ctypes/macholib/dyld.py @@ -6,6 +6,11 @@ import os from ctypes.macholib.framework import framework_info from ctypes.macholib.dylib import dylib_info from itertools import * +try: + from _ctypes import _dyld_shared_cache_contains_path +except ImportError: + def _dyld_shared_cache_contains_path(*args): + raise NotImplementedError __all__ = [ 'dyld_find', 'framework_find', @@ -122,8 +127,15 @@ def dyld_find(name, executable_path=None, env=None): dyld_executable_path_search(name, executable_path), dyld_default_search(name, env), ), env): + if os.path.isfile(path): return path + try: + if _dyld_shared_cache_contains_path(path): + return path + except NotImplementedError: + pass + raise ValueError("dylib %s could not be found" % (name,)) def framework_find(fn, executable_path=None, env=None): diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py index b99fdcba..92ac1840 100644 --- a/Lib/ctypes/test/test_find.py +++ b/Lib/ctypes/test/test_find.py @@ -1,4 +1,5 @@ import unittest +import unittest.mock import os.path import sys import test.support @@ -72,7 +73,7 @@ class Test_OpenGL_libs(unittest.TestCase): @unittest.skipUnless(sys.platform.startswith('linux'), 'Test only valid for Linux') -class LibPathFindTest(unittest.TestCase): +class FindLibraryLinux(unittest.TestCase): def test_find_on_libpath(self): import subprocess import tempfile @@ -111,6 +112,15 @@ class LibPathFindTest(unittest.TestCase): # LD_LIBRARY_PATH) self.assertEqual(find_library(libname), 'lib%s.so' % libname) + def test_find_library_with_gcc(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None): + self.assertNotEqual(find_library('c'), None) + + def test_find_library_with_ld(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \ + unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None): + self.assertNotEqual(find_library('c'), None) + if __name__ == "__main__": unittest.main() diff --git a/Lib/ctypes/test/test_macholib.py b/Lib/ctypes/test/test_macholib.py index 6b352695..a1bac26a 100644 --- a/Lib/ctypes/test/test_macholib.py +++ b/Lib/ctypes/test/test_macholib.py @@ -45,19 +45,22 @@ def find_lib(name): class MachOTest(unittest.TestCase): @unittest.skipUnless(sys.platform == "darwin", 'OSX-specific test') def test_find(self): - - self.assertEqual(find_lib('pthread'), - '/usr/lib/libSystem.B.dylib') + # On Mac OS 11, system dylibs are only present in the shared cache, + # so symlinks like libpthread.dylib -> libSystem.B.dylib will not + # be resolved by dyld_find + self.assertIn(find_lib('pthread'), + ('/usr/lib/libSystem.B.dylib', '/usr/lib/libpthread.dylib')) result = find_lib('z') # Issue #21093: dyld default search path includes $HOME/lib and # /usr/local/lib before /usr/lib, which caused test failures if # a local copy of libz exists in one of them. Now ignore the head # of the path. - self.assertRegex(result, r".*/lib/libz\..*.*\.dylib") + self.assertRegex(result, r".*/lib/libz.*\.dylib") - self.assertEqual(find_lib('IOKit'), - '/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit') + self.assertIn(find_lib('IOKit'), + ('/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit', + '/System/Library/Frameworks/IOKit.framework/IOKit')) if __name__ == "__main__": unittest.main() diff --git a/Lib/ctypes/test/test_wintypes.py b/Lib/ctypes/test/test_wintypes.py index 71442df8..243d5962 100644 --- a/Lib/ctypes/test/test_wintypes.py +++ b/Lib/ctypes/test/test_wintypes.py @@ -1,12 +1,13 @@ -import sys import unittest +# also work on POSIX + from ctypes import * +from ctypes import wintypes + -@unittest.skipUnless(sys.platform.startswith('win'), 'Windows-only test') class WinTypesTest(unittest.TestCase): def test_variant_bool(self): - from ctypes import wintypes # reads 16-bits from memory, anything non-zero is True for true_value in (1, 32767, 32768, 65535, 65537): true = POINTER(c_int16)(c_int16(true_value)) @@ -37,5 +38,6 @@ class WinTypesTest(unittest.TestCase): vb.value = [] self.assertIs(vb.value, False) + if __name__ == "__main__": unittest.main() diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 01176bf9..0c2510e1 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -93,6 +93,12 @@ elif os.name == "posix": # Andreas Degert's find functions, using gcc, /sbin/ldconfig, objdump import re, tempfile + 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 + def _findLib_gcc(name): # Run GCC's linker with the -t (aka --trace) option and examine the # library name it prints out. The GCC command will fail because we @@ -130,10 +136,17 @@ elif os.name == "posix": # Raised if the file was already removed, which is the normal # behaviour of GCC if linking fails pass - res = re.search(expr, trace) + res = re.findall(expr, trace) if not res: return None - return os.fsdecode(res.group(0)) + + for file in res: + # Check if the given file is an elf file: gcc can report + # some files that are linker scripts and not actual + # shared objects. See bpo-41976 for more details + if not _is_elf(file): + continue + return os.fsdecode(file) if sys.platform == "sunos5": @@ -299,9 +312,14 @@ elif os.name == "posix": stderr=subprocess.PIPE, universal_newlines=True) out, _ = p.communicate() - res = re.search(expr, os.fsdecode(out)) - if res: - result = res.group(0) + res = re.findall(expr, os.fsdecode(out)) + for file in res: + # Check if the given file is an elf file: gcc can report + # some files that are linker scripts and not actual + # shared objects. See bpo-41976 for more details + if not _is_elf(file): + continue + return os.fsdecode(file) except Exception: pass # result will be None return result @@ -309,7 +327,7 @@ elif os.name == "posix": def find_library(name): # See issue #9998 return _findSoname_ldconfig(name) or \ - _get_soname(_findLib_gcc(name) or _findLib_ld(name)) + _get_soname(_findLib_gcc(name)) or _get_soname(_findLib_ld(name)) ################################################################ # test code diff --git a/Lib/datetime.py b/Lib/datetime.py index 2294ac2b..e508d996 100644 --- a/Lib/datetime.py +++ b/Lib/datetime.py @@ -1579,7 +1579,7 @@ class time: self._tzinfo = tzinfo def __reduce_ex__(self, protocol): - return (time, self._getstate(protocol)) + return (self.__class__, self._getstate(protocol)) def __reduce__(self): return self.__reduce_ex__(2) diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd039..f50edd2d 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -54,8 +54,8 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): global _cfg_target, _cfg_target_split if _cfg_target is None: from distutils import sysconfig - _cfg_target = sysconfig.get_config_var( - 'MACOSX_DEPLOYMENT_TARGET') or '' + _cfg_target = str(sysconfig.get_config_var( + 'MACOSX_DEPLOYMENT_TARGET') or '') if _cfg_target: _cfg_target_split = [int(x) for x in _cfg_target.split('.')] if _cfg_target: diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 5e47e077..1b034c93 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -455,7 +455,7 @@ class BuildExtTestCase(TempdirManager, deptarget = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if deptarget: # increment the minor version number (i.e. 10.6 -> 10.7) - deptarget = [int(x) for x in deptarget.split('.')] + deptarget = [int(x) for x in str(deptarget).split('.')] deptarget[-1] += 1 deptarget = '.'.join(str(i) for i in deptarget) self._try_compile_deployment_target('<', deptarget) @@ -488,16 +488,20 @@ class BuildExtTestCase(TempdirManager, # get the deployment target that the interpreter was built with target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') - target = tuple(map(int, target.split('.')[0:2])) + target = tuple(map(int, str(target).split('.')[0:2])) # format the target value as defined in the Apple # Availability Macros. We can't use the macro names since # at least one value we test with will not exist yet. - if target[1] < 10: + if target[:2] < (10, 10): # for 10.1 through 10.9.x -> "10n0" target = '%02d%01d0' % target else: # for 10.10 and beyond -> "10nn00" - target = '%02d%02d00' % target + if len(target) >= 2: + target = '%02d%02d00' % target + else: + # 11 and later can have no minor version (11 instead of 11.0) + target = '%02d0000' % target deptarget_ext = Extension( 'deptarget', [deptarget_c], diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index 4d7a6de7..f0792de7 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -290,7 +290,7 @@ class UnixCCompiler(CCompiler): cflags = sysconfig.get_config_var('CFLAGS') m = re.search(r'-isysroot\s*(\S+)', cflags) if m is None: - sysroot = '/' + sysroot = _osx_support._default_sysroot(sysconfig.get_config_var('CC')) else: sysroot = m.group(1) diff --git a/Lib/email/generator.py b/Lib/email/generator.py index ae670c23..c9b12162 100644 --- a/Lib/email/generator.py +++ b/Lib/email/generator.py @@ -186,7 +186,11 @@ class Generator: # If we munged the cte, copy the message again and re-fix the CTE. if munge_cte: msg = deepcopy(msg) - msg.replace_header('content-transfer-encoding', munge_cte[0]) + # Preserve the header order if the CTE header already exists. + if msg.get('content-transfer-encoding') is None: + msg['Content-Transfer-Encoding'] = munge_cte[0] + else: + msg.replace_header('content-transfer-encoding', munge_cte[0]) msg.replace_header('content-type', munge_cte[1]) # Write the headers. First we see if the message object wants to # handle that itself. If not, we'll do it generically. diff --git a/Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl b/Lib/ensurepip/_bundled/pip-20.2.1-py2.py3-none-any.whl deleted file mode 100644 index 3d0d3f8ae7facb9251f2c6f10f81fd2f75645a2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1503343 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

    It+kLTgpQCpSnpOZEP3t1O*7&E%|vyc<7_~ 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

    )XwltIL-?a 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

    txk^kSpG=(=dAjrhU) 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 z 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

    8N0Q;_Y6yE2Bcgc@ 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 z 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%0AKd$~ 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 z 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%0A9>WX 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 z%0A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

    @AhfdBhBZBGC5wwWb= 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

    Uv>>ASRI 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ξ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 Bvh?gGENT2aze2kOV~=$M<;d_QjBfa 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 T_IDB!1U{}mQ%M4sGnxMf3dYqw delta 3007 zcma)8ZD?Cn7=H7$r0JTZX>XdQ^(MM5+|Zi4^&-~k*2yxhPN@D+5JhB8boj%dsKp<< z*$0{*!UZED+y02?21BS+5$4e9K5zxg#vICEvrIRgjBRz@nt|-~c~5RW*pK0xoO926 zp69$D=e#*L?;rHd?)2D19tu(>6T{O_e|d@CB%)ZXrW+oj=X?ZQcp=&wB6`O!cujvf zK$PzwTCqa(4DDS`^kKZthYsGFkvcy^FJtZbF(Ly#V3O8iEf!){#9P_wPue9Se5q8b zJ~b+g(e0MyDAi%E7DH9b8W|A+bGhnp z`6}S;(1TFeh9yi`mP{-<<#Ji+m}Lq|&((s$t&uCTpv*g5-EzPOUMRqU$f)qkPNCo+ z0Huoq;A3J%aM-T`7Xe4{Z6Sz^UByHd0XRF94lk~Qs;eUav5x>HsDcEj9562kqm}@d z%hmFN*brT)km?xh*E5C(`8Pdn&-qHD zC8Bgo^Hu)tUKa3R##c#ceX9hoHydLvkq6C(7DS7prCF*phL%CA7ikGK+H03kkeEbG zst0-u|5uF`r7FQKmfl6~S7@R*!P`-tw!@A!GDNrYf#O8%@sUF)|K-E+& z=!L@Sf`bVugK-cbJH};!GgcT^26o^uZ8A91g@^d#K)n zUK(V}ribX`H%95Rx7N_Uw^!5DmiuY@OY7;qSJu%7uRch-URz7wY+Xg4mmZ;=TQ}0z z9~J3{vw@C%@(LN>G7bH}wDJhk=pm+iW|$tBWqS4}rgc9vZ8*jBg#8=S>u67&WqRgM zrWfXzHeO`fy?Zz9-@l(u9Gs+W^Gsh|VLE*HFwM-&(Cq9i9Y21YPM$nTr%s)s)2C0< z<#WH%iGP^p=H}@9`SWz)!Uei?=@Knm{+oWk!8AWVPuH$pqZ>DF(9N4SYuTZ%%xKS4 zj%iQcwmlxuD&H+h$PS7$7Gq!-Sx8Pz4X2V?cRZdLY7nwnGoR1p^2WeGHph1)dwR6) zp`ot2g z5JcWG>oV9L3bHN)Sm=&-#<~!ta$uVI0h2qtZ6V+wBwa#+fx|w;FuC39ZL@0x6=iok zhA^8BINLx)cV7!vVX6!LkuTFmhHtZ(2Dk3PzIvyeH*4$mMgu2P5HtOMnaRP2Mq#9dI4M zhZ`F6ogu_f-$AjTHSmQA+q6^~D$4p1AOlwCXj&$Wga-#}X*6)xuFAvW$l#y~a%lrM zBnOnmwytW9r~BSC3z9S3Z|*;&5Q*Q6n&d zos``~HMZd507YP8A1%wsqM*}hL#{j}b^CB(i)(`|SVJ650vt5OU}FG9Yt~_P#*8X( zNrp9$LBTa(;H_e1RV+(;$qNu>3< zeeq%1GqHxso7dAvudSmmx2>niom=SMA8~~qXBzv3=_%Zlazjqwxo_V-nwpxT0|yS! z$>}|`3peN_ZpuT44$;x0N7YSv=FFK4{c-j;I(P0IUA%aa{+Yk5uEgutuh*}`%Jnap-`s|J&{T#dy{&5xUDZJ zy4KU%3vPQjj$Wr|qCcg_{CYbGxC1()S~8^v{HacNqAStguY0{qQo3&IeM>{ZE)A{% zUa#Nh@hs_UYts__dVeh7^~;1Fj%&aZVp@;+JaEtjr5{?L$M5qY09l_z1hOOs9RcWx zWN(kG=tTkuKGvU{JdDA9n?Y z&!fqIW0BHwZ25gtpK4DpPsmR#gSHl}fyXKzci%lV@829tHH$}B;5FXWUu=5R{~yyq By*vN_ diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index fd762077..869be0a6 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -1,8 +1,32 @@ +What's New in IDLE 3.9.1 +Released on 2020-12-07? +====================================== + + +bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround +that prevented running files with shortcuts when using new universal2 +installers built on macOS 11. + +bpo-42426: Fix reporting offset of the RE error in searchengine. + +bpo-42416: Get docstrings for IDLE calltips more often +by using inspect.getdoc. + +bpo-33987: Mostly finish using ttk widgets, mainly for editor, +settings, and searches. Some patches by Mark Roseman. + +bpo-41775: Make 'IDLE Shell' the shell title. + +bpo-35764: Rewrite the Calltips doc section. + +bpo-40181: In calltips, stop reminding that '/' marks the end of +positional-only arguments. + + What's New in IDLE 3.9.0 (since 3.8.0) Released on 2020-10-05? ====================================== - bpo-41468: Improve IDLE run crash error message (which users should never see). diff --git a/Lib/idlelib/calltip.py b/Lib/idlelib/calltip.py index d4092c78..40bc5a0a 100644 --- a/Lib/idlelib/calltip.py +++ b/Lib/idlelib/calltip.py @@ -55,18 +55,50 @@ class Calltip: self.open_calltip(False) def open_calltip(self, evalfuncs): - self.remove_calltip_window() + """Maybe close an existing calltip and maybe open a new calltip. + Called from (force_open|try_open|refresh)_calltip_event functions. + """ hp = HyperParser(self.editwin, "insert") sur_paren = hp.get_surrounding_brackets('(') + + # If not inside parentheses, no calltip. if not sur_paren: + self.remove_calltip_window() return + + # If a calltip is shown for the current parentheses, do + # nothing. + if self.active_calltip: + opener_line, opener_col = map(int, sur_paren[0].split('.')) + if ( + (opener_line, opener_col) == + (self.active_calltip.parenline, self.active_calltip.parencol) + ): + return + hp.set_index(sur_paren[0]) - expression = hp.get_expression() + try: + expression = hp.get_expression() + except ValueError: + expression = None if not expression: + # No expression before the opening parenthesis, e.g. + # because it's in a string or the opener for a tuple: + # Do nothing. return + + # At this point, the current index is after an opening + # parenthesis, in a section of code, preceded by a valid + # expression. If there is a calltip shown, it's not for the + # same index and should be closed. + self.remove_calltip_window() + + # Simple, fast heuristic: If the preceding expression includes + # an opening parenthesis, it likely includes a function call. if not evalfuncs and (expression.find('(') != -1): return + argspec = self.fetch_tip(expression) if not argspec: return @@ -118,7 +150,6 @@ _INDENT = ' '*4 # for wrapped signatures _first_param = re.compile(r'(?<=\()\w*\,?\s*') _default_callable_argspec = "See source or doc" _invalid_method = "invalid method signature" -_argument_positional = " # '/' marks preceding args as positional-only." def get_argspec(ob): '''Return a string describing the signature of a callable object, or ''. @@ -134,6 +165,7 @@ def get_argspec(ob): ob_call = ob.__call__ except BaseException: # Buggy user object could raise anything. return '' # No popup for non-callables. + # For Get_argspecTest.test_buggy_getattr_class, CallA() & CallB(). fob = ob_call if isinstance(ob_call, types.MethodType) else ob # Initialize argspec and wrap it to get lines. @@ -146,9 +178,6 @@ def get_argspec(ob): else: argspec = '' - if '/' in argspec and len(argspec) < _MAX_COLS - len(_argument_positional): - # Add explanation TODO remove after 3.7, before 3.9. - argspec += _argument_positional if isinstance(fob, type) and argspec == '()': # If fob has no argument, use default callable argspec. argspec = _default_callable_argspec @@ -157,10 +186,7 @@ def get_argspec(ob): if len(argspec) > _MAX_COLS else [argspec] if argspec else []) # Augment lines from docstring, if any, and join to get argspec. - if isinstance(ob_call, types.MethodType): - doc = ob_call.__doc__ - else: - doc = getattr(ob, "__doc__", "") + doc = inspect.getdoc(ob) if doc: for line in doc.split('\n', _MAX_LINES)[:_MAX_LINES]: line = line.strip() diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 82596498..a84e1c56 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -67,7 +67,6 @@ class ConfigDialog(Toplevel): if not _utest: self.withdraw() - self.configure(borderwidth=5) self.title(title or 'IDLE Preferences') x = parent.winfo_rootx() + 20 y = parent.winfo_rooty() + (30 if not _htest else 150) @@ -97,6 +96,7 @@ class ConfigDialog(Toplevel): """Create and place widgets for tabbed dialog. Widgets Bound to self: + frame: encloses all other widgets note: Notebook highpage: HighPage fontpage: FontPage @@ -109,7 +109,9 @@ class ConfigDialog(Toplevel): load_configs: Load pages except for extensions. activate_config_changes: Tell editors to reload. """ - self.note = note = Notebook(self) + self.frame = frame = Frame(self, padding="5px") + self.frame.grid(sticky="nwes") + self.note = note = Notebook(frame) self.highpage = HighPage(note) self.fontpage = FontPage(note, self.highpage) self.keyspage = KeysPage(note) @@ -148,7 +150,7 @@ class ConfigDialog(Toplevel): padding_args = {} else: padding_args = {'padding': (6, 3)} - outer = Frame(self, padding=2) + outer = Frame(self.frame, padding=2) buttons_frame = Frame(outer, padding=2) self.buttons = {} for txt, cmd in ( @@ -687,7 +689,7 @@ class HighPage(Frame): def __init__(self, master): super().__init__(master) - self.cd = master.master + self.cd = master.winfo_toplevel() self.style = Style(master) self.create_page_highlight() self.load_theme_cfg() @@ -1346,7 +1348,7 @@ class KeysPage(Frame): def __init__(self, master): super().__init__(master) - self.cd = master.master + self.cd = master.winfo_toplevel() self.create_page_keys() self.load_key_cfg() diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html index b2853cff..170999e1 100644 --- a/Lib/idlelib/help.html +++ b/Lib/idlelib/help.html @@ -1,23 +1,24 @@ - + - IDLE — Python 3.10.0a0 documentation + + IDLE — Python 3.10.0a1 documentation - - - - - + + + + + - + @@ -71,11 +72,12 @@

  • - 3.10.0a0 Documentation » + 3.10.0a1 Documentation »
  • +
  • @@ -426,30 +428,30 @@ and that other files do not. Run Python code with the Run menu.

    the Command key on macOS.

    • Backspace deletes to the left; Del deletes to the right

    • -
    • C-Backspace delete word left; C-Del delete word to the right

    • -
    • Arrow keys and Page Up/Page Down to move around

    • -
    • C-LeftArrow and C-RightArrow moves by words

    • +
    • C-Backspace delete word left; C-Del delete word to the right

    • +
    • Arrow keys and Page Up/Page Down to move around

    • +
    • C-LeftArrow and C-RightArrow moves by words

    • Home/End go to begin/end of line

    • -
    • C-Home/C-End go to begin/end of file

    • +
    • C-Home/C-End go to begin/end of file

    • Some useful Emacs bindings are inherited from Tcl/Tk:

        -
      • C-a beginning of line

      • -
      • C-e end of line

      • -
      • C-k kill line (but doesn’t put it in clipboard)

      • -
      • C-l center window around the insertion point

      • -
      • C-b go backward one character without deleting (usually you can +

      • C-a beginning of line

      • +
      • C-e end of line

      • +
      • C-k kill line (but doesn’t put it in clipboard)

      • +
      • C-l center window around the insertion point

      • +
      • C-b go backward one character without deleting (usually you can also use the cursor key for this)

      • -
      • C-f go forward one character without deleting (usually you can +

      • C-f go forward one character without deleting (usually you can also use the cursor key for this)

      • -
      • C-p go up one line (usually you can also use the cursor key for +

      • C-p go up one line (usually you can also use the cursor key for this)

      • -
      • C-d delete next character

      • +
      • C-d delete next character

    -

    Standard keybindings (like C-c to copy and C-v to paste) +

    Standard keybindings (like C-c to copy and C-v to paste) may work. Keybindings are selected in the Configure IDLE dialog.

    @@ -486,7 +488,7 @@ one can specify a drive first.) Move into subdirectories by typing a directory name and a separator.

    Instead of waiting, or after a box is closed, open a completion box immediately with Show Completions on the Edit menu. The default hot -key is C-space. If one types a prefix for the desired name +key is C-space. If one types a prefix for the desired name before opening the box, the first match or near miss is made visible. The result is the same as if one enters a prefix after the box is displayed. Show Completions after a quote completes @@ -509,26 +511,29 @@ by typing ‘_’ after ‘.’, either before or after the box is opened.

    Calltips¶

    -

    A calltip is shown when one types ( after the name of an accessible -function. A name expression may include dots and subscripts. A calltip -remains until it is clicked, the cursor is moved out of the argument area, -or ) is typed. When the cursor is in the argument part of a definition, -the menu or shortcut display a calltip.

    -

    A calltip consists of the function signature and the first line of the -docstring. For builtins without an accessible signature, the calltip -consists of all lines up the fifth line or the first blank line. These -details may change.

    -

    The set of accessible functions depends on what modules have been imported -into the user process, including those imported by Idle itself, -and what definitions have been run, all since the last restart.

    +

    A calltip is shown automatically when one types ( after the name +of an accessible function. A function name expression may include +dots and subscripts. A calltip remains until it is clicked, the cursor +is moved out of the argument area, or ) is typed. Whenever the +cursor is in the argument part of a definition, select Edit and “Show +Call Tip” on the menu or enter its shortcut to display a calltip.

    +

    The calltip consists of the function’s signature and docstring up to +the latter’s first blank line or the fifth non-blank line. (Some builtin +functions lack an accessible signature.) A ‘/’ or ‘*’ in the signature +indicates that the preceding or following arguments are passed by +position or name (keyword) only. Details are subject to change.

    +

    In Shell, the accessible functions depends on what modules have been +imported into the user process, including those imported by Idle itself, +and which definitions have been run, all since the last restart.

    For example, restart the Shell and enter itertools.count(. A calltip -appears because Idle imports itertools into the user process for its own use. -(This could change.) Enter turtle.write( and nothing appears. Idle does -not import turtle. The menu or shortcut do nothing either. Enter -import turtle and then turtle.write( will work.

    -

    In an editor, import statements have no effect until one runs the file. One -might want to run a file after writing the import statements at the top, -or immediately run an existing file before editing.

    +appears because Idle imports itertools into the user process for its own +use. (This could change.) Enter turtle.write( and nothing appears. +Idle does not itself import turtle. The menu entry and shortcut also do +nothing. Enter import turtle. Thereafter, turtle.write( +will display a calltip.

    +

    In an editor, import statements have no effect until one runs the file. +One might want to run a file after writing import statements, after +adding function definitions, or after opening an existing file.

    Code Context¶

    @@ -556,14 +561,14 @@ If one pastes more that one statement into Shell, the result will be a

    The editing features described in previous subsections work when entering code interactively. IDLE’s Shell window also responds to the following keys.

      -
    • C-c interrupts executing command

    • -
    • C-d sends end-of-file; closes window if typed at a >>> prompt

    • -
    • Alt-/ (Expand word) is also useful to reduce typing

      +
    • C-c interrupts executing command

    • +
    • C-d sends end-of-file; closes window if typed at a >>> prompt

    • +
    • Alt-/ (Expand word) is also useful to reduce typing

      Command history

        -
      • Alt-p retrieves previous command matching what you have typed. On -macOS use C-p.

      • -
      • Alt-n retrieves next. On macOS use C-n.

      • +
      • Alt-p retrieves previous command matching what you have typed. On +macOS use C-p.

      • +
      • Alt-n retrieves next. On macOS use C-n.

      • Return while on any previous command retrieves that command

    • @@ -849,6 +854,7 @@ also used for testing.

    +
    @@ -944,11 +950,12 @@ also used for testing.

  • - 3.10.0a0 Documentation » + 3.10.0a1 Documentation »
  • +
  • @@ -975,11 +982,11 @@ also used for testing.



    - Last updated on Sep 09, 2020. + Last updated on Oct 20, 2020. Found a bug?
    - Created using Sphinx 2.1.1. + Created using Sphinx 3.2.1. diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py index 9f63ea0d..f420d40f 100644 --- a/Lib/idlelib/help.py +++ b/Lib/idlelib/help.py @@ -28,8 +28,8 @@ from html.parser import HTMLParser from os.path import abspath, dirname, isfile, join from platform import python_version -from tkinter import Toplevel, Frame, Text, Menu -from tkinter.ttk import Menubutton, Scrollbar +from tkinter import Toplevel, Text, Menu +from tkinter.ttk import Frame, Menubutton, Scrollbar, Style from tkinter import font as tkfont from idlelib.config import idleConf @@ -212,7 +212,9 @@ class HelpFrame(Frame): def __init__(self, parent, filename): Frame.__init__(self, parent) self.text = text = HelpText(self, filename) - self['background'] = text['background'] + self.style = Style(parent) + self['style'] = 'helpframe.TFrame' + self.style.configure('helpframe.TFrame', background=text['background']) self.toc = toc = self.toc_menu(text) self.scroll = scroll = Scrollbar(self, command=text.yview) text['yscrollcommand'] = scroll.set diff --git a/Lib/idlelib/idle_test/mock_tk.py b/Lib/idlelib/idle_test/mock_tk.py index 576f7d5d..b736bd00 100644 --- a/Lib/idlelib/idle_test/mock_tk.py +++ b/Lib/idlelib/idle_test/mock_tk.py @@ -3,6 +3,9 @@ A gui object is anything with a master or parent parameter, which is typically required in spite of what the doc strings say. """ +import re +from _tkinter import TclError + class Event: '''Minimal mock with attributes for testing event handlers. @@ -22,6 +25,7 @@ class Event: "Create event with attributes needed for test" self.__dict__.update(kwds) + class Var: "Use for String/Int/BooleanVar: incomplete" def __init__(self, master=None, value=None, name=None): @@ -33,6 +37,7 @@ class Var: def get(self): return self.value + class Mbox_func: """Generic mock for messagebox functions, which all have the same signature. @@ -50,6 +55,7 @@ class Mbox_func: self.kwds = kwds return self.result # Set by tester for ask functions + class Mbox: """Mock for tkinter.messagebox with an Mbox_func for each function. @@ -85,7 +91,6 @@ class Test(unittest.TestCase): showinfo = Mbox_func() # None showwarning = Mbox_func() # None -from _tkinter import TclError class Text: """A semi-functional non-gui replacement for tkinter.Text text editors. @@ -154,6 +159,8 @@ class Text: if char.endswith(' lineend') or char == 'end': return line, linelength # Tk requires that ignored chars before ' lineend' be valid int + if m := re.fullmatch(r'end-(\d*)c', char, re.A): # Used by hyperparser. + return line, linelength - int(m.group(1)) # Out of bounds char becomes first or last index of line char = int(char) @@ -177,7 +184,6 @@ class Text: n -= 1 return n, len(self.data[n]) + endflag - def insert(self, index, chars): "Insert chars before the character at index." @@ -193,7 +199,6 @@ class Text: self.data[line+1:line+1] = chars[1:] self.data[line+len(chars)-1] += after - def get(self, index1, index2=None): "Return slice from index1 to index2 (default is 'index1+1')." @@ -212,7 +217,6 @@ class Text: lines.append(self.data[endline][:endchar]) return ''.join(lines) - def delete(self, index1, index2=None): '''Delete slice from index1 to index2 (default is 'index1+1'). @@ -297,6 +301,7 @@ class Text: "Bind to this widget at event sequence a call to function func." pass + class Entry: "Mock for tkinter.Entry." def focus_set(self): diff --git a/Lib/idlelib/idle_test/test_calltip.py b/Lib/idlelib/idle_test/test_calltip.py index d386b5cd..a76829f3 100644 --- a/Lib/idlelib/idle_test/test_calltip.py +++ b/Lib/idlelib/idle_test/test_calltip.py @@ -1,10 +1,12 @@ -"Test calltip, coverage 60%" +"Test calltip, coverage 76%" from idlelib import calltip import unittest +from unittest.mock import Mock import textwrap import types import re +from idlelib.idle_test.mock_tk import Text # Test Class TC is used in multiple get_argspec test methods @@ -61,18 +63,16 @@ class Get_argspecTest(unittest.TestCase): if List.__doc__ is not None: tiptest(List, - f'(iterable=(), /){calltip._argument_positional}' + f'(iterable=(), /)' f'\n{List.__doc__}') tiptest(list.__new__, '(*args, **kwargs)\n' 'Create and return a new object. ' 'See help(type) for accurate signature.') tiptest(list.__init__, - '(self, /, *args, **kwargs)' - + calltip._argument_positional + '\n' + + '(self, /, *args, **kwargs)\n' 'Initialize self. See help(type(self)) for accurate signature.') - append_doc = (calltip._argument_positional - + "\nAppend object to the end of the list.") + append_doc = "\nAppend object to the end of the list." tiptest(list.append, '(self, object, /)' + append_doc) tiptest(List.append, '(self, object, /)' + append_doc) tiptest([].append, '(object, /)' + append_doc) @@ -99,7 +99,12 @@ non-overlapping occurrences o...''') (width=70, initial_indent='', subsequent_indent='', expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True, tabsize=8, *, max_lines=None, - placeholder=' [...]')''') + placeholder=' [...]') +Object for wrapping/filling text. The public interface consists of +the wrap() and fill() methods; the other methods are just there for +subclasses to override in order to tweak the default behaviour. +If you want to completely replace the main wrapping algorithm, +you\'ll probably have to override _wrap_chunks().''') def test_properly_formated(self): @@ -241,7 +246,7 @@ bytes() -> empty bytes object''') __class__ = property({}.__getitem__, {}.__setitem__) class Object(metaclass=Type): __slots__ = '__class__' - for meth, mtip in ((Type, default_tip), (Object, default_tip), + for meth, mtip in ((Type, get_spec(type)), (Object, default_tip), (Object(), '')): with self.subTest(meth=meth, mtip=mtip): self.assertEqual(get_spec(meth), mtip) @@ -259,5 +264,100 @@ class Get_entityTest(unittest.TestCase): self.assertIs(calltip.get_entity('int'), int) +# Test the 9 Calltip methods. +# open_calltip is about half the code; the others are fairly trivial. +# The default mocks are what are needed for open_calltip. + +class mock_Shell(): + "Return mock sufficient to pass to hyperparser." + def __init__(self, text): + text.tag_prevrange = Mock(return_value=None) + self.text = text + self.prompt_last_line = ">>> " + self.indentwidth = 4 + self.tabwidth = 8 + + +class mock_TipWindow: + def __init__(self): + pass + + def showtip(self, text, parenleft, parenright): + self.args = parenleft, parenright + self.parenline, self.parencol = map(int, parenleft.split('.')) + + +class WrappedCalltip(calltip.Calltip): + def _make_tk_calltip_window(self): + return mock_TipWindow() + + def remove_calltip_window(self, event=None): + if self.active_calltip: # Setup to None. + self.active_calltip = None + self.tips_removed += 1 # Setup to 0. + + def fetch_tip(self, expression): + return 'tip' + + +class CalltipTest(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.text = Text() + cls.ct = WrappedCalltip(mock_Shell(cls.text)) + + def setUp(self): + self.text.delete('1.0', 'end') # Insert and call + self.ct.active_calltip = None + # Test .active_calltip, +args + self.ct.tips_removed = 0 + + def open_close(self, testfunc): + # Open-close template with testfunc called in between. + opentip = self.ct.open_calltip + self.text.insert(1.0, 'f(') + opentip(False) + self.tip = self.ct.active_calltip + testfunc(self) ### + self.text.insert('insert', ')') + opentip(False) + self.assertIsNone(self.ct.active_calltip, None) + + def test_open_close(self): + def args(self): + self.assertEqual(self.tip.args, ('1.1', '1.end')) + self.open_close(args) + + def test_repeated_force(self): + def force(self): + for char in 'abc': + self.text.insert('insert', 'a') + self.ct.open_calltip(True) + self.ct.open_calltip(True) + self.assertIs(self.ct.active_calltip, self.tip) + self.open_close(force) + + def test_repeated_parens(self): + def parens(self): + for context in "a", "'": + with self.subTest(context=context): + self.text.insert('insert', context) + for char in '(()())': + self.text.insert('insert', char) + self.assertIs(self.ct.active_calltip, self.tip) + self.text.insert('insert', "'") + self.open_close(parens) + + def test_comment_parens(self): + def comment(self): + self.text.insert('insert', "# ") + for char in '(()())': + self.text.insert('insert', char) + self.assertIs(self.ct.active_calltip, self.tip) + self.text.insert('insert', "\n") + self.open_close(comment) + + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/Lib/idlelib/idle_test/test_searchbase.py b/Lib/idlelib/idle_test/test_searchbase.py index aee0c4c6..8c9c410e 100644 --- a/Lib/idlelib/idle_test/test_searchbase.py +++ b/Lib/idlelib/idle_test/test_searchbase.py @@ -76,7 +76,7 @@ class SearchDialogBaseTest(unittest.TestCase): def test_make_entry(self): equal = self.assertEqual self.dialog.row = 0 - self.dialog.top = self.root + self.dialog.frame = Frame(self.root) entry, label = self.dialog.make_entry("Test:", 'hello') equal(label['text'], 'Test:') @@ -89,7 +89,7 @@ class SearchDialogBaseTest(unittest.TestCase): equal(self.dialog.row, 1) def test_create_entries(self): - self.dialog.top = self.root + self.dialog.frame = Frame(self.root) self.dialog.row = 0 self.engine.setpat('hello') self.dialog.create_entries() @@ -97,7 +97,7 @@ class SearchDialogBaseTest(unittest.TestCase): def test_make_frame(self): self.dialog.row = 0 - self.dialog.top = self.root + self.dialog.frame = Frame(self.root) frame, label = self.dialog.make_frame() self.assertEqual(label, '') self.assertEqual(str(type(frame)), "") @@ -108,7 +108,7 @@ class SearchDialogBaseTest(unittest.TestCase): self.assertEqual(label['text'], 'testlabel') def btn_test_setup(self, meth): - self.dialog.top = self.root + self.dialog.frame = Frame(self.root) self.dialog.row = 0 return meth() @@ -140,13 +140,13 @@ class SearchDialogBaseTest(unittest.TestCase): self.assertEqual(var.get(), state) def test_make_button(self): - self.dialog.top = self.root - self.dialog.buttonframe = Frame(self.dialog.top) + self.dialog.frame = Frame(self.root) + self.dialog.buttonframe = Frame(self.dialog.frame) btn = self.dialog.make_button('Test', self.dialog.close) self.assertEqual(btn['text'], 'Test') def test_create_command_buttons(self): - self.dialog.top = self.root + self.dialog.frame = Frame(self.root) self.dialog.create_command_buttons() # Look for close button command in buttonframe closebuttoncommand = '' diff --git a/Lib/idlelib/idle_test/test_searchengine.py b/Lib/idlelib/idle_test/test_searchengine.py index 3d26d62a..f8401ce9 100644 --- a/Lib/idlelib/idle_test/test_searchengine.py +++ b/Lib/idlelib/idle_test/test_searchengine.py @@ -175,11 +175,13 @@ class SearchEngineTest(unittest.TestCase): engine.setpat('') Equal(engine.getprog(), None) + Equal(Mbox.showerror.message, + 'Error: Empty regular expression') engine.setpat('+') engine.revar.set(1) Equal(engine.getprog(), None) - self.assertEqual(Mbox.showerror.message, - 'Error: nothing to repeat at position 0\nPattern: +') + Equal(Mbox.showerror.message, + 'Error: nothing to repeat\nPattern: +\nOffset: 0') def test_report_error(self): showerror = Mbox.showerror diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index 66ae0f74..adc30288 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -757,7 +757,7 @@ class ModifiedInterpreter(InteractiveInterpreter): def runcode(self, code): "Override base class method" if self.tkconsole.executing: - self.interp.restart_subprocess() + self.restart_subprocess() self.checklinecache() debugger = self.debugger try: @@ -833,7 +833,7 @@ class ModifiedInterpreter(InteractiveInterpreter): class PyShell(OutputWindow): - shell_title = "Python " + python_version() + " Shell" + shell_title = "IDLE Shell " + python_version() # Override classes ColorDelegator = ModifiedColorDelegator diff --git a/Lib/idlelib/runscript.py b/Lib/idlelib/runscript.py index a5410879..028b0dbd 100644 --- a/Lib/idlelib/runscript.py +++ b/Lib/idlelib/runscript.py @@ -11,6 +11,7 @@ TODO: Specify command line arguments in a dialog box. """ import os import tabnanny +import time import tokenize import tkinter.messagebox as tkMessageBox @@ -42,9 +43,7 @@ class ScriptBinding: self.root = self.editwin.root # cli_args is list of strings that extends sys.argv self.cli_args = [] - - if macosx.isCocoaTk(): - self.editwin.text_frame.bind('<>', self._run_module_event) + self.perf = 0.0 # Workaround for macOS 11 Uni2; see bpo-42508. def check_module_event(self, event): if isinstance(self.editwin, outwin.OutputWindow): @@ -107,24 +106,10 @@ class ScriptBinding: finally: shell.set_warning_stream(saved_stream) - def run_module_event(self, event): - if macosx.isCocoaTk(): - # Tk-Cocoa in MacOSX is broken until at least - # Tk 8.5.9, and without this rather - # crude workaround IDLE would hang when a user - # tries to run a module using the keyboard shortcut - # (the menu item works fine). - self.editwin.text_frame.after(200, - lambda: self.editwin.text_frame.event_generate( - '<>')) - return 'break' - else: - return self._run_module_event(event) - def run_custom_event(self, event): - return self._run_module_event(event, customize=True) + return self.run_module_event(event, customize=True) - def _run_module_event(self, event, *, customize=False): + def run_module_event(self, event, *, customize=False): """Run the module after setting up the environment. First check the syntax. Next get customization. If OK, make @@ -133,6 +118,8 @@ class ScriptBinding: module being executed and also add that directory to its sys.path if not already included. """ + if macosx.isCocoaTk() and (time.perf_counter() - self.perf < .05): + return 'break' if isinstance(self.editwin, outwin.OutputWindow): self.editwin.text.bell() return 'break' @@ -218,6 +205,7 @@ class ScriptBinding: # XXX This should really be a function of EditorWindow... tkMessageBox.showerror(title, message, parent=self.editwin.text) self.editwin.text.focus_set() + self.perf = time.perf_counter() if __name__ == "__main__": diff --git a/Lib/idlelib/searchbase.py b/Lib/idlelib/searchbase.py index 6fba0b8e..fbef87aa 100644 --- a/Lib/idlelib/searchbase.py +++ b/Lib/idlelib/searchbase.py @@ -33,6 +33,7 @@ class SearchDialogBase: '''Initialize root, engine, and top attributes. top (level widget): set in create_widgets() called from open(). + frame: container for all widgets in dialog. text (Text searched): set in open(), only used in subclasses(). ent (ry): created in make_entry() called from create_entry(). row (of grid): 0 in create_widgets(), +1 in make_entry/frame(). @@ -83,10 +84,14 @@ class SearchDialogBase: top.wm_title(self.title) top.wm_iconname(self.icon) self.top = top + self.frame = Frame(top, padding="5px") + self.frame.grid(sticky="nwes") + top.grid_columnconfigure(0, weight=100) + top.grid_rowconfigure(0, weight=100) self.row = 0 - self.top.grid_columnconfigure(0, pad=2, weight=0) - self.top.grid_columnconfigure(1, pad=2, minsize=100, weight=100) + self.frame.grid_columnconfigure(0, pad=2, weight=0) + self.frame.grid_columnconfigure(1, pad=2, minsize=100, weight=100) self.create_entries() # row 0 (and maybe 1), cols 0, 1 self.create_option_buttons() # next row, cols 0, 1 @@ -99,9 +104,9 @@ class SearchDialogBase: entry - gridded labeled Entry for text entry. label - Label widget, returned for testing. ''' - label = Label(self.top, text=label_text) + label = Label(self.frame, text=label_text) label.grid(row=self.row, column=0, sticky="nw") - entry = Entry(self.top, textvariable=var, exportselection=0) + entry = Entry(self.frame, textvariable=var, exportselection=0) entry.grid(row=self.row, column=1, sticky="nwe") self.row = self.row + 1 return entry, label @@ -117,11 +122,11 @@ class SearchDialogBase: label - Label widget, returned for testing. ''' if labeltext: - label = Label(self.top, text=labeltext) + label = Label(self.frame, text=labeltext) label.grid(row=self.row, column=0, sticky="nw") else: label = '' - frame = Frame(self.top) + frame = Frame(self.frame) frame.grid(row=self.row, column=1, columnspan=1, sticky="nwe") self.row = self.row + 1 return frame, label @@ -171,7 +176,7 @@ class SearchDialogBase: def create_command_buttons(self): "Place buttons in vertical command frame gridded on right." - f = self.buttonframe = Frame(self.top) + f = self.buttonframe = Frame(self.frame) f.grid(row=0,column=2,padx=2,pady=2,ipadx=2,ipady=2) b = self.make_button("Close", self.close) diff --git a/Lib/idlelib/searchengine.py b/Lib/idlelib/searchengine.py index 911e7d46..a50038e2 100644 --- a/Lib/idlelib/searchengine.py +++ b/Lib/idlelib/searchengine.py @@ -84,20 +84,17 @@ class SearchEngine: flags = flags | re.IGNORECASE try: prog = re.compile(pat, flags) - except re.error as what: - args = what.args - msg = args[0] - col = args[1] if len(args) >= 2 else -1 - self.report_error(pat, msg, col) + except re.error as e: + self.report_error(pat, e.msg, e.pos) return None return prog - def report_error(self, pat, msg, col=-1): + def report_error(self, pat, msg, col=None): # Derived class could override this with something fancier msg = "Error: " + str(msg) if pat: msg = msg + "\nPattern: " + str(pat) - if col >= 0: + if col is not None: msg = msg + "\nOffset: " + str(col) tkMessageBox.showerror("Regular expression error", msg, master=self.root) diff --git a/Lib/idlelib/statusbar.py b/Lib/idlelib/statusbar.py index c071f898..755fafb0 100644 --- a/Lib/idlelib/statusbar.py +++ b/Lib/idlelib/statusbar.py @@ -1,4 +1,4 @@ -from tkinter import Frame, Label +from tkinter.ttk import Label, Frame class MultiStatusBar(Frame): @@ -20,7 +20,8 @@ class MultiStatusBar(Frame): def _multistatus_bar(parent): # htest # - from tkinter import Toplevel, Frame, Text, Button + from tkinter import Toplevel, Text + from tkinter.ttk import Frame, Button top = Toplevel(parent) x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" %(x, y + 175)) diff --git a/Lib/inspect.py b/Lib/inspect.py index 887a3424..18bed902 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -864,7 +864,12 @@ def findsource(object): lnum = object.co_firstlineno - 1 pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(? 0: - if pat.match(lines[lnum]): break + try: + line = lines[lnum] + except IndexError: + raise OSError('lineno is out of bounds') + if pat.match(line): + break lnum = lnum - 1 return lines, lnum raise OSError('could not find code object') @@ -926,6 +931,7 @@ class BlockFinder: self.indecorator = False self.decoratorhasargs = False self.last = 1 + self.body_col0 = None def tokeneater(self, type, token, srowcol, erowcol, line): if not self.started and not self.indecorator: @@ -957,6 +963,8 @@ class BlockFinder: elif self.passline: pass elif type == tokenize.INDENT: + if self.body_col0 is None and self.started: + self.body_col0 = erowcol[1] self.indent = self.indent + 1 self.passline = True elif type == tokenize.DEDENT: @@ -966,6 +974,10 @@ class BlockFinder: # not e.g. for "if: else:" or "try: finally:" blocks) if self.indent <= 0: raise EndOfBlock + elif type == tokenize.COMMENT: + if self.body_col0 is not None and srowcol[1] >= self.body_col0: + # Include comments if indented at least as much as the block + self.last = srowcol[0] elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL): # any other token on the same indentation level end the previous # block as well, except the pseudo-tokens COMMENT and NL. diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 403dc81b..7b169a16 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -509,7 +509,7 @@ class Formatter(object): responsible for converting a LogRecord to (usually) a string which can be interpreted by either a human or an external system. The base Formatter allows a formatting string to be specified. If none is supplied, the - the style-dependent default value, "%(message)s", "{message}", or + style-dependent default value, "%(message)s", "{message}", or "${message}", is used. The Formatter can be initialized with a format string which makes use of @@ -748,8 +748,8 @@ class Filter(object): """ Determine if the specified record is to be logged. - Is the specified record to be logged? Returns 0 for no, nonzero for - yes. If deemed appropriate, the record may be modified in-place. + Returns True if the record should be logged, or False otherwise. + If deemed appropriate, the record may be modified in-place. """ if self.nlen == 0: return True diff --git a/Lib/pickle.py b/Lib/pickle.py index cbac5f16..e63a8b6e 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -340,7 +340,9 @@ def whichmodule(obj, name): # Protect the iteration by using a list copy of sys.modules against dynamic # modules that trigger imports of other modules upon calls to getattr. for module_name, module in sys.modules.copy().items(): - if module_name == '__main__' or module is None: + if (module_name == '__main__' + or module_name == '__mp_main__' # bpo-42406 + or module is None): continue try: if _getattribute(module, name)[0] is obj: diff --git a/Lib/plistlib.py b/Lib/plistlib.py index aff5fe36..2eeebe4c 100644 --- a/Lib/plistlib.py +++ b/Lib/plistlib.py @@ -173,9 +173,16 @@ class _PlistParser: self.parser.StartElementHandler = self.handle_begin_element self.parser.EndElementHandler = self.handle_end_element self.parser.CharacterDataHandler = self.handle_data + self.parser.EntityDeclHandler = self.handle_entity_decl self.parser.ParseFile(fileobj) return self.root + def handle_entity_decl(self, entity_name, is_parameter_entity, value, base, system_id, public_id, notation_name): + # Reject plist files with entity declarations to avoid XML vulnerabilies in expat. + # Regular plist files don't contain those declerations, and Apple's plutil tool does not + # accept them either. + raise InvalidFileException("XML entity declarations are not supported in plist files") + def handle_begin_element(self, element, attrs): self.data = [] handler = getattr(self, "begin_" + element, None) @@ -245,7 +252,11 @@ class _PlistParser: self.add_object(False) def end_integer(self): - self.add_object(int(self.get_data())) + raw = self.get_data() + if raw.startswith('0x') or raw.startswith('0X'): + self.add_object(int(raw, 16)) + else: + self.add_object(int(raw)) def end_real(self): self.add_object(float(self.get_data())) @@ -466,7 +477,7 @@ class _BinaryPlistParser: return self._read_object(top_object) except (OSError, IndexError, struct.error, OverflowError, - UnicodeDecodeError): + ValueError): raise InvalidFileException() def _get_size(self, tokenL): @@ -482,7 +493,7 @@ class _BinaryPlistParser: def _read_ints(self, n, size): data = self._fp.read(size * n) if size in _BINARY_FORMAT: - return struct.unpack('>' + _BINARY_FORMAT[size] * n, data) + return struct.unpack(f'>{n}{_BINARY_FORMAT[size]}', data) else: if not size or len(data) != size * n: raise InvalidFileException() @@ -542,14 +553,22 @@ class _BinaryPlistParser: elif tokenH == 0x40: # data s = self._get_size(tokenL) result = self._fp.read(s) + if len(result) != s: + raise InvalidFileException() elif tokenH == 0x50: # ascii string s = self._get_size(tokenL) - result = self._fp.read(s).decode('ascii') + data = self._fp.read(s) + if len(data) != s: + raise InvalidFileException() + result = data.decode('ascii') elif tokenH == 0x60: # unicode string - s = self._get_size(tokenL) - result = self._fp.read(s * 2).decode('utf-16be') + s = self._get_size(tokenL) * 2 + data = self._fp.read(s) + if len(data) != s: + raise InvalidFileException() + result = data.decode('utf-16be') elif tokenH == 0x80: # UID # used by Key-Archiver plist files @@ -574,9 +593,11 @@ class _BinaryPlistParser: obj_refs = self._read_refs(s) result = self._dict_type() self._objects[ref] = result - for k, o in zip(key_refs, obj_refs): - result[self._read_object(k)] = self._read_object(o) - + try: + for k, o in zip(key_refs, obj_refs): + result[self._read_object(k)] = self._read_object(o) + except TypeError: + raise InvalidFileException() else: raise InvalidFileException() @@ -590,7 +611,7 @@ def _count_to_size(count): elif count < 1 << 16: return 2 - elif count << 1 << 32: + elif count < 1 << 32: return 4 else: diff --git a/Lib/profile.py b/Lib/profile.py index aad458dc..5cb017ed 100755 --- a/Lib/profile.py +++ b/Lib/profile.py @@ -571,6 +571,11 @@ def main(): (options, args) = parser.parse_args() sys.argv[:] = args + # The script that we're profiling may chdir, so capture the absolute path + # to the output file at startup. + if options.outfile is not None: + options.outfile = os.path.abspath(options.outfile) + if len(args) > 0: if options.module: import runpy diff --git a/Lib/pstats.py b/Lib/pstats.py index e781b91c..0f93ae02 100644 --- a/Lib/pstats.py +++ b/Lib/pstats.py @@ -45,9 +45,9 @@ class SortKey(str, Enum): TIME = 'time', 'tottime' def __new__(cls, *values): - obj = str.__new__(cls) - - obj._value_ = values[0] + value = values[0] + obj = str.__new__(cls, value) + obj._value_ = value for other_value in values[1:]: cls._value2member_map_[other_value] = obj obj._all_values = values diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 40b4579f..d8dd8c53 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Sun Oct 4 19:26:28 2020 +# Autogenerated by Sphinx on Mon Dec 7 15:00:07 2020 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -700,6 +700,11 @@ topics = {'assert': 'The "assert" statement\n' 'syntax or\n' ' built-in functions. See Special method lookup.\n' '\n' + ' For certain sensitive attribute accesses, raises an ' + 'auditing event\n' + ' "object.__getattr__" with arguments "obj" and ' + '"name".\n' + '\n' 'object.__setattr__(self, name, value)\n' '\n' ' Called when an attribute assignment is attempted. ' @@ -716,6 +721,11 @@ topics = {'assert': 'The "assert" statement\n' 'for example,\n' ' "object.__setattr__(self, name, value)".\n' '\n' + ' For certain sensitive attribute assignments, raises ' + 'an auditing\n' + ' event "object.__setattr__" with arguments "obj", ' + '"name", "value".\n' + '\n' 'object.__delattr__(self, name)\n' '\n' ' Like "__setattr__()" but for attribute deletion ' @@ -724,6 +734,11 @@ topics = {'assert': 'The "assert" statement\n' 'obj.name" is\n' ' meaningful for the object.\n' '\n' + ' For certain sensitive attribute deletions, raises an ' + 'auditing event\n' + ' "object.__delattr__" with arguments "obj" and ' + '"name".\n' + '\n' 'object.__dir__(self)\n' '\n' ' Called when "dir()" is called on the object. A ' @@ -1464,8 +1479,8 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Called when the instance is “called” as a function; if ' 'this method\n' - ' is defined, "x(arg1, arg2, ...)" is a shorthand for\n' - ' "x.__call__(arg1, arg2, ...)".\n', + ' is defined, "x(arg1, arg2, ...)" roughly translates to\n' + ' "type(x).__call__(x, arg1, ...)".\n', 'calls': 'Calls\n' '*****\n' '\n' @@ -3461,16 +3476,21 @@ topics = {'assert': 'The "assert" statement\n' ' on the value to determine if the result is true or ' 'false.\n' '\n' - ' By default, "__ne__()" delegates to "__eq__()" and ' - 'inverts the\n' - ' result unless it is "NotImplemented". There are no ' - 'other implied\n' - ' relationships among the comparison operators, for ' - 'example, the\n' - ' truth of "(x".format(kind, self._filename) else: return "<{0}SymbolTable for {1} in {2}>".format(kind, @@ -90,7 +90,9 @@ class SymbolTable(object): if sym is None: flags = self._table.symbols[name] namespaces = self.__check_children(name) - sym = self._symbols[name] = Symbol(name, flags, namespaces) + module_scope = (self._table.name == "top") + sym = self._symbols[name] = Symbol(name, flags, namespaces, + module_scope=module_scope) return sym def get_symbols(self): @@ -163,13 +165,14 @@ class Class(SymbolTable): return self.__methods -class Symbol(object): +class Symbol: - def __init__(self, name, flags, namespaces=None): + def __init__(self, name, flags, namespaces=None, *, module_scope=False): self.__name = name self.__flags = flags self.__scope = (flags >> SCOPE_OFF) & SCOPE_MASK # like PyST_GetScope() self.__namespaces = namespaces or () + self.__module_scope = module_scope def __repr__(self): return "".format(self.__name) @@ -184,7 +187,10 @@ class Symbol(object): return bool(self.__flags & DEF_PARAM) def is_global(self): - return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)) + """Return *True* if the sysmbol is global. + """ + return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT) + or (self.__module_scope and self.__flags & DEF_BOUND)) def is_nonlocal(self): return bool(self.__flags & DEF_NONLOCAL) @@ -193,7 +199,10 @@ class Symbol(object): return bool(self.__scope == GLOBAL_EXPLICIT) def is_local(self): - return bool(self.__scope in (LOCAL, CELL)) + """Return *True* if the symbol is local. + """ + return bool(self.__scope in (LOCAL, CELL) + or (self.__module_scope and self.__flags & DEF_BOUND)) def is_annotated(self): return bool(self.__flags & DEF_ANNOT) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 6769066c..1d156126 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -420,6 +420,8 @@ class _Stream: self.__write(b"\037\213\010\010" + timestamp + b"\002\377") if self.name.endswith(".gz"): self.name = self.name[:-3] + # Honor "directory components removed" from RFC1952 + self.name = os.path.basename(self.name) # RFC1952 says we must use ISO-8859-1 for the FNAME field. self.__write(self.name.encode("iso-8859-1", "replace") + NUL) @@ -2091,9 +2093,10 @@ class TarFile(object): def extractfile(self, member): """Extract a member from the archive as a file object. `member' may be - a filename or a TarInfo object. If `member' is a regular file or a - link, an io.BufferedReader object is returned. Otherwise, None is - returned. + a filename or a TarInfo object. If `member' is a regular file or + a link, an io.BufferedReader object is returned. For all other + existing members, None is returned. If `member' does not appear + in the archive, KeyError is raised. """ self._check("r") @@ -2234,6 +2237,9 @@ class TarFile(object): try: # For systems that support symbolic and hard links. if tarinfo.issym(): + if os.path.lexists(targetpath): + # Avoid FileExistsError on following os.symlink. + os.unlink(targetpath) os.symlink(tarinfo.linkname, targetpath) else: # See extract(). diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index a9741d6d..b37ef917 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -1781,6 +1781,7 @@ class TestDate(HarmlessMixedComparison, unittest.TestCase): green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) + self.assertTrue(isinstance(derived, SubclassDate)) def test_backdoor_resistance(self): # For fast unpickling, the constructor accepts a pickle byte string. @@ -2308,6 +2309,7 @@ class TestDateTime(TestDate): green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) + self.assertTrue(isinstance(derived, SubclassDatetime)) def test_compat_unpickle(self): tests = [ @@ -3357,6 +3359,7 @@ class TestTime(HarmlessMixedComparison, unittest.TestCase): green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) + self.assertTrue(isinstance(derived, SubclassTime)) def test_compat_unpickle(self): tests = [ diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py index 96a0257b..e1287a31 100644 --- a/Lib/test/inspect_fodder.py +++ b/Lib/test/inspect_fodder.py @@ -91,3 +91,25 @@ class Callable: custom_method = Callable().as_method_of(42) del Callable + +# line 95 +class WhichComments: + # line 97 + # before f + def f(self): + # line 100 + # start f + return 1 + # line 103 + # end f + # line 105 + # after f + + # before asyncf - line 108 + async def asyncf(self): + # start asyncf + return 2 + # end asyncf + # after asyncf - line 113 + # end of WhichComments - line 114 + # after WhichComments - line 115 diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py index cca8af67..f76c0153 100644 --- a/Lib/test/multibytecodec_support.py +++ b/Lib/test/multibytecodec_support.py @@ -305,29 +305,23 @@ class TestBase_Mapping(unittest.TestCase): self._test_mapping_file_plain() def _test_mapping_file_plain(self): - unichrs = lambda s: ''.join(map(chr, map(eval, s.split('+')))) + def unichrs(s): + return ''.join(chr(int(x, 16)) for x in s.split('+')) + urt_wa = {} with self.open_mapping_file() as f: for line in f: if not line: break - data = line.split('#')[0].strip().split() + data = line.split('#')[0].split() if len(data) != 2: continue - csetval = eval(data[0]) - if csetval <= 0x7F: - csetch = bytes([csetval & 0xff]) - elif csetval >= 0x1000000: - csetch = bytes([(csetval >> 24), ((csetval >> 16) & 0xff), - ((csetval >> 8) & 0xff), (csetval & 0xff)]) - elif csetval >= 0x10000: - csetch = bytes([(csetval >> 16), ((csetval >> 8) & 0xff), - (csetval & 0xff)]) - elif csetval >= 0x100: - csetch = bytes([(csetval >> 8), (csetval & 0xff)]) - else: + if data[0][:2] != '0x': + self.fail(f"Invalid line: {line!r}") + csetch = bytes.fromhex(data[0][2:]) + if len(csetch) == 1 and 0x80 <= csetch[0]: continue unich = unichrs(data[1]) diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 94d42c4f..3d54617f 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -1965,6 +1965,17 @@ class AbstractPickleTests(unittest.TestCase): self.assertEqual(B(x), B(y), detail) self.assertEqual(x.__dict__, y.__dict__, detail) + def test_newobj_overridden_new(self): + # Test that Python class with C implemented __new__ is pickleable + for proto in protocols: + x = MyIntWithNew2(1) + x.foo = 42 + s = self.dumps(x, proto) + y = self.loads(s) + self.assertIs(type(y), MyIntWithNew2) + self.assertEqual(int(y), 1) + self.assertEqual(y.foo, 42) + def test_newobj_not_class(self): # Issue 24552 global SimpleNewObj @@ -3085,6 +3096,13 @@ myclasses = [MyInt, MyFloat, MyStr, MyUnicode, MyTuple, MyList, MyDict, MySet, MyFrozenSet] +class MyIntWithNew(int): + def __new__(cls, value): + raise AssertionError + +class MyIntWithNew2(MyIntWithNew): + __new__ = int.__new__ + class SlotList(MyList): __slots__ = ["foo"] diff --git a/Lib/test/test__locale.py b/Lib/test/test__locale.py index cda0ee91..59a00bad 100644 --- a/Lib/test/test__locale.py +++ b/Lib/test/test__locale.py @@ -72,6 +72,10 @@ known_numerics = { 'ps_AF': ('\u066b', '\u066c'), } +if sys.platform == 'win32': + # ps_AF doesn't work on Windows: see bpo-38324 (msg361830) + del known_numerics['ps_AF'] + class _LocaleTests(unittest.TestCase): def setUp(self): diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 7bc9c9a3..fa6c49d8 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -293,11 +293,8 @@ class EventLoopTestsMixin: self.loop.stop() self.loop.call_later(0.1, callback, 'hello world') - t0 = time.monotonic() self.loop.run_forever() - t1 = time.monotonic() self.assertEqual(results, ['hello world']) - self.assertTrue(0.08 <= t1-t0 <= 0.8, t1-t0) def test_call_soon(self): results = [] @@ -1075,6 +1072,7 @@ class EventLoopTestsMixin: ssl=sslcontext_client, server_hostname='localhost') client, pr = self.loop.run_until_complete(f_c) + self.loop.run_until_complete(proto.connected) # close connection proto.transport.close() @@ -1100,6 +1098,7 @@ class EventLoopTestsMixin: ssl=sslcontext_client, server_hostname='localhost') client, pr = self.loop.run_until_complete(f_c) + self.loop.run_until_complete(proto.connected) # extra info is available self.check_ssl_extra_info(client, peername=(host, port), diff --git a/Lib/test/test_asyncio/test_futures2.py b/Lib/test/test_asyncio/test_futures2.py new file mode 100644 index 00000000..13dbc703 --- /dev/null +++ b/Lib/test/test_asyncio/test_futures2.py @@ -0,0 +1,18 @@ +# IsolatedAsyncioTestCase based tests +import asyncio +import unittest + + +class FutureTests(unittest.IsolatedAsyncioTestCase): + async def test_recursive_repr_for_pending_tasks(self): + # The call crashes if the guard for recursive call + # in base_futures:_future_repr_info is absent + # See Also: https://bugs.python.org/issue42183 + + async def func(): + return asyncio.all_tasks() + + # The repr() call should not raise RecursiveError at first. + # The check for returned string is not very reliable but + # exact comparison for the whole string is even weaker. + self.assertIn('...', repr(await asyncio.wait_for(func(), timeout=10))) diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py index 1e9d1156..71de82df 100644 --- a/Lib/test/test_asyncio/test_streams.py +++ b/Lib/test/test_asyncio/test_streams.py @@ -452,12 +452,14 @@ class StreamTests(test_utils.TestCase): def test_readuntil_eof(self): stream = asyncio.StreamReader(loop=self.loop) - stream.feed_data(b'some dataAA') + data = b'some dataAA' + stream.feed_data(data) stream.feed_eof() - with self.assertRaises(asyncio.IncompleteReadError) as cm: + with self.assertRaisesRegex(asyncio.IncompleteReadError, + 'undefined expected bytes') as cm: self.loop.run_until_complete(stream.readuntil(b'AAA')) - self.assertEqual(cm.exception.partial, b'some dataAA') + self.assertEqual(cm.exception.partial, data) self.assertIsNone(cm.exception.expected) self.assertEqual(b'', stream._buffer) diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index 74fc1e4a..01f62b7f 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -1548,6 +1548,30 @@ class BaseTaskTests: loop.advance_time(10) loop.run_until_complete(asyncio.wait([a, b])) + def test_wait_with_iterator_of_tasks(self): + + def gen(): + when = yield + self.assertAlmostEqual(0.1, when) + when = yield 0 + self.assertAlmostEqual(0.15, when) + yield 0.15 + + loop = self.new_test_loop(gen) + + a = self.new_task(loop, asyncio.sleep(0.1)) + b = self.new_task(loop, asyncio.sleep(0.15)) + + async def foo(): + done, pending = await asyncio.wait(iter([b, a])) + self.assertEqual(done, set([a, b])) + self.assertEqual(pending, set()) + return 42 + + res = loop.run_until_complete(self.new_task(loop, foo())) + self.assertEqual(res, 42) + self.assertAlmostEqual(0.15, loop.time()) + def test_as_completed(self): def gen(): diff --git a/Lib/test/test_binhex.py b/Lib/test/test_binhex.py index 591f32a4..9c9486e1 100644 --- a/Lib/test/test_binhex.py +++ b/Lib/test/test_binhex.py @@ -48,6 +48,18 @@ class BinHexTestCase(unittest.TestCase): self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2) + def test_binhex_line_endings(self): + # bpo-29566: Ensure the line endings are those for macOS 9 + with open(self.fname1, 'wb') as f: + f.write(self.DATA) + + binhex.binhex(self.fname1, self.fname2) + + with open(self.fname2, 'rb') as fp: + contents = fp.read() + + self.assertNotIn(b'\n', contents) + def test_main(): support.run_unittest(BinHexTestCase) diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 770e2c55..05568f2c 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -1034,6 +1034,7 @@ class BytesTest(BaseBytesTest, unittest.TestCase): c_char_p) PyBytes_FromFormat = pythonapi.PyBytes_FromFormat + PyBytes_FromFormat.argtypes = (c_char_p,) PyBytes_FromFormat.restype = py_object # basic tests diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py index 3d5dc475..9989b148 100644 --- a/Lib/test/test_clinic.py +++ b/Lib/test/test_clinic.py @@ -794,17 +794,29 @@ class ClinicExternalTest(TestCase): maxDiff = None def test_external(self): + # bpo-42398: Test that the destination file is left unchanged if the + # content does not change. Moreover, check also that the file + # modification time does not change in this case. source = support.findfile('clinic.test') with open(source, 'r', encoding='utf-8') as f: - original = f.read() - with support.temp_dir() as testdir: - testfile = os.path.join(testdir, 'clinic.test.c') + orig_contents = f.read() + + with support.temp_dir() as tmp_dir: + testfile = os.path.join(tmp_dir, 'clinic.test.c') with open(testfile, 'w', encoding='utf-8') as f: - f.write(original) - clinic.parse_file(testfile, force=True) + f.write(orig_contents) + old_mtime_ns = os.stat(testfile).st_mtime_ns + + clinic.parse_file(testfile) + with open(testfile, 'r', encoding='utf-8') as f: - result = f.read() - self.assertEqual(result, original) + new_contents = f.read() + new_mtime_ns = os.stat(testfile).st_mtime_ns + + self.assertEqual(new_contents, orig_contents) + # Don't change the file modification time + # if the content does not change + self.assertEqual(new_mtime_ns, old_mtime_ns) if __name__ == "__main__": diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index 54a35208..8d112a17 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -2183,6 +2183,18 @@ class CharmapTest(unittest.TestCase): ("", len(allbytes)) ) + self.assertRaisesRegex(TypeError, + "character mapping must be in range\\(0x110000\\)", + codecs.charmap_decode, + b"\x00\x01\x02", "strict", {0: "A", 1: 'Bb', 2: -2} + ) + + self.assertRaisesRegex(TypeError, + "character mapping must be in range\\(0x110000\\)", + codecs.charmap_decode, + b"\x00\x01\x02", "strict", {0: "A", 1: 'Bb', 2: 999999999} + ) + def test_decode_with_int2int_map(self): a = ord('a') b = ord('b') diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index a8d3337e..057ec920 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -195,6 +195,22 @@ class TestChainMap(unittest.TestCase): ('e', 55), ('f', 666), ('g', 777), ('h', 88888), ('i', 9999), ('j', 0)]) + def test_iter_not_calling_getitem_on_maps(self): + class DictWithGetItem(UserDict): + def __init__(self, *args, **kwds): + self.called = False + UserDict.__init__(self, *args, **kwds) + def __getitem__(self, item): + self.called = True + UserDict.__getitem__(self, item) + + d = DictWithGetItem(a=1) + c = ChainMap(d) + d.called = False + + set(c) # iterate over chain map + self.assertFalse(d.called, '__getitem__ was called') + def test_dict_coercion(self): d = ChainMap(dict(a=1, b=2), dict(b=20, c=30)) self.assertEqual(dict(d), dict(a=1, b=2, c=30)) @@ -1558,6 +1574,62 @@ class TestCollectionABCs(ABCTestCase): # coerce both to a real set then check equality self.assertSetEqual(set(s1), set(s2)) + def test_Set_from_iterable(self): + """Verify _from_iterable overriden to an instance method works.""" + class SetUsingInstanceFromIterable(MutableSet): + def __init__(self, values, created_by): + if not created_by: + raise ValueError(f'created_by must be specified') + self.created_by = created_by + self._values = set(values) + + def _from_iterable(self, values): + return type(self)(values, 'from_iterable') + + def __contains__(self, value): + return value in self._values + + def __iter__(self): + yield from self._values + + def __len__(self): + return len(self._values) + + def add(self, value): + self._values.add(value) + + def discard(self, value): + self._values.discard(value) + + impl = SetUsingInstanceFromIterable([1, 2, 3], 'test') + + actual = impl - {1} + self.assertIsInstance(actual, SetUsingInstanceFromIterable) + self.assertEqual('from_iterable', actual.created_by) + self.assertEqual({2, 3}, actual) + + actual = impl | {4} + self.assertIsInstance(actual, SetUsingInstanceFromIterable) + self.assertEqual('from_iterable', actual.created_by) + self.assertEqual({1, 2, 3, 4}, actual) + + actual = impl & {2} + self.assertIsInstance(actual, SetUsingInstanceFromIterable) + self.assertEqual('from_iterable', actual.created_by) + self.assertEqual({2}, actual) + + actual = impl ^ {3, 4} + self.assertIsInstance(actual, SetUsingInstanceFromIterable) + self.assertEqual('from_iterable', actual.created_by) + self.assertEqual({1, 2, 4}, actual) + + # NOTE: ixor'ing with a list is important here: internally, __ixor__ + # only calls _from_iterable if the other value isn't already a Set. + impl ^= [3, 4] + self.assertIsInstance(impl, SetUsingInstanceFromIterable) + self.assertEqual('test', impl.created_by) + self.assertEqual({1, 2, 4}, impl) + def test_Set_interoperability_with_real_sets(self): # Issue: 8743 class ListSet(Set): diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py index 59eabb00..ab68cdd8 100644 --- a/Lib/test/test_email/test_email.py +++ b/Lib/test/test_email/test_email.py @@ -311,6 +311,41 @@ class TestMessageAPI(TestEmailBase): g.flatten(msg) self.assertEqual(fullrepr, s.getvalue()) + def test_nonascii_as_string_without_cte(self): + m = textwrap.dedent("""\ + MIME-Version: 1.0 + Content-type: text/plain; charset="iso-8859-1" + + Test if non-ascii messages with no Content-Transfer-Encoding set + can be as_string'd: + Föö bär + """) + source = m.encode('iso-8859-1') + expected = textwrap.dedent("""\ + MIME-Version: 1.0 + Content-type: text/plain; charset="iso-8859-1" + Content-Transfer-Encoding: quoted-printable + + Test if non-ascii messages with no Content-Transfer-Encoding set + can be as_string'd: + F=F6=F6 b=E4r + """) + msg = email.message_from_bytes(source) + self.assertEqual(msg.as_string(), expected) + + def test_nonascii_as_string_without_content_type_and_cte(self): + m = textwrap.dedent("""\ + MIME-Version: 1.0 + + Test if non-ascii messages with no Content-Type nor + Content-Transfer-Encoding set can be as_string'd: + Föö bär + """) + source = m.encode('iso-8859-1') + expected = source.decode('ascii', 'replace') + msg = email.message_from_bytes(source) + self.assertEqual(msg.as_string(), expected) + def test_as_bytes(self): msg = self._msgobj('msg_01.txt') with openfile('msg_01.txt') as fp: diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 47f37114..8d125b57 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -205,6 +205,7 @@ class ExceptionTests(unittest.TestCase): check(b'Python = "\xcf\xb3\xf2\xee\xed" +', 1, 18) check('x = "a', 1, 7) check('lambda x: x = 2', 1, 1) + check('f{a + b + c}', 1, 2) # Errors thrown by compile.c check('class foo:return 1', 1, 11) diff --git a/Lib/test/test_finalization.py b/Lib/test/test_finalization.py index 35d7913e..1d134430 100644 --- a/Lib/test/test_finalization.py +++ b/Lib/test/test_finalization.py @@ -16,6 +16,15 @@ except ImportError: raise TypeError('requires _testcapi.with_tp_del') return C +try: + from _testcapi import without_gc +except ImportError: + def without_gc(cls): + class C: + def __new__(cls, *args, **kwargs): + raise TypeError('requires _testcapi.without_gc') + return C + from test import support @@ -94,9 +103,11 @@ class SimpleBase(NonGCSimpleBase): assert self.id_ == id(self) +@without_gc class NonGC(NonGCSimpleBase): __slots__ = () +@without_gc class NonGCResurrector(NonGCSimpleBase): __slots__ = () @@ -109,8 +120,14 @@ class NonGCResurrector(NonGCSimpleBase): class Simple(SimpleBase): pass -class SimpleResurrector(NonGCResurrector, SimpleBase): - pass +# Can't inherit from NonGCResurrector, in case importing without_gc fails. +class SimpleResurrector(SimpleBase): + + def side_effect(self): + """ + Resurrect self by storing self in a class-wide list. + """ + self.survivors.append(self) class TestBase: @@ -178,6 +195,7 @@ class SimpleFinalizationTest(TestBase, unittest.TestCase): self.assert_survivors([]) self.assertIs(wr(), None) + @support.cpython_only def test_non_gc(self): with SimpleBase.test(): s = NonGC() @@ -191,6 +209,7 @@ class SimpleFinalizationTest(TestBase, unittest.TestCase): self.assert_del_calls(ids) self.assert_survivors([]) + @support.cpython_only def test_non_gc_resurrect(self): with SimpleBase.test(): s = NonGCResurrector() diff --git a/Lib/test/test_format.py b/Lib/test/test_format.py index d2744cdf..9653e46e 100644 --- a/Lib/test/test_format.py +++ b/Lib/test/test_format.py @@ -428,13 +428,16 @@ class FormatTest(unittest.TestCase): localeconv = locale.localeconv() sep = localeconv['thousands_sep'] point = localeconv['decimal_point'] + grouping = localeconv['grouping'] text = format(123456789, "n") - self.assertIn(sep, text) + if grouping: + self.assertIn(sep, text) self.assertEqual(text.replace(sep, ''), '123456789') text = format(1234.5, "n") - self.assertIn(sep, text) + if grouping: + self.assertIn(sep, text) self.assertIn(point, text) self.assertEqual(text.replace(sep, ''), '1234' + point + '5') finally: diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index acb63919..38c9cb71 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -581,9 +581,9 @@ class GCTests(unittest.TestCase): self.assertTrue(gc.is_tracked(UserInt())) self.assertTrue(gc.is_tracked([])) self.assertTrue(gc.is_tracked(set())) - self.assertFalse(gc.is_tracked(UserClassSlots())) - self.assertFalse(gc.is_tracked(UserFloatSlots())) - self.assertFalse(gc.is_tracked(UserIntSlots())) + self.assertTrue(gc.is_tracked(UserClassSlots())) + self.assertTrue(gc.is_tracked(UserFloatSlots())) + self.assertTrue(gc.is_tracked(UserIntSlots())) def test_is_finalized(self): # Objects not tracked by the always gc return false diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index 44cb9a0f..22c75bae 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -51,11 +51,6 @@ if gdb_major_version < 7: "embedding. Saw %s.%s:\n%s" % (gdb_major_version, gdb_minor_version, gdb_version)) -if (gdb_major_version, gdb_minor_version) >= (9, 2): - # gdb 9.2 on Fedora Rawhide is not reliable, see: - # * https://bugs.python.org/issue41473 - # * https://bugzilla.redhat.com/show_bug.cgi?id=1866884 - raise unittest.SkipTest("https://bugzilla.redhat.com/show_bug.cgi?id=1866884") if not sysconfig.is_python_build(): raise unittest.SkipTest("test_gdb only works on source builds at the moment.") diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index ec1acd47..c113e538 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -13,7 +13,10 @@ from contextvars import ContextVar, Token from dataclasses import Field from functools import partial, partialmethod, cached_property from mailbox import Mailbox, _PartialFile -from ctypes import Array, LibraryLoader +try: + import ctypes +except ImportError: + ctypes = None from difflib import SequenceMatcher from filecmp import dircmp from fileinput import FileInput @@ -26,7 +29,7 @@ try: except ImportError: # multiprocessing.shared_memory is not available on e.g. Android ShareableList = None -from multiprocessing.queues import SimpleQueue +from multiprocessing.queues import SimpleQueue as MPSimpleQueue from os import DirEntry from re import Pattern, Match from types import GenericAlias, MappingProxyType, AsyncGeneratorType @@ -44,45 +47,46 @@ V = TypeVar('V') class BaseTest(unittest.TestCase): """Test basics.""" + generic_types = [type, tuple, list, dict, set, frozenset, enumerate, + defaultdict, deque, + SequenceMatcher, + dircmp, + FileInput, + OrderedDict, Counter, UserDict, UserList, + Pattern, Match, + partial, partialmethod, cached_property, + AbstractContextManager, AbstractAsyncContextManager, + Awaitable, Coroutine, + AsyncIterable, AsyncIterator, + AsyncGenerator, Generator, + Iterable, Iterator, + Reversible, + Container, Collection, + Callable, + Mailbox, _PartialFile, + ContextVar, Token, + Field, + Set, MutableSet, + Mapping, MutableMapping, MappingView, + KeysView, ItemsView, ValuesView, + Sequence, MutableSequence, + MappingProxyType, AsyncGeneratorType, + DirEntry, + chain, + TemporaryDirectory, SpooledTemporaryFile, + Queue, SimpleQueue, + _AssertRaisesContext, + SplitResult, ParseResult, + ValueProxy, ApplyResult, + WeakSet, ReferenceType, ref, + ShareableList, MPSimpleQueue, + Future, _WorkItem, + Morsel] + if ctypes is not None: + generic_types.extend((ctypes.Array, ctypes.LibraryLoader)) def test_subscriptable(self): - for t in (type, tuple, list, dict, set, frozenset, enumerate, - defaultdict, deque, - SequenceMatcher, - dircmp, - FileInput, - OrderedDict, Counter, UserDict, UserList, - Pattern, Match, - partial, partialmethod, cached_property, - AbstractContextManager, AbstractAsyncContextManager, - Awaitable, Coroutine, - AsyncIterable, AsyncIterator, - AsyncGenerator, Generator, - Iterable, Iterator, - Reversible, - Container, Collection, - Callable, - Mailbox, _PartialFile, - ContextVar, Token, - Field, - Set, MutableSet, - Mapping, MutableMapping, MappingView, - KeysView, ItemsView, ValuesView, - Sequence, MutableSequence, - MappingProxyType, AsyncGeneratorType, - DirEntry, - chain, - TemporaryDirectory, SpooledTemporaryFile, - Queue, SimpleQueue, - _AssertRaisesContext, - Array, LibraryLoader, - SplitResult, ParseResult, - ValueProxy, ApplyResult, - WeakSet, ReferenceType, ref, - ShareableList, SimpleQueue, - Future, _WorkItem, - Morsel, - ): + for t in self.generic_types: if t is None: continue tname = t.__name__ @@ -289,5 +293,20 @@ class BaseTest(unittest.TestCase): for generic_alias_property in ("__origin__", "__args__", "__parameters__"): self.assertIn(generic_alias_property, dir_of_gen_alias) + def test_weakref(self): + for t in self.generic_types: + if t is None: + continue + tname = t.__name__ + with self.subTest(f"Testing {tname}"): + alias = t[int] + self.assertEqual(ref(alias)(), alias) + + def test_no_kwargs(self): + # bpo-42576 + with self.assertRaises(TypeError): + GenericAlias(bad=float) + + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index 86f20a7a..86f31a55 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -24,17 +24,26 @@ from http.client import HTTPException # Were we compiled --with-pydebug or with #define Py_DEBUG? COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') -c_hashlib = import_fresh_module('hashlib', fresh=['_hashlib']) -py_hashlib = import_fresh_module('hashlib', blocked=['_hashlib']) - +# default builtin hash module +default_builtin_hashes = {'md5', 'sha1', 'sha256', 'sha512', 'sha3', 'blake2'} +# --with-builtin-hashlib-hashes override builtin_hashes = sysconfig.get_config_var("PY_BUILTIN_HASHLIB_HASHES") if builtin_hashes is None: - builtin_hashes = {'md5', 'sha1', 'sha256', 'sha512', 'sha3', 'blake2'} + builtin_hashes = default_builtin_hashes else: builtin_hashes = { m.strip() for m in builtin_hashes.strip('"').lower().split(",") } +# hashlib with and without OpenSSL backend for PBKDF2 +# only import builtin_hashlib when all builtin hashes are available. +# Otherwise import prints noise on stderr +openssl_hashlib = import_fresh_module('hashlib', fresh=['_hashlib']) +if builtin_hashes == default_builtin_hashes: + builtin_hashlib = import_fresh_module('hashlib', blocked=['_hashlib']) +else: + builtin_hashlib = None + try: from _hashlib import HASH, HASHXOF, openssl_md_meth_names except ImportError: @@ -1030,16 +1039,16 @@ class KDFTests(unittest.TestCase): iterations=1, dklen=None) self.assertEqual(out, self.pbkdf2_results['sha1'][0][0]) + @unittest.skipIf(builtin_hashlib is None, "test requires builtin_hashlib") def test_pbkdf2_hmac_py(self): - self._test_pbkdf2_hmac(py_hashlib.pbkdf2_hmac, builtin_hashes) + self._test_pbkdf2_hmac(builtin_hashlib.pbkdf2_hmac, builtin_hashes) - @unittest.skipUnless(hasattr(c_hashlib, 'pbkdf2_hmac'), + @unittest.skipUnless(hasattr(openssl_hashlib, 'pbkdf2_hmac'), ' test requires OpenSSL > 1.0') def test_pbkdf2_hmac_c(self): - self._test_pbkdf2_hmac(c_hashlib.pbkdf2_hmac, openssl_md_meth_names) - + self._test_pbkdf2_hmac(openssl_hashlib.pbkdf2_hmac, openssl_md_meth_names) - @unittest.skipUnless(hasattr(c_hashlib, 'scrypt'), + @unittest.skipUnless(hasattr(hashlib, 'scrypt'), ' test requires OpenSSL > 1.1') def test_scrypt(self): for password, salt, n, r, p, expected in self.scrypt_test_vectors: diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index c442f557..8df0b525 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -3,7 +3,7 @@ Written by Cody A.W. Somerville , Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest. """ - +from collections import OrderedDict from http.server import BaseHTTPRequestHandler, HTTPServer, \ SimpleHTTPRequestHandler, CGIHTTPRequestHandler from http import server, HTTPStatus @@ -19,7 +19,7 @@ import shutil import email.message import email.utils import html -import http.client +import http, http.client import urllib.parse import tempfile import time @@ -586,6 +586,15 @@ print() print(os.environ["%s"]) """ +cgi_file6 = """\ +#!%s +import os + +print("Content-type: text/plain") +print() +print(repr(os.environ)) +""" + @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, "This test can't be run reliably as root (issue #13308).") @@ -664,6 +673,11 @@ class CGIHTTPServerTestCase(BaseTestCase): file5.write(cgi_file1 % self.pythonexe) os.chmod(self.file5_path, 0o777) + self.file6_path = os.path.join(self.cgi_dir, 'file6.py') + with open(self.file6_path, 'w', encoding='utf-8') as file6: + file6.write(cgi_file6 % self.pythonexe) + os.chmod(self.file6_path, 0o777) + os.chdir(self.parent_dir) def tearDown(self): @@ -683,6 +697,8 @@ class CGIHTTPServerTestCase(BaseTestCase): os.remove(self.file4_path) if self.file5_path: os.remove(self.file5_path) + if self.file6_path: + os.remove(self.file6_path) os.rmdir(self.cgi_child_dir) os.rmdir(self.cgi_dir) os.rmdir(self.cgi_dir_in_sub_dir) @@ -816,6 +832,23 @@ class CGIHTTPServerTestCase(BaseTestCase): finally: CGIHTTPRequestHandler.cgi_directories.remove('/sub/dir/cgi-bin') + def test_accept(self): + browser_accept = \ + 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + tests = ( + ((('Accept', browser_accept),), browser_accept), + ((), ''), + # Hack case to get two values for the one header + ((('Accept', 'text/html'), ('ACCEPT', 'text/plain')), + 'text/html,text/plain'), + ) + for headers, expected in tests: + headers = OrderedDict(headers) + with self.subTest(headers): + res = self.request('/cgi-bin/file6.py', 'GET', headers=headers) + self.assertEqual(http.HTTPStatus.OK, res.status) + expected = f"'HTTP_ACCEPT': {expected!r}" + self.assertIn(expected.encode('ascii'), res.read()) class SocketlessRequestHandler(SimpleHTTPRequestHandler): diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index e3e2be52..d9e26a30 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -388,6 +388,7 @@ class TestRetrievingSourceCode(GetSourceBase): ('ParrotDroppings', mod.ParrotDroppings), ('StupidGit', mod.StupidGit), ('Tit', mod.MalodorousPervert), + ('WhichComments', mod.WhichComments), ]) tree = inspect.getclasstree([cls[1] for cls in classes]) self.assertEqual(tree, @@ -401,7 +402,8 @@ class TestRetrievingSourceCode(GetSourceBase): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) tree = inspect.getclasstree([cls[1] for cls in classes], True) @@ -413,7 +415,8 @@ class TestRetrievingSourceCode(GetSourceBase): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) @@ -644,6 +647,18 @@ class TestOneliners(GetSourceBase): # as argument to another function. self.assertSourceEqual(mod2.anonymous, 55, 55) +class TestBlockComments(GetSourceBase): + fodderModule = mod + + def test_toplevel_class(self): + self.assertSourceEqual(mod.WhichComments, 96, 114) + + def test_class_method(self): + self.assertSourceEqual(mod.WhichComments.f, 99, 104) + + def test_class_async_method(self): + self.assertSourceEqual(mod.WhichComments.asyncf, 109, 112) + class TestBuggyCases(GetSourceBase): fodderModule = mod2 @@ -695,6 +710,17 @@ class TestBuggyCases(GetSourceBase): self.assertRaises(IOError, inspect.findsource, co) self.assertRaises(IOError, inspect.getsource, co) + def test_findsource_with_out_of_bounds_lineno(self): + mod_len = len(inspect.getsource(mod)) + src = '\n' * 2* mod_len + "def f(): pass" + co = compile(src, mod.__file__, "exec") + g, l = {}, {} + eval(co, g, l) + func = l['f'] + self.assertEqual(func.__code__.co_firstlineno, 1+2*mod_len) + with self.assertRaisesRegex(IOError, "lineno is out of bounds"): + inspect.findsource(func) + def test_getsource_on_method(self): self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119) @@ -4016,8 +4042,8 @@ def foo(): def test_main(): run_unittest( - TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBuggyCases, - TestInterpreterStack, TestClassesAndFunctions, TestPredicates, + TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBlockComments, + TestBuggyCases, TestInterpreterStack, TestClassesAndFunctions, TestPredicates, TestGetcallargsFunctions, TestGetcallargsMethods, TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState, TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject, diff --git a/Lib/test/test_isinstance.py b/Lib/test/test_isinstance.py index 53639e98..31b38996 100644 --- a/Lib/test/test_isinstance.py +++ b/Lib/test/test_isinstance.py @@ -271,6 +271,16 @@ class TestIsInstanceIsSubclass(unittest.TestCase): self.assertEqual(True, issubclass(B(), int)) + def test_infinite_recursion_in_bases(self): + class X: + @property + def __bases__(self): + return self.__bases__ + + self.assertRaises(RecursionError, issubclass, X(), int) + self.assertRaises(RecursionError, issubclass, int, X()) + self.assertRaises(RecursionError, isinstance, 1, X()) + def blowstack(fxn, arg, compare_to): # Make sure that calling isinstance with a deeply nested tuple for its diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index eaa6197b..702cf082 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -2290,7 +2290,7 @@ Samuele ... "Count how many times the predicate is true" ... return sum(map(pred, iterable)) ->>> def padnone(iterable): +>>> def pad_none(iterable): ... "Returns the sequence elements and then returns None indefinitely" ... return chain(iterable, repeat(None)) @@ -2460,7 +2460,7 @@ True >>> list(pairwise('a')) [] ->>> list(islice(padnone('abc'), 0, 6)) +>>> list(islice(pad_none('abc'), 0, 6)) ['a', 'b', 'c', None, None, None] >>> list(ncycles('abc', 3)) diff --git a/Lib/test/test_lib2to3.py b/Lib/test/test_lib2to3.py index 15c317e9..e939d473 100644 --- a/Lib/test/test_lib2to3.py +++ b/Lib/test/test_lib2to3.py @@ -1,8 +1,8 @@ import unittest -from test.support import check_warnings +from test.support import check_warnings, import_fresh_module with check_warnings(("", PendingDeprecationWarning)): - from lib2to3.tests import load_tests + load_tests = import_fresh_module('lib2to3.tests', fresh=['lib2to3']).load_tests if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 62759c07..410eae22 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -1161,22 +1161,27 @@ class MemoryHandlerTest(BaseTest): class MockRaceConditionHandler: def __init__(self, mem_hdlr): self.mem_hdlr = mem_hdlr + self.threads = [] def removeTarget(self): self.mem_hdlr.setTarget(None) def handle(self, msg): - t = threading.Thread(target=self.removeTarget) - t.daemon = True - t.start() + thread = threading.Thread(target=self.removeTarget) + self.threads.append(thread) + thread.start() target = MockRaceConditionHandler(self.mem_hdlr) - self.mem_hdlr.setTarget(target) + try: + self.mem_hdlr.setTarget(target) - for _ in range(10): - time.sleep(0.005) - self.mem_logger.info("not flushed") - self.mem_logger.warning("flushed") + for _ in range(10): + time.sleep(0.005) + self.mem_logger.info("not flushed") + self.mem_logger.warning("flushed") + finally: + for thread in target.threads: + support.join_thread(thread) class ExceptionFormatter(logging.Formatter): diff --git a/Lib/test/test_named_expressions.py b/Lib/test/test_named_expressions.py index c813830c..2adcd4b5 100644 --- a/Lib/test/test_named_expressions.py +++ b/Lib/test/test_named_expressions.py @@ -113,7 +113,7 @@ class NamedExpressionInvalidTest(unittest.TestCase): "assignment expression within a comprehension cannot be used in a class body"): exec(code, {}, {}) - def test_named_expression_invalid_rebinding_comprehension_iteration_variable(self): + def test_named_expression_invalid_rebinding_list_comprehension_iteration_variable(self): cases = [ ("Local reuse", 'i', "[i := 0 for i in range(5)]"), ("Nested reuse", 'j', "[[(j := 0) for i in range(5)] for j in range(5)]"), @@ -130,7 +130,7 @@ class NamedExpressionInvalidTest(unittest.TestCase): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) - def test_named_expression_invalid_rebinding_comprehension_inner_loop(self): + def test_named_expression_invalid_rebinding_list_comprehension_inner_loop(self): cases = [ ("Inner reuse", 'j', "[i for i in range(5) if (j := 0) for j in range(5)]"), ("Inner unpacking reuse", 'j', "[i for i in range(5) if (j := 0) for j, k in [(0, 1)]]"), @@ -145,7 +145,7 @@ class NamedExpressionInvalidTest(unittest.TestCase): with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope - def test_named_expression_invalid_comprehension_iterable_expression(self): + def test_named_expression_invalid_list_comprehension_iterable_expression(self): cases = [ ("Top level", "[i for i in (i := range(5))]"), ("Inside tuple", "[i for i in (2, 3, i := range(5))]"), @@ -167,6 +167,60 @@ class NamedExpressionInvalidTest(unittest.TestCase): with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope + def test_named_expression_invalid_rebinding_set_comprehension_iteration_variable(self): + cases = [ + ("Local reuse", 'i', "{i := 0 for i in range(5)}"), + ("Nested reuse", 'j', "{{(j := 0) for i in range(5)} for j in range(5)}"), + ("Reuse inner loop target", 'j', "{(j := 0) for i in range(5) for j in range(5)}"), + ("Unpacking reuse", 'i', "{i := 0 for i, j in {(0, 1)}}"), + ("Reuse in loop condition", 'i', "{i+1 for i in range(5) if (i := 0)}"), + ("Unreachable reuse", 'i', "{False or (i:=0) for i in range(5)}"), + ("Unreachable nested reuse", 'i', + "{(i, j) for i in range(5) for j in range(5) if True or (i:=10)}"), + ] + for case, target, code in cases: + msg = f"assignment expression cannot rebind comprehension iteration variable '{target}'" + with self.subTest(case=case): + with self.assertRaisesRegex(SyntaxError, msg): + exec(code, {}, {}) + + def test_named_expression_invalid_rebinding_set_comprehension_inner_loop(self): + cases = [ + ("Inner reuse", 'j', "{i for i in range(5) if (j := 0) for j in range(5)}"), + ("Inner unpacking reuse", 'j', "{i for i in range(5) if (j := 0) for j, k in {(0, 1)}}"), + ] + for case, target, code in cases: + msg = f"comprehension inner loop cannot rebind assignment expression target '{target}'" + with self.subTest(case=case): + with self.assertRaisesRegex(SyntaxError, msg): + exec(code, {}) # Module scope + with self.assertRaisesRegex(SyntaxError, msg): + exec(code, {}, {}) # Class scope + with self.assertRaisesRegex(SyntaxError, msg): + exec(f"lambda: {code}", {}) # Function scope + + def test_named_expression_invalid_set_comprehension_iterable_expression(self): + cases = [ + ("Top level", "{i for i in (i := range(5))}"), + ("Inside tuple", "{i for i in (2, 3, i := range(5))}"), + ("Inside list", "{i for i in {2, 3, i := range(5)}}"), + ("Different name", "{i for i in (j := range(5))}"), + ("Lambda expression", "{i for i in (lambda:(j := range(5)))()}"), + ("Inner loop", "{i for i in range(5) for j in (i := range(5))}"), + ("Nested comprehension", "{i for i in {j for j in (k := range(5))}}"), + ("Nested comprehension condition", "{i for i in {j for j in range(5) if (j := True)}}"), + ("Nested comprehension body", "{i for i in {(j := True) for j in range(5)}}"), + ] + msg = "assignment expression cannot be used in a comprehension iterable expression" + for case, code in cases: + with self.subTest(case=case): + with self.assertRaisesRegex(SyntaxError, msg): + exec(code, {}) # Module scope + with self.assertRaisesRegex(SyntaxError, msg): + exec(code, {}, {}) # Class scope + with self.assertRaisesRegex(SyntaxError, msg): + exec(f"lambda: {code}", {}) # Function scope + class NamedExpressionAssignmentTest(unittest.TestCase): @@ -513,6 +567,15 @@ spam()""" self.assertEqual(nonlocal_var, None) f() + def test_named_expression_scope_in_genexp(self): + a = 1 + b = [1, 2, 3, 4] + genexp = (c := i + a for i in b) + + self.assertNotIn("c", locals()) + for idx, elem in enumerate(genexp): + self.assertEqual(elem, b[idx] + a) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py index 7913e91e..55543de6 100644 --- a/Lib/test/test_peepholer.py +++ b/Lib/test/test_peepholer.py @@ -522,6 +522,13 @@ class TestBuglets(unittest.TestCase): with self.assertRaises(ValueError): f() + def test_bpo_42057(self): + for i in range(10): + try: + raise Exception + except Exception or Exception: + pass + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_peg_generator/test_c_parser.py b/Lib/test/test_peg_generator/test_c_parser.py index f9935258..9701d4f9 100644 --- a/Lib/test/test_peg_generator/test_c_parser.py +++ b/Lib/test/test_peg_generator/test_c_parser.py @@ -1,3 +1,4 @@ +import sysconfig import textwrap import unittest from distutils.tests.support import TempdirManager @@ -7,6 +8,11 @@ from test import test_tools from test import support from test.support.script_helper import assert_python_ok +_py_cflags_nodist = sysconfig.get_config_var('PY_CFLAGS_NODIST') +_pgo_flag = sysconfig.get_config_var('PGO_PROF_USE_FLAG') +if _pgo_flag and _py_cflags_nodist and _pgo_flag in _py_cflags_nodist: + raise unittest.SkipTest("peg_generator test disabled under PGO build") + test_tools.skip_if_missing("peg_generator") with test_tools.imports_under_tool("peg_generator"): from pegen.grammar_parser import GeneratedParser as GrammarParser diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index a5c35dff..a3b06feb 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -237,7 +237,10 @@ class PlatformTest(unittest.TestCase): # On Snow Leopard, sw_vers reports 10.6.0 as 10.6 if len_diff > 0: expect_list.extend(['0'] * len_diff) - self.assertEqual(result_list, expect_list) + # For compatibility with older binaries, macOS 11.x may report + # itself as '10.16' rather than '11.x.y'. + if result_list != ['10', '16']: + self.assertEqual(result_list, expect_list) # res[1] claims to contain # (version, dev_stage, non_release_version) @@ -245,7 +248,7 @@ class PlatformTest(unittest.TestCase): self.assertEqual(res[1], ('', '', '')) if sys.byteorder == 'little': - self.assertIn(res[2], ('i386', 'x86_64')) + self.assertIn(res[2], ('i386', 'x86_64', 'arm64')) else: self.assertEqual(res[2], 'PowerPC') diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py index e82a53c5..9e53305b 100644 --- a/Lib/test/test_plistlib.py +++ b/Lib/test/test_plistlib.py @@ -2,6 +2,7 @@ import copy import operator import pickle +import struct import unittest import plistlib import os @@ -105,6 +106,298 @@ TESTDATA={ AAABOQ=='''), } +XML_PLIST_WITH_ENTITY=b'''\ + + + ]> + + + A + &entity; + + +''' + +INVALID_BINARY_PLISTS = [ + ('too short data', + b'' + ), + ('too large offset_table_offset and offset_size = 1', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x2a' + ), + ('too large offset_table_offset and nonstandard offset_size', + b'\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x03\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x2c' + ), + ('integer overflow in offset_table_offset', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\xff\xff\xff\xff\xff\xff\xff\xff' + ), + ('too large top_object', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('integer overflow in top_object', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\xff\xff\xff\xff\xff\xff\xff\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('too large num_objects and offset_size = 1', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('too large num_objects and nonstandard offset_size', + b'\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x03\x01' + b'\x00\x00\x00\x00\x00\x00\x00\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('extremally large num_objects (32 bit)', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x7f\xff\xff\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('extremally large num_objects (64 bit)', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\xff\xff\xff\xff\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('integer overflow in num_objects', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\xff\xff\xff\xff\xff\xff\xff\xff' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('offset_size = 0', + b'\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('ref_size = 0', + b'\xa1\x01\x00\x08\x0a' + b'\x00\x00\x00\x00\x00\x00\x01\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0b' + ), + ('too large offset', + b'\x00\x2a' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('integer overflow in offset', + b'\x00\xff\xff\xff\xff\xff\xff\xff\xff' + b'\x00\x00\x00\x00\x00\x00\x08\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x09' + ), + ('too large array size', + b'\xaf\x00\x01\xff\x00\x08\x0c' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0d' + ), + ('extremally large array size (32-bit)', + b'\xaf\x02\x7f\xff\xff\xff\x01\x00\x08\x0f' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x10' + ), + ('extremally large array size (64-bit)', + b'\xaf\x03\x00\x00\x00\xff\xff\xff\xff\xff\x01\x00\x08\x13' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x14' + ), + ('integer overflow in array size', + b'\xaf\x03\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x08\x13' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x14' + ), + ('too large reference index', + b'\xa1\x02\x00\x08\x0a' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0b' + ), + ('integer overflow in reference index', + b'\xa1\xff\xff\xff\xff\xff\xff\xff\xff\x00\x08\x11' + b'\x00\x00\x00\x00\x00\x00\x01\x08' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x12' + ), + ('too large bytes size', + b'\x4f\x00\x23\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0c' + ), + ('extremally large bytes size (32-bit)', + b'\x4f\x02\x7f\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0f' + ), + ('extremally large bytes size (64-bit)', + b'\x4f\x03\x00\x00\x00\xff\xff\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x13' + ), + ('integer overflow in bytes size', + b'\x4f\x03\xff\xff\xff\xff\xff\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x13' + ), + ('too large ASCII size', + b'\x5f\x00\x23\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0c' + ), + ('extremally large ASCII size (32-bit)', + b'\x5f\x02\x7f\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0f' + ), + ('extremally large ASCII size (64-bit)', + b'\x5f\x03\x00\x00\x00\xff\xff\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x13' + ), + ('integer overflow in ASCII size', + b'\x5f\x03\xff\xff\xff\xff\xff\xff\xff\xff\x41\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x13' + ), + ('invalid ASCII', + b'\x51\xff\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0a' + ), + ('too large UTF-16 size', + b'\x6f\x00\x13\x20\xac\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0e' + ), + ('extremally large UTF-16 size (32-bit)', + b'\x6f\x02\x4f\xff\xff\xff\x20\xac\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x11' + ), + ('extremally large UTF-16 size (64-bit)', + b'\x6f\x03\x00\x00\x00\xff\xff\xff\xff\xff\x20\xac\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x15' + ), + ('integer overflow in UTF-16 size', + b'\x6f\x03\xff\xff\xff\xff\xff\xff\xff\xff\x20\xac\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x15' + ), + ('invalid UTF-16', + b'\x61\xd8\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0b' + ), + ('non-hashable key', + b'\xd1\x01\x01\xa0\x08\x0b' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x02' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x0c' + ), + ('too large datetime (datetime overflow)', + b'\x33\x42\x50\x00\x00\x00\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x11' + ), + ('too large datetime (timedelta overflow)', + b'\x33\x42\xe0\x00\x00\x00\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x11' + ), + ('invalid datetime (Infinity)', + b'\x33\x7f\xf0\x00\x00\x00\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x11' + ), + ('invalid datetime (NaN)', + b'\x33\x7f\xf8\x00\x00\x00\x00\x00\x00\x08' + b'\x00\x00\x00\x00\x00\x00\x01\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x01' + b'\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x11' + ), +] + class TestPlistlib(unittest.TestCase): @@ -484,6 +777,19 @@ class TestPlistlib(unittest.TestCase): self.assertRaises(ValueError, plistlib.loads, b"not real") + def test_integer_notations(self): + pl = b"456" + value = plistlib.loads(pl) + self.assertEqual(value, 456) + + pl = b"0xa" + value = plistlib.loads(pl) + self.assertEqual(value, 10) + + pl = b"0123" + value = plistlib.loads(pl) + self.assertEqual(value, 123) + def test_xml_encodings(self): base = TESTDATA[plistlib.FMT_XML] @@ -523,9 +829,29 @@ class TestPlistlib(unittest.TestCase): with self.assertRaises(OverflowError): plistlib.dumps(huge_uid, fmt=plistlib.FMT_BINARY) + def test_xml_plist_with_entity_decl(self): + with self.assertRaisesRegex(plistlib.InvalidFileException, + "XML entity declarations are not supported"): + plistlib.loads(XML_PLIST_WITH_ENTITY, fmt=plistlib.FMT_XML) + class TestBinaryPlistlib(unittest.TestCase): + @staticmethod + def decode(*objects, offset_size=1, ref_size=1): + data = [b'bplist00'] + offset = 8 + offsets = [] + for x in objects: + offsets.append(offset.to_bytes(offset_size, 'big')) + data.append(x) + offset += len(x) + tail = struct.pack('>6xBBQQQ', offset_size, ref_size, + len(objects), 0, offset) + data.extend(offsets) + data.append(tail) + return plistlib.loads(b''.join(data), fmt=plistlib.FMT_BINARY) + def test_nonstandard_refs_size(self): # Issue #21538: Refs and offsets are 24-bit integers data = (b'bplist00' @@ -540,7 +866,7 @@ class TestBinaryPlistlib(unittest.TestCase): def test_dump_duplicates(self): # Test effectiveness of saving duplicated objects - for x in (None, False, True, 12345, 123.45, 'abcde', b'abcde', + for x in (None, False, True, 12345, 123.45, 'abcde', 'абвгд', b'abcde', datetime.datetime(2004, 10, 26, 10, 33, 33), bytearray(b'abcde'), [12, 345], (12, 345), {'12': 345}): with self.subTest(x=x): @@ -577,6 +903,20 @@ class TestBinaryPlistlib(unittest.TestCase): b = plistlib.loads(plistlib.dumps(a, fmt=plistlib.FMT_BINARY)) self.assertIs(b['x'], b) + def test_deep_nesting(self): + for N in [300, 100000]: + 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 + else: + for i in range(N): + self.assertIsInstance(result, list) + self.assertEqual(len(result), 1) + result = result[0] + self.assertEqual(result, 'seed') + def test_large_timestamp(self): # Issue #26709: 32-bit timestamp out of range for ts in -2**31-1, 2**31: @@ -586,55 +926,37 @@ class TestBinaryPlistlib(unittest.TestCase): data = plistlib.dumps(d, fmt=plistlib.FMT_BINARY) self.assertEqual(plistlib.loads(data), d) + def test_load_singletons(self): + self.assertIs(self.decode(b'\x00'), None) + self.assertIs(self.decode(b'\x08'), False) + self.assertIs(self.decode(b'\x09'), True) + self.assertEqual(self.decode(b'\x0f'), b'') + + def test_load_int(self): + self.assertEqual(self.decode(b'\x10\x00'), 0) + self.assertEqual(self.decode(b'\x10\xfe'), 0xfe) + self.assertEqual(self.decode(b'\x11\xfe\xdc'), 0xfedc) + self.assertEqual(self.decode(b'\x12\xfe\xdc\xba\x98'), 0xfedcba98) + self.assertEqual(self.decode(b'\x13\x01\x23\x45\x67\x89\xab\xcd\xef'), + 0x0123456789abcdef) + self.assertEqual(self.decode(b'\x13\xfe\xdc\xba\x98\x76\x54\x32\x10'), + -0x123456789abcdf0) + + def test_unsupported(self): + unsupported = [*range(1, 8), *range(10, 15), + 0x20, 0x21, *range(0x24, 0x33), *range(0x34, 0x40)] + for i in [0x70, 0x90, 0xb0, 0xc0, 0xe0, 0xf0]: + unsupported.extend(i + j for j in range(16)) + for token in unsupported: + with self.subTest(f'token {token:02x}'): + with self.assertRaises(plistlib.InvalidFileException): + self.decode(bytes([token]) + b'\x00'*16) + def test_invalid_binary(self): - for data in [ - # too short data - b'', - # too large offset_table_offset and nonstandard offset_size - b'\x00\x08' - b'\x00\x00\x00\x00\x00\x00\x03\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x2a', - # integer overflow in offset_table_offset - b'\x00\x08' - b'\x00\x00\x00\x00\x00\x00\x01\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\xff\xff\xff\xff\xff\xff\xff\xff', - # offset_size = 0 - b'\x00\x08' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x09', - # ref_size = 0 - b'\xa1\x01\x00\x08\x0a' - b'\x00\x00\x00\x00\x00\x00\x01\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x02' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x0b', - # integer overflow in offset - b'\x00\xff\xff\xff\xff\xff\xff\xff\xff' - b'\x00\x00\x00\x00\x00\x00\x08\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x09', - # invalid ASCII - b'\x51\xff\x08' - b'\x00\x00\x00\x00\x00\x00\x01\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x0a', - # invalid UTF-16 - b'\x61\xd8\x00\x08' - b'\x00\x00\x00\x00\x00\x00\x01\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x01' - b'\x00\x00\x00\x00\x00\x00\x00\x00' - b'\x00\x00\x00\x00\x00\x00\x00\x0b', - ]: - with self.assertRaises(plistlib.InvalidFileException): - plistlib.loads(b'bplist00' + data, fmt=plistlib.FMT_BINARY) + for name, data in INVALID_BINARY_PLISTS: + with self.subTest(name): + with self.assertRaises(plistlib.InvalidFileException): + plistlib.loads(b'bplist00' + data, fmt=plistlib.FMT_BINARY) class TestKeyedArchive(unittest.TestCase): diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index be121ae4..bfbcbab3 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1045,7 +1045,7 @@ class PosixTester(unittest.TestCase): if sys.platform == 'darwin': import sysconfig dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0' - if tuple(int(n) for n in dt.split('.')[0:2]) < (10, 6): + if tuple(int(n) for n in str(dt).split('.')[0:2]) < (10, 6): raise unittest.SkipTest("getgroups(2) is broken prior to 10.6") # 'id -G' and 'os.getgroups()' should return the same @@ -1905,6 +1905,233 @@ class TestPosixSpawnP(unittest.TestCase, _PosixSpawnMixin): assert_python_ok(*args, PATH=path) +@unittest.skipUnless(sys.platform == "darwin", "test weak linking on macOS") +class TestPosixWeaklinking(unittest.TestCase): + # These test cases verify that weak linking support on macOS works + # as expected. These cases only test new behaviour introduced by weak linking, + # regular behaviour is tested by the normal test cases. + # + # See the section on Weak Linking in Mac/README.txt for more information. + def setUp(self): + import sysconfig + import platform + + config_vars = sysconfig.get_config_vars() + self.available = { nm for nm in config_vars if nm.startswith("HAVE_") and config_vars[nm] } + self.mac_ver = tuple(int(part) for part in platform.mac_ver()[0].split(".")) + + def _verify_available(self, name): + if name not in self.available: + raise unittest.SkipTest(f"{name} not weak-linked") + + def test_pwritev(self): + self._verify_available("HAVE_PWRITEV") + if self.mac_ver >= (10, 16): + self.assertTrue(hasattr(os, "pwritev"), "os.pwritev is not available") + self.assertTrue(hasattr(os, "preadv"), "os.readv is not available") + + else: + self.assertFalse(hasattr(os, "pwritev"), "os.pwritev is available") + self.assertFalse(hasattr(os, "preadv"), "os.readv is available") + + def test_stat(self): + self._verify_available("HAVE_FSTATAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_FSTATAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_FSTATAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.stat("file", dir_fd=0) + + def test_access(self): + self._verify_available("HAVE_FACCESSAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_FACCESSAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_FACCESSAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.access("file", os.R_OK, dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "follow_symlinks unavailable"): + os.access("file", os.R_OK, follow_symlinks=False) + + with self.assertRaisesRegex(NotImplementedError, "effective_ids unavailable"): + os.access("file", os.R_OK, effective_ids=True) + + def test_chmod(self): + self._verify_available("HAVE_FCHMODAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_FCHMODAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_FCHMODAT", posix._have_functions) + self.assertIn("HAVE_LCHMOD", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.chmod("file", 0o644, dir_fd=0) + + def test_chown(self): + self._verify_available("HAVE_FCHOWNAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_FCHOWNAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_FCHOWNAT", posix._have_functions) + self.assertIn("HAVE_LCHOWN", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.chown("file", 0, 0, dir_fd=0) + + def test_link(self): + self._verify_available("HAVE_LINKAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_LINKAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_LINKAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd unavailable"): + os.link("source", "target", src_dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "dst_dir_fd unavailable"): + os.link("source", "target", dst_dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd unavailable"): + os.link("source", "target", src_dir_fd=0, dst_dir_fd=0) + + # issue 41355: !HAVE_LINKAT code path ignores the follow_symlinks flag + with support.temp_dir() as base_path: + link_path = os.path.join(base_path, "link") + target_path = os.path.join(base_path, "target") + source_path = os.path.join(base_path, "source") + + with open(source_path, "w") as fp: + fp.write("data") + + os.symlink("target", link_path) + + # Calling os.link should fail in the link(2) call, and + # should not reject *follow_symlinks* (to match the + # behaviour you'd get when building on a platform without + # linkat) + with self.assertRaises(FileExistsError): + os.link(source_path, link_path, follow_symlinks=True) + + with self.assertRaises(FileExistsError): + os.link(source_path, link_path, follow_symlinks=False) + + + def test_listdir_scandir(self): + self._verify_available("HAVE_FDOPENDIR") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_FDOPENDIR", posix._have_functions) + + else: + self.assertNotIn("HAVE_FDOPENDIR", posix._have_functions) + + with self.assertRaisesRegex(TypeError, "listdir: path should be string, bytes, os.PathLike or None, not int"): + os.listdir(0) + + with self.assertRaisesRegex(TypeError, "scandir: path should be string, bytes, os.PathLike or None, not int"): + os.scandir(0) + + def test_mkdir(self): + self._verify_available("HAVE_MKDIRAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_MKDIRAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_MKDIRAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.mkdir("dir", dir_fd=0) + + def test_rename_replace(self): + self._verify_available("HAVE_RENAMEAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_RENAMEAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_RENAMEAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd and dst_dir_fd unavailable"): + os.rename("a", "b", src_dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd and dst_dir_fd unavailable"): + os.rename("a", "b", dst_dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd and dst_dir_fd unavailable"): + os.replace("a", "b", src_dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "src_dir_fd and dst_dir_fd unavailable"): + os.replace("a", "b", dst_dir_fd=0) + + def test_unlink_rmdir(self): + self._verify_available("HAVE_UNLINKAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_UNLINKAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_UNLINKAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.unlink("path", dir_fd=0) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.rmdir("path", dir_fd=0) + + def test_open(self): + self._verify_available("HAVE_OPENAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_OPENAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_OPENAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.open("path", os.O_RDONLY, dir_fd=0) + + def test_readlink(self): + self._verify_available("HAVE_READLINKAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_READLINKAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_READLINKAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.readlink("path", dir_fd=0) + + def test_symlink(self): + self._verify_available("HAVE_SYMLINKAT") + if self.mac_ver >= (10, 10): + self.assertIn("HAVE_SYMLINKAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_SYMLINKAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.symlink("a", "b", dir_fd=0) + + def test_utime(self): + self._verify_available("HAVE_FUTIMENS") + self._verify_available("HAVE_UTIMENSAT") + if self.mac_ver >= (10, 13): + self.assertIn("HAVE_FUTIMENS", posix._have_functions) + self.assertIn("HAVE_UTIMENSAT", posix._have_functions) + + else: + self.assertNotIn("HAVE_FUTIMENS", posix._have_functions) + self.assertNotIn("HAVE_UTIMENSAT", posix._have_functions) + + with self.assertRaisesRegex(NotImplementedError, "dir_fd unavailable"): + os.utime("path", dir_fd=0) + + def test_main(): try: support.run_unittest( @@ -1912,6 +2139,7 @@ def test_main(): PosixGroupsTester, TestPosixSpawn, TestPosixSpawnP, + TestPosixWeaklinking ) finally: support.reap_children() diff --git a/Lib/test/test_profile.py b/Lib/test/test_profile.py index 01a8a6ea..23364989 100644 --- a/Lib/test/test_profile.py +++ b/Lib/test/test_profile.py @@ -6,7 +6,7 @@ import unittest import os from difflib import unified_diff from io import StringIO -from test.support import TESTFN, run_unittest, unlink +from test.support import TESTFN, run_unittest, unlink, temp_dir, change_cwd from contextlib import contextmanager import profile @@ -111,6 +111,20 @@ class ProfileTest(unittest.TestCase): assert_python_ok('-m', self.profilermodule.__name__, '-m', 'timeit', '-n', '1') + def test_output_file_when_changing_directory(self): + with temp_dir() as tmpdir, change_cwd(tmpdir): + os.mkdir('dest') + with open('demo.py', 'w') as f: + f.write('import os; os.chdir("dest")') + + assert_python_ok( + '-m', self.profilermodule.__name__, + '-o', 'out.pstats', + 'demo.py', + ) + + self.assertTrue(os.path.exists('out.pstats')) + def regenerate_expected_output(filename, cls): filename = filename.rstrip('co') diff --git a/Lib/test/test_pstats.py b/Lib/test/test_pstats.py index 10559deb..4f78b99f 100644 --- a/Lib/test/test_pstats.py +++ b/Lib/test/test_pstats.py @@ -95,5 +95,9 @@ class StatsTestCase(unittest.TestCase): self.assertIn('pass2', funcs_called) self.assertIn('pass3', funcs_called) + def test_SortKey_enum(self): + self.assertEqual(SortKey.FILENAME, 'filename') + self.assertNotEqual(SortKey.FILENAME, SortKey.CALLS) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index e56b3370..e19af64b 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -1848,6 +1848,23 @@ class TestWhich(BaseTest, unittest.TestCase): rv = shutil.which(program, path=self.temp_dir) self.assertEqual(rv, temp_filexyz.name) + # Issue 40592: See https://bugs.python.org/issue40592 + @unittest.skipUnless(sys.platform == "win32", 'test specific to Windows') + def test_pathext_with_empty_str(self): + ext = ".xyz" + temp_filexyz = tempfile.NamedTemporaryFile(dir=self.temp_dir, + prefix="Tmp2", suffix=ext) + self.addCleanup(temp_filexyz.close) + + # strip path and extension + program = os.path.basename(temp_filexyz.name) + program = os.path.splitext(program)[0] + + with support.EnvironmentVarGuard() as env: + env['PATHEXT'] = f"{ext};" # note the ; + rv = shutil.which(program, path=self.temp_dir) + self.assertEqual(rv, temp_filexyz.name) + class TestWhichBytes(TestWhich): def setUp(self): diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 923f35ef..ffba139d 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -500,8 +500,6 @@ class ImportSideEffectTests(unittest.TestCase): @test.support.requires_resource('network') @test.support.system_must_validate_cert - @unittest.skipUnless(sys.version_info[3] == 'final', - 'only for released versions') @unittest.skipUnless(hasattr(urllib.request, "HTTPSHandler"), 'need SSL support to download license') def test_license_exists_at_url(self): @@ -509,6 +507,8 @@ class ImportSideEffectTests(unittest.TestCase): # string displayed by license in the absence of a LICENSE file. url = license._Printer__data.split()[1] req = urllib.request.Request(url, method='HEAD') + # Reset global urllib.request._opener + self.addCleanup(urllib.request.urlcleanup) try: with socket_helper.transient_internet(url): with urllib.request.urlopen(req) as data: diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 5d496c66..27cb884e 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -3831,6 +3831,7 @@ class ThreadedTests(unittest.TestCase): @requires_minimum_version @requires_tls_version('TLSv1_2') + @requires_tls_version('TLSv1') def test_min_max_version_mismatch(self): client_context, server_context, hostname = testing_context() # client 1.0, server 1.2 (mismatch) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index ba2844da..7373fe29 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -1826,6 +1826,10 @@ class POSIXProcessTestCase(BaseTestCase): with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, user=-1) + with self.assertRaises(OverflowError): + subprocess.check_call(ZERO_RETURN_CMD, + cwd=os.curdir, env=os.environ, user=2**64) + if pwd is None and name_uid is not None: with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, user=name_uid) @@ -1869,6 +1873,10 @@ class POSIXProcessTestCase(BaseTestCase): with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, group=-1) + with self.assertRaises(OverflowError): + subprocess.check_call(ZERO_RETURN_CMD, + cwd=os.curdir, env=os.environ, group=2**64) + if grp is None: with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, group=name_group) @@ -1917,6 +1925,11 @@ class POSIXProcessTestCase(BaseTestCase): with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, extra_groups=[-1]) + with self.assertRaises(ValueError): + subprocess.check_call(ZERO_RETURN_CMD, + cwd=os.curdir, env=os.environ, + extra_groups=[2**64]) + if grp is None: with self.assertRaises(ValueError): subprocess.check_call(ZERO_RETURN_CMD, @@ -3147,6 +3160,19 @@ class POSIXProcessTestCase(BaseTestCase): # so Popen failed to read it and uses a default returncode instead. self.assertIsNotNone(proc.returncode) + def test_send_signal_race2(self): + # bpo-40550: the process might exist between the returncode check and + # the kill operation + p = subprocess.Popen([sys.executable, '-c', 'exit(1)']) + + # wait for process to exit + while not p.returncode: + p.poll() + + with mock.patch.object(p, 'poll', new=lambda: None): + p.returncode = None + p.send_signal(signal.SIGTERM) + def test_communicate_repeated_call_after_stdout_close(self): proc = subprocess.Popen([sys.executable, '-c', 'import os, time; os.close(1), time.sleep(2)'], diff --git a/Lib/test/test_symtable.py b/Lib/test/test_symtable.py index d1935588..65850719 100644 --- a/Lib/test/test_symtable.py +++ b/Lib/test/test_symtable.py @@ -11,6 +11,8 @@ import sys glob = 42 some_var = 12 +some_non_assigned_global_var = 11 +some_assigned_global_var = 11 class Mine: instance_var = 24 @@ -19,6 +21,8 @@ class Mine: def spam(a, b, *var, **kw): global bar + global some_assigned_global_var + some_assigned_global_var = 12 bar = 47 some_var = 10 x = 23 @@ -81,14 +85,14 @@ class SymtableTest(unittest.TestCase): def test_lineno(self): self.assertEqual(self.top.get_lineno(), 0) - self.assertEqual(self.spam.get_lineno(), 12) + self.assertEqual(self.spam.get_lineno(), 14) def test_function_info(self): func = self.spam self.assertEqual(sorted(func.get_parameters()), ["a", "b", "kw", "var"]) expected = ['a', 'b', 'internal', 'kw', 'other_internal', 'some_var', 'var', 'x'] self.assertEqual(sorted(func.get_locals()), expected) - self.assertEqual(sorted(func.get_globals()), ["bar", "glob"]) + self.assertEqual(sorted(func.get_globals()), ["bar", "glob", "some_assigned_global_var"]) self.assertEqual(self.internal.get_frees(), ("x",)) def test_globals(self): @@ -99,6 +103,9 @@ class SymtableTest(unittest.TestCase): self.assertFalse(self.internal.lookup("x").is_global()) self.assertFalse(self.Mine.lookup("instance_var").is_global()) self.assertTrue(self.spam.lookup("bar").is_global()) + # Module-scope globals are both global and local + self.assertTrue(self.top.lookup("some_non_assigned_global_var").is_global()) + self.assertTrue(self.top.lookup("some_assigned_global_var").is_global()) def test_nonlocal(self): self.assertFalse(self.spam.lookup("some_var").is_nonlocal()) @@ -109,6 +116,9 @@ class SymtableTest(unittest.TestCase): def test_local(self): self.assertTrue(self.spam.lookup("x").is_local()) self.assertFalse(self.spam.lookup("bar").is_local()) + # Module-scope globals are both global and local + self.assertTrue(self.top.lookup("some_non_assigned_global_var").is_local()) + self.assertTrue(self.top.lookup("some_assigned_global_var").is_local()) def test_free(self): self.assertTrue(self.internal.lookup("x").is_free()) @@ -227,6 +237,10 @@ class SymtableTest(unittest.TestCase): top = symtable.symtable(code, "?", "exec") self.assertIsNotNone(find_block(top, "\u017d")) + def test_symtable_repr(self): + self.assertEqual(str(self.top), "") + self.assertEqual(str(self.spam), "") + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index d6583b9d..f0c9c988 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -802,6 +802,9 @@ class SyntaxTestCase(unittest.TestCase): else: self.fail("compile() did not raise SyntaxError") + def test_curly_brace_after_primary_raises_immediately(self): + self._check_error("f{", "invalid syntax", mode="single") + def test_assign_call(self): self._check_error("f() = 1", "assign") @@ -943,6 +946,40 @@ pass except SyntaxError: self.fail("Empty line after a line continuation character is valid.") + @support.cpython_only + def test_nested_named_except_blocks(self): + code = "" + for i in range(12): + code += f"{' '*i}try:\n" + code += f"{' '*(i+1)}raise Exception\n" + code += f"{' '*i}except Exception as e:\n" + code += f"{' '*4*12}pass" + self._check_error(code, "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 + # in the file. See bpo-42214 for more information. + code = """ +def func1(): + if a != b: + raise ValueError + +def func2(): + try + return 1 + finally: + pass +""" + self._check_error(code, "invalid syntax") + + def test_invalid_line_continuation_left_recursive(self): + # Check bpo-42218: SyntaxErrors following left-recursive rules + # (t_primary_raw in this case) need to be tested explicitly + self._check_error("A.\u018a\\ ", + "unexpected character after line continuation character") + self._check_error("A.\u03bc\\\n", + "unexpected EOF while parsing") def test_main(): support.run_unittest(SyntaxTestCase) diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 3ddeb97f..29cde91b 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1346,10 +1346,10 @@ class WriteTest(WriteTestBase, unittest.TestCase): f.write('something\n') os.symlink(source_file, target_file) with tarfile.open(temparchive, 'w') as tar: - tar.add(source_file) - tar.add(target_file) + tar.add(source_file, arcname="source") + tar.add(target_file, arcname="symlink") # Let's extract it to the location which contains the symlink - with tarfile.open(temparchive) as tar: + with tarfile.open(temparchive, errorlevel=2) as tar: # this should not raise OSError: [Errno 17] File exists try: tar.extractall(path=tempdir) @@ -1416,12 +1416,15 @@ class WriteTest(WriteTestBase, unittest.TestCase): pax_headers={'non': 'empty'}) self.assertFalse(f.closed) + class GzipWriteTest(GzipTest, WriteTest): pass + class Bz2WriteTest(Bz2Test, WriteTest): pass + class LzmaWriteTest(LzmaTest, WriteTest): pass @@ -1464,8 +1467,17 @@ class StreamWriteTest(WriteTestBase, unittest.TestCase): finally: os.umask(original_umask) + class GzipStreamWriteTest(GzipTest, StreamWriteTest): - pass + def test_source_directory_not_leaked(self): + """ + Ensure the source directory is not included in the tar header + per bpo-41316. + """ + tarfile.open(tmpname, self.mode).close() + payload = pathlib.Path(tmpname).read_text(encoding='latin-1') + assert os.path.dirname(tmpname) not in payload + class Bz2StreamWriteTest(Bz2Test, StreamWriteTest): decompressor = bz2.BZ2Decompressor if bz2 else None diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 81e5f70d..c21cdf8e 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -439,6 +439,35 @@ class ThreadTests(BaseTestCase): t = threading.Thread(daemon=True) self.assertTrue(t.daemon) + @unittest.skipUnless(hasattr(os, 'fork'), 'needs os.fork()') + def test_fork_at_exit(self): + # bpo-42350: Calling os.fork() after threading._shutdown() must + # not log an error. + code = textwrap.dedent(""" + import atexit + import os + import sys + from test.support import wait_process + + # Import the threading module to register its "at fork" callback + import threading + + def exit_handler(): + pid = os.fork() + if not pid: + print("child process ok", file=sys.stderr, flush=True) + # child process + sys.exit() + else: + wait_process(pid, exitcode=0) + + # exit_handler() will be called after threading._shutdown() + atexit.register(exit_handler) + """) + _, out, err = assert_python_ok("-c", code) + self.assertEqual(out, b'') + self.assertEqual(err.rstrip(), b'child process ok') + @unittest.skipUnless(hasattr(os, 'fork'), 'test needs fork()') def test_dummy_thread_after_fork(self): # Issue #14308: a dummy thread in the active list doesn't mess up diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 80e43faf..6674edc2 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -1040,6 +1040,36 @@ class TestOldPyTime(CPyTimeTestCase, unittest.TestCase): with self.assertRaises(ValueError): pytime_object_to_timespec(float('nan'), time_rnd) +@unittest.skipUnless(sys.platform == "darwin", "test weak linking on macOS") +class TestTimeWeaklinking(unittest.TestCase): + # These test cases verify that weak linking support on macOS works + # as expected. These cases only test new behaviour introduced by weak linking, + # regular behaviour is tested by the normal test cases. + # + # See the section on Weak Linking in Mac/README.txt for more information. + def test_clock_functions(self): + import sysconfig + import platform + + config_vars = sysconfig.get_config_vars() + var_name = "HAVE_CLOCK_GETTIME" + if var_name not in config_vars or not config_vars[var_name]: + raise unittest.SkipTest(f"{var_name} is not available") + + mac_ver = tuple(int(x) for x in platform.mac_ver()[0].split(".")) + + clock_names = [ + "CLOCK_MONOTONIC", "clock_gettime", "clock_gettime_ns", "clock_settime", + "clock_settime_ns", "clock_getres"] + + if mac_ver >= (10, 12): + for name in clock_names: + self.assertTrue(hasattr(time, name), f"time.{name} is not available") + + else: + for name in clock_names: + self.assertFalse(hasattr(time, name), f"time.{name} is available") + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index f9a5f2fc..8549ba2b 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -1103,7 +1103,19 @@ class TestTracebackException(unittest.TestCase): self.assertEqual(exc_info[0], exc.exc_type) self.assertEqual(str(exc_info[1]), str(exc)) - def test_comparison(self): + def test_no_refs_to_exception_and_traceback_objects(self): + try: + 1/0 + except Exception: + exc_info = sys.exc_info() + + refcnt1 = sys.getrefcount(exc_info[1]) + refcnt2 = sys.getrefcount(exc_info[2]) + exc = traceback.TracebackException(*exc_info) + self.assertEqual(sys.getrefcount(exc_info[1]), refcnt1) + self.assertEqual(sys.getrefcount(exc_info[2]), refcnt2) + + def test_comparison_basic(self): try: 1/0 except Exception: @@ -1115,6 +1127,53 @@ class TestTracebackException(unittest.TestCase): self.assertNotEqual(exc, object()) self.assertEqual(exc, ALWAYS_EQ) + def test_comparison_params_variations(self): + def raise_exc(): + try: + raise ValueError('bad value') + except: + raise + + def raise_with_locals(): + x, y = 1, 2 + raise_exc() + + try: + raise_with_locals() + except Exception: + exc_info = sys.exc_info() + + exc = traceback.TracebackException(*exc_info) + exc1 = traceback.TracebackException(*exc_info, limit=10) + exc2 = traceback.TracebackException(*exc_info, limit=2) + + self.assertEqual(exc, exc1) # limit=10 gets all frames + self.assertNotEqual(exc, exc2) # limit=2 truncates the output + + # locals change the output + exc3 = traceback.TracebackException(*exc_info, capture_locals=True) + self.assertNotEqual(exc, exc3) + + # there are no locals in the innermost frame + exc4 = traceback.TracebackException(*exc_info, limit=-1) + exc5 = traceback.TracebackException(*exc_info, limit=-1, capture_locals=True) + self.assertEqual(exc4, exc5) + + # there are locals in the next-to-innermost frame + exc6 = traceback.TracebackException(*exc_info, limit=-2) + exc7 = traceback.TracebackException(*exc_info, limit=-2, capture_locals=True) + self.assertNotEqual(exc6, exc7) + + def test_comparison_equivalent_exceptions_are_equal(self): + excs = [] + for _ in range(2): + try: + 1/0 + except: + excs.append(traceback.TracebackException(*sys.exc_info())) + self.assertEqual(excs[0], excs[1]) + self.assertEqual(list(excs[0].format()), list(excs[1].format())) + def test_unhashable(self): class UnhashableException(Exception): def __eq__(self, other): @@ -1156,7 +1215,7 @@ class TestTracebackException(unittest.TestCase): f = test_frame(c, None, None) tb = test_tb(f, 6, None) exc = traceback.TracebackException(Exception, e, tb, lookup_lines=False) - self.assertEqual({}, linecache.cache) + self.assertEqual(linecache.cache, {}) linecache.updatecache('/foo.py', globals()) self.assertEqual(exc.stack[0].line, "import sys") diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 7f96aff7..13cf20ee 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -300,6 +300,8 @@ class UnionTests(BaseTestCase): self.assertEqual(repr(u), repr(int)) u = Union[List[int], int] self.assertEqual(repr(u), 'typing.Union[typing.List[int], int]') + u = Union[list[int], dict[str, float]] + self.assertEqual(repr(u), 'typing.Union[list[int], dict[str, float]]') def test_cannot_subclass(self): with self.assertRaises(TypeError): @@ -411,6 +413,7 @@ class TupleTests(BaseTestCase): self.assertEqual(repr(Tuple[()]), 'typing.Tuple[()]') self.assertEqual(repr(Tuple[int, float]), 'typing.Tuple[int, float]') self.assertEqual(repr(Tuple[int, ...]), 'typing.Tuple[int, ...]') + self.assertEqual(repr(Tuple[list[int]]), 'typing.Tuple[list[int]]') def test_errors(self): with self.assertRaises(TypeError): @@ -483,6 +486,8 @@ class CallableTests(BaseTestCase): self.assertEqual(repr(ct2), 'typing.Callable[[str, float], int]') ctv = Callable[..., str] self.assertEqual(repr(ctv), 'typing.Callable[..., str]') + ct3 = Callable[[str, float], list[int]] + self.assertEqual(repr(ct3), 'typing.Callable[[str, float], list[int]]') def test_callable_with_ellipsis(self): @@ -527,6 +532,7 @@ class LiteralTests(BaseTestCase): self.assertEqual(repr(Literal[int]), "typing.Literal[int]") self.assertEqual(repr(Literal), "typing.Literal") self.assertEqual(repr(Literal[None]), "typing.Literal[None]") + self.assertEqual(repr(Literal[1, 2, 3, 3]), "typing.Literal[1, 2, 3]") def test_cannot_init(self): with self.assertRaises(TypeError): @@ -558,6 +564,35 @@ class LiteralTests(BaseTestCase): with self.assertRaises(TypeError): Literal[1][1] + def test_equal(self): + self.assertNotEqual(Literal[0], Literal[False]) + self.assertNotEqual(Literal[True], Literal[1]) + self.assertNotEqual(Literal[1], Literal[2]) + self.assertNotEqual(Literal[1, True], Literal[1]) + self.assertEqual(Literal[1], Literal[1]) + self.assertEqual(Literal[1, 2], Literal[2, 1]) + self.assertEqual(Literal[1, 2, 3], Literal[1, 2, 3, 3]) + + def test_hash(self): + self.assertEqual(hash(Literal[1]), hash(Literal[1])) + self.assertEqual(hash(Literal[1, 2]), hash(Literal[2, 1])) + self.assertEqual(hash(Literal[1, 2, 3]), hash(Literal[1, 2, 3, 3])) + + def test_args(self): + self.assertEqual(Literal[1, 2, 3].__args__, (1, 2, 3)) + self.assertEqual(Literal[1, 2, 3, 3].__args__, (1, 2, 3)) + self.assertEqual(Literal[1, Literal[2], Literal[3, 4]].__args__, (1, 2, 3, 4)) + # Mutable arguments will not be deduplicated + self.assertEqual(Literal[[], []].__args__, ([], [])) + + def test_flatten(self): + l1 = Literal[Literal[1], Literal[2], Literal[3]] + l2 = Literal[Literal[1, 2], 3] + l3 = Literal[Literal[1, 2, 3]] + for l in l1, l2, l3: + self.assertEqual(l, Literal[1, 2, 3]) + self.assertEqual(l.__args__, (1, 2, 3)) + XK = TypeVar('XK', str, bytes) XV = TypeVar('XV') @@ -2273,6 +2308,8 @@ class FinalTests(BaseTestCase): self.assertEqual(repr(cv), 'typing.Final[int]') cv = Final[Employee] self.assertEqual(repr(cv), 'typing.Final[%s.Employee]' % __name__) + cv = Final[tuple[int]] + self.assertEqual(repr(cv), 'typing.Final[tuple[int]]') def test_cannot_subclass(self): with self.assertRaises(TypeError): diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 2ee4e64d..23508c56 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -2523,11 +2523,13 @@ class CAPITest(unittest.TestCase): def test_from_format(self): support.import_module('ctypes') from ctypes import ( + c_char_p, pythonapi, py_object, sizeof, c_int, c_long, c_longlong, c_ssize_t, c_uint, c_ulong, c_ulonglong, c_size_t, c_void_p) name = "PyUnicode_FromFormat" _PyUnicode_FromFormat = getattr(pythonapi, name) + _PyUnicode_FromFormat.argtypes = (c_char_p,) _PyUnicode_FromFormat.restype = py_object def PyUnicode_FromFormat(format, *args): diff --git a/Lib/test/test_unparse.py b/Lib/test/test_unparse.py index 532aa3a6..c7c8613e 100644 --- a/Lib/test/test_unparse.py +++ b/Lib/test/test_unparse.py @@ -152,6 +152,18 @@ class UnparseTestCase(ASTTestCase): # See issue 25180 self.check_ast_roundtrip(r"""f'{f"{0}"*3}'""") self.check_ast_roundtrip(r"""f'{f"{y}"*3}'""") + self.check_ast_roundtrip("""f''""") + self.check_ast_roundtrip('''f"""'end' "quote\\""""''') + + def test_fstrings_complicated(self): + # See issue 28002 + self.check_ast_roundtrip("""f'''{"'"}'''""") + self.check_ast_roundtrip('''f\'\'\'-{f"""*{f"+{f'.{x}.'}+"}*"""}-\'\'\'''') + self.check_ast_roundtrip('''f\'\'\'-{f"""*{f"+{f'.{x}.'}+"}*"""}-'single quote\\'\'\'\'''') + self.check_ast_roundtrip('f"""{\'\'\'\n\'\'\'}"""') + self.check_ast_roundtrip('f"""{g(\'\'\'\n\'\'\')}"""') + self.check_ast_roundtrip('''f"a\\r\\nb"''') + self.check_ast_roundtrip('''f"\\u2028{'x'}"''') def test_strings(self): self.check_ast_roundtrip("u'foo'") @@ -311,6 +323,9 @@ class UnparseTestCase(ASTTestCase): ) ) + def test_invalid_fstring_backslash(self): + self.check_invalid(ast.FormattedValue(value=ast.Constant(value="\\\\"))) + def test_invalid_set(self): self.check_invalid(ast.Set(elts=[])) @@ -330,8 +345,8 @@ class UnparseTestCase(ASTTestCase): '\r\\r\t\\t\n\\n', '""">>> content = \"\"\"blabla\"\"\" <<<"""', r'foo\n\x00', - '🐍⛎𩸽üéş^\N{LONG RIGHTWARDS SQUIGGLE ARROW}' - + "' \\'\\'\\'\"\"\" \"\"\\'\\' \\'", + '🐍⛎𩸽üéş^\\\\X\\\\BB\N{LONG RIGHTWARDS SQUIGGLE ARROW}' ) for docstring in docstrings: # check as Module docstrings for easy testing @@ -416,7 +431,6 @@ class CosmeticTestCase(ASTTestCase): self.check_src_roundtrip("call((yield x))") self.check_src_roundtrip("return x + (yield x)") - def test_class_bases_and_keywords(self): self.check_src_roundtrip("class X:\n pass") self.check_src_roundtrip("class X(A):\n pass") @@ -429,6 +443,13 @@ class CosmeticTestCase(ASTTestCase): self.check_src_roundtrip("class X(*args):\n pass") self.check_src_roundtrip("class X(*args, **kwargs):\n pass") + def test_fstrings(self): + self.check_src_roundtrip('''f\'\'\'-{f"""*{f"+{f'.{x}.'}+"}*"""}-\'\'\'''') + self.check_src_roundtrip('''f"\\u2028{'x'}"''') + self.check_src_roundtrip(r"f'{x}\n'") + self.check_src_roundtrip('''f''\'{"""\n"""}\\n''\'''') + self.check_src_roundtrip('''f''\'{f"""{x}\n"""}\\n''\'''') + def test_docstrings(self): docstrings = ( '"""simple doc string"""', @@ -443,6 +464,10 @@ class CosmeticTestCase(ASTTestCase): '""""""', '"""\'\'\'"""', '"""\'\'\'\'\'\'"""', + '"""🐍⛎𩸽üéş^\\\\X\\\\BB⟿"""', + '"""end in single \'quote\'"""', + "'''end in double \"quote\"'''", + '"""almost end in double "quote"."""', ) for prefix in docstring_prefixes: @@ -483,9 +508,8 @@ class DirectoryTestCase(ASTTestCase): lib_dir = pathlib.Path(__file__).parent / ".." test_directories = (lib_dir, lib_dir / "test") - skip_files = {"test_fstring.py"} run_always_files = {"test_grammar.py", "test_syntax.py", "test_compile.py", - "test_ast.py", "test_asdl_parser.py"} + "test_ast.py", "test_asdl_parser.py", "test_fstring.py"} _files_to_test = None @@ -525,14 +549,6 @@ class DirectoryTestCase(ASTTestCase): if test.support.verbose: print(f"Testing {item.absolute()}") - # Some f-strings are not correctly round-tripped by - # Tools/parser/unparse.py. See issue 28002 for details. - # We need to skip files that contain such f-strings. - if item.name in self.skip_files: - if test.support.verbose: - print(f"Skipping {item.absolute()}: see issue 28002") - continue - with self.subTest(filename=item): source = read_pyfile(item) self.check_ast_roundtrip(source) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index cbfa9ba6..b71be549 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1447,6 +1447,18 @@ class HandlerTests(unittest.TestCase): bypass = {'exclude_simple': True, 'exceptions': []} self.assertTrue(_proxy_bypass_macosx_sysconf('test', bypass)) + # Check that invalid prefix lengths are ignored + bypass = { + 'exclude_simple': False, + 'exceptions': [ '10.0.0.0/40', '172.19.10.0/24' ] + } + host = '172.19.10.5' + self.assertTrue(_proxy_bypass_macosx_sysconf(host, bypass), + 'expected bypass of %s to be True' % host) + host = '10.0.1.5' + self.assertFalse(_proxy_bypass_macosx_sysconf(host, bypass), + 'expected bypass of %s to be False' % host) + def check_basic_auth(self, headers, realm): with self.subTest(realm=realm, headers=headers): opener = OpenerDirector() diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py index b1d7a15b..f21bf65f 100644 --- a/Lib/test/test_with.py +++ b/Lib/test/test_with.py @@ -7,7 +7,7 @@ __email__ = "mbland at acm dot org" import sys import unittest from collections import deque -from contextlib import _GeneratorContextManager, contextmanager +from contextlib import _GeneratorContextManager, contextmanager, nullcontext class MockContextManager(_GeneratorContextManager): @@ -641,6 +641,12 @@ class AssignmentTargetTestCase(unittest.TestCase): self.assertEqual(blah.two, 2) self.assertEqual(blah.three, 3) + def testWithExtendedTargets(self): + with nullcontext(range(1, 5)) as (a, *b, c): + self.assertEqual(a, 1) + self.assertEqual(b, [2, 3]) + self.assertEqual(c, 4) + class ExitSwallowsExceptionTestCase(unittest.TestCase): diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index d01649d1..5632b8b5 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -3894,6 +3894,14 @@ class C14NTest(unittest.TestCase): #self.assertEqual(c14n_roundtrip(""), #'') + # Namespace issues + xml = '' + self.assertEqual(c14n_roundtrip(xml), xml) + xml = '' + self.assertEqual(c14n_roundtrip(xml), xml) + xml = '' + self.assertEqual(c14n_roundtrip(xml), xml) + def test_c14n_exclusion(self): xml = textwrap.dedent("""\ diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index b7bc218d..999197a0 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -1855,11 +1855,14 @@ class OtherTests(unittest.TestCase): self.assertEqual(zipf.comment, b"an updated comment") # check that comments are correctly shortened in append mode + # and the file is indeed truncated with zipfile.ZipFile(TESTFN,mode="w") as zipf: zipf.comment = b"original comment that's longer" zipf.writestr("foo.txt", "O, for a Muse of Fire!") + original_zip_size = os.path.getsize(TESTFN) with zipfile.ZipFile(TESTFN,mode="a") as zipf: zipf.comment = b"shorter comment" + self.assertTrue(original_zip_size > os.path.getsize(TESTFN)) with zipfile.ZipFile(TESTFN,mode="r") as zipf: self.assertEqual(zipf.comment, b"shorter comment") diff --git a/Lib/test/test_zoneinfo/test_zoneinfo.py b/Lib/test/test_zoneinfo/test_zoneinfo.py index 85703269..d4704b75 100644 --- a/Lib/test/test_zoneinfo/test_zoneinfo.py +++ b/Lib/test/test_zoneinfo/test_zoneinfo.py @@ -6,7 +6,6 @@ import dataclasses import importlib.metadata import io import json -import lzma import os import pathlib import pickle @@ -20,7 +19,9 @@ from functools import cached_property from . import _support as test_support from ._support import OS_ENV_LOCK, TZPATH_TEST_LOCK, ZoneInfoTestBase +from test.support import import_module +lzma = import_module('lzma') py_zoneinfo, c_zoneinfo = test_support.get_modules() try: diff --git a/Lib/threading.py b/Lib/threading.py index ab29db77..d96d99a7 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -826,8 +826,12 @@ class Thread: # they may be in an invalid state leading to a deadlock or crash. self._started._at_fork_reinit() if is_alive: - self._tstate_lock._at_fork_reinit() - self._tstate_lock.acquire() + # bpo-42350: If the fork happens when the thread is already stopped + # (ex: after threading._shutdown() has been called), _tstate_lock + # is None. Do nothing in this case. + if self._tstate_lock is not None: + self._tstate_lock._at_fork_reinit() + self._tstate_lock.acquire() else: # The thread isn't alive after fork: it doesn't have a tstate # anymore. diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 1067ab6a..2175afcf 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -146,10 +146,10 @@ def _splitdict(tk, v, cut_minus=True, conv=None): class EventType(str, enum.Enum): KeyPress = '2' - Key = KeyPress, + Key = KeyPress KeyRelease = '3' ButtonPress = '4' - Button = ButtonPress, + Button = ButtonPress ButtonRelease = '5' Motion = '6' Enter = '7' @@ -180,13 +180,12 @@ class EventType(str, enum.Enum): Colormap = '32' ClientMessage = '33' # undocumented Mapping = '34' # undocumented - VirtualEvent = '35', # undocumented - Activate = '36', - Deactivate = '37', - MouseWheel = '38', + VirtualEvent = '35' # undocumented + Activate = '36' + Deactivate = '37' + MouseWheel = '38' - def __str__(self): - return self.name + __str__ = str.__str__ class Event: @@ -266,7 +265,7 @@ class Event: 'num', 'delta', 'focus', 'x', 'y', 'width', 'height') return '<%s event%s>' % ( - self.type, + getattr(self.type, 'name', self.type), ''.join(' %s=%s' % (k, attrs[k]) for k in keys if k in attrs) ) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index 1e089747..b8eea254 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -192,6 +192,54 @@ class MiscTest(AbstractTkTest, unittest.TestCase): with self.assertRaises(tkinter.TclError): root.clipboard_get() + def test_event_repr_defaults(self): + e = tkinter.Event() + e.serial = 12345 + e.num = '??' + e.height = '??' + e.keycode = '??' + e.state = 0 + e.time = 123456789 + e.width = '??' + e.x = '??' + e.y = '??' + e.char = '' + e.keysym = '??' + e.keysym_num = '??' + e.type = '100' + e.widget = '??' + e.x_root = '??' + e.y_root = '??' + e.delta = 0 + self.assertEqual(repr(e), '<100 event>') + + def test_event_repr(self): + e = tkinter.Event() + e.serial = 12345 + e.num = 3 + e.focus = True + e.height = 200 + e.keycode = 65 + e.state = 0x30405 + e.time = 123456789 + e.width = 300 + e.x = 10 + e.y = 20 + e.char = 'A' + e.send_event = True + e.keysym = 'Key-A' + e.keysym_num = ord('A') + e.type = tkinter.EventType.Configure + e.widget = '.text' + e.x_root = 1010 + e.y_root = 1020 + e.delta = -1 + self.assertEqual(repr(e), + "") tests_gui = (MiscTest, ) diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index 721e8136..b6f792d6 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -940,7 +940,8 @@ class ScaleTest(AbstractWidgetTest, unittest.TestCase): def test_from(self): widget = self.create() - self.checkFloatParam(widget, 'from', 100, 14.9, 15.1, conv=float_round) + conv = False if get_tk_patchlevel() >= (8, 6, 10) else float_round + self.checkFloatParam(widget, 'from', 100, 14.9, 15.1, conv=conv) def test_label(self): widget = self.create() diff --git a/Lib/tkinter/test/test_ttk/test_extensions.py b/Lib/tkinter/test/test_ttk/test_extensions.py index a45f882b..6937ba1c 100644 --- a/Lib/tkinter/test/test_ttk/test_extensions.py +++ b/Lib/tkinter/test/test_ttk/test_extensions.py @@ -114,7 +114,6 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase): def test_horizontal_range(self): lscale = ttk.LabeledScale(self.root, from_=0, to=10) lscale.pack() - lscale.wait_visibility() lscale.update() linfo_1 = lscale.label.place_info() @@ -144,7 +143,6 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase): def test_variable_change(self): x = ttk.LabeledScale(self.root) x.pack() - x.wait_visibility() x.update() curr_xcoord = x.scale.coords()[0] @@ -187,7 +185,6 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase): def test_resize(self): x = ttk.LabeledScale(self.root) x.pack(expand=True, fill='both') - x.wait_visibility() x.update() width, height = x.master.winfo_width(), x.master.winfo_height() @@ -268,7 +265,6 @@ class OptionMenuTest(AbstractTkTest, unittest.TestCase): # check that variable is updated correctly optmenu.pack() - optmenu.wait_visibility() optmenu['menu'].invoke(0) self.assertEqual(optmenu._variable.get(), items[0]) @@ -299,9 +295,7 @@ class OptionMenuTest(AbstractTkTest, unittest.TestCase): textvar2 = tkinter.StringVar(self.root) optmenu2 = ttk.OptionMenu(self.root, textvar2, default, *items) optmenu.pack() - optmenu.wait_visibility() optmenu2.pack() - optmenu2.wait_visibility() optmenu['menu'].invoke(1) optmenu2['menu'].invoke(2) optmenu_stringvar_name = optmenu['menu'].entrycget(0, 'variable') diff --git a/Lib/tkinter/test/test_ttk/test_functions.py b/Lib/tkinter/test/test_ttk/test_functions.py index f8e69a9f..5c23d6fe 100644 --- a/Lib/tkinter/test/test_ttk/test_functions.py +++ b/Lib/tkinter/test/test_ttk/test_functions.py @@ -137,6 +137,9 @@ class InternalFunctionsTest(unittest.TestCase): result = ttk._format_mapdict(opts) self.assertEqual(result, ('-üñíćódè', 'á vãl')) + self.assertEqual(ttk._format_mapdict({'opt': [('value',)]}), + ('-opt', '{} value')) + # empty states valid = {'opt': [('', '', 'hi')]} self.assertEqual(ttk._format_mapdict(valid), ('-opt', '{ } hi')) @@ -159,10 +162,6 @@ class InternalFunctionsTest(unittest.TestCase): opts = {'a': None} self.assertRaises(TypeError, ttk._format_mapdict, opts) - # items in the value must have size >= 2 - self.assertRaises(IndexError, ttk._format_mapdict, - {'a': [('invalid', )]}) - def test_format_elemcreate(self): self.assertTrue(ttk._format_elemcreate(None), (None, ())) diff --git a/Lib/tkinter/test/test_ttk/test_style.py b/Lib/tkinter/test/test_ttk/test_style.py index 3537536d..38d70d7a 100644 --- a/Lib/tkinter/test/test_ttk/test_style.py +++ b/Lib/tkinter/test/test_ttk/test_style.py @@ -1,11 +1,23 @@ import unittest +import sys import tkinter from tkinter import ttk +from test import support from test.support import requires, run_unittest from tkinter.test.support import AbstractTkTest requires('gui') +CLASS_NAMES = [ + '.', 'ComboboxPopdownFrame', 'Heading', + 'Horizontal.TProgressbar', 'Horizontal.TScale', 'Item', 'Sash', + 'TButton', 'TCheckbutton', 'TCombobox', 'TEntry', + 'TLabelframe', 'TLabelframe.Label', 'TMenubutton', + 'TNotebook', 'TNotebook.Tab', 'Toolbutton', 'TProgressbar', + 'TRadiobutton', 'Treeview', 'TScale', 'TScrollbar', 'TSpinbox', + 'Vertical.TProgressbar', 'Vertical.TScale' +] + class StyleTest(AbstractTkTest, unittest.TestCase): def setUp(self): @@ -23,11 +35,36 @@ class StyleTest(AbstractTkTest, unittest.TestCase): def test_map(self): style = self.style - style.map('TButton', background=[('active', 'background', 'blue')]) - self.assertEqual(style.map('TButton', 'background'), - [('active', 'background', 'blue')] if self.wantobjects else - [('active background', 'blue')]) - self.assertIsInstance(style.map('TButton'), dict) + + # Single state + for states in ['active'], [('active',)]: + with self.subTest(states=states): + style.map('TButton', background=[(*states, 'white')]) + expected = [('active', 'white')] + self.assertEqual(style.map('TButton', 'background'), expected) + m = style.map('TButton') + self.assertIsInstance(m, dict) + self.assertEqual(m['background'], expected) + + # Multiple states + for states in ['pressed', '!disabled'], ['pressed !disabled'], [('pressed', '!disabled')]: + with self.subTest(states=states): + style.map('TButton', background=[(*states, 'black')]) + expected = [('pressed', '!disabled', 'black')] + self.assertEqual(style.map('TButton', 'background'), expected) + m = style.map('TButton') + self.assertIsInstance(m, dict) + self.assertEqual(m['background'], expected) + + # Default state + for states in [], [''], [()]: + with self.subTest(states=states): + style.map('TButton', background=[(*states, 'grey')]) + expected = [('grey',)] + self.assertEqual(style.map('TButton', 'background'), expected) + m = style.map('TButton') + self.assertIsInstance(m, dict) + self.assertEqual(m['background'], expected) def test_lookup(self): @@ -86,6 +123,58 @@ class StyleTest(AbstractTkTest, unittest.TestCase): self.style.theme_use(curr_theme) + def test_configure_custom_copy(self): + style = self.style + + curr_theme = self.style.theme_use() + self.addCleanup(self.style.theme_use, curr_theme) + for theme in self.style.theme_names(): + self.style.theme_use(theme) + for name in CLASS_NAMES: + default = style.configure(name) + if not default: + continue + with self.subTest(theme=theme, name=name): + if support.verbose >= 2: + print('configure', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue + newname = f'C.{name}' + self.assertEqual(style.configure(newname), None) + style.configure(newname, **default) + self.assertEqual(style.configure(newname), default) + for key, value in default.items(): + self.assertEqual(style.configure(newname, key), value) + + + def test_map_custom_copy(self): + style = self.style + + curr_theme = self.style.theme_use() + self.addCleanup(self.style.theme_use, curr_theme) + for theme in self.style.theme_names(): + self.style.theme_use(theme) + for name in CLASS_NAMES: + default = style.map(name) + if not default: + continue + with self.subTest(theme=theme, name=name): + if support.verbose >= 2: + print('map', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue + newname = f'C.{name}' + self.assertEqual(style.map(newname), {}) + style.map(newname, **default) + self.assertEqual(style.map(newname), default) + for key, value in default.items(): + self.assertEqual(style.map(newname, key), value) + + tests_gui = (StyleTest, ) if __name__ == "__main__": diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py index 2598bc67..157ef0e8 100644 --- a/Lib/tkinter/test/test_ttk/test_widgets.py +++ b/Lib/tkinter/test/test_ttk/test_widgets.py @@ -60,11 +60,10 @@ class WidgetTest(AbstractTkTest, unittest.TestCase): super().setUp() self.widget = ttk.Button(self.root, width=0, text="Text") self.widget.pack() - self.widget.wait_visibility() def test_identify(self): - self.widget.update_idletasks() + self.widget.update() self.assertEqual(self.widget.identify( int(self.widget.winfo_width() / 2), int(self.widget.winfo_height() / 2) @@ -326,8 +325,7 @@ class EntryTest(AbstractWidgetTest, unittest.TestCase): def test_identify(self): self.entry.pack() - self.entry.wait_visibility() - self.entry.update_idletasks() + self.entry.update() # bpo-27313: macOS Cocoa widget differs from X, allow either if sys.platform == 'darwin': @@ -437,11 +435,12 @@ class ComboboxTest(EntryTest, unittest.TestCase): def _show_drop_down_listbox(self): width = self.combo.winfo_width() - self.combo.event_generate('', x=width - 5, y=5) - self.combo.event_generate('', x=width - 5, y=5) + x, y = width - 5, 5 + self.assertRegex(self.combo.identify(x, y), r'.*downarrow\Z') + self.combo.event_generate('', x=x, y=y) + self.combo.event_generate('', x=x, y=y) self.combo.update_idletasks() - def test_virtual_event(self): success = [] @@ -449,7 +448,7 @@ class ComboboxTest(EntryTest, unittest.TestCase): self.combo.bind('<>', lambda evt: success.append(True)) self.combo.pack() - self.combo.wait_visibility() + self.combo.update() height = self.combo.winfo_height() self._show_drop_down_listbox() @@ -465,7 +464,7 @@ class ComboboxTest(EntryTest, unittest.TestCase): self.combo['postcommand'] = lambda: success.append(True) self.combo.pack() - self.combo.wait_visibility() + self.combo.update() self._show_drop_down_listbox() self.assertTrue(success) @@ -665,7 +664,6 @@ class PanedWindowTest(AbstractWidgetTest, unittest.TestCase): self.assertRaises(tkinter.TclError, self.paned.sashpos, 1) self.paned.pack(expand=True, fill='both') - self.paned.wait_visibility() curr_pos = self.paned.sashpos(0) self.paned.sashpos(0, 1000) @@ -933,7 +931,7 @@ class NotebookTest(AbstractWidgetTest, unittest.TestCase): self.nb.add(self.child1, text='a') self.nb.pack() - self.nb.wait_visibility() + self.nb.update() if sys.platform == 'darwin': tb_idx = "@20,5" else: @@ -1041,7 +1039,7 @@ class NotebookTest(AbstractWidgetTest, unittest.TestCase): def test_select(self): self.nb.pack() - self.nb.wait_visibility() + self.nb.update() success = [] tab_changed = [] @@ -1084,10 +1082,11 @@ class NotebookTest(AbstractWidgetTest, unittest.TestCase): def test_traversal(self): self.nb.pack() - self.nb.wait_visibility() + self.nb.update() self.nb.select(0) + self.assertEqual(self.nb.identify(5, 5), 'focus') simulate_mouse_click(self.nb, 5, 5) self.nb.focus_force() self.nb.event_generate('') @@ -1102,6 +1101,7 @@ class NotebookTest(AbstractWidgetTest, unittest.TestCase): self.nb.tab(self.child1, text='a', underline=0) self.nb.enable_traversal() self.nb.focus_force() + self.assertEqual(self.nb.identify(5, 5), 'focus') simulate_mouse_click(self.nb, 5, 5) if sys.platform == 'darwin': self.nb.event_generate('') @@ -1132,6 +1132,7 @@ class SpinboxTest(EntryTest, unittest.TestCase): height = self.spin.winfo_height() x = width - 5 y = height//2 - 5 + self.assertRegex(self.spin.identify(x, y), r'.*uparrow\Z') self.spin.event_generate('', x=x, y=y) self.spin.event_generate('', x=x, y=y) self.spin.update_idletasks() @@ -1141,6 +1142,7 @@ class SpinboxTest(EntryTest, unittest.TestCase): height = self.spin.winfo_height() x = width - 5 y = height//2 + 4 + self.assertRegex(self.spin.identify(x, y), r'.*downarrow\Z') self.spin.event_generate('', x=x, y=y) self.spin.event_generate('', x=x, y=y) self.spin.update_idletasks() @@ -1342,7 +1344,6 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase): def test_bbox(self): self.tv.pack() self.assertEqual(self.tv.bbox(''), '') - self.tv.wait_visibility() self.tv.update() item_id = self.tv.insert('', 'end') @@ -1530,13 +1531,15 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase): def test_heading_callback(self): def simulate_heading_click(x, y): + if tcl_version >= (8, 6): + self.assertEqual(self.tv.identify_column(x), '#0') + self.assertEqual(self.tv.identify_region(x, y), 'heading') simulate_mouse_click(self.tv, x, y) self.tv.update() success = [] # no success for now self.tv.pack() - self.tv.wait_visibility() self.tv.heading('#0', command=lambda: success.append(True)) self.tv.column('#0', width=100) self.tv.update() @@ -1784,7 +1787,6 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase): lambda evt: events.append(2)) self.tv.pack() - self.tv.wait_visibility() self.tv.update() pos_y = set() diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index c7c71cd5..968fd54d 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -81,8 +81,6 @@ def _mapdict_values(items): # ['active selected', 'grey', 'focus', [1, 2, 3, 4]] opt_val = [] for *state, val in items: - # hacks for backward compatibility - state[0] # raise IndexError if empty if len(state) == 1: # if it is empty (something that evaluates to False), then # format it to Tcl code to denote the "normal" state @@ -243,19 +241,22 @@ def _script_from_settings(settings): def _list_from_statespec(stuple): """Construct a list from the given statespec tuple according to the accepted statespec accepted by _format_mapdict.""" - nval = [] - for val in stuple: - typename = getattr(val, 'typename', None) - if typename is None: - nval.append(val) - else: # this is a Tcl object + if isinstance(stuple, str): + return stuple + result = [] + it = iter(stuple) + for state, val in zip(it, it): + if hasattr(state, 'typename'): # this is a Tcl object + state = str(state).split() + elif isinstance(state, str): + state = state.split() + elif not isinstance(state, (tuple, list)): + state = (state,) + if hasattr(val, 'typename'): val = str(val) - if typename == 'StateSpec': - val = val.split() - nval.append(val) + result.append((*state, val)) - it = iter(nval) - return [_flatten(spec) for spec in zip(it, it)] + return result def _list_from_layouttuple(tk, ltuple): """Construct a list from the tuple returned by ttk::layout, this is @@ -395,13 +396,12 @@ class Style(object): or something else of your preference. A statespec is compound of one or more states and then a value.""" if query_opt is not None: - return _list_from_statespec(self.tk.splitlist( - self.tk.call(self._name, "map", style, '-%s' % query_opt))) + result = self.tk.call(self._name, "map", style, '-%s' % query_opt) + return _list_from_statespec(self.tk.splitlist(result)) - return _splitdict( - self.tk, - self.tk.call(self._name, "map", style, *_format_mapdict(kw)), - conv=_tclobj_to_py) + result = self.tk.call(self._name, "map", style, *_format_mapdict(kw)) + return {k: _list_from_statespec(self.tk.splitlist(v)) + for k, v in _splitdict(self.tk, result).items()} def lookup(self, style, option, state=None, default=None): diff --git a/Lib/traceback.py b/Lib/traceback.py index a19e3871..fb34de94 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -500,7 +500,6 @@ class TracebackException: _seen=_seen) else: context = None - self.exc_traceback = exc_traceback self.__cause__ = cause self.__context__ = context self.__suppress_context__ = \ @@ -617,7 +616,7 @@ class TracebackException: not self.__suppress_context__): yield from self.__context__.format(chain=chain) yield _context_message - if self.exc_traceback is not None: + if self.stack: yield 'Traceback (most recent call last):\n' - yield from self.stack.format() + yield from self.stack.format() yield from self.format_exception_only() diff --git a/Lib/typing.py b/Lib/typing.py index 39c956dd..f5316ab8 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -160,6 +160,8 @@ def _type_repr(obj): typically enough to uniquely identify a type. For everything else, we fall back on repr(obj). """ + if isinstance(obj, types.GenericAlias): + return repr(obj) if isinstance(obj, type): if obj.__module__ == 'builtins': return obj.__qualname__ @@ -198,6 +200,20 @@ def _check_generic(cls, parameters, elen): f" actual {alen}, expected {elen}") +def _deduplicate(params): + # Weed out strict duplicates, preserving the first of each occurrence. + all_params = set(params) + if len(all_params) < len(params): + new_params = [] + for t in params: + if t in all_params: + new_params.append(t) + all_params.remove(t) + params = new_params + assert not all_params, all_params + return params + + def _remove_dups_flatten(parameters): """An internal helper for Union creation and substitution: flatten Unions among parameters, then remove duplicates. @@ -211,38 +227,45 @@ def _remove_dups_flatten(parameters): params.extend(p[1:]) else: params.append(p) - # Weed out strict duplicates, preserving the first of each occurrence. - all_params = set(params) - if len(all_params) < len(params): - new_params = [] - for t in params: - if t in all_params: - new_params.append(t) - all_params.remove(t) - params = new_params - assert not all_params, all_params + + return tuple(_deduplicate(params)) + + +def _flatten_literal_params(parameters): + """An internal helper for Literal creation: flatten Literals among parameters""" + params = [] + for p in parameters: + if isinstance(p, _LiteralGenericAlias): + params.extend(p.__args__) + else: + params.append(p) return tuple(params) _cleanups = [] -def _tp_cache(func): +def _tp_cache(func=None, /, *, typed=False): """Internal wrapper caching __getitem__ of generic types with a fallback to original function for non-hashable arguments. """ - cached = functools.lru_cache()(func) - _cleanups.append(cached.cache_clear) + def decorator(func): + cached = functools.lru_cache(typed=typed)(func) + _cleanups.append(cached.cache_clear) - @functools.wraps(func) - def inner(*args, **kwds): - try: - return cached(*args, **kwds) - except TypeError: - pass # All real errors (not unhashable args) are raised below. - return func(*args, **kwds) - return inner + @functools.wraps(func) + def inner(*args, **kwds): + try: + return cached(*args, **kwds) + except TypeError: + pass # All real errors (not unhashable args) are raised below. + return func(*args, **kwds) + return inner + + if func is not None: + return decorator(func) + return decorator def _eval_type(t, globalns, localns, recursive_guard=frozenset()): """Evaluate all forward references in the given type t. @@ -315,6 +338,13 @@ class _SpecialForm(_Final, _root=True): def __getitem__(self, parameters): return self._getitem(self, parameters) + +class _LiteralSpecialForm(_SpecialForm, _root=True): + @_tp_cache(typed=True) + def __getitem__(self, parameters): + return self._getitem(self, parameters) + + @_SpecialForm def Any(self, parameters): """Special type indicating an unconstrained type. @@ -432,7 +462,7 @@ def Optional(self, parameters): arg = _type_check(parameters, f"{self} requires a single type.") return Union[arg, type(None)] -@_SpecialForm +@_LiteralSpecialForm def Literal(self, parameters): """Special typing form to define literal types (a.k.a. value types). @@ -456,7 +486,17 @@ def Literal(self, parameters): """ # There is no '_type_check' call because arguments to Literal[...] are # values, not types. - return _GenericAlias(self, parameters) + if not isinstance(parameters, tuple): + parameters = (parameters,) + + parameters = _flatten_literal_params(parameters) + + try: + parameters = tuple(p for p, _ in _deduplicate(list(_value_and_type_iter(parameters)))) + except TypeError: # unhashable parameters + pass + + return _LiteralGenericAlias(self, parameters) class ForwardRef(_Final, _root=True): @@ -879,6 +919,22 @@ class _UnionGenericAlias(_GenericAlias, _root=True): return super().__repr__() +def _value_and_type_iter(parameters): + return ((p, type(p)) for p in parameters) + + +class _LiteralGenericAlias(_GenericAlias, _root=True): + + def __eq__(self, other): + if not isinstance(other, _LiteralGenericAlias): + return NotImplemented + + return set(_value_and_type_iter(self.__args__)) == set(_value_and_type_iter(other.__args__)) + + def __hash__(self): + return hash(frozenset(_value_and_type_iter(self.__args__))) + + class Generic: """Abstract base class for generic types. diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index 2a3d7155..a8c870b9 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -2596,6 +2596,11 @@ def _proxy_bypass_macosx_sysconf(host, proxy_settings): mask = 8 * (m.group(1).count('.') + 1) else: mask = int(mask[1:]) + + if mask < 0 or mask > 32: + # System libraries ignore invalid prefix lengths + continue + mask = 32 - mask if (hostIP >> mask) == (base >> mask): diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index cea91308..6023c1e1 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -550,7 +550,7 @@ def register_standard_browsers(): cmd = "xdg-settings get default-web-browser".split() raw_result = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) result = raw_result.decode().strip() - except (FileNotFoundError, subprocess.CalledProcessError, PermissionError) : + except (FileNotFoundError, subprocess.CalledProcessError, PermissionError, NotADirectoryError) : pass else: global _os_preferred_browser diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index da2bcad0..7a269001 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1876,6 +1876,11 @@ class C14NWriterTarget: self._declared_ns_stack[-1].append((uri, prefix)) return f'{prefix}:{tag}' if prefix else tag, tag, uri + if not uri: + # As soon as a default namespace is defined, + # anything that has no namespace (and thus, no prefix) goes there. + return tag, tag, uri + raise ValueError(f'Namespace "{uri}" is not declared in scope') def data(self, data): diff --git a/Lib/zipfile.py b/Lib/zipfile.py index 915698f9..816f8582 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -1918,6 +1918,8 @@ class ZipFile: centDirSize, centDirOffset, len(self._comment)) self.fp.write(endrec) self.fp.write(self._comment) + if self.mode == "a": + self.fp.truncate() self.fp.flush() def _fpclose(self, fp): diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py index a58b922c..16816d1c 100755 --- a/Mac/BuildScript/build-installer.py +++ b/Mac/BuildScript/build-installer.py @@ -116,7 +116,8 @@ WORKDIR = "/tmp/_py" DEPSRC = os.path.join(WORKDIR, 'third-party') DEPSRC = os.path.expanduser('~/Universal/other-sources') -universal_opts_map = { '32-bit': ('i386', 'ppc',), +universal_opts_map = { 'universal2': ('arm64', 'x86_64'), + '32-bit': ('i386', 'ppc',), '64-bit': ('x86_64', 'ppc64',), 'intel': ('i386', 'x86_64'), 'intel-32': ('i386',), @@ -124,6 +125,7 @@ universal_opts_map = { '32-bit': ('i386', 'ppc',), '3-way': ('ppc', 'i386', 'x86_64'), 'all': ('i386', 'ppc', 'x86_64', 'ppc64',) } default_target_map = { + 'universal2': '10.9', '64-bit': '10.5', '3-way': '10.5', 'intel': '10.5', @@ -151,6 +153,9 @@ DEPTARGET = '10.5' def getDeptargetTuple(): return tuple([int(n) for n in DEPTARGET.split('.')[0:2]]) +def getBuildTuple(): + return tuple([int(n) for n in platform.mac_ver()[0].split('.')[0:2]]) + def getTargetCompilers(): target_cc_map = { '10.4': ('gcc-4.0', 'g++-4.0'), @@ -190,6 +195,34 @@ EXPECTED_SHARED_LIBS = {} def internalTk(): return getDeptargetTuple() >= (10, 6) +# Do we use 8.6.8 when building our own copy +# of Tcl/Tk or a modern version. +# We use the old version when buildin on +# old versions of macOS due to build issues. +def useOldTk(): + return getBuildTuple() < (10, 15) + + +def tweak_tcl_build(basedir, archList): + with open("Makefile", "r") as fp: + contents = fp.readlines() + + # For reasons I don't understand the tcl configure script + # decides that some stdlib symbols aren't present, before + # deciding that strtod is broken. + new_contents = [] + for line in contents: + if line.startswith("COMPAT_OBJS"): + # note: the space before strtod.o is intentional, + # the detection of a broken strtod results in + # "fixstrod.o" on this line. + for nm in ("strstr.o", "strtoul.o", " strtod.o"): + line = line.replace(nm, "") + new_contents.append(line) + + with open("Makefile", "w") as fp: + fp.writelines(new_contents) + # List of names of third party software built with this installer. # The names will be inserted into the rtf version of the License. THIRD_PARTY_LIBS = [] @@ -215,15 +248,33 @@ def library_recipes(): buildrecipe=build_universal_openssl, configure=None, install=None, + patches=[ + "openssl-mac-arm64.patch", + ], ), ]) if internalTk(): + if useOldTk(): + tcl_tk_ver='8.6.8' + tcl_checksum='81656d3367af032e0ae6157eff134f89' + + tk_checksum='5e0faecba458ee1386078fb228d008ba' + tk_patches = ['tk868_on_10_8_10_9.patch'] + + else: + tcl_tk_ver='8.6.10' + tcl_checksum='97c55573f8520bcab74e21bfd8d0aadc' + + tk_checksum='602a47ad9ecac7bf655ada729d140a94' + tk_patches = [ ] + + result.extend([ dict( - name="Tcl 8.6.8", - url="ftp://ftp.tcl.tk/pub/tcl//tcl8_6/tcl8.6.8-src.tar.gz", - checksum='81656d3367af032e0ae6157eff134f89', + name="Tcl %s"%(tcl_tk_ver,), + url="ftp://ftp.tcl.tk/pub/tcl//tcl8_6/tcl%s-src.tar.gz"%(tcl_tk_ver,), + checksum=tcl_checksum, buildDir="unix", configure_pre=[ '--enable-shared', @@ -231,18 +282,17 @@ def library_recipes(): '--libdir=/Library/Frameworks/Python.framework/Versions/%s/lib'%(getVersion(),), ], useLDFlags=False, + buildrecipe=tweak_tcl_build, install='make TCL_LIBRARY=%(TCL_LIBRARY)s && make install TCL_LIBRARY=%(TCL_LIBRARY)s DESTDIR=%(DESTDIR)s'%{ "DESTDIR": shellQuote(os.path.join(WORKDIR, 'libraries')), "TCL_LIBRARY": shellQuote('/Library/Frameworks/Python.framework/Versions/%s/lib/tcl8.6'%(getVersion())), }, ), dict( - name="Tk 8.6.8", - url="ftp://ftp.tcl.tk/pub/tcl//tcl8_6/tk8.6.8-src.tar.gz", - checksum='5e0faecba458ee1386078fb228d008ba', - patches=[ - "tk868_on_10_8_10_9.patch", - ], + name="Tk %s"%(tcl_tk_ver,), + url="ftp://ftp.tcl.tk/pub/tcl//tcl8_6/tk%s-src.tar.gz"%(tcl_tk_ver,), + checksum=tk_checksum, + patches=tk_patches, buildDir="unix", configure_pre=[ '--enable-aqua', @@ -307,9 +357,9 @@ def library_recipes(): ), ), dict( - name="SQLite 3.32.3", - url="https://sqlite.org/2020/sqlite-autoconf-3320300.tar.gz", - checksum='2e3911a3c15e85c2f2d040154bbe5ce3', + name="SQLite 3.33.0", + url="https://sqlite.org/2020/sqlite-autoconf-3330000.tar.gz", + checksum='842a8a100d7b01b09e543deb2b7951dd', extra_cflags=('-Os ' '-DSQLITE_ENABLE_FTS5 ' '-DSQLITE_ENABLE_FTS4 ' @@ -537,8 +587,8 @@ def checkEnvironment(): Check that we're running on a supported system. """ - if sys.version_info[0:2] < (2, 5): - fatal("This script must be run with Python 2.5 (or later)") + if sys.version_info[0:2] < (2, 7): + fatal("This script must be run with Python 2.7 (or later)") if platform.system() != 'Darwin': fatal("This script should be run on a macOS 10.5 (or later) system") @@ -606,9 +656,6 @@ def checkEnvironment(): base_path = base_path + ':' + OLD_DEVELOPER_TOOLS os.environ['PATH'] = base_path print("Setting default PATH: %s"%(os.environ['PATH'])) - # Ensure we have access to sphinx-build. - # You may have to create a link in /usr/bin for it. - runCommand('sphinx-build --version') def parseOptions(args=None): """ @@ -801,6 +848,7 @@ def build_universal_openssl(basedir, archList): arch_opts = { "i386": ["darwin-i386-cc"], "x86_64": ["darwin64-x86_64-cc", "enable-ec_nistp_64_gcc_128"], + "arm64": ["darwin64-arm64-cc"], "ppc": ["darwin-ppc-cc"], "ppc64": ["darwin64-ppc-cc"], } @@ -1567,8 +1615,17 @@ def buildDMG(): if os.path.exists(outdir): shutil.rmtree(outdir) + # We used to use the deployment target as the last characters of the + # installer file name. With the introduction of weaklinked installer + # variants, we may have two variants with the same file name, i.e. + # both ending in '10.9'. To avoid this, we now use the major/minor + # version numbers of the macOS version we are building on, i.e. + # '10.9' as before for 10.9+ variant, '11.0' for universal2 11.0-. + # it's not ideal but should cause the least disruption to packaging + # workflows. + build_system_version = '.'.join(platform.mac_ver()[0].split('.')[0:2]) imagepath = os.path.join(outdir, - 'python-%s-macosx%s'%(getFullVersion(),DEPTARGET)) + 'python-%s-macosx%s'%(getFullVersion(),build_system_version)) if INCLUDE_TIMESTAMP: imagepath = imagepath + '-%04d-%02d-%02d'%(time.localtime()[:3]) imagepath = imagepath + '.dmg' diff --git a/Mac/BuildScript/openssl-mac-arm64.patch b/Mac/BuildScript/openssl-mac-arm64.patch new file mode 100644 index 00000000..11267fb1 --- /dev/null +++ b/Mac/BuildScript/openssl-mac-arm64.patch @@ -0,0 +1,41 @@ +diff -ur openssl-1.1.1g-orig/Configurations/10-main.conf openssl-1.1.1g/Configurations/10-main.conf +--- openssl-1.1.1g-orig/Configurations/10-main.conf 2020-04-21 14:22:39.000000000 +0200 ++++ openssl-1.1.1g/Configurations/10-main.conf 2020-07-26 12:21:32.000000000 +0200 +@@ -1557,6 +1557,14 @@ + bn_ops => "SIXTY_FOUR_BIT_LONG", + perlasm_scheme => "macosx", + }, ++ "darwin64-arm64-cc" => { ++ inherit_from => [ "darwin-common", asm("aarch64_asm") ], ++ CFLAGS => add("-Wall"), ++ cflags => add("-arch arm64"), ++ lib_cppflags => add("-DL_ENDIAN"), ++ bn_ops => "SIXTY_FOUR_BIT_LONG", ++ perlasm_scheme => "ios64", ++ }, + + ##### GNU Hurd + "hurd-x86" => { +diff -ur openssl-1.1.1g-orig/config openssl-1.1.1g/config +--- openssl-1.1.1g-orig/config 2020-04-21 14:22:39.000000000 +0200 ++++ openssl-1.1.1g/config 2020-07-26 12:21:59.000000000 +0200 +@@ -255,6 +255,9 @@ + ;; + x86_64) + echo "x86_64-apple-darwin${VERSION}" ++ ;; ++ arm64) ++ echo "arm64-apple-darwin${VERSION}" + ;; + *) + echo "i686-apple-darwin${VERSION}" +@@ -497,6 +500,9 @@ + else + OUT="darwin64-x86_64-cc" + fi ;; ++ x86_64-apple-darwin*) ++ OUT="darwin64-arm64-cc" ++ ;; + armv6+7-*-iphoneos) + __CNF_CFLAGS="$__CNF_CFLAGS -arch armv6 -arch armv7" + __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch armv6 -arch armv7" diff --git a/Mac/BuildScript/resources/ReadMe.rtf b/Mac/BuildScript/resources/ReadMe.rtf index 9bc96986..2c0c3d5e 100644 --- a/Mac/BuildScript/resources/ReadMe.rtf +++ b/Mac/BuildScript/resources/ReadMe.rtf @@ -3,7 +3,7 @@ \f3\fmodern\fcharset0 CourierNewPSMT;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} -\margl1440\margr1440\vieww13380\viewh14600\viewkind0 +\margl1440\margr1440\vieww13380\viewh14580\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f0\fs24 \cf0 This package will install Python $FULL_VERSION for macOS $MACOSX_DEPLOYMENT_TARGET for the following architecture(s): $ARCHITECTURES.\ @@ -50,7 +50,21 @@ Due to new security checks on macOS 10.15 Catalina, when launching IDLE macOS ma \f0\b0 button to proceed.\ \ -\f1\b \ul Other changes\ +\f1\b \ul macOS 11.0 (Big Sur) and Apple Silicon Mac support [new in 3.9.1]\ + +\f0\b0 \ulnone \ +As of 2020-11, macOS 11.0 (Big Sur) is the latest release of macOS and one of its major features is the support of new Apple Silicon Macs that are based on the ARM64 CPU architecture specification rather than the Intel 64 (x86_64) architecture used previously. There are other changes in Big Sur that affect Python operation regardless of CPU architecture. As of 3.9.1, Python binaries from python.org fully support Big Sur. \ +\ +python.org binaries for macOS have been provided via a downloadable installer that supports the Intel 64 architecture on macOS 10.9 and newer. This installer variant remains the default download for 3.9.1; it will install and run on all Macs that run macOS 10.9 or later, including 11.0 (Big Sur). This variant should run transparently on new Apple Silicon Macs using Apple's Rosetta 2 emulation. \ +\ +Beginning with 3.9.1, we also provide a new "universal2" installer variant that provides universal binaries for both ARM64 and Intel 64 architectures and is also supported on all Macs that support macOS 10.9 or later. Some of the advantages of the new installer variant: native ARM64 code on Apple Silicon Macs should run significantly faster than Rosetta2-emulated code; some operating system functions and options introduced in macOS releases since 10.9 are now exposed when available (primarily in the os module); binary wheels built for use with the current 10.9 variant *should* also work with the new variant; the new installer variant includes Tcl/Tk 8.6.10 rather than 8.6.8.\ +\ +Because of the scope of changes needed to fully support 11.0 and Apple Silicon Macs, the new "universal2" variant should be considered +\f2\i experimental +\f0\i0 in the 3.9.1 release. You may need to upgrade third-party components, like pip, to later versions once they are released. You may experience differences in behavior in IDLE and other Tk-based applications due to using the newer version of Tk. As always, if you encounter problems when using this installer variant, please check {\field{\*\fldinst{HYPERLINK "https://bugs.python.org"}}{\fldrslt https://bugs.python.org}} for existing reports and for opening new issues.\ + +\f1\b \ul \ +Other changes\ \f0\b0 \ulnone \ For other changes in this release, see the diff --git a/Mac/README.rst b/Mac/README.rst index ec7d873d..f3638aa0 100644 --- a/Mac/README.rst +++ b/Mac/README.rst @@ -120,6 +120,8 @@ support ppc (Xcode 4 on 10.6 and later systems). The flavor can be specified using the configure option ``--with-universal-archs=VALUE``. The following values are available: + * ``universal2``: ``arm64``, ``x86_64`` + * ``intel``: ``i386``, ``x86_64`` * ``intel-32``: ``i386`` @@ -155,6 +157,8 @@ following combinations of SDKs and universal-archs flavors are available: * 10.15 and later SDKs support ``intel-64`` only + * 11.0 and later SDKs support ``universal2`` + The makefile for a framework build will also install ``python3.x-32`` binaries when the universal architecture includes at least one 32-bit architecture (that is, for all flavors but ``64-bit`` and ``intel-64``). @@ -352,6 +356,39 @@ A framework install also installs some applications in ``/Applications/Python X. And lastly a framework installation installs files in ``/usr/local/bin``, all of them symbolic links to files in ``/Library/Frameworks/Python.framework/Versions/X.Y/bin``. +Weak linking support +==================== + +The CPython sources support building with the latest SDK while targetting deployment +to macOS 10.9. This is done through weak linking of symbols introduced in macOS +10.10 or later and checking for their availability at runtime. + +This requires the use of Apple's compiler toolchain on macOS 10.13 or later. + +The basic implementation pattern is: + +* ``HAVE_`` is a macro defined (or not) by the configure script + +* ``HAVE__RUNTIME`` is a macro defined in the relevant source + files. This expands to a call to ``__builtin_available`` when using + a new enough Apple compiler, and to a true value otherwise. + +* Use ``HAVE__RUNTIME`` before calling ````. This macro + *must* be used a the sole expression in an if statement:: + + if (HAVE__RUNTIME) { + /* is available */ + } + + Or: + + if (HAVE__RUNTIME) {} else { + /* is not available */ + } + + Using other patterns (such as ``!HAVE__RUNTIME``) is not supported + by Apple's compilers. + Resources ========= diff --git a/Mac/Tools/pythonw.c b/Mac/Tools/pythonw.c index c8bd3ba8..78813e81 100644 --- a/Mac/Tools/pythonw.c +++ b/Mac/Tools/pythonw.c @@ -95,9 +95,6 @@ setup_spawnattr(posix_spawnattr_t* spawnattr) size_t count; cpu_type_t cpu_types[1]; short flags = 0; -#ifdef __LP64__ - int ch; -#endif if ((errno = posix_spawnattr_init(spawnattr)) != 0) { err(2, "posix_spawnattr_int"); @@ -119,10 +116,16 @@ setup_spawnattr(posix_spawnattr_t* spawnattr) #elif defined(__ppc__) cpu_types[0] = CPU_TYPE_POWERPC; + #elif defined(__i386__) cpu_types[0] = CPU_TYPE_X86; + +#elif defined(__arm64__) + cpu_types[0] = CPU_TYPE_ARM64; + #else # error "Unknown CPU" + #endif if (posix_spawnattr_setbinpref_np(spawnattr, count, @@ -220,7 +223,8 @@ main(int argc, char **argv) { /* We're weak-linking to posix-spawnv to ensure that * an executable build on 10.5 can work on 10.4. */ - if (posix_spawn != NULL) { + + if (&posix_spawn != NULL) { posix_spawnattr_t spawnattr = NULL; setup_spawnattr(&spawnattr); diff --git a/Makefile.pre.in b/Makefile.pre.in index 77f91e72..f128444b 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1114,6 +1114,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/cpython/dictobject.h \ $(srcdir)/Include/cpython/fileobject.h \ $(srcdir)/Include/cpython/fileutils.h \ + $(srcdir)/Include/cpython/frameobject.h \ $(srcdir)/Include/cpython/import.h \ $(srcdir)/Include/cpython/initconfig.h \ $(srcdir)/Include/cpython/interpreteridobject.h \ diff --git a/Misc/ACKS b/Misc/ACKS index a16f15a7..12a5ac14 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -70,6 +70,7 @@ Alexandru Ardelean Emmanuel Arias Alicia Arlen Jeffrey Armstrong +Justin Turner Arthur Jason Asbahr David Ascher Ammar Askar @@ -242,6 +243,7 @@ Colm Buckley Erik de Bueger Jan-Hein Bührman Lars Buitinck +Artem Bulgakov Dick Bulterman Bill Bumgarner Jimmy Burgett @@ -377,6 +379,7 @@ Brian Curtin Jason Curtis Hakan Celik Paul Dagnelie +Florian Dahlitz Lisandro Dalcin Darren Dale Andrew Dalke @@ -781,6 +784,7 @@ Meador Inge Peter Ingebretson Tony Ingraldi John Interrante +Dean Inwood Bob Ippolito Roger Irwin Atsuo Ishimoto @@ -851,6 +855,7 @@ Jan Kanis Rafe Kaplan Jacob Kaplan-Moss Allison Kaptur +Yurii Karabas Janne Karila Per Øyvind Karlsen Anton Kasyanov @@ -1939,5 +1944,6 @@ Gennadiy Zlobin Doug Zongker Peter Åstrand Vlad Emelianov +Andrey Doroschenko (Entries should be added in rough alphabetical order by last names) diff --git a/Misc/NEWS b/Misc/NEWS index 81da2bed..03c84f31 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -2,6 +2,438 @@ Python News +++++++++++ +What's New in Python 3.9.1 final? +================================= + +*Release date: 2020-12-07* + +Core and Builtins +----------------- + +- bpo-42576: ``types.GenericAlias`` will now raise a ``TypeError`` when + attempting to initialize with a keyword argument. Previously, this would + cause the interpreter to crash if the interpreter was compiled with debug + symbols. This does not affect interpreters compiled for release. Patch by + Ken Jin. + +Library +------- + +- bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. + Replace the special purpose getallmatchingheaders with generic get_all + method and add relevant tests. + + Original Patch by Martin Panter. Modified by Senthil Kumaran. + +- bpo-17735: :func:`inspect.findsource` now raises :exc:`OSError` instead of + :exc:`IndexError` when :attr:`co_lineno` of a code object is greater than + the file length. This can happen, for example, when a file is edited after + it was imported. PR by Irit Katriel. + +- bpo-42116: Fix handling of trailing comments by :func:`inspect.getsource`. + +- bpo-42487: ChainMap.__iter__ no longer calls __getitem__ on underlying + maps + +- bpo-42482: :class:`~traceback.TracebackException` no longer holds a + reference to the exception's traceback object. Consequently, instances of + TracebackException for equivalent but non-equal exceptions now compare as + equal. + +- bpo-42406: 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. + +- bpo-34215: Clarify the error message for + :exc:`asyncio.IncompleteReadError` when ``expected`` is ``None``. + +- bpo-12800: Extracting a symlink from a tarball should succeed and + overwrite the symlink if it already exists. The fix is to remove the + existing file or symlink before extraction. Based on patch by Chris AtLee, + Jeffrey Kintscher, and Senthil Kumaran. + +Tests +----- + +- bpo-41473: Reenable test_gdb on gdb 9.2 and newer: + https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb + 10.1. + +- bpo-42553: Fix ``test_asyncio.test_call_later()`` race condition: don't + measure asyncio performance in the ``call_later()`` unit test. The test + failed randomly on the CI. + +macOS +----- + +- bpo-41116: If no explicit macOS SDK was specified, setup.py should check + for Tcl and TK frameworks in /Library/Frameworks; the previous commit + inadvertently broke that test. + +- bpo-42504: Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 + +IDLE +---- + +- bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround that + prevented running files with shortcuts when using new universal2 + installers built on macOS 11. + + +What's New in Python 3.9.1 release candidate 1? +=============================================== + +*Release date: 2020-11-24* + +Security +-------- + +- bpo-42103: Prevented potential DoS attack via CPU and RAM exhaustion when + processing malformed Apple Property List files in binary format. + +- bpo-42051: The :mod:`plistlib` module no longer accepts entity + declarations in XML plist files to avoid XML vulnerabilities. This should + not affect users as entity declarations are not used in regular plist + files. + +- bpo-40791: Add ``volatile`` to the accumulator variable in + ``hmac.compare_digest``, making constant-time-defeating optimizations less + likely. + +Core and Builtins +----------------- + +- bpo-41686: On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is + now created even if Python is configured to not install signal handlers + (if :c:member:`PyConfig.install_signal_handlers` equals to 0, or + ``Py_InitializeEx(0)``). + +- bpo-42381: Allow assignment expressions in set literals and set + comprehensions as per PEP 572. Patch by Pablo Galindo. + +- bpo-42374: Fix a regression introduced by the new parser, where an + unparenthesized walrus operator was not allowed within generator + expressions. + +- bpo-42296: On Windows, fix a regression in signal handling which prevented + to interrupt a program using CTRL+C. The signal handler can be run in a + thread different than the Python thread, in which case the test deciding + if the thread can handle signals is wrong. + +- bpo-42332: :class:`types.GenericAlias` objects can now be the targets of + weakrefs. + +- bpo-42218: Fixed a bug in the PEG parser that was causing crashes in debug + mode. Now errors are checked in left-recursive rules to avoid cases where + such errors do not get handled in time and appear as long-distance crashes + in other places. + +- bpo-42214: Fixed a possible crash in the PEG parser when checking for the + '!=' token in the ``barry_as_flufl`` rule. Patch by Pablo Galindo. + +- bpo-42143: Fix handling of errors during creation of ``PyFunctionObject``, + which resulted in operations on uninitialized memory. Patch by Yonatan + Goldschmidt. + +- bpo-41659: 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. + +- bpo-42150: Fix possible buffer overflow in the new parser when checking + for continuation lines. Patch by Pablo Galindo. + +- bpo-42123: Run the parser two times. On the first run, disable all the + rules that only generate better error messages to gain performance. If + there's a parse failure, run the parser a second time with those enabled. + +- bpo-41910: Document the default implementation of `object.__eq__`. + +- bpo-42057: Fix peephole optimizer misoptimize conditional jump + + JUMP_IF_NOT_EXC_MATCH pair. + +- bpo-41984: The garbage collector now tracks all user-defined classes. + Patch by Brandt Bucher. + +- bpo-41993: Fixed potential issues with removing not completely initialized + module from ``sys.modules`` when import fails. + +- bpo-41979: Star-unpacking is now allowed for with item's targets in the + PEG parser. + +- bpo-41909: Fixed stack overflow in :func:`issubclass` and + :func:`isinstance` when getting the ``__bases__`` attribute leads to + infinite recursion. + +- bpo-41894: When loading a native module and a load failure occurs, prevent + a possible UnicodeDecodeError when not running in a UTF-8 locale by + decoding the load error message using the current locale's encoding. + +- bpo-39934: Correctly count control blocks in 'except' in compiler. Ensures + that a syntax error, rather a fatal error, occurs for deeply nested, named + exception handlers. + +Library +------- + +- bpo-42328: Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now + the representation of the default state as empty sequence (as returned by + ``Style.map()``). The structure of the result is now the same on all + platform and does not depend on the value of ``wantobjects``. + +- bpo-42345: Fix various issues with ``typing.Literal`` parameter handling + (flatten, deduplicate, use type to cache key). Patch provided by Yurii + Karabas. + +- bpo-42350: Fix the :class:`threading.Thread` class at fork: do nothing if + the thread is already stopped (ex: fork called at Python exit). + Previously, an error was logged in the child process. + +- bpo-42014: The ``onerror`` callback from ``shutil.rmtree`` now receives + correct function when ``os.open`` fails. + +- bpo-42237: Fix `os.sendfile()` on illumos. + +- bpo-42249: Fixed writing binary Plist files larger than 4 GiB. + +- bpo-35455: On Solaris, :func:`~time.thread_time` is now implemented with + ``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not + always available. Patch by Jakub Kulik. + +- bpo-42233: The :func:`repr` of :mod:`typing` types containing + :ref:`Generic Alias Types ` previously did not show + the parameterized types in the ``GenericAlias``. They have now been + changed to do so. + +- bpo-41754: webbrowser: Ignore *NotADirectoryError* when calling + ``xdg-settings``. + +- bpo-29566: ``binhex.binhex()`` consisently writes macOS 9 line endings. + +- bpo-42183: Fix a stack overflow error for asyncio Task or Future repr(). + + The overflow occurs under some circumstances when a Task or Future + recursively returns itself. + +- bpo-42146: Fix memory leak in :func:`subprocess.Popen` in case an uid + (gid) specified in `user` (`group`, `extra_groups`) overflows `uid_t` + (`gid_t`). + +- bpo-42140: Improve asyncio.wait function to create the futures set just + one time. + +- bpo-42103: :exc:`~plistlib.InvalidFileException` and :exc:`RecursionError` + are now the only errors caused by loading malformed binary Plist file + (previously ValueError and TypeError could be raised in some specific + cases). + +- bpo-41052: Pickling heap types implemented in C with protocols 0 and 1 + raises now an error instead of producing incorrect data. + +- bpo-41491: plistlib: fix parsing XML plists with hexadecimal integer + values + +- bpo-42065: Fix an incorrectly formatted error from + :meth:`_codecs.charmap_decode` when called with a mapped value outside the + range of valid Unicode code points. PR by Max Bernstein. + +- bpo-41966: Fix pickling pure Python :class:`datetime.time` subclasses. + Patch by Dean Inwood. + +- bpo-41976: Fixed a bug that was causing :func:`ctypes.util.find_library` + to return ``None`` when triying to locate a library in an environment when + gcc>=9 is available and ``ldconfig`` is not. Patch by Pablo Galindo + +- bpo-41900: C14N 2.0 serialisation in xml.etree.ElementTree failed for + unprefixed attributes when a default namespace was defined. + +- bpo-41840: Fix a bug in the :mod:`symtable` module that was causing + module-scope global variables to not be reported as both local and global. + Patch by Pablo Galindo. + +- bpo-41831: ``str()`` for the ``type`` attribute of the ``tkinter.Event`` + object always returns now the numeric code returned by Tk instead of the + name of the event type. + +- bpo-41817: fix `tkinter.EventType` Enum so all members are strings, and + none are tuples + +- bpo-41815: Fix SQLite3 segfault when backing up closed database. Patch + contributed by Peter David McCormick. + +- bpo-41316: Fix the :mod:`tarfile` module to write only basename of TAR + file to GZIP compression header. + +- bpo-16936: Allow ``ctypes.wintypes`` to be imported on non-Windows + systems. + +- bpo-40592: :func:`shutil.which` now ignores empty entries in + :envvar:`PATHEXT` instead of treating them as a match. + +- bpo-40550: Fix time-of-check/time-of-action issue in + subprocess.Popen.send_signal. + +- bpo-40492: Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not + writing the output file in the original directory when the program being + profiled changes the working directory. PR by Anthony Sottile. + +- bpo-40105: ZipFile truncates files to avoid corruption when a shorter + comment is provided in append ("a") mode. Patch by Jan Mazur. + +- bpo-27321: Fixed KeyError exception when flattening an email to a string + attempts to replace a non-existent Content-Transfer-Encoding header. + +Documentation +------------- + +- bpo-42153: Fix the URL for the IMAP protocol documents. + +- bpo-42061: Document __format__ functionality for IP addresses. + +- bpo-42010: Clarify that subscription expressions are also valid for + certain :term:`classes ` and :term:`types ` in the standard + library, and for user-defined classes and types if the classmethod + :meth:`__class_getitem__` is provided. + +- bpo-41805: Documented :ref:`generic alias type ` and + :data:`types.GenericAlias`. Also added an entry in glossary for + :term:`generic types `. + +- bpo-41774: In Programming FAQ "Sequences (Tuples/Lists)" section, add "How + do you remove multiple items from a list". + +- bpo-35293: Fix RemovedInSphinx40Warning when building the documentation. + Patch by Dong-hee Na. + +- bpo-41726: Update the refcounts info of ``PyType_FromModuleAndSpec``. + +- bpo-39693: Fix tarfile's extractfile documentation + +- bpo-39416: Document some restrictions on the default string + representations of numeric classes. + +Tests +----- + +- bpo-40754: Include ``_testinternalcapi`` module in Windows installer for + test suite + +- bpo-41739: Fix test_logging.test_race_between_set_target_and_flush(): the + test now waits until all threads complete to avoid leaking running + threads. + +- bpo-41970: Avoid a test failure in ``test_lib2to3`` if the module has + already imported at the time the test executes. Patch by Pablo Galindo. + +- bpo-41944: Tests for CJK codecs no longer call ``eval()`` on content + received via HTTP. + +- bpo-41939: Fix test_site.test_license_exists_at_url(): call + ``urllib.request.urlcleanup()`` to reset the global + ``urllib.request._opener``. Patch by Victor Stinner. + +- bpo-41561: test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is + not available + +- bpo-41602: Add tests for SIGINT handling in the runpy module. + +- bpo-41306: Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening + when executing the test with Tk 8.6.10. + +Build +----- + +- bpo-42398: Fix a race condition in "make regen-all" when make -jN option + is used to run jobs in parallel. The clinic.py script now only use atomic + write to write files. Moveover, generated files are now left unchanged if + the content does not change, to not change the file modification time. + +- bpo-41617: Fix building ``pycore_bitutils.h`` internal header on old clang + version without ``__builtin_bswap16()`` (ex: Xcode 4.6.3 on Mac OS X + 10.7). Patch by Joshua Root and Victor Stinner. + +- bpo-38249: Update :c:macro:`Py_UNREACHABLE` to use __builtin_unreachable() + if only the compiler is able to use it. Patch by Dong-hee Na. + +- bpo-40998: Addressed three compiler warnings found by undefined behavior + sanitizer (ubsan). + +Windows +------- + +- bpo-42120: Remove macro definition of ``copysign`` (to ``_copysign``) in + headers. + +- bpo-38439: Updates the icons for IDLE in the Windows Store package. + +- bpo-41744: Fixes automatic import of props file when using the Nuget + package. + +- bpo-41557: Update Windows installer to use SQLite 3.33.0. + +- bpo-38324: Avoid Unicode errors when accessing certain locale data on + Windows. + +macOS +----- + +- bpo-41116: Ensure distutils.unixxcompiler.find_library_file can find + system provided libraries on macOS 11. + +- bpo-41100: Add support for macOS 11 and Apple Silicon systems. + + It is now possible to build "Universal 2" binaries using + "--enable-universalsdk --with-universal-archs=universal2". + + Binaries build on later macOS versions can be deployed back to older + versions (tested up to macOS 10.9), when using the correct deployment + target. This is tested using Xcode 11 and later. + +- bpo-38443: The ``--enable-universalsdk`` and ``--with-universal-archs`` + options for the configure script now check that the specified + architectures can be used. + +- bpo-41471: Ignore invalid prefix lengths in system proxy excludes. + +- bpo-41557: Update macOS installer to use SQLite 3.33.0. + +IDLE +---- + +- bpo-42426: Fix reporting offset of the RE error in searchengine. + +- bpo-42415: Get docstrings for IDLE calltips more often by using + inspect.getdoc. + +- bpo-33987: Mostly finish using ttk widgets, mainly for editor, settings, + and searches. Some patches by Mark Roseman. + +- bpo-41775: Use 'IDLE Shell' as shell title + +- bpo-35764: Rewrite the Calltips doc section. + +- bpo-40181: In calltips, stop reminding that '/' marks the end of + positional-only arguments. + +- bpo-40511: Typing opening and closing parentheses inside the parentheses + of a function call will no longer cause unnecessary "flashing" off and on + of an existing open call-tip, e.g. when typed in a string literal. + +- bpo-38439: Add a 256×256 pixel IDLE icon to the Windows .ico file. Created + by Andrew Clover. Remove the low-color gif variations from the .ico file. + +C API +----- + +- bpo-42015: Fix potential crash in deallocating method objects when + dynamically allocated `PyMethodDef`'s lifetime is managed through the + ``self`` argument of a `PyCFunction`. + +- bpo-41986: :c:data:`Py_FileSystemDefaultEncodeErrors` and + :c:data:`Py_UTF8Mode` are available again in limited API. + + What's New in Python 3.9.0 final? ================================= @@ -2907,10 +3339,10 @@ Core and Builtins - bpo-33387: Removed WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY, END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Replaced with RERAISE - and WITH_EXCEPT_FINISH bytecodes. The compiler now generates different - code for exceptional and non-exceptional branches for 'with' and - 'try-except' statements. For 'try-finally' statements the 'finally' block - is replicated for each exit from the 'try' body. + and WITH_EXCEPT_START bytecodes. The compiler now generates different code + for exceptional and non-exceptional branches for 'with' and 'try-except' + statements. For 'try-finally' statements the 'finally' block is replicated + for each exit from the 'try' body. Library ------- diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index 2abfa67c..19c77f4f 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -1,6 +1,8 @@ #include "Python.h" #include "frameobject.h" +#include + #include #ifdef MS_WIN32 #include @@ -18,7 +20,7 @@ CThunkObject_dealloc(PyObject *myself) Py_XDECREF(self->callable); Py_XDECREF(self->restype); if (self->pcl_write) - ffi_closure_free(self->pcl_write); + Py_ffi_closure_free(self->pcl_write); PyObject_GC_Del(self); } @@ -361,8 +363,7 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable, assert(CThunk_CheckExact((PyObject *)p)); - p->pcl_write = ffi_closure_alloc(sizeof(ffi_closure), - &p->pcl_exec); + p->pcl_write = Py_ffi_closure_alloc(sizeof(ffi_closure), &p->pcl_exec); if (p->pcl_write == NULL) { PyErr_NoMemory(); goto error; @@ -408,13 +409,42 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable, "ffi_prep_cif failed with %d", result); goto error; } -#if defined(X86_DARWIN) || defined(POWERPC_DARWIN) - result = ffi_prep_closure(p->pcl_write, &p->cif, closure_fcn, p); +#if HAVE_FFI_PREP_CLOSURE_LOC +# if USING_APPLE_OS_LIBFFI +# define HAVE_FFI_PREP_CLOSURE_LOC_RUNTIME __builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *) +# else +# define HAVE_FFI_PREP_CLOSURE_LOC_RUNTIME 1 +# endif + if (HAVE_FFI_PREP_CLOSURE_LOC_RUNTIME) { + result = ffi_prep_closure_loc(p->pcl_write, &p->cif, closure_fcn, + p, + p->pcl_exec); + } else +#endif + { +#if USING_APPLE_OS_LIBFFI && defined(__arm64__) + PyErr_Format(PyExc_NotImplementedError, "ffi_prep_closure_loc() is missing"); + goto error; #else - result = ffi_prep_closure_loc(p->pcl_write, &p->cif, closure_fcn, - p, - p->pcl_exec); +#if defined(__clang__) || defined(MACOSX) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif +#if defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif + result = ffi_prep_closure(p->pcl_write, &p->cif, closure_fcn, p); + +#if defined(__clang__) || defined(MACOSX) + #pragma clang diagnostic pop +#endif +#if defined(__GNUC__) + #pragma GCC diagnostic pop +#endif + +#endif + } if (result != FFI_OK) { PyErr_Format(PyExc_RuntimeError, "ffi_prep_closure failed with %d", result); diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 6030cc3d..b0a36a30 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -57,6 +57,8 @@ #include "Python.h" #include "structmember.h" // PyMemberDef +#include + #ifdef MS_WIN32 #include #include @@ -64,6 +66,10 @@ #include "ctypes_dlfcn.h" #endif +#ifdef __APPLE__ +#include +#endif + #ifdef MS_WIN32 #include #endif @@ -812,7 +818,8 @@ static int _call_function_pointer(int flags, ffi_type **atypes, ffi_type *restype, void *resmem, - int argcount) + int argcount, + int argtypecount) { PyThreadState *_save = NULL; /* For Py_BLOCK_THREADS and Py_UNBLOCK_THREADS */ PyObject *error_object = NULL; @@ -835,14 +842,70 @@ static int _call_function_pointer(int flags, if ((flags & FUNCFLAG_CDECL) == 0) cc = FFI_STDCALL; #endif - if (FFI_OK != ffi_prep_cif(&cif, - cc, - argcount, - restype, - atypes)) { - PyErr_SetString(PyExc_RuntimeError, - "ffi_prep_cif failed"); - return -1; + +# if USING_APPLE_OS_LIBFFI +# define HAVE_FFI_PREP_CIF_VAR_RUNTIME __builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *) +# elif HAVE_FFI_PREP_CIF_VAR +# define HAVE_FFI_PREP_CIF_VAR_RUNTIME true +# else +# define HAVE_FFI_PREP_CIF_VAR_RUNTIME false +# endif + + /* Even on Apple-arm64 the calling convention for variadic functions conincides + * with the standard calling convention in the case that the function called + * only with its fixed arguments. Thus, we do not need a special flag to be + * set on variadic functions. We treat a function as variadic if it is called + * with a nonzero number of variadic arguments */ + bool is_variadic = (argtypecount != 0 && argcount > argtypecount); + (void) is_variadic; + +#if defined(__APPLE__) && defined(__arm64__) + if (is_variadic) { + if (HAVE_FFI_PREP_CIF_VAR_RUNTIME) { + } else { + PyErr_SetString(PyExc_NotImplementedError, "ffi_prep_cif_var() is missing"); + return -1; + } + } +#endif + +#if HAVE_FFI_PREP_CIF_VAR + if (is_variadic) { + if (HAVE_FFI_PREP_CIF_VAR_RUNTIME) { + if (FFI_OK != ffi_prep_cif_var(&cif, + cc, + argtypecount, + argcount, + restype, + atypes)) { + PyErr_SetString(PyExc_RuntimeError, + "ffi_prep_cif_var failed"); + return -1; + } + } else { + if (FFI_OK != ffi_prep_cif(&cif, + cc, + argcount, + restype, + atypes)) { + PyErr_SetString(PyExc_RuntimeError, + "ffi_prep_cif failed"); + return -1; + } + } + } else +#endif + + { + if (FFI_OK != ffi_prep_cif(&cif, + cc, + argcount, + restype, + atypes)) { + PyErr_SetString(PyExc_RuntimeError, + "ffi_prep_cif failed"); + return -1; + } } if (flags & (FUNCFLAG_USE_ERRNO | FUNCFLAG_USE_LASTERROR)) { @@ -1212,9 +1275,8 @@ PyObject *_ctypes_callproc(PPROC pProc, if (-1 == _call_function_pointer(flags, pProc, avalues, atypes, rtype, resbuf, - Py_SAFE_DOWNCAST(argcount, - Py_ssize_t, - int))) + Py_SAFE_DOWNCAST(argcount, Py_ssize_t, int), + Py_SAFE_DOWNCAST(argtype_count, Py_ssize_t, int))) goto cleanup; #ifdef WORDS_BIGENDIAN @@ -1398,6 +1460,42 @@ copy_com_pointer(PyObject *self, PyObject *args) } #else +#ifdef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH +static PyObject *py_dyld_shared_cache_contains_path(PyObject *self, PyObject *args) +{ + PyObject *name, *name2; + char *name_str; + + if (__builtin_available(macOS 11.0, iOS 14.0, tvOS 14.0, watchOS 7.0, *)) { + int r; + + if (!PyArg_ParseTuple(args, "O", &name)) + return NULL; + + if (name == Py_None) + Py_RETURN_FALSE; + + if (PyUnicode_FSConverter(name, &name2) == 0) + return NULL; + name_str = PyBytes_AS_STRING(name2); + + r = _dyld_shared_cache_contains_path(name_str); + Py_DECREF(name2); + + if (r) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + + } else { + PyErr_SetString(PyExc_NotImplementedError, "_dyld_shared_cache_contains_path symbol is missing"); + return NULL; + } + + } +#endif + static PyObject *py_dl_open(PyObject *self, PyObject *args) { PyObject *name, *name2; @@ -1887,6 +1985,8 @@ buffer_info(PyObject *self, PyObject *arg) return Py_BuildValue("siN", dict->format, dict->ndim, shape); } + + PyMethodDef _ctypes_module_methods[] = { {"get_errno", get_errno, METH_NOARGS}, {"set_errno", set_errno, METH_VARARGS}, @@ -1908,6 +2008,9 @@ PyMethodDef _ctypes_module_methods[] = { "dlopen(name, flag={RTLD_GLOBAL|RTLD_LOCAL}) open a shared library"}, {"dlclose", py_dl_close, METH_VARARGS, "dlclose a library"}, {"dlsym", py_dl_sym, METH_VARARGS, "find symbol in shared library"}, +#endif +#ifdef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH + {"_dyld_shared_cache_contains_path", py_dyld_shared_cache_contains_path, METH_VARARGS, "check if path is in the shared cache"}, #endif {"alignment", align_func, METH_O, alignment_doc}, {"sizeof", sizeof_func, METH_O, sizeof_doc}, diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index a72682d7..2261a59e 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -684,7 +684,11 @@ i_get_sw(void *ptr, Py_ssize_t size) return PyLong_FromLong(val); } -#ifdef MS_WIN32 +#ifndef MS_WIN32 +/* http://msdn.microsoft.com/en-us/library/cc237864.aspx */ +#define VARIANT_FALSE 0x0000 +#define VARIANT_TRUE 0xFFFF +#endif /* short BOOL - VARIANT_BOOL */ static PyObject * vBOOL_set(void *ptr, PyObject *value, Py_ssize_t size) @@ -706,7 +710,6 @@ vBOOL_get(void *ptr, Py_ssize_t size) { return PyBool_FromLong((long)*(short int *)ptr); } -#endif static PyObject * bool_set(void *ptr, PyObject *value, Py_ssize_t size) @@ -1538,8 +1541,8 @@ static struct fielddesc formattable[] = { #endif #ifdef MS_WIN32 { 'X', BSTR_set, BSTR_get, &ffi_type_pointer}, - { 'v', vBOOL_set, vBOOL_get, &ffi_type_sshort}, #endif + { 'v', vBOOL_set, vBOOL_get, &ffi_type_sshort}, #if SIZEOF__BOOL == 1 { '?', bool_set, bool_get, &ffi_type_uchar}, /* Also fallback for no native _Bool support */ #elif SIZEOF__BOOL == SIZEOF_SHORT diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h index 1effccf9..3f20031d 100644 --- a/Modules/_ctypes/ctypes.h +++ b/Modules/_ctypes/ctypes.h @@ -366,6 +366,14 @@ PyObject *_ctypes_get_errobj(int **pspace); extern PyObject *ComError; #endif +#if USING_MALLOC_CLOSURE_DOT_C +void Py_ffi_closure_free(void *p); +void *Py_ffi_closure_alloc(size_t size, void** codeloc); +#else +#define Py_ffi_closure_free ffi_closure_free +#define Py_ffi_closure_alloc ffi_closure_alloc +#endif + /* Local Variables: compile-command: "python setup.py -q build install --home ~" diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c index f9cdb336..4f220e42 100644 --- a/Modules/_ctypes/malloc_closure.c +++ b/Modules/_ctypes/malloc_closure.c @@ -89,16 +89,27 @@ static void more_core(void) /******************************************************************/ /* put the item back into the free list */ -void ffi_closure_free(void *p) +void Py_ffi_closure_free(void *p) { +#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC + if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) { + ffi_closure_free(p); + return; + } +#endif ITEM *item = (ITEM *)p; item->next = free_list; free_list = item; } /* return one item from the free list, allocating more if needed */ -void *ffi_closure_alloc(size_t ignored, void** codeloc) +void *Py_ffi_closure_alloc(size_t size, void** codeloc) { +#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC + if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) { + return ffi_closure_alloc(size, codeloc); + } +#endif ITEM *item; if (!free_list) more_core(); diff --git a/Modules/_decimal/libmpdec/mpdecimal.h b/Modules/_decimal/libmpdec/mpdecimal.h index 2815a8cd..5a243969 100644 --- a/Modules/_decimal/libmpdec/mpdecimal.h +++ b/Modules/_decimal/libmpdec/mpdecimal.h @@ -121,6 +121,9 @@ const char *mpd_version(void); #elif defined(__x86_64__) #define CONFIG_64 #define ASM + #elif defined(__arm64__) + #define CONFIG_64 + #define ANSI #else #error "unknown architecture for universal build." #endif diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 0819d0e1..2e353bba 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -144,6 +144,7 @@ locale_is_ascii(const char *str) static int locale_decode_monetary(PyObject *dict, struct lconv *lc) { +#ifndef MS_WINDOWS int change_locale; change_locale = (!locale_is_ascii(lc->int_curr_symbol) || !locale_is_ascii(lc->currency_symbol) @@ -179,12 +180,18 @@ locale_decode_monetary(PyObject *dict, struct lconv *lc) } } +#define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL) +#else /* MS_WINDOWS */ +/* Use _W_* fields of Windows struct lconv */ +#define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1) +#endif /* MS_WINDOWS */ + int res = -1; #define RESULT_STRING(ATTR) \ do { \ PyObject *obj; \ - obj = PyUnicode_DecodeLocale(lc->ATTR, NULL); \ + obj = GET_LOCALE_STRING(ATTR); \ if (obj == NULL) { \ goto done; \ } \ @@ -200,14 +207,17 @@ locale_decode_monetary(PyObject *dict, struct lconv *lc) RESULT_STRING(mon_decimal_point); RESULT_STRING(mon_thousands_sep); #undef RESULT_STRING +#undef GET_LOCALE_STRING res = 0; done: +#ifndef MS_WINDOWS if (loc != NULL) { setlocale(LC_CTYPE, oldloc); } PyMem_Free(oldloc); +#endif return res; } @@ -243,9 +253,15 @@ PyLocale_localeconv(PyObject* self, PyObject *Py_UNUSED(ignored)) Py_DECREF(obj); \ } while (0) +#ifdef MS_WINDOWS +/* Use _W_* fields of Windows struct lconv */ +#define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1) +#else +#define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL) +#endif #define RESULT_STRING(s)\ do { \ - x = PyUnicode_DecodeLocale(lc->s, NULL); \ + x = GET_LOCALE_STRING(s); \ RESULT(#s, x); \ } while (0) @@ -274,8 +290,10 @@ PyLocale_localeconv(PyObject* self, PyObject *Py_UNUSED(ignored)) RESULT_INT(n_sign_posn); /* Numeric information: LC_NUMERIC encoding */ - PyObject *decimal_point, *thousands_sep; + PyObject *decimal_point = NULL, *thousands_sep = NULL; if (_Py_GetLocaleconvNumeric(lc, &decimal_point, &thousands_sep) < 0) { + Py_XDECREF(decimal_point); + Py_XDECREF(thousands_sep); goto failed; } @@ -304,6 +322,7 @@ PyLocale_localeconv(PyObject* self, PyObject *Py_UNUSED(ignored)) #undef RESULT #undef RESULT_STRING #undef RESULT_INT +#undef GET_LOCALE_STRING } #if defined(HAVE_WCSCOLL) diff --git a/Modules/_operator.c b/Modules/_operator.c index 8a54829e..6f8f68f4 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -735,7 +735,7 @@ _tscmp(const unsigned char *a, const unsigned char *b, volatile const unsigned char *left; volatile const unsigned char *right; Py_ssize_t i; - unsigned char result; + volatile unsigned char result; /* loop count depends on length of b */ length = len_b; diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index 5d1691ac..5356417d 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -626,7 +626,7 @@ subprocess_fork_exec(PyObject* self, PyObject *args) uid_t uid; gid_t gid, *groups = NULL; int child_umask; - PyObject *cwd_obj, *cwd_obj2; + PyObject *cwd_obj, *cwd_obj2 = NULL; const char *cwd; pid_t pid; int need_to_reenable_gc = 0; @@ -748,7 +748,6 @@ subprocess_fork_exec(PyObject* self, PyObject *args) cwd = PyBytes_AsString(cwd_obj2); } else { cwd = NULL; - cwd_obj2 = NULL; } if (groups_list != Py_None) { @@ -908,6 +907,7 @@ subprocess_fork_exec(PyObject* self, PyObject *args) return PyLong_FromPid(pid); cleanup: + Py_XDECREF(cwd_obj2); if (envp) _Py_FreeCharPArray(envp); if (argv) diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c index 1b01491b..a402b937 100644 --- a/Modules/_randommodule.c +++ b/Modules/_randommodule.c @@ -537,29 +537,12 @@ random_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } -/*[clinic input] - -_random.Random.__reduce__ - -[clinic start generated code]*/ - -static PyObject * -_random_Random___reduce___impl(RandomObject *self) -/*[clinic end generated code: output=ddea0dcdb60ffd6d input=bd38ec35fd157e0f]*/ -{ - PyErr_Format(PyExc_TypeError, - "cannot pickle %s object", - Py_TYPE(self)->tp_name); - return NULL; -} - static PyMethodDef random_methods[] = { _RANDOM_RANDOM_RANDOM_METHODDEF _RANDOM_RANDOM_SEED_METHODDEF _RANDOM_RANDOM_GETSTATE_METHODDEF _RANDOM_RANDOM_SETSTATE_METHODDEF _RANDOM_RANDOM_GETRANDBITS_METHODDEF - _RANDOM_RANDOM___REDUCE___METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 28796b37..7bdde452 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -899,6 +899,7 @@ _ssl_configure_hostname(PySSLSocket *self, const char* server_hostname) if (ip == NULL) { if (!SSL_set_tlsext_host_name(self->ssl, server_hostname)) { _setSSLError(NULL, 0, __FILE__, __LINE__); + goto error; } } if (self->ctx->check_hostname) { diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index b2d070cf..54c1e62a 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -3629,6 +3629,25 @@ with_tp_del(PyObject *self, PyObject *args) return obj; } +static PyObject * +without_gc(PyObject *Py_UNUSED(self), PyObject *obj) +{ + PyTypeObject *tp = (PyTypeObject*)obj; + if (!PyType_Check(obj) || !PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE)) { + return PyErr_Format(PyExc_TypeError, "heap type expected, got %R", obj); + } + if (PyType_IS_GC(tp)) { + // Don't try this at home, kids: + tp->tp_flags -= Py_TPFLAGS_HAVE_GC; + tp->tp_free = PyObject_Del; + tp->tp_traverse = NULL; + tp->tp_clear = NULL; + } + assert(!PyType_IS_GC(tp)); + Py_INCREF(obj); + return obj; +} + static PyMethodDef ml; static PyObject * @@ -5535,6 +5554,7 @@ static PyMethodDef TestMethods[] = { {"meth_fastcall", (PyCFunction)(void(*)(void))meth_fastcall, METH_FASTCALL}, {"meth_fastcall_keywords", (PyCFunction)(void(*)(void))meth_fastcall_keywords, METH_FASTCALL|METH_KEYWORDS}, {"pynumber_tobase", pynumber_tobase, METH_VARARGS}, + {"without_gc", without_gc, METH_O}, {NULL, NULL} /* sentinel */ }; diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c index fc91622d..04f6c243 100644 --- a/Modules/_tracemalloc.c +++ b/Modules/_tracemalloc.c @@ -1199,7 +1199,7 @@ tracemalloc_copy_trace(_Py_hashtable_t *traces, trace_t *trace = (trace_t *)value; trace_t *trace2 = raw_malloc(sizeof(trace_t)); - if (traces2 == NULL) { + if (trace2 == NULL) { return -1; } *trace2 = *trace; diff --git a/Modules/clinic/_randommodule.c.h b/Modules/clinic/_randommodule.c.h index 0a642dff..a467811d 100644 --- a/Modules/clinic/_randommodule.c.h +++ b/Modules/clinic/_randommodule.c.h @@ -114,21 +114,4 @@ _random_Random_getrandbits(RandomObject *self, PyObject *arg) exit: return return_value; } - -PyDoc_STRVAR(_random_Random___reduce____doc__, -"__reduce__($self, /)\n" -"--\n" -"\n"); - -#define _RANDOM_RANDOM___REDUCE___METHODDEF \ - {"__reduce__", (PyCFunction)_random_Random___reduce__, METH_NOARGS, _random_Random___reduce____doc__}, - -static PyObject * -_random_Random___reduce___impl(RandomObject *self); - -static PyObject * -_random_Random___reduce__(RandomObject *self, PyObject *Py_UNUSED(ignored)) -{ - return _random_Random___reduce___impl(self); -} -/*[clinic end generated code: output=d8a99be3f1192219 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a7feb0c9c8d1b627 input=a9049054013a1b77]*/ diff --git a/Modules/getpath.c b/Modules/getpath.c index a84c8586..40358190 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -923,11 +923,7 @@ static PyStatus calculate_program_macos(wchar_t **abs_path_p) { char execpath[MAXPATHLEN + 1]; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 uint32_t nsexeclength = Py_ARRAY_LENGTH(execpath) - 1; -#else - unsigned long nsexeclength = Py_ARRAY_LENGTH(execpath) - 1; -#endif /* On Mac OS X, if a script uses an interpreter of the form "#!/opt/python2.3/bin/python", the kernel only passes "python" diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 01e8bcbd..12f72f52 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7,18 +7,6 @@ of the compiler used. Different compilers define their own feature test macro, e.g. '_MSC_VER'. */ -#ifdef __APPLE__ - /* - * Step 1 of support for weak-linking a number of symbols existing on - * OSX 10.4 and later, see the comment in the #ifdef __APPLE__ block - * at the end of this file for more information. - */ -# pragma weak lchown -# pragma weak statvfs -# pragma weak fstatvfs - -#endif /* __APPLE__ */ - #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -50,6 +38,127 @@ #include /* needed for ctermid() */ +/* + * A number of APIs are available on macOS from a certain macOS version. + * To support building with a new SDK while deploying to older versions + * the availability test is split into two: + * - HAVE_: The configure check for compile time availability + * - HAVE__RUNTIME: Runtime check for availability + * + * The latter is always true when not on macOS, or when using a compiler + * that does not support __has_builtin (older versions of Xcode). + * + * Due to compiler restrictions there is one valid use of HAVE__RUNTIME: + * if (HAVE__RUNTIME) { ... } + * + * In mixing the test with other tests or using negations will result in compile + * errors. + */ +#if defined(__APPLE__) + +#if defined(__has_builtin) && __has_builtin(__builtin_available) +# define HAVE_FSTATAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_FACCESSAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_FCHMODAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_FCHOWNAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_LINKAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_FDOPENDIR_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_MKDIRAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_RENAMEAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_UNLINKAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_OPENAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_READLINKAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_SYMLINKAT_RUNTIME __builtin_available(macOS 10.10, iOS 8.0, *) +# define HAVE_FUTIMENS_RUNTIME __builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *) +# define HAVE_UTIMENSAT_RUNTIME __builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *) +# define HAVE_PWRITEV_RUNTIME __builtin_available(macOS 11.0, iOS 14.0, tvOS 14.0, watchOS 7.0, *) + +# define HAVE_POSIX_SPAWN_SETSID_RUNTIME __builtin_available(macOS 10.15, *) + +#else /* Xcode 8 or earlier */ + + /* __builtin_available is not present in these compilers, but + * some of the symbols might be weak linked (10.10 SDK or later + * deploying on 10.9. + * + * Fall back to the older style of availability checking for + * symbols introduced in macOS 10.10. + */ + +# ifdef HAVE_FSTATAT +# define HAVE_FSTATAT_RUNTIME (fstatat != NULL) +# endif + +# ifdef HAVE_FACCESSAT +# define HAVE_FACCESSAT_RUNTIME (faccessat != NULL) +# endif + +# ifdef HAVE_FCHMODAT +# define HAVE_FCHMODAT_RUNTIME (fchmodat != NULL) +# endif + +# ifdef HAVE_FCHOWNAT +# define HAVE_FCHOWNAT_RUNTIME (fchownat != NULL) +# endif + +# ifdef HAVE_LINKAT +# define HAVE_LINKAT_RUNTIME (linkat != NULL) +# endif + +# ifdef HAVE_FDOPENDIR +# define HAVE_FDOPENDIR_RUNTIME (fdopendir != NULL) +# endif + +# ifdef HAVE_MKDIRAT +# define HAVE_MKDIRAT_RUNTIME (mkdirat != NULL) +# endif + +# ifdef HAVE_RENAMEAT +# define HAVE_RENAMEAT_RUNTIME (renameat != NULL) +# endif + +# ifdef HAVE_UNLINKAT +# define HAVE_UNLINKAT_RUNTIME (unlinkat != NULL) +# endif + +# ifdef HAVE_OPENAT +# define HAVE_OPENAT_RUNTIME (openat != NULL) +# endif + +# ifdef HAVE_READLINKAT +# define HAVE_READLINKAT_RUNTIME (readlinkat != NULL) +# endif + +# ifdef HAVE_SYMLINKAT +# define HAVE_SYMLINKAT_RUNTIME (symlinkat != NULL) +# endif + +#endif + +#ifdef HAVE_FUTIMESAT +/* Some of the logic for weak linking depends on this assertion */ +# error "HAVE_FUTIMESAT unexpectedly defined" +#endif + +#else +# define HAVE_FSTATAT_RUNTIME 1 +# define HAVE_FACCESSAT_RUNTIME 1 +# define HAVE_FCHMODAT_RUNTIME 1 +# define HAVE_FCHOWNAT_RUNTIME 1 +# define HAVE_LINKAT_RUNTIME 1 +# define HAVE_FDOPENDIR_RUNTIME 1 +# define HAVE_MKDIRAT_RUNTIME 1 +# define HAVE_RENAMEAT_RUNTIME 1 +# define HAVE_UNLINKAT_RUNTIME 1 +# define HAVE_OPENAT_RUNTIME 1 +# define HAVE_READLINKAT_RUNTIME 1 +# define HAVE_SYMLINKAT_RUNTIME 1 +# define HAVE_FUTIMENS_RUNTIME 1 +# define HAVE_UTIMENSAT_RUNTIME 1 +# define HAVE_PWRITEV_RUNTIME 1 +#endif + + #ifdef __cplusplus extern "C" { #endif @@ -2308,6 +2417,10 @@ posix_do_stat(PyObject *module, const char *function_name, path_t *path, STRUCT_STAT st; int result; +#ifdef HAVE_FSTATAT + int fstatat_unavailable = 0; +#endif + #if !defined(MS_WINDOWS) && !defined(HAVE_FSTATAT) && !defined(HAVE_LSTAT) if (follow_symlinks_specified(function_name, follow_symlinks)) return NULL; @@ -2334,15 +2447,27 @@ posix_do_stat(PyObject *module, const char *function_name, path_t *path, else #endif /* HAVE_LSTAT */ #ifdef HAVE_FSTATAT - if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) - result = fstatat(dir_fd, path->narrow, &st, + if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) { + if (HAVE_FSTATAT_RUNTIME) { + result = fstatat(dir_fd, path->narrow, &st, follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); - else + + } else { + fstatat_unavailable = 1; + } + } else #endif /* HAVE_FSTATAT */ result = STAT(path->narrow, &st); #endif /* MS_WINDOWS */ Py_END_ALLOW_THREADS +#ifdef HAVE_FSTATAT + if (fstatat_unavailable) { + argument_unavailable_error("stat", "dir_fd"); + return NULL; + } +#endif + if (result != 0) { return path_error(path); } @@ -2760,6 +2885,10 @@ os_access_impl(PyObject *module, path_t *path, int mode, int dir_fd, int result; #endif +#ifdef HAVE_FACCESSAT + int faccessat_unavailable = 0; +#endif + #ifndef HAVE_FACCESSAT if (follow_symlinks_specified("access", follow_symlinks)) return -1; @@ -2794,17 +2923,40 @@ os_access_impl(PyObject *module, path_t *path, int mode, int dir_fd, if ((dir_fd != DEFAULT_DIR_FD) || effective_ids || !follow_symlinks) { - int flags = 0; - if (!follow_symlinks) - flags |= AT_SYMLINK_NOFOLLOW; - if (effective_ids) - flags |= AT_EACCESS; - result = faccessat(dir_fd, path->narrow, mode, flags); + + if (HAVE_FACCESSAT_RUNTIME) { + int flags = 0; + if (!follow_symlinks) + flags |= AT_SYMLINK_NOFOLLOW; + if (effective_ids) + flags |= AT_EACCESS; + result = faccessat(dir_fd, path->narrow, mode, flags); + } else { + faccessat_unavailable = 1; + } } else #endif result = access(path->narrow, mode); Py_END_ALLOW_THREADS + +#ifdef HAVE_FACCESSAT + if (faccessat_unavailable) { + if (dir_fd != DEFAULT_DIR_FD) { + argument_unavailable_error("access", "dir_fd"); + return -1; + } + if (follow_symlinks_specified("access", follow_symlinks)) + return -1; + + if (effective_ids) { + argument_unavailable_error("access", "effective_ids"); + return -1; + } + /* should be unreachable */ + return -1; + } +#endif return_value = !result; #endif @@ -3002,6 +3154,7 @@ os_chmod_impl(PyObject *module, path_t *path, int mode, int dir_fd, #ifdef HAVE_FCHMODAT int fchmodat_nofollow_unsupported = 0; + int fchmodat_unsupported = 0; #endif #if !(defined(HAVE_FCHMODAT) || defined(HAVE_LCHMOD)) @@ -3037,42 +3190,56 @@ os_chmod_impl(PyObject *module, path_t *path, int mode, int dir_fd, if (path->fd != -1) result = fchmod(path->fd, mode); else -#endif +#endif /* HAVE_CHMOD */ #ifdef HAVE_LCHMOD if ((!follow_symlinks) && (dir_fd == DEFAULT_DIR_FD)) result = lchmod(path->narrow, mode); else -#endif +#endif /* HAVE_LCHMOD */ #ifdef HAVE_FCHMODAT if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) { - /* - * fchmodat() doesn't currently support AT_SYMLINK_NOFOLLOW! - * The documentation specifically shows how to use it, - * and then says it isn't implemented yet. - * (true on linux with glibc 2.15, and openindiana 3.x) - * - * Once it is supported, os.chmod will automatically - * support dir_fd and follow_symlinks=False. (Hopefully.) - * Until then, we need to be careful what exception we raise. - */ - result = fchmodat(dir_fd, path->narrow, mode, - follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); - /* - * But wait! We can't throw the exception without allowing threads, - * and we can't do that in this nested scope. (Macro trickery, sigh.) - */ - fchmodat_nofollow_unsupported = - result && - ((errno == ENOTSUP) || (errno == EOPNOTSUPP)) && - !follow_symlinks; + if (HAVE_FCHMODAT_RUNTIME) { + /* + * fchmodat() doesn't currently support AT_SYMLINK_NOFOLLOW! + * The documentation specifically shows how to use it, + * and then says it isn't implemented yet. + * (true on linux with glibc 2.15, and openindiana 3.x) + * + * Once it is supported, os.chmod will automatically + * support dir_fd and follow_symlinks=False. (Hopefully.) + * Until then, we need to be careful what exception we raise. + */ + result = fchmodat(dir_fd, path->narrow, mode, + follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); + /* + * But wait! We can't throw the exception without allowing threads, + * and we can't do that in this nested scope. (Macro trickery, sigh.) + */ + fchmodat_nofollow_unsupported = + result && + ((errno == ENOTSUP) || (errno == EOPNOTSUPP)) && + !follow_symlinks; + } else { + fchmodat_unsupported = 1; + fchmodat_nofollow_unsupported = 1; + + result = -1; + } } else -#endif +#endif /* HAVE_FHCMODAT */ result = chmod(path->narrow, mode); Py_END_ALLOW_THREADS if (result) { #ifdef HAVE_FCHMODAT + if (fchmodat_unsupported) { + if (dir_fd != DEFAULT_DIR_FD) { + argument_unavailable_error("chmod", "dir_fd"); + return NULL; + } + } + if (fchmodat_nofollow_unsupported) { if (dir_fd != DEFAULT_DIR_FD) dir_fd_and_follow_symlinks_invalid("chmod", @@ -3082,10 +3249,10 @@ os_chmod_impl(PyObject *module, path_t *path, int mode, int dir_fd, return NULL; } else -#endif +#endif /* HAVE_FCHMODAT */ return path_error(path); } -#endif +#endif /* MS_WINDOWS */ Py_RETURN_NONE; } @@ -3373,6 +3540,10 @@ os_chown_impl(PyObject *module, path_t *path, uid_t uid, gid_t gid, { int result; +#if defined(HAVE_FCHOWNAT) + int fchownat_unsupported = 0; +#endif + #if !(defined(HAVE_LCHOWN) || defined(HAVE_FCHOWNAT)) if (follow_symlinks_specified("chown", follow_symlinks)) return NULL; @@ -3381,19 +3552,6 @@ os_chown_impl(PyObject *module, path_t *path, uid_t uid, gid_t gid, fd_and_follow_symlinks_invalid("chown", path->fd, follow_symlinks)) return NULL; -#ifdef __APPLE__ - /* - * This is for Mac OS X 10.3, which doesn't have lchown. - * (But we still have an lchown symbol because of weak-linking.) - * It doesn't have fchownat either. So there's no possibility - * of a graceful failover. - */ - if ((!follow_symlinks) && (lchown == NULL)) { - follow_symlinks_specified("chown", follow_symlinks); - return NULL; - } -#endif - if (PySys_Audit("os.chown", "OIIi", path->object, uid, gid, dir_fd == DEFAULT_DIR_FD ? -1 : dir_fd) < 0) { return NULL; @@ -3411,14 +3569,28 @@ os_chown_impl(PyObject *module, path_t *path, uid_t uid, gid_t gid, else #endif #ifdef HAVE_FCHOWNAT - if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) + if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) { + if (HAVE_FCHOWNAT_RUNTIME) { result = fchownat(dir_fd, path->narrow, uid, gid, follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); - else + } else { + fchownat_unsupported = 1; + } + } else #endif result = chown(path->narrow, uid, gid); Py_END_ALLOW_THREADS +#ifdef HAVE_FCHOWNAT + if (fchownat_unsupported) { + /* This would be incorrect if the current platform + * doesn't support lchown. + */ + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (result) return path_error(path); @@ -3664,6 +3836,9 @@ os_link_impl(PyObject *module, path_t *src, path_t *dst, int src_dir_fd, #else int result; #endif +#if defined(HAVE_LINKAT) + int linkat_unavailable = 0; +#endif #ifndef HAVE_LINKAT if ((src_dir_fd != DEFAULT_DIR_FD) || (dst_dir_fd != DEFAULT_DIR_FD)) { @@ -3698,15 +3873,43 @@ os_link_impl(PyObject *module, path_t *src, path_t *dst, int src_dir_fd, #ifdef HAVE_LINKAT if ((src_dir_fd != DEFAULT_DIR_FD) || (dst_dir_fd != DEFAULT_DIR_FD) || - (!follow_symlinks)) - result = linkat(src_dir_fd, src->narrow, - dst_dir_fd, dst->narrow, - follow_symlinks ? AT_SYMLINK_FOLLOW : 0); + (!follow_symlinks)) { + + if (HAVE_LINKAT_RUNTIME) { + + result = linkat(src_dir_fd, src->narrow, + dst_dir_fd, dst->narrow, + follow_symlinks ? AT_SYMLINK_FOLLOW : 0); + + } +#ifdef __APPLE__ + else { + if (src_dir_fd == DEFAULT_DIR_FD && dst_dir_fd == DEFAULT_DIR_FD) { + /* See issue 41355: This matches the behaviour of !HAVE_LINKAT */ + result = link(src->narrow, dst->narrow); + } else { + linkat_unavailable = 1; + } + } +#endif + } else #endif /* HAVE_LINKAT */ result = link(src->narrow, dst->narrow); Py_END_ALLOW_THREADS +#ifdef HAVE_LINKAT + if (linkat_unavailable) { + /* Either or both dir_fd arguments were specified */ + if (src_dir_fd != DEFAULT_DIR_FD) { + argument_unavailable_error("link", "src_dir_fd"); + } else { + argument_unavailable_error("link", "dst_dir_fd"); + } + return NULL; + } +#endif + if (result) return path_error2(src, dst); #endif /* MS_WINDOWS */ @@ -3829,6 +4032,7 @@ _posix_listdir(path_t *path, PyObject *list) errno = 0; #ifdef HAVE_FDOPENDIR if (path->fd != -1) { + if (HAVE_FDOPENDIR_RUNTIME) { /* closedir() closes the FD, so we duplicate it */ fd = _Py_dup(path->fd); if (fd == -1) @@ -3839,6 +4043,11 @@ _posix_listdir(path_t *path, PyObject *list) Py_BEGIN_ALLOW_THREADS dirp = fdopendir(fd); Py_END_ALLOW_THREADS + } else { + PyErr_SetString(PyExc_TypeError, + "listdir: path should be string, bytes, os.PathLike or None, not int"); + return NULL; + } } else #endif @@ -4152,6 +4361,9 @@ os_mkdir_impl(PyObject *module, path_t *path, int mode, int dir_fd) /*[clinic end generated code: output=a70446903abe821f input=e965f68377e9b1ce]*/ { int result; +#ifdef HAVE_MKDIRAT + int mkdirat_unavailable = 0; +#endif if (PySys_Audit("os.mkdir", "Oii", path->object, mode, dir_fd == DEFAULT_DIR_FD ? -1 : dir_fd) < 0) { @@ -4168,9 +4380,14 @@ os_mkdir_impl(PyObject *module, path_t *path, int mode, int dir_fd) #else Py_BEGIN_ALLOW_THREADS #if HAVE_MKDIRAT - if (dir_fd != DEFAULT_DIR_FD) + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_MKDIRAT_RUNTIME) { result = mkdirat(dir_fd, path->narrow, mode); - else + + } else { + mkdirat_unavailable = 1; + } + } else #endif #if defined(__WATCOMC__) && !defined(__QNX__) result = mkdir(path->narrow); @@ -4178,6 +4395,14 @@ os_mkdir_impl(PyObject *module, path_t *path, int mode, int dir_fd) result = mkdir(path->narrow, mode); #endif Py_END_ALLOW_THREADS + +#if HAVE_MKDIRAT + if (mkdirat_unavailable) { + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (result < 0) return path_error(path); #endif /* MS_WINDOWS */ @@ -4287,6 +4512,10 @@ internal_rename(path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd, int is const char *function_name = is_replace ? "replace" : "rename"; int dir_fd_specified; +#ifdef HAVE_RENAMEAT + int renameat_unavailable = 0; +#endif + #ifdef MS_WINDOWS BOOL result; int flags = is_replace ? MOVEFILE_REPLACE_EXISTING : 0; @@ -4326,13 +4555,25 @@ internal_rename(path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd, int is Py_BEGIN_ALLOW_THREADS #ifdef HAVE_RENAMEAT - if (dir_fd_specified) - result = renameat(src_dir_fd, src->narrow, dst_dir_fd, dst->narrow); - else + if (dir_fd_specified) { + if (HAVE_RENAMEAT_RUNTIME) { + result = renameat(src_dir_fd, src->narrow, dst_dir_fd, dst->narrow); + } else { + renameat_unavailable = 1; + } + } else #endif result = rename(src->narrow, dst->narrow); Py_END_ALLOW_THREADS + +#ifdef HAVE_RENAMEAT + if (renameat_unavailable) { + argument_unavailable_error(function_name, "src_dir_fd and dst_dir_fd"); + return NULL; + } +#endif + if (result) return path_error2(src, dst); #endif @@ -4408,6 +4649,9 @@ os_rmdir_impl(PyObject *module, path_t *path, int dir_fd) /*[clinic end generated code: output=080eb54f506e8301 input=38c8b375ca34a7e2]*/ { int result; +#ifdef HAVE_UNLINKAT + int unlinkat_unavailable = 0; +#endif if (PySys_Audit("os.rmdir", "Oi", path->object, dir_fd == DEFAULT_DIR_FD ? -1 : dir_fd) < 0) { @@ -4420,14 +4664,26 @@ os_rmdir_impl(PyObject *module, path_t *path, int dir_fd) result = !RemoveDirectoryW(path->wide); #else #ifdef HAVE_UNLINKAT - if (dir_fd != DEFAULT_DIR_FD) + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_UNLINKAT_RUNTIME) { result = unlinkat(dir_fd, path->narrow, AT_REMOVEDIR); - else + } else { + unlinkat_unavailable = 1; + result = -1; + } + } else #endif result = rmdir(path->narrow); #endif Py_END_ALLOW_THREADS +#ifdef HAVE_UNLINKAT + if (unlinkat_unavailable) { + argument_unavailable_error("rmdir", "dir_fd"); + return NULL; + } +#endif + if (result) return path_error(path); @@ -4571,6 +4827,9 @@ os_unlink_impl(PyObject *module, path_t *path, int dir_fd) /*[clinic end generated code: output=621797807b9963b1 input=d7bcde2b1b2a2552]*/ { int result; +#ifdef HAVE_UNLINKAT + int unlinkat_unavailable = 0; +#endif if (PySys_Audit("os.remove", "Oi", path->object, dir_fd == DEFAULT_DIR_FD ? -1 : dir_fd) < 0) { @@ -4584,15 +4843,27 @@ os_unlink_impl(PyObject *module, path_t *path, int dir_fd) result = !Py_DeleteFileW(path->wide); #else #ifdef HAVE_UNLINKAT - if (dir_fd != DEFAULT_DIR_FD) + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_UNLINKAT_RUNTIME) { + result = unlinkat(dir_fd, path->narrow, 0); - else + } else { + unlinkat_unavailable = 1; + } + } else #endif /* HAVE_UNLINKAT */ result = unlink(path->narrow); #endif _Py_END_SUPPRESS_IPH Py_END_ALLOW_THREADS +#ifdef HAVE_UNLINKAT + if (unlinkat_unavailable) { + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (result) return path_error(path); @@ -4763,7 +5034,16 @@ typedef struct { static int utime_dir_fd(utime_t *ut, int dir_fd, const char *path, int follow_symlinks) { -#ifdef HAVE_UTIMENSAT +#if defined(__APPLE__) && defined(HAVE_UTIMENSAT) + if (HAVE_UTIMENSAT_RUNTIME) { + int flags = follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW; + UTIME_TO_TIMESPEC; + return utimensat(dir_fd, path, time, flags); + } else { + errno = ENOSYS; + return -1; + } +#elif defined(HAVE_UTIMENSAT) int flags = follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW; UTIME_TO_TIMESPEC; return utimensat(dir_fd, path, time, flags); @@ -4790,11 +5070,30 @@ static int utime_fd(utime_t *ut, int fd) { #ifdef HAVE_FUTIMENS + + if (HAVE_FUTIMENS_RUNTIME) { + UTIME_TO_TIMESPEC; return futimens(fd, time); -#else + + } else +#ifndef HAVE_FUTIMES + { + /* Not sure if this can happen */ + PyErr_SetString( + PyExc_RuntimeError, + "neither futimens nor futimes are supported" + " on this system"); + return -1; + } +#endif + +#endif +#ifdef HAVE_FUTIMES + { UTIME_TO_TIMEVAL; return futimes(fd, time); + } #endif } @@ -4813,11 +5112,27 @@ static int utime_nofollow_symlinks(utime_t *ut, const char *path) { #ifdef HAVE_UTIMENSAT - UTIME_TO_TIMESPEC; - return utimensat(DEFAULT_DIR_FD, path, time, AT_SYMLINK_NOFOLLOW); -#else + if (HAVE_UTIMENSAT_RUNTIME) { + UTIME_TO_TIMESPEC; + return utimensat(DEFAULT_DIR_FD, path, time, AT_SYMLINK_NOFOLLOW); + } else +#ifndef HAVE_LUTIMES + { + /* Not sure if this can happen */ + PyErr_SetString( + PyExc_RuntimeError, + "neither utimensat nor lutimes are supported" + " on this system"); + return -1; + } +#endif +#endif + +#ifdef HAVE_LUTIMES + { UTIME_TO_TIMEVAL; return lutimes(path, time); + } #endif } @@ -4828,7 +5143,15 @@ utime_nofollow_symlinks(utime_t *ut, const char *path) static int utime_default(utime_t *ut, const char *path) { -#ifdef HAVE_UTIMENSAT +#if defined(__APPLE__) && defined(HAVE_UTIMENSAT) + if (HAVE_UTIMENSAT_RUNTIME) { + UTIME_TO_TIMESPEC; + return utimensat(DEFAULT_DIR_FD, path, time, 0); + } else { + UTIME_TO_TIMEVAL; + return utimes(path, time); + } +#elif defined(HAVE_UTIMENSAT) UTIME_TO_TIMESPEC; return utimensat(DEFAULT_DIR_FD, path, time, 0); #elif defined(HAVE_UTIMES) @@ -5037,9 +5360,10 @@ os_utime_impl(PyObject *module, path_t *path, PyObject *times, PyObject *ns, #endif #if defined(HAVE_FUTIMESAT) || defined(HAVE_UTIMENSAT) - if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) + if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) { result = utime_dir_fd(&utime, dir_fd, path->narrow, follow_symlinks); - else + + } else #endif #if defined(HAVE_FUTIMES) || defined(HAVE_FUTIMENS) @@ -5052,6 +5376,14 @@ os_utime_impl(PyObject *module, path_t *path, PyObject *times, PyObject *ns, Py_END_ALLOW_THREADS +#if defined(__APPLE__) && defined(HAVE_UTIMENSAT) + /* See utime_dir_fd implementation */ + if (result == -1 && errno == ENOSYS) { + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (result < 0) { /* see previous comment about not putting filename in error here */ posix_error(); @@ -5450,6 +5782,9 @@ parse_posix_spawn_flags(PyObject *module, const char *func_name, PyObject *setpg } if (setsid) { +#ifdef HAVE_POSIX_SPAWN_SETSID_RUNTIME + if (HAVE_POSIX_SPAWN_SETSID_RUNTIME) { +#endif #ifdef POSIX_SPAWN_SETSID all_flags |= POSIX_SPAWN_SETSID; #elif defined(POSIX_SPAWN_SETSID_NP) @@ -5458,6 +5793,14 @@ parse_posix_spawn_flags(PyObject *module, const char *func_name, PyObject *setpg argument_unavailable_error(func_name, "setsid"); return -1; #endif + +#ifdef HAVE_POSIX_SPAWN_SETSID_RUNTIME + } else { + argument_unavailable_error(func_name, "setsid"); + return -1; + } +#endif /* HAVE_POSIX_SPAWN_SETSID_RUNTIME */ + } if (setsigmask) { @@ -8068,16 +8411,30 @@ os_readlink_impl(PyObject *module, path_t *path, int dir_fd) #if defined(HAVE_READLINK) char buffer[MAXPATHLEN+1]; ssize_t length; +#ifdef HAVE_READLINKAT + int readlinkat_unavailable = 0; +#endif Py_BEGIN_ALLOW_THREADS #ifdef HAVE_READLINKAT - if (dir_fd != DEFAULT_DIR_FD) - length = readlinkat(dir_fd, path->narrow, buffer, MAXPATHLEN); - else + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_READLINKAT_RUNTIME) { + length = readlinkat(dir_fd, path->narrow, buffer, MAXPATHLEN); + } else { + readlinkat_unavailable = 1; + } + } else #endif length = readlink(path->narrow, buffer, MAXPATHLEN); Py_END_ALLOW_THREADS +#ifdef HAVE_READLINKAT + if (readlinkat_unavailable) { + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (length < 0) { return path_error(path); } @@ -8273,6 +8630,9 @@ os_symlink_impl(PyObject *module, path_t *src, path_t *dst, static int windows_has_symlink_unprivileged_flag = TRUE; #else int result; +#ifdef HAVE_SYMLINKAT + int symlinkat_unavailable = 0; +#endif #endif if (PySys_Audit("os.symlink", "OOi", src->object, dst->object, @@ -8335,14 +8695,25 @@ os_symlink_impl(PyObject *module, path_t *src, path_t *dst, } Py_BEGIN_ALLOW_THREADS -#if HAVE_SYMLINKAT - if (dir_fd != DEFAULT_DIR_FD) - result = symlinkat(src->narrow, dir_fd, dst->narrow); - else +#ifdef HAVE_SYMLINKAT + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_SYMLINKAT_RUNTIME) { + result = symlinkat(src->narrow, dir_fd, dst->narrow); + } else { + symlinkat_unavailable = 1; + } + } else #endif result = symlink(src->narrow, dst->narrow); Py_END_ALLOW_THREADS +#ifdef HAVE_SYMLINKAT + if (symlinkat_unavailable) { + argument_unavailable_error(NULL, "dir_fd"); + return NULL; + } +#endif + if (result) return path_error2(src, dst); #endif @@ -8613,6 +8984,9 @@ os_open_impl(PyObject *module, path_t *path, int flags, int mode, int dir_fd) { int fd; int async_err = 0; +#ifdef HAVE_OPENAT + int openat_unavailable = 0; +#endif #ifdef O_CLOEXEC int *atomic_flag_works = &_Py_open_cloexec_works; @@ -8637,9 +9011,15 @@ os_open_impl(PyObject *module, path_t *path, int flags, int mode, int dir_fd) fd = _wopen(path->wide, flags, mode); #else #ifdef HAVE_OPENAT - if (dir_fd != DEFAULT_DIR_FD) - fd = openat(dir_fd, path->narrow, flags, mode); - else + if (dir_fd != DEFAULT_DIR_FD) { + if (HAVE_OPENAT_RUNTIME) { + fd = openat(dir_fd, path->narrow, flags, mode); + + } else { + openat_unavailable = 1; + fd = -1; + } + } else #endif /* HAVE_OPENAT */ fd = open(path->narrow, flags, mode); #endif /* !MS_WINDOWS */ @@ -8647,6 +9027,13 @@ os_open_impl(PyObject *module, path_t *path, int flags, int mode, int dir_fd) } while (fd < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); _Py_END_SUPPRESS_IPH +#ifdef HAVE_OPENAT + if (openat_unavailable) { + argument_unavailable_error(NULL, "dir_fd"); + return -1; + } +#endif + if (fd < 0) { if (!async_err) PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path->object); @@ -9229,12 +9616,25 @@ os_preadv_impl(PyObject *module, int fd, PyObject *buffers, Py_off_t offset, } while (n < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); #else do { +#ifdef __APPLE__ +/* This entire function will be removed from the module dict when the API + * is not available. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +#pragma clang diagnostic ignored "-Wunguarded-availability-new" +#endif Py_BEGIN_ALLOW_THREADS _Py_BEGIN_SUPPRESS_IPH n = preadv(fd, iov, cnt, offset); _Py_END_SUPPRESS_IPH Py_END_ALLOW_THREADS } while (n < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); + +#ifdef __APPLE__ +#pragma clang diagnostic pop +#endif + #endif iov_cleanup(iov, buf, cnt); @@ -9469,11 +9869,26 @@ done: if (offset >= st.st_size) { return Py_BuildValue("i", 0); } + + // On illumos specifically sendfile() may perform a partial write but + // return -1/an error (in one confirmed case the destination socket + // had a 5 second timeout set and errno was EAGAIN) and it's on the client + // code to check if the offset parameter was modified by sendfile(). + // + // We need this variable to track said change. + off_t original_offset = offset; #endif do { Py_BEGIN_ALLOW_THREADS ret = sendfile(out_fd, in_fd, &offset, count); +#if defined(__sun) && defined(__SVR4) + // This handles illumos-specific sendfile() partial write behavior, + // see a comment above for more details. + if (ret < 0 && offset != original_offset) { + ret = offset - original_offset; + } +#endif Py_END_ALLOW_THREADS } while (ret < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); if (ret < 0) @@ -9841,6 +10256,15 @@ os_pwritev_impl(PyObject *module, int fd, PyObject *buffers, Py_off_t offset, Py_END_ALLOW_THREADS } while (result < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); #else + +#ifdef __APPLE__ +/* This entire function will be removed from the module dict when the API + * is not available. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +#pragma clang diagnostic ignored "-Wunguarded-availability-new" +#endif do { Py_BEGIN_ALLOW_THREADS _Py_BEGIN_SUPPRESS_IPH @@ -9848,6 +10272,11 @@ os_pwritev_impl(PyObject *module, int fd, PyObject *buffers, Py_off_t offset, _Py_END_SUPPRESS_IPH Py_END_ALLOW_THREADS } while (result < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals())); + +#ifdef __APPLE__ +#pragma clang diagnostic pop +#endif + #endif iov_cleanup(iov, buf, cnt); @@ -10737,13 +11166,6 @@ os_statvfs_impl(PyObject *module, path_t *path) Py_BEGIN_ALLOW_THREADS #ifdef HAVE_FSTATVFS if (path->fd != -1) { -#ifdef __APPLE__ - /* handle weak-linking on Mac OS X 10.3 */ - if (fstatvfs == NULL) { - fd_specified("statvfs", path->fd); - return NULL; - } -#endif result = fstatvfs(path->fd, &st); } else @@ -12817,12 +13239,17 @@ DirEntry_fetch_stat(PyObject *module, DirEntry *self, int follow_symlinks) const char *path = PyBytes_AS_STRING(ub); if (self->dir_fd != DEFAULT_DIR_FD) { #ifdef HAVE_FSTATAT + if (HAVE_FSTATAT_RUNTIME) { result = fstatat(self->dir_fd, path, &st, follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW); -#else + } else + +#endif /* HAVE_FSTATAT */ + { + Py_DECREF(ub); PyErr_SetString(PyExc_NotImplementedError, "can't fetch stat"); return NULL; -#endif /* HAVE_FSTATAT */ + } } else #endif @@ -13608,7 +14035,8 @@ os_scandir_impl(PyObject *module, path_t *path) #else /* POSIX */ errno = 0; #ifdef HAVE_FDOPENDIR - if (path->fd != -1) { + if (iterator->path.fd != -1) { + if (HAVE_FDOPENDIR_RUNTIME) { /* closedir() closes the FD, so we duplicate it */ fd = _Py_dup(path->fd); if (fd == -1) @@ -13617,6 +14045,11 @@ os_scandir_impl(PyObject *module, path_t *path) Py_BEGIN_ALLOW_THREADS iterator->dirp = fdopendir(fd); Py_END_ALLOW_THREADS + } else { + PyErr_SetString(PyExc_TypeError, + "scandir: path should be string, bytes, os.PathLike or None, not int"); + return NULL; + } } else #endif @@ -14687,137 +15120,210 @@ all_ins(PyObject *m) } -static const char * const have_functions[] = { + +#define PROBE(name, test) \ + static int name(void) \ + { \ + if (test) { \ + return 1; \ + } else { \ + return 0; \ + } \ + } + +#ifdef HAVE_FSTATAT +PROBE(probe_fstatat, HAVE_FSTATAT_RUNTIME) +#endif #ifdef HAVE_FACCESSAT - "HAVE_FACCESSAT", +PROBE(probe_faccessat, HAVE_FACCESSAT_RUNTIME) +#endif + +#ifdef HAVE_FCHMODAT +PROBE(probe_fchmodat, HAVE_FCHMODAT_RUNTIME) +#endif + +#ifdef HAVE_FCHOWNAT +PROBE(probe_fchownat, HAVE_FCHOWNAT_RUNTIME) +#endif + +#ifdef HAVE_LINKAT +PROBE(probe_linkat, HAVE_LINKAT_RUNTIME) +#endif + +#ifdef HAVE_FDOPENDIR +PROBE(probe_fdopendir, HAVE_FDOPENDIR_RUNTIME) +#endif + +#ifdef HAVE_MKDIRAT +PROBE(probe_mkdirat, HAVE_MKDIRAT_RUNTIME) +#endif + +#ifdef HAVE_RENAMEAT +PROBE(probe_renameat, HAVE_RENAMEAT_RUNTIME) +#endif + +#ifdef HAVE_UNLINKAT +PROBE(probe_unlinkat, HAVE_UNLINKAT_RUNTIME) +#endif + +#ifdef HAVE_OPENAT +PROBE(probe_openat, HAVE_OPENAT_RUNTIME) +#endif + +#ifdef HAVE_READLINKAT +PROBE(probe_readlinkat, HAVE_READLINKAT_RUNTIME) +#endif + +#ifdef HAVE_SYMLINKAT +PROBE(probe_symlinkat, HAVE_SYMLINKAT_RUNTIME) +#endif + +#ifdef HAVE_FUTIMENS +PROBE(probe_futimens, HAVE_FUTIMENS_RUNTIME) +#endif + +#ifdef HAVE_UTIMENSAT +PROBE(probe_utimensat, HAVE_UTIMENSAT_RUNTIME) +#endif + + + + +static const struct have_function { + const char * const label; + int (*probe)(void); +} have_functions[] = { + +#ifdef HAVE_FACCESSAT + { "HAVE_FACCESSAT", probe_faccessat }, #endif #ifdef HAVE_FCHDIR - "HAVE_FCHDIR", + { "HAVE_FCHDIR", NULL }, #endif #ifdef HAVE_FCHMOD - "HAVE_FCHMOD", + { "HAVE_FCHMOD", NULL }, #endif #ifdef HAVE_FCHMODAT - "HAVE_FCHMODAT", + { "HAVE_FCHMODAT", probe_fchmodat }, #endif #ifdef HAVE_FCHOWN - "HAVE_FCHOWN", + { "HAVE_FCHOWN", NULL }, #endif #ifdef HAVE_FCHOWNAT - "HAVE_FCHOWNAT", + { "HAVE_FCHOWNAT", probe_fchownat }, #endif #ifdef HAVE_FEXECVE - "HAVE_FEXECVE", + { "HAVE_FEXECVE", NULL }, #endif #ifdef HAVE_FDOPENDIR - "HAVE_FDOPENDIR", + { "HAVE_FDOPENDIR", probe_fdopendir }, #endif #ifdef HAVE_FPATHCONF - "HAVE_FPATHCONF", + { "HAVE_FPATHCONF", NULL }, #endif #ifdef HAVE_FSTATAT - "HAVE_FSTATAT", + { "HAVE_FSTATAT", probe_fstatat }, #endif #ifdef HAVE_FSTATVFS - "HAVE_FSTATVFS", + { "HAVE_FSTATVFS", NULL }, #endif #if defined HAVE_FTRUNCATE || defined MS_WINDOWS - "HAVE_FTRUNCATE", + { "HAVE_FTRUNCATE", NULL }, #endif #ifdef HAVE_FUTIMENS - "HAVE_FUTIMENS", + { "HAVE_FUTIMENS", probe_futimens }, #endif #ifdef HAVE_FUTIMES - "HAVE_FUTIMES", + { "HAVE_FUTIMES", NULL }, #endif #ifdef HAVE_FUTIMESAT - "HAVE_FUTIMESAT", + { "HAVE_FUTIMESAT", NULL }, #endif #ifdef HAVE_LINKAT - "HAVE_LINKAT", + { "HAVE_LINKAT", probe_linkat }, #endif #ifdef HAVE_LCHFLAGS - "HAVE_LCHFLAGS", + { "HAVE_LCHFLAGS", NULL }, #endif #ifdef HAVE_LCHMOD - "HAVE_LCHMOD", + { "HAVE_LCHMOD", NULL }, #endif #ifdef HAVE_LCHOWN - "HAVE_LCHOWN", + { "HAVE_LCHOWN", NULL }, #endif #ifdef HAVE_LSTAT - "HAVE_LSTAT", + { "HAVE_LSTAT", NULL }, #endif #ifdef HAVE_LUTIMES - "HAVE_LUTIMES", + { "HAVE_LUTIMES", NULL }, #endif #ifdef HAVE_MEMFD_CREATE - "HAVE_MEMFD_CREATE", + { "HAVE_MEMFD_CREATE", NULL }, #endif #ifdef HAVE_MKDIRAT - "HAVE_MKDIRAT", + { "HAVE_MKDIRAT", probe_mkdirat }, #endif #ifdef HAVE_MKFIFOAT - "HAVE_MKFIFOAT", + { "HAVE_MKFIFOAT", NULL }, #endif #ifdef HAVE_MKNODAT - "HAVE_MKNODAT", + { "HAVE_MKNODAT", NULL }, #endif #ifdef HAVE_OPENAT - "HAVE_OPENAT", + { "HAVE_OPENAT", probe_openat }, #endif #ifdef HAVE_READLINKAT - "HAVE_READLINKAT", + { "HAVE_READLINKAT", probe_readlinkat }, #endif #ifdef HAVE_RENAMEAT - "HAVE_RENAMEAT", + { "HAVE_RENAMEAT", probe_renameat }, #endif #ifdef HAVE_SYMLINKAT - "HAVE_SYMLINKAT", + { "HAVE_SYMLINKAT", probe_symlinkat }, #endif #ifdef HAVE_UNLINKAT - "HAVE_UNLINKAT", + { "HAVE_UNLINKAT", probe_unlinkat }, #endif #ifdef HAVE_UTIMENSAT - "HAVE_UTIMENSAT", + { "HAVE_UTIMENSAT", probe_utimensat }, #endif #ifdef MS_WINDOWS - "MS_WINDOWS", + { "MS_WINDOWS", NULL }, #endif - NULL + { NULL, NULL } }; @@ -14826,6 +15332,23 @@ posixmodule_exec(PyObject *m) { _posixstate *state = get_posix_state(m); +#if defined(HAVE_PWRITEV) + if (HAVE_PWRITEV_RUNTIME) {} else { + PyObject* dct = PyModule_GetDict(m); + + if (dct == NULL) { + return -1; + } + + if (PyDict_DelItemString(dct, "pwritev") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "preadv") == -1) { + PyErr_Clear(); + } + } +#endif + /* Initialize environ dictionary */ PyObject *v = convertenviron(); Py_XINCREF(v); @@ -14938,44 +15461,6 @@ posixmodule_exec(PyObject *m) PyModule_AddObject(m, "uname_result", (PyObject *)UnameResultType); state->UnameResultType = (PyObject *)UnameResultType; -#ifdef __APPLE__ - /* - * Step 2 of weak-linking support on Mac OS X. - * - * The code below removes functions that are not available on the - * currently active platform. - * - * This block allow one to use a python binary that was build on - * OSX 10.4 on OSX 10.3, without losing access to new APIs on - * OSX 10.4. - */ -#ifdef HAVE_FSTATVFS - if (fstatvfs == NULL) { - if (PyObject_DelAttrString(m, "fstatvfs") == -1) { - return -1; - } - } -#endif /* HAVE_FSTATVFS */ - -#ifdef HAVE_STATVFS - if (statvfs == NULL) { - if (PyObject_DelAttrString(m, "statvfs") == -1) { - return -1; - } - } -#endif /* HAVE_STATVFS */ - -# ifdef HAVE_LCHOWN - if (lchown == NULL) { - if (PyObject_DelAttrString(m, "lchown") == -1) { - return -1; - } - } -#endif /* HAVE_LCHOWN */ - - -#endif /* __APPLE__ */ - if ((state->billion = PyLong_FromLong(1000000000)) == NULL) return -1; #if defined(HAVE_WAIT3) || defined(HAVE_WAIT4) @@ -15005,14 +15490,17 @@ posixmodule_exec(PyObject *m) if (!list) { return -1; } - for (const char * const *trace = have_functions; *trace; trace++) { - PyObject *unicode = PyUnicode_DecodeASCII(*trace, strlen(*trace), NULL); + for (const struct have_function *trace = have_functions; trace->label; trace++) { + PyObject *unicode; + if (trace->probe && !trace->probe()) continue; + unicode = PyUnicode_DecodeASCII(trace->label, strlen(trace->label), NULL); if (!unicode) return -1; if (PyList_Append(list, unicode)) return -1; Py_DECREF(unicode); } + PyModule_AddObject(m, "_have_functions", list); return 0; diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index 9041848c..540e2d90 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -1632,11 +1632,6 @@ PyInit__signal(void) goto finally; #endif -#ifdef MS_WINDOWS - /* Create manual-reset event, initially unset */ - sigint_event = CreateEvent(NULL, TRUE, FALSE, FALSE); -#endif - if (PyErr_Occurred()) { Py_DECREF(m); m = NULL; @@ -1773,6 +1768,53 @@ PyOS_InitInterrupts(void) } } + +static int +signal_install_handlers(void) +{ +#ifdef SIGPIPE + PyOS_setsig(SIGPIPE, SIG_IGN); +#endif +#ifdef SIGXFZ + PyOS_setsig(SIGXFZ, SIG_IGN); +#endif +#ifdef SIGXFSZ + PyOS_setsig(SIGXFSZ, SIG_IGN); +#endif + + // Import _signal to install the Python SIGINT handler + PyObject *module = PyImport_ImportModule("_signal"); + if (!module) { + return -1; + } + Py_DECREF(module); + + return 0; +} + + +int +_PySignal_Init(int install_signal_handlers) +{ +#ifdef MS_WINDOWS + /* Create manual-reset event, initially unset */ + sigint_event = CreateEvent(NULL, TRUE, FALSE, FALSE); + if (sigint_event == NULL) { + PyErr_SetFromWindowsErr(0); + return -1; + } +#endif + + if (install_signal_handlers) { + if (signal_install_handlers() < 0) { + return -1; + } + } + + return 0; +} + + void PyOS_FiniInterrupts(void) { diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 8a4d149b..80eab30c 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -51,6 +51,15 @@ #define _Py_tzname tzname #endif +#if defined(__APPLE__ ) && defined(__has_builtin) +# if __has_builtin(__builtin_available) +# define HAVE_CLOCK_GETTIME_RUNTIME __builtin_available(macOS 10.12, iOS 10.0, tvOS 10.0, watchOS 3.0, *) +# endif +#endif +#ifndef HAVE_CLOCK_GETTIME_RUNTIME +# define HAVE_CLOCK_GETTIME_RUNTIME 1 +#endif + #define SEC_TO_NS (1000 * 1000 * 1000) /* Forward declarations */ @@ -149,6 +158,16 @@ perf_counter(_Py_clock_info_t *info) } #ifdef HAVE_CLOCK_GETTIME + +#ifdef __APPLE__ +/* + * The clock_* functions will be removed from the module + * dict entirely when the C API is not available. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +#endif + static PyObject * time_clock_gettime(PyObject *self, PyObject *args) { @@ -297,6 +316,11 @@ PyDoc_STRVAR(clock_getres_doc, "clock_getres(clk_id) -> floating point number\n\ \n\ Return the resolution (precision) of the specified clock clk_id."); + +#ifdef __APPLE__ +#pragma clang diagnostic pop +#endif + #endif /* HAVE_CLOCK_GETRES */ #ifdef HAVE_PTHREAD_GETCPUCLOCKID @@ -1162,31 +1186,35 @@ _PyTime_GetProcessTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) #if defined(HAVE_CLOCK_GETTIME) \ && (defined(CLOCK_PROCESS_CPUTIME_ID) || defined(CLOCK_PROF)) struct timespec ts; + + if (HAVE_CLOCK_GETTIME_RUNTIME) { + #ifdef CLOCK_PROF - const clockid_t clk_id = CLOCK_PROF; - const char *function = "clock_gettime(CLOCK_PROF)"; + const clockid_t clk_id = CLOCK_PROF; + const char *function = "clock_gettime(CLOCK_PROF)"; #else - const clockid_t clk_id = CLOCK_PROCESS_CPUTIME_ID; - const char *function = "clock_gettime(CLOCK_PROCESS_CPUTIME_ID)"; + const clockid_t clk_id = CLOCK_PROCESS_CPUTIME_ID; + const char *function = "clock_gettime(CLOCK_PROCESS_CPUTIME_ID)"; #endif - if (clock_gettime(clk_id, &ts) == 0) { - if (info) { - struct timespec res; - info->implementation = function; - info->monotonic = 1; - info->adjustable = 0; - if (clock_getres(clk_id, &res)) { - PyErr_SetFromErrno(PyExc_OSError); - return -1; + if (clock_gettime(clk_id, &ts) == 0) { + if (info) { + struct timespec res; + info->implementation = function; + info->monotonic = 1; + info->adjustable = 0; + if (clock_getres(clk_id, &res)) { + PyErr_SetFromErrno(PyExc_OSError); + return -1; + } + info->resolution = res.tv_sec + res.tv_nsec * 1e-9; } - info->resolution = res.tv_sec + res.tv_nsec * 1e-9; - } - if (_PyTime_FromTimespec(tp, &ts) < 0) { - return -1; + if (_PyTime_FromTimespec(tp, &ts) < 0) { + return -1; + } + return 0; } - return 0; } #endif @@ -1371,8 +1399,35 @@ _PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) return 0; } +#elif defined(__sun) && defined(__SVR4) +#define HAVE_THREAD_TIME +static int +_PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) +{ + /* bpo-35455: On Solaris, CLOCK_THREAD_CPUTIME_ID clock is not always + available; use gethrvtime() to substitute this functionality. */ + if (info) { + info->implementation = "gethrvtime()"; + info->resolution = 1e-9; + info->monotonic = 1; + info->adjustable = 0; + } + *tp = _PyTime_FromNanoseconds(gethrvtime()); + return 0; +} + #elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) #define HAVE_THREAD_TIME + +#if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) +static int +_PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) + __attribute__((availability(macos, introduced=10.12))) + __attribute__((availability(ios, introduced=10.0))) + __attribute__((availability(tvos, introduced=10.0))) + __attribute__((availability(watchos, introduced=3.0))); +#endif + static int _PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) { @@ -1404,6 +1459,15 @@ _PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) #endif #ifdef HAVE_THREAD_TIME +#ifdef __APPLE__ +/* + * The clock_* functions will be removed from the module + * dict entirely when the C API is not available. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +#endif + static PyObject * time_thread_time(PyObject *self, PyObject *unused) { @@ -1434,6 +1498,11 @@ PyDoc_STRVAR(thread_time_ns_doc, \n\ Thread time for profiling as nanoseconds:\n\ sum of the kernel and user-space CPU time."); + +#ifdef __APPLE__ +#pragma clang diagnostic pop +#endif + #endif @@ -1483,9 +1552,19 @@ time_get_clock_info(PyObject *self, PyObject *args) } #ifdef HAVE_THREAD_TIME else if (strcmp(name, "thread_time") == 0) { - if (_PyTime_GetThreadTimeWithInfo(&t, &info) < 0) { + +#ifdef __APPLE__ + if (HAVE_CLOCK_GETTIME_RUNTIME) { +#endif + if (_PyTime_GetThreadTimeWithInfo(&t, &info) < 0) { + return NULL; + } +#ifdef __APPLE__ + } else { + PyErr_SetString(PyExc_ValueError, "unknown clock"); return NULL; } +#endif } #endif else { @@ -1766,68 +1845,116 @@ if it is -1, mktime() should guess based on the date and time.\n"); static int time_exec(PyObject *module) { +#if defined(__APPLE__) && defined(HAVE_CLOCK_GETTIME) + if (HAVE_CLOCK_GETTIME_RUNTIME) { + /* pass: ^^^ cannot use '!' here */ + } else { + PyObject* dct = PyModule_GetDict(module); + if (dct == NULL) { + return -1; + } + + if (PyDict_DelItemString(dct, "clock_gettime") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "clock_gettime_ns") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "clock_settime") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "clock_settime_ns") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "clock_getres") == -1) { + PyErr_Clear(); + } + } +#endif +#if defined(__APPLE__) && defined(HAVE_THREAD_TIME) + if (HAVE_CLOCK_GETTIME_RUNTIME) { + /* pass: ^^^ cannot use '!' here */ + } else { + PyObject* dct = PyModule_GetDict(module); + + if (PyDict_DelItemString(dct, "thread_time") == -1) { + PyErr_Clear(); + } + if (PyDict_DelItemString(dct, "thread_time_ns") == -1) { + PyErr_Clear(); + } + } +#endif /* Set, or reset, module variables like time.timezone */ if (init_timezone(module) < 0) { return -1; } #if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES) + if (HAVE_CLOCK_GETTIME_RUNTIME) { #ifdef CLOCK_REALTIME - if (PyModule_AddIntMacro(module, CLOCK_REALTIME) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_REALTIME) < 0) { + return -1; + } #endif + #ifdef CLOCK_MONOTONIC - if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC) < 0) { - return -1; - } + + if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC) < 0) { + return -1; + } + #endif #ifdef CLOCK_MONOTONIC_RAW - if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC_RAW) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC_RAW) < 0) { + return -1; + } #endif + #ifdef CLOCK_HIGHRES - if (PyModule_AddIntMacro(module, CLOCK_HIGHRES) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_HIGHRES) < 0) { + return -1; + } #endif #ifdef CLOCK_PROCESS_CPUTIME_ID - if (PyModule_AddIntMacro(module, CLOCK_PROCESS_CPUTIME_ID) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_PROCESS_CPUTIME_ID) < 0) { + return -1; + } #endif + #ifdef CLOCK_THREAD_CPUTIME_ID - if (PyModule_AddIntMacro(module, CLOCK_THREAD_CPUTIME_ID) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_THREAD_CPUTIME_ID) < 0) { + return -1; + } #endif #ifdef CLOCK_PROF - if (PyModule_AddIntMacro(module, CLOCK_PROF) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_PROF) < 0) { + return -1; + } #endif #ifdef CLOCK_BOOTTIME - if (PyModule_AddIntMacro(module, CLOCK_BOOTTIME) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_BOOTTIME) < 0) { + return -1; + } #endif #ifdef CLOCK_TAI - if (PyModule_AddIntMacro(module, CLOCK_TAI) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_TAI) < 0) { + return -1; + } #endif #ifdef CLOCK_UPTIME - if (PyModule_AddIntMacro(module, CLOCK_UPTIME) < 0) { - return -1; - } + if (PyModule_AddIntMacro(module, CLOCK_UPTIME) < 0) { + return -1; + } #endif #ifdef CLOCK_UPTIME_RAW - if (PyModule_AddIntMacro(module, CLOCK_UPTIME_RAW) < 0) { - return -1; - } + + if (PyModule_AddIntMacro(module, CLOCK_UPTIME_RAW) < 0) { + return -1; + } #endif + } #endif /* defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES) */ diff --git a/Objects/abstract.c b/Objects/abstract.c index 1d671c9e..1922619a 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -2375,9 +2375,7 @@ abstract_get_bases(PyObject *cls) _Py_IDENTIFIER(__bases__); PyObject *bases; - Py_ALLOW_RECURSION (void)_PyObject_LookupAttrId(cls, &PyId___bases__, &bases); - Py_END_ALLOW_RECURSION if (bases != NULL && !PyTuple_Check(bases)) { Py_DECREF(bases); return NULL; diff --git a/Objects/funcobject.c b/Objects/funcobject.c index bd24f67b..2c60275d 100644 --- a/Objects/funcobject.c +++ b/Objects/funcobject.c @@ -20,9 +20,23 @@ PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname return NULL; } + /* __module__: If module name is in globals, use it. + Otherwise, use None. */ + module = PyDict_GetItemWithError(globals, __name__); + if (module) { + Py_INCREF(module); + } + else if (PyErr_Occurred()) { + return NULL; + } + op = PyObject_GC_New(PyFunctionObject, &PyFunction_Type); - if (op == NULL) + if (op == NULL) { + Py_XDECREF(module); return NULL; + } + /* Note: No failures from this point on, since func_dealloc() does not + expect a partially-created object. */ op->func_weakreflist = NULL; Py_INCREF(code); @@ -35,6 +49,7 @@ PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname op->func_kwdefaults = NULL; /* No keyword only defaults */ op->func_closure = NULL; op->vectorcall = _PyFunction_Vectorcall; + op->func_module = module; consts = ((PyCodeObject *)code)->co_consts; if (PyTuple_Size(consts) >= 1) { @@ -48,20 +63,8 @@ PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname op->func_doc = doc; op->func_dict = NULL; - op->func_module = NULL; op->func_annotations = NULL; - /* __module__: If module name is in globals, use it. - Otherwise, use None. */ - module = PyDict_GetItemWithError(globals, __name__); - if (module) { - Py_INCREF(module); - op->func_module = module; - } - else if (PyErr_Occurred()) { - Py_DECREF(op); - return NULL; - } if (qualname) op->func_qualname = qualname; else diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 4f952162..c5a81a5c 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -9,6 +9,7 @@ typedef struct { PyObject *origin; PyObject *args; PyObject *parameters; + PyObject* weakreflist; } gaobject; static void @@ -17,6 +18,9 @@ ga_dealloc(PyObject *self) gaobject *alias = (gaobject *)self; _PyObject_GC_UNTRACK(self); + if (alias->weakreflist != NULL) { + PyObject_ClearWeakRefs((PyObject *)alias); + } Py_XDECREF(alias->origin); Py_XDECREF(alias->args); Py_XDECREF(alias->parameters); @@ -562,7 +566,7 @@ static PyGetSetDef ga_properties[] = { static PyObject * ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - if (!_PyArg_NoKwnames("GenericAlias", kwds)) { + if (!_PyArg_NoKeywords("GenericAlias", kwds)) { return NULL; } if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) { @@ -582,7 +586,7 @@ PyTypeObject Py_GenericAliasType = { .tp_name = "types.GenericAlias", .tp_doc = "Represent a PEP 585 generic type\n" "\n" - "E.g. for t = list[int], t.origin is list and t.args is (int,).", + "E.g. for t = list[int], t.__origin__ is list and t.__args__ is (int,).", .tp_basicsize = sizeof(gaobject), .tp_dealloc = ga_dealloc, .tp_repr = ga_repr, @@ -593,6 +597,7 @@ PyTypeObject Py_GenericAliasType = { .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, .tp_traverse = ga_traverse, .tp_richcompare = ga_richcompare, + .tp_weaklistoffset = offsetof(gaobject, weakreflist), .tp_methods = ga_methods, .tp_members = ga_members, .tp_alloc = PyType_GenericAlloc, @@ -624,6 +629,7 @@ Py_GenericAlias(PyObject *origin, PyObject *args) alias->origin = origin; alias->args = args; alias->parameters = NULL; + alias->weakreflist = NULL; _PyObject_GC_TRACK(alias); return (PyObject *)alias; } diff --git a/Objects/methodobject.c b/Objects/methodobject.c index 5659f214..7b430416 100644 --- a/Objects/methodobject.c +++ b/Objects/methodobject.c @@ -164,9 +164,11 @@ meth_dealloc(PyCFunctionObject *m) if (m->m_weakreflist != NULL) { PyObject_ClearWeakRefs((PyObject*) m); } + // Dereference class before m_self: PyCFunction_GET_CLASS accesses + // PyMethodDef m_ml, which could be kept alive by m_self + Py_XDECREF(PyCFunction_GET_CLASS(m)); Py_XDECREF(m->m_self); Py_XDECREF(m->m_module); - Py_XDECREF(PyCFunction_GET_CLASS(m)); PyObject_GC_Del(m); } @@ -243,9 +245,9 @@ meth_get__qualname__(PyCFunctionObject *m, void *closure) static int meth_traverse(PyCFunctionObject *m, visitproc visit, void *arg) { + Py_VISIT(PyCFunction_GET_CLASS(m)); Py_VISIT(m->m_self); Py_VISIT(m->m_module); - Py_VISIT(PyCFunction_GET_CLASS(m)); return 0; } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index f65434fd..acbe3fa3 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2605,10 +2605,10 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds) slots = NULL; /* Initialize tp_flags */ + // All heap types need GC, since we can create a reference cycle by storing + // an instance on one of its parents: type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | - Py_TPFLAGS_BASETYPE; - if (base->tp_flags & Py_TPFLAGS_HAVE_GC) - type->tp_flags |= Py_TPFLAGS_HAVE_GC; + Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC; /* Initialize essential fields */ type->tp_as_async = &et->as_async; @@ -2808,21 +2808,11 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds) } type->tp_dealloc = subtype_dealloc; - /* Enable GC unless this class is not adding new instance variables and - the base class did not use GC. */ - if ((base->tp_flags & Py_TPFLAGS_HAVE_GC) || - type->tp_basicsize > base->tp_basicsize) - type->tp_flags |= Py_TPFLAGS_HAVE_GC; - /* Always override allocation strategy to use regular heap */ type->tp_alloc = PyType_GenericAlloc; - if (type->tp_flags & Py_TPFLAGS_HAVE_GC) { - type->tp_free = PyObject_GC_Del; - type->tp_traverse = subtype_traverse; - type->tp_clear = subtype_clear; - } - else - type->tp_free = PyObject_Del; + type->tp_free = PyObject_GC_Del; + type->tp_traverse = subtype_traverse; + type->tp_clear = subtype_clear; /* store type in class' cell if one is supplied */ cell = _PyDict_GetItemIdWithError(dict, &PyId___classcell__); @@ -2961,26 +2951,40 @@ PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) base = slot->pfunc; else if (slot->slot == Py_tp_bases) { bases = slot->pfunc; - Py_INCREF(bases); } } - if (!bases) + if (!bases) { bases = PyTuple_Pack(1, base); - if (!bases) + if (!bases) + goto fail; + } + else if (!PyTuple_Check(bases)) { + PyErr_SetString(PyExc_SystemError, "Py_tp_bases is not a tuple"); goto fail; + } + else { + Py_INCREF(bases); + } } - else + else if (!PyTuple_Check(bases)) { + PyErr_SetString(PyExc_SystemError, "bases is not a tuple"); + goto fail; + } + else { Py_INCREF(bases); + } /* Calculate best base, and check that all bases are type objects */ base = best_base(bases); if (base == NULL) { + Py_DECREF(bases); goto fail; } if (!_PyType_HasFeature(base, Py_TPFLAGS_BASETYPE)) { PyErr_Format(PyExc_TypeError, "type '%.100s' is not an acceptable base type", base->tp_name); + Py_DECREF(bases); goto fail; } @@ -2992,7 +2996,6 @@ PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) type->tp_as_buffer = &res->as_buffer; /* Set tp_base and tp_bases */ type->tp_bases = bases; - bases = NULL; Py_INCREF(base); type->tp_base = base; diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 4c8c8806..ffd13f7d 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -847,7 +847,11 @@ xmlcharrefreplace(_PyBytesWriter *writer, char *str, /* generate replacement */ for (i = collstart; i < collend; ++i) { - str += sprintf(str, "&#%d;", PyUnicode_READ(kind, data, i)); + size = sprintf(str, "&#%d;", PyUnicode_READ(kind, data, i)); + if (size < 0) { + return NULL; + } + str += size; } return str; } @@ -1882,7 +1886,7 @@ _PyUnicode_Ready(PyObject *unicode) _PyUnicode_WSTR_LENGTH(unicode) = 0; #endif } - /* maxchar exeeds 16 bit, wee need 4 bytes for unicode characters */ + /* maxchar exceeds 16 bit, wee need 4 bytes for unicode characters */ else { #if SIZEOF_WCHAR_T == 2 /* in case the native representation is 2-bytes, we need to allocate a @@ -8160,7 +8164,7 @@ charmap_decode_mapping(const char *s, goto Undefined; if (value < 0 || value > MAX_UNICODE) { PyErr_Format(PyExc_TypeError, - "character mapping must be in range(0x%lx)", + "character mapping must be in range(0x%x)", (unsigned long)MAX_UNICODE + 1); goto onError; } @@ -15602,9 +15606,7 @@ PyUnicode_InternInPlace(PyObject **p) } PyObject *t; - Py_ALLOW_RECURSION t = PyDict_SetDefault(interned, s, s); - Py_END_ALLOW_RECURSION if (t == NULL) { PyErr_Clear(); diff --git a/PC/icons/idlex150.png b/PC/icons/idlex150.png new file mode 100644 index 0000000000000000000000000000000000000000..806cb0c8aa219be92c78937b5d291ba905cf9978 GIT binary patch literal 20537 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 ah2+BoRbd=;N(XBG5KcHZhdR3pY5xcQN_)fr literal 0 HcmV?d00001 diff --git a/PC/icons/idlex44.png b/PC/icons/idlex44.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef66e6c68e6bb77bf84fe310112a96908c23d73 GIT binary patch literal 3473 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 1200 diff --git a/PCbuild/build.bat b/PCbuild/build.bat index 0edb0672..a97b0628 100644 --- a/PCbuild/build.bat +++ b/PCbuild/build.bat @@ -46,7 +46,7 @@ echo.Available arguments: echo. -c Release ^| Debug ^| PGInstrument ^| PGUpdate echo. Set the configuration (default: Release) echo. -p x64 ^| Win32 ^| ARM ^| ARM64 -echo. Set the platform (default: Win32) +echo. Set the platform (default: x64) echo. -t Build ^| Rebuild ^| Clean ^| CleanAll echo. Set the target manually echo. --pgo-job The job to use for PGO training; implies --pgo @@ -55,7 +55,7 @@ exit /b 127 :Run setlocal -set platf=Win32 +set platf=x64 set conf=Release set target=Build set dir=%~dp0 diff --git a/PCbuild/env.bat b/PCbuild/env.bat index 2b2c0051..31c67d4d 100644 --- a/PCbuild/env.bat +++ b/PCbuild/env.bat @@ -9,8 +9,19 @@ rem 'v110', 'v120' or 'v140') to the build script. echo Build environments: x86, amd64, x86_amd64 echo. -set VSTOOLS=%VS140COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS% -call "%VSTOOLS%..\..\VC\vcvarsall.bat" %* +set _ARGS=%* +if NOT DEFINED _ARGS set _ARGS=amd64 + +if not exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" goto :skip_vswhere +set VSTOOLS= +for /F "tokens=*" %%i in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -property installationPath -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64') DO @(set VSTOOLS=%%i\VC\Auxiliary\Build\vcvarsall.bat) +if not defined VSTOOLS goto :skip_vswhere +call "%VSTOOLS%" %_ARGS% +exit /B 0 + +:skip_vswhere +if not defined VSTOOLS set VSTOOLS=%VS140COMNTOOLS% +if not defined VSTOOLS set VSTOOLS=%VS120COMNTOOLS% +if not defined VSTOOLS set VSTOOLS=%VS110COMNTOOLS% +if not defined VSTOOLS set VSTOOLS=%VS100COMNTOOLS% +call "%VSTOOLS%..\..\VC\vcvarsall.bat" %_ARGS% diff --git a/PCbuild/env.ps1 b/PCbuild/env.ps1 new file mode 100644 index 00000000..8ba1fa4c --- /dev/null +++ b/PCbuild/env.ps1 @@ -0,0 +1,2 @@ +$pcbuild = $script:MyInvocation.MyCommand.Path | Split-Path -parent; +& cmd /K "$pcbuild\env.bat" $args diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index d0e42557..9dc84a6c 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -54,7 +54,7 @@ set libraries= set libraries=%libraries% bzip2-1.0.6 if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1g -set libraries=%libraries% sqlite-3.32.3.0 +set libraries=%libraries% sqlite-3.33.0.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.9.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.9.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tix-8.4.3.6 diff --git a/PCbuild/idle.bat b/PCbuild/idle.bat index bacaaa84..73eff5e4 100644 --- a/PCbuild/idle.bat +++ b/PCbuild/idle.bat @@ -4,12 +4,24 @@ rem Usage: idle [-d] rem -d Run Debug build (python_d.exe). Else release build. setlocal -set exe=win32\python +set PCBUILD=%~dp0 +set exedir=%PCBUILD%\amd64 +set exe=python PATH %PATH%;..\externals\tcltk\bin -if "%1"=="-d" (set exe=%exe%_d) & shift +:CheckOpts +if "%1"=="-d" (set exe=%exe%_d) & shift & goto :CheckOpts +if "%1"=="-p" (call :SetExeDir %2) & shift & shift & goto :CheckOpts -set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 +set cmd=%exedir%\%exe% %PCBUILD%\..\Lib\idlelib\idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 echo on %cmd% +exit /B %LASTERRORCODE% + +:SetExeDir +if /I %1 EQU Win32 (set exedir=%PCBUILD%\win32) +if /I %1 EQU x64 (set exedir=%PCBUILD%\amd64) +if /I %1 EQU ARM (set exedir=%PCBUILD%\arm32) +if /I %1 EQU ARM64 (set exedir=%PCBUILD%\arm64) +exit /B 0 diff --git a/PCbuild/prepare_libffi.bat b/PCbuild/prepare_libffi.bat index a625eae9..8380c640 100644 --- a/PCbuild/prepare_libffi.bat +++ b/PCbuild/prepare_libffi.bat @@ -22,10 +22,10 @@ echo Based on https://github.com/libffi/libffi/blob/master/.appveyor.yml echo. echo. echo.Available flags: -echo. -x64 build for x64 -echo. -x86 build for x86 -echo. -arm32 build for arm32 -echo. -arm64 build for arm64 +echo. -x64 enable x64 build +echo. -x86 enable x86 build +echo. -arm32 enable arm32 build +echo. -arm64 enable arm64 build echo. -? this help echo. --install-cygwin install cygwin to c:\cygwin exit /b 127 @@ -44,6 +44,7 @@ set INSTALL_CYGWIN= if "%1"=="" goto :CheckOptsDone if /I "%1"=="-x64" (set BUILD_X64=1) & shift & goto :CheckOpts if /I "%1"=="-x86" (set BUILD_X86=1) & shift & goto :CheckOpts +if /I "%1"=="-win32" (set BUILD_X86=1) & shift & goto :CheckOpts if /I "%1"=="-arm32" (set BUILD_ARM32=1) & shift & goto :CheckOpts if /I "%1"=="-arm64" (set BUILD_ARM64=1) & shift & goto :CheckOpts if /I "%1"=="-pdb" (set BUILD_PDB=-g) & shift & goto :CheckOpts @@ -67,9 +68,7 @@ setlocal if NOT DEFINED SH if exist c:\cygwin\bin\sh.exe set SH=c:\cygwin\bin\sh.exe if NOT DEFINED VCVARSALL ( - if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ( - set VCVARSALL="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" - ) + for /F "tokens=*" %%i in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -property installationPath -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64') DO @(set VCVARSALL="%%i\VC\Auxiliary\Build\vcvarsall.bat") ) if ^%VCVARSALL:~0,1% NEQ ^" SET VCVARSALL="%VCVARSALL%" diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 91884140..95649ea1 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -176,8 +176,8 @@ public override bool Execute() { $(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86 $(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86 $(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\ - <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificate)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /a /n "$(SigningCertificate)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)" - <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificateSha1)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /a /sha1 "$(SigningCertificateSha1)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)" + <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificate)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /a /n "$(SigningCertificate)" /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d "Python $(PythonVersion)" + <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificateSha1)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /a /sha1 "$(SigningCertificateSha1)" /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d "Python $(PythonVersion)" <_MakeCatCommand Condition="Exists($(SdkBinPath))">"$(SdkBinPath)\makecat.exe" diff --git a/PCbuild/python.props b/PCbuild/python.props index fe594059..3a3a7873 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -56,7 +56,7 @@ $(EXTERNALS_DIR) $([System.IO.Path]::GetFullPath(`$(PySourcePath)externals`)) $(ExternalsDir)\ - $(ExternalsDir)sqlite-3.32.3.0\ + $(ExternalsDir)sqlite-3.33.0.0\ $(ExternalsDir)bzip2-1.0.6\ $(ExternalsDir)xz-5.2.2\ $(ExternalsDir)libffi\ diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 92b8c8c9..e07cdd21 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -185,7 +185,7 @@ _ssl again when building. _sqlite3 - Wraps SQLite 3.32.3.0, which is itself built by sqlite3.vcxproj + Wraps SQLite 3.33.0, which is itself built by sqlite3.vcxproj Homepage: http://www.sqlite.org/ _tkinter diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat index 3773eea0..f15e3e23 100644 --- a/PCbuild/rt.bat +++ b/PCbuild/rt.bat @@ -6,8 +6,9 @@ rem -O Run python.exe or python_d.exe (see -d) with -O. rem -q "quick" -- normally the tests are run twice, the first time rem after deleting all the .pyc files reachable from Lib/. rem -q runs the tests just once, and without deleting .pyc files. -rem -x64 Run the 64-bit build of python (or python_d if -d was specified) -rem When omitted, uses %PREFIX% if set or the 32-bit build +rem -p or -win32, -x64, -arm32, -arm64 +rem Run the specified architecture of python (or python_d if -d +rem was specified). If omitted, uses %PREFIX% if set or 64-bit. rem All leading instances of these switches are shifted off, and rem whatever remains (up to 9 arguments) is passed to regrtest.py. rem For example, @@ -38,12 +39,14 @@ set exe= if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts +if "%1"=="-win32" (set prefix=%pcbuild%win32) & shift & goto CheckOpts if "%1"=="-x64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts if "%1"=="-arm64" (set prefix=%pcbuild%arm64) & shift & goto CheckOpts if "%1"=="-arm32" (set prefix=%pcbuild%arm32) & shift & goto CheckOpts +if "%1"=="-p" (call :SetPlatform %~2) & shift & shift & goto CheckOpts if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto CheckOpts -if not defined prefix set prefix=%pcbuild%win32 +if not defined prefix set prefix=%pcbuild%amd64 set exe=%prefix%\python%suffix%.exe set cmd="%exe%" %dashO% -u -Wd -E -bb -m test %regrtestargs% if defined qmode goto Qmode @@ -60,6 +63,15 @@ echo on echo About to run again without deleting .pyc first: pause +goto Qmode + +:SetPlatform +if /I %1 EQU Win32 (set prefix=%pcbuild%win32) & exit /B 0 +if /I %1 EQU x64 (set prefix=%pcbuild%amd64) & exit /B 0 +if /I %1 EQU ARM64 (set prefix=%pcbuild%arm64) & exit /B 0 +if /I %1 EQU ARM (set prefix=%pcbuild%arm32) & exit /B 0 +echo Invalid platform "%1" +exit /B 1 :Qmode echo on diff --git a/Parser/pegen/parse.c b/Parser/pegen/parse.c index f74b6f29..0eb61db3 100644 --- a/Parser/pegen/parse.c +++ b/Parser/pegen/parse.c @@ -134,97 +134,97 @@ static KeywordToken *reserved_keywords[] = { #define class_def_type 1056 #define class_def_raw_type 1057 #define block_type 1058 -#define expressions_list_type 1059 -#define star_expressions_type 1060 -#define star_expression_type 1061 -#define star_named_expressions_type 1062 -#define star_named_expression_type 1063 -#define named_expression_type 1064 -#define annotated_rhs_type 1065 -#define expressions_type 1066 -#define expression_type 1067 -#define lambdef_type 1068 -#define lambda_params_type 1069 -#define lambda_parameters_type 1070 -#define lambda_slash_no_default_type 1071 -#define lambda_slash_with_default_type 1072 -#define lambda_star_etc_type 1073 -#define lambda_kwds_type 1074 -#define lambda_param_no_default_type 1075 -#define lambda_param_with_default_type 1076 -#define lambda_param_maybe_default_type 1077 -#define lambda_param_type 1078 -#define disjunction_type 1079 -#define conjunction_type 1080 -#define inversion_type 1081 -#define comparison_type 1082 -#define compare_op_bitwise_or_pair_type 1083 -#define eq_bitwise_or_type 1084 -#define noteq_bitwise_or_type 1085 -#define lte_bitwise_or_type 1086 -#define lt_bitwise_or_type 1087 -#define gte_bitwise_or_type 1088 -#define gt_bitwise_or_type 1089 -#define notin_bitwise_or_type 1090 -#define in_bitwise_or_type 1091 -#define isnot_bitwise_or_type 1092 -#define is_bitwise_or_type 1093 -#define bitwise_or_type 1094 // Left-recursive -#define bitwise_xor_type 1095 // Left-recursive -#define bitwise_and_type 1096 // Left-recursive -#define shift_expr_type 1097 // Left-recursive -#define sum_type 1098 // Left-recursive -#define term_type 1099 // Left-recursive -#define factor_type 1100 -#define power_type 1101 -#define await_primary_type 1102 -#define primary_type 1103 // Left-recursive -#define slices_type 1104 -#define slice_type 1105 -#define atom_type 1106 -#define strings_type 1107 -#define list_type 1108 -#define listcomp_type 1109 -#define tuple_type 1110 -#define group_type 1111 -#define genexp_type 1112 -#define set_type 1113 -#define setcomp_type 1114 -#define dict_type 1115 -#define dictcomp_type 1116 -#define double_starred_kvpairs_type 1117 -#define double_starred_kvpair_type 1118 -#define kvpair_type 1119 -#define for_if_clauses_type 1120 -#define for_if_clause_type 1121 -#define yield_expr_type 1122 -#define arguments_type 1123 -#define args_type 1124 -#define kwargs_type 1125 -#define starred_expression_type 1126 -#define kwarg_or_starred_type 1127 -#define kwarg_or_double_starred_type 1128 -#define star_targets_type 1129 -#define star_targets_seq_type 1130 -#define star_target_type 1131 -#define star_atom_type 1132 -#define single_target_type 1133 -#define single_subscript_attribute_target_type 1134 -#define del_targets_type 1135 -#define del_target_type 1136 -#define del_t_atom_type 1137 -#define targets_type 1138 -#define target_type 1139 -#define t_primary_type 1140 // Left-recursive -#define t_lookahead_type 1141 -#define t_atom_type 1142 -#define incorrect_arguments_type 1143 -#define invalid_kwarg_type 1144 -#define invalid_named_expression_type 1145 -#define invalid_assignment_type 1146 -#define invalid_ann_assign_target_type 1147 -#define invalid_del_stmt_type 1148 -#define invalid_block_type 1149 +#define star_expressions_type 1059 +#define star_expression_type 1060 +#define star_named_expressions_type 1061 +#define star_named_expression_type 1062 +#define named_expression_type 1063 +#define annotated_rhs_type 1064 +#define expressions_type 1065 +#define expression_type 1066 +#define lambdef_type 1067 +#define lambda_params_type 1068 +#define lambda_parameters_type 1069 +#define lambda_slash_no_default_type 1070 +#define lambda_slash_with_default_type 1071 +#define lambda_star_etc_type 1072 +#define lambda_kwds_type 1073 +#define lambda_param_no_default_type 1074 +#define lambda_param_with_default_type 1075 +#define lambda_param_maybe_default_type 1076 +#define lambda_param_type 1077 +#define disjunction_type 1078 +#define conjunction_type 1079 +#define inversion_type 1080 +#define comparison_type 1081 +#define compare_op_bitwise_or_pair_type 1082 +#define eq_bitwise_or_type 1083 +#define noteq_bitwise_or_type 1084 +#define lte_bitwise_or_type 1085 +#define lt_bitwise_or_type 1086 +#define gte_bitwise_or_type 1087 +#define gt_bitwise_or_type 1088 +#define notin_bitwise_or_type 1089 +#define in_bitwise_or_type 1090 +#define isnot_bitwise_or_type 1091 +#define is_bitwise_or_type 1092 +#define bitwise_or_type 1093 // Left-recursive +#define bitwise_xor_type 1094 // Left-recursive +#define bitwise_and_type 1095 // Left-recursive +#define shift_expr_type 1096 // Left-recursive +#define sum_type 1097 // Left-recursive +#define term_type 1098 // Left-recursive +#define factor_type 1099 +#define power_type 1100 +#define await_primary_type 1101 +#define primary_type 1102 // Left-recursive +#define slices_type 1103 +#define slice_type 1104 +#define atom_type 1105 +#define strings_type 1106 +#define list_type 1107 +#define listcomp_type 1108 +#define tuple_type 1109 +#define group_type 1110 +#define genexp_type 1111 +#define set_type 1112 +#define setcomp_type 1113 +#define dict_type 1114 +#define dictcomp_type 1115 +#define double_starred_kvpairs_type 1116 +#define double_starred_kvpair_type 1117 +#define kvpair_type 1118 +#define for_if_clauses_type 1119 +#define for_if_clause_type 1120 +#define yield_expr_type 1121 +#define arguments_type 1122 +#define args_type 1123 +#define kwargs_type 1124 +#define starred_expression_type 1125 +#define kwarg_or_starred_type 1126 +#define kwarg_or_double_starred_type 1127 +#define star_targets_type 1128 +#define star_targets_seq_type 1129 +#define star_target_type 1130 +#define star_atom_type 1131 +#define single_target_type 1132 +#define single_subscript_attribute_target_type 1133 +#define del_targets_type 1134 +#define del_target_type 1135 +#define del_t_atom_type 1136 +#define targets_type 1137 +#define target_type 1138 +#define t_primary_type 1139 // Left-recursive +#define t_lookahead_type 1140 +#define t_atom_type 1141 +#define invalid_arguments_type 1142 +#define invalid_kwarg_type 1143 +#define invalid_named_expression_type 1144 +#define invalid_assignment_type 1145 +#define invalid_ann_assign_target_type 1146 +#define invalid_del_stmt_type 1147 +#define invalid_block_type 1148 +#define invalid_primary_type 1149 // Left-recursive #define invalid_comprehension_type 1150 #define invalid_dict_comprehension_type 1151 #define invalid_parameters_type 1152 @@ -305,72 +305,72 @@ static KeywordToken *reserved_keywords[] = { #define _loop1_67_type 1227 #define _loop1_68_type 1228 #define _tmp_69_type 1229 -#define _loop0_71_type 1230 -#define _gather_70_type 1231 -#define _loop1_72_type 1232 -#define _loop0_74_type 1233 -#define _gather_73_type 1234 -#define _loop1_75_type 1235 +#define _loop1_70_type 1230 +#define _loop0_72_type 1231 +#define _gather_71_type 1232 +#define _loop1_73_type 1233 +#define _loop0_74_type 1234 +#define _loop0_75_type 1235 #define _loop0_76_type 1236 -#define _loop0_77_type 1237 +#define _loop1_77_type 1237 #define _loop0_78_type 1238 #define _loop1_79_type 1239 -#define _loop0_80_type 1240 +#define _loop1_80_type 1240 #define _loop1_81_type 1241 -#define _loop1_82_type 1242 +#define _loop0_82_type 1242 #define _loop1_83_type 1243 #define _loop0_84_type 1244 #define _loop1_85_type 1245 #define _loop0_86_type 1246 #define _loop1_87_type 1247 -#define _loop0_88_type 1248 +#define _loop1_88_type 1248 #define _loop1_89_type 1249 #define _loop1_90_type 1250 -#define _loop1_91_type 1251 -#define _loop1_92_type 1252 -#define _tmp_93_type 1253 -#define _loop0_95_type 1254 -#define _gather_94_type 1255 +#define _tmp_91_type 1251 +#define _loop0_93_type 1252 +#define _gather_92_type 1253 +#define _tmp_94_type 1254 +#define _tmp_95_type 1255 #define _tmp_96_type 1256 #define _tmp_97_type 1257 -#define _tmp_98_type 1258 +#define _loop1_98_type 1258 #define _tmp_99_type 1259 -#define _loop1_100_type 1260 -#define _tmp_101_type 1261 -#define _tmp_102_type 1262 -#define _loop0_104_type 1263 -#define _gather_103_type 1264 -#define _loop1_105_type 1265 -#define _loop0_106_type 1266 -#define _loop0_107_type 1267 -#define _loop0_109_type 1268 -#define _gather_108_type 1269 -#define _tmp_110_type 1270 +#define _tmp_100_type 1260 +#define _loop0_102_type 1261 +#define _gather_101_type 1262 +#define _loop1_103_type 1263 +#define _loop0_104_type 1264 +#define _loop0_105_type 1265 +#define _loop0_107_type 1266 +#define _gather_106_type 1267 +#define _tmp_108_type 1268 +#define _loop0_110_type 1269 +#define _gather_109_type 1270 #define _loop0_112_type 1271 #define _gather_111_type 1272 #define _loop0_114_type 1273 #define _gather_113_type 1274 #define _loop0_116_type 1275 #define _gather_115_type 1276 -#define _loop0_118_type 1277 -#define _gather_117_type 1278 -#define _loop0_119_type 1279 -#define _loop0_121_type 1280 -#define _gather_120_type 1281 -#define _tmp_122_type 1282 +#define _loop0_117_type 1277 +#define _loop0_119_type 1278 +#define _gather_118_type 1279 +#define _tmp_120_type 1280 +#define _loop0_122_type 1281 +#define _gather_121_type 1282 #define _loop0_124_type 1283 #define _gather_123_type 1284 -#define _loop0_126_type 1285 -#define _gather_125_type 1286 -#define _tmp_127_type 1287 +#define _tmp_125_type 1285 +#define _loop0_126_type 1286 +#define _loop0_127_type 1287 #define _loop0_128_type 1288 -#define _loop0_129_type 1289 -#define _loop0_130_type 1290 -#define _tmp_131_type 1291 +#define _tmp_129_type 1289 +#define _tmp_130_type 1290 +#define _loop0_131_type 1291 #define _tmp_132_type 1292 #define _loop0_133_type 1293 #define _tmp_134_type 1294 -#define _loop0_135_type 1295 +#define _tmp_135_type 1295 #define _tmp_136_type 1296 #define _tmp_137_type 1297 #define _tmp_138_type 1298 @@ -386,12 +386,10 @@ static KeywordToken *reserved_keywords[] = { #define _tmp_148_type 1308 #define _tmp_149_type 1309 #define _tmp_150_type 1310 -#define _tmp_151_type 1311 -#define _tmp_152_type 1312 -#define _loop1_153_type 1313 -#define _loop1_154_type 1314 -#define _tmp_155_type 1315 -#define _tmp_156_type 1316 +#define _loop1_151_type 1311 +#define _loop1_152_type 1312 +#define _tmp_153_type 1313 +#define _tmp_154_type 1314 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -452,7 +450,6 @@ static asdl_seq* decorators_rule(Parser *p); static stmt_ty class_def_rule(Parser *p); static stmt_ty class_def_raw_rule(Parser *p); static asdl_seq* block_rule(Parser *p); -static asdl_seq* expressions_list_rule(Parser *p); static expr_ty star_expressions_rule(Parser *p); static expr_ty star_expression_rule(Parser *p); static asdl_seq* star_named_expressions_rule(Parser *p); @@ -536,13 +533,14 @@ static expr_ty target_rule(Parser *p); static expr_ty t_primary_rule(Parser *p); static void *t_lookahead_rule(Parser *p); static expr_ty t_atom_rule(Parser *p); -static void *incorrect_arguments_rule(Parser *p); +static void *invalid_arguments_rule(Parser *p); static void *invalid_kwarg_rule(Parser *p); static void *invalid_named_expression_rule(Parser *p); static void *invalid_assignment_rule(Parser *p); static expr_ty invalid_ann_assign_target_rule(Parser *p); static void *invalid_del_stmt_rule(Parser *p); static void *invalid_block_rule(Parser *p); +static void *invalid_primary_rule(Parser *p); static void *invalid_comprehension_rule(Parser *p); static void *invalid_dict_comprehension_rule(Parser *p); static void *invalid_parameters_rule(Parser *p); @@ -623,72 +621,72 @@ static asdl_seq *_loop0_66_rule(Parser *p); static asdl_seq *_loop1_67_rule(Parser *p); static asdl_seq *_loop1_68_rule(Parser *p); static void *_tmp_69_rule(Parser *p); -static asdl_seq *_loop0_71_rule(Parser *p); -static asdl_seq *_gather_70_rule(Parser *p); -static asdl_seq *_loop1_72_rule(Parser *p); +static asdl_seq *_loop1_70_rule(Parser *p); +static asdl_seq *_loop0_72_rule(Parser *p); +static asdl_seq *_gather_71_rule(Parser *p); +static asdl_seq *_loop1_73_rule(Parser *p); static asdl_seq *_loop0_74_rule(Parser *p); -static asdl_seq *_gather_73_rule(Parser *p); -static asdl_seq *_loop1_75_rule(Parser *p); +static asdl_seq *_loop0_75_rule(Parser *p); static asdl_seq *_loop0_76_rule(Parser *p); -static asdl_seq *_loop0_77_rule(Parser *p); +static asdl_seq *_loop1_77_rule(Parser *p); static asdl_seq *_loop0_78_rule(Parser *p); static asdl_seq *_loop1_79_rule(Parser *p); -static asdl_seq *_loop0_80_rule(Parser *p); +static asdl_seq *_loop1_80_rule(Parser *p); static asdl_seq *_loop1_81_rule(Parser *p); -static asdl_seq *_loop1_82_rule(Parser *p); +static asdl_seq *_loop0_82_rule(Parser *p); static asdl_seq *_loop1_83_rule(Parser *p); static asdl_seq *_loop0_84_rule(Parser *p); static asdl_seq *_loop1_85_rule(Parser *p); static asdl_seq *_loop0_86_rule(Parser *p); static asdl_seq *_loop1_87_rule(Parser *p); -static asdl_seq *_loop0_88_rule(Parser *p); +static asdl_seq *_loop1_88_rule(Parser *p); static asdl_seq *_loop1_89_rule(Parser *p); static asdl_seq *_loop1_90_rule(Parser *p); -static asdl_seq *_loop1_91_rule(Parser *p); -static asdl_seq *_loop1_92_rule(Parser *p); -static void *_tmp_93_rule(Parser *p); -static asdl_seq *_loop0_95_rule(Parser *p); -static asdl_seq *_gather_94_rule(Parser *p); +static void *_tmp_91_rule(Parser *p); +static asdl_seq *_loop0_93_rule(Parser *p); +static asdl_seq *_gather_92_rule(Parser *p); +static void *_tmp_94_rule(Parser *p); +static void *_tmp_95_rule(Parser *p); static void *_tmp_96_rule(Parser *p); static void *_tmp_97_rule(Parser *p); -static void *_tmp_98_rule(Parser *p); +static asdl_seq *_loop1_98_rule(Parser *p); static void *_tmp_99_rule(Parser *p); -static asdl_seq *_loop1_100_rule(Parser *p); -static void *_tmp_101_rule(Parser *p); -static void *_tmp_102_rule(Parser *p); +static void *_tmp_100_rule(Parser *p); +static asdl_seq *_loop0_102_rule(Parser *p); +static asdl_seq *_gather_101_rule(Parser *p); +static asdl_seq *_loop1_103_rule(Parser *p); static asdl_seq *_loop0_104_rule(Parser *p); -static asdl_seq *_gather_103_rule(Parser *p); -static asdl_seq *_loop1_105_rule(Parser *p); -static asdl_seq *_loop0_106_rule(Parser *p); +static asdl_seq *_loop0_105_rule(Parser *p); static asdl_seq *_loop0_107_rule(Parser *p); -static asdl_seq *_loop0_109_rule(Parser *p); -static asdl_seq *_gather_108_rule(Parser *p); -static void *_tmp_110_rule(Parser *p); +static asdl_seq *_gather_106_rule(Parser *p); +static void *_tmp_108_rule(Parser *p); +static asdl_seq *_loop0_110_rule(Parser *p); +static asdl_seq *_gather_109_rule(Parser *p); static asdl_seq *_loop0_112_rule(Parser *p); static asdl_seq *_gather_111_rule(Parser *p); static asdl_seq *_loop0_114_rule(Parser *p); static asdl_seq *_gather_113_rule(Parser *p); static asdl_seq *_loop0_116_rule(Parser *p); static asdl_seq *_gather_115_rule(Parser *p); -static asdl_seq *_loop0_118_rule(Parser *p); -static asdl_seq *_gather_117_rule(Parser *p); +static asdl_seq *_loop0_117_rule(Parser *p); static asdl_seq *_loop0_119_rule(Parser *p); -static asdl_seq *_loop0_121_rule(Parser *p); -static asdl_seq *_gather_120_rule(Parser *p); -static void *_tmp_122_rule(Parser *p); +static asdl_seq *_gather_118_rule(Parser *p); +static void *_tmp_120_rule(Parser *p); +static asdl_seq *_loop0_122_rule(Parser *p); +static asdl_seq *_gather_121_rule(Parser *p); static asdl_seq *_loop0_124_rule(Parser *p); static asdl_seq *_gather_123_rule(Parser *p); +static void *_tmp_125_rule(Parser *p); static asdl_seq *_loop0_126_rule(Parser *p); -static asdl_seq *_gather_125_rule(Parser *p); -static void *_tmp_127_rule(Parser *p); +static asdl_seq *_loop0_127_rule(Parser *p); static asdl_seq *_loop0_128_rule(Parser *p); -static asdl_seq *_loop0_129_rule(Parser *p); -static asdl_seq *_loop0_130_rule(Parser *p); -static void *_tmp_131_rule(Parser *p); +static void *_tmp_129_rule(Parser *p); +static void *_tmp_130_rule(Parser *p); +static asdl_seq *_loop0_131_rule(Parser *p); static void *_tmp_132_rule(Parser *p); static asdl_seq *_loop0_133_rule(Parser *p); static void *_tmp_134_rule(Parser *p); -static asdl_seq *_loop0_135_rule(Parser *p); +static void *_tmp_135_rule(Parser *p); static void *_tmp_136_rule(Parser *p); static void *_tmp_137_rule(Parser *p); static void *_tmp_138_rule(Parser *p); @@ -704,12 +702,10 @@ static void *_tmp_147_rule(Parser *p); static void *_tmp_148_rule(Parser *p); static void *_tmp_149_rule(Parser *p); static void *_tmp_150_rule(Parser *p); -static void *_tmp_151_rule(Parser *p); -static void *_tmp_152_rule(Parser *p); -static asdl_seq *_loop1_153_rule(Parser *p); -static asdl_seq *_loop1_154_rule(Parser *p); -static void *_tmp_155_rule(Parser *p); -static void *_tmp_156_rule(Parser *p); +static asdl_seq *_loop1_151_rule(Parser *p); +static asdl_seq *_loop1_152_rule(Parser *p); +static void *_tmp_153_rule(Parser *p); +static void *_tmp_154_rule(Parser *p); // file: statements? $ @@ -2217,7 +2213,7 @@ assignment_rule(Parser *p) return NULL; } } - { // invalid_assignment + if (p->call_invalid_rules) { // invalid_assignment if (p->error_indicator) { D(p->level--); return NULL; @@ -2890,7 +2886,7 @@ del_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)")); } - { // invalid_del_stmt + if (p->call_invalid_rules) { // invalid_del_stmt if (p->error_indicator) { D(p->level--); return NULL; @@ -3241,7 +3237,7 @@ import_from_targets_rule(Parser *p) D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'")); } - { // invalid_import_from_targets + if (p->call_invalid_rules) { // invalid_import_from_targets if (p->error_indicator) { D(p->level--); return NULL; @@ -3458,6 +3454,8 @@ dotted_name_rule(Parser *p) } p->mark = _mark; void *_raw = dotted_name_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -4034,7 +4032,7 @@ for_stmt_rule(Parser *p) return NULL; } } - { // invalid_for_target + if (p->call_invalid_rules) { // invalid_for_target if (p->error_indicator) { D(p->level--); return NULL; @@ -4289,7 +4287,10 @@ with_stmt_rule(Parser *p) return _res; } -// with_item: expression 'as' target &(',' | ')' | ':') | invalid_with_item | expression +// with_item: +// | expression 'as' star_target &(',' | ')' | ':') +// | invalid_with_item +// | expression static withitem_ty with_item_rule(Parser *p) { @@ -4300,12 +4301,12 @@ with_item_rule(Parser *p) } withitem_ty _res = NULL; int _mark = p->mark; - { // expression 'as' target &(',' | ')' | ':') + { // expression 'as' star_target &(',' | ')' | ':') if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' target &(',' | ')' | ':')")); + D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')")); Token * _keyword; expr_ty e; expr_ty t; @@ -4314,12 +4315,12 @@ with_item_rule(Parser *p) && (_keyword = _PyPegen_expect_token(p, 520)) // token='as' && - (t = target_rule(p)) // target + (t = star_target_rule(p)) // star_target && _PyPegen_lookahead(1, _tmp_47_rule, p) ) { - D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' target &(',' | ')' | ':')")); + D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')")); _res = _Py_withitem ( e , t , p -> arena ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -4330,9 +4331,9 @@ with_item_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' target &(',' | ')' | ':')")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')")); } - { // invalid_with_item + if (p->call_invalid_rules) { // invalid_with_item if (p->error_indicator) { D(p->level--); return NULL; @@ -5067,7 +5068,7 @@ func_type_comment_rule(Parser *p) D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)")); } - { // invalid_double_type_comments + if (p->call_invalid_rules) { // invalid_double_type_comments if (p->error_indicator) { D(p->level--); return NULL; @@ -5122,7 +5123,7 @@ params_rule(Parser *p) } arguments_ty _res = NULL; int _mark = p->mark; - { // invalid_parameters + if (p->call_invalid_rules) { // invalid_parameters if (p->error_indicator) { D(p->level--); return NULL; @@ -5597,7 +5598,7 @@ star_etc_rule(Parser *p) D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds")); } - { // invalid_star_etc + if (p->call_invalid_rules) { // invalid_star_etc if (p->error_indicator) { D(p->level--); return NULL; @@ -6300,7 +6301,7 @@ block_rule(Parser *p) D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt")); } - { // invalid_block + if (p->call_invalid_rules) { // invalid_block if (p->error_indicator) { D(p->level--); return NULL; @@ -6326,51 +6327,6 @@ block_rule(Parser *p) return _res; } -// expressions_list: ','.star_expression+ ','? -static asdl_seq* -expressions_list_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq* _res = NULL; - int _mark = p->mark; - { // ','.star_expression+ ','? - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> expressions_list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_expression+ ','?")); - void *_opt_var; - UNUSED(_opt_var); // Silence compiler warnings - asdl_seq * a; - if ( - (a = _gather_70_rule(p)) // ','.star_expression+ - && - (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? - ) - { - D(fprintf(stderr, "%*c+ expressions_list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_expression+ ','?")); - _res = a; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s expressions_list[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_expression+ ','?")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - // star_expressions: // | star_expression ((',' star_expression))+ ','? // | star_expression ',' @@ -6407,7 +6363,7 @@ star_expressions_rule(Parser *p) if ( (a = star_expression_rule(p)) // star_expression && - (b = _loop1_72_rule(p)) // ((',' star_expression))+ + (b = _loop1_70_rule(p)) // ((',' star_expression))+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -6602,7 +6558,7 @@ star_named_expressions_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_73_rule(p)) // ','.star_named_expression+ + (a = _gather_71_rule(p)) // ','.star_named_expression+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -6794,7 +6750,7 @@ named_expression_rule(Parser *p) D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } - { // invalid_named_expression + if (p->call_invalid_rules) { // invalid_named_expression if (p->error_indicator) { D(p->level--); return NULL; @@ -6907,7 +6863,7 @@ expressions_rule(Parser *p) if ( (a = expression_rule(p)) // expression && - (b = _loop1_75_rule(p)) // ((',' expression))+ + (b = _loop1_73_rule(p)) // ((',' expression))+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -7188,7 +7144,7 @@ lambda_params_rule(Parser *p) } arguments_ty _res = NULL; int _mark = p->mark; - { // invalid_lambda_parameters + if (p->call_invalid_rules) { // invalid_lambda_parameters if (p->error_indicator) { D(p->level--); return NULL; @@ -7261,9 +7217,9 @@ lambda_parameters_rule(Parser *p) if ( (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default && - (b = _loop0_76_rule(p)) // lambda_param_no_default* + (b = _loop0_74_rule(p)) // lambda_param_no_default* && - (c = _loop0_77_rule(p)) // lambda_param_with_default* + (c = _loop0_75_rule(p)) // lambda_param_with_default* && (d = lambda_star_etc_rule(p), 1) // lambda_star_etc? ) @@ -7293,7 +7249,7 @@ lambda_parameters_rule(Parser *p) if ( (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default && - (b = _loop0_78_rule(p)) // lambda_param_with_default* + (b = _loop0_76_rule(p)) // lambda_param_with_default* && (c = lambda_star_etc_rule(p), 1) // lambda_star_etc? ) @@ -7321,9 +7277,9 @@ lambda_parameters_rule(Parser *p) asdl_seq * b; void *c; if ( - (a = _loop1_79_rule(p)) // lambda_param_no_default+ + (a = _loop1_77_rule(p)) // lambda_param_no_default+ && - (b = _loop0_80_rule(p)) // lambda_param_with_default* + (b = _loop0_78_rule(p)) // lambda_param_with_default* && (c = lambda_star_etc_rule(p), 1) // lambda_star_etc? ) @@ -7350,7 +7306,7 @@ lambda_parameters_rule(Parser *p) asdl_seq * a; void *b; if ( - (a = _loop1_81_rule(p)) // lambda_param_with_default+ + (a = _loop1_79_rule(p)) // lambda_param_with_default+ && (b = lambda_star_etc_rule(p), 1) // lambda_star_etc? ) @@ -7421,7 +7377,7 @@ lambda_slash_no_default_rule(Parser *p) Token * _literal_1; asdl_seq * a; if ( - (a = _loop1_82_rule(p)) // lambda_param_no_default+ + (a = _loop1_80_rule(p)) // lambda_param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -7450,7 +7406,7 @@ lambda_slash_no_default_rule(Parser *p) Token * _literal; asdl_seq * a; if ( - (a = _loop1_83_rule(p)) // lambda_param_no_default+ + (a = _loop1_81_rule(p)) // lambda_param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -7500,9 +7456,9 @@ lambda_slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_84_rule(p)) // lambda_param_no_default* + (a = _loop0_82_rule(p)) // lambda_param_no_default* && - (b = _loop1_85_rule(p)) // lambda_param_with_default+ + (b = _loop1_83_rule(p)) // lambda_param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -7532,9 +7488,9 @@ lambda_slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_86_rule(p)) // lambda_param_no_default* + (a = _loop0_84_rule(p)) // lambda_param_no_default* && - (b = _loop1_87_rule(p)) // lambda_param_with_default+ + (b = _loop1_85_rule(p)) // lambda_param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -7590,7 +7546,7 @@ lambda_star_etc_rule(Parser *p) && (a = lambda_param_no_default_rule(p)) // lambda_param_no_default && - (b = _loop0_88_rule(p)) // lambda_param_maybe_default* + (b = _loop0_86_rule(p)) // lambda_param_maybe_default* && (c = lambda_kwds_rule(p), 1) // lambda_kwds? ) @@ -7623,7 +7579,7 @@ lambda_star_etc_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 12)) // token=',' && - (b = _loop1_89_rule(p)) // lambda_param_maybe_default+ + (b = _loop1_87_rule(p)) // lambda_param_maybe_default+ && (c = lambda_kwds_rule(p), 1) // lambda_kwds? ) @@ -7665,7 +7621,7 @@ lambda_star_etc_rule(Parser *p) D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds")); } - { // invalid_lambda_star_etc + if (p->call_invalid_rules) { // invalid_lambda_star_etc if (p->error_indicator) { D(p->level--); return NULL; @@ -8050,7 +8006,7 @@ disjunction_rule(Parser *p) if ( (a = conjunction_rule(p)) // conjunction && - (b = _loop1_90_rule(p)) // (('or' conjunction))+ + (b = _loop1_88_rule(p)) // (('or' conjunction))+ ) { D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+")); @@ -8136,7 +8092,7 @@ conjunction_rule(Parser *p) if ( (a = inversion_rule(p)) // inversion && - (b = _loop1_91_rule(p)) // (('and' inversion))+ + (b = _loop1_89_rule(p)) // (('and' inversion))+ ) { D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+")); @@ -8304,7 +8260,7 @@ comparison_rule(Parser *p) if ( (a = bitwise_or_rule(p)) // bitwise_or && - (b = _loop1_92_rule(p)) // compare_op_bitwise_or_pair+ + (b = _loop1_90_rule(p)) // compare_op_bitwise_or_pair+ ) { D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+")); @@ -8632,10 +8588,10 @@ noteq_bitwise_or_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or")); - void *_tmp_93_var; + void *_tmp_91_var; expr_ty a; if ( - (_tmp_93_var = _tmp_93_rule(p)) // '!=' + (_tmp_91_var = _tmp_91_rule(p)) // '!=' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -9039,6 +8995,8 @@ bitwise_or_rule(Parser *p) } p->mark = _mark; void *_raw = bitwise_or_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -9153,6 +9111,8 @@ bitwise_xor_rule(Parser *p) } p->mark = _mark; void *_raw = bitwise_xor_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -9267,6 +9227,8 @@ bitwise_and_rule(Parser *p) } p->mark = _mark; void *_raw = bitwise_and_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -9381,6 +9343,8 @@ shift_expr_rule(Parser *p) } p->mark = _mark; void *_raw = shift_expr_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -9534,6 +9498,8 @@ sum_rule(Parser *p) } p->mark = _mark; void *_raw = sum_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -9693,6 +9659,8 @@ term_rule(Parser *p) } p->mark = _mark; void *_raw = term_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -10271,6 +10239,7 @@ await_primary_rule(Parser *p) // Left-recursive // primary: +// | invalid_primary // | primary '.' NAME // | primary genexp // | primary '(' arguments? ')' @@ -10296,6 +10265,8 @@ primary_rule(Parser *p) } p->mark = _mark; void *_raw = primary_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -10324,6 +10295,25 @@ primary_raw(Parser *p) UNUSED(_start_lineno); // Only used by EXTRA macro int _start_col_offset = p->tokens[_mark]->col_offset; UNUSED(_start_col_offset); // Only used by EXTRA macro + if (p->call_invalid_rules) { // invalid_primary + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_primary")); + void *invalid_primary_var; + if ( + (invalid_primary_var = invalid_primary_rule(p)) // invalid_primary + ) + { + D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_primary")); + _res = invalid_primary_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_primary")); + } { // primary '.' NAME if (p->error_indicator) { D(p->level--); @@ -10564,7 +10554,7 @@ slices_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_94_rule(p)) // ','.slice+ + (a = _gather_92_rule(p)) // ','.slice+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -10634,7 +10624,7 @@ slice_rule(Parser *p) && (b = expression_rule(p), 1) // expression? && - (c = _tmp_96_rule(p), 1) // [':' expression?] + (c = _tmp_94_rule(p), 1) // [':' expression?] ) { D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]")); @@ -10908,15 +10898,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)")); - void *_tmp_97_var; + void *_tmp_95_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='(' && - (_tmp_97_var = _tmp_97_rule(p)) // tuple | group | genexp + (_tmp_95_var = _tmp_95_rule(p)) // tuple | group | genexp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)")); - _res = _tmp_97_var; + _res = _tmp_95_var; goto done; } p->mark = _mark; @@ -10929,15 +10919,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)")); - void *_tmp_98_var; + void *_tmp_96_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='[' && - (_tmp_98_var = _tmp_98_rule(p)) // list | listcomp + (_tmp_96_var = _tmp_96_rule(p)) // list | listcomp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)")); - _res = _tmp_98_var; + _res = _tmp_96_var; goto done; } p->mark = _mark; @@ -10950,15 +10940,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)")); - void *_tmp_99_var; + void *_tmp_97_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{' && - (_tmp_99_var = _tmp_99_rule(p)) // dict | set | dictcomp | setcomp + (_tmp_97_var = _tmp_97_rule(p)) // dict | set | dictcomp | setcomp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)")); - _res = _tmp_99_var; + _res = _tmp_97_var; goto done; } p->mark = _mark; @@ -11027,7 +11017,7 @@ strings_rule(Parser *p) D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+")); asdl_seq * a; if ( - (a = _loop1_100_rule(p)) // STRING+ + (a = _loop1_98_rule(p)) // STRING+ ) { D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+")); @@ -11184,7 +11174,7 @@ listcomp_rule(Parser *p) return NULL; } } - { // invalid_comprehension + if (p->call_invalid_rules) { // invalid_comprehension if (p->error_indicator) { D(p->level--); return NULL; @@ -11241,7 +11231,7 @@ tuple_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = _tmp_101_rule(p), 1) // [star_named_expression ',' star_named_expressions?] + (a = _tmp_99_rule(p), 1) // [star_named_expression ',' star_named_expressions?] && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) @@ -11297,7 +11287,7 @@ group_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = _tmp_102_rule(p)) // yield_expr | named_expression + (a = _tmp_100_rule(p)) // yield_expr | named_expression && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) @@ -11315,7 +11305,7 @@ group_rule(Parser *p) D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'")); } - { // invalid_group + if (p->call_invalid_rules) { // invalid_group if (p->error_indicator) { D(p->level--); return NULL; @@ -11340,7 +11330,7 @@ group_rule(Parser *p) return _res; } -// genexp: '(' expression ~ for_if_clauses ')' | invalid_comprehension +// genexp: '(' named_expression ~ for_if_clauses ')' | invalid_comprehension static expr_ty genexp_rule(Parser *p) { @@ -11360,12 +11350,12 @@ genexp_rule(Parser *p) UNUSED(_start_lineno); // Only used by EXTRA macro int _start_col_offset = p->tokens[_mark]->col_offset; UNUSED(_start_col_offset); // Only used by EXTRA macro - { // '(' expression ~ for_if_clauses ')' + { // '(' named_expression ~ for_if_clauses ')' if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' expression ~ for_if_clauses ')'")); + D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' named_expression ~ for_if_clauses ')'")); int _cut_var = 0; Token * _literal; Token * _literal_1; @@ -11374,7 +11364,7 @@ genexp_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = expression_rule(p)) // expression + (a = named_expression_rule(p)) // named_expression && (_cut_var = 1) && @@ -11383,7 +11373,7 @@ genexp_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' expression ~ for_if_clauses ')'")); + D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' named_expression ~ for_if_clauses ')'")); Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); if (_token == NULL) { D(p->level--); @@ -11403,13 +11393,13 @@ genexp_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' expression ~ for_if_clauses ')'")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' named_expression ~ for_if_clauses ')'")); if (_cut_var) { D(p->level--); return NULL; } } - { // invalid_comprehension + if (p->call_invalid_rules) { // invalid_comprehension if (p->error_indicator) { D(p->level--); return NULL; @@ -11434,7 +11424,7 @@ genexp_rule(Parser *p) return _res; } -// set: '{' expressions_list '}' +// set: '{' star_named_expressions '}' static expr_ty set_rule(Parser *p) { @@ -11454,24 +11444,24 @@ set_rule(Parser *p) UNUSED(_start_lineno); // Only used by EXTRA macro int _start_col_offset = p->tokens[_mark]->col_offset; UNUSED(_start_col_offset); // Only used by EXTRA macro - { // '{' expressions_list '}' + { // '{' star_named_expressions '}' if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'")); + D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'")); Token * _literal; Token * _literal_1; asdl_seq* a; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' && - (a = expressions_list_rule(p)) // expressions_list + (a = star_named_expressions_rule(p)) // star_named_expressions && (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'")); + D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'")); Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); if (_token == NULL) { D(p->level--); @@ -11491,7 +11481,7 @@ set_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expressions_list '}'")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'")); } _res = NULL; done: @@ -11499,7 +11489,7 @@ set_rule(Parser *p) return _res; } -// setcomp: '{' expression ~ for_if_clauses '}' | invalid_comprehension +// setcomp: '{' named_expression ~ for_if_clauses '}' | invalid_comprehension static expr_ty setcomp_rule(Parser *p) { @@ -11519,12 +11509,12 @@ setcomp_rule(Parser *p) UNUSED(_start_lineno); // Only used by EXTRA macro int _start_col_offset = p->tokens[_mark]->col_offset; UNUSED(_start_col_offset); // Only used by EXTRA macro - { // '{' expression ~ for_if_clauses '}' + { // '{' named_expression ~ for_if_clauses '}' if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' expression ~ for_if_clauses '}'")); + D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression ~ for_if_clauses '}'")); int _cut_var = 0; Token * _literal; Token * _literal_1; @@ -11533,7 +11523,7 @@ setcomp_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' && - (a = expression_rule(p)) // expression + (a = named_expression_rule(p)) // named_expression && (_cut_var = 1) && @@ -11542,7 +11532,7 @@ setcomp_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' expression ~ for_if_clauses '}'")); + D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression ~ for_if_clauses '}'")); Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); if (_token == NULL) { D(p->level--); @@ -11562,13 +11552,13 @@ setcomp_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expression ~ for_if_clauses '}'")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression ~ for_if_clauses '}'")); if (_cut_var) { D(p->level--); return NULL; } } - { // invalid_comprehension + if (p->call_invalid_rules) { // invalid_comprehension if (p->error_indicator) { D(p->level--); return NULL; @@ -11720,7 +11710,7 @@ dictcomp_rule(Parser *p) D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'")); } - { // invalid_dict_comprehension + if (p->call_invalid_rules) { // invalid_dict_comprehension if (p->error_indicator) { D(p->level--); return NULL; @@ -11766,7 +11756,7 @@ double_starred_kvpairs_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_103_rule(p)) // ','.double_starred_kvpair+ + (a = _gather_101_rule(p)) // ','.double_starred_kvpair+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -11917,13 +11907,13 @@ for_if_clauses_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+")); - asdl_seq * _loop1_105_var; + asdl_seq * _loop1_103_var; if ( - (_loop1_105_var = _loop1_105_rule(p)) // for_if_clause+ + (_loop1_103_var = _loop1_103_rule(p)) // for_if_clause+ ) { D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+")); - _res = _loop1_105_var; + _res = _loop1_103_var; goto done; } p->mark = _mark; @@ -11976,7 +11966,7 @@ for_if_clause_rule(Parser *p) && (b = disjunction_rule(p)) // disjunction && - (c = _loop0_106_rule(p)) // (('if' disjunction))* + (c = _loop0_104_rule(p)) // (('if' disjunction))* ) { D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*")); @@ -12019,7 +12009,7 @@ for_if_clause_rule(Parser *p) && (b = disjunction_rule(p)) // disjunction && - (c = _loop0_107_rule(p)) // (('if' disjunction))* + (c = _loop0_105_rule(p)) // (('if' disjunction))* ) { D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*")); @@ -12039,7 +12029,7 @@ for_if_clause_rule(Parser *p) return NULL; } } - { // invalid_for_target + if (p->call_invalid_rules) { // invalid_for_target if (p->error_indicator) { D(p->level--); return NULL; @@ -12165,7 +12155,7 @@ yield_expr_rule(Parser *p) return _res; } -// arguments: args ','? &')' | incorrect_arguments +// arguments: args ','? &')' | invalid_arguments static expr_ty arguments_rule(Parser *p) { @@ -12210,24 +12200,24 @@ arguments_rule(Parser *p) D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'")); } - { // incorrect_arguments + if (p->call_invalid_rules) { // invalid_arguments if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "incorrect_arguments")); - void *incorrect_arguments_var; + D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments")); + void *invalid_arguments_var; if ( - (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments + (invalid_arguments_var = invalid_arguments_rule(p)) // invalid_arguments ) { - D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "incorrect_arguments")); - _res = incorrect_arguments_var; + D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments")); + _res = invalid_arguments_var; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "incorrect_arguments")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments")); } _res = NULL; done: @@ -12265,9 +12255,9 @@ args_rule(Parser *p) asdl_seq * a; void *b; if ( - (a = _gather_108_rule(p)) // ','.(starred_expression | named_expression !'=')+ + (a = _gather_106_rule(p)) // ','.(starred_expression | named_expression !'=')+ && - (b = _tmp_110_rule(p), 1) // [',' kwargs] + (b = _tmp_108_rule(p), 1) // [',' kwargs] ) { D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | named_expression !'=')+ [',' kwargs]")); @@ -12355,11 +12345,11 @@ kwargs_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _gather_111_rule(p)) // ','.kwarg_or_starred+ + (a = _gather_109_rule(p)) // ','.kwarg_or_starred+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (b = _gather_113_rule(p)) // ','.kwarg_or_double_starred+ + (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+")); @@ -12381,13 +12371,13 @@ kwargs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+")); - asdl_seq * _gather_115_var; + asdl_seq * _gather_113_var; if ( - (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_starred+ + (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+")); - _res = _gather_115_var; + _res = _gather_113_var; goto done; } p->mark = _mark; @@ -12400,13 +12390,13 @@ kwargs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+")); - asdl_seq * _gather_117_var; + asdl_seq * _gather_115_var; if ( - (_gather_117_var = _gather_117_rule(p)) // ','.kwarg_or_double_starred+ + (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+")); - _res = _gather_117_var; + _res = _gather_115_var; goto done; } p->mark = _mark; @@ -12564,7 +12554,7 @@ kwarg_or_starred_rule(Parser *p) D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } - { // invalid_kwarg + if (p->call_invalid_rules) { // invalid_kwarg if (p->error_indicator) { D(p->level--); return NULL; @@ -12684,7 +12674,7 @@ kwarg_or_double_starred_rule(Parser *p) D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression")); } - { // invalid_kwarg + if (p->call_invalid_rules) { // invalid_kwarg if (p->error_indicator) { D(p->level--); return NULL; @@ -12768,7 +12758,7 @@ star_targets_rule(Parser *p) if ( (a = star_target_rule(p)) // star_target && - (b = _loop0_119_rule(p)) // ((',' star_target))* + (b = _loop0_117_rule(p)) // ((',' star_target))* && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -12822,7 +12812,7 @@ star_targets_seq_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_120_rule(p)) // ','.star_target+ + (a = _gather_118_rule(p)) // ','.star_target+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -12885,7 +12875,7 @@ star_target_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (a = _tmp_122_rule(p)) // !'*' star_target + (a = _tmp_120_rule(p)) // !'*' star_target ) { D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)")); @@ -13407,7 +13397,7 @@ del_targets_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_123_rule(p)) // ','.del_target+ + (a = _gather_121_rule(p)) // ','.del_target+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -13748,7 +13738,7 @@ targets_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_125_rule(p)) // ','.target+ + (a = _gather_123_rule(p)) // ','.target+ && (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? ) @@ -13937,6 +13927,8 @@ t_primary_rule(Parser *p) } p->mark = _mark; void *_raw = t_primary_raw(p); + if (p->error_indicator) + return NULL; if (_raw == NULL || p->mark <= _resmark) break; _resmark = p->mark; @@ -14396,14 +14388,14 @@ t_atom_rule(Parser *p) return _res; } -// incorrect_arguments: +// invalid_arguments: // | args ',' '*' // | expression for_if_clauses ',' [args | expression for_if_clauses] // | args for_if_clauses // | args ',' expression for_if_clauses // | args ',' args static void * -incorrect_arguments_rule(Parser *p) +invalid_arguments_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -14417,7 +14409,7 @@ incorrect_arguments_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'")); + D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'")); Token * _literal; Token * _literal_1; expr_ty args_var; @@ -14429,7 +14421,7 @@ incorrect_arguments_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*' ) { - D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'")); + D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'")); _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -14439,7 +14431,7 @@ incorrect_arguments_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'")); } { // expression for_if_clauses ',' [args | expression for_if_clauses] @@ -14447,7 +14439,7 @@ incorrect_arguments_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); + D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); Token * _literal; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings @@ -14460,10 +14452,10 @@ incorrect_arguments_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_opt_var = _tmp_127_rule(p), 1) // [args | expression for_if_clauses] + (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses] ) { - D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); + D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -14473,7 +14465,7 @@ incorrect_arguments_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); } { // args for_if_clauses @@ -14481,7 +14473,7 @@ incorrect_arguments_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses")); + D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses")); expr_ty a; asdl_seq* for_if_clauses_var; if ( @@ -14490,7 +14482,7 @@ incorrect_arguments_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses")); + D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses")); _res = _PyPegen_nonparen_genexp_in_call ( p , a ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -14500,7 +14492,7 @@ incorrect_arguments_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses")); } { // args ',' expression for_if_clauses @@ -14508,7 +14500,7 @@ incorrect_arguments_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses")); + D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses")); Token * _literal; expr_ty a; expr_ty args_var; @@ -14523,7 +14515,7 @@ incorrect_arguments_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses")); + D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses")); _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -14533,7 +14525,7 @@ incorrect_arguments_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses")); } { // args ',' args @@ -14541,7 +14533,7 @@ incorrect_arguments_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args")); + D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args")); Token * _literal; expr_ty a; expr_ty args_var; @@ -14553,7 +14545,7 @@ incorrect_arguments_rule(Parser *p) (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args")); + D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args")); _res = _PyPegen_arguments_parsing_error ( p , a ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -14563,7 +14555,7 @@ incorrect_arguments_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args")); } _res = NULL; @@ -14718,7 +14710,7 @@ invalid_assignment_rule(Parser *p) D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression")); Token * _literal; Token * _literal_1; - asdl_seq * _loop0_128_var; + asdl_seq * _loop0_126_var; expr_ty a; expr_ty expression_var; if ( @@ -14726,7 +14718,7 @@ invalid_assignment_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_loop0_128_var = _loop0_128_rule(p)) // star_named_expressions* + (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions* && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -14783,10 +14775,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='")); Token * _literal; - asdl_seq * _loop0_129_var; + asdl_seq * _loop0_127_var; expr_ty a; if ( - (_loop0_129_var = _loop0_129_rule(p)) // ((star_targets '='))* + (_loop0_127_var = _loop0_127_rule(p)) // ((star_targets '='))* && (a = star_expressions_rule(p)) // star_expressions && @@ -14813,10 +14805,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='")); Token * _literal; - asdl_seq * _loop0_130_var; + asdl_seq * _loop0_128_var; expr_ty a; if ( - (_loop0_130_var = _loop0_130_rule(p)) // ((star_targets '='))* + (_loop0_128_var = _loop0_128_rule(p)) // ((star_targets '='))* && (a = yield_expr_rule(p)) // yield_expr && @@ -14842,7 +14834,7 @@ invalid_assignment_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); - void *_tmp_131_var; + void *_tmp_129_var; expr_ty a; AugOperator* augassign_var; if ( @@ -14850,7 +14842,7 @@ invalid_assignment_rule(Parser *p) && (augassign_var = augassign_rule(p)) // augassign && - (_tmp_131_var = _tmp_131_rule(p)) // yield_expr | star_expressions + (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); @@ -15044,6 +15036,51 @@ invalid_block_rule(Parser *p) return _res; } +// Left-recursive +// invalid_primary: primary '{' +static void * +invalid_primary_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // primary '{' + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '{'")); + Token * a; + expr_ty primary_var; + if ( + (primary_var = primary_rule(p)) // primary + && + (a = _PyPegen_expect_token(p, 25)) // token='{' + ) + { + D(fprintf(stderr, "%*c+ invalid_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '{'")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid syntax" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_primary[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '{'")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + // invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses static void * invalid_comprehension_rule(Parser *p) @@ -15061,11 +15098,11 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses")); - void *_tmp_132_var; + void *_tmp_130_var; expr_ty a; asdl_seq* for_if_clauses_var; if ( - (_tmp_132_var = _tmp_132_rule(p)) // '[' | '(' | '{' + (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{' && (a = starred_expression_rule(p)) // starred_expression && @@ -15162,13 +15199,13 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* (slash_with_default | param_with_default+) param_no_default")); - asdl_seq * _loop0_133_var; - void *_tmp_134_var; + asdl_seq * _loop0_131_var; + void *_tmp_132_var; arg_ty param_no_default_var; if ( - (_loop0_133_var = _loop0_133_rule(p)) // param_no_default* + (_loop0_131_var = _loop0_131_rule(p)) // param_no_default* && - (_tmp_134_var = _tmp_134_rule(p)) // slash_with_default | param_with_default+ + (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+ && (param_no_default_var = param_no_default_rule(p)) // param_no_default ) @@ -15210,13 +15247,13 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default")); - asdl_seq * _loop0_135_var; - void *_tmp_136_var; + asdl_seq * _loop0_133_var; + void *_tmp_134_var; arg_ty lambda_param_no_default_var; if ( - (_loop0_135_var = _loop0_135_rule(p)) // lambda_param_no_default* + (_loop0_133_var = _loop0_133_rule(p)) // lambda_param_no_default* && - (_tmp_136_var = _tmp_136_rule(p)) // lambda_slash_with_default | lambda_param_with_default+ + (_tmp_134_var = _tmp_134_rule(p)) // lambda_slash_with_default | lambda_param_with_default+ && (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) @@ -15258,11 +15295,11 @@ invalid_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); Token * _literal; - void *_tmp_137_var; + void *_tmp_135_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_137_var = _tmp_137_rule(p)) // ')' | ',' (')' | '**') + (_tmp_135_var = _tmp_135_rule(p)) // ')' | ',' (')' | '**') ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); @@ -15332,11 +15369,11 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); Token * _literal; - void *_tmp_138_var; + void *_tmp_136_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_138_var = _tmp_138_rule(p)) // ':' | ',' (':' | '**') + (_tmp_136_var = _tmp_136_rule(p)) // ':' | ',' (':' | '**') ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); @@ -16845,12 +16882,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_139_var; + void *_tmp_137_var; while ( - (_tmp_139_var = _tmp_139_rule(p)) // star_targets '=' + (_tmp_137_var = _tmp_137_rule(p)) // star_targets '=' ) { - _res = _tmp_139_var; + _res = _tmp_137_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -17353,12 +17390,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_140_var; + void *_tmp_138_var; while ( - (_tmp_140_var = _tmp_140_rule(p)) // '.' | '...' + (_tmp_138_var = _tmp_138_rule(p)) // '.' | '...' ) { - _res = _tmp_140_var; + _res = _tmp_138_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -17419,12 +17456,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_141_var; + void *_tmp_139_var; while ( - (_tmp_141_var = _tmp_141_rule(p)) // '.' | '...' + (_tmp_139_var = _tmp_139_rule(p)) // '.' | '...' ) { - _res = _tmp_141_var; + _res = _tmp_139_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -19581,12 +19618,12 @@ _loop1_68_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_142_var; + void *_tmp_140_var; while ( - (_tmp_142_var = _tmp_142_rule(p)) // '@' named_expression NEWLINE + (_tmp_140_var = _tmp_140_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_142_var; + _res = _tmp_140_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -19672,123 +19709,9 @@ _tmp_69_rule(Parser *p) return _res; } -// _loop0_71: ',' star_expression -static asdl_seq * -_loop0_71_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - int _start_mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - ssize_t _children_capacity = 1; - ssize_t _n = 0; - { // ',' star_expression - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); - Token * _literal; - expr_ty elem; - while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = star_expression_rule(p)) // star_expression - ) - { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - D(p->level--); - return NULL; - } - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); - } - asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); - PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_71_type, _seq); - D(p->level--); - return _seq; -} - -// _gather_70: star_expression _loop0_71 -static asdl_seq * -_gather_70_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq * _res = NULL; - int _mark = p->mark; - { // star_expression _loop0_71 - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _gather_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression _loop0_71")); - expr_ty elem; - asdl_seq * seq; - if ( - (elem = star_expression_rule(p)) // star_expression - && - (seq = _loop0_71_rule(p)) // _loop0_71 - ) - { - D(fprintf(stderr, "%*c+ _gather_70[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression _loop0_71")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_70[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression _loop0_71")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// _loop1_72: (',' star_expression) +// _loop1_70: (',' star_expression) static asdl_seq * -_loop1_72_rule(Parser *p) +_loop1_70_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -19812,13 +19735,13 @@ _loop1_72_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_143_var; + D(fprintf(stderr, "%*c> _loop1_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); + void *_tmp_141_var; while ( - (_tmp_143_var = _tmp_143_rule(p)) // ',' star_expression + (_tmp_141_var = _tmp_141_rule(p)) // ',' star_expression ) { - _res = _tmp_143_var; + _res = _tmp_141_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -19834,7 +19757,7 @@ _loop1_72_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_70[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)")); } if (_n == 0 || p->error_indicator) { @@ -19852,14 +19775,14 @@ _loop1_72_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_72_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_70_type, _seq); D(p->level--); return _seq; } -// _loop0_74: ',' star_named_expression +// _loop0_72: ',' star_named_expression static asdl_seq * -_loop0_74_rule(Parser *p) +_loop0_72_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -19883,7 +19806,7 @@ _loop0_74_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression")); + D(fprintf(stderr, "%*c> _loop0_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression")); Token * _literal; expr_ty elem; while ( @@ -19914,7 +19837,7 @@ _loop0_74_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_72[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -19927,14 +19850,14 @@ _loop0_74_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_74_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_72_type, _seq); D(p->level--); return _seq; } -// _gather_73: star_named_expression _loop0_74 +// _gather_71: star_named_expression _loop0_72 static asdl_seq * -_gather_73_rule(Parser *p) +_gather_71_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -19943,27 +19866,27 @@ _gather_73_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // star_named_expression _loop0_74 + { // star_named_expression _loop0_72 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_74")); + D(fprintf(stderr, "%*c> _gather_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_72")); expr_ty elem; asdl_seq * seq; if ( (elem = star_named_expression_rule(p)) // star_named_expression && - (seq = _loop0_74_rule(p)) // _loop0_74 + (seq = _loop0_72_rule(p)) // _loop0_72 ) { - D(fprintf(stderr, "%*c+ _gather_73[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_74")); + D(fprintf(stderr, "%*c+ _gather_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_72")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_73[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_74")); + D(fprintf(stderr, "%*c%s _gather_71[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_72")); } _res = NULL; done: @@ -19971,9 +19894,9 @@ _gather_73_rule(Parser *p) return _res; } -// _loop1_75: (',' expression) +// _loop1_73: (',' expression) static asdl_seq * -_loop1_75_rule(Parser *p) +_loop1_73_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -19997,13 +19920,13 @@ _loop1_75_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_144_var; + D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); + void *_tmp_142_var; while ( - (_tmp_144_var = _tmp_144_rule(p)) // ',' expression + (_tmp_142_var = _tmp_142_rule(p)) // ',' expression ) { - _res = _tmp_144_var; + _res = _tmp_142_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -20019,7 +19942,7 @@ _loop1_75_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)")); } if (_n == 0 || p->error_indicator) { @@ -20037,14 +19960,14 @@ _loop1_75_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_75_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_73_type, _seq); D(p->level--); return _seq; } -// _loop0_76: lambda_param_no_default +// _loop0_74: lambda_param_no_default static asdl_seq * -_loop0_76_rule(Parser *p) +_loop0_74_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20068,7 +19991,7 @@ _loop0_76_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20090,7 +20013,7 @@ _loop0_76_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20103,14 +20026,14 @@ _loop0_76_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_74_type, _seq); D(p->level--); return _seq; } -// _loop0_77: lambda_param_with_default +// _loop0_75: lambda_param_with_default static asdl_seq * -_loop0_77_rule(Parser *p) +_loop0_75_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20134,7 +20057,7 @@ _loop0_77_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop0_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20156,7 +20079,7 @@ _loop0_77_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_75[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20169,14 +20092,14 @@ _loop0_77_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq); D(p->level--); return _seq; } -// _loop0_78: lambda_param_with_default +// _loop0_76: lambda_param_with_default static asdl_seq * -_loop0_78_rule(Parser *p) +_loop0_76_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20200,7 +20123,7 @@ _loop0_78_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20222,7 +20145,7 @@ _loop0_78_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20235,14 +20158,14 @@ _loop0_78_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_78_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq); D(p->level--); return _seq; } -// _loop1_79: lambda_param_no_default +// _loop1_77: lambda_param_no_default static asdl_seq * -_loop1_79_rule(Parser *p) +_loop1_77_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20266,7 +20189,7 @@ _loop1_79_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop1_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20288,7 +20211,7 @@ _loop1_79_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_79[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_77[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -20306,14 +20229,14 @@ _loop1_79_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_79_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_77_type, _seq); D(p->level--); return _seq; } -// _loop0_80: lambda_param_with_default +// _loop0_78: lambda_param_with_default static asdl_seq * -_loop0_80_rule(Parser *p) +_loop0_78_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20337,7 +20260,7 @@ _loop0_80_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20359,7 +20282,7 @@ _loop0_80_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_80[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20372,14 +20295,14 @@ _loop0_80_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_80_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_78_type, _seq); D(p->level--); return _seq; } -// _loop1_81: lambda_param_with_default +// _loop1_79: lambda_param_with_default static asdl_seq * -_loop1_81_rule(Parser *p) +_loop1_79_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20403,7 +20326,7 @@ _loop1_81_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20425,7 +20348,7 @@ _loop1_81_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_79[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -20443,14 +20366,14 @@ _loop1_81_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_79_type, _seq); D(p->level--); return _seq; } -// _loop1_82: lambda_param_no_default +// _loop1_80: lambda_param_no_default static asdl_seq * -_loop1_82_rule(Parser *p) +_loop1_80_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20474,7 +20397,7 @@ _loop1_82_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20496,7 +20419,7 @@ _loop1_82_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_82[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -20514,14 +20437,14 @@ _loop1_82_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq); D(p->level--); return _seq; } -// _loop1_83: lambda_param_no_default +// _loop1_81: lambda_param_no_default static asdl_seq * -_loop1_83_rule(Parser *p) +_loop1_81_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20545,7 +20468,7 @@ _loop1_83_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20567,7 +20490,7 @@ _loop1_83_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_83[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -20585,14 +20508,14 @@ _loop1_83_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_83_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq); D(p->level--); return _seq; } -// _loop0_84: lambda_param_no_default +// _loop0_82: lambda_param_no_default static asdl_seq * -_loop0_84_rule(Parser *p) +_loop0_82_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20616,7 +20539,7 @@ _loop0_84_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20638,7 +20561,7 @@ _loop0_84_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_84[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20651,14 +20574,14 @@ _loop0_84_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_84_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_82_type, _seq); D(p->level--); return _seq; } -// _loop1_85: lambda_param_with_default +// _loop1_83: lambda_param_with_default static asdl_seq * -_loop1_85_rule(Parser *p) +_loop1_83_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20682,7 +20605,7 @@ _loop1_85_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20704,7 +20627,7 @@ _loop1_85_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_83[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -20722,14 +20645,14 @@ _loop1_85_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_85_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_83_type, _seq); D(p->level--); return _seq; } -// _loop0_86: lambda_param_no_default +// _loop0_84: lambda_param_no_default static asdl_seq * -_loop0_86_rule(Parser *p) +_loop0_84_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20753,7 +20676,7 @@ _loop0_86_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -20775,7 +20698,7 @@ _loop0_86_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_86[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_84[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20788,14 +20711,14 @@ _loop0_86_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_86_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_84_type, _seq); D(p->level--); return _seq; } -// _loop1_87: lambda_param_with_default +// _loop1_85: lambda_param_with_default static asdl_seq * -_loop1_87_rule(Parser *p) +_loop1_85_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20819,7 +20742,7 @@ _loop1_87_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -20841,7 +20764,7 @@ _loop1_87_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_87[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -20859,14 +20782,14 @@ _loop1_87_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_87_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_85_type, _seq); D(p->level--); return _seq; } -// _loop0_88: lambda_param_maybe_default +// _loop0_86: lambda_param_maybe_default static asdl_seq * -_loop0_88_rule(Parser *p) +_loop0_86_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20890,7 +20813,7 @@ _loop0_88_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -20912,7 +20835,7 @@ _loop0_88_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_86[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -20925,14 +20848,14 @@ _loop0_88_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_88_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_86_type, _seq); D(p->level--); return _seq; } -// _loop1_89: lambda_param_maybe_default +// _loop1_87: lambda_param_maybe_default static asdl_seq * -_loop1_89_rule(Parser *p) +_loop1_87_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -20956,7 +20879,7 @@ _loop1_89_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop1_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -20978,7 +20901,7 @@ _loop1_89_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_87[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } if (_n == 0 || p->error_indicator) { @@ -20996,14 +20919,14 @@ _loop1_89_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_87_type, _seq); D(p->level--); return _seq; } -// _loop1_90: ('or' conjunction) +// _loop1_88: ('or' conjunction) static asdl_seq * -_loop1_90_rule(Parser *p) +_loop1_88_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21027,13 +20950,13 @@ _loop1_90_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_145_var; + D(fprintf(stderr, "%*c> _loop1_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); + void *_tmp_143_var; while ( - (_tmp_145_var = _tmp_145_rule(p)) // 'or' conjunction + (_tmp_143_var = _tmp_143_rule(p)) // 'or' conjunction ) { - _res = _tmp_145_var; + _res = _tmp_143_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -21049,7 +20972,7 @@ _loop1_90_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_90[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_88[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)")); } if (_n == 0 || p->error_indicator) { @@ -21067,14 +20990,14 @@ _loop1_90_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq); D(p->level--); return _seq; } -// _loop1_91: ('and' inversion) +// _loop1_89: ('and' inversion) static asdl_seq * -_loop1_91_rule(Parser *p) +_loop1_89_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21098,13 +21021,13 @@ _loop1_91_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_146_var; + D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); + void *_tmp_144_var; while ( - (_tmp_146_var = _tmp_146_rule(p)) // 'and' inversion + (_tmp_144_var = _tmp_144_rule(p)) // 'and' inversion ) { - _res = _tmp_146_var; + _res = _tmp_144_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -21120,7 +21043,7 @@ _loop1_91_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_91[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)")); } if (_n == 0 || p->error_indicator) { @@ -21138,14 +21061,14 @@ _loop1_91_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq); D(p->level--); return _seq; } -// _loop1_92: compare_op_bitwise_or_pair +// _loop1_90: compare_op_bitwise_or_pair static asdl_seq * -_loop1_92_rule(Parser *p) +_loop1_90_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21169,7 +21092,7 @@ _loop1_92_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair")); + D(fprintf(stderr, "%*c> _loop1_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair")); CmpopExprPair* compare_op_bitwise_or_pair_var; while ( (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p)) // compare_op_bitwise_or_pair @@ -21191,7 +21114,7 @@ _loop1_92_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_92[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_90[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair")); } if (_n == 0 || p->error_indicator) { @@ -21209,14 +21132,14 @@ _loop1_92_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_92_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq); D(p->level--); return _seq; } -// _tmp_93: '!=' +// _tmp_91: '!=' static void * -_tmp_93_rule(Parser *p) +_tmp_91_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21230,14 +21153,14 @@ _tmp_93_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='")); + D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='")); Token * tok; if ( (tok = _PyPegen_expect_token(p, 28)) // token='!=' ) { - D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='")); - _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok; + D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='")); + _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; D(p->level--); @@ -21246,7 +21169,7 @@ _tmp_93_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='")); } _res = NULL; @@ -21255,9 +21178,9 @@ _tmp_93_rule(Parser *p) return _res; } -// _loop0_95: ',' slice +// _loop0_93: ',' slice static asdl_seq * -_loop0_95_rule(Parser *p) +_loop0_93_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21281,7 +21204,7 @@ _loop0_95_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice")); + D(fprintf(stderr, "%*c> _loop0_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice")); Token * _literal; expr_ty elem; while ( @@ -21312,7 +21235,7 @@ _loop0_95_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_93[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -21325,14 +21248,14 @@ _loop0_95_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_95_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_93_type, _seq); D(p->level--); return _seq; } -// _gather_94: slice _loop0_95 +// _gather_92: slice _loop0_93 static asdl_seq * -_gather_94_rule(Parser *p) +_gather_92_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21341,27 +21264,27 @@ _gather_94_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // slice _loop0_95 + { // slice _loop0_93 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_95")); + D(fprintf(stderr, "%*c> _gather_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_93")); expr_ty elem; asdl_seq * seq; if ( (elem = slice_rule(p)) // slice && - (seq = _loop0_95_rule(p)) // _loop0_95 + (seq = _loop0_93_rule(p)) // _loop0_93 ) { - D(fprintf(stderr, "%*c+ _gather_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_95")); + D(fprintf(stderr, "%*c+ _gather_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_93")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_94[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_95")); + D(fprintf(stderr, "%*c%s _gather_92[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_93")); } _res = NULL; done: @@ -21369,9 +21292,9 @@ _gather_94_rule(Parser *p) return _res; } -// _tmp_96: ':' expression? +// _tmp_94: ':' expression? static void * -_tmp_96_rule(Parser *p) +_tmp_94_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21385,7 +21308,7 @@ _tmp_96_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?")); + D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?")); Token * _literal; void *d; if ( @@ -21394,7 +21317,7 @@ _tmp_96_rule(Parser *p) (d = expression_rule(p), 1) // expression? ) { - D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?")); + D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?")); _res = d; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -21404,7 +21327,7 @@ _tmp_96_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?")); } _res = NULL; @@ -21413,9 +21336,9 @@ _tmp_96_rule(Parser *p) return _res; } -// _tmp_97: tuple | group | genexp +// _tmp_95: tuple | group | genexp static void * -_tmp_97_rule(Parser *p) +_tmp_95_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21429,18 +21352,18 @@ _tmp_97_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); expr_ty tuple_var; if ( (tuple_var = tuple_rule(p)) // tuple ) { - D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); _res = tuple_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple")); } { // group @@ -21448,18 +21371,18 @@ _tmp_97_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group")); expr_ty group_var; if ( (group_var = group_rule(p)) // group ) { - D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group")); _res = group_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group")); } { // genexp @@ -21467,18 +21390,18 @@ _tmp_97_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); expr_ty genexp_var; if ( (genexp_var = genexp_rule(p)) // genexp ) { - D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); _res = genexp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp")); } _res = NULL; @@ -21487,9 +21410,9 @@ _tmp_97_rule(Parser *p) return _res; } -// _tmp_98: list | listcomp +// _tmp_96: list | listcomp static void * -_tmp_98_rule(Parser *p) +_tmp_96_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21503,18 +21426,18 @@ _tmp_98_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); expr_ty list_var; if ( (list_var = list_rule(p)) // list ) { - D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); _res = list_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list")); } { // listcomp @@ -21522,18 +21445,18 @@ _tmp_98_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp")); + D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp")); expr_ty listcomp_var; if ( (listcomp_var = listcomp_rule(p)) // listcomp ) { - D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp")); + D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp")); _res = listcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp")); } _res = NULL; @@ -21542,9 +21465,9 @@ _tmp_98_rule(Parser *p) return _res; } -// _tmp_99: dict | set | dictcomp | setcomp +// _tmp_97: dict | set | dictcomp | setcomp static void * -_tmp_99_rule(Parser *p) +_tmp_97_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21558,18 +21481,18 @@ _tmp_99_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict")); + D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict")); expr_ty dict_var; if ( (dict_var = dict_rule(p)) // dict ) { - D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict")); + D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict")); _res = dict_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict")); } { // set @@ -21577,18 +21500,18 @@ _tmp_99_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set")); + D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set")); expr_ty set_var; if ( (set_var = set_rule(p)) // set ) { - D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set")); + D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set")); _res = set_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set")); } { // dictcomp @@ -21596,18 +21519,18 @@ _tmp_99_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp")); + D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp")); expr_ty dictcomp_var; if ( (dictcomp_var = dictcomp_rule(p)) // dictcomp ) { - D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp")); + D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp")); _res = dictcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp")); } { // setcomp @@ -21615,18 +21538,18 @@ _tmp_99_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp")); + D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp")); expr_ty setcomp_var; if ( (setcomp_var = setcomp_rule(p)) // setcomp ) { - D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp")); + D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp")); _res = setcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp")); } _res = NULL; @@ -21635,9 +21558,9 @@ _tmp_99_rule(Parser *p) return _res; } -// _loop1_100: STRING +// _loop1_98: STRING static asdl_seq * -_loop1_100_rule(Parser *p) +_loop1_98_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21661,7 +21584,7 @@ _loop1_100_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING")); + D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING")); expr_ty string_var; while ( (string_var = _PyPegen_string_token(p)) // STRING @@ -21683,7 +21606,7 @@ _loop1_100_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_100[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING")); } if (_n == 0 || p->error_indicator) { @@ -21701,14 +21624,14 @@ _loop1_100_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_100_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_98_type, _seq); D(p->level--); return _seq; } -// _tmp_101: star_named_expression ',' star_named_expressions? +// _tmp_99: star_named_expression ',' star_named_expressions? static void * -_tmp_101_rule(Parser *p) +_tmp_99_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21722,7 +21645,7 @@ _tmp_101_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); + D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); Token * _literal; expr_ty y; void *z; @@ -21734,7 +21657,7 @@ _tmp_101_rule(Parser *p) (z = star_named_expressions_rule(p), 1) // star_named_expressions? ) { - D(fprintf(stderr, "%*c+ _tmp_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); + D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); _res = _PyPegen_seq_insert_in_front ( p , y , z ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -21744,7 +21667,7 @@ _tmp_101_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_101[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?")); } _res = NULL; @@ -21753,9 +21676,9 @@ _tmp_101_rule(Parser *p) return _res; } -// _tmp_102: yield_expr | named_expression +// _tmp_100: yield_expr | named_expression static void * -_tmp_102_rule(Parser *p) +_tmp_100_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21769,18 +21692,18 @@ _tmp_102_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_102[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // named_expression @@ -21788,18 +21711,18 @@ _tmp_102_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression")); + D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression")); expr_ty named_expression_var; if ( (named_expression_var = named_expression_rule(p)) // named_expression ) { - D(fprintf(stderr, "%*c+ _tmp_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression")); + D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression")); _res = named_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_102[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression")); } _res = NULL; @@ -21808,9 +21731,9 @@ _tmp_102_rule(Parser *p) return _res; } -// _loop0_104: ',' double_starred_kvpair +// _loop0_102: ',' double_starred_kvpair static asdl_seq * -_loop0_104_rule(Parser *p) +_loop0_102_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21834,7 +21757,7 @@ _loop0_104_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -21865,7 +21788,7 @@ _loop0_104_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_104[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -21878,14 +21801,14 @@ _loop0_104_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_104_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_102_type, _seq); D(p->level--); return _seq; } -// _gather_103: double_starred_kvpair _loop0_104 +// _gather_101: double_starred_kvpair _loop0_102 static asdl_seq * -_gather_103_rule(Parser *p) +_gather_101_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21894,27 +21817,27 @@ _gather_103_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_104 + { // double_starred_kvpair _loop0_102 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_104")); + D(fprintf(stderr, "%*c> _gather_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_102")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_104_rule(p)) // _loop0_104 + (seq = _loop0_102_rule(p)) // _loop0_102 ) { - D(fprintf(stderr, "%*c+ _gather_103[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_104")); + D(fprintf(stderr, "%*c+ _gather_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_102")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_103[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_104")); + D(fprintf(stderr, "%*c%s _gather_101[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_102")); } _res = NULL; done: @@ -21922,9 +21845,9 @@ _gather_103_rule(Parser *p) return _res; } -// _loop1_105: for_if_clause +// _loop1_103: for_if_clause static asdl_seq * -_loop1_105_rule(Parser *p) +_loop1_103_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -21948,7 +21871,7 @@ _loop1_105_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause")); + D(fprintf(stderr, "%*c> _loop1_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause")); comprehension_ty for_if_clause_var; while ( (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause @@ -21970,7 +21893,7 @@ _loop1_105_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_105[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_103[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause")); } if (_n == 0 || p->error_indicator) { @@ -21988,14 +21911,14 @@ _loop1_105_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_105_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_103_type, _seq); D(p->level--); return _seq; } -// _loop0_106: ('if' disjunction) +// _loop0_104: ('if' disjunction) static asdl_seq * -_loop0_106_rule(Parser *p) +_loop0_104_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22019,13 +21942,13 @@ _loop0_106_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_147_var; + D(fprintf(stderr, "%*c> _loop0_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); + void *_tmp_145_var; while ( - (_tmp_147_var = _tmp_147_rule(p)) // 'if' disjunction + (_tmp_145_var = _tmp_145_rule(p)) // 'if' disjunction ) { - _res = _tmp_147_var; + _res = _tmp_145_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22041,7 +21964,7 @@ _loop0_106_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_106[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_104[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22054,14 +21977,14 @@ _loop0_106_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_104_type, _seq); D(p->level--); return _seq; } -// _loop0_107: ('if' disjunction) +// _loop0_105: ('if' disjunction) static asdl_seq * -_loop0_107_rule(Parser *p) +_loop0_105_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22085,13 +22008,13 @@ _loop0_107_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_148_var; + D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); + void *_tmp_146_var; while ( - (_tmp_148_var = _tmp_148_rule(p)) // 'if' disjunction + (_tmp_146_var = _tmp_146_rule(p)) // 'if' disjunction ) { - _res = _tmp_148_var; + _res = _tmp_146_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22107,7 +22030,7 @@ _loop0_107_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_107[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22120,14 +22043,14 @@ _loop0_107_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_107_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq); D(p->level--); return _seq; } -// _loop0_109: ',' (starred_expression | named_expression !'=') +// _loop0_107: ',' (starred_expression | named_expression !'=') static asdl_seq * -_loop0_109_rule(Parser *p) +_loop0_107_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22151,13 +22074,13 @@ _loop0_109_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | named_expression !'=')")); + D(fprintf(stderr, "%*c> _loop0_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | named_expression !'=')")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_149_rule(p)) // starred_expression | named_expression !'=' + (elem = _tmp_147_rule(p)) // starred_expression | named_expression !'=' ) { _res = elem; @@ -22182,7 +22105,7 @@ _loop0_109_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_109[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_107[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | named_expression !'=')")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22195,14 +22118,14 @@ _loop0_109_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_109_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_107_type, _seq); D(p->level--); return _seq; } -// _gather_108: (starred_expression | named_expression !'=') _loop0_109 +// _gather_106: (starred_expression | named_expression !'=') _loop0_107 static asdl_seq * -_gather_108_rule(Parser *p) +_gather_106_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22211,27 +22134,27 @@ _gather_108_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (starred_expression | named_expression !'=') _loop0_109 + { // (starred_expression | named_expression !'=') _loop0_107 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_109")); + D(fprintf(stderr, "%*c> _gather_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_107")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_149_rule(p)) // starred_expression | named_expression !'=' + (elem = _tmp_147_rule(p)) // starred_expression | named_expression !'=' && - (seq = _loop0_109_rule(p)) // _loop0_109 + (seq = _loop0_107_rule(p)) // _loop0_107 ) { - D(fprintf(stderr, "%*c+ _gather_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_109")); + D(fprintf(stderr, "%*c+ _gather_106[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_107")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_108[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_109")); + D(fprintf(stderr, "%*c%s _gather_106[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | named_expression !'=') _loop0_107")); } _res = NULL; done: @@ -22239,9 +22162,9 @@ _gather_108_rule(Parser *p) return _res; } -// _tmp_110: ',' kwargs +// _tmp_108: ',' kwargs static void * -_tmp_110_rule(Parser *p) +_tmp_108_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22255,7 +22178,7 @@ _tmp_110_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs")); + D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs")); Token * _literal; asdl_seq* k; if ( @@ -22264,7 +22187,7 @@ _tmp_110_rule(Parser *p) (k = kwargs_rule(p)) // kwargs ) { - D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs")); + D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs")); _res = k; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -22274,7 +22197,7 @@ _tmp_110_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs")); } _res = NULL; @@ -22283,9 +22206,9 @@ _tmp_110_rule(Parser *p) return _res; } -// _loop0_112: ',' kwarg_or_starred +// _loop0_110: ',' kwarg_or_starred static asdl_seq * -_loop0_112_rule(Parser *p) +_loop0_110_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22309,7 +22232,7 @@ _loop0_112_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); + D(fprintf(stderr, "%*c> _loop0_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); Token * _literal; KeywordOrStarred* elem; while ( @@ -22340,7 +22263,7 @@ _loop0_112_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_110[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22353,14 +22276,14 @@ _loop0_112_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq); D(p->level--); return _seq; } -// _gather_111: kwarg_or_starred _loop0_112 +// _gather_109: kwarg_or_starred _loop0_110 static asdl_seq * -_gather_111_rule(Parser *p) +_gather_109_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22369,27 +22292,27 @@ _gather_111_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // kwarg_or_starred _loop0_112 + { // kwarg_or_starred _loop0_110 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_112")); + D(fprintf(stderr, "%*c> _gather_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_110")); KeywordOrStarred* elem; asdl_seq * seq; if ( (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred && - (seq = _loop0_112_rule(p)) // _loop0_112 + (seq = _loop0_110_rule(p)) // _loop0_110 ) { - D(fprintf(stderr, "%*c+ _gather_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_112")); + D(fprintf(stderr, "%*c+ _gather_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_110")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_112")); + D(fprintf(stderr, "%*c%s _gather_109[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_110")); } _res = NULL; done: @@ -22397,9 +22320,9 @@ _gather_111_rule(Parser *p) return _res; } -// _loop0_114: ',' kwarg_or_double_starred +// _loop0_112: ',' kwarg_or_double_starred static asdl_seq * -_loop0_114_rule(Parser *p) +_loop0_112_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22423,7 +22346,7 @@ _loop0_114_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); + D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); Token * _literal; KeywordOrStarred* elem; while ( @@ -22454,7 +22377,7 @@ _loop0_114_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22467,14 +22390,14 @@ _loop0_114_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq); D(p->level--); return _seq; } -// _gather_113: kwarg_or_double_starred _loop0_114 +// _gather_111: kwarg_or_double_starred _loop0_112 static asdl_seq * -_gather_113_rule(Parser *p) +_gather_111_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22483,27 +22406,27 @@ _gather_113_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // kwarg_or_double_starred _loop0_114 + { // kwarg_or_double_starred _loop0_112 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_114")); + D(fprintf(stderr, "%*c> _gather_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_112")); KeywordOrStarred* elem; asdl_seq * seq; if ( (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred && - (seq = _loop0_114_rule(p)) // _loop0_114 + (seq = _loop0_112_rule(p)) // _loop0_112 ) { - D(fprintf(stderr, "%*c+ _gather_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_114")); + D(fprintf(stderr, "%*c+ _gather_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_112")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_113[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_114")); + D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_112")); } _res = NULL; done: @@ -22511,9 +22434,9 @@ _gather_113_rule(Parser *p) return _res; } -// _loop0_116: ',' kwarg_or_starred +// _loop0_114: ',' kwarg_or_starred static asdl_seq * -_loop0_116_rule(Parser *p) +_loop0_114_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22537,7 +22460,7 @@ _loop0_116_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); + D(fprintf(stderr, "%*c> _loop0_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); Token * _literal; KeywordOrStarred* elem; while ( @@ -22568,7 +22491,7 @@ _loop0_116_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_116[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22581,14 +22504,14 @@ _loop0_116_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq); D(p->level--); return _seq; } -// _gather_115: kwarg_or_starred _loop0_116 +// _gather_113: kwarg_or_starred _loop0_114 static asdl_seq * -_gather_115_rule(Parser *p) +_gather_113_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22597,27 +22520,27 @@ _gather_115_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // kwarg_or_starred _loop0_116 + { // kwarg_or_starred _loop0_114 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_116")); + D(fprintf(stderr, "%*c> _gather_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_114")); KeywordOrStarred* elem; asdl_seq * seq; if ( (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred && - (seq = _loop0_116_rule(p)) // _loop0_116 + (seq = _loop0_114_rule(p)) // _loop0_114 ) { - D(fprintf(stderr, "%*c+ _gather_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_116")); + D(fprintf(stderr, "%*c+ _gather_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_114")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_115[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_116")); + D(fprintf(stderr, "%*c%s _gather_113[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_114")); } _res = NULL; done: @@ -22625,9 +22548,9 @@ _gather_115_rule(Parser *p) return _res; } -// _loop0_118: ',' kwarg_or_double_starred +// _loop0_116: ',' kwarg_or_double_starred static asdl_seq * -_loop0_118_rule(Parser *p) +_loop0_116_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22651,7 +22574,7 @@ _loop0_118_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); + D(fprintf(stderr, "%*c> _loop0_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); Token * _literal; KeywordOrStarred* elem; while ( @@ -22682,7 +22605,7 @@ _loop0_118_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_116[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22695,14 +22618,14 @@ _loop0_118_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_118_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq); D(p->level--); return _seq; } -// _gather_117: kwarg_or_double_starred _loop0_118 +// _gather_115: kwarg_or_double_starred _loop0_116 static asdl_seq * -_gather_117_rule(Parser *p) +_gather_115_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22711,27 +22634,27 @@ _gather_117_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // kwarg_or_double_starred _loop0_118 + { // kwarg_or_double_starred _loop0_116 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_118")); + D(fprintf(stderr, "%*c> _gather_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_116")); KeywordOrStarred* elem; asdl_seq * seq; if ( (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred && - (seq = _loop0_118_rule(p)) // _loop0_118 + (seq = _loop0_116_rule(p)) // _loop0_116 ) { - D(fprintf(stderr, "%*c+ _gather_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_118")); + D(fprintf(stderr, "%*c+ _gather_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_116")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_117[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_118")); + D(fprintf(stderr, "%*c%s _gather_115[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_116")); } _res = NULL; done: @@ -22739,9 +22662,9 @@ _gather_117_rule(Parser *p) return _res; } -// _loop0_119: (',' star_target) +// _loop0_117: (',' star_target) static asdl_seq * -_loop0_119_rule(Parser *p) +_loop0_117_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22765,13 +22688,13 @@ _loop0_119_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_150_var; + D(fprintf(stderr, "%*c> _loop0_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); + void *_tmp_148_var; while ( - (_tmp_150_var = _tmp_150_rule(p)) // ',' star_target + (_tmp_148_var = _tmp_148_rule(p)) // ',' star_target ) { - _res = _tmp_150_var; + _res = _tmp_148_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22787,7 +22710,7 @@ _loop0_119_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_117[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22800,14 +22723,14 @@ _loop0_119_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq); D(p->level--); return _seq; } -// _loop0_121: ',' star_target +// _loop0_119: ',' star_target static asdl_seq * -_loop0_121_rule(Parser *p) +_loop0_119_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22831,7 +22754,7 @@ _loop0_121_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty elem; while ( @@ -22862,7 +22785,7 @@ _loop0_121_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_121[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -22875,14 +22798,14 @@ _loop0_121_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_121_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq); D(p->level--); return _seq; } -// _gather_120: star_target _loop0_121 +// _gather_118: star_target _loop0_119 static asdl_seq * -_gather_120_rule(Parser *p) +_gather_118_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22891,27 +22814,27 @@ _gather_120_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // star_target _loop0_121 + { // star_target _loop0_119 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_121")); + D(fprintf(stderr, "%*c> _gather_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_119")); expr_ty elem; asdl_seq * seq; if ( (elem = star_target_rule(p)) // star_target && - (seq = _loop0_121_rule(p)) // _loop0_121 + (seq = _loop0_119_rule(p)) // _loop0_119 ) { - D(fprintf(stderr, "%*c+ _gather_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_121")); + D(fprintf(stderr, "%*c+ _gather_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_119")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_120[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_121")); + D(fprintf(stderr, "%*c%s _gather_118[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_119")); } _res = NULL; done: @@ -22919,9 +22842,9 @@ _gather_120_rule(Parser *p) return _res; } -// _tmp_122: !'*' star_target +// _tmp_120: !'*' star_target static void * -_tmp_122_rule(Parser *p) +_tmp_120_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22935,7 +22858,7 @@ _tmp_122_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); + D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); expr_ty star_target_var; if ( _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*' @@ -22943,12 +22866,12 @@ _tmp_122_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); + D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); _res = star_target_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target")); } _res = NULL; @@ -22957,9 +22880,9 @@ _tmp_122_rule(Parser *p) return _res; } -// _loop0_124: ',' del_target +// _loop0_122: ',' del_target static asdl_seq * -_loop0_124_rule(Parser *p) +_loop0_122_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -22983,7 +22906,7 @@ _loop0_124_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target")); + D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target")); Token * _literal; expr_ty elem; while ( @@ -23014,7 +22937,7 @@ _loop0_124_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23027,14 +22950,14 @@ _loop0_124_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq); D(p->level--); return _seq; } -// _gather_123: del_target _loop0_124 +// _gather_121: del_target _loop0_122 static asdl_seq * -_gather_123_rule(Parser *p) +_gather_121_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23043,27 +22966,27 @@ _gather_123_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // del_target _loop0_124 + { // del_target _loop0_122 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_124")); + D(fprintf(stderr, "%*c> _gather_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_122")); expr_ty elem; asdl_seq * seq; if ( (elem = del_target_rule(p)) // del_target && - (seq = _loop0_124_rule(p)) // _loop0_124 + (seq = _loop0_122_rule(p)) // _loop0_122 ) { - D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_124")); + D(fprintf(stderr, "%*c+ _gather_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_122")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_124")); + D(fprintf(stderr, "%*c%s _gather_121[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_122")); } _res = NULL; done: @@ -23071,9 +22994,9 @@ _gather_123_rule(Parser *p) return _res; } -// _loop0_126: ',' target +// _loop0_124: ',' target static asdl_seq * -_loop0_126_rule(Parser *p) +_loop0_124_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23097,7 +23020,7 @@ _loop0_126_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target")); + D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target")); Token * _literal; expr_ty elem; while ( @@ -23128,7 +23051,7 @@ _loop0_126_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_126[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23141,14 +23064,14 @@ _loop0_126_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq); D(p->level--); return _seq; } -// _gather_125: target _loop0_126 +// _gather_123: target _loop0_124 static asdl_seq * -_gather_125_rule(Parser *p) +_gather_123_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23157,27 +23080,27 @@ _gather_125_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // target _loop0_126 + { // target _loop0_124 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_126")); + D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_124")); expr_ty elem; asdl_seq * seq; if ( (elem = target_rule(p)) // target && - (seq = _loop0_126_rule(p)) // _loop0_126 + (seq = _loop0_124_rule(p)) // _loop0_124 ) { - D(fprintf(stderr, "%*c+ _gather_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_126")); + D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_124")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_125[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_126")); + D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_124")); } _res = NULL; done: @@ -23185,9 +23108,9 @@ _gather_125_rule(Parser *p) return _res; } -// _tmp_127: args | expression for_if_clauses +// _tmp_125: args | expression for_if_clauses static void * -_tmp_127_rule(Parser *p) +_tmp_125_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23201,18 +23124,18 @@ _tmp_127_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); expr_ty args_var; if ( (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); _res = args_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args")); } { // expression for_if_clauses @@ -23220,7 +23143,7 @@ _tmp_127_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); expr_ty expression_var; asdl_seq* for_if_clauses_var; if ( @@ -23229,12 +23152,12 @@ _tmp_127_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses")); } _res = NULL; @@ -23243,9 +23166,9 @@ _tmp_127_rule(Parser *p) return _res; } -// _loop0_128: star_named_expressions +// _loop0_126: star_named_expressions static asdl_seq * -_loop0_128_rule(Parser *p) +_loop0_126_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23269,7 +23192,7 @@ _loop0_128_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); + D(fprintf(stderr, "%*c> _loop0_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); asdl_seq* star_named_expressions_var; while ( (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions @@ -23291,7 +23214,7 @@ _loop0_128_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_126[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23304,14 +23227,14 @@ _loop0_128_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq); D(p->level--); return _seq; } -// _loop0_129: (star_targets '=') +// _loop0_127: (star_targets '=') static asdl_seq * -_loop0_129_rule(Parser *p) +_loop0_127_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23335,13 +23258,13 @@ _loop0_129_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_151_var; + D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_149_var; while ( - (_tmp_151_var = _tmp_151_rule(p)) // star_targets '=' + (_tmp_149_var = _tmp_149_rule(p)) // star_targets '=' ) { - _res = _tmp_151_var; + _res = _tmp_149_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23357,7 +23280,7 @@ _loop0_129_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23370,14 +23293,14 @@ _loop0_129_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_129_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_127_type, _seq); D(p->level--); return _seq; } -// _loop0_130: (star_targets '=') +// _loop0_128: (star_targets '=') static asdl_seq * -_loop0_130_rule(Parser *p) +_loop0_128_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23401,13 +23324,13 @@ _loop0_130_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_152_var; + D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_150_var; while ( - (_tmp_152_var = _tmp_152_rule(p)) // star_targets '=' + (_tmp_150_var = _tmp_150_rule(p)) // star_targets '=' ) { - _res = _tmp_152_var; + _res = _tmp_150_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23423,7 +23346,7 @@ _loop0_130_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23436,14 +23359,14 @@ _loop0_130_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_130_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq); D(p->level--); return _seq; } -// _tmp_131: yield_expr | star_expressions +// _tmp_129: yield_expr | star_expressions static void * -_tmp_131_rule(Parser *p) +_tmp_129_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23457,18 +23380,18 @@ _tmp_131_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -23476,18 +23399,18 @@ _tmp_131_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -23496,9 +23419,9 @@ _tmp_131_rule(Parser *p) return _res; } -// _tmp_132: '[' | '(' | '{' +// _tmp_130: '[' | '(' | '{' static void * -_tmp_132_rule(Parser *p) +_tmp_130_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23512,18 +23435,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '(' @@ -23531,18 +23454,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); } { // '{' @@ -23550,18 +23473,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -23570,9 +23493,9 @@ _tmp_132_rule(Parser *p) return _res; } -// _loop0_133: param_no_default +// _loop0_131: param_no_default static asdl_seq * -_loop0_133_rule(Parser *p) +_loop0_131_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23596,7 +23519,7 @@ _loop0_133_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -23618,7 +23541,7 @@ _loop0_133_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23631,14 +23554,14 @@ _loop0_133_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq); D(p->level--); return _seq; } -// _tmp_134: slash_with_default | param_with_default+ +// _tmp_132: slash_with_default | param_with_default+ static void * -_tmp_134_rule(Parser *p) +_tmp_132_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23652,18 +23575,18 @@ _tmp_134_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); SlashWithDefault* slash_with_default_var; if ( (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); _res = slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default")); } { // param_with_default+ @@ -23671,18 +23594,18 @@ _tmp_134_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - asdl_seq * _loop1_153_var; + D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); + asdl_seq * _loop1_151_var; if ( - (_loop1_153_var = _loop1_153_rule(p)) // param_with_default+ + (_loop1_151_var = _loop1_151_rule(p)) // param_with_default+ ) { - D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - _res = _loop1_153_var; + D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); + _res = _loop1_151_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+")); } _res = NULL; @@ -23691,9 +23614,9 @@ _tmp_134_rule(Parser *p) return _res; } -// _loop0_135: lambda_param_no_default +// _loop0_133: lambda_param_no_default static asdl_seq * -_loop0_135_rule(Parser *p) +_loop0_133_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23717,7 +23640,7 @@ _loop0_135_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -23739,7 +23662,7 @@ _loop0_135_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23752,14 +23675,14 @@ _loop0_135_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_135_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq); D(p->level--); return _seq; } -// _tmp_136: lambda_slash_with_default | lambda_param_with_default+ +// _tmp_134: lambda_slash_with_default | lambda_param_with_default+ static void * -_tmp_136_rule(Parser *p) +_tmp_134_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23773,18 +23696,18 @@ _tmp_136_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); SlashWithDefault* lambda_slash_with_default_var; if ( (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); _res = lambda_slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default")); } { // lambda_param_with_default+ @@ -23792,18 +23715,18 @@ _tmp_136_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - asdl_seq * _loop1_154_var; + D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); + asdl_seq * _loop1_152_var; if ( - (_loop1_154_var = _loop1_154_rule(p)) // lambda_param_with_default+ + (_loop1_152_var = _loop1_152_rule(p)) // lambda_param_with_default+ ) { - D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - _res = _loop1_154_var; + D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); + _res = _loop1_152_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+")); } _res = NULL; @@ -23812,9 +23735,9 @@ _tmp_136_rule(Parser *p) return _res; } -// _tmp_137: ')' | ',' (')' | '**') +// _tmp_135: ')' | ',' (')' | '**') static void * -_tmp_137_rule(Parser *p) +_tmp_135_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23828,18 +23751,18 @@ _tmp_137_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' (')' | '**') @@ -23847,21 +23770,21 @@ _tmp_137_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_155_var; + void *_tmp_153_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_155_var = _tmp_155_rule(p)) // ')' | '**' + (_tmp_153_var = _tmp_153_rule(p)) // ')' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_155_var); + D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_153_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')")); } _res = NULL; @@ -23870,9 +23793,9 @@ _tmp_137_rule(Parser *p) return _res; } -// _tmp_138: ':' | ',' (':' | '**') +// _tmp_136: ':' | ',' (':' | '**') static void * -_tmp_138_rule(Parser *p) +_tmp_136_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23886,18 +23809,18 @@ _tmp_138_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // ',' (':' | '**') @@ -23905,21 +23828,21 @@ _tmp_138_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_156_var; + void *_tmp_154_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_156_var = _tmp_156_rule(p)) // ':' | '**' + (_tmp_154_var = _tmp_154_rule(p)) // ':' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_156_var); + D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_154_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')")); } _res = NULL; @@ -23928,9 +23851,9 @@ _tmp_138_rule(Parser *p) return _res; } -// _tmp_139: star_targets '=' +// _tmp_137: star_targets '=' static void * -_tmp_139_rule(Parser *p) +_tmp_137_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23944,7 +23867,7 @@ _tmp_139_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -23953,7 +23876,7 @@ _tmp_139_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -23963,7 +23886,7 @@ _tmp_139_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -23972,9 +23895,9 @@ _tmp_139_rule(Parser *p) return _res; } -// _tmp_140: '.' | '...' +// _tmp_138: '.' | '...' static void * -_tmp_140_rule(Parser *p) +_tmp_138_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23988,18 +23911,18 @@ _tmp_140_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -24007,18 +23930,18 @@ _tmp_140_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -24027,9 +23950,9 @@ _tmp_140_rule(Parser *p) return _res; } -// _tmp_141: '.' | '...' +// _tmp_139: '.' | '...' static void * -_tmp_141_rule(Parser *p) +_tmp_139_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24043,18 +23966,18 @@ _tmp_141_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -24062,18 +23985,18 @@ _tmp_141_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -24082,9 +24005,9 @@ _tmp_141_rule(Parser *p) return _res; } -// _tmp_142: '@' named_expression NEWLINE +// _tmp_140: '@' named_expression NEWLINE static void * -_tmp_142_rule(Parser *p) +_tmp_140_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24098,7 +24021,7 @@ _tmp_142_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -24110,7 +24033,7 @@ _tmp_142_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24120,7 +24043,7 @@ _tmp_142_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -24129,9 +24052,9 @@ _tmp_142_rule(Parser *p) return _res; } -// _tmp_143: ',' star_expression +// _tmp_141: ',' star_expression static void * -_tmp_143_rule(Parser *p) +_tmp_141_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24145,7 +24068,7 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -24154,7 +24077,7 @@ _tmp_143_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24164,7 +24087,7 @@ _tmp_143_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -24173,9 +24096,9 @@ _tmp_143_rule(Parser *p) return _res; } -// _tmp_144: ',' expression +// _tmp_142: ',' expression static void * -_tmp_144_rule(Parser *p) +_tmp_142_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24189,7 +24112,7 @@ _tmp_144_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -24198,7 +24121,7 @@ _tmp_144_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24208,7 +24131,7 @@ _tmp_144_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -24217,9 +24140,9 @@ _tmp_144_rule(Parser *p) return _res; } -// _tmp_145: 'or' conjunction +// _tmp_143: 'or' conjunction static void * -_tmp_145_rule(Parser *p) +_tmp_143_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24233,7 +24156,7 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -24242,7 +24165,7 @@ _tmp_145_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24252,7 +24175,7 @@ _tmp_145_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -24261,9 +24184,9 @@ _tmp_145_rule(Parser *p) return _res; } -// _tmp_146: 'and' inversion +// _tmp_144: 'and' inversion static void * -_tmp_146_rule(Parser *p) +_tmp_144_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24277,7 +24200,7 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -24286,7 +24209,7 @@ _tmp_146_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24296,7 +24219,7 @@ _tmp_146_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -24305,9 +24228,9 @@ _tmp_146_rule(Parser *p) return _res; } -// _tmp_147: 'if' disjunction +// _tmp_145: 'if' disjunction static void * -_tmp_147_rule(Parser *p) +_tmp_145_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24321,7 +24244,7 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -24330,7 +24253,7 @@ _tmp_147_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24340,7 +24263,7 @@ _tmp_147_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -24349,9 +24272,9 @@ _tmp_147_rule(Parser *p) return _res; } -// _tmp_148: 'if' disjunction +// _tmp_146: 'if' disjunction static void * -_tmp_148_rule(Parser *p) +_tmp_146_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24365,7 +24288,7 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -24374,7 +24297,7 @@ _tmp_148_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24384,7 +24307,7 @@ _tmp_148_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -24393,9 +24316,9 @@ _tmp_148_rule(Parser *p) return _res; } -// _tmp_149: starred_expression | named_expression !'=' +// _tmp_147: starred_expression | named_expression !'=' static void * -_tmp_149_rule(Parser *p) +_tmp_147_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24409,18 +24332,18 @@ _tmp_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // named_expression !'=' @@ -24428,7 +24351,7 @@ _tmp_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); + D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); expr_ty named_expression_var; if ( (named_expression_var = named_expression_rule(p)) // named_expression @@ -24436,12 +24359,12 @@ _tmp_149_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); + D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); _res = named_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression !'='")); } _res = NULL; @@ -24450,9 +24373,9 @@ _tmp_149_rule(Parser *p) return _res; } -// _tmp_150: ',' star_target +// _tmp_148: ',' star_target static void * -_tmp_150_rule(Parser *p) +_tmp_148_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24466,7 +24389,7 @@ _tmp_150_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -24475,7 +24398,7 @@ _tmp_150_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24485,7 +24408,7 @@ _tmp_150_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -24494,9 +24417,9 @@ _tmp_150_rule(Parser *p) return _res; } -// _tmp_151: star_targets '=' +// _tmp_149: star_targets '=' static void * -_tmp_151_rule(Parser *p) +_tmp_149_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24510,7 +24433,7 @@ _tmp_151_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -24519,12 +24442,12 @@ _tmp_151_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -24533,9 +24456,9 @@ _tmp_151_rule(Parser *p) return _res; } -// _tmp_152: star_targets '=' +// _tmp_150: star_targets '=' static void * -_tmp_152_rule(Parser *p) +_tmp_150_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24549,7 +24472,7 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -24558,12 +24481,12 @@ _tmp_152_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -24572,9 +24495,9 @@ _tmp_152_rule(Parser *p) return _res; } -// _loop1_153: param_with_default +// _loop1_151: param_with_default static asdl_seq * -_loop1_153_rule(Parser *p) +_loop1_151_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24598,7 +24521,7 @@ _loop1_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -24620,7 +24543,7 @@ _loop1_153_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -24638,14 +24561,14 @@ _loop1_153_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_153_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_151_type, _seq); D(p->level--); return _seq; } -// _loop1_154: lambda_param_with_default +// _loop1_152: lambda_param_with_default static asdl_seq * -_loop1_154_rule(Parser *p) +_loop1_152_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24669,7 +24592,7 @@ _loop1_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -24691,7 +24614,7 @@ _loop1_154_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -24709,14 +24632,14 @@ _loop1_154_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_154_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_152_type, _seq); D(p->level--); return _seq; } -// _tmp_155: ')' | '**' +// _tmp_153: ')' | '**' static void * -_tmp_155_rule(Parser *p) +_tmp_153_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24730,18 +24653,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -24749,18 +24672,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -24769,9 +24692,9 @@ _tmp_155_rule(Parser *p) return _res; } -// _tmp_156: ':' | '**' +// _tmp_154: ':' | '**' static void * -_tmp_156_rule(Parser *p) +_tmp_154_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24785,18 +24708,18 @@ _tmp_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -24804,18 +24727,18 @@ _tmp_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; diff --git a/Parser/pegen/parse_string.c b/Parser/pegen/parse_string.c index 7b02bdde..fb0c4aff 100644 --- a/Parser/pegen/parse_string.c +++ b/Parser/pegen/parse_string.c @@ -74,6 +74,9 @@ decode_unicode_with_escapes(Parser *parser, const char *s, size_t len, Token *t) return NULL; } p = buf = PyBytes_AsString(u); + if (p == NULL) { + return NULL; + } end = s + len; while (s < end) { if (*s == '\\') { diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c index 2c435fb3..4e742a5e 100644 --- a/Parser/pegen/pegen.c +++ b/Parser/pegen/pegen.c @@ -62,8 +62,7 @@ init_normalization(Parser *p) /* Checks if the NOTEQUAL token is valid given the current parser flags 0 indicates success and nonzero indicates failure (an exception may be set) */ int -_PyPegen_check_barry_as_flufl(Parser *p) { - Token *t = p->tokens[p->fill - 1]; +_PyPegen_check_barry_as_flufl(Parser *p, Token* t) { assert(t->bytes != NULL); assert(t->type == NOTEQUAL); @@ -989,7 +988,8 @@ bad_single_statement(Parser *p) /* Newlines are allowed if preceded by a line continuation character or if they appear inside a string. */ - if (!cur || *(cur - 1) == '\\' || newline_in_string(p, cur)) { + if (!cur || (cur != p->tok->buf && *(cur - 1) == '\\') + || newline_in_string(p, cur)) { return 0; } char c = *cur; @@ -1100,15 +1100,28 @@ _PyPegen_Parser_New(struct tok_state *tok, int start_rule, int flags, p->feature_version = feature_version; p->known_err_token = NULL; p->level = 0; + p->call_invalid_rules = 0; return p; } +static void +reset_parser_state(Parser *p) +{ + for (int i = 0; i < p->fill; i++) { + p->tokens[i]->memo = NULL; + } + p->mark = 0; + p->call_invalid_rules = 1; +} + void * _PyPegen_run_parser(Parser *p) { void *res = _PyPegen_parse(p); if (res == NULL) { + reset_parser_state(p); + _PyPegen_parse(p); if (PyErr_Occurred()) { return NULL; } diff --git a/Parser/pegen/pegen.h b/Parser/pegen/pegen.h index bd35d4ff..a2f524a5 100644 --- a/Parser/pegen/pegen.h +++ b/Parser/pegen/pegen.h @@ -73,6 +73,7 @@ typedef struct { growable_comment_array type_ignore_comments; Token *known_err_token; int level; + int call_invalid_rules; } Parser; typedef struct { @@ -262,7 +263,7 @@ expr_ty _PyPegen_collect_call_seqs(Parser *, asdl_seq *, asdl_seq *, int end_col_offset, PyArena *arena); expr_ty _PyPegen_concatenate_strings(Parser *p, asdl_seq *); asdl_seq *_PyPegen_join_sequences(Parser *, asdl_seq *, asdl_seq *); -int _PyPegen_check_barry_as_flufl(Parser *); +int _PyPegen_check_barry_as_flufl(Parser *, Token *); mod_ty _PyPegen_make_module(Parser *, asdl_seq *); // Error reporting helpers diff --git a/Python/_warnings.c b/Python/_warnings.c index 4d65bb30..91a78fe7 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -69,11 +69,14 @@ create_filter(PyObject *category, _Py_Identifier *id, const char *modname) } } else { modname_obj = Py_None; + Py_INCREF(modname_obj); } /* This assumes the line number is zero for now. */ - return PyTuple_Pack(5, action_str, Py_None, - category, modname_obj, _PyLong_Zero); + PyObject *filter = PyTuple_Pack(5, action_str, Py_None, + category, modname_obj, _PyLong_Zero); + Py_DECREF(modname_obj); + return filter; } #endif diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c index 47369305..a212f698 100644 --- a/Python/bootstrap_hash.c +++ b/Python/bootstrap_hash.c @@ -25,6 +25,16 @@ # include #endif +#if defined(__APPLE__) && defined(__has_builtin) +# if __has_builtin(__builtin_available) +# define HAVE_GETENTRYPY_GETRANDOM_RUNTIME __builtin_available(macOS 10.12, iOS 10.10, tvOS 10.0, watchOS 3.0, *) +# endif +#endif +#ifndef HAVE_GETENTRYPY_GETRANDOM_RUNTIME +# define HAVE_GETENTRYPY_GETRANDOM_RUNTIME 1 +#endif + + #ifdef Py_DEBUG int _Py_HashSecret_Initialized = 0; #else @@ -208,6 +218,16 @@ py_getrandom(void *buffer, Py_ssize_t size, int blocking, int raise) error. getentropy() is retried if it failed with EINTR: interrupted by a signal. */ + +#if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) +static int +py_getentropy(char *buffer, Py_ssize_t size, int raise) + __attribute__((availability(macos,introduced=10.12))) + __attribute__((availability(ios,introduced=10.0))) + __attribute__((availability(tvos,introduced=10.0))) + __attribute__((availability(watchos,introduced=3.0))); +#endif + static int py_getentropy(char *buffer, Py_ssize_t size, int raise) { @@ -498,19 +518,21 @@ pyurandom(void *buffer, Py_ssize_t size, int blocking, int raise) #else #if defined(PY_GETRANDOM) || defined(PY_GETENTROPY) + if (HAVE_GETENTRYPY_GETRANDOM_RUNTIME) { #ifdef PY_GETRANDOM - res = py_getrandom(buffer, size, blocking, raise); + res = py_getrandom(buffer, size, blocking, raise); #else - res = py_getentropy(buffer, size, raise); + res = py_getentropy(buffer, size, raise); #endif - if (res < 0) { - return -1; - } - if (res == 1) { - return 0; - } - /* getrandom() or getentropy() function is not available: failed with - ENOSYS or EPERM. Fall back on reading from /dev/urandom. */ + if (res < 0) { + return -1; + } + if (res == 1) { + return 0; + } + /* getrandom() or getentropy() function is not available: failed with + ENOSYS or EPERM. Fall back on reading from /dev/urandom. */ + } /* end of availability block */ #endif return dev_urandom(buffer, size, raise); diff --git a/Python/ceval.c b/Python/ceval.c index 3392cd03..91e879e8 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -196,13 +196,18 @@ UNSIGNAL_PENDING_CALLS(PyInterpreterState *interp) static inline void -SIGNAL_PENDING_SIGNALS(PyInterpreterState *interp) +SIGNAL_PENDING_SIGNALS(PyInterpreterState *interp, int force) { struct _ceval_runtime_state *ceval = &interp->runtime->ceval; struct _ceval_state *ceval2 = &interp->ceval; _Py_atomic_store_relaxed(&ceval->signals_pending, 1); - /* eval_breaker is not set to 1 if thread_can_handle_signals() is false */ - COMPUTE_EVAL_BREAKER(interp, ceval, ceval2); + if (force) { + _Py_atomic_store_relaxed(&ceval2->eval_breaker, 1); + } + else { + /* eval_breaker is not set to 1 if thread_can_handle_signals() is false */ + COMPUTE_EVAL_BREAKER(interp, ceval, ceval2); + } } @@ -491,10 +496,22 @@ PyEval_RestoreThread(PyThreadState *tstate) void _PyEval_SignalReceived(PyInterpreterState *interp) { +#ifdef MS_WINDOWS + // bpo-42296: On Windows, _PyEval_SignalReceived() is called from a signal + // handler which can run in a thread different than the Python thread, in + // which case _Py_ThreadCanHandleSignals() is wrong. Ignore + // _Py_ThreadCanHandleSignals() and always set eval_breaker to 1. + // + // The next eval_frame_handle_pending() call will call + // _Py_ThreadCanHandleSignals() to recompute eval_breaker. + int force = 1; +#else + int force = 0; +#endif /* bpo-30703: Function called when the C signal handler of Python gets a signal. We cannot queue a callback using _PyEval_AddPendingCall() since that function is not async-signal-safe. */ - SIGNAL_PENDING_SIGNALS(interp); + SIGNAL_PENDING_SIGNALS(interp, force); } /* Push one item onto the queue while holding the lock. */ @@ -594,7 +611,7 @@ handle_signals(PyThreadState *tstate) UNSIGNAL_PENDING_SIGNALS(tstate->interp); if (_PyErr_CheckSignalsTstate(tstate) < 0) { /* On failure, re-schedule a call to handle_signals(). */ - SIGNAL_PENDING_SIGNALS(tstate->interp); + SIGNAL_PENDING_SIGNALS(tstate->interp, 0); return -1; } return 0; @@ -883,6 +900,17 @@ eval_frame_handle_pending(PyThreadState *tstate) return -1; } +#ifdef MS_WINDOWS + // bpo-42296: On Windows, _PyEval_SignalReceived() can be called in a + // different thread than the Python thread, in which case + // _Py_ThreadCanHandleSignals() is wrong. Recompute eval_breaker in the + // current Python thread with the correct _Py_ThreadCanHandleSignals() + // value. It prevents to interrupt the eval loop at every instruction if + // the current Python thread cannot handle signals (if + // _Py_ThreadCanHandleSignals() is false). + COMPUTE_EVAL_BREAKER(tstate->interp, ceval, ceval2); +#endif + return 0; } diff --git a/Python/compile.c b/Python/compile.c index 51af28b5..722d52db 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -84,8 +84,8 @@ It's called a frame block to distinguish it from a basic block in the compiler IR. */ -enum fblocktype { WHILE_LOOP, FOR_LOOP, EXCEPT, FINALLY_TRY, FINALLY_END, - WITH, ASYNC_WITH, HANDLER_CLEANUP, POP_VALUE }; +enum fblocktype { WHILE_LOOP, FOR_LOOP, TRY_EXCEPT, FINALLY_TRY, FINALLY_END, + WITH, ASYNC_WITH, HANDLER_CLEANUP, POP_VALUE, EXCEPTION_HANDLER }; struct fblockinfo { enum fblocktype fb_type; @@ -1624,9 +1624,7 @@ compiler_push_fblock(struct compiler *c, enum fblocktype t, basicblock *b, { struct fblockinfo *f; if (c->u->u_nfblocks >= CO_MAXBLOCKS) { - PyErr_SetString(PyExc_SyntaxError, - "too many statically nested blocks"); - return 0; + return compiler_error(c, "too many statically nested blocks"); } f = &c->u->u_fblock[c->u->u_nfblocks++]; f->fb_type = t; @@ -1666,6 +1664,7 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, { switch (info->fb_type) { case WHILE_LOOP: + case EXCEPTION_HANDLER: return 1; case FOR_LOOP: @@ -1676,7 +1675,7 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, ADDOP(c, POP_TOP); return 1; - case EXCEPT: + case TRY_EXCEPT: ADDOP(c, POP_BLOCK); return 1; @@ -3064,14 +3063,17 @@ compiler_try_except(struct compiler *c, stmt_ty s) return 0; ADDOP_JREL(c, SETUP_FINALLY, except); compiler_use_next_block(c, body); - if (!compiler_push_fblock(c, EXCEPT, body, NULL, NULL)) + if (!compiler_push_fblock(c, TRY_EXCEPT, body, NULL, NULL)) return 0; VISIT_SEQ(c, stmt, s->v.Try.body); ADDOP(c, POP_BLOCK); - compiler_pop_fblock(c, EXCEPT, body); + compiler_pop_fblock(c, TRY_EXCEPT, body); ADDOP_JREL(c, JUMP_FORWARD, orelse); n = asdl_seq_LEN(s->v.Try.handlers); compiler_use_next_block(c, except); + /* Runtime will push a block here, so we need to account for that */ + if (!compiler_push_fblock(c, EXCEPTION_HANDLER, NULL, NULL, NULL)) + return 0; for (i = 0; i < n; i++) { excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET( s->v.Try.handlers, i); @@ -3156,6 +3158,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) } compiler_use_next_block(c, except); } + compiler_pop_fblock(c, EXCEPTION_HANDLER, NULL); ADDOP(c, RERAISE); compiler_use_next_block(c, orelse); VISIT_SEQ(c, stmt, s->v.Try.orelse); diff --git a/Python/dynload_aix.c b/Python/dynload_aix.c index 684f10a8..97f7698e 100644 --- a/Python/dynload_aix.c +++ b/Python/dynload_aix.c @@ -144,10 +144,16 @@ aix_loaderror(const char *pathname) ERRBUF_APPEND(message[i]); ERRBUF_APPEND("\n"); } - errbuf[strlen(errbuf)-1] = '\0'; /* trim off last newline */ - pathname_ob = PyUnicode_FromString(pathname); - errbuf_ob = PyUnicode_FromString(errbuf); - PyErr_SetImportError(errbuf_ob, NULL, pathname); + /* Subtract 1 from the length to trim off trailing newline */ + errbuf_ob = PyUnicode_DecodeLocaleAndSize(errbuf, strlen(errbuf)-1, "surrogateescape"); + if (errbuf_ob == NULL) + return; + pathname_ob = PyUnicode_DecodeFSDefault(pathname); + if (pathname_ob == NULL) { + Py_DECREF(errbuf_ob); + return; + } + PyErr_SetImportError(errbuf_ob, NULL, pathname_ob); Py_DECREF(pathname_ob); Py_DECREF(errbuf_ob); return; diff --git a/Python/dynload_hpux.c b/Python/dynload_hpux.c index 4b964a69..e36d608c 100644 --- a/Python/dynload_hpux.c +++ b/Python/dynload_hpux.c @@ -36,9 +36,20 @@ dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix, char buf[256]; PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s", pathname); - PyObject *buf_ob = PyUnicode_FromString(buf); + PyObject *buf_ob = PyUnicode_DecodeFSDefault(buf); + if (buf_ob == NULL) + return NULL; PyObject *shortname_ob = PyUnicode_FromString(shortname); - PyObject *pathname_ob = PyUnicode_FromString(pathname); + if (shortname_ob == NULL) { + Py_DECREF(buf_ob); + return NULL; + } + PyObject *pathname_ob = PyUnicode_DecodeFSDefault(pathname); + if (pathname_ob == NULL) { + Py_DECREF(buf_ob); + Py_DECREF(shortname_ob); + return NULL; + } PyErr_SetImportError(buf_ob, shortname_ob, pathname_ob); Py_DECREF(buf_ob); Py_DECREF(shortname_ob); diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 082154dd..23828898 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -106,7 +106,7 @@ _PyImport_FindSharedFuncptr(const char *prefix, const char *error = dlerror(); if (error == NULL) error = "unknown dlopen() error"; - error_ob = PyUnicode_FromString(error); + error_ob = PyUnicode_DecodeLocale(error, "surrogateescape"); if (error_ob == NULL) return NULL; mod_name = PyUnicode_FromString(shortname); @@ -114,7 +114,7 @@ _PyImport_FindSharedFuncptr(const char *prefix, Py_DECREF(error_ob); return NULL; } - path = PyUnicode_FromString(pathname); + path = PyUnicode_DecodeFSDefault(pathname); if (path == NULL) { Py_DECREF(error_ob); Py_DECREF(mod_name); diff --git a/Python/fileutils.c b/Python/fileutils.c index 2c86828b..397ac34e 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -2032,6 +2032,7 @@ _Py_GetLocaleconvNumeric(struct lconv *lc, assert(decimal_point != NULL); assert(thousands_sep != NULL); +#ifndef MS_WINDOWS int change_locale = 0; if ((strlen(lc->decimal_point) > 1 || ((unsigned char)lc->decimal_point[0]) > 127)) { change_locale = 1; @@ -2070,14 +2071,20 @@ _Py_GetLocaleconvNumeric(struct lconv *lc, } } +#define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL) +#else /* MS_WINDOWS */ +/* Use _W_* fields of Windows strcut lconv */ +#define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1) +#endif /* MS_WINDOWS */ + int res = -1; - *decimal_point = PyUnicode_DecodeLocale(lc->decimal_point, NULL); + *decimal_point = GET_LOCALE_STRING(decimal_point); if (*decimal_point == NULL) { goto done; } - *thousands_sep = PyUnicode_DecodeLocale(lc->thousands_sep, NULL); + *thousands_sep = GET_LOCALE_STRING(thousands_sep); if (*thousands_sep == NULL) { goto done; } @@ -2085,9 +2092,13 @@ _Py_GetLocaleconvNumeric(struct lconv *lc, res = 0; done: +#ifndef MS_WINDOWS if (loc != NULL) { setlocale(LC_CTYPE, oldloc); } PyMem_Free(oldloc); +#endif return res; + +#undef GET_LOCALE_STRING } diff --git a/Python/import.c b/Python/import.c index 0e2e7c37..5e39a2fb 100644 --- a/Python/import.c +++ b/Python/import.c @@ -905,7 +905,11 @@ PyImport_AddModule(const char *name) } -/* Remove name from sys.modules, if it's there. */ +/* Remove name from sys.modules, if it's there. + * Can be called with an exception raised. + * If fail to remove name a new exception will be chained with the old + * exception, otherwise the old exception is preserved. + */ static void remove_module(PyThreadState *tstate, PyObject *name) { @@ -913,18 +917,17 @@ remove_module(PyThreadState *tstate, PyObject *name) _PyErr_Fetch(tstate, &type, &value, &traceback); PyObject *modules = tstate->interp->modules; - if (!PyMapping_HasKey(modules, name)) { - goto out; + if (PyDict_CheckExact(modules)) { + PyObject *mod = _PyDict_Pop(modules, name, Py_None); + Py_XDECREF(mod); } - if (PyMapping_DelItem(modules, name) < 0) { - _PyErr_SetString(tstate, PyExc_RuntimeError, - "deleting key in sys.modules failed"); - _PyErr_ChainExceptions(type, value, traceback); - return; + else if (PyMapping_DelItem(modules, name) < 0) { + if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) { + _PyErr_Clear(tstate); + } } -out: - _PyErr_Restore(tstate, type, value, traceback); + _PyErr_ChainExceptions(type, value, traceback); } diff --git a/Python/initconfig.c b/Python/initconfig.c index e882a1fb..3caed385 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -42,7 +42,8 @@ Options and arguments (and corresponding environment variables):\n\ and comparing bytes/bytearray with str. (-bb: issue errors)\n\ -B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x\n\ -c cmd : program passed in as string (terminates option list)\n\ --d : debug output from parser; also PYTHONDEBUG=x\n\ +-d : turn on parser debugging output (for experts only, only works on\n\ + debug builds); also PYTHONDEBUG=x\n\ -E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\ -h : print this help message and exit (also --help)\n\ "; diff --git a/Python/peephole.c b/Python/peephole.c index 84de1abc..6954c87b 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -12,7 +12,7 @@ #define UNCONDITIONAL_JUMP(op) (op==JUMP_ABSOLUTE || op==JUMP_FORWARD) #define CONDITIONAL_JUMP(op) (op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \ - || op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP || op==JUMP_IF_NOT_EXC_MATCH) + || op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP) #define ABSOLUTE_JUMP(op) (op==JUMP_ABSOLUTE \ || op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \ || op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP || op==JUMP_IF_NOT_EXC_MATCH) diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index cfb3a7d9..60f091cb 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -57,7 +57,6 @@ static PyStatus add_main_module(PyInterpreterState *interp); static PyStatus init_import_site(void); static PyStatus init_set_builtins_open(void); static PyStatus init_sys_streams(PyThreadState *tstate); -static PyStatus init_signals(PyThreadState *tstate); static void call_py_exitfuncs(PyThreadState *tstate); static void wait_for_thread_shutdown(PyThreadState *tstate); static void call_ll_exitfuncs(_PyRuntimeState *runtime); @@ -1013,11 +1012,8 @@ init_interp_main(PyThreadState *tstate) } if (is_main_interp) { - if (config->install_signal_handlers) { - status = init_signals(tstate); - if (_PyStatus_EXCEPTION(status)) { - return status; - } + if (_PySignal_Init(config->install_signal_handlers) < 0) { + return _PyStatus_ERR("can't initialize signals"); } if (_PyTraceMalloc_Init(config->tracemalloc) < 0) { @@ -1357,7 +1353,6 @@ Py_FinalizeEx(void) /* Get current thread state and interpreter pointer */ PyThreadState *tstate = _PyRuntimeState_GetThreadState(runtime); - PyInterpreterState *interp = tstate->interp; // Wrap up existing "threading"-module-created, non-daemon threads. wait_for_thread_shutdown(tstate); @@ -1380,13 +1375,13 @@ Py_FinalizeEx(void) /* Copy the core config, PyInterpreterState_Delete() free the core config memory */ #ifdef Py_REF_DEBUG - int show_ref_count = interp->config.show_ref_count; + int show_ref_count = tstate->interp->config.show_ref_count; #endif #ifdef Py_TRACE_REFS - int dump_refs = interp->config.dump_refs; + int dump_refs = tstate->interp->config.dump_refs; #endif #ifdef WITH_PYMALLOC - int malloc_stats = interp->config.malloc_stats; + int malloc_stats = tstate->interp->config.malloc_stats; #endif /* Remaining daemon threads will automatically exit @@ -2442,25 +2437,6 @@ Py_Exit(int sts) exit(sts); } -static PyStatus -init_signals(PyThreadState *tstate) -{ -#ifdef SIGPIPE - PyOS_setsig(SIGPIPE, SIG_IGN); -#endif -#ifdef SIGXFZ - PyOS_setsig(SIGXFZ, SIG_IGN); -#endif -#ifdef SIGXFSZ - PyOS_setsig(SIGXFSZ, SIG_IGN); -#endif - PyOS_InitInterrupts(); /* May imply init_signals() */ - if (_PyErr_Occurred(tstate)) { - return _PyStatus_ERR("can't import signal"); - } - return _PyStatus_OK(); -} - /* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. * diff --git a/Python/pytime.c b/Python/pytime.c index b121b432..89d63e08 100644 --- a/Python/pytime.c +++ b/Python/pytime.c @@ -5,6 +5,12 @@ #if defined(__APPLE__) #include /* mach_absolute_time(), mach_timebase_info() */ + +#if defined(__APPLE__) && defined(__has_builtin) +# if __has_builtin(__builtin_available) +# define HAVE_CLOCK_GETTIME_RUNTIME __builtin_available(macOS 10.12, iOS 10.0, tvOS 10.0, watchOS 3.0, *) +# endif +#endif #endif #define _PyTime_check_mul_overflow(a, b) \ @@ -683,15 +689,22 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) #else /* MS_WINDOWS */ int err; -#ifdef HAVE_CLOCK_GETTIME +#if defined(HAVE_CLOCK_GETTIME) struct timespec ts; -#else +#endif + +#if !defined(HAVE_CLOCK_GETTIME) || defined(__APPLE__) struct timeval tv; #endif assert(info == NULL || raise); #ifdef HAVE_CLOCK_GETTIME + +#ifdef HAVE_CLOCK_GETTIME_RUNTIME + if (HAVE_CLOCK_GETTIME_RUNTIME) { +#endif + err = clock_gettime(CLOCK_REALTIME, &ts); if (err) { if (raise) { @@ -715,7 +728,14 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) info->resolution = 1e-9; } } -#else /* HAVE_CLOCK_GETTIME */ + +#ifdef HAVE_CLOCK_GETTIME_RUNTIME + } else { +#endif + +#endif + +#if !defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_RUNTIME) /* test gettimeofday() */ err = gettimeofday(&tv, (struct timezone *)NULL); @@ -735,6 +755,11 @@ pygettimeofday(_PyTime_t *tp, _Py_clock_info_t *info, int raise) info->monotonic = 0; info->adjustable = 1; } + +#if defined(HAVE_CLOCK_GETTIME_RUNTIME) && defined(HAVE_CLOCK_GETTIME) + } /* end of availibity block */ +#endif + #endif /* !HAVE_CLOCK_GETTIME */ #endif /* !MS_WINDOWS */ return 0; diff --git a/README.rst b/README.rst index 64885138..a9ab2605 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.9.0 +This is Python version 3.9.1 ============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.9 diff --git a/Tools/c-analyzer/c_analyzer/common/files.py b/Tools/c-analyzer/c_analyzer/common/files.py index f630afe6..a8a04475 100644 --- a/Tools/c-analyzer/c_analyzer/common/files.py +++ b/Tools/c-analyzer/c_analyzer/common/files.py @@ -60,7 +60,7 @@ def glob_tree(root, *, def iter_files(root, suffix=None, relparent=None, *, - get_files=os.walk, + get_files=None, _glob=glob_tree, _walk=walk_tree, ): @@ -75,6 +75,8 @@ def iter_files(root, suffix=None, relparent=None, *, if "relparent" is provided then it is used to resolve each filename as a relative path. """ + if get_files is None: + get_files = os.walk if not isinstance(root, str): roots = root for root in roots: diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index b07ffdd9..34b58079 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -1777,6 +1777,30 @@ legacy_converters = {} # The callable should not call builtins.print. return_converters = {} + +def write_file(filename, new_contents): + try: + with open(filename, 'r', encoding="utf-8") as fp: + old_contents = fp.read() + + if old_contents == new_contents: + # no change: avoid modifying the file modification time + return + except FileNotFoundError: + pass + + # Atomic write using a temporary file and os.replace() + filename_new = f"{filename}.new" + with open(filename_new, "w", encoding="utf-8") as fp: + fp.write(new_contents) + + try: + os.replace(filename_new, filename) + except: + os.unlink(filename_new) + raise + + clinic = None class Clinic: @@ -1823,7 +1847,7 @@ impl_definition block """ - def __init__(self, language, printer=None, *, force=False, verify=True, filename=None): + def __init__(self, language, printer=None, *, verify=True, filename=None): # maps strings to Parser objects. # (instantiated from the "parsers" global.) self.parsers = {} @@ -1832,7 +1856,6 @@ impl_definition block fail("Custom printers are broken right now") self.printer = printer or BlockPrinter(language) self.verify = verify - self.force = force self.filename = filename self.modules = collections.OrderedDict() self.classes = collections.OrderedDict() @@ -1965,8 +1988,7 @@ impl_definition block block.input = 'preserve\n' printer_2 = BlockPrinter(self.language) printer_2.print_block(block) - with open(destination.filename, "wt") as f: - f.write(printer_2.f.getvalue()) + write_file(destination.filename, printer_2.f.getvalue()) continue text = printer.f.getvalue() @@ -2018,7 +2040,10 @@ impl_definition block return module, cls -def parse_file(filename, *, force=False, verify=True, output=None, encoding='utf-8'): +def parse_file(filename, *, verify=True, output=None): + if not output: + output = filename + extension = os.path.splitext(filename)[1][1:] if not extension: fail("Can't extract file type for file " + repr(filename)) @@ -2028,7 +2053,7 @@ def parse_file(filename, *, force=False, verify=True, output=None, encoding='utf except KeyError: fail("Can't identify file type for file " + repr(filename)) - with open(filename, 'r', encoding=encoding) as f: + with open(filename, 'r', encoding="utf-8") as f: raw = f.read() # exit quickly if there are no clinic markers in the file @@ -2036,19 +2061,10 @@ def parse_file(filename, *, force=False, verify=True, output=None, encoding='utf if not find_start_re.search(raw): return - clinic = Clinic(language, force=force, verify=verify, filename=filename) + clinic = Clinic(language, verify=verify, filename=filename) cooked = clinic.parse(raw) - if (cooked == raw) and not force: - return - - directory = os.path.dirname(filename) or '.' - with tempfile.TemporaryDirectory(prefix="clinic", dir=directory) as tmpdir: - bytes = cooked.encode(encoding) - tmpfilename = os.path.join(tmpdir, os.path.basename(filename)) - with open(tmpfilename, "wb") as f: - f.write(bytes) - os.replace(tmpfilename, output or filename) + write_file(output, cooked) def compute_checksum(input, length=None): @@ -5087,7 +5103,7 @@ For more information see https://docs.python.org/3/howto/clinic.html""") path = os.path.join(root, filename) if ns.verbose: print(path) - parse_file(path, force=ns.force, verify=not ns.force) + parse_file(path, verify=not ns.force) return if not ns.filename: @@ -5103,7 +5119,7 @@ For more information see https://docs.python.org/3/howto/clinic.html""") for filename in ns.filename: if ns.verbose: print(filename) - parse_file(filename, output=ns.output, force=ns.force, verify=not ns.force) + parse_file(filename, output=ns.output, verify=not ns.force) if __name__ == "__main__": diff --git a/Tools/msi/sdktools.psm1 b/Tools/msi/sdktools.psm1 index 8081b104..c5973f9a 100644 --- a/Tools/msi/sdktools.psm1 +++ b/Tools/msi/sdktools.psm1 @@ -37,11 +37,11 @@ function Sign-File { foreach ($a in $files) { if ($certsha1) { - SignTool sign /sha1 $certsha1 /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a + SignTool sign /sha1 $certsha1 /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a } elseif ($certname) { - SignTool sign /a /n $certname /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a + SignTool sign /a /n $certname /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a } elseif ($certfile) { - SignTool sign /f $certfile /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a + SignTool sign /f $certfile /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a } } } diff --git a/Tools/msi/test/test_files.wxs b/Tools/msi/test/test_files.wxs index 82a9115f..9127ce89 100644 --- a/Tools/msi/test/test_files.wxs +++ b/Tools/msi/test/test_files.wxs @@ -1,6 +1,6 @@ - + - + diff --git a/Tools/nuget/python.nuspec b/Tools/nuget/python.nuspec index 8f98e808..2da5f203 100644 --- a/Tools/nuget/python.nuspec +++ b/Tools/nuget/python.nuspec @@ -13,6 +13,6 @@ - + diff --git a/Tools/nuget/pythonarm32.nuspec b/Tools/nuget/pythonarm32.nuspec index 273d79a0..2d197931 100644 --- a/Tools/nuget/pythonarm32.nuspec +++ b/Tools/nuget/pythonarm32.nuspec @@ -14,6 +14,7 @@ - + + diff --git a/Tools/nuget/pythondaily.nuspec b/Tools/nuget/pythondaily.nuspec index 5cf55806..7df1983f 100644 --- a/Tools/nuget/pythondaily.nuspec +++ b/Tools/nuget/pythondaily.nuspec @@ -13,6 +13,7 @@ - + + diff --git a/Tools/nuget/pythonx86.nuspec b/Tools/nuget/pythonx86.nuspec index 27ef67e7..ea878ba0 100644 --- a/Tools/nuget/pythonx86.nuspec +++ b/Tools/nuget/pythonx86.nuspec @@ -13,6 +13,7 @@ - + + diff --git a/Tools/peg_generator/pegen/c_generator.py b/Tools/peg_generator/pegen/c_generator.py index aee668c3..b4d6a0ba 100644 --- a/Tools/peg_generator/pegen/c_generator.py +++ b/Tools/peg_generator/pegen/c_generator.py @@ -496,6 +496,9 @@ class CParserGenerator(ParserGenerator, GrammarVisitor): ) self.print("p->mark = _mark;") self.print(f"void *_raw = {node.name}_raw(p);") + self.print("if (p->error_indicator)") + with self.indent(): + self.print("return NULL;") self.print("if (_raw == NULL || p->mark <= _resmark)") with self.indent(): self.print("break;") @@ -730,7 +733,10 @@ class CParserGenerator(ParserGenerator, GrammarVisitor): def visit_Alt( self, node: Alt, is_loop: bool, is_gather: bool, rulename: Optional[str] ) -> None: - self.print(f"{{ // {node}") + if len(node.items) == 1 and str(node.items[0]).startswith('invalid_'): + self.print(f"if (p->call_invalid_rules) {{ // {node}") + else: + self.print(f"{{ // {node}") with self.indent(): self._check_for_errors() node_str = str(node).replace('"', '\\"') diff --git a/Tools/peg_generator/scripts/test_parse_directory.py b/Tools/peg_generator/scripts/test_parse_directory.py index 100db1d4..6dfdbb91 100755 --- a/Tools/peg_generator/scripts/test_parse_directory.py +++ b/Tools/peg_generator/scripts/test_parse_directory.py @@ -5,14 +5,9 @@ import ast import os import sys import time -import traceback import tokenize -<<<<<<< HEAD import _peg_parser -from glob import glob -======= from glob import glob, escape ->>>>>>> 9355868458... bpo-41043: Escape literal part of the path for glob(). (GH-20994) from pathlib import PurePath from typing import List, Optional, Any, Tuple diff --git a/configure b/configure index 9e6fd465..2d379feb 100755 --- a/configure +++ b/configure @@ -1510,8 +1510,8 @@ Optional Packages: specify the kind of universal binary that should be created. this option is only valid when --enable-universalsdk is set; options are: - ("32-bit", "64-bit", "3-way", "intel", "intel-32", - "intel-64", or "all") see Mac/README.rst + ("universal2", "32-bit", "64-bit", "3-way", "intel", + "intel-32", "intel-64", or "all") see Mac/README.rst --with-framework-name=FRAMEWORK specify the name for the python framework on macOS only valid when --enable-framework is set. see @@ -6954,7 +6954,7 @@ fi -# The -arch flags for universal builds on OSX +# The -arch flags for universal builds on macOS UNIVERSAL_ARCH_FLAGS= @@ -7481,6 +7481,11 @@ $as_echo "$CC" >&6; } LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ;; + universal2) + UNIVERSAL_ARCH_FLAGS="-arch arm64 -arch x86_64" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="true" + ;; intel) UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" LIPO_32BIT_FLAGS="-extract i386" @@ -7502,7 +7507,7 @@ $as_echo "$CC" >&6; } ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ;; *) - as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5 + as_fn_error $? "proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way" "$LINENO" 5 ;; esac @@ -7571,6 +7576,31 @@ $as_echo_n "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5 $as_echo "$MACOSX_DEPLOYMENT_TARGET" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if specified universal architectures work" >&5 +$as_echo_n "checking if specified universal architectures work... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +printf("%d", 42); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "check config.log and use the '--with-universal-archs' option" "$LINENO" 5 + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + # end of Darwin* tests ;; esac @@ -9334,7 +9364,7 @@ fi MACOSX_DEFAULT_ARCH="ppc" ;; *) - as_fn_error $? "Unexpected output of 'arch' on OSX" "$LINENO" 5 + as_fn_error $? "Unexpected output of 'arch' on macOS" "$LINENO" 5 ;; esac else @@ -9344,9 +9374,12 @@ fi ;; ppc) MACOSX_DEFAULT_ARCH="ppc64" + ;; + arm64) + MACOSX_DEFAULT_ARCH="arm64" ;; *) - as_fn_error $? "Unexpected output of 'arch' on OSX" "$LINENO" 5 + as_fn_error $? "Unexpected output of 'arch' on macOS" "$LINENO" 5 ;; esac @@ -11987,6 +12020,31 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _dyld_shared_cache_contains_path" >&5 +$as_echo_n "checking for _dyld_shared_cache_contains_path... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +void *x=_dyld_shared_cache_contains_path + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext diff --git a/configure.ac b/configure.ac index d60f0525..c968d149 100644 --- a/configure.ac +++ b/configure.ac @@ -218,7 +218,7 @@ AC_ARG_WITH(universal-archs, AS_HELP_STRING([--with-universal-archs=ARCH], [specify the kind of universal binary that should be created. this option is only valid when --enable-universalsdk is set; options are: - ("32-bit", "64-bit", "3-way", "intel", "intel-32", "intel-64", or "all") + ("universal2", "32-bit", "64-bit", "3-way", "intel", "intel-32", "intel-64", or "all") see Mac/README.rst]), [ UNIVERSAL_ARCHS="$withval" @@ -1587,7 +1587,7 @@ AC_SUBST(BASECFLAGS) AC_SUBST(CFLAGS_NODIST) AC_SUBST(LDFLAGS_NODIST) -# The -arch flags for universal builds on OSX +# The -arch flags for universal builds on macOS UNIVERSAL_ARCH_FLAGS= AC_SUBST(UNIVERSAL_ARCH_FLAGS) @@ -1888,6 +1888,11 @@ yes) LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ;; + universal2) + UNIVERSAL_ARCH_FLAGS="-arch arm64 -arch x86_64" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="true" + ;; intel) UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" LIPO_32BIT_FLAGS="-extract i386" @@ -1909,7 +1914,7 @@ yes) ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ;; *) - AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way]) + AC_MSG_ERROR([proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way]) ;; esac @@ -1976,6 +1981,13 @@ yes) EXPORT_MACOSX_DEPLOYMENT_TARGET='' AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET) + AC_MSG_CHECKING(if specified universal architectures work) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[printf("%d", 42);]])], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_MSG_ERROR(check config.log and use the '--with-universal-archs' option) + ]) + # end of Darwin* tests ;; esac @@ -2479,7 +2491,7 @@ case $ac_sys_system/$ac_sys_release in MACOSX_DEFAULT_ARCH="ppc" ;; *) - AC_MSG_ERROR([Unexpected output of 'arch' on OSX]) + AC_MSG_ERROR([Unexpected output of 'arch' on macOS]) ;; esac else @@ -2489,9 +2501,12 @@ case $ac_sys_system/$ac_sys_release in ;; ppc) MACOSX_DEFAULT_ARCH="ppc64" + ;; + arm64) + MACOSX_DEFAULT_ARCH="arm64" ;; *) - AC_MSG_ERROR([Unexpected output of 'arch' on OSX]) + AC_MSG_ERROR([Unexpected output of 'arch' on macOS]) ;; esac @@ -3770,6 +3785,12 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) ]) +AC_MSG_CHECKING(for _dyld_shared_cache_contains_path) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[void *x=_dyld_shared_cache_contains_path]])], + [AC_DEFINE(HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH, 1, Define if you have the '_dyld_shared_cache_contains_path' function.) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) +]) AC_MSG_CHECKING(for memfd_create) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ diff --git a/pyconfig.h.in b/pyconfig.h.in index c9589cd1..f39858d1 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -778,6 +778,9 @@ /* Define if you have the 'prlimit' functions. */ #undef HAVE_PRLIMIT +/* Define if you have the '_dyld_shared_cache_contains_path' function. */ +#undef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH + /* Define to 1 if you have the header file. */ #undef HAVE_PROCESS_H diff --git a/setup.py b/setup.py index 770866bc..bd5f7369 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,7 @@ import re import sys import sysconfig from glob import glob, escape +import _osx_support try: @@ -178,32 +179,9 @@ def macosx_sdk_root(): MACOS_SDK_ROOT = m.group(1) MACOS_SDK_SPECIFIED = MACOS_SDK_ROOT != '/' else: - MACOS_SDK_ROOT = '/' + MACOS_SDK_ROOT = _osx_support._default_sysroot( + sysconfig.get_config_var('CC')) MACOS_SDK_SPECIFIED = False - cc = sysconfig.get_config_var('CC') - tmpfile = '/tmp/setup_sdk_root.%d' % os.getpid() - try: - os.unlink(tmpfile) - except: - pass - ret = run_command('%s -E -v - %s 1>/dev/null' % (cc, tmpfile)) - in_incdirs = False - try: - if ret == 0: - with open(tmpfile) as fp: - for line in fp.readlines(): - if line.startswith("#include <...>"): - in_incdirs = True - elif line.startswith("End of search list"): - in_incdirs = False - elif in_incdirs: - line = line.strip() - if line == '/usr/include': - MACOS_SDK_ROOT = '/' - elif line.endswith(".sdk/usr/include"): - MACOS_SDK_ROOT = line[:-12] - finally: - os.unlink(tmpfile) return MACOS_SDK_ROOT @@ -239,6 +217,13 @@ def is_macosx_sdk_path(path): or path.startswith('/Library/') ) +def grep_headers_for(function, headers): + for header in headers: + with open(header, 'r', errors='surrogateescape') as f: + if function in f.read(): + return True + return False + def find_file(filename, std_dirs, paths): """Searches for the directory where a given file is located, and returns a possibly-empty list of additional directories, or None @@ -1028,7 +1013,7 @@ class PyBuildExt(build_ext): os_release = int(os.uname()[2].split('.')[0]) dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if (dep_target and - (tuple(int(n) for n in dep_target.split('.')[0:2]) + (tuple(int(n) for n in str(dep_target).split('.')[0:2]) < (10, 5) ) ): os_release = 8 if os_release < 9: @@ -1882,9 +1867,9 @@ class PyBuildExt(build_ext): # you want to build and link with a framework build of Tcl and Tk # that is not in /Library/Frameworks, say, in your private # $HOME/Library/Frameworks directory or elsewhere. It turns - # out to be difficult to make that work automtically here + # out to be difficult to make that work automatically here # without bringing into play more tools and magic. That case - # can be hamdled using a recipe with the right arguments + # can be handled using a recipe with the right arguments # to detect_tkinter_explicitly(). # # Note also that the fallback case here is to try to use the @@ -1892,7 +1877,7 @@ class PyBuildExt(build_ext): # be forewarned that they are deprecated by Apple and typically # out-of-date and buggy; their use should be avoided if at # all possible by installing a newer version of Tcl and Tk in - # /Library/Frameworks before bwfore building Python without + # /Library/Frameworks before building Python without # an explicit SDK or by configuring build arguments explicitly. from os.path import join, exists @@ -1909,7 +1894,7 @@ class PyBuildExt(build_ext): else: # Use case #1: no explicit SDK selected. # Search the local system-wide /Library/Frameworks, - # not the one in the default SDK, othewise fall back to + # not the one in the default SDK, otherwise fall back to # /System/Library/Frameworks whose header files may be in # the default SDK or, on older systems, actually installed. framework_dirs = [ @@ -1925,7 +1910,7 @@ class PyBuildExt(build_ext): if not exists(join(F, fw + '.framework')): break else: - # ok, F is now directory with both frameworks. Continure + # ok, F is now directory with both frameworks. Continue # building break else: @@ -2101,43 +2086,17 @@ class PyBuildExt(build_ext): library_dirs=added_lib_dirs)) return True - def configure_ctypes_darwin(self, ext): - # Darwin (OS X) uses preconfigured files, in - # the Modules/_ctypes/libffi_osx directory. - ffi_srcdir = os.path.abspath(os.path.join(self.srcdir, 'Modules', - '_ctypes', 'libffi_osx')) - sources = [os.path.join(ffi_srcdir, p) - for p in ['ffi.c', - 'x86/darwin64.S', - 'x86/x86-darwin.S', - 'x86/x86-ffi_darwin.c', - 'x86/x86-ffi64.c', - 'powerpc/ppc-darwin.S', - 'powerpc/ppc-darwin_closure.S', - 'powerpc/ppc-ffi_darwin.c', - 'powerpc/ppc64-darwin_closure.S', - ]] - - # Add .S (preprocessed assembly) to C compiler source extensions. - self.compiler.src_extensions.append('.S') - - include_dirs = [os.path.join(ffi_srcdir, 'include'), - os.path.join(ffi_srcdir, 'powerpc')] - ext.include_dirs.extend(include_dirs) - ext.sources.extend(sources) - return True - def configure_ctypes(self, ext): - if not self.use_system_libffi: - if MACOS: - return self.configure_ctypes_darwin(ext) - print('INFO: Could not locate ffi libs and/or headers') - return False return True def detect_ctypes(self): # Thomas Heller's _ctypes module - self.use_system_libffi = False + + if (not sysconfig.get_config_var("LIBFFI_INCLUDEDIR") and MACOS): + self.use_system_libffi = True + else: + self.use_system_libffi = '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS") + include_dirs = [] extra_compile_args = ['-DPy_BUILD_CORE_MODULE'] extra_link_args = [] @@ -2150,11 +2109,9 @@ class PyBuildExt(build_ext): if MACOS: sources.append('_ctypes/malloc_closure.c') - sources.append('_ctypes/darwin/dlfcn_simple.c') + extra_compile_args.append('-DUSING_MALLOC_CLOSURE_DOT_C=1') extra_compile_args.append('-DMACOSX') include_dirs.append('_ctypes/darwin') - # XXX Is this still needed? - # extra_link_args.extend(['-read_only_relocs', 'warning']) elif HOST_PLATFORM == 'sunos5': # XXX This shouldn't be necessary; it appears that some @@ -2184,31 +2141,48 @@ class PyBuildExt(build_ext): sources=['_ctypes/_ctypes_test.c'], libraries=['m'])) + ffi_inc = sysconfig.get_config_var("LIBFFI_INCLUDEDIR") + ffi_lib = None + ffi_inc_dirs = self.inc_dirs.copy() if MACOS: - if '--with-system-ffi' not in sysconfig.get_config_var("CONFIG_ARGS"): - return - # OS X 10.5 comes with libffi.dylib; the include files are - # in /usr/include/ffi - ffi_inc_dirs.append('/usr/include/ffi') - - ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")] - if not ffi_inc or ffi_inc[0] == '': - ffi_inc = find_file('ffi.h', [], ffi_inc_dirs) - if ffi_inc is not None: - ffi_h = ffi_inc[0] + '/ffi.h' + ffi_in_sdk = os.path.join(macosx_sdk_root(), "usr/include/ffi") + + if not ffi_inc: + if os.path.exists(ffi_in_sdk): + ext.extra_compile_args.append("-DUSING_APPLE_OS_LIBFFI=1") + ffi_inc = ffi_in_sdk + ffi_lib = 'ffi' + else: + # OS X 10.5 comes with libffi.dylib; the include files are + # in /usr/include/ffi + ffi_inc_dirs.append('/usr/include/ffi') + + if not ffi_inc: + found = find_file('ffi.h', [], ffi_inc_dirs) + if found: + ffi_inc = found[0] + if ffi_inc: + ffi_h = ffi_inc + '/ffi.h' if not os.path.exists(ffi_h): ffi_inc = None print('Header file {} does not exist'.format(ffi_h)) - ffi_lib = None - if ffi_inc is not None: + if ffi_lib is None and ffi_inc: for lib_name in ('ffi', 'ffi_pic'): if (self.compiler.find_library_file(self.lib_dirs, lib_name)): ffi_lib = lib_name break if ffi_inc and ffi_lib: - ext.include_dirs.extend(ffi_inc) + ffi_headers = glob(os.path.join(ffi_inc, '*.h')) + if grep_headers_for('ffi_prep_cif_var', ffi_headers): + ext.extra_compile_args.append("-DHAVE_FFI_PREP_CIF_VAR=1") + if grep_headers_for('ffi_prep_closure_loc', ffi_headers): + ext.extra_compile_args.append("-DHAVE_FFI_PREP_CLOSURE_LOC=1") + if grep_headers_for('ffi_closure_alloc', ffi_headers): + ext.extra_compile_args.append("-DHAVE_FFI_CLOSURE_ALLOC=1") + + ext.include_dirs.append(ffi_inc) ext.libraries.append(ffi_lib) self.use_system_libffi = True -- 2.34.1
  • nIqNunM~Bp!X;$Q9j>6)mO!i2Enlc&mo{iyR6* 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%0A2{1D<022GK`U2F$q?Vx_=Tao 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

    rhbhhdczDB zlQVyY4X#OCSsv@L&y{(CYX-q2A{f0PIrKBhQfHjG<&cMpCNL(+H1LQ0TXtqvZC7 z!KRmn!$!s8_(Skqf#gchW)4RFnOJVM&6^dzdB)~?0@5^!KoLu2pC}6mS=q zj+*5W3Tbbxsj~Xq@I$`pWJ!w^tv&8H{_4A_w<&#fJ4ZJv?X#1b&4GwTSIL}c$)Ne6 z7yQH;2T3P~`AjEbfu1<}isIUXBLJa&+=>fi_6iteOpKC29&LSy5RE9}#^WR`epP+N ziUdl-I2T#bIwc>0qMX6VW=_8mgTt1u^Nquvc_Aw&c3}b8u@mPY!J5F`APQkBD3dS| zpG$#;F3Un5Z)gaqhdZr8BO-aF4jY5&mELCwu2sf^sU22}78$)$gBiep3}i9{_wngTK6G5eRtZL~uqU#2X?-VL;|X zfyK4fIb-CtR#AwC98HHlzCq&=xOssThlrVZfs|lY@;b^}$?IUzUQJ;AL`FJ-7@5dO zhohZY8R_V%$q!TO8 i%|3t~rzyiOQrdM^sfZ&`PPxK-;9%ex1l}`w6c|jvWiM(=Z!^$hiiqSUmj3E^C!;PeD zW1p5npJntff4Ci!%De_X3p^+)aC}g%n1Goyg<&+ugm(PVTOb_S~7Ae-bPg|NpKzT=VOkiFX zv3->%xv$#a>i202@)YGX!_%PI;8YfBiv%{)0`*sKd|J|r{)M8Ew4E+EFxdX;%F zVN~LT-yu64eqwGd)QHdJ+un53`TAziC&>27SMrlAQ$i3Jg6ZT6j09>&Xft26pPvW_ zH0!{kB|Q&^G=&Pj0AeT*H%zQeTJz|aC$~7U@+YQ zTo9bnG?6)~;BtXFB#eCA3Ub(Tmpxyrq1vUDYcF5HQeYpJukA-^!NnHcSV!1)ju=k2 z&^>}uNX=(3T{idS4Us%u6s)o+)*Lc?Ljd|j*CB&B+K;j5xCNkHlbO>Lgf>W_WyO_v^SqL~Z54Tb)gvbV2*eIGOvK;Xz z7@({Zc=i>78?wq+4N*CKx{nqS>${>70bhf(@49q?x5Pd2jvoeNxz(<3oe%n3uQ;_s zq)mPUR)80PLzjxotI|^J&meaw_!uT&Y`c}AJ5)krh6LsGDFU;dMFNaWsG2aC3y|e6 z=lZ4zFayGni-X&A8cuC^1Q*tG&Rvt%b4nPQ=Oq!G{4}vq*KWBe9DlG%@K@um-JRlt z7P$KwL0?k}L{t3TB$BA_^lD4Lb2xF#$j;$Jz*v!%#)!`0geS1#aAG1*TO3k_+TwSX zfDTAau$`RHf?sY1wTjQD44XNC?Tg1lhRqznQ3D$>Y~}!B_!-JcdIT0TDP)8gc^WKE z=sRMtm}7^8Sjw$%7yScPJ1vFTsP%F2fjD*<}+((4r&?h@A~#60tqOZ1@sKO<)mU z-l~8z8>$waB}6~Mx>k6|c!X}r@74osZHvc1h>b3SGs3?!D#cf=`#AY2!kCU=M>tO| z?A?>G6U8dbLi0t4A+lO3#3H3{;|Lr-cy}z|`8~3^f`LHYI1!P5W#5=P7FhSDMxn%a zD5gMMaq1`4wY8=+YtH@=V5@+$4wRp=8{+ZEDi+k}%#i@joKV{P_a%ZZ7SSka6g?$K zWt@*(7HNnx0;F^mbjpic*9uCXKp$bxtq|h6@qiH4?qJL)$~N&3lr7Snc*1B|hwES~ z^8%bIU|ZkjARB)bp|lpov2XgKkSjr&-UQf^A5F8jA)uJDZ{tMjG)4cmWljs`X;zOz zt~zwLD0Z~FCT`0*MT+8qMjR6-K$+)js%5y}pXq~PR!dhL7hLoH% zJeAN{2P{7AhiO}iTbOVKOZn6j2G#m#oi7pmtPG>XXVK8Oe80(<(o&=Y^OhjHGxJ~T(-ZSmG8J|Sn3HGE8P&fFO@*gU2> zLjFlFRMgrux5*##28qsb^SnqZj^3oyDVg1A6*#>kk% zJ3jh=;ke@u5RUQI`5hm5VAFCZzn*H8=FaZ0k@g)wc5wuU^^V;vdMNRZzN~1b)?F+r zIR;!*f=20SBzkA@PCSlb)c1~Wzj;utyUtim3B@}ee5~#+6&o8|7rDzs7f_S@_N!Sq z?m9yWVT%JP4`&s3rR3@m2r+CJPVqH$bi(@FyOGE}Z%G0PojJg?K`@$iFQ?@Z;6!c4 z=H7f=eoUZQ2WIP^k;y%Od<1Ec_nomdnt9)mywSsZvF9PMagr7co7uoGGBpO57QVoB$u;Rn+W!*rF&&y(|!Y+ zqTT7BmBBG!MtBy1#(ZkzNA0%qn-b4Pe$a#Is}^=#>u`}?g~{dpCWPWXK27~XL6o}p8})~JE8w63 ze%dJI7nos-DU_pp>FI-oQ3ETON!NNVDafROd{91pc&0YS`nk`e zieGPe$t*82{W`Dm`k(#{UHKb0`1N^@;SC$V*7a}spD56>`RlLG9zA-r$-+f+R}1Ur z+ul`gk!HQC=e?U=l=KpB9p+jn`HQFs*ZI?D|78mN?eVH8Hs5~p&F$^&i`&tQG+TZ% zm`;zsd8^!}>OXHU9{;MUeXPI4@>n(H$6lWIPQAjrNb~#$wFOlBzo(z`Fl+vP_H8Ys z$B#dHQ62`p+f|tK)b6I|mszF+*(_vI6)b9v}s$V^2va&F*aEdNUHf7NZR1>O_ zs@6aWAK2mtj%1W~c8y`SGi006?t z0RSTa003}la4%nWWo~3|axZ9fZEQ7cX<{#EbZu-kaA9(DWpXZXdF_2`liN13=y(4L zMpJvO*_Gs1c9YEU_#WG_v%VWY%AS2x&2i0gBuK*@iqw+S$Vw{z{h}KW;z@#(=8-*7 zxjYgHG=N5<(cNft&x?E+ot@3s)w&>OXHl|T)FR)>T;*Bwm`Ys{E2<$xoy(E78*Ae4V5-Qt&=a)JK!^xFn+N+qk&2 zA)KwNM2u%L&9kzKv#Jzthxa1-DOd57yu65ucuI#)M--RSB>C%VMT*Bi<{MIscrh|f z;`CKYmW09>MHeKVCE22WFrCF!T>mWe-v|VUdIAUty zMHWR|(V6;?Cs|cDu#BsVWqLxsRNgWOC7%6jT~@F2f+UOVc~uq3Ii-V=j??$*ZM;&e zzNHPl{jq*M;?F<*?FZ!{R(Qq!oP8v#xG2f1FH^FDZrwY)ckkYe%p-g}oaNJzI=#mO z0>1{M8U=qodHbUn$MH$ACZp*0zrWnX#iBes!bS#z!3TgA#aRTUBMNm5<#A*YB{n)e zQC>vzBqifCxg=43{x34EB8sA%mVhSjA*dq?7OEdb)di{H&{8YbLNh=Gh%zV!OnCtC z))d<2f@BDof>WwGhkgX5DVze@&2sFMEXamUcu@|jAavnpv?6wWri}8{mw35K$r1bY z?Afyj7Y0z-AJgP~f?u#!A(jaKlEvBN-G2%NpFKU#XWM5_SI}*D+Io;dxqLw;_^K~|bZG|rfd>DPt3X<6nL=gT8 zJ^<|OEF+t`xeCCvHVzJ4+!y57@CEdE-gbGi~a%fbC zPcoNaZt*x0L$3iH-m@ynUY%-v|4i%42U;aQSZJ!L?=K2r89K+1j$4- zU2FAtA&qe!x>j>^5G^FR^ID))MJNbFe3n{a-%r0#K}pgvkm{iyHWU`1IZo(=vAXv( zn!ZH86Z!*fpzD7VhBR>!i3W2hoFQkS0q?akEHyl;z@=IseO5TyYvvOQ|c@CMX9s z<$E9#jkM@kHozHmp~ZrWvXyE;u_Ys&*eJJ&Q9v>tGc(L5c&R}ksk6;uKaIv4(0IaH zJwA@^uTqK}sB*t=lM;ff(URC;47Z`7kqw^}m4s|UK~^ik zFur>_I46|3l0Va}cktO$h2oF$jS9-}$#Sh-T!?S5Bwh7Dt15G_&|;A;u2C5LYDS&gfAYUBQt&YqoHP6OZago5IG01d*!vl#liD7KUDvwLHRnQ8sFB-2IRzAM`o}##+ z7*!vaFzok#q3=N|VDJBXRpcv*hpl8{!p!xG?%!a^H2E1720&>*K^63QVIsv1f5v24 z5MASvu_G#efvz@V`aK$a39tdzVLcuQquhEtmVu|=p zt3XjYe$Zt2o_Svq;C(}d;@Sz~$#`ZFG<0H{^t6WcnQm`!R;F}$4}Ic}Wj;Uj$wtEguq!kYQekEguU2U?MZ7Re;2!`x zhfV8MjMl=|NJAj>pwX7D&Mz}|yR7QoS?@Of0X3R>zAA5)>Aq%7^{Uk(qQP*no8zLF*Q2F zX{^N0R8I#$GK0^!mgwr87x_;l11*ehm5X${x_~Wa8K=o2TgJsD-8c`M2F7WMLK+%e zbL8Zuht1%IKD4{G^yUFu3nx&b&iFda)w7c7ei^-b z|5{NNIDUn8E?!8Zvts;X!lJBVNTFC^LiHw+&4x7#(n&*YPcfeeN`C*^u$v@vUwiP0 zOR%M=whg}Fvd+}Hi_4<@d$8?Vz6|iG{TU2T9`3HNA!#~hM}5kHJbc7K6>R{{-YkCy zD$;Z31#W>9XK>gK1%6KWNxx3rC$vb8w&FOg4IZ>4oqDi=EZ1d)r*8s0vtwj4P+^H~ z=z``1h)EQ^nKNgyc|v9*R!=s-&jHb(GBW0I5f`%*CNiJXMYN4xynhSB18uwj%S#%w zJ(ljh>*)nJZX|F<2gkUEIglx^6BCQVoPPv3roGB?_DG(>AsC8)1jLsLKhR+()#kc!8?r!lry9ujeCepi z6}ksT-$ki->^K*tEMU-;;un-D_C!up6wLjC&@oh%Seo|f6nupJk}0ux+RMF>o!>7v)ZaYteD>FhGI3Nxmx#YLjz$oVEKUeYsBSBuAQ4BL86-Q zj_w?B>S@M0aa(7=^~Q7+tfeERBowiLK?b#s>Gk73!<2r26kTsilth`^ArR{_FROGL z(T9|#DeF!r(eMq(^K^60*_l^@GQR?jGjDc|F{z0U&i1TBf2vwRr;zqFas=gvZctS1 z7$n&z_Fd=rgKEa!zNEXb_3onKUBTXc%s196kbBtM6F~Y4_-TPA@vN=PJkP6^GSe9M zPu@@d!z`1hiy~jIc%eL9FS8%;f!QFmqBLl}ulwxkN<3s8#kv|P#5LmdG2*l6FfX{VVYgH4I|f>S9^%Yix=Yc#L3pO`r}2Yj9}v z9;cLfqXO4^e@7x&9|FgSZLNVB@Zntd4+qaZdj=pQa1?t-PH> zC1dr5u>5)kt?1rST2ZHSPs1%B18@T?RIazMJ_qR+?D7UOs-b@Ed8mySdDsY8mv-Vv zna>MgObiTgnG2Gx;JN~{J~5*Z7(2KNMl5+5)kQd0P`#^FZgzH7rg=rlkuEvPLXgy9 zlj3&?2lPEZlX*$O@<#;Et=NM@oue7|WEenpU*^!Utw^KFN;kO30*W)f{nF^1uKFvb zl>V|ZT9=h03`48KDMyX|U0%Hr7$!4R?VUix`I=iBWfVhoTT}_fNe$kE$kR06fJl+R zHJ^fROw|O=f(pWpe(-q2eZS`*%CAUKB(oXGCT-IN|1cY zXH?yaaJDIPx?ti-7QM*V+3YPcuJ02n;#X666+>~X2Wy|!G2j;j-0krS+%zes>ohLt zvpFr8Q4ONXv2El=Ba{@-T0xgc8Le0BEhop4AJrV8h#j>Qz+Cg;%#$GbdKvA;f6tO%{FFJ|0ol4&eToWd8(2(VMkx*s|N7G=kN%g^4 zXPp^Wrd)i<-YsFD5rVE!_!J=NxNz^dtuVw(@#@cXvQttx8ej-I2WpdqNhl5c#IB~o zPO>4eH`Bc-p5fWRI)kHh6zob17CUa1?qx>rKq8gzjLscKzmFbG9=RpN18!K0FFDsF zR|!fR(JD`q>6WgYY?d$KZrO)z^pq0kH%Q>G-@JYwJv)ZqPPnd4PFDG9n8C7#U?%Qy z9GWNOQUtOzH{cO+sMXSEt`x+SR~jqTul(SewLGbq<)~3kHXR$F%D4a<+o7>mz(oI! zkQuNLw5#Cqpsb@LggM)bt9v*opaQN@kY!TAEuo||K;qOf|HjD#j;F-71~=5M=yP9J z5A{7wT%AT}5HMZr4xM306OZn^s@7qjk}**5`Ci-^}Vl;)!`Na9h&tLoFzt7zMeG zR+r-sOebCNZp7|=CH81=r;zgGxv+GKWy3v?RVNH_EJwV~!cgD>;MWvW}Fd z)R}V5h-_1_zIqLD!@(aOJSdZN85c?V;K8h#q5laGcXaizc=RZG^xb#gJbd)<(Srv~ zex!r(g9q{KDlYRm<(kz@0rh0^knY_ZGNb$UA0o)a+iTa}73M-N)6J zRQl2ftJi&e8d-K9=8g+v$3>x4?>qLc)!NH12?f07OpyNo5B-t~BQf*K3;>c$iyYW8 z0|U_$ij0c3-zm2N0m))eZa-BtNaiGFbYSf%p|BA2TKynO$)QP?~Pp0ag z52ElN#}A*3AAjAsE|pGZMLZASId;WBvBs*{qe|JYmz3fn;X&A^E^0?f=#Hk>hoie9 z0sWkk9-W~-J^bcT=b>vrsJ`>{;{X{%g4jF>Ca7Gi5hm$w$azJk7eWrmf1=DS?!aID z^=V!IjqX~d1`jb;@A+cFL6EGuBT9z=Z~o~grh}{-40B@KlMd`6%166U^dpm`5B)d5 zRSQaxrA4)_h&W^XkVW3sO3s%M=j;KTIzZ1JTs?a9fIh^VTaU(S?WDMl?K!xl45$lTMAwGc!J! zX8Me?Ek+rAm6q0BgXWI8NN4x{bau~h*ceS0kn#Dt8ZYu{456~hfg|jih6SgMoW-$m zTDaR?F*UpVd+1 zaJt!by4nIRS_n5_-`Kg+KF-L3`DGwhcH(!^F}tJRi0PzY-P7662wEAL)qn2EF_af? z@Cuf=fCImaZiir!Z*UekW|Ti>@Iu%je1ce_`}{o!lWuHke2L;?w*%s)6)YW@Xe$n; z!{@@sblTSUjV`;r48=jxfxceq^=pIYiknYXc%nwvG8jfUV>Ip=xr+i4Fx(dUY5RSK zd+jVqX6`ELaNfiIa$8f#95le|dmDn*>+MDmCR~CL=VS4lPT!b!i~0QRCf&)(h65+W zYG?PfO!uAf*9&nq5_1M9v{ZLna})~ibn{j-GKt37 zSFLHKr^-z0{ysgq`2o5$6$Cxm)cYTSY`%+7Y=8}Cz`c}$JIq}jYp~knW1yOH98*z( z$}Ci>s9-sQf8jXKth*4RJ-GGrW0GBh{2FI_XY48iM;|r4U|aY!Eh@O#b-2`Y*ZT_} zC6cxDjlw2QVfRg?G?t2!l+GT#*bR*2%mp?`R2{I zT(1aBZM4aY%W~obfoT|ywVbIFfxZ`8h`FNCiik2gVNFtfsG5(zH6<1CkvI1=@D>(^ z&Pb?io$jycAp^Jp!Eu9MZRB0fqI-O*wvCM)uqzfU z-9dsWrdS#(`b1vmMB0>5v&Q_I>C6sM5!!VgFTmS()>g9?uC`T2^lI0$+q$GyZqSdz zHV&%?t!juEyiXnZ)P|a_+nW2Hy3t4FEw=x?Gc$@>!yRxz8F4RFO$1_aVJ1jD=_TrM zVYylI%9Mch0&4*h1CP}qL#!}+7?R~RGmyeSQ zv>=$ixK3pD)g^877{sP;RS<)Zvy`cJ>(7Tbrgm1aPbh_O-!MzTB|3Ig3G`9|w+9u_ zxeZt?h`5J?k;QwhvR27Y&T_*6B-TV-l>VL5ofy9_O1Or@LKUGN0bf(9RtyXPKE1>0 z4>%zyy#ZPO&MWSsLp6~(&{t>*Jt&A$rLR}!{&adV;n!!WbyTq3%98?M9ELx^eJubw+!V*!0OTez~md>EZUWTjhOV?``<0Dk}2&;??bUv~ea%YQGqol>f5o3vR2@FD5 zq7lz$+C-9PoHfW5`ZSbto9J0#LZFq}#Fn=ZX~DXj;TSZKEaS&`u#x#zHo8 z5s#Xql{N=p#v|9Ef(PbGd^nL%8sp|3M4uqr5DSBb;}bZ)U~}MD?#@w2uHk(9F3&y` zhMbsiMDD9tlKt{0;u96>G^Mf@d(>Q2b9&#r$6+k*V+1P<{Ryf5~0XA)#weW)mU=$%QVSac0TyHB_2AZ$rZ7N(I)+XE5zHl zxHR)ki;o?fpAAbK?KaU%hG}u^ zq~$aCpKRd1zUk+>6A>*DBmlxz1)>Ovn4`x76+SZXsvA1p^tpr6(3KLJqYVC>K02~I z2;q4XkAh?rSy>h9Y4zO0VjS*K=DvlYs+rSOZ(~(`(T2@CD$@V6en>wKRhs3#l5Q%( z-!4u!@wUW(uu-;7Q}Bm_z?bm{9(h9+xS5sUgb>P*`7zieqorVGLviQB zYVgDhGXTS{wH{;A3zIi7zb00d9MwEWEazk|C3RNyi!4bC8^uTsg zme4|+-KWjaubtv@%UWF6e|eFlGY$2GkvhFs4J)0G$1>gzHg8p zndJAY8jEjILr&QGh~kP8;^A?0XAi|7$V&V)sMnoq4=1EhO)eO~H+oKIk16dqt$J|< zXMyGt3B|2RVKVT0yShc8rh9yOTrIwgnI|M5_S?1xyU52Ql!D-lQklD7ZgiUEhTp zx6zJ8v*s{P!1;k`7-X8nB78v8&8)~asSF44Y*s)fL71E5ikX#MT1VZj>*1?i5$ss3 z8d`VXR?-;O>X(rFF?WAg3B7l+5~DVJU&6$EdUjKejXr@cU)$`vtkOQ{_Vp) zqosPFHc`bceyoq$uafrhJ5d04YuI-#(bkE!vk`BHcD4vPkLa3+TA8S8G*or&*1PDwEsniozd4FKJqO+eLr{j`@-1lx=M1gij)=4@m>`P&+4q?(%h@9 zy&q+~z^$zBt{5mD-P8>8?&x#OANHJOF~XJrSL%zli^2OjM(JR2X|uP>9eG8i^XhF} z{CiEvd(7Q?L+19N@EUE$+RUM#la0cOhJP$qcS}m#8Pi>iG`n8VKY{E2;kWaZ*sx#K z!C|l2cG9xuZ`3FjViZN3`YfV<%ahs7h#j{S52piqod|jZ;XfMiqQP-DVE4g;eFr`; ziVcR0vCfpdW)H2@DXaatDT5gEB*zTfF3LY($r~{*{4pyQ&2my^_p69SCy6|RZA7|K z$8C*>X@O7qx|oKY+uo7bP=9Wcm45}+lRLHemhqw`#!SxrXeSd#a`;dY5+d!ulei4M zW+H-+2strS*7?H@ZISJ=WMk4^YZ1AKMc@_Nq$KJgIT`;z0Q`Kp5ELfBwY;Jcu!Is?C6H z;5DREQR}nmWmdoGK^b^lv_I0Q`|G^R(bk)bqWwNd8;mqQCyi0OnMV9$K8@4lC(K$F znQI*;i8i!cRUwnaO4`%HA%x@+mLLY`S%sn5N)i`zH$2B93QD4r=oOxOvFFhx*>3V; zR#F=FVoC8{vzq*w?c?0+dP2Wb8dH4#Kf`GTjO2*-&R8M-P=Hj5UTtl=j7s)RekU`M zY60+^)NRaA7kJKTQ45G@-!*gS!*W5w+2hKpzg`c=^^MS{m9S-Y&8ytkIC3rDHgUrJ zR&OuxSTUV71RdMa@4(l&U=av?TK0HVSpe2F^Baqo=V@In*I)tD?}9ez*;UTSh4YrT>L3nOB>;o+>Um^GHe&TE`S`O)& ztVtb@`#w=!>CV^_!xo#dFqn-7{0|zfG=aN?8^+6+&DoAn@^rn-ekk(wYDY*oCU)6( zCpaJT&8}l2X-fCafMww|qcIYEBh6_lly)ED5ZFE&-N)6(-X0mn`rPRTTh~~Sj1+Y1 zd&3w2V+XD?ga8f%Mp$gI(>-Y-Z7*B~+dn7E3}OJ2lR zB#Jd~vt&Le1#_2y$pZrkgbw(xNML>&#SlM!kx}x|PYecAE-_&E)Rg~O;MPCl*EHl8 z7W87^2*x91#Swm!)wO%NzT3AtAa)a12IDgE*5AU*M}Iw0XRb%?)cPar{f%OPe!p{< z;|1fwgxmAfXA%gU97iA<3b)yn&DRyTZ*iM1g-7&(GnBs4&#If~(+eMJe9BO+#xD8P z&d^PL4T0|<&X!Ast@P=;u@xjW!pC9SuY*3c%o{fDH0Zb8=6`(T*m2~54d?Ub=ms_O z>~1sExG=7Xg8d(u3d@4#=HC54?Iqko4UflN@ZW)ib3saKYux{sfgS~tyr5jVLU}_< zDT@5!h36r`#?IH#7xIjV#Vw;R#2IeyEeQB|K+8&3G(H~!E`Kg*%)u$d$G%(2VJ_MB(9*1BaK9B}|U+Z@6;x7L?%Pg1cSt2`f*xJb95HyfG;xTlS|Wk{hdIY_qU zzM}$TM$m`Yd7-yo>UpSqQ)oO1=DndwBnLzk|7Ns~OBT47p=iACq=# z?WW6i+Kd2wxc&&D4k`<{x9Q|vS_}F6O-Px0G9ES+MBdNiMksH+3G{M$x?%J*+jI(teu+c~fVXv0!>BV?XCj(M6 z&X|H3#gvGq+bB*Kd685XOVcnXDL z-+cS0Zw#>D2=)S#%SJWbL`y2x(k_(|1zy0#aLRNi_l&BaDzb_mX%F)?1@vQ{uU_VB zF26iZ=(T5NpeaZP;d#diGamyl8sIzOr7-X7TlW+6E+7D zMIW}Z8)bYw`MN7*1Wlxz#n`p$irI9)kehI+&m}UqQqIeSGtFiQfKRk%vxxJOscMty z0s+XPO=PgO;_>{5h0COj6oS&SOyNSTqm0%8V?*CnlyvwgpIy$sGBlaZ6bAoq${CWyH=7;c9 zflRcnyG%G(C@+-Z_$Ws7s^Nf+C@jYpUdm5(W?y~mS9~17q!{**$o}LcGDC>cX-%?m z68-f#2KaSAz?5_mRTLqbIF<#HEbD#$Jg+MHl?&HCDzkST2|(pT(Ru~GJ8mf=$-qbj z^ywp498WEzxQ1i%T}^_iHJPBwC0inMxXhPsL$);FTiV2Pxn< z%^jKz7m-Lm!3e4S8|ww+Z_cyl*_0wSZ-^Htnawyd6HzGezjdjrCrIu2B`BOs7F(_I zlKHbijtw}iOJ=l{WWE)iYjDAo`R6$0b680jP!H@2f1JR9Cpu}-dL-i~(3F>Nhy=qc z;mN9p6XQZUCv?8qUgFivCvebB_$p@Oa)6x1;1YI4WJkZ7*yxvdIS!!!FF*Iq$9L8X zFbTY4R#k3X)s~gL?jTHWqrHZe3fPC-$~nTb_!M-XmE0c zaG-HkPh&{(z7`tI)2CSZvl}iyp|jMqZt=F@6LMVSt2@oWov7KKcL4Ro_`R1BkY|0%;>y2=7wZ zJ=+McF;F;sjDlKhaPiJf3P>+3C{jpqIpjwVo$n1U@7*69)eoZARDoi~e&CrB6h(v~ zEO<;`72MUKLM6EP&_Ce9h9YJ>V}|7d_T`K_w9m0Iw*d{B7iR2trlSsgLgyxIUR>by z5zFwNsz)IXSNFWGeXeWgJDN@Z6IQsM2Vw@I1NUXU5|_CsDKpkjMC z3m>NnQw~&b%C7IX9T>=PldG51Y&;$`pg{~BW_c*Kz){rJob<^Pe*tHJZix7R)`M^!u9#(zk z+ATO<(+RbHaP%MKWVbgA^i+K{ZM%zSNYD1_!qb!@r{T_sgPz)x6bJbv?IG|Hi;Aj5 zJvx`BIcM;rJ>QkFy?NWCRdjIQX}kWjzf9htE?0Z-0prc@#}7<)Y_Cpm;?tCyhRs^D z3nhH4ygcIL%M;pgV9}b3;5Lv{k43)TIZrlb0G8LlT-mZ)vs;6V7P}H%8-tLku7i_X zYiZN2Ka01LFM<|LrmTx`natSmK?3;qI&%8D4FAo^krZMy`>_@^GZgvPg1dPag||rp8UTA+tMG@|KkXSvV+L zaAhh81-ML#VU>=RQqLXB1BoM9u(iNwg<$kHu~@K!EZh4sPE)o5isaHU+w^(P^L%2} zwK|@9_q6)R!bS(66!=50N<3 zLJ$?iE(Ng`ltQ1b9Mlzf2j6jB-g`^4>5e_SWv}*J#4M<#3q@!&B#8-?jpKES+Kzff zz7{>W-+O1lgAb&>sb?<`CYsbY4|m+E>wy1a)3$bMv4z8K9jEz%eY^hcTgmI(ypy{? zH|*u=)kWW~T6>Ax`=fkq?flk#X4#l;x3y#i?Z$*-ZgI}SHdT?WL)}~*TPkj~p3T*C zmhZeBdM!Wp23*vHukw9m8EUIaS%iw3%9h|XrRq)uj2uPyA^xvut!HOtnpfr78H51^ zCB{^IyJXTfwer@)$0Fw3`_~9H&~PCYBv6C=+3W)?7+kYzQGdO*i;!ei4Hv70{RHPl ztI6*h`-98086$XVTMR`AN^5U}WV>-Gfit1wm=&{|4@_l!EDJH5Ub=aTb@wj|$ zo+mFPZ8jVALK4_+O1PFZX7`eq8`~JB^ua-rjZp;&esw1~ zcJpOkr&+Y31`M#c;vuW<(MN>B1Q` zUyW*O_Q1a-*mXU_b;aZAA|?GtAf*K#iu~tC1bQ=X2!;+6!Rf%id|jezIo*0G=Yt(O z15TBVl`tt&(Yyihdln{;F~()QNTy#kN~o`ke2I8#OHopznMJ?x;~})Uh9KWOaBrKm z;N3^|p7gAHG~{Mdm63@(-2OHLOcFzuMN(#TjTg*YW)C41&fJJccg zJC`#oUlDne&lD+qiFTUs`3X+@T9ru-$4x?DEUJ04%wf?KE4nSA+g-@G7C=d?@)(a6 ze3GFA6`uK%1zDiNV~&9om?tn82K!6od&%d}61ge>VK4|EqI~J2{8xKAqSXz(>8@ip zeD|^!_2O5EzVTI_&+GjWq0dAm~kWsOWoc3LJM>J7vO~QMuhTyYv0*$^V0*m8Q7O)q8#3qK)*Tfp;2>B~xZ(MHMjk(=`lbCY2ZRomo$y)C*l_XbL zy_kJC=eq)-`T}re!BKgpoS|!n<+V!E*I`BaxN#G>>K;%F#65jTT#iw)$ZeeJ3#2HU zsKZl=PgS!g1SdM(<-y=w9tQ|9iz>r%;-%lIL)dBSaG;spaCpL)glbo5W(GSuOR}Uo zJL4?w_i?c(>7U1#KTjFbtjcAHK?DfNjvgzoNXBld7IUUg{*>vR$SKySS0G> zE(tf`&o7LqTx3A$1#2vJ z5J-jn%lh4(M+E|IO|I)ix14z()c^UdBA$;CYw|c_w3{nn+2Y2M3?f?X`A4a(q=Jv{ zA|?1ykZLBk{g{~y)*IG9y+@25<1V82ZtCXeZwO|X_b*;P$vLnYSgv0kvm9DyYbMXJ zh6@9kkIEr2?0xiIYU8}iIMok!zC{G2Gc^9}U)3&rth=)uwUNNOC|mp)Nx}V`~hZ1 zSvOX|rJo$ufw|6b$R2mKdYn^CPg_jpW&HAi-;n?`%BeUaOsGfT3}*z4%XtM+kTb{N z$H;V@iZcsjhDbN2^4gff2yH!UX9U`3^Vo#uor41;d-#LY=Ulpn{^2Qjt-*WXb2ZyT zcS&z)Y|X@!R$-@Zh_tD;n}uw(94?ElxbxQ`(@pQ7S{|K;cK^loLR*XDpW1_JFN3Q6 zm}aZa3!ORBdLwp6?gT|$@cF{!Wp=X=5nMA^oQwvq#YvKdcst@+3-fX%XzD7yYEN~JYYinmt0XR2LY_5qum@#gOYOXNq7pVC`Vj|33U`%g!q{+A6%!=R>;X2f}6~S8j zgEG6&el{zZ3@n*F5)<*e9t|&2XLV7&%nq%i`%?A`2E%5mjm~c;58E;yZhdAi%g_7B z*l+ig5>bsc490B%GMC?#lDx{nx;CG8qHnIu_YiNg|3>YbdHNb~l@D}csa|Nnp62Jf z?nbtFmyJ+l=@;4FMl(;*h^n3iNtt_GpU)eP3v|^_aQ{T%UwV$2CNj0HXT1J8%8V61 zJA1K_qk51RloeqEgZ9i3-ptim7FPthNv=y1TwbjksXp(2vGk(Klmq9*f&tR!f4Sku zMPieyEETH#^>U9On*5GGER z?DxV1jg!l!L4ER5pW;RrF`$977)&b3g z6EHWw@z97N%R6G?s126oRfHB`hr!LNO}4Xb!yLn+awVTtsM`^{P~RsLsMWaiD3CDNxs?t;H-myl_$y$1|2g#iB|Q$SsDSJ~Y; z&eMjF_L`a2!4i9fst5f|ro%K7X86l&*il zyFCiwX=?=w-y=rT)ZWl$UY*KxY*V_QGtSl)K+3drE2VGusSGJ#JeorQP4Qt3OU|(_ zT-~!uwO!5G6}EpvuY5~6DwZ~kFT+rLGBpdiuzQ)jncrYrREDVKTVgSPTlU~%1#Xq+ znj?bce$yp~+r8A5E%|nbezb&iqA|Lkn$01&o+v~Fp3sNki9oxMD z@pgbgYmtfk<5pY+SCijp3mU^`RByjjTHFI0?OL{@k1ah=C*d;Y@ha$keZ(AB9=1kX zZbwZyJGBE(ga2&n;4kDt6#LcE3OJbrFioef*$BiLMfEDbrNdQ69CmPqrZp^-RB1PO z8*-5%>4n_ag~{{{>*8gv*O$B}U=pmP6Yqw`0zw&`uf>l*9obuLqLkKUjG$GVtmR?g z;jOf-qIvC1?e&Dh>|!g4FomXVqpb2z`VJjiiD?-s(dx}iHgJZW8#nl73^fxb@a(OA zV7@bb(@+XiiWRub>DrYoppffn50H1(!sTdjWRUhMTb5y+Tf?vAR8!Js!CPyd1K&)- z(SdsgT<5Tc)3uvWF-zdHfAZg6ShyUxCIJXFzMILl!8;J*->2f=s0EFB?0hSWq_`8c z+z7Knrk4}V>u!~R+(T{o-~6y?YhI=18P9(YkiY+7{qsXXI61JXzL)&^r});_o)FhF zf;Kl~LdnLT{aghYzZ?@}P`z)sJYp(_)?OLmk3+(7{%BDJrmwIJlYNh@4jp!S?U~nsTi8W1~ zKDFtDNgM%xfCYQt_jxPw!~!Zwt^#1!fhB+JZ?)Sgvr?g_xYRSEfbk8)Hm~KCdCgkw zvHRN9HO!VW*9rFtAXYgUta&19m@2Qm5m!t6jOzxb$aPbRli{c5nVMe#f?mLiI+si6 zoqJEO5PhwyT8Sddo>7KF*8VM$70(E-2dkN04W0Q>E)B=(m%BA?kMG%$sMR|@FFh@@ zFwU9OYT?|oAXZ2Uerr~GXRsHjemK2_lj^nZ`>21h*FkCYoze2hYThgIzdE@LRa3dq zTP}9(+%mw@^Zvok_&f~wyyTZ~*gJr4Vcma@z34N`v!Gx`k>rvmR|v_!96{a}mk6Lm zskR9Cpy&|VikmnD-nMi8byloWBeZ1w3xA_uJ{Vlnb3PK+vRJk$t2i3=4U7~1(xS;2QVAb12 z)@A_VXP*s=nXVNQunR_pk-jXwGuH!-x-reE8scO2i@!h#v5T{G>+#(k(}$p1Ex?2% zCH?e1d18M;G2X4kf?>`&Lxxs5F@{?fOEDv}Jq!rnT-g0!-koAp#lg?*%BHt=R(;o_ zG4U3RKJp5$ksJ@PyFj#r58_d;e|2HLZODGULe1m;Me@$^d@OsgazIS*L)IpsNaRgo$~ZDl8ZI1$sptYFg{^#0knK?O4&a7Ic@9!T zs^n!{^Ajc<$+&9o9M7Mwp0?BJ+c&I)zED_4WpH^EW3PL;VcgA4ycJkIB-BlxDec}c zgHEmp8@m1t2>@&W*a;&;s{+?g28B0|b4LJTXZ^^+LETQ;cUf!g7-}~jT{cFHU(1g*S03o#WAZuDedt4PM@6F5ACE`#=|7cem(Nf8PEdB z#OjOx7bm5f-a6}gX8Lj*Ju<3Tzoz`j+-Y*}m$8ip-v?i~fciU4V1Uw2MUT$Hs!!=8 zZ@9ubjf9{UOVsQHn}O=&m}}VHYvz(9auojn9>BOj5S;l=d-zxgl;p&@&;)Ukvl-+~ z!L*Y@3VE2L))f~R`dp#;#GTwb?k~Z6`E7v}*i9iDc)jtw#wfEKJ?!WT=UEu3t;i=g z4VTt-|8nT;~=NP9TUR6WPz}dFFW@*#BLaZ5k;wV(Sei>AJpD1zwywvPb zENq`-T#4aS@$D5Qm?-G$yuo3_7l_3|E?mE~Cgp!R9-?lWFE{msO#5Bn(+Cv(Mct@ z)keg;##5SxYvoNL5?|-4$d~VwnO1qqo#Q$`dXt-$hdD#ovM!2TG%~B+ zoupzfq?%T%M0H6r(6pdKw^jz~#siZ8J%98Awbv%wKongSawnODhtS`m3YxFK92NR? zZ{{pbq723fb4`TW8?pWxV;nZa*Ss6{O}&?xE6edQMHMX$01II5+NHM#0;i&RrL65S z%Nhnoh3Y4XCkjL^UkiG z`uJ-+xFosx)w}7=rOC|!6VLiJL9wvBin))hdg|YrLV<6G$F0F{`71h(U$+vOrW_U} zdl<^O4LFwm{INd-4q-^$(a)Qps^PzLd$zQ@mi|Zxo`YEV)&@1eAk3DujL@)WqVOkX z!j=2SRGoZy;+no;6l;)t^;R=go1j^o%mG!Fd+gH z0Fk{dJh|{JenATlfo>$c$a!2zqc#S{(&B^+0`3JeJAmMg3a*wiG)7KV{3rOIe3WpP zjr~p}AfPyYARv8mP@;eyfvlc{<+bGyZUXWZ?P_Dxqd|p@!fgI_3Ihc6J zK(c8cQ3QIj8LTfthdx5QB*NNvGPF!)bZ4Xn5BBW-5%GlzfxA=9M(k;t*suwr!llEH zqkScO_qw)-6Klg=_Yg~uQM_~P1feHz!#V&y^WN8yAYk1Ipjusrb&1CSddqe%oI=pX z&*MLQz24w!(0XN#zd_g99D719dE39?*0Qn=DDGcIID%-qC-!p&*!#TrfWIjH|AF1* z0ez$P`#pFY{-W$3fp&CyfT+FQFLVTsNkXcHV#s%9*~Q$VzH^4*`wjW;yejMAsEhOM z8^Uws^_ZWo$& zpPstrV@@L24-_tTSu_85RtwZ>ONiR1I6nd~Jum=OZ-@i4?62Ds)bOVZNKY?OmYl?- zAg|1%Ph@S>+<2_P07Lm+=HbkgyRe~%qm%e>pWFm>Y|JmJ>Jtfmb#k~o)ZIGiMY2S( zHBo0_g;25?`i3tu`f%L0W|Bz8a13xo84YEvq&lP0-X|QW_KL7Tu`<-CNgOiG1!Fpy zaC2Cl`aJ5nx+RbNIyiG5V9-lqI*jTlq8U()$&lEN@FmF9Pf^@0;t8Ve zz#W6p5p3zTxAURr3^c<#^f)U52dK>>a(#dW>4UR!KQHZILr9tI%hU%3R}Z9N_^(UI+!4<#~>%Kp#r-iCR-SXc3?M)=x>j?Zl?Fu>M z)0w9OA0eg#l-)?=tMb8rUWI;p#O=;(j+af`E4_`_QHIs39JtDXn3C(J#7C4rR%{2zzSk_oXJ&|hs zLKm}^d=ISfCA6QCY5`otLT&t?e@W{a*_PZO7J=N2(r%rp04}HJs9(?bxoA!97eeS_ zU_T!c8CVAlhSkI5RbfJjF$IYlQe-4hDf-(nDOns=w}fw3dpl7hOD%RhAxk;2Fm5ML z>Tat)=a|hAiIJlKg53)o zS)fZ8p!=3#`gl;ACkY3ZRYsU$Lg}8MM(Ai*Z-FB&)77tt@xH;z1wuz3$YT>i^DwZG z@;A!ZO+%Z(U!7+0QqH#O^(cYaCH-dJ!b*k0W00w6x9VE)+BY`{e{XK=w@KFT3q$du z6BT2mN<@2`qKCu4zwYp)W%7g_9|h*R>cc3_e6K^hC*sCt9`|Y&Y>B z26VGH-E3{jz{lnEt{#gWzZ8T6=uU}XpDsj3n`$p=r0u;5O7$)cd5s3^Z{!Bb zu6PVZL;*lGAoUr=?~$WQX;sIQ7p=44&vwdz-{tj85hkcjr{RkTim7ZL#L{Ol?N_xk zQu}n7>v=+h5Vgl*Qd4|tfa7$%p_n*wn?<%_X7^x)Nt?5T{jnd5hO4n&c{X5xM5tY`7@MLOS}e*5--Ar%i)2j zM^U2=97>d&y3x%fS;m?E;K(89oS*Bp0FW`!K!n+zD;0M_;CW2*nT%{PL!-)YH&Pxc zkH*NNr=V&?2f5I%q%=~MkcOUUT&FM+TsZ1su)RT9VAG-Bv3Z>~=A|)@Xw#SQc!V9T*neEJ zi$y9-+%zdhcqt;~xi|tgC}K%UELvK{d}1(SzRKDv{qkwtrTA0VHrthpz;UA;bf-EQ zP&^jtD3eD5(u9r^Q~?zRq5iTQ1y;P7g}AB3V2vIH0u`S=CS~8VAEo5*U%bjLDR*_Q6iFoTq^UG?}IA2byEscH~$if zX3+ef#>c$6U)|(w=3kg@pSoI z{#0v3#ILrGKp=ssnB)qYES|&=?d1?eA#u8e_=%!X6~d~)@JennBw6It30+m!3|d9} zNC_389GxHmuF!FWl9|@;=$+T5W+ky~^ zD<)&My#-CpC>3Wl(&CEY=7y^MmS)37OJD&ex_W)aQ)2hZfhtl-e+H9D5m*L7AGa1fn$ruJn<^H)K^r|s(&McZ}Kd+=qO^;BT zDvvfa==M~9z_q)AbiP{TP*vK+yiBny!3Ov_bGBjgU0m3k{SY|*EDU=s9RC{9#>0N^ zs`PoP#}GMo36DMGaCWhT$4slcaEg(snzM7eR-B4 za{oP5T>{D`EONcw>Fe?B8lmKod8F6q3~K$9z)YE(qmTaU-abfyyojf>kCKLS*ChHE zt1)xE9CTeFwpr5ibQ0Go{WBTVq%Mu3>M>Jzub@#ZFEtmGk1z*8Uq|;(6?qkn)H=*&|#w1+sA3 zEONMWf%}R;O=ZbLq?#6LV#ODsY=)NzRPyNz*XcGF@1r{^_;$+(JY>fh=e6MCn%jKB4z~Z1=0;x#*v$ zgd5%YL*JmAqot6VDkrfIex;qkju7{dkr;$!dcZa|9#ssSHy@nEmv^-$@0}-3F;Iti zW0)q-%Zzu2{Q^%~^MMIug@ooOmWHNOXxd)RPCyD*>~XViq&E|qD;EALi>k1dMo852 z%>sUJo4WgntO97UDylfbH+bO|jf$uQssX~fd@0~Mp!sE=bN4kvH=@l(z^x&O1F36! zc`LwI7mp)qk1~dHPUl}2^v&vs!4=j>$~$Sgx%PBNN(()2)kV37;n}%%Jf1^?ZXZnR zflI;V1q@GSO$zhJI{?L)`fFOo(?-6l$|Q7iz3 zyiWbI^C?`>HO$?0d8>e%Js;cB+gt1bOuCPU$D24dmLd8$t5W^)nP6Mmv-WkH^(!C+ z>~E&0#q2Xi@IpYJfK5Z62Abbd2#vEdMrjmS+}Vq}6^iQVI*|lQ5cXl1qb^2r@}H`E zL!)Y&5bLewwV|H0kM7QUi7iDMa8Nlyt@`W&y*IknHT(-5bgkv1bOC&DE z<$VNG8wkVa3a6g z?$qwz$%jfFmskbduCM3zUbCA{)m?*1jFekrrH~J6VDwr+EwjoO-$i@+a5YUUr9`9d zdoQF%`W@T2XQMmmE{KjAe+NasM`v>(Z|H0G33#JEiSZG_VrL}TKbM~dCpe!4{J!NF z{N9fb8IQ`Qs;b)l`AC1ed%b@@^jKVrlAsZw93mI3&jwi3o$;$8n}tZyM6vC%QF288 z9lr2jrZK>(WOZ-WhXk*s%e_3jd$Ieck~;=6X6friLRcQ-Z4;=TI%H^z_w|2dJ{FJl z)pUL`9(F%B#s4kyVd&~?1z%aLeeoyz^Z|I3it;$Qa z?B<%acdI^Z3L@>w8&B1`nH`}NYiqzOm7zxCGY^8aI~HFj zn5&27PgO23hJ1R%{s)BfKl3u!IHv)nz(7FHpg{k3ZteemI}>9Uz|X6NsLI-GGa>a} zYQkkj$>)STsc5Z>BEknR#*5k$Lv0XTM_QA!l2Y2p{PQ87%6b+MaZ5VQx@E?(dEkv# zc`cw!MwzaCL=#%MvLjSF@d2;#VzuqA%J(R}roAK*SSuotWSZ(n_hYbsjRwFb#jHvZj*EfY?DdM$B-X*8ICbE$%iIIAc`t$t#UI65pCgTyIW};jRk*BjsefOM zF*W=FEJ(E*IxC^Q{Ry^9*qG`YOV=G?5e8IF=?O;g%VxKeax_p5oBdlZ!lv{Pe?;S8 z{VT_BK-Lj=86=su+6C|Y7T34&);LskIECbtI9ZIKqFmfw)nCZl9?IzGk->y%sL^)v z+_@aG9iCI7Mp3(~h&ReE82&p|bM&9ptF|StxWOqWch+*i`?MOf+p+ks4Ews0H^~3| z%(9C1v-luDK(`P;Kt%s<5juMPeB&PVDf=xZr0z>v3<2eGqUJRqo?>yItBE!uB1Fz*=#4!#a_(~=;VEue`xMR z(vO)S)Oss_8Eu~Wx`{)@bvfk$Ti#Uv{G9I*j1LmqfOmSd5!9=CC_2_q#T1vKI~nrW zY4kM~DLL$O&hTK4Zpyl*oA70%Ib#>lUp0_w7hgbBa#yaKS{;}<-(C)Gx{(3yMEQJ`ueFIR8Infj)^j@K(KjPxG9EAH7i>t8*6taF z`6h;AaeBn{pV~D;IYXK6I+I1j&xRL`uYsh!8=J28zPo@}YJi!-t| zm0@f#GxiH8e`!z_S#^YoenqB4_2z>*{6H9tfL$Kop;Y4Jb$5lR7)VCK5kOLUQ~s4N zA~EA^W>9kH4zz@~i?_1#{6?7g?11ttDQ&{|)D`eP`j5}k4YV&(?gjNfrS+pGpdV%Z z_eJ$HI$Ak08oC4Q%^aK={~LI1Yh}V{Ze{BVaCZ6sMmSKQ|9p;rJs8s9Pb5nFi9{U# z({qe%9W9Mb0IpW1#_I%Pp7#{dDU$@kUg|v=gY>FTf zQ=$4~ho_K}#x%7X?qYM#-f;X89$h@^$ta_IW`;A86TC;8z^Wg@A^{~(bwo|lUS)TE zF-d~&4V~EHa5c*YM4qWAKj{={S4hga&a@10TWecd{rOA48@c?ul^#=kK^YMuqsXhU zV{zg|6&MAe{Y{i`1Pq8ag)?m)2MY`m7|zCM=Z_rEmQwlip_*_Wcc~G`Y5;}Ahmb5` z3;h-iS92E!X7(oKl%gR9J4Y^}SC?kRXQz`vb)<_ESTcB9sBP;3tE(atFXmcs3z z)I`2U-+sXOpQ<47{~S*FQ3Jt`GRXcXRs8P_3J@y{GsFZ3cIz7w3mq(wKX21Vj3G@zaK{{{1H3s%ZTzdjpBG1PxQEf?R1%G3Vvld4Iu_vlX|cEli`}#VM3E z8)A@;!-K^^!?&zS@QiSwO+v=d&G0{`_1G_niSZ-!09YU(*8gc*R`%8aQ&&SffUB{g zspWs+<6VE0UZOGJob{vhM|2z>?4jtxmn({%Vrj~>r}=Fbg6e*gWq+~x#O0)kK22IP zI1UPh!X*DcZMWC88pSCzT4*KgtLS3LsNxkgW?u$X-4fxMr_{2;N%JBT)Kw+n>LAJt zNHn=NbF$E;txi3sIDB(aF174kC>;$jXMd_U!d&7qjz7O!zF?WHTlI3${j*1~>)7_* zk7q`1^VT@~eCg8Q-XozSA_4uVr7EfA?F>SN_ibFz#i70NAVpO3@nx!|>iQ#003vur zVoip^C~sw8$@yqrdxKA>*{T$mT-NFSYwSwMc)21cI`?W$Vw}&Jqh~NF%m`hce1K#GJiM(N_b?{=}{l~&%%&0|4?lhD+RhX z++yf*S5)e$1aGgfN`+z6%9@z{z4_(+fXNSOJhjqv zUO)e#UGXWMVcpYgZYFj)I_PBN3KMcxC$Gnb2j;l-1yL(#h9$Bog$F? zOg?4Z;6)kP~ar+?R)^Aid2cHZ(_JkG@_8 zab`dL#TSNV$8u)eSEFNID6S+KFt$){WcWI5dmdzz=n~~W4E!l|wZ+HTQs!PY7L^iMY(a)8o z1}6Nlx-n&x3qmmYj(df>aJ@78nqb&X1X(n?vw~+mZopQDA%5j|HNI+^-hz;9CGjNBUcEBs!3! zxZVj5XS#_SOZ^<|H2>a$oJtM6Z9-yvZ2dv9se1*TW0Qj~tvFv?rKo{+9iO4y*Y*r! zr`Vgn-ZnTFt!PL{)2pUXDTWC3uyMW^siCxTGj@YgZGL@rL=Dh8y63P#CHguGWu_A%~>bg zHr}jwccla?uPPV)=!$+!xLp$bDo>X7+_T}Ktjag?^|{gbuyYnEZ(e4dZrMw)vCRRh zd`sihRbhH$Yt*`ZhQ*1s<)7CW-p9FL6?+`|?Pe61DWd^oTRpNw!KGGBxw6MNhxR>d)F)D>o@Z~G^%%4b>{D8!>!NAg zH5mT5Op5vDW$CF?Z>f8g2J2yTq-0{AoS4V(Va&{y|(3)4Lc7s{tkRN4ckYM&Nj+^K|4w_aS z|E_gE;r8)p_XB?QtCS%KUzJ(2b=iZ1!;rXkrO@T@JhF+?wbv@4YdBZgZs_3jN8gR`AW2XwMclkOvEV0#!8tJpY}~Xp zB7a=M<(cn_6!Bzw*uG3S+X+5)Y3~*ax$CkbZ$E5smb%83bI(JOsoJN)ho?ehaPrX@ z1QJ!0p~bH!+$jzL;`{{aIx4Mo^qqQf+I31sx2kJ@INwo`55lWcO#zn{qCq$h&&Y&)L7#1c_XNWDkcHpf69vxi=X1GjKW%jerIG}CQb?(N% z<~__vJXNaa94AcR8sH;-?+{^6AON^xrfWn!EdK&9GE~Z8RtpWxGZ2%`HKKhaz5d)? z)ot|%)f*=_jZ=0~GWjrhMw}L@$^Lp&t{l3D&UI@7l(m39Z=^^sg4b*1EB=E#iIgz-)lM_*IWc5& z{4WG7y8!{|iNHy7JYQz>fIqf;I$hZLkea;l*Vm@SK3j^z8ib(K^I+Stfy?soB#;a$ z)2Hq=MnZTGr)CF9+>byMi32r6y>JxgCNSedj`XC}zu3F18cfF$EFU-o$kZS2*o8+> z0yPd~B7&j53AP!UMUf?#l36N6QOML5v+b4c&GPvO_42#ph@Vial3WsYy|8QUoP3a% zU)QQG9Q3vGR^9A%(zG9!+1K42P=-x-lv! zF*r_uQ_qkf)UMGfw{gOq&A9gq`qaU(H}KI-X3M>Jvmbi%N`wJD%nD7esYHUvmeb6< zqRHVM<{0w!YR`r9H@I9a@Pv!E%y0kI7s=#Rf_&X4;l!79IDF|#!a<*F;!a9J`F-#m zSJ2z@u*tH~GFL_4>_KFH1@U#4&ffe>+0Ji?HBHyw{2^sS&@n}{Cg6U+glgw#s_DwY zV3vim!9%DiQsGqH8|bP!=%+PY>A-sGcs8P4jH;8^M1AGy_oY#%&pV@h)ASDaajm;q zooCl|PgrTx)hw})=GkLznz5Vcz6)PxNcj=$;2Ap-9@O5yRtn}Sc^t9EE8F5U|8a|t zGTMH0r(EBocc7Wnl;x4M$=M_jcu2DvaSh1*0fo$la32Y{RywFM2*NiDQ|v%-_1urIgpXOUu1t58D-yfbTTV%1<1t z_`8E^jge8B+%Iy82LHS@R>{f}9Kln5tvDj>1(9aW96_hSU>uI(LuXSN*hSmm`{G%x zBIScVkwM|93@b^};<_NRgYB59-VYD#{CY4KZFwqCG*2?bBPF zmWQtbI|DtAE~6kwIZwvP|8a&??lqQ&#sUIDwgLkB*)jj$i5C~+pUm?AuB@x!|LcL< zme6-ux4!5ktwVBLY;~JsyD{gK%yFB&Ip>`8LKXtyA&j!%i`}1CsQB8q3-)7 z_pajQ!2|>m^bS^kX36%Edzu&~_eiBRK?lvj6Y&o(3UK%Qb@{%qKz=$f2A{^~*}K4_ zX;D^YQ@}amOkh4?6|>DZ{m`>xc3z=Wxp(ojx63 zj-=iL`lNk#-<96vDEg9YmM4zav{WJ-AQ2Y~lW(0$#uwx7SqcK-&u2~y8J`Pz3#5Ke zbizZW=9p#PB~%=+bLS6C4FTO5QW?5V+5l7eU2sgI9x@N-EqW02TVtH)m`|lYalz8n zOshq!8b)8LR|||}g0;ffh$ael2J`q+8Y!YiX?_a2nQD;kAWF-ULAyFOwvs1tO_7&E zHKA60<3k^14!vvWAG*$PI0xt}(HBC=U3ge6Pk4%`!nB=2DV1+~cU?GE?WX*g6(d$w5soDvj z^@(6;w@fO-Y`U`dK-F4Q*8>kNgZzh)?dC@M{8F@YY~q0<8Is>5`x%ms7zALuT71(7 z1X=w9erFjVhnU{O0CG>f0OCjE8bY!oe@Oe~pd^5SxE7!yjwDepY}-j`&* zL+XD?Wna3A?|J;ke)q{fqm+Cj5t57InV7i|NEMRD_V2zk{LU_2PnLeusRDoFxLprz zMu(8%q{ydD*@*?HeqkBxD@J1JHOxhqO`Dpk_?G=H-B^Pbdo=(acm50Hm&o7m?U_0L zJC!_bW0Mf(H;>*`MUB=0vFiQ2pc?pq*_m;*4AH|=zFCOk5#a$CTt8_F&|QqQtkdPC zw5Zr6Gf(9mSokEREyee1K3$XLt?<30Mo{4Up*1}UA@vzDKNYSaHy1Brq=j!w7+9P> zEni|MAosg1UVGk4bnvN^xqqm0MHts8J!Yt6+A`C&I>oF2GvbAYBedb1CYfZdIiMlo z@8KgW%@zVxb4;@6&A3&^dA^-iCF>@q`(6K=fMd9`)KQldFJo-LdxL0URnV4Quu=L@K?{51WG!%^aR0a0tB|&JbWe!6-sX_W zBEu@Yoaq}ygGUWL)Tj&*tw2p#92XNrWpt@!hzJb~CbdR`Ass9+5Y67xb1FysqS|_` zKAqYEr5_l@Re2jSUzazE7iQf*V5UHp){|T>Ax?~QurZQ+16r;c^m^SBwlxypoQTW9 zrgqq(OqH(bw;Ak74qapDBRZ{KPn730o_cFqHE#T1LKm7$tAQ$C#0#}BzM^Q)9KP9& zwGCx?x$(`m`#}W`MF#ITyG+~mR#dv1bU{ni%yD2ns~4^U^%=yX@}h{a@Gw60mJlw2 zoU^105(LLof#=eUDNQ+){v$13Z>IR>@D5fbY;up0Ht@i#>f?&OQBA zMfj;jH%bP(y$n&DL6Q1LF;b&8{Q!~rMLCo=UJx-Thrt^tq)oYNISY{1!3F2=JB|!d zEs|_2R#>2pDm7~2bt{Poh0F?g7fS9K_r)B*Q5q~LtqNBsICD|!;R%kMoOdqtwg!ou zW-hhJ;e(<*YT_8S3l~H#x6>g;G(*$PfwMkHXLd=0>1i?TaN=q9IX3f(TLiD}$~`LP zR|V1{dq$!IJ`zp}@Sg;tD75H1gU0YbM&cnERsF}2jk35<@Bwmi#4G#-EX9KZN4%=b z`U({R;vim0tag>-kF%4%!6A3)7Q=a2A=#?`yotJmb7bJ!x{AKyq#uJaV*m)EnvWQd zF^MZFuWa`#ms8<#fOWX+>@(2R47cbQ^nx15d&V>i*1|6WL@4J)9KBSQyIJLj#K1GgvkvBea*u`RHfs6UPPwDjCW zQWw5vS}&-_XebE!j26Af2NXTD|ptk~{>&AA?@uN{xvNTvk)HmL|$guyQAPhH56BtQ>72tYe#=ZK^@;sYPzf zWM@|rH|cX77NBS$^LmHZYln8$=4i-cOE@NHdxsDU7?1B zA{;gX<=W`Ft(}>0Go1_yansEt7T?xVoISpXTQ3u?(gq*}+J-a}OD4s6Fn6m)+p%xU4+Z(A+K zN?2Mb_A=xzdP_RMju~bY!9muDMKNgQ__U1$~+2OA4Eke|6s{n>|V|HyH8cZyhhG;eKqtf;g zqD7prfOw5K&koab9O&L75~1YFM;iaNm~qy_O6?>0Eoh;&X0hyIIYWwwt$Y_$7u z{Zm873=L|4?{!Xn#Q{(9(e~XHB`bkk)C-Ju(E)^p-0w7`uecn4e?=+lB=M^gIK0(5 zEgDks33Cjc|k-pXD4TlfC4*zsT^(RSmC}l#*{%Giu3RkhfRqGRD74O3(|Kh&^zf4^H-QzRN`uEw< z>=ue`JO&?=n|qk9SuVQSNcQ!~xM{H&Y?PX^s);*_!-U~C3Yh%L&zsw(ghxFWG_CKI zY&+mzM%2&dEaSpwW$=U91sn zonuxjQGmC@CgtRq41??bOfq7#5^qiPJ(2K`{wAv>6IxDNj~AiWza6A|AU&+`n)W(P z1+*G50Xt*sX9L-v1=xRJ$g12;HoRd|#i^B-nmw!F8LJsq5~9XBNne8}HLH@Y2#c#^ zVKU4llEPZ7K{Hym_Qglvka?x1jYLl?go}tdA187~iu>391nNB0X0yfjiN9|ed9zId z9GWG9Y})VHD#4dSmd46qS;fsUH=isL5sMBe2hxhNM0Z#UI_IVN-QfK{H%~j_^r;DV z-EpnOU#kT*OkYc~Gg+)R=6Ph?nK8M$;WpemB>zDm_Nr`9Z%cq(W3Rwa;rJ(6*L z@_?IyAiM$_W%v2cRDfoj+*%=nIO!36Al}FHcyVWUKcHfOJ%36-db){a#s;WL_y;n( zw(e%+wXuO2^=jT5eGNw5Cu4#Ro(+bA?LXfSz29u>=;Zljz}M$>Vi*TRrKQd+FfUA- zv9trK1?2r99FrliBx*@URr>hvke=<`E%sNf?E0fXw9*t|{GrzY(z2b&5F1g1+3GZ4 zjqPeuXtAnbV@D&|!h+w^3HN-v0@*1^j+jn)I_!u1rF}VX&L0jkz=(@i?RAbgUU@zT zqSN@JL=o1Y9x{K**SC%m@3*;Gryk~eUxB>Jf_3V>WPqvthkrrsTgK^su=pz%_%5R5 zFt)iAT~1=rAYC0-;AJO^HDHH^nbffB4dyA`=|SoXg-(;!*a$~Jc$f#*o{hYD6kJ0u zRxDUa!$<=^MZiA3+O=rETDSXnyJM^Qqq5Et;Oj0M(>`P)WZr)5tZS=EW+2QdeO@C= z#N_57Jg!oxawi&#&q6r4c`xv9f0u>08Cj+;L|yGpl<@foL*CyNnmcaWHdY1{d0D3+ zuvtyi`R8f*=1z_Ka$A`p|7<#f7t@V1;p!cjbNj0flf+>KR8JW9OK;sT#r3#c)@)Qk zNGO!4Y>+gE{Ng@|2`u|q)4LfL5zeI)765Gp+!OPhC@)m8h5Mxh+|NoWJt6MLXTxQy zopWcs(0qK;-dTADgOiKO?*1s~6g;h}K^IqjNaH^TK9F2xlmoJWo*fiJmq)#EmIR7R z*qACDcdMgp`ke=PR)9z!g_wl2wB>97<7EV?Lzt+%Yy2wQNMh^-8DTZ#f1eLC{5uWi z1f5ektCe9k{BgFgj(>NPD?hjQD#$xa(ss@duJ{j@doj>xa0rE$0h_3eCD zqr2VxO)wU!W6_~&-7;g{9&eK8e0N{T9{GzNQ?Hx$pP!<+#zLqr8rHqey0vkF+HYf|7y2YRmC7*|Hy;i3=u+vU z-H*SwBWnD(fS_RKu0Fc-y0MeOoz;}&R=u^zTMW3Hhqcoo%TX^|P)B--@h4SXe($%B zq{lJ0=@2B`=(DjVaWx5faBDLXY!3AOB?oMuMU12kT&h)Tu%d48Ryf6cE#R=h@m6a5 zo6K{SJNH)y*8Y|`=|BZb*>La$Hf-(vl10d7f^4wDNS2D+1g)F9w$iFr*_GxPTa^pe z0QIOV18g}&^sw|sTwn5%bF}b+EqOBhWLrzan5YffXg;{za%xBBlhfgqEvIu0tTAUI z&zHau7|`wk>0S1aP>nr%*Y@d|z&T4tQ~-gq<}}fFbHyWfHCK}q@widTO|_VYB1`|M zozZoY^A#Nq%F=YBV3$1uM#$&z@I`nz6C`^TnIbh<-%jCf7j&3hXv(o9nF=@sr2kLXWBeFFf!4>Y^{o~ zk}t^ssDT(EEFS$?)jGq6OB?|>f54d3h%^HM2$7z}Y=GdufK-He@+u->n+9nS;cc)H6Pw-ddNp2J- z@{I0HBXGA@ZxuZP@c10SW+72~C;1wO!Lm-rJJSp1q}pwBC;FP#KcGUHxvIzd%X-9x zB=MyJ8U_G^;w#A*iEn_QPlOc1)g_pTvsi*8jf?{CdYM+e@{j{l`0OZrdo5mJi;Ffpqyyj3d=03ja ziMI|bKel!tuFl_6NfA0$jce^b)zTH6bhDK%y5{onb*IS<>@O3H$e$lBs`?rkkR%8_2C;4)lhtb6_01mlTuH z60)_VJf{quV(?pgdI@_^za%)mqCzE)kBOJZR>{nGNYj_KS6+VOKtx~Wvy5N;0ko$i zll7msE_rc6*mtYQR+HbJoUe%H-K+M<*v9DU$o{H+5@bN=2FqkamBCwvK5f@JGYwS= za=r~y9iT4c9EF=E5zEB;US}})I+TQPK2?pmClq8?vRfIS*lS0)$hcQMhD`(wkZ;-^ z>akbYkt>IeUe9ipSyiA#ZCuWXdCiJTM0oG!NbH?${Fwt@ZvS?8_;{%EV1yw+EJCuL z)KonO&oZ`iWC%A`z+_VDYPYB9BT-i7vO}@T6l)>VqhpaJRKri3<(#;C3m)Te15As? zEmT zciHJP1tYf9*6besCB2-Z8Y5DuORj24K10Bpqg!b*^Mc6!ywb7uc)BU>ul9YD5ur#@L11Kqk+NSUKGRjcpD)$#Utxi*zJ#_ZPpJy2de6&6%D168~qLoYzPcH{)ur?|HHF{q9{;Akb!K!`WD^x8feZTqru}}uK zbq;PY2D;V3DwW>A7J45}zyAk-sps&G`1pg_b%Ox`QT^ZM39e@5KftA(zTtln;mJwT zwi^sTzFTkTK@kOP``8=K0*FGpR~j_DaHAkXb!W=iG}sB7v7c}9&6^@J+l z;^Ak2v;69gxmb(~93y_L3qibW`N9#8ZOqwm$g`q3@F)$ok|7Q8SQUy9wWzvLHB7ss zKb$b3cV$*lE;?p67=_jvdw+{-MY(8u;S2h%vTF;7Y7HxSwLnjfy5hMs)g6Xi*mawi zs=su+fBNvkzY;5m3i`v(sn@l8c5TOsXqHKK2;CBYA=QyIr+e;a;LPl&TSO=sIh=0Y zL?30~dP^Z75fujX>VRTpb=1(np|%1n0VKr3?O}{{C8M~J2v?wVe-o9?r++OXcsHL2 zAAsKmk090plV;D%s~nN=5^7$a9{1BOIv>k9%e$xvO$uZ4b>q1V2e9|ZL!OZzrQFE( z|Cl5SLB~nzGSfV~Y{THy4+P}pc{Qk0Yl|mm zTD}aTFjpvQC)VT=wEw5zadI#= z);H3(`=2PVwfvL?2qRMW31!JyAG#IK!9jEY34+4)#2H)r2h42EvML;KPWSH z76X|uO7n{nu7yh?bgSZKf-zhk7UxwEPoDKy;5N4e@J1{9jL6C}$393zmQVH_U^5S1 zb1SoDu@??vVKP_N(n9vW*e5OKeZ^_B1u{L&`&=dy!y85GiXH17M+Zg$p5Y#10AM#B z`h9qG{&`h+qms_nafheFgwg}`_q%-Fk2gh;FL`Y%n!Z=p10yLn$#g~`T&%vc0$05R zE-}n;`t7eo+x5SyqE0KRC4VVQ`4kVZD!$Xav6#FDE?pU%Y!!f%-jI-1ksv;Hq5^i} zrOEA(VxTWG#;1A0NznHL6G1Pr+M7IFEPOju4R7mhju$c~I*1TzZIY>PewO5Ojhp?R z&=c%`(l!cF$dpPyr`7O7+))4jIx$mY8%HzqpZh+gv}5@LS^GTe+M9t{-S)rXKoyb@ zJP@5VgDs;($y;;&FmfUZ4Z(Ha-dt-kR~)q7S-ooW-p>~u3r7+uaU|~67DEYOZtCL3 zethQYiy@>_oIz2)+Kv^1cp@;Nu7e`mMGLskG8PVszbF5Q+!gH zHFSM;!xL%H3$2PEx^%SaRuwdD(cEBejMT)RxMNTBjTXs2`_ApBm+Kw-YX`*zqltzH z2FgdN=WVgdx$bdpMpf{#WH2*89t%%lvszrC-R;v1MK(4~Nn46AP9)7TKj_`FEBH@x zyY{0LcG1y2vtPFOb6y&_j+1(Lnt-&P7TAM8@+wdM$@UVx72a=%JBi*re>JktizrF) zmHtDR8BqdoMej_z{GB#mVetE2a|4?-X|NA_7>32xUT6x{^zX7taNL>fSa56^A($_1 zaMjfa?ngj;581&*pDmoSiR3euhmy*1(0gQ>d_J`DD#3gjVR$H#7DZ$AXm0oy_Z%46 zZtPNjce&59^l?U)g=-!=ko={2q+Qq5jn~S#4?O~y9>&X#cZ9#?1|CEl>q!Ih=3vS= zF|7qgl))+OCC*@rT9LinXt{Sp@l#;rX2!qQD_BdzK_h@-YHwLgUl~+2=}Fh0=rN0p z6ye`Oy{+f>n0w#4N7QibYb<&<1@H9R@~QWKQbNihj)Y0$s&uH6l4XoQ)|YKZ%5 z*h}s-AvbVT?r}d?P_We4oQfvt!7SJzY6mZ$9zvwqvso8&?T zBj1cOyTkuf1)W z%t5FBwEk)Ukw>7v8G@K~st*XW16@D{g&vSTdDAD~n*&b%W3KcXD+#B#=Z+IlL-h=9 z$^x{7K@Gh?&tso%=;|Q|y>a|RChxf)KO52h>k5WBUe|YcD1CRh49@lL&yWE8VY_9q zwx6)*ngK^XJ0Xl_?}G5YWAz{0i_pT`%B?Tg2$EAXo;gPk#27^diq5Sx+eBNNjZTnL z3cuw+U_V2~5*MfZFa`>}l$BRvx8w-Tkv6tB>M>5~R&1B1mS47nptiRck!f*}>hb2p z!cuYTH^pUc!P`K~CN#B#N1!%`&qXgAWAVyT3ZsF~mrZgvi!{X*;7NspUEI#ie10sp@>YVLjxghFurAj(SEcy%QcQTx$vIXSwq& z1m1P1Urn^2BY$J@jTX^gvG!*P5_V{tn9sCWbzpTWoK3f@W3zjEpl!_gni)I!M+`VIs7XDbMb*I$ju40rBEi71FYvkE2+u>$5bo7%oXzqXC3 z&S9#%pky3b?@ZlK0>2H@8#i!U6CF3UKSyRRN5Lwro3h}(pN4SWzA!Pa=ZN-m$^`iN z1qs&z=}2U_YKfQv70;@!21GJM5je@&DG5^{PGj!{_c0`A9<39uXhx|3Cf1j2omlqC z^7`AZ$mSi=9P&8$H*)gea}I$|E`beOt+$bdXu$70aP*3@juehlthA(4Q-vZHH?V<$ zxy>P<9TzJJIYy5z>)-VZP!|DyT3I~vLrX!91Ns*RMI!BSA%g?O&`q!S zI@E=xyKcZ-M8R}T%Dv3x)=F4ty@BpzmC-N?&$5isSsMp5Pw*A-gKAGxYlfF8f_Xbc zl(P_={oE_hg40ekAR2qsq)bmV?_{C5F7{% zUpd1yQD2dw6PqZq``ePWi7Vyvf59s#ZjnGeA(@q$i+-cJf;Tc7Aw&&G<~14*v|sFt znaU}FiCBu_E)i%k72WS!D*-o@HZPONoHLNBhg?`BB-C56Wg4fSI(Kcec6MB_+D62?;Gw$m={f)%5?%9 zvW2B)tgqswHJrkzfFae$}dI!T{6S6Dhxg5JUgKw zHdO*`K^OMGm?E}KOu-#Gf?-H>z+PKh&_ugMlveR}-XA9N@39_Dz0hW?h z6AF&dPLJ(E8O+H1jcijVh|d>F`uv`ZLMG*gkv{KvY2KChD>b^MmUR(LuhXYjr^bc% zk#*2ns2ywC(%SpUi%%Bu&UA5nPLYz(TO*sTsH8N9ZQGATMFa|zQdQ>8)mB(u&dI~g zI21))*Y^!4Z5|H~;5}*aCj<#QaZS|i)9coLuYCt}vPhe|NaE2OLs0%$Qrp_6P5$0? zQU_AStbQ?a7ofR=G7L32a9+T!KXz$5f#sc4w@^rq$YeO40exR6(C1|I{2;Da^PoceoaJ%3-~yzm4Ku-qdk) zx#neuS-O>a?9>uIUhPSD^8B|Pes$X!=_|ymW^6z4-Lkq}blp2@tm{^d^j}q(1@xbj$wOxSUWl5yVV*H!&i|iAYzx=Y z7PsxL!xy}gkfS`A{SN;vOitTARZ;^~8i_>2({G0L6rJ?0UV}=~25pP=CpQZ@q#i0n zWIYJU1KR_%9dxqTMS*?j}Y|}Tblnt?Z7Ah>FTbp)Dt%!CcX_a}6t!X8j zkXn*i3iguuG=GOxZDO?C{OyvH&Od@g90@}_UcPMEpQNLXP*_^OT{r6yPPL%ESZa{4 z0^`YH8n~gdSGSx?!}KfjmA{Xk)zpFUc6svCt^&V8w;IT7DVU354-j7`$FOR_U=8#x z0N$0_`lOK<2nq#%*I(&Sfr^bwE~wart-<^P-oe>jHdxwJZ4+et*DmsNOAkX9Q6ojkg^enfCQzC7;)9TsPbo;u%4n*wEu45#8 z`wNt5k`-pdWIVGcFlZz(A?jMiSV4fl(f>8&ga7Q%MNlQ#Kv-N5u_FdT(C50)nR06=IAUfJ8MtDHU@2E{sQ+WW9Ml-&;_>j}ZntmJ zLr_j*c9!Kr;@7NKrk7zM&OOnbUjyYItt`YAeg~eo3z1q0RZqVd~%Fnudtt5D6maJ-43r_TTW6TSpRWYFnYBmhl-}sY(>!-tC0Kx}7dVrSBdAWhi7OH`7)>QN zGzpf?6+{5RPlXe$_%5*LY2U?onkZ_e^Z_v9?Iz$|ywBYoku5~_G`n)LkTr4$P#idb zY4*dDT}{H%^LGJ^?1HyLX?$9?oUK$nOI>pP?d|6KT`D-etO6oDz^MWk|O3MY??v8;-N)5B=}(;AcQphy?y2>dH+ zRoy9t?R6Ol+l}$ekDux@W}Hpom!fERsqUrD+w<&P zGNJH|SpKik>2#e+jA_3on;>;+Ck?qRpi6j#ZWLCG2;Va{1CquQ2rzPN0X!Fv^58vx z6>@W>3?U~|4V7IHN+Fp7lyV|)G6Wi+XA8)Ljq3(-3fNKq*3T|UN#`{0^+R;nA-=7C ztuU39iV4ZgSxT?!g6cM(id}bW1V`hn)N2GBHgJpexN)hq1UyD#Gwxnb-3Tq{f7<4U zo_C#T-q}xCz$Ma zOps$WSttIlGx$n8wvO-C#{r_xaOL>iZlF5-vb`%e$Ctk)ReImDyc0u(TB}0u-R|8@ zrFe4$7?V6}q=30U-(lZ(R)A%lkd_JPC_FnX1aaf^G}idXOJdM&Xa4o}!wd;s|!M^-ZXD>-WIhs8JJ%KA$&bs2; zl!kfTitDeiw?v&ASAK2G+%Olms`Oveop-I?)pk7XGnlEoTWV(bTl>qW%=D;l-@qH! z)X=~NM6516$957Yq;8@g4#z1UyB8)P7U+}-NjFAoN2=-(b>)7=v^S`OVt=0fk?Veq zUGT|qg>!^>AP>vsuzMxf_Bh3cOdvX`mGuRdZn54l(PG9)=MAP0PXLX>z2_)d8#a|w zR9<6fT>VS-;43TCHUSnD5vzvcIIuR>aoIgt)neXQD-`Y6s$TV0EHimL-5*ONkL8p5 zbs^^M4yCtrr=dhK#TeVS%kZ=q-QLR_vHrX4YpYvrYqx4Kf$q1&9Pl|E z_0P)9YT(PYCxADusNrsE#2Oqy5$kMG?M^Ij&~vNpbb_Uyr7H~kr-%h5XZ}I5aA9!t zUHrK$MCbGTU{Erlz-H4SygH(x<%^b5c^tQ$y~nM(--rytH%RyhlK+|0F&-p8Nad0UxZOL8Vw@KnYV9Sx zabV5>HiJswKsuro%zW=2V6{tw5Z2QajHjqsaNH0a8Vr8`Ylz&fFRXHrireDW@q7m`v~HpW zk!c)$A$J{bZ8aLG>#}wY`en2MO0csJa$Eq$k;GeIqf~G1Gc*^E`O~%|!MX#j?H`vd z0$m+Ftmas+a$JpLalm)JXKmoVG>4rwt8hTwjND?bNMJW2v=iZNn9`C7a*@%;oN)nPUPOhGrAKEJ`Lv4$SlP zk-+;AUs&kavHVlL>YSx~cQJQOdt&no5W=6pdj@WOAqBTreRCK^ve3$&`l5KmU&5CR z;{NGXg9tP+wyjQo{#=I?ORhWTVc=lM%NrcmY{pvtDN%m(Q>Q}?yT6lMGwW2ObhosX zE_#J&Fn?Z0j+okK9Z|6XnRz1Xaz-m(M=2KNG7$2W!N#$1#JqbV`_dx_p;pWXZ&UYG zyw{-g%{N)pln=!r;AW;;|FoK2rQ_53eEnLH$O!>dtiA% z?0M5;eM6Zd*8~L#-%|9eEPzh( zMzYq>)>b>9W7MN(fQ8*E5s&wT%S>-J0wmy-Bg}oltH;nmY;B-BjeGlTx5RCm7)9P9 zP~NFf1Rco(n;io|>v*Fsq6iupXx?4GN9Q+J2z%UcDqE~>v$J?{%&#WL5hT3$9{S6n z=pW2#a&F7pwx~LI82LB%SZK}c*p9tjr58A-id%}hihz@_dD-#<;X+FUN~Kk^aq+@0 zrRL8^a|ZfwMd~A>t_=u4Ipe$iFp)$|+K`^9-16#5z$y+!cj!kdzUkBwo@Nf|*lTFrgg&G*j7mjxjxU&bY$6D_!go9S1V(Hn_ zAn|RA?r+PDv4*U3$I^%qLBvw3FRIJ1MFsQDMEmt6b@(Q7(xS~~=yNXsZt*|851@a8 zY_eCsJs~qnXjbnDWW-J53*Qt$vFh>4&WI8NNU%#~-;jAa(+~t$3xd2k(qOsP@*kGh zYZ@@MhNmd|fK|}hnDqA|AYtolp2WqR5{<{ale3FtVz}2rnej8Nn3+`>6)%cw{(k-f zg^QvlL1XhOm<2D}3RzSE7`bE*ajYdNwQexdwTqm7pwdfAN*a+PrMu(pOVxa2kn_lFvZiBwI1ysmJ$vkx`5cmmV)UDS z_7!6ypv8zgiNS#IRdHDSCKY>mCb{MQG`o~#&XB4HjzIb_x#r9=iikUH-1pI+(O_>Y zD|4jB1%|rAHpmsiHVu()B@1r>ghuU@j2LLWDYk!qsHTb zIi1StLj;mbdh~yyrvm97y-8Uo<(AMw&%LDs=H_k@3 z*8es7!O^zeV7uMw2~b87)be`G%Fx`(QtCQ;C9K%!|Z9nTcQnM;>gDc$F3-53XBn zFbZt~EIuU-n1rA%wSrc!@{8Rb+J6b12(pK4SBMk^s7{=Eh>*Ao+}7ZXyCVa`r)IPOhTp7f5t~e#Zc$%BFp8lHe3e0i&fABU zz3Q@2K$xi6Ryf(Oua&+bEncdk4hcpc`|GHk_>-Ou3p9j>B_{$5?n!96)TFgzuJS@*o7w<-i&l~^ceK!^f{yg zESA-hx)t1-?y2a3sJ@`b(T2$mY@OJ*_((>-B^tiy zt*Xzr4_{-6&j*n~ROoN)!Mcy}#_^>SmCizU161i@Me$wp2_5?Lm;3;b;X;SBAs5J1 z&!BWU+8!CJpJ_E4b?+#XP|(&64HeCv=i&3LK1vG)8c|_@Lg^v#;7GvaZZnMKRM4+? zsCi>aKn)`W>`U$bmTL(69Ir0=9M73JPeb>mSvm=zT@>azt(<#y5wLH$K^0C%jD^YLgo8URkr4Ft&C2r&8ek3g)3 z!_R7f&>_RmgOn*DFsVjEUar4P1rN*}PC%|KX4+&w>WX%`pER2%XR#RG^oaAGjw)n9 zP@5bQh1{cY-<(oIxWizv9GAh0xO`&mJ=W%fJM~$)j4E3VQ$Fb`0$P2)B<{NB=%-&b zIu};t>M}F_=XC#-$tCfZ6vEk4Ght&tkLEQ?PNPbTcdWv*C2d{Od3oMk(j|1He%Q4z z)t%ej`sO)eF)w(h9Q{1(di6x$crO<^s5IcK$_S<@=Nt+lBo}};TOQX)Is*5BW5MShLyAM;#J7`ZtVJsK4?l zU_8ZiD_Sp`^_CIWLklS0Omjb9U>=BA{GYHRe&h?^ox#$LJwi9Azw$sIvYCVoD5o^X zJBuipgk8XVVE@E~@9JZkpc@?MGdUj|%6uKWvIbt|Af(Pkp7wk@y)7_fL+2X0$6e%%0|7*B=q#-pBu2U}6tq*rD$^V9K^v%a4mFlbn zPmhIv6OG0hQgl$QTJO%iD)nQL8ocBG(BR$vOml^$p}LKpsmNGrxe#lbFrAZ7HW|k zwf-m8^r^+f5Q?bAif5dtoyw6qpQkWN`Pg++@$O*(2gO$U`HCXA)TndJD^Pg(efWG< zhYjE^G-tjTT!>~jnvT8dwTs3 z2ZBk{26d4Xv%jlH+Crln);dN-(DbnNM5G6?)$C0l;LQ4GN6i#3_e1Du>61H?NLmm) zx445Y`t%jit>D}nW_2E@5NRfTJP^(%Ae^)e#W+ldB{8f~qruKvm-;3vWi?bryIkU~H6t~JU0?G^?nr1k>#TOZ`_NL1kA-~kT%e3+J2 zZ1MtY5Y;m;c-lK8;$VF*_2YaD!otfolzo6<1~4>e0<>@ieZU6>lY9Wb%vq`;PM#tf z4%vQ7GdC`Xa^0mJ{t<;fyPqM&Q@TCJ&Ak+EvSLfQ1|uwJY_D4v5AxB3P91{;`xv!Ri; zzC=B<2;R0z=%beqnx+#qlg-L0aR;b17+>&8tdM+Wm$Gl_G0+O^CIq^>QE1c_5xs=E z&N>3#>?SG%dlJ2aTv}KE98tiJ6+7*9*7z%+;NZ?d3lu@&L}AVW+xe77F-}13ZuNvz zO!t`e=A?C*S$_7VU8My3baELb z>Ec;nQ(hu<`5tI$4X6CNcHIK=TL4e>KSK6`BSQ`dh8ddOF)&E4Q6zOxa-3`#ekh5 zK=?aX}LFdfNk>`mZ*t271{ERB>nR(>%_5_~h`;}*u54K2}9i;8xm_c{KqlGdFQJJ0mts*%W|drX3w zzc64uk-$FpRw5@}KBq*M@r5;@Lj`hjy0mMs#ojc?DO8AYqd6~lkNeG#F@reJjiq2f zBIxluiewB3kTORFZVs&8HxX;wbk4Ty#Y9Zh?~;n`j4QMB&h_?+BRi8L)#VE0{-N~9 z_ketNGoxg{6|9!h2a6ujj*~dkvfozPf2L}$n*RRhJx^E#rvnok!&_8JOa&beKNT98 z3Fs0rKF1Y|0!@5+S(jqO4R6^|;<9<6_$6;+axaNMyWD@~#Vo?q@8ALTA-;mCH8?~T z1>LaEWTMnFOqr1Hz!PZ;^>~(0<+E!X`fc+TqwKC4#c+VCDiG<$mp9WLQi}XWI@r`R z+efm0=fJb;#!9>O+-Bud=7BWB|LDz;loK1NIVPX}*xuUrBxl3!B)J*&^BYp>D&5(T9ISM=MmGm^Z<}w#cc#1dCuM((znqR zvgbR2qmea=GM$O0h+<%{Dm3f+@%rzW?)CQTQ+xNwWodUQcj)naK-Tw!J%gEi6w0_K zj%?)bm+gGx#!HMt!@Uw$1>-}XUw@=pxpKt%E)NC;JtlIS?RbIOihJUy;}&C3TTLMSfhIm*AlxjA>= z*#o#vT&rK>)GV-7Em_YkXam}cToJ?-0Yh~ zU5w{YzP*2@j&R)!<*dc9okdS~4`p>Oz*1$KI1*Myo{=^DIc3a)7Qr+x@8K#;I(uzD zy^*%`QmS7O>Ue=-hlnG`Cr=!sxj8bB;SL2h30;I;Qd#D~&>Gy9lr}O#zSg|9;*9CY zFy9LO)c69Xw8ei7g9T+Ruq9D+Ckp#;A{SUjTV)ITS32yuOMG9ue{XB<_g+=?*>#T z(xOY|`&V&G$bQ^T99U_v%Axi5EePMA?>~bN-cV}aCch8O8W=Kg)h@$Lvvx1-m+WDj zHa%u-2*tQ`)IK-e$~;rZIo)u~@4Sk{qbhSXD1#`3NDN$EQV-l&+@pF?1-|Gi>x4{A zTNP1bGit+5nPN@5YHc`3in}xq^dkD$iVHO?v+dQ2wQSMr);N|-*ALc9zJh@hk4^B* z&wG1ZM0DyE`I}yyXx=%u0rXlNNw|s!8 z=^K0&BWf>qVPgy9XtKwD!5U!`@1eW3MkjxG?263Z_I1(gX#bolP2V6Sm}^$!4QFh_ z(};bC58sFx4KH{VZ{&byBEVb9Iz1Z?ChRa1O(p}{xoE#}uWn(G@PKzbE7GHy2=u9{ z_`5P$R$eyoM^;j^ck|82^TE-k^4)$o&%xpR#xH3J5~7q%-RH7kWHcw7Ryh3Y_ZBMA zFhIK_58q3+Ea*)Q<*;|7;2q%5@4-IIsq;saSIcLR+-pD5QVf~?yO1kpAYpW-h92k72|e0z!~d*I>#$q=uz$Fa zYEB>^`u`1X{_p3l|F<&LwQ{qz`YBJla4j7Vn(sP%!2iUGD*a}jJ`ysWKQ+0w(mgoa z8ge{g>9W^G5dMQ<7@-6`&&N9DdqYP+0u+#R*_OgQHa2LWyQ+Oj*GmYsoot@STu(*a zpLx{`I0v*6KW4;#+>^zsX*0g0(^6|({dR!AX-JZ= zytvHI4k_G7xVK7g;B=oncV1g$fQPQ4@<;{#WR&jpSn*W4nXvysWxPVjuVVaZ*`YBC}s`Qo;O^kSRUlWPb*hFW!I?Z=ZB8%s!n+k^GJes;f3C(mv zhBC`ZB60l|@X8~i`7ote3lNcI$|4PKzIZ=Jt`yp`sCfEC4|R#}9lpTQ(sd}bzbHep z9|17z>>;u?Sw@4abhPmH+!aQ!UM^~L)mSlBXIVx4ze21ux}(^KQxrI%t_YMgWkoG4 z*3)y@zOy}y?LJCvU<}oduvF=kQo#Q80|#iO;VySoGo0vr!%>lSbM!u>N|7=8-DShD z-Q(Fir@9GvtBh7)v6MhN*-Q;`Ux1b>eCFZ2CV3S~Bw#=uLH1axzJNQ<;$y1+FA2T`}4lcLCvCo@_e7v zwgyTjqyQgsXZPOf98yDLI4MuOFA$-3nH%Dfm{IU57jU7;5NLFP5Vb1AEp+9l2u_Il zgjr2_SWe(>Dp7r+r+HijK@gN)&1j$VBm{FTw1i~AFzS)c%g`vG{~A;zRHe}a2^Aia zh)Olb{h{iNmAhcAg9OY2j4XyPVgci3IiH!z`Bi{(K?_V@)1it(fKTEPAyubMHbpy& z=pU%vUHV6N=;8ipN?mHnV^}9xA%W_09kGmzCp@v@+nfExICf3s&0ot&3+>fhvp{&n zb`S8i-W*LzbToXThwv}et44Yky8uWzUg3E_|1O0x2L7ano`7l%xj=sRZ>S{zm6?x^ z_jak}D0(|;apjOY%tnf9fzM|6JorJ$IB&u^dDTMNN^3-4tZw$Vm&@nbc>vyhDlq3Y zk#Ny2YF^2RqvThq!l)(j{8b2Ftc>+qP}ncAc_q+qP}j zDc336Hcr{~)$N|1HTTY)?*2Dx?Tn0!%(ZrAzVFVBi0283B9X%QdOD3fcPNQ$Y5}#_+jjJ30GtBSF1rQ5=Q}KaiI^Lp3Gc zt>xp$>wC#?r^x%Epv?%hW#lUd^Jd%p*$;0!KT8==;D-;eV{5aQ|a z@kzsJ(fXi{^Lsmd*6BL~uyH@D+oU5O$-Gu4pz$e`Roza+s>BE*?*e6TXRQJDX1Qgq z92@1ma%pK|Kt!zbt204kOqUy=CKyo6EmhMd*uIObC=Filse?-dSG9OE`c4%7#5#;V z%9krVmv4xRnpQ^f9i(yh%{F}Morrpjmv=HhcrUr|Os=sb&nXWM?&Kmv*D28KX|i`) z%UqB!kaiVrxx8!{_jyVVQ>FB51s| zEw8SPuCc-R%YPZXUU-%)9)q}sf&s8Gpr=B^rSOtl5)B&A{@%oHL+YNz^96w(<;V_(9-ec!V)Qi!bi`iU%n0rY>}}xs8F)ILW+~HD#e5RPy`>eGf)j5XVub6Sg^`kgS-1`xCKFE z)g+RZbk6D!RBd#H_DLHI$YmoBQNDzE`1-=Vl^9O~!u;MPBYivPEey2mm+L3}GMs9e zk#x&62!!9RB2k8*^K#k^mtCh^{+M-cZ;srY11bGlQVNZROk6>UF{7lZs#cn-u77y#Cd_yF2~T8aIU&_CkWR`J{Xx z3|xiEO0G}C#Z@lD*^8@zzVMlcDa>nR=#U)^CQi8I5WUlV=Ip;N%?6T~_ z%|6A9fO$dp?l(3Rozbw4YW@Q>8U#H$hj4CSh|ywyk>9V-b2ci`xCdz$dhQDq-uv9> z%7|^RowWj;4|Q8Elyz{@KVpY-wtnVKtLN;AWIoZ7w`$55*}Bg>oL%AdM${#bA*Gh!=n4yEBSZMu^b;S09(LyectrU_;W@;Q7?)u1@1F(|Jo-r@vsdy z6_HHx^kA0&0$wTu-c$+PNPF2_Gr(Gi`7|r1;^+JNd#0ZI)PjaC@P|36gb3_W3}nE& z{fX=;2Rt56Ps*ONg5OrmP8eozE=t@UQhAA?>nD*EYV|Zz>*JNYskIkID*mG$~2lb|LCcU*a;H1MqR{Xh2!~dd=B5ozH|~;3+0c zPJPaX9a<{F&_Ef=(z+ZqAbp@r2syRO?jR7##*HPkqkvFwINoY3W{b`GOy)gIU82TqedZ25AZCfAZ z+8hEqypHB0?WOt-_AKvl3n3dwEhW{=N5+4o(qM14d0uvXmH*}ybBx{LG z&hAclRXEC6cGg|5CgKiN)0jz9V>m8QxDe5UH|#|pxOWwK8F%z@J95xjm>dK&U(LI9 zsmN!#u~5SyfG%^Y=+L9F8Lvj%+An$utxu1;we_ZcUt;nJE$kR*4`EY#B5OA4Y8LlE zZ+K4yxC3W-TU@#@`DL$VX;@HImaV{3Wc@INulIn>$5@z3CHmV!j+$BZ?%gt_vT z41A-}m34eu70r>iKA-0M#YCf!a9h{M^s3sO^`o#K=F`uh1aD*7o7+pvG1Lg|vr7^J zF0uN6`e|_J%g|-;qF8haho*}7#uvM#baLu24!etO;(@)?`H31IsUrAmn@no#u7|i< zwwxbB1OleqoCE&Go#W+OdY6WI*7c+VDBdhe8Gep%J`eUDyofY=K^JbJMpJ_cv(wi^ zT*(>AJd}*kmhC0$eBQlX9c6R_agvVe5uHPV2R*AcP0a%m5}<(wc!~Zlx=VczfY#>D zEs?{pD|0s|@Xbc4Vd6>50As%U$viEpzJQSqrp(FU9W($5@99YDf=iLu=-&*;MC(75 zk)Iej!uzVOETq+Lul@){y&8;=EPN=4cx>`Ed3JUd#V-qfQ}$wl*MYLJKB%JafB*qz zwJ`VIk^?Lg_sW7H!s_H|lb;SIeErDe@L6_ZkWQ*Wxx%~vihD3z#-3cfX7zg*jx<~# z+{yTRl`0Ey|E+8??(b-x@7K|l$H&*cJv#ory1F`g9pCUg{*Le4a=a44&myA1yY!Y} zJVZ?NQFu4fMuUNL$dqdrlhe!fMUjR@#bja@FbenU)JFwH4Vp#p`5v%PRCWsr9O>xYG5XDr!2k=6<257T;r9@!PO z{F&L0KJy@~GqYMy*D(wQjjrikbpUL1eWF<&Fg&i={KL!ojv!;=2Ihpn_ch6;qupH~!Dou$UN{uIE3 z{PggQVbH~uP~lW!_bKFd?mejI#C`i*@a=OR2sNzzZ05-TK*FJfap0L8ZWt8)Kwi^q zoJUvr&VJS4W-bIvG7qUgE-sH-NKM@bq3Sw z1Q7@@el-&z=@_<_DvTy8=BL%Q4E{cufftWX&!7S7M<3ZWm#eToB2S%ir`m4PIUQ`j z%%b{qKyih43yF6nLrEtpG6sdS3z#*qflEP$7U%q}G=o=&FUY}l^id~tI0kzdz87xF zKsy-e#h1a&;@NY5OW`tOBDgm5N>tvKC!BuDqSFsmz+dJRyK`Kj0JO8Wl%?+_XmQc; zQgkdW4~y8QdDDG)jorHi7_?SDO*j^iaisxQgwXsl}pjWa{oa_j{q(he^*>G;h%Z6iB9s8 z^q1{fn-||jIsCjEtWm3>`zOxXl0O}V7er-zWb*xuGEnN#aII5fF)QhFQn?I3F?G3p z&>XkOVyqPxI|8BIF0$i-cWUgJ(-b^dY4_{FJB-RGXkbsPa>-z^Ic&9KI&4Y5B|Jb> zA79{6w;E`w;+!kuG-8q4=v!mL=g}yEdII$peOpY^CKGpPO95V5m7bAvTwT5T+fY}r za*EC^VwI{K*Vwfjj{&>%4viM{KA0|Y58zi_JGSCie?MWTOnOsn47FvSUJ{G7B?4rK z`m{kGh;%tkZnw;$`9R_Gd294vWIeO@30`*c-(h%h`jmEx5JO@)R#!&YM{?^A;nK)k z(ld=l9fTVFtxAgOq-&{-^zE05*K3BX?e!r$+6s0vj83Z^?7QHd)QqliJi6W)(;qtG zO?FJ#RkXqse%@QR?QoT8y!Mu>fGnepicPf_enYF}P7!%8M-PEz(XGB=x}2#gkz^MJ zb~|3JbD*VyC7o(?;I*6^eQ=6y1t$nf}5a=N#pcA}zgDJUeX-pEhcj27X5 zN&uaWnno4}WU;q%9X*1*5kuS#i>D{e--X5zrYyo4atEIB4d94-)DOpJM>BN;bwhE{ zets(V)H$w2-cew?!>~&J_dI|trjc*EYXY{WZ==oeibs#3-B8c(+-^KelcG~TI8qog z3u?Z5#IFTuMDeh}HsQrb0Y42l+(p7+f#sOe)$2MKoeYFp0woqCmdGn6e*4DYvs0H~ zo}fy$z+>NTCi?6i1flGCo}yAXi}@Cf#H%jSk6CHiRLb;04W&Uq zNOA3!3!+3lYQEkq7kjSYi1T(?K`ZZA=U&-Q0y)elGU70{(XxU?k)&}7VXNZ5CM~3R z!no+K%nucSVVq?v9>`gY*S!d=x4i@DW~yxe;cmxWK1*cGGxW5%0GMN zW;Z=bjehZY<;(MJUNr8@MZTn&$XE^E%zAvCPd}c|w6P!hN@N%K(F;xNX%ey3T}#p{ zoZ=lbVomSi6`9JdIw{Rt{jO+{_!xzDVN%01hWciz|K6!*6UUAj=(uK30-E*^kK9Fy z>-DG|Cr#T1&W(9->BZ4zK4P!@wpr+^zkN6MTfzDC_MdU#XXK%c)jR>`Wbo46)#x^V z#&Lb&$%_gul_ewPKt6JoT74?QAIOHJ34dNJv%k|hQGDsD^rbIUobSZ{`>|#8Nt~j5 z53j!`t_rusCy})KFKB#1+I1oHpI|{2-2Wk1@W1-G{|jWdg!u!1W_!@pAEMi%;nr0R_YnnR}V&Ke*pAf!tmt8g}8 z11Mq}J!+VF7)VCMo&~wp=q)as8aHM;Q6xFl3iBi`Qk!dMAtsy;*L>oPHA=9;*l{;Q zC&%BLC1d^-zU%(<`Uw)&G_LPtdFN{6Do?+iLHLn9!*_6c@DO+QyR3r$PU7*kDY`+P zrPmO1P-fu}7&?mPq-|=wh&;p}bZn>q)KL>*d(3<~w0+-E zH0Va5Uk<#`ujhJ+YYc&2B)WSViAlwyxqI|}#I1p=N08|EuZn;6mn0^NN*3eGFpB~U zs#Cc1AQ5J5XcK^bqb?y*b^tTXlq$t0Olt(Hkgc2%wTdzW!t+^&1$lY zH?mYIV9K?CZFpZ%-DZ-;TPTHy2vQlxbJMXYowJHq3lWq#b(*nm`DZK18nOj2fmP%k z0(O{SmN9;Z$x`86u_;g-X2r?f0q=K}r%NEBqPY6M2bCPVl3$zus$r#_^v8;YKqU$y zsxNpw3msJ)Njy+jFw}_SCCfC?)v53r7tqYlK5tjzpw|l)FdrwtBYY>s(+*d80ZXBj zUp6QKg2D*%*33_*gDSv?N=ITfk-qZZw8hvp0l`Tq1`<{x!!*FsRt7xM=&%|W(mI@~ zweC+4o(M3!lhqnlWI~|25t=Tf1?r5peAkOm?AYGTUzii9C(Aj52x5`Cu!cB#1xts+ zu^bO`N~^=U=g^QM%1EP%`{3V`p`3*GC)oedPD@ z_J7QiCZFl$$+w&?5r<$ep&Bp%?9rbYnm;|eC}YDr)j@KOnrRzqIDBVPj+swXbm27|8lS-0f}I?3S?>mM#2266KmjikLmul8kk{MOgR@k zXfU*`*f~j48K7XYR-e74A_=>sXBr0UeE2lLg6a|MVjl*|Ts@MM-s?Tuva9uXLo5JL z!U<~H-BsZy=}9@3Re-`iEAo%ydj#aj(GK#fU7IJ~<99*)xb?)dLdM{@(>P&x;^T9? zhy30IF{>9-N-aAqLv;bHXooj4uSr4}W9) zF(uxRv>rmk|tSDN~m*W+Z zRw{hw_E_gN$rO+*j1-8LY+HxLxCmLK8g*S4Q=BE6;vQHT`QeebQ-Yt6E+zKdmo)HS&?O6^0NE=e~9N}+1Fp#w&F!X>dsO(Joz zK8~e%5ncz&zlc@;JSeKvP4<914!B_O-g9ghpJF+tqE^e5PWz|g9G{+{6yM-N_Ni+2 z)p(kqKK^l9q{|eBlhzl;f-YZFX&%^or`WFbhX{3F{^AB@Y$PdW~`G4oC z{IAaSKLhboRL1|2p}FUR+C3RS2w$NeTv!dN2o{yYX`zq;L<@^lq#TsQbeQ7phSbuk z$*Al|aB?bZlpR_#vQ$V@&9xFa-ZWg*mKdcFeC<|F(DiGy+(4X6Q`vZNiN+pkj6<1# zA}v=PE4D2%EX0=^sF3gv@>45t%KGt9wp4@?;H}6jHN?)U@cbh87&qY>qL}{exUeUx zLZP`r=r7<%CORL;?&0!fv@ph~lx3t$aZfA28Z|Y^cFDp|ADMZY&%X%fBx}RQ@tQ!t zzFJf*>cK*AQEU2rTDJn4ytUi)JrbcRZTDbh`q65d4RLGUHuRPkFZ^tj{IZ>n1lNKVrEW@siz~(X0Gs_w5GYtKM@SA zb4c`cC}<&H^hT@mYPlAUhTGu?5)Dta#c3UBEaAL#+aUd$|5Vl|aKH>`?=%t73f|WY zV$HRVrF#dE=HLv@8|p8v+V-Lo^ylCLiWf6eaeo%82tj{mi%`EjS`UL>W>2Q#yJAk! z$**K?fzzq{8>_@HFpQZcV}HQ4P1_GI`$oQTCyx$0z}!RE)s)IpzBm3bVz-0N-ji{Y zkuZgJ{rx$xs0rlAKSvS4T{%t$|Muxpr4J<-}LUf;{yl zymy=i8Jkd4W4MNHc=HrN!l3`YlGk=3!@QD|1Z?Ih+M$$bJ^}a7QtxIwkhxw2l^mOb zNl9c&yS;9+Vxb19nYJJ_PMdR^P7rov(mKQ%=)`1os>6t~a%Ii?Ezgj8L?G&>x=m!j zLGu(fA>r*e6q=uJj|Z|Z>^^$|zGrUQKw?e*)G^dOw}=T*~g%9 z+}=W#_=n1h{e$>{T^{HZQO6PTK#sfdTaUsr73@7Em>PHB4Xs{2bpwW(JlZ%RAB3I+BJFV2b{1 zU6AzTph3KG9d^dBO>8Mdl|!K5(7xf9E;D^3%(Z4mbNe3%N{QkwKqJcN(qK35ozY9; zWqkRYu_Sa#i|V3fU49H-`B3R`^(l4-`ws~Ij(9#{Yn>D_frN-;?Be-&3ryuV7}P^t ztnp9^*JE(7axjVuBXPvU`VE~YB=Z51%Q~~?>+@G6M)?4MU-^P`#Mr-=?B5B5FE4?Z zN0Wh>!ZTYetZq^p-#eGMqf8(C~aE_Y{vk=i1Mzcd3%*>(dkLz@>04F+mMy*Ag& zDDk_1hws;J?!y}oM#}reNa`K@qeBfjx}cPeF0P~%lgTukZ5yy@<5wr(!NWOG-og{$ zAd!QC{W)ycP2}t3e0$P$|0G>hRdJeb!Dj3FeTdKtBeg$djo9-R_Gl2i&y^}4`?-g- z-t+U#_&(%~kaUf`9z==+4YpV+_Xg-MwJ8;!v}=m?DE2IYIbr!k?%vjNNG&n(c68Q{ z^D}J0Gc}*K2LR|NTIrr0;fL@M}ri!fX8NG(iPtr zIukIt#Eb#!G4}HxLTY1)L~DReW4&6EfwIMdg%H{tac>$+_#QK3pd%i{11mmp#N@t< z$|ondu2IyV-POg|HqemvLNM3a)&o&uZ-n9rY+cB1$}_J$bW8Q>7Pc)8m!zn!B+Mbw z?Rvy8|LVM zhw@9u65@7Mn-!O@PGG?j1C}Iaqs?;0wgdo2zONjF{$>6FgBR6CvAltoFrbHDchIW< zo(3y(h8{pJ)bNJBG)G`OS}d5^xrCu}`aNO9b2V3|)v0(#WDVlZ>JszUHbf?OC?q=d zGDvkcgFcpwosiooNu2mG8Xe>>Zr0{%{ln8t^0j%CWZTiV{L#K>Ys^P>h)+i%u_Rv; z4z`y{(N$h$HJBYVy~OY*|MLgWX36X}-y14cnW=8GFyT0l2bUd-zwtM$t>Y8vohL%0 zOh++v)=5jBkj`oz%c&Im?S@$Wv$p8zC+t5j*)jl&{POr&vR(Q~oJRM*>23chF6c-@ z`{%QX;`>}jp!2JRLEPdgofbHB7!a!3a?ZmdvLC@BqP1f_Q9!Bo^TrLX0-93Mwd>I| z9Un=P=j33|t@c3-%`1^4OG-VF6msvqF+Ov)g-WDE)2MGoas*!IFHv3+)rn<7gNVa4 z39412V0dDhqmzM$+L*>)D(UrVJAsVU60`7pcjN zNINnRK5yZE5mCIT>^1h61Q_>;Y3ch|$ar8QrxMHD#*9oi@mMgc%4J1i5ma*+%N*GX zDbBn<<0#dDa;1o?=}?s@uL>xhYSrIBK-M1%a?7<(_HY=p0O2(0F9spL})~B`sU!sVEC6tN_;-O-so70+?U0=B)`$ z34MU1Zyzw(4-tq*qW+>G0RZo3&1yf|MbYn4n4uvwCSUePNlg>Me09(EfH(+*QUOjm zCL1K@OZ~EI!fAwNyEDd6hBH~OzC@!ypAJl7@E@Avmi^;xRwmHc`NSJERvBagBbZTO z=Eps7=UG*7>5{c28>l1Yfc-2mnr-kfBZ=MNtR#*L;#ddPEY&aeei=o8fdu>g5rT%V zwqdScyoD~Ze&Tmjd=K+(e%}47$Lh>G{#TUg42tXr^B;?%ZSrZ_7}!nmhy*I#>2Mn; zOMJ)~?Pk^6m+yyRwN|&*k#uRorivrvVjDSu4;^p!`Cbf*K!6WhePQiYMbVblNNws!xep zb#n?V$^ddGXmHjD!|?=ohYWD` zr|E;R=?p$V51;T5`vMB!VcZ$0nfYPx35BjPmtmJsz;T@I#L8QGbk$1$Fn=u~Mdhy4 z|26(ipn85brXB2W=rA*&Y9ZM~xh&hQoR7Ewfu|)SN+3B^5+Z;;^m(fO`xS_BLvj*^(*FRxH+lw{! zCXyG6A=c;lx@ONFz#jXW^g|Rb<(&l%e%3xUPi!`?&c3!*9b?EngLWLAU;YmXo5)*i zmNa{?eTzBf9H=JqE{YKI0cQ%ilD-*l5AV_$Tx0$_A^}^S8F1Dq+Z{Cs&RRGeeFFw= zWie$b(VgMZehp2f(&PEmEd`#CpMfPG8oNnx-Xwzf>Prs3l;``whh@>Lfaq_AqXs5z z9;@0Q##a4$Zm5m5rlBbkAI_*N$V_$NamBFUfYF>;yl;==S^ln2sAJ!6%1E{PoCY(0 zMAz7$=-!HxdWJ~#IJ7=`8!k@3eU=amKTFT`C~=LP0_veYvhAOfXC6hd*xBP;Wz$63)(cB?aX1MVQ`Y z@zx8BQU~?uQ%Xr_0|7Nk7UFVjz*SahN+Z@xuih=oK?XpB%7OiNfdTqZxvN(mjnIpQ z<^*K9&RqTX$%D1^?;kes{sV#)U|I97*%|TAa+d4MLX0}kaQwx(qQ5;ICI(s`_I>c*A?lBN@$eI0)ws`w!4Ud$e$rzru`j{F7%ln|I&#e>)RrX z{jj5gLjDi9tN$AI|KH5LDXIfMvqqSn6YAA#26KeKD=vaCnsLMaMAxbS7YZohmNS)l z8qn12T8yU~WLxr7YcE-s2GWE$@57{IG_EiTDQRsq3{ir+9y*#^@FG)7#>x{IBu4}> zi{JSwM9Yw3N*XlnEJ>157~Cqyic?0qyNHMHsV5wrUdVL5!7$4ks6iXkZ5Cat)%LaM zldM5YOH3awSH6Rfwl9AE7GBDRDm$L09a_Oro(-=(UlRr%Eo;?nhDleK5O@8scq=%a zOsUk?v0dP_i7mr8TUfwHr|G?;C9zb>^>792<6@?TG z6boiKBit`arIcs}_=vXxg8dfmLg5{OynE29wxwE9pCpTL&4Wqbz5PM6B>|i^pN}f& ztT-LYQyDInEsmDq%`WI*$*rhjE2j`*VVDCS6%b&XcS3U`As)RdL8oJ zmDSCj_LR49wzB#Zbk}lUNyl zzHU@$kL(JVT1UT;I+<+dDBxyb0GsRKz914l1a5LE?H+P)z&tiPu+D z!8HeXQu@@%Ip1jP=<==W=xqbL(N;!YoxZ#EbB+Sv_xQlQ(%p{D(O;B}gRMowAaPj2 z>WI8;`*epzaq2qT9mxtDepEQQVtE{N;Mxh<>dv`YQCxaFl-cSlc#;n(zVQ@$alxBI z^f6(p`IbGR2i26FD{)XgS8YAJ7fFF>#3|b7710%jp837J1~GV(F-3;+P;zpKpH z-o(`Sr=}xyY5N5Mgx+^`n(Kj9t7;SyxCCzsTX?{MfXe+@mAPd+@+h{hWj+)llxLc@2JQ~XaSQArvilf$d&jatPfmeZ)g^Au1)llJbC)y zT_PwrG_~<9dO*eI`RLUp)#((SjM)-RHpy1ng81`8&kFM<_WDKpY1@h{Gq9)ot#R2z zQAN>)fP*KU?7WO z;WoWDYv;=aYVgt-KGNik}h-L}}Gd8Iz{ZdlhF4AayXp zx(ZGQ5}{PU5`gW*z+f)!D7Y7Yh+AFS>Qz+e_FNB2-3?i7+4LFYx)VsRnvmg_^xHyL z%k?alUNcXQ$PbJ0AD%hkrJa&wYPBpJ4!KOl&4SyVZX&h_s*j2V(8EPVMzz0~DOBi> z&;HHFoKwl=Bfy6DfJo+!t61X;U=>m(~b*!A3I{Z(Ve&{Ru|8bavau1 z&;Z)3!(ZG<*P&lnFQ4|L0#qH=M`r&wttg6EFi9Z3*j@bRG=+TmS!F$ zy36dpia-|75M8)NZ32s9OhYZSZ@?}_UP2dL~DJY+$h&hbr?#BN6CXKetK zv`Yo(_Nj_s!Xll!_IS@g=Rwx+P3wT^;RC4Mw|^lEELZJg*`V6G$z#|DD>}gFd$!vE zR{oilp*w_$kab9M8@7cTGv%v42X*hGkKN00D{E*c(5{~=;3>C|hbK;U(5D!XN5UIC ztrpm=*3Gmp!8qJOmg*h%KAz_7UwSj|fK-RLpN4e$vtj-F24(AD`0J-d=|*$I4Kg5r zzGoYyOeo}sL(Pc_?2*Ab_#^a5q}tTAtZn9rME*9PT=QUt66b=UA;4$;p)SQ@KW6YY zIAWL&+Iau1h5Uv-c&#(%1e8OHIM21p_uH53Th#A^^y{XKj|jRkBXa#6al$# zhfKcLS`Sl0F%9Cts=qZgk9&@Hg!a@{NWdik;ow$Jmw=1PC>&-dq(PV9-L z{whu$MSb6~e~A}SO2qHk>dFn^KokAr70N6uMx$HASa?BW%31hBv6p?2>#L_E7ufAh zg@jd1$Vkqh^tB(?jV@`xGL9*y7Obu?86X-@##t&^*VbMHQ^yEXoyJlyZiP6U?#v=S z;|Yy(KpKILNsQ>@Ur_QKA1$V5UjV5QZ21R0x}REX1c0cB5ff#5Db0w9lSDs~^5b1e zWG*=TW^JJ5BnJM@{qZT^>L=B)#z%AMtsW7@^GQGM( zgObq1zsP*wQ&PC{Ry7^g#2hvE9Xrv#S7<`On8Dvz;BE#8Z-r!>bC95p1eA9#`z{>l z+BJC`H`dY}D%zBi!VbL}BP1C(?u=Ie)HOBe))B!3>kL=J-|+pwYF_{|JpF7k!@!uqBbLmn01pWy;{v&x z?0DX@@r40KE{yM>U7?iq)KAJT>46WBdKdG+FinnPmEhsr8u+R_{V#Er!PwBhP2bPCAQ9Qu6-!|TxMm8I!+bL9?j#2>T`q$0E zLS0hQ_?*3;yRkzuD;je%UojLq70NJ)<`FyaD*%F&=1@JJFn_^XbLtPo3~Mwy{e@0b zkmh#xOlXhngAk}@EG_Jj}rXvF$ zLk5<52l{K-5~G|gQMeMHPrVbK;6L6~lfUepB%qu;%Dwva>SlZsC^%4l=uYpIXUmvz zZx{7yZM(UdHU+7@|J(ty%#c##mAONJHEIHCrU*R?x1AdsrVEK^vda0pL2eS#+Qd&y z3a-H;rE%2L9JwWDHASY?x|23D&4l!hM3QyYMYdh;{^D}{o;}g~K3!0>QNlheqmty} z_D}*5bm>y9(vE@sf(lgoZ6!H`Nty%5Q#$Iw8$0FL_b}p05jF;HqM@e!$d$V4H;ynM zJb^%+mOy4AZJ|V=LD3-69ueawx(XC}o&3O}iy3SymEV;ZkqHPv95gJnw6!0s{OMxT zB!n)|m)`XbL2F_?f%ayE5%i^gGQX7C?bmu8L|vJH<+B4v1_=4G9$ZraNqTlW-WCNV zEr>-hT&<5jz?DTohejQIADTdTFHlc!dYV@wQ zwBlg#f_B+98+G%i$s5X{rh3S?xzpz@{=`y(zURgj-QM#q-PW7htHfxq*$)jj0aG=% zk84e@n@WaED!-O)5u_&_>Ek9t!?1OGg-J&e!RSP&(?~x z2MwR(AT@KAOm()Sc%;uMhz{1q@huDP*is{G>u5Yy3OkKsvP`kaQg#sUeP8{;(j*HH zqmVR$s)_B;!adw-DxSIR*i_naowRrE9Dy5Hju|NO)%y^U%{IR<43~}9Cs?_4q8U6k zW{>pg{^pYwn%tSA-KH&3zy)GR;b&^p@NpW?Wywt33G59ENv%aOt!8}7CboIA9g)lg z1<7AA$&pTDI?mZ3s^&)Z-cyjnq<`U=L-D75Ds1@2zYpTe)oc^Qi~2AjO|J4>sk;&) za%!08g6EEMBE96E%zrYBH2ke3Ub$J?!oalN=wbx(lUsE0jGOj#r=p#4tt(MKXvBI^=0uT{vZaC~W~_~q8wC02m<6$=c+f2VTH zmsw(OXv~lH1q1B9!{E=RTbAY0BRaD*)?2x)j$@ZsmP40DkQUB@B$EE?S~4Ed^4vJJ zQDB%hVd;*O+amQuI~_b3i`&;Q(9t>;)?5?YRy(EBBeRf0R&Dx22gt8ZF$Vy1|4^keu1I{ zFohP3z`>TYmu>L*mW(<0mTkOamE=R_>JI^Cz!n+SwQ zwo_54@AjSs2O~%hIx+1giD;jdFk-_m(Xp0F{55>X`2RO>a%Xf$ih}EhqB$dqjcl*J7k|TluYsoL5*ylfi=i7|9Cp|8RBFHQhN$kR2<#Z0!=sVxjKji?E7+&iKU3Slb!@@m#9=lOt>W z*G-eVW@WjQJWM8(BCWVnmuZM1_fN_8Rj`7I3LHj&gnuH1jL`PguoZO&H)Cap38V!v zH`tzREz2%Bz>94kcL?-&5R`fh#lp7Sjea-Z6+A0qZwB^aJyus~R=noo!?P^v%4}B)neh7LT*}|5~B5vF#za_P*65uxd7zXG$naN-x>&wGKO8 z{4h)%v)u;EjB-pG1ktbAO;`iR9YeM{pG|h>7#C`Kdh(^QYmDaFe84Y~NZ;AA&$%C< zX_1H26@P3I6?Dgy`ABB{_3eG&f5sO5y$x3+l!=vo8`Jm4 zoNIFNX22Y3rggh;kL_Pa*elgiEcV0z0Cpw+AJhDQ46{uPe;NLavQvDdXGqx-xAgi7 z8T7`0R}T)eaQdN#*gk?sqeAy`5WG#gcp4YuO}wzgzTKGVXFeEsU@JZj;CFnU&-8uYsL{WU-?A?1dS5+09$w}9KDs5p zZ?fdyciO(M%UZs^Hu^pv|_@tu0Yb%@6z#xV~E z522jQ?*KfQJa8L5h_pEle;)?jth@J;b)D%exUOa79v7I;JVfu9zxwpS`#5~NS9j@} zbynrmmwJ8hP23Rs;vYRj_Q|WB!u~?`1owgP39S9Z@4Y5^h&*{3e(*hXhA)7hH8*+l zUI3i|$<;pe0BM#!`xfJW{$$t~3>j}H8 zlmC0w*M@(ndw&r=T_-lwc=0)Fj}#a7_CiZGe|+INuv0P*efqI%2Z+neV}7;|E_@lcY-<9*cwiuoWLUQl>d zT@O~b_oZn?$O15YKGImn$k}MG0#F$USv8GT|F-R`n8>5u;)V`=A&UEC@nqe&=Hbpa1*zHH_c)c{1<2 zxmV_Lh5xeb>#FRT=3NC>omU-Lomd@Nom!n+_0#tndr$f35vm$uZ>>HlPzKp(>(k%AP{U)K~a`>K;3Nr~d=&n4O_- zuhhzWq|Lj6%kJ^#9PvGN#?IJ>*fG0WqKV1RVOB=S6b%Yq(V(%4203&ebcjo%No}JX z+K(k2+L(?x1 z@k+YBv2V;P>yNVY=fm~5jkz!9^=iuA+?V@)Bjewh2HtqmcLqM-mQQ{(jXdy+djlW5 z>Y1QNkK1?dmrvZOo84zOhQ6Sko$&+ijGghD8xvo0W)AXpxvYy8XOT-usIT z{k-k`Dt~m-A}#!)Hy3r7pdUNUlT4DtQHl6}Q&<7lekzfo zGiv!=Q;psIP@Y5Mca>W;MNiL5Rmb|D#p*3|r#ezJ;jV%iM|GfR%99x_p7hs( z2~T#UXxyCzGmh+FF8G`5gMF_L@>}-Be$Ws3E9-VA_-7~k!oK&qD1pR14W zmHx{`3+{s|_xo&@Ua?-uc5iLglswse()fo76Mx44ziQ9%Pu{7@dv6C!dKJ7tNwiBsLDQzH)v&{6@E;qbbaSA}T^kLTh|cNL5JLcZN?<^}$*GjJK$gJ_Qe!6meybbRcGBA@x8YW>7O}NcO5B zZ=>?w-jNHLK9B84H9A*CS=m$@mw3#W?v zhgkR#5j&UMmSvLMvg?*eQC@DM>p46n)@8cfSAFL!l!Vj;r^>$$Js0>HNl(XIa69-O z<$oP^#%{KQq;pw3$G7d_RgRzMZwZUb;Wm4f^DGK>EeUpoS=}Av`j>;Xuo*HK zwnT~hA!j3XBLyNAA|)a!D_c^$k) zt^zig?cg_a9lds+qBnrq&0{(LaU?v4L!Bv1w1GyF0PFxhf(yXFAYfA2Ih$@n;4Ef_ zK_E{?AJ6$nK{Q0+w67RV;M}_Re|UTAs5qK#Zxjela0_n1Ex1E)cXziCTm}gYmSDky z1ef6M?jAI_>mUJwyWS?xd(V5mbIy0}e|N3Dr+!28>AS|^mr)em)HYads;gpf1viUYJM;1xRo6Sl&l!;?}!8+s3H=Mb0c3;T>*|}JAoX}gTu1?ALH+FHo1l*zX-1s2 z@=%ZZ*&)5x|K{w;CImP;h9w<3{%>yoTh7>!!-b&h6JNo5VbTzjn?c*-zgReMc+fz~ ziQqQY$wg3rk5nnjns%UPXd#D!y)>U}WSdW5^DKS{#eikUg*k@L{GR_=3tXkbnZK6g*z7!>aU<@g-=u| zH{jn3yHJ_P5*_th2*#nehpLne8aW2f5iJ}fSWqe>CR)$&Qs@X*(kme*qQ4DK22qX+V4f>MylBlk}wn51uqNSuXq#~5!X(>ViGCU$lCh=bYK0OhV&{QEBj-xe;cl2-+3 zcqIWNOOCipjtK+RW@p8MJQ^dYk=GqW!0wyOj=OXfB~{VO zk;+9MPe_Sa*9ez;`vnqE1rj2!N%gPE5olhKw=kDwZrC2`aTfZTljTIBu`|CVqPghD z_Vyuz8mzI?f8Xt@*AftnulUD^e2NMc`|GKKS+eZmzJhQdmvjz$vio^&-Yu05%EQ6B zD4Ie))$OZq=|R`r3(11-GZcgk2#=ZG)N6hf!6LX){>mfwI@9;7$h}TC6}AW#pS;rie(C%X)@Dc<@jjZcxH0_84 z4Flp|KkjIFgyI^nLzU67;)U###}ox&ti#e2lHvtjE&+|2nhzd@R_G5hg;v%ihZCZF z!&Tx7{EYe`)$UsLQ59d(N6iP4+QxQXw5bDV=ks1D&>_yk0V6N(V{k31##capGzwiM zUHccw@b+qBJp6Y~Qj+<~v4hPhI47P&a$$P+t@doKblfIT%mU_bof&uTHj?3nvGA|k z+cUbc0!%K}5zE9_M_x}yMA(4TJ!5HNJ-F^ zeth+lTg}u3?mGk(+9=4~={*9%0lC)joQWloN`065g?}}wRz0*O(Z>_`*Q+MO+$Ia~ zjJ^JrM1uI}CmcEy@Hl3bVy}7qf+w}2y$w@7h`&alwd(xG54}7c zHNA39plXKGOTcE+H@#J(3xCS)OlhnaLwU9O`zwR9fu*qMhInbe&8?W%v2;SkbXuvK zDyf@1=%{dU|vX+VK-YD^;dg zBvrSghmK<}{mREbjygVkk)$ENj6pO#&epHKlOaWKv3zZT;$ba!)Co=9vU0egXDtJQ7gqYWoME&w0yg|BjGZI^WsJc~Ze+5R8v}l{ZL~g!_pNNLd^nz{j zM6x);?MRZzkIs@pIy<#qsg@6mJnWp}6C0pn=|}%9asCzRoiG=xL7y8uCXeE#wd zI+syNzOj22YOIq+q!x?EhtS*jceEoVEjauTl?d3gwyk^5+szZWX-xtUEKws3?KxQD zNw$%d8_t9NV(YGnrYrGgwMm||0zOSq?Bb+vifa|d=?2mypKqQt@jY0b=tMuRP<$^4 zSU{V8JTg{%f!<=OxHoV=PaVzL{^`gCiR3Y2%seyDD1oaxlR$uT+>QF)iXR)bFgqlmwFC{DC??tT)2q2!?*(WfWSw zkX`-^@g$igulh+~9S`<69h>j@Cwf=;9WLJCmTxir=a+U#SW})f(}r>?TenYj@?jqY z$vQpgO(W-sqIBzHIv&s}bQjZ0fKdGa)?0EmsnsL>TI! z-E8|Bpxsb+nDVVB!G>%H7_$>6BKXNV>yX}1514wbC%t`9R=+5JEdl6^81KR>Ot=E- zA?|l2%n3pl8IYG;3(C(6tPS-=mu`f?l0Scaa5%AU`2KsGdl#C)t&1!9LO5 zP@P0P>SEsXk+RI^Q9nV#J6RX78KFCVD3`)MY|;WRaqp|JPUPYHy504w(N^8plZeCN zMC`-JTAWs9v7YTM*ONHI6MzGu(}MSt{h>o}Lmh7hC^f?2TAJS`y}(=FE)jz`#VX_z zdHz0zPS*1|-~|b{1gc~H7EYiee4Vw^7#0le_k9j;=aKq}nVZvt{)X{HzPYcsll2y_ z1O|-zfP2%orh|J^vR={2dXSeS!pvG(qmVxctG0PtXr>q1Esw!_Drf>tumosE(UmJE&)j zhgUZt>tvlGaL=$$^f$C8!~AxN>zRRM2Nl!@6sPnqJK*a?ro_$h|!cCyYfvy@KFG2b`>$JN&iWJx%H zf6_l$>tyx2@xI@PGpMONu6^5LwIST4|M20{%FX3vDjELIq2sEI1QKi z7-5Q{t?z-JD@v|{9gHCKfpiG+@Ri2Q`ot!9|v~40^>iB+_bD8|9gNz zU26e<3qbq?eSPk0HT1&^cp2A!4=L<3)Dy)G!ijR1NPw~0TK_)-{33yopO7BZPn3ay z2E%kLj|tG6uy%F$gOQ%#9^?<_1BJe&wL8b%J;WRY4n+DvRw38UwCe0Uy9>_?mbiDY z>9=CUMVY#O;Mp)EN(8~l0#MNfGXFTMOz?c(L;KdXpXjoEA z*p_c=9j>(0iUjw1Mpt$1%^@kkGIeY|96$Hb32sdu>FXiEYBQ>zQuFI6?6B zqOqWM`DtIsI5|Q*>?avS2gFBEIntB#YEtAlPLd>=Bzv!Z>JJNY$VT-i*-lzY0ghv3 zLYOho@6V*~qs5f7th4baN+yW*XfDv2H@|1GX0L^e-MhD-Jz!m@V4u)-W%`RCJ;6T6 zp3tr<2Z}(0u^y0a;@6csGvUDSPfRx)C)Qoj2Yaq~4+J+g>*N1c<9B(@;#(|#g5T`^gS2tm8E%TZwc(64Z;IFD&5~W=o@j1}PUM|j9Xi)w!LR;GJY8%5 z@9Cd8fiWz9C;i%E=XUJp?UUK(j_5;gC?RB_fQ-*iM+L}j0S;ovS?JlyKy5`o$YVS} z^9HTI?xe@OriQY{NQ363#_51ve;vs2kCZ!zeN_|s$W)mrd1xK*$Ydsha%hctuWKR_ zF+UD-uiNWKiD{h_NcNwdzBPs#BKTEh!u@CE{}72cKTdg7)9HuzKe`SDioEKWpHcJA zyf*b%d4DWMmZhAX3$E&c^JokuVX5qqJah^mVKECqIdm!ttbvKXq22D4)5mPlGtrKi zpMh!7>-GC@J)mw)S{M*QtOBR}r(g@93&NIPyKwxc6Gjqjio}^G zE^G*yqR3=9``yU_JMK^XWpJaE)q~!fJ!@S2;`VU(kJ?G*g?I`3@iewfgZwNH>}&n) z7`~tzdZc!TprjaIT@%nQe?%6h)}rD4 z3iy)-tpjv+54ua%_J%XO>uPk13gNVnIXY{=9=nTM%X|zmtR{{DwaUv%3T$!pIecUW zBOP%^^(?p}GzY_E@}?Qm09AaHM;7hZda?B@I>|4pqd^|+_ULH+koXwHDj`1X{oH?j zr{6J0#?}fCw&@W>HKK|&7H^X0YdGikfmLp*-4I4qCBh=jsLjq1?MWIBLAowcUqmb1 zUDrd~@R*;N&m-=?US#y*VzTul^B{VgXp248BR<{XNg{Rm4J$p;CW~=!H_@(Yz32Ap z=3NtKThFrU3_J2>&ej@(n~$gnXqjqC=YC}5M{g;*gy;z>;8j&YW66GUe5}M2jY{K$ z9<&h~^q)oFe&*%5*pLQ+`07m4;rWhd(h+|beCv3>9(?XCb;oz_nuNt)g@l6IzzJ1e zAxXqQn8N*rFp)bA^Fon`kWisz-?Pyof4%Um;9IsY84OwPg}sfwLP}r_E7RFtILYJg$AyXP_x%1@^w!kZD09Uq((_keZH&FG{QYJoSezr#5L0w3|~Cb!VEuXABDCJ9kwFD zp(+xM*-hjKzcO=VxQb_e`sTeIls>1c^ves;CZ@4d5qM<_+1gepE8KABP8Y$DyDu@w zQ%ttOPz*laQm8(Q;lB9R@qzc#>(ix7*xacsxk#ufL*!!BsL$~jSt0)L2}ekN3wf}) zzRT%sniV^`Fo%=18((iVgst9jy4k<6(OGo*=DqJp&gq_Xck&e;X?86*@Jl}Gdre6K zjIn0<3RGy+MO-&f_}s2i?`Iz|o+fD01s3YvOMbI!QJk>>5PLEP=}+}o%W^ZPsAT6tOSd05V5kGhG3tm@V6w(SWFnx+BYBnEQYh z2-K)zr}1lDQ4b53W3_e4x9#!@8{)|}F_6CNbd>6YdyG3<3`g5VMv)!*8qQXakxVs* zfXXlB79%`e>F|oa{_`N++UyMYxgQ%`z+;tvSjo26Q)jZuVQu(Vd<$R{5oANpeYjAT@cNIlN+os(3yvd}h-NwJbB=Xemt~ zb#dl1$cKZvn|j02bd>63mg1AZh~c!8NG6}FJl^fg>gzdvw)OSFn%;@<=?-V@>7e7D z6@1h1{D}UndW_pLHrvZG=lImMHbk}#wG+XU2BU<9UOI-faTA8h7WLHh_6F|D$xo(V z{>;I&@Q1H9joWXZ|IelH4dxfsJHY*EGr*13z?NbEeJQ-HgPV(~gSDkAuu{iYLos?0 z*vMp8`>RfooJ8p0Rej)}Jm5KvT0Y`*Z`d*9!_pU(7835Z1k8!VCOlmIZ?=RwuC3A* zJ|;eV1FHo1Yw01}A*%5SW>@jKbj7y8c?fs8q{bn7x#{F{4$2oh-T# z43AL8L<%om%VU7Bav3BJLv)C$r=i4Kgxg~n)9@gH8SAhZ;$YHjF-$ z^uWxderclixF%xuCeFMEng=g%scZ~m9B0q4#5hqTHn>-6sg(>j?}al%D&bPB5Nw02 zcYXLNju%Gjb9x4oz`sXmS8tNXUuQ0wE2mSoen9nL$r4vsyVd5fr(fGgo&MgA9=K2T zQ)N_ca;`CY(Zrzhzo<<62Eo!1g6mz z>hf~-Ye5kX%H28E>7DJ*W*gLN#>`{tG6|Ck2?IL)_m?CjDM}2Gz(1bjXi*nP)gxJ= zjIE!f%CU$wVcG6e2^glPLO(ToJx383%V1_vJ>CS3{y&`{PNwE|rq-6m|60u!@$XyHv@11L zcqTbGRdzRF{>zxzfyi`(~c*ZOW3_HR}Rn`S5TiS zXOEuynooOfVI?6l;@jlw=q3R&MwMXI`!zV4PV`>a^Ee>zy1m$B*dH_J)f+6)H{r0i zfnrs}c~KM6jbVX0_t(ZHXgG*$AD-FIEz0ZW7VRqjJh?20v|XGn4I6ph&g>>7JR3e8 z2{^XaKcpvR8b0lpbm(1eo>z!G&z^xYzzz$_eszcGJgc6Ue>%XoO>;@le_V&xbf4Nf z46e?TjPEz98#2Mx8%Mjw;H$`8BfrN!vbOs%6fm%ZNzbwG@%`HKlZe%`boC*a34A_^ z#dKe=EkX~5d~R6vv|o6>RDQOudjf64t=+F)`#o%B0^KgLcAVZtgIf=!hug_CpUMx8 zo73fl8CXVq2f>Jgh(6ZJ#wwi$%7|0| zRyEe?Jg`T^1HRR~hD?5+`~LK8YU`#k<8}0JeyX~0$HR~4bDW6x02D);vutc)Qk)uQy$&9--GTYxG}8`J?Cul*Rf^?~dk6zsqhM&eCf;oiMJ_Uc%XXu2Mll zEmBm*=r0M9W9R)r=Ydnd1@_IO2eU&;mE`5~- zI8^c${4}@OlHm)RQhMr z;cTd;;ukiSjtO+wZ`Vk=L&DpJ`HwshNmoS%&oG2q!J*rt)5m01UNM*V(mJFtq1VyX zf`fOD=1k}mz4rsUq-LSl_;4du+(*+R_2S8=PqM;ng*%VxOz6#C&z!^J7S~S%i3lWZ z;KXfF(c?^WuZgkyU0u?gmTT55!JscJ)x?B^W_+BSBQ7>J!P^rP)QRHaNxEpLhNewi z;jaTb`dtv8_=hQOR1?Kd%$Y*gZOaK@MY;eb{4g1cun*Q9`_*XK+RzJu#{NyNLuJIS zL{pGi#$E3Gp)#tWGLbR+uSxpgG<|JV9WNX$($5LfrrZCY5YruQ_`xI(iZQv6@y#}Z z5KL)sPPs`m*#%N%PIz-5z27_X&Yw*C$o)56AE327RkbU7&}We=)xI_dBKcJs`Quto z{EBFX2{|1mZEV`BVkLV)9Kl8QNihE^(P zgLupM$J@PbBE?*X5Q>)%!16Zr#~dL2W0L!8%D^Odv8+`2jl(3t_7E(UeXbpB-ww`;{aWs9u~v$P^s;2??eef7CFQ>(a%5(>qgf`s#H`7 zX4;_Lsz5=SITv>>(6qi9#PXv%s@-QGQwt^w7bt7~8S=0mvZ-WOeni1{lifI#!r@~9 zFMc>`aCXY#-j2ivu4tQOrRo@Ik{v7*?k& z337oJZ77c@7ygd-7zy!dUEH~Z<@pU)p#G!E@`s+L87Zd{vT%KS-iAd)hlKQ$LfhP% zLW1Q(X0|)4m?LSdTJChWRMBQK*@;EBNqhL;tBW+`o=efaOWf%Ve?<(d#MG;Ia0D1E3}NTS*ziDSlW)*5=dsMVdu!Q7(3FN`q;br@hYYwm_4$A z??lY@>0Ib%=uo*XQ6Y(6oDjDbUq!~&ZJ(lay zM$8|ZWHNrdNLsS{R1>Kumh6+EXyG=QBgXm%J{MmyN6Nu8vzVQG9oRTN{J__11Dm=W z1(==9ff$hwLOkO6jX@UY>Y17;pi^Uy( zJKG4%q}08Ak|U@Q7u_e@XkqjXf%dd2*n*`5Fp7bh%IEX00b^4%^;=i3b~<$TXLDyF zmJR%Epmyw%ZX?1~kTUPxK^`B{4>&Cr#+?`6t-Dc=nAkzDm|BfTHnO=zg=%ok|49J4B`L=?a|tUKS{h4!G-Yqd#tp z{((t@#4@)wsr$zZR)6LJp*Y1!*PrYdK`WgN;;jC`aue#Ms%s-wH2v$aNa*+gr34lofI7UI*&LP~U&QxFqXrcrT6_`I5)dF~=0a2^l zT8I#HU@98Lc`c-LrOW}E+axTu?%w9JzlyvtCi-W{3he=G zmO0f?#XbYd&h5%%NXyT_?q^qf2U}Zs+p!A-FO`kj*hUuGV2kZA8RlN>@XM zF+#@5{xt_&jMc4%k`eWHmOIT*JgQ#VF0Sw@c{}+ERF~H+6wnUrTx#GBBFuFwO+XRW z`a}LvGv@AoMH6~c>dox5z-O+6FX2$l{a(@LCa1;Vo9LPf-i$+B`(8qK@Uve$|nY7QKO?Nc^DI}B)In%+OV*{zzjLk z-bYh*Fy!7vw#=b^8t)Ntgh{Y5ILXg983qr0`6mxx{EgMYF`erB-5H)O)8ky^1vFDqOH z&XzWPfBm~aKC6anWTz+msbL3nGcSttL*#&*#DuQ5MKFXYcz(zf!Z7zm4Dr6X~L56N9AFXvdU%kOG)?tQGNT1LU@& z`J?{mBNm2)k9Cbd`JzAspIyH~q!OEY9iwNAfd2M(Q3Oyu5+Z+Njp6&k-yjb}#Nx&p z_4kD*AP*!&!loMi_Y;HZLNI~o9W~nT3!gw&fVPE$j@;&O%nw@B9JJ?AEEDGIq56Je z-dY?cuwR%6598u=A=E!BdYlCb@$TlZ`URFFzQE$Y@UOP{1xmre`hMc3A>Z4oafTKp z%M24D54l=EeSvI^MU)91)}NttCgh+ivmBr+qe%fa0$3PeKY*bD)`T%3D}n12o<;Qc zEyabp*P(^FsxpE)G!KHBM>uEFY|v^5ZxRHdAytmL;JSJp5o4MxMKbK1E%VWIat~{c zY&W@z`P(O!BoDjpeuG+K(q>EA9V39Q?t;>=qv zZY&w{6y-@cmtBz~4wg3fdN85=E4zcLy>E282#6waW^h0?t%Gg~=W$-S`S8jGmuJ$+ z#r}QyrU;=@`6&5Z%O-D%Qu*G8HC%bSW{{-zeR;CZR2yUSBB-xE<;ajtV5dA7iTS#G z&wMRmwqtuAihmB2w*ZPaD&EsvOSozWG|f|>ylha7Vey{yS^{4CHY6PF!q9e6pHf>& zW;6;D>uwg5H{-}Rl&kKm-I|ihq28DFy=8M|Iqf@x_Y|nFq=}D1(=GQnT-#M1qhwEH z4Yy)vmR#$Xb33EaD6@E}8Q!Sj=?4cqMcf*jqi}6`VB$^a08C{HrIch~?N+^gNVvuW z;8GON=yLLsFCk3RV(lg0?`sAv>eZKg)LLwPJLR5SJbn4$Godd|b)hr$qb6EauTL|2 zMeS4D%gx|6g^>IgJ+9<&BhZg!Ayf4$^$hvYEAcS}_AU0BOmwZZRZ2@^enn=?8$w7f zi`+fxeWf`*SS!G8l$vi{j>2+B4eBJ|cQbewM>OSsIQ&a7wv)lDmsC?kY3-^^TsFL* z5nIzl8#TNAv3PJ{8C&|mgY-8 z1Ts6YsNw3Sy!4frAKoPM;?yLg39)|(bB+BVGrw$1-}$rdi^Aw*-_hHx7_9={A3Iiz zGch?$YqXtm?O&Eh9-*PN&bZ!M9#!C(P#cSL?>y+%{? zrz|N!(!D6E$J0Utp$1j&u$j`@>mushHQ-?NiRh*>1e)+0R8SV1y4|u&* zIU>UXyher|sb0L;o4~-=0!A0=>%a3>9OUWmycM-9@-lDP#@_F~Tw%#vo&$mJl;Nn2 z9}+N}d|Bf94StNHqaZrZ?NU0GYCk*_`eXR{vbYRX_l-xRAga#qQa;IHTbTuCnCZ~9&D8vq4dsh|NI0MwyEk}H zzF!gjg;|gQM)4Oe2XHwuz<^v1$Wn0c$;@H0qMe~927;mXw!T2^0e8Wm+R=bJ#NJN~ z9Ov2hO%APrP=Kk)HyW6a)~=BO*jAgXBXfK22knuWo1)LE+jAH>9{roK8BU9f2Q_y` z?LAjRf%+)5+Xs6AxcnV0-f5R>eHM*UT#u3h@1!Ln=IVR)8LHouL-`*`uKCJ%0xvoQ zPyN5BNwc4JF$4v=b&$TJo9_+cf^S+`WEUvPJEFqUVe~*KwVE+hcO{CPIc(suJK}S{PHSH3Vsf7Q;lRq(fLHXJ z!Ex#`Dz#~;fAsP~PiOk!WbZ0OdH}8-3Z#<^byWKfZrR$D=p^Pd!MZ7mYbOUDo8@P433rN{A2;)7 zJX)se>`UiAw16Cz1}kPfe1125lw)*VTBN`}JGsdY8IV++r}({b+Jo0TdcaQicmwC! zv_xH$AduH06s7lh4P)Hicg`|1zR}NO(o#{#IlcOAwVbj6K4VxJW!$`0#*fX6EsqOD zjMpN9d=Dp(#`o8v4!cpX6em6LbBC`!a%48H_{E2prG%yKW@?lUQ9I~I{rE6S?#%H! zzBoQ56+ctM-d%3F9$R*l|5vclDFlrQ-n%befH_!OunAoy_KF8O{qvjiOTPUS3$^Szw9}^V*L-;>{wR}22=5hd))Q>8p zPs#oVt(0@xj@EytH_xvLAFFrac_84c$Aom&IOW`Mg@Y`tUkCrIGT3DUY31 zfE?x-);wzB7R!C6J@S|TMT(!6xK8coJ~bGguXyB7d5nUV+ch z0yPx6f1P_9(!J_X3Rrp67FbG`2GfwN#$Y+D1HW^0F;(-ArWsm{v9Md?f3Jxswd!Cj zS>VI|UNZhd`T>bemE5kQ+B+!~Blb%fb;|-R5X~K{X^SF7I!gy{xx_{O#HP18vmVD= z`yXcOg(>WoFvy3~+Lt{TU*eansfW|k3=KyO3`dubTE7n$@30V$F66egKW)^R1~~X^ zh2x4JX@%~xj3>2xh-;a`ILp6h29b)bx~0;$$k2g^{I-HGqPHTNDL!}eG~hSe~P{$#83 zW;nlG%$!1EaLTncO>F=45ZxbA8A|qCtc38OeIGUyDVCud+q!bm{`D^6Y9o^41*!e? zi7&D#T1#EgRCOqCZ>mX>l{F?R~1Qia5)e|LmoDcqgKIcx6Ht@zGoruc>TxGv&E2Ij}Z5s>qxLA}A)q}_Qf3U1n zS0ajxcw205j6XK6T1`8xj22=pykq|WY!mJP%kZJm`Jqs?2HJi4L~G3nT1pqPR&j4PPj3{yBYy09(7SRLl%&H`Rr_&Ii_Z%RTsbdDSiJXic95hz}$1GS7vDWAUIC zzr<8hp3{%9TxAqxt(xB!*hAbSjI2=LwH&Cktg3M z+IGW0dVdTfd=VF)rJm8@)g*10ZJQjewe0zd^U_FRq-Iw2hmN;8dtg~4t-FIS1By({ z#zn9P_ALn}UVjLwbtL>GWNn5zR@$^;&qeJ^Nz)G(e$c@zmeRp5<`lxzYO3Peq~;J# zcu2Zuk%SYz7r>>+_`Q&ac&ae&AQ@`yeMKiGI8~#qIzTE-^f)qFwTf9w&JBJTF6&H-gY_ z+*(9Fo!0@S7f9N7coy2J6jvo`Ym0nkH(5T&`Ak?hI~Kjr%MT#w~uu!&B0(@4Yxvd9n~C71V*`wPnEB85h8FU#d@Oj zqZ6+;c?pD2V1|`wSpTTN(tffn$ng##3}r(pvq`=z$3=A&pk*zZF}EtnAdffI+a1Tv zDr zC#>60a5?psveI>OFL_@e!p!Q2eCs@`6{a+p;YehcDDh@e|6+1EYfByK%MwkGJozkv z`Z{~R%vBEK*5J1~&c%6HEX=2!7%V!O8UJ^h=s`a*@>VDB!pSca^{9EoI!a*)oAck= z>|xsnVr1>#DiB1!Bc63B)l9oA=@OXt4p|EUee#Ll_ZT;0h9h;)A2v1pzzjKs-O4%l&r_eXGR}s--aGE z;(zeE#wyTKrS^765J};SF2WLO{+T(JHlPufVYH2IGiF{afnIrL&AH2_nPaWfG>Z0< zvRERz>TLJji-uPB*64##w%ivSFE4GnV@#k|+@JT=Ko7{LM2Zvk4yrSvP z&dOC*v4LY?{C4dFG{3OZTgzG6_qQXB_8{)=r!&-ORza;5B@q?gUNy&FhK8;BR%&>n zt8+7bEncRUm=Iq;C9=yWZR~p1-0TUSc8&UjLIe0;7YOZg{nQ7HCwvvEtNWXe-^cmx zqky=3^UQO??J}0t%!jl&I!E`@r<2`QDK8*oS7i6_t&ukVu{As7pIA8l3iVa*y{yc_ z_&IvV%e5z_y;dc!lIN=d(OvhS`i~7Fm@gjt9go=)Ug>9A&wpCL|FqFx#tyzU+&O~z z-Bz<&XTbNba?atm%bu1pG1GbIUQ#9RwTix^qLti5eMxnU{ZG4OUeA;RM6}pj4O6}t z$W}(#26_34pO%yjhS*yFqD;bca}#G5w_jj+&uM3>X}W7``Q10sX~dfNYX+OJN`)30 zhM%TNV2OS!MHNSY^nXk7T}`F~*5i6L`iQJJRrgZ|Nyl%l3T_&PtxJJE?nix3oMsrk{pyBpcpWG9klw-rG|@-ShSH7Drzdi0%^W6Kf_Npa+lf z-s=8I(n;cq} z=yu<16gC?)Y}xBdc$Eyh%e&>InFrF88abnB{g+fXA6sN_zN zkqY(x<_h6lbtr=>{xLU%Iie5?sMh3@)~uJoviBMW&N`sLsRei4PT1T}<=+@ zY&9;7#sAjO?AajcsPQg9uw4wZUwS~Bq5D1>#3Fp@`XGH2x!cS#Y|0T#+UD6^Te; z=$f+(X2(_~rQZOi?$_zlSbj%vgJu4=^QJ+eqwv&o(FLk^|iehk2X*M2C#)RGU= z!{IkY+Bm1`eFZpviJq#LxQRoZNL<X=?1>RzJN9u8}zc9u77q|rv(ihKxM4rO%N_Fvr_ zaxrja+le<&*~E)<{#8c2M0C4dZ;7cSXjsvkha4^y(@4Cdk7Znt+(u|jLAxPku%lmJ zi$~c{a9ocOZ!qA)B+<&TN<>c8(6|L(yZxB_g=^KCEb7FjbxmvpiGZxK@|IJzHiIS{ zVw)qANfUlGnd1plQ{Zd;RC~;nah5(36-ibb!ysZoq3Jg-R{Rk9S>sj}rD)t7Pc3tR z`G>Hw&itoEP<_T#`p{H6hc5s#uhJI)2wnu?Dc>qt-P0U`Tok*4AC;`0UZCM$2u%w> z`@azO1&+-I-;eD~wbxwM9xDLJegp8a_ILzruLI#wW&_90bP91-D#3uYH8s`q!9w0EG5ukQ9kvC0?5w>p>!aP@}`gl-g7 zHjWJZtFuXH@Z6S|(-#@`Xvv_o z2_ty4ZT4RnQ_tpz8Dnh+9LwX4UdDlL6Yt2W5`NuQfmPr!G}wJ3?k zS46TSjAP|;Ec8bif)jp4n+!>PqdCo1Xju-ZI3PG<3{+`?_=Vj=K~7HvPz~5Rx)S1~ zJeQ4#YAtQe;unj~&yX{ZG|7%G;l-t90s1zkoHG5Sk>IsnE=iIW;*opBuZ)3-wLAeA zWZNgfs*1%SVjn6gTlV<Me$E3{0s?~^2>jp_6owTA5*XpdZM8>{IgX3H7$xY{hAZ%(fs-1#s}nfi$?A{;IAm|ewE6^`tk!IQck*R-LD`lzKU$+ZE? zGrj$reU_6zok0Vk+l-DI6l!jB1H7vI3;Jq;t;P~U&NKAqtRDoSPkUkx`{NbnM^))3 zjU}@uShZqqM9>M6=^BkOHNOZA8V;_8bBa5DdWSWl#QQbl1nWIk!?cK4=;9R1Xo@24 z*&&O;6)_@Kf1pD=Dk>u9El3QsQ1t_sk$dJ#m(@B6!f7Tp6RAxpWp(j7LjYyR$qK?si%?#)9+nLz3 zY-p*19?57kefLtoDg#2|8c#CF8W9+AQwM{uFR7#8;!}sk`sQnH3W7j<#5?c1@IdmC z>u7o;(hXWltyB$*^-@23;KE2vr1d^Kr^jmj`T-{c;0#U=4>?z`J8#I4Wo`ufEKaCP@yzjzdbPcpO)Wo1slynPlep{55`Z5E>L>*S*vtDp80Q=J zchnLjJ6m>B%zTbLGm`(Tm~d+W#fi2;gtR)!jCoUjOSU6(2W8u-*^@T6Cd<2fnJLXr#u)k#q?uz*Yk@0d{~ zO* zV0|Aa$@dPl;YE!*xam0G4dXJk9UCHvy*e)qoakhNH^jpCSU&4$<>3?^KM?;_q>VwC zg^wG2wMz|`ee0zwYUBGu->@&dK^rHyepeGN`?r^(sLlUF+E)j~5qy6}@IVL_AOv>_ z4hfnd3&Guj1$PS$SqKXuxVyW%JAvRV65L4w!6kTD?0WOPtGl|ZtKU`KAN}UjpMKrb z)6?5C-S73Rr-9Zub+4-3m!uzHKrjQpJ@xYhSXNCV5lVb}E-+{6qskq6Xu-0;*b6KQ z`AEQwfrx6;<=f@_p*)iFIG%4e%Duw4X2=<+d>-Uw>K4gSB52^5HR-+bHye2$TnVPGvI~Pp8dD%7=VU35s`q zM{ttgNWmu7E};M?Be$kun735uAtWmgPI{l~l&32}%&6bMu_-bBUI|I2q{+;awg>lw-P2n^)~kBI~7zIas>WqCzD? zjI)d&NkL9dl6dAudTn_{Xf8T<8vx~C#Nx9XXiTBB6cnMl=&L;7Ey4KKO59H<=1bg9 zL=ACt5?6WbB7ql!LcB^4aKBVqf|XFrP=b{Rh~<#1%4`bA_^fgz&6Z7(65c7_R3!%D z*)wGnC{DR5QfMND3Q}kwg&I<50bz$!u_Gi@GfV}mC#gg#hPvRW3yzE67-~~a$F}DY zC+Yc8qeX&JKK?*mGX6jn1WgcBK+pg|O)~y5OOEUX>xUDz1)mw6Me;cO#$ENl)DZR; zvr@-9Go&}h>~e? z(qi3(aVlC@xpH&>t*PyE3u}VT^TJ~mw~EFm<@J> zTRQ31$`lXbL>Rfw*c0bBh4YyJMVWt!Y$ul5Hl@hi!Q6mk{zuZCSbDUA`Sa7?%Y^L zSNi|)7noo+j`h+rPj65%>=;26$P|(lJ*g{~frGB9xHj#OhJt z*l-@Y*@bw*hI5T@el1rha4Fe)@|JbAF4lv(zK9Iuvjm03L*g3w%j{ zP9}srC7A0}t08BS{}04PaM1tA+Pe=XU|?$H#)6z`9@(1|)?h?$1xe*JM@l-oU`ma$ zevmldhdJboj_q5hKW$!@U)<*-w5XOFHTBsr*_iDywg0mFcaT}$EB>%VSYTSBQrz)o ztA>g0#Q7n&`;4{DdR$ul(pTS&LY3D78Qprn1!oYT3HQe6 znL@8?mjvKoNjD*LHobW=Wtir!4E}n!Tq7)VuYpbLw@-om!Q<~?&Xm2swH04Gi|JV( z@Wq?7uU>~g4AE2Ih*G%TSipkdjmto|#)%+ASr>$;#8=_AnEE;6eplvoN-E@*={acQ zVi1Ka6-ai!@UqPcXVc1dhe?QP7EcK5QO3ccX59UK<+z8*=xCpnaJSs4Q(uWV>Zpv* zo|Zr~WIZO29AU=?SrglQ-e+B6`I9!4tXM4R295eEIF^w)g5!J;K<;X>SU=cTLy50= zosYq?oHZoY?d0V@V@&tF@MVQ6O1!;r4xn4r@YGwB%4*(pJ0XHJQ9xqk&M@uIS5TL5 znyuX;7F5js?OaAM+Vo2SvB}R2>liJ)d&BR9fLW8y_iTrffkB8Emlf8*o`NoJD6xqg zlO({HRQhg{Yu5o$;`KoOGPR=ww`aj`yYwX}WA+PBnVr@$BJVnNJ=4&Z;S_O`0i%|= z!9&C|!%_@HjKYPnJ?2Z1Y@&O*-3r4SdR&bGsTt$Xz(=?y56_se5GgwO1z%qLG}kQd zGXCBLx4vO76HJq?S*x~7 zttkZGYcFEjvN6vbdXhRfvNx$o4i0I2m7p5Viskso2+t}iG<_CJ*-Snc(fuGS`OzY% zJMq-}>c7T)O@w7_NzIlN7|`u|7JeGUwXD-GOh$V5N+!WF_&Z4Tim}^tQqI$;6oHv{ z@QN9)p!lb?rF2;$XvTvcW%t`XOEu`T^=oCIXfQ5|3$4(0~4&nt(1jpi@ViZ9PhMVT9*d9 z1Ad_L!bJ1Wo`Ey*sp}h!V3nl#ht~01%%c>_liyy!_f+icIr%)!n;NP}qLM`_?64Tn z$1+rDyK6${d00Hd=HVGSUb-<6Um!iGPc7h&lMnr6rQyz(64$=0qj?`^W&c^KhQuO8H(UQ%81G2=I3g&!pqU6UNMe(sTg>-p_-eCd+L3F6 z_hnWzTf*NloT4w^<|daud4@k5Z_3H4Y}P;wYVW*mlx2O@m$RW+%=q;dPxQ#S8rVZ7PhtTIj9*R;_$l@M*7+?sv%#6;iuNmK$r@p;~Fr-0bxySqdSdQC!RLZj!m{PnYFcm6!V^W?`R44#!*k$gwuvtx6-f zsxL)$Ak{)YuPJcQxcK=ywNmZ(@`bamG2-KHi3TN^I?xoojLGe!ML^|Hc``@2e@oZyq+5In9sy(E4PP z_gjF@+6gV<8HsjkX9Zel^4dv3WBC1sOO=y1TQ=%zUf6XbkybB>c?LH7>zcbhEnX+3 zJT#9Ui!6p3{jl?qm%xM5Wm2wYVIa8Eec%k4l(Pp^Xumf4&tkc9Kl+H1v!ShTFxEv6 zCDmzKy?<|i8z@KvXUps~S{Z*lt1h@dqWM55LF4IXt(#VQiOC2?*SL!X>H;ixhSZp% ziizJ5Xyq11+J)==^E)Exu9>2|3ivi%|#qBbMbk}rc1L$P+Aw>qJF@9pVJ{+31!r0(fw zW2C+~uTT#l{d7}EWQ6`}#U3)}+jLh(vnRUbtBB{OvA3@hAVTErO=Pq?ydnyjQ?I_u zq1h8ydYy;iZFr8$+U@i0hBl;X(eaKRGH26tS3^Z1ve+t(cQ#!agh0NBomr3kRHEKC&oi|*QZr_=6|NTH5* zO8?E7$UcjE-dzt#fZzYLyDC!10#Rr_I{DHxuBux>jp1qv?ujLx32X)}`$FKAaHkdA zq#ZTgjpFA}>tSI;gOXjdBDDC$3C5CWz1e8cftqf`V)ho+g-r6^azT(=y*}P4Z`Q^L zEd*_<%`_{U(qxVb&1539tt5vE7A9gb7oiu8XD@+z>?p?kS+8P{Zs!d zqVKpA>XNUE_?NOerUE_V>?>3B{C$-7L!@`kOOANA(5F2->g+3@DFHJ4i}c=qC$T-I z><@_`b*$ke9+onz#zbbXbhbS{zV&>mpj65-#!ITKyAjOr5P>H=mIsJPmhHv-pbAwR zu1MzXSr7j&ai=zIU9_@@X+h67GMx>Q!Wnsnx-=Au6P36A(y^yD%bQ(vHw!+^=|ZeN z{mC^!&PM7-14G+W@%TpUa6TNGsQA>CRxP}ZZoSFB4|JLxDvC*|ST9ESa6~}La=|o; zjzD_3S`HyDZxK%3cdnWblhV`2(I8XdK9LuSV00n=<-wb{EAxCut==t6QMJH}*UBV# zZe%0`=Oo(HdpuRLa}Mvr9lw4R{AvA=EWifG7Qce03ewc|HNY{~kNGFV!^MD995_ZJ zNl-dXN4sS`texg|yj{)+1$t|=uktW^>@{`-83y$BXAcW9qPJvDb$Z!