@rowstile/cli-linux-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 +26 -0
- package/python/bin/python3.13 +0 -0
- package/python/bin/python3.13-config +122 -0
- package/python/lib/libpython3.13.so.1.0 +0 -0
- package/python/lib/libpython3.so +0 -0
- package/python/lib/python3.13/LICENSE.txt +277 -0
- package/python/lib/python3.13/__future__.py +147 -0
- package/python/lib/python3.13/__hello__.py +16 -0
- package/python/lib/python3.13/_aix_support.py +108 -0
- package/python/lib/python3.13/_android_support.py +192 -0
- package/python/lib/python3.13/_apple_support.py +66 -0
- package/python/lib/python3.13/_collections_abc.py +1187 -0
- package/python/lib/python3.13/_colorize.py +119 -0
- package/python/lib/python3.13/_compat_pickle.py +251 -0
- package/python/lib/python3.13/_compression.py +162 -0
- package/python/lib/python3.13/_ios_support.py +71 -0
- package/python/lib/python3.13/_markupbase.py +396 -0
- package/python/lib/python3.13/_opcode_metadata.py +343 -0
- package/python/lib/python3.13/_osx_support.py +579 -0
- package/python/lib/python3.13/_py_abc.py +147 -0
- package/python/lib/python3.13/_pydatetime.py +2640 -0
- package/python/lib/python3.13/_pydecimal.py +6356 -0
- package/python/lib/python3.13/_pyio.py +2714 -0
- package/python/lib/python3.13/_pylong.py +363 -0
- package/python/lib/python3.13/_pyrepl/__init__.py +19 -0
- package/python/lib/python3.13/_pyrepl/__main__.py +10 -0
- package/python/lib/python3.13/_pyrepl/_minimal_curses.py +68 -0
- package/python/lib/python3.13/_pyrepl/_threading_handler.py +74 -0
- package/python/lib/python3.13/_pyrepl/base_eventqueue.py +110 -0
- package/python/lib/python3.13/_pyrepl/commands.py +492 -0
- package/python/lib/python3.13/_pyrepl/completing_reader.py +295 -0
- package/python/lib/python3.13/_pyrepl/console.py +229 -0
- package/python/lib/python3.13/_pyrepl/curses.py +33 -0
- package/python/lib/python3.13/_pyrepl/fancy_termios.py +82 -0
- package/python/lib/python3.13/_pyrepl/historical_reader.py +419 -0
- package/python/lib/python3.13/_pyrepl/input.py +114 -0
- package/python/lib/python3.13/_pyrepl/keymap.py +213 -0
- package/python/lib/python3.13/_pyrepl/main.py +59 -0
- package/python/lib/python3.13/_pyrepl/mypy.ini +29 -0
- package/python/lib/python3.13/_pyrepl/pager.py +175 -0
- package/python/lib/python3.13/_pyrepl/reader.py +764 -0
- package/python/lib/python3.13/_pyrepl/readline.py +599 -0
- package/python/lib/python3.13/_pyrepl/simple_interact.py +180 -0
- package/python/lib/python3.13/_pyrepl/trace.py +21 -0
- package/python/lib/python3.13/_pyrepl/types.py +10 -0
- package/python/lib/python3.13/_pyrepl/unix_console.py +852 -0
- package/python/lib/python3.13/_pyrepl/unix_eventqueue.py +76 -0
- package/python/lib/python3.13/_pyrepl/utils.py +83 -0
- package/python/lib/python3.13/_pyrepl/windows_console.py +687 -0
- package/python/lib/python3.13/_pyrepl/windows_eventqueue.py +42 -0
- package/python/lib/python3.13/_sitebuiltins.py +91 -0
- package/python/lib/python3.13/_strptime.py +800 -0
- package/python/lib/python3.13/_sysconfigdata__linux_x86_64-linux-gnu.py +1079 -0
- package/python/lib/python3.13/_threading_local.py +120 -0
- package/python/lib/python3.13/_weakrefset.py +205 -0
- package/python/lib/python3.13/abc.py +188 -0
- package/python/lib/python3.13/antigravity.py +17 -0
- package/python/lib/python3.13/argparse.py +2690 -0
- package/python/lib/python3.13/ast.py +1865 -0
- package/python/lib/python3.13/asyncio/__init__.py +47 -0
- package/python/lib/python3.13/asyncio/__main__.py +211 -0
- package/python/lib/python3.13/asyncio/base_events.py +2086 -0
- package/python/lib/python3.13/asyncio/base_futures.py +67 -0
- package/python/lib/python3.13/asyncio/base_subprocess.py +312 -0
- package/python/lib/python3.13/asyncio/base_tasks.py +94 -0
- package/python/lib/python3.13/asyncio/constants.py +41 -0
- package/python/lib/python3.13/asyncio/coroutines.py +109 -0
- package/python/lib/python3.13/asyncio/events.py +885 -0
- package/python/lib/python3.13/asyncio/exceptions.py +62 -0
- package/python/lib/python3.13/asyncio/format_helpers.py +84 -0
- package/python/lib/python3.13/asyncio/futures.py +425 -0
- package/python/lib/python3.13/asyncio/locks.py +617 -0
- package/python/lib/python3.13/asyncio/log.py +7 -0
- package/python/lib/python3.13/asyncio/mixins.py +21 -0
- package/python/lib/python3.13/asyncio/proactor_events.py +891 -0
- package/python/lib/python3.13/asyncio/protocols.py +216 -0
- package/python/lib/python3.13/asyncio/queues.py +309 -0
- package/python/lib/python3.13/asyncio/runners.py +217 -0
- package/python/lib/python3.13/asyncio/selector_events.py +1328 -0
- package/python/lib/python3.13/asyncio/sslproto.py +929 -0
- package/python/lib/python3.13/asyncio/staggered.py +174 -0
- package/python/lib/python3.13/asyncio/streams.py +787 -0
- package/python/lib/python3.13/asyncio/subprocess.py +229 -0
- package/python/lib/python3.13/asyncio/taskgroups.py +278 -0
- package/python/lib/python3.13/asyncio/tasks.py +1121 -0
- package/python/lib/python3.13/asyncio/threads.py +26 -0
- package/python/lib/python3.13/asyncio/timeouts.py +185 -0
- package/python/lib/python3.13/asyncio/transports.py +337 -0
- package/python/lib/python3.13/asyncio/trsock.py +98 -0
- package/python/lib/python3.13/asyncio/unix_events.py +1550 -0
- package/python/lib/python3.13/asyncio/windows_events.py +906 -0
- package/python/lib/python3.13/asyncio/windows_utils.py +181 -0
- package/python/lib/python3.13/base64.py +628 -0
- package/python/lib/python3.13/bdb.py +973 -0
- package/python/lib/python3.13/bisect.py +118 -0
- package/python/lib/python3.13/bz2.py +352 -0
- package/python/lib/python3.13/cProfile.py +197 -0
- package/python/lib/python3.13/calendar.py +813 -0
- package/python/lib/python3.13/cmd.py +409 -0
- package/python/lib/python3.13/code.py +386 -0
- package/python/lib/python3.13/codecs.py +1132 -0
- package/python/lib/python3.13/codeop.py +155 -0
- package/python/lib/python3.13/collections/__init__.py +1603 -0
- package/python/lib/python3.13/colorsys.py +166 -0
- package/python/lib/python3.13/compileall.py +470 -0
- package/python/lib/python3.13/concurrent/__init__.py +1 -0
- package/python/lib/python3.13/concurrent/futures/__init__.py +54 -0
- package/python/lib/python3.13/concurrent/futures/_base.py +660 -0
- package/python/lib/python3.13/concurrent/futures/process.py +892 -0
- package/python/lib/python3.13/concurrent/futures/thread.py +240 -0
- package/python/lib/python3.13/configparser.py +1396 -0
- package/python/lib/python3.13/contextlib.py +814 -0
- package/python/lib/python3.13/contextvars.py +4 -0
- package/python/lib/python3.13/copy.py +306 -0
- package/python/lib/python3.13/copyreg.py +217 -0
- package/python/lib/python3.13/csv.py +527 -0
- package/python/lib/python3.13/ctypes/__init__.py +605 -0
- package/python/lib/python3.13/ctypes/_aix.py +327 -0
- package/python/lib/python3.13/ctypes/_endian.py +78 -0
- package/python/lib/python3.13/ctypes/macholib/README.ctypes +7 -0
- package/python/lib/python3.13/ctypes/macholib/__init__.py +9 -0
- package/python/lib/python3.13/ctypes/macholib/dyld.py +165 -0
- package/python/lib/python3.13/ctypes/macholib/dylib.py +42 -0
- package/python/lib/python3.13/ctypes/macholib/fetch_macholib +2 -0
- package/python/lib/python3.13/ctypes/macholib/fetch_macholib.bat +1 -0
- package/python/lib/python3.13/ctypes/macholib/framework.py +42 -0
- package/python/lib/python3.13/ctypes/util.py +387 -0
- package/python/lib/python3.13/ctypes/wintypes.py +202 -0
- package/python/lib/python3.13/curses/__init__.py +101 -0
- package/python/lib/python3.13/curses/ascii.py +99 -0
- package/python/lib/python3.13/curses/has_key.py +192 -0
- package/python/lib/python3.13/curses/panel.py +6 -0
- package/python/lib/python3.13/curses/textpad.py +236 -0
- package/python/lib/python3.13/dataclasses.py +1679 -0
- package/python/lib/python3.13/datetime.py +9 -0
- package/python/lib/python3.13/dbm/__init__.py +194 -0
- package/python/lib/python3.13/dbm/dumb.py +319 -0
- package/python/lib/python3.13/dbm/gnu.py +3 -0
- package/python/lib/python3.13/dbm/ndbm.py +3 -0
- package/python/lib/python3.13/dbm/sqlite3.py +144 -0
- package/python/lib/python3.13/decimal.py +109 -0
- package/python/lib/python3.13/difflib.py +2058 -0
- package/python/lib/python3.13/dis.py +1075 -0
- package/python/lib/python3.13/doctest.py +2919 -0
- package/python/lib/python3.13/email/__init__.py +61 -0
- package/python/lib/python3.13/email/_encoded_words.py +233 -0
- package/python/lib/python3.13/email/_header_value_parser.py +3153 -0
- package/python/lib/python3.13/email/_parseaddr.py +563 -0
- package/python/lib/python3.13/email/_policybase.py +382 -0
- package/python/lib/python3.13/email/architecture.rst +216 -0
- package/python/lib/python3.13/email/base64mime.py +115 -0
- package/python/lib/python3.13/email/charset.py +396 -0
- package/python/lib/python3.13/email/contentmanager.py +254 -0
- package/python/lib/python3.13/email/encoders.py +65 -0
- package/python/lib/python3.13/email/errors.py +117 -0
- package/python/lib/python3.13/email/feedparser.py +536 -0
- package/python/lib/python3.13/email/generator.py +530 -0
- package/python/lib/python3.13/email/header.py +582 -0
- package/python/lib/python3.13/email/headerregistry.py +618 -0
- package/python/lib/python3.13/email/iterators.py +68 -0
- package/python/lib/python3.13/email/message.py +1217 -0
- package/python/lib/python3.13/email/mime/__init__.py +0 -0
- package/python/lib/python3.13/email/mime/application.py +37 -0
- package/python/lib/python3.13/email/mime/audio.py +97 -0
- package/python/lib/python3.13/email/mime/base.py +29 -0
- package/python/lib/python3.13/email/mime/image.py +152 -0
- package/python/lib/python3.13/email/mime/message.py +33 -0
- package/python/lib/python3.13/email/mime/multipart.py +47 -0
- package/python/lib/python3.13/email/mime/nonmultipart.py +21 -0
- package/python/lib/python3.13/email/mime/text.py +40 -0
- package/python/lib/python3.13/email/parser.py +127 -0
- package/python/lib/python3.13/email/policy.py +232 -0
- package/python/lib/python3.13/email/quoprimime.py +300 -0
- package/python/lib/python3.13/email/utils.py +497 -0
- package/python/lib/python3.13/encodings/__init__.py +179 -0
- package/python/lib/python3.13/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/lib/python3.13/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
- package/python/lib/python3.13/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
- package/python/lib/python3.13/encodings/aliases.py +560 -0
- package/python/lib/python3.13/encodings/ascii.py +50 -0
- package/python/lib/python3.13/encodings/base64_codec.py +55 -0
- package/python/lib/python3.13/encodings/big5.py +39 -0
- package/python/lib/python3.13/encodings/big5hkscs.py +39 -0
- package/python/lib/python3.13/encodings/bz2_codec.py +78 -0
- package/python/lib/python3.13/encodings/charmap.py +69 -0
- package/python/lib/python3.13/encodings/cp037.py +307 -0
- package/python/lib/python3.13/encodings/cp1006.py +307 -0
- package/python/lib/python3.13/encodings/cp1026.py +307 -0
- package/python/lib/python3.13/encodings/cp1125.py +698 -0
- package/python/lib/python3.13/encodings/cp1140.py +307 -0
- package/python/lib/python3.13/encodings/cp1250.py +307 -0
- package/python/lib/python3.13/encodings/cp1251.py +307 -0
- package/python/lib/python3.13/encodings/cp1252.py +307 -0
- package/python/lib/python3.13/encodings/cp1253.py +307 -0
- package/python/lib/python3.13/encodings/cp1254.py +307 -0
- package/python/lib/python3.13/encodings/cp1255.py +307 -0
- package/python/lib/python3.13/encodings/cp1256.py +307 -0
- package/python/lib/python3.13/encodings/cp1257.py +307 -0
- package/python/lib/python3.13/encodings/cp1258.py +307 -0
- package/python/lib/python3.13/encodings/cp273.py +307 -0
- package/python/lib/python3.13/encodings/cp424.py +307 -0
- package/python/lib/python3.13/encodings/cp437.py +698 -0
- package/python/lib/python3.13/encodings/cp500.py +307 -0
- package/python/lib/python3.13/encodings/cp720.py +309 -0
- package/python/lib/python3.13/encodings/cp737.py +698 -0
- package/python/lib/python3.13/encodings/cp775.py +697 -0
- package/python/lib/python3.13/encodings/cp850.py +698 -0
- package/python/lib/python3.13/encodings/cp852.py +698 -0
- package/python/lib/python3.13/encodings/cp855.py +698 -0
- package/python/lib/python3.13/encodings/cp856.py +307 -0
- package/python/lib/python3.13/encodings/cp857.py +694 -0
- package/python/lib/python3.13/encodings/cp858.py +698 -0
- package/python/lib/python3.13/encodings/cp860.py +698 -0
- package/python/lib/python3.13/encodings/cp861.py +698 -0
- package/python/lib/python3.13/encodings/cp862.py +698 -0
- package/python/lib/python3.13/encodings/cp863.py +698 -0
- package/python/lib/python3.13/encodings/cp864.py +690 -0
- package/python/lib/python3.13/encodings/cp865.py +698 -0
- package/python/lib/python3.13/encodings/cp866.py +698 -0
- package/python/lib/python3.13/encodings/cp869.py +689 -0
- package/python/lib/python3.13/encodings/cp874.py +307 -0
- package/python/lib/python3.13/encodings/cp875.py +307 -0
- package/python/lib/python3.13/encodings/cp932.py +39 -0
- package/python/lib/python3.13/encodings/cp949.py +39 -0
- package/python/lib/python3.13/encodings/cp950.py +39 -0
- package/python/lib/python3.13/encodings/euc_jis_2004.py +39 -0
- package/python/lib/python3.13/encodings/euc_jisx0213.py +39 -0
- package/python/lib/python3.13/encodings/euc_jp.py +39 -0
- package/python/lib/python3.13/encodings/euc_kr.py +39 -0
- package/python/lib/python3.13/encodings/gb18030.py +39 -0
- package/python/lib/python3.13/encodings/gb2312.py +39 -0
- package/python/lib/python3.13/encodings/gbk.py +39 -0
- package/python/lib/python3.13/encodings/hex_codec.py +55 -0
- package/python/lib/python3.13/encodings/hp_roman8.py +314 -0
- package/python/lib/python3.13/encodings/hz.py +39 -0
- package/python/lib/python3.13/encodings/idna.py +387 -0
- package/python/lib/python3.13/encodings/iso2022_jp.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_1.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_2.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_2004.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_3.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_ext.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_kr.py +39 -0
- package/python/lib/python3.13/encodings/iso8859_1.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_10.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_11.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_13.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_14.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_15.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_16.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_2.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_3.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_4.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_5.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_6.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_7.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_8.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_9.py +307 -0
- package/python/lib/python3.13/encodings/johab.py +39 -0
- package/python/lib/python3.13/encodings/koi8_r.py +307 -0
- package/python/lib/python3.13/encodings/koi8_t.py +308 -0
- package/python/lib/python3.13/encodings/koi8_u.py +307 -0
- package/python/lib/python3.13/encodings/kz1048.py +307 -0
- package/python/lib/python3.13/encodings/latin_1.py +50 -0
- package/python/lib/python3.13/encodings/mac_arabic.py +698 -0
- package/python/lib/python3.13/encodings/mac_croatian.py +307 -0
- package/python/lib/python3.13/encodings/mac_cyrillic.py +307 -0
- package/python/lib/python3.13/encodings/mac_farsi.py +307 -0
- package/python/lib/python3.13/encodings/mac_greek.py +307 -0
- package/python/lib/python3.13/encodings/mac_iceland.py +307 -0
- package/python/lib/python3.13/encodings/mac_latin2.py +312 -0
- package/python/lib/python3.13/encodings/mac_roman.py +307 -0
- package/python/lib/python3.13/encodings/mac_romanian.py +307 -0
- package/python/lib/python3.13/encodings/mac_turkish.py +307 -0
- package/python/lib/python3.13/encodings/mbcs.py +47 -0
- package/python/lib/python3.13/encodings/oem.py +41 -0
- package/python/lib/python3.13/encodings/palmos.py +308 -0
- package/python/lib/python3.13/encodings/ptcp154.py +312 -0
- package/python/lib/python3.13/encodings/punycode.py +253 -0
- package/python/lib/python3.13/encodings/quopri_codec.py +56 -0
- package/python/lib/python3.13/encodings/raw_unicode_escape.py +46 -0
- package/python/lib/python3.13/encodings/rot_13.py +113 -0
- package/python/lib/python3.13/encodings/shift_jis.py +39 -0
- package/python/lib/python3.13/encodings/shift_jis_2004.py +39 -0
- package/python/lib/python3.13/encodings/shift_jisx0213.py +39 -0
- package/python/lib/python3.13/encodings/tis_620.py +307 -0
- package/python/lib/python3.13/encodings/undefined.py +49 -0
- package/python/lib/python3.13/encodings/unicode_escape.py +46 -0
- package/python/lib/python3.13/encodings/utf_16.py +155 -0
- package/python/lib/python3.13/encodings/utf_16_be.py +42 -0
- package/python/lib/python3.13/encodings/utf_16_le.py +42 -0
- package/python/lib/python3.13/encodings/utf_32.py +150 -0
- package/python/lib/python3.13/encodings/utf_32_be.py +37 -0
- package/python/lib/python3.13/encodings/utf_32_le.py +37 -0
- package/python/lib/python3.13/encodings/utf_7.py +38 -0
- package/python/lib/python3.13/encodings/utf_8.py +42 -0
- package/python/lib/python3.13/encodings/utf_8_sig.py +130 -0
- package/python/lib/python3.13/encodings/uu_codec.py +103 -0
- package/python/lib/python3.13/encodings/zlib_codec.py +77 -0
- package/python/lib/python3.13/enum.py +2183 -0
- package/python/lib/python3.13/filecmp.py +320 -0
- package/python/lib/python3.13/fileinput.py +442 -0
- package/python/lib/python3.13/fnmatch.py +192 -0
- package/python/lib/python3.13/fractions.py +1043 -0
- package/python/lib/python3.13/ftplib.py +975 -0
- package/python/lib/python3.13/functools.py +1036 -0
- package/python/lib/python3.13/genericpath.py +200 -0
- package/python/lib/python3.13/getopt.py +215 -0
- package/python/lib/python3.13/getpass.py +192 -0
- package/python/lib/python3.13/gettext.py +657 -0
- package/python/lib/python3.13/glob.py +572 -0
- package/python/lib/python3.13/graphlib.py +250 -0
- package/python/lib/python3.13/gzip.py +693 -0
- package/python/lib/python3.13/hashlib.py +255 -0
- package/python/lib/python3.13/heapq.py +603 -0
- package/python/lib/python3.13/hmac.py +220 -0
- package/python/lib/python3.13/html/__init__.py +132 -0
- package/python/lib/python3.13/html/entities.py +2513 -0
- package/python/lib/python3.13/html/parser.py +583 -0
- package/python/lib/python3.13/http/__init__.py +202 -0
- package/python/lib/python3.13/http/client.py +1598 -0
- package/python/lib/python3.13/http/cookiejar.py +2122 -0
- package/python/lib/python3.13/http/cookies.py +635 -0
- package/python/lib/python3.13/http/server.py +1355 -0
- package/python/lib/python3.13/imaplib.py +1769 -0
- package/python/lib/python3.13/importlib/__init__.py +136 -0
- package/python/lib/python3.13/importlib/_abc.py +39 -0
- package/python/lib/python3.13/importlib/_bootstrap.py +1559 -0
- package/python/lib/python3.13/importlib/_bootstrap_external.py +1826 -0
- package/python/lib/python3.13/importlib/abc.py +243 -0
- package/python/lib/python3.13/importlib/machinery.py +21 -0
- package/python/lib/python3.13/importlib/metadata/__init__.py +1093 -0
- package/python/lib/python3.13/importlib/metadata/_adapters.py +89 -0
- package/python/lib/python3.13/importlib/metadata/_collections.py +30 -0
- package/python/lib/python3.13/importlib/metadata/_functools.py +104 -0
- package/python/lib/python3.13/importlib/metadata/_itertools.py +73 -0
- package/python/lib/python3.13/importlib/metadata/_meta.py +67 -0
- package/python/lib/python3.13/importlib/metadata/_text.py +99 -0
- package/python/lib/python3.13/importlib/metadata/diagnose.py +21 -0
- package/python/lib/python3.13/importlib/readers.py +12 -0
- package/python/lib/python3.13/importlib/resources/__init__.py +43 -0
- package/python/lib/python3.13/importlib/resources/_adapters.py +168 -0
- package/python/lib/python3.13/importlib/resources/_common.py +211 -0
- package/python/lib/python3.13/importlib/resources/_functional.py +81 -0
- package/python/lib/python3.13/importlib/resources/_itertools.py +38 -0
- package/python/lib/python3.13/importlib/resources/abc.py +173 -0
- package/python/lib/python3.13/importlib/resources/readers.py +203 -0
- package/python/lib/python3.13/importlib/resources/simple.py +106 -0
- package/python/lib/python3.13/importlib/simple.py +14 -0
- package/python/lib/python3.13/importlib/util.py +274 -0
- package/python/lib/python3.13/inspect.py +3479 -0
- package/python/lib/python3.13/io.py +99 -0
- package/python/lib/python3.13/ipaddress.py +2440 -0
- package/python/lib/python3.13/json/__init__.py +365 -0
- package/python/lib/python3.13/json/decoder.py +364 -0
- package/python/lib/python3.13/json/encoder.py +446 -0
- package/python/lib/python3.13/json/scanner.py +73 -0
- package/python/lib/python3.13/json/tool.py +90 -0
- package/python/lib/python3.13/keyword.py +64 -0
- package/python/lib/python3.13/lib-dynload/.empty +0 -0
- package/python/lib/python3.13/lib-dynload/_dbm.cpython-313-x86_64-linux-gnu.so +0 -0
- package/python/lib/python3.13/linecache.py +236 -0
- package/python/lib/python3.13/locale.py +1987 -0
- package/python/lib/python3.13/logging/__init__.py +2330 -0
- package/python/lib/python3.13/logging/config.py +1080 -0
- package/python/lib/python3.13/logging/handlers.py +1629 -0
- package/python/lib/python3.13/lzma.py +364 -0
- package/python/lib/python3.13/mailbox.py +2219 -0
- package/python/lib/python3.13/mimetypes.py +679 -0
- package/python/lib/python3.13/modulefinder.py +671 -0
- package/python/lib/python3.13/multiprocessing/__init__.py +37 -0
- package/python/lib/python3.13/multiprocessing/connection.py +1216 -0
- package/python/lib/python3.13/multiprocessing/context.py +383 -0
- package/python/lib/python3.13/multiprocessing/dummy/__init__.py +126 -0
- package/python/lib/python3.13/multiprocessing/dummy/connection.py +75 -0
- package/python/lib/python3.13/multiprocessing/forkserver.py +373 -0
- package/python/lib/python3.13/multiprocessing/heap.py +337 -0
- package/python/lib/python3.13/multiprocessing/managers.py +1397 -0
- package/python/lib/python3.13/multiprocessing/pool.py +957 -0
- package/python/lib/python3.13/multiprocessing/popen_fork.py +97 -0
- package/python/lib/python3.13/multiprocessing/popen_forkserver.py +74 -0
- package/python/lib/python3.13/multiprocessing/popen_spawn_posix.py +76 -0
- package/python/lib/python3.13/multiprocessing/popen_spawn_win32.py +147 -0
- package/python/lib/python3.13/multiprocessing/process.py +436 -0
- package/python/lib/python3.13/multiprocessing/queues.py +399 -0
- package/python/lib/python3.13/multiprocessing/reduction.py +281 -0
- package/python/lib/python3.13/multiprocessing/resource_sharer.py +154 -0
- package/python/lib/python3.13/multiprocessing/resource_tracker.py +499 -0
- package/python/lib/python3.13/multiprocessing/shared_memory.py +544 -0
- package/python/lib/python3.13/multiprocessing/sharedctypes.py +240 -0
- package/python/lib/python3.13/multiprocessing/spawn.py +307 -0
- package/python/lib/python3.13/multiprocessing/synchronize.py +404 -0
- package/python/lib/python3.13/multiprocessing/util.py +562 -0
- package/python/lib/python3.13/netrc.py +199 -0
- package/python/lib/python3.13/ntpath.py +872 -0
- package/python/lib/python3.13/nturl2path.py +69 -0
- package/python/lib/python3.13/numbers.py +427 -0
- package/python/lib/python3.13/opcode.py +115 -0
- package/python/lib/python3.13/operator.py +467 -0
- package/python/lib/python3.13/optparse.py +1681 -0
- package/python/lib/python3.13/os.py +1184 -0
- package/python/lib/python3.13/pathlib/__init__.py +12 -0
- package/python/lib/python3.13/pathlib/_abc.py +930 -0
- package/python/lib/python3.13/pathlib/_local.py +861 -0
- package/python/lib/python3.13/pdb.py +2550 -0
- package/python/lib/python3.13/pickle.py +1860 -0
- package/python/lib/python3.13/pickletools.py +2904 -0
- package/python/lib/python3.13/pkgutil.py +529 -0
- package/python/lib/python3.13/platform.py +1454 -0
- package/python/lib/python3.13/plistlib.py +948 -0
- package/python/lib/python3.13/poplib.py +477 -0
- package/python/lib/python3.13/posixpath.py +578 -0
- package/python/lib/python3.13/pprint.py +658 -0
- package/python/lib/python3.13/profile.py +616 -0
- package/python/lib/python3.13/pstats.py +778 -0
- package/python/lib/python3.13/pty.py +211 -0
- package/python/lib/python3.13/py_compile.py +212 -0
- package/python/lib/python3.13/pyclbr.py +314 -0
- package/python/lib/python3.13/pydoc.py +2861 -0
- package/python/lib/python3.13/queue.py +383 -0
- package/python/lib/python3.13/quopri.py +237 -0
- package/python/lib/python3.13/random.py +1078 -0
- package/python/lib/python3.13/re/__init__.py +428 -0
- package/python/lib/python3.13/re/_casefix.py +106 -0
- package/python/lib/python3.13/re/_compiler.py +768 -0
- package/python/lib/python3.13/re/_constants.py +222 -0
- package/python/lib/python3.13/re/_parser.py +1081 -0
- package/python/lib/python3.13/reprlib.py +230 -0
- package/python/lib/python3.13/rlcompleter.py +222 -0
- package/python/lib/python3.13/runpy.py +326 -0
- package/python/lib/python3.13/sched.py +167 -0
- package/python/lib/python3.13/secrets.py +71 -0
- package/python/lib/python3.13/selectors.py +603 -0
- package/python/lib/python3.13/shelve.py +250 -0
- package/python/lib/python3.13/shlex.py +345 -0
- package/python/lib/python3.13/shutil.py +1569 -0
- package/python/lib/python3.13/signal.py +94 -0
- package/python/lib/python3.13/site.py +773 -0
- package/python/lib/python3.13/smtplib.py +1123 -0
- package/python/lib/python3.13/socket.py +988 -0
- package/python/lib/python3.13/socketserver.py +863 -0
- package/python/lib/python3.13/sqlite3/__init__.py +70 -0
- package/python/lib/python3.13/sqlite3/__main__.py +139 -0
- package/python/lib/python3.13/sqlite3/dbapi2.py +108 -0
- package/python/lib/python3.13/sqlite3/dump.py +118 -0
- package/python/lib/python3.13/sre_compile.py +7 -0
- package/python/lib/python3.13/sre_constants.py +7 -0
- package/python/lib/python3.13/sre_parse.py +7 -0
- package/python/lib/python3.13/ssl.py +1541 -0
- package/python/lib/python3.13/stat.py +212 -0
- package/python/lib/python3.13/statistics.py +1817 -0
- package/python/lib/python3.13/string.py +314 -0
- package/python/lib/python3.13/stringprep.py +272 -0
- package/python/lib/python3.13/struct.py +15 -0
- package/python/lib/python3.13/subprocess.py +2258 -0
- package/python/lib/python3.13/symtable.py +414 -0
- package/python/lib/python3.13/sysconfig/__init__.py +734 -0
- package/python/lib/python3.13/sysconfig/__main__.py +248 -0
- package/python/lib/python3.13/tabnanny.py +340 -0
- package/python/lib/python3.13/tarfile.py +3136 -0
- package/python/lib/python3.13/tempfile.py +958 -0
- package/python/lib/python3.13/textwrap.py +497 -0
- package/python/lib/python3.13/this.py +28 -0
- package/python/lib/python3.13/threading.py +1602 -0
- package/python/lib/python3.13/timeit.py +381 -0
- package/python/lib/python3.13/token.py +141 -0
- package/python/lib/python3.13/tokenize.py +592 -0
- package/python/lib/python3.13/tomllib/__init__.py +10 -0
- package/python/lib/python3.13/tomllib/_parser.py +703 -0
- package/python/lib/python3.13/tomllib/_re.py +107 -0
- package/python/lib/python3.13/tomllib/_types.py +10 -0
- package/python/lib/python3.13/tomllib/mypy.ini +15 -0
- package/python/lib/python3.13/trace.py +754 -0
- package/python/lib/python3.13/traceback.py +1639 -0
- package/python/lib/python3.13/tracemalloc.py +560 -0
- package/python/lib/python3.13/tty.py +73 -0
- package/python/lib/python3.13/types.py +346 -0
- package/python/lib/python3.13/typing.py +3846 -0
- package/python/lib/python3.13/unittest/__init__.py +80 -0
- package/python/lib/python3.13/unittest/__main__.py +18 -0
- package/python/lib/python3.13/unittest/_log.py +86 -0
- package/python/lib/python3.13/unittest/async_case.py +146 -0
- package/python/lib/python3.13/unittest/case.py +1478 -0
- package/python/lib/python3.13/unittest/loader.py +460 -0
- package/python/lib/python3.13/unittest/main.py +280 -0
- package/python/lib/python3.13/unittest/mock.py +3189 -0
- package/python/lib/python3.13/unittest/result.py +256 -0
- package/python/lib/python3.13/unittest/runner.py +292 -0
- package/python/lib/python3.13/unittest/signals.py +71 -0
- package/python/lib/python3.13/unittest/suite.py +379 -0
- package/python/lib/python3.13/unittest/util.py +170 -0
- package/python/lib/python3.13/urllib/__init__.py +0 -0
- package/python/lib/python3.13/urllib/error.py +74 -0
- package/python/lib/python3.13/urllib/parse.py +1264 -0
- package/python/lib/python3.13/urllib/request.py +2796 -0
- package/python/lib/python3.13/urllib/response.py +84 -0
- package/python/lib/python3.13/urllib/robotparser.py +363 -0
- package/python/lib/python3.13/uuid.py +784 -0
- package/python/lib/python3.13/warnings.py +735 -0
- package/python/lib/python3.13/wave.py +665 -0
- package/python/lib/python3.13/weakref.py +674 -0
- package/python/lib/python3.13/webbrowser.py +724 -0
- package/python/lib/python3.13/wsgiref/__init__.py +25 -0
- package/python/lib/python3.13/wsgiref/handlers.py +575 -0
- package/python/lib/python3.13/wsgiref/headers.py +192 -0
- package/python/lib/python3.13/wsgiref/simple_server.py +161 -0
- package/python/lib/python3.13/wsgiref/types.py +54 -0
- package/python/lib/python3.13/wsgiref/util.py +159 -0
- package/python/lib/python3.13/wsgiref/validate.py +438 -0
- package/python/lib/python3.13/xml/__init__.py +20 -0
- package/python/lib/python3.13/xml/dom/NodeFilter.py +27 -0
- package/python/lib/python3.13/xml/dom/__init__.py +140 -0
- package/python/lib/python3.13/xml/dom/domreg.py +99 -0
- package/python/lib/python3.13/xml/dom/expatbuilder.py +962 -0
- package/python/lib/python3.13/xml/dom/minicompat.py +109 -0
- package/python/lib/python3.13/xml/dom/minidom.py +2024 -0
- package/python/lib/python3.13/xml/dom/pulldom.py +336 -0
- package/python/lib/python3.13/xml/dom/xmlbuilder.py +389 -0
- package/python/lib/python3.13/xml/etree/ElementInclude.py +186 -0
- package/python/lib/python3.13/xml/etree/ElementPath.py +430 -0
- package/python/lib/python3.13/xml/etree/ElementTree.py +2116 -0
- package/python/lib/python3.13/xml/etree/__init__.py +33 -0
- package/python/lib/python3.13/xml/etree/cElementTree.py +3 -0
- package/python/lib/python3.13/xml/parsers/__init__.py +8 -0
- package/python/lib/python3.13/xml/parsers/expat.py +8 -0
- package/python/lib/python3.13/xml/sax/__init__.py +94 -0
- package/python/lib/python3.13/xml/sax/_exceptions.py +127 -0
- package/python/lib/python3.13/xml/sax/expatreader.py +454 -0
- package/python/lib/python3.13/xml/sax/handler.py +387 -0
- package/python/lib/python3.13/xml/sax/saxutils.py +369 -0
- package/python/lib/python3.13/xml/sax/xmlreader.py +378 -0
- package/python/lib/python3.13/xmlrpc/__init__.py +1 -0
- package/python/lib/python3.13/xmlrpc/client.py +1503 -0
- package/python/lib/python3.13/xmlrpc/server.py +1002 -0
- package/python/lib/python3.13/zipapp.py +229 -0
- package/python/lib/python3.13/zipfile/__init__.py +2391 -0
- package/python/lib/python3.13/zipfile/__main__.py +4 -0
- package/python/lib/python3.13/zipfile/_path/__init__.py +452 -0
- package/python/lib/python3.13/zipfile/_path/glob.py +113 -0
- package/python/lib/python3.13/zipimport.py +803 -0
- package/python/lib/python3.13/zoneinfo/__init__.py +34 -0
- package/python/lib/python3.13/zoneinfo/_common.py +172 -0
- package/python/lib/python3.13/zoneinfo/_tzpath.py +189 -0
- package/python/lib/python3.13/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
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
|
|
2
|
+
# Licensed under the MIT license: https://opensource.org/licenses/mit-license.php
|
|
3
|
+
# Also licenced under the Apache License, 2.0: https://opensource.org/licenses/apache2.0.php
|
|
4
|
+
# Licensed to PSF under a Contributor Agreement
|
|
5
|
+
"""
|
|
6
|
+
Middleware to check for obedience to the WSGI specification.
|
|
7
|
+
|
|
8
|
+
Some of the things this checks:
|
|
9
|
+
|
|
10
|
+
* Signature of the application and start_response (including that
|
|
11
|
+
keyword arguments are not used).
|
|
12
|
+
|
|
13
|
+
* Environment checks:
|
|
14
|
+
|
|
15
|
+
- Environment is a dictionary (and not a subclass).
|
|
16
|
+
|
|
17
|
+
- That all the required keys are in the environment: REQUEST_METHOD,
|
|
18
|
+
SERVER_NAME, SERVER_PORT, wsgi.version, wsgi.input, wsgi.errors,
|
|
19
|
+
wsgi.multithread, wsgi.multiprocess, wsgi.run_once
|
|
20
|
+
|
|
21
|
+
- That HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH are not in the
|
|
22
|
+
environment (these headers should appear as CONTENT_LENGTH and
|
|
23
|
+
CONTENT_TYPE).
|
|
24
|
+
|
|
25
|
+
- Warns if QUERY_STRING is missing, as the cgi module acts
|
|
26
|
+
unpredictably in that case.
|
|
27
|
+
|
|
28
|
+
- That CGI-style variables (that don't contain a .) have
|
|
29
|
+
(non-unicode) string values
|
|
30
|
+
|
|
31
|
+
- That wsgi.version is a tuple
|
|
32
|
+
|
|
33
|
+
- That wsgi.url_scheme is 'http' or 'https' (@@: is this too
|
|
34
|
+
restrictive?)
|
|
35
|
+
|
|
36
|
+
- Warns if the REQUEST_METHOD is not known (@@: probably too
|
|
37
|
+
restrictive).
|
|
38
|
+
|
|
39
|
+
- That SCRIPT_NAME and PATH_INFO are empty or start with /
|
|
40
|
+
|
|
41
|
+
- That at least one of SCRIPT_NAME or PATH_INFO are set.
|
|
42
|
+
|
|
43
|
+
- That CONTENT_LENGTH is a positive integer.
|
|
44
|
+
|
|
45
|
+
- That SCRIPT_NAME is not '/' (it should be '', and PATH_INFO should
|
|
46
|
+
be '/').
|
|
47
|
+
|
|
48
|
+
- That wsgi.input has the methods read, readline, readlines, and
|
|
49
|
+
__iter__
|
|
50
|
+
|
|
51
|
+
- That wsgi.errors has the methods flush, write, writelines
|
|
52
|
+
|
|
53
|
+
* The status is a string, contains a space, starts with an integer,
|
|
54
|
+
and that integer is in range (> 100).
|
|
55
|
+
|
|
56
|
+
* That the headers is a list (not a subclass, not another kind of
|
|
57
|
+
sequence).
|
|
58
|
+
|
|
59
|
+
* That the items of the headers are tuples of strings.
|
|
60
|
+
|
|
61
|
+
* That there is no 'status' header (that is used in CGI, but not in
|
|
62
|
+
WSGI).
|
|
63
|
+
|
|
64
|
+
* That the headers don't contain newlines or colons, end in _ or -, or
|
|
65
|
+
contain characters codes below 037.
|
|
66
|
+
|
|
67
|
+
* That Content-Type is given if there is content (CGI often has a
|
|
68
|
+
default content type, but WSGI does not).
|
|
69
|
+
|
|
70
|
+
* That no Content-Type is given when there is no content (@@: is this
|
|
71
|
+
too restrictive?)
|
|
72
|
+
|
|
73
|
+
* That the exc_info argument to start_response is a tuple or None.
|
|
74
|
+
|
|
75
|
+
* That all calls to the writer are with strings, and no other methods
|
|
76
|
+
on the writer are accessed.
|
|
77
|
+
|
|
78
|
+
* That wsgi.input is used properly:
|
|
79
|
+
|
|
80
|
+
- .read() is called with exactly one argument
|
|
81
|
+
|
|
82
|
+
- That it returns a string
|
|
83
|
+
|
|
84
|
+
- That readline, readlines, and __iter__ return strings
|
|
85
|
+
|
|
86
|
+
- That .close() is not called
|
|
87
|
+
|
|
88
|
+
- No other methods are provided
|
|
89
|
+
|
|
90
|
+
* That wsgi.errors is used properly:
|
|
91
|
+
|
|
92
|
+
- .write() and .writelines() is called with a string
|
|
93
|
+
|
|
94
|
+
- That .close() is not called, and no other methods are provided.
|
|
95
|
+
|
|
96
|
+
* The response iterator:
|
|
97
|
+
|
|
98
|
+
- That it is not a string (it should be a list of a single string; a
|
|
99
|
+
string will work, but perform horribly).
|
|
100
|
+
|
|
101
|
+
- That .__next__() returns a string
|
|
102
|
+
|
|
103
|
+
- That the iterator is not iterated over until start_response has
|
|
104
|
+
been called (that can signal either a server or application
|
|
105
|
+
error).
|
|
106
|
+
|
|
107
|
+
- That .close() is called (doesn't raise exception, only prints to
|
|
108
|
+
sys.stderr, because we only know it isn't called when the object
|
|
109
|
+
is garbage collected).
|
|
110
|
+
"""
|
|
111
|
+
__all__ = ['validator']
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
import re
|
|
115
|
+
import sys
|
|
116
|
+
import warnings
|
|
117
|
+
|
|
118
|
+
header_re = re.compile(r'^[a-zA-Z][a-zA-Z0-9\-_]*$')
|
|
119
|
+
bad_header_value_re = re.compile(r'[\000-\037]')
|
|
120
|
+
|
|
121
|
+
class WSGIWarning(Warning):
|
|
122
|
+
"""
|
|
123
|
+
Raised in response to WSGI-spec-related warnings
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
def assert_(cond, *args):
|
|
127
|
+
if not cond:
|
|
128
|
+
raise AssertionError(*args)
|
|
129
|
+
|
|
130
|
+
def check_string_type(value, title):
|
|
131
|
+
if type (value) is str:
|
|
132
|
+
return value
|
|
133
|
+
raise AssertionError(
|
|
134
|
+
"{0} must be of type str (got {1})".format(title, repr(value)))
|
|
135
|
+
|
|
136
|
+
def validator(application):
|
|
137
|
+
|
|
138
|
+
"""
|
|
139
|
+
When applied between a WSGI server and a WSGI application, this
|
|
140
|
+
middleware will check for WSGI compliance on a number of levels.
|
|
141
|
+
This middleware does not modify the request or response in any
|
|
142
|
+
way, but will raise an AssertionError if anything seems off
|
|
143
|
+
(except for a failure to close the application iterator, which
|
|
144
|
+
will be printed to stderr -- there's no way to raise an exception
|
|
145
|
+
at that point).
|
|
146
|
+
"""
|
|
147
|
+
|
|
148
|
+
def lint_app(*args, **kw):
|
|
149
|
+
assert_(len(args) == 2, "Two arguments required")
|
|
150
|
+
assert_(not kw, "No keyword arguments allowed")
|
|
151
|
+
environ, start_response = args
|
|
152
|
+
|
|
153
|
+
check_environ(environ)
|
|
154
|
+
|
|
155
|
+
# We use this to check if the application returns without
|
|
156
|
+
# calling start_response:
|
|
157
|
+
start_response_started = []
|
|
158
|
+
|
|
159
|
+
def start_response_wrapper(*args, **kw):
|
|
160
|
+
assert_(len(args) == 2 or len(args) == 3, (
|
|
161
|
+
"Invalid number of arguments: %s" % (args,)))
|
|
162
|
+
assert_(not kw, "No keyword arguments allowed")
|
|
163
|
+
status = args[0]
|
|
164
|
+
headers = args[1]
|
|
165
|
+
if len(args) == 3:
|
|
166
|
+
exc_info = args[2]
|
|
167
|
+
else:
|
|
168
|
+
exc_info = None
|
|
169
|
+
|
|
170
|
+
check_status(status)
|
|
171
|
+
check_headers(headers)
|
|
172
|
+
check_content_type(status, headers)
|
|
173
|
+
check_exc_info(exc_info)
|
|
174
|
+
|
|
175
|
+
start_response_started.append(None)
|
|
176
|
+
return WriteWrapper(start_response(*args))
|
|
177
|
+
|
|
178
|
+
environ['wsgi.input'] = InputWrapper(environ['wsgi.input'])
|
|
179
|
+
environ['wsgi.errors'] = ErrorWrapper(environ['wsgi.errors'])
|
|
180
|
+
|
|
181
|
+
iterator = application(environ, start_response_wrapper)
|
|
182
|
+
assert_(iterator is not None and iterator != False,
|
|
183
|
+
"The application must return an iterator, if only an empty list")
|
|
184
|
+
|
|
185
|
+
check_iterator(iterator)
|
|
186
|
+
|
|
187
|
+
return IteratorWrapper(iterator, start_response_started)
|
|
188
|
+
|
|
189
|
+
return lint_app
|
|
190
|
+
|
|
191
|
+
class InputWrapper:
|
|
192
|
+
|
|
193
|
+
def __init__(self, wsgi_input):
|
|
194
|
+
self.input = wsgi_input
|
|
195
|
+
|
|
196
|
+
def read(self, *args):
|
|
197
|
+
assert_(len(args) == 1)
|
|
198
|
+
v = self.input.read(*args)
|
|
199
|
+
assert_(type(v) is bytes)
|
|
200
|
+
return v
|
|
201
|
+
|
|
202
|
+
def readline(self, *args):
|
|
203
|
+
assert_(len(args) <= 1)
|
|
204
|
+
v = self.input.readline(*args)
|
|
205
|
+
assert_(type(v) is bytes)
|
|
206
|
+
return v
|
|
207
|
+
|
|
208
|
+
def readlines(self, *args):
|
|
209
|
+
assert_(len(args) <= 1)
|
|
210
|
+
lines = self.input.readlines(*args)
|
|
211
|
+
assert_(type(lines) is list)
|
|
212
|
+
for line in lines:
|
|
213
|
+
assert_(type(line) is bytes)
|
|
214
|
+
return lines
|
|
215
|
+
|
|
216
|
+
def __iter__(self):
|
|
217
|
+
while line := self.readline():
|
|
218
|
+
yield line
|
|
219
|
+
|
|
220
|
+
def close(self):
|
|
221
|
+
assert_(0, "input.close() must not be called")
|
|
222
|
+
|
|
223
|
+
class ErrorWrapper:
|
|
224
|
+
|
|
225
|
+
def __init__(self, wsgi_errors):
|
|
226
|
+
self.errors = wsgi_errors
|
|
227
|
+
|
|
228
|
+
def write(self, s):
|
|
229
|
+
assert_(type(s) is str)
|
|
230
|
+
self.errors.write(s)
|
|
231
|
+
|
|
232
|
+
def flush(self):
|
|
233
|
+
self.errors.flush()
|
|
234
|
+
|
|
235
|
+
def writelines(self, seq):
|
|
236
|
+
for line in seq:
|
|
237
|
+
self.write(line)
|
|
238
|
+
|
|
239
|
+
def close(self):
|
|
240
|
+
assert_(0, "errors.close() must not be called")
|
|
241
|
+
|
|
242
|
+
class WriteWrapper:
|
|
243
|
+
|
|
244
|
+
def __init__(self, wsgi_writer):
|
|
245
|
+
self.writer = wsgi_writer
|
|
246
|
+
|
|
247
|
+
def __call__(self, s):
|
|
248
|
+
assert_(type(s) is bytes)
|
|
249
|
+
self.writer(s)
|
|
250
|
+
|
|
251
|
+
class PartialIteratorWrapper:
|
|
252
|
+
|
|
253
|
+
def __init__(self, wsgi_iterator):
|
|
254
|
+
self.iterator = wsgi_iterator
|
|
255
|
+
|
|
256
|
+
def __iter__(self):
|
|
257
|
+
# We want to make sure __iter__ is called
|
|
258
|
+
return IteratorWrapper(self.iterator, None)
|
|
259
|
+
|
|
260
|
+
class IteratorWrapper:
|
|
261
|
+
|
|
262
|
+
def __init__(self, wsgi_iterator, check_start_response):
|
|
263
|
+
self.original_iterator = wsgi_iterator
|
|
264
|
+
self.iterator = iter(wsgi_iterator)
|
|
265
|
+
self.closed = False
|
|
266
|
+
self.check_start_response = check_start_response
|
|
267
|
+
|
|
268
|
+
def __iter__(self):
|
|
269
|
+
return self
|
|
270
|
+
|
|
271
|
+
def __next__(self):
|
|
272
|
+
assert_(not self.closed,
|
|
273
|
+
"Iterator read after closed")
|
|
274
|
+
v = next(self.iterator)
|
|
275
|
+
if type(v) is not bytes:
|
|
276
|
+
assert_(False, "Iterator yielded non-bytestring (%r)" % (v,))
|
|
277
|
+
if self.check_start_response is not None:
|
|
278
|
+
assert_(self.check_start_response,
|
|
279
|
+
"The application returns and we started iterating over its body, but start_response has not yet been called")
|
|
280
|
+
self.check_start_response = None
|
|
281
|
+
return v
|
|
282
|
+
|
|
283
|
+
def close(self):
|
|
284
|
+
self.closed = True
|
|
285
|
+
if hasattr(self.original_iterator, 'close'):
|
|
286
|
+
self.original_iterator.close()
|
|
287
|
+
|
|
288
|
+
def __del__(self):
|
|
289
|
+
if not self.closed:
|
|
290
|
+
sys.stderr.write(
|
|
291
|
+
"Iterator garbage collected without being closed")
|
|
292
|
+
assert_(self.closed,
|
|
293
|
+
"Iterator garbage collected without being closed")
|
|
294
|
+
|
|
295
|
+
def check_environ(environ):
|
|
296
|
+
assert_(type(environ) is dict,
|
|
297
|
+
"Environment is not of the right type: %r (environment: %r)"
|
|
298
|
+
% (type(environ), environ))
|
|
299
|
+
|
|
300
|
+
for key in ['REQUEST_METHOD', 'SERVER_NAME', 'SERVER_PORT',
|
|
301
|
+
'wsgi.version', 'wsgi.input', 'wsgi.errors',
|
|
302
|
+
'wsgi.multithread', 'wsgi.multiprocess',
|
|
303
|
+
'wsgi.run_once']:
|
|
304
|
+
assert_(key in environ,
|
|
305
|
+
"Environment missing required key: %r" % (key,))
|
|
306
|
+
|
|
307
|
+
for key in ['HTTP_CONTENT_TYPE', 'HTTP_CONTENT_LENGTH']:
|
|
308
|
+
assert_(key not in environ,
|
|
309
|
+
"Environment should not have the key: %s "
|
|
310
|
+
"(use %s instead)" % (key, key[5:]))
|
|
311
|
+
|
|
312
|
+
if 'QUERY_STRING' not in environ:
|
|
313
|
+
warnings.warn(
|
|
314
|
+
'QUERY_STRING is not in the WSGI environment; the cgi '
|
|
315
|
+
'module will use sys.argv when this variable is missing, '
|
|
316
|
+
'so application errors are more likely',
|
|
317
|
+
WSGIWarning)
|
|
318
|
+
|
|
319
|
+
for key in environ.keys():
|
|
320
|
+
if '.' in key:
|
|
321
|
+
# Extension, we don't care about its type
|
|
322
|
+
continue
|
|
323
|
+
assert_(type(environ[key]) is str,
|
|
324
|
+
"Environmental variable %s is not a string: %r (value: %r)"
|
|
325
|
+
% (key, type(environ[key]), environ[key]))
|
|
326
|
+
|
|
327
|
+
assert_(type(environ['wsgi.version']) is tuple,
|
|
328
|
+
"wsgi.version should be a tuple (%r)" % (environ['wsgi.version'],))
|
|
329
|
+
assert_(environ['wsgi.url_scheme'] in ('http', 'https'),
|
|
330
|
+
"wsgi.url_scheme unknown: %r" % environ['wsgi.url_scheme'])
|
|
331
|
+
|
|
332
|
+
check_input(environ['wsgi.input'])
|
|
333
|
+
check_errors(environ['wsgi.errors'])
|
|
334
|
+
|
|
335
|
+
# @@: these need filling out:
|
|
336
|
+
if environ['REQUEST_METHOD'] not in (
|
|
337
|
+
'GET', 'HEAD', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE', 'TRACE'):
|
|
338
|
+
warnings.warn(
|
|
339
|
+
"Unknown REQUEST_METHOD: %r" % environ['REQUEST_METHOD'],
|
|
340
|
+
WSGIWarning)
|
|
341
|
+
|
|
342
|
+
assert_(not environ.get('SCRIPT_NAME')
|
|
343
|
+
or environ['SCRIPT_NAME'].startswith('/'),
|
|
344
|
+
"SCRIPT_NAME doesn't start with /: %r" % environ['SCRIPT_NAME'])
|
|
345
|
+
assert_(not environ.get('PATH_INFO')
|
|
346
|
+
or environ['PATH_INFO'].startswith('/'),
|
|
347
|
+
"PATH_INFO doesn't start with /: %r" % environ['PATH_INFO'])
|
|
348
|
+
if environ.get('CONTENT_LENGTH'):
|
|
349
|
+
assert_(int(environ['CONTENT_LENGTH']) >= 0,
|
|
350
|
+
"Invalid CONTENT_LENGTH: %r" % environ['CONTENT_LENGTH'])
|
|
351
|
+
|
|
352
|
+
if not environ.get('SCRIPT_NAME'):
|
|
353
|
+
assert_('PATH_INFO' in environ,
|
|
354
|
+
"One of SCRIPT_NAME or PATH_INFO are required (PATH_INFO "
|
|
355
|
+
"should at least be '/' if SCRIPT_NAME is empty)")
|
|
356
|
+
assert_(environ.get('SCRIPT_NAME') != '/',
|
|
357
|
+
"SCRIPT_NAME cannot be '/'; it should instead be '', and "
|
|
358
|
+
"PATH_INFO should be '/'")
|
|
359
|
+
|
|
360
|
+
def check_input(wsgi_input):
|
|
361
|
+
for attr in ['read', 'readline', 'readlines', '__iter__']:
|
|
362
|
+
assert_(hasattr(wsgi_input, attr),
|
|
363
|
+
"wsgi.input (%r) doesn't have the attribute %s"
|
|
364
|
+
% (wsgi_input, attr))
|
|
365
|
+
|
|
366
|
+
def check_errors(wsgi_errors):
|
|
367
|
+
for attr in ['flush', 'write', 'writelines']:
|
|
368
|
+
assert_(hasattr(wsgi_errors, attr),
|
|
369
|
+
"wsgi.errors (%r) doesn't have the attribute %s"
|
|
370
|
+
% (wsgi_errors, attr))
|
|
371
|
+
|
|
372
|
+
def check_status(status):
|
|
373
|
+
status = check_string_type(status, "Status")
|
|
374
|
+
# Implicitly check that we can turn it into an integer:
|
|
375
|
+
status_code = status.split(None, 1)[0]
|
|
376
|
+
assert_(len(status_code) == 3,
|
|
377
|
+
"Status codes must be three characters: %r" % status_code)
|
|
378
|
+
status_int = int(status_code)
|
|
379
|
+
assert_(status_int >= 100, "Status code is invalid: %r" % status_int)
|
|
380
|
+
if len(status) < 4 or status[3] != ' ':
|
|
381
|
+
warnings.warn(
|
|
382
|
+
"The status string (%r) should be a three-digit integer "
|
|
383
|
+
"followed by a single space and a status explanation"
|
|
384
|
+
% status, WSGIWarning)
|
|
385
|
+
|
|
386
|
+
def check_headers(headers):
|
|
387
|
+
assert_(type(headers) is list,
|
|
388
|
+
"Headers (%r) must be of type list: %r"
|
|
389
|
+
% (headers, type(headers)))
|
|
390
|
+
for item in headers:
|
|
391
|
+
assert_(type(item) is tuple,
|
|
392
|
+
"Individual headers (%r) must be of type tuple: %r"
|
|
393
|
+
% (item, type(item)))
|
|
394
|
+
assert_(len(item) == 2)
|
|
395
|
+
name, value = item
|
|
396
|
+
name = check_string_type(name, "Header name")
|
|
397
|
+
value = check_string_type(value, "Header value")
|
|
398
|
+
assert_(name.lower() != 'status',
|
|
399
|
+
"The Status header cannot be used; it conflicts with CGI "
|
|
400
|
+
"script, and HTTP status is not given through headers "
|
|
401
|
+
"(value: %r)." % value)
|
|
402
|
+
assert_('\n' not in name and ':' not in name,
|
|
403
|
+
"Header names may not contain ':' or '\\n': %r" % name)
|
|
404
|
+
assert_(header_re.search(name), "Bad header name: %r" % name)
|
|
405
|
+
assert_(not name.endswith('-') and not name.endswith('_'),
|
|
406
|
+
"Names may not end in '-' or '_': %r" % name)
|
|
407
|
+
if bad_header_value_re.search(value):
|
|
408
|
+
assert_(0, "Bad header value: %r (bad char: %r)"
|
|
409
|
+
% (value, bad_header_value_re.search(value).group(0)))
|
|
410
|
+
|
|
411
|
+
def check_content_type(status, headers):
|
|
412
|
+
status = check_string_type(status, "Status")
|
|
413
|
+
code = int(status.split(None, 1)[0])
|
|
414
|
+
# @@: need one more person to verify this interpretation of RFC 2616
|
|
415
|
+
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
|
416
|
+
NO_MESSAGE_BODY = (204, 304)
|
|
417
|
+
for name, value in headers:
|
|
418
|
+
name = check_string_type(name, "Header name")
|
|
419
|
+
if name.lower() == 'content-type':
|
|
420
|
+
if code not in NO_MESSAGE_BODY:
|
|
421
|
+
return
|
|
422
|
+
assert_(0, ("Content-Type header found in a %s response, "
|
|
423
|
+
"which must not return content.") % code)
|
|
424
|
+
if code not in NO_MESSAGE_BODY:
|
|
425
|
+
assert_(0, "No Content-Type header found in headers (%s)" % headers)
|
|
426
|
+
|
|
427
|
+
def check_exc_info(exc_info):
|
|
428
|
+
assert_(exc_info is None or type(exc_info) is tuple,
|
|
429
|
+
"exc_info (%r) is not a tuple: %r" % (exc_info, type(exc_info)))
|
|
430
|
+
# More exc_info checks?
|
|
431
|
+
|
|
432
|
+
def check_iterator(iterator):
|
|
433
|
+
# Technically a bytestring is legal, which is why it's a really bad
|
|
434
|
+
# idea, because it may cause the response to be returned
|
|
435
|
+
# character-by-character
|
|
436
|
+
assert_(not isinstance(iterator, (str, bytes)),
|
|
437
|
+
"You should not return a string as your application iterator, "
|
|
438
|
+
"instead return a single-item list containing a bytestring.")
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Core XML support for Python.
|
|
2
|
+
|
|
3
|
+
This package contains four sub-packages:
|
|
4
|
+
|
|
5
|
+
dom -- The W3C Document Object Model. This supports DOM Level 1 +
|
|
6
|
+
Namespaces.
|
|
7
|
+
|
|
8
|
+
parsers -- Python wrappers for XML parsers (currently only supports Expat).
|
|
9
|
+
|
|
10
|
+
sax -- The Simple API for XML, developed by XML-Dev, led by David
|
|
11
|
+
Megginson and ported to Python by Lars Marius Garshol. This
|
|
12
|
+
supports the SAX 2 API.
|
|
13
|
+
|
|
14
|
+
etree -- The ElementTree XML library. This is a subset of the full
|
|
15
|
+
ElementTree XML release.
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__all__ = ["dom", "parsers", "sax", "etree"]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# This is the Python mapping for interface NodeFilter from
|
|
2
|
+
# DOM2-Traversal-Range. It contains only constants.
|
|
3
|
+
|
|
4
|
+
class NodeFilter:
|
|
5
|
+
"""
|
|
6
|
+
This is the DOM2 NodeFilter interface. It contains only constants.
|
|
7
|
+
"""
|
|
8
|
+
FILTER_ACCEPT = 1
|
|
9
|
+
FILTER_REJECT = 2
|
|
10
|
+
FILTER_SKIP = 3
|
|
11
|
+
|
|
12
|
+
SHOW_ALL = 0xFFFFFFFF
|
|
13
|
+
SHOW_ELEMENT = 0x00000001
|
|
14
|
+
SHOW_ATTRIBUTE = 0x00000002
|
|
15
|
+
SHOW_TEXT = 0x00000004
|
|
16
|
+
SHOW_CDATA_SECTION = 0x00000008
|
|
17
|
+
SHOW_ENTITY_REFERENCE = 0x00000010
|
|
18
|
+
SHOW_ENTITY = 0x00000020
|
|
19
|
+
SHOW_PROCESSING_INSTRUCTION = 0x00000040
|
|
20
|
+
SHOW_COMMENT = 0x00000080
|
|
21
|
+
SHOW_DOCUMENT = 0x00000100
|
|
22
|
+
SHOW_DOCUMENT_TYPE = 0x00000200
|
|
23
|
+
SHOW_DOCUMENT_FRAGMENT = 0x00000400
|
|
24
|
+
SHOW_NOTATION = 0x00000800
|
|
25
|
+
|
|
26
|
+
def acceptNode(self, node):
|
|
27
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"""W3C Document Object Model implementation for Python.
|
|
2
|
+
|
|
3
|
+
The Python mapping of the Document Object Model is documented in the
|
|
4
|
+
Python Library Reference in the section on the xml.dom package.
|
|
5
|
+
|
|
6
|
+
This package contains the following modules:
|
|
7
|
+
|
|
8
|
+
minidom -- A simple implementation of the Level 1 DOM with namespace
|
|
9
|
+
support added (based on the Level 2 specification) and other
|
|
10
|
+
minor Level 2 functionality.
|
|
11
|
+
|
|
12
|
+
pulldom -- DOM builder supporting on-demand tree-building for selected
|
|
13
|
+
subtrees of the document.
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Node:
|
|
19
|
+
"""Class giving the NodeType constants."""
|
|
20
|
+
__slots__ = ()
|
|
21
|
+
|
|
22
|
+
# DOM implementations may use this as a base class for their own
|
|
23
|
+
# Node implementations. If they don't, the constants defined here
|
|
24
|
+
# should still be used as the canonical definitions as they match
|
|
25
|
+
# the values given in the W3C recommendation. Client code can
|
|
26
|
+
# safely refer to these values in all tests of Node.nodeType
|
|
27
|
+
# values.
|
|
28
|
+
|
|
29
|
+
ELEMENT_NODE = 1
|
|
30
|
+
ATTRIBUTE_NODE = 2
|
|
31
|
+
TEXT_NODE = 3
|
|
32
|
+
CDATA_SECTION_NODE = 4
|
|
33
|
+
ENTITY_REFERENCE_NODE = 5
|
|
34
|
+
ENTITY_NODE = 6
|
|
35
|
+
PROCESSING_INSTRUCTION_NODE = 7
|
|
36
|
+
COMMENT_NODE = 8
|
|
37
|
+
DOCUMENT_NODE = 9
|
|
38
|
+
DOCUMENT_TYPE_NODE = 10
|
|
39
|
+
DOCUMENT_FRAGMENT_NODE = 11
|
|
40
|
+
NOTATION_NODE = 12
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
#ExceptionCode
|
|
44
|
+
INDEX_SIZE_ERR = 1
|
|
45
|
+
DOMSTRING_SIZE_ERR = 2
|
|
46
|
+
HIERARCHY_REQUEST_ERR = 3
|
|
47
|
+
WRONG_DOCUMENT_ERR = 4
|
|
48
|
+
INVALID_CHARACTER_ERR = 5
|
|
49
|
+
NO_DATA_ALLOWED_ERR = 6
|
|
50
|
+
NO_MODIFICATION_ALLOWED_ERR = 7
|
|
51
|
+
NOT_FOUND_ERR = 8
|
|
52
|
+
NOT_SUPPORTED_ERR = 9
|
|
53
|
+
INUSE_ATTRIBUTE_ERR = 10
|
|
54
|
+
INVALID_STATE_ERR = 11
|
|
55
|
+
SYNTAX_ERR = 12
|
|
56
|
+
INVALID_MODIFICATION_ERR = 13
|
|
57
|
+
NAMESPACE_ERR = 14
|
|
58
|
+
INVALID_ACCESS_ERR = 15
|
|
59
|
+
VALIDATION_ERR = 16
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class DOMException(Exception):
|
|
63
|
+
"""Abstract base class for DOM exceptions.
|
|
64
|
+
Exceptions with specific codes are specializations of this class."""
|
|
65
|
+
|
|
66
|
+
def __init__(self, *args, **kw):
|
|
67
|
+
if self.__class__ is DOMException:
|
|
68
|
+
raise RuntimeError(
|
|
69
|
+
"DOMException should not be instantiated directly")
|
|
70
|
+
Exception.__init__(self, *args, **kw)
|
|
71
|
+
|
|
72
|
+
def _get_code(self):
|
|
73
|
+
return self.code
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class IndexSizeErr(DOMException):
|
|
77
|
+
code = INDEX_SIZE_ERR
|
|
78
|
+
|
|
79
|
+
class DomstringSizeErr(DOMException):
|
|
80
|
+
code = DOMSTRING_SIZE_ERR
|
|
81
|
+
|
|
82
|
+
class HierarchyRequestErr(DOMException):
|
|
83
|
+
code = HIERARCHY_REQUEST_ERR
|
|
84
|
+
|
|
85
|
+
class WrongDocumentErr(DOMException):
|
|
86
|
+
code = WRONG_DOCUMENT_ERR
|
|
87
|
+
|
|
88
|
+
class InvalidCharacterErr(DOMException):
|
|
89
|
+
code = INVALID_CHARACTER_ERR
|
|
90
|
+
|
|
91
|
+
class NoDataAllowedErr(DOMException):
|
|
92
|
+
code = NO_DATA_ALLOWED_ERR
|
|
93
|
+
|
|
94
|
+
class NoModificationAllowedErr(DOMException):
|
|
95
|
+
code = NO_MODIFICATION_ALLOWED_ERR
|
|
96
|
+
|
|
97
|
+
class NotFoundErr(DOMException):
|
|
98
|
+
code = NOT_FOUND_ERR
|
|
99
|
+
|
|
100
|
+
class NotSupportedErr(DOMException):
|
|
101
|
+
code = NOT_SUPPORTED_ERR
|
|
102
|
+
|
|
103
|
+
class InuseAttributeErr(DOMException):
|
|
104
|
+
code = INUSE_ATTRIBUTE_ERR
|
|
105
|
+
|
|
106
|
+
class InvalidStateErr(DOMException):
|
|
107
|
+
code = INVALID_STATE_ERR
|
|
108
|
+
|
|
109
|
+
class SyntaxErr(DOMException):
|
|
110
|
+
code = SYNTAX_ERR
|
|
111
|
+
|
|
112
|
+
class InvalidModificationErr(DOMException):
|
|
113
|
+
code = INVALID_MODIFICATION_ERR
|
|
114
|
+
|
|
115
|
+
class NamespaceErr(DOMException):
|
|
116
|
+
code = NAMESPACE_ERR
|
|
117
|
+
|
|
118
|
+
class InvalidAccessErr(DOMException):
|
|
119
|
+
code = INVALID_ACCESS_ERR
|
|
120
|
+
|
|
121
|
+
class ValidationErr(DOMException):
|
|
122
|
+
code = VALIDATION_ERR
|
|
123
|
+
|
|
124
|
+
class UserDataHandler:
|
|
125
|
+
"""Class giving the operation constants for UserDataHandler.handle()."""
|
|
126
|
+
|
|
127
|
+
# Based on DOM Level 3 (WD 9 April 2002)
|
|
128
|
+
|
|
129
|
+
NODE_CLONED = 1
|
|
130
|
+
NODE_IMPORTED = 2
|
|
131
|
+
NODE_DELETED = 3
|
|
132
|
+
NODE_RENAMED = 4
|
|
133
|
+
|
|
134
|
+
XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
|
|
135
|
+
XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
|
|
136
|
+
XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml"
|
|
137
|
+
EMPTY_NAMESPACE = None
|
|
138
|
+
EMPTY_PREFIX = None
|
|
139
|
+
|
|
140
|
+
from .domreg import getDOMImplementation, registerDOMImplementation
|