@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
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright (C) 2001-2006 Python Software Foundation
|
|
2
|
+
# Author: Keith Dart
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Class representing application/* type MIME documents."""
|
|
6
|
+
|
|
7
|
+
__all__ = ["MIMEApplication"]
|
|
8
|
+
|
|
9
|
+
from email import encoders
|
|
10
|
+
from email.mime.nonmultipart import MIMENonMultipart
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MIMEApplication(MIMENonMultipart):
|
|
14
|
+
"""Class for generating application/* MIME documents."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, _data, _subtype='octet-stream',
|
|
17
|
+
_encoder=encoders.encode_base64, *, policy=None, **_params):
|
|
18
|
+
"""Create an application/* type MIME document.
|
|
19
|
+
|
|
20
|
+
_data contains the bytes for the raw application data.
|
|
21
|
+
|
|
22
|
+
_subtype is the MIME content type subtype, defaulting to
|
|
23
|
+
'octet-stream'.
|
|
24
|
+
|
|
25
|
+
_encoder is a function which will perform the actual encoding for
|
|
26
|
+
transport of the application data, defaulting to base64 encoding.
|
|
27
|
+
|
|
28
|
+
Any additional keyword arguments are passed to the base class
|
|
29
|
+
constructor, which turns them into parameters on the Content-Type
|
|
30
|
+
header.
|
|
31
|
+
"""
|
|
32
|
+
if _subtype is None:
|
|
33
|
+
raise TypeError('Invalid application MIME subtype')
|
|
34
|
+
MIMENonMultipart.__init__(self, 'application', _subtype, policy=policy,
|
|
35
|
+
**_params)
|
|
36
|
+
self.set_payload(_data)
|
|
37
|
+
_encoder(self)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Copyright (C) 2001-2007 Python Software Foundation
|
|
2
|
+
# Author: Anthony Baxter
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Class representing audio/* type MIME documents."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEAudio']
|
|
8
|
+
|
|
9
|
+
from email import encoders
|
|
10
|
+
from email.mime.nonmultipart import MIMENonMultipart
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MIMEAudio(MIMENonMultipart):
|
|
14
|
+
"""Class for generating audio/* MIME documents."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, _audiodata, _subtype=None,
|
|
17
|
+
_encoder=encoders.encode_base64, *, policy=None, **_params):
|
|
18
|
+
"""Create an audio/* type MIME document.
|
|
19
|
+
|
|
20
|
+
_audiodata contains the bytes for the raw audio data. If this data
|
|
21
|
+
can be decoded as au, wav, aiff, or aifc, then the
|
|
22
|
+
subtype will be automatically included in the Content-Type header.
|
|
23
|
+
Otherwise, you can specify the specific audio subtype via the
|
|
24
|
+
_subtype parameter. If _subtype is not given, and no subtype can be
|
|
25
|
+
guessed, a TypeError is raised.
|
|
26
|
+
|
|
27
|
+
_encoder is a function which will perform the actual encoding for
|
|
28
|
+
transport of the image data. It takes one argument, which is this
|
|
29
|
+
Image instance. It should use get_payload() and set_payload() to
|
|
30
|
+
change the payload to the encoded form. It should also add any
|
|
31
|
+
Content-Transfer-Encoding or other headers to the message as
|
|
32
|
+
necessary. The default encoding is Base64.
|
|
33
|
+
|
|
34
|
+
Any additional keyword arguments are passed to the base class
|
|
35
|
+
constructor, which turns them into parameters on the Content-Type
|
|
36
|
+
header.
|
|
37
|
+
"""
|
|
38
|
+
if _subtype is None:
|
|
39
|
+
_subtype = _what(_audiodata)
|
|
40
|
+
if _subtype is None:
|
|
41
|
+
raise TypeError('Could not find audio MIME subtype')
|
|
42
|
+
MIMENonMultipart.__init__(self, 'audio', _subtype, policy=policy,
|
|
43
|
+
**_params)
|
|
44
|
+
self.set_payload(_audiodata)
|
|
45
|
+
_encoder(self)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
_rules = []
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Originally from the sndhdr module.
|
|
52
|
+
#
|
|
53
|
+
# There are others in sndhdr that don't have MIME types. :(
|
|
54
|
+
# Additional ones to be added to sndhdr? midi, mp3, realaudio, wma??
|
|
55
|
+
def _what(data):
|
|
56
|
+
# Try to identify a sound file type.
|
|
57
|
+
#
|
|
58
|
+
# sndhdr.what() had a pretty cruddy interface, unfortunately. This is why
|
|
59
|
+
# we re-do it here. It would be easier to reverse engineer the Unix 'file'
|
|
60
|
+
# command and use the standard 'magic' file, as shipped with a modern Unix.
|
|
61
|
+
for testfn in _rules:
|
|
62
|
+
if res := testfn(data):
|
|
63
|
+
return res
|
|
64
|
+
else:
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def rule(rulefunc):
|
|
69
|
+
_rules.append(rulefunc)
|
|
70
|
+
return rulefunc
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@rule
|
|
74
|
+
def _aiff(h):
|
|
75
|
+
if not h.startswith(b'FORM'):
|
|
76
|
+
return None
|
|
77
|
+
if h[8:12] in {b'AIFC', b'AIFF'}:
|
|
78
|
+
return 'x-aiff'
|
|
79
|
+
else:
|
|
80
|
+
return None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
@rule
|
|
84
|
+
def _au(h):
|
|
85
|
+
if h.startswith(b'.snd'):
|
|
86
|
+
return 'basic'
|
|
87
|
+
else:
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@rule
|
|
92
|
+
def _wav(h):
|
|
93
|
+
# 'RIFF' <len> 'WAVE' 'fmt ' <len>
|
|
94
|
+
if not h.startswith(b'RIFF') or h[8:12] != b'WAVE' or h[12:16] != b'fmt ':
|
|
95
|
+
return None
|
|
96
|
+
else:
|
|
97
|
+
return "x-wav"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Copyright (C) 2001-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Base class for MIME specializations."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEBase']
|
|
8
|
+
|
|
9
|
+
import email.policy
|
|
10
|
+
|
|
11
|
+
from email import message
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class MIMEBase(message.Message):
|
|
15
|
+
"""Base class for MIME specializations."""
|
|
16
|
+
|
|
17
|
+
def __init__(self, _maintype, _subtype, *, policy=None, **_params):
|
|
18
|
+
"""This constructor adds a Content-Type: and a MIME-Version: header.
|
|
19
|
+
|
|
20
|
+
The Content-Type: header is taken from the _maintype and _subtype
|
|
21
|
+
arguments. Additional parameters for this header are taken from the
|
|
22
|
+
keyword arguments.
|
|
23
|
+
"""
|
|
24
|
+
if policy is None:
|
|
25
|
+
policy = email.policy.compat32
|
|
26
|
+
message.Message.__init__(self, policy=policy)
|
|
27
|
+
ctype = '%s/%s' % (_maintype, _subtype)
|
|
28
|
+
self.add_header('Content-Type', ctype, **_params)
|
|
29
|
+
self['MIME-Version'] = '1.0'
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Copyright (C) 2001-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Class representing image/* type MIME documents."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEImage']
|
|
8
|
+
|
|
9
|
+
from email import encoders
|
|
10
|
+
from email.mime.nonmultipart import MIMENonMultipart
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MIMEImage(MIMENonMultipart):
|
|
14
|
+
"""Class for generating image/* type MIME documents."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, _imagedata, _subtype=None,
|
|
17
|
+
_encoder=encoders.encode_base64, *, policy=None, **_params):
|
|
18
|
+
"""Create an image/* type MIME document.
|
|
19
|
+
|
|
20
|
+
_imagedata contains the bytes for the raw image data. If the data
|
|
21
|
+
type can be detected (jpeg, png, gif, tiff, rgb, pbm, pgm, ppm,
|
|
22
|
+
rast, xbm, bmp, webp, and exr attempted), then the subtype will be
|
|
23
|
+
automatically included in the Content-Type header. Otherwise, you can
|
|
24
|
+
specify the specific image subtype via the _subtype parameter.
|
|
25
|
+
|
|
26
|
+
_encoder is a function which will perform the actual encoding for
|
|
27
|
+
transport of the image data. It takes one argument, which is this
|
|
28
|
+
Image instance. It should use get_payload() and set_payload() to
|
|
29
|
+
change the payload to the encoded form. It should also add any
|
|
30
|
+
Content-Transfer-Encoding or other headers to the message as
|
|
31
|
+
necessary. The default encoding is Base64.
|
|
32
|
+
|
|
33
|
+
Any additional keyword arguments are passed to the base class
|
|
34
|
+
constructor, which turns them into parameters on the Content-Type
|
|
35
|
+
header.
|
|
36
|
+
"""
|
|
37
|
+
_subtype = _what(_imagedata) if _subtype is None else _subtype
|
|
38
|
+
if _subtype is None:
|
|
39
|
+
raise TypeError('Could not guess image MIME subtype')
|
|
40
|
+
MIMENonMultipart.__init__(self, 'image', _subtype, policy=policy,
|
|
41
|
+
**_params)
|
|
42
|
+
self.set_payload(_imagedata)
|
|
43
|
+
_encoder(self)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
_rules = []
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Originally from the imghdr module.
|
|
50
|
+
def _what(data):
|
|
51
|
+
for rule in _rules:
|
|
52
|
+
if res := rule(data):
|
|
53
|
+
return res
|
|
54
|
+
else:
|
|
55
|
+
return None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def rule(rulefunc):
|
|
59
|
+
_rules.append(rulefunc)
|
|
60
|
+
return rulefunc
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@rule
|
|
64
|
+
def _jpeg(h):
|
|
65
|
+
"""JPEG data with JFIF or Exif markers; and raw JPEG"""
|
|
66
|
+
if h[6:10] in (b'JFIF', b'Exif'):
|
|
67
|
+
return 'jpeg'
|
|
68
|
+
elif h[:4] == b'\xff\xd8\xff\xdb':
|
|
69
|
+
return 'jpeg'
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@rule
|
|
73
|
+
def _png(h):
|
|
74
|
+
if h.startswith(b'\211PNG\r\n\032\n'):
|
|
75
|
+
return 'png'
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@rule
|
|
79
|
+
def _gif(h):
|
|
80
|
+
"""GIF ('87 and '89 variants)"""
|
|
81
|
+
if h[:6] in (b'GIF87a', b'GIF89a'):
|
|
82
|
+
return 'gif'
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@rule
|
|
86
|
+
def _tiff(h):
|
|
87
|
+
"""TIFF (can be in Motorola or Intel byte order)"""
|
|
88
|
+
if h[:2] in (b'MM', b'II'):
|
|
89
|
+
return 'tiff'
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@rule
|
|
93
|
+
def _rgb(h):
|
|
94
|
+
"""SGI image library"""
|
|
95
|
+
if h.startswith(b'\001\332'):
|
|
96
|
+
return 'rgb'
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@rule
|
|
100
|
+
def _pbm(h):
|
|
101
|
+
"""PBM (portable bitmap)"""
|
|
102
|
+
if len(h) >= 3 and \
|
|
103
|
+
h[0] == ord(b'P') and h[1] in b'14' and h[2] in b' \t\n\r':
|
|
104
|
+
return 'pbm'
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@rule
|
|
108
|
+
def _pgm(h):
|
|
109
|
+
"""PGM (portable graymap)"""
|
|
110
|
+
if len(h) >= 3 and \
|
|
111
|
+
h[0] == ord(b'P') and h[1] in b'25' and h[2] in b' \t\n\r':
|
|
112
|
+
return 'pgm'
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@rule
|
|
116
|
+
def _ppm(h):
|
|
117
|
+
"""PPM (portable pixmap)"""
|
|
118
|
+
if len(h) >= 3 and \
|
|
119
|
+
h[0] == ord(b'P') and h[1] in b'36' and h[2] in b' \t\n\r':
|
|
120
|
+
return 'ppm'
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@rule
|
|
124
|
+
def _rast(h):
|
|
125
|
+
"""Sun raster file"""
|
|
126
|
+
if h.startswith(b'\x59\xA6\x6A\x95'):
|
|
127
|
+
return 'rast'
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@rule
|
|
131
|
+
def _xbm(h):
|
|
132
|
+
"""X bitmap (X10 or X11)"""
|
|
133
|
+
if h.startswith(b'#define '):
|
|
134
|
+
return 'xbm'
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
@rule
|
|
138
|
+
def _bmp(h):
|
|
139
|
+
if h.startswith(b'BM'):
|
|
140
|
+
return 'bmp'
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
@rule
|
|
144
|
+
def _webp(h):
|
|
145
|
+
if h.startswith(b'RIFF') and h[8:12] == b'WEBP':
|
|
146
|
+
return 'webp'
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@rule
|
|
150
|
+
def _exr(h):
|
|
151
|
+
if h.startswith(b'\x76\x2f\x31\x01'):
|
|
152
|
+
return 'exr'
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright (C) 2001-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Class representing message/* MIME documents."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEMessage']
|
|
8
|
+
|
|
9
|
+
from email import message
|
|
10
|
+
from email.mime.nonmultipart import MIMENonMultipart
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MIMEMessage(MIMENonMultipart):
|
|
14
|
+
"""Class representing message/* MIME documents."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, _msg, _subtype='rfc822', *, policy=None):
|
|
17
|
+
"""Create a message/* type MIME document.
|
|
18
|
+
|
|
19
|
+
_msg is a message object and must be an instance of Message, or a
|
|
20
|
+
derived class of Message, otherwise a TypeError is raised.
|
|
21
|
+
|
|
22
|
+
Optional _subtype defines the subtype of the contained message. The
|
|
23
|
+
default is "rfc822" (this is defined by the MIME standard, even though
|
|
24
|
+
the term "rfc822" is technically outdated by RFC 2822).
|
|
25
|
+
"""
|
|
26
|
+
MIMENonMultipart.__init__(self, 'message', _subtype, policy=policy)
|
|
27
|
+
if not isinstance(_msg, message.Message):
|
|
28
|
+
raise TypeError('Argument is not an instance of Message')
|
|
29
|
+
# It's convenient to use this base class method. We need to do it
|
|
30
|
+
# this way or we'll get an exception
|
|
31
|
+
message.Message.attach(self, _msg)
|
|
32
|
+
# And be sure our default type is set correctly
|
|
33
|
+
self.set_default_type('message/rfc822')
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Copyright (C) 2002-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Base class for MIME multipart/* type messages."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEMultipart']
|
|
8
|
+
|
|
9
|
+
from email.mime.base import MIMEBase
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MIMEMultipart(MIMEBase):
|
|
13
|
+
"""Base class for MIME multipart/* type messages."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, _subtype='mixed', boundary=None, _subparts=None,
|
|
16
|
+
*, policy=None,
|
|
17
|
+
**_params):
|
|
18
|
+
"""Creates a multipart/* type message.
|
|
19
|
+
|
|
20
|
+
By default, creates a multipart/mixed message, with proper
|
|
21
|
+
Content-Type and MIME-Version headers.
|
|
22
|
+
|
|
23
|
+
_subtype is the subtype of the multipart content type, defaulting to
|
|
24
|
+
`mixed'.
|
|
25
|
+
|
|
26
|
+
boundary is the multipart boundary string. By default it is
|
|
27
|
+
calculated as needed.
|
|
28
|
+
|
|
29
|
+
_subparts is a sequence of initial subparts for the payload. It
|
|
30
|
+
must be an iterable object, such as a list. You can always
|
|
31
|
+
attach new subparts to the message by using the attach() method.
|
|
32
|
+
|
|
33
|
+
Additional parameters for the Content-Type header are taken from the
|
|
34
|
+
keyword arguments (or passed into the _params argument).
|
|
35
|
+
"""
|
|
36
|
+
MIMEBase.__init__(self, 'multipart', _subtype, policy=policy, **_params)
|
|
37
|
+
|
|
38
|
+
# Initialise _payload to an empty list as the Message superclass's
|
|
39
|
+
# implementation of is_multipart assumes that _payload is a list for
|
|
40
|
+
# multipart messages.
|
|
41
|
+
self._payload = []
|
|
42
|
+
|
|
43
|
+
if _subparts:
|
|
44
|
+
for p in _subparts:
|
|
45
|
+
self.attach(p)
|
|
46
|
+
if boundary:
|
|
47
|
+
self.set_boundary(boundary)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Copyright (C) 2002-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Base class for MIME type messages that are not multipart."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMENonMultipart']
|
|
8
|
+
|
|
9
|
+
from email import errors
|
|
10
|
+
from email.mime.base import MIMEBase
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MIMENonMultipart(MIMEBase):
|
|
14
|
+
"""Base class for MIME non-multipart type messages."""
|
|
15
|
+
|
|
16
|
+
def attach(self, payload):
|
|
17
|
+
# The public API prohibits attaching multiple subparts to MIMEBase
|
|
18
|
+
# derived subtypes since none of them are, by definition, of content
|
|
19
|
+
# type multipart/*
|
|
20
|
+
raise errors.MultipartConversionError(
|
|
21
|
+
'Cannot attach additional subparts to non-multipart/*')
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright (C) 2001-2006 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""Class representing text/* type MIME documents."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['MIMEText']
|
|
8
|
+
|
|
9
|
+
from email.mime.nonmultipart import MIMENonMultipart
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MIMEText(MIMENonMultipart):
|
|
13
|
+
"""Class for generating text/* type MIME documents."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, _text, _subtype='plain', _charset=None, *, policy=None):
|
|
16
|
+
"""Create a text/* type MIME document.
|
|
17
|
+
|
|
18
|
+
_text is the string for this message object.
|
|
19
|
+
|
|
20
|
+
_subtype is the MIME sub content type, defaulting to "plain".
|
|
21
|
+
|
|
22
|
+
_charset is the character set parameter added to the Content-Type
|
|
23
|
+
header. This defaults to "us-ascii". Note that as a side-effect, the
|
|
24
|
+
Content-Transfer-Encoding header will also be set.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# If no _charset was specified, check to see if there are non-ascii
|
|
28
|
+
# characters present. If not, use 'us-ascii', otherwise use utf-8.
|
|
29
|
+
# XXX: This can be removed once #7304 is fixed.
|
|
30
|
+
if _charset is None:
|
|
31
|
+
try:
|
|
32
|
+
_text.encode('us-ascii')
|
|
33
|
+
_charset = 'us-ascii'
|
|
34
|
+
except UnicodeEncodeError:
|
|
35
|
+
_charset = 'utf-8'
|
|
36
|
+
|
|
37
|
+
MIMENonMultipart.__init__(self, 'text', _subtype, policy=policy,
|
|
38
|
+
charset=str(_charset))
|
|
39
|
+
|
|
40
|
+
self.set_payload(_text, _charset)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Copyright (C) 2001-2007 Python Software Foundation
|
|
2
|
+
# Author: Barry Warsaw, Thomas Wouters, Anthony Baxter
|
|
3
|
+
# Contact: email-sig@python.org
|
|
4
|
+
|
|
5
|
+
"""A parser of RFC 5322 and MIME email messages."""
|
|
6
|
+
|
|
7
|
+
__all__ = ['Parser', 'HeaderParser', 'BytesParser', 'BytesHeaderParser',
|
|
8
|
+
'FeedParser', 'BytesFeedParser']
|
|
9
|
+
|
|
10
|
+
from io import StringIO, TextIOWrapper
|
|
11
|
+
|
|
12
|
+
from email.feedparser import FeedParser, BytesFeedParser
|
|
13
|
+
from email._policybase import compat32
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Parser:
|
|
17
|
+
def __init__(self, _class=None, *, policy=compat32):
|
|
18
|
+
"""Parser of RFC 5322 and MIME email messages.
|
|
19
|
+
|
|
20
|
+
Creates an in-memory object tree representing the email message, which
|
|
21
|
+
can then be manipulated and turned over to a Generator to return the
|
|
22
|
+
textual representation of the message.
|
|
23
|
+
|
|
24
|
+
The string must be formatted as a block of RFC 5322 headers and header
|
|
25
|
+
continuation lines, optionally preceded by a 'Unix-from' header. The
|
|
26
|
+
header block is terminated either by the end of the string or by a
|
|
27
|
+
blank line.
|
|
28
|
+
|
|
29
|
+
_class is the class to instantiate for new message objects when they
|
|
30
|
+
must be created. This class must have a constructor that can take
|
|
31
|
+
zero arguments. Default is Message.Message.
|
|
32
|
+
|
|
33
|
+
The policy keyword specifies a policy object that controls a number of
|
|
34
|
+
aspects of the parser's operation. The default policy maintains
|
|
35
|
+
backward compatibility.
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
self._class = _class
|
|
39
|
+
self.policy = policy
|
|
40
|
+
|
|
41
|
+
def parse(self, fp, headersonly=False):
|
|
42
|
+
"""Create a message structure from the data in a file.
|
|
43
|
+
|
|
44
|
+
Reads all the data from the file and returns the root of the message
|
|
45
|
+
structure. Optional headersonly is a flag specifying whether to stop
|
|
46
|
+
parsing after reading the headers or not. The default is False,
|
|
47
|
+
meaning it parses the entire contents of the file.
|
|
48
|
+
"""
|
|
49
|
+
feedparser = FeedParser(self._class, policy=self.policy)
|
|
50
|
+
if headersonly:
|
|
51
|
+
feedparser._set_headersonly()
|
|
52
|
+
while data := fp.read(8192):
|
|
53
|
+
feedparser.feed(data)
|
|
54
|
+
return feedparser.close()
|
|
55
|
+
|
|
56
|
+
def parsestr(self, text, headersonly=False):
|
|
57
|
+
"""Create a message structure from a string.
|
|
58
|
+
|
|
59
|
+
Returns the root of the message structure. Optional headersonly is a
|
|
60
|
+
flag specifying whether to stop parsing after reading the headers or
|
|
61
|
+
not. The default is False, meaning it parses the entire contents of
|
|
62
|
+
the file.
|
|
63
|
+
"""
|
|
64
|
+
return self.parse(StringIO(text), headersonly=headersonly)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class HeaderParser(Parser):
|
|
68
|
+
def parse(self, fp, headersonly=True):
|
|
69
|
+
return Parser.parse(self, fp, True)
|
|
70
|
+
|
|
71
|
+
def parsestr(self, text, headersonly=True):
|
|
72
|
+
return Parser.parsestr(self, text, True)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class BytesParser:
|
|
76
|
+
|
|
77
|
+
def __init__(self, *args, **kw):
|
|
78
|
+
"""Parser of binary RFC 5322 and MIME email messages.
|
|
79
|
+
|
|
80
|
+
Creates an in-memory object tree representing the email message, which
|
|
81
|
+
can then be manipulated and turned over to a Generator to return the
|
|
82
|
+
textual representation of the message.
|
|
83
|
+
|
|
84
|
+
The input must be formatted as a block of RFC 5322 headers and header
|
|
85
|
+
continuation lines, optionally preceded by a 'Unix-from' header. The
|
|
86
|
+
header block is terminated either by the end of the input or by a
|
|
87
|
+
blank line.
|
|
88
|
+
|
|
89
|
+
_class is the class to instantiate for new message objects when they
|
|
90
|
+
must be created. This class must have a constructor that can take
|
|
91
|
+
zero arguments. Default is Message.Message.
|
|
92
|
+
"""
|
|
93
|
+
self.parser = Parser(*args, **kw)
|
|
94
|
+
|
|
95
|
+
def parse(self, fp, headersonly=False):
|
|
96
|
+
"""Create a message structure from the data in a binary file.
|
|
97
|
+
|
|
98
|
+
Reads all the data from the file and returns the root of the message
|
|
99
|
+
structure. Optional headersonly is a flag specifying whether to stop
|
|
100
|
+
parsing after reading the headers or not. The default is False,
|
|
101
|
+
meaning it parses the entire contents of the file.
|
|
102
|
+
"""
|
|
103
|
+
fp = TextIOWrapper(fp, encoding='ascii', errors='surrogateescape')
|
|
104
|
+
try:
|
|
105
|
+
return self.parser.parse(fp, headersonly)
|
|
106
|
+
finally:
|
|
107
|
+
fp.detach()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def parsebytes(self, text, headersonly=False):
|
|
111
|
+
"""Create a message structure from a byte string.
|
|
112
|
+
|
|
113
|
+
Returns the root of the message structure. Optional headersonly is a
|
|
114
|
+
flag specifying whether to stop parsing after reading the headers or
|
|
115
|
+
not. The default is False, meaning it parses the entire contents of
|
|
116
|
+
the file.
|
|
117
|
+
"""
|
|
118
|
+
text = text.decode('ASCII', errors='surrogateescape')
|
|
119
|
+
return self.parser.parsestr(text, headersonly)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class BytesHeaderParser(BytesParser):
|
|
123
|
+
def parse(self, fp, headersonly=True):
|
|
124
|
+
return BytesParser.parse(self, fp, headersonly=True)
|
|
125
|
+
|
|
126
|
+
def parsebytes(self, text, headersonly=True):
|
|
127
|
+
return BytesParser.parsebytes(self, text, headersonly=True)
|