Full Code of colesbury/nogil-3.12 for AI

nogil-3.12 cedde4f5ec37 cached
4380 files
83.1 MB
22.0M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (87,925K chars total). Download the full file to get everything.
Repository: colesbury/nogil-3.12
Branch: nogil-3.12
Commit: cedde4f5ec37
Files: 4380
Total size: 83.1 MB

Directory structure:
gitextract_1yhggpvm/

├── .azure-pipelines/
│   ├── ci.yml
│   ├── docs-steps.yml
│   ├── macos-steps.yml
│   ├── posix-deps-apt.sh
│   ├── posix-steps.yml
│   ├── pr.yml
│   ├── prebuild-checks.yml
│   ├── windows-layout-steps.yml
│   └── windows-steps.yml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.rst
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.md
│   │   ├── config.yml
│   │   ├── crash.md
│   │   ├── documentation.md
│   │   └── feature.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── problem-matchers/
│   │   ├── gcc.json
│   │   ├── msvc.json
│   │   └── sphinx.json
│   └── workflows/
│       ├── build.yml
│       ├── build_msi.yml
│       ├── posix-deps-apt.sh
│       └── regen-abidump.sh
├── .gitignore
├── Doc/
│   ├── Makefile
│   ├── README.rst
│   ├── about.rst
│   ├── bugs.rst
│   ├── c-api/
│   │   ├── abstract.rst
│   │   ├── allocation.rst
│   │   ├── apiabiversion.rst
│   │   ├── arg.rst
│   │   ├── bool.rst
│   │   ├── buffer.rst
│   │   ├── bytearray.rst
│   │   ├── bytes.rst
│   │   ├── call.rst
│   │   ├── capsule.rst
│   │   ├── cell.rst
│   │   ├── code.rst
│   │   ├── codec.rst
│   │   ├── complex.rst
│   │   ├── concrete.rst
│   │   ├── contextvars.rst
│   │   ├── conversion.rst
│   │   ├── coro.rst
│   │   ├── datetime.rst
│   │   ├── descriptor.rst
│   │   ├── dict.rst
│   │   ├── exceptions.rst
│   │   ├── file.rst
│   │   ├── float.rst
│   │   ├── frame.rst
│   │   ├── function.rst
│   │   ├── gcsupport.rst
│   │   ├── gen.rst
│   │   ├── import.rst
│   │   ├── index.rst
│   │   ├── init.rst
│   │   ├── init_config.rst
│   │   ├── intro.rst
│   │   ├── iter.rst
│   │   ├── iterator.rst
│   │   ├── list.rst
│   │   ├── long.rst
│   │   ├── mapping.rst
│   │   ├── marshal.rst
│   │   ├── memory.rst
│   │   ├── memoryview.rst
│   │   ├── method.rst
│   │   ├── module.rst
│   │   ├── none.rst
│   │   ├── number.rst
│   │   ├── objbuffer.rst
│   │   ├── object.rst
│   │   ├── objimpl.rst
│   │   ├── refcounting.rst
│   │   ├── reflection.rst
│   │   ├── sequence.rst
│   │   ├── set.rst
│   │   ├── slice.rst
│   │   ├── stable.rst
│   │   ├── structures.rst
│   │   ├── sys.rst
│   │   ├── tuple.rst
│   │   ├── type.rst
│   │   ├── typehints.rst
│   │   ├── typeobj.rst
│   │   ├── unicode.rst
│   │   ├── utilities.rst
│   │   ├── veryhigh.rst
│   │   └── weakref.rst
│   ├── conf.py
│   ├── contents.rst
│   ├── copyright.rst
│   ├── distributing/
│   │   └── index.rst
│   ├── extending/
│   │   ├── building.rst
│   │   ├── embedding.rst
│   │   ├── extending.rst
│   │   ├── index.rst
│   │   ├── newtypes.rst
│   │   ├── newtypes_tutorial.rst
│   │   └── windows.rst
│   ├── faq/
│   │   ├── design.rst
│   │   ├── extending.rst
│   │   ├── general.rst
│   │   ├── gui.rst
│   │   ├── index.rst
│   │   ├── installed.rst
│   │   ├── library.rst
│   │   ├── programming.rst
│   │   └── windows.rst
│   ├── glossary.rst
│   ├── howto/
│   │   ├── annotations.rst
│   │   ├── argparse.rst
│   │   ├── clinic.rst
│   │   ├── cporting.rst
│   │   ├── curses.rst
│   │   ├── descriptor.rst
│   │   ├── enum.rst
│   │   ├── functional.rst
│   │   ├── index.rst
│   │   ├── instrumentation.rst
│   │   ├── ipaddress.rst
│   │   ├── isolating-extensions.rst
│   │   ├── logging-cookbook.rst
│   │   ├── logging.rst
│   │   ├── perf_profiling.rst
│   │   ├── pyporting.rst
│   │   ├── regex.rst
│   │   ├── sockets.rst
│   │   ├── sorting.rst
│   │   ├── unicode.rst
│   │   └── urllib2.rst
│   ├── includes/
│   │   ├── custom.c
│   │   ├── custom2.c
│   │   ├── custom3.c
│   │   ├── custom4.c
│   │   ├── dbpickle.py
│   │   ├── diff.py
│   │   ├── email-alternative.py
│   │   ├── email-dir.py
│   │   ├── email-headers.py
│   │   ├── email-mime.py
│   │   ├── email-read-alternative.py
│   │   ├── email-simple.py
│   │   ├── email-unpack.py
│   │   ├── minidom-example.py
│   │   ├── mp_newtype.py
│   │   ├── mp_pool.py
│   │   ├── mp_workers.py
│   │   ├── ndiff.py
│   │   ├── run-func.c
│   │   ├── setup.py
│   │   ├── sublist.c
│   │   ├── test.py
│   │   ├── turtle-star.py
│   │   ├── typestruct.h
│   │   ├── tzinfo_examples.py
│   │   └── wasm-notavail.rst
│   ├── install/
│   │   └── index.rst
│   ├── installing/
│   │   └── index.rst
│   ├── library/
│   │   ├── 2to3.rst
│   │   ├── __future__.rst
│   │   ├── __main__.rst
│   │   ├── _thread.rst
│   │   ├── abc.rst
│   │   ├── aifc.rst
│   │   ├── allos.rst
│   │   ├── archiving.rst
│   │   ├── argparse.rst
│   │   ├── array.rst
│   │   ├── ast.rst
│   │   ├── asyncio-api-index.rst
│   │   ├── asyncio-dev.rst
│   │   ├── asyncio-eventloop.rst
│   │   ├── asyncio-exceptions.rst
│   │   ├── asyncio-extending.rst
│   │   ├── asyncio-future.rst
│   │   ├── asyncio-llapi-index.rst
│   │   ├── asyncio-platforms.rst
│   │   ├── asyncio-policy.rst
│   │   ├── asyncio-protocol.rst
│   │   ├── asyncio-queue.rst
│   │   ├── asyncio-runner.rst
│   │   ├── asyncio-stream.rst
│   │   ├── asyncio-subprocess.rst
│   │   ├── asyncio-sync.rst
│   │   ├── asyncio-task.rst
│   │   ├── asyncio.rst
│   │   ├── atexit.rst
│   │   ├── audioop.rst
│   │   ├── audit_events.rst
│   │   ├── base64.rst
│   │   ├── bdb.rst
│   │   ├── binary.rst
│   │   ├── binascii.rst
│   │   ├── bisect.rst
│   │   ├── builtins.rst
│   │   ├── bz2.rst
│   │   ├── calendar.rst
│   │   ├── cgi.rst
│   │   ├── cgitb.rst
│   │   ├── chunk.rst
│   │   ├── cmath.rst
│   │   ├── cmd.rst
│   │   ├── code.rst
│   │   ├── codecs.rst
│   │   ├── codeop.rst
│   │   ├── collections.abc.rst
│   │   ├── collections.rst
│   │   ├── colorsys.rst
│   │   ├── compileall.rst
│   │   ├── concurrency.rst
│   │   ├── concurrent.futures.rst
│   │   ├── concurrent.rst
│   │   ├── configparser.rst
│   │   ├── constants.rst
│   │   ├── contextlib.rst
│   │   ├── contextvars.rst
│   │   ├── copy.rst
│   │   ├── copyreg.rst
│   │   ├── crypt.rst
│   │   ├── crypto.rst
│   │   ├── csv.rst
│   │   ├── ctypes.rst
│   │   ├── curses.ascii.rst
│   │   ├── curses.panel.rst
│   │   ├── curses.rst
│   │   ├── custominterp.rst
│   │   ├── dataclasses.rst
│   │   ├── datatypes.rst
│   │   ├── datetime.rst
│   │   ├── dbm.rst
│   │   ├── debug.rst
│   │   ├── decimal.rst
│   │   ├── development.rst
│   │   ├── devmode.rst
│   │   ├── dialog.rst
│   │   ├── difflib.rst
│   │   ├── dis.rst
│   │   ├── distribution.rst
│   │   ├── doctest.rst
│   │   ├── email.charset.rst
│   │   ├── email.compat32-message.rst
│   │   ├── email.contentmanager.rst
│   │   ├── email.encoders.rst
│   │   ├── email.errors.rst
│   │   ├── email.examples.rst
│   │   ├── email.generator.rst
│   │   ├── email.header.rst
│   │   ├── email.headerregistry.rst
│   │   ├── email.iterators.rst
│   │   ├── email.message.rst
│   │   ├── email.mime.rst
│   │   ├── email.parser.rst
│   │   ├── email.policy.rst
│   │   ├── email.rst
│   │   ├── email.utils.rst
│   │   ├── ensurepip.rst
│   │   ├── enum.rst
│   │   ├── errno.rst
│   │   ├── exceptions.rst
│   │   ├── faulthandler.rst
│   │   ├── fcntl.rst
│   │   ├── filecmp.rst
│   │   ├── fileformats.rst
│   │   ├── fileinput.rst
│   │   ├── filesys.rst
│   │   ├── fnmatch.rst
│   │   ├── fractions.rst
│   │   ├── frameworks.rst
│   │   ├── ftplib.rst
│   │   ├── functional.rst
│   │   ├── functions.rst
│   │   ├── functools.rst
│   │   ├── gc.rst
│   │   ├── getopt.rst
│   │   ├── getpass.rst
│   │   ├── gettext.rst
│   │   ├── glob.rst
│   │   ├── graphlib.rst
│   │   ├── grp.rst
│   │   ├── gzip.rst
│   │   ├── hashlib.rst
│   │   ├── heapq.rst
│   │   ├── hmac.rst
│   │   ├── html.entities.rst
│   │   ├── html.parser.rst
│   │   ├── html.rst
│   │   ├── http.client.rst
│   │   ├── http.cookiejar.rst
│   │   ├── http.cookies.rst
│   │   ├── http.rst
│   │   ├── http.server.rst
│   │   ├── i18n.rst
│   │   ├── idle.rst
│   │   ├── imaplib.rst
│   │   ├── imghdr.rst
│   │   ├── imp.rst
│   │   ├── importlib.metadata.rst
│   │   ├── importlib.resources.abc.rst
│   │   ├── importlib.resources.rst
│   │   ├── importlib.rst
│   │   ├── index.rst
│   │   ├── inspect.rst
│   │   ├── internet.rst
│   │   ├── intro.rst
│   │   ├── io.rst
│   │   ├── ipaddress.rst
│   │   ├── ipc.rst
│   │   ├── itertools.rst
│   │   ├── json.rst
│   │   ├── keyword.rst
│   │   ├── language.rst
│   │   ├── linecache.rst
│   │   ├── locale.rst
│   │   ├── logging.config.rst
│   │   ├── logging.handlers.rst
│   │   ├── logging.rst
│   │   ├── lzma.rst
│   │   ├── mailbox.rst
│   │   ├── mailcap.rst
│   │   ├── markup.rst
│   │   ├── marshal.rst
│   │   ├── math.rst
│   │   ├── mimetypes.rst
│   │   ├── mm.rst
│   │   ├── mmap.rst
│   │   ├── modulefinder.rst
│   │   ├── modules.rst
│   │   ├── msilib.rst
│   │   ├── msvcrt.rst
│   │   ├── multiprocessing.rst
│   │   ├── multiprocessing.shared_memory.rst
│   │   ├── netdata.rst
│   │   ├── netrc.rst
│   │   ├── nis.rst
│   │   ├── nntplib.rst
│   │   ├── numbers.rst
│   │   ├── numeric.rst
│   │   ├── operator.rst
│   │   ├── optparse.rst
│   │   ├── os.path.rst
│   │   ├── os.rst
│   │   ├── ossaudiodev.rst
│   │   ├── pathlib.rst
│   │   ├── pdb.rst
│   │   ├── persistence.rst
│   │   ├── pickle.rst
│   │   ├── pickletools.rst
│   │   ├── pipes.rst
│   │   ├── pkgutil.rst
│   │   ├── platform.rst
│   │   ├── plistlib.rst
│   │   ├── poplib.rst
│   │   ├── posix.rst
│   │   ├── pprint.rst
│   │   ├── profile.rst
│   │   ├── pty.rst
│   │   ├── pwd.rst
│   │   ├── py_compile.rst
│   │   ├── pyclbr.rst
│   │   ├── pydoc.rst
│   │   ├── pyexpat.rst
│   │   ├── python.rst
│   │   ├── queue.rst
│   │   ├── quopri.rst
│   │   ├── random.rst
│   │   ├── re.rst
│   │   ├── readline.rst
│   │   ├── reprlib.rst
│   │   ├── resource.rst
│   │   ├── rlcompleter.rst
│   │   ├── runpy.rst
│   │   ├── sched.rst
│   │   ├── secrets.rst
│   │   ├── security_warnings.rst
│   │   ├── select.rst
│   │   ├── selectors.rst
│   │   ├── shelve.rst
│   │   ├── shlex.rst
│   │   ├── shutil.rst
│   │   ├── signal.rst
│   │   ├── site.rst
│   │   ├── smtplib.rst
│   │   ├── sndhdr.rst
│   │   ├── socket.rst
│   │   ├── socketserver.rst
│   │   ├── spwd.rst
│   │   ├── sqlite3.rst
│   │   ├── ssl.rst
│   │   ├── stat.rst
│   │   ├── statistics.rst
│   │   ├── stdtypes.rst
│   │   ├── string.rst
│   │   ├── stringprep.rst
│   │   ├── struct.rst
│   │   ├── subprocess.rst
│   │   ├── sunau.rst
│   │   ├── superseded.rst
│   │   ├── symtable.rst
│   │   ├── sys.rst
│   │   ├── sys_path_init.rst
│   │   ├── sysconfig.rst
│   │   ├── syslog.rst
│   │   ├── tabnanny.rst
│   │   ├── tarfile.rst
│   │   ├── telnetlib.rst
│   │   ├── tempfile.rst
│   │   ├── termios.rst
│   │   ├── test.rst
│   │   ├── text.rst
│   │   ├── textwrap.rst
│   │   ├── threading.rst
│   │   ├── time.rst
│   │   ├── timeit.rst
│   │   ├── tk.rst
│   │   ├── tkinter.colorchooser.rst
│   │   ├── tkinter.dnd.rst
│   │   ├── tkinter.font.rst
│   │   ├── tkinter.messagebox.rst
│   │   ├── tkinter.rst
│   │   ├── tkinter.scrolledtext.rst
│   │   ├── tkinter.tix.rst
│   │   ├── tkinter.ttk.rst
│   │   ├── token-list.inc
│   │   ├── token.rst
│   │   ├── tokenize.rst
│   │   ├── tomllib.rst
│   │   ├── trace.rst
│   │   ├── traceback.rst
│   │   ├── tracemalloc.rst
│   │   ├── tty.rst
│   │   ├── tulip_coro.dia
│   │   ├── turtle-star.ps
│   │   ├── turtle.rst
│   │   ├── types.rst
│   │   ├── typing.rst
│   │   ├── unicodedata.rst
│   │   ├── unittest.mock-examples.rst
│   │   ├── unittest.mock.rst
│   │   ├── unittest.rst
│   │   ├── unix.rst
│   │   ├── urllib.error.rst
│   │   ├── urllib.parse.rst
│   │   ├── urllib.request.rst
│   │   ├── urllib.robotparser.rst
│   │   ├── urllib.rst
│   │   ├── uu.rst
│   │   ├── uuid.rst
│   │   ├── venv.rst
│   │   ├── warnings.rst
│   │   ├── wave.rst
│   │   ├── weakref.rst
│   │   ├── webbrowser.rst
│   │   ├── windows.rst
│   │   ├── winreg.rst
│   │   ├── winsound.rst
│   │   ├── wsgiref.rst
│   │   ├── xdrlib.rst
│   │   ├── xml.dom.minidom.rst
│   │   ├── xml.dom.pulldom.rst
│   │   ├── xml.dom.rst
│   │   ├── xml.etree.elementtree.rst
│   │   ├── xml.rst
│   │   ├── xml.sax.handler.rst
│   │   ├── xml.sax.reader.rst
│   │   ├── xml.sax.rst
│   │   ├── xml.sax.utils.rst
│   │   ├── xmlrpc.client.rst
│   │   ├── xmlrpc.rst
│   │   ├── xmlrpc.server.rst
│   │   ├── zipapp.rst
│   │   ├── zipfile.rst
│   │   ├── zipimport.rst
│   │   ├── zlib.rst
│   │   └── zoneinfo.rst
│   ├── license.rst
│   ├── make.bat
│   ├── reference/
│   │   ├── compound_stmts.rst
│   │   ├── datamodel.rst
│   │   ├── executionmodel.rst
│   │   ├── expressions.rst
│   │   ├── grammar.rst
│   │   ├── import.rst
│   │   ├── index.rst
│   │   ├── introduction.rst
│   │   ├── lexical_analysis.rst
│   │   ├── simple_stmts.rst
│   │   └── toplevel_components.rst
│   ├── requirements.txt
│   ├── tools/
│   │   ├── extensions/
│   │   │   ├── asdl_highlight.py
│   │   │   ├── c_annotations.py
│   │   │   ├── escape4chm.py
│   │   │   ├── glossary_search.py
│   │   │   ├── patchlevel.py
│   │   │   ├── peg_highlight.py
│   │   │   └── pyspecific.py
│   │   ├── static/
│   │   │   └── changelog_search.js
│   │   └── templates/
│   │       ├── customsourcelink.html
│   │       ├── download.html
│   │       ├── dummy.html
│   │       ├── indexcontent.html
│   │       ├── indexsidebar.html
│   │       ├── layout.html
│   │       ├── opensearch.xml
│   │       └── search.html
│   ├── tutorial/
│   │   ├── appendix.rst
│   │   ├── appetite.rst
│   │   ├── classes.rst
│   │   ├── controlflow.rst
│   │   ├── datastructures.rst
│   │   ├── errors.rst
│   │   ├── floatingpoint.rst
│   │   ├── index.rst
│   │   ├── inputoutput.rst
│   │   ├── interactive.rst
│   │   ├── interpreter.rst
│   │   ├── introduction.rst
│   │   ├── modules.rst
│   │   ├── stdlib.rst
│   │   ├── stdlib2.rst
│   │   ├── venv.rst
│   │   └── whatnow.rst
│   ├── using/
│   │   ├── cmdline.rst
│   │   ├── configure.rst
│   │   ├── editors.rst
│   │   ├── index.rst
│   │   ├── mac.rst
│   │   ├── unix.rst
│   │   ├── venv-create.inc
│   │   └── windows.rst
│   └── whatsnew/
│       ├── 2.0.rst
│       ├── 2.1.rst
│       ├── 2.2.rst
│       ├── 2.3.rst
│       ├── 2.4.rst
│       ├── 2.5.rst
│       ├── 2.6.rst
│       ├── 2.7.rst
│       ├── 3.0.rst
│       ├── 3.1.rst
│       ├── 3.10.rst
│       ├── 3.11.rst
│       ├── 3.12.rst
│       ├── 3.2.rst
│       ├── 3.3.rst
│       ├── 3.4.rst
│       ├── 3.5.rst
│       ├── 3.6.rst
│       ├── 3.7.rst
│       ├── 3.8.rst
│       ├── 3.9.rst
│       ├── changelog.rst
│       └── index.rst
├── Grammar/
│   ├── Tokens
│   └── python.gram
├── Include/
│   ├── Python.h
│   ├── README.rst
│   ├── abstract.h
│   ├── bltinmodule.h
│   ├── boolobject.h
│   ├── bytearrayobject.h
│   ├── bytesobject.h
│   ├── ceval.h
│   ├── codecs.h
│   ├── compile.h
│   ├── complexobject.h
│   ├── cpython/
│   │   ├── abstract.h
│   │   ├── bytearrayobject.h
│   │   ├── bytesobject.h
│   │   ├── cellobject.h
│   │   ├── ceval.h
│   │   ├── classobject.h
│   │   ├── code.h
│   │   ├── compile.h
│   │   ├── complexobject.h
│   │   ├── context.h
│   │   ├── descrobject.h
│   │   ├── dictobject.h
│   │   ├── fileobject.h
│   │   ├── fileutils.h
│   │   ├── floatobject.h
│   │   ├── frameobject.h
│   │   ├── funcobject.h
│   │   ├── genobject.h
│   │   ├── import.h
│   │   ├── initconfig.h
│   │   ├── listobject.h
│   │   ├── lock.h
│   │   ├── longintrepr.h
│   │   ├── longobject.h
│   │   ├── memoryobject.h
│   │   ├── methodobject.h
│   │   ├── modsupport.h
│   │   ├── object.h
│   │   ├── objimpl.h
│   │   ├── picklebufobject.h
│   │   ├── pthread_stubs.h
│   │   ├── pyctype.h
│   │   ├── pydebug.h
│   │   ├── pyerrors.h
│   │   ├── pyfpe.h
│   │   ├── pyframe.h
│   │   ├── pylifecycle.h
│   │   ├── pymem.h
│   │   ├── pyqueue.h
│   │   ├── pystate.h
│   │   ├── pythonrun.h
│   │   ├── pythread.h
│   │   ├── pytime.h
│   │   ├── setobject.h
│   │   ├── sysmodule.h
│   │   ├── traceback.h
│   │   ├── tupleobject.h
│   │   ├── unicodeobject.h
│   │   ├── warnings.h
│   │   └── weakrefobject.h
│   ├── datetime.h
│   ├── descrobject.h
│   ├── dictobject.h
│   ├── dynamic_annotations.h
│   ├── enumobject.h
│   ├── errcode.h
│   ├── exports.h
│   ├── fileobject.h
│   ├── fileutils.h
│   ├── floatobject.h
│   ├── frameobject.h
│   ├── genericaliasobject.h
│   ├── import.h
│   ├── internal/
│   │   ├── pycore_abstract.h
│   │   ├── pycore_asdl.h
│   │   ├── pycore_ast.h
│   │   ├── pycore_ast_state.h
│   │   ├── pycore_atomic.h
│   │   ├── pycore_atomic_funcs.h
│   │   ├── pycore_bitutils.h
│   │   ├── pycore_blocks_output_buffer.h
│   │   ├── pycore_bytes_methods.h
│   │   ├── pycore_bytesobject.h
│   │   ├── pycore_call.h
│   │   ├── pycore_ceval.h
│   │   ├── pycore_ceval_state.h
│   │   ├── pycore_code.h
│   │   ├── pycore_compile.h
│   │   ├── pycore_condvar.h
│   │   ├── pycore_context.h
│   │   ├── pycore_critical_section.h
│   │   ├── pycore_descrobject.h
│   │   ├── pycore_dict.h
│   │   ├── pycore_dict_state.h
│   │   ├── pycore_dtoa.h
│   │   ├── pycore_emscripten_signal.h
│   │   ├── pycore_exceptions.h
│   │   ├── pycore_faulthandler.h
│   │   ├── pycore_fileutils.h
│   │   ├── pycore_floatobject.h
│   │   ├── pycore_format.h
│   │   ├── pycore_frame.h
│   │   ├── pycore_function.h
│   │   ├── pycore_gc.h
│   │   ├── pycore_genobject.h
│   │   ├── pycore_getopt.h
│   │   ├── pycore_gil.h
│   │   ├── pycore_global_objects.h
│   │   ├── pycore_global_objects_fini_generated.h
│   │   ├── pycore_global_strings.h
│   │   ├── pycore_hamt.h
│   │   ├── pycore_hashtable.h
│   │   ├── pycore_import.h
│   │   ├── pycore_initconfig.h
│   │   ├── pycore_interp.h
│   │   ├── pycore_interpreteridobject.h
│   │   ├── pycore_intrinsics.h
│   │   ├── pycore_list.h
│   │   ├── pycore_llist.h
│   │   ├── pycore_lock.h
│   │   ├── pycore_long.h
│   │   ├── pycore_moduleobject.h
│   │   ├── pycore_mrocache.h
│   │   ├── pycore_namespace.h
│   │   ├── pycore_object.h
│   │   ├── pycore_obmalloc.h
│   │   ├── pycore_obmalloc_init.h
│   │   ├── pycore_opcode.h
│   │   ├── pycore_parser.h
│   │   ├── pycore_pathconfig.h
│   │   ├── pycore_pyarena.h
│   │   ├── pycore_pyerrors.h
│   │   ├── pycore_pyhash.h
│   │   ├── pycore_pylifecycle.h
│   │   ├── pycore_pymath.h
│   │   ├── pycore_pymem.h
│   │   ├── pycore_pymem_init.h
│   │   ├── pycore_pyqueue.h
│   │   ├── pycore_pystate.h
│   │   ├── pycore_pythread.h
│   │   ├── pycore_qsbr.h
│   │   ├── pycore_range.h
│   │   ├── pycore_refcnt.h
│   │   ├── pycore_runtime.h
│   │   ├── pycore_runtime_init.h
│   │   ├── pycore_runtime_init_generated.h
│   │   ├── pycore_signal.h
│   │   ├── pycore_sliceobject.h
│   │   ├── pycore_strhex.h
│   │   ├── pycore_structseq.h
│   │   ├── pycore_symtable.h
│   │   ├── pycore_sysmodule.h
│   │   ├── pycore_time.h
│   │   ├── pycore_token.h
│   │   ├── pycore_traceback.h
│   │   ├── pycore_tracemalloc.h
│   │   ├── pycore_tuple.h
│   │   ├── pycore_typeobject.h
│   │   ├── pycore_ucnhash.h
│   │   ├── pycore_unicodeobject.h
│   │   ├── pycore_unicodeobject_generated.h
│   │   ├── pycore_unionobject.h
│   │   └── pycore_warnings.h
│   ├── intrcheck.h
│   ├── iterobject.h
│   ├── listobject.h
│   ├── longobject.h
│   ├── marshal.h
│   ├── memoryobject.h
│   ├── methodobject.h
│   ├── mimalloc/
│   │   ├── mimalloc-atomic.h
│   │   ├── mimalloc-internal.h
│   │   ├── mimalloc-track.h
│   │   ├── mimalloc-types.h
│   │   └── mimalloc.h
│   ├── modsupport.h
│   ├── moduleobject.h
│   ├── object.h
│   ├── objimpl.h
│   ├── opcode.h
│   ├── osdefs.h
│   ├── osmodule.h
│   ├── parking_lot.h
│   ├── patchlevel.h
│   ├── py_curses.h
│   ├── pyatomic.h
│   ├── pyatomic_gcc.h
│   ├── pyatomic_msc.h
│   ├── pyatomic_std.h
│   ├── pybuffer.h
│   ├── pycapsule.h
│   ├── pydtrace.d
│   ├── pydtrace.h
│   ├── pyerrors.h
│   ├── pyexpat.h
│   ├── pyframe.h
│   ├── pyhash.h
│   ├── pylifecycle.h
│   ├── pymacconfig.h
│   ├── pymacro.h
│   ├── pymath.h
│   ├── pymem.h
│   ├── pyport.h
│   ├── pystate.h
│   ├── pystats.h
│   ├── pystrcmp.h
│   ├── pystrtod.h
│   ├── pythonrun.h
│   ├── pythread.h
│   ├── pytypedefs.h
│   ├── rangeobject.h
│   ├── setobject.h
│   ├── sliceobject.h
│   ├── structmember.h
│   ├── structseq.h
│   ├── sysmodule.h
│   ├── traceback.h
│   ├── tracemalloc.h
│   ├── tupleobject.h
│   ├── typeslots.h
│   ├── unicodeobject.h
│   ├── warnings.h
│   └── weakrefobject.h
├── LICENSE
├── Lib/
│   ├── __future__.py
│   ├── __hello__.py
│   ├── __phello__/
│   │   ├── __init__.py
│   │   ├── ham/
│   │   │   ├── __init__.py
│   │   │   └── eggs.py
│   │   └── spam.py
│   ├── _aix_support.py
│   ├── _collections_abc.py
│   ├── _compat_pickle.py
│   ├── _compression.py
│   ├── _markupbase.py
│   ├── _osx_support.py
│   ├── _py_abc.py
│   ├── _pydecimal.py
│   ├── _pyio.py
│   ├── _pylong.py
│   ├── _sitebuiltins.py
│   ├── _strptime.py
│   ├── _threading_local.py
│   ├── _weakrefset.py
│   ├── abc.py
│   ├── aifc.py
│   ├── antigravity.py
│   ├── argparse.py
│   ├── ast.py
│   ├── asyncio/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── base_events.py
│   │   ├── base_futures.py
│   │   ├── base_subprocess.py
│   │   ├── base_tasks.py
│   │   ├── constants.py
│   │   ├── coroutines.py
│   │   ├── events.py
│   │   ├── exceptions.py
│   │   ├── format_helpers.py
│   │   ├── futures.py
│   │   ├── locks.py
│   │   ├── log.py
│   │   ├── mixins.py
│   │   ├── proactor_events.py
│   │   ├── protocols.py
│   │   ├── queues.py
│   │   ├── runners.py
│   │   ├── selector_events.py
│   │   ├── sslproto.py
│   │   ├── staggered.py
│   │   ├── streams.py
│   │   ├── subprocess.py
│   │   ├── taskgroups.py
│   │   ├── tasks.py
│   │   ├── threads.py
│   │   ├── timeouts.py
│   │   ├── transports.py
│   │   ├── trsock.py
│   │   ├── unix_events.py
│   │   ├── windows_events.py
│   │   └── windows_utils.py
│   ├── base64.py
│   ├── bdb.py
│   ├── bisect.py
│   ├── bz2.py
│   ├── cProfile.py
│   ├── calendar.py
│   ├── cgi.py
│   ├── cgitb.py
│   ├── chunk.py
│   ├── cmd.py
│   ├── code.py
│   ├── codecs.py
│   ├── codeop.py
│   ├── collections/
│   │   ├── __init__.py
│   │   └── abc.py
│   ├── colorsys.py
│   ├── compileall.py
│   ├── concurrent/
│   │   ├── __init__.py
│   │   └── futures/
│   │       ├── __init__.py
│   │       ├── _base.py
│   │       ├── process.py
│   │       └── thread.py
│   ├── configparser.py
│   ├── contextlib.py
│   ├── contextvars.py
│   ├── copy.py
│   ├── copyreg.py
│   ├── crypt.py
│   ├── csv.py
│   ├── ctypes/
│   │   ├── __init__.py
│   │   ├── _aix.py
│   │   ├── _endian.py
│   │   ├── macholib/
│   │   │   ├── README.ctypes
│   │   │   ├── __init__.py
│   │   │   ├── dyld.py
│   │   │   ├── dylib.py
│   │   │   ├── fetch_macholib
│   │   │   ├── fetch_macholib.bat
│   │   │   └── framework.py
│   │   ├── util.py
│   │   └── wintypes.py
│   ├── curses/
│   │   ├── __init__.py
│   │   ├── ascii.py
│   │   ├── has_key.py
│   │   ├── panel.py
│   │   └── textpad.py
│   ├── dataclasses.py
│   ├── datetime.py
│   ├── dbm/
│   │   ├── __init__.py
│   │   ├── dumb.py
│   │   ├── gnu.py
│   │   └── ndbm.py
│   ├── decimal.py
│   ├── difflib.py
│   ├── dis.py
│   ├── doctest.py
│   ├── email/
│   │   ├── __init__.py
│   │   ├── _encoded_words.py
│   │   ├── _header_value_parser.py
│   │   ├── _parseaddr.py
│   │   ├── _policybase.py
│   │   ├── architecture.rst
│   │   ├── base64mime.py
│   │   ├── charset.py
│   │   ├── contentmanager.py
│   │   ├── encoders.py
│   │   ├── errors.py
│   │   ├── feedparser.py
│   │   ├── generator.py
│   │   ├── header.py
│   │   ├── headerregistry.py
│   │   ├── iterators.py
│   │   ├── message.py
│   │   ├── mime/
│   │   │   ├── __init__.py
│   │   │   ├── application.py
│   │   │   ├── audio.py
│   │   │   ├── base.py
│   │   │   ├── image.py
│   │   │   ├── message.py
│   │   │   ├── multipart.py
│   │   │   ├── nonmultipart.py
│   │   │   └── text.py
│   │   ├── parser.py
│   │   ├── policy.py
│   │   ├── quoprimime.py
│   │   └── utils.py
│   ├── encodings/
│   │   ├── __init__.py
│   │   ├── aliases.py
│   │   ├── ascii.py
│   │   ├── base64_codec.py
│   │   ├── big5.py
│   │   ├── big5hkscs.py
│   │   ├── bz2_codec.py
│   │   ├── charmap.py
│   │   ├── cp037.py
│   │   ├── cp1006.py
│   │   ├── cp1026.py
│   │   ├── cp1125.py
│   │   ├── cp1140.py
│   │   ├── cp1250.py
│   │   ├── cp1251.py
│   │   ├── cp1252.py
│   │   ├── cp1253.py
│   │   ├── cp1254.py
│   │   ├── cp1255.py
│   │   ├── cp1256.py
│   │   ├── cp1257.py
│   │   ├── cp1258.py
│   │   ├── cp273.py
│   │   ├── cp424.py
│   │   ├── cp437.py
│   │   ├── cp500.py
│   │   ├── cp720.py
│   │   ├── cp737.py
│   │   ├── cp775.py
│   │   ├── cp850.py
│   │   ├── cp852.py
│   │   ├── cp855.py
│   │   ├── cp856.py
│   │   ├── cp857.py
│   │   ├── cp858.py
│   │   ├── cp860.py
│   │   ├── cp861.py
│   │   ├── cp862.py
│   │   ├── cp863.py
│   │   ├── cp864.py
│   │   ├── cp865.py
│   │   ├── cp866.py
│   │   ├── cp869.py
│   │   ├── cp874.py
│   │   ├── cp875.py
│   │   ├── cp932.py
│   │   ├── cp949.py
│   │   ├── cp950.py
│   │   ├── euc_jis_2004.py
│   │   ├── euc_jisx0213.py
│   │   ├── euc_jp.py
│   │   ├── euc_kr.py
│   │   ├── gb18030.py
│   │   ├── gb2312.py
│   │   ├── gbk.py
│   │   ├── hex_codec.py
│   │   ├── hp_roman8.py
│   │   ├── hz.py
│   │   ├── idna.py
│   │   ├── iso2022_jp.py
│   │   ├── iso2022_jp_1.py
│   │   ├── iso2022_jp_2.py
│   │   ├── iso2022_jp_2004.py
│   │   ├── iso2022_jp_3.py
│   │   ├── iso2022_jp_ext.py
│   │   ├── iso2022_kr.py
│   │   ├── iso8859_1.py
│   │   ├── iso8859_10.py
│   │   ├── iso8859_11.py
│   │   ├── iso8859_13.py
│   │   ├── iso8859_14.py
│   │   ├── iso8859_15.py
│   │   ├── iso8859_16.py
│   │   ├── iso8859_2.py
│   │   ├── iso8859_3.py
│   │   ├── iso8859_4.py
│   │   ├── iso8859_5.py
│   │   ├── iso8859_6.py
│   │   ├── iso8859_7.py
│   │   ├── iso8859_8.py
│   │   ├── iso8859_9.py
│   │   ├── johab.py
│   │   ├── koi8_r.py
│   │   ├── koi8_t.py
│   │   ├── koi8_u.py
│   │   ├── kz1048.py
│   │   ├── latin_1.py
│   │   ├── mac_arabic.py
│   │   ├── mac_croatian.py
│   │   ├── mac_cyrillic.py
│   │   ├── mac_farsi.py
│   │   ├── mac_greek.py
│   │   ├── mac_iceland.py
│   │   ├── mac_latin2.py
│   │   ├── mac_roman.py
│   │   ├── mac_romanian.py
│   │   ├── mac_turkish.py
│   │   ├── mbcs.py
│   │   ├── oem.py
│   │   ├── palmos.py
│   │   ├── ptcp154.py
│   │   ├── punycode.py
│   │   ├── quopri_codec.py
│   │   ├── raw_unicode_escape.py
│   │   ├── rot_13.py
│   │   ├── shift_jis.py
│   │   ├── shift_jis_2004.py
│   │   ├── shift_jisx0213.py
│   │   ├── tis_620.py
│   │   ├── undefined.py
│   │   ├── unicode_escape.py
│   │   ├── utf_16.py
│   │   ├── utf_16_be.py
│   │   ├── utf_16_le.py
│   │   ├── utf_32.py
│   │   ├── utf_32_be.py
│   │   ├── utf_32_le.py
│   │   ├── utf_7.py
│   │   ├── utf_8.py
│   │   ├── utf_8_sig.py
│   │   ├── uu_codec.py
│   │   └── zlib_codec.py
│   ├── ensurepip/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _bundled/
│   │   │   ├── pip-22.3.1-py3-none-any.whl
│   │   │   └── setuptools-65.5.0-py3-none-any.whl
│   │   └── _uninstall.py
│   ├── enum.py
│   ├── filecmp.py
│   ├── fileinput.py
│   ├── fnmatch.py
│   ├── fractions.py
│   ├── ftplib.py
│   ├── functools.py
│   ├── genericpath.py
│   ├── getopt.py
│   ├── getpass.py
│   ├── gettext.py
│   ├── glob.py
│   ├── graphlib.py
│   ├── gzip.py
│   ├── hashlib.py
│   ├── heapq.py
│   ├── hmac.py
│   ├── html/
│   │   ├── __init__.py
│   │   ├── entities.py
│   │   └── parser.py
│   ├── http/
│   │   ├── __init__.py
│   │   ├── client.py
│   │   ├── cookiejar.py
│   │   ├── cookies.py
│   │   └── server.py
│   ├── idlelib/
│   │   ├── CREDITS.txt
│   │   ├── ChangeLog
│   │   ├── HISTORY.txt
│   │   ├── Icons/
│   │   │   └── README.txt
│   │   ├── NEWS.txt
│   │   ├── NEWS2x.txt
│   │   ├── README.txt
│   │   ├── TODO.txt
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── autocomplete.py
│   │   ├── autocomplete_w.py
│   │   ├── autoexpand.py
│   │   ├── browser.py
│   │   ├── calltip.py
│   │   ├── calltip_w.py
│   │   ├── codecontext.py
│   │   ├── colorizer.py
│   │   ├── config-extensions.def
│   │   ├── config-highlight.def
│   │   ├── config-keys.def
│   │   ├── config-main.def
│   │   ├── config.py
│   │   ├── config_key.py
│   │   ├── configdialog.py
│   │   ├── debugger.py
│   │   ├── debugger_r.py
│   │   ├── debugobj.py
│   │   ├── debugobj_r.py
│   │   ├── delegator.py
│   │   ├── dynoption.py
│   │   ├── editor.py
│   │   ├── extend.txt
│   │   ├── filelist.py
│   │   ├── format.py
│   │   ├── grep.py
│   │   ├── help.html
│   │   ├── help.py
│   │   ├── help_about.py
│   │   ├── history.py
│   │   ├── hyperparser.py
│   │   ├── idle.bat
│   │   ├── idle.py
│   │   ├── idle.pyw
│   │   ├── idle_test/
│   │   │   ├── README.txt
│   │   │   ├── __init__.py
│   │   │   ├── example_noext
│   │   │   ├── example_stub.pyi
│   │   │   ├── htest.py
│   │   │   ├── mock_idle.py
│   │   │   ├── mock_tk.py
│   │   │   ├── template.py
│   │   │   ├── test_autocomplete.py
│   │   │   ├── test_autocomplete_w.py
│   │   │   ├── test_autoexpand.py
│   │   │   ├── test_browser.py
│   │   │   ├── test_calltip.py
│   │   │   ├── test_calltip_w.py
│   │   │   ├── test_codecontext.py
│   │   │   ├── test_colorizer.py
│   │   │   ├── test_config.py
│   │   │   ├── test_config_key.py
│   │   │   ├── test_configdialog.py
│   │   │   ├── test_debugger.py
│   │   │   ├── test_debugger_r.py
│   │   │   ├── test_debugobj.py
│   │   │   ├── test_debugobj_r.py
│   │   │   ├── test_delegator.py
│   │   │   ├── test_editmenu.py
│   │   │   ├── test_editor.py
│   │   │   ├── test_filelist.py
│   │   │   ├── test_format.py
│   │   │   ├── test_grep.py
│   │   │   ├── test_help.py
│   │   │   ├── test_help_about.py
│   │   │   ├── test_history.py
│   │   │   ├── test_hyperparser.py
│   │   │   ├── test_iomenu.py
│   │   │   ├── test_macosx.py
│   │   │   ├── test_mainmenu.py
│   │   │   ├── test_multicall.py
│   │   │   ├── test_outwin.py
│   │   │   ├── test_parenmatch.py
│   │   │   ├── test_pathbrowser.py
│   │   │   ├── test_percolator.py
│   │   │   ├── test_pyparse.py
│   │   │   ├── test_pyshell.py
│   │   │   ├── test_query.py
│   │   │   ├── test_redirector.py
│   │   │   ├── test_replace.py
│   │   │   ├── test_rpc.py
│   │   │   ├── test_run.py
│   │   │   ├── test_runscript.py
│   │   │   ├── test_scrolledlist.py
│   │   │   ├── test_search.py
│   │   │   ├── test_searchbase.py
│   │   │   ├── test_searchengine.py
│   │   │   ├── test_sidebar.py
│   │   │   ├── test_squeezer.py
│   │   │   ├── test_stackviewer.py
│   │   │   ├── test_statusbar.py
│   │   │   ├── test_text.py
│   │   │   ├── test_textview.py
│   │   │   ├── test_tooltip.py
│   │   │   ├── test_tree.py
│   │   │   ├── test_undo.py
│   │   │   ├── test_util.py
│   │   │   ├── test_warning.py
│   │   │   ├── test_window.py
│   │   │   ├── test_zoomheight.py
│   │   │   ├── test_zzdummy.py
│   │   │   └── tkinter_testing_utils.py
│   │   ├── iomenu.py
│   │   ├── macosx.py
│   │   ├── mainmenu.py
│   │   ├── multicall.py
│   │   ├── outwin.py
│   │   ├── parenmatch.py
│   │   ├── pathbrowser.py
│   │   ├── percolator.py
│   │   ├── pyparse.py
│   │   ├── pyshell.py
│   │   ├── query.py
│   │   ├── redirector.py
│   │   ├── replace.py
│   │   ├── rpc.py
│   │   ├── run.py
│   │   ├── runscript.py
│   │   ├── scrolledlist.py
│   │   ├── search.py
│   │   ├── searchbase.py
│   │   ├── searchengine.py
│   │   ├── sidebar.py
│   │   ├── squeezer.py
│   │   ├── stackviewer.py
│   │   ├── statusbar.py
│   │   ├── textview.py
│   │   ├── tooltip.py
│   │   ├── tree.py
│   │   ├── undo.py
│   │   ├── util.py
│   │   ├── window.py
│   │   ├── zoomheight.py
│   │   └── zzdummy.py
│   ├── imaplib.py
│   ├── imghdr.py
│   ├── imp.py
│   ├── importlib/
│   │   ├── __init__.py
│   │   ├── _abc.py
│   │   ├── _bootstrap.py
│   │   ├── _bootstrap_external.py
│   │   ├── abc.py
│   │   ├── machinery.py
│   │   ├── metadata/
│   │   │   ├── __init__.py
│   │   │   ├── _adapters.py
│   │   │   ├── _collections.py
│   │   │   ├── _functools.py
│   │   │   ├── _itertools.py
│   │   │   ├── _meta.py
│   │   │   └── _text.py
│   │   ├── readers.py
│   │   ├── resources/
│   │   │   ├── __init__.py
│   │   │   ├── _adapters.py
│   │   │   ├── _common.py
│   │   │   ├── _itertools.py
│   │   │   ├── _legacy.py
│   │   │   ├── abc.py
│   │   │   ├── readers.py
│   │   │   └── simple.py
│   │   ├── simple.py
│   │   └── util.py
│   ├── inspect.py
│   ├── io.py
│   ├── ipaddress.py
│   ├── json/
│   │   ├── __init__.py
│   │   ├── decoder.py
│   │   ├── encoder.py
│   │   ├── scanner.py
│   │   └── tool.py
│   ├── keyword.py
│   ├── lib2to3/
│   │   ├── Grammar.txt
│   │   ├── PatternGrammar.txt
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── btm_matcher.py
│   │   ├── btm_utils.py
│   │   ├── fixer_base.py
│   │   ├── fixer_util.py
│   │   ├── fixes/
│   │   │   ├── __init__.py
│   │   │   ├── fix_apply.py
│   │   │   ├── fix_asserts.py
│   │   │   ├── fix_basestring.py
│   │   │   ├── fix_buffer.py
│   │   │   ├── fix_dict.py
│   │   │   ├── fix_except.py
│   │   │   ├── fix_exec.py
│   │   │   ├── fix_execfile.py
│   │   │   ├── fix_exitfunc.py
│   │   │   ├── fix_filter.py
│   │   │   ├── fix_funcattrs.py
│   │   │   ├── fix_future.py
│   │   │   ├── fix_getcwdu.py
│   │   │   ├── fix_has_key.py
│   │   │   ├── fix_idioms.py
│   │   │   ├── fix_import.py
│   │   │   ├── fix_imports.py
│   │   │   ├── fix_imports2.py
│   │   │   ├── fix_input.py
│   │   │   ├── fix_intern.py
│   │   │   ├── fix_isinstance.py
│   │   │   ├── fix_itertools.py
│   │   │   ├── fix_itertools_imports.py
│   │   │   ├── fix_long.py
│   │   │   ├── fix_map.py
│   │   │   ├── fix_metaclass.py
│   │   │   ├── fix_methodattrs.py
│   │   │   ├── fix_ne.py
│   │   │   ├── fix_next.py
│   │   │   ├── fix_nonzero.py
│   │   │   ├── fix_numliterals.py
│   │   │   ├── fix_operator.py
│   │   │   ├── fix_paren.py
│   │   │   ├── fix_print.py
│   │   │   ├── fix_raise.py
│   │   │   ├── fix_raw_input.py
│   │   │   ├── fix_reduce.py
│   │   │   ├── fix_reload.py
│   │   │   ├── fix_renames.py
│   │   │   ├── fix_repr.py
│   │   │   ├── fix_set_literal.py
│   │   │   ├── fix_standarderror.py
│   │   │   ├── fix_sys_exc.py
│   │   │   ├── fix_throw.py
│   │   │   ├── fix_tuple_params.py
│   │   │   ├── fix_types.py
│   │   │   ├── fix_unicode.py
│   │   │   ├── fix_urllib.py
│   │   │   ├── fix_ws_comma.py
│   │   │   ├── fix_xrange.py
│   │   │   ├── fix_xreadlines.py
│   │   │   └── fix_zip.py
│   │   ├── main.py
│   │   ├── patcomp.py
│   │   ├── pgen2/
│   │   │   ├── __init__.py
│   │   │   ├── conv.py
│   │   │   ├── driver.py
│   │   │   ├── grammar.py
│   │   │   ├── literals.py
│   │   │   ├── parse.py
│   │   │   ├── pgen.py
│   │   │   ├── token.py
│   │   │   └── tokenize.py
│   │   ├── pygram.py
│   │   ├── pytree.py
│   │   └── refactor.py
│   ├── linecache.py
│   ├── locale.py
│   ├── logging/
│   │   ├── __init__.py
│   │   ├── config.py
│   │   └── handlers.py
│   ├── lzma.py
│   ├── mailbox.py
│   ├── mailcap.py
│   ├── mimetypes.py
│   ├── modulefinder.py
│   ├── msilib/
│   │   ├── __init__.py
│   │   ├── schema.py
│   │   ├── sequence.py
│   │   └── text.py
│   ├── multiprocessing/
│   │   ├── __init__.py
│   │   ├── connection.py
│   │   ├── context.py
│   │   ├── dummy/
│   │   │   ├── __init__.py
│   │   │   └── connection.py
│   │   ├── forkserver.py
│   │   ├── heap.py
│   │   ├── managers.py
│   │   ├── pool.py
│   │   ├── popen_fork.py
│   │   ├── popen_forkserver.py
│   │   ├── popen_spawn_posix.py
│   │   ├── popen_spawn_win32.py
│   │   ├── process.py
│   │   ├── queues.py
│   │   ├── reduction.py
│   │   ├── resource_sharer.py
│   │   ├── resource_tracker.py
│   │   ├── shared_memory.py
│   │   ├── sharedctypes.py
│   │   ├── spawn.py
│   │   ├── synchronize.py
│   │   └── util.py
│   ├── netrc.py
│   ├── nntplib.py
│   ├── ntpath.py
│   ├── nturl2path.py
│   ├── numbers.py
│   ├── opcode.py
│   ├── operator.py
│   ├── optparse.py
│   ├── os.py
│   ├── pathlib.py
│   ├── pdb.py
│   ├── pickle.py
│   ├── pickletools.py
│   ├── pipes.py
│   ├── pkgutil.py
│   ├── platform.py
│   ├── plistlib.py
│   ├── poplib.py
│   ├── posixpath.py
│   ├── pprint.py
│   ├── profile.py
│   ├── pstats.py
│   ├── pty.py
│   ├── py_compile.py
│   ├── pyclbr.py
│   ├── pydoc.py
│   ├── pydoc_data/
│   │   ├── __init__.py
│   │   ├── _pydoc.css
│   │   └── topics.py
│   ├── queue.py
│   ├── quopri.py
│   ├── random.py
│   ├── re/
│   │   ├── __init__.py
│   │   ├── _casefix.py
│   │   ├── _compiler.py
│   │   ├── _constants.py
│   │   └── _parser.py
│   ├── reprlib.py
│   ├── rlcompleter.py
│   ├── runpy.py
│   ├── sched.py
│   ├── secrets.py
│   ├── selectors.py
│   ├── shelve.py
│   ├── shlex.py
│   ├── shutil.py
│   ├── signal.py
│   ├── site-packages/
│   │   └── README.txt
│   ├── site.py
│   ├── smtplib.py
│   ├── sndhdr.py
│   ├── socket.py
│   ├── socketserver.py
│   ├── sqlite3/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── dbapi2.py
│   │   └── dump.py
│   ├── sre_compile.py
│   ├── sre_constants.py
│   ├── sre_parse.py
│   ├── ssl.py
│   ├── stat.py
│   ├── statistics.py
│   ├── string.py
│   ├── stringprep.py
│   ├── struct.py
│   ├── subprocess.py
│   ├── sunau.py
│   ├── symtable.py
│   ├── sysconfig.py
│   ├── tabnanny.py
│   ├── tarfile.py
│   ├── telnetlib.py
│   ├── tempfile.py
│   ├── test/
│   │   ├── Sine-1000Hz-300ms.aif
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _test_atexit.py
│   │   ├── _test_eintr.py
│   │   ├── _test_embed_set_config.py
│   │   ├── _test_embed_structseq.py
│   │   ├── _test_multiprocessing.py
│   │   ├── _test_venv_multiprocessing.py
│   │   ├── _testcppext.cpp
│   │   ├── _typed_dict_helper.py
│   │   ├── allsans.pem
│   │   ├── ann_module.py
│   │   ├── ann_module2.py
│   │   ├── ann_module3.py
│   │   ├── ann_module4.py
│   │   ├── ann_module5.py
│   │   ├── ann_module6.py
│   │   ├── ann_module7.py
│   │   ├── ann_module8.py
│   │   ├── audiodata/
│   │   │   ├── pluck-alaw.aifc
│   │   │   ├── pluck-pcm16.aiff
│   │   │   ├── pluck-pcm16.au
│   │   │   ├── pluck-pcm24.aiff
│   │   │   ├── pluck-pcm24.au
│   │   │   ├── pluck-pcm32.aiff
│   │   │   ├── pluck-pcm32.au
│   │   │   ├── pluck-pcm8.aiff
│   │   │   ├── pluck-pcm8.au
│   │   │   ├── pluck-ulaw.aifc
│   │   │   └── pluck-ulaw.au
│   │   ├── audiotest.au
│   │   ├── audiotests.py
│   │   ├── audit-tests.py
│   │   ├── autotest.py
│   │   ├── bad_coding.py
│   │   ├── bad_coding2.py
│   │   ├── bad_getattr.py
│   │   ├── bad_getattr2.py
│   │   ├── bad_getattr3.py
│   │   ├── badcert.pem
│   │   ├── badkey.pem
│   │   ├── badsyntax_3131.py
│   │   ├── badsyntax_future10.py
│   │   ├── badsyntax_future3.py
│   │   ├── badsyntax_future4.py
│   │   ├── badsyntax_future5.py
│   │   ├── badsyntax_future6.py
│   │   ├── badsyntax_future7.py
│   │   ├── badsyntax_future8.py
│   │   ├── badsyntax_future9.py
│   │   ├── badsyntax_pep3120.py
│   │   ├── bisect_cmd.py
│   │   ├── capath/
│   │   │   ├── 4e1295a3.0
│   │   │   ├── 5ed36f99.0
│   │   │   ├── 6e88d7b8.0
│   │   │   ├── 99d0fa06.0
│   │   │   ├── b1930218.0
│   │   │   └── ceff1710.0
│   │   ├── cfgparser.1
│   │   ├── cfgparser.2
│   │   ├── cfgparser.3
│   │   ├── cjkencodings/
│   │   │   ├── big5-utf8.txt
│   │   │   ├── big5.txt
│   │   │   ├── big5hkscs-utf8.txt
│   │   │   ├── big5hkscs.txt
│   │   │   ├── cp949-utf8.txt
│   │   │   ├── cp949.txt
│   │   │   ├── euc_jisx0213-utf8.txt
│   │   │   ├── euc_jisx0213.txt
│   │   │   ├── euc_jp-utf8.txt
│   │   │   ├── euc_jp.txt
│   │   │   ├── euc_kr-utf8.txt
│   │   │   ├── euc_kr.txt
│   │   │   ├── gb18030-utf8.txt
│   │   │   ├── gb18030.txt
│   │   │   ├── gb2312-utf8.txt
│   │   │   ├── gb2312.txt
│   │   │   ├── gbk-utf8.txt
│   │   │   ├── gbk.txt
│   │   │   ├── hz-utf8.txt
│   │   │   ├── hz.txt
│   │   │   ├── iso2022_jp-utf8.txt
│   │   │   ├── iso2022_jp.txt
│   │   │   ├── iso2022_kr-utf8.txt
│   │   │   ├── iso2022_kr.txt
│   │   │   ├── johab-utf8.txt
│   │   │   ├── johab.txt
│   │   │   ├── shift_jis-utf8.txt
│   │   │   ├── shift_jis.txt
│   │   │   ├── shift_jisx0213-utf8.txt
│   │   │   └── shift_jisx0213.txt
│   │   ├── clinic.test
│   │   ├── cmath_testcases.txt
│   │   ├── coding20731.py
│   │   ├── crashers/
│   │   │   ├── README
│   │   │   ├── bogus_code_obj.py
│   │   │   ├── gc_inspection.py
│   │   │   ├── infinite_loop_re.py
│   │   │   ├── mutation_inside_cyclegc.py
│   │   │   ├── recursive_call.py
│   │   │   ├── trace_at_recursion_limit.py
│   │   │   └── underlying_dict.py
│   │   ├── curses_tests.py
│   │   ├── data/
│   │   │   └── README
│   │   ├── dataclass_module_1.py
│   │   ├── dataclass_module_1_str.py
│   │   ├── dataclass_module_2.py
│   │   ├── dataclass_module_2_str.py
│   │   ├── dataclass_textanno.py
│   │   ├── datetimetester.py
│   │   ├── decimaltestdata/
│   │   │   ├── abs.decTest
│   │   │   ├── add.decTest
│   │   │   ├── and.decTest
│   │   │   ├── base.decTest
│   │   │   ├── clamp.decTest
│   │   │   ├── class.decTest
│   │   │   ├── compare.decTest
│   │   │   ├── comparetotal.decTest
│   │   │   ├── comparetotmag.decTest
│   │   │   ├── copy.decTest
│   │   │   ├── copyabs.decTest
│   │   │   ├── copynegate.decTest
│   │   │   ├── copysign.decTest
│   │   │   ├── ddAbs.decTest
│   │   │   ├── ddAdd.decTest
│   │   │   ├── ddAnd.decTest
│   │   │   ├── ddBase.decTest
│   │   │   ├── ddCanonical.decTest
│   │   │   ├── ddClass.decTest
│   │   │   ├── ddCompare.decTest
│   │   │   ├── ddCompareSig.decTest
│   │   │   ├── ddCompareTotal.decTest
│   │   │   ├── ddCompareTotalMag.decTest
│   │   │   ├── ddCopy.decTest
│   │   │   ├── ddCopyAbs.decTest
│   │   │   ├── ddCopyNegate.decTest
│   │   │   ├── ddCopySign.decTest
│   │   │   ├── ddDivide.decTest
│   │   │   ├── ddDivideInt.decTest
│   │   │   ├── ddEncode.decTest
│   │   │   ├── ddFMA.decTest
│   │   │   ├── ddInvert.decTest
│   │   │   ├── ddLogB.decTest
│   │   │   ├── ddMax.decTest
│   │   │   ├── ddMaxMag.decTest
│   │   │   ├── ddMin.decTest
│   │   │   ├── ddMinMag.decTest
│   │   │   ├── ddMinus.decTest
│   │   │   ├── ddMultiply.decTest
│   │   │   ├── ddNextMinus.decTest
│   │   │   ├── ddNextPlus.decTest
│   │   │   ├── ddNextToward.decTest
│   │   │   ├── ddOr.decTest
│   │   │   ├── ddPlus.decTest
│   │   │   ├── ddQuantize.decTest
│   │   │   ├── ddReduce.decTest
│   │   │   ├── ddRemainder.decTest
│   │   │   ├── ddRemainderNear.decTest
│   │   │   ├── ddRotate.decTest
│   │   │   ├── ddSameQuantum.decTest
│   │   │   ├── ddScaleB.decTest
│   │   │   ├── ddShift.decTest
│   │   │   ├── ddSubtract.decTest
│   │   │   ├── ddToIntegral.decTest
│   │   │   ├── ddXor.decTest
│   │   │   ├── decDouble.decTest
│   │   │   ├── decQuad.decTest
│   │   │   ├── decSingle.decTest
│   │   │   ├── divide.decTest
│   │   │   ├── divideint.decTest
│   │   │   ├── dqAbs.decTest
│   │   │   ├── dqAdd.decTest
│   │   │   ├── dqAnd.decTest
│   │   │   ├── dqBase.decTest
│   │   │   ├── dqCanonical.decTest
│   │   │   ├── dqClass.decTest
│   │   │   ├── dqCompare.decTest
│   │   │   ├── dqCompareSig.decTest
│   │   │   ├── dqCompareTotal.decTest
│   │   │   ├── dqCompareTotalMag.decTest
│   │   │   ├── dqCopy.decTest
│   │   │   ├── dqCopyAbs.decTest
│   │   │   ├── dqCopyNegate.decTest
│   │   │   ├── dqCopySign.decTest
│   │   │   ├── dqDivide.decTest
│   │   │   ├── dqDivideInt.decTest
│   │   │   ├── dqEncode.decTest
│   │   │   ├── dqFMA.decTest
│   │   │   ├── dqInvert.decTest
│   │   │   ├── dqLogB.decTest
│   │   │   ├── dqMax.decTest
│   │   │   ├── dqMaxMag.decTest
│   │   │   ├── dqMin.decTest
│   │   │   ├── dqMinMag.decTest
│   │   │   ├── dqMinus.decTest
│   │   │   ├── dqMultiply.decTest
│   │   │   ├── dqNextMinus.decTest
│   │   │   ├── dqNextPlus.decTest
│   │   │   ├── dqNextToward.decTest
│   │   │   ├── dqOr.decTest
│   │   │   ├── dqPlus.decTest
│   │   │   ├── dqQuantize.decTest
│   │   │   ├── dqReduce.decTest
│   │   │   ├── dqRemainder.decTest
│   │   │   ├── dqRemainderNear.decTest
│   │   │   ├── dqRotate.decTest
│   │   │   ├── dqSameQuantum.decTest
│   │   │   ├── dqScaleB.decTest
│   │   │   ├── dqShift.decTest
│   │   │   ├── dqSubtract.decTest
│   │   │   ├── dqToIntegral.decTest
│   │   │   ├── dqXor.decTest
│   │   │   ├── dsBase.decTest
│   │   │   ├── dsEncode.decTest
│   │   │   ├── exp.decTest
│   │   │   ├── extra.decTest
│   │   │   ├── fma.decTest
│   │   │   ├── inexact.decTest
│   │   │   ├── invert.decTest
│   │   │   ├── ln.decTest
│   │   │   ├── log10.decTest
│   │   │   ├── logb.decTest
│   │   │   ├── max.decTest
│   │   │   ├── maxmag.decTest
│   │   │   ├── min.decTest
│   │   │   ├── minmag.decTest
│   │   │   ├── minus.decTest
│   │   │   ├── multiply.decTest
│   │   │   ├── nextminus.decTest
│   │   │   ├── nextplus.decTest
│   │   │   ├── nexttoward.decTest
│   │   │   ├── or.decTest
│   │   │   ├── plus.decTest
│   │   │   ├── power.decTest
│   │   │   ├── powersqrt.decTest
│   │   │   ├── quantize.decTest
│   │   │   ├── randomBound32.decTest
│   │   │   ├── randoms.decTest
│   │   │   ├── reduce.decTest
│   │   │   ├── remainder.decTest
│   │   │   ├── remainderNear.decTest
│   │   │   ├── rescale.decTest
│   │   │   ├── rotate.decTest
│   │   │   ├── rounding.decTest
│   │   │   ├── samequantum.decTest
│   │   │   ├── scaleb.decTest
│   │   │   ├── shift.decTest
│   │   │   ├── squareroot.decTest
│   │   │   ├── subtract.decTest
│   │   │   ├── testall.decTest
│   │   │   ├── tointegral.decTest
│   │   │   ├── tointegralx.decTest
│   │   │   └── xor.decTest
│   │   ├── dis_module.py
│   │   ├── doctest_aliases.py
│   │   ├── doctest_lineno.py
│   │   ├── double_const.py
│   │   ├── dtracedata/
│   │   │   ├── assert_usable.d
│   │   │   ├── assert_usable.stp
│   │   │   ├── call_stack.d
│   │   │   ├── call_stack.d.expected
│   │   │   ├── call_stack.py
│   │   │   ├── call_stack.stp
│   │   │   ├── call_stack.stp.expected
│   │   │   ├── gc.d
│   │   │   ├── gc.d.expected
│   │   │   ├── gc.py
│   │   │   ├── gc.stp
│   │   │   ├── gc.stp.expected
│   │   │   ├── instance.py
│   │   │   ├── line.d
│   │   │   ├── line.d.expected
│   │   │   └── line.py
│   │   ├── empty.vbs
│   │   ├── encoded_modules/
│   │   │   ├── __init__.py
│   │   │   ├── module_iso_8859_1.py
│   │   │   └── module_koi8_r.py
│   │   ├── exception_hierarchy.txt
│   │   ├── ffdh3072.pem
│   │   ├── final_a.py
│   │   ├── final_b.py
│   │   ├── floating_points.txt
│   │   ├── fork_wait.py
│   │   ├── formatfloat_testcases.txt
│   │   ├── future_test1.py
│   │   ├── future_test2.py
│   │   ├── gdb_sample.py
│   │   ├── good_getattr.py
│   │   ├── idnsans.pem
│   │   ├── ieee754.txt
│   │   ├── imghdrdata/
│   │   │   ├── python.exr
│   │   │   ├── python.pbm
│   │   │   ├── python.pgm
│   │   │   ├── python.ppm
│   │   │   ├── python.ras
│   │   │   ├── python.sgi
│   │   │   ├── python.tiff
│   │   │   └── python.xbm
│   │   ├── imp_dummy.py
│   │   ├── inspect_fodder.py
│   │   ├── inspect_fodder2.py
│   │   ├── inspect_stock_annotations.py
│   │   ├── inspect_stringized_annotations.py
│   │   ├── inspect_stringized_annotations_2.py
│   │   ├── keycert.passwd.pem
│   │   ├── keycert.pem
│   │   ├── keycert2.pem
│   │   ├── keycert3.pem
│   │   ├── keycert4.pem
│   │   ├── keycertecc.pem
│   │   ├── leakers/
│   │   │   ├── README.txt
│   │   │   ├── __init__.py
│   │   │   ├── test_ctypes.py
│   │   │   └── test_selftype.py
│   │   ├── levenshtein_examples.json
│   │   ├── libregrtest/
│   │   │   ├── __init__.py
│   │   │   ├── cmdline.py
│   │   │   ├── main.py
│   │   │   ├── pgo.py
│   │   │   ├── refleak.py
│   │   │   ├── runtest.py
│   │   │   ├── runtest_mp.py
│   │   │   ├── save_env.py
│   │   │   ├── setup.py
│   │   │   ├── utils.py
│   │   │   └── win_utils.py
│   │   ├── list_tests.py
│   │   ├── lock_tests.py
│   │   ├── mailcap.txt
│   │   ├── make_ssl_certs.py
│   │   ├── mapping_tests.py
│   │   ├── math_testcases.txt
│   │   ├── memory_watchdog.py
│   │   ├── mime.types
│   │   ├── mock_socket.py
│   │   ├── mod_generics_cache.py
│   │   ├── mp_fork_bomb.py
│   │   ├── mp_preload.py
│   │   ├── multibytecodec_support.py
│   │   ├── nokia.pem
│   │   ├── nosan.pem
│   │   ├── nullbytecert.pem
│   │   ├── nullcert.pem
│   │   ├── pickletester.py
│   │   ├── profilee.py
│   │   ├── pstats.pck
│   │   ├── pycacert.pem
│   │   ├── pycakey.pem
│   │   ├── pyclbr_input.py
│   │   ├── pydoc_mod.py
│   │   ├── pydocfodder.py
│   │   ├── pythoninfo.py
│   │   ├── randv2_32.pck
│   │   ├── randv2_64.pck
│   │   ├── randv3.pck
│   │   ├── re_tests.py
│   │   ├── regrtest.py
│   │   ├── relimport.py
│   │   ├── reperf.py
│   │   ├── revocation.crl
│   │   ├── sample_doctest.py
│   │   ├── sample_doctest_no_docstrings.py
│   │   ├── sample_doctest_no_doctests.py
│   │   ├── secp384r1.pem
│   │   ├── selfsigned_pythontestdotnet.pem
│   │   ├── seq_tests.py
│   │   ├── setup_testcppext.py
│   │   ├── sgml_input.html
│   │   ├── signalinterproctester.py
│   │   ├── smtpd.py
│   │   ├── sndhdrdata/
│   │   │   ├── README
│   │   │   ├── sndhdr.8svx
│   │   │   ├── sndhdr.aifc
│   │   │   ├── sndhdr.aiff
│   │   │   ├── sndhdr.au
│   │   │   ├── sndhdr.hcom
│   │   │   ├── sndhdr.sndt
│   │   │   └── sndhdr.voc
│   │   ├── sortperf.py
│   │   ├── ssl_cert.pem
│   │   ├── ssl_key.passwd.pem
│   │   ├── ssl_key.pem
│   │   ├── ssl_servers.py
│   │   ├── ssltests.py
│   │   ├── string_tests.py
│   │   ├── subprocessdata/
│   │   │   ├── fd_status.py
│   │   │   ├── input_reader.py
│   │   │   ├── qcat.py
│   │   │   ├── qgrep.py
│   │   │   └── sigchild_ignore.py
│   │   ├── support/
│   │   │   ├── __init__.py
│   │   │   ├── asynchat.py
│   │   │   ├── asyncore.py
│   │   │   ├── bytecode_helper.py
│   │   │   ├── hashlib_helper.py
│   │   │   ├── import_helper.py
│   │   │   ├── interpreters.py
│   │   │   ├── logging_helper.py
│   │   │   ├── os_helper.py
│   │   │   ├── script_helper.py
│   │   │   ├── socket_helper.py
│   │   │   ├── testresult.py
│   │   │   ├── threading_helper.py
│   │   │   └── warnings_helper.py
│   │   ├── talos-2019-0758.pem
│   │   ├── test___all__.py
│   │   ├── test___future__.py
│   │   ├── test__locale.py
│   │   ├── test__opcode.py
│   │   ├── test__osx_support.py
│   │   ├── test__xxsubinterpreters.py
│   │   ├── test_abc.py
│   │   ├── test_abstract_numbers.py
│   │   ├── test_aifc.py
│   │   ├── test_argparse.py
│   │   ├── test_array.py
│   │   ├── test_asdl_parser.py
│   │   ├── test_ast.py
│   │   ├── test_asyncgen.py
│   │   ├── test_asyncio/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── echo.py
│   │   │   ├── echo2.py
│   │   │   ├── echo3.py
│   │   │   ├── functional.py
│   │   │   ├── test_base_events.py
│   │   │   ├── test_buffered_proto.py
│   │   │   ├── test_context.py
│   │   │   ├── test_events.py
│   │   │   ├── test_futures.py
│   │   │   ├── test_futures2.py
│   │   │   ├── test_locks.py
│   │   │   ├── test_pep492.py
│   │   │   ├── test_proactor_events.py
│   │   │   ├── test_protocols.py
│   │   │   ├── test_queues.py
│   │   │   ├── test_runners.py
│   │   │   ├── test_selector_events.py
│   │   │   ├── test_sendfile.py
│   │   │   ├── test_server.py
│   │   │   ├── test_sock_lowlevel.py
│   │   │   ├── test_ssl.py
│   │   │   ├── test_sslproto.py
│   │   │   ├── test_streams.py
│   │   │   ├── test_subprocess.py
│   │   │   ├── test_taskgroups.py
│   │   │   ├── test_tasks.py
│   │   │   ├── test_threads.py
│   │   │   ├── test_timeouts.py
│   │   │   ├── test_transports.py
│   │   │   ├── test_unix_events.py
│   │   │   ├── test_waitfor.py
│   │   │   ├── test_windows_events.py
│   │   │   ├── test_windows_utils.py
│   │   │   └── utils.py
│   │   ├── test_atexit.py
│   │   ├── test_audioop.py
│   │   ├── test_audit.py
│   │   ├── test_augassign.py
│   │   ├── test_base64.py
│   │   ├── test_baseexception.py
│   │   ├── test_bdb.py
│   │   ├── test_bigaddrspace.py
│   │   ├── test_bigmem.py
│   │   ├── test_binascii.py
│   │   ├── test_binop.py
│   │   ├── test_bisect.py
│   │   ├── test_bool.py
│   │   ├── test_buffer.py
│   │   ├── test_bufio.py
│   │   ├── test_builtin.py
│   │   ├── test_bytes.py
│   │   ├── test_bz2.py
│   │   ├── test_c_locale_coercion.py
│   │   ├── test_calendar.py
│   │   ├── test_call.py
│   │   ├── test_capi/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_codecs.py
│   │   │   ├── test_getargs.py
│   │   │   ├── test_mem.py
│   │   │   ├── test_misc.py
│   │   │   ├── test_structmembers.py
│   │   │   ├── test_unicode.py
│   │   │   └── test_watchers.py
│   │   ├── test_cgi.py
│   │   ├── test_cgitb.py
│   │   ├── test_charmapcodec.py
│   │   ├── test_check_c_globals.py
│   │   ├── test_class.py
│   │   ├── test_clinic.py
│   │   ├── test_cmath.py
│   │   ├── test_cmd.py
│   │   ├── test_cmd_line.py
│   │   ├── test_cmd_line_script.py
│   │   ├── test_code.py
│   │   ├── test_code_module.py
│   │   ├── test_codeccallbacks.py
│   │   ├── test_codecencodings_cn.py
│   │   ├── test_codecencodings_hk.py
│   │   ├── test_codecencodings_iso2022.py
│   │   ├── test_codecencodings_jp.py
│   │   ├── test_codecencodings_kr.py
│   │   ├── test_codecencodings_tw.py
│   │   ├── test_codecmaps_cn.py
│   │   ├── test_codecmaps_hk.py
│   │   ├── test_codecmaps_jp.py
│   │   ├── test_codecmaps_kr.py
│   │   ├── test_codecmaps_tw.py
│   │   ├── test_codecs.py
│   │   ├── test_codeop.py
│   │   ├── test_collections.py
│   │   ├── test_colorsys.py
│   │   ├── test_compare.py
│   │   ├── test_compile.py
│   │   ├── test_compileall.py
│   │   ├── test_compiler_codegen.py
│   │   ├── test_complex.py
│   │   ├── test_concurrent_futures.py
│   │   ├── test_configparser.py
│   │   ├── test_contains.py
│   │   ├── test_context.py
│   │   ├── test_contextlib.py
│   │   ├── test_contextlib_async.py
│   │   ├── test_copy.py
│   │   ├── test_copyreg.py
│   │   ├── test_coroutines.py
│   │   ├── test_cppext.py
│   │   ├── test_cprofile.py
│   │   ├── test_crashers.py
│   │   ├── test_crypt.py
│   │   ├── test_csv.py
│   │   ├── test_ctypes/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_anon.py
│   │   │   ├── test_array_in_pointer.py
│   │   │   ├── test_arrays.py
│   │   │   ├── test_as_parameter.py
│   │   │   ├── test_bitfields.py
│   │   │   ├── test_buffers.py
│   │   │   ├── test_bytes.py
│   │   │   ├── test_byteswap.py
│   │   │   ├── test_callbacks.py
│   │   │   ├── test_cast.py
│   │   │   ├── test_cfuncs.py
│   │   │   ├── test_checkretval.py
│   │   │   ├── test_delattr.py
│   │   │   ├── test_errno.py
│   │   │   ├── test_find.py
│   │   │   ├── test_frombuffer.py
│   │   │   ├── test_funcptr.py
│   │   │   ├── test_functions.py
│   │   │   ├── test_incomplete.py
│   │   │   ├── test_init.py
│   │   │   ├── test_internals.py
│   │   │   ├── test_keeprefs.py
│   │   │   ├── test_libc.py
│   │   │   ├── test_loading.py
│   │   │   ├── test_macholib.py
│   │   │   ├── test_memfunctions.py
│   │   │   ├── test_numbers.py
│   │   │   ├── test_objects.py
│   │   │   ├── test_parameters.py
│   │   │   ├── test_pep3118.py
│   │   │   ├── test_pickling.py
│   │   │   ├── test_pointers.py
│   │   │   ├── test_prototypes.py
│   │   │   ├── test_python_api.py
│   │   │   ├── test_random_things.py
│   │   │   ├── test_refcounts.py
│   │   │   ├── test_repr.py
│   │   │   ├── test_returnfuncptrs.py
│   │   │   ├── test_simplesubclasses.py
│   │   │   ├── test_sizes.py
│   │   │   ├── test_slicing.py
│   │   │   ├── test_stringptr.py
│   │   │   ├── test_strings.py
│   │   │   ├── test_struct_fields.py
│   │   │   ├── test_structures.py
│   │   │   ├── test_unaligned_structures.py
│   │   │   ├── test_unicode.py
│   │   │   ├── test_values.py
│   │   │   ├── test_varsize_struct.py
│   │   │   ├── test_win32.py
│   │   │   └── test_wintypes.py
│   │   ├── test_curses.py
│   │   ├── test_dataclasses.py
│   │   ├── test_datetime.py
│   │   ├── test_dbm.py
│   │   ├── test_dbm_dumb.py
│   │   ├── test_dbm_gnu.py
│   │   ├── test_dbm_ndbm.py
│   │   ├── test_decimal.py
│   │   ├── test_decorators.py
│   │   ├── test_defaultdict.py
│   │   ├── test_deque.py
│   │   ├── test_descr.py
│   │   ├── test_descrtut.py
│   │   ├── test_devpoll.py
│   │   ├── test_dict.py
│   │   ├── test_dict_version.py
│   │   ├── test_dictcomps.py
│   │   ├── test_dictviews.py
│   │   ├── test_difflib.py
│   │   ├── test_difflib_expect.html
│   │   ├── test_dis.py
│   │   ├── test_doctest.py
│   │   ├── test_doctest.txt
│   │   ├── test_doctest2.py
│   │   ├── test_doctest2.txt
│   │   ├── test_doctest3.txt
│   │   ├── test_doctest4.txt
│   │   ├── test_docxmlrpc.py
│   │   ├── test_dtrace.py
│   │   ├── test_dynamic.py
│   │   ├── test_dynamicclassattribute.py
│   │   ├── test_eintr.py
│   │   ├── test_email/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── data/
│   │   │   │   ├── msg_01.txt
│   │   │   │   ├── msg_02.txt
│   │   │   │   ├── msg_03.txt
│   │   │   │   ├── msg_04.txt
│   │   │   │   ├── msg_05.txt
│   │   │   │   ├── msg_06.txt
│   │   │   │   ├── msg_07.txt
│   │   │   │   ├── msg_08.txt
│   │   │   │   ├── msg_09.txt
│   │   │   │   ├── msg_10.txt
│   │   │   │   ├── msg_11.txt
│   │   │   │   ├── msg_12.txt
│   │   │   │   ├── msg_12a.txt
│   │   │   │   ├── msg_13.txt
│   │   │   │   ├── msg_14.txt
│   │   │   │   ├── msg_15.txt
│   │   │   │   ├── msg_16.txt
│   │   │   │   ├── msg_17.txt
│   │   │   │   ├── msg_18.txt
│   │   │   │   ├── msg_19.txt
│   │   │   │   ├── msg_20.txt
│   │   │   │   ├── msg_21.txt
│   │   │   │   ├── msg_22.txt
│   │   │   │   ├── msg_23.txt
│   │   │   │   ├── msg_24.txt
│   │   │   │   ├── msg_25.txt
│   │   │   │   ├── msg_26.txt
│   │   │   │   ├── msg_27.txt
│   │   │   │   ├── msg_28.txt
│   │   │   │   ├── msg_29.txt
│   │   │   │   ├── msg_30.txt
│   │   │   │   ├── msg_31.txt
│   │   │   │   ├── msg_32.txt
│   │   │   │   ├── msg_33.txt
│   │   │   │   ├── msg_34.txt
│   │   │   │   ├── msg_35.txt
│   │   │   │   ├── msg_36.txt
│   │   │   │   ├── msg_37.txt
│   │   │   │   ├── msg_38.txt
│   │   │   │   ├── msg_39.txt
│   │   │   │   ├── msg_40.txt
│   │   │   │   ├── msg_41.txt
│   │   │   │   ├── msg_42.txt
│   │   │   │   ├── msg_43.txt
│   │   │   │   ├── msg_44.txt
│   │   │   │   ├── msg_45.txt
│   │   │   │   ├── msg_46.txt
│   │   │   │   ├── python.exr
│   │   │   │   ├── python.pbm
│   │   │   │   ├── python.pgm
│   │   │   │   ├── python.ppm
│   │   │   │   ├── python.ras
│   │   │   │   ├── python.sgi
│   │   │   │   ├── python.tiff
│   │   │   │   ├── python.xbm
│   │   │   │   ├── sndhdr.aifc
│   │   │   │   ├── sndhdr.aiff
│   │   │   │   └── sndhdr.au
│   │   │   ├── test__encoded_words.py
│   │   │   ├── test__header_value_parser.py
│   │   │   ├── test_asian_codecs.py
│   │   │   ├── test_contentmanager.py
│   │   │   ├── test_defect_handling.py
│   │   │   ├── test_email.py
│   │   │   ├── test_generator.py
│   │   │   ├── test_headerregistry.py
│   │   │   ├── test_inversion.py
│   │   │   ├── test_message.py
│   │   │   ├── test_parser.py
│   │   │   ├── test_pickleable.py
│   │   │   ├── test_policy.py
│   │   │   ├── test_utils.py
│   │   │   └── torture_test.py
│   │   ├── test_embed.py
│   │   ├── test_ensurepip.py
│   │   ├── test_enum.py
│   │   ├── test_enumerate.py
│   │   ├── test_eof.py
│   │   ├── test_epoll.py
│   │   ├── test_errno.py
│   │   ├── test_except_star.py
│   │   ├── test_exception_group.py
│   │   ├── test_exception_hierarchy.py
│   │   ├── test_exception_variations.py
│   │   ├── test_exceptions.py
│   │   ├── test_extcall.py
│   │   ├── test_faulthandler.py
│   │   ├── test_fcntl.py
│   │   ├── test_file.py
│   │   ├── test_file_eintr.py
│   │   ├── test_filecmp.py
│   │   ├── test_fileinput.py
│   │   ├── test_fileio.py
│   │   ├── test_fileutils.py
│   │   ├── test_finalization.py
│   │   ├── test_float.py
│   │   ├── test_flufl.py
│   │   ├── test_fnmatch.py
│   │   ├── test_fork1.py
│   │   ├── test_format.py
│   │   ├── test_fractions.py
│   │   ├── test_frame.py
│   │   ├── test_frozen.py
│   │   ├── test_fstring.py
│   │   ├── test_ftplib.py
│   │   ├── test_funcattrs.py
│   │   ├── test_functools.py
│   │   ├── test_future.py
│   │   ├── test_future3.py
│   │   ├── test_future4.py
│   │   ├── test_future5.py
│   │   ├── test_gc.py
│   │   ├── test_gdb.py
│   │   ├── test_generator_stop.py
│   │   ├── test_generators.py
│   │   ├── test_genericalias.py
│   │   ├── test_genericclass.py
│   │   ├── test_genericpath.py
│   │   ├── test_genexps.py
│   │   ├── test_getopt.py
│   │   ├── test_getpass.py
│   │   ├── test_getpath.py
│   │   ├── test_gettext.py
│   │   ├── test_glob.py
│   │   ├── test_global.py
│   │   ├── test_grammar.py
│   │   ├── test_graphlib.py
│   │   ├── test_grp.py
│   │   ├── test_gzip.py
│   │   ├── test_hash.py
│   │   ├── test_hashlib.py
│   │   ├── test_heapq.py
│   │   ├── test_hmac.py
│   │   ├── test_html.py
│   │   ├── test_htmlparser.py
│   │   ├── test_http_cookiejar.py
│   │   ├── test_http_cookies.py
│   │   ├── test_httplib.py
│   │   ├── test_httpservers.py
│   │   ├── test_idle.py
│   │   ├── test_imaplib.py
│   │   ├── test_imghdr.py
│   │   ├── test_imp.py
│   │   ├── test_import/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   └── data/
│   │   │       ├── circular_imports/
│   │   │       │   ├── basic.py
│   │   │       │   ├── basic2.py
│   │   │       │   ├── binding.py
│   │   │       │   ├── binding2.py
│   │   │       │   ├── from_cycle1.py
│   │   │       │   ├── from_cycle2.py
│   │   │       │   ├── indirect.py
│   │   │       │   ├── rebinding.py
│   │   │       │   ├── rebinding2.py
│   │   │       │   ├── source.py
│   │   │       │   ├── subpackage.py
│   │   │       │   ├── subpkg/
│   │   │       │   │   ├── subpackage2.py
│   │   │       │   │   └── util.py
│   │   │       │   ├── subpkg2/
│   │   │       │   │   ├── __init__.py
│   │   │       │   │   └── parent/
│   │   │       │   │       ├── __init__.py
│   │   │       │   │       └── child.py
│   │   │       │   ├── use.py
│   │   │       │   └── util.py
│   │   │       ├── package/
│   │   │       │   ├── __init__.py
│   │   │       │   └── submodule.py
│   │   │       ├── package2/
│   │   │       │   ├── submodule1.py
│   │   │       │   └── submodule2.py
│   │   │       └── unwritable/
│   │   │           ├── __init__.py
│   │   │           └── x.py
│   │   ├── test_importlib/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── abc.py
│   │   │   ├── builtin/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_finder.py
│   │   │   │   └── test_loader.py
│   │   │   ├── data/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── example-21.12-py3-none-any.whl
│   │   │   │   ├── example-21.12-py3.6.egg
│   │   │   │   └── example2-1.0.0-py3-none-any.whl
│   │   │   ├── extension/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_case_sensitivity.py
│   │   │   │   ├── test_finder.py
│   │   │   │   ├── test_loader.py
│   │   │   │   └── test_path_hook.py
│   │   │   ├── fixtures.py
│   │   │   ├── frozen/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_finder.py
│   │   │   │   └── test_loader.py
│   │   │   ├── import_/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test___loader__.py
│   │   │   │   ├── test___package__.py
│   │   │   │   ├── test_api.py
│   │   │   │   ├── test_caching.py
│   │   │   │   ├── test_fromlist.py
│   │   │   │   ├── test_helpers.py
│   │   │   │   ├── test_meta_path.py
│   │   │   │   ├── test_packages.py
│   │   │   │   ├── test_path.py
│   │   │   │   └── test_relative_imports.py
│   │   │   ├── namespace_pkgs/
│   │   │   │   ├── both_portions/
│   │   │   │   │   └── foo/
│   │   │   │   │       ├── one.py
│   │   │   │   │       └── two.py
│   │   │   │   ├── module_and_namespace_package/
│   │   │   │   │   ├── a_test/
│   │   │   │   │   │   └── empty
│   │   │   │   │   └── a_test.py
│   │   │   │   ├── not_a_namespace_pkg/
│   │   │   │   │   └── foo/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── one.py
│   │   │   │   ├── portion1/
│   │   │   │   │   └── foo/
│   │   │   │   │       └── one.py
│   │   │   │   ├── portion2/
│   │   │   │   │   └── foo/
│   │   │   │   │       └── two.py
│   │   │   │   ├── project1/
│   │   │   │   │   └── parent/
│   │   │   │   │       └── child/
│   │   │   │   │           └── one.py
│   │   │   │   ├── project2/
│   │   │   │   │   └── parent/
│   │   │   │   │       └── child/
│   │   │   │   │           └── two.py
│   │   │   │   └── project3/
│   │   │   │       └── parent/
│   │   │   │           └── child/
│   │   │   │               └── three.py
│   │   │   ├── partial/
│   │   │   │   ├── cfimport.py
│   │   │   │   └── pool_in_threads.py
│   │   │   ├── resources/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _path.py
│   │   │   │   ├── data01/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── binary.file
│   │   │   │   │   ├── subdirectory/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── binary.file
│   │   │   │   │   ├── utf-16.file
│   │   │   │   │   └── utf-8.file
│   │   │   │   ├── data02/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── one/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── resource1.txt
│   │   │   │   │   └── two/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── resource2.txt
│   │   │   │   ├── data03/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── namespace/
│   │   │   │   │       ├── portion1/
│   │   │   │   │       │   └── __init__.py
│   │   │   │   │       ├── portion2/
│   │   │   │   │       │   └── __init__.py
│   │   │   │   │       └── resource1.txt
│   │   │   │   ├── namespacedata01/
│   │   │   │   │   ├── binary.file
│   │   │   │   │   ├── utf-16.file
│   │   │   │   │   └── utf-8.file
│   │   │   │   ├── test_compatibilty_files.py
│   │   │   │   ├── test_contents.py
│   │   │   │   ├── test_files.py
│   │   │   │   ├── test_open.py
│   │   │   │   ├── test_path.py
│   │   │   │   ├── test_read.py
│   │   │   │   ├── test_reader.py
│   │   │   │   ├── test_resource.py
│   │   │   │   ├── update-zips.py
│   │   │   │   ├── util.py
│   │   │   │   ├── zipdata01/
│   │   │   │   │   └── __init__.py
│   │   │   │   └── zipdata02/
│   │   │   │       └── __init__.py
│   │   │   ├── source/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_case_sensitivity.py
│   │   │   │   ├── test_file_loader.py
│   │   │   │   ├── test_finder.py
│   │   │   │   ├── test_path_hook.py
│   │   │   │   └── test_source_encoding.py
│   │   │   ├── stubs.py
│   │   │   ├── test_abc.py
│   │   │   ├── test_api.py
│   │   │   ├── test_lazy.py
│   │   │   ├── test_locks.py
│   │   │   ├── test_main.py
│   │   │   ├── test_metadata_api.py
│   │   │   ├── test_namespace_pkgs.py
│   │   │   ├── test_pkg_import.py
│   │   │   ├── test_spec.py
│   │   │   ├── test_threaded_import.py
│   │   │   ├── test_util.py
│   │   │   ├── test_windows.py
│   │   │   ├── test_zip.py
│   │   │   ├── threaded_import_hangers.py
│   │   │   └── util.py
│   │   ├── test_index.py
│   │   ├── test_inspect.py
│   │   ├── test_int.py
│   │   ├── test_int_literal.py
│   │   ├── test_interpreters.py
│   │   ├── test_io.py
│   │   ├── test_ioctl.py
│   │   ├── test_ipaddress.py
│   │   ├── test_isinstance.py
│   │   ├── test_iter.py
│   │   ├── test_iterlen.py
│   │   ├── test_itertools.py
│   │   ├── test_json/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_attrdict.py
│   │   │   ├── test_decode.py
│   │   │   ├── test_default.py
│   │   │   ├── test_dump.py
│   │   │   ├── test_encode_basestring_ascii.py
│   │   │   ├── test_enum.py
│   │   │   ├── test_fail.py
│   │   │   ├── test_float.py
│   │   │   ├── test_indent.py
│   │   │   ├── test_pass1.py
│   │   │   ├── test_pass2.py
│   │   │   ├── test_pass3.py
│   │   │   ├── test_recursion.py
│   │   │   ├── test_scanstring.py
│   │   │   ├── test_separators.py
│   │   │   ├── test_speedups.py
│   │   │   ├── test_tool.py
│   │   │   └── test_unicode.py
│   │   ├── test_keyword.py
│   │   ├── test_keywordonlyarg.py
│   │   ├── test_kqueue.py
│   │   ├── test_largefile.py
│   │   ├── test_launcher.py
│   │   ├── test_lib2to3/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── data/
│   │   │   │   ├── README
│   │   │   │   ├── bom.py
│   │   │   │   ├── crlf.py
│   │   │   │   ├── different_encoding.py
│   │   │   │   ├── false_encoding.py
│   │   │   │   ├── fixers/
│   │   │   │   │   ├── bad_order.py
│   │   │   │   │   ├── myfixes/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── fix_explicit.py
│   │   │   │   │   │   ├── fix_first.py
│   │   │   │   │   │   ├── fix_last.py
│   │   │   │   │   │   ├── fix_parrot.py
│   │   │   │   │   │   └── fix_preorder.py
│   │   │   │   │   ├── no_fixer_cls.py
│   │   │   │   │   └── parrot_example.py
│   │   │   │   ├── infinite_recursion.py
│   │   │   │   ├── py2_test_grammar.py
│   │   │   │   └── py3_test_grammar.py
│   │   │   ├── pytree_idempotency.py
│   │   │   ├── support.py
│   │   │   ├── test_all_fixers.py
│   │   │   ├── test_fixers.py
│   │   │   ├── test_main.py
│   │   │   ├── test_parser.py
│   │   │   ├── test_pytree.py
│   │   │   ├── test_refactor.py
│   │   │   └── test_util.py
│   │   ├── test_linecache.py
│   │   ├── test_list.py
│   │   ├── test_listcomps.py
│   │   ├── test_lltrace.py
│   │   ├── test_locale.py
│   │   ├── test_logging.py
│   │   ├── test_long.py
│   │   ├── test_longexp.py
│   │   ├── test_lzma.py
│   │   ├── test_mailbox.py
│   │   ├── test_mailcap.py
│   │   ├── test_marshal.py
│   │   ├── test_math.py
│   │   ├── test_memoryio.py
│   │   ├── test_memoryview.py
│   │   ├── test_metaclass.py
│   │   ├── test_mimetypes.py
│   │   ├── test_minidom.py
│   │   ├── test_mmap.py
│   │   ├── test_module.py
│   │   ├── test_modulefinder.py
│   │   ├── test_msilib.py
│   │   ├── test_multibytecodec.py
│   │   ├── test_multiprocessing_fork.py
│   │   ├── test_multiprocessing_forkserver.py
│   │   ├── test_multiprocessing_main_handling.py
│   │   ├── test_multiprocessing_spawn.py
│   │   ├── test_named_expressions.py
│   │   ├── test_netrc.py
│   │   ├── test_nis.py
│   │   ├── test_nntplib.py
│   │   ├── test_ntpath.py
│   │   ├── test_numeric_tower.py
│   │   ├── test_opcache.py
│   │   ├── test_opcodes.py
│   │   ├── test_openpty.py
│   │   ├── test_operator.py
│   │   ├── test_optparse.py
│   │   ├── test_ordered_dict.py
│   │   ├── test_os.py
│   │   ├── test_ossaudiodev.py
│   │   ├── test_osx_env.py
│   │   ├── test_pathlib.py
│   │   ├── test_patma.py
│   │   ├── test_pdb.py
│   │   ├── test_peepholer.py
│   │   ├── test_peg_generator/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_c_parser.py
│   │   │   ├── test_first_sets.py
│   │   │   ├── test_grammar_validator.py
│   │   │   └── test_pegen.py
│   │   ├── test_pep646_syntax.py
│   │   ├── test_perf_profiler.py
│   │   ├── test_pickle.py
│   │   ├── test_picklebuffer.py
│   │   ├── test_pickletools.py
│   │   ├── test_pipes.py
│   │   ├── test_pkg.py
│   │   ├── test_pkgutil.py
│   │   ├── test_platform.py
│   │   ├── test_plistlib.py
│   │   ├── test_poll.py
│   │   ├── test_popen.py
│   │   ├── test_poplib.py
│   │   ├── test_positional_only_arg.py
│   │   ├── test_posix.py
│   │   ├── test_posixpath.py
│   │   ├── test_pow.py
│   │   ├── test_pprint.py
│   │   ├── test_print.py
│   │   ├── test_profile.py
│   │   ├── test_property.py
│   │   ├── test_pstats.py
│   │   ├── test_pty.py
│   │   ├── test_pulldom.py
│   │   ├── test_pwd.py
│   │   ├── test_py_compile.py
│   │   ├── test_pyclbr.py
│   │   ├── test_pydoc.py
│   │   ├── test_pyexpat.py
│   │   ├── test_queue.py
│   │   ├── test_quopri.py
│   │   ├── test_raise.py
│   │   ├── test_random.py
│   │   ├── test_range.py
│   │   ├── test_re.py
│   │   ├── test_readline.py
│   │   ├── test_regrtest.py
│   │   ├── test_repl.py
│   │   ├── test_reprlib.py
│   │   ├── test_resource.py
│   │   ├── test_richcmp.py
│   │   ├── test_rlcompleter.py
│   │   ├── test_robotparser.py
│   │   ├── test_runpy.py
│   │   ├── test_sax.py
│   │   ├── test_sched.py
│   │   ├── test_scope.py
│   │   ├── test_script_helper.py
│   │   ├── test_secrets.py
│   │   ├── test_select.py
│   │   ├── test_selectors.py
│   │   ├── test_set.py
│   │   ├── test_setcomps.py
│   │   ├── test_shelve.py
│   │   ├── test_shlex.py
│   │   ├── test_shutil.py
│   │   ├── test_signal.py
│   │   ├── test_site.py
│   │   ├── test_slice.py
│   │   ├── test_smtplib.py
│   │   ├── test_smtpnet.py
│   │   ├── test_sndhdr.py
│   │   ├── test_socket.py
│   │   ├── test_socketserver.py
│   │   ├── test_sort.py
│   │   ├── test_source_encoding.py
│   │   ├── test_spwd.py
│   │   ├── test_sqlite3/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_backup.py
│   │   │   ├── test_cli.py
│   │   │   ├── test_dbapi.py
│   │   │   ├── test_dump.py
│   │   │   ├── test_factory.py
│   │   │   ├── test_hooks.py
│   │   │   ├── test_regression.py
│   │   │   ├── test_transactions.py
│   │   │   ├── test_types.py
│   │   │   └── test_userfunctions.py
│   │   ├── test_ssl.py
│   │   ├── test_stable_abi_ctypes.py
│   │   ├── test_startfile.py
│   │   ├── test_stat.py
│   │   ├── test_statistics.py
│   │   ├── test_strftime.py
│   │   ├── test_string.py
│   │   ├── test_string_literals.py
│   │   ├── test_stringprep.py
│   │   ├── test_strptime.py
│   │   ├── test_strtod.py
│   │   ├── test_struct.py
│   │   ├── test_structseq.py
│   │   ├── test_subclassinit.py
│   │   ├── test_subprocess.py
│   │   ├── test_sunau.py
│   │   ├── test_sundry.py
│   │   ├── test_super.py
│   │   ├── test_support.py
│   │   ├── test_symtable.py
│   │   ├── test_syntax.py
│   │   ├── test_sys.py
│   │   ├── test_sys_setprofile.py
│   │   ├── test_sys_settrace.py
│   │   ├── test_sysconfig.py
│   │   ├── test_syslog.py
│   │   ├── test_tabnanny.py
│   │   ├── test_tarfile.py
│   │   ├── test_tcl.py
│   │   ├── test_telnetlib.py
│   │   ├── test_tempfile.py
│   │   ├── test_textwrap.py
│   │   ├── test_thread.py
│   │   ├── test_threadedtempfile.py
│   │   ├── test_threading.py
│   │   ├── test_threading_local.py
│   │   ├── test_threadsignals.py
│   │   ├── test_time.py
│   │   ├── test_timeit.py
│   │   ├── test_timeout.py
│   │   ├── test_tix.py
│   │   ├── test_tkinter/
│   │   │   ├── README
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── support.py
│   │   │   ├── test_colorchooser.py
│   │   │   ├── test_font.py
│   │   │   ├── test_geometry_managers.py
│   │   │   ├── test_images.py
│   │   │   ├── test_loadtk.py
│   │   │   ├── test_messagebox.py
│   │   │   ├── test_misc.py
│   │   │   ├── test_simpledialog.py
│   │   │   ├── test_text.py
│   │   │   ├── test_variables.py
│   │   │   ├── test_widgets.py
│   │   │   └── widget_tests.py
│   │   ├── test_tokenize.py
│   │   ├── test_tomllib/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── burntsushi.py
│   │   │   ├── data/
│   │   │   │   ├── invalid/
│   │   │   │   │   ├── array/
│   │   │   │   │   │   ├── file-end-after-val.toml
│   │   │   │   │   │   ├── unclosed-after-item.toml
│   │   │   │   │   │   └── unclosed-empty.toml
│   │   │   │   │   ├── array-missing-comma.toml
│   │   │   │   │   ├── array-of-tables/
│   │   │   │   │   │   ├── overwrite-array-in-parent.toml
│   │   │   │   │   │   └── overwrite-bool-with-aot.toml
│   │   │   │   │   ├── basic-str-ends-in-escape.toml
│   │   │   │   │   ├── boolean/
│   │   │   │   │   │   ├── invalid-false-casing.toml
│   │   │   │   │   │   └── invalid-true-casing.toml
│   │   │   │   │   ├── dates-and-times/
│   │   │   │   │   │   └── invalid-day.toml
│   │   │   │   │   ├── dotted-keys/
│   │   │   │   │   │   ├── access-non-table.toml
│   │   │   │   │   │   ├── extend-defined-aot.toml
│   │   │   │   │   │   ├── extend-defined-table-with-subtable.toml
│   │   │   │   │   │   └── extend-defined-table.toml
│   │   │   │   │   ├── inline-table/
│   │   │   │   │   │   ├── define-twice-in-subtable.toml
│   │   │   │   │   │   ├── define-twice.toml
│   │   │   │   │   │   ├── file-end-after-key-val.toml
│   │   │   │   │   │   ├── mutate.toml
│   │   │   │   │   │   ├── override-val-in-table.toml
│   │   │   │   │   │   ├── override-val-with-array.toml
│   │   │   │   │   │   ├── override-val-with-table.toml
│   │   │   │   │   │   ├── overwrite-implicitly.toml
│   │   │   │   │   │   ├── overwrite-value-in-inner-array.toml
│   │   │   │   │   │   ├── overwrite-value-in-inner-table.toml
│   │   │   │   │   │   └── unclosed-empty.toml
│   │   │   │   │   ├── inline-table-missing-comma.toml
│   │   │   │   │   ├── invalid-comment-char.toml
│   │   │   │   │   ├── invalid-escaped-unicode.toml
│   │   │   │   │   ├── invalid-hex.toml
│   │   │   │   │   ├── keys-and-vals/
│   │   │   │   │   │   ├── ends-early-table-def.toml
│   │   │   │   │   │   ├── ends-early.toml
│   │   │   │   │   │   ├── no-value.toml
│   │   │   │   │   │   ├── only-ws-after-dot.toml
│   │   │   │   │   │   └── overwrite-with-deep-table.toml
│   │   │   │   │   ├── literal-str/
│   │   │   │   │   │   └── unclosed.toml
│   │   │   │   │   ├── missing-closing-double-square-bracket.toml
│   │   │   │   │   ├── missing-closing-square-bracket.toml
│   │   │   │   │   ├── multiline-basic-str/
│   │   │   │   │   │   ├── carriage-return.toml
│   │   │   │   │   │   ├── escape-only.toml
│   │   │   │   │   │   ├── file-ends-after-opening.toml
│   │   │   │   │   │   ├── last-line-escape.toml
│   │   │   │   │   │   └── unclosed-ends-in-whitespace-escape.toml
│   │   │   │   │   ├── multiline-literal-str/
│   │   │   │   │   │   ├── file-ends-after-opening.toml
│   │   │   │   │   │   └── unclosed.toml
│   │   │   │   │   ├── non-scalar-escaped.toml
│   │   │   │   │   ├── table/
│   │   │   │   │   │   ├── eof-after-opening.toml
│   │   │   │   │   │   ├── redefine-1.toml
│   │   │   │   │   │   └── redefine-2.toml
│   │   │   │   │   ├── unclosed-multiline-string.toml
│   │   │   │   │   └── unclosed-string.toml
│   │   │   │   └── valid/
│   │   │   │       ├── apostrophes-in-literal-string.json
│   │   │   │       ├── apostrophes-in-literal-string.toml
│   │   │   │       ├── array/
│   │   │   │       │   ├── array-subtables.json
│   │   │   │       │   ├── array-subtables.toml
│   │   │   │       │   ├── open-parent-table.json
│   │   │   │       │   └── open-parent-table.toml
│   │   │   │       ├── boolean.json
│   │   │   │       ├── boolean.toml
│   │   │   │       ├── dates-and-times/
│   │   │   │       │   ├── datetimes.json
│   │   │   │       │   ├── datetimes.toml
│   │   │   │       │   ├── localtime.json
│   │   │   │       │   └── localtime.toml
│   │   │   │       ├── empty-inline-table.json
│   │   │   │       ├── empty-inline-table.toml
│   │   │   │       ├── five-quotes.json
│   │   │   │       ├── five-quotes.toml
│   │   │   │       ├── hex-char.json
│   │   │   │       ├── hex-char.toml
│   │   │   │       ├── multiline-basic-str/
│   │   │   │       │   ├── ends-in-whitespace-escape.json
│   │   │   │       │   └── ends-in-whitespace-escape.toml
│   │   │   │       ├── no-newlines.json
│   │   │   │       ├── no-newlines.toml
│   │   │   │       ├── trailing-comma.json
│   │   │   │       └── trailing-comma.toml
│   │   │   ├── test_data.py
│   │   │   ├── test_error.py
│   │   │   └── test_misc.py
│   │   ├── test_tools/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_freeze.py
│   │   │   ├── test_i18n.py
│   │   │   ├── test_reindent.py
│   │   │   └── test_sundry.py
│   │   ├── test_trace.py
│   │   ├── test_traceback.py
│   │   ├── test_tracemalloc.py
│   │   ├── test_ttk/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_extensions.py
│   │   │   ├── test_style.py
│   │   │   └── test_widgets.py
│   │   ├── test_ttk_textonly.py
│   │   ├── test_tuple.py
│   │   ├── test_turtle.py
│   │   ├── test_type_annotations.py
│   │   ├── test_type_cache.py
│   │   ├── test_type_comments.py
│   │   ├── test_typechecks.py
│   │   ├── test_types.py
│   │   ├── test_typing.py
│   │   ├── test_ucn.py
│   │   ├── test_unary.py
│   │   ├── test_unicode.py
│   │   ├── test_unicode_file.py
│   │   ├── test_unicode_file_functions.py
│   │   ├── test_unicode_identifiers.py
│   │   ├── test_unicodedata.py
│   │   ├── test_unittest/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _test_warnings.py
│   │   │   ├── dummy.py
│   │   │   ├── support.py
│   │   │   ├── test_assertions.py
│   │   │   ├── test_async_case.py
│   │   │   ├── test_break.py
│   │   │   ├── test_case.py
│   │   │   ├── test_discovery.py
│   │   │   ├── test_functiontestcase.py
│   │   │   ├── test_loader.py
│   │   │   ├── test_program.py
│   │   │   ├── test_result.py
│   │   │   ├── test_runner.py
│   │   │   ├── test_setups.py
│   │   │   ├── test_skipping.py
│   │   │   ├── test_suite.py
│   │   │   └── testmock/
│   │   │       ├── __init__.py
│   │   │       ├── __main__.py
│   │   │       ├── support.py
│   │   │       ├── testasync.py
│   │   │       ├── testcallable.py
│   │   │       ├── testhelpers.py
│   │   │       ├── testmagicmethods.py
│   │   │       ├── testmock.py
│   │   │       ├── testpatch.py
│   │   │       ├── testsealable.py
│   │   │       ├── testsentinel.py
│   │   │       └── testwith.py
│   │   ├── test_univnewlines.py
│   │   ├── test_unpack.py
│   │   ├── test_unpack_ex.py
│   │   ├── test_unparse.py
│   │   ├── test_urllib.py
│   │   ├── test_urllib2.py
│   │   ├── test_urllib2_localnet.py
│   │   ├── test_urllib2net.py
│   │   ├── test_urllib_response.py
│   │   ├── test_urllibnet.py
│   │   ├── test_urlparse.py
│   │   ├── test_userdict.py
│   │   ├── test_userlist.py
│   │   ├── test_userstring.py
│   │   ├── test_utf8_mode.py
│   │   ├── test_utf8source.py
│   │   ├── test_uu.py
│   │   ├── test_uuid.py
│   │   ├── test_venv.py
│   │   ├── test_wait3.py
│   │   ├── test_wait4.py
│   │   ├── test_warnings/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   └── data/
│   │   │       ├── import_warning.py
│   │   │       └── stacklevel.py
│   │   ├── test_wave.py
│   │   ├── test_weakref.py
│   │   ├── test_weakset.py
│   │   ├── test_webbrowser.py
│   │   ├── test_winconsoleio.py
│   │   ├── test_winreg.py
│   │   ├── test_winsound.py
│   │   ├── test_with.py
│   │   ├── test_wmi.py
│   │   ├── test_wsgiref.py
│   │   ├── test_xdrlib.py
│   │   ├── test_xml_dom_minicompat.py
│   │   ├── test_xml_etree.py
│   │   ├── test_xml_etree_c.py
│   │   ├── test_xmlrpc.py
│   │   ├── test_xmlrpc_net.py
│   │   ├── test_xxlimited.py
│   │   ├── test_xxtestfuzz.py
│   │   ├── test_yield_from.py
│   │   ├── test_zipapp.py
│   │   ├── test_zipfile/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _functools.py
│   │   │   ├── _itertools.py
│   │   │   ├── _test_params.py
│   │   │   ├── test_core.py
│   │   │   └── test_path.py
│   │   ├── test_zipfile64.py
│   │   ├── test_zipimport.py
│   │   ├── test_zipimport_support.py
│   │   ├── test_zlib.py
│   │   ├── test_zoneinfo/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _support.py
│   │   │   ├── data/
│   │   │   │   ├── update_test_data.py
│   │   │   │   └── zoneinfo_data.json
│   │   │   └── test_zoneinfo.py
│   │   ├── testcodec.py
│   │   ├── testtar.tar.xz
│   │   ├── tf_inherit_check.py
│   │   ├── time_hashlib.py
│   │   ├── tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
│   │   ├── tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
│   │   ├── tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
│   │   ├── tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
│   │   ├── tokenize_tests.txt
│   │   ├── tracedmodules/
│   │   │   ├── __init__.py
│   │   │   └── testmod.py
│   │   ├── typinganndata/
│   │   │   ├── __init__.py
│   │   │   └── ann_module9.py
│   │   ├── win_console_handler.py
│   │   ├── xmltestdata/
│   │   │   ├── c14n-20/
│   │   │   │   ├── README
│   │   │   │   ├── c14nComment.xml
│   │   │   │   ├── c14nDefault.xml
│   │   │   │   ├── c14nPrefix.xml
│   │   │   │   ├── c14nPrefixQname.xml
│   │   │   │   ├── c14nPrefixQnameXpathElem.xml
│   │   │   │   ├── c14nQname.xml
│   │   │   │   ├── c14nQnameElem.xml
│   │   │   │   ├── c14nQnameXpathElem.xml
│   │   │   │   ├── c14nTrim.xml
│   │   │   │   ├── doc.dtd
│   │   │   │   ├── doc.xsl
│   │   │   │   ├── inC14N1.xml
│   │   │   │   ├── inC14N2.xml
│   │   │   │   ├── inC14N3.xml
│   │   │   │   ├── inC14N4.xml
│   │   │   │   ├── inC14N5.xml
│   │   │   │   ├── inC14N6.xml
│   │   │   │   ├── inNsContent.xml
│   │   │   │   ├── inNsDefault.xml
│   │   │   │   ├── inNsPushdown.xml
│   │   │   │   ├── inNsRedecl.xml
│   │   │   │   ├── inNsSort.xml
│   │   │   │   ├── inNsSuperfluous.xml
│   │   │   │   ├── inNsXml.xml
│   │   │   │   ├── out_inC14N1_c14nComment.xml
│   │   │   │   ├── out_inC14N1_c14nDefault.xml
│   │   │   │   ├── out_inC14N2_c14nDefault.xml
│   │   │   │   ├── out_inC14N2_c14nTrim.xml
│   │   │   │   ├── out_inC14N3_c14nDefault.xml
│   │   │   │   ├── out_inC14N3_c14nPrefix.xml
│   │   │   │   ├── out_inC14N3_c14nTrim.xml
│   │   │   │   ├── out_inC14N4_c14nDefault.xml
│   │   │   │   ├── out_inC14N4_c14nTrim.xml
│   │   │   │   ├── out_inC14N5_c14nDefault.xml
│   │   │   │   ├── out_inC14N5_c14nTrim.xml
│   │   │   │   ├── out_inC14N6_c14nDefault.xml
│   │   │   │   ├── out_inNsContent_c14nDefault.xml
│   │   │   │   ├── out_inNsContent_c14nPrefixQnameXpathElem.xml
│   │   │   │   ├── out_inNsContent_c14nQnameElem.xml
│   │   │   │   ├── out_inNsContent_c14nQnameXpathElem.xml
│   │   │   │   ├── out_inNsDefault_c14nDefault.xml
│   │   │   │   ├── out_inNsDefault_c14nPrefix.xml
│   │   │   │   ├── out_inNsPushdown_c14nDefault.xml
│   │   │   │   ├── out_inNsPushdown_c14nPrefix.xml
│   │   │   │   ├── out_inNsRedecl_c14nDefault.xml
│   │   │   │   ├── out_inNsRedecl_c14nPrefix.xml
│   │   │   │   ├── out_inNsSort_c14nDefault.xml
│   │   │   │   ├── out_inNsSort_c14nPrefix.xml
│   │   │   │   ├── out_inNsSuperfluous_c14nDefault.xml
│   │   │   │   ├── out_inNsSuperfluous_c14nPrefix.xml
│   │   │   │   ├── out_inNsXml_c14nDefault.xml
│   │   │   │   ├── out_inNsXml_c14nPrefix.xml
│   │   │   │   ├── out_inNsXml_c14nPrefixQname.xml
│   │   │   │   ├── out_inNsXml_c14nQname.xml
│   │   │   │   └── world.txt
│   │   │   ├── expat224_utf8_bug.xml
│   │   │   ├── simple-ns.xml
│   │   │   ├── simple.xml
│   │   │   ├── test.xml
│   │   │   └── test.xml.out
│   │   ├── xmltests.py
│   │   └── ziptestdata/
│   │       ├── README.md
│   │       ├── exe_with_z64
│   │       ├── exe_with_zip
│   │       ├── header.sh
│   │       └── testdata_module_inside_zip.py
│   ├── textwrap.py
│   ├── this.py
│   ├── threading.py
│   ├── timeit.py
│   ├── tkinter/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── colorchooser.py
│   │   ├── commondialog.py
│   │   ├── constants.py
│   │   ├── dialog.py
│   │   ├── dnd.py
│   │   ├── filedialog.py
│   │   ├── font.py
│   │   ├── messagebox.py
│   │   ├── scrolledtext.py
│   │   ├── simpledialog.py
│   │   ├── tix.py
│   │   └── ttk.py
│   ├── token.py
│   ├── tokenize.py
│   ├── tomllib/
│   │   ├── __init__.py
│   │   ├── _parser.py
│   │   ├── _re.py
│   │   └── _types.py
│   ├── trace.py
│   ├── traceback.py
│   ├── tracemalloc.py
│   ├── tty.py
│   ├── turtle.py
│   ├── turtledemo/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── bytedesign.py
│   │   ├── chaos.py
│   │   ├── clock.py
│   │   ├── colormixer.py
│   │   ├── forest.py
│   │   ├── fractalcurves.py
│   │   ├── lindenmayer.py
│   │   ├── minimal_hanoi.py
│   │   ├── nim.py
│   │   ├── paint.py
│   │   ├── peace.py
│   │   ├── penrose.py
│   │   ├── planet_and_moon.py
│   │   ├── rosette.py
│   │   ├── round_dance.py
│   │   ├── sorting_animate.py
│   │   ├── tree.py
│   │   ├── turtle.cfg
│   │   ├── two_canvases.py
│   │   └── yinyang.py
│   ├── types.py
│   ├── typing.py
│   ├── unittest/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _log.py
│   │   ├── async_case.py
│   │   ├── case.py
│   │   ├── loader.py
│   │   ├── main.py
│   │   ├── mock.py
│   │   ├── result.py
│   │   ├── runner.py
│   │   ├── signals.py
│   │   ├── suite.py
│   │   └── util.py
│   ├── urllib/
│   │   ├── __init__.py
│   │   ├── error.py
│   │   ├── parse.py
│   │   ├── request.py
│   │   ├── response.py
│   │   └── robotparser.py
│   ├── uu.py
│   ├── uuid.py
│   ├── venv/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   └── scripts/
│   │       ├── common/
│   │       │   ├── Activate.ps1
│   │       │   └── activate
│   │       ├── nt/
│   │       │   ├── activate.bat
│   │       │   └── deactivate.bat
│   │       └── posix/
│   │           ├── activate.csh
│   │           └── activate.fish
│   ├── warnings.py
│   ├── wave.py
│   ├── weakref.py
│   ├── webbrowser.py
│   ├── wsgiref/
│   │   ├── __init__.py
│   │   ├── handlers.py
│   │   ├── headers.py
│   │   ├── simple_server.py
│   │   ├── types.py
│   │   ├── util.py
│   │   └── validate.py
│   ├── xdrlib.py
│   ├── xml/
│   │   ├── __init__.py
│   │   ├── dom/
│   │   │   ├── NodeFilter.py
│   │   │   ├── __init__.py
│   │   │   ├── domreg.py
│   │   │   ├── expatbuilder.py
│   │   │   ├── minicompat.py
│   │   │   ├── minidom.py
│   │   │   ├── pulldom.py
│   │   │   └── xmlbuilder.py
│   │   ├── etree/
│   │   │   ├── ElementInclude.py
│   │   │   ├── ElementPath.py
│   │   │   ├── ElementTree.py
│   │   │   ├── __init__.py
│   │   │   └── cElementTree.py
│   │   ├── parsers/
│   │   │   ├── __init__.py
│   │   │   └── expat.py
│   │   └── sax/
│   │       ├── __init__.py
│   │       ├── _exceptions.py
│   │       ├── expatreader.py
│   │       ├── handler.py
│   │       ├── saxutils.py
│   │       └── xmlreader.py
│   ├── xmlrpc/
│   │   ├── __init__.py
│   │   ├── client.py
│   │   └── server.py
│   ├── zipapp.py
│   ├── zipfile/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   └── _path.py
│   ├── zipimport.py
│   └── zoneinfo/
│       ├── __init__.py
│       ├── _common.py
│       ├── _tzpath.py
│       └── _zoneinfo.py
├── Mac/
│   ├── BuildScript/
│   │   ├── README.rst
│   │   ├── build-installer.py
│   │   ├── resources/
│   │   │   ├── Conclusion.rtf
│   │   │   ├── License.rtf
│   │   │   ├── ReadMe.rtf
│   │   │   ├── Welcome.rtf
│   │   │   └── install_certificates.command
│   │   ├── scripts/
│   │   │   ├── postflight.documentation
│   │   │   ├── postflight.ensurepip
│   │   │   ├── postflight.framework
│   │   │   └── postflight.patch-profile
│   │   ├── seticon.m
│   │   └── tk868_on_10_8_10_9.patch
│   ├── Extras.install.py
│   ├── IDLE/
│   │   └── IDLE.app/
│   │       └── Contents/
│   │           ├── Info.plist
│   │           ├── MacOS/
│   │           │   └── IDLE
│   │           ├── PkgInfo
│   │           └── Resources/
│   │               ├── IDLE.icns
│   │               ├── PythonCompiled.icns
│   │               ├── PythonSource.icns
│   │               └── idlemain.py
│   ├── Icons/
│   │   ├── Disk Image.icns
│   │   ├── IDLE.icns
│   │   ├── Python Folder.icns
│   │   ├── PythonCompiled.icns
│   │   ├── PythonLauncher.icns
│   │   ├── PythonSource.icns
│   │   └── ReadMe.txt
│   ├── Makefile.in
│   ├── PythonLauncher/
│   │   ├── English.lproj/
│   │   │   ├── Credits.rtf
│   │   │   ├── MainMenu.nib/
│   │   │   │   ├── classes.nib
│   │   │   │   ├── info.nib
│   │   │   │   └── objects.nib
│   │   │   ├── MyDocument.nib/
│   │   │   │   ├── classes.nib
│   │   │   │   ├── info.nib
│   │   │   │   └── objects.nib
│   │   │   └── PreferenceWindow.nib/
│   │   │       ├── classes.nib
│   │   │       ├── info.nib
│   │   │       └── objects.nib
│   │   ├── FileSettings.h
│   │   ├── FileSettings.m
│   │   ├── Info.plist.in
│   │   ├── Makefile.in
│   │   ├── MyAppDelegate.h
│   │   ├── MyAppDelegate.m
│   │   ├── MyDocument.h
│   │   ├── MyDocument.m
│   │   ├── PreferencesWindowController.h
│   │   ├── PreferencesWindowController.m
│   │   ├── doscript.h
│   │   ├── doscript.m
│   │   ├── factorySettings.plist
│   │   └── main.m
│   ├── README.rst
│   ├── Resources/
│   │   ├── app/
│   │   │   ├── Info.plist.in
│   │   │   ├── PkgInfo
│   │   │   └── Resources/
│   │   │       ├── PythonApplet.icns
│   │   │       └── PythonInterpreter.icns
│   │   ├── framework/
│   │   │   └── Info.plist.in
│   │   └── iconsrc/
│   │       ├── IDE.psd
│   │       ├── PackageManager.psd
│   │       ├── PythonApplet.psd
│   │       ├── PythonCompiled.psd
│   │       ├── PythonIcon.psd
│   │       ├── PythonSource.psd
│   │       └── PythonWSource.psd
│   └── Tools/
│       ├── plistlib_generate_testdata.py
│       └── pythonw.c
├── Makefile.pre.in
├── Misc/
│   ├── ACKS
│   ├── HISTORY
│   ├── NEWS.d/
│   │   ├── 3.10.0a1.rst
│   │   ├── 3.10.0a2.rst
│   │   ├── 3.10.0a3.rst
│   │   ├── 3.10.0a4.rst
│   │   ├── 3.10.0a5.rst
│   │   ├── 3.10.0a6.rst
│   │   ├── 3.10.0a7.rst
│   │   ├── 3.10.0b1.rst
│   │   ├── 3.11.0a1.rst
│   │   ├── 3.11.0a2.rst
│   │   ├── 3.11.0a3.rst
│   │   ├── 3.11.0a4.rst
│   │   ├── 3.11.0a5.rst
│   │   ├── 3.11.0a6.rst
│   │   ├── 3.11.0a7.rst
│   │   ├── 3.11.0b1.rst
│   │   ├── 3.12.0a1.rst
│   │   ├── 3.12.0a2.rst
│   │   ├── 3.12.0a3.rst
│   │   ├── 3.12.0a4.rst
│   │   ├── 3.5.0.rst
│   │   ├── 3.5.0a1.rst
│   │   ├── 3.5.0a2.rst
│   │   ├── 3.5.0a3.rst
│   │   ├── 3.5.0a4.rst
│   │   ├── 3.5.0b1.rst
│   │   ├── 3.5.0b2.rst
│   │   ├── 3.5.0b3.rst
│   │   ├── 3.5.0b4.rst
│   │   ├── 3.5.0rc1.rst
│   │   ├── 3.5.0rc2.rst
│   │   ├── 3.5.0rc3.rst
│   │   ├── 3.5.0rc4.rst
│   │   ├── 3.5.1.rst
│   │   ├── 3.5.1rc1.rst
│   │   ├── 3.5.2.rst
│   │   ├── 3.5.2rc1.rst
│   │   ├── 3.5.3.rst
│   │   ├── 3.5.3rc1.rst
│   │   ├── 3.5.4.rst
│   │   ├── 3.5.4rc1.rst
│   │   ├── 3.5.5.rst
│   │   ├── 3.5.5rc1.rst
│   │   ├── 3.6.0.rst
│   │   ├── 3.6.0a1.rst
│   │   ├── 3.6.0a2.rst
│   │   ├── 3.6.0a3.rst
│   │   ├── 3.6.0a4.rst
│   │   ├── 3.6.0b1.rst
│   │   ├── 3.6.0b2.rst
│   │   ├── 3.6.0b3.rst
│   │   ├── 3.6.0b4.rst
│   │   ├── 3.6.0rc1.rst
│   │   ├── 3.6.0rc2.rst
│   │   ├── 3.6.1.rst
│   │   ├── 3.6.1rc1.rst
│   │   ├── 3.6.2.rst
│   │   ├── 3.6.2rc1.rst
│   │   ├── 3.6.2rc2.rst
│   │   ├── 3.6.3.rst
│   │   ├── 3.6.3rc1.rst
│   │   ├── 3.6.4.rst
│   │   ├── 3.6.4rc1.rst
│   │   ├── 3.6.5.rst
│   │   ├── 3.6.5rc1.rst
│   │   ├── 3.6.6.rst
│   │   ├── 3.6.6rc1.rst
│   │   ├── 3.7.0.rst
│   │   ├── 3.7.0a1.rst
│   │   ├── 3.7.0a2.rst
│   │   ├── 3.7.0a3.rst
│   │   ├── 3.7.0a4.rst
│   │   ├── 3.7.0b1.rst
│   │   ├── 3.7.0b2.rst
│   │   ├── 3.7.0b3.rst
│   │   ├── 3.7.0b4.rst
│   │   ├── 3.7.0b5.rst
│   │   ├── 3.7.0rc1.rst
│   │   ├── 3.8.0a1.rst
│   │   ├── 3.8.0a2.rst
│   │   ├── 3.8.0a3.rst
│   │   ├── 3.8.0a4.rst
│   │   ├── 3.8.0b1.rst
│   │   ├── 3.9.0a1.rst
│   │   ├── 3.9.0a2.rst
│   │   ├── 3.9.0a3.rst
│   │   ├── 3.9.0a4.rst
│   │   ├── 3.9.0a5.rst
│   │   ├── 3.9.0a6.rst
│   │   ├── 3.9.0b1.rst
│   │   └── next/
│   │       ├── Build/
│   │       │   └── README.rst
│   │       ├── C API/
│   │       │   └── README.rst
│   │       ├── Core and Builtins/
│   │       │   └── README.rst
│   │       ├── Documentation/
│   │       │   └── README.rst
│   │       ├── IDLE/
│   │       │   └── README.rst
│   │       ├── Library/
│   │       │   └── README.rst
│   │       ├── Security/
│   │       │   └── README.rst
│   │       ├── Tests/
│   │       │   └── README.rst
│   │       ├── Tools-Demos/
│   │       │   └── README.rst
│   │       ├── Windows/
│   │       │   └── README.rst
│   │       └── macOS/
│   │           └── README.rst
│   ├── Porting
│   ├── README
│   ├── README.AIX
│   ├── README.coverity
│   ├── README.valgrind
│   ├── SpecialBuilds.txt
│   ├── coverity_model.c
│   ├── gdbinit
│   ├── indent.pro
│   ├── python-config.in
│   ├── python-config.sh.in
│   ├── python-embed.pc.in
│   ├── python.man
│   ├── python.pc.in
│   ├── requirements-test.txt
│   ├── rhel7/
│   │   ├── README.md
│   │   ├── openssl.pc
│   │   ├── tcl.pc
│   │   └── tk.pc
│   ├── stable_abi.toml
│   ├── svnmap.txt
│   ├── valgrind-python.supp
│   └── vgrindefs
├── Modules/
│   ├── README
│   ├── Setup
│   ├── Setup.bootstrap.in
│   ├── Setup.stdlib.in
│   ├── _abc.c
│   ├── _asynciomodule.c
│   ├── _bisectmodule.c
│   ├── _blake2/
│   │   ├── blake2b2s.py
│   │   ├── blake2b_impl.c
│   │   ├── blake2module.c
│   │   ├── blake2module.h
│   │   ├── blake2s_impl.c
│   │   ├── clinic/
│   │   │   ├── blake2b_impl.c.h
│   │   │   └── blake2s_impl.c.h
│   │   └── impl/
│   │       ├── blake2-config.h
│   │       ├── blake2-impl.h
│   │       ├── blake2.h
│   │       ├── blake2b-load-sse2.h
│   │       ├── blake2b-load-sse41.h
│   │       ├── blake2b-ref.c
│   │       ├── blake2b-round.h
│   │       ├── blake2b.c
│   │       ├── blake2s-load-sse2.h
│   │       ├── blake2s-load-sse41.h
│   │       ├── blake2s-load-xop.h
│   │       ├── blake2s-ref.c
│   │       ├── blake2s-round.h
│   │       └── blake2s.c
│   ├── _bz2module.c
│   ├── _codecsmodule.c
│   ├── _collectionsmodule.c
│   ├── _contextvarsmodule.c
│   ├── _cryptmodule.c
│   ├── _csv.c
│   ├── _ctypes/
│   │   ├── _ctypes.c
│   │   ├── _ctypes_test.c
│   │   ├── _ctypes_test.h
│   │   ├── callbacks.c
│   │   ├── callproc.c
│   │   ├── cfield.c
│   │   ├── ctypes.h
│   │   ├── malloc_closure.c
│   │   └── stgdict.c
│   ├── _curses_panel.c
│   ├── _cursesmodule.c
│   ├── _datetimemodule.c
│   ├── _dbmmodule.c
│   ├── _decimal/
│   │   ├── README.txt
│   │   ├── _decimal.c
│   │   ├── docstrings.h
│   │   ├── libmpdec/
│   │   │   ├── README.txt
│   │   │   ├── basearith.c
│   │   │   ├── basearith.h
│   │   │   ├── bench.c
│   │   │   ├── bench_full.c
│   │   │   ├── bits.h
│   │   │   ├── constants.c
│   │   │   ├── constants.h
│   │   │   ├── context.c
│   │   │   ├── convolute.c
│   │   │   ├── convolute.h
│   │   │   ├── crt.c
│   │   │   ├── crt.h
│   │   │   ├── difradix2.c
│   │   │   ├── difradix2.h
│   │   │   ├── examples/
│   │   │   │   ├── README.txt
│   │   │   │   ├── compare.c
│   │   │   │   ├── div.c
│   │   │   │   ├── divmod.c
│   │   │   │   ├── multiply.c
│   │   │   │   ├── pow.c
│   │   │   │   ├── powmod.c
│   │   │   │   ├── shift.c
│   │   │   │   └── sqrt.c
│   │   │   ├── fnt.c
│   │   │   ├── fnt.h
│   │   │   ├── fourstep.c
│   │   │   ├── fourstep.h
│   │   │   ├── io.c
│   │   │   ├── io.h
│   │   │   ├── literature/
│   │   │   │   ├── REFERENCES.txt
│   │   │   │   ├── bignum.txt
│   │   │   │   ├── fnt.py
│   │   │   │   ├── matrix-transform.txt
│   │   │   │   ├── mulmod-64.txt
│   │   │   │   ├── mulmod-ppro.txt
│   │   │   │   ├── six-step.txt
│   │   │   │   └── umodarith.lisp
│   │   │   ├── mpalloc.c
│   │   │   ├── mpalloc.h
│   │   │   ├── mpdecimal.c
│   │   │   ├── mpdecimal.h
│   │   │   ├── mpsignal.c
│   │   │   ├── numbertheory.c
│   │   │   ├── numbertheory.h
│   │   │   ├── sixstep.c
│   │   │   ├── sixstep.h
│   │   │   ├── transpose.c
│   │   │   ├── transpose.h
│   │   │   ├── typearith.h
│   │   │   ├── umodarith.h
│   │   │   └── vcdiv64.asm
│   │   └── tests/
│   │       ├── README.txt
│   │       ├── bench.py
│   │       ├── bignum.py
│   │       ├── deccheck.py
│   │       ├── formathelper.py
│   │       ├── randdec.py
│   │       ├── randfloat.py
│   │       ├── runall-memorydebugger.sh
│   │       └── runall.bat
│   ├── _elementtree.c
│   ├── _functoolsmodule.c
│   ├── _gdbmmodule.c
│   ├── _hashopenssl.c
│   ├── _heapqmodule.c
│   ├── _io/
│   │   ├── _iomodule.c
│   │   ├── _iomodule.h
│   │   ├── bufferedio.c
│   │   ├── bytesio.c
│   │   ├── clinic/
│   │   │   ├── _iomodule.c.h
│   │   │   ├── bufferedio.c.h
│   │   │   ├── bytesio.c.h
│   │   │   ├── fileio.c.h
│   │   │   ├── iobase.c.h
│   │   │   ├── stringio.c.h
│   │   │   ├── textio.c.h
│   │   │   └── winconsoleio.c.h
│   │   ├── fileio.c
│   │   ├── iobase.c
│   │   ├── stringio.c
│   │   ├── textio.c
│   │   └── winconsoleio.c
│   ├── _json.c
│   ├── _localemodule.c
│   ├── _lsprof.c
│   ├── _lzmamodule.c
│   ├── _math.h
│   ├── _multiprocessing/
│   │   ├── clinic/
│   │   │   ├── multiprocessing.c.h
│   │   │   ├── posixshmem.c.h
│   │   │   └── semaphore.c.h
│   │   ├── multiprocessing.c
│   │   ├── multiprocessing.h
│   │   ├── posixshmem.c
│   │   └── semaphore.c
│   ├── _opcode.c
│   ├── _operator.c
│   ├── _pickle.c
│   ├── _posixsubprocess.c
│   ├── _queuemodule.c
│   ├── _randommodule.c
│   ├── _scproxy.c
│   ├── _sha3/
│   │   ├── LICENSE
│   │   ├── README.txt
│   │   ├── clinic/
│   │   │   └── sha3module.c.h
│   │   ├── sha3.c
│   │   ├── sha3.h
│   │   └── sha3module.c
│   ├── _sqlite/
│   │   ├── blob.c
│   │   ├── blob.h
│   │   ├── clinic/
│   │   │   ├── blob.c.h
│   │   │   ├── connection.c.h
│   │   │   ├── cursor.c.h
│   │   │   ├── module.c.h
│   │   │   └── row.c.h
│   │   ├── connection.c
│   │   ├── connection.h
│   │   ├── cursor.c
│   │   ├── cursor.h
│   │   ├── microprotocols.c
│   │   ├── microprotocols.h
│   │   ├── module.c
│   │   ├── module.h
│   │   ├── prepare_protocol.c
│   │   ├── prepare_protocol.h
│   │   ├── row.c
│   │   ├── row.h
│   │   ├── statement.c
│   │   ├── statement.h
│   │   ├── util.c
│   │   └── util.h
│   ├── _sre/
│   │   ├── clinic/
│   │   │   └── sre.c.h
│   │   ├── sre.c
│   │   ├── sre.h
│   │   ├── sre_constants.h
│   │   ├── sre_lib.h
│   │   └── sre_targets.h
│   ├── _ssl/
│   │   ├── cert.c
│   │   ├── clinic/
│   │   │   └── cert.c.h
│   │   ├── debughelpers.c
│   │   └── misc.c
│   ├── _ssl.c
│   ├── _ssl.h
│   ├── _ssl_data.h
│   ├── _ssl_data_111.h
│   ├── _ssl_data_300.h
│   ├── _stat.c
│   ├── _statisticsmodule.c
│   ├── _struct.c
│   ├── _testbuffer.c
│   ├── _testcapi/
│   │   ├── README.txt
│   │   ├── clinic/
│   │   │   └── vectorcall.c.h
│   │   ├── datetime.c
│   │   ├── docstring.c
│   │   ├── float.c
│   │   ├── getargs.c
│   │   ├── heaptype.c
│   │   ├── long.c
│   │   ├── mem.c
│   │   ├── parts.h
│   │   ├── pytime.c
│   │   ├── structmember.c
│   │   ├── testcapi_long.h
│   │   ├── unicode.c
│   │   ├── vectorcall.c
│   │   ├── vectorcall_limited.c
│   │   └── watchers.c
│   ├── _testcapi_feature_macros.inc
│   ├── _testcapimodule.c
│   ├── _testclinic.c
│   ├── _testimportmultiple.c
│   ├── _testinternalcapi.c
│   ├── _testmultiphase.c
│   ├── _testsinglephase.c
│   ├── _threadmodule.c
│   ├── _tkinter.c
│   ├── _tracemalloc.c
│   ├── _typingmodule.c
│   ├── _uuidmodule.c
│   ├── _weakref.c
│   ├── _winapi.c
│   ├── _xxsubinterpretersmodule.c
│   ├── _xxtestfuzz/
│   │   ├── README.rst
│   │   ├── _xxtestfuzz.c
│   │   ├── dictionaries/
│   │   │   ├── fuzz_json_loads.dict
│   │   │   └── fuzz_sre_compile.dict
│   │   ├── fuzz_csv_reader_corpus/
│   │   │   └── test.csv
│   │   ├── fuzz_json_loads_corpus/
│   │   │   ├── empty_array.json
│   │   │   ├── empty_object.json
│   │   │   ├── pass1.json
│   │   │   ├── pass2.json
│   │   │   ├── pass3.json
│   │   │   └── simple_array.json
│   │   ├── fuzz_sre_compile_corpus/
│   │   │   ├── anchor_links
│   │   │   ├── characters
│   │   │   ├── isbn
│   │   │   └── phone_number
│   │   ├── fuzz_struct_unpack_corpus/
│   │   │   ├── hello_string
│   │   │   ├── long_zero
│   │   │   └── varied_format_string
│   │   ├── fuzz_tests.txt
│   │   └── fuzzer.c
│   ├── _zoneinfo.c
│   ├── addrinfo.h
│   ├── arraymodule.c
│   ├── atexitmodule.c
│   ├── audioop.c
│   ├── binascii.c
│   ├── cjkcodecs/
│   │   ├── README
│   │   ├── _codecs_cn.c
│   │   ├── _codecs_hk.c
│   │   ├── _codecs_iso2022.c
│   │   ├── _codecs_jp.c
│   │   ├── _codecs_kr.c
│   │   ├── _codecs_tw.c
│   │   ├── alg_jisx0201.h
│   │   ├── cjkcodecs.h
│   │   ├── clinic/
│   │   │   └── multibytecodec.c.h
│   │   ├── emu_jisx0213_2000.h
│   │   ├── mappings_cn.h
│   │   ├── mappings_hk.h
│   │   ├── mappings_jisx0213_pair.h
│   │   ├── mappings_jp.h
│   │   ├── mappings_kr.h
│   │   ├── mappings_tw.h
│   │   ├── multibytecodec.c
│   │   └── multibytecodec.h
│   ├── clinic/
│   │   ├── _abc.c.h
│   │   ├── _asynciomodule.c.h
│   │   ├── _bisectmodule.c.h
│   │   ├── _bz2module.c.h
│   │   ├── _codecsmodule.c.h
│   │   ├── _collectionsmodule.c.h
│   │   ├── _contextvarsmodule.c.h
│   │   ├── _cryptmodule.c.h
│   │   ├── _csv.c.h
│   │   ├── _curses_panel.c.h
│   │   ├── _cursesmodule.c.h
│   │   ├── _datetimemodule.c.h
│   │   ├── _dbmmodule.c.h
│   │   ├── _elementtree.c.h
│   │   ├── _functoolsmodule.c.h
│   │   ├── _gdbmmodule.c.h
│   │   ├── _hashopenssl.c.h
│   │   ├── _heapqmodule.c.h
│   │   ├── _localemodule.c.h
│   │   ├── _lsprof.c.h
│   │   ├── _lzmamodule.c.h
│   │   ├── _opcode.c.h
│   │   ├── _operator.c.h
│   │   ├── _pickle.c.h
│   │   ├── _queuemodule.c.h
│   │   ├── _randommodule.c.h
│   │   ├── _ssl.c.h
│   │   ├── _statisticsmodule.c.h
│   │   ├── _struct.c.h
│   │   ├── _testclinic.c.h
│   │   ├── _testinternalcapi.c.h
│   │   ├── _testmultiphase.c.h
│   │   ├── _tkinter.c.h
│   │   ├── _tracemalloc.c.h
│   │   ├── _typingmodule.c.h
│   │   ├── _weakref.c.h
│   │   ├── _winapi.c.h
│   │   ├── _zoneinfo.c.h
│   │   ├── arraymodule.c.h
│   │   ├── audioop.c.h
│   │   ├── binascii.c.h
│   │   ├── cmathmodule.c.h
│   │   ├── fcntlmodule.c.h
│   │   ├── gcmodule.c.h
│   │   ├── grpmodule.c.h
│   │   ├── itertoolsmodule.c.h
│   │   ├── mathmodule.c.h
│   │   ├── md5module.c.h
│   │   ├── overlapped.c.h
│   │   ├── posixmodule.c.h
│   │   ├── pwdmodule.c.h
│   │   ├── pyexpat.c.h
│   │   ├── readline.c.h
│   │   ├── resource.c.h
│   │   ├── selectmodule.c.h
│   │   ├── sha1module.c.h
│   │   ├── sha256module.c.h
│   │   ├── sha512module.c.h
│   │   ├── signalmodule.c.h
│   │   ├── socketmodule.c.h
│   │   ├── spwdmodule.c.h
│   │   ├── symtablemodule.c.h
│   │   ├── syslogmodule.c.h
│   │   ├── termios.c.h
│   │   ├── unicodedata.c.h
│   │   └── zlibmodule.c.h
│   ├── cmathmodule.c
│   ├── config.c.in
│   ├── errnomodule.c
│   ├── expat/
│   │   ├── COPYING
│   │   ├── ascii.h
│   │   ├── asciitab.h
│   │   ├── expat.h
│   │   ├── expat_config.h
│   │   ├── expat_external.h
│   │   ├── iasciitab.h
│   │   ├── internal.h
│   │   ├── latin1tab.h
│   │   ├── nametab.h
│   │   ├── pyexpatns.h
│   │   ├── siphash.h
│   │   ├── utf8tab.h
│   │   ├── winconfig.h
│   │   ├── xmlparse.c
│   │   ├── xmlrole.c
│   │   ├── xmlrole.h
│   │   ├── xmltok.c
│   │   ├── xmltok.h
│   │   ├── xmltok_impl.c
│   │   ├── xmltok_impl.h
│   │   └── xmltok_ns.c
│   ├── faulthandler.c
│   ├── fcntlmodule.c
│   ├── gc_weakref.txt
│   ├── gcmodule.c
│   ├── getaddrinfo.c
│   ├── getbuildinfo.c
│   ├── getnameinfo.c
│   ├── getpath.c
│   ├── getpath.py
│   ├── getpath_noop.c
│   ├── grpmodule.c
│   ├── hashlib.h
│   ├── itertoolsmodule.c
│   ├── ld_so_aix.in
│   ├── main.c
│   ├── makesetup
│   ├── makexp_aix
│   ├── mathmodule.c
│   ├── md5module.c
│   ├── mmapmodule.c
│   ├── nismodule.c
│   ├── ossaudiodev.c
│   ├── overlapped.c
│   ├── posixmodule.c
│   ├── posixmodule.h
│   ├── pwdmodule.c
│   ├── pyexpat.c
│   ├── readline.c
│   ├── resource.c
│   ├── rotatingtree.c
│   ├── rotatingtree.h
│   ├── selectmodule.c
│   ├── sha1module.c
│   ├── sha256module.c
│   ├── sha512module.c
│   ├── signalmodule.c
│   ├── socketmodule.c
│   ├── socketmodule.h
│   ├── spwdmodule.c
│   ├── symtablemodule.c
│   ├── syslogmodule.c
│   ├── termios.c
│   ├── timemodule.c
│   ├── tkappinit.c
│   ├── tkinter.h
│   ├── unicodedata.c
│   ├── unicodedata_db.h
│   ├── unicodename_db.h
│   ├── winreparse.h
│   ├── xxlimited.c
│   ├── xxlimited_35.c
│   ├── xxmodule.c
│   ├── xxsubtype.c
│   └── zlibmodule.c
├── Objects/
│   ├── README
│   ├── abstract.c
│   ├── boolobject.c
│   ├── bytearrayobject.c
│   ├── bytes_methods.c
│   ├── bytesobject.c
│   ├── call.c
│   ├── capsule.c
│   ├── cellobject.c
│   ├── classobject.c
│   ├── clinic/
│   │   ├── bytearrayobject.c.h
│   │   ├── bytesobject.c.h
│   │   ├── classobject.c.h
│   │   ├── codeobject.c.h
│   │   ├── complexobject.c.h
│   │   ├── descrobject.c.h
│   │   ├── dictobject.c.h
│   │   ├── enumobject.c.h
│   │   ├── floatobject.c.h
│   │   ├── funcobject.c.h
│   │   ├── listobject.c.h
│   │   ├── longobject.c.h
│   │   ├── memoryobject.c.h
│   │   ├── moduleobject.c.h
│   │   ├── structseq.c.h
│   │   ├── tupleobject.c.h
│   │   ├── typeobject.c.h
│   │   └── unicodeobject.c.h
│   ├── codeobject.c
│   ├── complexobject.c
│   ├── descrobject.c
│   ├── dictnotes.txt
│   ├── dictobject.c
│   ├── enumobject.c
│   ├── exception_handling_notes.txt
│   ├── exceptions.c
│   ├── fileobject.c
│   ├── floatobject.c
│   ├── frame_layout.md
│   ├── frameobject.c
│   ├── funcobject.c
│   ├── genericaliasobject.c
│   ├── genobject.c
│   ├── interpreteridobject.c
│   ├── iterobject.c
│   ├── listobject.c
│   ├── listsort.txt
│   ├── lnotab_notes.txt
│   ├── locations.md
│   ├── longobject.c
│   ├── memoryobject.c
│   ├── methodobject.c
│   ├── mimalloc/
│   │   ├── alloc-aligned.c
│   │   ├── alloc-posix.c
│   │   ├── alloc.c
│   │   ├── arena.c
│   │   ├── bitmap.c
│   │   ├── bitmap.h
│   │   ├── heap.c
│   │   ├── init.c
│   │   ├── options.c
│   │   ├── os.c
│   │   ├── page-queue.c
│   │   ├── page.c
│   │   ├── random.c
│   │   ├── region.c
│   │   ├── segment-cache.c
│   │   ├── segment.c
│   │   └── stats.c
│   ├── moduleobject.c
│   ├── namespaceobject.c
│   ├── object.c
│   ├── object_layout.md
│   ├── object_layout_312.gv
│   ├── object_layout_full_312.gv
│   ├── obmalloc.c
│   ├── picklebufobject.c
│   ├── rangeobject.c
│   ├── setobject.c
│   ├── sliceobject.c
│   ├── stringlib/
│   │   ├── README.txt
│   │   ├── asciilib.h
│   │   ├── clinic/
│   │   │   └── transmogrify.h.h
│   │   ├── codecs.h
│   │   ├── count.h
│   │   ├── ctype.h
│   │   ├── eq.h
│   │   ├── fastsearch.h
│   │   ├── find.h
│   │   ├── find_max_char.h
│   │   ├── join.h
│   │   ├── localeutil.h
│   │   ├── partition.h
│   │   ├── replace.h
│   │   ├── split.h
│   │   ├── stringdefs.h
│   │   ├── stringlib_find_two_way_notes.txt
│   │   ├── transmogrify.h
│   │   ├── ucs1lib.h
│   │   ├── ucs2lib.h
│   │   ├── ucs4lib.h
│   │   ├── undef.h
│   │   └── unicode_format.h
│   ├── structseq.c
│   ├── tupleobject.c
│   ├── typeobject.c
│   ├── typeslots.inc
│   ├── typeslots.py
│   ├── unicodectype.c
│   ├── unicodeobject.c
│   ├── unicodetype_db.h
│   ├── unionobject.c
│   └── weakrefobject.c
├── PC/
│   ├── WinMain.c
│   ├── _msi.c
│   ├── _testconsole.c
│   ├── _wmimodule.cpp
│   ├── classicAppCompat.can.xml
│   ├── classicAppCompat.cat
│   ├── classicAppCompat.sccd
│   ├── clinic/
│   │   ├── _msi.c.h
│   │   ├── _testconsole.c.h
│   │   ├── _wmimodule.cpp.h
│   │   ├── msvcrtmodule.c.h
│   │   ├── winreg.c.h
│   │   └── winsound.c.h
│   ├── config.c
│   ├── config_minimal.c
│   ├── crtlicense.txt
│   ├── dl_nt.c
│   ├── errmap.h
│   ├── frozen_dllmain.c
│   ├── icons/
│   │   ├── launcher.icns
│   │   ├── py.icns
│   │   ├── pyc.icns
│   │   ├── pyd.icns
│   │   ├── python.icns
│   │   ├── pythonw.icns
│   │   └── setup.icns
│   ├── invalid_parameter_handler.c
│   ├── launcher-usage.txt
│   ├── launcher.c
│   ├── launcher2.c
│   ├── layout/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── main.py
│   │   └── support/
│   │       ├── __init__.py
│   │       ├── appxmanifest.py
│   │       ├── catalog.py
│   │       ├── constants.py
│   │       ├── filesets.py
│   │       ├── logging.py
│   │       ├── nuspec.py
│   │       ├── options.py
│   │       ├── pip.py
│   │       ├── props.py
│   │       └── python.props
│   ├── msvcrtmodule.c
│   ├── pyconfig.h
│   ├── pylauncher.rc
│   ├── pyshellext.cpp
│   ├── pyshellext.def
│   ├── pyshellext.rc
│   ├── python.manifest
│   ├── python3dll.c
│   ├── python_exe.rc
│   ├── python_nt.rc
│   ├── python_uwp.cpp
│   ├── python_ver_rc.h
│   ├── pythonw_exe.rc
│   ├── readme.txt
│   ├── sqlite3.rc
│   ├── store_info.txt
│   ├── validate_ucrtbase.py
│   ├── winreg.c
│   └── winsound.c
├── PCbuild/
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── _asyncio.vcxproj
│   ├── _asyncio.vcxproj.filters
│   ├── _bz2.vcxproj
│   ├── _bz2.vcxproj.filters
│   ├── _ctypes.vcxproj
│   ├── _ctypes.vcxproj.filters
│   ├── _ctypes_test.vcxproj
│   ├── _ctypes_test.vcxproj.filters
│   ├── _decimal.vcxproj
│   ├── _decimal.vcxproj.filters
│   ├── _elementtree.vcxproj
│   ├── _elementtree.vcxproj.filters
│   ├── _freeze_module.vcxproj
│   ├── _freeze_module.vcxproj.filters
│   ├── _hashlib.vcxproj
│   ├── _hashlib.vcxproj.filters
│   ├── _lzma.vcxproj
│   ├── _lzma.vcxproj.filters
│   ├── _msi.vcxproj
│   ├── _msi.vcxproj.filters
│   ├── _multiprocessing.vcxproj
│   ├── _multiprocessing.vcxproj.filters
│   ├── _overlapped.vcxproj
│   ├── _overlapped.vcxproj.filters
│   ├── _queue.vcxproj
│   ├── _queue.vcxproj.filters
│   ├── _socket.vcxproj
│   ├── _socket.vcxproj.filters
│   ├── _sqlite3.vcxproj
│   ├── _sqlite3.vcxproj.filters
│   ├── _ssl.vcxproj
│   ├── _ssl.vcxproj.filters
│   ├── _testbuffer.vcxproj
│   ├── _testbuffer.vcxproj.filters
│   ├── _testcapi.vcxproj
│   ├── _testcapi.vcxproj.filters
│   ├── _testconsole.vcxproj
│   ├── _testconsole.vcxproj.filters
│   ├── _testembed.vcxproj
│   ├── _testembed.vcxproj.filters
│   ├── _testimportmultiple.vcxproj
│   ├── _testimportmultiple.vcxproj.filters
│   ├── _testinternalcapi.vcxproj
│   ├── _testinternalcapi.vcxproj.filters
│   ├── _testmultiphase.vcxproj
│   ├── _testmultiphase.vcxproj.filters
│   ├── _testsinglephase.vcxproj
│   ├── _testsinglephase.vcxproj.filters
│   ├── _tkinter.vcxproj
│   ├── _tkinter.vcxproj.filters
│   ├── _uuid.vcxproj
│   ├── _uuid.vcxproj.filters
│   ├── _wmi.vcxproj
│   ├── _wmi.vcxproj.filters
│   ├── _zoneinfo.vcxproj
│   ├── _zoneinfo.vcxproj.filters
│   ├── blurb.bat
│   ├── build.bat
│   ├── build_env.bat
│   ├── clean.bat
│   ├── env.bat
│   ├── env.ps1
│   ├── field3.py
│   ├── find_msbuild.bat
│   ├── find_python.bat
│   ├── fix_encoding.py
│   ├── get_external.py
│   ├── get_externals.bat
│   ├── idle.bat
│   ├── libffi.props
│   ├── liblzma.vcxproj
│   ├── liblzma.vcxproj.filters
│   ├── openssl.props
│   ├── openssl.vcxproj
│   ├── pcbuild.proj
│   ├── pcbuild.sln
│   ├── prepare_libffi.bat
│   ├── prepare_ssl.bat
│   ├── prepare_ssl.py
│   ├── prepare_tcltk.bat
│   ├── pyexpat.vcxproj
│   ├── pyexpat.vcxproj.filters
│   ├── pylauncher.vcxproj
│   ├── pylauncher.vcxproj.filters
│   ├── pyproject.props
│   ├── pyshellext.vcxproj
│   ├── pyshellext.vcxproj.filters
│   ├── python.props
│   ├── python.vcxproj
│   ├── python.vcxproj.filters
│   ├── python3dll.vcxproj
│   ├── python3dll.vcxproj.filters
│   ├── python_uwp.vcxproj
│   ├── python_uwp.vcxproj.filters
│   ├── pythoncore.vcxproj
│   ├── pythoncore.vcxproj.filters
│   ├── pythonw.vcxproj
│   ├── pythonw.vcxproj.filters
│   ├── pythonw_uwp.vcxproj
│   ├── pythonw_uwp.vcxproj.filters
│   ├── pywlauncher.vcxproj
│   ├── pywlauncher.vcxproj.filters
│   ├── readme.txt
│   ├── regen.targets
│   ├── rmpyc.py
│   ├── rt.bat
│   ├── select.vcxproj
│   ├── select.vcxproj.filters
│   ├── sqlite3.vcxproj
│   ├── sqlite3.vcxproj.filters
│   ├── tcl.vcxproj
│   ├── tcltk.props
│   ├── tix.vcxproj
│   ├── tk.vcxproj
│   ├── unicodedata.vcxproj
│   ├── unicodedata.vcxproj.filters
│   ├── urlretrieve.py
│   ├── venvlauncher.vcxproj
│   ├── venvlauncher.vcxproj.filters
│   ├── venvwlauncher.vcxproj
│   ├── venvwlauncher.vcxproj.filters
│   ├── winsound.vcxproj
│   ├── winsound.vcxproj.filters
│   ├── xxlimited.vcxproj
│   ├── xxlimited.vcxproj.filters
│   ├── xxlimited_35.vcxproj
│   └── xxlimited_35.vcxproj.filters
├── Parser/
│   ├── Python.asdl
│   ├── action_helpers.c
│   ├── asdl.py
│   ├── asdl_c.py
│   ├── myreadline.c
│   ├── parser.c
│   ├── peg_api.c
│   ├── pegen.c
│   ├── pegen.h
│   ├── pegen_errors.c
│   ├── string_parser.c
│   ├── string_parser.h
│   ├── token.c
│   ├── tokenizer.c
│   └── tokenizer.h
├── Programs/
│   ├── README
│   ├── _bootstrap_python.c
│   ├── _freeze_module.c
│   ├── _freeze_module.py
│   ├── _testembed.c
│   ├── freeze_test_frozenmain.py
│   ├── python.c
│   ├── test_frozenmain.h
│   └── test_frozenmain.py
├── Python/
│   ├── Python-ast.c
│   ├── Python-tokenize.c
│   ├── README
│   ├── _warnings.c
│   ├── adaptive.md
│   ├── asdl.c
│   ├── asm_trampoline.S
│   ├── ast.c
│   ├── ast_opt.c
│   ├── ast_unparse.c
│   ├── bltinmodule.c
│   ├── bootstrap_hash.c
│   ├── bytecodes.c
│   ├── ceval.c
│   ├── ceval_gil.c
│   ├── clinic/
│   │   ├── Python-tokenize.c.h
│   │   ├── _warnings.c.h
│   │   ├── bltinmodule.c.h
│   │   ├── context.c.h
│   │   ├── import.c.h
│   │   ├── marshal.c.h
│   │   ├── sysmodule.c.h
│   │   └── traceback.c.h
│   ├── codecs.c
│   ├── compile.c
│   ├── condvar.h
│   ├── context.c
│   ├── critical_section.c
│   ├── deepfreeze/
│   │   └── README.txt
│   ├── dtoa.c
│   ├── dup2.c
│   ├── dynamic_annotations.c
│   ├── dynload_hpux.c
│   ├── dynload_shlib.c
│   ├── dynload_stub.c
│   ├── dynload_win.c
│   ├── emscripten_signal.c
│   ├── errors.c
│   ├── fileutils.c
│   ├── formatter_unicode.c
│   ├── frame.c
│   ├── frozen.c
│   ├── frozen_modules/
│   │   └── README.txt
│   ├── frozenmain.c
│   ├── future.c
│   ├── generated_cases.c.h
│   ├── getargs.c
│   ├── getcompiler.c
│   ├── getcopyright.c
│   ├── getopt.c
│   ├── getplatform.c
│   ├── getversion.c
│   ├── hamt.c
│   ├── hashtable.c
│   ├── import.c
│   ├── importdl.c
│   ├── importdl.h
│   ├── importlib.h
│   ├── initconfig.c
│   ├── intrinsics.c
│   ├── lock.c
│   ├── makeopcodetargets.py
│   ├── marshal.c
│   ├── modsupport.c
│   ├── mrocache.c
│   ├── mysnprintf.c
│   ├── mystrtoul.c
│   ├── opcode_metadata.h
│   ├── opcode_targets.h
│   ├── parking_lot.c
│   ├── pathconfig.c
│   ├── perf_trampoline.c
│   ├── preconfig.c
│   ├── pyarena.c
│   ├── pyctype.c
│   ├── pyfpe.c
│   ├── pyhash.c
│   ├── pylifecycle.c
│   ├── pymath.c
│   ├── pyrefcnt.c
│   ├── pystate.c
│   ├── pystrcmp.c
│   ├── pystrhex.c
│   ├── pystrtod.c
│   ├── pythonrun.c
│   ├── pytime.c
│   ├── qsbr.c
│   ├── specialize.c
│   ├── stdlib_module_names.h
│   ├── structmember.c
│   ├── suggestions.c
│   ├── symtable.c
│   ├── sysmodule.c
│   ├── thread.c
│   ├── thread_nt.h
│   ├── thread_pthread.h
│   ├── thread_pthread_stubs.h
│   └── traceback.c
├── README.rst
├── Tools/
│   ├── README
│   ├── build/
│   │   ├── check_extension_modules.py
│   │   ├── deepfreeze.py
│   │   ├── freeze_modules.py
│   │   ├── generate_global_objects.py
│   │   ├── generate_levenshtein_examples.py
│   │   ├── generate_opcode_h.py
│   │   ├── generate_re_casefix.py
│   │   ├── generate_sre_constants.py
│   │   ├── generate_stdlib_module_names.py
│   │   ├── generate_token.py
│   │   ├── parse_html5_entities.py
│   │   ├── smelly.py
│   │   ├── stable_abi.py
│   │   ├── umarshal.py
│   │   ├── update_file.py
│   │   └── verify_ensurepip_wheels.py
│   ├── buildbot/
│   │   ├── build.bat
│   │   ├── buildmsi.bat
│   │   ├── clean.bat
│   │   ├── remoteDeploy.bat
│   │   ├── remotePythonInfo.bat
│   │   └── test.bat
│   ├── c-analyzer/
│   │   ├── README
│   │   ├── TODO
│   │   ├── c-analyzer.py
│   │   ├── c_analyzer/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── analyze.py
│   │   │   ├── datafiles.py
│   │   │   ├── info.py
│   │   │   └── match.py
│   │   ├── c_common/
│   │   │   ├── __init__.py
│   │   │   ├── clsutil.py
│   │   │   ├── fsutil.py
│   │   │   ├── info.py
│   │   │   ├── iterutil.py
│   │   │   ├── logging.py
│   │   │   ├── misc.py
│   │   │   ├── scriptutil.py
│   │   │   ├── show.py
│   │   │   ├── strutil.py
│   │   │   └── tables.py
│   │   ├── c_parser/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _state_machine.py
│   │   │   ├── datafiles.py
│   │   │   ├── info.py
│   │   │   ├── match.py
│   │   │   ├── parser/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _alt.py
│   │   │   │   ├── _common.py
│   │   │   │   ├── _compound_decl_body.py
│   │   │   │   ├── _delim.py
│   │   │   │   ├── _func_body.py
│   │   │   │   ├── _global.py
│   │   │   │   ├── _info.py
│   │   │   │   └── _regexes.py
│   │   │   ├── preprocessor/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── common.py
│   │   │   │   ├── errors.py
│   │   │   │   ├── gcc.py
│   │   │   │   └── pure.py
│   │   │   └── source.py
│   │   ├── check-c-globals.py
│   │   ├── cpython/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _analyzer.py
│   │   │   ├── _builtin_types.py
│   │   │   ├── _capi.py
│   │   │   ├── _files.py
│   │   │   ├── _parser.py
│   │   │   ├── globals-to-fix.tsv
│   │   │   ├── ignored.tsv
│   │   │   └── known.tsv
│   │   ├── must-resolve.sh
│   │   └── table-file.py
│   ├── cases_generator/
│   │   ├── README.md
│   │   ├── generate_cases.py
│   │   ├── lexer.py
│   │   ├── parser.py
│   │   ├── plexer.py
│   │   └── test_generator.py
│   ├── ccbench/
│   │   └── ccbench.py
│   ├── clinic/
│   │   ├── clinic.py
│   │   └── cpp.py
│   ├── freeze/
│   │   ├── README
│   │   ├── bkfile.py
│   │   ├── checkextensions.py
│   │   ├── checkextensions_win32.py
│   │   ├── extensions_win32.ini
│   │   ├── flag.py
│   │   ├── freeze.py
│   │   ├── hello.py
│   │   ├── makeconfig.py
│   │   ├── makefreeze.py
│   │   ├── makemakefile.py
│   │   ├── parsesetup.py
│   │   ├── regen_frozen.py
│   │   ├── test/
│   │   │   ├── Makefile
│   │   │   ├── freeze.py
│   │   │   └── ok.py
│   │   ├── win32.html
│   │   └── winmakemakefile.py
│   ├── gdb/
│   │   └── libpython.py
│   ├── i18n/
│   │   ├── makelocalealias.py
│   │   ├── msgfmt.py
│   │   └── pygettext.py
│   ├── importbench/
│   │   ├── README
│   │   └── importbench.py
│   ├── iobench/
│   │   └── iobench.py
│   ├── msi/
│   │   ├── README.txt
│   │   ├── appendpath/
│   │   │   ├── appendpath.wixproj
│   │   │   ├── appendpath.wxs
│   │   │   └── appendpath_en-US.wxl
│   │   ├── build.bat
│   │   ├── buildrelease.bat
│   │   ├── bundle/
│   │   │   ├── Default.ARM64.xsl
│   │   │   ├── Default.thm
│   │   │   ├── Default.wxl
│   │   │   ├── bootstrap/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── PythonBootstrapperApplication.cpp
│   │   │   │   ├── pch.cpp
│   │   │   │   ├── pch.h
│   │   │   │   ├── pythonba.cpp
│   │   │   │   ├── pythonba.def
│   │   │   │   ├── pythonba.sln
│   │   │   │   ├── pythonba.vcxproj
│   │   │   │   └── resource.h
│   │   │   ├── bundle.targets
│   │   │   ├── bundle.wxl
│   │   │   ├── bundle.wxs
│   │   │   ├── full.wixproj
│   │   │   ├── packagegroups/
│   │   │   │   ├── core.wxs
│   │   │   │   ├── crt.wxs
│   │   │   │   ├── dev.wxs
│   │   │   │   ├── doc.wxs
│   │   │   │   ├── exe.wxs
│   │   │   │   ├── launcher.wxs
│   │   │   │   ├── lib.wxs
│   │   │   │   ├── packageinstall.wxs
│   │   │   │   ├── pip.wxs
│   │   │   │   ├── postinstall.wxs
│   │   │   │   ├── tcltk.wxs
│   │   │   │   └── test.wxs
│   │   │   ├── releaselocal.wixproj
│   │   │   ├── releaseweb.wixproj
│   │   │   └── snapshot.wixproj
│   │   ├── common.wxs
│   │   ├── common_en-US.wxl_template
│   │   ├── csv_to_wxs.py
│   │   ├── dev/
│   │   │   ├── dev.wixproj
│   │   │   ├── dev.wxs
│   │   │   ├── dev_d.wixproj
│   │   │   ├── dev_d.wxs
│   │   │   ├── dev_en-US.wxl
│   │   │   └── dev_files.wxs
│   │   ├── doc/
│   │   │   ├── doc.wixproj
│   │   │   ├── doc.wxs
│   │   │   └── doc_en-US.wxl_template
│   │   ├── exe/
│   │   │   ├── exe.wixproj
│   │   │   ├── exe.wxs
│   │   │   ├── exe_d.wixproj
│   │   │   ├── exe_d.wxs
│   │   │   ├── exe_en-US.wxl_template
│   │   │   ├── exe_files.wxs
│   │   │   ├── exe_pdb.wixproj
│   │   │   ├── exe_pdb.wxs
│   │   │   └── exe_reg.wxs
│   │   ├── generate_md5.py
│   │   ├── get_externals.bat
│   │   ├── launcher/
│   │   │   ├── launcher.wixproj
│   │   │   ├── launcher.wxs
│   │   │   ├── launcher_en-US.wxl
│   │   │   ├── launcher_files.wxs
│   │   │   └── launcher_reg.wxs
│   │   ├── lib/
│   │   │   ├── lib.wixproj
│   │   │   ├── lib.wxs
│   │   │   ├── lib_d.wixproj
│   │   │   ├── lib_d.wxs
│   │   │   ├── lib_en-US.wxl
│   │   │   ├── lib_files.wxs
│   │   │   ├── lib_pdb.wixproj
│   │   │   └── lib_pdb.wxs
│   │   ├── make_appx.ps1
│   │   ├── make_cat.ps1
│   │   ├── make_zip.proj
│   │   ├── msi.props
│   │   ├── msi.targets
│   │   ├── path/
│   │   │   ├── path.wixproj
│   │   │   ├── path.wxs
│   │   │   └── path_en-US.wxl
│   │   ├── pip/
│   │   │   ├── pip.wixproj
│   │   │   ├── pip.wxs
│   │   │   └── pip_en-US.wxl
│   │   ├── purge.py
│   │   ├── sdktools.psm1
│   │   ├── sign_build.ps1
│   │   ├── tcltk/
│   │   │   ├── tcltk.wixproj
│   │   │   ├── tcltk.wxs
│   │   │   ├── tcltk_d.wixproj
│   │   │   ├── tcltk_d.wxs
│   │   │   ├── tcltk_en-US.wxl_template
│   │   │   ├── tcltk_files.wxs
│   │   │   ├── tcltk_pdb.wixproj
│   │   │   ├── tcltk_pdb.wxs
│   │   │   └── tcltk_reg.wxs
│   │   ├── test/
│   │   │   ├── test.wixproj
│   │   │   ├── test.wxs
│   │   │   ├── test_d.wixproj
│   │   │   ├── test_d.wxs
│   │   │   ├── test_en-US.wxl
│   │   │   ├── test_files.wxs
│   │   │   ├── test_pdb.wixproj
│   │   │   └── test_pdb.wxs
│   │   ├── testrelease.bat
│   │   ├── ucrt/
│   │   │   ├── ucrt.wixproj
│   │   │   ├── ucrt.wxs
│   │   │   └── ucrt_en-US.wxl
│   │   ├── uploadrelease.bat
│   │   ├── uploadrelease.proj
│   │   ├── uploadrelease.ps1
│   │   └── wix.props
│   ├── nuget/
│   │   ├── build.bat
│   │   ├── make_pkg.proj
│   │   ├── python.nuspec
│   │   ├── pythonarm32.nuspec
│   │   ├── pythondaily.nuspec
│   │   ├── pythondaily.symbols.nuspec
│   │   └── pythonx86.nuspec
│   ├── patchcheck/
│   │   ├── patchcheck.py
│   │   ├── reindent.py
│   │   └── untabify.py
│   ├── peg_generator/
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── data/
│   │   │   ├── cprog.py
│   │   │   └── top-pypi-packages-365-days.json
│   │   ├── mypy.ini
│   │   ├── peg_extension/
│   │   │   ├── __init__.py
│   │   │   └── peg_extension.c
│   │   ├── pegen/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── ast_dump.py
│   │   │   ├── build.py
│   │   │   ├── c_generator.py
│   │   │   ├── first_sets.py
│   │   │   ├── grammar.py
│   │   │   ├── grammar_parser.py
│   │   │   ├── grammar_visualizer.py
│   │   │   ├── keywordgen.py
│   │   │   ├── metagrammar.gram
│   │   │   ├── parser.py
│   │   │   ├── parser_generator.py
│   │   │   ├── python_generator.py
│   │   │   ├── sccutils.py
│   │   │   ├── testutil.py
│   │   │   ├── tokenizer.py
│   │   │   └── validator.py
│   │   ├── pyproject.toml
│   │   ├── requirements.pip
│   │   └── scripts/
│   │       ├── __init__.py
│   │       ├── ast_timings.py
│   │       ├── benchmark.py
│   │       ├── download_pypi_packages.py
│   │       ├── find_max_nesting.py
│   │       ├── grammar_grapher.py
│   │       ├── joinstats.py
│   │       ├── test_parse_directory.py
│   │       └── test_pypi_packages.py
│   ├── scripts/
│   │   ├── 2to3
│   │   ├── README
│   │   ├── checkpip.py
│   │   ├── combinerefs.py
│   │   ├── divmod_threshold.py
│   │   ├── idle3
│   │   ├── pydoc3
│   │   ├── run_tests.py
│   │   ├── summarize_stats.py
│   │   └── var_access_benchmark.py
│   ├── ssl/
│   │   ├── make_ssl_data.py
│   │   └── multissltests.py
│   ├── stringbench/
│   │   ├── README
│   │   └── stringbench.py
│   ├── tz/
│   │   └── zdump.py
│   ├── unicode/
│   │   ├── Makefile
│   │   ├── comparecodecs.py
│   │   ├── gencjkcodecs.py
│   │   ├── gencodec.py
│   │   ├── genmap_japanese.py
│   │   ├── genmap_korean.py
│   │   ├── genmap_schinese.py
│   │   ├── genmap_support.py
│   │   ├── genmap_tchinese.py
│   │   ├── genwincodec.py
│   │   ├── genwincodecs.bat
│   │   ├── listcodecs.py
│   │   ├── makeunicodedata.py
│   │   ├── mkstringprep.py
│   │   └── python-mappings/
│   │       ├── CP1140.TXT
│   │       ├── CP273.TXT
│   │       ├── GB2312.TXT
│   │       ├── KOI8-U.TXT
│   │       ├── TIS-620.TXT
│   │       ├── diff/
│   │       │   ├── jisx0213-2000-std.txt.diff
│   │       │   └── jisx0213-2004-std.txt.diff
│   │       ├── gb-18030-2000.xml
│   │       └── jisx0213-2004-std.txt
│   ├── unittestgui/
│   │   ├── README.txt
│   │   └── unittestgui.py
│   └── wasm/
│       ├── .editorconfig
│       ├── README.md
│       ├── Setup.local.example
│       ├── config.site-wasm32-emscripten
│       ├── config.site-wasm32-wasi
│       ├── python.html
│       ├── python.worker.js
│       ├── wasi-env
│       ├── wasm_assets.py
│       ├── wasm_build.py
│       └── wasm_webserver.py
├── aclocal.m4
├── config.guess
├── config.sub
├── configure
├── configure.ac
├── install-sh
├── netlify.toml
└── pyconfig.h.in

================================================
FILE CONTENTS
================================================

================================================
FILE: .azure-pipelines/ci.yml
================================================
variables:
  coverage: false

trigger: ['main', '3.11', '3.10', '3.9', '3.8', '3.7']

jobs:
- job: Prebuild
  displayName: Pre-build checks

  pool:
    vmImage: ubuntu-20.04

  steps:
  - template: ./prebuild-checks.yml


- job: Docs_PR
  displayName: Docs PR
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['docs.run'], 'true'))

  pool:
    vmImage: ubuntu-20.04

  steps:
  - template: ./docs-steps.yml
    parameters:
      upload: true


- job: macOS_CI_Tests
  displayName: macOS CI Tests
  dependsOn: Prebuild
  #condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
  # bpo-39837: macOS tests on Azure Pipelines are disabled
  condition: false

  variables:
    testRunTitle: '$(build.sourceBranchName)-macos'
    testRunPlatform: macos

  pool:
    vmImage: macos-10.15

  steps:
  - template: ./macos-steps.yml


- job: Ubuntu_CI_Tests
  displayName: Ubuntu CI Tests
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))

  pool:
    vmImage: ubuntu-20.04

  variables:
    testRunTitle: '$(build.sourceBranchName)-linux'
    testRunPlatform: linux
    openssl_version: 1.1.1q

  steps:
  - template: ./posix-steps.yml
    parameters:
      dependencies: apt


- job: Ubuntu_Coverage_CI_Tests
  displayName: Ubuntu CI Tests (coverage)
  dependsOn: Prebuild
  condition: |
    and(
        and(
            succeeded(),
            eq(variables['coverage'], 'true')
        ),
        eq(dependencies.Prebuild.outputs['tests.run'], 'true')
    )

  pool:
    vmImage: ubuntu-20.04

  variables:
    testRunTitle: '$(Build.SourceBranchName)-linux-coverage'
    testRunPlatform: linux-coverage
    openssl_version: 1.1.1q

  steps:
  - template: ./posix-steps.yml
    parameters:
      dependencies: apt
      coverage: true


- job: Windows_CI_Tests
  displayName: Windows CI Tests
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))

  pool:
    vmImage: windows-2022

  strategy:
    matrix:
      win32:
        arch: win32
        buildOpt: '-p Win32'
        testRunTitle: '$(Build.SourceBranchName)-win32'
        testRunPlatform: win32
      win64:
        arch: amd64
        buildOpt: '-p x64'
        testRunTitle: '$(Build.SourceBranchName)-win64'
        testRunPlatform: win64
    maxParallel: 4

  steps:
  - template: ./windows-steps.yml

  - template: ./windows-layout-steps.yml
    parameters:
      kind: nuget
  - template: ./windows-layout-steps.yml
    parameters:
      kind: embed
  - template: ./windows-layout-steps.yml
    parameters:
      kind: appx
      fulltest: true


================================================
FILE: .azure-pipelines/docs-steps.yml
================================================
parameters:
  latex: false
  upload: false

steps:
- checkout: self
  clean: true
  fetchDepth: 5

- task: UsePythonVersion@0
  displayName: 'Use Python 3.6 or later'
  inputs:
    versionSpec: '>=3.6'

- script: python -m pip install -r requirements.txt
  workingDirectory: '$(build.sourcesDirectory)/Doc'
  displayName: 'Install build dependencies'

- ${{ if ne(parameters.latex, 'true') }}:
  - script: make check html PYTHON=python
    workingDirectory: '$(build.sourcesDirectory)/Doc'
    displayName: 'Build documentation'

- ${{ if eq(parameters.latex, 'true') }}:
  - script: sudo apt-get update && sudo apt-get install -qy --force-yes texlive-full
    displayName: 'Install LaTeX'

  - script: make dist PYTHON=python SPHINXBUILD='python -m sphinx' BLURB='python -m blurb'
    workingDirectory: '$(build.sourcesDirectory)/Doc'
    displayName: 'Build documentation'

- ${{ if eq(parameters.upload, 'true') }}:
  - task: PublishBuildArtifacts@1
    displayName: 'Publish docs'

    inputs:
      PathToPublish: '$(build.sourcesDirectory)/Doc/build'
      ArtifactName: docs
      publishLocation: Container

  - ${{ if eq(parameters.latex, 'true') }}:
    - task: PublishBuildArtifacts@1
      displayName: 'Publish dist'
      inputs:
        PathToPublish: '$(build.sourcesDirectory)/Doc/dist'
        ArtifactName: docs_dist
        publishLocation: Container


================================================
FILE: .azure-pipelines/macos-steps.yml
================================================
steps:
- checkout: self
  clean: true
  fetchDepth: 5

- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-azdev
  displayName: 'Configure CPython (debug)'

- script: make -j4
  displayName: 'Build CPython'

- script: make pythoninfo
  displayName: 'Display build info'

- script: make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
  displayName: 'Tests'
  continueOnError: true
  timeoutInMinutes: 30

- task: PublishTestResults@2
  displayName: 'Publish Test Results'
  inputs:
    testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
    mergeTestResults: true
    testRunTitle: $(testRunTitle)
    platform: $(testRunPlatform)
  condition: succeededOrFailed()


================================================
FILE: .azure-pipelines/posix-deps-apt.sh
================================================
#!/bin/sh
apt-get update

apt-get -yq install \
    build-essential \
    zlib1g-dev \
    libbz2-dev \
    liblzma-dev \
    libncurses5-dev \
    libreadline6-dev \
    libsqlite3-dev \
    libssl-dev \
    libgdbm-dev \
    tk-dev \
    lzma \
    lzma-dev \
    liblzma-dev \
    libffi-dev \
    uuid-dev \
    xvfb

if [ ! -z "$1" ]
then
  echo ##vso[task.prependpath]$PWD/multissl/openssl/$1
  echo ##vso[task.setvariable variable=OPENSSL_DIR]$PWD/multissl/openssl/$1
  python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $1 --system Linux
fi


================================================
FILE: .azure-pipelines/posix-steps.yml
================================================
parameters:
  coverage: false
  sudo_dependencies: sudo
  dependencies: apt
  patchcheck: true
  xvfb: true

steps:
- checkout: self
  clean: true
  fetchDepth: 5

# Work around a known issue affecting Ubuntu VMs on Pipelines
- script: sudo setfacl -Rb /home/vsts
  displayName: 'Workaround ACL issue'

- script: ${{ parameters.sudo_dependencies }} ./.azure-pipelines/posix-deps-${{ parameters.dependencies }}.sh $(openssl_version)
  displayName: 'Install dependencies'

- script: ./configure --with-pydebug
  displayName: 'Configure CPython (debug)'

- script: make -j4
  displayName: 'Build CPython'

- ${{ if eq(parameters.coverage, 'true') }}:
  - script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage
    displayName: 'Set up virtual environment'

  - script: ./venv/bin/python -m test.pythoninfo
    displayName: 'Display build info'

  - script: |
      $COMMAND -m coverage run --pylib -m test \
                --fail-env-changed \
                -uall,-cpu \
                --junit-xml=$(build.binariesDirectory)/test-results.xml \
                -x test_multiprocessing_fork \
                -x test_multiprocessing_forkserver \
                -x test_multiprocessing_spawn \
                -x test_concurrent_futures
    displayName: 'Tests with coverage'
    env:
      ${{ if eq(parameters.xvfb, 'true') }}:
        COMMAND: xvfb-run ./venv/bin/python
      ${{ if ne(parameters.xvfb, 'true') }}:
        COMMAND: ./venv/bin/python

  - script: ./venv/bin/python -m coverage xml
    displayName: 'Generate coverage.xml'

  - script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash) -y .github/codecov.yml
    displayName: 'Publish code coverage results'


- ${{ if ne(parameters.coverage, 'true') }}:
  - script: make pythoninfo
    displayName: 'Display build info'

  - script: $COMMAND buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml"
    displayName: 'Tests'
    env:
      ${{ if eq(parameters.xvfb, 'true') }}:
        COMMAND: xvfb-run make
      ${{ if ne(parameters.xvfb, 'true') }}:
        COMMAND: make

- ${{ if eq(parameters.patchcheck, 'true') }}:
  - script: |
      git fetch origin
      ./python Tools/patchcheck/patchcheck.py --ci true
    displayName: 'Run patchcheck.py'
    condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))


- task: PublishTestResults@2
  displayName: 'Publish Test Results'
  inputs:
    testResultsFiles: '$(build.binariesDirectory)/test-results.xml'
    mergeTestResults: true
    testRunTitle: $(testRunTitle)
    platform: $(testRunPlatform)
  condition: succeededOrFailed()


================================================
FILE: .azure-pipelines/pr.yml
================================================
variables:
  coverage: false

pr: ['main', '3.11', '3.10', '3.9', '3.8', '3.7']

jobs:
- job: Prebuild
  displayName: Pre-build checks

  pool:
    vmImage: ubuntu-20.04

  steps:
  - template: ./prebuild-checks.yml


- job: Docs_PR
  displayName: Docs PR
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['docs.run'], 'true'))

  pool:
    vmImage: ubuntu-20.04

  steps:
  - template: ./docs-steps.yml


- job: macOS_PR_Tests
  displayName: macOS PR Tests
  dependsOn: Prebuild
  #condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))
  # bpo-39837: macOS tests on Azure Pipelines are disabled
  condition: false

  variables:
    testRunTitle: '$(system.pullRequest.TargetBranch)-macos'
    testRunPlatform: macos

  pool:
    vmImage: macos-10.15

  steps:
  - template: ./macos-steps.yml
    parameters:
      targetBranch: $(System.PullRequest.TargetBranch)


- job: Ubuntu_PR_Tests
  displayName: Ubuntu PR Tests
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))

  pool:
    vmImage: ubuntu-20.04

  variables:
    testRunTitle: '$(system.pullRequest.TargetBranch)-linux'
    testRunPlatform: linux
    openssl_version: 1.1.1q

  steps:
  - template: ./posix-steps.yml
    parameters:
      dependencies: apt


- job: Ubuntu_Coverage_PR_Tests
  displayName: Ubuntu PR Tests (coverage)
  dependsOn: Prebuild
  condition: |
    and(
        and(
            succeeded(),
            eq(variables['coverage'], 'true')
        ),
        eq(dependencies.Prebuild.outputs['tests.run'], 'true')
    )

  pool:
    vmImage: ubuntu-20.04

  variables:
    testRunTitle: '$(Build.SourceBranchName)-linux-coverage'
    testRunPlatform: linux-coverage
    openssl_version: 1.1.1q

  steps:
  - template: ./posix-steps.yml
    parameters:
      dependencies: apt
      coverage: true


- job: Windows_PR_Tests
  displayName: Windows PR Tests
  dependsOn: Prebuild
  condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true'))

  pool:
    vmImage: windows-2022

  strategy:
    matrix:
      win32:
        arch: win32
        buildOpt: '-p Win32'
        testRunTitle: '$(System.PullRequest.TargetBranch)-win32'
        testRunPlatform: win32
      win64:
        arch: amd64
        buildOpt: '-p x64'
        testRunTitle: '$(System.PullRequest.TargetBranch)-win64'
        testRunPlatform: win64
      winarm64:
        arch: arm64
        buildOpt: '-p arm64'
    maxParallel: 4

  steps:
  - template: ./windows-steps.yml
    parameters:
      targetBranch: $(System.PullRequest.TargetBranch)


================================================
FILE: .azure-pipelines/prebuild-checks.yml
================================================
steps:
- checkout: self
  fetchDepth: 5

- script: echo "##vso[task.setvariable variable=diffTarget]HEAD~1"
  displayName: Set default diff target

- script: |
    git fetch -q origin $(System.PullRequest.TargetBranch)
    echo "##vso[task.setvariable variable=diffTarget]HEAD \$(git merge-base HEAD FETCH_HEAD)"
  displayName: Fetch comparison tree
  condition: and(succeeded(), variables['System.PullRequest.TargetBranch'])

- script: |
   if ! git diff --name-only $(diffTarget) | grep -qE '(\.rst$|^Doc|^Misc)'
   then
     echo "No docs were updated: docs.run=false"
     echo "##vso[task.setvariable variable=run;isOutput=true]false"
   else
     echo "Docs were updated: docs.run=true"
     echo "##vso[task.setvariable variable=run;isOutput=true]true"
   fi
  displayName: Detect documentation changes
  name: docs

- script: |
   if ! git diff --name-only $(diffTarget) | grep -qvE '(\.rst$|^Doc|^Misc)'
   then
     echo "Only docs were updated: tests.run=false"
     echo "##vso[task.setvariable variable=run;isOutput=true]false"
   else
     echo "Code was updated: tests.run=true"
     echo "##vso[task.setvariable variable=run;isOutput=true]true"
   fi
  displayName: Detect source changes
  name: tests


================================================
FILE: .azure-pipelines/windows-layout-steps.yml
================================================
parameters:
  kind: nuget
  extraOpts: --precompile
  fulltest: false

steps:
- script: .\python.bat PC\layout -vv -s "$(Build.SourcesDirectory)" -b "$(Py_OutDir)\$(arch)" -t "$(Build.BinariesDirectory)\layout-tmp-${{ parameters.kind }}-$(arch)" --copy "$(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch)" ${{ parameters.extraOpts }} --preset-${{ parameters.kind }} --include-tests
  displayName: Create ${{ parameters.kind }} layout

- script: .\python.exe -m test.pythoninfo
  workingDirectory: $(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch)
  displayName: Show layout info (${{ parameters.kind }})

- ${{ if eq(parameters.fulltest, 'true') }}:
  - script: .\python.exe -m test -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml" --tempdir "$(Build.BinariesDirectory)\tmp-${{ parameters.kind }}-$(arch)"
    workingDirectory: $(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch)
    displayName: ${{ parameters.kind }} Tests
    env:
      PREFIX: $(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch)

  - task: PublishTestResults@2
    displayName: Publish ${{ parameters.kind }} Test Results
    inputs:
      testResultsFiles: $(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml
      mergeTestResults: true
      testRunTitle: ${{ parameters.kind }}-$(testRunTitle)
      platform: $(testRunPlatform)
    condition: succeededOrFailed()


================================================
FILE: .azure-pipelines/windows-steps.yml
================================================
steps:
- checkout: self
  clean: false
  fetchDepth: 5

- powershell: |
    # Relocate build outputs outside of source directory to make cleaning faster
    Write-Host '##vso[task.setvariable variable=Py_IntDir]$(Build.BinariesDirectory)\obj'
    # UNDONE: Do not build to a different directory because of broken tests
    Write-Host '##vso[task.setvariable variable=Py_OutDir]$(Build.SourcesDirectory)\PCbuild'
    #Write-Host '##vso[task.setvariable variable=Py_OutDir]$(Build.BinariesDirectory)\bin'
    Write-Host '##vso[task.setvariable variable=EXTERNALS_DIR]$(Build.BinariesDirectory)\externals'
  displayName: Update build locations

- script: PCbuild\build.bat -e $(buildOpt)
  displayName: 'Build CPython'
  env:
    IncludeUwp: true

- script: python.bat -m test.pythoninfo
  displayName: 'Display build info'
  condition: and(succeeded(), variables['testRunPlatform'])

- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results.xml" --tempdir="$(Build.BinariesDirectory)\test"
  displayName: 'Tests'
  condition: and(succeeded(), variables['testRunPlatform'])
  env:
    PREFIX: $(Py_OutDir)\$(arch)

- task: PublishTestResults@2
  displayName: 'Publish Test Results'
  inputs:
    testResultsFiles: '$(Build.BinariesDirectory)\test-results.xml'
    mergeTestResults: true
    testRunTitle: $(testRunTitle)
    platform: $(testRunPlatform)
  condition: and(succeededOrFailed(), variables['testRunPlatform'])


================================================
FILE: .editorconfig
================================================
root = true

[*.{py,c,cpp,h,rst,md,yml}]
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space

[*.{py,c,cpp,h}]
indent_size = 4

[*.yml]
indent_size = 2


================================================
FILE: .gitattributes
================================================
# Binary data types
*.aif binary
*.aifc binary
*.aiff binary
*.au binary
*.bmp binary
*.exe binary
*.icns binary
*.gif binary
*.ico binary
*.jpg binary
*.pck binary
*.png binary
*.psd binary
*.tar binary
*.wav binary
*.whl binary
*.zip binary

# Specific binary files
Lib/test/sndhdrdata/sndhdr.* binary
PC/classicAppCompat.* binary

# Text files that should not be subject to eol conversion
[attr]noeol -text

Lib/test/cjkencodings/*                    noeol
Lib/test/coding20731.py                    noeol
Lib/test/decimaltestdata/*.decTest         noeol
Lib/test/test_email/data/*.txt             noeol
Lib/test/test_importlib/resources/data01/*           noeol
Lib/test/test_importlib/resources/namespacedata01/*  noeol
Lib/test/xmltestdata/*                     noeol

# CRLF files
[attr]dos text eol=crlf

*.bat               dos
*.proj              dos
*.props             dos
*.ps1               dos
*.sln               dos
*.vcxproj*          dos
PC/readme.txt       dos
PCbuild/readme.txt  dos

# Language aware diff headers
# https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more
# https://gist.github.com/tekin/12500956bd56784728e490d8cef9cb81
*.c     diff=cpp
*.h     diff=cpp
*.css   diff=css
*.html  diff=html
*.py    diff=python
*.md    diff=markdown

# Generated files
# https://github.com/github/linguist/blob/master/docs/overrides.md
#
# To always hide generated files in local diffs, mark them as binary:
# $ git config diff.generated.binary true
#
[attr]generated linguist-generated=true diff=generated

**/clinic/*.c.h                                     generated
*_db.h                                              generated
Doc/data/stable_abi.dat                             generated
Doc/library/token-list.inc                          generated
Include/internal/pycore_ast.h                       generated
Include/internal/pycore_ast_state.h                 generated
Include/internal/pycore_opcode.h                    generated
Include/internal/pycore_*_generated.h               generated
Include/opcode.h                                    generated
Include/token.h                                     generated
Lib/keyword.py                                      generated
Lib/test/levenshtein_examples.json                  generated
Lib/test/test_stable_abi_ctypes.py                  generated
Lib/token.py                                        generated
Objects/typeslots.inc                               generated
PC/python3dll.c                                     generated
Parser/parser.c                                     generated
Parser/token.c                                      generated
Programs/test_frozenmain.h                          generated
Python/Python-ast.c                                 generated
Python/generated_cases.c.h                          generated
Python/opcode_targets.h                             generated
Python/stdlib_module_names.h                        generated
Tools/peg_generator/pegen/grammar_parser.py         generated
aclocal.m4                                          generated
configure                                           generated


================================================
FILE: .github/CODEOWNERS
================================================
# See https://help.github.com/articles/about-codeowners/
# for more info about CODEOWNERS file

# It uses the same pattern rule for gitignore file
# https://git-scm.com/docs/gitignore#_pattern_format

# GitHub
.github/**                    @ezio-melotti

# asyncio
**/*asyncio*                  @1st1 @asvetlov @gvanrossum @kumaraditya303

# Core
**/*context*                  @1st1
**/*genobject*                @markshannon
**/*hamt*                     @1st1
Objects/set*                  @rhettinger
Objects/dict*                 @methane @markshannon
Objects/type*                 @markshannon
Objects/codeobject.c          @markshannon
Objects/frameobject.c         @markshannon
Objects/call.c                @markshannon
Python/ceval.c                @markshannon
Python/compile.c              @markshannon @iritkatriel
Python/ast_opt.c              @isidentical
Lib/test/test_patma.py        @brandtbucher
Lib/test/test_peepholer.py    @brandtbucher

# Exceptions
Lib/traceback.py              @iritkatriel
Lib/test/test_except*.py      @iritkatriel
Lib/test/test_traceback.py    @iritkatriel
Objects/exceptions.c          @iritkatriel
Python/traceback.c            @iritkatriel

# Hashing
**/*hashlib*                  @tiran
**/*pyhash*                   @tiran
**/*sha*                      @tiran
**/*md5*                      @tiran
**/*blake*                    @tiran
/Modules/_blake2/**           @tiran
/Modules/_sha3/**             @tiran

# logging
**/*logging*                  @vsajip

# venv
**/*venv*                     @vsajip

# Launcher
/PC/launcher.c                @vsajip

# HTML
/Lib/html/                    @ezio-melotti
/Lib/_markupbase.py           @ezio-melotti
/Lib/test/test_html*.py       @ezio-melotti
/Tools/build/parse_html5_entities.py   @ezio-melotti

# Import (including importlib).
# Ignoring importlib.h so as to not get flagged on
# all pull requests that change the emitted
# bytecode.
**/*import*.c                 @brettcannon @encukou @ericsnowcurrently @ncoghlan @warsaw
**/*import*.py                @brettcannon @encukou @ericsnowcurrently @ncoghlan @warsaw
**/*importlib/resources/*      @jaraco @warsaw @FFY00
**/importlib/metadata/*       @jaraco @warsaw

# Dates and times
**/*datetime*                 @pganssle @abalkin
**/*str*time*                 @pganssle @abalkin
Doc/library/time.rst          @pganssle @abalkin
Lib/test/test_time.py         @pganssle @abalkin
Modules/timemodule.c          @pganssle @abalkin
Python/pytime.c               @pganssle @abalkin
Include/pytime.h              @pganssle @abalkin

# Email and related
**/*mail*                     @python/email-team
**/*smtp*                     @python/email-team
**/*mime*                     @python/email-team
**/*imap*                     @python/email-team
**/*poplib*                   @python/email-team

# Garbage collector
/Modules/gcmodule.c           @pablogsal
/Doc/library/gc.rst           @pablogsal

# Parser
/Parser/                      @pablogsal @lysnikolaou
/Tools/peg_generator/         @pablogsal @lysnikolaou
/Lib/test/test_peg_generator/ @pablogsal @lysnikolaou
/Grammar/python.gram          @pablogsal @lysnikolaou

# AST
Python/ast.c                  @isidentical
Parser/asdl.py                @isidentical
Parser/asdl_c.py              @isidentical
Lib/ast.py                    @isidentical

# Mock
/Lib/unittest/mock.py         @cjw296
/Lib/test/test_unittest/testmock/* @cjw296

# SQLite 3
**/*sqlite*                   @berkerpeksag @erlend-aasland

# subprocess
/Lib/subprocess.py            @gpshead
/Lib/test/test_subprocess.py  @gpshead
/Modules/*subprocess*         @gpshead

# Windows
/PC/                          @python/windows-team
/PCbuild/                     @python/windows-team

# Urllib
**/*robotparser*              @berkerpeksag

# Windows installer packages
/Tools/msi/                   @python/windows-team
/Tools/nuget/                 @python/windows-team

# Misc
**/*itertools*                @rhettinger
**/*collections*              @rhettinger
**/*random*                   @rhettinger
**/*queue*                    @rhettinger
**/*bisect*                   @rhettinger
**/*heapq*                    @rhettinger
**/*functools*                @rhettinger
**/*decimal*                  @rhettinger

**/*dataclasses*              @ericvsmith

**/*idlelib*                  @terryjreedy

**/*typing*                   @gvanrossum @Fidget-Spinner @JelleZijlstra @AlexWaygood

**/*ftplib                    @giampaolo
**/*shutil                    @giampaolo

**/*enum*                     @ethanfurman
**/*cgi*                      @ethanfurman
**/*tarfile*                  @ethanfurman

**/*tomllib*                  @encukou @hauntsaninja

**/*sysconfig*                @FFY00

# macOS
/Mac/                         @python/macos-team
**/*osx_support*              @python/macos-team

# pathlib
**/*pathlib*                  @barneygale

# zipfile.Path
**/*zipfile/*_path.py         @jaraco


================================================
FILE: .github/CONTRIBUTING.rst
================================================
Contributing to Python
======================

Build Status
------------

- `Buildbot status overview <https://buildbot.python.org/all/#/release_status>`_

- `GitHub Actions status <https://github.com/python/cpython/actions/workflows/build.yml>`_


Thank You
---------
First off, thanks for contributing to the maintenance of the Python programming
language and the CPython interpreter! Even if your contribution is not
ultimately accepted, the fact you put time and effort into helping out is
greatly appreciated.


Contribution Guidelines
-----------------------
Please read the `devguide <https://devguide.python.org/>`_ for
guidance on how to contribute to this project. The documentation covers
everything from how to build the code to submitting a pull request. There are
also suggestions on how you can most effectively help the project.

Please be aware that our workflow does deviate slightly from the typical GitHub
project. Details on how to properly submit a pull request are covered in
`Lifecycle of a Pull Request <https://devguide.python.org/getting-started/pull-request-lifecycle.html>`_.
We utilize various bots and status checks to help with this, so do follow the
comments they leave and their "Details" links, respectively. The key points of
our workflow that are not covered by a bot or status check are:

- All discussions that are not directly related to the code in the pull request
  should happen on `GitHub Issues <https://github.com/python/cpython/issues>`_.
- Upon your first non-trivial pull request (which includes documentation changes),
  feel free to add yourself to ``Misc/ACKS``


Setting Expectations
--------------------
Due to the fact that this project is entirely volunteer-run (i.e. no one is paid
to work on Python full-time), we unfortunately can make no guarantees as to if
or when a core developer will get around to reviewing your pull request.
If no core developer has done a review or responded to changes made because of a
"changes requested" review, please feel free to email python-dev to ask if
someone could take a look at your pull request.


Code of Conduct
---------------
All interactions for this project are covered by the
`PSF Code of Conduct <https://www.python.org/psf/codeofconduct/>`_. Everyone is
expected to be open, considerate, and respectful of others no matter their
position within the project.


================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: Bug report
about: Submit a bug report
labels: "type-bug"
---

<!--
  If you're new to Python and you're not sure whether what you're experiencing is a bug, the CPython issue tracker is not
  the right place to seek help. Consider the following options instead:

  - reading the Python tutorial: https://docs.python.org/3/tutorial/
  - posting in the "Users" category on discuss.python.org: https://discuss.python.org/c/users/7
  - emailing the Python-list mailing list: https://mail.python.org/mailman/listinfo/python-list
  - searching our issue tracker (https://github.com/python/cpython/issues) to see if
    your problem has already been reported
-->

# Bug report

A clear and concise description of what the bug is.
Include a minimal, reproducible example (https://stackoverflow.com/help/minimal-reproducible-example), if possible.

# Your environment

<!-- Include as many relevant details as possible about the environment you experienced the bug in -->

- CPython versions tested on:
- Operating system and architecture:

<!--
You can freely edit this text. Remove any lines you believe are unnecessary.
-->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
  - name: "Getting help"
    about: "Ask questions about using Python and debugging errors on Discourse."
    url: "https://discuss.python.org/c/users/7"
  - name: "Proposing new features"
    about: "Submit major feature proposal (e.g. syntax changes) to an ideas forum first."
    url: "https://discuss.python.org/c/ideas/6"


================================================
FILE: .github/ISSUE_TEMPLATE/crash.md
================================================
---
name: Crash report
about: A hard crash of the interpreter, possibly with a core dump
labels: "type-crash"
---

<!--
  Use this template for hard crashes of the interpreter, segmentation faults, failed C-level assertions, and similar.
  Do not submit this form if you encounter an exception being unexpectedly raised from a Python function.
  Most of the time, these should be filed as bugs, rather than crashes.

  The CPython interpreter is itself written in a different programming language, C.
  For CPython, a "crash" is when Python itself fails, leading to a traceback in the C stack.
-->

# Crash report

Tell us what happened, ideally including a minimal, reproducible example (https://stackoverflow.com/help/minimal-reproducible-example).

# Error messages

Enter any relevant error message caused by the crash, including a core dump if there is one.

# Your environment

<!-- Include as many relevant details as possible about the environment you experienced the bug in -->

- CPython versions tested on:
- Operating system and architecture:

<!--
You can freely edit this text. Remove any lines you believe are unnecessary.
-->


================================================
FILE: .github/ISSUE_TEMPLATE/documentation.md
================================================
---
name: Documentation
about: Report a problem with the documentation
labels: "docs"
---

# Documentation

(A clear and concise description of the issue.)


================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: Feature or enhancement
about: Submit a proposal for a new CPython feature or enhancement
labels: "type-feature"
---

# Feature or enhancement

(A clear and concise description of your proposal.)

# Pitch

(Explain why this feature or enhancement should be implemented and how it would be used.
 Add examples, if applicable.)

# Previous discussion

<!--
  New features to Python should first be discussed elsewhere before creating issues on GitHub,
  for example in the "ideas" category (https://discuss.python.org/c/ideas/6) of discuss.python.org,
  or the python-ideas mailing list (https://mail.python.org/mailman3/lists/python-ideas.python.org/).
  Use this space to post links to the places where you have already discussed this feature proposal:
-->


<!--
You can freely edit this text. Remove any lines you believe are unnecessary.
-->


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thanks for your contribution!
Please read this comment in its entirety. It's quite important.

# Pull Request title

It should be in the following format:

```
gh-NNNNN: Summary of the changes made
```

Where: gh-NNNNN refers to the GitHub issue number.

Most PRs will require an issue number. Trivial changes, like fixing a typo, do not need an issue.

# Backport Pull Request title

If this is a backport PR (PR made against branches other than `main`),
please ensure that the PR title is in the following format:

```
[X.Y] <title from the original PR> (GH-NNNN)
```

Where: [X.Y] is the branch name, e.g. [3.6].

GH-NNNN refers to the PR number from `main`.

-->


================================================
FILE: .github/SECURITY.md
================================================
# Security Policy

## Supported Versions

The Python team applies security fixes according to the table
in [the devguide](
https://devguide.python.org/versions/#supported-versions
).

## Reporting a Vulnerability

Please read the guidelines on reporting security issues [on the
official website](https://www.python.org/dev/security/) for
instructions on how to report a security-related problem to
the Python team responsibly.

To reach the response team, email `security at python dot org`.


================================================
FILE: .github/problem-matchers/gcc.json
================================================
{
    "__comment": "Taken from vscode-cpptools's Extension/package.json gcc rule",
    "problemMatcher": [
        {
            "owner": "gcc-problem-matcher",
            "pattern": [
                {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            ]
        }
    ]
}

================================================
FILE: .github/problem-matchers/msvc.json
================================================
{
    "__comment": "Taken from vscode's vs/workbench/contrib/tasks/common/problemMatcher.ts msCompile rule",
    "problemMatcher": [
      {
        "owner": "msvc-problem-matcher",
        "pattern": [
          {
            "regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+),?(\\d+)?(?:,\\d+,\\d+)?\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "code": 5,
            "message": 6
          }
        ]
      }
    ]
  }

================================================
FILE: .github/problem-matchers/sphinx.json
================================================
{
    "problemMatcher": [
        {
            "owner": "sphinx-problem-matcher",
            "pattern": [
                {
                    "regexp": "^(.*):(\\d+):\\s+(\\w*):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "severity": 3,
                    "message": 4
                }
            ]
        },
        {
            "owner": "sphinx-problem-matcher-loose",
            "pattern": [
                {
                    "_comment": "A bit of a looser pattern, doesn't look for line numbers, just looks for file names relying on them to start with / and end with .rst",
                    "regexp": "(\/.*\\.rst):\\s+(\\w*):\\s+(.*)$",
                    "file": 1,
                    "severity": 2,
                    "message": 3
                }
            ]
        },
        {
            "owner": "sphinx-problem-matcher-loose-no-severity",
            "pattern": [
                {
                    "_comment": "Looks for file names ending with .rst and line numbers but without severity",
                    "regexp": "^(.*\\.rst):(\\d+):(.*)$",
                    "file": 1,
                    "line": 2,
                    "message": 3
                }
            ]
        }
    ]
}

================================================
FILE: .github/workflows/build.yml
================================================
name: Tests

# gh-84728: "paths-ignore" is not used to skip documentation-only PRs, because
# it prevents to mark a job as mandatory. A PR cannot be merged if a job is
# mandatory but not scheduled because of "paths-ignore".
on:
  workflow_dispatch:
  push:
  pull_request:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  check_source:
    name: 'Check for source changes'
    runs-on: ubuntu-latest
    outputs:
      run_tests: ${{ steps.check.outputs.run_tests }}
    steps:
      - uses: actions/checkout@v3
      - name: Check for source changes
        id: check
        run: |
          if [ -z "$GITHUB_BASE_REF" ]; then
            echo "run_tests=true" >> $GITHUB_OUTPUT
          else
            git fetch origin $GITHUB_BASE_REF --depth=1
            # git diff "origin/$GITHUB_BASE_REF..." (3 dots) may be more
            # reliable than git diff "origin/$GITHUB_BASE_REF.." (2 dots),
            # but it requires to download more commits (this job uses
            # "git fetch --depth=1").
            #
            # git diff "origin/$GITHUB_BASE_REF..." (3 dots) works with Git
            # 2.26, but Git 2.28 is stricter and fails with "no merge base".
            #
            # git diff "origin/$GITHUB_BASE_REF.." (2 dots) should be enough on
            # GitHub, since GitHub starts by merging origin/$GITHUB_BASE_REF
            # into the PR branch anyway.
            #
            # https://github.com/python/core-workflow/issues/373
            git diff --name-only origin/$GITHUB_BASE_REF.. | grep -qvE '(\.rst$|^Doc|^Misc)' && echo "run_tests=true" >> $GITHUB_OUTPUT || true
          fi

  check_generated_files:
    name: 'Check if generated files are up to date'
    runs-on: ubuntu-latest
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
      - name: Install Dependencies
        run: sudo ./.github/workflows/posix-deps-apt.sh
      - name: Add ccache to PATH
        run: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
      - name: Configure ccache action
        uses: hendrikmuhs/ccache-action@v1.2
      - name: Check Autoconf version 2.69 and aclocal 1.16.3
        run: |
          grep "Generated by GNU Autoconf 2.69" configure
          grep "aclocal 1.16.3" aclocal.m4
          grep -q "runstatedir" configure
          grep -q "PKG_PROG_PKG_CONFIG" aclocal.m4
      - name: Configure CPython
        run: |
          # Build Python with the libpython dynamic library
          ./configure --with-pydebug --enable-shared
      - name: Regenerate autoconf files with container image
        run: make regen-configure
      - name: Build CPython
        run: |
          # Deepfreeze will usually cause global objects to be added or removed,
          # so we run it before regen-global-objects gets rum (in regen-all).
          make regen-deepfreeze
          make -j4 regen-all
          make regen-stdlib-module-names
      - name: Check for changes
        run: |
          git add -u
          changes=$(git status --porcelain)
          # Check for changes in regenerated files
          if test -n "$changes"; then
            echo "Generated files not up to date."
            echo "Perhaps you forgot to run make regen-all or build.bat --regen. ;)"
            echo "configure files must be regenerated with a specific version of autoconf."
            echo "$changes"
            echo ""
            git diff --staged || true
            exit 1
          fi
      - name: Check exported libpython symbols
        run: make smelly
      - name: Check limited ABI symbols
        run: make check-limited-abi

  # Disable win32 for now
  # build_win32:
  #  name: 'Windows (x86)'
  #  runs-on: windows-latest
  #  needs: check_source
  #  if: needs.check_source.outputs.run_tests == 'true'
  #  env:
  #     IncludeUwp: 'true'
  #  steps:
  #  - uses: actions/checkout@v3
  #  - name: Build CPython
  #    run: .\PCbuild\build.bat -e -d -p Win32
  #    timeout-minutes: 30
  #  - name: Display build info
  #    run: .\python.bat -m test.pythoninfo
  #  - name: Tests
  #    run: .\PCbuild\rt.bat -p Win32 -d -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0

  build_win_amd64:
    name: 'Windows (x64)'
    runs-on: windows-latest
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    env:
       IncludeUwp: 'true'
    steps:
    - uses: actions/checkout@v3
    - name: Register MSVC problem matcher
      run: echo "::add-matcher::.github/problem-matchers/msvc.json"
    - name: Build CPython
      run: .\PCbuild\build.bat -e -d -p x64
      timeout-minutes: 30
    - name: Display build info
      run: .\python.bat -m test.pythoninfo
    - name: Tests
      run: .\PCbuild\rt.bat -p x64 -d -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0

  build_macos:
    name: 'macOS'
    runs-on: macos-latest
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    env:
      PYTHONSTRICTEXTENSIONBUILD: 1
    steps:
    - uses: actions/checkout@v3
    - name: Prepare homebrew environment variables
      run: |
        brew install pkg-config openssl@1.1 xz gdbm tcl-tk
    - name: Configure CPython
      run: CFLAGS="-I$(brew --prefix gdbm)/include -I$(brew --prefix xz)/include" LDFLAGS="-L$(brew --prefix gdbm)/lib -I$(brew --prefix xz)/lib" PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" ./configure --with-pydebug --with-openssl=$(brew --prefix openssl@1.1)
    - name: Build CPython
      run: make -j4
    - name: Display build info
      run: make pythoninfo
    - name: Tests
      run: make buildbottest TESTOPTS="-j4 -uall,-cpu"

  build_ubuntu:
    name: 'Ubuntu'
    runs-on: ubuntu-20.04
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    env:
      OPENSSL_VER: 1.1.1s
      PYTHONSTRICTEXTENSIONBUILD: 1
    steps:
    - uses: actions/checkout@v3
    - name: Register gcc problem matcher
      run: echo "::add-matcher::.github/problem-matchers/gcc.json"
    - name: Install Dependencies
      run: sudo ./.github/workflows/posix-deps-apt.sh
    - name: Configure OpenSSL env vars
      run: |
        echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
        echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
        echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
    - name: 'Restore OpenSSL build'
      id: cache-openssl
      uses: actions/cache@v3
      with:
        path: ./multissl/openssl/${{ env.OPENSSL_VER }}
        key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
    - name: Install OpenSSL
      if: steps.cache-openssl.outputs.cache-hit != 'true'
      run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
    - name: Add ccache to PATH
      run: |
        echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
    - name: Configure ccache action
      uses: hendrikmuhs/ccache-action@v1.2
    - name: Setup directory envs for out-of-tree builds
      run: |
        echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV
        echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV
    - name: Create directories for read-only out-of-tree builds
      run: mkdir -p $CPYTHON_RO_SRCDIR $CPYTHON_BUILDDIR
    - name: Bind mount sources read-only
      run: sudo mount --bind -o ro $GITHUB_WORKSPACE $CPYTHON_RO_SRCDIR
    - name: Configure CPython out-of-tree
      working-directory: ${{ env.CPYTHON_BUILDDIR }}
      run: ../cpython-ro-srcdir/configure --with-pydebug --with-openssl=$OPENSSL_DIR
    - name: Build CPython out-of-tree
      working-directory: ${{ env.CPYTHON_BUILDDIR }}
      run: make -j4
    - name: Display build info
      working-directory: ${{ env.CPYTHON_BUILDDIR }}
      run: make pythoninfo
    - name: Remount sources writable for tests
      # some tests write to srcdir, lack of pyc files slows down testing
      run: sudo mount $CPYTHON_RO_SRCDIR -oremount,rw
    - name: Tests
      working-directory: ${{ env.CPYTHON_BUILDDIR }}
      run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"

  build_ubuntu_ssltests:
    name: 'Ubuntu SSL tests with OpenSSL'
    runs-on: ubuntu-20.04
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    strategy:
      fail-fast: false
      matrix:
        openssl_ver: [1.1.1s, 3.0.7, 3.1.0-beta1]
    env:
      OPENSSL_VER: ${{ matrix.openssl_ver }}
      MULTISSL_DIR: ${{ github.workspace }}/multissl
      OPENSSL_DIR: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}
      LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
    steps:
    - uses: actions/checkout@v3
    - name: Register gcc problem matcher
      run: echo "::add-matcher::.github/problem-matchers/gcc.json"
    - name: Install Dependencies
      run: sudo ./.github/workflows/posix-deps-apt.sh
    - name: Configure OpenSSL env vars
      run: |
        echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
        echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
        echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
    - name: 'Restore OpenSSL build'
      id: cache-openssl
      uses: actions/cache@v3
      with:
        path: ./multissl/openssl/${{ env.OPENSSL_VER }}
        key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
    - name: Install OpenSSL
      if: steps.cache-openssl.outputs.cache-hit != 'true'
      run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
    - name: Add ccache to PATH
      run: |
        echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
    - name: Configure ccache action
      uses: hendrikmuhs/ccache-action@v1.2
    - name: Configure CPython
      run: ./configure --with-pydebug --with-openssl=$OPENSSL_DIR
    - name: Build CPython
      run: make -j4
    - name: Display build info
      run: make pythoninfo
    - name: SSL tests
      run: ./python Lib/test/ssltests.py


  build_asan:
    name: 'Address sanitizer'
    runs-on: ubuntu-20.04
    needs: check_source
    if: needs.check_source.outputs.run_tests == 'true'
    env:
      OPENSSL_VER: 1.1.1s
      PYTHONSTRICTEXTENSIONBUILD: 1
      ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
    steps:
    - uses: actions/checkout@v3
    - name: Register gcc problem matcher
      run: echo "::add-matcher::.github/problem-matchers/gcc.json"
    - name: Install Dependencies
      run: sudo ./.github/workflows/posix-deps-apt.sh
    - name: Configure OpenSSL env vars
      run: |
        echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
        echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
        echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
    - name: 'Restore OpenSSL build'
      id: cache-openssl
      uses: actions/cache@v3
      with:
        path: ./multissl/openssl/${{ env.OPENSSL_VER }}
        key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
    - name: Install OpenSSL
      if: steps.cache-openssl.outputs.cache-hit != 'true'
      run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
    - name: Add ccache to PATH
      run: |
        echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
    - name: Configure ccache action
      uses: hendrikmuhs/ccache-action@v1.2
    - name: Configure CPython
      run: ./configure --with-address-sanitizer --without-pymalloc
    - name: Build CPython
      run: make -j4
    - name: Display build info
      run: make pythoninfo
    - name: Tests
      run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"


================================================
FILE: .github/workflows/build_msi.yml
================================================
name: TestsMSI

on:
  workflow_dispatch:
  push:
    branches:
    - 'main'
    - '3.*'
    paths:
    - 'Tools/msi/**'
  pull_request:
    branches:
    - 'main'
    - '3.*'
    paths:
    - 'Tools/msi/**'

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  build:
    name: Windows Installer
    runs-on: windows-latest
    strategy:
      matrix:
        type: [x86, x64, arm64]
    steps:
    - uses: actions/checkout@v3
    - name: Build CPython installer
      run: .\Tools\msi\build.bat -${{ matrix.type }}


================================================
FILE: .github/workflows/posix-deps-apt.sh
================================================
#!/bin/sh
apt-get update

apt-get -yq install \
    build-essential \
    pkg-config \
    ccache \
    gdb \
    lcov \
    libb2-dev \
    libbz2-dev \
    libffi-dev \
    libgdbm-dev \
    libgdbm-compat-dev \
    liblzma-dev \
    libncurses5-dev \
    libreadline6-dev \
    libsqlite3-dev \
    libssl-dev \
    lzma \
    lzma-dev \
    tk-dev \
    uuid-dev \
    xvfb \
    zlib1g-dev


================================================
FILE: .github/workflows/regen-abidump.sh
================================================
set -ex

export DEBIAN_FRONTEND=noninteractive
./.github/workflows/posix-deps-apt.sh
apt-get install -yq abigail-tools python3
export CFLAGS="-g3 -O0"
./configure --enable-shared && make
make regen-abidump


================================================
FILE: .gitignore
================================================
#####
# First, rules intended to apply in all subdirectories.
# These contain no slash, or only a trailing slash.

*.cover
*.iml
*.o
*.lto
*.a
*.so
*.so.*
*.dylib
*.dSYM
*.dll
*.wasm
*.orig
*.pyc
*.pyd
*.pyo
*.rej
*.swp
*~
*.gc??
*.profclang?
*.profraw
*.dyn
.gdb_history
.purify
__pycache__
.hg/
.svn/
.idea/
tags
TAGS
.vs/
.vscode/
gmon.out
.coverage
.mypy_cache/
.pytest_cache/
.DS_Store

*.exe

# Ignore core dumps... but not Tools/msi/core/ or the like.
core
!core/


#####
# Then, rules meant for a specific location relative to the repo root.
# These must contain a non-trailing slash (and may also have a trailing slash.)

Doc/build/
Doc/venv/
Doc/.venv/
Doc/env/
Doc/.env/
Include/pydtrace_probes.h
Lib/lib2to3/*.pickle
Lib/site-packages/*
!Lib/site-packages/README.txt
Lib/test/data/*
!Lib/test/data/README
/_bootstrap_python
/Makefile
/Makefile.pre
Mac/Makefile
Mac/PythonLauncher/Info.plist
Mac/PythonLauncher/Makefile
Mac/PythonLauncher/Python Launcher
Mac/PythonLauncher/Python Launcher.app/*
Mac/Resources/app/Info.plist
Mac/Resources/framework/Info.plist
Mac/pythonw
/*.framework/
Misc/python.pc
Misc/python-embed.pc
Misc/python-config.sh
Modules/Setup.bootstrap
Modules/Setup.config
Modules/Setup.local
Modules/Setup.stdlib
Modules/config.c
Modules/ld_so_aix
Programs/_freeze_module
Programs/_testembed
PC/python_nt*.h
PC/pythonnt_rc*.h
Modules/python.exp
PC/*/*.exp
PC/*/*.lib
PC/*/*.bsc
PC/*/*.dll
PC/*/*.pdb
PC/*/*.user
PC/*/*.ncb
PC/*/*.suo
PC/*/Win32-temp-*
PC/*/x64-temp-*
PC/*/amd64
PCbuild/*.user
PCbuild/*.suo
PCbuild/*.*sdf
PCbuild/*-pgi
PCbuild/*-pgo
PCbuild/*.VC.db
PCbuild/*.VC.opendb
PCbuild/amd64/
PCbuild/arm32/
PCbuild/arm64/
PCbuild/obj/
PCbuild/win32/
Tools/unicode/data/
/autom4te.cache
/build/
/builddir/
/config.cache
/config.log
/config.status
/config.status.lineno
# hendrikmuhs/ccache-action@v1
/.ccache
/platform
/profile-clean-stamp
/profile-run-stamp
/Python/deepfreeze/*.c
/pybuilddir.txt
/pyconfig.h
/python-config
/python-config.py
/python.bat
/python-gdb.py
/python.exe-gdb.py
/reflog.txt
/coverage/
/externals/
/htmlcov/
Tools/msi/obj
Tools/ssl/amd64
Tools/ssl/win32
Tools/freeze/test/outdir

# The frozen modules are always generated by the build so we don't
# keep them in the repo.  Also see Tools/build/freeze_modules.py.
Python/frozen_modules/*.h
# The manifest can be generated at any time with "make regen-frozen".
Python/frozen_modules/MANIFEST

# Two-trick pony for OSX and other case insensitive file systems:
# Ignore ./python binary on Unix but still look into ./Python/ directory.
/python
!/Python/

# main branch only: ABI files are not checked/maintained
Doc/data/python*.abi


================================================
FILE: Doc/Makefile
================================================
#
# Makefile for Python documentation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#

# You can set these variables from the command line.
PYTHON       = python3
VENVDIR      = ./venv
SPHINXBUILD  = PATH=$(VENVDIR)/bin:$$PATH sphinx-build
SPHINXLINT   = PATH=$(VENVDIR)/bin:$$PATH sphinx-lint
BLURB        = PATH=$(VENVDIR)/bin:$$PATH blurb
PAPER        =
SOURCES      =
DISTVERSION  = $(shell $(PYTHON) tools/extensions/patchlevel.py)
SPHINXERRORHANDLING = -W

# Internal variables.
PAPEROPT_a4     = -D latex_elements.papersize=a4paper
PAPEROPT_letter = -D latex_elements.papersize=letterpaper

ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees $(PAPEROPT_$(PAPER)) -j auto \
                $(SPHINXOPTS) $(SPHINXERRORHANDLING) . build/$(BUILDER) $(SOURCES)

.PHONY: help
help:
	@echo "Please use \`make <target>' where <target> is one of"
	@echo "  clean      to remove build files"
	@echo "  venv       to create a venv with necessary tools"
	@echo "  html       to make standalone HTML files"
	@echo "  htmlview   to open the index page built by the html target in your browser"
	@echo "  htmlhelp   to make HTML files and a HTML help project"
	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
	@echo "  text       to make plain text files"
	@echo "  texinfo    to make Texinfo file"
	@echo "  epub       to make EPUB files"
	@echo "  changes    to make an overview over all changed/added/deprecated items"
	@echo "  linkcheck  to check all external links for integrity"
	@echo "  coverage   to check documentation coverage for library and C API"
	@echo "  doctest    to run doctests in the documentation"
	@echo "  pydoc-topics  to regenerate the pydoc topics file"
	@echo "  dist       to create a \"dist\" directory with archived docs for download"
	@echo "  check      to run a check for frequent markup errors"

.PHONY: build
build:
	-mkdir -p build
# Look first for a Misc/NEWS file (building from a source release tarball
# or old repo) and use that, otherwise look for a Misc/NEWS.d directory
# (building from a newer repo) and use blurb to generate the NEWS file.
	@if [ -f  ../Misc/NEWS ] ; then \
		echo "Using existing Misc/NEWS file"; \
		cp ../Misc/NEWS build/NEWS; \
	elif $(BLURB) help >/dev/null 2>&1 && $(SPHINXBUILD) --version >/dev/null 2>&1; then \
		if [ -d ../Misc/NEWS.d ]; then \
			echo "Building NEWS from Misc/NEWS.d with blurb"; \
			$(BLURB) merge -f build/NEWS; \
		else \
			echo "Neither Misc/NEWS.d nor Misc/NEWS found; cannot build docs"; \
			exit 1; \
		fi \
	else \
		echo ""; \
		echo "Missing the required blurb or sphinx-build tools."; \
		echo "Please run 'make venv' to install local copies."; \
		echo ""; \
		exit 1; \
	fi
	$(SPHINXBUILD) $(ALLSPHINXOPTS)
	@echo

.PHONY: html
html: BUILDER = html
html: build
	@echo "Build finished. The HTML pages are in build/html."

.PHONY: htmlhelp
htmlhelp: BUILDER = htmlhelp
htmlhelp: build
	@echo "Build finished; now you can run HTML Help Workshop with the" \
	      "build/htmlhelp/pydoc.hhp project file."

.PHONY: latex
latex: BUILDER = latex
latex: build
	@echo "Build finished; the LaTeX files are in build/latex."
	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
	      "run these through (pdf)latex."

.PHONY: text
text: BUILDER = text
text: build
	@echo "Build finished; the text files are in build/text."

.PHONY: texinfo
texinfo: BUILDER = texinfo
texinfo: build
	@echo "Build finished; the python.texi file is in build/texinfo."
	@echo "Run \`make info' in that directory to run it through makeinfo."

.PHONY: epub
epub: BUILDER = epub
epub: build
	@echo "Build finished; the epub files are in build/epub."

.PHONY: changes
changes: BUILDER = changes
changes: build
	@echo "The overview file is in build/changes."

.PHONY: linkcheck
linkcheck: BUILDER = linkcheck
linkcheck:
	@$(MAKE) build BUILDER=$(BUILDER) || { \
	echo "Link check complete; look for any errors in the above output" \
	     "or in build/$(BUILDER)/output.txt"; \
	false; }

.PHONY: coverage
coverage: BUILDER = coverage
coverage: build
	@echo "Coverage finished; see c.txt and python.txt in build/coverage"

.PHONY: doctest
doctest: BUILDER = doctest
doctest:
	@$(MAKE) build BUILDER=$(BUILDER) || { \
	echo "Testing of doctests in the sources finished, look at the" \
	     "results in build/doctest/output.txt"; \
	false; }

.PHONY: pydoc-topics
pydoc-topics: BUILDER = pydoc-topics
pydoc-topics: build
	@echo "Building finished; now run this:" \
	      "cp build/pydoc-topics/topics.py ../Lib/pydoc_data/topics.py"

.PHONY: htmlview
htmlview: html
	$(PYTHON) -c "import os, webbrowser; webbrowser.open('file://' + os.path.realpath('build/html/index.html'))"

.PHONY: clean
clean: clean-venv
	-rm -rf build/*

.PHONY: clean-venv
clean-venv:
	rm -rf $(VENVDIR)

.PHONY: venv
venv:
	@if [ -d $(VENVDIR) ] ; then \
		echo "venv already exists."; \
		echo "To recreate it, remove it first with \`make clean-venv'."; \
	else \
		$(PYTHON) -m venv $(VENVDIR); \
		$(VENVDIR)/bin/python3 -m pip install -U pip setuptools; \
		$(VENVDIR)/bin/python3 -m pip install -r requirements.txt; \
		echo "The venv has been created in the $(VENVDIR) directory"; \
	fi

.PHONY: dist
dist:
	rm -rf dist
	mkdir -p dist

	# archive the HTML
	make html
	cp -pPR build/html dist/python-$(DISTVERSION)-docs-html
	tar -C dist -cf dist/python-$(DISTVERSION)-docs-html.tar python-$(DISTVERSION)-docs-html
	bzip2 -9 -k dist/python-$(DISTVERSION)-docs-html.tar
	(cd dist; zip -q -r -9 python-$(DISTVERSION)-docs-html.zip python-$(DISTVERSION)-docs-html)
	rm -r dist/python-$(DISTVERSION)-docs-html
	rm dist/python-$(DISTVERSION)-docs-html.tar

	# archive the text build
	make text
	cp -pPR build/text dist/python-$(DISTVERSION)-docs-text
	tar -C dist -cf dist/python-$(DISTVERSION)-docs-text.tar python-$(DISTVERSION)-docs-text
	bzip2 -9 -k dist/python-$(DISTVERSION)-docs-text.tar
	(cd dist; zip -q -r -9 python-$(DISTVERSION)-docs-text.zip python-$(DISTVERSION)-docs-text)
	rm -r dist/python-$(DISTVERSION)-docs-text
	rm dist/python-$(DISTVERSION)-docs-text.tar

	# archive the A4 latex
	rm -rf build/latex
	make latex PAPER=a4
	-sed -i 's/makeindex/makeindex -q/' build/latex/Makefile
	(cd build/latex; make clean && make all-pdf && make FMT=pdf zip bz2)
	cp build/latex/docs-pdf.zip dist/python-$(DISTVERSION)-docs-pdf-a4.zip
	cp build/latex/docs-pdf.tar.bz2 dist/python-$(DISTVERSION)-docs-pdf-a4.tar.bz2

	# archive the letter latex
	rm -rf build/latex
	make latex PAPER=letter
	-sed -i 's/makeindex/makeindex -q/' build/latex/Makefile
	(cd build/latex; make clean && make all-pdf && make FMT=pdf zip bz2)
	cp build/latex/docs-pdf.zip dist/python-$(DISTVERSION)-docs-pdf-letter.zip
	cp build/latex/docs-pdf.tar.bz2 dist/python-$(DISTVERSION)-docs-pdf-letter.tar.bz2

	# copy the epub build
	rm -rf build/epub
	make epub
	cp -pPR build/epub/Python.epub dist/python-$(DISTVERSION)-docs.epub

	# archive the texinfo build
	rm -rf build/texinfo
	make texinfo
	make info --directory=build/texinfo
	cp -pPR build/texinfo dist/python-$(DISTVERSION)-docs-texinfo
	tar -C dist -cf dist/python-$(DISTVERSION)-docs-texinfo.tar python-$(DISTVERSION)-docs-texinfo
	bzip2 -9 -k dist/python-$(DISTVERSION)-docs-texinfo.tar
	(cd dist; zip -q -r -9 python-$(DISTVERSION)-docs-texinfo.zip python-$(DISTVERSION)-docs-texinfo)
	rm -r dist/python-$(DISTVERSION)-docs-texinfo
	rm dist/python-$(DISTVERSION)-docs-texinfo.tar

.PHONY: check
check:
	# Check the docs and NEWS files with sphinx-lint.
	# Ignore the tools and venv dirs and check that the default role is not used.
	$(SPHINXLINT) -i tools -i $(VENVDIR) --enable default-role
	$(SPHINXLINT) --enable default-role ../Misc/NEWS.d/next/

.PHONY: serve
serve:
	@echo "The serve target was removed, use htmlview instead (see bpo-36329)"

# Targets for daily automated doc build
# By default, Sphinx only rebuilds pages where the page content has changed.
# This means it doesn't always pick up changes to preferred link targets, etc
# To ensure such changes are picked up, we build the published docs with
# `-E` (to ignore the cached environment) and `-a` (to ignore already existing
# output files)

# for development releases: always build
.PHONY: autobuild-dev
autobuild-dev:
	make dist SPHINXOPTS='$(SPHINXOPTS) -Ea -A daily=1'

# for quick rebuilds (HTML only)
.PHONY: autobuild-dev-html
autobuild-dev-html:
	make html SPHINXOPTS='$(SPHINXOPTS) -Ea -A daily=1'

# for stable releases: only build if not in pre-release stage (alpha, beta)
# release candidate downloads are okay, since the stable tree can be in that stage
.PHONY: autobuild-stable
autobuild-stable:
	@case $(DISTVERSION) in *[ab]*) \
		echo "Not building; $(DISTVERSION) is not a release version."; \
		exit 1;; \
	esac
	@make autobuild-dev

.PHONY: autobuild-stable-html
autobuild-stable-html:
	@case $(DISTVERSION) in *[ab]*) \
		echo "Not building; $(DISTVERSION) is not a release version."; \
		exit 1;; \
	esac
	@make autobuild-dev-html


================================================
FILE: Doc/README.rst
================================================
Python Documentation README
~~~~~~~~~~~~~~~~~~~~~~~~~~~

This directory contains the reStructuredText (reST) sources to the Python
documentation.  You don't need to build them yourself, `prebuilt versions are
available <https://docs.python.org/dev/download.html>`_.

Documentation on authoring Python documentation, including information about
both style and markup, is available in the "`Documenting Python
<https://devguide.python.org/documenting/>`_" chapter of the
developers guide.


Building the docs
=================

The documentation is built with several tools which are not included in this
tree but are maintained separately and are available from
`PyPI <https://pypi.org/>`_.

* `Sphinx <https://pypi.org/project/Sphinx/>`_
* `blurb <https://pypi.org/project/blurb/>`_
* `python-docs-theme <https://pypi.org/project/python-docs-theme/>`_

The easiest way to install these tools is to create a virtual environment and
install the tools into there.

Using make
----------

To get started on UNIX, you can create a virtual environment and build
documentation with the commands::

  make venv
  make html

The virtual environment in the ``venv`` directory will contain all the tools
necessary to build the documentation downloaded and installed from PyPI.
If you'd like to create the virtual environment in a different location,
you can specify it using the ``VENVDIR`` variable.

You can also skip creating the virtual environment altogether, in which case
the Makefile will look for instances of ``sphinx-build`` and ``blurb``
installed on your process ``PATH`` (configurable with the ``SPHINXBUILD`` and
``BLURB`` variables).

On Windows, we try to emulate the Makefile as closely as possible with a
``make.bat`` file. If you need to specify the Python interpreter to use,
set the PYTHON environment variable.

Available make targets are:

* "clean", which removes all build files and the virtual environment.

* "clean-venv", which removes the virtual environment directory.

* "venv", which creates a virtual environment with all necessary tools
  installed.

* "html", which builds standalone HTML files for offline viewing.

* "htmlview", which re-uses the "html" builder, but then opens the main page
  in your default web browser.

* "htmlhelp", which builds HTML files and a HTML Help project file usable to
  convert them into a single Compiled HTML (.chm) file -- these are popular
  under Microsoft Windows, but very handy on every platform.

  To create the CHM file, you need to run the Microsoft HTML Help Workshop
  over the generated project (.hhp) file.  The make.bat script does this for
  you on Windows.

* "latex", which builds LaTeX source files as input to "pdflatex" to produce
  PDF documents.

* "text", which builds a plain text file for each source file.

* "epub", which builds an EPUB document, suitable to be viewed on e-book
  readers.

* "linkcheck", which checks all external references to see whether they are
  broken, redirected or malformed, and outputs this information to stdout as
  well as a plain-text (.txt) file.

* "changes", which builds an overview over all versionadded/versionchanged/
  deprecated items in the current version. This is meant as a help for the
  writer of the "What's New" document.

* "coverage", which builds a coverage overview for standard library modules and
  C API.

* "pydoc-topics", which builds a Python module containing a dictionary with
  plain text documentation for the labels defined in
  ``tools/pyspecific.py`` -- pydoc needs these to show topic and keyword help.

* "check", which checks for frequent markup errors.

* "serve", which serves the build/html directory on port 8000.

* "dist", (Unix only) which creates distributable archives of HTML, text,
  PDF, and EPUB builds.


Without make
------------

First, install the tool dependencies from PyPI.

Then, from the ``Doc`` directory, run ::

   sphinx-build -b<builder> . build/<builder>

where ``<builder>`` is one of html, text, latex, or htmlhelp (for explanations
see the make targets above).

Deprecation header
==================

You can define the ``outdated`` variable in ``html_context`` to show a
red banner on each page redirecting to the "latest" version.

The link points to the same page on ``/3/``, sadly for the moment the
language is lost during the process.


Contributing
============

Bugs in the content should be reported to the
`Python bug tracker <https://github.com/python/cpython/issues>`_.

Bugs in the toolset should be reported to the tools themselves.

You can also send a mail to the Python Documentation Team at docs@python.org,
and we will process your request as soon as possible.

If you want to help the Documentation Team, you are always welcome.  Just send
a mail to docs@python.org.


================================================
FILE: Doc/about.rst
================================================
=====================
About these documents
=====================


These documents are generated from `reStructuredText`_ sources by `Sphinx`_, a
document processor specifically written for the Python documentation.

.. _reStructuredText: https://docutils.sourceforge.io/rst.html
.. _Sphinx: https://www.sphinx-doc.org/

.. In the online version of these documents, you can submit comments and suggest
   changes directly on the documentation pages.

Development of the documentation and its toolchain is an entirely volunteer
effort, just like Python itself.  If you want to contribute, please take a
look at the :ref:`reporting-bugs` page for information on how to do so.  New
volunteers are always welcome!

Many thanks go to:

* Fred L. Drake, Jr., the creator of the original Python documentation toolset
  and writer of much of the content;
* the `Docutils <https://docutils.sourceforge.io/>`_ project for creating
  reStructuredText and the Docutils suite;
* Fredrik Lundh for his Alternative Python Reference project from which Sphinx
  got many good ideas.


Contributors to the Python Documentation
----------------------------------------

Many people have contributed to the Python language, the Python standard
library, and the Python documentation.  See :source:`Misc/ACKS` in the Python
source distribution for a partial list of contributors.

It is only with the input and contributions of the Python community
that Python has such wonderful documentation -- Thank You!


================================================
FILE: Doc/bugs.rst
================================================
.. _reporting-bugs:

*****************
Dealing with Bugs
*****************

Python is a mature programming language which has established a reputation for
stability.  In order to maintain this reputation, the developers would like to
know of any deficiencies you find in Python.

It can be sometimes faster to fix bugs yourself and contribute patches to
Python as it streamlines the process and involves less people. Learn how to
:ref:`contribute <contributing-to-python>`.

Documentation bugs
==================

If you find a bug in this documentation or would like to propose an improvement,
please submit a bug report on the :ref:`tracker <using-the-tracker>`.  If you
have a suggestion on how to fix it, include that as well.

If you're short on time, you can also email documentation bug reports to
docs@python.org (behavioral bugs can be sent to python-list@python.org).
'docs@' is a mailing list run by volunteers; your request will be noticed,
though it may take a while to be processed.

.. seealso::

   `Documentation bugs`_
      A list of documentation bugs that have been submitted to the Python issue tracker.

   `Issue Tracking <https://devguide.python.org/tracker/>`_
      Overview of the process involved in reporting an improvement on the tracker.

   `Helping with Documentation <https://devguide.python.org/docquality/#helping-with-documentation>`_
      Comprehensive guide for individuals that are interested in contributing to Python documentation.

   `Documentation Translations <https://devguide.python.org/documenting/#translating>`_
      A list of GitHub pages for documentation translation and their primary contacts.


.. _using-the-tracker:

Using the Python issue tracker
==============================

Issue reports for Python itself should be submitted via the GitHub issues
tracker (https://github.com/python/cpython/issues).
The GitHub issues tracker offers a web form which allows pertinent information
to be entered and submitted to the developers.

The first step in filing a report is to determine whether the problem has
already been reported.  The advantage in doing so, aside from saving the
developers' time, is that you learn what has been done to fix it; it may be that
the problem has already been fixed for the next release, or additional
information is needed (in which case you are welcome to provide it if you can!).
To do this, search the tracker using the search box at the top of the page.

If the problem you're reporting is not already in the list, log in to GitHub.
If you don't already have a GitHub account, create a new account using the
"Sign up" link.
It is not possible to submit a bug report anonymously.

Being now logged in, you can submit an issue.
Click on the "New issue" button in the top bar to report a new issue.

The submission form has two fields, "Title" and "Comment".

For the "Title" field, enter a *very* short description of the problem;
less than ten words is good.

In the "Comment" field, describe the problem in detail, including what you
expected to happen and what did happen.  Be sure to include whether any
extension modules were involved, and what hardware and software platform you
were using (including version information as appropriate).

Each issue report will be reviewed by a developer who will determine what needs to
be done to correct the problem. You will receive an update each time an action is
taken on the issue.


.. seealso::

   `How to Report Bugs Effectively <https://www.chiark.greenend.org.uk/~sgtatham/bugs.html>`_
      Article which goes into some detail about how to create a useful bug report.
      This describes what kind of information is useful and why it is useful.

   `Bug Writing Guidelines <https://bugzilla.mozilla.org/page.cgi?id=bug-writing.html>`_
      Information about writing a good bug report.  Some of this is specific to the
      Mozilla project, but describes general good practices.

.. _contributing-to-python:

Getting started contributing to Python yourself
===============================================

Beyond just reporting bugs that you find, you are also welcome to submit
patches to fix them.  You can find more information on how to get started
patching Python in the `Python Developer's Guide`_.  If you have questions,
the `core-mentorship mailing list`_ is a friendly place to get answers to
any and all questions pertaining to the process of fixing issues in Python.

.. _Documentation bugs: https://github.com/python/cpython/issues?q=is%3Aissue+is%3Aopen+label%3Adocs
.. _Python Developer's Guide: https://devguide.python.org/
.. _core-mentorship mailing list: https://mail.python.org/mailman3/lists/core-mentorship.python.org/


================================================
FILE: Doc/c-api/abstract.rst
================================================
.. highlight:: c

.. _abstract:

**********************
Abstract Objects Layer
**********************

The functions in this chapter interact with Python objects regardless of their
type, or with wide classes of object types (e.g. all numerical types, or all
sequence types).  When used on object types for which they do not apply, they
will raise a Python exception.

It is not possible to use these functions on objects that are not properly
initialized, such as a list object that has been created by :c:func:`PyList_New`,
but whose items have not been set to some non-\ ``NULL`` value yet.

.. toctree::

   object.rst
   call.rst
   number.rst
   sequence.rst
   mapping.rst
   iter.rst
   buffer.rst
   objbuffer.rst


================================================
FILE: Doc/c-api/allocation.rst
================================================
.. highlight:: c

.. _allocating-objects:

Allocating Objects on the Heap
==============================


.. c:function:: PyObject* _PyObject_New(PyTypeObject *type)


.. c:function:: PyVarObject* _PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)


.. c:function:: PyObject* PyObject_Init(PyObject *op, PyTypeObject *type)

   Initialize a newly allocated object *op* with its type and initial
   reference.  Returns the initialized object.  If *type* indicates that the
   object participates in the cyclic garbage detector, it is added to the
   detector's set of observed objects. Other fields of the object are not
   affected.


.. c:function:: PyVarObject* PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)

   This does everything :c:func:`PyObject_Init` does, and also initializes the
   length information for a variable-size object.


.. c:function:: TYPE* PyObject_New(TYPE, PyTypeObject *type)

   Allocate a new Python object using the C structure type *TYPE* and the
   Python type object *type*.  Fields not defined by the Python object header
   are not initialized; the object's reference count will be one.  The size of
   the memory allocation is determined from the :c:member:`~PyTypeObject.tp_basicsize` field of
   the type object.


.. c:function:: TYPE* PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)

   Allocate a new Python object using the C structure type *TYPE* and the
   Python type object *type*.  Fields not defined by the Python object header
   are not initialized.  The allocated memory allows for the *TYPE* structure
   plus *size* fields of the size given by the :c:member:`~PyTypeObject.tp_itemsize` field of
   *type*.  This is useful for implementing objects like tuples, which are
   able to determine their size at construction time.  Embedding the array of
   fields into the same allocation decreases the number of allocations,
   improving the memory management efficiency.


.. c:function:: void PyObject_Del(void *op)

   Releases memory allocated to an object using :c:func:`PyObject_New` or
   :c:func:`PyObject_NewVar`.  This is normally called from the
   :c:member:`~PyTypeObject.tp_dealloc` handler specified in the object's type.  The fields of
   the object should not be accessed after this call as the memory is no
   longer a valid Python object.


.. c:var:: PyObject _Py_NoneStruct

   Object which is visible in Python as ``None``.  This should only be accessed
   using the :c:macro:`Py_None` macro, which evaluates to a pointer to this
   object.


.. seealso::

   :c:func:`PyModule_Create`
      To allocate and create extension modules.



================================================
FILE: Doc/c-api/apiabiversion.rst
================================================
.. highlight:: c

.. _apiabiversion:

***********************
API and ABI Versioning
***********************

CPython exposes its version number in the following macros.
Note that these correspond to the version code is **built** with,
not necessarily the version used at **run time**.

See :ref:`stable` for a discussion of API and ABI stability across versions.

.. c:macro:: PY_MAJOR_VERSION

   The ``3`` in ``3.4.1a2``.

.. c:macro:: PY_MINOR_VERSION

   The ``4`` in ``3.4.1a2``.

.. c:macro:: PY_MICRO_VERSION

   The ``1`` in ``3.4.1a2``.

.. c:macro:: PY_RELEASE_LEVEL

   The ``a`` in ``3.4.1a2``.
   This can be ``0xA`` for alpha, ``0xB`` for beta, ``0xC`` for release
   candidate or ``0xF`` for final.

.. c:macro:: PY_RELEASE_SERIAL

   The ``2`` in ``3.4.1a2``. Zero for final releases.

.. c:macro:: PY_VERSION_HEX

   The Python version number encoded in a single integer.

   The underlying version information can be found by treating it as a 32 bit
   number in the following manner:

   +-------+-------------------------+-------------------------+--------------------------+
   | Bytes | Bits (big endian order) | Meaning                 | Value for ``3.4.1a2``    |
   +=======+=========================+=========================+==========================+
   |   1   |         1-8             |  ``PY_MAJOR_VERSION``   | ``0x03``                 |
   +-------+-------------------------+-------------------------+--------------------------+
   |   2   |         9-16            |  ``PY_MINOR_VERSION``   | ``0x04``                 |
   +-------+-------------------------+-------------------------+--------------------------+
   |   3   |         17-24           |  ``PY_MICRO_VERSION``   | ``0x01``                 |
   +-------+-------------------------+-------------------------+--------------------------+
   |   4   |         25-28           |  ``PY_RELEASE_LEVEL``   | ``0xA``                  |
   +       +-------------------------+-------------------------+--------------------------+
   |       |         29-32           |  ``PY_RELEASE_SERIAL``  | ``0x2``                  |
   +-------+-------------------------+-------------------------+--------------------------+

   Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is
   hexversion ``0x030a00f0``.

   Use this for numeric comparisons, e.g. ``#if PY_VERSION_HEX >= ...``.

   This version is also available via the symbol :data:`Py_Version`.

.. c:var:: const unsigned long Py_Version

   The Python runtime version number encoded in a single constant integer, with
   the same format as the :c:macro:`PY_VERSION_HEX` macro.
   This contains the Python version used at run time.

   .. versionadded:: 3.11

All the given macros are defined in :source:`Include/patchlevel.h`.


================================================
FILE: Doc/c-api/arg.rst
================================================
.. highlight:: c

.. _arg-parsing:

Parsing arguments and building values
=====================================

These functions are useful when creating your own extensions functions and
methods.  Additional information and examples are available in
:ref:`extending-index`.

The first three of these functions described, :c:func:`PyArg_ParseTuple`,
:c:func:`PyArg_ParseTupleAndKeywords`, and :c:func:`PyArg_Parse`, all use *format
strings* which are used to tell the function about the expected arguments.  The
format strings use the same syntax for each of these functions.

-----------------
Parsing arguments
-----------------

A format string consists of zero or more "format units."  A format unit
describes one Python object; it is usually a single character or a parenthesized
sequence of format units.  With a few exceptions, a format unit that is not a
parenthesized sequence normally corresponds to a single address argument to
these functions.  In the following description, the quoted form is the format
unit; the entry in (round) parentheses is the Python object type that matches
the format unit; and the entry in [square] brackets is the type of the C
variable(s) whose address should be passed.

Strings and buffers
-------------------

These formats allow accessing an object as a contiguous chunk of memory.
You don't have to provide raw storage for the returned unicode or bytes
area.

Unless otherwise stated, buffers are not NUL-terminated.

There are three ways strings and buffers can be converted to C:

*  Formats such as ``y*`` and ``s*`` fill a :c:type:`Py_buffer` structure.
   This locks the underlying buffer so that the caller can subsequently use
   the buffer even inside a :c:type:`Py_BEGIN_ALLOW_THREADS`
   block without the risk of mutable data being resized or destroyed.
   As a result, **you have to call** :c:func:`PyBuffer_Release` after you have
   finished processing the data (or in any early abort case).

*  The ``es``, ``es#``, ``et`` and ``et#`` formats allocate the result buffer.
   **You have to call** :c:func:`PyMem_Free` after you have finished
   processing the data (or in any early abort case).

*  .. _c-arg-borrowed-buffer:

   Other formats take a :class:`str` or a read-only :term:`bytes-like object`,
   such as :class:`bytes`, and provide a ``const char *`` pointer to
   its buffer.
   In this case the buffer is "borrowed": it is managed by the corresponding
   Python object, and shares the lifetime of this object.
   You won't have to release any memory yourself.

   To ensure that the underlying buffer may be safely borrowed, the object's
   :c:member:`PyBufferProcs.bf_releasebuffer` field must be ``NULL``.
   This disallows common mutable objects such as :class:`bytearray`,
   but also some read-only objects such as :class:`memoryview` of
   :class:`bytes`.

   Besides this ``bf_releasebuffer`` requirement, there is no check to verify
   whether the input object is immutable (e.g. whether it would honor a request
   for a writable buffer, or whether another thread can mutate the data).

.. note::

   For all ``#`` variants of formats (``s#``, ``y#``, etc.), the macro
   :c:macro:`PY_SSIZE_T_CLEAN` must be defined before including
   :file:`Python.h`. On Python 3.9 and older, the type of the length argument
   is :c:type:`Py_ssize_t` if the :c:macro:`PY_SSIZE_T_CLEAN` macro is defined,
   or int otherwise.


``s`` (:class:`str`) [const char \*]
   Convert a Unicode object to a C pointer to a character string.
   A pointer to an existing string is stored in the character pointer
   variable whose address you pass.  The C string is NUL-terminated.
   The Python string must not contain embedded null code points; if it does,
   a :exc:`ValueError` exception is raised. Unicode objects are converted
   to C strings using ``'utf-8'`` encoding. If this conversion fails, a
   :exc:`UnicodeError` is raised.

   .. note::
      This format does not accept :term:`bytes-like objects
      <bytes-like object>`.  If you want to accept
      filesystem paths and convert them to C character strings, it is
      preferable to use the ``O&`` format with :c:func:`PyUnicode_FSConverter`
      as *converter*.

   .. versionchanged:: 3.5
      Previously, :exc:`TypeError` was raised when embedded null code points
      were encountered in the Python string.

``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]
   This format accepts Unicode objects as well as bytes-like objects.
   It fills a :c:type:`Py_buffer` structure provided by the caller.
   In this case the resulting C string may contain embedded NUL bytes.
   Unicode objects are converted to C strings using ``'utf-8'`` encoding.

``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \*, :c:type:`Py_ssize_t`]
   Like ``s*``, except that it provides a :ref:`borrowed buffer <c-arg-borrowed-buffer>`.
   The result is stored into two C variables,
   the first one a pointer to a C string, the second one its length.
   The string may contain embedded null bytes. Unicode objects are converted
   to C strings using ``'utf-8'`` encoding.

``z`` (:class:`str` or ``None``) [const char \*]
   Like ``s``, but the Python object may also be ``None``, in which case the C
   pointer is set to ``NULL``.

``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]
   Like ``s*``, but the Python object may also be ``None``, in which case the
   ``buf`` member of the :c:type:`Py_buffer` structure is set to ``NULL``.

``z#`` (:class:`str`, read-only :term:`bytes-like object` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
   Like ``s#``, but the Python object may also be ``None``, in which case the C
   pointer is set to ``NULL``.

``y`` (read-only :term:`bytes-like object`) [const char \*]
   This format converts a bytes-like object to a C pointer to a
   :ref:`borrowed <c-arg-borrowed-buffer>` character string;
   it does not accept Unicode objects.  The bytes buffer must not
   contain embedded null bytes; if it does, a :exc:`ValueError`
   exception is raised.

   .. versionchanged:: 3.5
      Previously, :exc:`TypeError` was raised when embedded null bytes were
      encountered in the bytes buffer.

``y*`` (:term:`bytes-like object`) [Py_buffer]
   This variant on ``s*`` doesn't accept Unicode objects, only
   bytes-like objects.  **This is the recommended way to accept
   binary data.**

``y#`` (read-only :term:`bytes-like object`) [const char \*, :c:type:`Py_ssize_t`]
   This variant on ``s#`` doesn't accept Unicode objects, only bytes-like
   objects.

``S`` (:class:`bytes`) [PyBytesObject \*]
   Requires that the Python object is a :class:`bytes` object, without
   attempting any conversion.  Raises :exc:`TypeError` if the object is not
   a bytes object.  The C variable may also be declared as :c:expr:`PyObject*`.

``Y`` (:class:`bytearray`) [PyByteArrayObject \*]
   Requires that the Python object is a :class:`bytearray` object, without
   attempting any conversion.  Raises :exc:`TypeError` if the object is not
   a :class:`bytearray` object. The C variable may also be declared as :c:expr:`PyObject*`.

``U`` (:class:`str`) [PyObject \*]
   Requires that the Python object is a Unicode object, without attempting
   any conversion.  Raises :exc:`TypeError` if the object is not a Unicode
   object.  The C variable may also be declared as :c:expr:`PyObject*`.

``w*`` (read-write :term:`bytes-like object`) [Py_buffer]
   This format accepts any object which implements the read-write buffer
   interface. It fills a :c:type:`Py_buffer` structure provided by the caller.
   The buffer may contain embedded null bytes. The caller have to call
   :c:func:`PyBuffer_Release` when it is done with the buffer.

``es`` (:class:`str`) [const char \*encoding, char \*\*buffer]
   This variant on ``s`` is used for encoding Unicode into a character buffer.
   It only works for encoded data without embedded NUL bytes.

   This format requires two arguments.  The first is only used as input, and
   must be a :c:expr:`const char*` which points to the name of an encoding as a
   NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
   An exception is raised if the named encoding is not known to Python.  The
   second argument must be a :c:expr:`char**`; the value of the pointer it
   references will be set to a buffer with the contents of the argument text.
   The text will be encoded in the encoding specified by the first argument.

   :c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy the
   encoded data into this buffer and adjust *\*buffer* to reference the newly
   allocated storage.  The caller is responsible for calling :c:func:`PyMem_Free` to
   free the allocated buffer after use.

``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer]
   Same as ``es`` except that byte string objects are passed through without
   recoding them.  Instead, the implementation assumes that the byte string object uses
   the encoding passed in as parameter.

``es#`` (:class:`str`) [const char \*encoding, char \*\*buffer, :c:type:`Py_ssize_t` \*buffer_length]
   This variant on ``s#`` is used for encoding Unicode into a character buffer.
   Unlike the ``es`` format, this variant allows input data which contains NUL
   characters.

   It requires three arguments.  The first is only used as input, and must be a
   :c:expr:`const char*` which points to the name of an encoding as a
   NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
   An exception is raised if the named encoding is not known to Python.  The
   second argument must be a :c:expr:`char**`; the value of the pointer it
   references will be set to a buffer with the contents of the argument text.
   The text will be encoded in the encoding specified by the first argument.
   The third argument must be a pointer to an integer; the referenced integer
   will be set to the number of bytes in the output buffer.

   There are two modes of operation:

   If *\*buffer* points a ``NULL`` pointer, the function will allocate a buffer of
   the needed size, copy the encoded data into this buffer and set *\*buffer* to
   reference the newly allocated storage.  The caller is responsible for calling
   :c:func:`PyMem_Free` to free the allocated buffer after usage.

   If *\*buffer* points to a non-``NULL`` pointer (an already allocated buffer),
   :c:func:`PyArg_ParseTuple` will use this location as the buffer and interpret the
   initial value of *\*buffer_length* as the buffer size.  It will then copy the
   encoded data into the buffer and NUL-terminate it.  If the buffer is not large
   enough, a :exc:`ValueError` will be set.

   In both cases, *\*buffer_length* is set to the length of the encoded data
   without the trailing NUL byte.

``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer, :c:type:`Py_ssize_t` \*buffer_length]
   Same as ``es#`` except that byte string objects are passed through without recoding
   them. Instead, the implementation assumes that the byte string object uses the
   encoding passed in as parameter.

.. versionchanged:: 3.12
   ``u``, ``u#``, ``Z``, and ``Z#`` are removed because they used a legacy
   ``Py_UNICODE*`` representation.


Numbers
-------

``b`` (:class:`int`) [unsigned char]
   Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
   :c:expr:`unsigned char`.

``B`` (:class:`int`) [unsigned char]
   Convert a Python integer to a tiny int without overflow checking, stored in a C
   :c:expr:`unsigned char`.

``h`` (:class:`int`) [short int]
   Convert a Python integer to a C :c:expr:`short int`.

``H`` (:class:`int`) [unsigned short int]
   Convert a Python integer to a C :c:expr:`unsigned short int`, without overflow
   checking.

``i`` (:class:`int`) [int]
   Convert a Python integer to a plain C :c:expr:`int`.

``I`` (:class:`int`) [unsigned int]
   Convert a Python integer to a C :c:expr:`unsigned int`, without overflow
   checking.

``l`` (:class:`int`) [long int]
   Convert a Python integer to a C :c:expr:`long int`.

``k`` (:class:`int`) [unsigned long]
   Convert a Python integer to a C :c:expr:`unsigned long` without
   overflow checking.

``L`` (:class:`int`) [long long]
   Convert a Python integer to a C :c:expr:`long long`.

``K`` (:class:`int`) [unsigned long long]
   Convert a Python integer to a C :c:expr:`unsigned long long`
   without overflow checking.

``n`` (:class:`int`) [:c:type:`Py_ssize_t`]
   Convert a Python integer to a C :c:type:`Py_ssize_t`.

``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]
   Convert a Python byte, represented as a :class:`bytes` or
   :class:`bytearray` object of length 1, to a C :c:expr:`char`.

   .. versionchanged:: 3.3
      Allow :class:`bytearray` objects.

``C`` (:class:`str` of length 1) [int]
   Convert a Python character, represented as a :class:`str` object of
   length 1, to a C :c:expr:`int`.

``f`` (:class:`float`) [float]
   Convert a Python floating point number to a C :c:expr:`float`.

``d`` (:class:`float`) [double]
   Convert a Python floating point number to a C :c:expr:`double`.

``D`` (:class:`complex`) [Py_complex]
   Convert a Python complex number to a C :c:type:`Py_complex` structure.

Other objects
-------------

``O`` (object) [PyObject \*]
   Store a Python object (without any conversion) in a C object pointer.  The C
   program thus receives the actual object that was passed.  The object's reference
   count is not increased.  The pointer stored is not ``NULL``.

``O!`` (object) [*typeobject*, PyObject \*]
   Store a Python object in a C object pointer.  This is similar to ``O``, but
   takes two C arguments: the first is the address of a Python type object, the
   second is the address of the C variable (of type :c:expr:`PyObject*`) into which
   the object pointer is stored.  If the Python object does not have the required
   type, :exc:`TypeError` is raised.

.. _o_ampersand:

``O&`` (object) [*converter*, *anything*]
   Convert a Python object to a C variable through a *converter* function.  This
   takes two arguments: the first is a function, the second is the address of a C
   variable (of arbitrary type), converted to :c:expr:`void *`.  The *converter*
   function in turn is called as follows::

      status = converter(object, address);

   where *object* is the Python object to be converted and *address* is the
   :c:expr:`void*` argument that was passed to the ``PyArg_Parse*`` function.
   The returned *status* should be ``1`` for a successful conversion and ``0`` if
   the conversion has failed.  When the conversion fails, the *converter* function
   should raise an exception and leave the content of *address* unmodified.

   If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a
   second time if the argument parsing eventually fails, giving the converter a
   chance to release any memory that it had already allocated. In this second
   call, the *object* parameter will be ``NULL``; *address* will have the same value
   as in the original call.

   .. versionchanged:: 3.1
      ``Py_CLEANUP_SUPPORTED`` was added.

``p`` (:class:`bool`) [int]
   Tests the value passed in for truth (a boolean **p**\ redicate) and converts
   the result to its equivalent C true/false integer value.
   Sets the int to ``1`` if the expression was true and ``0`` if it was false.
   This accepts any valid Python value.  See :ref:`truth` for more
   information about how Python tests values for truth.

   .. versionadded:: 3.3

``(items)`` (:class:`tuple`) [*matching-items*]
   The object must be a Python sequence whose length is the number of format units
   in *items*.  The C arguments must correspond to the individual format units in
   *items*.  Format units for sequences may be nested.

It is possible to pass "long" integers (integers whose value exceeds the
platform's :const:`LONG_MAX`) however no proper range checking is done --- the
most significant bits are silently truncated when the receiving field is too
small to receive the value (actually, the semantics are inherited from downcasts
in C --- your mileage may vary).

A few other characters have a meaning in a format string.  These may not occur
inside nested parentheses.  They are:

``|``
   Indicates that the remaining arguments in the Python argument list are optional.
   The C variables corresponding to optional arguments should be initialized to
   their default value --- when an optional argument is not specified,
   :c:func:`PyArg_ParseTuple` does not touch the contents of the corresponding C
   variable(s).

``$``
   :c:func:`PyArg_ParseTupleAndKeywords` only:
   Indicates that the remaining arguments in the Python argument list are
   keyword-only.  Currently, all keyword-only arguments must also be optional
   arguments, so ``|`` must always be specified before ``$`` in the format
   string.

   .. versionadded:: 3.3

``:``
   The list of format units ends here; the string after the colon is used as the
   function name in error messages (the "associated value" of the exception that
   :c:func:`PyArg_ParseTuple` raises).

``;``
   The list of format units ends here; the string after the semicolon is used as
   the error message *instead* of the default error message.  ``:`` and ``;``
   mutually exclude each other.

Note that any Python object references which are provided to the caller are
*borrowed* references; do not decrement their reference count!

Additional arguments passed to these functions must be addresses of variables
whose type is determined by the format string; these are used to store values
from the input tuple.  There are a few cases, as described in the list of format
units above, where these parameters are used as input values; they should match
what is specified for the corresponding format unit in that case.

For the conversion to succeed, the *arg* object must match the format
and the format must be exhausted.  On success, the
``PyArg_Parse*`` functions return true, otherwise they return
false and raise an appropriate exception. When the
``PyArg_Parse*`` functions fail due to conversion failure in one
of the format units, the variables at the addresses corresponding to that
and the following format units are left untouched.

API Functions
-------------

.. c:function:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)

   Parse the parameters of a function that takes only positional parameters into
   local variables.  Returns true on success; on failure, it returns false and
   raises the appropriate exception.


.. c:function:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)

   Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list rather
   than a variable number of arguments.


.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)

   Parse the parameters of a function that takes both positional and keyword
   parameters into local variables.  The *keywords* argument is a
   ``NULL``-terminated array of keyword parameter names.  Empty names denote
   :ref:`positional-only parameters <positional-only_parameter>`.
   Returns true on success; on failure, it returns false and raises the
   appropriate exception.

   .. versionchanged:: 3.6
      Added support for :ref:`positional-only parameters
      <positional-only_parameter>`.


.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)

   Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
   va_list rather than a variable number of arguments.


.. c:function:: int PyArg_ValidateKeywordArguments(PyObject *)

   Ensure that the keys in the keywords argument dictionary are strings.  This
   is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since the
   latter already does this check.

   .. versionadded:: 3.2


.. XXX deprecated, will be removed
.. c:function:: int PyArg_Parse(PyObject *args, const char *format, ...)

   Function used to deconstruct the argument lists of "old-style" functions ---
   these are functions which use the :const:`METH_OLDARGS` parameter parsing
   method, which has been removed in Python 3.  This is not recommended for use
   in parameter parsing in new code, and most code in the standard interpreter
   has been modified to no longer use this for that purpose.  It does remain a
   convenient way to decompose other tuples, however, and may continue to be
   used for that purpose.


.. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)

   A simpler form of parameter retrieval which does not use a format string to
   specify the types of the arguments.  Functions which use this method to retrieve
   their parameters should be declared as :const:`METH_VARARGS` in function or
   method tables.  The tuple containing the actual parameters should be passed as
   *args*; it must actually be a tuple.  The length of the tuple must be at least
   *min* and no more than *max*; *min* and *max* may be equal.  Additional
   arguments must be passed to the function, each of which should be a pointer to a
   :c:expr:`PyObject*` variable; these will be filled in with the values from
   *args*; they will contain :term:`borrowed references <borrowed reference>`.
   The variables which correspond
   to optional parameters not given by *args* will not be filled in; these should
   be initialized by the caller. This function returns true on success and false if
   *args* is not a tuple or contains the wrong number of elements; an exception
   will be set if there was a failure.

   This is an example of the use of this function, taken from the sources for the
   :mod:`_weakref` helper module for weak references::

      static PyObject *
      weakref_ref(PyObject *self, PyObject *args)
      {
          PyObject *object;
          PyObject *callback = NULL;
          PyObject *result = NULL;

          if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
              result = PyWeakref_NewRef(object, callback);
          }
          return result;
      }

   The call to :c:func:`PyArg_UnpackTuple` in this example is entirely equivalent to
   this call to :c:func:`PyArg_ParseTuple`::

      PyArg_ParseTuple(args, "O|O:ref", &object, &callback)


---------------
Building values
---------------

.. c:function:: PyObject* Py_BuildValue(const char *format, ...)

   Create a new value based on a format string similar to those accepted by the
   ``PyArg_Parse*`` family of functions and a sequence of values.  Returns
   the value or ``NULL`` in the case of an error; an exception will be raised if
   ``NULL`` is returned.

   :c:func:`Py_BuildValue` does not always build a tuple.  It builds a tuple only if
   its format string contains two or more format units.  If the format string is
   empty, it returns ``None``; if it contains exactly one format unit, it returns
   whatever object is described by that format unit.  To force it to return a tuple
   of size 0 or one, parenthesize the format string.

   When memory buffers are passed as parameters to supply data to build objects, as
   for the ``s`` and ``s#`` formats, the required data is copied.  Buffers provided
   by the caller are never referenced by the objects created by
   :c:func:`Py_BuildValue`.  In other words, if your code invokes :c:func:`malloc`
   and passes the allocated memory to :c:func:`Py_BuildValue`, your code is
   responsible for calling :c:func:`free` for that memory once
   :c:func:`Py_BuildValue` returns.

   In the following description, the quoted form is the format unit; the entry in
   (round) parentheses is the Python object type that the format unit will return;
   and the entry in [square] brackets is the type of the C value(s) to be passed.

   The characters space, tab, colon and comma are ignored in format strings (but
   not within format units such as ``s#``).  This can be used to make long format
   strings a tad more readable.

   ``s`` (:class:`str` or ``None``) [const char \*]
      Convert a null-terminated C string to a Python :class:`str` object using ``'utf-8'``
      encoding. If the C string pointer is ``NULL``, ``None`` is used.

   ``s#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
      Convert a C string and its length to a Python :class:`str` object using ``'utf-8'``
      encoding. If the C string pointer is ``NULL``, the length is ignored and
      ``None`` is returned.

   ``y`` (:class:`bytes`) [const char \*]
      This converts a C string to a Python :class:`bytes` object.  If the C
      string pointer is ``NULL``, ``None`` is returned.

   ``y#`` (:class:`bytes`) [const char \*, :c:type:`Py_ssize_t`]
      This converts a C string and its lengths to a Python object.  If the C
      string pointer is ``NULL``, ``None`` is returned.

   ``z`` (:class:`str` or ``None``) [const char \*]
      Same as ``s``.

   ``z#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
      Same as ``s#``.

   ``u`` (:class:`str`) [const wchar_t \*]
      Convert a null-terminated :c:expr:`wchar_t` buffer of Unicode (UTF-16 or UCS-4)
      data to a Python Unicode object.  If the Unicode buffer pointer is ``NULL``,
      ``None`` is returned.

   ``u#`` (:class:`str`) [const wchar_t \*, :c:type:`Py_ssize_t`]
      Convert a Unicode (UTF-16 or UCS-4) data buffer and its length to a Python
      Unicode object.   If the Unicode buffer pointer is ``NULL``, the length is ignored
      and ``None`` is returned.

   ``U`` (:class:`str` or ``None``) [const char \*]
      Same as ``s``.

   ``U#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
      Same as ``s#``.

   ``i`` (:class:`int`) [int]
      Convert a plain C :c:expr:`int` to a Python integer object.

   ``b`` (:class:`int`) [char]
      Convert a plain C :c:expr:`char` to a Python integer object.

   ``h`` (:class:`int`) [short int]
      Convert a plain C :c:expr:`short int` to a Python integer object.

   ``l`` (:class:`int`) [long int]
      Convert a C :c:expr:`long int` to a Python integer object.

   ``B`` (:class:`int`) [unsigned char]
      Convert a C :c:expr:`unsigned char` to a Python integer object.

   ``H`` (:class:`int`) [unsigned short int]
      Convert a C :c:expr:`unsigned short int` to a Python integer object.

   ``I`` (:class:`int`) [unsigned int]
      Convert a C :c:expr:`unsigned int` to a Python integer object.

   ``k`` (:class:`int`) [unsigned long]
      Convert a C :c:expr:`unsigned long` to a Python integer object.

   ``L`` (:class:`int`) [long long]
      Convert a C :c:expr:`long long` to a Python integer object.

   ``K`` (:class:`int`) [unsigned long long]
      Convert a C :c:expr:`unsigned long long` to a Python integer object.

   ``n`` (:class:`int`) [:c:type:`Py_ssize_t`]
      Convert a C :c:type:`Py_ssize_t` to a Python integer.

   ``c`` (:class:`bytes` of length 1) [char]
      Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` object of
      length 1.

   ``C`` (:class:`str` of length 1) [int]
      Convert a C :c:expr:`int` representing a character to Python :class:`str`
      object of length 1.

   ``d`` (:class:`float`) [double]
      Convert a C :c:expr:`double` to a Python floating point number.

   ``f`` (:class:`float`) [float]
      Convert a C :c:expr:`float` to a Python floating point number.

   ``D`` (:class:`complex`) [Py_complex \*]
      Convert a C :c:type:`Py_complex` structure to a Python complex number.

   ``O`` (object) [PyObject \*]
      Pass a Python object untouched (except for its reference count, which is
      incremented by one).  If the object passed in is a ``NULL`` pointer, it is assumed
      that this was caused because the call producing the argument found an error and
      set an exception. Therefore, :c:func:`Py_BuildValue` will return ``NULL`` but won't
      raise an exception.  If no exception has been raised yet, :exc:`SystemError` is
      set.

   ``S`` (object) [PyObject \*]
      Same as ``O``.

   ``N`` (object) [PyObject \*]
      Same as ``O``, except it doesn't increment the reference count on the object.
      Useful when the object is created by a call to an object constructor in the
      argument list.

   ``O&`` (object) [*converter*, *anything*]
      Convert *anything* to a Python object through a *converter* function.  The
      function is called with *anything* (which should be compatible with :c:expr:`void*`)
      as its argument and should return a "new" Python object, or ``NULL`` if an
      error occurred.

   ``(items)`` (:class:`tuple`) [*matching-items*]
      Convert a sequence of C values to a Python tuple with the same number of items.

   ``[items]`` (:class:`list`) [*matching-items*]
      Convert a sequence of C values to a Python list with the same number of items.

   ``{items}`` (:class:`dict`) [*matching-items*]
      Convert a sequence of C values to a Python dictionary.  Each pair of consecutive
      C values adds one item to the dictionary, serving as key and value,
      respectively.

   If there is an error in the format string, the :exc:`SystemError` exception is
   set and ``NULL`` returned.

.. c:function:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)

   Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list
   rather than a variable number of arguments.


================================================
FILE: Doc/c-api/bool.rst
================================================
.. highlight:: c

.. _boolobjects:

Boolean Objects
---------------

Booleans in Python are implemented as a subclass of integers.  There are only
two booleans, :const:`Py_False` and :const:`Py_True`.  As such, the normal
creation and deletion functions don't apply to booleans.  The following macros
are available, however.


.. c:function:: int PyBool_Check(PyObject *o)

   Return true if *o* is of type :c:data:`PyBool_Type`.  This function always
   succeeds.


.. c:var:: PyObject* Py_False

   The Python ``False`` object.  This object has no methods.  It needs to be
   treated just like any other object with respect to reference counts.


.. c:var:: PyObject* Py_True

   The Python ``True`` object.  This object has no methods.  It needs to be treated
   just like any other object with respect to reference counts.


.. c:macro:: Py_RETURN_FALSE

   Return :const:`Py_False` from a function, properly incrementing its reference
   count.


.. c:macro:: Py_RETURN_TRUE

   Return :const:`Py_True` from a function, properly incrementing its reference
   count.


.. c:function:: PyObject* PyBool_FromLong(long v)

   Return a new reference to :const:`Py_True` or :const:`Py_False` depending on the
   truth value of *v*.


================================================
FILE: Doc/c-api/buffer.rst
================================================
.. highlight:: c

.. index::
   single: buffer protocol
   single: buffer interface; (see buffer protocol)
   single: buffer object; (see buffer protocol)

.. _bufferobjects:

Buffer Protocol
---------------

.. sectionauthor:: Greg Stein <gstein@lyra.org>
.. sectionauthor:: Benjamin Peterson
.. sectionauthor:: Stefan Krah


Certain objects available in Python wrap access to an underlying memory
array or *buffer*.  Such objects include the built-in :class:`bytes` and
:class:`bytearray`, and some extension types like :class:`array.array`.
Third-party libraries may define their own types for special purposes, such
as image processing or numeric analysis.

While each of these types have their own semantics, they share the common
characteristic of being backed by a possibly large memory buffer.  It is
then desirable, in some situations, to access that buffer directly and
without intermediate copying.

Python provides such a facility at the C level in the form of the :ref:`buffer
protocol <bufferobjects>`.  This protocol has two sides:

.. index:: single: PyBufferProcs

- on the producer side, a type can export a "buffer interface" which allows
  objects of that type to expose information about their underlying buffer.
  This interface is described in the section :ref:`buffer-structs`;

- on the consumer side, several means are available to obtain a pointer to
  the raw underlying data of an object (for example a method parameter).

Simple objects such as :class:`bytes` and :class:`bytearray` expose their
underlying buffer in byte-oriented form.  Other forms are possible; for example,
the elements exposed by an :class:`array.array` can be multi-byte values.

An example consumer of the buffer interface is the :meth:`~io.BufferedIOBase.write`
method of file objects: any object that can export a series of bytes through
the buffer interface can be written to a file.  While :meth:`write` only
needs read-only access to the internal contents of the object passed to it,
other methods such as :meth:`~io.BufferedIOBase.readinto` need write access
to the contents of their argument.  The buffer interface allows objects to
selectively allow or reject exporting of read-write and read-only buffers.

There are two ways for a consumer of the buffer interface to acquire a buffer
over a target object:

* call :c:func:`PyObject_GetBuffer` with the right parameters;

* call :c:func:`PyArg_ParseTuple` (or one of its siblings) with one of the
  ``y*``, ``w*`` or ``s*`` :ref:`format codes <arg-parsing>`.

In both cases, :c:func:`PyBuffer_Release` must be called when the buffer
isn't needed anymore.  Failure to do so could lead to various issues such as
resource leaks.


.. _buffer-structure:

Buffer structure
================

Buffer structures (or simply "buffers") are useful as a way to expose the
binary data from another object to the Python programmer.  They can also be
used as a zero-copy slicing mechanism.  Using their ability to reference a
block of memory, it is possible to expose any data to the Python programmer
quite easily.  The memory could be a large, constant array in a C extension,
it could be a raw block of memory for manipulation before passing to an
operating system library, or it could be used to pass around structured data
in its native, in-memory format.

Contrary to most data types exposed by the Python interpreter, buffers
are not :c:type:`PyObject` pointers but rather simple C structures.  This
allows them to be created and copied very simply.  When a generic wrapper
around a buffer is needed, a :ref:`memoryview <memoryview-objects>` object
can be created.

For short instructions how to write an exporting object, see
:ref:`Buffer Object Structures <buffer-structs>`. For obtaining
a buffer, see :c:func:`PyObject_GetBuffer`.

.. c:type:: Py_buffer

   .. c:member:: void *buf

      A pointer to the start of the logical structure described by the buffer
      fields. This can be any location within the underlying physical memory
      block of the exporter. For example, with negative :c:member:`~Py_buffer.strides`
      the value may point to the end of the memory block.

      For :term:`contiguous` arrays, the value points to the beginning of
      the memory block.

   .. c:member:: PyObject *obj

      A new reference to the exporting object. The reference is owned by
      the consumer and automatically decremented and set to ``NULL`` by
      :c:func:`PyBuffer_Release`. The field is the equivalent of the return
      value of any standard C-API function.

      As a special case, for *temporary* buffers that are wrapped by
      :c:func:`PyMemoryView_FromBuffer` or :c:func:`PyBuffer_FillInfo`
      this field is ``NULL``. In general, exporting objects MUST NOT
      use this scheme.

   .. c:member:: Py_ssize_t len

      ``product(shape) * itemsize``. For contiguous arrays, this is the length
      of the underlying memory block. For non-contiguous arrays, it is the length
      that the logical structure would have if it were copied to a contiguous
      representation.

      Accessing ``((char *)buf)[0] up to ((char *)buf)[len-1]`` is only valid
      if the buffer has been obtained by a request that guarantees contiguity. In
      most cases such a request will be :c:macro:`PyBUF_SIMPLE` or :c:macro:`PyBUF_WRITABLE`.

   .. c:member:: int readonly

      An indicator of whether the buffer is read-only. This field is controlled
      by the :c:macro:`PyBUF_WRITABLE` flag.

   .. c:member:: Py_ssize_t itemsize

      Item size in bytes of a single element. Same as the value of :func:`struct.calcsize`
      called on non-``NULL`` :c:member:`~Py_buffer.format` values.

      Important exception: If a consumer requests a buffer without the
      :c:macro:`PyBUF_FORMAT` flag, :c:member:`~Py_buffer.format` will
      be set to  ``NULL``,  but :c:member:`~Py_buffer.itemsize` still has
      the value for the original format.

      If :c:member:`~Py_buffer.shape` is present, the equality
      ``product(shape) * itemsize == len`` still holds and the consumer
      can use :c:member:`~Py_buffer.itemsize` to navigate the buffer.

      If :c:member:`~Py_buffer.shape` is ``NULL`` as a result of a :c:macro:`PyBUF_SIMPLE`
      or a :c:macro:`PyBUF_WRITABLE` request, the consumer must disregard
      :c:member:`~Py_buffer.itemsize` and assume ``itemsize == 1``.

   .. c:member:: const char *format

      A *NUL* terminated string in :mod:`struct` module style syntax describing
      the contents of a single item. If this is ``NULL``, ``"B"`` (unsigned bytes)
      is assumed.

      This field is controlled by the :c:macro:`PyBUF_FORMAT` flag.

   .. c:member:: int ndim

      The number of dimensions the memory represents as an n-dimensional array.
      If it is ``0``, :c:member:`~Py_buffer.buf` points to a single item representing
      a scalar. In this case, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`
      and :c:member:`~Py_buffer.suboffsets` MUST be ``NULL``.

      The macro :c:macro:`PyBUF_MAX_NDIM` limits the maximum number of dimensions
      to 64. Exporters MUST respect this limit, consumers of multi-dimensional
      buffers SHOULD be able to handle up to :c:macro:`PyBUF_MAX_NDIM` dimensions.

   .. c:member:: Py_ssize_t *shape

      An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
      indicating the shape of the memory as an n-dimensional array. Note that
      ``shape[0] * ... * shape[ndim-1] * itemsize`` MUST be equal to
      :c:member:`~Py_buffer.len`.

      Shape values are restricted to ``shape[n] >= 0``. The case
      ``shape[n] == 0`` requires special attention. See `complex arrays`_
      for further information.

      The shape array is read-only for the consumer.

   .. c:member:: Py_ssize_t *strides

      An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
      giving the number of bytes to skip to get to a new element in each
      dimension.

      Stride values can be any integer. For regular arrays, strides are
      usually positive, but a consumer MUST be able to handle the case
      ``strides[n] <= 0``. See `complex arrays`_ for further information.

      The strides array is read-only for the consumer.

   .. c:member:: Py_ssize_t *suboffsets

      An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`.
      If ``suboffsets[n] >= 0``, the values stored along the nth dimension are
      pointers and the suboffset value dictates how many bytes to add to each
      pointer after de-referencing. A suboffset value that is negative
      indicates that no de-referencing should occur (striding in a contiguous
      memory block).

      If all suboffsets are negative (i.e. no de-referencing is needed), then
      this field must be ``NULL`` (the default value).

      This type of array representation is used by the Python Imaging Library
      (PIL). See `complex arrays`_ for further information how to access elements
      of such an array.

      The suboffsets array is read-only for the consumer.

   .. c:member:: void *internal

      This is for use internally by the exporting object. For example, this
      might be re-cast as an integer by the exporter and used to store flags
      about whether or not the shape, strides, and suboffsets arrays must be
      freed when the buffer is released. The consumer MUST NOT alter this
      value.

.. _buffer-request-types:

Buffer request types
====================

Buffers are usually obtained by sending a buffer request to an exporting
object via :c:func:`PyObject_GetBuffer`. Since the complexity of the logical
structure of the memory can vary drastically, the consumer uses the *flags*
argument to specify the exact buffer type it can handle.

All :c:data:`Py_buffer` fields are unambiguously defined by the request
type.

request-independent fields
~~~~~~~~~~~~~~~~~~~~~~~~~~
The following fields are not influenced by *flags* and must always be filled in
with the correct values: :c:member:`~Py_buffer.obj`, :c:member:`~Py_buffer.buf`,
:c:member:`~Py_buffer.len`, :c:member:`~Py_buffer.itemsize`, :c:member:`~Py_buffer.ndim`.


readonly, format
~~~~~~~~~~~~~~~~

   .. c:macro:: PyBUF_WRITABLE

      Controls the :c:member:`~Py_buffer.readonly` field. If set, the exporter
      MUST provide a writable buffer or else report failure. Otherwise, the
      exporter MAY provide either a read-only or writable buffer, but the choice
      MUST be consistent for all consumers.

   .. c:macro:: PyBUF_FORMAT

      Controls the :c:member:`~Py_buffer.format` field. If set, this field MUST
      be filled in correctly. Otherwise, this field MUST be ``NULL``.


:c:macro:`PyBUF_WRITABLE` can be \|'d to any of the flags in the next section.
Since :c:macro:`PyBUF_SIMPLE` is defined as 0, :c:macro:`PyBUF_WRITABLE`
can be used as a stand-alone flag to request a simple writable buffer.

:c:macro:`PyBUF_FORMAT` can be \|'d to any of the flags except :c:macro:`PyBUF_SIMPLE`.
The latter already implies format ``B`` (unsigned bytes).


shape, strides, suboffsets
~~~~~~~~~~~~~~~~~~~~~~~~~~

The flags that control the logical structure of the memory are listed
in decreasing order of complexity. Note that each flag contains all bits
of the flags below it.

.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|

+-----------------------------+-------+---------+------------+
|  Request                    | shape | strides | suboffsets |
+=============================+=======+=========+============+
| .. c:macro:: PyBUF_INDIRECT |  yes  |   yes   | if needed  |
+-----------------------------+-------+---------+------------+
| .. c:macro:: PyBUF_STRIDES  |  yes  |   yes   |    NULL    |
+-----------------------------+-------+---------+------------+
| .. c:macro:: PyBUF_ND       |  yes  |   NULL  |    NULL    |
+-----------------------------+-------+---------+------------+
| .. c:macro:: PyBUF_SIMPLE   |  NULL |   NULL  |    NULL    |
+-----------------------------+-------+---------+------------+


.. index:: contiguous, C-contiguous, Fortran contiguous

contiguity requests
~~~~~~~~~~~~~~~~~~~

C or Fortran :term:`contiguity <contiguous>` can be explicitly requested,
with and without stride information. Without stride information, the buffer
must be C-contiguous.

.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|l|

+-----------------------------------+-------+---------+------------+--------+
|  Request                          | shape | strides | suboffsets | contig |
+===================================+=======+=========+============+========+
| .. c:macro:: PyBUF_C_CONTIGUOUS   |  yes  |   yes   |    NULL    |   C    |
+-----------------------------------+-------+---------+------------+--------+
| .. c:macro:: PyBUF_F_CONTIGUOUS   |  yes  |   yes   |    NULL    |   F    |
+-----------------------------------+-------+---------+------------+--------+
| .. c:macro:: PyBUF_ANY_CONTIGUOUS |  yes  |   yes   |    NULL    | C or F |
+-----------------------------------+-------+---------+------------+--------+
| :c:macro:`PyBUF_ND`               |  yes  |   NULL  |    NULL    |   C    |
+-----------------------------------+-------+---------+------------+--------+


compound requests
~~~~~~~~~~~~~~~~~

All possible requests are fully defined by some combination of the flags in
the previous section. For convenience, the buffer protocol provides frequently
used combinations as single flags.

In the following table *U* stands for undefined contiguity. The consumer would
have to call :c:func:`PyBuffer_IsContiguous` to determine contiguity.

.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|l|l|l|

+-------------------------------+-------+---------+------------+--------+----------+--------+
|  Request                      | shape | strides | suboffsets | contig | readonly | format |
+===============================+=======+=========+============+========+==========+========+
| .. c:macro:: PyBUF_FULL       |  yes  |   yes   | if needed  |   U    |     0    |  yes   |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_FULL_RO    |  yes  |   yes   | if needed  |   U    |  1 or 0  |  yes   |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_RECORDS    |  yes  |   yes   |    NULL    |   U    |     0    |  yes   |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_RECORDS_RO |  yes  |   yes   |    NULL    |   U    |  1 or 0  |  yes   |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_STRIDED    |  yes  |   yes   |    NULL    |   U    |     0    |  NULL  |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_STRIDED_RO |  yes  |   yes   |    NULL    |   U    |  1 or 0  |  NULL  |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_CONTIG     |  yes  |   NULL  |    NULL    |   C    |     0    |  NULL  |
+-------------------------------+-------+---------+------------+--------+----------+--------+
| .. c:macro:: PyBUF_CONTIG_RO  |  yes  |   NULL  |    NULL    |   C    |  1 or 0  |  NULL  |
+-------------------------------+-------+---------+------------+--------+----------+--------+


Complex arrays
==============

NumPy-style: shape and strides
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The logical structure of NumPy-style arrays is defined by :c:member:`~Py_buffer.itemsize`,
:c:member:`~Py_buffer.ndim`, :c:member:`~Py_buffer.shape` and :c:member:`~Py_buffer.strides`.

If ``ndim == 0``, the memory location pointed to by :c:member:`~Py_buffer.buf` is
interpreted as a scalar of size :c:member:`~Py_buffer.itemsize`. In that case,
both :c:member:`~Py_buffer.shape` and :c:member:`~Py_buffer.strides` are ``NULL``.

If :c:member:`~Py_buffer.strides` is ``NULL``, the array is interpreted as
a standard n-dimensional C-array. Otherwise, the consumer must access an
n-dimensional array as follows:

.. code-block:: c

   ptr = (char *)buf + indices[0] * strides[0] + ... + indices[n-1] * strides[n-1];
   item = *((typeof(item) *)ptr);


As noted above, :c:member:`~Py_buffer.buf` can point to any location within
the actual memory block. An exporter can check the validity of a buffer with
this function:

.. code-block:: python

   def verify_structure(memlen, itemsize, ndim, shape, strides, offset):
       """Verify that the parameters represent a valid array within
          the bounds of the allocated memory:
              char *mem: start of the physical memory block
              memlen: length of the physical memory block
              offset: (char *)buf - mem
       """
       if offset % itemsize:
           return False
       if offset < 0 or offset+itemsize > memlen:
           return False
       if any(v % itemsize for v in strides):
           return False

       if ndim <= 0:
           return ndim == 0 and not shape and not strides
       if 0 in shape:
           return True

       imin = sum(strides[j]*(shape[j]-1) for j in range(ndim)
                  if strides[j] <= 0)
       imax = sum(strides[j]*(shape[j]-1) for j in range(ndim)
                  if strides[j] > 0)

       return 0 <= offset+imin and offset+imax+itemsize <= memlen


PIL-style: shape, strides and suboffsets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In addition to the regular items, PIL-style arrays can contain pointers
that must be followed in order to get to the next element in a dimension.
For example, the regular three-dimensional C-array ``char v[2][2][3]`` can
also be viewed as an array of 2 pointers to 2 two-dimensional arrays:
``char (*v[2])[2][3]``. In suboffsets representation, those two pointers
can be embedded at the start of :c:member:`~Py_buffer.buf`, pointing
to two ``char x[2][3]`` arrays that can be located anywhere in memory.


Here is a function that returns a pointer to the element in an N-D array
pointed to by an N-dimensional index when there are both non-``NULL`` strides
and suboffsets::

   void *get_item_pointer(int ndim, void *buf, Py_ssize_t *strides,
                          Py_ssize_t *suboffsets, Py_ssize_t *indices) {
       char *pointer = (char*)buf;
       int i;
       for (i = 0; i < ndim; i++) {
           pointer += strides[i] * indices[i];
           if (suboffsets[i] >=0 ) {
               pointer = *((char**)pointer) + suboffsets[i];
           }
       }
       return (void*)pointer;
   }


Buffer-related functions
========================

.. c:function:: int PyObject_CheckBuffer(PyObject *obj)

   Return ``1`` if *obj* supports the buffer interface otherwise ``0``.  When ``1`` is
   returned, it doesn't guarantee that :c:func:`PyObject_GetBuffer` will
   succeed.  This function always succeeds.


.. c:function:: int PyObject_GetBuffer(PyObject *exporter, Py_buffer *view, int flags)

   Send a request to *exporter* to fill in *view* as specified by  *flags*.
   If the exporter cannot provide a buffer of the exact type, it MUST raise
   :c:data:`PyExc_BufferError`, set ``view->obj`` to ``NULL`` and
   return ``-1``.

   On success, fill in *view*, set ``view->obj`` to a new reference
   to *exporter* and return 0. In the case of chained buffer providers
   that redirect requests to a single object, ``view->obj`` MAY
   refer to this object instead of *exporter* (See :ref:`Buffer Object Structures <buffer-structs>`).

   Successful calls to :c:func:`PyObject_GetBuffer` must be paired with calls
   to :c:func:`PyBuffer_Release`, similar to :c:func:`malloc` and :c:func:`free`.
   Thus, after the consumer is done with the buffer, :c:func:`PyBuffer_Release`
   must be called exactly once.


.. c:function:: void PyBuffer_Release(Py_buffer *view)

   Release the buffer *view* and decrement the reference count for
   ``view->obj``. This function MUST be called when the buffer
   is no longer being used, otherwise reference leaks may occur.

   It is an error to call this function on a buffer that was not obtained via
   :c:func:`PyObject_GetBuffer`.


.. c:function:: Py_ssize_t PyBuffer_SizeFromFormat(const char *format)

   Return the implied :c:data:`~Py_buffer.itemsize` from :c:data:`~Py_buffer.format`.
   On error, raise an exception and return -1.

   .. versionadded:: 3.9


.. c:function:: int PyBuffer_IsContiguous(const Py_buffer *view, char order)

   Return ``1`` if the memory defined by the *view* is C-style (*order* is
   ``'C'``) or Fortran-style (*order* is ``'F'``) :term:`contiguous` or either one
   (*order* is ``'A'``).  Return ``0`` otherwise.  This function always succeeds.


.. c:function:: void* PyBuffer_GetPointer(const Py_buffer *view, const Py_ssize_t *indices)

   Get the memory area pointed to by the *indices* inside the given *view*.
   *indices* must point to an array of ``view->ndim`` indices.


.. c:function:: int PyBuffer_FromContiguous(const Py_buffer *view, const void *buf, Py_ssize_t len, char fort)

   Copy contiguous *len* bytes from *buf* to *view*.
   *fort* can be ``'C'`` or ``'F'`` (for C-style or Fortran-style ordering).
   ``0`` is returned on success, ``-1`` on error.


.. c:function:: int PyBuffer_ToContiguous(void *buf, const Py_buffer *src, Py_ssize_t len, char order)

   Copy *len* bytes from *src* to its contiguous representation in *buf*.
   *order* can be ``'C'`` or ``'F'`` or ``'A'`` (for C-style or Fortran-style
   ordering or either one). ``0`` is returned on success, ``-1`` on error.

   This function fails if *len* != *src->len*.


.. c:function:: int PyObject_CopyData(Py_buffer *dest, Py_buffer *src)

   Copy data from *src* to *dest* buffer. Can convert between C-style and
   or Fortran-style buffers.

   ``0`` is returned on success, ``-1`` on error.

.. c:function:: void PyBuffer_FillContiguousStrides(int ndims, Py_ssize_t *shape, Py_ssize_t *strides, int itemsize, char order)

   Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style if
   *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the
   given shape with the given number of bytes per element.


.. c:function:: int PyBuffer_FillInfo(Py_buffer *view, PyObject *exporter, void *buf, Py_ssize_t len, int readonly, int flags)

   Handle buffer requests for an exporter that wants to expose *buf* of size *len*
   with writability set according to *readonly*. *buf* is interpreted as a sequence
   of unsigned bytes.

   The *flags* argument indicates the request type. This function always fills in
   *view* as specified by flags, unless *buf* has been designated as read-only
   and :c:macro:`PyBUF_WRITABLE` is set in *flags*.

   On success, set ``view->obj`` to a new reference to *exporter* and
   return 0. Otherwise, raise :c:data:`PyExc_BufferError`, set
   ``view->obj`` to ``NULL`` and return ``-1``;

   If this function is used as part of a :ref:`getbufferproc <buffer-structs>`,
   *exporter* MUST be set to the exporting object and *flags* must be passed
   unmodified. Otherwise, *exporter* MUST be ``NULL``.


================================================
FILE: Doc/c-api/bytearray.rst
================================================
.. highlight:: c

.. _bytearrayobjects:

Byte Array Objects
------------------

.. index:: object: bytearray


.. c:type:: PyByteArrayObject

   This subtype of :c:type:`PyObject` represents a Python bytearray object.


.. c:var:: PyTypeObject PyByteArray_Type

   This instance of :c:type:`PyTypeObject` represents the Python bytearray type;
   it is the same object as :class:`bytearray` in the Python layer.


Type check macros
^^^^^^^^^^^^^^^^^

.. c:function:: int PyByteArray_Check(PyObject *o)

   Return true if the object *o* is a bytearray object or an instance of a
   subtype of the bytearray type.  This function always succeeds.


.. c:function:: int PyByteArray_CheckExact(PyObject *o)

   Return true if the object *o* is a bytearray object, but not an instance of a
   subtype of the bytearray type.  This function always succeeds.


Direct API functions
^^^^^^^^^^^^^^^^^^^^

.. c:function:: PyObject* PyByteArray_FromObject(PyObject *o)

   Return a new bytearray object from any object, *o*, that implements the
   :ref:`buffer protocol <bufferobjects>`.


.. c:function:: PyObject* PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)

   Create a new bytearray object from *string* and its length, *len*.  On
   failure, ``NULL`` is returned.


.. c:function:: PyObject* PyByteArray_Concat(PyObject *a, PyObject *b)

   Concat bytearrays *a* and *b* and return a new bytearray with the result.


.. c:function:: Py_ssize_t PyByteArray_Size(PyObject *bytearray)

   Return the size of *bytearray* after checking for a ``NULL`` pointer.


.. c:function:: char* PyByteArray_AsString(PyObject *bytearray)

   Return the contents of *bytearray* as a char array after checking for a
   ``NULL`` pointer.  The returned array always has an extra
   null byte appended.


.. c:function:: int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)

   Resize the internal buffer of *bytearray* to *len*.

Macros
^^^^^^

These macros trade safety for speed and they don't check pointers.

.. c:function:: char* PyByteArray_AS_STRING(PyObject *bytearray)

   Similar to :c:func:`PyByteArray_AsString`, but without error checking.


.. c:function:: Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)

   Similar to :c:func:`PyByteArray_Size`, but without error checking.


================================================
FILE: Doc/c-api/bytes.rst
================================================
.. highlight:: c

.. _bytesobjects:

Bytes Objects
-------------

These functions raise :exc:`TypeError` when expecting a bytes parameter and
called with a non-bytes parameter.

.. index:: object: bytes


.. c:type:: PyBytesObject

   This subtype of :c:type:`PyObject` represents a Python bytes object.


.. c:var:: PyTypeObject PyBytes_Type

   This instance of :c:type:`PyTypeObject` represents the Python bytes type; it
   is the same object as :class:`bytes` in the Python layer.


.. c:function:: int PyBytes_Check(PyObject *o)

   Return true if the object *o* is a bytes object or an instance of a subtype
   of the bytes type.  This function always succeeds.


.. c:function:: int PyBytes_CheckExact(PyObject *o)

   Return true if the object *o* is a bytes object, but not an instance of a
   subtype of the bytes type.  This function always succeeds.


.. c:function:: PyObject* PyBytes_FromString(const char *v)

   Return a new bytes object with a copy of the string *v* as value on success,
   and ``NULL`` on failure.  The parameter *v* must not be ``NULL``; it will not be
   checked.


.. c:function:: PyObject* PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)

   Return a new bytes object with a copy of the string *v* as value and length
   *len* on success, and ``NULL`` on failure.  If *v* is ``NULL``, the contents of
   the bytes object are uninitialized.


.. c:function:: PyObject* PyBytes_FromFormat(const char *format, ...)

   Take a C :c:func:`printf`\ -style *format* string and a variable number of
   arguments, calculate the size of the resulting Python bytes object and return
   a bytes object with the values formatted into it.  The variable arguments
   must be C types and must correspond exactly to the format characters in the
   *format* string.  The following format characters are allowed:

   .. % XXX: This should be exactly the same as the table in PyErr_Format.
   .. % One should just refer to the other.

   .. tabularcolumns:: |l|l|L|

   +-------------------+---------------+--------------------------------+
   | Format Characters | Type          | Comment                        |
   +===================+===============+================================+
   | :attr:`%%`        | *n/a*         | The literal % character.       |
   +-------------------+---------------+--------------------------------+
   | :attr:`%c`        | int           | A single byte,                 |
   |                   |               | represented as a C int.        |
   +-------------------+---------------+--------------------------------+
   | :attr:`%d`        | int           | Equivalent to                  |
   |                   |               | ``printf("%d")``. [1]_         |
   +-------------------+---------------+--------------------------------+
   | :attr:`%u`        | unsigned int  | Equivalent to                  |
   |                   |               | ``printf("%u")``. [1]_         |
   +-------------------+---------------+--------------------------------+
   | :attr:`%ld`       | long          | Equivalent to                  |
   |                   |               | ``printf("%ld")``. [1]_        |
   +-------------------+---------------+--------------------------------+
   | :attr:`%lu`       | unsigned long | Equivalent to                  |
   |                   |               | ``printf("%lu")``. [1]_        |
   +-------------------+---------------+--------------------------------+
   | :attr:`%zd`       | :c:type:`\    | Equivalent to                  |
   |                   | Py_ssize_t`   | ``printf("%zd")``. [1]_        |
   +-------------------+---------------+--------------------------------+
   | :attr:`%zu`       | size_t        | Equivalent to                  |
   |                   |               | ``printf("%zu")``. [1]_        |
   +-------------------+---------------+--------------------------------+
   | :attr:`%i`        | int           | Equivalent to                  |
   |                   |               | ``printf("%i")``. [1]_         |
   +-------------------+---------------+--------------------------------+
   | :attr:`%x`        | int           | Equivalent to                  |
   |                   |               | ``printf("%x")``. [1]_         |
   +-------------------+---------------+--------------------------------+
   | :attr:`%s`        | const char\*  | A null-terminated C character  |
   |                   |               | array.                         |
   +-------------------+---------------+--------------------------------+
   | :attr:`%p`        | const void\*  | The hex representation of a C  |
   |                   |               | pointer. Mostly equivalent to  |
   |                   |               | ``printf("%p")`` except that   |
   |                   |               | it is guaranteed to start with |
   |                   |               | the literal ``0x`` regardless  |
   |                   |               | of what the platform's         |
   |                   |               | ``printf`` yields.             |
   +-------------------+---------------+--------------------------------+

   An unrecognized format character causes all the rest of the format string to be
   copied as-is to the result object, and any extra arguments discarded.

   .. [1] For integer specifiers (d, u, ld, lu, zd, zu, i, x): the 0-conversion
      flag has effect even when a precision is given.


.. c:function:: PyObject* PyBytes_FromFormatV(const char *format, va_list vargs)

   Identical to :c:func:`PyBytes_FromFormat` except that it takes exactly two
   arguments.


.. c:function:: PyObject* PyBytes_FromObject(PyObject *o)

   Return the bytes representation of object *o* that implements the buffer
   protocol.


.. c:function:: Py_ssize_t PyBytes_Size(PyObject *o)

   Return the length of the bytes in bytes object *o*.


.. c:function:: Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

   Similar to :c:func:`PyBytes_Size`, but without error checking.


.. c:function:: char* PyBytes_AsString(PyObject *o)

   Return a pointer to the contents of *o*.  The pointer
   refers to the internal buffer of *o*, which consists of ``len(o) + 1``
   bytes.  The last byte in the buffer is always null, regardless of
   whether there are any other null bytes.  The data must not be
   modified in any way, unless the object was just created using
   ``PyBytes_FromStringAndSize(NULL, size)``. It must not be deallocated.  If
   *o* is not a bytes object at all, :c:func:`PyBytes_AsString` returns ``NULL``
   and raises :exc:`TypeError`.


.. c:function:: char* PyBytes_AS_STRING(PyObject *string)

   Similar to :c:func:`PyBytes_AsString`, but without error checking.


.. c:function:: int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)

   Return the null-terminated contents of the object *obj*
   through the output variables *buffer* and *length*.

   If *length* is ``NULL``, the bytes object
   may not contain embedded null bytes;
   if it does, the function returns ``-1`` and a :exc:`ValueError` is raised.

   The buffer refers to an internal buffer of *obj*, which includes an
   additional null byte at the end (not counted in *length*).  The data
   must not be modified in any way, unless the object was just created using
   ``PyBytes_FromStringAndSize(NULL, size)``.  It must not be deallocated.  If
   *obj* is not a bytes object at all, :c:func:`PyBytes_AsStringAndSize`
   returns ``-1`` and raises :exc:`TypeError`.

   .. versionchanged:: 3.5
      Previously, :exc:`TypeError` was raised when embedded null bytes were
      encountered in the bytes object.


.. c:function:: void PyBytes_Concat(PyObject **bytes, PyObject *newpart)

   Create a new bytes object in *\*bytes* containing the contents of *newpart*
   appended to *bytes*; the caller will own the new reference.  The reference to
   the old value of *bytes* will be stolen.  If the new object cannot be
   created, the old reference to *bytes* will still be discarded and the value
   of *\*bytes* will be set to ``NULL``; the appropriate exception will be set.


.. c:function:: void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)

   Create a new bytes object in *\*bytes* containing the contents of *newpart*
   appended to *bytes*.  This version decrements the reference count of
   *newpart*.


.. c:function:: int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

   A way to resize a bytes object even though it is "immutable". Only use this
   to build up a brand new bytes object; don't use this if the bytes may already
   be known in other parts of the code.  It is an error to call this function if
   the refcount on the input bytes object is not one. Pass the address of an
   existing bytes object as an lvalue (it may be written into), and the new size
   desired.  On success, *\*bytes* holds the resized bytes object and ``0`` is
   returned; the address in *\*bytes* may differ from its input value.  If the
   reallocation fails, the original bytes object at *\*bytes* is deallocated,
   *\*bytes* is set to ``NULL``, :exc:`MemoryError` is set, and ``-1`` is
   returned.


================================================
FILE: Doc/c-api/call.rst
================================================
.. highlight:: c

.. _call:

Call Protocol
=============

CPython supports two different calling protocols:
*tp_call* and vectorcall.

The *tp_call* Protocol
----------------------

Instances of classes that set :c:member:`~PyTypeObject.tp_call` are callable.
The signature of the slot is::

    PyObject *tp_call(PyObject *callable, PyObject *args, PyObject *kwargs);

A call is made using a tuple for the positional arguments
and a dict for the keyword arguments, similarly to
``callable(*args, **kwargs)`` in Python code.
*args* must be non-NULL (use an empty tuple if there are no arguments)
but *kwargs* may be *NULL* if there are no keyword arguments.

This convention is not only used by *tp_call*:
:c:member:`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_init`
also pass arguments this way.

To call an object, use :c:func:`PyObject_Call` or another
:ref:`call API <capi-call>`.


.. _vectorcall:

The Vectorcall Protocol
-----------------------

.. versionadded:: 3.9

The vectorcall protocol was introduced in :pep:`590` as an additional protocol
for making calls more efficient.

As rule of thumb, CPython will prefer the vectorcall for internal calls
if the callable supports it. However, this is not a hard rule.
Additionally, some third-party extensions use *tp_call* directly
(rather than using :c:func:`PyObject_Call`).
Therefore, a class supporting vectorcall must also implement
:c:member:`~PyTypeObject.tp_call`.
Moreover, the callable must behave the same
regardless of which protocol is used.
The recommended way to achieve this is by setting
:c:member:`~PyTypeObject.tp_call` to :c:func:`PyVectorcall_Call`.
This bears repeating:

.. warning::

   A class supporting vectorcall **must** also implement
   :c:member:`~PyTypeObject.tp_call` with the same semantics.

.. versionchanged:: 3.12

   The :const:`Py_TPFLAGS_HAVE_VECTORCALL` flag is now removed from a class
   when the class's :py:meth:`~object.__call__` method is reassigned.
   (This internally sets :c:member:`~PyTypeObject.tp_call` only, and thus
   may make it behave differently than the vectorcall function.)
   In earlier Python versions, vectorcall should only be used with
   :const:`immutable <Py_TPFLAGS_IMMUTABLETYPE>` or static types.

A class should not implement vectorcall if that would be slower
than *tp_call*. For example, if the callee needs to convert
the arguments to an args tuple and kwargs dict anyway, then there is no point
in implementing vectorcall.

Classes can implement the vectorcall protocol by enabling the
:const:`Py_TPFLAGS_HAVE_VECTORCALL` flag and setting
:c:member:`~PyTypeObject.tp_vectorcall_offset` to the offset inside the
object structure where a *vectorcallfunc* appears.
This is a pointer to a function with the following signature:

.. c:type:: PyObject *(*vectorcallfunc)(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames)

- *callable* is the object being called.
- *args* is a C array consisting of the positional arguments followed by the
   values of the keyword arguments.
   This can be *NULL* if there are no arguments.
- *nargsf* is the number of positional arguments plus possibly the
   :const:`PY_VECTORCALL_ARGUMENTS_OFFSET` flag.
   To get the actual number of positional arguments from *nargsf*,
   use :c:func:`PyVectorcall_NARGS`.
- *kwnames* is a tuple containing the names of the keyword arguments;
   in other words, the keys of the kwargs dict.
   These names must be strings (instances of ``str`` or a subclass)
   and they must be unique.
   If there are no keyword arguments, then *kwnames* can instead be *NULL*.

.. data:: PY_VECTORCALL_ARGUMENTS_OFFSET

   If this flag is set in a vectorcall *nargsf* argument, the callee is allowed
   to temporarily change ``args[-1]``. In other words, *args* points to
   argument 1 (not 0) in the allocated vector.
   The callee must restore the value of ``args[-1]`` before returning.

   For :c:func:`PyObject_VectorcallMethod`, this flag means instead that
   ``args[0]`` may be changed.

   Whenever they can do so cheaply (without additional allocation), callers
   are encouraged to use :const:`PY_VECTORCALL_ARGUMENTS_OFFSET`.
   Doing so will allow callables such as bound methods to make their onward
   calls (which include a prepended *self* argument) very efficiently.

To call an object that implements vectorcall, use a :ref:`call API <capi-call>`
function as with any other callable.
:c:func:`PyObject_Vectorcall` will usually be most efficient.


.. note::

   In CPython 3.8, the vectorcall API and related functions were available
   provisionally under names with a leading underscore:
   ``_PyObject_Vectorcall``, ``_Py_TPFLAGS_HAVE_VECTORCALL``,
   ``_PyObject_VectorcallMethod``, ``_PyVectorcall_Function``,
   ``_PyObject_CallOneArg``, ``_PyObject_CallMethodNoArgs``,
   ``_PyObject_CallMethodOneArg``.
   Additionally, ``PyObject_VectorcallDict`` was available as
   ``_PyObject_FastCallDict``.
   The old names are still defined as aliases of the new, non-underscored names.


Recursion Control
.................

When using *tp_call*, callees do not need to worry about
:ref:`recursion <recursion>`: CPython uses
:c:func:`Py_EnterRecursiveCall` and :c:func:`Py_LeaveRecursiveCall`
for calls made using *tp_call*.

For efficiency, this is not the case for calls done using vectorcall:
the callee should use *Py_EnterRecursiveCall* and *Py_LeaveRecursiveCall*
if needed.


Vectorcall Support API
......................

.. c:function:: Py_ssize_t PyVectorcall_NARGS(size_t nargsf)

   Given a vectorcall *nargsf* argument, return the actual number of
   arguments.
   Currently equivalent to::

      (Py_ssize_t)(nargsf & ~PY_VECTORCALL_ARGUMENTS_OFFSET)

   However, the function ``PyVectorcall_NARGS`` should be used to allow
   for future extensions.

   .. versionadded:: 3.8

.. c:function:: vectorcallfunc PyVectorcall_Function(PyObject *op)

   If *op* does not support the vectorcall protocol (either because the type
   does not or because the specific instance does not), return *NULL*.
   Otherwise, return the vectorcall function pointer stored in *op*.
   This function never raises an exception.

   This is mostly useful to check whether or not *op* supports vectorcall,
   which can be done by checking ``PyVectorcall_Function(op) != NULL``.

   .. versionadded:: 3.8

.. c:function:: PyObject* PyVectorcall_Call(PyObject *callable, PyObject *tuple, PyObject *dict)

   Call *callable*'s :c:type:`vectorcallfunc` with positional and keyword
   arguments given in a tuple and dict, respectively.

   This is a specialized function, intended to be put in the
   :c:member:`~PyTypeObject.tp_call` slot or be used in an implementation of ``tp_call``.
   It does not check the :const:`Py_TPFLAGS_HAVE_VECTORCALL` flag
   and it does not fall back to ``tp_call``.

   .. versionadded:: 3.8


.. _capi-call:

Object Calling API
------------------

Various functions are available for calling a Python object.
Each converts its arguments to a convention supported by the called object –
either *tp_call* or vectorcall.
In order to do as little conversion as possible, pick one that best fits
the format of data you have available.

The following table summarizes the available functions;
please see individual documentation for details.

+------------------------------------------+------------------+--------------------+---------------+
| Function                                 | callable         | args               | kwargs        |
+==========================================+==================+====================+===============+
| :c:func:`PyObject_Call`                  | ``PyObject *``   | tuple              | dict/``NULL`` |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallNoArgs`            | ``PyObject *``   | ---                | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallOneArg`            | ``PyObject *``   | 1 object           | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallObject`            | ``PyObject *``   | tuple/``NULL``     | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallFunction`          | ``PyObject *``   | format             | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallMethod`            | obj + ``char*``  | format             | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallFunctionObjArgs`   | ``PyObject *``   | variadic           | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallMethodObjArgs`     | obj + name       | variadic           | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallMethodNoArgs`      | obj + name       | ---                | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_CallMethodOneArg`      | obj + name       | 1 object           | ---           |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_Vectorcall`            | ``PyObject *``   | vectorcall         | vectorcall    |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_VectorcallDict`        | ``PyObject *``   | vectorcall         | dict/``NULL`` |
+------------------------------------------+------------------+--------------------+---------------+
| :c:func:`PyObject_VectorcallMethod`      | arg + name       | vectorcall         | vectorcall    |
+------------------------------------------+------------------+--------------------+---------------+


.. c:function:: PyObject* PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs)

   Call a callable Python object *callable*, with arguments given by the
   tuple *args*, and named arguments given by the dictionary *kwargs*.

   *args* must not be *NULL*; use an empty tuple if no arguments are needed.
   If no named arguments are needed, *kwargs* can be *NULL*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   This is the equivalent of the Python expression:
   ``callable(*args, **kwargs)``.


.. c:function:: PyObject* PyObject_CallNoArgs(PyObject *callable)

   Call a callable Python object *callable* without any arguments. It is the
   most efficient way to call a callable Python object without any argument.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9


.. c:function:: PyObject* PyObject_CallOneArg(PyObject *callable, PyObject *arg)

   Call a callable Python object *callable* with exactly 1 positional argument
   *arg* and no keyword arguments.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9


.. c:function:: PyObject* PyObject_CallObject(PyObject *callable, PyObject *args)

   Call a callable Python object *callable*, with arguments given by the
   tuple *args*.  If no arguments are needed, then *args* can be *NULL*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   This is the equivalent of the Python expression: ``callable(*args)``.


.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)

   Call a callable Python object *callable*, with a variable number of C arguments.
   The C arguments are described using a :c:func:`Py_BuildValue` style format
   string.  The format can be *NULL*, indicating that no arguments are provided.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   This is the equivalent of the Python expression: ``callable(*args)``.

   Note that if you only pass :c:expr:`PyObject *` args,
   :c:func:`PyObject_CallFunctionObjArgs` is a faster alternative.

   .. versionchanged:: 3.4
      The type of *format* was changed from ``char *``.


.. c:function:: PyObject* PyObject_CallMethod(PyObject *obj, const char *name, const char *format, ...)

   Call the method named *name* of object *obj* with a variable number of C
   arguments.  The C arguments are described by a :c:func:`Py_BuildValue` format
   string that should produce a tuple.

   The format can be *NULL*, indicating that no arguments are provided.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   This is the equivalent of the Python expression:
   ``obj.name(arg1, arg2, ...)``.

   Note that if you only pass :c:expr:`PyObject *` args,
   :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.

   .. versionchanged:: 3.4
      The types of *name* and *format* were changed from ``char *``.


.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ...)

   Call a callable Python object *callable*, with a variable number of
   :c:expr:`PyObject *` arguments.  The arguments are provided as a variable number
   of parameters followed by *NULL*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   This is the equivalent of the Python expression:
   ``callable(arg1, arg2, ...)``.


.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ...)

   Call a method of the Python object *obj*, where the name of the method is given as a
   Python string object in *name*.  It is called with a variable number of
   :c:expr:`PyObject *` arguments.  The arguments are provided as a variable number
   of parameters followed by *NULL*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.


.. c:function:: PyObject* PyObject_CallMethodNoArgs(PyObject *obj, PyObject *name)

   Call a method of the Python object *obj* without arguments,
   where the name of the method is given as a Python string object in *name*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9


.. c:function:: PyObject* PyObject_CallMethodOneArg(PyObject *obj, PyObject *name, PyObject *arg)

   Call a method of the Python object *obj* with a single positional argument
   *arg*, where the name of the method is given as a Python string object in
   *name*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9


.. c:function:: PyObject* PyObject_Vectorcall(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames)

   Call a callable Python object *callable*.
   The arguments are the same as for :c:type:`vectorcallfunc`.
   If *callable* supports vectorcall_, this directly calls
   the vectorcall function stored in *callable*.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9

.. c:function:: PyObject* PyObject_VectorcallDict(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwdict)

   Call *callable* with positional arguments passed exactly as in the vectorcall_ protocol,
   but with keyword arguments passed as a dictionary *kwdict*.
   The *args* array contains only the positional arguments.

   Regardless of which protocol is used internally,
   a conversion of arguments needs to be done.
   Therefore, this function should only be used if the caller
   already has a dictionary ready to use for the keyword arguments,
   but not a tuple for the positional arguments.

   .. versionadded:: 3.9

.. c:function:: PyObject* PyObject_VectorcallMethod(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames)

   Call a method using the vectorcall calling convention. The name of the method
   is given as a Python string *name*. The object whose method is called is
   *args[0]*, and the *args* array starting at *args[1]* represents the arguments
   of the call. There must be at least one positional argument.
   *nargsf* is the number of positional arguments including *args[0]*,
   plus :const:`PY_VECTORCALL_ARGUMENTS_OFFSET` if the value of ``args[0]`` may
   temporarily be changed. Keyword arguments can be passed just like in
   :c:func:`PyObject_Vectorcall`.

   If the object has the :const:`Py_TPFLAGS_METHOD_DESCRIPTOR` feature,
   this will call the unbound method object with the full
   *args* vector as arguments.

   Return the result of the call on success, or raise an exception and return
   *NULL* on failure.

   .. versionadded:: 3.9


Call Support API
----------------

.. c:function:: int PyCallable_Check(PyObject *o)

   Determine if the object *o* is callable.  Return ``1`` if the object is callable
   and ``0`` otherwise.  This function always succeeds.


================================================
FILE: Doc/c-api/capsule.rst
================================================
.. highlight:: c

.. _capsules:

Capsules
--------

.. index:: object: Capsule

Refer to :ref:`using-capsules` for more information on using these objects.

.. versionadded:: 3.1


.. c:type:: PyCapsule

   This subtype of :c:type:`PyObject` represents an opaque value, useful for C
   extension modules who need to pass an opaque value (as a :c:expr:`void*`
   pointer) through Python code to other C code.  It is often used to make a C
   function pointer defined in one module available to other modules, so the
   regular import mechanism can be used to access C APIs defined in dynamically
   loaded modules.


.. c:type:: PyCapsule_Destructor

   The type of a destructor callback for a capsule.  Defined as::

      typedef void (*PyCapsule_Destructor)(PyObject *);

   See :c:func:`PyCapsule_New` for the semantics of PyCapsule_Destructor
   callbacks.


.. c:function:: int PyCapsule_CheckExact(PyObject *p)

   Return true if its argument is a :c:type:`PyCapsule`.  This function always
   succeeds.


.. c:function:: PyObject* PyCapsule_New(void *pointer, const char *name, PyCapsule_Destructor destructor)

   Create a :c:type:`PyCapsule` encapsulating the *pointer*.  The *pointer*
   argument may not be ``NULL``.

   On failure, set an exception and return ``NULL``.

   The *name* string may either be ``NULL`` or a pointer to a valid C string.  If
   non-``NULL``, this string must outlive the capsule.  (Though it is permitted to
   free it inside the *destructor*.)

   If the *destructor* argument is not ``NULL``, it will be called with the
   capsule as its argument when it is destroyed.

   If this capsule will be stored as an attribute of a module, the *name* should
   be specified as ``modulename.attributename``.  This will enable other modules
   to import the capsule using :c:func:`PyCapsule_Import`.


.. c:function:: void* PyCapsule_GetPointer(PyObject *capsule, const char *name)

   Retrieve the *pointer* stored in the capsule.  On failure, set an exception
   and return ``NULL``.

   The *name* parameter must compare exactly to the name stored in the capsule.
   If the name stored in the capsule is ``NULL``, the *name* passed in must also
   be ``NULL``.  Python uses the C function :c:func:`strcmp` to compare capsule
   names.


.. c:function:: PyCapsule_Destructor PyCapsule_GetDestructor(PyObject *capsule)

   Return the current destructor stored in the capsule.  On failure, set an
   exception and return ``NULL``.

   It is legal for a capsule to have a ``NULL`` destructor.  This makes a ``NULL``
   return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or
   :c:func:`PyErr_Occurred` to disambiguate.


.. c:function:: void* PyCapsule_GetContext(PyObject *capsule)

   Return the current context stored in the capsule.  On failure, set an
   exception and return ``NULL``.

   It is legal for a capsule to have a ``NULL`` context.  This makes a ``NULL``
   return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or
   :c:func:`PyErr_Occurred` to disambiguate.


.. c:function:: const char* PyCapsule_GetName(PyObject *capsule)

   Return the current name stored in the capsule.  On failure, set an exception
   and return ``NULL``.

   It is legal for a capsule to have a ``NULL`` name.  This makes a ``NULL`` return
   code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or
   :c:func:`PyErr_Occurred` to disambiguate.


.. c:function:: void* PyCapsule_Import(const char *name, int no_block)

   Import a pointer to a C object from a capsule attribute in a module.  The
   *name* parameter should specify the full name to the attribute, as in
   ``module.attribute``.  The *name* stored in the capsule must match this
   string exactly.

   Return the capsule's internal *pointer* on success.  On failure, set an
   exception and return ``NULL``.

   .. versionchanged:: 3.3
      *no_block* has no effect anymore.


.. c:function:: int PyCapsule_IsValid(PyObject *capsule, const char *name)

   Determines whether or not *capsule* is a valid capsule.  A valid capsule is
   non-``NULL``, passes :c:func:`PyCapsule_CheckExact`, has a non-``NULL`` pointer
   stored in it, and its internal name matches the *name* parameter.  (See
   :c:func:`PyCapsule_GetPointer` for information on how capsule names are
   compared.)

   In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls to
   any of the accessors (any function starting with :c:func:`PyCapsule_Get`) are
   guaranteed to succeed.

   Return a nonzero value if the object is valid and matches the name passed in.
   Return ``0`` otherwise.  This function will not fail.


.. c:function:: int PyCapsule_SetContext(PyObject *capsule, void *context)

   Set the context pointer inside *capsule* to *context*.

   Return ``0`` on success.  Return nonzero and set an exception on failure.


.. c:function:: int PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor)

   Set the destructor inside *capsule* to *destructor*.

   Return ``0`` on success.  Return nonzero and set an exception on failure.


.. c:function:: int PyCapsule_SetName(PyObject *capsule, const char *name)

   Set the name inside *capsule* to *name*.  If non-``NULL``, the name must
   outlive the capsule.  If the previous *name* stored in the capsule was not
   ``NULL``, no attempt is made to free it.

   Return ``0`` on success.  Return nonzero and set an exception on failure.


.. c:function:: int PyCapsule_SetPointer(PyObject *capsule, void *pointer)

   Set the void pointer inside *capsule* to *pointer*.  The pointer may not be
   ``NULL``.

   Return ``0`` on success.  Return nonzero and set an exception on failure.


================================================
FILE: Doc/c-api/cell.rst
================================================
.. highlight:: c

.. _cell-objects:

Cell Objects
------------

"Cell" objects are used to implement variables referenced by multiple scopes.
For each such variable, a cell object is created to store the value; the local
variables of each stack frame that references the value contains a reference to
the cells from outer scopes which also use that variable.  When the value is
accessed, the value contained in the cell is used instead of the cell object
itself.  This de-referencing of the cell object requires support from the
generated byte-code; these are not automatically de-referenced when accessed.
Cell objects are not likely to be useful elsewhere.


.. c:type:: PyCellObject

   The C structure used for cell objects.


.. c:var:: PyTypeObject PyCell_Type

   The type object corresponding to cell objects.


.. c:function:: int PyCell_Check(ob)

   Return true if *ob* is a cell object; *ob* must not be ``NULL``.  This
   function always succeeds.


.. c:function:: PyObject* PyCell_New(PyObject *ob)

   Create and return a new cell object containing the value *ob*. The parameter may
   be ``NULL``.


.. c:function:: PyObject* PyCell_Get(PyObject *cell)

   Return the contents of the cell *cell*.


.. c:function:: PyObject* PyCell_GET(PyObject *cell)

   Return the contents of the cell *cell*, but without checking that *cell* is
   non-``NULL`` and a cell object.


.. c:function:: int PyCell_Set(PyObject *cell, PyObject *value)

   Set the contents of the cell object *cell* to *value*.  This releases the
   reference to any current content of the cell. *value* may be ``NULL``.  *cell*
   must be non-``NULL``; if it is not a cell object, ``-1`` will be returned.  On
   success, ``0`` will be returned.


.. c:function:: void PyCell_SET(PyObject *cell, PyObject *value)

   Sets the value of the cell object *cell* to *value*.  No reference counts are
   adjusted, and no checks are made for safety; *cell* must be non-``NULL`` and must
   be a cell object.


================================================
FILE: Doc/c-api/code.rst
================================================
.. highlight:: c

.. index:: object; code, code object

.. _codeobjects:

Code Objects
------------

.. sectionauthor:: Jeffrey Yasskin <jyasskin@gmail.com>

Code objects are a low-level detail of the CPython implementation.
Each one represents a chunk of executable code that hasn't yet been
bound into a function.

.. c:type:: PyCodeObject

   The C structure of the objects used to describe code objects.  The
   fields of this type are subject to change at any time.


.. c:var:: PyTypeObject PyCode_Type

   This is an instance of :c:type:`PyTypeObject` representing the Python
   :class:`code` type.


.. c:function:: int PyCode_Check(PyObject *co)

   Return true if *co* is a :class:`code` object.  This function always succeeds.

.. c:function:: int PyCode_GetNumFree(PyCodeObject *co)

   Return the number of free variables in *co*.

.. c:function:: PyCodeObject* PyCode_New(int argcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, PyObject *linetable, PyObject *exceptiontable)

   Return a new code object.  If you need a dummy code object to create a frame,
   use :c:func:`PyCode_NewEmpty` instead.  Calling :c:func:`PyCode_New` directly
   will bind you to a precise Python version since the definition of the bytecode
   changes often. The many arguments of this function are inter-dependent in complex
   ways, meaning that subtle changes to values are likely to result in incorrect
   execution or VM crashes. Use this function only with extreme care.

   .. versionchanged:: 3.11
      Added ``exceptiontable`` parameter.

.. c:function:: PyCodeObject* PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, PyObject *linetable, PyObject *exceptiontable)

   Similar to :c:func:`PyCode_New`, but with an extra "posonlyargcount" for positional-only arguments.
   The same caveats that apply to ``PyCode_New`` also apply to this function.

   .. versionadded:: 3.8

   .. versionchanged:: 3.11
      Added ``exceptiontable`` parameter.

.. c:function:: PyCodeObject* PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)

   Return a new empty code object with the specified filename,
   function name, and first line number. The resulting code
   object will raise an ``Exception`` if executed.

.. c:function:: int PyCode_Addr2Line(PyCodeObject *co, int byte_offset)

    Return the line number of the instruction that occurs on or before ``byte_offset`` and ends after it.
    If you just need the line number of a frame, use :c:func:`PyFrame_GetLineNumber` instead.

    For efficiently iterating over the line numbers in a code object, use `the API described in PEP 626
    <https://peps.python.org/pep-0626/#out-of-process-debuggers-and-profilers>`_.

.. c:function:: int PyCode_Addr2Location(PyObject *co, int byte_offset, int *start_line, int *start_column, int *end_line, int *end_column)

   Sets the passed ``int`` pointers to the source code line and column numbers
   for the instruction at ``byte_offset``. Sets the value to ``0`` when
   information is not available for any particular element.

   Returns ``1`` if the function succeeds and 0 otherwise.

.. c:function:: PyObject* PyCode_GetCode(PyCodeObject *co)

   Equivalent to the Python code ``getattr(co, 'co_code')``.
   Returns a strong reference to a :c:type:`PyBytesObject` representing the
   bytecode in a code object. On error, ``NULL`` is returned and an exception
   is raised.

   This ``PyBytesObject`` may be created on-demand by the interpreter and does
   not necessarily represent the bytecode actually executed by CPython. The
   primary use case for this function is debuggers and profilers.

   .. versionadded:: 3.11

.. c:function:: PyObject* PyCode_GetVarnames(PyCodeObject *co)

   Equivalent to the Python code ``getattr(co, 'co_varnames')``.
   Returns a new reference to a :c:type:`PyTupleObject` containing the names of
   the local variables. On error, ``NULL`` is returned and an exception
   is raised.

   .. versionadded:: 3.11

.. c:function:: PyObject* PyCode_GetCellvars(PyCodeObject *co)

   Equivalent to the Python code ``getattr(co, 'co_cellvars')``.
   Returns a new reference to a :c:type:`PyTupleObject` containing the names of
   the local variables that are referenced by nested functions. On error, ``NULL``
   is returned and an exception is raised.

   .. versionadded:: 3.11

.. c:function:: PyObject* PyCode_GetFreevars(PyCodeObject *co)

   Equivalent to the Python code ``getattr(co, 'co_freevars')``.
   Returns a new reference to a :c:type:`PyTupleObject` containing the names of
   the free variables. On error, ``NULL`` is returned and an exception is raised.

   .. versionadded:: 3.11

.. c:function:: int PyCode_AddWatcher(PyCode_WatchCallback callback)

   Register *callback* as a code object watcher for the current interpreter.
   Return an ID which may be passed to :c:func:`PyCode_ClearWatcher`.
   In case of error (e.g. no more watcher IDs available),
   return ``-1`` and set an exception.

   .. versionadded:: 3.12

.. c:function:: int PyCode_ClearWatcher(int watcher_id)

   Clear watcher identified by *watcher_id* previously returned from
   :c:func:`PyCode_AddWatcher` for the current interpreter.
   Return ``0`` on success, or ``-1`` and set an exception on error
   (e.g. if the given *watcher_id* was never registered.)

   .. versionadded:: 3.12

.. c:type:: PyCodeEvent

   Enumeration of possible code object watcher events:
   - ``PY_CODE_EVENT_CREATE``
   - ``PY_CODE_EVENT_DESTROY``

   .. versionadded:: 3.12

.. c:type:: int (*PyCode_WatchCallback)(PyCodeEvent event, PyCodeObject* co)

   Type of a code object watcher callback function.

   If *event* is ``PY_CODE_EVENT_CREATE``, then the callback is invoked
   after `co` has been fully initialized. Otherwise, the callback is invoked
   before the destruction of *co* takes place, so the prior state of *co*
   can be inspected.

   Users of this API should not rely on internal runtime implementation
   details. Such details may include, but are not limited to, the exact
   order and timing of creation and destruction of code objects. While
   changes in these details may result in differences observable by watchers
   (including whether a callback is invoked or not), it does not change
   the semantics of the Python code being executed.

   If the callback returns with an exception set, it must return ``-1``; this
   exception will be printed as an unraisable exception using
   :c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``.

   .. versionadded:: 3.12


================================================
FILE: Doc/c-api/codec.rst
================================================
.. _codec-registry:

Codec registry and support functions
====================================

.. c:function:: int PyCodec_Register(PyObject *search_function)

   Register a new codec search function.

   As side effect, this tries to load the :mod:`encodings` package, if not yet
   done, to make sure that it is always first in the list of search functions.

.. c:function:: int PyCodec_Unregister(PyObject *search_function)

   Unregister a codec search function and clear the registry's cache.
   If the search function is not registered, do nothing.
   Return 0 on success. Raise an exception and return -1 on error.

   .. versionadded:: 3.10

.. c:function:: int PyCodec_KnownEncoding(const char *encoding)

   Return ``1`` or ``0`` depending on whether there is a registered codec for
   the given *encoding*.  This function always succeeds.

.. c:function:: PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)

   Generic codec based encoding API.

   *object* is passed through the encoder function found for the given
   *encoding* using the error handling method defined by *errors*.  *errors* may
   be ``NULL`` to use the default method defined for the codec.  Raises a
   :exc:`LookupError` if no encoder can be found.

.. c:function:: PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)

   Generic codec based decoding API.

   *object* is passed through the decoder function found for the given
   *encoding* using the error handling method defined by *errors*.  *errors* may
   be ``NULL`` to use the default method defined for the codec.  Raises a
   :exc:`LookupError` if no encoder can be found.


Codec lookup API
----------------

In the following functions, the *encoding* string is looked up converted to all
lower-case characters, which makes encodings looked up through this mechanism
effectively case-insensitive.  If no codec is found, a :exc:`KeyError` is set
and ``NULL`` returned.

.. c:function:: PyObject* PyCodec_Encoder(const char *encoding)

   Get an encoder function for the given *encoding*.

.. c:function:: PyObject* PyCodec_Decoder(const char *encoding)

   Get a decoder function for the given *encoding*.

.. c:function:: PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)

   Get an :class:`~codecs.IncrementalEncoder` object for the given *encoding*.

.. c:function:: PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)

   Get an :class:`~codecs.IncrementalDecoder` object for the given *encoding*.

.. c:function:: PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)

   Get a :class:`~codecs.StreamReader` factory function for the given *encoding*.

.. c:function:: PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)

   Get a :class:`~codecs.StreamWriter` factory function for the given *encoding*.


Registry API for Unicode encoding error handlers
------------------------------------------------

.. c:function:: int PyCodec_RegisterError(const char *name, PyObject *error)

   Register the error handling callback function *error* under the given *name*.
   This callback function will be called by a codec when it encounters
   unencodable characters/undecodable bytes and *name* is specified as the error
   parameter in the call to the encode/decode function.

   The callback gets a single argument, an instance of
   :exc:`UnicodeEncodeError`, :exc:`UnicodeDecodeError` or
   :exc:`UnicodeTranslateError` that holds information about the problematic
   sequence of characters or bytes and their offset in the original string (see
   :ref:`unicodeexceptions` for functions to extract this information).  The
   callback must either raise the given exception, or return a two-item tuple
   containing the replacement for the problematic sequence, and an integer
   giving the offset in the original string at which encoding/decoding should be
   resumed.

   Return ``0`` on success, ``-1`` on error.

.. c:function:: PyObject* PyCodec_LookupError(const char *name)

   Lookup the error handling callback function registered under *name*.  As a
   special case ``NULL`` can be passed, in which case the error handling callback
   for "strict" will be returned.

.. c:function:: PyObject* PyCodec_StrictErrors(PyObject *exc)

   Raise *exc* as an exception.

.. c:function:: PyObject* PyCodec_IgnoreErrors(PyObject *exc)

   Ignore the unicode error, skipping the faulty input.

.. c:function:: PyObject* PyCodec_ReplaceErrors(PyObject *exc)

   Replace the unicode encode error with ``?`` or ``U+FFFD``.

.. c:function:: PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)

   Replace the unicode encode error with XML character references.

.. c:function:: PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)

   Replace the unicode encode error with backslash escapes (``\x``, ``\u`` and
   ``\U``).

.. c:function:: PyObject* PyCodec_NameReplaceErrors(PyObject *exc)

   Replace the unicode encode error with ``\N{...}`` escapes.

   .. versionadded:: 3.5


================================================
FILE: Doc/c-api/complex.rst
================================================
.. highlight:: c

.. _complexobjects:

Complex Number Objects
----------------------

.. index:: object: complex number

Python's complex number objects are implemented as two distinct types when
viewed from the C API:  one is the Python object exposed to Python programs, and
the other is a C structure which represents the actual complex number value.
The API provides functions for working with both.


Complex Numbers as C Structures
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Note that the functions which accept these structures as parameters and return
them as results do so *by value* rather than dereferencing them through
pointers.  This is consistent throughout the API.


.. c:type:: Py_complex

   The C structure which corresponds to the value portion of a Python complex
   number object.  Most of the functions for dealing with complex number objects
   use structures of this type as input or output values, as appropriate.  It is
   defined as::

      typedef struct {
         double real;
         double imag;
      } Py_complex;


.. c:function:: Py_complex _Py_c_sum(Py_complex left, Py_complex right)

   Return the sum of two complex numbers, using the C :c:type:`Py_complex`
   representation.


.. c:function:: Py_complex _Py_c_diff(Py_complex left, Py_complex right)

   Return the difference between two complex numbers, using the C
   :c:type:`Py_complex` representation.


.. c:function:: Py_complex _Py_c_neg(Py_complex num)

   Return the negation of the complex number *num*, using the C
   :c:type:`Py_complex` representation.


.. c:function:: Py_complex _Py_c_prod(Py_complex left, Py_complex right)

   Return the product of two complex numbers, using the C :c:type:`Py_complex`
   representation.


.. c:function:: Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)

   Return the quotient of two complex numbers, using the C :c:type:`Py_complex`
   representation.

   If *divisor* is null, this method returns zero and sets
   :c:data:`errno` to :c:data:`EDOM`.


.. c:function:: Py_complex _Py_c_pow(Py_complex num, Py_complex exp)

   Return the exponentiation of *num* by *exp*, using the C :c:type:`Py_complex`
   representation.

   If *num* is null and *exp* is not a positive real number,
   this method returns zero and sets :c:data:`errno` to :c:data:`EDOM`.


Complex Numbers as Python Objects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


.. c:type:: PyComplexObject

   This subtype of :c:type:`PyObject` represents a Python complex number object.


.. c:var:: PyTypeObject PyComplex_Type

   This instance of :c:type:`PyTypeObject` represents the Python complex number
   type. It is the same object as :class:`complex` in the Python layer.


.. c:function:: int PyComplex_Check(PyObject *p)

   Return true if its argument is a :c:type:`PyComplexObject` or a subtype of
   :c:type:`PyComplexObject`.  This function always succeeds.


.. c:function:: int PyComplex_CheckExact(PyObject *p)

   Return true if its argument is a :c:type:`PyComplexObject`, but not a subtype of
   :c:type:`PyComplexObject`.  This function always succeeds.


.. c:function:: PyObject* PyComplex_FromCComplex(Py_complex v)

   Create a new Python complex number object from a C :c:type:`Py_complex` value.


.. c:function:: PyObject* PyComplex_FromDoubles(double real, double imag)

   Return a new :c:type:`PyComplexObject` object from *real* and *imag*.


.. c:function:: double PyComplex_RealAsDouble(PyObject *op)

   Return the real part of *op* as a C :c:expr:`double`.


.. c:function:: double PyComplex_ImagAsDouble(PyObject *op)

   Return the imaginary part of *op* as a C :c:expr:`double`.


.. c:function:: Py_complex PyComplex_AsCComplex(PyObject *op)

   Return the :c:type:`Py_complex` value of the complex number *op*.

   If *op* is not a Python complex number object but has a :meth:`__complex__`
   method, this method will first be called to convert *op* to a Python complex
   number object.  If ``__complex__()`` is not defined then it falls back to
   :meth:`__float__`.  If ``__float__()`` is not defined then it falls back
   to :meth:`__index__`.  Upon failure, this method returns ``-1.0`` as a real
   value.

   .. versionchanged:: 3.8
      Use :meth:`__index__` if available.


================================================
FILE: Doc/c-api/concrete.rst
================================================
.. highlight:: c


.. _concrete:

**********************
Concrete Objects Layer
**********************

The functions in this chapter are specific to certain Python object types.
Passing them an object of the wrong type is not a good idea; if you receive an
object from a Python program and you are not sure that it has the right type,
you must perform a type check first; for example, to check that an object is a
dictionary, use :c:func:`PyDict_Check`.  The chapter is structured like the
"family tree" of Python object types.

.. warning::

   While the functions described in this chapter carefully check the type of the
   objects which are passed in, many of them do not check for ``NULL`` being passed
   instead of a valid object.  Allowing ``NULL`` to be passed in can cause memory
   access violations and immediate termination of the interpreter.


.. _fundamental:

Fundamental Objects
===================

This section describes Python type objects and the singleton object ``None``.

.. toctree::

   type.rst
   none.rst


.. _numericobjects:

Numeric Objects
===============

.. index:: object: numeric

.. toctree::

   long.rst
   bool.rst
   float.rst
   complex.rst


.. _sequenceobjects:

Sequence Objects
================

.. index:: object: sequence

Generic operations on sequence objects were discussed in the previous chapter;
this section deals with the specific kinds of sequence objects that are
intrinsic to the Python language.

.. XXX sort out unicode, str, bytes and bytearray

.. toctree::

   bytes.rst
   bytearray.rst
   unicode.rst
   tuple.rst
   list.rst


.. _mapobjects:

Container Objects
=================

.. index:: object: mapping

.. toctree::

   dict.rst
   set.rst


.. _otherobjects:

Function Objects
================

.. toctree::

   function.rst
   method.rst
   cell.rst
   code.rst


Other Objects
=============

.. toctree::

   file.rst
   module.rst
   iterator.rst
   descriptor.rst
   slice.rst
   memoryview.rst
   weakref.rst
   capsule.rst
   frame.rst
   gen.rst
   coro.rst
   contextvars.rst
   datetime.rst
   typehints.rst


================================================
FILE: Doc/c-api/contextvars.rst
================================================
.. highlight:: c

.. _contextvarsobjects:

Context Variables Objects
-------------------------

.. _contextvarsobjects_pointertype_change:
.. versionchanged:: 3.7.1

   .. note::

      In Python 3.7.1 the signatures of all context variables
      C APIs were **changed** to use :c:type:`PyObject` pointers instead
      of :c:type:`PyContext`, :c:type:`PyContextVar`, and
      :c:type:`PyContextToken`, e.g.::

         // in 3.7.0:
         PyContext *PyContext_New(void);

         // in 3.7.1+:
         PyObject *PyContext_New(void);

      See :issue:`34762` for more details.


.. versionadded:: 3.7

This section details the public C API for the :mod:`contextvars` module.

.. c:type:: PyContext

   The C structure used to represent a :class:`contextvars.Context`
   object.

.. c:type:: PyContextVar

   The C structure used to represent a :class:`contextvars.ContextVar`
   object.

.. c:type:: PyContextToken

   The C structure used to represent a :class:`contextvars.Token` object.

.. c:var:: PyTypeObject PyContext_Type

   The type object representing the *context* type.

.. c:var:: PyTypeObject PyContextVar_Type

   The type object representing the *context variable* type.

.. c:var:: PyTypeObject PyContextToken_Type

   The type object representing the *context variable token* type.


Type-check macros:

.. c:function:: int PyContext_CheckExact(PyObject *o)

   Return true if *o* is of type :c:data:`PyContext_Type`. *o* must not be
   ``NULL``.  This function always succeeds.

.. c:function:: int PyContextVar_CheckExact(PyObject *o)

   Return true if *o* is of type :c:data:`PyContextVar_Type`. *o* must not be
   ``NULL``.  This function always succeeds.

.. c:function:: int PyContextToken_CheckExact(PyObject *o)

   Return true if *o* is of type :c:data:`PyContextToken_Type`.
   *o* must not be ``NULL``.  This function always succeeds.


Context object management functions:

.. c:function:: PyObject *PyContext_New(void)

   Create a new empty context object.  Returns ``NULL`` if an error
   has occurred.

.. c:function:: PyObject *PyContext_Copy(PyObject *ctx)

   Create a shallow copy of the passed *ctx* context object.
   Returns ``NULL`` if an error has occurred.

.. c:function:: PyObject *PyContext_CopyCurrent(void)

   Create a shallow copy of the current thread context.
   Returns ``NULL`` if an error has occurred.

.. c:function:: int PyContext_Enter(PyObject *ctx)

   Set *ctx* as the current context for the current thread.
   Returns ``0`` on success, and ``-1`` on error.

.. c:function:: int PyContext_Exit(PyObject *ctx)

   Deactivate the *ctx* context and restore the previous context as the
   current context for the current thread.  Returns ``0`` on success,
   and ``-1`` on error.


Context variable functions:

.. c:function:: PyObject *PyContextVar_New(const char *name, PyObject *def)

   Create a new ``ContextVar`` object.  The *name* parameter is used
   for introspection and debug purposes.  The *def* parameter specifies
   a default value for the context variable, or ``NULL`` for no default.
   If an error has occurred, this function returns ``NULL``.

.. c:function:: int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

   Get the value of a context variable.  Returns ``-1`` if an error has
   occurred during lookup, and ``0`` if no error occurred, whether or not
   a value was found.

   If the context variable was found, *value* will be a pointer to it.
   If the context variable was *not* found, *value* will point to:

   - *default_value*, if not ``NULL``;
   - the default value of *var*, if not ``NULL``;
   - ``NULL``

   Except for ``NULL``, the function returns a new reference.

.. c:function:: PyObject *PyContextVar_Set(PyObject *var, PyObject *value)

   Set the value of *var* to *value* in the current context.  Returns
   a new token object for this change, or ``NULL`` if an error has occurred.

.. c:function:: int PyContextVar_Reset(PyObject *var, PyObject *token)

   Reset the state of the *var* context variable to that it was in before
   :c:func:`PyContextVar_Set` that returned the *token* was called.
   This function returns ``0`` on success and ``-1`` on error.


================================================
FILE: Doc/c-api/conversion.rst
================================================
.. highlight:: c

.. _string-conversion:

String conversion and formatting
================================

Functions for number conversion and formatted string output.


.. c:function:: int PyOS_snprintf(char *str, size_t size,  const char *format, ...)

   Output not more than *size* bytes to *str* according to the format string
   *format* and the extra arguments. See the Unix man page :manpage:`snprintf(3)`.


.. c:function:: int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)

   Output not more than *size* bytes to *str* according to the format string
   *format* and the variable argument list *va*. Unix man page
   :manpage:`vsnprintf(3)`.

:c:func:`PyOS_snprintf` and :c:func:`PyOS_vsnprintf` wrap the Standard C library
functions :c:func:`snprintf` and :c:func:`vsnprintf`. Their purpose is to
guarantee consistent behavior in corner cases, which the Standard C functions do
not.

The wrappers ensure that ``str[size-1]`` is always ``'\0'`` upon return. They
never write more than *size* bytes (including the trailing ``'\0'``) into str.
Both functions require that ``str != NULL``, ``size > 0``, ``format != NULL``
and ``size < INT_MAX``. Note that this means there is no equivalent to the C99
``n = snprintf(NULL, 0, ...)`` which would determine the necessary buffer size.

The return value (*rv*) for these functions should be interpreted as follows:

* When ``0 <= rv < size``, the output conversion was successful and *rv*
  characters were written to *str* (excluding the trailing ``'\0'`` byte at
  ``str[rv]``).

* When ``rv >= size``, the output conversion was truncated and a buffer with
  ``rv + 1`` bytes would have been needed to succeed. ``str[size-1]`` is ``'\0'``
  in this case.

* When ``rv < 0``, "something bad happened." ``str[size-1]`` is ``'\0'`` in
  this case too, but the rest of *str* is undefined. The exact cause of the error
  depends on the underlying platform.


The following functions provide locale-independent string to number conversions.

.. c:function:: double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception)

   Convert a string ``s`` to a :c:expr:`double`, raising a Python
   exception on failure.  The set of accepted strings corresponds to
   the set of strings accepted by Python's :func:`float` constructor,
   except that ``s`` must not have leading or trailing whitespace.
   The conversion is independent of the current locale.

   If ``endptr`` is ``NULL``, convert the whole string.  Raise
   :exc:`ValueError` and return ``-1.0`` if the string is not a valid
   representation of a floating-point number.

   If endptr is not ``NULL``, convert as much of the string as
   possible and set ``*endptr`` to point to the first unconverted
   character.  If no initial segment of the string is the valid
   representation of a floating-point number, set ``*endptr`` to point
   to the beginning of the string, raise ValueError, and return
   ``-1.0``.

   If ``s`` represents a value that is too large to store in a float
   (for example, ``"1e500"`` is such a string on many platforms) then
   if ``overflow_exception`` is ``NULL`` return ``Py_HUGE_VAL`` (with
   an appropriate sign) and don't set any exception.  Otherwise,
   ``overflow_exception`` must point to a Python exception object;
   raise that exception and return ``-1.0``.  In both cases, set
   ``*endptr`` to point to the first character after the converted value.

   If any other error occurs during the conversion (for example an
   out-of-memory error), set the appropriate Python exception and
   return ``-1.0``.

   .. versionadded:: 3.1


.. c:function:: char* PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)

   Convert a :c:expr:`double` *val* to a string using supplied
   *format_code*, *precision*, and *flags*.

   *format_code* must be one of ``'e'``, ``'E'``, ``'f'``, ``'F'``,
   ``'g'``, ``'G'`` or ``'r'``.  For ``'r'``, the supplied *precision*
   must be 0 and is ignored.  The ``'r'`` format code specifies the
   standard :func:`repr` format.

   *flags* can be zero or more of the values ``Py_DTSF_SIGN``,
   ``Py_DTSF_ADD_DOT_0``, or ``Py_DTSF_ALT``, or-ed together:

   * ``Py_DTSF_SIGN`` means to always precede the returned string with a sign
     character, even if *val* is non-negative.

   * ``Py_DTSF_ADD_DOT_0`` means to ensure that the returned string will not look
     like an integer.

   * ``Py_DTSF_ALT`` means to apply "alternate" formatting rules.  See the
     documentation for the :c:func:`PyOS_snprintf` ``'#'`` specifier for
     details.

   If *ptype* is non-``NULL``, then the value it points to will be set to one of
   ``Py_DTST_FINITE``, ``Py_DTST_INFINITE``, or ``Py_DTST_NAN``, signifying that
   *val* is a finite number, an infinite number, or not a number, respectively.

   The return value is a pointer to *buffer* with the converted string or
   ``NULL`` if the conversion failed. The caller is responsible for freeing the
   returned string by calling :c:func:`PyMem_Free`.

   .. versionadded:: 3.1


.. c:function:: int PyOS_stricmp(const char *s1, const char *s2)

   Case insensitive comparison of strings. The function works almost
   identically to :c:func:`strcmp` except that it ignores the case.


.. c:function:: int PyOS_strnicmp(const char *s1, const char *s2, Py_ssize_t  size)

   Case insensitive comparison of strings. The function works almost
   identically to :c:func:`strncmp` except that it ignores the case.
Download .txt
gitextract_1yhggpvm/

├── .azure-pipelines/
│   ├── ci.yml
│   ├── docs-steps.yml
│   ├── macos-steps.yml
│   ├── posix-deps-apt.sh
│   ├── posix-steps.yml
│   ├── pr.yml
│   ├── prebuild-checks.yml
│   ├── windows-layout-steps.yml
│   └── windows-steps.yml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.rst
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.md
│   │   ├── config.yml
│   │   ├── crash.md
│   │   ├── documentation.md
│   │   └── feature.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── problem-matchers/
│   │   ├── gcc.json
│   │   ├── msvc.json
│   │   └── sphinx.json
│   └── workflows/
│       ├── build.yml
│       ├── build_msi.yml
│       ├── posix-deps-apt.sh
│       └── regen-abidump.sh
├── .gitignore
├── Doc/
│   ├── Makefile
│   ├── README.rst
│   ├── about.rst
│   ├── bugs.rst
│   ├── c-api/
│   │   ├── abstract.rst
│   │   ├── allocation.rst
│   │   ├── apiabiversion.rst
│   │   ├── arg.rst
│   │   ├── bool.rst
│   │   ├── buffer.rst
│   │   ├── bytearray.rst
│   │   ├── bytes.rst
│   │   ├── call.rst
│   │   ├── capsule.rst
│   │   ├── cell.rst
│   │   ├── code.rst
│   │   ├── codec.rst
│   │   ├── complex.rst
│   │   ├── concrete.rst
│   │   ├── contextvars.rst
│   │   ├── conversion.rst
│   │   ├── coro.rst
│   │   ├── datetime.rst
│   │   ├── descriptor.rst
│   │   ├── dict.rst
│   │   ├── exceptions.rst
│   │   ├── file.rst
│   │   ├── float.rst
│   │   ├── frame.rst
│   │   ├── function.rst
│   │   ├── gcsupport.rst
│   │   ├── gen.rst
│   │   ├── import.rst
│   │   ├── index.rst
│   │   ├── init.rst
│   │   ├── init_config.rst
│   │   ├── intro.rst
│   │   ├── iter.rst
│   │   ├── iterator.rst
│   │   ├── list.rst
│   │   ├── long.rst
│   │   ├── mapping.rst
│   │   ├── marshal.rst
│   │   ├── memory.rst
│   │   ├── memoryview.rst
│   │   ├── method.rst
│   │   ├── module.rst
│   │   ├── none.rst
│   │   ├── number.rst
│   │   ├── objbuffer.rst
│   │   ├── object.rst
│   │   ├── objimpl.rst
│   │   ├── refcounting.rst
│   │   ├── reflection.rst
│   │   ├── sequence.rst
│   │   ├── set.rst
│   │   ├── slice.rst
│   │   ├── stable.rst
│   │   ├── structures.rst
│   │   ├── sys.rst
│   │   ├── tuple.rst
│   │   ├── type.rst
│   │   ├── typehints.rst
│   │   ├── typeobj.rst
│   │   ├── unicode.rst
│   │   ├── utilities.rst
│   │   ├── veryhigh.rst
│   │   └── weakref.rst
│   ├── conf.py
│   ├── contents.rst
│   ├── copyright.rst
│   ├── distributing/
│   │   └── index.rst
│   ├── extending/
│   │   ├── building.rst
│   │   ├── embedding.rst
│   │   ├── extending.rst
│   │   ├── index.rst
│   │   ├── newtypes.rst
│   │   ├── newtypes_tutorial.rst
│   │   └── windows.rst
│   ├── faq/
│   │   ├── design.rst
│   │   ├── extending.rst
│   │   ├── general.rst
│   │   ├── gui.rst
│   │   ├── index.rst
│   │   ├── installed.rst
│   │   ├── library.rst
│   │   ├── programming.rst
│   │   └── windows.rst
│   ├── glossary.rst
│   ├── howto/
│   │   ├── annotations.rst
│   │   ├── argparse.rst
│   │   ├── clinic.rst
│   │   ├── cporting.rst
│   │   ├── curses.rst
│   │   ├── descriptor.rst
│   │   ├── enum.rst
│   │   ├── functional.rst
│   │   ├── index.rst
│   │   ├── instrumentation.rst
│   │   ├── ipaddress.rst
│   │   ├── isolating-extensions.rst
│   │   ├── logging-cookbook.rst
│   │   ├── logging.rst
│   │   ├── perf_profiling.rst
│   │   ├── pyporting.rst
│   │   ├── regex.rst
│   │   ├── sockets.rst
│   │   ├── sorting.rst
│   │   ├── unicode.rst
│   │   └── urllib2.rst
│   ├── includes/
│   │   ├── custom.c
│   │   ├── custom2.c
│   │   ├── custom3.c
│   │   ├── custom4.c
│   │   ├── dbpickle.py
│   │   ├── diff.py
│   │   ├── email-alternative.py
│   │   ├── email-dir.py
│   │   ├── email-headers.py
│   │   ├── email-mime.py
│   │   ├── email-read-alternative.py
│   │   ├── email-simple.py
│   │   ├── email-unpack.py
│   │   ├── minidom-example.py
│   │   ├── mp_newtype.py
│   │   ├── mp_pool.py
│   │   ├── mp_workers.py
│   │   ├── ndiff.py
│   │   ├── run-func.c
│   │   ├── setup.py
│   │   ├── sublist.c
│   │   ├── test.py
│   │   ├── turtle-star.py
│   │   ├── typestruct.h
│   │   ├── tzinfo_examples.py
│   │   └── wasm-notavail.rst
│   ├── install/
│   │   └── index.rst
│   ├── installing/
│   │   └── index.rst
│   ├── library/
│   │   ├── 2to3.rst
│   │   ├── __future__.rst
│   │   ├── __main__.rst
│   │   ├── _thread.rst
│   │   ├── abc.rst
│   │   ├── aifc.rst
│   │   ├── allos.rst
│   │   ├── archiving.rst
│   │   ├── argparse.rst
│   │   ├── array.rst
│   │   ├── ast.rst
│   │   ├── asyncio-api-index.rst
│   │   ├── asyncio-dev.rst
│   │   ├── asyncio-eventloop.rst
│   │   ├── asyncio-exceptions.rst
│   │   ├── asyncio-extending.rst
│   │   ├── asyncio-future.rst
│   │   ├── asyncio-llapi-index.rst
│   │   ├── asyncio-platforms.rst
│   │   ├── asyncio-policy.rst
│   │   ├── asyncio-protocol.rst
│   │   ├── asyncio-queue.rst
│   │   ├── asyncio-runner.rst
│   │   ├── asyncio-stream.rst
│   │   ├── asyncio-subprocess.rst
│   │   ├── asyncio-sync.rst
│   │   ├── asyncio-task.rst
│   │   ├── asyncio.rst
│   │   ├── atexit.rst
│   │   ├── audioop.rst
│   │   ├── audit_events.rst
│   │   ├── base64.rst
│   │   ├── bdb.rst
│   │   ├── binary.rst
│   │   ├── binascii.rst
│   │   ├── bisect.rst
│   │   ├── builtins.rst
│   │   ├── bz2.rst
│   │   ├── calendar.rst
│   │   ├── cgi.rst
│   │   ├── cgitb.rst
│   │   ├── chunk.rst
│   │   ├── cmath.rst
│   │   ├── cmd.rst
│   │   ├── code.rst
│   │   ├── codecs.rst
│   │   ├── codeop.rst
│   │   ├── collections.abc.rst
│   │   ├── collections.rst
│   │   ├── colorsys.rst
│   │   ├── compileall.rst
│   │   ├── concurrency.rst
│   │   ├── concurrent.futures.rst
│   │   ├── concurrent.rst
│   │   ├── configparser.rst
│   │   ├── constants.rst
│   │   ├── contextlib.rst
│   │   ├── contextvars.rst
│   │   ├── copy.rst
│   │   ├── copyreg.rst
│   │   ├── crypt.rst
│   │   ├── crypto.rst
│   │   ├── csv.rst
│   │   ├── ctypes.rst
│   │   ├── curses.ascii.rst
│   │   ├── curses.panel.rst
│   │   ├── curses.rst
│   │   ├── custominterp.rst
│   │   ├── dataclasses.rst
│   │   ├── datatypes.rst
│   │   ├── datetime.rst
│   │   ├── dbm.rst
│   │   ├── debug.rst
│   │   ├── decimal.rst
│   │   ├── development.rst
│   │   ├── devmode.rst
│   │   ├── dialog.rst
│   │   ├── difflib.rst
│   │   ├── dis.rst
│   │   ├── distribution.rst
│   │   ├── doctest.rst
│   │   ├── email.charset.rst
│   │   ├── email.compat32-message.rst
│   │   ├── email.contentmanager.rst
│   │   ├── email.encoders.rst
│   │   ├── email.errors.rst
│   │   ├── email.examples.rst
│   │   ├── email.generator.rst
│   │   ├── email.header.rst
│   │   ├── email.headerregistry.rst
│   │   ├── email.iterators.rst
│   │   ├── email.message.rst
│   │   ├── email.mime.rst
│   │   ├── email.parser.rst
│   │   ├── email.policy.rst
│   │   ├── email.rst
│   │   ├── email.utils.rst
│   │   ├── ensurepip.rst
│   │   ├── enum.rst
│   │   ├── errno.rst
│   │   ├── exceptions.rst
│   │   ├── faulthandler.rst
│   │   ├── fcntl.rst
│   │   ├── filecmp.rst
│   │   ├── fileformats.rst
│   │   ├── fileinput.rst
│   │   ├── filesys.rst
│   │   ├── fnmatch.rst
│   │   ├── fractions.rst
│   │   ├── frameworks.rst
│   │   ├── ftplib.rst
│   │   ├── functional.rst
│   │   ├── functions.rst
│   │   ├── functools.rst
│   │   ├── gc.rst
│   │   ├── getopt.rst
│   │   ├── getpass.rst
│   │   ├── gettext.rst
│   │   ├── glob.rst
│   │   ├── graphlib.rst
│   │   ├── grp.rst
│   │   ├── gzip.rst
│   │   ├── hashlib.rst
│   │   ├── heapq.rst
│   │   ├── hmac.rst
│   │   ├── html.entities.rst
│   │   ├── html.parser.rst
│   │   ├── html.rst
│   │   ├── http.client.rst
│   │   ├── http.cookiejar.rst
│   │   ├── http.cookies.rst
│   │   ├── http.rst
│   │   ├── http.server.rst
│   │   ├── i18n.rst
│   │   ├── idle.rst
│   │   ├── imaplib.rst
│   │   ├── imghdr.rst
│   │   ├── imp.rst
│   │   ├── importlib.metadata.rst
│   │   ├── importlib.resources.abc.rst
│   │   ├── importlib.resources.rst
│   │   ├── importlib.rst
│   │   ├── index.rst
│   │   ├── inspect.rst
│   │   ├── internet.rst
│   │   ├── intro.rst
│   │   ├── io.rst
│   │   ├── ipaddress.rst
│   │   ├── ipc.rst
│   │   ├── itertools.rst
│   │   ├── json.rst
│   │   ├── keyword.rst
│   │   ├── language.rst
│   │   ├── linecache.rst
│   │   ├── locale.rst
│   │   ├── logging.config.rst
│   │   ├── logging.handlers.rst
│   │   ├── logging.rst
│   │   ├── lzma.rst
│   │   ├── mailbox.rst
│   │   ├── mailcap.rst
│   │   ├── markup.rst
│   │   ├── marshal.rst
│   │   ├── math.rst
│   │   ├── mimetypes.rst
│   │   ├── mm.rst
│   │   ├── mmap.rst
│   │   ├── modulefinder.rst
│   │   ├── modules.rst
│   │   ├── msilib.rst
│   │   ├── msvcrt.rst
│   │   ├── multiprocessing.rst
│   │   ├── multiprocessing.shared_memory.rst
│   │   ├── netdata.rst
│   │   ├── netrc.rst
│   │   ├── nis.rst
│   │   ├── nntplib.rst
│   │   ├── numbers.rst
│   │   ├── numeric.rst
│   │   ├── operator.rst
│   │   ├── optparse.rst
│   │   ├── os.path.rst
│   │   ├── os.rst
│   │   ├── ossaudiodev.rst
│   │   ├── pathlib.rst
│   │   ├── pdb.rst
│   │   ├── persistence.rst
│   │   ├── pickle.rst
│   │   ├── pickletools.rst
│   │   ├── pipes.rst
│   │   ├── pkgutil.rst
│   │   ├── platform.rst
│   │   ├── plistlib.rst
│   │   ├── poplib.rst
│   │   ├── posix.rst
│   │   ├── pprint.rst
│   │   ├── profile.rst
│   │   ├── pty.rst
│   │   ├── pwd.rst
│   │   ├── py_compile.rst
│   │   ├── pyclbr.rst
│   │   ├── pydoc.rst
│   │   ├── pyexpat.rst
│   │   ├── python.rst
│   │   ├── queue.rst
│   │   ├── quopri.rst
│   │   ├── random.rst
│   │   ├── re.rst
│   │   ├── readline.rst
│   │   ├── reprlib.rst
│   │   ├── resource.rst
│   │   ├── rlcompleter.rst
│   │   ├── runpy.rst
│   │   ├── sched.rst
│   │   ├── secrets.rst
│   │   ├── security_warnings.rst
│   │   ├── select.rst
│   │   ├── selectors.rst
│   │   ├── shelve.rst
│   │   ├── shlex.rst
│   │   ├── shutil.rst
│   │   ├── signal.rst
│   │   ├── site.rst
│   │   ├── smtplib.rst
│   │   ├── sndhdr.rst
│   │   ├── socket.rst
│   │   ├── socketserver.rst
│   │   ├── spwd.rst
│   │   ├── sqlite3.rst
│   │   ├── ssl.rst
│   │   ├── stat.rst
│   │   ├── statistics.rst
│   │   ├── stdtypes.rst
│   │   ├── string.rst
│   │   ├── stringprep.rst
│   │   ├── struct.rst
│   │   ├── subprocess.rst
│   │   ├── sunau.rst
│   │   ├── superseded.rst
│   │   ├── symtable.rst
│   │   ├── sys.rst
│   │   ├── sys_path_init.rst
│   │   ├── sysconfig.rst
│   │   ├── syslog.rst
│   │   ├── tabnanny.rst
│   │   ├── tarfile.rst
│   │   ├── telnetlib.rst
│   │   ├── tempfile.rst
│   │   ├── termios.rst
│   │   ├── test.rst
│   │   ├── text.rst
│   │   ├── textwrap.rst
│   │   ├── threading.rst
│   │   ├── time.rst
│   │   ├── timeit.rst
│   │   ├── tk.rst
│   │   ├── tkinter.colorchooser.rst
│   │   ├── tkinter.dnd.rst
│   │   ├── tkinter.font.rst
│   │   ├── tkinter.messagebox.rst
│   │   ├── tkinter.rst
│   │   ├── tkinter.scrolledtext.rst
│   │   ├── tkinter.tix.rst
│   │   ├── tkinter.ttk.rst
│   │   ├── token-list.inc
│   │   ├── token.rst
│   │   ├── tokenize.rst
│   │   ├── tomllib.rst
│   │   ├── trace.rst
│   │   ├── traceback.rst
│   │   ├── tracemalloc.rst
│   │   ├── tty.rst
│   │   ├── tulip_coro.dia
│   │   ├── turtle-star.ps
│   │   ├── turtle.rst
│   │   ├── types.rst
│   │   ├── typing.rst
│   │   ├── unicodedata.rst
│   │   ├── unittest.mock-examples.rst
│   │   ├── unittest.mock.rst
│   │   ├── unittest.rst
│   │   ├── unix.rst
│   │   ├── urllib.error.rst
│   │   ├── urllib.parse.rst
│   │   ├── urllib.request.rst
│   │   ├── urllib.robotparser.rst
│   │   ├── urllib.rst
│   │   ├── uu.rst
│   │   ├── uuid.rst
│   │   ├── venv.rst
│   │   ├── warnings.rst
│   │   ├── wave.rst
│   │   ├── weakref.rst
│   │   ├── webbrowser.rst
│   │   ├── windows.rst
│   │   ├── winreg.rst
│   │   ├── winsound.rst
│   │   ├── wsgiref.rst
│   │   ├── xdrlib.rst
│   │   ├── xml.dom.minidom.rst
│   │   ├── xml.dom.pulldom.rst
│   │   ├── xml.dom.rst
│   │   ├── xml.etree.elementtree.rst
│   │   ├── xml.rst
│   │   ├── xml.sax.handler.rst
│   │   ├── xml.sax.reader.rst
│   │   ├── xml.sax.rst
│   │   ├── xml.sax.utils.rst
│   │   ├── xmlrpc.client.rst
│   │   ├── xmlrpc.rst
│   │   ├── xmlrpc.server.rst
│   │   ├── zipapp.rst
│   │   ├── zipfile.rst
│   │   ├── zipimport.rst
│   │   ├── zlib.rst
│   │   └── zoneinfo.rst
│   ├── license.rst
│   ├── make.bat
│   ├── reference/
│   │   ├── compound_stmts.rst
│   │   ├── datamodel.rst
│   │   ├── executionmodel.rst
│   │   ├── expressions.rst
│   │   ├── grammar.rst
│   │   ├── import.rst
│   │   ├── index.rst
│   │   ├── introduction.rst
│   │   ├── lexical_analysis.rst
│   │   ├── simple_stmts.rst
│   │   └── toplevel_components.rst
│   ├── requirements.txt
│   ├── tools/
│   │   ├── extensions/
│   │   │   ├── asdl_highlight.py
│   │   │   ├── c_annotations.py
│   │   │   ├── escape4chm.py
│   │   │   ├── glossary_search.py
│   │   │   ├── patchlevel.py
│   │   │   ├── peg_highlight.py
│   │   │   └── pyspecific.py
│   │   ├── static/
│   │   │   └── changelog_search.js
│   │   └── templates/
│   │       ├── customsourcelink.html
│   │       ├── download.html
│   │       ├── dummy.html
│   │       ├── indexcontent.html
│   │       ├── indexsidebar.html
│   │       ├── layout.html
│   │       ├── opensearch.xml
│   │       └── search.html
│   ├── tutorial/
│   │   ├── appendix.rst
│   │   ├── appetite.rst
│   │   ├── classes.rst
│   │   ├── controlflow.rst
│   │   ├── datastructures.rst
│   │   ├── errors.rst
│   │   ├── floatingpoint.rst
│   │   ├── index.rst
│   │   ├── inputoutput.rst
│   │   ├── interactive.rst
│   │   ├── interpreter.rst
│   │   ├── introduction.rst
│   │   ├── modules.rst
│   │   ├── stdlib.rst
│   │   ├── stdlib2.rst
│   │   ├── venv.rst
│   │   └── whatnow.rst
│   ├── using/
│   │   ├── cmdline.rst
│   │   ├── configure.rst
│   │   ├── editors.rst
│   │   ├── index.rst
│   │   ├── mac.rst
│   │   ├── unix.rst
│   │   ├── venv-create.inc
│   │   └── windows.rst
│   └── whatsnew/
│       ├── 2.0.rst
│       ├── 2.1.rst
│       ├── 2.2.rst
│       ├── 2.3.rst
│       ├── 2.4.rst
│       ├── 2.5.rst
│       ├── 2.6.rst
│       ├── 2.7.rst
│       ├── 3.0.rst
│       ├── 3.1.rst
│       ├── 3.10.rst
│       ├── 3.11.rst
│       ├── 3.12.rst
│       ├── 3.2.rst
│       ├── 3.3.rst
│       ├── 3.4.rst
│       ├── 3.5.rst
│       ├── 3.6.rst
│       ├── 3.7.rst
│       ├── 3.8.rst
│       ├── 3.9.rst
│       ├── changelog.rst
│       └── index.rst
├── Grammar/
│   ├── Tokens
│   └── python.gram
├── Include/
│   ├── Python.h
│   ├── README.rst
│   ├── abstract.h
│   ├── bltinmodule.h
│   ├── boolobject.h
│   ├── bytearrayobject.h
│   ├── bytesobject.h
│   ├── ceval.h
│   ├── codecs.h
│   ├── compile.h
│   ├── complexobject.h
│   ├── cpython/
│   │   ├── abstract.h
│   │   ├── bytearrayobject.h
│   │   ├── bytesobject.h
│   │   ├── cellobject.h
│   │   ├── ceval.h
│   │   ├── classobject.h
│   │   ├── code.h
│   │   ├── compile.h
│   │   ├── complexobject.h
│   │   ├── context.h
│   │   ├── descrobject.h
│   │   ├── dictobject.h
│   │   ├── fileobject.h
│   │   ├── fileutils.h
│   │   ├── floatobject.h
│   │   ├── frameobject.h
│   │   ├── funcobject.h
│   │   ├── genobject.h
│   │   ├── import.h
│   │   ├── initconfig.h
│   │   ├── listobject.h
│   │   ├── lock.h
│   │   ├── longintrepr.h
│   │   ├── longobject.h
│   │   ├── memoryobject.h
│   │   ├── methodobject.h
│   │   ├── modsupport.h
│   │   ├── object.h
│   │   ├── objimpl.h
│   │   ├── picklebufobject.h
│   │   ├── pthread_stubs.h
│   │   ├── pyctype.h
│   │   ├── pydebug.h
│   │   ├── pyerrors.h
│   │   ├── pyfpe.h
│   │   ├── pyframe.h
│   │   ├── pylifecycle.h
│   │   ├── pymem.h
│   │   ├── pyqueue.h
│   │   ├── pystate.h
│   │   ├── pythonrun.h
│   │   ├── pythread.h
│   │   ├── pytime.h
│   │   ├── setobject.h
│   │   ├── sysmodule.h
│   │   ├── traceback.h
│   │   ├── tupleobject.h
│   │   ├── unicodeobject.h
│   │   ├── warnings.h
│   │   └── weakrefobject.h
│   ├── datetime.h
│   ├── descrobject.h
│   ├── dictobject.h
│   ├── dynamic_annotations.h
│   ├── enumobject.h
│   ├── errcode.h
│   ├── exports.h
│   ├── fileobject.h
│   ├── fileutils.h
│   ├── floatobject.h
│   ├── frameobject.h
│   ├── genericaliasobject.h
│   ├── import.h
│   ├── internal/
│   │   ├── pycore_abstract.h
│   │   ├── pycore_asdl.h
│   │   ├── pycore_ast.h
│   │   ├── pycore_ast_state.h
│   │   ├── pycore_atomic.h
│   │   ├── pycore_atomic_funcs.h
│   │   ├── pycore_bitutils.h
│   │   ├── pycore_blocks_output_buffer.h
│   │   ├── pycore_bytes_methods.h
│   │   ├── pycore_bytesobject.h
│   │   ├── pycore_call.h
│   │   ├── pycore_ceval.h
│   │   ├── pycore_ceval_state.h
│   │   ├── pycore_code.h
│   │   ├── pycore_compile.h
│   │   ├── pycore_condvar.h
│   │   ├── pycore_context.h
│   │   ├── pycore_critical_section.h
│   │   ├── pycore_descrobject.h
│   │   ├── pycore_dict.h
│   │   ├── pycore_dict_state.h
│   │   ├── pycore_dtoa.h
│   │   ├── pycore_emscripten_signal.h
│   │   ├── pycore_exceptions.h
│   │   ├── pycore_faulthandler.h
│   │   ├── pycore_fileutils.h
│   │   ├── pycore_floatobject.h
│   │   ├── pycore_format.h
│   │   ├── pycore_frame.h
│   │   ├── pycore_function.h
│   │   ├── pycore_gc.h
│   │   ├── pycore_genobject.h
│   │   ├── pycore_getopt.h
│   │   ├── pycore_gil.h
│   │   ├── pycore_global_objects.h
│   │   ├── pycore_global_objects_fini_generated.h
│   │   ├── pycore_global_strings.h
│   │   ├── pycore_hamt.h
│   │   ├── pycore_hashtable.h
│   │   ├── pycore_import.h
│   │   ├── pycore_initconfig.h
│   │   ├── pycore_interp.h
│   │   ├── pycore_interpreteridobject.h
│   │   ├── pycore_intrinsics.h
│   │   ├── pycore_list.h
│   │   ├── pycore_llist.h
│   │   ├── pycore_lock.h
│   │   ├── pycore_long.h
│   │   ├── pycore_moduleobject.h
│   │   ├── pycore_mrocache.h
│   │   ├── pycore_namespace.h
│   │   ├── pycore_object.h
│   │   ├── pycore_obmalloc.h
│   │   ├── pycore_obmalloc_init.h
│   │   ├── pycore_opcode.h
│   │   ├── pycore_parser.h
│   │   ├── pycore_pathconfig.h
│   │   ├── pycore_pyarena.h
│   │   ├── pycore_pyerrors.h
│   │   ├── pycore_pyhash.h
│   │   ├── pycore_pylifecycle.h
│   │   ├── pycore_pymath.h
│   │   ├── pycore_pymem.h
│   │   ├── pycore_pymem_init.h
│   │   ├── pycore_pyqueue.h
│   │   ├── pycore_pystate.h
│   │   ├── pycore_pythread.h
│   │   ├── pycore_qsbr.h
│   │   ├── pycore_range.h
│   │   ├── pycore_refcnt.h
│   │   ├── pycore_runtime.h
│   │   ├── pycore_runtime_init.h
│   │   ├── pycore_runtime_init_generated.h
│   │   ├── pycore_signal.h
│   │   ├── pycore_sliceobject.h
│   │   ├── pycore_strhex.h
│   │   ├── pycore_structseq.h
│   │   ├── pycore_symtable.h
│   │   ├── pycore_sysmodule.h
│   │   ├── pycore_time.h
│   │   ├── pycore_token.h
│   │   ├── pycore_traceback.h
│   │   ├── pycore_tracemalloc.h
│   │   ├── pycore_tuple.h
│   │   ├── pycore_typeobject.h
│   │   ├── pycore_ucnhash.h
│   │   ├── pycore_unicodeobject.h
│   │   ├── pycore_unicodeobject_generated.h
│   │   ├── pycore_unionobject.h
│   │   └── pycore_warnings.h
│   ├── intrcheck.h
│   ├── iterobject.h
│   ├── listobject.h
│   ├── longobject.h
│   ├── marshal.h
│   ├── memoryobject.h
│   ├── methodobject.h
│   ├── mimalloc/
│   │   ├── mimalloc-atomic.h
│   │   ├── mimalloc-internal.h
│   │   ├── mimalloc-track.h
│   │   ├── mimalloc-types.h
│   │   └── mimalloc.h
│   ├── modsupport.h
│   ├── moduleobject.h
│   ├── object.h
│   ├── objimpl.h
│   ├── opcode.h
│   ├── osdefs.h
│   ├── osmodule.h
│   ├── parking_lot.h
│   ├── patchlevel.h
│   ├── py_curses.h
│   ├── pyatomic.h
│   ├── pyatomic_gcc.h
│   ├── pyatomic_msc.h
│   ├── pyatomic_std.h
│   ├── pybuffer.h
│   ├── pycapsule.h
│   ├── pydtrace.d
│   ├── pydtrace.h
│   ├── pyerrors.h
│   ├── pyexpat.h
│   ├── pyframe.h
│   ├── pyhash.h
│   ├── pylifecycle.h
│   ├── pymacconfig.h
│   ├── pymacro.h
│   ├── pymath.h
│   ├── pymem.h
│   ├── pyport.h
│   ├── pystate.h
│   ├── pystats.h
│   ├── pystrcmp.h
│   ├── pystrtod.h
│   ├── pythonrun.h
│   ├── pythread.h
│   ├── pytypedefs.h
│   ├── rangeobject.h
│   ├── setobject.h
│   ├── sliceobject.h
│   ├── structmember.h
│   ├── structseq.h
│   ├── sysmodule.h
│   ├── traceback.h
│   ├── tracemalloc.h
│   ├── tupleobject.h
│   ├── typeslots.h
│   ├── unicodeobject.h
│   ├── warnings.h
│   └── weakrefobject.h
├── LICENSE
├── Lib/
│   ├── __future__.py
│   ├── __hello__.py
│   ├── __phello__/
│   │   ├── __init__.py
│   │   ├── ham/
│   │   │   ├── __init__.py
│   │   │   └── eggs.py
│   │   └── spam.py
│   ├── _aix_support.py
│   ├── _collections_abc.py
│   ├── _compat_pickle.py
│   ├── _compression.py
│   ├── _markupbase.py
│   ├── _osx_support.py
│   ├── _py_abc.py
│   ├── _pydecimal.py
│   ├── _pyio.py
│   ├── _pylong.py
│   ├── _sitebuiltins.py
│   ├── _strptime.py
│   ├── _threading_local.py
│   ├── _weakrefset.py
│   ├── abc.py
│   ├── aifc.py
│   ├── antigravity.py
│   ├── argparse.py
│   ├── ast.py
│   ├── asyncio/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── base_events.py
│   │   ├── base_futures.py
│   │   ├── base_subprocess.py
│   │   ├── base_tasks.py
│   │   ├── constants.py
│   │   ├── coroutines.py
│   │   ├── events.py
│   │   ├── exceptions.py
│   │   ├── format_helpers.py
│   │   ├── futures.py
│   │   ├── locks.py
│   │   ├── log.py
│   │   ├── mixins.py
│   │   ├── proactor_events.py
│   │   ├── protocols.py
│   │   ├── queues.py
│   │   ├── runners.py
│   │   ├── selector_events.py
│   │   ├── sslproto.py
│   │   ├── staggered.py
│   │   ├── streams.py
│   │   ├── subprocess.py
│   │   ├── taskgroups.py
│   │   ├── tasks.py
│   │   ├── threads.py
│   │   ├── timeouts.py
│   │   ├── transports.py
│   │   ├── trsock.py
│   │   ├── unix_events.py
│   │   ├── windows_events.py
│   │   └── windows_utils.py
│   ├── base64.py
│   ├── bdb.py
│   ├── bisect.py
│   ├── bz2.py
│   ├── cProfile.py
│   ├── calendar.py
│   ├── cgi.py
│   ├── cgitb.py
│   ├── chunk.py
│   ├── cmd.py
│   ├── code.py
│   ├── codecs.py
│   ├── codeop.py
│   ├── collections/
│   │   ├── __init__.py
│   │   └── abc.py
│   ├── colorsys.py
│   ├── compileall.py
│   ├── concurrent/
│   │   ├── __init__.py
│   │   └── futures/
│   │       ├── __init__.py
│   │       ├── _base.py
│   │       ├── process.py
│   │       └── thread.py
│   ├── configparser.py
│   ├── contextlib.py
│   ├── contextvars.py
│   ├── copy.py
│   ├── copyreg.py
│   ├── crypt.py
│   ├── csv.py
│   ├── ctypes/
│   │   ├── __init__.py
│   │   ├── _aix.py
│   │   ├── _endian.py
│   │   ├── macholib/
│   │   │   ├── README.ctypes
│   │   │   ├── __init__.py
│   │   │   ├── dyld.py
│   │   │   ├── dylib.py
│   │   │   ├── fetch_macholib
│   │   │   ├── fetch_macholib.bat
│   │   │   └── framework.py
│   │   ├── util.py
│   │   └── wintypes.py
│   ├── curses/
│   │   ├── __init__.py
│   │   ├── ascii.py
│   │   ├── has_key.py
│   │   ├── panel.py
│   │   └── textpad.py
│   ├── dataclasses.py
│   ├── datetime.py
│   ├── dbm/
│   │   ├── __init__.py
│   │   ├── dumb.py
│   │   ├── gnu.py
│   │   └── ndbm.py
│   ├── decimal.py
│   ├── difflib.py
│   ├── dis.py
│   ├── doctest.py
│   ├── email/
│   │   ├── __init__.py
│   │   ├── _encoded_words.py
│   │   ├── _header_value_parser.py
│   │   ├── _parseaddr.py
│   │   ├── _policybase.py
│   │   ├── architecture.rst
│   │   ├── base64mime.py
│   │   ├── charset.py
│   │   ├── contentmanager.py
│   │   ├── encoders.py
│   │   ├── errors.py
│   │   ├── feedparser.py
│   │   ├── generator.py
│   │   ├── header.py
│   │   ├── headerregistry.py
│   │   ├── iterators.py
│   │   ├── message.py
│   │   ├── mime/
│   │   │   ├── __init__.py
│   │   │   ├── application.py
│   │   │   ├── audio.py
│   │   │   ├── base.py
│   │   │   ├── image.py
│   │   │   ├── message.py
│   │   │   ├── multipart.py
│   │   │   ├── nonmultipart.py
│   │   │   └── text.py
│   │   ├── parser.py
│   │   ├── policy.py
│   │   ├── quoprimime.py
│   │   └── utils.py
│   ├── encodings/
│   │   ├── __init__.py
│   │   ├── aliases.py
│   │   ├── ascii.py
│   │   ├── base64_codec.py
│   │   ├── big5.py
│   │   ├── big5hkscs.py
│   │   ├── bz2_codec.py
│   │   ├── charmap.py
│   │   ├── cp037.py
│   │   ├── cp1006.py
│   │   ├── cp1026.py
│   │   ├── cp1125.py
│   │   ├── cp1140.py
│   │   ├── cp1250.py
│   │   ├── cp1251.py
│   │   ├── cp1252.py
│   │   ├── cp1253.py
│   │   ├── cp1254.py
│   │   ├── cp1255.py
│   │   ├── cp1256.py
│   │   ├── cp1257.py
│   │   ├── cp1258.py
│   │   ├── cp273.py
│   │   ├── cp424.py
│   │   ├── cp437.py
│   │   ├── cp500.py
│   │   ├── cp720.py
│   │   ├── cp737.py
│   │   ├── cp775.py
│   │   ├── cp850.py
│   │   ├── cp852.py
│   │   ├── cp855.py
│   │   ├── cp856.py
│   │   ├── cp857.py
│   │   ├── cp858.py
│   │   ├── cp860.py
│   │   ├── cp861.py
│   │   ├── cp862.py
│   │   ├── cp863.py
│   │   ├── cp864.py
│   │   ├── cp865.py
│   │   ├── cp866.py
│   │   ├── cp869.py
│   │   ├── cp874.py
│   │   ├── cp875.py
│   │   ├── cp932.py
│   │   ├── cp949.py
│   │   ├── cp950.py
│   │   ├── euc_jis_2004.py
│   │   ├── euc_jisx0213.py
│   │   ├── euc_jp.py
│   │   ├── euc_kr.py
│   │   ├── gb18030.py
│   │   ├── gb2312.py
│   │   ├── gbk.py
│   │   ├── hex_codec.py
│   │   ├── hp_roman8.py
│   │   ├── hz.py
│   │   ├── idna.py
│   │   ├── iso2022_jp.py
│   │   ├── iso2022_jp_1.py
│   │   ├── iso2022_jp_2.py
│   │   ├── iso2022_jp_2004.py
│   │   ├── iso2022_jp_3.py
│   │   ├── iso2022_jp_ext.py
│   │   ├── iso2022_kr.py
│   │   ├── iso8859_1.py
│   │   ├── iso8859_10.py
│   │   ├── iso8859_11.py
│   │   ├── iso8859_13.py
│   │   ├── iso8859_14.py
│   │   ├── iso8859_15.py
│   │   ├── iso8859_16.py
│   │   ├── iso8859_2.py
│   │   ├── iso8859_3.py
│   │   ├── iso8859_4.py
│   │   ├── iso8859_5.py
│   │   ├── iso8859_6.py
│   │   ├── iso8859_7.py
│   │   ├── iso8859_8.py
│   │   ├── iso8859_9.py
│   │   ├── johab.py
│   │   ├── koi8_r.py
│   │   ├── koi8_t.py
│   │   ├── koi8_u.py
│   │   ├── kz1048.py
│   │   ├── latin_1.py
│   │   ├── mac_arabic.py
│   │   ├── mac_croatian.py
│   │   ├── mac_cyrillic.py
│   │   ├── mac_farsi.py
│   │   ├── mac_greek.py
│   │   ├── mac_iceland.py
│   │   ├── mac_latin2.py
│   │   ├── mac_roman.py
│   │   ├── mac_romanian.py
│   │   ├── mac_turkish.py
│   │   ├── mbcs.py
│   │   ├── oem.py
│   │   ├── palmos.py
│   │   ├── ptcp154.py
│   │   ├── punycode.py
│   │   ├── quopri_codec.py
│   │   ├── raw_unicode_escape.py
│   │   ├── rot_13.py
│   │   ├── shift_jis.py
│   │   ├── shift_jis_2004.py
│   │   ├── shift_jisx0213.py
│   │   ├── tis_620.py
│   │   ├── undefined.py
│   │   ├── unicode_escape.py
│   │   ├── utf_16.py
│   │   ├── utf_16_be.py
│   │   ├── utf_16_le.py
│   │   ├── utf_32.py
│   │   ├── utf_32_be.py
│   │   ├── utf_32_le.py
│   │   ├── utf_7.py
│   │   ├── utf_8.py
│   │   ├── utf_8_sig.py
│   │   ├── uu_codec.py
│   │   └── zlib_codec.py
│   ├── ensurepip/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _bundled/
│   │   │   ├── pip-22.3.1-py3-none-any.whl
│   │   │   └── setuptools-65.5.0-py3-none-any.whl
│   │   └── _uninstall.py
│   ├── enum.py
│   ├── filecmp.py
│   ├── fileinput.py
│   ├── fnmatch.py
│   ├── fractions.py
│   ├── ftplib.py
│   ├── functools.py
│   ├── genericpath.py
│   ├── getopt.py
│   ├── getpass.py
│   ├── gettext.py
│   ├── glob.py
│   ├── graphlib.py
│   ├── gzip.py
│   ├── hashlib.py
│   ├── heapq.py
│   ├── hmac.py
│   ├── html/
│   │   ├── __init__.py
│   │   ├── entities.py
│   │   └── parser.py
│   ├── http/
│   │   ├── __init__.py
│   │   ├── client.py
│   │   ├── cookiejar.py
│   │   ├── cookies.py
│   │   └── server.py
│   ├── idlelib/
│   │   ├── CREDITS.txt
│   │   ├── ChangeLog
│   │   ├── HISTORY.txt
│   │   ├── Icons/
│   │   │   └── README.txt
│   │   ├── NEWS.txt
│   │   ├── NEWS2x.txt
│   │   ├── README.txt
│   │   ├── TODO.txt
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── autocomplete.py
│   │   ├── autocomplete_w.py
│   │   ├── autoexpand.py
│   │   ├── browser.py
│   │   ├── calltip.py
│   │   ├── calltip_w.py
│   │   ├── codecontext.py
│   │   ├── colorizer.py
│   │   ├── config-extensions.def
│   │   ├── config-highlight.def
│   │   ├── config-keys.def
│   │   ├── config-main.def
│   │   ├── config.py
│   │   ├── config_key.py
│   │   ├── configdialog.py
│   │   ├── debugger.py
│   │   ├── debugger_r.py
│   │   ├── debugobj.py
│   │   ├── debugobj_r.py
│   │   ├── delegator.py
│   │   ├── dynoption.py
│   │   ├── editor.py
│   │   ├── extend.txt
│   │   ├── filelist.py
│   │   ├── format.py
│   │   ├── grep.py
│   │   ├── help.html
│   │   ├── help.py
│   │   ├── help_about.py
│   │   ├── history.py
│   │   ├── hyperparser.py
│   │   ├── idle.bat
│   │   ├── idle.py
│   │   ├── idle.pyw
│   │   ├── idle_test/
│   │   │   ├── README.txt
│   │   │   ├── __init__.py
│   │   │   ├── example_noext
│   │   │   ├── example_stub.pyi
│   │   │   ├── htest.py
│   │   │   ├── mock_idle.py
│   │   │   ├── mock_tk.py
│   │   │   ├── template.py
│   │   │   ├── test_autocomplete.py
│   │   │   ├── test_autocomplete_w.py
│   │   │   ├── test_autoexpand.py
│   │   │   ├── test_browser.py
│   │   │   ├── test_calltip.py
│   │   │   ├── test_calltip_w.py
│   │   │   ├── test_codecontext.py
│   │   │   ├── test_colorizer.py
│   │   │   ├── test_config.py
│   │   │   ├── test_config_key.py
│   │   │   ├── test_configdialog.py
│   │   │   ├── test_debugger.py
│   │   │   ├── test_debugger_r.py
│   │   │   ├── test_debugobj.py
│   │   │   ├── test_debugobj_r.py
│   │   │   ├── test_delegator.py
│   │   │   ├── test_editmenu.py
│   │   │   ├── test_editor.py
│   │   │   ├── test_filelist.py
│   │   │   ├── test_format.py
│   │   │   ├── test_grep.py
│   │   │   ├── test_help.py
│   │   │   ├── test_help_about.py
│   │   │   ├── test_history.py
│   │   │   ├── test_hyperparser.py
│   │   │   ├── test_iomenu.py
│   │   │   ├── test_macosx.py
│   │   │   ├── test_mainmenu.py
│   │   │   ├── test_multicall.py
│   │   │   ├── test_outwin.py
│   │   │   ├── test_parenmatch.py
│   │   │   ├── test_pathbrowser.py
│   │   │   ├── test_percolator.py
│   │   │   ├── test_pyparse.py
│   │   │   ├── test_pyshell.py
│   │   │   ├── test_query.py
│   │   │   ├── test_redirector.py
│   │   │   ├── test_replace.py
│   │   │   ├── test_rpc.py
│   │   │   ├── test_run.py
│   │   │   ├── test_runscript.py
│   │   │   ├── test_scrolledlist.py
│   │   │   ├── test_search.py
│   │   │   ├── test_searchbase.py
│   │   │   ├── test_searchengine.py
│   │   │   ├── test_sidebar.py
│   │   │   ├── test_squeezer.py
│   │   │   ├── test_stackviewer.py
│   │   │   ├── test_statusbar.py
│   │   │   ├── test_text.py
│   │   │   ├── test_textview.py
│   │   │   ├── test_tooltip.py
│   │   │   ├── test_tree.py
│   │   │   ├── test_undo.py
│   │   │   ├── test_util.py
│   │   │   ├── test_warning.py
│   │   │   ├── test_window.py
│   │   │   ├── test_zoomheight.py
│   │   │   ├── test_zzdummy.py
│   │   │   └── tkinter_testing_utils.py
│   │   ├── iomenu.py
│   │   ├── macosx.py
│   │   ├── mainmenu.py
│   │   ├── multicall.py
│   │   ├── outwin.py
│   │   ├── parenmatch.py
│   │   ├── pathbrowser.py
│   │   ├── percolator.py
│   │   ├── pyparse.py
│   │   ├── pyshell.py
│   │   ├── query.py
│   │   ├── redirector.py
│   │   ├── replace.py
│   │   ├── rpc.py
│   │   ├── run.py
│   │   ├── runscript.py
│   │   ├── scrolledlist.py
│   │   ├── search.py
│   │   ├── searchbase.py
│   │   ├── searchengine.py
│   │   ├── sidebar.py
│   │   ├── squeezer.py
│   │   ├── stackviewer.py
│   │   ├── statusbar.py
│   │   ├── textview.py
│   │   ├── tooltip.py
│   │   ├── tree.py
│   │   ├── undo.py
│   │   ├── util.py
│   │   ├── window.py
│   │   ├── zoomheight.py
│   │   └── zzdummy.py
│   ├── imaplib.py
│   ├── imghdr.py
│   ├── imp.py
│   ├── importlib/
│   │   ├── __init__.py
│   │   ├── _abc.py
│   │   ├── _bootstrap.py
│   │   ├── _bootstrap_external.py
│   │   ├── abc.py
│   │   ├── machinery.py
│   │   ├── metadata/
│   │   │   ├── __init__.py
│   │   │   ├── _adapters.py
│   │   │   ├── _collections.py
│   │   │   ├── _functools.py
│   │   │   ├── _itertools.py
│   │   │   ├── _meta.py
│   │   │   └── _text.py
│   │   ├── readers.py
│   │   ├── resources/
│   │   │   ├── __init__.py
│   │   │   ├── _adapters.py
│   │   │   ├── _common.py
│   │   │   ├── _itertools.py
│   │   │   ├── _legacy.py
│   │   │   ├── abc.py
│   │   │   ├── readers.py
│   │   │   └── simple.py
│   │   ├── simple.py
│   │   └── util.py
│   ├── inspect.py
│   ├── io.py
│   ├── ipaddress.py
│   ├── json/
│   │   ├── __init__.py
│   │   ├── decoder.py
│   │   ├── encoder.py
│   │   ├── scanner.py
│   │   └── tool.py
│   ├── keyword.py
│   ├── lib2to3/
│   │   ├── Grammar.txt
│   │   ├── PatternGrammar.txt
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── btm_matcher.py
│   │   ├── btm_utils.py
│   │   ├── fixer_base.py
│   │   ├── fixer_util.py
│   │   ├── fixes/
│   │   │   ├── __init__.py
│   │   │   ├── fix_apply.py
│   │   │   ├── fix_asserts.py
│   │   │   ├── fix_basestring.py
│   │   │   ├── fix_buffer.py
│   │   │   ├── fix_dict.py
│   │   │   ├── fix_except.py
│   │   │   ├── fix_exec.py
│   │   │   ├── fix_execfile.py
│   │   │   ├── fix_exitfunc.py
│   │   │   ├── fix_filter.py
│   │   │   ├── fix_funcattrs.py
│   │   │   ├── fix_future.py
│   │   │   ├── fix_getcwdu.py
│   │   │   ├── fix_has_key.py
│   │   │   ├── fix_idioms.py
│   │   │   ├── fix_import.py
│   │   │   ├── fix_imports.py
│   │   │   ├── fix_imports2.py
│   │   │   ├── fix_input.py
│   │   │   ├── fix_intern.py
│   │   │   ├── fix_isinstance.py
│   │   │   ├── fix_itertools.py
│   │   │   ├── fix_itertools_imports.py
│   │   │   ├── fix_long.py
│   │   │   ├── fix_map.py
│   │   │   ├── fix_metaclass.py
│   │   │   ├── fix_methodattrs.py
│   │   │   ├── fix_ne.py
│   │   │   ├── fix_next.py
│   │   │   ├── fix_nonzero.py
│   │   │   ├── fix_numliterals.py
│   │   │   ├── fix_operator.py
│   │   │   ├── fix_paren.py
│   │   │   ├── fix_print.py
│   │   │   ├── fix_raise.py
│   │   │   ├── fix_raw_input.py
│   │   │   ├── fix_reduce.py
│   │   │   ├── fix_reload.py
│   │   │   ├── fix_renames.py
│   │   │   ├── fix_repr.py
│   │   │   ├── fix_set_literal.py
│   │   │   ├── fix_standarderror.py
│   │   │   ├── fix_sys_exc.py
│   │   │   ├── fix_throw.py
│   │   │   ├── fix_tuple_params.py
│   │   │   ├── fix_types.py
│   │   │   ├── fix_unicode.py
│   │   │   ├── fix_urllib.py
│   │   │   ├── fix_ws_comma.py
│   │   │   ├── fix_xrange.py
│   │   │   ├── fix_xreadlines.py
│   │   │   └── fix_zip.py
│   │   ├── main.py
│   │   ├── patcomp.py
│   │   ├── pgen2/
│   │   │   ├── __init__.py
│   │   │   ├── conv.py
│   │   │   ├── driver.py
│   │   │   ├── grammar.py
│   │   │   ├── literals.py
│   │   │   ├── parse.py
│   │   │   ├── pgen.py
│   │   │   ├── token.py
│   │   │   └── tokenize.py
│   │   ├── pygram.py
│   │   ├── pytree.py
│   │   └── refactor.py
│   ├── linecache.py
│   ├── locale.py
│   ├── logging/
│   │   ├── __init__.py
│   │   ├── config.py
│   │   └── handlers.py
│   ├── lzma.py
│   ├── mailbox.py
│   ├── mailcap.py
│   ├── mimetypes.py
│   ├── modulefinder.py
│   ├── msilib/
│   │   ├── __init__.py
│   │   ├── schema.py
│   │   ├── sequence.py
│   │   └── text.py
│   ├── multiprocessing/
│   │   ├── __init__.py
│   │   ├── connection.py
│   │   ├── context.py
│   │   ├── dummy/
│   │   │   ├── __init__.py
│   │   │   └── connection.py
│   │   ├── forkserver.py
│   │   ├── heap.py
│   │   ├── managers.py
│   │   ├── pool.py
│   │   ├── popen_fork.py
│   │   ├── popen_forkserver.py
│   │   ├── popen_spawn_posix.py
│   │   ├── popen_spawn_win32.py
│   │   ├── process.py
│   │   ├── queues.py
│   │   ├── reduction.py
│   │   ├── resource_sharer.py
│   │   ├── resource_tracker.py
│   │   ├── shared_memory.py
│   │   ├── sharedctypes.py
│   │   ├── spawn.py
│   │   ├── synchronize.py
│   │   └── util.py
│   ├── netrc.py
│   ├── nntplib.py
│   ├── ntpath.py
│   ├── nturl2path.py
│   ├── numbers.py
│   ├── opcode.py
│   ├── operator.py
│   ├── optparse.py
│   ├── os.py
│   ├── pathlib.py
│   ├── pdb.py
│   ├── pickle.py
│   ├── pickletools.py
│   ├── pipes.py
│   ├── pkgutil.py
│   ├── platform.py
│   ├── plistlib.py
│   ├── poplib.py
│   ├── posixpath.py
│   ├── pprint.py
│   ├── profile.py
│   ├── pstats.py
│   ├── pty.py
│   ├── py_compile.py
│   ├── pyclbr.py
│   ├── pydoc.py
│   ├── pydoc_data/
│   │   ├── __init__.py
│   │   ├── _pydoc.css
│   │   └── topics.py
│   ├── queue.py
│   ├── quopri.py
│   ├── random.py
│   ├── re/
│   │   ├── __init__.py
│   │   ├── _casefix.py
│   │   ├── _compiler.py
│   │   ├── _constants.py
│   │   └── _parser.py
│   ├── reprlib.py
│   ├── rlcompleter.py
│   ├── runpy.py
│   ├── sched.py
│   ├── secrets.py
│   ├── selectors.py
│   ├── shelve.py
│   ├── shlex.py
│   ├── shutil.py
│   ├── signal.py
│   ├── site-packages/
│   │   └── README.txt
│   ├── site.py
│   ├── smtplib.py
│   ├── sndhdr.py
│   ├── socket.py
│   ├── socketserver.py
│   ├── sqlite3/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── dbapi2.py
│   │   └── dump.py
│   ├── sre_compile.py
│   ├── sre_constants.py
│   ├── sre_parse.py
│   ├── ssl.py
│   ├── stat.py
│   ├── statistics.py
│   ├── string.py
│   ├── stringprep.py
│   ├── struct.py
│   ├── subprocess.py
│   ├── sunau.py
│   ├── symtable.py
│   ├── sysconfig.py
│   ├── tabnanny.py
│   ├── tarfile.py
│   ├── telnetlib.py
│   ├── tempfile.py
│   ├── test/
│   │   ├── Sine-1000Hz-300ms.aif
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _test_atexit.py
│   │   ├── _test_eintr.py
│   │   ├── _test_embed_set_config.py
│   │   ├── _test_embed_structseq.py
│   │   ├── _test_multiprocessing.py
│   │   ├── _test_venv_multiprocessing.py
│   │   ├── _testcppext.cpp
│   │   ├── _typed_dict_helper.py
│   │   ├── allsans.pem
│   │   ├── ann_module.py
│   │   ├── ann_module2.py
│   │   ├── ann_module3.py
│   │   ├── ann_module4.py
│   │   ├── ann_module5.py
│   │   ├── ann_module6.py
│   │   ├── ann_module7.py
│   │   ├── ann_module8.py
│   │   ├── audiodata/
│   │   │   ├── pluck-alaw.aifc
│   │   │   ├── pluck-pcm16.aiff
│   │   │   ├── pluck-pcm16.au
│   │   │   ├── pluck-pcm24.aiff
│   │   │   ├── pluck-pcm24.au
│   │   │   ├── pluck-pcm32.aiff
│   │   │   ├── pluck-pcm32.au
│   │   │   ├── pluck-pcm8.aiff
│   │   │   ├── pluck-pcm8.au
│   │   │   ├── pluck-ulaw.aifc
│   │   │   └── pluck-ulaw.au
│   │   ├── audiotest.au
│   │   ├── audiotests.py
│   │   ├── audit-tests.py
│   │   ├── autotest.py
│   │   ├── bad_coding.py
│   │   ├── bad_coding2.py
│   │   ├── bad_getattr.py
│   │   ├── bad_getattr2.py
│   │   ├── bad_getattr3.py
│   │   ├── badcert.pem
│   │   ├── badkey.pem
│   │   ├── badsyntax_3131.py
│   │   ├── badsyntax_future10.py
│   │   ├── badsyntax_future3.py
│   │   ├── badsyntax_future4.py
│   │   ├── badsyntax_future5.py
│   │   ├── badsyntax_future6.py
│   │   ├── badsyntax_future7.py
│   │   ├── badsyntax_future8.py
│   │   ├── badsyntax_future9.py
│   │   ├── badsyntax_pep3120.py
│   │   ├── bisect_cmd.py
│   │   ├── capath/
│   │   │   ├── 4e1295a3.0
│   │   │   ├── 5ed36f99.0
│   │   │   ├── 6e88d7b8.0
│   │   │   ├── 99d0fa06.0
│   │   │   ├── b1930218.0
│   │   │   └── ceff1710.0
│   │   ├── cfgparser.1
│   │   ├── cfgparser.2
│   │   ├── cfgparser.3
│   │   ├── cjkencodings/
│   │   │   ├── big5-utf8.txt
│   │   │   ├── big5.txt
│   │   │   ├── big5hkscs-utf8.txt
│   │   │   ├── big5hkscs.txt
│   │   │   ├── cp949-utf8.txt
│   │   │   ├── cp949.txt
│   │   │   ├── euc_jisx0213-utf8.txt
│   │   │   ├── euc_jisx0213.txt
│   │   │   ├── euc_jp-utf8.txt
│   │   │   ├── euc_jp.txt
│   │   │   ├── euc_kr-utf8.txt
│   │   │   ├── euc_kr.txt
│   │   │   ├── gb18030-utf8.txt
│   │   │   ├── gb18030.txt
│   │   │   ├── gb2312-utf8.txt
│   │   │   ├── gb2312.txt
│   │   │   ├── gbk-utf8.txt
│   │   │   ├── gbk.txt
│   │   │   ├── hz-utf8.txt
│   │   │   ├── hz.txt
│   │   │   ├── iso2022_jp-utf8.txt
│   │   │   ├── iso2022_jp.txt
│   │   │   ├── iso2022_kr-utf8.txt
│   │   │   ├── iso2022_kr.txt
│   │   │   ├── johab-utf8.txt
│   │   │   ├── johab.txt
│   │   │   ├── shift_jis-utf8.txt
│   │   │   ├── shift_jis.txt
│   │   │   ├── shift_jisx0213-utf8.txt
│   │   │   └── shift_jisx0213.txt
│   │   ├── clinic.test
│   │   ├── cmath_testcases.txt
│   │   ├── coding20731.py
│   │   ├── crashers/
│   │   │   ├── README
│   │   │   ├── bogus_code_obj.py
│   │   │   ├── gc_inspection.py
│   │   │   ├── infinite_loop_re.py
│   │   │   ├── mutation_inside_cyclegc.py
│   │   │   ├── recursive_call.py
│   │   │   ├── trace_at_recursion_limit.py
│   │   │   └── underlying_dict.py
│   │   ├── curses_tests.py
│   │   ├── data/
│   │   │   └── README
│   │   ├── dataclass_module_1.py
│   │   ├── dataclass_module_1_str.py
│   │   ├── dataclass_module_2.py
│   │   ├── dataclass_module_2_str.py
│   │   ├── dataclass_textanno.py
│   │   ├── datetimetester.py
│   │   ├── decimaltestdata/
│   │   │   ├── abs.decTest
│   │   │   ├── add.decTest
│   │   │   ├── and.decTest
│   │   │   ├── base.decTest
│   │   │   ├── clamp.decTest
│   │   │   ├── class.decTest
│   │   │   ├── compare.decTest
│   │   │   ├── comparetotal.decTest
│   │   │   ├── comparetotmag.decTest
│   │   │   ├── copy.decTest
│   │   │   ├── copyabs.decTest
│   │   │   ├── copynegate.decTest
│   │   │   ├── copysign.decTest
│   │   │   ├── ddAbs.decTest
│   │   │   ├── ddAdd.decTest
│   │   │   ├── ddAnd.decTest
│   │   │   ├── ddBase.decTest
│   │   │   ├── ddCanonical.decTest
│   │   │   ├── ddClass.decTest
│   │   │   ├── ddCompare.decTest
│   │   │   ├── ddCompareSig.decTest
│   │   │   ├── ddCompareTotal.decTest
│   │   │   ├── ddCompareTotalMag.decTest
│   │   │   ├── ddCopy.decTest
│   │   │   ├── ddCopyAbs.decTest
│   │   │   ├── ddCopyNegate.decTest
│   │   │   ├── ddCopySign.decTest
│   │   │   ├── ddDivide.decTest
│   │   │   ├── ddDivideInt.decTest
│   │   │   ├── ddEncode.decTest
│   │   │   ├── ddFMA.decTest
│   │   │   ├── ddInvert.decTest
│   │   │   ├── ddLogB.decTest
│   │   │   ├── ddMax.decTest
│   │   │   ├── ddMaxMag.decTest
│   │   │   ├── ddMin.decTest
│   │   │   ├── ddMinMag.decTest
│   │   │   ├── ddMinus.decTest
│   │   │   ├── ddMultiply.decTest
│   │   │   ├── ddNextMinus.decTest
│   │   │   ├── ddNextPlus.decTest
│   │   │   ├── ddNextToward.decTest
│   │   │   ├── ddOr.decTest
│   │   │   ├── ddPlus.decTest
│   │   │   ├── ddQuantize.decTest
│   │   │   ├── ddReduce.decTest
│   │   │   ├── ddRemainder.decTest
│   │   │   ├── ddRemainderNear.decTest
│   │   │   ├── ddRotate.decTest
│   │   │   ├── ddSameQuantum.decTest
│   │   │   ├── ddScaleB.decTest
│   │   │   ├── ddShift.decTest
│   │   │   ├── ddSubtract.decTest
│   │   │   ├── ddToIntegral.decTest
│   │   │   ├── ddXor.decTest
│   │   │   ├── decDouble.decTest
│   │   │   ├── decQuad.decTest
│   │   │   ├── decSingle.decTest
│   │   │   ├── divide.decTest
│   │   │   ├── divideint.decTest
│   │   │   ├── dqAbs.decTest
│   │   │   ├── dqAdd.decTest
│   │   │   ├── dqAnd.decTest
│   │   │   ├── dqBase.decTest
│   │   │   ├── dqCanonical.decTest
│   │   │   ├── dqClass.decTest
│   │   │   ├── dqCompare.decTest
│   │   │   ├── dqCompareSig.decTest
│   │   │   ├── dqCompareTotal.decTest
│   │   │   ├── dqCompareTotalMag.decTest
│   │   │   ├── dqCopy.decTest
│   │   │   ├── dqCopyAbs.decTest
│   │   │   ├── dqCopyNegate.decTest
│   │   │   ├── dqCopySign.decTest
│   │   │   ├── dqDivide.decTest
│   │   │   ├── dqDivideInt.decTest
│   │   │   ├── dqEncode.decTest
│   │   │   ├── dqFMA.decTest
│   │   │   ├── dqInvert.decTest
│   │   │   ├── dqLogB.decTest
│   │   │   ├── dqMax.decTest
│   │   │   ├── dqMaxMag.decTest
│   │   │   ├── dqMin.decTest
│   │   │   ├── dqMinMag.decTest
│   │   │   ├── dqMinus.decTest
│   │   │   ├── dqMultiply.decTest
│   │   │   ├── dqNextMinus.decTest
│   │   │   ├── dqNextPlus.decTest
│   │   │   ├── dqNextToward.decTest
│   │   │   ├── dqOr.decTest
│   │   │   ├── dqPlus.decTest
│   │   │   ├── dqQuantize.decTest
│   │   │   ├── dqReduce.decTest
│   │   │   ├── dqRemainder.decTest
│   │   │   ├── dqRemainderNear.decTest
│   │   │   ├── dqRotate.decTest
│   │   │   ├── dqSameQuantum.decTest
│   │   │   ├── dqScaleB.decTest
│   │   │   ├── dqShift.decTest
│   │   │   ├── dqSubtract.decTest
│   │   │   ├── dqToIntegral.decTest
│   │   │   ├── dqXor.decTest
│   │   │   ├── dsBase.decTest
│   │   │   ├── dsEncode.decTest
│   │   │   ├── exp.decTest
│   │   │   ├── extra.decTest
│   │   │   ├── fma.decTest
│   │   │   ├── inexact.decTest
│   │   │   ├── invert.decTest
│   │   │   ├── ln.decTest
│   │   │   ├── log10.decTest
│   │   │   ├── logb.decTest
│   │   │   ├── max.decTest
│   │   │   ├── maxmag.decTest
│   │   │   ├── min.decTest
│   │   │   ├── minmag.decTest
│   │   │   ├── minus.decTest
│   │   │   ├── multiply.decTest
│   │   │   ├── nextminus.decTest
│   │   │   ├── nextplus.decTest
│   │   │   ├── nexttoward.decTest
│   │   │   ├── or.decTest
│   │   │   ├── plus.decTest
│   │   │   ├── power.decTest
│   │   │   ├── powersqrt.decTest
│   │   │   ├── quantize.decTest
│   │   │   ├── randomBound32.decTest
│   │   │   ├── randoms.decTest
│   │   │   ├── reduce.decTest
│   │   │   ├── remainder.decTest
│   │   │   ├── remainderNear.decTest
│   │   │   ├── rescale.decTest
│   │   │   ├── rotate.decTest
│   │   │   ├── rounding.decTest
│   │   │   ├── samequantum.decTest
│   │   │   ├── scaleb.decTest
│   │   │   ├── shift.decTest
│   │   │   ├── squareroot.decTest
│   │   │   ├── subtract.decTest
│   │   │   ├── testall.decTest
│   │   │   ├── tointegral.decTest
│   │   │   ├── tointegralx.decTest
│   │   │   └── xor.decTest
│   │   ├── dis_module.py
│   │   ├── doctest_aliases.py
│   │   ├── doctest_lineno.py
│   │   ├── double_const.py
│   │   ├── dtracedata/
│   │   │   ├── assert_usable.d
│   │   │   ├── assert_usable.stp
│   │   │   ├── call_stack.d
│   │   │   ├── call_stack.d.expected
│   │   │   ├── call_stack.py
│   │   │   ├── call_stack.stp
│   │   │   ├── call_stack.stp.expected
│   │   │   ├── gc.d
│   │   │   ├── gc.d.expected
│   │   │   ├── gc.py
│   │   │   ├── gc.stp
│   │   │   ├── gc.stp.expected
│   │   │   ├── instance.py
│   │   │   ├── line.d
│   │   │   ├── line.d.expected
│   │   │   └── line.py
│   │   ├── empty.vbs
│   │   ├── encoded_modules/
│   │   │   ├── __init__.py
│   │   │   ├── module_iso_8859_1.py
│   │   │   └── module_koi8_r.py
│   │   ├── exception_hierarchy.txt
│   │   ├── ffdh3072.pem
│   │   ├── final_a.py
│   │   ├── final_b.py
│   │   ├── floating_points.txt
│   │   ├── fork_wait.py
│   │   ├── formatfloat_testcases.txt
│   │   ├── future_test1.py
│   │   ├── future_test2.py
│   │   ├── gdb_sample.py
│   │   ├── good_getattr.py
│   │   ├── idnsans.pem
│   │   ├── ieee754.txt
│   │   ├── imghdrdata/
│   │   │   ├── python.exr
│   │   │   ├── python.pbm
│   │   │   ├── python.pgm
│   │   │   ├── python.ppm
│   │   │   ├── python.ras
│   │   │   ├── python.sgi
│   │   │   ├── python.tiff
│   │   │   └── python.xbm
│   │   ├── imp_dummy.py
│   │   ├── inspect_fodder.py
│   │   ├── inspect_fodder2.py
│   │   ├── inspect_stock_annotations.py
│   │   ├── inspect_stringized_annotations.py
│   │   ├── inspect_stringized_annotations_2.py
│   │   ├── keycert.passwd.pem
│   │   ├── keycert.pem
│   │   ├── keycert2.pem
│   │   ├── keycert3.pem
│   │   ├── keycert4.pem
│   │   ├── keycertecc.pem
│   │   ├── leakers/
│   │   │   ├── README.txt
│   │   │   ├── __init__.py
│   │   │   ├── test_ctypes.py
│   │   │   └── test_selftype.py
│   │   ├── levenshtein_examples.json
│   │   ├── libregrtest/
│   │   │   ├── __init__.py
│   │   │   ├── cmdline.py
│   │   │   ├── main.py
│   │   │   ├── pgo.py
│   │   │   ├── refleak.py
│   │   │   ├── runtest.py
│   │   │   ├── runtest_mp.py
│   │   │   ├── save_env.py
│   │   │   ├── setup.py
│   │   │   ├── utils.py
│   │   │   └── win_utils.py
│   │   ├── list_tests.py
│   │   ├── lock_tests.py
│   │   ├── mailcap.txt
│   │   ├── make_ssl_certs.py
│   │   ├── mapping_tests.py
│   │   ├── math_testcases.txt
│   │   ├── memory_watchdog.py
│   │   ├── mime.types
│   │   ├── mock_socket.py
│   │   ├── mod_generics_cache.py
│   │   ├── mp_fork_bomb.py
│   │   ├── mp_preload.py
│   │   ├── multibytecodec_support.py
│   │   ├── nokia.pem
│   │   ├── nosan.pem
│   │   ├── nullbytecert.pem
│   │   ├── nullcert.pem
│   │   ├── pickletester.py
│   │   ├── profilee.py
│   │   ├── pstats.pck
│   │   ├── pycacert.pem
│   │   ├── pycakey.pem
│   │   ├── pyclbr_input.py
│   │   ├── pydoc_mod.py
│   │   ├── pydocfodder.py
│   │   ├── pythoninfo.py
│   │   ├── randv2_32.pck
│   │   ├── randv2_64.pck
│   │   ├── randv3.pck
│   │   ├── re_tests.py
│   │   ├── regrtest.py
│   │   ├── relimport.py
│   │   ├── reperf.py
│   │   ├── revocation.crl
│   │   ├── sample_doctest.py
│   │   ├── sample_doctest_no_docstrings.py
│   │   ├── sample_doctest_no_doctests.py
│   │   ├── secp384r1.pem
│   │   ├── selfsigned_pythontestdotnet.pem
│   │   ├── seq_tests.py
│   │   ├── setup_testcppext.py
│   │   ├── sgml_input.html
│   │   ├── signalinterproctester.py
│   │   ├── smtpd.py
│   │   ├── sndhdrdata/
│   │   │   ├── README
│   │   │   ├── sndhdr.8svx
│   │   │   ├── sndhdr.aifc
│   │   │   ├── sndhdr.aiff
│   │   │   ├── sndhdr.au
│   │   │   ├── sndhdr.hcom
│   │   │   ├── sndhdr.sndt
│   │   │   └── sndhdr.voc
│   │   ├── sortperf.py
│   │   ├── ssl_cert.pem
│   │   ├── ssl_key.passwd.pem
│   │   ├── ssl_key.pem
│   │   ├── ssl_servers.py
│   │   ├── ssltests.py
│   │   ├── string_tests.py
│   │   ├── subprocessdata/
│   │   │   ├── fd_status.py
│   │   │   ├── input_reader.py
│   │   │   ├── qcat.py
│   │   │   ├── qgrep.py
│   │   │   └── sigchild_ignore.py
│   │   ├── support/
│   │   │   ├── __init__.py
│   │   │   ├── asynchat.py
│   │   │   ├── asyncore.py
│   │   │   ├── bytecode_helper.py
│   │   │   ├── hashlib_helper.py
│   │   │   ├── import_helper.py
│   │   │   ├── interpreters.py
│   │   │   ├── logging_helper.py
│   │   │   ├── os_helper.py
│   │   │   ├── script_helper.py
│   │   │   ├── socket_helper.py
│   │   │   ├── testresult.py
│   │   │   ├── threading_helper.py
│   │   │   └── warnings_helper.py
│   │   ├── talos-2019-0758.pem
│   │   ├── test___all__.py
│   │   ├── test___future__.py
│   │   ├── test__locale.py
│   │   ├── test__opcode.py
│   │   ├── test__osx_support.py
│   │   ├── test__xxsubinterpreters.py
│   │   ├── test_abc.py
│   │   ├── test_abstract_numbers.py
│   │   ├── test_aifc.py
│   │   ├── test_argparse.py
│   │   ├── test_array.py
│   │   ├── test_asdl_parser.py
│   │   ├── test_ast.py
│   │   ├── test_asyncgen.py
│   │   ├── test_asyncio/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── echo.py
│   │   │   ├── echo2.py
│   │   │   ├── echo3.py
│   │   │   ├── functional.py
│   │   │   ├── test_base_events.py
│   │   │   ├── test_buffered_proto.py
│   │   │   ├── test_context.py
│   │   │   ├── test_events.py
│   │   │   ├── test_futures.py
│   │   │   ├── test_futures2.py
│   │   │   ├── test_locks.py
│   │   │   ├── test_pep492.py
│   │   │   ├── test_proactor_events.py
│   │   │   ├── test_protocols.py
│   │   │   ├── test_queues.py
│   │   │   ├── test_runners.py
│   │   │   ├── test_selector_events.py
│   │   │   ├── test_sendfile.py
│   │   │   ├── test_server.py
│   │   │   ├── test_sock_lowlevel.py
│   │   │   ├── test_ssl.py
│   │   │   ├── test_sslproto.py
│   │   │   ├── test_streams.py
│   │   │   ├── test_subprocess.py
│   │   │   ├── test_taskgroups.py
│   │   │   ├── test_tasks.py
│   │   │   ├── test_threads.py
│   │   │   ├── test_timeouts.py
│   │   │   ├── test_transports.py
│   │   │   ├── test_unix_events.py
│   │   │   ├── test_waitfor.py
│   │   │   ├── test_windows_events.py
│   │   │   ├── test_windows_utils.py
│   │   │   └── utils.py
│   │   ├── test_atexit.py
│   │   ├── test_audioop.py
│   │   ├── test_audit.py
│   │   ├── test_augassign.py
│   │   ├── test_base64.py
│   │   ├── test_baseexception.py
│   │   ├── test_bdb.py
│   │   ├── test_bigaddrspace.py
│   │   ├── test_bigmem.py
│   │   ├── test_binascii.py
│   │   ├── test_binop.py
│   │   ├── test_bisect.py
│   │   ├── test_bool.py
│   │   ├── test_buffer.py
│   │   ├── test_bufio.py
│   │   ├── test_builtin.py
│   │   ├── test_bytes.py
│   │   ├── test_bz2.py
│   │   ├── test_c_locale_coercion.py
│   │   ├── test_calendar.py
│   │   ├── test_call.py
│   │   ├── test_capi/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_codecs.py
│   │   │   ├── test_getargs.py
│   │   │   ├── test_mem.py
│   │   │   ├── test_misc.py
│   │   │   ├── test_structmembers.py
│   │   │   ├── test_unicode.py
│   │   │   └── test_watchers.py
│   │   ├── test_cgi.py
│   │   ├── test_cgitb.py
│   │   ├── test_charmapcodec.py
│   │   ├── test_check_c_globals.py
│   │   ├── test_class.py
│   │   ├── test_clinic.py
│   │   ├── test_cmath.py
│   │   ├── test_cmd.py
│   │   ├── test_cmd_line.py
│   │   ├── test_cmd_line_script.py
│   │   ├── test_code.py
│   │   ├── test_code_module.py
│   │   ├── test_codeccallbacks.py
│   │   ├── test_codecencodings_cn.py
│   │   ├── test_codecencodings_hk.py
│   │   ├── test_codecencodings_iso2022.py
│   │   ├── test_codecencodings_jp.py
│   │   ├── test_codecencodings_kr.py
│   │   ├── test_codecencodings_tw.py
│   │   ├── test_codecmaps_cn.py
│   │   ├── test_codecmaps_hk.py
│   │   ├── test_codecmaps_jp.py
│   │   ├── test_codecmaps_kr.py
│   │   ├── test_codecmaps_tw.py
│   │   ├── test_codecs.py
│   │   ├── test_codeop.py
│   │   ├── test_collections.py
│   │   ├── test_colorsys.py
│   │   ├── test_compare.py
│   │   ├── test_compile.py
│   │   ├── test_compileall.py
│   │   ├── test_compiler_codegen.py
│   │   ├── test_complex.py
│   │   ├── test_concurrent_futures.py
│   │   ├── test_configparser.py
│   │   ├── test_contains.py
│   │   ├── test_context.py
│   │   ├── test_contextlib.py
│   │   ├── test_contextlib_async.py
│   │   ├── test_copy.py
│   │   ├── test_copyreg.py
│   │   ├── test_coroutines.py
│   │   ├── test_cppext.py
│   │   ├── test_cprofile.py
│   │   ├── test_crashers.py
│   │   ├── test_crypt.py
│   │   ├── test_csv.py
│   │   ├── test_ctypes/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_anon.py
│   │   │   ├── test_array_in_pointer.py
│   │   │   ├── test_arrays.py
│   │   │   ├── test_as_parameter.py
│   │   │   ├── test_bitfields.py
│   │   │   ├── test_buffers.py
│   │   │   ├── test_bytes.py
│   │   │   ├── test_byteswap.py
│   │   │   ├── test_callbacks.py
│   │   │   ├── test_cast.py
│   │   │   ├── test_cfuncs.py
│   │   │   ├── test_checkretval.py
│   │   │   ├── test_delattr.py
│   │   │   ├── test_errno.py
│   │   │   ├── test_find.py
│   │   │   ├── test_frombuffer.py
│   │   │   ├── test_funcptr.py
│   │   │   ├── test_functions.py
│   │   │   ├── test_incomplete.py
│   │   │   ├── test_init.py
│   │   │   ├── test_internals.py
│   │   │   ├── test_keeprefs.py
│   │   │   ├── test_libc.py
│   │   │   ├── test_loading.py
│   │   │   ├── test_macholib.py
│   │   │   ├── test_memfunctions.py
│   │   │   ├── test_numbers.py
│   │   │   ├── test_objects.py
│   │   │   ├── test_parameters.py
│   │   │   ├── test_pep3118.py
│   │   │   ├── test_pickling.py
│   │   │   ├── test_pointers.py
│   │   │   ├── test_prototypes.py
│   │   │   ├── test_python_api.py
│   │   │   ├── test_random_things.py
│   │   │   ├── test_refcounts.py
│   │   │   ├── test_repr.py
│   │   │   ├── test_returnfuncptrs.py
│   │   │   ├── test_simplesubclasses.py
│   │   │   ├── test_sizes.py
│   │   │   ├── test_slicing.py
│   │   │   ├── test_stringptr.py
│   │   │   ├── test_strings.py
│   │   │   ├── test_struct_fields.py
│   │   │   ├── test_structures.py
│   │   │   ├── test_unaligned_structures.py
│   │   │   ├── test_unicode.py
│   │   │   ├── test_values.py
│   │   │   ├── test_varsize_struct.py
│   │   │   ├── test_win32.py
│   │   │   └── test_wintypes.py
│   │   ├── test_curses.py
│   │   ├── test_dataclasses.py
│   │   ├── test_datetime.py
│   │   ├── test_dbm.py
│   │   ├── test_dbm_dumb.py
│   │   ├── test_dbm_gnu.py
│   │   ├── test_dbm_ndbm.py
│   │   ├── test_decimal.py
│   │   ├── test_decorators.py
│   │   ├── test_defaultdict.py
│   │   ├── test_deque.py
│   │   ├── test_descr.py
│   │   ├── test_descrtut.py
│   │   ├── test_devpoll.py
│   │   ├── test_dict.py
│   │   ├── test_dict_version.py
│   │   ├── test_dictcomps.py
│   │   ├── test_dictviews.py
│   │   ├── test_difflib.py
│   │   ├── test_difflib_expect.html
│   │   ├── test_dis.py
│   │   ├── test_doctest.py
│   │   ├── test_doctest.txt
│   │   ├── test_doctest2.py
│   │   ├── test_doctest2.txt
│   │   ├── test_doctest3.txt
│   │   ├── test_doctest4.txt
│   │   ├── test_docxmlrpc.py
│   │   ├── test_dtrace.py
│   │   ├── test_dynamic.py
│   │   ├── test_dynamicclassattribute.py
│   │   ├── test_eintr.py
│   │   ├── test_email/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── data/
│   │   │   │   ├── msg_01.txt
│   │   │   │   ├── msg_02.txt
│   │   │   │   ├── msg_03.txt
│   │   │   │   ├── msg_04.txt
│   │   │   │   ├── msg_05.txt
│   │   │   │   ├── msg_06.txt
│   │   │   │   ├── msg_07.txt
│   │   │   │   ├── msg_08.txt
│   │   │   │   ├── msg_09.txt
│   │   │   │   ├── msg_10.txt
│   │   │   │   ├── msg_11.txt
│   │   │   │   ├── msg_12.txt
│   │   │   │   ├── msg_12a.txt
│   │   │   │   ├── msg_13.txt
│   │   │   │   ├── msg_14.txt
│   │   │   │   ├── msg_15.txt
│   │   │   │   ├── msg_16.txt
│   │   │   │   ├── msg_17.txt
│   │   │   │   ├── msg_18.txt
│   │   │   │   ├── msg_19.txt
│   │   │   │   ├── msg_20.txt
│   │   │   │   ├── msg_21.txt
│   │   │   │   ├── msg_22.txt
│   │   │   │   ├── msg_23.txt
│   │   │   │   ├── msg_24.txt
│   │   │   │   ├── msg_25.txt
│   │   │   │   ├── msg_26.txt
│   │   │   │   ├── msg_27.txt
│   │   │   │   ├── msg_28.txt
│   │   │   │   ├── msg_29.txt
│   │   │   │   ├── msg_30.txt
│   │   │   │   ├── msg_31.txt
│   │   │   │   ├── msg_32.txt
│   │   │   │   ├── msg_33.txt
│   │   │   │   ├── msg_34.txt
│   │   │   │   ├── msg_35.txt
│   │   │   │   ├── msg_36.txt
│   │   │   │   ├── msg_37.txt
│   │   │   │   ├── msg_38.txt
│   │   │   │   ├── msg_39.txt
│   │   │   │   ├── msg_40.txt
│   │   │   │   ├── msg_41.txt
│   │   │   │   ├── msg_42.txt
│   │   │   │   ├── msg_43.txt
│   │   │   │   ├── msg_44.txt
│   │   │   │   ├── msg_45.txt
│   │   │   │   ├── msg_46.txt
│   │   │   │   ├── python.exr
│   │   │   │   ├── python.pbm
│   │   │   │   ├── python.pgm
│   │   │   │   ├── python.ppm
│   │   │   │   ├── python.ras
│   │   │   │   ├── python.sgi
│   │   │   │   ├── python.tiff
│   │   │   │   ├── python.xbm
│   │   │   │   ├── sndhdr.aifc
│   │   │   │   ├── sndhdr.aiff
│   │   │   │   └── sndhdr.au
│   │   │   ├── test__encoded_words.py
│   │   │   ├── test__header_value_parser.py
│   │   │   ├── test_asian_codecs.py
│   │   │   ├── test_contentmanager.py
│   │   │   ├── test_defect_handling.py
│   │   │   ├── test_email.py
│   │   │   ├── test_generator.py
│   │   │   ├── test_headerregistry.py
│   │   │   ├── test_inversion.py
│   │   │   ├── test_message.py
│   │   │   ├── test_parser.py
│   │   │   ├── test_pickleable.py
│   │   │   ├── test_policy.py
│   │   │   ├── test_utils.py
│   │   │   └── torture_test.py
│   │   ├── test_embed.py
│   │   ├── test_ensurepip.py
│   │   ├── test_enum.py
│   │   ├── test_enumerate.py
│   │   ├── test_eof.py
│   │   ├── test_epoll.py
│   │   ├── test_errno.py
│   │   ├── test_except_star.py
│   │   ├── test_exception_group.py
│   │   ├── test_exception_hierarchy.py
│   │   ├── test_exception_variations.py
│   │   ├── test_exceptions.py
│   │   ├── test_extcall.py
│   │   ├── test_faulthandler.py
│   │   ├── test_fcntl.py
│   │   ├── test_file.py
│   │   ├── test_file_eintr.py
│   │   ├── test_filecmp.py
│   │   ├── test_fileinput.py
│   │   ├── test_fileio.py
│   │   ├── test_fileutils.py
│   │   ├── test_finalization.py
│   │   ├── test_float.py
│   │   ├── test_flufl.py
│   │   ├── test_fnmatch.py
│   │   ├── test_fork1.py
│   │   ├── test_format.py
│   │   ├── test_fractions.py
│   │   ├── test_frame.py
│   │   ├── test_frozen.py
│   │   ├── test_fstring.py
│   │   ├── test_ftplib.py
│   │   ├── test_funcattrs.py
│   │   ├── test_functools.py
│   │   ├── test_future.py
│   │   ├── test_future3.py
│   │   ├── test_future4.py
│   │   ├── test_future5.py
│   │   ├── test_gc.py
│   │   ├── test_gdb.py
│   │   ├── test_generator_stop.py
│   │   ├── test_generators.py
│   │   ├── test_genericalias.py
│   │   ├── test_genericclass.py
│   │   ├── test_genericpath.py
│   │   ├── test_genexps.py
│   │   ├── test_getopt.py
│   │   ├── test_getpass.py
│   │   ├── test_getpath.py
│   │   ├── test_gettext.py
│   │   ├── test_glob.py
│   │   ├── test_global.py
│   │   ├── test_grammar.py
│   │   ├── test_graphlib.py
│   │   ├── test_grp.py
│   │   ├── test_gzip.py
│   │   ├── test_hash.py
│   │   ├── test_hashlib.py
│   │   ├── test_heapq.py
│   │   ├── test_hmac.py
│   │   ├── test_html.py
│   │   ├── test_htmlparser.py
│   │   ├── test_http_cookiejar.py
│   │   ├── test_http_cookies.py
│   │   ├── test_httplib.py
│   │   ├── test_httpservers.py
│   │   ├── test_idle.py
│   │   ├── test_imaplib.py
│   │   ├── test_imghdr.py
│   │   ├── test_imp.py
│   │   ├── test_import/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   └── data/
│   │   │       ├── circular_imports/
│   │   │       │   ├── basic.py
│   │   │       │   ├── basic2.py
│   │   │       │   ├── binding.py
│   │   │       │   ├── binding2.py
│   │   │       │   ├── from_cycle1.py
│   │   │       │   ├── from_cycle2.py
│   │   │       │   ├── indirect.py
│   │   │       │   ├── rebinding.py
│   │   │       │   ├── rebinding2.py
│   │   │       │   ├── source.py
│   │   │       │   ├── subpackage.py
│   │   │       │   ├── subpkg/
│   │   │       │   │   ├── subpackage2.py
│   │   │       │   │   └── util.py
│   │   │       │   ├── subpkg2/
│   │   │       │   │   ├── __init__.py
│   │   │       │   │   └── parent/
│   │   │       │   │       ├── __init__.py
│   │   │       │   │       └── child.py
│   │   │       │   ├── use.py
│   │   │       │   └── util.py
│   │   │       ├── package/
│   │   │       │   ├── __init__.py
│   │   │       │   └── submodule.py
│   │   │       ├── package2/
│   │   │       │   ├── submodule1.py
│   │   │       │   └── submodule2.py
│   │   │       └── unwritable/
│   │   │           ├── __init__.py
│   │   │           └── x.py
│   │   ├── test_importlib/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── abc.py
│   │   │   ├── builtin/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_finder.py
│   │   │   │   └── test_loader.py
│   │   │   ├── data/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── example-21.12-py3-none-any.whl
│   │   │   │   ├── example-21.12-py3.6.egg
│   │   │   │   └── example2-1.0.0-py3-none-any.whl
│   │   │   ├── extension/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_case_sensitivity.py
│   │   │   │   ├── test_finder.py
│   │   │   │   ├── test_loader.py
│   │   │   │   └── test_path_hook.py
│   │   │   ├── fixtures.py
│   │   │   ├── frozen/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_finder.py
│   │   │   │   └── test_loader.py
│   │   │   ├── import_/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test___loader__.py
│   │   │   │   ├── test___package__.py
│   │   │   │   ├── test_api.py
│   │   │   │   ├── test_caching.py
│   │   │   │   ├── test_fromlist.py
│   │   │   │   ├── test_helpers.py
│   │   │   │   ├── test_meta_path.py
│   │   │   │   ├── test_packages.py
│   │   │   │   ├── test_path.py
│   │   │   │   └── test_relative_imports.py
│   │   │   ├── namespace_pkgs/
│   │   │   │   ├── both_portions/
│   │   │   │   │   └── foo/
│   │   │   │   │       ├── one.py
│   │   │   │   │       └── two.py
│   │   │   │   ├── module_and_namespace_package/
│   │   │   │   │   ├── a_test/
│   │   │   │   │   │   └── empty
│   │   │   │   │   └── a_test.py
│   │   │   │   ├── not_a_namespace_pkg/
│   │   │   │   │   └── foo/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── one.py
│   │   │   │   ├── portion1/
│   │   │   │   │   └── foo/
│   │   │   │   │       └── one.py
│   │   │   │   ├── portion2/
│   │   │   │   │   └── foo/
│   │   │   │   │       └── two.py
│   │   │   │   ├── project1/
│   │   │   │   │   └── parent/
│   │   │   │   │       └── child/
│   │   │   │   │           └── one.py
│   │   │   │   ├── project2/
│   │   │   │   │   └── parent/
│   │   │   │   │       └── child/
│   │   │   │   │           └── two.py
│   │   │   │   └── project3/
│   │   │   │       └── parent/
│   │   │   │           └── child/
│   │   │   │               └── three.py
│   │   │   ├── partial/
│   │   │   │   ├── cfimport.py
│   │   │   │   └── pool_in_threads.py
│   │   │   ├── resources/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _path.py
│   │   │   │   ├── data01/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── binary.file
│   │   │   │   │   ├── subdirectory/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── binary.file
│   │   │   │   │   ├── utf-16.file
│   │   │   │   │   └── utf-8.file
│   │   │   │   ├── data02/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── one/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── resource1.txt
│   │   │   │   │   └── two/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── resource2.txt
│   │   │   │   ├── data03/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── namespace/
│   │   │   │   │       ├── portion1/
│   │   │   │   │       │   └── __init__.py
│   │   │   │   │       ├── portion2/
│   │   │   │   │       │   └── __init__.py
│   │   │   │   │       └── resource1.txt
│   │   │   │   ├── namespacedata01/
│   │   │   │   │   ├── binary.file
│   │   │   │   │   ├── utf-16.file
│   │   │   │   │   └── utf-8.file
│   │   │   │   ├── test_compatibilty_files.py
│   │   │   │   ├── test_contents.py
│   │   │   │   ├── test_files.py
│   │   │   │   ├── test_open.py
│   │   │   │   ├── test_path.py
│   │   │   │   ├── test_read.py
│   │   │   │   ├── test_reader.py
│   │   │   │   ├── test_resource.py
│   │   │   │   ├── update-zips.py
│   │   │   │   ├── util.py
│   │   │   │   ├── zipdata01/
│   │   │   │   │   └── __init__.py
│   │   │   │   └── zipdata02/
│   │   │   │       └── __init__.py
│   │   │   ├── source/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── test_case_sensitivity.py
│   │   │   │   ├── test_file_loader.py
│   │   │   │   ├── test_finder.py
│   │   │   │   ├── test_path_hook.py
│   │   │   │   └── test_source_encoding.py
│   │   │   ├── stubs.py
│   │   │   ├── test_abc.py
│   │   │   ├── test_api.py
│   │   │   ├── test_lazy.py
│   │   │   ├── test_locks.py
│   │   │   ├── test_main.py
│   │   │   ├── test_metadata_api.py
│   │   │   ├── test_namespace_pkgs.py
│   │   │   ├── test_pkg_import.py
│   │   │   ├── test_spec.py
│   │   │   ├── test_threaded_import.py
│   │   │   ├── test_util.py
│   │   │   ├── test_windows.py
│   │   │   ├── test_zip.py
│   │   │   ├── threaded_import_hangers.py
│   │   │   └── util.py
│   │   ├── test_index.py
│   │   ├── test_inspect.py
│   │   ├── test_int.py
│   │   ├── test_int_literal.py
│   │   ├── test_interpreters.py
│   │   ├── test_io.py
│   │   ├── test_ioctl.py
│   │   ├── test_ipaddress.py
│   │   ├── test_isinstance.py
│   │   ├── test_iter.py
│   │   ├── test_iterlen.py
│   │   ├── test_itertools.py
│   │   ├── test_json/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_attrdict.py
│   │   │   ├── test_decode.py
│   │   │   ├── test_default.py
│   │   │   ├── test_dump.py
│   │   │   ├── test_encode_basestring_ascii.py
│   │   │   ├── test_enum.py
│   │   │   ├── test_fail.py
│   │   │   ├── test_float.py
│   │   │   ├── test_indent.py
│   │   │   ├── test_pass1.py
│   │   │   ├── test_pass2.py
│   │   │   ├── test_pass3.py
│   │   │   ├── test_recursion.py
│   │   │   ├── test_scanstring.py
│   │   │   ├── test_separators.py
│   │   │   ├── test_speedups.py
│   │   │   ├── test_tool.py
│   │   │   └── test_unicode.py
│   │   ├── test_keyword.py
│   │   ├── test_keywordonlyarg.py
│   │   ├── test_kqueue.py
│   │   ├── test_largefile.py
│   │   ├── test_launcher.py
│   │   ├── test_lib2to3/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── data/
│   │   │   │   ├── README
│   │   │   │   ├── bom.py
│   │   │   │   ├── crlf.py
│   │   │   │   ├── different_encoding.py
│   │   │   │   ├── false_encoding.py
│   │   │   │   ├── fixers/
│   │   │   │   │   ├── bad_order.py
│   │   │   │   │   ├── myfixes/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── fix_explicit.py
│   │   │   │   │   │   ├── fix_first.py
│   │   │   │   │   │   ├── fix_last.py
│   │   │   │   │   │   ├── fix_parrot.py
│   │   │   │   │   │   └── fix_preorder.py
│   │   │   │   │   ├── no_fixer_cls.py
│   │   │   │   │   └── parrot_example.py
│   │   │   │   ├── infinite_recursion.py
│   │   │   │   ├── py2_test_grammar.py
│   │   │   │   └── py3_test_grammar.py
│   │   │   ├── pytree_idempotency.py
│   │   │   ├── support.py
│   │   │   ├── test_all_fixers.py
│   │   │   ├── test_fixers.py
│   │   │   ├── test_main.py
│   │   │   ├── test_parser.py
│   │   │   ├── test_pytree.py
│   │   │   ├── test_refactor.py
│   │   │   └── test_util.py
│   │   ├── test_linecache.py
│   │   ├── test_list.py
│   │   ├── test_listcomps.py
│   │   ├── test_lltrace.py
│   │   ├── test_locale.py
│   │   ├── test_logging.py
│   │   ├── test_long.py
│   │   ├── test_longexp.py
│   │   ├── test_lzma.py
│   │   ├── test_mailbox.py
│   │   ├── test_mailcap.py
│   │   ├── test_marshal.py
│   │   ├── test_math.py
│   │   ├── test_memoryio.py
│   │   ├── test_memoryview.py
│   │   ├── test_metaclass.py
│   │   ├── test_mimetypes.py
│   │   ├── test_minidom.py
│   │   ├── test_mmap.py
│   │   ├── test_module.py
│   │   ├── test_modulefinder.py
│   │   ├── test_msilib.py
│   │   ├── test_multibytecodec.py
│   │   ├── test_multiprocessing_fork.py
│   │   ├── test_multiprocessing_forkserver.py
│   │   ├── test_multiprocessing_main_handling.py
│   │   ├── test_multiprocessing_spawn.py
│   │   ├── test_named_expressions.py
│   │   ├── test_netrc.py
│   │   ├── test_nis.py
│   │   ├── test_nntplib.py
│   │   ├── test_ntpath.py
│   │   ├── test_numeric_tower.py
│   │   ├── test_opcache.py
│   │   ├── test_opcodes.py
│   │   ├── test_openpty.py
│   │   ├── test_operator.py
│   │   ├── test_optparse.py
│   │   ├── test_ordered_dict.py
│   │   ├── test_os.py
│   │   ├── test_ossaudiodev.py
│   │   ├── test_osx_env.py
│   │   ├── test_pathlib.py
│   │   ├── test_patma.py
│   │   ├── test_pdb.py
│   │   ├── test_peepholer.py
│   │   ├── test_peg_generator/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_c_parser.py
│   │   │   ├── test_first_sets.py
│   │   │   ├── test_grammar_validator.py
│   │   │   └── test_pegen.py
│   │   ├── test_pep646_syntax.py
│   │   ├── test_perf_profiler.py
│   │   ├── test_pickle.py
│   │   ├── test_picklebuffer.py
│   │   ├── test_pickletools.py
│   │   ├── test_pipes.py
│   │   ├── test_pkg.py
│   │   ├── test_pkgutil.py
│   │   ├── test_platform.py
│   │   ├── test_plistlib.py
│   │   ├── test_poll.py
│   │   ├── test_popen.py
│   │   ├── test_poplib.py
│   │   ├── test_positional_only_arg.py
│   │   ├── test_posix.py
│   │   ├── test_posixpath.py
│   │   ├── test_pow.py
│   │   ├── test_pprint.py
│   │   ├── test_print.py
│   │   ├── test_profile.py
│   │   ├── test_property.py
│   │   ├── test_pstats.py
│   │   ├── test_pty.py
│   │   ├── test_pulldom.py
│   │   ├── test_pwd.py
│   │   ├── test_py_compile.py
│   │   ├── test_pyclbr.py
│   │   ├── test_pydoc.py
│   │   ├── test_pyexpat.py
│   │   ├── test_queue.py
│   │   ├── test_quopri.py
│   │   ├── test_raise.py
│   │   ├── test_random.py
│   │   ├── test_range.py
│   │   ├── test_re.py
│   │   ├── test_readline.py
│   │   ├── test_regrtest.py
│   │   ├── test_repl.py
│   │   ├── test_reprlib.py
│   │   ├── test_resource.py
│   │   ├── test_richcmp.py
│   │   ├── test_rlcompleter.py
│   │   ├── test_robotparser.py
│   │   ├── test_runpy.py
│   │   ├── test_sax.py
│   │   ├── test_sched.py
│   │   ├── test_scope.py
│   │   ├── test_script_helper.py
│   │   ├── test_secrets.py
│   │   ├── test_select.py
│   │   ├── test_selectors.py
│   │   ├── test_set.py
│   │   ├── test_setcomps.py
│   │   ├── test_shelve.py
│   │   ├── test_shlex.py
│   │   ├── test_shutil.py
│   │   ├── test_signal.py
│   │   ├── test_site.py
│   │   ├── test_slice.py
│   │   ├── test_smtplib.py
│   │   ├── test_smtpnet.py
│   │   ├── test_sndhdr.py
│   │   ├── test_socket.py
│   │   ├── test_socketserver.py
│   │   ├── test_sort.py
│   │   ├── test_source_encoding.py
│   │   ├── test_spwd.py
│   │   ├── test_sqlite3/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_backup.py
│   │   │   ├── test_cli.py
│   │   │   ├── test_dbapi.py
│   │   │   ├── test_dump.py
│   │   │   ├── test_factory.py
│   │   │   ├── test_hooks.py
│   │   │   ├── test_regression.py
│   │   │   ├── test_transactions.py
│   │   │   ├── test_types.py
│   │   │   └── test_userfunctions.py
│   │   ├── test_ssl.py
│   │   ├── test_stable_abi_ctypes.py
│   │   ├── test_startfile.py
│   │   ├── test_stat.py
│   │   ├── test_statistics.py
│   │   ├── test_strftime.py
│   │   ├── test_string.py
│   │   ├── test_string_literals.py
│   │   ├── test_stringprep.py
│   │   ├── test_strptime.py
│   │   ├── test_strtod.py
│   │   ├── test_struct.py
│   │   ├── test_structseq.py
│   │   ├── test_subclassinit.py
│   │   ├── test_subprocess.py
│   │   ├── test_sunau.py
│   │   ├── test_sundry.py
│   │   ├── test_super.py
│   │   ├── test_support.py
│   │   ├── test_symtable.py
│   │   ├── test_syntax.py
│   │   ├── test_sys.py
│   │   ├── test_sys_setprofile.py
│   │   ├── test_sys_settrace.py
│   │   ├── test_sysconfig.py
│   │   ├── test_syslog.py
│   │   ├── test_tabnanny.py
│   │   ├── test_tarfile.py
│   │   ├── test_tcl.py
│   │   ├── test_telnetlib.py
│   │   ├── test_tempfile.py
│   │   ├── test_textwrap.py
│   │   ├── test_thread.py
│   │   ├── test_threadedtempfile.py
│   │   ├── test_threading.py
│   │   ├── test_threading_local.py
│   │   ├── test_threadsignals.py
│   │   ├── test_time.py
│   │   ├── test_timeit.py
│   │   ├── test_timeout.py
│   │   ├── test_tix.py
│   │   ├── test_tkinter/
│   │   │   ├── README
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── support.py
│   │   │   ├── test_colorchooser.py
│   │   │   ├── test_font.py
│   │   │   ├── test_geometry_managers.py
│   │   │   ├── test_images.py
│   │   │   ├── test_loadtk.py
│   │   │   ├── test_messagebox.py
│   │   │   ├── test_misc.py
│   │   │   ├── test_simpledialog.py
│   │   │   ├── test_text.py
│   │   │   ├── test_variables.py
│   │   │   ├── test_widgets.py
│   │   │   └── widget_tests.py
│   │   ├── test_tokenize.py
│   │   ├── test_tomllib/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── burntsushi.py
│   │   │   ├── data/
│   │   │   │   ├── invalid/
│   │   │   │   │   ├── array/
│   │   │   │   │   │   ├── file-end-after-val.toml
│   │   │   │   │   │   ├── unclosed-after-item.toml
│   │   │   │   │   │   └── unclosed-empty.toml
│   │   │   │   │   ├── array-missing-comma.toml
│   │   │   │   │   ├── array-of-tables/
│   │   │   │   │   │   ├── overwrite-array-in-parent.toml
│   │   │   │   │   │   └── overwrite-bool-with-aot.toml
│   │   │   │   │   ├── basic-str-ends-in-escape.toml
│   │   │   │   │   ├── boolean/
│   │   │   │   │   │   ├── invalid-false-casing.toml
│   │   │   │   │   │   └── invalid-true-casing.toml
│   │   │   │   │   ├── dates-and-times/
│   │   │   │   │   │   └── invalid-day.toml
│   │   │   │   │   ├── dotted-keys/
│   │   │   │   │   │   ├── access-non-table.toml
│   │   │   │   │   │   ├── extend-defined-aot.toml
│   │   │   │   │   │   ├── extend-defined-table-with-subtable.toml
│   │   │   │   │   │   └── extend-defined-table.toml
│   │   │   │   │   ├── inline-table/
│   │   │   │   │   │   ├── define-twice-in-subtable.toml
│   │   │   │   │   │   ├── define-twice.toml
│   │   │   │   │   │   ├── file-end-after-key-val.toml
│   │   │   │   │   │   ├── mutate.toml
│   │   │   │   │   │   ├── override-val-in-table.toml
│   │   │   │   │   │   ├── override-val-with-array.toml
│   │   │   │   │   │   ├── override-val-with-table.toml
│   │   │   │   │   │   ├── overwrite-implicitly.toml
│   │   │   │   │   │   ├── overwrite-value-in-inner-array.toml
│   │   │   │   │   │   ├── overwrite-value-in-inner-table.toml
│   │   │   │   │   │   └── unclosed-empty.toml
│   │   │   │   │   ├── inline-table-missing-comma.toml
│   │   │   │   │   ├── invalid-comment-char.toml
│   │   │   │   │   ├── invalid-escaped-unicode.toml
│   │   │   │   │   ├── invalid-hex.toml
│   │   │   │   │   ├── keys-and-vals/
│   │   │   │   │   │   ├── ends-early-table-def.toml
│   │   │   │   │   │   ├── ends-early.toml
│   │   │   │   │   │   ├── no-value.toml
│   │   │   │   │   │   ├── only-ws-after-dot.toml
│   │   │   │   │   │   └── overwrite-with-deep-table.toml
│   │   │   │   │   ├── literal-str/
│   │   │   │   │   │   └── unclosed.toml
│   │   │   │   │   ├── missing-closing-double-square-bracket.toml
│   │   │   │   │   ├── missing-closing-square-bracket.toml
│   │   │   │   │   ├── multiline-basic-str/
│   │   │   │   │   │   ├── carriage-return.toml
│   │   │   │   │   │   ├── escape-only.toml
│   │   │   │   │   │   ├── file-ends-after-opening.toml
│   │   │   │   │   │   ├── last-line-escape.toml
│   │   │   │   │   │   └── unclosed-ends-in-whitespace-escape.toml
│   │   │   │   │   ├── multiline-literal-str/
│   │   │   │   │   │   ├── file-ends-after-opening.toml
│   │   │   │   │   │   └── unclosed.toml
│   │   │   │   │   ├── non-scalar-escaped.toml
│   │   │   │   │   ├── table/
│   │   │   │   │   │   ├── eof-after-opening.toml
│   │   │   │   │   │   ├── redefine-1.toml
│   │   │   │   │   │   └── redefine-2.toml
│   │   │   │   │   ├── unclosed-multiline-string.toml
│   │   │   │   │   └── unclosed-string.toml
│   │   │   │   └── valid/
│   │   │   │       ├── apostrophes-in-literal-string.json
│   │   │   │       ├── apostrophes-in-literal-string.toml
│   │   │   │       ├── array/
│   │   │   │       │   ├── array-subtables.json
│   │   │   │       │   ├── array-subtables.toml
│   │   │   │       │   ├── open-parent-table.json
│   │   │   │       │   └── open-parent-table.toml
│   │   │   │       ├── boolean.json
│   │   │   │       ├── boolean.toml
│   │   │   │       ├── dates-and-times/
│   │   │   │       │   ├── datetimes.json
│   │   │   │       │   ├── datetimes.toml
│   │   │   │       │   ├── localtime.json
│   │   │   │       │   └── localtime.toml
│   │   │   │       ├── empty-inline-table.json
│   │   │   │       ├── empty-inline-table.toml
│   │   │   │       ├── five-quotes.json
│   │   │   │       ├── five-quotes.toml
│   │   │   │       ├── hex-char.json
│   │   │   │       ├── hex-char.toml
│   │   │   │       ├── multiline-basic-str/
│   │   │   │       │   ├── ends-in-whitespace-escape.json
│   │   │   │       │   └── ends-in-whitespace-escape.toml
│   │   │   │       ├── no-newlines.json
│   │   │   │       ├── no-newlines.toml
│   │   │   │       ├── trailing-comma.json
│   │   │   │       └── trailing-comma.toml
│   │   │   ├── test_data.py
│   │   │   ├── test_error.py
│   │   │   └── test_misc.py
│   │   ├── test_tools/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_freeze.py
│   │   │   ├── test_i18n.py
│   │   │   ├── test_reindent.py
│   │   │   └── test_sundry.py
│   │   ├── test_trace.py
│   │   ├── test_traceback.py
│   │   ├── test_tracemalloc.py
│   │   ├── test_ttk/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── test_extensions.py
│   │   │   ├── test_style.py
│   │   │   └── test_widgets.py
│   │   ├── test_ttk_textonly.py
│   │   ├── test_tuple.py
│   │   ├── test_turtle.py
│   │   ├── test_type_annotations.py
│   │   ├── test_type_cache.py
│   │   ├── test_type_comments.py
│   │   ├── test_typechecks.py
│   │   ├── test_types.py
│   │   ├── test_typing.py
│   │   ├── test_ucn.py
│   │   ├── test_unary.py
│   │   ├── test_unicode.py
│   │   ├── test_unicode_file.py
│   │   ├── test_unicode_file_functions.py
│   │   ├── test_unicode_identifiers.py
│   │   ├── test_unicodedata.py
│   │   ├── test_unittest/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _test_warnings.py
│   │   │   ├── dummy.py
│   │   │   ├── support.py
│   │   │   ├── test_assertions.py
│   │   │   ├── test_async_case.py
│   │   │   ├── test_break.py
│   │   │   ├── test_case.py
│   │   │   ├── test_discovery.py
│   │   │   ├── test_functiontestcase.py
│   │   │   ├── test_loader.py
│   │   │   ├── test_program.py
│   │   │   ├── test_result.py
│   │   │   ├── test_runner.py
│   │   │   ├── test_setups.py
│   │   │   ├── test_skipping.py
│   │   │   ├── test_suite.py
│   │   │   └── testmock/
│   │   │       ├── __init__.py
│   │   │       ├── __main__.py
│   │   │       ├── support.py
│   │   │       ├── testasync.py
│   │   │       ├── testcallable.py
│   │   │       ├── testhelpers.py
│   │   │       ├── testmagicmethods.py
│   │   │       ├── testmock.py
│   │   │       ├── testpatch.py
│   │   │       ├── testsealable.py
│   │   │       ├── testsentinel.py
│   │   │       └── testwith.py
│   │   ├── test_univnewlines.py
│   │   ├── test_unpack.py
│   │   ├── test_unpack_ex.py
│   │   ├── test_unparse.py
│   │   ├── test_urllib.py
│   │   ├── test_urllib2.py
│   │   ├── test_urllib2_localnet.py
│   │   ├── test_urllib2net.py
│   │   ├── test_urllib_response.py
│   │   ├── test_urllibnet.py
│   │   ├── test_urlparse.py
│   │   ├── test_userdict.py
│   │   ├── test_userlist.py
│   │   ├── test_userstring.py
│   │   ├── test_utf8_mode.py
│   │   ├── test_utf8source.py
│   │   ├── test_uu.py
│   │   ├── test_uuid.py
│   │   ├── test_venv.py
│   │   ├── test_wait3.py
│   │   ├── test_wait4.py
│   │   ├── test_warnings/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   └── data/
│   │   │       ├── import_warning.py
│   │   │       └── stacklevel.py
│   │   ├── test_wave.py
│   │   ├── test_weakref.py
│   │   ├── test_weakset.py
│   │   ├── test_webbrowser.py
│   │   ├── test_winconsoleio.py
│   │   ├── test_winreg.py
│   │   ├── test_winsound.py
│   │   ├── test_with.py
│   │   ├── test_wmi.py
│   │   ├── test_wsgiref.py
│   │   ├── test_xdrlib.py
│   │   ├── test_xml_dom_minicompat.py
│   │   ├── test_xml_etree.py
│   │   ├── test_xml_etree_c.py
│   │   ├── test_xmlrpc.py
│   │   ├── test_xmlrpc_net.py
│   │   ├── test_xxlimited.py
│   │   ├── test_xxtestfuzz.py
│   │   ├── test_yield_from.py
│   │   ├── test_zipapp.py
│   │   ├── test_zipfile/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _functools.py
│   │   │   ├── _itertools.py
│   │   │   ├── _test_params.py
│   │   │   ├── test_core.py
│   │   │   └── test_path.py
│   │   ├── test_zipfile64.py
│   │   ├── test_zipimport.py
│   │   ├── test_zipimport_support.py
│   │   ├── test_zlib.py
│   │   ├── test_zoneinfo/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _support.py
│   │   │   ├── data/
│   │   │   │   ├── update_test_data.py
│   │   │   │   └── zoneinfo_data.json
│   │   │   └── test_zoneinfo.py
│   │   ├── testcodec.py
│   │   ├── testtar.tar.xz
│   │   ├── tf_inherit_check.py
│   │   ├── time_hashlib.py
│   │   ├── tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
│   │   ├── tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
│   │   ├── tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
│   │   ├── tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
│   │   ├── tokenize_tests.txt
│   │   ├── tracedmodules/
│   │   │   ├── __init__.py
│   │   │   └── testmod.py
│   │   ├── typinganndata/
│   │   │   ├── __init__.py
│   │   │   └── ann_module9.py
│   │   ├── win_console_handler.py
│   │   ├── xmltestdata/
│   │   │   ├── c14n-20/
│   │   │   │   ├── README
│   │   │   │   ├── c14nComment.xml
│   │   │   │   ├── c14nDefault.xml
│   │   │   │   ├── c14nPrefix.xml
│   │   │   │   ├── c14nPrefixQname.xml
│   │   │   │   ├── c14nPrefixQnameXpathElem.xml
│   │   │   │   ├── c14nQname.xml
│   │   │   │   ├── c14nQnameElem.xml
│   │   │   │   ├── c14nQnameXpathElem.xml
│   │   │   │   ├── c14nTrim.xml
│   │   │   │   ├── doc.dtd
│   │   │   │   ├── doc.xsl
│   │   │   │   ├── inC14N1.xml
│   │   │   │   ├── inC14N2.xml
│   │   │   │   ├── inC14N3.xml
│   │   │   │   ├── inC14N4.xml
│   │   │   │   ├── inC14N5.xml
│   │   │   │   ├── inC14N6.xml
│   │   │   │   ├── inNsContent.xml
│   │   │   │   ├── inNsDefault.xml
│   │   │   │   ├── inNsPushdown.xml
│   │   │   │   ├── inNsRedecl.xml
│   │   │   │   ├── inNsSort.xml
│   │   │   │   ├── inNsSuperfluous.xml
│   │   │   │   ├── inNsXml.xml
│   │   │   │   ├── out_inC14N1_c14nComment.xml
│   │   │   │   ├── out_inC14N1_c14nDefault.xml
│   │   │   │   ├── out_inC14N2_c14nDefault.xml
│   │   │   │   ├── out_inC14N2_c14nTrim.xml
│   │   │   │   ├── out_inC14N3_c14nDefault.xml
│   │   │   │   ├── out_inC14N3_c14nPrefix.xml
│   │   │   │   ├── out_inC14N3_c14nTrim.xml
│   │   │   │   ├── out_inC14N4_c14nDefault.xml
│   │   │   │   ├── out_inC14N4_c14nTrim.xml
│   │   │   │   ├── out_inC14N5_c14nDefault.xml
│   │   │   │   ├── out_inC14N5_c14nTrim.xml
│   │   │   │   ├── out_inC14N6_c14nDefault.xml
│   │   │   │   ├── out_inNsContent_c14nDefault.xml
│   │   │   │   ├── out_inNsContent_c14nPrefixQnameXpathElem.xml
│   │   │   │   ├── out_inNsContent_c14nQnameElem.xml
│   │   │   │   ├── out_inNsContent_c14nQnameXpathElem.xml
│   │   │   │   ├── out_inNsDefault_c14nDefault.xml
│   │   │   │   ├── out_inNsDefault_c14nPrefix.xml
│   │   │   │   ├── out_inNsPushdown_c14nDefault.xml
│   │   │   │   ├── out_inNsPushdown_c14nPrefix.xml
│   │   │   │   ├── out_inNsRedecl_c14nDefault.xml
│   │   │   │   ├── out_inNsRedecl_c14nPrefix.xml
│   │   │   │   ├── out_inNsSort_c14nDefault.xml
│   │   │   │   ├── out_inNsSort_c14nPrefix.xml
│   │   │   │   ├── out_inNsSuperfluous_c14nDefault.xml
│   │   │   │   ├── out_inNsSuperfluous_c14nPrefix.xml
│   │   │   │   ├── out_inNsXml_c14nDefault.xml
│   │   │   │   ├── out_inNsXml_c14nPrefix.xml
│   │   │   │   ├── out_inNsXml_c14nPrefixQname.xml
│   │   │   │   ├── out_inNsXml_c14nQname.xml
│   │   │   │   └── world.txt
│   │   │   ├── expat224_utf8_bug.xml
│   │   │   ├── simple-ns.xml
│   │   │   ├── simple.xml
│   │   │   ├── test.xml
│   │   │   └── test.xml.out
│   │   ├── xmltests.py
│   │   └── ziptestdata/
│   │       ├── README.md
│   │       ├── exe_with_z64
│   │       ├── exe_with_zip
│   │       ├── header.sh
│   │       └── testdata_module_inside_zip.py
│   ├── textwrap.py
│   ├── this.py
│   ├── threading.py
│   ├── timeit.py
│   ├── tkinter/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── colorchooser.py
│   │   ├── commondialog.py
│   │   ├── constants.py
│   │   ├── dialog.py
│   │   ├── dnd.py
│   │   ├── filedialog.py
│   │   ├── font.py
│   │   ├── messagebox.py
│   │   ├── scrolledtext.py
│   │   ├── simpledialog.py
│   │   ├── tix.py
│   │   └── ttk.py
│   ├── token.py
│   ├── tokenize.py
│   ├── tomllib/
│   │   ├── __init__.py
│   │   ├── _parser.py
│   │   ├── _re.py
│   │   └── _types.py
│   ├── trace.py
│   ├── traceback.py
│   ├── tracemalloc.py
│   ├── tty.py
│   ├── turtle.py
│   ├── turtledemo/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── bytedesign.py
│   │   ├── chaos.py
│   │   ├── clock.py
│   │   ├── colormixer.py
│   │   ├── forest.py
│   │   ├── fractalcurves.py
│   │   ├── lindenmayer.py
│   │   ├── minimal_hanoi.py
│   │   ├── nim.py
│   │   ├── paint.py
│   │   ├── peace.py
│   │   ├── penrose.py
│   │   ├── planet_and_moon.py
│   │   ├── rosette.py
│   │   ├── round_dance.py
│   │   ├── sorting_animate.py
│   │   ├── tree.py
│   │   ├── turtle.cfg
│   │   ├── two_canvases.py
│   │   └── yinyang.py
│   ├── types.py
│   ├── typing.py
│   ├── unittest/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── _log.py
│   │   ├── async_case.py
│   │   ├── case.py
│   │   ├── loader.py
│   │   ├── main.py
│   │   ├── mock.py
│   │   ├── result.py
│   │   ├── runner.py
│   │   ├── signals.py
│   │   ├── suite.py
│   │   └── util.py
│   ├── urllib/
│   │   ├── __init__.py
│   │   ├── error.py
│   │   ├── parse.py
│   │   ├── request.py
│   │   ├── response.py
│   │   └── robotparser.py
│   ├── uu.py
│   ├── uuid.py
│   ├── venv/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   └── scripts/
│   │       ├── common/
│   │       │   ├── Activate.ps1
│   │       │   └── activate
│   │       ├── nt/
│   │       │   ├── activate.bat
│   │       │   └── deactivate.bat
│   │       └── posix/
│   │           ├── activate.csh
│   │           └── activate.fish
│   ├── warnings.py
│   ├── wave.py
│   ├── weakref.py
│   ├── webbrowser.py
│   ├── wsgiref/
│   │   ├── __init__.py
│   │   ├── handlers.py
│   │   ├── headers.py
│   │   ├── simple_server.py
│   │   ├── types.py
│   │   ├── util.py
│   │   └── validate.py
│   ├── xdrlib.py
│   ├── xml/
│   │   ├── __init__.py
│   │   ├── dom/
│   │   │   ├── NodeFilter.py
│   │   │   ├── __init__.py
│   │   │   ├── domreg.py
│   │   │   ├── expatbuilder.py
│   │   │   ├── minicompat.py
│   │   │   ├── minidom.py
│   │   │   ├── pulldom.py
│   │   │   └── xmlbuilder.py
│   │   ├── etree/
│   │   │   ├── ElementInclude.py
│   │   │   ├── ElementPath.py
│   │   │   ├── ElementTree.py
│   │   │   ├── __init__.py
│   │   │   └── cElementTree.py
│   │   ├── parsers/
│   │   │   ├── __init__.py
│   │   │   └── expat.py
│   │   └── sax/
│   │       ├── __init__.py
│   │       ├── _exceptions.py
│   │       ├── expatreader.py
│   │       ├── handler.py
│   │       ├── saxutils.py
│   │       └── xmlreader.py
│   ├── xmlrpc/
│   │   ├── __init__.py
│   │   ├── client.py
│   │   └── server.py
│   ├── zipapp.py
│   ├── zipfile/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   └── _path.py
│   ├── zipimport.py
│   └── zoneinfo/
│       ├── __init__.py
│       ├── _common.py
│       ├── _tzpath.py
│       └── _zoneinfo.py
├── Mac/
│   ├── BuildScript/
│   │   ├── README.rst
│   │   ├── build-installer.py
│   │   ├── resources/
│   │   │   ├── Conclusion.rtf
│   │   │   ├── License.rtf
│   │   │   ├── ReadMe.rtf
│   │   │   ├── Welcome.rtf
│   │   │   └── install_certificates.command
│   │   ├── scripts/
│   │   │   ├── postflight.documentation
│   │   │   ├── postflight.ensurepip
│   │   │   ├── postflight.framework
│   │   │   └── postflight.patch-profile
│   │   ├── seticon.m
│   │   └── tk868_on_10_8_10_9.patch
│   ├── Extras.install.py
│   ├── IDLE/
│   │   └── IDLE.app/
│   │       └── Contents/
│   │           ├── Info.plist
│   │           ├── MacOS/
│   │           │   └── IDLE
│   │           ├── PkgInfo
│   │           └── Resources/
│   │               ├── IDLE.icns
│   │               ├── PythonCompiled.icns
│   │               ├── PythonSource.icns
│   │               └── idlemain.py
│   ├── Icons/
│   │   ├── Disk Image.icns
│   │   ├── IDLE.icns
│   │   ├── Python Folder.icns
│   │   ├── PythonCompiled.icns
│   │   ├── PythonLauncher.icns
│   │   ├── PythonSource.icns
│   │   └── ReadMe.txt
│   ├── Makefile.in
│   ├── PythonLauncher/
│   │   ├── English.lproj/
│   │   │   ├── Credits.rtf
│   │   │   ├── MainMenu.nib/
│   │   │   │   ├── classes.nib
│   │   │   │   ├── info.nib
│   │   │   │   └── objects.nib
│   │   │   ├── MyDocument.nib/
│   │   │   │   ├── classes.nib
│   │   │   │   ├── info.nib
│   │   │   │   └── objects.nib
│   │   │   └── PreferenceWindow.nib/
│   │   │       ├── classes.nib
│   │   │       ├── info.nib
│   │   │       └── objects.nib
│   │   ├── FileSettings.h
│   │   ├── FileSettings.m
│   │   ├── Info.plist.in
│   │   ├── Makefile.in
│   │   ├── MyAppDelegate.h
│   │   ├── MyAppDelegate.m
│   │   ├── MyDocument.h
│   │   ├── MyDocument.m
│   │   ├── PreferencesWindowController.h
│   │   ├── PreferencesWindowController.m
│   │   ├── doscript.h
│   │   ├── doscript.m
│   │   ├── factorySettings.plist
│   │   └── main.m
│   ├── README.rst
│   ├── Resources/
│   │   ├── app/
│   │   │   ├── Info.plist.in
│   │   │   ├── PkgInfo
│   │   │   └── Resources/
│   │   │       ├── PythonApplet.icns
│   │   │       └── PythonInterpreter.icns
│   │   ├── framework/
│   │   │   └── Info.plist.in
│   │   └── iconsrc/
│   │       ├── IDE.psd
│   │       ├── PackageManager.psd
│   │       ├── PythonApplet.psd
│   │       ├── PythonCompiled.psd
│   │       ├── PythonIcon.psd
│   │       ├── PythonSource.psd
│   │       └── PythonWSource.psd
│   └── Tools/
│       ├── plistlib_generate_testdata.py
│       └── pythonw.c
├── Makefile.pre.in
├── Misc/
│   ├── ACKS
│   ├── HISTORY
│   ├── NEWS.d/
│   │   ├── 3.10.0a1.rst
│   │   ├── 3.10.0a2.rst
│   │   ├── 3.10.0a3.rst
│   │   ├── 3.10.0a4.rst
│   │   ├── 3.10.0a5.rst
│   │   ├── 3.10.0a6.rst
│   │   ├── 3.10.0a7.rst
│   │   ├── 3.10.0b1.rst
│   │   ├── 3.11.0a1.rst
│   │   ├── 3.11.0a2.rst
│   │   ├── 3.11.0a3.rst
│   │   ├── 3.11.0a4.rst
│   │   ├── 3.11.0a5.rst
│   │   ├── 3.11.0a6.rst
│   │   ├── 3.11.0a7.rst
│   │   ├── 3.11.0b1.rst
│   │   ├── 3.12.0a1.rst
│   │   ├── 3.12.0a2.rst
│   │   ├── 3.12.0a3.rst
│   │   ├── 3.12.0a4.rst
│   │   ├── 3.5.0.rst
│   │   ├── 3.5.0a1.rst
│   │   ├── 3.5.0a2.rst
│   │   ├── 3.5.0a3.rst
│   │   ├── 3.5.0a4.rst
│   │   ├── 3.5.0b1.rst
│   │   ├── 3.5.0b2.rst
│   │   ├── 3.5.0b3.rst
│   │   ├── 3.5.0b4.rst
│   │   ├── 3.5.0rc1.rst
│   │   ├── 3.5.0rc2.rst
│   │   ├── 3.5.0rc3.rst
│   │   ├── 3.5.0rc4.rst
│   │   ├── 3.5.1.rst
│   │   ├── 3.5.1rc1.rst
│   │   ├── 3.5.2.rst
│   │   ├── 3.5.2rc1.rst
│   │   ├── 3.5.3.rst
│   │   ├── 3.5.3rc1.rst
│   │   ├── 3.5.4.rst
│   │   ├── 3.5.4rc1.rst
│   │   ├── 3.5.5.rst
│   │   ├── 3.5.5rc1.rst
│   │   ├── 3.6.0.rst
│   │   ├── 3.6.0a1.rst
│   │   ├── 3.6.0a2.rst
│   │   ├── 3.6.0a3.rst
│   │   ├── 3.6.0a4.rst
│   │   ├── 3.6.0b1.rst
│   │   ├── 3.6.0b2.rst
│   │   ├── 3.6.0b3.rst
│   │   ├── 3.6.0b4.rst
│   │   ├── 3.6.0rc1.rst
│   │   ├── 3.6.0rc2.rst
│   │   ├── 3.6.1.rst
│   │   ├── 3.6.1rc1.rst
│   │   ├── 3.6.2.rst
│   │   ├── 3.6.2rc1.rst
│   │   ├── 3.6.2rc2.rst
│   │   ├── 3.6.3.rst
│   │   ├── 3.6.3rc1.rst
│   │   ├── 3.6.4.rst
│   │   ├── 3.6.4rc1.rst
│   │   ├── 3.6.5.rst
│   │   ├── 3.6.5rc1.rst
│   │   ├── 3.6.6.rst
│   │   ├── 3.6.6rc1.rst
│   │   ├── 3.7.0.rst
│   │   ├── 3.7.0a1.rst
│   │   ├── 3.7.0a2.rst
│   │   ├── 3.7.0a3.rst
│   │   ├── 3.7.0a4.rst
│   │   ├── 3.7.0b1.rst
│   │   ├── 3.7.0b2.rst
│   │   ├── 3.7.0b3.rst
│   │   ├── 3.7.0b4.rst
│   │   ├── 3.7.0b5.rst
│   │   ├── 3.7.0rc1.rst
│   │   ├── 3.8.0a1.rst
│   │   ├── 3.8.0a2.rst
│   │   ├── 3.8.0a3.rst
│   │   ├── 3.8.0a4.rst
│   │   ├── 3.8.0b1.rst
│   │   ├── 3.9.0a1.rst
│   │   ├── 3.9.0a2.rst
│   │   ├── 3.9.0a3.rst
│   │   ├── 3.9.0a4.rst
│   │   ├── 3.9.0a5.rst
│   │   ├── 3.9.0a6.rst
│   │   ├── 3.9.0b1.rst
│   │   └── next/
│   │       ├── Build/
│   │       │   └── README.rst
│   │       ├── C API/
│   │       │   └── README.rst
│   │       ├── Core and Builtins/
│   │       │   └── README.rst
│   │       ├── Documentation/
│   │       │   └── README.rst
│   │       ├── IDLE/
│   │       │   └── README.rst
│   │       ├── Library/
│   │       │   └── README.rst
│   │       ├── Security/
│   │       │   └── README.rst
│   │       ├── Tests/
│   │       │   └── README.rst
│   │       ├── Tools-Demos/
│   │       │   └── README.rst
│   │       ├── Windows/
│   │       │   └── README.rst
│   │       └── macOS/
│   │           └── README.rst
│   ├── Porting
│   ├── README
│   ├── README.AIX
│   ├── README.coverity
│   ├── README.valgrind
│   ├── SpecialBuilds.txt
│   ├── coverity_model.c
│   ├── gdbinit
│   ├── indent.pro
│   ├── python-config.in
│   ├── python-config.sh.in
│   ├── python-embed.pc.in
│   ├── python.man
│   ├── python.pc.in
│   ├── requirements-test.txt
│   ├── rhel7/
│   │   ├── README.md
│   │   ├── openssl.pc
│   │   ├── tcl.pc
│   │   └── tk.pc
│   ├── stable_abi.toml
│   ├── svnmap.txt
│   ├── valgrind-python.supp
│   └── vgrindefs
├── Modules/
│   ├── README
│   ├── Setup
│   ├── Setup.bootstrap.in
│   ├── Setup.stdlib.in
│   ├── _abc.c
│   ├── _asynciomodule.c
│   ├── _bisectmodule.c
│   ├── _blake2/
│   │   ├── blake2b2s.py
│   │   ├── blake2b_impl.c
│   │   ├── blake2module.c
│   │   ├── blake2module.h
│   │   ├── blake2s_impl.c
│   │   ├── clinic/
│   │   │   ├── blake2b_impl.c.h
│   │   │   └── blake2s_impl.c.h
│   │   └── impl/
│   │       ├── blake2-config.h
│   │       ├── blake2-impl.h
│   │       ├── blake2.h
│   │       ├── blake2b-load-sse2.h
│   │       ├── blake2b-load-sse41.h
│   │       ├── blake2b-ref.c
│   │       ├── blake2b-round.h
│   │       ├── blake2b.c
│   │       ├── blake2s-load-sse2.h
│   │       ├── blake2s-load-sse41.h
│   │       ├── blake2s-load-xop.h
│   │       ├── blake2s-ref.c
│   │       ├── blake2s-round.h
│   │       └── blake2s.c
│   ├── _bz2module.c
│   ├── _codecsmodule.c
│   ├── _collectionsmodule.c
│   ├── _contextvarsmodule.c
│   ├── _cryptmodule.c
│   ├── _csv.c
│   ├── _ctypes/
│   │   ├── _ctypes.c
│   │   ├── _ctypes_test.c
│   │   ├── _ctypes_test.h
│   │   ├── callbacks.c
│   │   ├── callproc.c
│   │   ├── cfield.c
│   │   ├── ctypes.h
│   │   ├── malloc_closure.c
│   │   └── stgdict.c
│   ├── _curses_panel.c
│   ├── _cursesmodule.c
│   ├── _datetimemodule.c
│   ├── _dbmmodule.c
│   ├── _decimal/
│   │   ├── README.txt
│   │   ├── _decimal.c
│   │   ├── docstrings.h
│   │   ├── libmpdec/
│   │   │   ├── README.txt
│   │   │   ├── basearith.c
│   │   │   ├── basearith.h
│   │   │   ├── bench.c
│   │   │   ├── bench_full.c
│   │   │   ├── bits.h
│   │   │   ├── constants.c
│   │   │   ├── constants.h
│   │   │   ├── context.c
│   │   │   ├── convolute.c
│   │   │   ├── convolute.h
│   │   │   ├── crt.c
│   │   │   ├── crt.h
│   │   │   ├── difradix2.c
│   │   │   ├── difradix2.h
│   │   │   ├── examples/
│   │   │   │   ├── README.txt
│   │   │   │   ├── compare.c
│   │   │   │   ├── div.c
│   │   │   │   ├── divmod.c
│   │   │   │   ├── multiply.c
│   │   │   │   ├── pow.c
│   │   │   │   ├── powmod.c
│   │   │   │   ├── shift.c
│   │   │   │   └── sqrt.c
│   │   │   ├── fnt.c
│   │   │   ├── fnt.h
│   │   │   ├── fourstep.c
│   │   │   ├── fourstep.h
│   │   │   ├── io.c
│   │   │   ├── io.h
│   │   │   ├── literature/
│   │   │   │   ├── REFERENCES.txt
│   │   │   │   ├── bignum.txt
│   │   │   │   ├── fnt.py
│   │   │   │   ├── matrix-transform.txt
│   │   │   │   ├── mulmod-64.txt
│   │   │   │   ├── mulmod-ppro.txt
│   │   │   │   ├── six-step.txt
│   │   │   │   └── umodarith.lisp
│   │   │   ├── mpalloc.c
│   │   │   ├── mpalloc.h
│   │   │   ├── mpdecimal.c
│   │   │   ├── mpdecimal.h
│   │   │   ├── mpsignal.c
│   │   │   ├── numbertheory.c
│   │   │   ├── numbertheory.h
│   │   │   ├── sixstep.c
│   │   │   ├── sixstep.h
│   │   │   ├── transpose.c
│   │   │   ├── transpose.h
│   │   │   ├── typearith.h
│   │   │   ├── umodarith.h
│   │   │   └── vcdiv64.asm
│   │   └── tests/
│   │       ├── README.txt
│   │       ├── bench.py
│   │       ├── bignum.py
│   │       ├── deccheck.py
│   │       ├── formathelper.py
│   │       ├── randdec.py
│   │       ├── randfloat.py
│   │       ├── runall-memorydebugger.sh
│   │       └── runall.bat
│   ├── _elementtree.c
│   ├── _functoolsmodule.c
│   ├── _gdbmmodule.c
│   ├── _hashopenssl.c
│   ├── _heapqmodule.c
│   ├── _io/
│   │   ├── _iomodule.c
│   │   ├── _iomodule.h
│   │   ├── bufferedio.c
│   │   ├── bytesio.c
│   │   ├── clinic/
│   │   │   ├── _iomodule.c.h
│   │   │   ├── bufferedio.c.h
│   │   │   ├── bytesio.c.h
│   │   │   ├── fileio.c.h
│   │   │   ├── iobase.c.h
│   │   │   ├── stringio.c.h
│   │   │   ├── textio.c.h
│   │   │   └── winconsoleio.c.h
│   │   ├── fileio.c
│   │   ├── iobase.c
│   │   ├── stringio.c
│   │   ├── textio.c
│   │   └── winconsoleio.c
│   ├── _json.c
│   ├── _localemodule.c
│   ├── _lsprof.c
│   ├── _lzmamodule.c
│   ├── _math.h
│   ├── _multiprocessing/
│   │   ├── clinic/
│   │   │   ├── multiprocessing.c.h
│   │   │   ├── posixshmem.c.h
│   │   │   └── semaphore.c.h
│   │   ├── multiprocessing.c
│   │   ├── multiprocessing.h
│   │   ├── posixshmem.c
│   │   └── semaphore.c
│   ├── _opcode.c
│   ├── _operator.c
│   ├── _pickle.c
│   ├── _posixsubprocess.c
│   ├── _queuemodule.c
│   ├── _randommodule.c
│   ├── _scproxy.c
│   ├── _sha3/
│   │   ├── LICENSE
│   │   ├── README.txt
│   │   ├── clinic/
│   │   │   └── sha3module.c.h
│   │   ├── sha3.c
│   │   ├── sha3.h
│   │   └── sha3module.c
│   ├── _sqlite/
│   │   ├── blob.c
│   │   ├── blob.h
│   │   ├── clinic/
│   │   │   ├── blob.c.h
│   │   │   ├── connection.c.h
│   │   │   ├── cursor.c.h
│   │   │   ├── module.c.h
│   │   │   └── row.c.h
│   │   ├── connection.c
│   │   ├── connection.h
│   │   ├── cursor.c
│   │   ├── cursor.h
│   │   ├── microprotocols.c
│   │   ├── microprotocols.h
│   │   ├── module.c
│   │   ├── module.h
│   │   ├── prepare_protocol.c
│   │   ├── prepare_protocol.h
│   │   ├── row.c
│   │   ├── row.h
│   │   ├── statement.c
│   │   ├── statement.h
│   │   ├── util.c
│   │   └── util.h
│   ├── _sre/
│   │   ├── clinic/
│   │   │   └── sre.c.h
│   │   ├── sre.c
│   │   ├── sre.h
│   │   ├── sre_constants.h
│   │   ├── sre_lib.h
│   │   └── sre_targets.h
│   ├── _ssl/
│   │   ├── cert.c
│   │   ├── clinic/
│   │   │   └── cert.c.h
│   │   ├── debughelpers.c
│   │   └── misc.c
│   ├── _ssl.c
│   ├── _ssl.h
│   ├── _ssl_data.h
│   ├── _ssl_data_111.h
│   ├── _ssl_data_300.h
│   ├── _stat.c
│   ├── _statisticsmodule.c
│   ├── _struct.c
│   ├── _testbuffer.c
│   ├── _testcapi/
│   │   ├── README.txt
│   │   ├── clinic/
│   │   │   └── vectorcall.c.h
│   │   ├── datetime.c
│   │   ├── docstring.c
│   │   ├── float.c
│   │   ├── getargs.c
│   │   ├── heaptype.c
│   │   ├── long.c
│   │   ├── mem.c
│   │   ├── parts.h
│   │   ├── pytime.c
│   │   ├── structmember.c
│   │   ├── testcapi_long.h
│   │   ├── unicode.c
│   │   ├── vectorcall.c
│   │   ├── vectorcall_limited.c
│   │   └── watchers.c
│   ├── _testcapi_feature_macros.inc
│   ├── _testcapimodule.c
│   ├── _testclinic.c
│   ├── _testimportmultiple.c
│   ├── _testinternalcapi.c
│   ├── _testmultiphase.c
│   ├── _testsinglephase.c
│   ├── _threadmodule.c
│   ├── _tkinter.c
│   ├── _tracemalloc.c
│   ├── _typingmodule.c
│   ├── _uuidmodule.c
│   ├── _weakref.c
│   ├── _winapi.c
│   ├── _xxsubinterpretersmodule.c
│   ├── _xxtestfuzz/
│   │   ├── README.rst
│   │   ├── _xxtestfuzz.c
│   │   ├── dictionaries/
│   │   │   ├── fuzz_json_loads.dict
│   │   │   └── fuzz_sre_compile.dict
│   │   ├── fuzz_csv_reader_corpus/
│   │   │   └── test.csv
│   │   ├── fuzz_json_loads_corpus/
│   │   │   ├── empty_array.json
│   │   │   ├── empty_object.json
│   │   │   ├── pass1.json
│   │   │   ├── pass2.json
│   │   │   ├── pass3.json
│   │   │   └── simple_array.json
│   │   ├── fuzz_sre_compile_corpus/
│   │   │   ├── anchor_links
│   │   │   ├── characters
│   │   │   ├── isbn
│   │   │   └── phone_number
│   │   ├── fuzz_struct_unpack_corpus/
│   │   │   ├── hello_string
│   │   │   ├── long_zero
│   │   │   └── varied_format_string
│   │   ├── fuzz_tests.txt
│   │   └── fuzzer.c
│   ├── _zoneinfo.c
│   ├── addrinfo.h
│   ├── arraymodule.c
│   ├── atexitmodule.c
│   ├── audioop.c
│   ├── binascii.c
│   ├── cjkcodecs/
│   │   ├── README
│   │   ├── _codecs_cn.c
│   │   ├── _codecs_hk.c
│   │   ├── _codecs_iso2022.c
│   │   ├── _codecs_jp.c
│   │   ├── _codecs_kr.c
│   │   ├── _codecs_tw.c
│   │   ├── alg_jisx0201.h
│   │   ├── cjkcodecs.h
│   │   ├── clinic/
│   │   │   └── multibytecodec.c.h
│   │   ├── emu_jisx0213_2000.h
│   │   ├── mappings_cn.h
│   │   ├── mappings_hk.h
│   │   ├── mappings_jisx0213_pair.h
│   │   ├── mappings_jp.h
│   │   ├── mappings_kr.h
│   │   ├── mappings_tw.h
│   │   ├── multibytecodec.c
│   │   └── multibytecodec.h
│   ├── clinic/
│   │   ├── _abc.c.h
│   │   ├── _asynciomodule.c.h
│   │   ├── _bisectmodule.c.h
│   │   ├── _bz2module.c.h
│   │   ├── _codecsmodule.c.h
│   │   ├── _collectionsmodule.c.h
│   │   ├── _contextvarsmodule.c.h
│   │   ├── _cryptmodule.c.h
│   │   ├── _csv.c.h
│   │   ├── _curses_panel.c.h
│   │   ├── _cursesmodule.c.h
│   │   ├── _datetimemodule.c.h
│   │   ├── _dbmmodule.c.h
│   │   ├── _elementtree.c.h
│   │   ├── _functoolsmodule.c.h
│   │   ├── _gdbmmodule.c.h
│   │   ├── _hashopenssl.c.h
│   │   ├── _heapqmodule.c.h
│   │   ├── _localemodule.c.h
│   │   ├── _lsprof.c.h
│   │   ├── _lzmamodule.c.h
│   │   ├── _opcode.c.h
│   │   ├── _operator.c.h
│   │   ├── _pickle.c.h
│   │   ├── _queuemodule.c.h
│   │   ├── _randommodule.c.h
│   │   ├── _ssl.c.h
│   │   ├── _statisticsmodule.c.h
│   │   ├── _struct.c.h
│   │   ├── _testclinic.c.h
│   │   ├── _testinternalcapi.c.h
│   │   ├── _testmultiphase.c.h
│   │   ├── _tkinter.c.h
│   │   ├── _tracemalloc.c.h
│   │   ├── _typingmodule.c.h
│   │   ├── _weakref.c.h
│   │   ├── _winapi.c.h
│   │   ├── _zoneinfo.c.h
│   │   ├── arraymodule.c.h
│   │   ├── audioop.c.h
│   │   ├── binascii.c.h
│   │   ├── cmathmodule.c.h
│   │   ├── fcntlmodule.c.h
│   │   ├── gcmodule.c.h
│   │   ├── grpmodule.c.h
│   │   ├── itertoolsmodule.c.h
│   │   ├── mathmodule.c.h
│   │   ├── md5module.c.h
│   │   ├── overlapped.c.h
│   │   ├── posixmodule.c.h
│   │   ├── pwdmodule.c.h
│   │   ├── pyexpat.c.h
│   │   ├── readline.c.h
│   │   ├── resource.c.h
│   │   ├── selectmodule.c.h
│   │   ├── sha1module.c.h
│   │   ├── sha256module.c.h
│   │   ├── sha512module.c.h
│   │   ├── signalmodule.c.h
│   │   ├── socketmodule.c.h
│   │   ├── spwdmodule.c.h
│   │   ├── symtablemodule.c.h
│   │   ├── syslogmodule.c.h
│   │   ├── termios.c.h
│   │   ├── unicodedata.c.h
│   │   └── zlibmodule.c.h
│   ├── cmathmodule.c
│   ├── config.c.in
│   ├── errnomodule.c
│   ├── expat/
│   │   ├── COPYING
│   │   ├── ascii.h
│   │   ├── asciitab.h
│   │   ├── expat.h
│   │   ├── expat_config.h
│   │   ├── expat_external.h
│   │   ├── iasciitab.h
│   │   ├── internal.h
│   │   ├── latin1tab.h
│   │   ├── nametab.h
│   │   ├── pyexpatns.h
│   │   ├── siphash.h
│   │   ├── utf8tab.h
│   │   ├── winconfig.h
│   │   ├── xmlparse.c
│   │   ├── xmlrole.c
│   │   ├── xmlrole.h
│   │   ├── xmltok.c
│   │   ├── xmltok.h
│   │   ├── xmltok_impl.c
│   │   ├── xmltok_impl.h
│   │   └── xmltok_ns.c
│   ├── faulthandler.c
│   ├── fcntlmodule.c
│   ├── gc_weakref.txt
│   ├── gcmodule.c
│   ├── getaddrinfo.c
│   ├── getbuildinfo.c
│   ├── getnameinfo.c
│   ├── getpath.c
│   ├── getpath.py
│   ├── getpath_noop.c
│   ├── grpmodule.c
│   ├── hashlib.h
│   ├── itertoolsmodule.c
│   ├── ld_so_aix.in
│   ├── main.c
│   ├── makesetup
│   ├── makexp_aix
│   ├── mathmodule.c
│   ├── md5module.c
│   ├── mmapmodule.c
│   ├── nismodule.c
│   ├── ossaudiodev.c
│   ├── overlapped.c
│   ├── posixmodule.c
│   ├── posixmodule.h
│   ├── pwdmodule.c
│   ├── pyexpat.c
│   ├── readline.c
│   ├── resource.c
│   ├── rotatingtree.c
│   ├── rotatingtree.h
│   ├── selectmodule.c
│   ├── sha1module.c
│   ├── sha256module.c
│   ├── sha512module.c
│   ├── signalmodule.c
│   ├── socketmodule.c
│   ├── socketmodule.h
│   ├── spwdmodule.c
│   ├── symtablemodule.c
│   ├── syslogmodule.c
│   ├── termios.c
│   ├── timemodule.c
│   ├── tkappinit.c
│   ├── tkinter.h
│   ├── unicodedata.c
│   ├── unicodedata_db.h
│   ├── unicodename_db.h
│   ├── winreparse.h
│   ├── xxlimited.c
│   ├── xxlimited_35.c
│   ├── xxmodule.c
│   ├── xxsubtype.c
│   └── zlibmodule.c
├── Objects/
│   ├── README
│   ├── abstract.c
│   ├── boolobject.c
│   ├── bytearrayobject.c
│   ├── bytes_methods.c
│   ├── bytesobject.c
│   ├── call.c
│   ├── capsule.c
│   ├── cellobject.c
│   ├── classobject.c
│   ├── clinic/
│   │   ├── bytearrayobject.c.h
│   │   ├── bytesobject.c.h
│   │   ├── classobject.c.h
│   │   ├── codeobject.c.h
│   │   ├── complexobject.c.h
│   │   ├── descrobject.c.h
│   │   ├── dictobject.c.h
│   │   ├── enumobject.c.h
│   │   ├── floatobject.c.h
│   │   ├── funcobject.c.h
│   │   ├── listobject.c.h
│   │   ├── longobject.c.h
│   │   ├── memoryobject.c.h
│   │   ├── moduleobject.c.h
│   │   ├── structseq.c.h
│   │   ├── tupleobject.c.h
│   │   ├── typeobject.c.h
│   │   └── unicodeobject.c.h
│   ├── codeobject.c
│   ├── complexobject.c
│   ├── descrobject.c
│   ├── dictnotes.txt
│   ├── dictobject.c
│   ├── enumobject.c
│   ├── exception_handling_notes.txt
│   ├── exceptions.c
│   ├── fileobject.c
│   ├── floatobject.c
│   ├── frame_layout.md
│   ├── frameobject.c
│   ├── funcobject.c
│   ├── genericaliasobject.c
│   ├── genobject.c
│   ├── interpreteridobject.c
│   ├── iterobject.c
│   ├── listobject.c
│   ├── listsort.txt
│   ├── lnotab_notes.txt
│   ├── locations.md
│   ├── longobject.c
│   ├── memoryobject.c
│   ├── methodobject.c
│   ├── mimalloc/
│   │   ├── alloc-aligned.c
│   │   ├── alloc-posix.c
│   │   ├── alloc.c
│   │   ├── arena.c
│   │   ├── bitmap.c
│   │   ├── bitmap.h
│   │   ├── heap.c
│   │   ├── init.c
│   │   ├── options.c
│   │   ├── os.c
│   │   ├── page-queue.c
│   │   ├── page.c
│   │   ├── random.c
│   │   ├── region.c
│   │   ├── segment-cache.c
│   │   ├── segment.c
│   │   └── stats.c
│   ├── moduleobject.c
│   ├── namespaceobject.c
│   ├── object.c
│   ├── object_layout.md
│   ├── object_layout_312.gv
│   ├── object_layout_full_312.gv
│   ├── obmalloc.c
│   ├── picklebufobject.c
│   ├── rangeobject.c
│   ├── setobject.c
│   ├── sliceobject.c
│   ├── stringlib/
│   │   ├── README.txt
│   │   ├── asciilib.h
│   │   ├── clinic/
│   │   │   └── transmogrify.h.h
│   │   ├── codecs.h
│   │   ├── count.h
│   │   ├── ctype.h
│   │   ├── eq.h
│   │   ├── fastsearch.h
│   │   ├── find.h
│   │   ├── find_max_char.h
│   │   ├── join.h
│   │   ├── localeutil.h
│   │   ├── partition.h
│   │   ├── replace.h
│   │   ├── split.h
│   │   ├── stringdefs.h
│   │   ├── stringlib_find_two_way_notes.txt
│   │   ├── transmogrify.h
│   │   ├── ucs1lib.h
│   │   ├── ucs2lib.h
│   │   ├── ucs4lib.h
│   │   ├── undef.h
│   │   └── unicode_format.h
│   ├── structseq.c
│   ├── tupleobject.c
│   ├── typeobject.c
│   ├── typeslots.inc
│   ├── typeslots.py
│   ├── unicodectype.c
│   ├── unicodeobject.c
│   ├── unicodetype_db.h
│   ├── unionobject.c
│   └── weakrefobject.c
├── PC/
│   ├── WinMain.c
│   ├── _msi.c
│   ├── _testconsole.c
│   ├── _wmimodule.cpp
│   ├── classicAppCompat.can.xml
│   ├── classicAppCompat.cat
│   ├── classicAppCompat.sccd
│   ├── clinic/
│   │   ├── _msi.c.h
│   │   ├── _testconsole.c.h
│   │   ├── _wmimodule.cpp.h
│   │   ├── msvcrtmodule.c.h
│   │   ├── winreg.c.h
│   │   └── winsound.c.h
│   ├── config.c
│   ├── config_minimal.c
│   ├── crtlicense.txt
│   ├── dl_nt.c
│   ├── errmap.h
│   ├── frozen_dllmain.c
│   ├── icons/
│   │   ├── launcher.icns
│   │   ├── py.icns
│   │   ├── pyc.icns
│   │   ├── pyd.icns
│   │   ├── python.icns
│   │   ├── pythonw.icns
│   │   └── setup.icns
│   ├── invalid_parameter_handler.c
│   ├── launcher-usage.txt
│   ├── launcher.c
│   ├── launcher2.c
│   ├── layout/
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── main.py
│   │   └── support/
│   │       ├── __init__.py
│   │       ├── appxmanifest.py
│   │       ├── catalog.py
│   │       ├── constants.py
│   │       ├── filesets.py
│   │       ├── logging.py
│   │       ├── nuspec.py
│   │       ├── options.py
│   │       ├── pip.py
│   │       ├── props.py
│   │       └── python.props
│   ├── msvcrtmodule.c
│   ├── pyconfig.h
│   ├── pylauncher.rc
│   ├── pyshellext.cpp
│   ├── pyshellext.def
│   ├── pyshellext.rc
│   ├── python.manifest
│   ├── python3dll.c
│   ├── python_exe.rc
│   ├── python_nt.rc
│   ├── python_uwp.cpp
│   ├── python_ver_rc.h
│   ├── pythonw_exe.rc
│   ├── readme.txt
│   ├── sqlite3.rc
│   ├── store_info.txt
│   ├── validate_ucrtbase.py
│   ├── winreg.c
│   └── winsound.c
├── PCbuild/
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── _asyncio.vcxproj
│   ├── _asyncio.vcxproj.filters
│   ├── _bz2.vcxproj
│   ├── _bz2.vcxproj.filters
│   ├── _ctypes.vcxproj
│   ├── _ctypes.vcxproj.filters
│   ├── _ctypes_test.vcxproj
│   ├── _ctypes_test.vcxproj.filters
│   ├── _decimal.vcxproj
│   ├── _decimal.vcxproj.filters
│   ├── _elementtree.vcxproj
│   ├── _elementtree.vcxproj.filters
│   ├── _freeze_module.vcxproj
│   ├── _freeze_module.vcxproj.filters
│   ├── _hashlib.vcxproj
│   ├── _hashlib.vcxproj.filters
│   ├── _lzma.vcxproj
│   ├── _lzma.vcxproj.filters
│   ├── _msi.vcxproj
│   ├── _msi.vcxproj.filters
│   ├── _multiprocessing.vcxproj
│   ├── _multiprocessing.vcxproj.filters
│   ├── _overlapped.vcxproj
│   ├── _overlapped.vcxproj.filters
│   ├── _queue.vcxproj
│   ├── _queue.vcxproj.filters
│   ├── _socket.vcxproj
│   ├── _socket.vcxproj.filters
│   ├── _sqlite3.vcxproj
│   ├── _sqlite3.vcxproj.filters
│   ├── _ssl.vcxproj
│   ├── _ssl.vcxproj.filters
│   ├── _testbuffer.vcxproj
│   ├── _testbuffer.vcxproj.filters
│   ├── _testcapi.vcxproj
│   ├── _testcapi.vcxproj.filters
│   ├── _testconsole.vcxproj
│   ├── _testconsole.vcxproj.filters
│   ├── _testembed.vcxproj
│   ├── _testembed.vcxproj.filters
│   ├── _testimportmultiple.vcxproj
│   ├── _testimportmultiple.vcxproj.filters
│   ├── _testinternalcapi.vcxproj
│   ├── _testinternalcapi.vcxproj.filters
│   ├── _testmultiphase.vcxproj
│   ├── _testmultiphase.vcxproj.filters
│   ├── _testsinglephase.vcxproj
│   ├── _testsinglephase.vcxproj.filters
│   ├── _tkinter.vcxproj
│   ├── _tkinter.vcxproj.filters
│   ├── _uuid.vcxproj
│   ├── _uuid.vcxproj.filters
│   ├── _wmi.vcxproj
│   ├── _wmi.vcxproj.filters
│   ├── _zoneinfo.vcxproj
│   ├── _zoneinfo.vcxproj.filters
│   ├── blurb.bat
│   ├── build.bat
│   ├── build_env.bat
│   ├── clean.bat
│   ├── env.bat
│   ├── env.ps1
│   ├── field3.py
│   ├── find_msbuild.bat
│   ├── find_python.bat
│   ├── fix_encoding.py
│   ├── get_external.py
│   ├── get_externals.bat
│   ├── idle.bat
│   ├── libffi.props
│   ├── liblzma.vcxproj
│   ├── liblzma.vcxproj.filters
│   ├── openssl.props
│   ├── openssl.vcxproj
│   ├── pcbuild.proj
│   ├── pcbuild.sln
│   ├── prepare_libffi.bat
│   ├── prepare_ssl.bat
│   ├── prepare_ssl.py
│   ├── prepare_tcltk.bat
│   ├── pyexpat.vcxproj
│   ├── pyexpat.vcxproj.filters
│   ├── pylauncher.vcxproj
│   ├── pylauncher.vcxproj.filters
│   ├── pyproject.props
│   ├── pyshellext.vcxproj
│   ├── pyshellext.vcxproj.filters
│   ├── python.props
│   ├── python.vcxproj
│   ├── python.vcxproj.filters
│   ├── python3dll.vcxproj
│   ├── python3dll.vcxproj.filters
│   ├── python_uwp.vcxproj
│   ├── python_uwp.vcxproj.filters
│   ├── pythoncore.vcxproj
│   ├── pythoncore.vcxproj.filters
│   ├── pythonw.vcxproj
│   ├── pythonw.vcxproj.filters
│   ├── pythonw_uwp.vcxproj
│   ├── pythonw_uwp.vcxproj.filters
│   ├── pywlauncher.vcxproj
│   ├── pywlauncher.vcxproj.filters
│   ├── readme.txt
│   ├── regen.targets
│   ├── rmpyc.py
│   ├── rt.bat
│   ├── select.vcxproj
│   ├── select.vcxproj.filters
│   ├── sqlite3.vcxproj
│   ├── sqlite3.vcxproj.filters
│   ├── tcl.vcxproj
│   ├── tcltk.props
│   ├── tix.vcxproj
│   ├── tk.vcxproj
│   ├── unicodedata.vcxproj
│   ├── unicodedata.vcxproj.filters
│   ├── urlretrieve.py
│   ├── venvlauncher.vcxproj
│   ├── venvlauncher.vcxproj.filters
│   ├── venvwlauncher.vcxproj
│   ├── venvwlauncher.vcxproj.filters
│   ├── winsound.vcxproj
│   ├── winsound.vcxproj.filters
│   ├── xxlimited.vcxproj
│   ├── xxlimited.vcxproj.filters
│   ├── xxlimited_35.vcxproj
│   └── xxlimited_35.vcxproj.filters
├── Parser/
│   ├── Python.asdl
│   ├── action_helpers.c
│   ├── asdl.py
│   ├── asdl_c.py
│   ├── myreadline.c
│   ├── parser.c
│   ├── peg_api.c
│   ├── pegen.c
│   ├── pegen.h
│   ├── pegen_errors.c
│   ├── string_parser.c
│   ├── string_parser.h
│   ├── token.c
│   ├── tokenizer.c
│   └── tokenizer.h
├── Programs/
│   ├── README
│   ├── _bootstrap_python.c
│   ├── _freeze_module.c
│   ├── _freeze_module.py
│   ├── _testembed.c
│   ├── freeze_test_frozenmain.py
│   ├── python.c
│   ├── test_frozenmain.h
│   └── test_frozenmain.py
├── Python/
│   ├── Python-ast.c
│   ├── Python-tokenize.c
│   ├── README
│   ├── _warnings.c
│   ├── adaptive.md
│   ├── asdl.c
│   ├── asm_trampoline.S
│   ├── ast.c
│   ├── ast_opt.c
│   ├── ast_unparse.c
│   ├── bltinmodule.c
│   ├── bootstrap_hash.c
│   ├── bytecodes.c
│   ├── ceval.c
│   ├── ceval_gil.c
│   ├── clinic/
│   │   ├── Python-tokenize.c.h
│   │   ├── _warnings.c.h
│   │   ├── bltinmodule.c.h
│   │   ├── context.c.h
│   │   ├── import.c.h
│   │   ├── marshal.c.h
│   │   ├── sysmodule.c.h
│   │   └── traceback.c.h
│   ├── codecs.c
│   ├── compile.c
│   ├── condvar.h
│   ├── context.c
│   ├── critical_section.c
│   ├── deepfreeze/
│   │   └── README.txt
│   ├── dtoa.c
│   ├── dup2.c
│   ├── dynamic_annotations.c
│   ├── dynload_hpux.c
│   ├── dynload_shlib.c
│   ├── dynload_stub.c
│   ├── dynload_win.c
│   ├── emscripten_signal.c
│   ├── errors.c
│   ├── fileutils.c
│   ├── formatter_unicode.c
│   ├── frame.c
│   ├── frozen.c
│   ├── frozen_modules/
│   │   └── README.txt
│   ├── frozenmain.c
│   ├── future.c
│   ├── generated_cases.c.h
│   ├── getargs.c
│   ├── getcompiler.c
│   ├── getcopyright.c
│   ├── getopt.c
│   ├── getplatform.c
│   ├── getversion.c
│   ├── hamt.c
│   ├── hashtable.c
│   ├── import.c
│   ├── importdl.c
│   ├── importdl.h
│   ├── importlib.h
│   ├── initconfig.c
│   ├── intrinsics.c
│   ├── lock.c
│   ├── makeopcodetargets.py
│   ├── marshal.c
│   ├── modsupport.c
│   ├── mrocache.c
│   ├── mysnprintf.c
│   ├── mystrtoul.c
│   ├── opcode_metadata.h
│   ├── opcode_targets.h
│   ├── parking_lot.c
│   ├── pathconfig.c
│   ├── perf_trampoline.c
│   ├── preconfig.c
│   ├── pyarena.c
│   ├── pyctype.c
│   ├── pyfpe.c
│   ├── pyhash.c
│   ├── pylifecycle.c
│   ├── pymath.c
│   ├── pyrefcnt.c
│   ├── pystate.c
│   ├── pystrcmp.c
│   ├── pystrhex.c
│   ├── pystrtod.c
│   ├── pythonrun.c
│   ├── pytime.c
│   ├── qsbr.c
│   ├── specialize.c
│   ├── stdlib_module_names.h
│   ├── structmember.c
│   ├── suggestions.c
│   ├── symtable.c
│   ├── sysmodule.c
│   ├── thread.c
│   ├── thread_nt.h
│   ├── thread_pthread.h
│   ├── thread_pthread_stubs.h
│   └── traceback.c
├── README.rst
├── Tools/
│   ├── README
│   ├── build/
│   │   ├── check_extension_modules.py
│   │   ├── deepfreeze.py
│   │   ├── freeze_modules.py
│   │   ├── generate_global_objects.py
│   │   ├── generate_levenshtein_examples.py
│   │   ├── generate_opcode_h.py
│   │   ├── generate_re_casefix.py
│   │   ├── generate_sre_constants.py
│   │   ├── generate_stdlib_module_names.py
│   │   ├── generate_token.py
│   │   ├── parse_html5_entities.py
│   │   ├── smelly.py
│   │   ├── stable_abi.py
│   │   ├── umarshal.py
│   │   ├── update_file.py
│   │   └── verify_ensurepip_wheels.py
│   ├── buildbot/
│   │   ├── build.bat
│   │   ├── buildmsi.bat
│   │   ├── clean.bat
│   │   ├── remoteDeploy.bat
│   │   ├── remotePythonInfo.bat
│   │   └── test.bat
│   ├── c-analyzer/
│   │   ├── README
│   │   ├── TODO
│   │   ├── c-analyzer.py
│   │   ├── c_analyzer/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── analyze.py
│   │   │   ├── datafiles.py
│   │   │   ├── info.py
│   │   │   └── match.py
│   │   ├── c_common/
│   │   │   ├── __init__.py
│   │   │   ├── clsutil.py
│   │   │   ├── fsutil.py
│   │   │   ├── info.py
│   │   │   ├── iterutil.py
│   │   │   ├── logging.py
│   │   │   ├── misc.py
│   │   │   ├── scriptutil.py
│   │   │   ├── show.py
│   │   │   ├── strutil.py
│   │   │   └── tables.py
│   │   ├── c_parser/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _state_machine.py
│   │   │   ├── datafiles.py
│   │   │   ├── info.py
│   │   │   ├── match.py
│   │   │   ├── parser/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _alt.py
│   │   │   │   ├── _common.py
│   │   │   │   ├── _compound_decl_body.py
│   │   │   │   ├── _delim.py
│   │   │   │   ├── _func_body.py
│   │   │   │   ├── _global.py
│   │   │   │   ├── _info.py
│   │   │   │   └── _regexes.py
│   │   │   ├── preprocessor/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── __main__.py
│   │   │   │   ├── common.py
│   │   │   │   ├── errors.py
│   │   │   │   ├── gcc.py
│   │   │   │   └── pure.py
│   │   │   └── source.py
│   │   ├── check-c-globals.py
│   │   ├── cpython/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── _analyzer.py
│   │   │   ├── _builtin_types.py
│   │   │   ├── _capi.py
│   │   │   ├── _files.py
│   │   │   ├── _parser.py
│   │   │   ├── globals-to-fix.tsv
│   │   │   ├── ignored.tsv
│   │   │   └── known.tsv
│   │   ├── must-resolve.sh
│   │   └── table-file.py
│   ├── cases_generator/
│   │   ├── README.md
│   │   ├── generate_cases.py
│   │   ├── lexer.py
│   │   ├── parser.py
│   │   ├── plexer.py
│   │   └── test_generator.py
│   ├── ccbench/
│   │   └── ccbench.py
│   ├── clinic/
│   │   ├── clinic.py
│   │   └── cpp.py
│   ├── freeze/
│   │   ├── README
│   │   ├── bkfile.py
│   │   ├── checkextensions.py
│   │   ├── checkextensions_win32.py
│   │   ├── extensions_win32.ini
│   │   ├── flag.py
│   │   ├── freeze.py
│   │   ├── hello.py
│   │   ├── makeconfig.py
│   │   ├── makefreeze.py
│   │   ├── makemakefile.py
│   │   ├── parsesetup.py
│   │   ├── regen_frozen.py
│   │   ├── test/
│   │   │   ├── Makefile
│   │   │   ├── freeze.py
│   │   │   └── ok.py
│   │   ├── win32.html
│   │   └── winmakemakefile.py
│   ├── gdb/
│   │   └── libpython.py
│   ├── i18n/
│   │   ├── makelocalealias.py
│   │   ├── msgfmt.py
│   │   └── pygettext.py
│   ├── importbench/
│   │   ├── README
│   │   └── importbench.py
│   ├── iobench/
│   │   └── iobench.py
│   ├── msi/
│   │   ├── README.txt
│   │   ├── appendpath/
│   │   │   ├── appendpath.wixproj
│   │   │   ├── appendpath.wxs
│   │   │   └── appendpath_en-US.wxl
│   │   ├── build.bat
│   │   ├── buildrelease.bat
│   │   ├── bundle/
│   │   │   ├── Default.ARM64.xsl
│   │   │   ├── Default.thm
│   │   │   ├── Default.wxl
│   │   │   ├── bootstrap/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── PythonBootstrapperApplication.cpp
│   │   │   │   ├── pch.cpp
│   │   │   │   ├── pch.h
│   │   │   │   ├── pythonba.cpp
│   │   │   │   ├── pythonba.def
│   │   │   │   ├── pythonba.sln
│   │   │   │   ├── pythonba.vcxproj
│   │   │   │   └── resource.h
│   │   │   ├── bundle.targets
│   │   │   ├── bundle.wxl
│   │   │   ├── bundle.wxs
│   │   │   ├── full.wixproj
│   │   │   ├── packagegroups/
│   │   │   │   ├── core.wxs
│   │   │   │   ├── crt.wxs
│   │   │   │   ├── dev.wxs
│   │   │   │   ├── doc.wxs
│   │   │   │   ├── exe.wxs
│   │   │   │   ├── launcher.wxs
│   │   │   │   ├── lib.wxs
│   │   │   │   ├── packageinstall.wxs
│   │   │   │   ├── pip.wxs
│   │   │   │   ├── postinstall.wxs
│   │   │   │   ├── tcltk.wxs
│   │   │   │   └── test.wxs
│   │   │   ├── releaselocal.wixproj
│   │   │   ├── releaseweb.wixproj
│   │   │   └── snapshot.wixproj
│   │   ├── common.wxs
│   │   ├── common_en-US.wxl_template
│   │   ├── csv_to_wxs.py
│   │   ├── dev/
│   │   │   ├── dev.wixproj
│   │   │   ├── dev.wxs
│   │   │   ├── dev_d.wixproj
│   │   │   ├── dev_d.wxs
│   │   │   ├── dev_en-US.wxl
│   │   │   └── dev_files.wxs
│   │   ├── doc/
│   │   │   ├── doc.wixproj
│   │   │   ├── doc.wxs
│   │   │   └── doc_en-US.wxl_template
│   │   ├── exe/
│   │   │   ├── exe.wixproj
│   │   │   ├── exe.wxs
│   │   │   ├── exe_d.wixproj
│   │   │   ├── exe_d.wxs
│   │   │   ├── exe_en-US.wxl_template
│   │   │   ├── exe_files.wxs
│   │   │   ├── exe_pdb.wixproj
│   │   │   ├── exe_pdb.wxs
│   │   │   └── exe_reg.wxs
│   │   ├── generate_md5.py
│   │   ├── get_externals.bat
│   │   ├── launcher/
│   │   │   ├── launcher.wixproj
│   │   │   ├── launcher.wxs
│   │   │   ├── launcher_en-US.wxl
│   │   │   ├── launcher_files.wxs
│   │   │   └── launcher_reg.wxs
│   │   ├── lib/
│   │   │   ├── lib.wixproj
│   │   │   ├── lib.wxs
│   │   │   ├── lib_d.wixproj
│   │   │   ├── lib_d.wxs
│   │   │   ├── lib_en-US.wxl
│   │   │   ├── lib_files.wxs
│   │   │   ├── lib_pdb.wixproj
│   │   │   └── lib_pdb.wxs
│   │   ├── make_appx.ps1
│   │   ├── make_cat.ps1
│   │   ├── make_zip.proj
│   │   ├── msi.props
│   │   ├── msi.targets
│   │   ├── path/
│   │   │   ├── path.wixproj
│   │   │   ├── path.wxs
│   │   │   └── path_en-US.wxl
│   │   ├── pip/
│   │   │   ├── pip.wixproj
│   │   │   ├── pip.wxs
│   │   │   └── pip_en-US.wxl
│   │   ├── purge.py
│   │   ├── sdktools.psm1
│   │   ├── sign_build.ps1
│   │   ├── tcltk/
│   │   │   ├── tcltk.wixproj
│   │   │   ├── tcltk.wxs
│   │   │   ├── tcltk_d.wixproj
│   │   │   ├── tcltk_d.wxs
│   │   │   ├── tcltk_en-US.wxl_template
│   │   │   ├── tcltk_files.wxs
│   │   │   ├── tcltk_pdb.wixproj
│   │   │   ├── tcltk_pdb.wxs
│   │   │   └── tcltk_reg.wxs
│   │   ├── test/
│   │   │   ├── test.wixproj
│   │   │   ├── test.wxs
│   │   │   ├── test_d.wixproj
│   │   │   ├── test_d.wxs
│   │   │   ├── test_en-US.wxl
│   │   │   ├── test_files.wxs
│   │   │   ├── test_pdb.wixproj
│   │   │   └── test_pdb.wxs
│   │   ├── testrelease.bat
│   │   ├── ucrt/
│   │   │   ├── ucrt.wixproj
│   │   │   ├── ucrt.wxs
│   │   │   └── ucrt_en-US.wxl
│   │   ├── uploadrelease.bat
│   │   ├── uploadrelease.proj
│   │   ├── uploadrelease.ps1
│   │   └── wix.props
│   ├── nuget/
│   │   ├── build.bat
│   │   ├── make_pkg.proj
│   │   ├── python.nuspec
│   │   ├── pythonarm32.nuspec
│   │   ├── pythondaily.nuspec
│   │   ├── pythondaily.symbols.nuspec
│   │   └── pythonx86.nuspec
│   ├── patchcheck/
│   │   ├── patchcheck.py
│   │   ├── reindent.py
│   │   └── untabify.py
│   ├── peg_generator/
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── data/
│   │   │   ├── cprog.py
│   │   │   └── top-pypi-packages-365-days.json
│   │   ├── mypy.ini
│   │   ├── peg_extension/
│   │   │   ├── __init__.py
│   │   │   └── peg_extension.c
│   │   ├── pegen/
│   │   │   ├── __init__.py
│   │   │   ├── __main__.py
│   │   │   ├── ast_dump.py
│   │   │   ├── build.py
│   │   │   ├── c_generator.py
│   │   │   ├── first_sets.py
│   │   │   ├── grammar.py
│   │   │   ├── grammar_parser.py
│   │   │   ├── grammar_visualizer.py
│   │   │   ├── keywordgen.py
│   │   │   ├── metagrammar.gram
│   │   │   ├── parser.py
│   │   │   ├── parser_generator.py
│   │   │   ├── python_generator.py
│   │   │   ├── sccutils.py
│   │   │   ├── testutil.py
│   │   │   ├── tokenizer.py
│   │   │   └── validator.py
│   │   ├── pyproject.toml
│   │   ├── requirements.pip
│   │   └── scripts/
│   │       ├── __init__.py
│   │       ├── ast_timings.py
│   │       ├── benchmark.py
│   │       ├── download_pypi_packages.py
│   │       ├── find_max_nesting.py
│   │       ├── grammar_grapher.py
│   │       ├── joinstats.py
│   │       ├── test_parse_directory.py
│   │       └── test_pypi_packages.py
│   ├── scripts/
│   │   ├── 2to3
│   │   ├── README
│   │   ├── checkpip.py
│   │   ├── combinerefs.py
│   │   ├── divmod_threshold.py
│   │   ├── idle3
│   │   ├── pydoc3
│   │   ├── run_tests.py
│   │   ├── summarize_stats.py
│   │   └── var_access_benchmark.py
│   ├── ssl/
│   │   ├── make_ssl_data.py
│   │   └── multissltests.py
│   ├── stringbench/
│   │   ├── README
│   │   └── stringbench.py
│   ├── tz/
│   │   └── zdump.py
│   ├── unicode/
│   │   ├── Makefile
│   │   ├── comparecodecs.py
│   │   ├── gencjkcodecs.py
│   │   ├── gencodec.py
│   │   ├── genmap_japanese.py
│   │   ├── genmap_korean.py
│   │   ├── genmap_schinese.py
│   │   ├── genmap_support.py
│   │   ├── genmap_tchinese.py
│   │   ├── genwincodec.py
│   │   ├── genwincodecs.bat
│   │   ├── listcodecs.py
│   │   ├── makeunicodedata.py
│   │   ├── mkstringprep.py
│   │   └── python-mappings/
│   │       ├── CP1140.TXT
│   │       ├── CP273.TXT
│   │       ├── GB2312.TXT
│   │       ├── KOI8-U.TXT
│   │       ├── TIS-620.TXT
│   │       ├── diff/
│   │       │   ├── jisx0213-2000-std.txt.diff
│   │       │   └── jisx0213-2004-std.txt.diff
│   │       ├── gb-18030-2000.xml
│   │       └── jisx0213-2004-std.txt
│   ├── unittestgui/
│   │   ├── README.txt
│   │   └── unittestgui.py
│   └── wasm/
│       ├── .editorconfig
│       ├── README.md
│       ├── Setup.local.example
│       ├── config.site-wasm32-emscripten
│       ├── config.site-wasm32-wasi
│       ├── python.html
│       ├── python.worker.js
│       ├── wasi-env
│       ├── wasm_assets.py
│       ├── wasm_build.py
│       └── wasm_webserver.py
├── aclocal.m4
├── config.guess
├── config.sub
├── configure
├── configure.ac
├── install-sh
├── netlify.toml
└── pyconfig.h.in
Copy disabled (too large) Download .json
Condensed preview — 4380 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (90,779K chars).
[
  {
    "path": ".azure-pipelines/ci.yml",
    "chars": 2685,
    "preview": "variables:\n  coverage: false\n\ntrigger: ['main', '3.11', '3.10', '3.9', '3.8', '3.7']\n\njobs:\n- job: Prebuild\n  displayNam"
  },
  {
    "path": ".azure-pipelines/docs-steps.yml",
    "chars": 1371,
    "preview": "parameters:\n  latex: false\n  upload: false\n\nsteps:\n- checkout: self\n  clean: true\n  fetchDepth: 5\n\n- task: UsePythonVers"
  },
  {
    "path": ".azure-pipelines/macos-steps.yml",
    "chars": 768,
    "preview": "steps:\n- checkout: self\n  clean: true\n  fetchDepth: 5\n\n- script: ./configure --with-pydebug --with-openssl=/usr/local/op"
  },
  {
    "path": ".azure-pipelines/posix-deps-apt.sh",
    "chars": 590,
    "preview": "#!/bin/sh\napt-get update\n\napt-get -yq install \\\n    build-essential \\\n    zlib1g-dev \\\n    libbz2-dev \\\n    liblzma-dev "
  },
  {
    "path": ".azure-pipelines/posix-steps.yml",
    "chars": 2656,
    "preview": "parameters:\n  coverage: false\n  sudo_dependencies: sudo\n  dependencies: apt\n  patchcheck: true\n  xvfb: true\n\nsteps:\n- ch"
  },
  {
    "path": ".azure-pipelines/pr.yml",
    "chars": 2642,
    "preview": "variables:\n  coverage: false\n\npr: ['main', '3.11', '3.10', '3.9', '3.8', '3.7']\n\njobs:\n- job: Prebuild\n  displayName: Pr"
  },
  {
    "path": ".azure-pipelines/prebuild-checks.yml",
    "chars": 1218,
    "preview": "steps:\n- checkout: self\n  fetchDepth: 5\n\n- script: echo \"##vso[task.setvariable variable=diffTarget]HEAD~1\"\n  displayNam"
  },
  {
    "path": ".azure-pipelines/windows-layout-steps.yml",
    "chars": 1492,
    "preview": "parameters:\n  kind: nuget\n  extraOpts: --precompile\n  fulltest: false\n\nsteps:\n- script: .\\python.bat PC\\layout -vv -s \"$"
  },
  {
    "path": ".azure-pipelines/windows-steps.yml",
    "chars": 1490,
    "preview": "steps:\n- checkout: self\n  clean: false\n  fetchDepth: 5\n\n- powershell: |\n    # Relocate build outputs outside of source d"
  },
  {
    "path": ".editorconfig",
    "chars": 181,
    "preview": "root = true\n\n[*.{py,c,cpp,h,rst,md,yml}]\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_style = spac"
  },
  {
    "path": ".gitattributes",
    "chars": 3167,
    "preview": "# Binary data types\n*.aif binary\n*.aifc binary\n*.aiff binary\n*.au binary\n*.bmp binary\n*.exe binary\n*.icns binary\n*.gif b"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 4977,
    "preview": "# See https://help.github.com/articles/about-codeowners/\n# for more info about CODEOWNERS file\n\n# It uses the same patte"
  },
  {
    "path": ".github/CONTRIBUTING.rst",
    "chars": 2367,
    "preview": "Contributing to Python\n======================\n\nBuild Status\n------------\n\n- `Buildbot status overview <https://buildbot."
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.md",
    "chars": 1127,
    "preview": "---\nname: Bug report\nabout: Submit a bug report\nlabels: \"type-bug\"\n---\n\n<!--\n  If you're new to Python and you're not su"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 342,
    "preview": "contact_links:\n  - name: \"Getting help\"\n    about: \"Ask questions about using Python and debugging errors on Discourse.\""
  },
  {
    "path": ".github/ISSUE_TEMPLATE/crash.md",
    "chars": 1142,
    "preview": "---\nname: Crash report\nabout: A hard crash of the interpreter, possibly with a core dump\nlabels: \"type-crash\"\n---\n\n<!--\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation.md",
    "chars": 156,
    "preview": "---\nname: Documentation\nabout: Report a problem with the documentation\nlabels: \"docs\"\n---\n\n# Documentation\n\n(A clear and"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "chars": 854,
    "preview": "---\nname: Feature or enhancement\nabout: Submit a proposal for a new CPython feature or enhancement\nlabels: \"type-feature"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 672,
    "preview": "<!--\nThanks for your contribution!\nPlease read this comment in its entirety. It's quite important.\n\n# Pull Request title"
  },
  {
    "path": ".github/SECURITY.md",
    "chars": 492,
    "preview": "# Security Policy\n\n## Supported Versions\n\nThe Python team applies security fixes according to the table\nin [the devguide"
  },
  {
    "path": ".github/problem-matchers/gcc.json",
    "chars": 513,
    "preview": "{\n    \"__comment\": \"Taken from vscode-cpptools's Extension/package.json gcc rule\",\n    \"problemMatcher\": [\n        {\n   "
  },
  {
    "path": ".github/problem-matchers/msvc.json",
    "chars": 550,
    "preview": "{\n    \"__comment\": \"Taken from vscode's vs/workbench/contrib/tasks/common/problemMatcher.ts msCompile rule\",\n    \"proble"
  },
  {
    "path": ".github/problem-matchers/sphinx.json",
    "chars": 1281,
    "preview": "{\n    \"problemMatcher\": [\n        {\n            \"owner\": \"sphinx-problem-matcher\",\n            \"pattern\": [\n            "
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 12169,
    "preview": "name: Tests\n\n# gh-84728: \"paths-ignore\" is not used to skip documentation-only PRs, because\n# it prevents to mark a job "
  },
  {
    "path": ".github/workflows/build_msi.yml",
    "chars": 615,
    "preview": "name: TestsMSI\n\non:\n  workflow_dispatch:\n  push:\n    branches:\n    - 'main'\n    - '3.*'\n    paths:\n    - 'Tools/msi/**'\n"
  },
  {
    "path": ".github/workflows/posix-deps-apt.sh",
    "chars": 395,
    "preview": "#!/bin/sh\napt-get update\n\napt-get -yq install \\\n    build-essential \\\n    pkg-config \\\n    ccache \\\n    gdb \\\n    lcov \\"
  },
  {
    "path": ".github/workflows/regen-abidump.sh",
    "chars": 206,
    "preview": "set -ex\n\nexport DEBIAN_FRONTEND=noninteractive\n./.github/workflows/posix-deps-apt.sh\napt-get install -yq abigail-tools p"
  },
  {
    "path": ".gitignore",
    "chars": 2641,
    "preview": "#####\n# First, rules intended to apply in all subdirectories.\n# These contain no slash, or only a trailing slash.\n\n*.cov"
  },
  {
    "path": "Doc/Makefile",
    "chars": 8939,
    "preview": "#\n# Makefile for Python documentation\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#\n\n# You can set these variables from the comm"
  },
  {
    "path": "Doc/README.rst",
    "chars": 4777,
    "preview": "Python Documentation README\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis directory contains the reStructuredText (reST) sources to "
  },
  {
    "path": "Doc/about.rst",
    "chars": 1487,
    "preview": "=====================\nAbout these documents\n=====================\n\n\nThese documents are generated from `reStructuredText"
  },
  {
    "path": "Doc/bugs.rst",
    "chars": 4692,
    "preview": ".. _reporting-bugs:\n\n*****************\nDealing with Bugs\n*****************\n\nPython is a mature programming language whic"
  },
  {
    "path": "Doc/c-api/abstract.rst",
    "chars": 723,
    "preview": ".. highlight:: c\n\n.. _abstract:\n\n**********************\nAbstract Objects Layer\n**********************\n\nThe functions in "
  },
  {
    "path": "Doc/c-api/allocation.rst",
    "chars": 2645,
    "preview": ".. highlight:: c\n\n.. _allocating-objects:\n\nAllocating Objects on the Heap\n==============================\n\n\n.. c:function"
  },
  {
    "path": "Doc/c-api/apiabiversion.rst",
    "chars": 2776,
    "preview": ".. highlight:: c\n\n.. _apiabiversion:\n\n***********************\nAPI and ABI Versioning\n***********************\n\nCPython ex"
  },
  {
    "path": "Doc/c-api/arg.rst",
    "chars": 29689,
    "preview": ".. highlight:: c\n\n.. _arg-parsing:\n\nParsing arguments and building values\n=====================================\n\nThese f"
  },
  {
    "path": "Doc/c-api/bool.rst",
    "chars": 1231,
    "preview": ".. highlight:: c\n\n.. _boolobjects:\n\nBoolean Objects\n---------------\n\nBooleans in Python are implemented as a subclass of"
  },
  {
    "path": "Doc/c-api/buffer.rst",
    "chars": 23157,
    "preview": ".. highlight:: c\n\n.. index::\n   single: buffer protocol\n   single: buffer interface; (see buffer protocol)\n   single: bu"
  },
  {
    "path": "Doc/c-api/bytearray.rst",
    "chars": 2296,
    "preview": ".. highlight:: c\n\n.. _bytearrayobjects:\n\nByte Array Objects\n------------------\n\n.. index:: object: bytearray\n\n\n.. c:type"
  },
  {
    "path": "Doc/c-api/bytes.rst",
    "chars": 9191,
    "preview": ".. highlight:: c\n\n.. _bytesobjects:\n\nBytes Objects\n-------------\n\nThese functions raise :exc:`TypeError` when expecting "
  },
  {
    "path": "Doc/c-api/call.rst",
    "chars": 17395,
    "preview": ".. highlight:: c\n\n.. _call:\n\nCall Protocol\n=============\n\nCPython supports two different calling protocols:\n*tp_call* an"
  },
  {
    "path": "Doc/c-api/capsule.rst",
    "chars": 5673,
    "preview": ".. highlight:: c\n\n.. _capsules:\n\nCapsules\n--------\n\n.. index:: object: Capsule\n\nRefer to :ref:`using-capsules` for more "
  },
  {
    "path": "Doc/c-api/cell.rst",
    "chars": 1983,
    "preview": ".. highlight:: c\n\n.. _cell-objects:\n\nCell Objects\n------------\n\n\"Cell\" objects are used to implement variables reference"
  },
  {
    "path": "Doc/c-api/code.rst",
    "chars": 6946,
    "preview": ".. highlight:: c\n\n.. index:: object; code, code object\n\n.. _codeobjects:\n\nCode Objects\n------------\n\n.. sectionauthor:: "
  },
  {
    "path": "Doc/c-api/codec.rst",
    "chars": 5128,
    "preview": ".. _codec-registry:\n\nCodec registry and support functions\n====================================\n\n.. c:function:: int PyCo"
  },
  {
    "path": "Doc/c-api/complex.rst",
    "chars": 4232,
    "preview": ".. highlight:: c\n\n.. _complexobjects:\n\nComplex Number Objects\n----------------------\n\n.. index:: object: complex number\n"
  },
  {
    "path": "Doc/c-api/concrete.rst",
    "chars": 2094,
    "preview": ".. highlight:: c\n\n\n.. _concrete:\n\n**********************\nConcrete Objects Layer\n**********************\n\nThe functions in"
  },
  {
    "path": "Doc/c-api/contextvars.rst",
    "chars": 4205,
    "preview": ".. highlight:: c\n\n.. _contextvarsobjects:\n\nContext Variables Objects\n-------------------------\n\n.. _contextvarsobjects_p"
  },
  {
    "path": "Doc/c-api/conversion.rst",
    "chars": 5524,
    "preview": ".. highlight:: c\n\n.. _string-conversion:\n\nString conversion and formatting\n================================\n\nFunctions f"
  },
  {
    "path": "Doc/c-api/coro.rst",
    "chars": 862,
    "preview": ".. highlight:: c\n\n.. _coro-objects:\n\nCoroutine Objects\n-----------------\n\n.. versionadded:: 3.5\n\nCoroutine objects are w"
  },
  {
    "path": "Doc/c-api/datetime.rst",
    "chars": 8660,
    "preview": ".. highlight:: c\n\n.. _datetimeobjects:\n\nDateTime Objects\n----------------\n\nVarious date and time objects are supplied by"
  },
  {
    "path": "Doc/c-api/descriptor.rst",
    "chars": 1111,
    "preview": ".. highlight:: c\n\n.. _descriptor-objects:\n\nDescriptor Objects\n------------------\n\n\"Descriptors\" are objects that describ"
  },
  {
    "path": "Doc/c-api/dict.rst",
    "chars": 11648,
    "preview": ".. highlight:: c\n\n.. _dictobjects:\n\nDictionary Objects\n------------------\n\n.. index:: object: dictionary\n\n\n.. c:type:: P"
  },
  {
    "path": "Doc/c-api/exceptions.rst",
    "chars": 51106,
    "preview": ".. highlight:: c\n\n\n.. _exceptionhandling:\n\n******************\nException Handling\n******************\n\nThe functions descr"
  },
  {
    "path": "Doc/c-api/file.rst",
    "chars": 4357,
    "preview": ".. highlight:: c\n\n.. _fileobjects:\n\nFile Objects\n------------\n\n.. index:: object: file\n\nThese APIs are a minimal emulati"
  },
  {
    "path": "Doc/c-api/float.rst",
    "chars": 5888,
    "preview": ".. highlight:: c\n\n.. _floatobjects:\n\nFloating Point Objects\n----------------------\n\n.. index:: object: floating point\n\n\n"
  },
  {
    "path": "Doc/c-api/frame.rst",
    "chars": 3352,
    "preview": ".. highlight:: c\n\nFrame Objects\n-------------\n\n.. c:type:: PyFrameObject\n\n   The C structure of the objects used to desc"
  },
  {
    "path": "Doc/c-api/function.rst",
    "chars": 6216,
    "preview": ".. highlight:: c\n\n.. _function-objects:\n\nFunction Objects\n----------------\n\n.. index:: object: function\n\nThere are a few"
  },
  {
    "path": "Doc/c-api/gcsupport.rst",
    "chars": 8726,
    "preview": ".. highlight:: c\n\n.. _supporting-cycle-detection:\n\nSupporting Cyclic Garbage Collection\n================================"
  },
  {
    "path": "Doc/c-api/gen.rst",
    "chars": 1383,
    "preview": ".. highlight:: c\n\n.. _gen-objects:\n\nGenerator Objects\n-----------------\n\nGenerator objects are what Python uses to imple"
  },
  {
    "path": "Doc/c-api/import.rst",
    "chars": 13452,
    "preview": ".. highlight:: c\n\n.. _importing:\n\nImporting Modules\n=================\n\n\n.. c:function:: PyObject* PyImport_ImportModule("
  },
  {
    "path": "Doc/c-api/index.rst",
    "chars": 632,
    "preview": ".. _c-api-index:\n\n##################################\n  Python/C API Reference Manual\n##################################\n"
  },
  {
    "path": "Doc/c-api/init.rst",
    "chars": 78484,
    "preview": ".. highlight:: c\n\n\n.. _initialization:\n\n*****************************************\nInitialization, Finalization, and Thre"
  },
  {
    "path": "Doc/c-api/init_config.rst",
    "chars": 54020,
    "preview": ".. highlight:: c\n\n.. _init-config:\n\n***********************************\nPython Initialization Configuration\n************"
  },
  {
    "path": "Doc/c-api/intro.rst",
    "chars": 33951,
    "preview": ".. highlight:: c\n\n\n.. _api-intro:\n\n************\nIntroduction\n************\n\nThe Application Programmer's Interface to Pyt"
  },
  {
    "path": "Doc/c-api/iter.rst",
    "chars": 2027,
    "preview": ".. highlight:: c\n\n.. _iterator:\n\nIterator Protocol\n=================\n\nThere are two functions specifically for working w"
  },
  {
    "path": "Doc/c-api/iterator.rst",
    "chars": 1706,
    "preview": ".. highlight:: c\n\n.. _iterator-objects:\n\nIterator Objects\n----------------\n\nPython provides two general-purpose iterator"
  },
  {
    "path": "Doc/c-api/list.rst",
    "chars": 4729,
    "preview": ".. highlight:: c\n\n.. _listobjects:\n\nList Objects\n------------\n\n.. index:: object: list\n\n\n.. c:type:: PyListObject\n\n   Th"
  },
  {
    "path": "Doc/c-api/long.rst",
    "chars": 10883,
    "preview": ".. highlight:: c\n\n.. _longobjects:\n\nInteger Objects\n---------------\n\n.. index:: object: long integer\n           object: "
  },
  {
    "path": "Doc/c-api/mapping.rst",
    "chars": 3557,
    "preview": ".. highlight:: c\n\n.. _mapping:\n\nMapping Protocol\n================\n\nSee also :c:func:`PyObject_GetItem`, :c:func:`PyObjec"
  },
  {
    "path": "Doc/c-api/marshal.rst",
    "chars": 3561,
    "preview": ".. highlight:: c\n\n.. _marshalling-utils:\n\nData marshalling support\n========================\n\nThese routines allow C code"
  },
  {
    "path": "Doc/c-api/memory.rst",
    "chars": 30756,
    "preview": ".. highlight:: c\n\n\n.. _memory:\n\n*****************\nMemory Management\n*****************\n\n.. sectionauthor:: Vladimir Maran"
  },
  {
    "path": "Doc/c-api/memoryview.rst",
    "chars": 2385,
    "preview": ".. highlight:: c\n\n.. _memoryview-objects:\n\n.. index::\n   object: memoryview\n\nMemoryView objects\n------------------\n\nA :c"
  },
  {
    "path": "Doc/c-api/method.rst",
    "chars": 2774,
    "preview": ".. highlight:: c\n\n.. _instancemethod-objects:\n\nInstance Method Objects\n-----------------------\n\n.. index:: object: insta"
  },
  {
    "path": "Doc/c-api/module.rst",
    "chars": 23356,
    "preview": ".. highlight:: c\n\n.. _moduleobjects:\n\nModule Objects\n--------------\n\n.. index:: object: module\n\n\n.. c:var:: PyTypeObject"
  },
  {
    "path": "Doc/c-api/none.rst",
    "chars": 736,
    "preview": ".. highlight:: c\n\n.. _noneobject:\n\nThe ``None`` Object\n-------------------\n\n.. index:: object: None\n\nNote that the :c:ty"
  },
  {
    "path": "Doc/c-api/number.rst",
    "chars": 11090,
    "preview": ".. highlight:: c\n\n.. _number:\n\nNumber Protocol\n===============\n\n\n.. c:function:: int PyNumber_Check(PyObject *o)\n\n   Ret"
  },
  {
    "path": "Doc/c-api/objbuffer.rst",
    "chars": 2448,
    "preview": ".. highlight:: c\n\nOld Buffer Protocol\n-------------------\n\n.. deprecated:: 3.0\n\nThese functions were part of the \"old bu"
  },
  {
    "path": "Doc/c-api/object.rst",
    "chars": 15918,
    "preview": ".. highlight:: c\n\n.. _object:\n\nObject Protocol\n===============\n\n\n.. c:var:: PyObject* Py_NotImplemented\n\n   The ``NotImp"
  },
  {
    "path": "Doc/c-api/objimpl.rst",
    "chars": 300,
    "preview": ".. highlight:: c\n\n.. _newtypes:\n\n*****************************\nObject Implementation Support\n***************************"
  },
  {
    "path": "Doc/c-api/refcounting.rst",
    "chars": 5776,
    "preview": ".. highlight:: c\n\n\n.. _countingrefs:\n\n******************\nReference Counting\n******************\n\nThe functions and macros"
  },
  {
    "path": "Doc/c-api/reflection.rst",
    "chars": 1352,
    "preview": ".. highlight:: c\n\n.. _reflection:\n\nReflection\n==========\n\n.. c:function:: PyObject* PyEval_GetBuiltins(void)\n\n   Return "
  },
  {
    "path": "Doc/c-api/sequence.rst",
    "chars": 6778,
    "preview": ".. highlight:: c\n\n.. _sequence:\n\nSequence Protocol\n=================\n\n\n.. c:function:: int PySequence_Check(PyObject *o)"
  },
  {
    "path": "Doc/c-api/set.rst",
    "chars": 6371,
    "preview": ".. highlight:: c\n\n.. _setobjects:\n\nSet Objects\n-----------\n\n.. sectionauthor:: Raymond D. Hettinger <python@rcn.com>\n\n\n."
  },
  {
    "path": "Doc/c-api/slice.rst",
    "chars": 4578,
    "preview": ".. highlight:: c\n\n.. _slice-objects:\n\nSlice Objects\n-------------\n\n\n.. c:var:: PyTypeObject PySlice_Type\n\n   The type ob"
  },
  {
    "path": "Doc/c-api/stable.rst",
    "chars": 6576,
    "preview": ".. highlight:: c\n\n.. _stable:\n\n***************\nC API Stability\n***************\n\nPython's C API is covered by the Backwar"
  },
  {
    "path": "Doc/c-api/structures.rst",
    "chars": 22101,
    "preview": ".. highlight:: c\n\n.. _common-structs:\n\nCommon Object Structures\n========================\n\nThere are a large number of st"
  },
  {
    "path": "Doc/c-api/sys.rst",
    "chars": 17847,
    "preview": ".. highlight:: c\n\n.. _os:\n\nOperating System Utilities\n==========================\n\n.. c:function:: PyObject* PyOS_FSPath("
  },
  {
    "path": "Doc/c-api/tuple.rst",
    "chars": 8693,
    "preview": ".. highlight:: c\n\n.. _tupleobjects:\n\nTuple Objects\n-------------\n\n.. index:: object: tuple\n\n\n.. c:type:: PyTupleObject\n\n"
  },
  {
    "path": "Doc/c-api/type.rst",
    "chars": 14757,
    "preview": ".. highlight:: c\n\n.. _typeobjects:\n\nType Objects\n------------\n\n.. index:: object: type\n\n\n.. c:type:: PyTypeObject\n\n   Th"
  },
  {
    "path": "Doc/c-api/typehints.rst",
    "chars": 1697,
    "preview": ".. highlight:: c\n\n.. _typehintobjects:\n\nObjects for Type Hinting\n------------------------\n\nVarious built-in types for ty"
  },
  {
    "path": "Doc/c-api/typeobj.rst",
    "chars": 130148,
    "preview": ".. highlight:: c\n\n.. _type-structs:\n\nType Objects\n============\n\nPerhaps one of the most important structures of the Pyth"
  },
  {
    "path": "Doc/c-api/unicode.rst",
    "chars": 54961,
    "preview": ".. highlight:: c\n\n.. _unicodeobjects:\n\nUnicode Objects and Codecs\n--------------------------\n\n.. sectionauthor:: Marc-An"
  },
  {
    "path": "Doc/c-api/utilities.rst",
    "chars": 410,
    "preview": ".. highlight:: c\n\n.. _utilities:\n\n*********\nUtilities\n*********\n\nThe functions in this chapter perform various utility t"
  },
  {
    "path": "Doc/c-api/veryhigh.rst",
    "chars": 15800,
    "preview": ".. highlight:: c\n\n\n.. _veryhigh:\n\n*************************\nThe Very High Level Layer\n*************************\n\nThe fun"
  },
  {
    "path": "Doc/c-api/weakref.rst",
    "chars": 2722,
    "preview": ".. highlight:: c\n\n.. _weakrefobjects:\n\nWeak Reference Objects\n----------------------\n\nPython supports *weak references* "
  },
  {
    "path": "Doc/conf.py",
    "chars": 8196,
    "preview": "#\n# Python documentation build configuration file\n#\n# This file is execfile()d with the current directory set to its con"
  },
  {
    "path": "Doc/contents.rst",
    "chars": 515,
    "preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n Python Documentation contents\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\n.. toctree::\n\n   whats"
  },
  {
    "path": "Doc/copyright.rst",
    "chars": 447,
    "preview": "*********\nCopyright\n*********\n\nPython and this documentation is:\n\nCopyright © 2001-2023 Python Software Foundation. All "
  },
  {
    "path": "Doc/distributing/index.rst",
    "chars": 7336,
    "preview": ".. _distributing-index:\n\n###############################\n  Distributing Python Modules\n###############################\n\n"
  },
  {
    "path": "Doc/extending/building.rst",
    "chars": 2127,
    "preview": ".. highlight:: c\n\n.. _building:\n\n*****************************\nBuilding C and C++ Extensions\n***************************"
  },
  {
    "path": "Doc/extending/embedding.rst",
    "chars": 12639,
    "preview": ".. highlight:: c\n\n\n.. _embedding:\n\n***************************************\nEmbedding Python in Another Application\n*****"
  },
  {
    "path": "Doc/extending/extending.rst",
    "chars": 58158,
    "preview": ".. highlight:: c\n\n\n.. _extending-intro:\n\n******************************\nExtending Python with C or C++\n*****************"
  },
  {
    "path": "Doc/extending/index.rst",
    "chars": 2878,
    "preview": ".. _extending-index:\n\n##################################################\n  Extending and Embedding the Python Interprete"
  },
  {
    "path": "Doc/extending/newtypes.rst",
    "chars": 24123,
    "preview": ".. highlight:: c\n\n.. _new-types-topics:\n\n*****************************************\nDefining Extension Types: Assorted To"
  },
  {
    "path": "Doc/extending/newtypes_tutorial.rst",
    "chars": 34074,
    "preview": ".. highlight:: c\n\n.. _defining-new-types:\n\n**********************************\nDefining Extension Types: Tutorial\n*******"
  },
  {
    "path": "Doc/extending/windows.rst",
    "chars": 6399,
    "preview": ".. highlight:: c\n\n\n.. _building-on-windows:\n\n****************************************\nBuilding C and C++ Extensions on W"
  },
  {
    "path": "Doc/faq/design.rst",
    "chars": 33881,
    "preview": "======================\nDesign and History FAQ\n======================\n\n.. only:: html\n\n   .. contents::\n\n\nWhy does Python"
  },
  {
    "path": "Doc/faq/extending.rst",
    "chars": 10886,
    "preview": "=======================\nExtending/Embedding FAQ\n=======================\n\n.. only:: html\n\n   .. contents::\n\n.. highlight:"
  },
  {
    "path": "Doc/faq/general.rst",
    "chars": 20012,
    "preview": ":tocdepth: 2\n\n==================\nGeneral Python FAQ\n==================\n\n.. only:: html\n\n   .. contents::\n\n\nGeneral Infor"
  },
  {
    "path": "Doc/faq/gui.rst",
    "chars": 3026,
    "preview": ":tocdepth: 2\n\n==========================\nGraphic User Interface FAQ\n==========================\n\n.. only:: html\n\n   .. co"
  },
  {
    "path": "Doc/faq/index.rst",
    "chars": 278,
    "preview": ".. _faq-index:\n\n###################################\n  Python Frequently Asked Questions\n################################"
  },
  {
    "path": "Doc/faq/installed.rst",
    "chars": 2332,
    "preview": "=============================================\n\"Why is Python Installed on my Computer?\" FAQ\n============================"
  },
  {
    "path": "Doc/faq/library.rst",
    "chars": 31602,
    "preview": ":tocdepth: 2\n\n=========================\nLibrary and Extension FAQ\n=========================\n\n.. only:: html\n\n   .. conte"
  },
  {
    "path": "Doc/faq/programming.rst",
    "chars": 78511,
    "preview": ":tocdepth: 2\n\n===============\nProgramming FAQ\n===============\n\n.. only:: html\n\n   .. contents::\n\nGeneral Questions\n====="
  },
  {
    "path": "Doc/faq/windows.rst",
    "chars": 12413,
    "preview": ":tocdepth: 2\n\n.. highlight:: none\n\n.. _windows-faq:\n\n=====================\nPython on Windows FAQ\n=====================\n\n"
  },
  {
    "path": "Doc/glossary.rst",
    "chars": 58195,
    "preview": ".. _glossary:\n\n********\nGlossary\n********\n\n.. if you add new entries, keep the alphabetical sorting!\n\n.. glossary::\n\n   "
  },
  {
    "path": "Doc/howto/annotations.rst",
    "chars": 9599,
    "preview": ".. _annotations-howto:\n\n**************************\nAnnotations Best Practices\n**************************\n\n:author: Larry"
  },
  {
    "path": "Doc/howto/argparse.rst",
    "chars": 24471,
    "preview": "*****************\nArgparse Tutorial\n*****************\n\n:author: Tshepang Mbambo\n\n.. _argparse-tutorial:\n\nThis tutorial i"
  },
  {
    "path": "Doc/howto/clinic.rst",
    "chars": 68247,
    "preview": ".. highlight:: c\n\n.. _howto-clinic:\n\n**********************\nArgument Clinic How-To\n**********************\n\n:author: Larr"
  },
  {
    "path": "Doc/howto/cporting.rst",
    "chars": 1006,
    "preview": ".. highlight:: c\n\n.. _cporting-howto:\n\n*************************************\nPorting Extension Modules to Python 3\n*****"
  },
  {
    "path": "Doc/howto/curses.rst",
    "chars": 25221,
    "preview": ".. _curses-howto:\n\n**********************************\n  Curses Programming with Python\n*********************************"
  },
  {
    "path": "Doc/howto/descriptor.rst",
    "chars": 52019,
    "preview": ".. _descriptorhowto:\n\n======================\nDescriptor HowTo Guide\n======================\n\n:Author: Raymond Hettinger\n:"
  },
  {
    "path": "Doc/howto/enum.rst",
    "chars": 43375,
    "preview": "==========\nEnum HOWTO\n==========\n\n.. _enum-basic-tutorial:\n\n.. currentmodule:: enum\n\nAn :class:`Enum` is a set of symbol"
  },
  {
    "path": "Doc/howto/functional.rst",
    "chars": 49465,
    "preview": "********************************\n  Functional Programming HOWTO\n********************************\n\n:Author: A. M. Kuchlin"
  },
  {
    "path": "Doc/howto/index.rst",
    "chars": 735,
    "preview": "***************\n Python HOWTOs\n***************\n\nPython HOWTOs are documents that cover a single, specific topic,\nand att"
  },
  {
    "path": "Doc/howto/instrumentation.rst",
    "chars": 14980,
    "preview": ".. highlight:: shell-session\n\n.. _instrumentation:\n\n===============================================\nInstrumenting CPytho"
  },
  {
    "path": "Doc/howto/ipaddress.rst",
    "chars": 11731,
    "preview": ".. testsetup::\n\n   import ipaddress\n\n.. _ipaddress-howto:\n\n***************************************\nAn introduction to th"
  },
  {
    "path": "Doc/howto/isolating-extensions.rst",
    "chars": 19590,
    "preview": ".. highlight:: c\n\n***************************\nIsolating Extension Modules\n***************************\n\n.. topic:: Abstra"
  },
  {
    "path": "Doc/howto/logging-cookbook.rst",
    "chars": 155461,
    "preview": ".. _logging-cookbook:\n\n================\nLogging Cookbook\n================\n\n:Author: Vinay Sajip <vinay_sajip at red-dove"
  },
  {
    "path": "Doc/howto/logging.rst",
    "chars": 49750,
    "preview": "=============\nLogging HOWTO\n=============\n\n:Author: Vinay Sajip <vinay_sajip at red-dove dot com>\n\n.. _logging-basic-tut"
  },
  {
    "path": "Doc/howto/perf_profiling.rst",
    "chars": 9772,
    "preview": ".. highlight:: shell-session\n\n.. _perf_profiling:\n\n==============================================\nPython support for the"
  },
  {
    "path": "Doc/howto/pyporting.rst",
    "chars": 22656,
    "preview": ".. _pyporting-howto:\n\n*********************************\nPorting Python 2 Code to Python 3\n******************************"
  },
  {
    "path": "Doc/howto/regex.rst",
    "chars": 62567,
    "preview": ".. _regex-howto:\n\n****************************\n  Regular Expression HOWTO\n****************************\n\n:Author: A.M. Ku"
  },
  {
    "path": "Doc/howto/sockets.rst",
    "chars": 18795,
    "preview": ".. _socket-howto:\n\n****************************\n  Socket Programming HOWTO\n****************************\n\n:Author: Gordon"
  },
  {
    "path": "Doc/howto/sorting.rst",
    "chars": 10580,
    "preview": ".. _sortinghowto:\n\nSorting HOW TO\n**************\n\n:Author: Andrew Dalke and Raymond Hettinger\n:Release: 0.1\n\n\nPython lis"
  },
  {
    "path": "Doc/howto/unicode.rst",
    "chars": 31832,
    "preview": ".. _unicode-howto:\n\n*****************\n  Unicode HOWTO\n*****************\n\n:Release: 1.12\n\nThis HOWTO discusses Python's s"
  },
  {
    "path": "Doc/howto/urllib2.rst",
    "chars": 24718,
    "preview": ".. _urllib-howto:\n\n***********************************************************\n  HOWTO Fetch Internet Resources Using Th"
  },
  {
    "path": "Doc/includes/custom.c",
    "chars": 987,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n\ntypedef struct {\n    PyObject_HEAD\n    /* Type-specific fields go here. */"
  },
  {
    "path": "Doc/includes/custom2.c",
    "chars": 3312,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include <stddef.h> /* for offsetof() */\n\ntypedef struct {\n    PyObject_HEA"
  },
  {
    "path": "Doc/includes/custom3.c",
    "chars": 4311,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include <stddef.h> /* for offsetof() */\n\ntypedef struct {\n    PyObject_HEA"
  },
  {
    "path": "Doc/includes/custom4.c",
    "chars": 4686,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include <stddef.h> /* for offsetof() */\n\ntypedef struct {\n    PyObject_HEA"
  },
  {
    "path": "Doc/includes/dbpickle.py",
    "chars": 2863,
    "preview": "# Simple example presenting how persistent ID can be used to pickle\n# external objects by reference.\n\nimport pickle\nimpo"
  },
  {
    "path": "Doc/includes/diff.py",
    "chars": 2233,
    "preview": "\"\"\" Command line interface to difflib.py providing diffs in four formats:\n\n* ndiff:    lists every line and highlights i"
  },
  {
    "path": "Doc/includes/email-alternative.py",
    "chars": 1716,
    "preview": "#!/usr/bin/env python3\n\nimport smtplib\n\nfrom email.message import EmailMessage\nfrom email.headerregistry import Address\n"
  },
  {
    "path": "Doc/includes/email-dir.py",
    "chars": 3068,
    "preview": "#!/usr/bin/env python3\n\n\"\"\"Send the contents of a directory as a MIME message.\"\"\"\n\nimport os\nimport smtplib\n# For guessi"
  },
  {
    "path": "Doc/includes/email-headers.py",
    "chars": 975,
    "preview": "# Import the email modules we'll need\n#from email.parser import BytesParser\nfrom email.parser import Parser\nfrom email.p"
  },
  {
    "path": "Doc/includes/email-mime.py",
    "chars": 848,
    "preview": "# Import smtplib for the actual sending function.\nimport smtplib\n\n# Here are the email package modules we'll need.\nfrom "
  },
  {
    "path": "Doc/includes/email-read-alternative.py",
    "chars": 2906,
    "preview": "import os\nimport sys\nimport tempfile\nimport mimetypes\nimport webbrowser\n\n# Import the email modules we'll need\nfrom emai"
  },
  {
    "path": "Doc/includes/email-simple.py",
    "chars": 585,
    "preview": "# Import smtplib for the actual sending function\nimport smtplib\n\n# Import the email modules we'll need\nfrom email.messag"
  },
  {
    "path": "Doc/includes/email-unpack.py",
    "chars": 1586,
    "preview": "#!/usr/bin/env python3\n\n\"\"\"Unpack a MIME message into a directory of files.\"\"\"\n\nimport os\nimport email\nimport mimetypes\n"
  },
  {
    "path": "Doc/includes/minidom-example.py",
    "chars": 1574,
    "preview": "import xml.dom.minidom\n\ndocument = \"\"\"\\\n<slideshow>\n<title>Demo slideshow</title>\n<slide><title>Slide title</title>\n<poi"
  },
  {
    "path": "Doc/includes/mp_newtype.py",
    "chars": 1940,
    "preview": "from multiprocessing import freeze_support\nfrom multiprocessing.managers import BaseManager, BaseProxy\nimport operator\n\n"
  },
  {
    "path": "Doc/includes/mp_pool.py",
    "chars": 3892,
    "preview": "import multiprocessing\nimport time\nimport random\nimport sys\n\n#\n# Functions used by test code\n#\n\ndef calculate(func, args"
  },
  {
    "path": "Doc/includes/mp_workers.py",
    "chars": 1586,
    "preview": "import time\nimport random\n\nfrom multiprocessing import Process, Queue, current_process, freeze_support\n\n#\n# Function run"
  },
  {
    "path": "Doc/includes/ndiff.py",
    "chars": 3094,
    "preview": "\"\"\"ndiff [-q] file1 file2\n    or\nndiff (-r1 | -r2) < ndiff_output > file1_or_file2\n\nPrint a human-friendly file differen"
  },
  {
    "path": "Doc/includes/run-func.c",
    "chars": 1985,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n\nint\nmain(int argc, char *argv[])\n{\n    PyObject *pName, *pModule, *pFunc;\n"
  },
  {
    "path": "Doc/includes/setup.py",
    "chars": 329,
    "preview": "from distutils.core import setup, Extension\nsetup(name=\"noddy\", version=\"1.0\",\n      ext_modules=[\n         Extension(\"n"
  },
  {
    "path": "Doc/includes/sublist.c",
    "chars": 1591,
    "preview": "#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n\ntypedef struct {\n    PyListObject list;\n    int state;\n} SubListObject;\n\ns"
  },
  {
    "path": "Doc/includes/test.py",
    "chars": 3644,
    "preview": "\"\"\"Test module for the custom examples\n\nCustom 1:\n\n>>> import custom\n>>> c1 = custom.Custom()\n>>> c2 = custom.Custom()\n>"
  },
  {
    "path": "Doc/includes/turtle-star.py",
    "chars": 155,
    "preview": "from turtle import *\ncolor('red', 'yellow')\nbegin_fill()\nwhile True:\n    forward(200)\n    left(170)\n    if abs(pos()) < "
  },
  {
    "path": "Doc/includes/typestruct.h",
    "chars": 2556,
    "preview": "typedef struct _typeobject {\n    PyObject_VAR_HEAD\n    const char *tp_name; /* For printing, in format \"<module>.<name>\""
  },
  {
    "path": "Doc/includes/tzinfo_examples.py",
    "chars": 5861,
    "preview": "from datetime import tzinfo, timedelta, datetime\n\nZERO = timedelta(0)\nHOUR = timedelta(hours=1)\nSECOND = timedelta(secon"
  },
  {
    "path": "Doc/includes/wasm-notavail.rst",
    "chars": 267,
    "preview": ".. include for modules that don't work on WASM\n\n.. availability:: not Emscripten, not WASI.\n\n   This module does not wor"
  },
  {
    "path": "Doc/install/index.rst",
    "chars": 48075,
    "preview": ".. highlight:: none\n\n.. _install-index:\n\n********************************************\n  Installing Python Modules (Legac"
  },
  {
    "path": "Doc/installing/index.rst",
    "chars": 9382,
    "preview": ".. highlight:: none\n\n.. _installing-index:\n\n*************************\nInstalling Python Modules\n************************"
  },
  {
    "path": "Doc/library/2to3.rst",
    "chars": 16855,
    "preview": ".. _2to3-reference:\n\n2to3 --- Automated Python 2 to 3 code translation\n================================================="
  },
  {
    "path": "Doc/library/__future__.rst",
    "chars": 6147,
    "preview": ":mod:`__future__` --- Future statement definitions\n==================================================\n\n.. module:: __fut"
  },
  {
    "path": "Doc/library/__main__.rst",
    "chars": 12623,
    "preview": ":mod:`__main__` --- Top-level code environment\n==============================================\n\n.. module:: __main__\n   :"
  },
  {
    "path": "Doc/library/_thread.rst",
    "chars": 8204,
    "preview": ":mod:`_thread` --- Low-level threading API\n==========================================\n\n.. module:: _thread\n   :synopsis:"
  },
  {
    "path": "Doc/library/abc.rst",
    "chars": 12475,
    "preview": ":mod:`abc` --- Abstract Base Classes\n====================================\n\n.. module:: abc\n   :synopsis: Abstract base c"
  },
  {
    "path": "Doc/library/aifc.rst",
    "chars": 7670,
    "preview": ":mod:`aifc` --- Read and write AIFF and AIFC files\n==================================================\n\n.. module:: aifc\n"
  },
  {
    "path": "Doc/library/allos.rst",
    "chars": 678,
    "preview": ".. _allos:\n\n*********************************\nGeneric Operating System Services\n*********************************\n\nThe m"
  },
  {
    "path": "Doc/library/archiving.rst",
    "chars": 440,
    "preview": ".. _archiving:\n\n******************************\nData Compression and Archiving\n******************************\n\nThe module"
  },
  {
    "path": "Doc/library/argparse.rst",
    "chars": 87794,
    "preview": ":mod:`argparse` --- Parser for command-line options, arguments and sub-commands\n========================================"
  },
  {
    "path": "Doc/library/array.rst",
    "chars": 10609,
    "preview": ":mod:`array` --- Efficient arrays of numeric values\n===================================================\n\n.. module:: arr"
  },
  {
    "path": "Doc/library/ast.rst",
    "chars": 78820,
    "preview": ":mod:`ast` --- Abstract Syntax Trees\n====================================\n\n.. module:: ast\n   :synopsis: Abstract Syntax"
  },
  {
    "path": "Doc/library/asyncio-api-index.rst",
    "chars": 5149,
    "preview": ".. currentmodule:: asyncio\n\n\n====================\nHigh-level API Index\n====================\n\nThis page lists all high-le"
  },
  {
    "path": "Doc/library/asyncio-dev.rst",
    "chars": 7494,
    "preview": ".. currentmodule:: asyncio\n\n.. _asyncio-dev:\n\n=======================\nDeveloping with asyncio\n=======================\n\nA"
  },
  {
    "path": "Doc/library/asyncio-eventloop.rst",
    "chars": 64384,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-event-loop:\n\n==========\nEvent Loop\n==========\n\n**Source code:** :source:`Lib/as"
  },
  {
    "path": "Doc/library/asyncio-exceptions.rst",
    "chars": 1781,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-exceptions:\n\n==========\nExceptions\n==========\n\n**Source code:** :source:`Lib/as"
  },
  {
    "path": "Doc/library/asyncio-extending.rst",
    "chars": 2949,
    "preview": ".. currentmodule:: asyncio\n\n\n=========\nExtending\n=========\n\nThe main direction for :mod:`asyncio` extending is writing c"
  },
  {
    "path": "Doc/library/asyncio-future.rst",
    "chars": 8507,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-futures:\n\n=======\nFutures\n=======\n\n**Source code:** :source:`Lib/asyncio/future"
  },
  {
    "path": "Doc/library/asyncio-llapi-index.rst",
    "chars": 14750,
    "preview": ".. currentmodule:: asyncio\n\n\n===================\nLow-level API Index\n===================\n\nThis page lists all low-level "
  },
  {
    "path": "Doc/library/asyncio-platforms.rst",
    "chars": 3116,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-platform-support:\n\n\n================\nPlatform Support\n================\n\nThe :mo"
  },
  {
    "path": "Doc/library/asyncio-policy.rst",
    "chars": 9437,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-policies:\n\n========\nPolicies\n========\n\nAn event loop policy is a global object\n"
  },
  {
    "path": "Doc/library/asyncio-protocol.rst",
    "chars": 32310,
    "preview": ".. currentmodule:: asyncio\n\n\n.. _asyncio-transports-protocols:\n\n\n========================\nTransports and Protocols\n====="
  },
  {
    "path": "Doc/library/asyncio-queue.rst",
    "chars": 5636,
    "preview": ".. currentmodule:: asyncio\n\n.. _asyncio-queues:\n\n======\nQueues\n======\n\n**Source code:** :source:`Lib/asyncio/queues.py`\n"
  },
  {
    "path": "Doc/library/asyncio-runner.rst",
    "chars": 5531,
    "preview": ".. currentmodule:: asyncio\n\n\n=======\nRunners\n=======\n\n**Source code:** :source:`Lib/asyncio/runners.py`\n\n\nThis section o"
  },
  {
    "path": "Doc/library/asyncio-stream.rst",
    "chars": 15794,
    "preview": ".. currentmodule:: asyncio\n\n.. _asyncio-streams:\n\n=======\nStreams\n=======\n\n**Source code:** :source:`Lib/asyncio/streams"
  },
  {
    "path": "Doc/library/asyncio-subprocess.rst",
    "chars": 11673,
    "preview": ".. currentmodule:: asyncio\n\n.. _asyncio-subprocess:\n\n============\nSubprocesses\n============\n\n**Source code:** :source:`L"
  },
  {
    "path": "Doc/library/asyncio-sync.rst",
    "chars": 12442,
    "preview": ".. currentmodule:: asyncio\n\n.. _asyncio-sync:\n\n==========================\nSynchronization Primitives\n==================="
  },
  {
    "path": "Doc/library/asyncio-task.rst",
    "chars": 40263,
    "preview": ".. currentmodule:: asyncio\n\n\n====================\nCoroutines and Tasks\n====================\n\nThis section outlines high-"
  },
  {
    "path": "Doc/library/asyncio.rst",
    "chars": 2439,
    "preview": ":mod:`asyncio` --- Asynchronous I/O\n===================================\n\n.. module:: asyncio\n   :synopsis: Asynchronous "
  },
  {
    "path": "Doc/library/atexit.rst",
    "chars": 3937,
    "preview": ":mod:`atexit` --- Exit handlers\n===============================\n\n.. module:: atexit\n   :synopsis: Register and execute c"
  },
  {
    "path": "Doc/library/audioop.rst",
    "chars": 10857,
    "preview": ":mod:`audioop` --- Manipulate raw audio data\n============================================\n\n.. module:: audioop\n   :synop"
  },
  {
    "path": "Doc/library/audit_events.rst",
    "chars": 2342,
    "preview": ".. _audit-events:\n\n.. index:: single: audit events\n\nAudit events table\n==================\n\nThis table contains all event"
  },
  {
    "path": "Doc/library/base64.rst",
    "chars": 11221,
    "preview": ":mod:`base64` --- Base16, Base32, Base64, Base85 Data Encodings\n========================================================"
  },
  {
    "path": "Doc/library/bdb.rst",
    "chars": 14885,
    "preview": ":mod:`bdb` --- Debugger framework\n=================================\n\n.. module:: bdb\n   :synopsis: Debugger framework.\n\n"
  },
  {
    "path": "Doc/library/binary.rst",
    "chars": 654,
    "preview": ".. _binaryservices:\n\n********************\nBinary Data Services\n********************\n\nThe modules described in this chapt"
  }
]

// ... and 4180 more files (download for full content)

About this extraction

This page contains the full source code of the colesbury/nogil-3.12 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4380 files (83.1 MB), approximately 22.0M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!