@rowstile/cli-win32-x64 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +5 -0
- package/package.json +23 -0
- package/python/DLLs/_asyncio.pyd +0 -0
- package/python/DLLs/_bz2.pyd +0 -0
- package/python/DLLs/_ctypes.pyd +0 -0
- package/python/DLLs/_ctypes_test.pyd +0 -0
- package/python/DLLs/_decimal.pyd +0 -0
- package/python/DLLs/_elementtree.pyd +0 -0
- package/python/DLLs/_hashlib.pyd +0 -0
- package/python/DLLs/_lzma.pyd +0 -0
- package/python/DLLs/_multiprocessing.pyd +0 -0
- package/python/DLLs/_overlapped.pyd +0 -0
- package/python/DLLs/_queue.pyd +0 -0
- package/python/DLLs/_socket.pyd +0 -0
- package/python/DLLs/_sqlite3.pyd +0 -0
- package/python/DLLs/_ssl.pyd +0 -0
- package/python/DLLs/_testbuffer.pyd +0 -0
- package/python/DLLs/_testcapi.pyd +0 -0
- package/python/DLLs/_testclinic.pyd +0 -0
- package/python/DLLs/_testclinic_limited.pyd +0 -0
- package/python/DLLs/_testconsole.pyd +0 -0
- package/python/DLLs/_testimportmultiple.pyd +0 -0
- package/python/DLLs/_testinternalcapi.pyd +0 -0
- package/python/DLLs/_testlimitedcapi.pyd +0 -0
- package/python/DLLs/_testmultiphase.pyd +0 -0
- package/python/DLLs/_testsinglephase.pyd +0 -0
- package/python/DLLs/_uuid.pyd +0 -0
- package/python/DLLs/_wmi.pyd +0 -0
- package/python/DLLs/_zoneinfo.pyd +0 -0
- package/python/DLLs/libcrypto-3-x64.dll +0 -0
- package/python/DLLs/libffi-8.dll +0 -0
- package/python/DLLs/libssl-3-x64.dll +0 -0
- package/python/DLLs/pyexpat.pyd +0 -0
- package/python/DLLs/select.pyd +0 -0
- package/python/DLLs/sqlite3.dll +0 -0
- package/python/DLLs/unicodedata.pyd +0 -0
- package/python/DLLs/winsound.pyd +0 -0
- package/python/DLLs/zlib1.dll +0 -0
- package/python/LICENSE.txt +445 -0
- package/python/Lib/__future__.py +147 -0
- package/python/Lib/__hello__.py +16 -0
- package/python/Lib/__pycache__/__future__.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_colorize.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_compat_pickle.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_compression.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_markupbase.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_opcode_metadata.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_weakrefset.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ast.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/base64.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/bisect.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/bz2.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/calendar.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/colorsys.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/compileall.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/configparser.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/contextlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/copy.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/copyreg.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/csv.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/dataclasses.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/datetime.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/decimal.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/dis.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/enum.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/filecmp.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/fnmatch.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/fractions.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/functools.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/getpass.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/gettext.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/glob.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/gzip.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/hashlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/heapq.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/hmac.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/inspect.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ipaddress.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/keyword.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/linecache.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/locale.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/lzma.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/mimetypes.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/nturl2path.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/numbers.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/opcode.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/operator.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/optparse.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/pickle.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/pkgutil.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/platform.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/py_compile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/queue.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/quopri.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/random.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/reprlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/selectors.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/shlex.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/shutil.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/signal.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/socket.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/socketserver.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ssl.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/string.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/stringprep.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/struct.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/subprocess.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tarfile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tempfile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/textwrap.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/threading.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/token.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tokenize.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/traceback.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/types.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/typing.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/uuid.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/warnings.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/weakref.cpython-313.pyc +0 -0
- package/python/Lib/_aix_support.py +108 -0
- package/python/Lib/_android_support.py +192 -0
- package/python/Lib/_apple_support.py +66 -0
- package/python/Lib/_collections_abc.py +1187 -0
- package/python/Lib/_colorize.py +119 -0
- package/python/Lib/_compat_pickle.py +251 -0
- package/python/Lib/_compression.py +162 -0
- package/python/Lib/_ios_support.py +71 -0
- package/python/Lib/_markupbase.py +396 -0
- package/python/Lib/_opcode_metadata.py +343 -0
- package/python/Lib/_osx_support.py +579 -0
- package/python/Lib/_py_abc.py +147 -0
- package/python/Lib/_pydatetime.py +2640 -0
- package/python/Lib/_pydecimal.py +6356 -0
- package/python/Lib/_pyio.py +2714 -0
- package/python/Lib/_pylong.py +363 -0
- package/python/Lib/_pyrepl/__init__.py +19 -0
- package/python/Lib/_pyrepl/__main__.py +10 -0
- package/python/Lib/_pyrepl/_minimal_curses.py +68 -0
- package/python/Lib/_pyrepl/_threading_handler.py +74 -0
- package/python/Lib/_pyrepl/base_eventqueue.py +110 -0
- package/python/Lib/_pyrepl/commands.py +492 -0
- package/python/Lib/_pyrepl/completing_reader.py +295 -0
- package/python/Lib/_pyrepl/console.py +229 -0
- package/python/Lib/_pyrepl/curses.py +33 -0
- package/python/Lib/_pyrepl/fancy_termios.py +82 -0
- package/python/Lib/_pyrepl/historical_reader.py +419 -0
- package/python/Lib/_pyrepl/input.py +114 -0
- package/python/Lib/_pyrepl/keymap.py +213 -0
- package/python/Lib/_pyrepl/main.py +59 -0
- package/python/Lib/_pyrepl/mypy.ini +29 -0
- package/python/Lib/_pyrepl/pager.py +175 -0
- package/python/Lib/_pyrepl/reader.py +764 -0
- package/python/Lib/_pyrepl/readline.py +599 -0
- package/python/Lib/_pyrepl/simple_interact.py +180 -0
- package/python/Lib/_pyrepl/trace.py +21 -0
- package/python/Lib/_pyrepl/types.py +10 -0
- package/python/Lib/_pyrepl/unix_console.py +852 -0
- package/python/Lib/_pyrepl/unix_eventqueue.py +76 -0
- package/python/Lib/_pyrepl/utils.py +83 -0
- package/python/Lib/_pyrepl/windows_console.py +687 -0
- package/python/Lib/_pyrepl/windows_eventqueue.py +42 -0
- package/python/Lib/_sitebuiltins.py +91 -0
- package/python/Lib/_strptime.py +800 -0
- package/python/Lib/_threading_local.py +120 -0
- package/python/Lib/_weakrefset.py +205 -0
- package/python/Lib/abc.py +188 -0
- package/python/Lib/antigravity.py +17 -0
- package/python/Lib/argparse.py +2690 -0
- package/python/Lib/ast.py +1865 -0
- package/python/Lib/asyncio/__init__.py +47 -0
- package/python/Lib/asyncio/__main__.py +211 -0
- package/python/Lib/asyncio/base_events.py +2086 -0
- package/python/Lib/asyncio/base_futures.py +67 -0
- package/python/Lib/asyncio/base_subprocess.py +312 -0
- package/python/Lib/asyncio/base_tasks.py +94 -0
- package/python/Lib/asyncio/constants.py +41 -0
- package/python/Lib/asyncio/coroutines.py +109 -0
- package/python/Lib/asyncio/events.py +885 -0
- package/python/Lib/asyncio/exceptions.py +62 -0
- package/python/Lib/asyncio/format_helpers.py +84 -0
- package/python/Lib/asyncio/futures.py +425 -0
- package/python/Lib/asyncio/locks.py +617 -0
- package/python/Lib/asyncio/log.py +7 -0
- package/python/Lib/asyncio/mixins.py +21 -0
- package/python/Lib/asyncio/proactor_events.py +891 -0
- package/python/Lib/asyncio/protocols.py +216 -0
- package/python/Lib/asyncio/queues.py +309 -0
- package/python/Lib/asyncio/runners.py +217 -0
- package/python/Lib/asyncio/selector_events.py +1328 -0
- package/python/Lib/asyncio/sslproto.py +929 -0
- package/python/Lib/asyncio/staggered.py +174 -0
- package/python/Lib/asyncio/streams.py +787 -0
- package/python/Lib/asyncio/subprocess.py +229 -0
- package/python/Lib/asyncio/taskgroups.py +278 -0
- package/python/Lib/asyncio/tasks.py +1121 -0
- package/python/Lib/asyncio/threads.py +26 -0
- package/python/Lib/asyncio/timeouts.py +185 -0
- package/python/Lib/asyncio/transports.py +337 -0
- package/python/Lib/asyncio/trsock.py +98 -0
- package/python/Lib/asyncio/unix_events.py +1550 -0
- package/python/Lib/asyncio/windows_events.py +906 -0
- package/python/Lib/asyncio/windows_utils.py +181 -0
- package/python/Lib/base64.py +628 -0
- package/python/Lib/bdb.py +973 -0
- package/python/Lib/bisect.py +118 -0
- package/python/Lib/bz2.py +352 -0
- package/python/Lib/cProfile.py +197 -0
- package/python/Lib/calendar.py +813 -0
- package/python/Lib/cmd.py +409 -0
- package/python/Lib/code.py +386 -0
- package/python/Lib/codecs.py +1132 -0
- package/python/Lib/codeop.py +155 -0
- package/python/Lib/collections/__init__.py +1603 -0
- package/python/Lib/collections/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/colorsys.py +166 -0
- package/python/Lib/compileall.py +470 -0
- package/python/Lib/concurrent/__init__.py +1 -0
- package/python/Lib/concurrent/futures/__init__.py +54 -0
- package/python/Lib/concurrent/futures/_base.py +660 -0
- package/python/Lib/concurrent/futures/process.py +892 -0
- package/python/Lib/concurrent/futures/thread.py +240 -0
- package/python/Lib/configparser.py +1396 -0
- package/python/Lib/contextlib.py +814 -0
- package/python/Lib/contextvars.py +4 -0
- package/python/Lib/copy.py +306 -0
- package/python/Lib/copyreg.py +217 -0
- package/python/Lib/csv.py +527 -0
- package/python/Lib/ctypes/__init__.py +602 -0
- package/python/Lib/ctypes/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/__pycache__/_endian.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/__pycache__/wintypes.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/_aix.py +327 -0
- package/python/Lib/ctypes/_endian.py +78 -0
- package/python/Lib/ctypes/macholib/README.ctypes +7 -0
- package/python/Lib/ctypes/macholib/__init__.py +9 -0
- package/python/Lib/ctypes/macholib/dyld.py +165 -0
- package/python/Lib/ctypes/macholib/dylib.py +42 -0
- package/python/Lib/ctypes/macholib/fetch_macholib +2 -0
- package/python/Lib/ctypes/macholib/fetch_macholib.bat +1 -0
- package/python/Lib/ctypes/macholib/framework.py +42 -0
- package/python/Lib/ctypes/util.py +387 -0
- package/python/Lib/ctypes/wintypes.py +202 -0
- package/python/Lib/curses/__init__.py +101 -0
- package/python/Lib/curses/ascii.py +99 -0
- package/python/Lib/curses/has_key.py +192 -0
- package/python/Lib/curses/panel.py +6 -0
- package/python/Lib/curses/textpad.py +236 -0
- package/python/Lib/dataclasses.py +1679 -0
- package/python/Lib/datetime.py +9 -0
- package/python/Lib/dbm/__init__.py +194 -0
- package/python/Lib/dbm/dumb.py +319 -0
- package/python/Lib/dbm/gnu.py +3 -0
- package/python/Lib/dbm/ndbm.py +3 -0
- package/python/Lib/dbm/sqlite3.py +144 -0
- package/python/Lib/decimal.py +109 -0
- package/python/Lib/difflib.py +2058 -0
- package/python/Lib/dis.py +1075 -0
- package/python/Lib/doctest.py +2919 -0
- package/python/Lib/email/__init__.py +61 -0
- package/python/Lib/email/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_encoded_words.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_parseaddr.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_policybase.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/base64mime.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/charset.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/encoders.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/errors.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/feedparser.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/header.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/iterators.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/message.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/parser.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/quoprimime.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/utils.cpython-313.pyc +0 -0
- package/python/Lib/email/_encoded_words.py +233 -0
- package/python/Lib/email/_header_value_parser.py +3153 -0
- package/python/Lib/email/_parseaddr.py +563 -0
- package/python/Lib/email/_policybase.py +382 -0
- package/python/Lib/email/architecture.rst +216 -0
- package/python/Lib/email/base64mime.py +115 -0
- package/python/Lib/email/charset.py +396 -0
- package/python/Lib/email/contentmanager.py +254 -0
- package/python/Lib/email/encoders.py +65 -0
- package/python/Lib/email/errors.py +117 -0
- package/python/Lib/email/feedparser.py +536 -0
- package/python/Lib/email/generator.py +530 -0
- package/python/Lib/email/header.py +582 -0
- package/python/Lib/email/headerregistry.py +618 -0
- package/python/Lib/email/iterators.py +68 -0
- package/python/Lib/email/message.py +1217 -0
- package/python/Lib/email/mime/__init__.py +0 -0
- package/python/Lib/email/mime/application.py +37 -0
- package/python/Lib/email/mime/audio.py +97 -0
- package/python/Lib/email/mime/base.py +29 -0
- package/python/Lib/email/mime/image.py +152 -0
- package/python/Lib/email/mime/message.py +33 -0
- package/python/Lib/email/mime/multipart.py +47 -0
- package/python/Lib/email/mime/nonmultipart.py +21 -0
- package/python/Lib/email/mime/text.py +40 -0
- package/python/Lib/email/parser.py +127 -0
- package/python/Lib/email/policy.py +232 -0
- package/python/Lib/email/quoprimime.py +300 -0
- package/python/Lib/email/utils.py +497 -0
- package/python/Lib/encodings/__init__.py +179 -0
- package/python/Lib/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/cp1252.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/cp437.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/hex_codec.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/idna.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
- package/python/Lib/encodings/aliases.py +560 -0
- package/python/Lib/encodings/ascii.py +50 -0
- package/python/Lib/encodings/base64_codec.py +55 -0
- package/python/Lib/encodings/big5.py +39 -0
- package/python/Lib/encodings/big5hkscs.py +39 -0
- package/python/Lib/encodings/bz2_codec.py +78 -0
- package/python/Lib/encodings/charmap.py +69 -0
- package/python/Lib/encodings/cp037.py +307 -0
- package/python/Lib/encodings/cp1006.py +307 -0
- package/python/Lib/encodings/cp1026.py +307 -0
- package/python/Lib/encodings/cp1125.py +698 -0
- package/python/Lib/encodings/cp1140.py +307 -0
- package/python/Lib/encodings/cp1250.py +307 -0
- package/python/Lib/encodings/cp1251.py +307 -0
- package/python/Lib/encodings/cp1252.py +307 -0
- package/python/Lib/encodings/cp1253.py +307 -0
- package/python/Lib/encodings/cp1254.py +307 -0
- package/python/Lib/encodings/cp1255.py +307 -0
- package/python/Lib/encodings/cp1256.py +307 -0
- package/python/Lib/encodings/cp1257.py +307 -0
- package/python/Lib/encodings/cp1258.py +307 -0
- package/python/Lib/encodings/cp273.py +307 -0
- package/python/Lib/encodings/cp424.py +307 -0
- package/python/Lib/encodings/cp437.py +698 -0
- package/python/Lib/encodings/cp500.py +307 -0
- package/python/Lib/encodings/cp720.py +309 -0
- package/python/Lib/encodings/cp737.py +698 -0
- package/python/Lib/encodings/cp775.py +697 -0
- package/python/Lib/encodings/cp850.py +698 -0
- package/python/Lib/encodings/cp852.py +698 -0
- package/python/Lib/encodings/cp855.py +698 -0
- package/python/Lib/encodings/cp856.py +307 -0
- package/python/Lib/encodings/cp857.py +694 -0
- package/python/Lib/encodings/cp858.py +698 -0
- package/python/Lib/encodings/cp860.py +698 -0
- package/python/Lib/encodings/cp861.py +698 -0
- package/python/Lib/encodings/cp862.py +698 -0
- package/python/Lib/encodings/cp863.py +698 -0
- package/python/Lib/encodings/cp864.py +690 -0
- package/python/Lib/encodings/cp865.py +698 -0
- package/python/Lib/encodings/cp866.py +698 -0
- package/python/Lib/encodings/cp869.py +689 -0
- package/python/Lib/encodings/cp874.py +307 -0
- package/python/Lib/encodings/cp875.py +307 -0
- package/python/Lib/encodings/cp932.py +39 -0
- package/python/Lib/encodings/cp949.py +39 -0
- package/python/Lib/encodings/cp950.py +39 -0
- package/python/Lib/encodings/euc_jis_2004.py +39 -0
- package/python/Lib/encodings/euc_jisx0213.py +39 -0
- package/python/Lib/encodings/euc_jp.py +39 -0
- package/python/Lib/encodings/euc_kr.py +39 -0
- package/python/Lib/encodings/gb18030.py +39 -0
- package/python/Lib/encodings/gb2312.py +39 -0
- package/python/Lib/encodings/gbk.py +39 -0
- package/python/Lib/encodings/hex_codec.py +55 -0
- package/python/Lib/encodings/hp_roman8.py +314 -0
- package/python/Lib/encodings/hz.py +39 -0
- package/python/Lib/encodings/idna.py +387 -0
- package/python/Lib/encodings/iso2022_jp.py +39 -0
- package/python/Lib/encodings/iso2022_jp_1.py +39 -0
- package/python/Lib/encodings/iso2022_jp_2.py +39 -0
- package/python/Lib/encodings/iso2022_jp_2004.py +39 -0
- package/python/Lib/encodings/iso2022_jp_3.py +39 -0
- package/python/Lib/encodings/iso2022_jp_ext.py +39 -0
- package/python/Lib/encodings/iso2022_kr.py +39 -0
- package/python/Lib/encodings/iso8859_1.py +307 -0
- package/python/Lib/encodings/iso8859_10.py +307 -0
- package/python/Lib/encodings/iso8859_11.py +307 -0
- package/python/Lib/encodings/iso8859_13.py +307 -0
- package/python/Lib/encodings/iso8859_14.py +307 -0
- package/python/Lib/encodings/iso8859_15.py +307 -0
- package/python/Lib/encodings/iso8859_16.py +307 -0
- package/python/Lib/encodings/iso8859_2.py +307 -0
- package/python/Lib/encodings/iso8859_3.py +307 -0
- package/python/Lib/encodings/iso8859_4.py +307 -0
- package/python/Lib/encodings/iso8859_5.py +307 -0
- package/python/Lib/encodings/iso8859_6.py +307 -0
- package/python/Lib/encodings/iso8859_7.py +307 -0
- package/python/Lib/encodings/iso8859_8.py +307 -0
- package/python/Lib/encodings/iso8859_9.py +307 -0
- package/python/Lib/encodings/johab.py +39 -0
- package/python/Lib/encodings/koi8_r.py +307 -0
- package/python/Lib/encodings/koi8_t.py +308 -0
- package/python/Lib/encodings/koi8_u.py +307 -0
- package/python/Lib/encodings/kz1048.py +307 -0
- package/python/Lib/encodings/latin_1.py +50 -0
- package/python/Lib/encodings/mac_arabic.py +698 -0
- package/python/Lib/encodings/mac_croatian.py +307 -0
- package/python/Lib/encodings/mac_cyrillic.py +307 -0
- package/python/Lib/encodings/mac_farsi.py +307 -0
- package/python/Lib/encodings/mac_greek.py +307 -0
- package/python/Lib/encodings/mac_iceland.py +307 -0
- package/python/Lib/encodings/mac_latin2.py +312 -0
- package/python/Lib/encodings/mac_roman.py +307 -0
- package/python/Lib/encodings/mac_romanian.py +307 -0
- package/python/Lib/encodings/mac_turkish.py +307 -0
- package/python/Lib/encodings/mbcs.py +47 -0
- package/python/Lib/encodings/oem.py +41 -0
- package/python/Lib/encodings/palmos.py +308 -0
- package/python/Lib/encodings/ptcp154.py +312 -0
- package/python/Lib/encodings/punycode.py +253 -0
- package/python/Lib/encodings/quopri_codec.py +56 -0
- package/python/Lib/encodings/raw_unicode_escape.py +46 -0
- package/python/Lib/encodings/rot_13.py +113 -0
- package/python/Lib/encodings/shift_jis.py +39 -0
- package/python/Lib/encodings/shift_jis_2004.py +39 -0
- package/python/Lib/encodings/shift_jisx0213.py +39 -0
- package/python/Lib/encodings/tis_620.py +307 -0
- package/python/Lib/encodings/undefined.py +49 -0
- package/python/Lib/encodings/unicode_escape.py +46 -0
- package/python/Lib/encodings/utf_16.py +155 -0
- package/python/Lib/encodings/utf_16_be.py +42 -0
- package/python/Lib/encodings/utf_16_le.py +42 -0
- package/python/Lib/encodings/utf_32.py +150 -0
- package/python/Lib/encodings/utf_32_be.py +37 -0
- package/python/Lib/encodings/utf_32_le.py +37 -0
- package/python/Lib/encodings/utf_7.py +38 -0
- package/python/Lib/encodings/utf_8.py +42 -0
- package/python/Lib/encodings/utf_8_sig.py +130 -0
- package/python/Lib/encodings/uu_codec.py +103 -0
- package/python/Lib/encodings/zlib_codec.py +77 -0
- package/python/Lib/enum.py +2183 -0
- package/python/Lib/filecmp.py +320 -0
- package/python/Lib/fileinput.py +442 -0
- package/python/Lib/fnmatch.py +192 -0
- package/python/Lib/fractions.py +1043 -0
- package/python/Lib/ftplib.py +975 -0
- package/python/Lib/functools.py +1036 -0
- package/python/Lib/genericpath.py +200 -0
- package/python/Lib/getopt.py +215 -0
- package/python/Lib/getpass.py +192 -0
- package/python/Lib/gettext.py +657 -0
- package/python/Lib/glob.py +572 -0
- package/python/Lib/graphlib.py +250 -0
- package/python/Lib/gzip.py +693 -0
- package/python/Lib/hashlib.py +255 -0
- package/python/Lib/heapq.py +603 -0
- package/python/Lib/hmac.py +220 -0
- package/python/Lib/html/__init__.py +132 -0
- package/python/Lib/html/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/html/__pycache__/entities.cpython-313.pyc +0 -0
- package/python/Lib/html/__pycache__/parser.cpython-313.pyc +0 -0
- package/python/Lib/html/entities.py +2513 -0
- package/python/Lib/html/parser.py +583 -0
- package/python/Lib/http/__init__.py +202 -0
- package/python/Lib/http/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/client.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/cookiejar.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/cookies.cpython-313.pyc +0 -0
- package/python/Lib/http/client.py +1598 -0
- package/python/Lib/http/cookiejar.py +2122 -0
- package/python/Lib/http/cookies.py +635 -0
- package/python/Lib/http/server.py +1355 -0
- package/python/Lib/imaplib.py +1769 -0
- package/python/Lib/importlib/__init__.py +136 -0
- package/python/Lib/importlib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/_abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/readers.cpython-313.pyc +0 -0
- package/python/Lib/importlib/_abc.py +39 -0
- package/python/Lib/importlib/_bootstrap.py +1559 -0
- package/python/Lib/importlib/_bootstrap_external.py +1826 -0
- package/python/Lib/importlib/abc.py +243 -0
- package/python/Lib/importlib/machinery.py +21 -0
- package/python/Lib/importlib/metadata/__init__.py +1093 -0
- package/python/Lib/importlib/metadata/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_adapters.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_collections.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_functools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_itertools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_meta.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_text.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/_adapters.py +89 -0
- package/python/Lib/importlib/metadata/_collections.py +30 -0
- package/python/Lib/importlib/metadata/_functools.py +104 -0
- package/python/Lib/importlib/metadata/_itertools.py +73 -0
- package/python/Lib/importlib/metadata/_meta.py +67 -0
- package/python/Lib/importlib/metadata/_text.py +99 -0
- package/python/Lib/importlib/metadata/diagnose.py +21 -0
- package/python/Lib/importlib/readers.py +12 -0
- package/python/Lib/importlib/resources/__init__.py +43 -0
- package/python/Lib/importlib/resources/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_adapters.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_common.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_functional.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_itertools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/readers.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/_adapters.py +168 -0
- package/python/Lib/importlib/resources/_common.py +211 -0
- package/python/Lib/importlib/resources/_functional.py +81 -0
- package/python/Lib/importlib/resources/_itertools.py +38 -0
- package/python/Lib/importlib/resources/abc.py +173 -0
- package/python/Lib/importlib/resources/readers.py +203 -0
- package/python/Lib/importlib/resources/simple.py +106 -0
- package/python/Lib/importlib/simple.py +14 -0
- package/python/Lib/importlib/util.py +274 -0
- package/python/Lib/inspect.py +3479 -0
- package/python/Lib/io.py +99 -0
- package/python/Lib/ipaddress.py +2440 -0
- package/python/Lib/json/__init__.py +365 -0
- package/python/Lib/json/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/decoder.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/encoder.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/scanner.cpython-313.pyc +0 -0
- package/python/Lib/json/decoder.py +364 -0
- package/python/Lib/json/encoder.py +446 -0
- package/python/Lib/json/scanner.py +73 -0
- package/python/Lib/json/tool.py +90 -0
- package/python/Lib/keyword.py +64 -0
- package/python/Lib/linecache.py +236 -0
- package/python/Lib/locale.py +1987 -0
- package/python/Lib/logging/__init__.py +2330 -0
- package/python/Lib/logging/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/logging/__pycache__/config.cpython-313.pyc +0 -0
- package/python/Lib/logging/__pycache__/handlers.cpython-313.pyc +0 -0
- package/python/Lib/logging/config.py +1080 -0
- package/python/Lib/logging/handlers.py +1629 -0
- package/python/Lib/lzma.py +364 -0
- package/python/Lib/mailbox.py +2219 -0
- package/python/Lib/mimetypes.py +679 -0
- package/python/Lib/modulefinder.py +671 -0
- package/python/Lib/multiprocessing/__init__.py +37 -0
- package/python/Lib/multiprocessing/connection.py +1216 -0
- package/python/Lib/multiprocessing/context.py +383 -0
- package/python/Lib/multiprocessing/dummy/__init__.py +126 -0
- package/python/Lib/multiprocessing/dummy/connection.py +75 -0
- package/python/Lib/multiprocessing/forkserver.py +373 -0
- package/python/Lib/multiprocessing/heap.py +337 -0
- package/python/Lib/multiprocessing/managers.py +1397 -0
- package/python/Lib/multiprocessing/pool.py +957 -0
- package/python/Lib/multiprocessing/popen_fork.py +97 -0
- package/python/Lib/multiprocessing/popen_forkserver.py +74 -0
- package/python/Lib/multiprocessing/popen_spawn_posix.py +76 -0
- package/python/Lib/multiprocessing/popen_spawn_win32.py +147 -0
- package/python/Lib/multiprocessing/process.py +436 -0
- package/python/Lib/multiprocessing/queues.py +399 -0
- package/python/Lib/multiprocessing/reduction.py +281 -0
- package/python/Lib/multiprocessing/resource_sharer.py +154 -0
- package/python/Lib/multiprocessing/resource_tracker.py +499 -0
- package/python/Lib/multiprocessing/shared_memory.py +544 -0
- package/python/Lib/multiprocessing/sharedctypes.py +240 -0
- package/python/Lib/multiprocessing/spawn.py +307 -0
- package/python/Lib/multiprocessing/synchronize.py +404 -0
- package/python/Lib/multiprocessing/util.py +562 -0
- package/python/Lib/netrc.py +199 -0
- package/python/Lib/ntpath.py +872 -0
- package/python/Lib/nturl2path.py +69 -0
- package/python/Lib/numbers.py +427 -0
- package/python/Lib/opcode.py +115 -0
- package/python/Lib/operator.py +467 -0
- package/python/Lib/optparse.py +1681 -0
- package/python/Lib/os.py +1184 -0
- package/python/Lib/pathlib/__init__.py +12 -0
- package/python/Lib/pathlib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/__pycache__/_abc.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/__pycache__/_local.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/_abc.py +930 -0
- package/python/Lib/pathlib/_local.py +861 -0
- package/python/Lib/pdb.py +2550 -0
- package/python/Lib/pickle.py +1860 -0
- package/python/Lib/pickletools.py +2904 -0
- package/python/Lib/pkgutil.py +529 -0
- package/python/Lib/platform.py +1454 -0
- package/python/Lib/plistlib.py +948 -0
- package/python/Lib/poplib.py +477 -0
- package/python/Lib/posixpath.py +578 -0
- package/python/Lib/pprint.py +658 -0
- package/python/Lib/profile.py +616 -0
- package/python/Lib/pstats.py +778 -0
- package/python/Lib/pty.py +211 -0
- package/python/Lib/py_compile.py +212 -0
- package/python/Lib/pyclbr.py +314 -0
- package/python/Lib/pydoc.py +2861 -0
- package/python/Lib/queue.py +383 -0
- package/python/Lib/quopri.py +237 -0
- package/python/Lib/random.py +1078 -0
- package/python/Lib/re/__init__.py +428 -0
- package/python/Lib/re/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_casefix.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_compiler.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_constants.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_parser.cpython-313.pyc +0 -0
- package/python/Lib/re/_casefix.py +106 -0
- package/python/Lib/re/_compiler.py +768 -0
- package/python/Lib/re/_constants.py +222 -0
- package/python/Lib/re/_parser.py +1081 -0
- package/python/Lib/reprlib.py +230 -0
- package/python/Lib/rlcompleter.py +222 -0
- package/python/Lib/runpy.py +326 -0
- package/python/Lib/sched.py +167 -0
- package/python/Lib/secrets.py +71 -0
- package/python/Lib/selectors.py +603 -0
- package/python/Lib/shelve.py +250 -0
- package/python/Lib/shlex.py +345 -0
- package/python/Lib/shutil.py +1569 -0
- package/python/Lib/signal.py +94 -0
- package/python/Lib/site.py +773 -0
- package/python/Lib/smtplib.py +1123 -0
- package/python/Lib/socket.py +988 -0
- package/python/Lib/socketserver.py +863 -0
- package/python/Lib/sqlite3/__init__.py +70 -0
- package/python/Lib/sqlite3/__main__.py +139 -0
- package/python/Lib/sqlite3/dbapi2.py +108 -0
- package/python/Lib/sqlite3/dump.py +118 -0
- package/python/Lib/sre_compile.py +7 -0
- package/python/Lib/sre_constants.py +7 -0
- package/python/Lib/sre_parse.py +7 -0
- package/python/Lib/ssl.py +1529 -0
- package/python/Lib/stat.py +212 -0
- package/python/Lib/statistics.py +1817 -0
- package/python/Lib/string.py +314 -0
- package/python/Lib/stringprep.py +272 -0
- package/python/Lib/struct.py +15 -0
- package/python/Lib/subprocess.py +2258 -0
- package/python/Lib/symtable.py +414 -0
- package/python/Lib/sysconfig/__init__.py +734 -0
- package/python/Lib/sysconfig/__main__.py +248 -0
- package/python/Lib/sysconfig/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/tabnanny.py +340 -0
- package/python/Lib/tarfile.py +3136 -0
- package/python/Lib/tempfile.py +958 -0
- package/python/Lib/textwrap.py +497 -0
- package/python/Lib/this.py +28 -0
- package/python/Lib/threading.py +1602 -0
- package/python/Lib/timeit.py +381 -0
- package/python/Lib/token.py +141 -0
- package/python/Lib/tokenize.py +592 -0
- package/python/Lib/tomllib/__init__.py +10 -0
- package/python/Lib/tomllib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_parser.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_re.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_types.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/_parser.py +703 -0
- package/python/Lib/tomllib/_re.py +107 -0
- package/python/Lib/tomllib/_types.py +10 -0
- package/python/Lib/tomllib/mypy.ini +15 -0
- package/python/Lib/trace.py +754 -0
- package/python/Lib/traceback.py +1639 -0
- package/python/Lib/tracemalloc.py +560 -0
- package/python/Lib/tty.py +73 -0
- package/python/Lib/types.py +346 -0
- package/python/Lib/typing.py +3846 -0
- package/python/Lib/unittest/__init__.py +80 -0
- package/python/Lib/unittest/__main__.py +18 -0
- package/python/Lib/unittest/_log.py +86 -0
- package/python/Lib/unittest/async_case.py +146 -0
- package/python/Lib/unittest/case.py +1478 -0
- package/python/Lib/unittest/loader.py +460 -0
- package/python/Lib/unittest/main.py +280 -0
- package/python/Lib/unittest/mock.py +3189 -0
- package/python/Lib/unittest/result.py +256 -0
- package/python/Lib/unittest/runner.py +292 -0
- package/python/Lib/unittest/signals.py +71 -0
- package/python/Lib/unittest/suite.py +379 -0
- package/python/Lib/unittest/util.py +170 -0
- package/python/Lib/urllib/__init__.py +0 -0
- package/python/Lib/urllib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/error.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/parse.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/request.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/response.cpython-313.pyc +0 -0
- package/python/Lib/urllib/error.py +74 -0
- package/python/Lib/urllib/parse.py +1264 -0
- package/python/Lib/urllib/request.py +2796 -0
- package/python/Lib/urllib/response.py +84 -0
- package/python/Lib/urllib/robotparser.py +363 -0
- package/python/Lib/uuid.py +784 -0
- package/python/Lib/warnings.py +735 -0
- package/python/Lib/wave.py +665 -0
- package/python/Lib/weakref.py +674 -0
- package/python/Lib/webbrowser.py +724 -0
- package/python/Lib/wsgiref/__init__.py +25 -0
- package/python/Lib/wsgiref/handlers.py +575 -0
- package/python/Lib/wsgiref/headers.py +192 -0
- package/python/Lib/wsgiref/simple_server.py +161 -0
- package/python/Lib/wsgiref/types.py +54 -0
- package/python/Lib/wsgiref/util.py +159 -0
- package/python/Lib/wsgiref/validate.py +438 -0
- package/python/Lib/xml/__init__.py +20 -0
- package/python/Lib/xml/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xml/dom/NodeFilter.py +27 -0
- package/python/Lib/xml/dom/__init__.py +140 -0
- package/python/Lib/xml/dom/domreg.py +99 -0
- package/python/Lib/xml/dom/expatbuilder.py +962 -0
- package/python/Lib/xml/dom/minicompat.py +109 -0
- package/python/Lib/xml/dom/minidom.py +2024 -0
- package/python/Lib/xml/dom/pulldom.py +336 -0
- package/python/Lib/xml/dom/xmlbuilder.py +389 -0
- package/python/Lib/xml/etree/ElementInclude.py +186 -0
- package/python/Lib/xml/etree/ElementPath.py +430 -0
- package/python/Lib/xml/etree/ElementTree.py +2116 -0
- package/python/Lib/xml/etree/__init__.py +33 -0
- package/python/Lib/xml/etree/cElementTree.py +3 -0
- package/python/Lib/xml/parsers/__init__.py +8 -0
- package/python/Lib/xml/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xml/parsers/__pycache__/expat.cpython-313.pyc +0 -0
- package/python/Lib/xml/parsers/expat.py +8 -0
- package/python/Lib/xml/sax/__init__.py +94 -0
- package/python/Lib/xml/sax/_exceptions.py +127 -0
- package/python/Lib/xml/sax/expatreader.py +454 -0
- package/python/Lib/xml/sax/handler.py +387 -0
- package/python/Lib/xml/sax/saxutils.py +369 -0
- package/python/Lib/xml/sax/xmlreader.py +378 -0
- package/python/Lib/xmlrpc/__init__.py +1 -0
- package/python/Lib/xmlrpc/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xmlrpc/__pycache__/client.cpython-313.pyc +0 -0
- package/python/Lib/xmlrpc/client.py +1503 -0
- package/python/Lib/xmlrpc/server.py +1002 -0
- package/python/Lib/zipapp.py +229 -0
- package/python/Lib/zipfile/__init__.py +2391 -0
- package/python/Lib/zipfile/__main__.py +4 -0
- package/python/Lib/zipfile/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/__init__.py +452 -0
- package/python/Lib/zipfile/_path/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/__pycache__/glob.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/glob.py +113 -0
- package/python/Lib/zipimport.py +803 -0
- package/python/Lib/zoneinfo/__init__.py +34 -0
- package/python/Lib/zoneinfo/_common.py +172 -0
- package/python/Lib/zoneinfo/_tzpath.py +189 -0
- package/python/Lib/zoneinfo/_zoneinfo.py +779 -0
- package/python/licenses/LICENSE.bdb.txt +126 -0
- package/python/licenses/LICENSE.bzip2.txt +37 -0
- package/python/licenses/LICENSE.cpython.txt +771 -0
- package/python/licenses/LICENSE.expat.txt +21 -0
- package/python/licenses/LICENSE.libX11.txt +942 -0
- package/python/licenses/LICENSE.libXau.txt +21 -0
- package/python/licenses/LICENSE.libedit.txt +29 -0
- package/python/licenses/LICENSE.libffi.txt +21 -0
- package/python/licenses/LICENSE.liblzma.txt +13 -0
- package/python/licenses/LICENSE.libuuid.txt +27 -0
- package/python/licenses/LICENSE.libxcb.txt +30 -0
- package/python/licenses/LICENSE.mpdecimal.txt +24 -0
- package/python/licenses/LICENSE.ncurses.txt +29 -0
- package/python/licenses/LICENSE.openssl-1.1.txt +124 -0
- package/python/licenses/LICENSE.openssl-3.txt +177 -0
- package/python/licenses/LICENSE.sqlite.txt +23 -0
- package/python/licenses/LICENSE.tcl.txt +40 -0
- package/python/licenses/LICENSE.tix.txt +54 -0
- package/python/licenses/LICENSE.zlib.txt +21 -0
- package/python/python.exe +0 -0
- package/python/python3.dll +0 -0
- package/python/python313.dll +0 -0
- package/python/pythonw.exe +0 -0
- package/python/vcruntime140.dll +0 -0
- package/python/vcruntime140_1.dll +0 -0
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
"""create and manipulate C data types in Python"""
|
|
2
|
+
|
|
3
|
+
import os as _os
|
|
4
|
+
import sys as _sys
|
|
5
|
+
import sysconfig as _sysconfig
|
|
6
|
+
import types as _types
|
|
7
|
+
|
|
8
|
+
__version__ = "1.1.0"
|
|
9
|
+
|
|
10
|
+
from _ctypes import Union, Structure, Array
|
|
11
|
+
from _ctypes import _Pointer
|
|
12
|
+
from _ctypes import CFuncPtr as _CFuncPtr
|
|
13
|
+
from _ctypes import __version__ as _ctypes_version
|
|
14
|
+
from _ctypes import RTLD_LOCAL, RTLD_GLOBAL
|
|
15
|
+
from _ctypes import ArgumentError
|
|
16
|
+
from _ctypes import SIZEOF_TIME_T
|
|
17
|
+
|
|
18
|
+
from struct import calcsize as _calcsize
|
|
19
|
+
|
|
20
|
+
if __version__ != _ctypes_version:
|
|
21
|
+
raise Exception("Version number mismatch", __version__, _ctypes_version)
|
|
22
|
+
|
|
23
|
+
if _os.name == "nt":
|
|
24
|
+
from _ctypes import FormatError
|
|
25
|
+
|
|
26
|
+
DEFAULT_MODE = RTLD_LOCAL
|
|
27
|
+
if _os.name == "posix" and _sys.platform == "darwin":
|
|
28
|
+
# On OS X 10.3, we use RTLD_GLOBAL as default mode
|
|
29
|
+
# because RTLD_LOCAL does not work at least on some
|
|
30
|
+
# libraries. OS X 10.3 is Darwin 7, so we check for
|
|
31
|
+
# that.
|
|
32
|
+
|
|
33
|
+
if int(_os.uname().release.split('.')[0]) < 8:
|
|
34
|
+
DEFAULT_MODE = RTLD_GLOBAL
|
|
35
|
+
|
|
36
|
+
from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \
|
|
37
|
+
FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI, \
|
|
38
|
+
FUNCFLAG_USE_ERRNO as _FUNCFLAG_USE_ERRNO, \
|
|
39
|
+
FUNCFLAG_USE_LASTERROR as _FUNCFLAG_USE_LASTERROR
|
|
40
|
+
|
|
41
|
+
# WINOLEAPI -> HRESULT
|
|
42
|
+
# WINOLEAPI_(type)
|
|
43
|
+
#
|
|
44
|
+
# STDMETHODCALLTYPE
|
|
45
|
+
#
|
|
46
|
+
# STDMETHOD(name)
|
|
47
|
+
# STDMETHOD_(type, name)
|
|
48
|
+
#
|
|
49
|
+
# STDAPICALLTYPE
|
|
50
|
+
|
|
51
|
+
def create_string_buffer(init, size=None):
|
|
52
|
+
"""create_string_buffer(aBytes) -> character array
|
|
53
|
+
create_string_buffer(anInteger) -> character array
|
|
54
|
+
create_string_buffer(aBytes, anInteger) -> character array
|
|
55
|
+
"""
|
|
56
|
+
if isinstance(init, bytes):
|
|
57
|
+
if size is None:
|
|
58
|
+
size = len(init)+1
|
|
59
|
+
_sys.audit("ctypes.create_string_buffer", init, size)
|
|
60
|
+
buftype = c_char * size
|
|
61
|
+
buf = buftype()
|
|
62
|
+
buf.value = init
|
|
63
|
+
return buf
|
|
64
|
+
elif isinstance(init, int):
|
|
65
|
+
_sys.audit("ctypes.create_string_buffer", None, init)
|
|
66
|
+
buftype = c_char * init
|
|
67
|
+
buf = buftype()
|
|
68
|
+
return buf
|
|
69
|
+
raise TypeError(init)
|
|
70
|
+
|
|
71
|
+
# Alias to create_string_buffer() for backward compatibility
|
|
72
|
+
c_buffer = create_string_buffer
|
|
73
|
+
|
|
74
|
+
_c_functype_cache = {}
|
|
75
|
+
def CFUNCTYPE(restype, *argtypes, **kw):
|
|
76
|
+
"""CFUNCTYPE(restype, *argtypes,
|
|
77
|
+
use_errno=False, use_last_error=False) -> function prototype.
|
|
78
|
+
|
|
79
|
+
restype: the result type
|
|
80
|
+
argtypes: a sequence specifying the argument types
|
|
81
|
+
|
|
82
|
+
The function prototype can be called in different ways to create a
|
|
83
|
+
callable object:
|
|
84
|
+
|
|
85
|
+
prototype(integer address) -> foreign function
|
|
86
|
+
prototype(callable) -> create and return a C callable function from callable
|
|
87
|
+
prototype(integer index, method name[, paramflags]) -> foreign function calling a COM method
|
|
88
|
+
prototype((ordinal number, dll object)[, paramflags]) -> foreign function exported by ordinal
|
|
89
|
+
prototype((function name, dll object)[, paramflags]) -> foreign function exported by name
|
|
90
|
+
"""
|
|
91
|
+
flags = _FUNCFLAG_CDECL
|
|
92
|
+
if kw.pop("use_errno", False):
|
|
93
|
+
flags |= _FUNCFLAG_USE_ERRNO
|
|
94
|
+
if kw.pop("use_last_error", False):
|
|
95
|
+
flags |= _FUNCFLAG_USE_LASTERROR
|
|
96
|
+
if kw:
|
|
97
|
+
raise ValueError("unexpected keyword argument(s) %s" % kw.keys())
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
return _c_functype_cache[(restype, argtypes, flags)]
|
|
101
|
+
except KeyError:
|
|
102
|
+
pass
|
|
103
|
+
|
|
104
|
+
class CFunctionType(_CFuncPtr):
|
|
105
|
+
_argtypes_ = argtypes
|
|
106
|
+
_restype_ = restype
|
|
107
|
+
_flags_ = flags
|
|
108
|
+
_c_functype_cache[(restype, argtypes, flags)] = CFunctionType
|
|
109
|
+
return CFunctionType
|
|
110
|
+
|
|
111
|
+
if _os.name == "nt":
|
|
112
|
+
from _ctypes import LoadLibrary as _LoadLibrary
|
|
113
|
+
from _ctypes import FUNCFLAG_STDCALL as _FUNCFLAG_STDCALL
|
|
114
|
+
|
|
115
|
+
_win_functype_cache = {}
|
|
116
|
+
def WINFUNCTYPE(restype, *argtypes, **kw):
|
|
117
|
+
# docstring set later (very similar to CFUNCTYPE.__doc__)
|
|
118
|
+
flags = _FUNCFLAG_STDCALL
|
|
119
|
+
if kw.pop("use_errno", False):
|
|
120
|
+
flags |= _FUNCFLAG_USE_ERRNO
|
|
121
|
+
if kw.pop("use_last_error", False):
|
|
122
|
+
flags |= _FUNCFLAG_USE_LASTERROR
|
|
123
|
+
if kw:
|
|
124
|
+
raise ValueError("unexpected keyword argument(s) %s" % kw.keys())
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
return _win_functype_cache[(restype, argtypes, flags)]
|
|
128
|
+
except KeyError:
|
|
129
|
+
pass
|
|
130
|
+
|
|
131
|
+
class WinFunctionType(_CFuncPtr):
|
|
132
|
+
_argtypes_ = argtypes
|
|
133
|
+
_restype_ = restype
|
|
134
|
+
_flags_ = flags
|
|
135
|
+
_win_functype_cache[(restype, argtypes, flags)] = WinFunctionType
|
|
136
|
+
return WinFunctionType
|
|
137
|
+
if WINFUNCTYPE.__doc__:
|
|
138
|
+
WINFUNCTYPE.__doc__ = CFUNCTYPE.__doc__.replace("CFUNCTYPE", "WINFUNCTYPE")
|
|
139
|
+
|
|
140
|
+
elif _os.name == "posix":
|
|
141
|
+
from _ctypes import dlopen as _dlopen
|
|
142
|
+
|
|
143
|
+
from _ctypes import sizeof, byref, addressof, alignment, resize
|
|
144
|
+
from _ctypes import get_errno, set_errno
|
|
145
|
+
from _ctypes import _SimpleCData
|
|
146
|
+
|
|
147
|
+
def _check_size(typ, typecode=None):
|
|
148
|
+
# Check if sizeof(ctypes_type) against struct.calcsize. This
|
|
149
|
+
# should protect somewhat against a misconfigured libffi.
|
|
150
|
+
from struct import calcsize
|
|
151
|
+
if typecode is None:
|
|
152
|
+
# Most _type_ codes are the same as used in struct
|
|
153
|
+
typecode = typ._type_
|
|
154
|
+
actual, required = sizeof(typ), calcsize(typecode)
|
|
155
|
+
if actual != required:
|
|
156
|
+
raise SystemError("sizeof(%s) wrong: %d instead of %d" % \
|
|
157
|
+
(typ, actual, required))
|
|
158
|
+
|
|
159
|
+
class py_object(_SimpleCData):
|
|
160
|
+
_type_ = "O"
|
|
161
|
+
def __repr__(self):
|
|
162
|
+
try:
|
|
163
|
+
return super().__repr__()
|
|
164
|
+
except ValueError:
|
|
165
|
+
return "%s(<NULL>)" % type(self).__name__
|
|
166
|
+
_check_size(py_object, "P")
|
|
167
|
+
|
|
168
|
+
class c_short(_SimpleCData):
|
|
169
|
+
_type_ = "h"
|
|
170
|
+
_check_size(c_short)
|
|
171
|
+
|
|
172
|
+
class c_ushort(_SimpleCData):
|
|
173
|
+
_type_ = "H"
|
|
174
|
+
_check_size(c_ushort)
|
|
175
|
+
|
|
176
|
+
class c_long(_SimpleCData):
|
|
177
|
+
_type_ = "l"
|
|
178
|
+
_check_size(c_long)
|
|
179
|
+
|
|
180
|
+
class c_ulong(_SimpleCData):
|
|
181
|
+
_type_ = "L"
|
|
182
|
+
_check_size(c_ulong)
|
|
183
|
+
|
|
184
|
+
if _calcsize("i") == _calcsize("l"):
|
|
185
|
+
# if int and long have the same size, make c_int an alias for c_long
|
|
186
|
+
c_int = c_long
|
|
187
|
+
c_uint = c_ulong
|
|
188
|
+
else:
|
|
189
|
+
class c_int(_SimpleCData):
|
|
190
|
+
_type_ = "i"
|
|
191
|
+
_check_size(c_int)
|
|
192
|
+
|
|
193
|
+
class c_uint(_SimpleCData):
|
|
194
|
+
_type_ = "I"
|
|
195
|
+
_check_size(c_uint)
|
|
196
|
+
|
|
197
|
+
class c_float(_SimpleCData):
|
|
198
|
+
_type_ = "f"
|
|
199
|
+
_check_size(c_float)
|
|
200
|
+
|
|
201
|
+
class c_double(_SimpleCData):
|
|
202
|
+
_type_ = "d"
|
|
203
|
+
_check_size(c_double)
|
|
204
|
+
|
|
205
|
+
class c_longdouble(_SimpleCData):
|
|
206
|
+
_type_ = "g"
|
|
207
|
+
if sizeof(c_longdouble) == sizeof(c_double):
|
|
208
|
+
c_longdouble = c_double
|
|
209
|
+
|
|
210
|
+
if _calcsize("l") == _calcsize("q"):
|
|
211
|
+
# if long and long long have the same size, make c_longlong an alias for c_long
|
|
212
|
+
c_longlong = c_long
|
|
213
|
+
c_ulonglong = c_ulong
|
|
214
|
+
else:
|
|
215
|
+
class c_longlong(_SimpleCData):
|
|
216
|
+
_type_ = "q"
|
|
217
|
+
_check_size(c_longlong)
|
|
218
|
+
|
|
219
|
+
class c_ulonglong(_SimpleCData):
|
|
220
|
+
_type_ = "Q"
|
|
221
|
+
## def from_param(cls, val):
|
|
222
|
+
## return ('d', float(val), val)
|
|
223
|
+
## from_param = classmethod(from_param)
|
|
224
|
+
_check_size(c_ulonglong)
|
|
225
|
+
|
|
226
|
+
class c_ubyte(_SimpleCData):
|
|
227
|
+
_type_ = "B"
|
|
228
|
+
c_ubyte.__ctype_le__ = c_ubyte.__ctype_be__ = c_ubyte
|
|
229
|
+
# backward compatibility:
|
|
230
|
+
##c_uchar = c_ubyte
|
|
231
|
+
_check_size(c_ubyte)
|
|
232
|
+
|
|
233
|
+
class c_byte(_SimpleCData):
|
|
234
|
+
_type_ = "b"
|
|
235
|
+
c_byte.__ctype_le__ = c_byte.__ctype_be__ = c_byte
|
|
236
|
+
_check_size(c_byte)
|
|
237
|
+
|
|
238
|
+
class c_char(_SimpleCData):
|
|
239
|
+
_type_ = "c"
|
|
240
|
+
c_char.__ctype_le__ = c_char.__ctype_be__ = c_char
|
|
241
|
+
_check_size(c_char)
|
|
242
|
+
|
|
243
|
+
class c_char_p(_SimpleCData):
|
|
244
|
+
_type_ = "z"
|
|
245
|
+
def __repr__(self):
|
|
246
|
+
return "%s(%s)" % (self.__class__.__name__, c_void_p.from_buffer(self).value)
|
|
247
|
+
_check_size(c_char_p, "P")
|
|
248
|
+
|
|
249
|
+
class c_void_p(_SimpleCData):
|
|
250
|
+
_type_ = "P"
|
|
251
|
+
c_voidp = c_void_p # backwards compatibility (to a bug)
|
|
252
|
+
_check_size(c_void_p)
|
|
253
|
+
|
|
254
|
+
class c_bool(_SimpleCData):
|
|
255
|
+
_type_ = "?"
|
|
256
|
+
|
|
257
|
+
from _ctypes import POINTER, pointer, _pointer_type_cache
|
|
258
|
+
|
|
259
|
+
class c_wchar_p(_SimpleCData):
|
|
260
|
+
_type_ = "Z"
|
|
261
|
+
def __repr__(self):
|
|
262
|
+
return "%s(%s)" % (self.__class__.__name__, c_void_p.from_buffer(self).value)
|
|
263
|
+
|
|
264
|
+
class c_wchar(_SimpleCData):
|
|
265
|
+
_type_ = "u"
|
|
266
|
+
|
|
267
|
+
def _reset_cache():
|
|
268
|
+
_pointer_type_cache.clear()
|
|
269
|
+
_c_functype_cache.clear()
|
|
270
|
+
if _os.name == "nt":
|
|
271
|
+
_win_functype_cache.clear()
|
|
272
|
+
# _SimpleCData.c_wchar_p_from_param
|
|
273
|
+
POINTER(c_wchar).from_param = c_wchar_p.from_param
|
|
274
|
+
# _SimpleCData.c_char_p_from_param
|
|
275
|
+
POINTER(c_char).from_param = c_char_p.from_param
|
|
276
|
+
_pointer_type_cache[None] = c_void_p
|
|
277
|
+
|
|
278
|
+
def create_unicode_buffer(init, size=None):
|
|
279
|
+
"""create_unicode_buffer(aString) -> character array
|
|
280
|
+
create_unicode_buffer(anInteger) -> character array
|
|
281
|
+
create_unicode_buffer(aString, anInteger) -> character array
|
|
282
|
+
"""
|
|
283
|
+
if isinstance(init, str):
|
|
284
|
+
if size is None:
|
|
285
|
+
if sizeof(c_wchar) == 2:
|
|
286
|
+
# UTF-16 requires a surrogate pair (2 wchar_t) for non-BMP
|
|
287
|
+
# characters (outside [U+0000; U+FFFF] range). +1 for trailing
|
|
288
|
+
# NUL character.
|
|
289
|
+
size = sum(2 if ord(c) > 0xFFFF else 1 for c in init) + 1
|
|
290
|
+
else:
|
|
291
|
+
# 32-bit wchar_t (1 wchar_t per Unicode character). +1 for
|
|
292
|
+
# trailing NUL character.
|
|
293
|
+
size = len(init) + 1
|
|
294
|
+
_sys.audit("ctypes.create_unicode_buffer", init, size)
|
|
295
|
+
buftype = c_wchar * size
|
|
296
|
+
buf = buftype()
|
|
297
|
+
buf.value = init
|
|
298
|
+
return buf
|
|
299
|
+
elif isinstance(init, int):
|
|
300
|
+
_sys.audit("ctypes.create_unicode_buffer", None, init)
|
|
301
|
+
buftype = c_wchar * init
|
|
302
|
+
buf = buftype()
|
|
303
|
+
return buf
|
|
304
|
+
raise TypeError(init)
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
def SetPointerType(pointer, cls):
|
|
308
|
+
import warnings
|
|
309
|
+
warnings._deprecated("ctypes.SetPointerType", remove=(3, 15))
|
|
310
|
+
if _pointer_type_cache.get(cls, None) is not None:
|
|
311
|
+
raise RuntimeError("This type already exists in the cache")
|
|
312
|
+
if id(pointer) not in _pointer_type_cache:
|
|
313
|
+
raise RuntimeError("What's this???")
|
|
314
|
+
pointer.set_type(cls)
|
|
315
|
+
_pointer_type_cache[cls] = pointer
|
|
316
|
+
del _pointer_type_cache[id(pointer)]
|
|
317
|
+
|
|
318
|
+
def ARRAY(typ, len):
|
|
319
|
+
return typ * len
|
|
320
|
+
|
|
321
|
+
################################################################
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
class CDLL(object):
|
|
325
|
+
"""An instance of this class represents a loaded dll/shared
|
|
326
|
+
library, exporting functions using the standard C calling
|
|
327
|
+
convention (named 'cdecl' on Windows).
|
|
328
|
+
|
|
329
|
+
The exported functions can be accessed as attributes, or by
|
|
330
|
+
indexing with the function name. Examples:
|
|
331
|
+
|
|
332
|
+
<obj>.qsort -> callable object
|
|
333
|
+
<obj>['qsort'] -> callable object
|
|
334
|
+
|
|
335
|
+
Calling the functions releases the Python GIL during the call and
|
|
336
|
+
reacquires it afterwards.
|
|
337
|
+
"""
|
|
338
|
+
_func_flags_ = _FUNCFLAG_CDECL
|
|
339
|
+
_func_restype_ = c_int
|
|
340
|
+
# default values for repr
|
|
341
|
+
_name = '<uninitialized>'
|
|
342
|
+
_handle = 0
|
|
343
|
+
_FuncPtr = None
|
|
344
|
+
|
|
345
|
+
def __init__(self, name, mode=DEFAULT_MODE, handle=None,
|
|
346
|
+
use_errno=False,
|
|
347
|
+
use_last_error=False,
|
|
348
|
+
winmode=None):
|
|
349
|
+
class _FuncPtr(_CFuncPtr):
|
|
350
|
+
_flags_ = self._func_flags_
|
|
351
|
+
_restype_ = self._func_restype_
|
|
352
|
+
if use_errno:
|
|
353
|
+
_flags_ |= _FUNCFLAG_USE_ERRNO
|
|
354
|
+
if use_last_error:
|
|
355
|
+
_flags_ |= _FUNCFLAG_USE_LASTERROR
|
|
356
|
+
|
|
357
|
+
self._FuncPtr = _FuncPtr
|
|
358
|
+
if name:
|
|
359
|
+
name = _os.fspath(name)
|
|
360
|
+
|
|
361
|
+
self._handle = self._load_library(name, mode, handle, winmode)
|
|
362
|
+
|
|
363
|
+
if _os.name == "nt":
|
|
364
|
+
def _load_library(self, name, mode, handle, winmode):
|
|
365
|
+
if winmode is None:
|
|
366
|
+
import nt as _nt
|
|
367
|
+
winmode = _nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
|
|
368
|
+
# WINAPI LoadLibrary searches for a DLL if the given name
|
|
369
|
+
# is not fully qualified with an explicit drive. For POSIX
|
|
370
|
+
# compatibility, and because the DLL search path no longer
|
|
371
|
+
# contains the working directory, begin by fully resolving
|
|
372
|
+
# any name that contains a path separator.
|
|
373
|
+
if name is not None and ('/' in name or '\\' in name):
|
|
374
|
+
name = _nt._getfullpathname(name)
|
|
375
|
+
winmode |= _nt._LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR
|
|
376
|
+
self._name = name
|
|
377
|
+
if handle is not None:
|
|
378
|
+
return handle
|
|
379
|
+
return _LoadLibrary(self._name, winmode)
|
|
380
|
+
|
|
381
|
+
else:
|
|
382
|
+
def _load_library(self, name, mode, handle, winmode):
|
|
383
|
+
# If the filename that has been provided is an iOS/tvOS/watchOS
|
|
384
|
+
# .fwork file, dereference the location to the true origin of the
|
|
385
|
+
# binary.
|
|
386
|
+
if name and name.endswith(".fwork"):
|
|
387
|
+
with open(name) as f:
|
|
388
|
+
name = _os.path.join(
|
|
389
|
+
_os.path.dirname(_sys.executable),
|
|
390
|
+
f.read().strip()
|
|
391
|
+
)
|
|
392
|
+
if _sys.platform.startswith("aix"):
|
|
393
|
+
"""When the name contains ".a(" and ends with ")",
|
|
394
|
+
e.g., "libFOO.a(libFOO.so)" - this is taken to be an
|
|
395
|
+
archive(member) syntax for dlopen(), and the mode is adjusted.
|
|
396
|
+
Otherwise, name is presented to dlopen() as a file argument.
|
|
397
|
+
"""
|
|
398
|
+
if name and name.endswith(")") and ".a(" in name:
|
|
399
|
+
mode |= _os.RTLD_MEMBER | _os.RTLD_NOW
|
|
400
|
+
self._name = name
|
|
401
|
+
if handle is not None:
|
|
402
|
+
return handle
|
|
403
|
+
return _dlopen(name, mode)
|
|
404
|
+
|
|
405
|
+
def __repr__(self):
|
|
406
|
+
return "<%s '%s', handle %x at %#x>" % \
|
|
407
|
+
(self.__class__.__name__, self._name,
|
|
408
|
+
(self._handle & (_sys.maxsize*2 + 1)),
|
|
409
|
+
id(self) & (_sys.maxsize*2 + 1))
|
|
410
|
+
|
|
411
|
+
def __getattr__(self, name):
|
|
412
|
+
if name.startswith('__') and name.endswith('__'):
|
|
413
|
+
raise AttributeError(name)
|
|
414
|
+
func = self.__getitem__(name)
|
|
415
|
+
setattr(self, name, func)
|
|
416
|
+
return func
|
|
417
|
+
|
|
418
|
+
def __getitem__(self, name_or_ordinal):
|
|
419
|
+
func = self._FuncPtr((name_or_ordinal, self))
|
|
420
|
+
if not isinstance(name_or_ordinal, int):
|
|
421
|
+
func.__name__ = name_or_ordinal
|
|
422
|
+
return func
|
|
423
|
+
|
|
424
|
+
class PyDLL(CDLL):
|
|
425
|
+
"""This class represents the Python library itself. It allows
|
|
426
|
+
accessing Python API functions. The GIL is not released, and
|
|
427
|
+
Python exceptions are handled correctly.
|
|
428
|
+
"""
|
|
429
|
+
_func_flags_ = _FUNCFLAG_CDECL | _FUNCFLAG_PYTHONAPI
|
|
430
|
+
|
|
431
|
+
if _os.name == "nt":
|
|
432
|
+
|
|
433
|
+
class WinDLL(CDLL):
|
|
434
|
+
"""This class represents a dll exporting functions using the
|
|
435
|
+
Windows stdcall calling convention.
|
|
436
|
+
"""
|
|
437
|
+
_func_flags_ = _FUNCFLAG_STDCALL
|
|
438
|
+
|
|
439
|
+
# XXX Hm, what about HRESULT as normal parameter?
|
|
440
|
+
# Mustn't it derive from c_long then?
|
|
441
|
+
from _ctypes import _check_HRESULT, _SimpleCData
|
|
442
|
+
class HRESULT(_SimpleCData):
|
|
443
|
+
_type_ = "l"
|
|
444
|
+
# _check_retval_ is called with the function's result when it
|
|
445
|
+
# is used as restype. It checks for the FAILED bit, and
|
|
446
|
+
# raises an OSError if it is set.
|
|
447
|
+
#
|
|
448
|
+
# The _check_retval_ method is implemented in C, so that the
|
|
449
|
+
# method definition itself is not included in the traceback
|
|
450
|
+
# when it raises an error - that is what we want (and Python
|
|
451
|
+
# doesn't have a way to raise an exception in the caller's
|
|
452
|
+
# frame).
|
|
453
|
+
_check_retval_ = _check_HRESULT
|
|
454
|
+
|
|
455
|
+
class OleDLL(CDLL):
|
|
456
|
+
"""This class represents a dll exporting functions using the
|
|
457
|
+
Windows stdcall calling convention, and returning HRESULT.
|
|
458
|
+
HRESULT error values are automatically raised as OSError
|
|
459
|
+
exceptions.
|
|
460
|
+
"""
|
|
461
|
+
_func_flags_ = _FUNCFLAG_STDCALL
|
|
462
|
+
_func_restype_ = HRESULT
|
|
463
|
+
|
|
464
|
+
class LibraryLoader(object):
|
|
465
|
+
def __init__(self, dlltype):
|
|
466
|
+
self._dlltype = dlltype
|
|
467
|
+
|
|
468
|
+
def __getattr__(self, name):
|
|
469
|
+
if name[0] == '_':
|
|
470
|
+
raise AttributeError(name)
|
|
471
|
+
try:
|
|
472
|
+
dll = self._dlltype(name)
|
|
473
|
+
except OSError:
|
|
474
|
+
raise AttributeError(name)
|
|
475
|
+
setattr(self, name, dll)
|
|
476
|
+
return dll
|
|
477
|
+
|
|
478
|
+
def __getitem__(self, name):
|
|
479
|
+
return getattr(self, name)
|
|
480
|
+
|
|
481
|
+
def LoadLibrary(self, name):
|
|
482
|
+
return self._dlltype(name)
|
|
483
|
+
|
|
484
|
+
__class_getitem__ = classmethod(_types.GenericAlias)
|
|
485
|
+
|
|
486
|
+
cdll = LibraryLoader(CDLL)
|
|
487
|
+
pydll = LibraryLoader(PyDLL)
|
|
488
|
+
|
|
489
|
+
if _os.name == "nt":
|
|
490
|
+
pythonapi = PyDLL("python dll", None, _sys.dllhandle)
|
|
491
|
+
elif _sys.platform in ["android", "cygwin"]:
|
|
492
|
+
# These are Unix-like platforms which use a dynamically-linked libpython.
|
|
493
|
+
pythonapi = PyDLL(_sysconfig.get_config_var("LDLIBRARY"))
|
|
494
|
+
else:
|
|
495
|
+
pythonapi = PyDLL(None)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
if _os.name == "nt":
|
|
499
|
+
windll = LibraryLoader(WinDLL)
|
|
500
|
+
oledll = LibraryLoader(OleDLL)
|
|
501
|
+
|
|
502
|
+
GetLastError = windll.kernel32.GetLastError
|
|
503
|
+
from _ctypes import get_last_error, set_last_error
|
|
504
|
+
|
|
505
|
+
def WinError(code=None, descr=None):
|
|
506
|
+
if code is None:
|
|
507
|
+
code = GetLastError()
|
|
508
|
+
if descr is None:
|
|
509
|
+
descr = FormatError(code).strip()
|
|
510
|
+
return OSError(None, descr, None, code)
|
|
511
|
+
|
|
512
|
+
if sizeof(c_uint) == sizeof(c_void_p):
|
|
513
|
+
c_size_t = c_uint
|
|
514
|
+
c_ssize_t = c_int
|
|
515
|
+
elif sizeof(c_ulong) == sizeof(c_void_p):
|
|
516
|
+
c_size_t = c_ulong
|
|
517
|
+
c_ssize_t = c_long
|
|
518
|
+
elif sizeof(c_ulonglong) == sizeof(c_void_p):
|
|
519
|
+
c_size_t = c_ulonglong
|
|
520
|
+
c_ssize_t = c_longlong
|
|
521
|
+
|
|
522
|
+
# functions
|
|
523
|
+
|
|
524
|
+
from _ctypes import _memmove_addr, _memset_addr, _string_at_addr, _cast_addr
|
|
525
|
+
|
|
526
|
+
## void *memmove(void *, const void *, size_t);
|
|
527
|
+
memmove = CFUNCTYPE(c_void_p, c_void_p, c_void_p, c_size_t)(_memmove_addr)
|
|
528
|
+
|
|
529
|
+
## void *memset(void *, int, size_t)
|
|
530
|
+
memset = CFUNCTYPE(c_void_p, c_void_p, c_int, c_size_t)(_memset_addr)
|
|
531
|
+
|
|
532
|
+
def PYFUNCTYPE(restype, *argtypes):
|
|
533
|
+
class CFunctionType(_CFuncPtr):
|
|
534
|
+
_argtypes_ = argtypes
|
|
535
|
+
_restype_ = restype
|
|
536
|
+
_flags_ = _FUNCFLAG_CDECL | _FUNCFLAG_PYTHONAPI
|
|
537
|
+
return CFunctionType
|
|
538
|
+
|
|
539
|
+
_cast = PYFUNCTYPE(py_object, c_void_p, py_object, py_object)(_cast_addr)
|
|
540
|
+
def cast(obj, typ):
|
|
541
|
+
return _cast(obj, obj, typ)
|
|
542
|
+
|
|
543
|
+
_string_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
|
|
544
|
+
def string_at(ptr, size=-1):
|
|
545
|
+
"""string_at(ptr[, size]) -> string
|
|
546
|
+
|
|
547
|
+
Return the byte string at void *ptr."""
|
|
548
|
+
return _string_at(ptr, size)
|
|
549
|
+
|
|
550
|
+
try:
|
|
551
|
+
from _ctypes import _wstring_at_addr
|
|
552
|
+
except ImportError:
|
|
553
|
+
pass
|
|
554
|
+
else:
|
|
555
|
+
_wstring_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_wstring_at_addr)
|
|
556
|
+
def wstring_at(ptr, size=-1):
|
|
557
|
+
"""wstring_at(ptr[, size]) -> string
|
|
558
|
+
|
|
559
|
+
Return the wide-character string at void *ptr."""
|
|
560
|
+
return _wstring_at(ptr, size)
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
if _os.name == "nt": # COM stuff
|
|
564
|
+
def DllGetClassObject(rclsid, riid, ppv):
|
|
565
|
+
try:
|
|
566
|
+
ccom = __import__("comtypes.server.inprocserver", globals(), locals(), ['*'])
|
|
567
|
+
except ImportError:
|
|
568
|
+
return -2147221231 # CLASS_E_CLASSNOTAVAILABLE
|
|
569
|
+
else:
|
|
570
|
+
return ccom.DllGetClassObject(rclsid, riid, ppv)
|
|
571
|
+
|
|
572
|
+
def DllCanUnloadNow():
|
|
573
|
+
try:
|
|
574
|
+
ccom = __import__("comtypes.server.inprocserver", globals(), locals(), ['*'])
|
|
575
|
+
except ImportError:
|
|
576
|
+
return 0 # S_OK
|
|
577
|
+
return ccom.DllCanUnloadNow()
|
|
578
|
+
|
|
579
|
+
from ctypes._endian import BigEndianStructure, LittleEndianStructure
|
|
580
|
+
from ctypes._endian import BigEndianUnion, LittleEndianUnion
|
|
581
|
+
|
|
582
|
+
# Fill in specifically-sized types
|
|
583
|
+
c_int8 = c_byte
|
|
584
|
+
c_uint8 = c_ubyte
|
|
585
|
+
for kind in [c_short, c_int, c_long, c_longlong]:
|
|
586
|
+
if sizeof(kind) == 2: c_int16 = kind
|
|
587
|
+
elif sizeof(kind) == 4: c_int32 = kind
|
|
588
|
+
elif sizeof(kind) == 8: c_int64 = kind
|
|
589
|
+
for kind in [c_ushort, c_uint, c_ulong, c_ulonglong]:
|
|
590
|
+
if sizeof(kind) == 2: c_uint16 = kind
|
|
591
|
+
elif sizeof(kind) == 4: c_uint32 = kind
|
|
592
|
+
elif sizeof(kind) == 8: c_uint64 = kind
|
|
593
|
+
del(kind)
|
|
594
|
+
|
|
595
|
+
if SIZEOF_TIME_T == 8:
|
|
596
|
+
c_time_t = c_int64
|
|
597
|
+
elif SIZEOF_TIME_T == 4:
|
|
598
|
+
c_time_t = c_int32
|
|
599
|
+
else:
|
|
600
|
+
raise SystemError(f"Unexpected sizeof(time_t): {SIZEOF_TIME_T=}")
|
|
601
|
+
|
|
602
|
+
_reset_cache()
|
|
Binary file
|
|
Binary file
|
|
Binary file
|