@rowstile/cli-win32-x64 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +5 -0
- package/package.json +23 -0
- package/python/DLLs/_asyncio.pyd +0 -0
- package/python/DLLs/_bz2.pyd +0 -0
- package/python/DLLs/_ctypes.pyd +0 -0
- package/python/DLLs/_ctypes_test.pyd +0 -0
- package/python/DLLs/_decimal.pyd +0 -0
- package/python/DLLs/_elementtree.pyd +0 -0
- package/python/DLLs/_hashlib.pyd +0 -0
- package/python/DLLs/_lzma.pyd +0 -0
- package/python/DLLs/_multiprocessing.pyd +0 -0
- package/python/DLLs/_overlapped.pyd +0 -0
- package/python/DLLs/_queue.pyd +0 -0
- package/python/DLLs/_socket.pyd +0 -0
- package/python/DLLs/_sqlite3.pyd +0 -0
- package/python/DLLs/_ssl.pyd +0 -0
- package/python/DLLs/_testbuffer.pyd +0 -0
- package/python/DLLs/_testcapi.pyd +0 -0
- package/python/DLLs/_testclinic.pyd +0 -0
- package/python/DLLs/_testclinic_limited.pyd +0 -0
- package/python/DLLs/_testconsole.pyd +0 -0
- package/python/DLLs/_testimportmultiple.pyd +0 -0
- package/python/DLLs/_testinternalcapi.pyd +0 -0
- package/python/DLLs/_testlimitedcapi.pyd +0 -0
- package/python/DLLs/_testmultiphase.pyd +0 -0
- package/python/DLLs/_testsinglephase.pyd +0 -0
- package/python/DLLs/_uuid.pyd +0 -0
- package/python/DLLs/_wmi.pyd +0 -0
- package/python/DLLs/_zoneinfo.pyd +0 -0
- package/python/DLLs/libcrypto-3-x64.dll +0 -0
- package/python/DLLs/libffi-8.dll +0 -0
- package/python/DLLs/libssl-3-x64.dll +0 -0
- package/python/DLLs/pyexpat.pyd +0 -0
- package/python/DLLs/select.pyd +0 -0
- package/python/DLLs/sqlite3.dll +0 -0
- package/python/DLLs/unicodedata.pyd +0 -0
- package/python/DLLs/winsound.pyd +0 -0
- package/python/DLLs/zlib1.dll +0 -0
- package/python/LICENSE.txt +445 -0
- package/python/Lib/__future__.py +147 -0
- package/python/Lib/__hello__.py +16 -0
- package/python/Lib/__pycache__/__future__.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_colorize.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_compat_pickle.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_compression.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_markupbase.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_opcode_metadata.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/_weakrefset.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ast.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/base64.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/bisect.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/bz2.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/calendar.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/colorsys.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/compileall.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/configparser.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/contextlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/copy.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/copyreg.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/csv.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/dataclasses.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/datetime.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/decimal.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/dis.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/enum.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/filecmp.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/fnmatch.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/fractions.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/functools.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/getpass.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/gettext.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/glob.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/gzip.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/hashlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/heapq.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/hmac.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/inspect.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ipaddress.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/keyword.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/linecache.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/locale.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/lzma.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/mimetypes.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/nturl2path.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/numbers.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/opcode.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/operator.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/optparse.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/pickle.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/pkgutil.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/platform.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/py_compile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/queue.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/quopri.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/random.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/reprlib.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/selectors.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/shlex.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/shutil.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/signal.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/socket.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/socketserver.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/ssl.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/string.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/stringprep.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/struct.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/subprocess.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tarfile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tempfile.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/textwrap.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/threading.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/token.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/tokenize.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/traceback.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/types.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/typing.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/uuid.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/warnings.cpython-313.pyc +0 -0
- package/python/Lib/__pycache__/weakref.cpython-313.pyc +0 -0
- package/python/Lib/_aix_support.py +108 -0
- package/python/Lib/_android_support.py +192 -0
- package/python/Lib/_apple_support.py +66 -0
- package/python/Lib/_collections_abc.py +1187 -0
- package/python/Lib/_colorize.py +119 -0
- package/python/Lib/_compat_pickle.py +251 -0
- package/python/Lib/_compression.py +162 -0
- package/python/Lib/_ios_support.py +71 -0
- package/python/Lib/_markupbase.py +396 -0
- package/python/Lib/_opcode_metadata.py +343 -0
- package/python/Lib/_osx_support.py +579 -0
- package/python/Lib/_py_abc.py +147 -0
- package/python/Lib/_pydatetime.py +2640 -0
- package/python/Lib/_pydecimal.py +6356 -0
- package/python/Lib/_pyio.py +2714 -0
- package/python/Lib/_pylong.py +363 -0
- package/python/Lib/_pyrepl/__init__.py +19 -0
- package/python/Lib/_pyrepl/__main__.py +10 -0
- package/python/Lib/_pyrepl/_minimal_curses.py +68 -0
- package/python/Lib/_pyrepl/_threading_handler.py +74 -0
- package/python/Lib/_pyrepl/base_eventqueue.py +110 -0
- package/python/Lib/_pyrepl/commands.py +492 -0
- package/python/Lib/_pyrepl/completing_reader.py +295 -0
- package/python/Lib/_pyrepl/console.py +229 -0
- package/python/Lib/_pyrepl/curses.py +33 -0
- package/python/Lib/_pyrepl/fancy_termios.py +82 -0
- package/python/Lib/_pyrepl/historical_reader.py +419 -0
- package/python/Lib/_pyrepl/input.py +114 -0
- package/python/Lib/_pyrepl/keymap.py +213 -0
- package/python/Lib/_pyrepl/main.py +59 -0
- package/python/Lib/_pyrepl/mypy.ini +29 -0
- package/python/Lib/_pyrepl/pager.py +175 -0
- package/python/Lib/_pyrepl/reader.py +764 -0
- package/python/Lib/_pyrepl/readline.py +599 -0
- package/python/Lib/_pyrepl/simple_interact.py +180 -0
- package/python/Lib/_pyrepl/trace.py +21 -0
- package/python/Lib/_pyrepl/types.py +10 -0
- package/python/Lib/_pyrepl/unix_console.py +852 -0
- package/python/Lib/_pyrepl/unix_eventqueue.py +76 -0
- package/python/Lib/_pyrepl/utils.py +83 -0
- package/python/Lib/_pyrepl/windows_console.py +687 -0
- package/python/Lib/_pyrepl/windows_eventqueue.py +42 -0
- package/python/Lib/_sitebuiltins.py +91 -0
- package/python/Lib/_strptime.py +800 -0
- package/python/Lib/_threading_local.py +120 -0
- package/python/Lib/_weakrefset.py +205 -0
- package/python/Lib/abc.py +188 -0
- package/python/Lib/antigravity.py +17 -0
- package/python/Lib/argparse.py +2690 -0
- package/python/Lib/ast.py +1865 -0
- package/python/Lib/asyncio/__init__.py +47 -0
- package/python/Lib/asyncio/__main__.py +211 -0
- package/python/Lib/asyncio/base_events.py +2086 -0
- package/python/Lib/asyncio/base_futures.py +67 -0
- package/python/Lib/asyncio/base_subprocess.py +312 -0
- package/python/Lib/asyncio/base_tasks.py +94 -0
- package/python/Lib/asyncio/constants.py +41 -0
- package/python/Lib/asyncio/coroutines.py +109 -0
- package/python/Lib/asyncio/events.py +885 -0
- package/python/Lib/asyncio/exceptions.py +62 -0
- package/python/Lib/asyncio/format_helpers.py +84 -0
- package/python/Lib/asyncio/futures.py +425 -0
- package/python/Lib/asyncio/locks.py +617 -0
- package/python/Lib/asyncio/log.py +7 -0
- package/python/Lib/asyncio/mixins.py +21 -0
- package/python/Lib/asyncio/proactor_events.py +891 -0
- package/python/Lib/asyncio/protocols.py +216 -0
- package/python/Lib/asyncio/queues.py +309 -0
- package/python/Lib/asyncio/runners.py +217 -0
- package/python/Lib/asyncio/selector_events.py +1328 -0
- package/python/Lib/asyncio/sslproto.py +929 -0
- package/python/Lib/asyncio/staggered.py +174 -0
- package/python/Lib/asyncio/streams.py +787 -0
- package/python/Lib/asyncio/subprocess.py +229 -0
- package/python/Lib/asyncio/taskgroups.py +278 -0
- package/python/Lib/asyncio/tasks.py +1121 -0
- package/python/Lib/asyncio/threads.py +26 -0
- package/python/Lib/asyncio/timeouts.py +185 -0
- package/python/Lib/asyncio/transports.py +337 -0
- package/python/Lib/asyncio/trsock.py +98 -0
- package/python/Lib/asyncio/unix_events.py +1550 -0
- package/python/Lib/asyncio/windows_events.py +906 -0
- package/python/Lib/asyncio/windows_utils.py +181 -0
- package/python/Lib/base64.py +628 -0
- package/python/Lib/bdb.py +973 -0
- package/python/Lib/bisect.py +118 -0
- package/python/Lib/bz2.py +352 -0
- package/python/Lib/cProfile.py +197 -0
- package/python/Lib/calendar.py +813 -0
- package/python/Lib/cmd.py +409 -0
- package/python/Lib/code.py +386 -0
- package/python/Lib/codecs.py +1132 -0
- package/python/Lib/codeop.py +155 -0
- package/python/Lib/collections/__init__.py +1603 -0
- package/python/Lib/collections/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/colorsys.py +166 -0
- package/python/Lib/compileall.py +470 -0
- package/python/Lib/concurrent/__init__.py +1 -0
- package/python/Lib/concurrent/futures/__init__.py +54 -0
- package/python/Lib/concurrent/futures/_base.py +660 -0
- package/python/Lib/concurrent/futures/process.py +892 -0
- package/python/Lib/concurrent/futures/thread.py +240 -0
- package/python/Lib/configparser.py +1396 -0
- package/python/Lib/contextlib.py +814 -0
- package/python/Lib/contextvars.py +4 -0
- package/python/Lib/copy.py +306 -0
- package/python/Lib/copyreg.py +217 -0
- package/python/Lib/csv.py +527 -0
- package/python/Lib/ctypes/__init__.py +602 -0
- package/python/Lib/ctypes/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/__pycache__/_endian.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/__pycache__/wintypes.cpython-313.pyc +0 -0
- package/python/Lib/ctypes/_aix.py +327 -0
- package/python/Lib/ctypes/_endian.py +78 -0
- package/python/Lib/ctypes/macholib/README.ctypes +7 -0
- package/python/Lib/ctypes/macholib/__init__.py +9 -0
- package/python/Lib/ctypes/macholib/dyld.py +165 -0
- package/python/Lib/ctypes/macholib/dylib.py +42 -0
- package/python/Lib/ctypes/macholib/fetch_macholib +2 -0
- package/python/Lib/ctypes/macholib/fetch_macholib.bat +1 -0
- package/python/Lib/ctypes/macholib/framework.py +42 -0
- package/python/Lib/ctypes/util.py +387 -0
- package/python/Lib/ctypes/wintypes.py +202 -0
- package/python/Lib/curses/__init__.py +101 -0
- package/python/Lib/curses/ascii.py +99 -0
- package/python/Lib/curses/has_key.py +192 -0
- package/python/Lib/curses/panel.py +6 -0
- package/python/Lib/curses/textpad.py +236 -0
- package/python/Lib/dataclasses.py +1679 -0
- package/python/Lib/datetime.py +9 -0
- package/python/Lib/dbm/__init__.py +194 -0
- package/python/Lib/dbm/dumb.py +319 -0
- package/python/Lib/dbm/gnu.py +3 -0
- package/python/Lib/dbm/ndbm.py +3 -0
- package/python/Lib/dbm/sqlite3.py +144 -0
- package/python/Lib/decimal.py +109 -0
- package/python/Lib/difflib.py +2058 -0
- package/python/Lib/dis.py +1075 -0
- package/python/Lib/doctest.py +2919 -0
- package/python/Lib/email/__init__.py +61 -0
- package/python/Lib/email/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_encoded_words.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_parseaddr.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/_policybase.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/base64mime.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/charset.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/encoders.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/errors.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/feedparser.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/header.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/iterators.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/message.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/parser.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/quoprimime.cpython-313.pyc +0 -0
- package/python/Lib/email/__pycache__/utils.cpython-313.pyc +0 -0
- package/python/Lib/email/_encoded_words.py +233 -0
- package/python/Lib/email/_header_value_parser.py +3153 -0
- package/python/Lib/email/_parseaddr.py +563 -0
- package/python/Lib/email/_policybase.py +382 -0
- package/python/Lib/email/architecture.rst +216 -0
- package/python/Lib/email/base64mime.py +115 -0
- package/python/Lib/email/charset.py +396 -0
- package/python/Lib/email/contentmanager.py +254 -0
- package/python/Lib/email/encoders.py +65 -0
- package/python/Lib/email/errors.py +117 -0
- package/python/Lib/email/feedparser.py +536 -0
- package/python/Lib/email/generator.py +530 -0
- package/python/Lib/email/header.py +582 -0
- package/python/Lib/email/headerregistry.py +618 -0
- package/python/Lib/email/iterators.py +68 -0
- package/python/Lib/email/message.py +1217 -0
- package/python/Lib/email/mime/__init__.py +0 -0
- package/python/Lib/email/mime/application.py +37 -0
- package/python/Lib/email/mime/audio.py +97 -0
- package/python/Lib/email/mime/base.py +29 -0
- package/python/Lib/email/mime/image.py +152 -0
- package/python/Lib/email/mime/message.py +33 -0
- package/python/Lib/email/mime/multipart.py +47 -0
- package/python/Lib/email/mime/nonmultipart.py +21 -0
- package/python/Lib/email/mime/text.py +40 -0
- package/python/Lib/email/parser.py +127 -0
- package/python/Lib/email/policy.py +232 -0
- package/python/Lib/email/quoprimime.py +300 -0
- package/python/Lib/email/utils.py +497 -0
- package/python/Lib/encodings/__init__.py +179 -0
- package/python/Lib/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/cp1252.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/cp437.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/hex_codec.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/idna.cpython-313.pyc +0 -0
- package/python/Lib/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
- package/python/Lib/encodings/aliases.py +560 -0
- package/python/Lib/encodings/ascii.py +50 -0
- package/python/Lib/encodings/base64_codec.py +55 -0
- package/python/Lib/encodings/big5.py +39 -0
- package/python/Lib/encodings/big5hkscs.py +39 -0
- package/python/Lib/encodings/bz2_codec.py +78 -0
- package/python/Lib/encodings/charmap.py +69 -0
- package/python/Lib/encodings/cp037.py +307 -0
- package/python/Lib/encodings/cp1006.py +307 -0
- package/python/Lib/encodings/cp1026.py +307 -0
- package/python/Lib/encodings/cp1125.py +698 -0
- package/python/Lib/encodings/cp1140.py +307 -0
- package/python/Lib/encodings/cp1250.py +307 -0
- package/python/Lib/encodings/cp1251.py +307 -0
- package/python/Lib/encodings/cp1252.py +307 -0
- package/python/Lib/encodings/cp1253.py +307 -0
- package/python/Lib/encodings/cp1254.py +307 -0
- package/python/Lib/encodings/cp1255.py +307 -0
- package/python/Lib/encodings/cp1256.py +307 -0
- package/python/Lib/encodings/cp1257.py +307 -0
- package/python/Lib/encodings/cp1258.py +307 -0
- package/python/Lib/encodings/cp273.py +307 -0
- package/python/Lib/encodings/cp424.py +307 -0
- package/python/Lib/encodings/cp437.py +698 -0
- package/python/Lib/encodings/cp500.py +307 -0
- package/python/Lib/encodings/cp720.py +309 -0
- package/python/Lib/encodings/cp737.py +698 -0
- package/python/Lib/encodings/cp775.py +697 -0
- package/python/Lib/encodings/cp850.py +698 -0
- package/python/Lib/encodings/cp852.py +698 -0
- package/python/Lib/encodings/cp855.py +698 -0
- package/python/Lib/encodings/cp856.py +307 -0
- package/python/Lib/encodings/cp857.py +694 -0
- package/python/Lib/encodings/cp858.py +698 -0
- package/python/Lib/encodings/cp860.py +698 -0
- package/python/Lib/encodings/cp861.py +698 -0
- package/python/Lib/encodings/cp862.py +698 -0
- package/python/Lib/encodings/cp863.py +698 -0
- package/python/Lib/encodings/cp864.py +690 -0
- package/python/Lib/encodings/cp865.py +698 -0
- package/python/Lib/encodings/cp866.py +698 -0
- package/python/Lib/encodings/cp869.py +689 -0
- package/python/Lib/encodings/cp874.py +307 -0
- package/python/Lib/encodings/cp875.py +307 -0
- package/python/Lib/encodings/cp932.py +39 -0
- package/python/Lib/encodings/cp949.py +39 -0
- package/python/Lib/encodings/cp950.py +39 -0
- package/python/Lib/encodings/euc_jis_2004.py +39 -0
- package/python/Lib/encodings/euc_jisx0213.py +39 -0
- package/python/Lib/encodings/euc_jp.py +39 -0
- package/python/Lib/encodings/euc_kr.py +39 -0
- package/python/Lib/encodings/gb18030.py +39 -0
- package/python/Lib/encodings/gb2312.py +39 -0
- package/python/Lib/encodings/gbk.py +39 -0
- package/python/Lib/encodings/hex_codec.py +55 -0
- package/python/Lib/encodings/hp_roman8.py +314 -0
- package/python/Lib/encodings/hz.py +39 -0
- package/python/Lib/encodings/idna.py +387 -0
- package/python/Lib/encodings/iso2022_jp.py +39 -0
- package/python/Lib/encodings/iso2022_jp_1.py +39 -0
- package/python/Lib/encodings/iso2022_jp_2.py +39 -0
- package/python/Lib/encodings/iso2022_jp_2004.py +39 -0
- package/python/Lib/encodings/iso2022_jp_3.py +39 -0
- package/python/Lib/encodings/iso2022_jp_ext.py +39 -0
- package/python/Lib/encodings/iso2022_kr.py +39 -0
- package/python/Lib/encodings/iso8859_1.py +307 -0
- package/python/Lib/encodings/iso8859_10.py +307 -0
- package/python/Lib/encodings/iso8859_11.py +307 -0
- package/python/Lib/encodings/iso8859_13.py +307 -0
- package/python/Lib/encodings/iso8859_14.py +307 -0
- package/python/Lib/encodings/iso8859_15.py +307 -0
- package/python/Lib/encodings/iso8859_16.py +307 -0
- package/python/Lib/encodings/iso8859_2.py +307 -0
- package/python/Lib/encodings/iso8859_3.py +307 -0
- package/python/Lib/encodings/iso8859_4.py +307 -0
- package/python/Lib/encodings/iso8859_5.py +307 -0
- package/python/Lib/encodings/iso8859_6.py +307 -0
- package/python/Lib/encodings/iso8859_7.py +307 -0
- package/python/Lib/encodings/iso8859_8.py +307 -0
- package/python/Lib/encodings/iso8859_9.py +307 -0
- package/python/Lib/encodings/johab.py +39 -0
- package/python/Lib/encodings/koi8_r.py +307 -0
- package/python/Lib/encodings/koi8_t.py +308 -0
- package/python/Lib/encodings/koi8_u.py +307 -0
- package/python/Lib/encodings/kz1048.py +307 -0
- package/python/Lib/encodings/latin_1.py +50 -0
- package/python/Lib/encodings/mac_arabic.py +698 -0
- package/python/Lib/encodings/mac_croatian.py +307 -0
- package/python/Lib/encodings/mac_cyrillic.py +307 -0
- package/python/Lib/encodings/mac_farsi.py +307 -0
- package/python/Lib/encodings/mac_greek.py +307 -0
- package/python/Lib/encodings/mac_iceland.py +307 -0
- package/python/Lib/encodings/mac_latin2.py +312 -0
- package/python/Lib/encodings/mac_roman.py +307 -0
- package/python/Lib/encodings/mac_romanian.py +307 -0
- package/python/Lib/encodings/mac_turkish.py +307 -0
- package/python/Lib/encodings/mbcs.py +47 -0
- package/python/Lib/encodings/oem.py +41 -0
- package/python/Lib/encodings/palmos.py +308 -0
- package/python/Lib/encodings/ptcp154.py +312 -0
- package/python/Lib/encodings/punycode.py +253 -0
- package/python/Lib/encodings/quopri_codec.py +56 -0
- package/python/Lib/encodings/raw_unicode_escape.py +46 -0
- package/python/Lib/encodings/rot_13.py +113 -0
- package/python/Lib/encodings/shift_jis.py +39 -0
- package/python/Lib/encodings/shift_jis_2004.py +39 -0
- package/python/Lib/encodings/shift_jisx0213.py +39 -0
- package/python/Lib/encodings/tis_620.py +307 -0
- package/python/Lib/encodings/undefined.py +49 -0
- package/python/Lib/encodings/unicode_escape.py +46 -0
- package/python/Lib/encodings/utf_16.py +155 -0
- package/python/Lib/encodings/utf_16_be.py +42 -0
- package/python/Lib/encodings/utf_16_le.py +42 -0
- package/python/Lib/encodings/utf_32.py +150 -0
- package/python/Lib/encodings/utf_32_be.py +37 -0
- package/python/Lib/encodings/utf_32_le.py +37 -0
- package/python/Lib/encodings/utf_7.py +38 -0
- package/python/Lib/encodings/utf_8.py +42 -0
- package/python/Lib/encodings/utf_8_sig.py +130 -0
- package/python/Lib/encodings/uu_codec.py +103 -0
- package/python/Lib/encodings/zlib_codec.py +77 -0
- package/python/Lib/enum.py +2183 -0
- package/python/Lib/filecmp.py +320 -0
- package/python/Lib/fileinput.py +442 -0
- package/python/Lib/fnmatch.py +192 -0
- package/python/Lib/fractions.py +1043 -0
- package/python/Lib/ftplib.py +975 -0
- package/python/Lib/functools.py +1036 -0
- package/python/Lib/genericpath.py +200 -0
- package/python/Lib/getopt.py +215 -0
- package/python/Lib/getpass.py +192 -0
- package/python/Lib/gettext.py +657 -0
- package/python/Lib/glob.py +572 -0
- package/python/Lib/graphlib.py +250 -0
- package/python/Lib/gzip.py +693 -0
- package/python/Lib/hashlib.py +255 -0
- package/python/Lib/heapq.py +603 -0
- package/python/Lib/hmac.py +220 -0
- package/python/Lib/html/__init__.py +132 -0
- package/python/Lib/html/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/html/__pycache__/entities.cpython-313.pyc +0 -0
- package/python/Lib/html/__pycache__/parser.cpython-313.pyc +0 -0
- package/python/Lib/html/entities.py +2513 -0
- package/python/Lib/html/parser.py +583 -0
- package/python/Lib/http/__init__.py +202 -0
- package/python/Lib/http/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/client.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/cookiejar.cpython-313.pyc +0 -0
- package/python/Lib/http/__pycache__/cookies.cpython-313.pyc +0 -0
- package/python/Lib/http/client.py +1598 -0
- package/python/Lib/http/cookiejar.py +2122 -0
- package/python/Lib/http/cookies.py +635 -0
- package/python/Lib/http/server.py +1355 -0
- package/python/Lib/imaplib.py +1769 -0
- package/python/Lib/importlib/__init__.py +136 -0
- package/python/Lib/importlib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/_abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/__pycache__/readers.cpython-313.pyc +0 -0
- package/python/Lib/importlib/_abc.py +39 -0
- package/python/Lib/importlib/_bootstrap.py +1559 -0
- package/python/Lib/importlib/_bootstrap_external.py +1826 -0
- package/python/Lib/importlib/abc.py +243 -0
- package/python/Lib/importlib/machinery.py +21 -0
- package/python/Lib/importlib/metadata/__init__.py +1093 -0
- package/python/Lib/importlib/metadata/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_adapters.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_collections.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_functools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_itertools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_meta.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/__pycache__/_text.cpython-313.pyc +0 -0
- package/python/Lib/importlib/metadata/_adapters.py +89 -0
- package/python/Lib/importlib/metadata/_collections.py +30 -0
- package/python/Lib/importlib/metadata/_functools.py +104 -0
- package/python/Lib/importlib/metadata/_itertools.py +73 -0
- package/python/Lib/importlib/metadata/_meta.py +67 -0
- package/python/Lib/importlib/metadata/_text.py +99 -0
- package/python/Lib/importlib/metadata/diagnose.py +21 -0
- package/python/Lib/importlib/readers.py +12 -0
- package/python/Lib/importlib/resources/__init__.py +43 -0
- package/python/Lib/importlib/resources/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_adapters.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_common.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_functional.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/_itertools.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/abc.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/__pycache__/readers.cpython-313.pyc +0 -0
- package/python/Lib/importlib/resources/_adapters.py +168 -0
- package/python/Lib/importlib/resources/_common.py +211 -0
- package/python/Lib/importlib/resources/_functional.py +81 -0
- package/python/Lib/importlib/resources/_itertools.py +38 -0
- package/python/Lib/importlib/resources/abc.py +173 -0
- package/python/Lib/importlib/resources/readers.py +203 -0
- package/python/Lib/importlib/resources/simple.py +106 -0
- package/python/Lib/importlib/simple.py +14 -0
- package/python/Lib/importlib/util.py +274 -0
- package/python/Lib/inspect.py +3479 -0
- package/python/Lib/io.py +99 -0
- package/python/Lib/ipaddress.py +2440 -0
- package/python/Lib/json/__init__.py +365 -0
- package/python/Lib/json/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/decoder.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/encoder.cpython-313.pyc +0 -0
- package/python/Lib/json/__pycache__/scanner.cpython-313.pyc +0 -0
- package/python/Lib/json/decoder.py +364 -0
- package/python/Lib/json/encoder.py +446 -0
- package/python/Lib/json/scanner.py +73 -0
- package/python/Lib/json/tool.py +90 -0
- package/python/Lib/keyword.py +64 -0
- package/python/Lib/linecache.py +236 -0
- package/python/Lib/locale.py +1987 -0
- package/python/Lib/logging/__init__.py +2330 -0
- package/python/Lib/logging/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/logging/__pycache__/config.cpython-313.pyc +0 -0
- package/python/Lib/logging/__pycache__/handlers.cpython-313.pyc +0 -0
- package/python/Lib/logging/config.py +1080 -0
- package/python/Lib/logging/handlers.py +1629 -0
- package/python/Lib/lzma.py +364 -0
- package/python/Lib/mailbox.py +2219 -0
- package/python/Lib/mimetypes.py +679 -0
- package/python/Lib/modulefinder.py +671 -0
- package/python/Lib/multiprocessing/__init__.py +37 -0
- package/python/Lib/multiprocessing/connection.py +1216 -0
- package/python/Lib/multiprocessing/context.py +383 -0
- package/python/Lib/multiprocessing/dummy/__init__.py +126 -0
- package/python/Lib/multiprocessing/dummy/connection.py +75 -0
- package/python/Lib/multiprocessing/forkserver.py +373 -0
- package/python/Lib/multiprocessing/heap.py +337 -0
- package/python/Lib/multiprocessing/managers.py +1397 -0
- package/python/Lib/multiprocessing/pool.py +957 -0
- package/python/Lib/multiprocessing/popen_fork.py +97 -0
- package/python/Lib/multiprocessing/popen_forkserver.py +74 -0
- package/python/Lib/multiprocessing/popen_spawn_posix.py +76 -0
- package/python/Lib/multiprocessing/popen_spawn_win32.py +147 -0
- package/python/Lib/multiprocessing/process.py +436 -0
- package/python/Lib/multiprocessing/queues.py +399 -0
- package/python/Lib/multiprocessing/reduction.py +281 -0
- package/python/Lib/multiprocessing/resource_sharer.py +154 -0
- package/python/Lib/multiprocessing/resource_tracker.py +499 -0
- package/python/Lib/multiprocessing/shared_memory.py +544 -0
- package/python/Lib/multiprocessing/sharedctypes.py +240 -0
- package/python/Lib/multiprocessing/spawn.py +307 -0
- package/python/Lib/multiprocessing/synchronize.py +404 -0
- package/python/Lib/multiprocessing/util.py +562 -0
- package/python/Lib/netrc.py +199 -0
- package/python/Lib/ntpath.py +872 -0
- package/python/Lib/nturl2path.py +69 -0
- package/python/Lib/numbers.py +427 -0
- package/python/Lib/opcode.py +115 -0
- package/python/Lib/operator.py +467 -0
- package/python/Lib/optparse.py +1681 -0
- package/python/Lib/os.py +1184 -0
- package/python/Lib/pathlib/__init__.py +12 -0
- package/python/Lib/pathlib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/__pycache__/_abc.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/__pycache__/_local.cpython-313.pyc +0 -0
- package/python/Lib/pathlib/_abc.py +930 -0
- package/python/Lib/pathlib/_local.py +861 -0
- package/python/Lib/pdb.py +2550 -0
- package/python/Lib/pickle.py +1860 -0
- package/python/Lib/pickletools.py +2904 -0
- package/python/Lib/pkgutil.py +529 -0
- package/python/Lib/platform.py +1454 -0
- package/python/Lib/plistlib.py +948 -0
- package/python/Lib/poplib.py +477 -0
- package/python/Lib/posixpath.py +578 -0
- package/python/Lib/pprint.py +658 -0
- package/python/Lib/profile.py +616 -0
- package/python/Lib/pstats.py +778 -0
- package/python/Lib/pty.py +211 -0
- package/python/Lib/py_compile.py +212 -0
- package/python/Lib/pyclbr.py +314 -0
- package/python/Lib/pydoc.py +2861 -0
- package/python/Lib/queue.py +383 -0
- package/python/Lib/quopri.py +237 -0
- package/python/Lib/random.py +1078 -0
- package/python/Lib/re/__init__.py +428 -0
- package/python/Lib/re/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_casefix.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_compiler.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_constants.cpython-313.pyc +0 -0
- package/python/Lib/re/__pycache__/_parser.cpython-313.pyc +0 -0
- package/python/Lib/re/_casefix.py +106 -0
- package/python/Lib/re/_compiler.py +768 -0
- package/python/Lib/re/_constants.py +222 -0
- package/python/Lib/re/_parser.py +1081 -0
- package/python/Lib/reprlib.py +230 -0
- package/python/Lib/rlcompleter.py +222 -0
- package/python/Lib/runpy.py +326 -0
- package/python/Lib/sched.py +167 -0
- package/python/Lib/secrets.py +71 -0
- package/python/Lib/selectors.py +603 -0
- package/python/Lib/shelve.py +250 -0
- package/python/Lib/shlex.py +345 -0
- package/python/Lib/shutil.py +1569 -0
- package/python/Lib/signal.py +94 -0
- package/python/Lib/site.py +773 -0
- package/python/Lib/smtplib.py +1123 -0
- package/python/Lib/socket.py +988 -0
- package/python/Lib/socketserver.py +863 -0
- package/python/Lib/sqlite3/__init__.py +70 -0
- package/python/Lib/sqlite3/__main__.py +139 -0
- package/python/Lib/sqlite3/dbapi2.py +108 -0
- package/python/Lib/sqlite3/dump.py +118 -0
- package/python/Lib/sre_compile.py +7 -0
- package/python/Lib/sre_constants.py +7 -0
- package/python/Lib/sre_parse.py +7 -0
- package/python/Lib/ssl.py +1529 -0
- package/python/Lib/stat.py +212 -0
- package/python/Lib/statistics.py +1817 -0
- package/python/Lib/string.py +314 -0
- package/python/Lib/stringprep.py +272 -0
- package/python/Lib/struct.py +15 -0
- package/python/Lib/subprocess.py +2258 -0
- package/python/Lib/symtable.py +414 -0
- package/python/Lib/sysconfig/__init__.py +734 -0
- package/python/Lib/sysconfig/__main__.py +248 -0
- package/python/Lib/sysconfig/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/tabnanny.py +340 -0
- package/python/Lib/tarfile.py +3136 -0
- package/python/Lib/tempfile.py +958 -0
- package/python/Lib/textwrap.py +497 -0
- package/python/Lib/this.py +28 -0
- package/python/Lib/threading.py +1602 -0
- package/python/Lib/timeit.py +381 -0
- package/python/Lib/token.py +141 -0
- package/python/Lib/tokenize.py +592 -0
- package/python/Lib/tomllib/__init__.py +10 -0
- package/python/Lib/tomllib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_parser.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_re.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/__pycache__/_types.cpython-313.pyc +0 -0
- package/python/Lib/tomllib/_parser.py +703 -0
- package/python/Lib/tomllib/_re.py +107 -0
- package/python/Lib/tomllib/_types.py +10 -0
- package/python/Lib/tomllib/mypy.ini +15 -0
- package/python/Lib/trace.py +754 -0
- package/python/Lib/traceback.py +1639 -0
- package/python/Lib/tracemalloc.py +560 -0
- package/python/Lib/tty.py +73 -0
- package/python/Lib/types.py +346 -0
- package/python/Lib/typing.py +3846 -0
- package/python/Lib/unittest/__init__.py +80 -0
- package/python/Lib/unittest/__main__.py +18 -0
- package/python/Lib/unittest/_log.py +86 -0
- package/python/Lib/unittest/async_case.py +146 -0
- package/python/Lib/unittest/case.py +1478 -0
- package/python/Lib/unittest/loader.py +460 -0
- package/python/Lib/unittest/main.py +280 -0
- package/python/Lib/unittest/mock.py +3189 -0
- package/python/Lib/unittest/result.py +256 -0
- package/python/Lib/unittest/runner.py +292 -0
- package/python/Lib/unittest/signals.py +71 -0
- package/python/Lib/unittest/suite.py +379 -0
- package/python/Lib/unittest/util.py +170 -0
- package/python/Lib/urllib/__init__.py +0 -0
- package/python/Lib/urllib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/error.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/parse.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/request.cpython-313.pyc +0 -0
- package/python/Lib/urllib/__pycache__/response.cpython-313.pyc +0 -0
- package/python/Lib/urllib/error.py +74 -0
- package/python/Lib/urllib/parse.py +1264 -0
- package/python/Lib/urllib/request.py +2796 -0
- package/python/Lib/urllib/response.py +84 -0
- package/python/Lib/urllib/robotparser.py +363 -0
- package/python/Lib/uuid.py +784 -0
- package/python/Lib/warnings.py +735 -0
- package/python/Lib/wave.py +665 -0
- package/python/Lib/weakref.py +674 -0
- package/python/Lib/webbrowser.py +724 -0
- package/python/Lib/wsgiref/__init__.py +25 -0
- package/python/Lib/wsgiref/handlers.py +575 -0
- package/python/Lib/wsgiref/headers.py +192 -0
- package/python/Lib/wsgiref/simple_server.py +161 -0
- package/python/Lib/wsgiref/types.py +54 -0
- package/python/Lib/wsgiref/util.py +159 -0
- package/python/Lib/wsgiref/validate.py +438 -0
- package/python/Lib/xml/__init__.py +20 -0
- package/python/Lib/xml/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xml/dom/NodeFilter.py +27 -0
- package/python/Lib/xml/dom/__init__.py +140 -0
- package/python/Lib/xml/dom/domreg.py +99 -0
- package/python/Lib/xml/dom/expatbuilder.py +962 -0
- package/python/Lib/xml/dom/minicompat.py +109 -0
- package/python/Lib/xml/dom/minidom.py +2024 -0
- package/python/Lib/xml/dom/pulldom.py +336 -0
- package/python/Lib/xml/dom/xmlbuilder.py +389 -0
- package/python/Lib/xml/etree/ElementInclude.py +186 -0
- package/python/Lib/xml/etree/ElementPath.py +430 -0
- package/python/Lib/xml/etree/ElementTree.py +2116 -0
- package/python/Lib/xml/etree/__init__.py +33 -0
- package/python/Lib/xml/etree/cElementTree.py +3 -0
- package/python/Lib/xml/parsers/__init__.py +8 -0
- package/python/Lib/xml/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xml/parsers/__pycache__/expat.cpython-313.pyc +0 -0
- package/python/Lib/xml/parsers/expat.py +8 -0
- package/python/Lib/xml/sax/__init__.py +94 -0
- package/python/Lib/xml/sax/_exceptions.py +127 -0
- package/python/Lib/xml/sax/expatreader.py +454 -0
- package/python/Lib/xml/sax/handler.py +387 -0
- package/python/Lib/xml/sax/saxutils.py +369 -0
- package/python/Lib/xml/sax/xmlreader.py +378 -0
- package/python/Lib/xmlrpc/__init__.py +1 -0
- package/python/Lib/xmlrpc/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/xmlrpc/__pycache__/client.cpython-313.pyc +0 -0
- package/python/Lib/xmlrpc/client.py +1503 -0
- package/python/Lib/xmlrpc/server.py +1002 -0
- package/python/Lib/zipapp.py +229 -0
- package/python/Lib/zipfile/__init__.py +2391 -0
- package/python/Lib/zipfile/__main__.py +4 -0
- package/python/Lib/zipfile/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/__init__.py +452 -0
- package/python/Lib/zipfile/_path/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/__pycache__/glob.cpython-313.pyc +0 -0
- package/python/Lib/zipfile/_path/glob.py +113 -0
- package/python/Lib/zipimport.py +803 -0
- package/python/Lib/zoneinfo/__init__.py +34 -0
- package/python/Lib/zoneinfo/_common.py +172 -0
- package/python/Lib/zoneinfo/_tzpath.py +189 -0
- package/python/Lib/zoneinfo/_zoneinfo.py +779 -0
- package/python/licenses/LICENSE.bdb.txt +126 -0
- package/python/licenses/LICENSE.bzip2.txt +37 -0
- package/python/licenses/LICENSE.cpython.txt +771 -0
- package/python/licenses/LICENSE.expat.txt +21 -0
- package/python/licenses/LICENSE.libX11.txt +942 -0
- package/python/licenses/LICENSE.libXau.txt +21 -0
- package/python/licenses/LICENSE.libedit.txt +29 -0
- package/python/licenses/LICENSE.libffi.txt +21 -0
- package/python/licenses/LICENSE.liblzma.txt +13 -0
- package/python/licenses/LICENSE.libuuid.txt +27 -0
- package/python/licenses/LICENSE.libxcb.txt +30 -0
- package/python/licenses/LICENSE.mpdecimal.txt +24 -0
- package/python/licenses/LICENSE.ncurses.txt +29 -0
- package/python/licenses/LICENSE.openssl-1.1.txt +124 -0
- package/python/licenses/LICENSE.openssl-3.txt +177 -0
- package/python/licenses/LICENSE.sqlite.txt +23 -0
- package/python/licenses/LICENSE.tcl.txt +40 -0
- package/python/licenses/LICENSE.tix.txt +54 -0
- package/python/licenses/LICENSE.zlib.txt +21 -0
- package/python/python.exe +0 -0
- package/python/python3.dll +0 -0
- package/python/python313.dll +0 -0
- package/python/pythonw.exe +0 -0
- package/python/vcruntime140.dll +0 -0
- package/python/vcruntime140_1.dll +0 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Path operations common to more than one OS
|
|
3
|
+
Do not use directly. The OS specific modules import the appropriate
|
|
4
|
+
functions from this module themselves.
|
|
5
|
+
"""
|
|
6
|
+
import os
|
|
7
|
+
import stat
|
|
8
|
+
|
|
9
|
+
__all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime',
|
|
10
|
+
'getsize', 'isdevdrive', 'isdir', 'isfile', 'isjunction', 'islink',
|
|
11
|
+
'lexists', 'samefile', 'sameopenfile', 'samestat', 'ALLOW_MISSING']
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Does a path exist?
|
|
15
|
+
# This is false for dangling symbolic links on systems that support them.
|
|
16
|
+
def exists(path):
|
|
17
|
+
"""Test whether a path exists. Returns False for broken symbolic links"""
|
|
18
|
+
try:
|
|
19
|
+
os.stat(path)
|
|
20
|
+
except (OSError, ValueError):
|
|
21
|
+
return False
|
|
22
|
+
return True
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Being true for dangling symbolic links is also useful.
|
|
26
|
+
def lexists(path):
|
|
27
|
+
"""Test whether a path exists. Returns True for broken symbolic links"""
|
|
28
|
+
try:
|
|
29
|
+
os.lstat(path)
|
|
30
|
+
except (OSError, ValueError):
|
|
31
|
+
return False
|
|
32
|
+
return True
|
|
33
|
+
|
|
34
|
+
# This follows symbolic links, so both islink() and isdir() can be true
|
|
35
|
+
# for the same path on systems that support symlinks
|
|
36
|
+
def isfile(path):
|
|
37
|
+
"""Test whether a path is a regular file"""
|
|
38
|
+
try:
|
|
39
|
+
st = os.stat(path)
|
|
40
|
+
except (OSError, ValueError):
|
|
41
|
+
return False
|
|
42
|
+
return stat.S_ISREG(st.st_mode)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Is a path a directory?
|
|
46
|
+
# This follows symbolic links, so both islink() and isdir()
|
|
47
|
+
# can be true for the same path on systems that support symlinks
|
|
48
|
+
def isdir(s):
|
|
49
|
+
"""Return true if the pathname refers to an existing directory."""
|
|
50
|
+
try:
|
|
51
|
+
st = os.stat(s)
|
|
52
|
+
except (OSError, ValueError):
|
|
53
|
+
return False
|
|
54
|
+
return stat.S_ISDIR(st.st_mode)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# Is a path a symbolic link?
|
|
58
|
+
# This will always return false on systems where os.lstat doesn't exist.
|
|
59
|
+
|
|
60
|
+
def islink(path):
|
|
61
|
+
"""Test whether a path is a symbolic link"""
|
|
62
|
+
try:
|
|
63
|
+
st = os.lstat(path)
|
|
64
|
+
except (OSError, ValueError, AttributeError):
|
|
65
|
+
return False
|
|
66
|
+
return stat.S_ISLNK(st.st_mode)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# Is a path a junction?
|
|
70
|
+
def isjunction(path):
|
|
71
|
+
"""Test whether a path is a junction
|
|
72
|
+
Junctions are not supported on the current platform"""
|
|
73
|
+
os.fspath(path)
|
|
74
|
+
return False
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def isdevdrive(path):
|
|
78
|
+
"""Determines whether the specified path is on a Windows Dev Drive.
|
|
79
|
+
Dev Drives are not supported on the current platform"""
|
|
80
|
+
os.fspath(path)
|
|
81
|
+
return False
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def getsize(filename):
|
|
85
|
+
"""Return the size of a file, reported by os.stat()."""
|
|
86
|
+
return os.stat(filename).st_size
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def getmtime(filename):
|
|
90
|
+
"""Return the last modification time of a file, reported by os.stat()."""
|
|
91
|
+
return os.stat(filename).st_mtime
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def getatime(filename):
|
|
95
|
+
"""Return the last access time of a file, reported by os.stat()."""
|
|
96
|
+
return os.stat(filename).st_atime
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def getctime(filename):
|
|
100
|
+
"""Return the metadata change time of a file, reported by os.stat()."""
|
|
101
|
+
return os.stat(filename).st_ctime
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
# Return the longest prefix of all list elements.
|
|
105
|
+
def commonprefix(m):
|
|
106
|
+
"Given a list of pathnames, returns the longest common leading component"
|
|
107
|
+
if not m: return ''
|
|
108
|
+
# Some people pass in a list of pathname parts to operate in an OS-agnostic
|
|
109
|
+
# fashion; don't try to translate in that case as that's an abuse of the
|
|
110
|
+
# API and they are already doing what they need to be OS-agnostic and so
|
|
111
|
+
# they most likely won't be using an os.PathLike object in the sublists.
|
|
112
|
+
if not isinstance(m[0], (list, tuple)):
|
|
113
|
+
m = tuple(map(os.fspath, m))
|
|
114
|
+
s1 = min(m)
|
|
115
|
+
s2 = max(m)
|
|
116
|
+
for i, c in enumerate(s1):
|
|
117
|
+
if c != s2[i]:
|
|
118
|
+
return s1[:i]
|
|
119
|
+
return s1
|
|
120
|
+
|
|
121
|
+
# Are two stat buffers (obtained from stat, fstat or lstat)
|
|
122
|
+
# describing the same file?
|
|
123
|
+
def samestat(s1, s2):
|
|
124
|
+
"""Test whether two stat buffers reference the same file"""
|
|
125
|
+
return (s1.st_ino == s2.st_ino and
|
|
126
|
+
s1.st_dev == s2.st_dev)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
# Are two filenames really pointing to the same file?
|
|
130
|
+
def samefile(f1, f2):
|
|
131
|
+
"""Test whether two pathnames reference the same actual file or directory
|
|
132
|
+
|
|
133
|
+
This is determined by the device number and i-node number and
|
|
134
|
+
raises an exception if an os.stat() call on either pathname fails.
|
|
135
|
+
"""
|
|
136
|
+
s1 = os.stat(f1)
|
|
137
|
+
s2 = os.stat(f2)
|
|
138
|
+
return samestat(s1, s2)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
# Are two open files really referencing the same file?
|
|
142
|
+
# (Not necessarily the same file descriptor!)
|
|
143
|
+
def sameopenfile(fp1, fp2):
|
|
144
|
+
"""Test whether two open file objects reference the same file"""
|
|
145
|
+
s1 = os.fstat(fp1)
|
|
146
|
+
s2 = os.fstat(fp2)
|
|
147
|
+
return samestat(s1, s2)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# Split a path in root and extension.
|
|
151
|
+
# The extension is everything starting at the last dot in the last
|
|
152
|
+
# pathname component; the root is everything before that.
|
|
153
|
+
# It is always true that root + ext == p.
|
|
154
|
+
|
|
155
|
+
# Generic implementation of splitext, to be parametrized with
|
|
156
|
+
# the separators
|
|
157
|
+
def _splitext(p, sep, altsep, extsep):
|
|
158
|
+
"""Split the extension from a pathname.
|
|
159
|
+
|
|
160
|
+
Extension is everything from the last dot to the end, ignoring
|
|
161
|
+
leading dots. Returns "(root, ext)"; ext may be empty."""
|
|
162
|
+
# NOTE: This code must work for text and bytes strings.
|
|
163
|
+
|
|
164
|
+
sepIndex = p.rfind(sep)
|
|
165
|
+
if altsep:
|
|
166
|
+
altsepIndex = p.rfind(altsep)
|
|
167
|
+
sepIndex = max(sepIndex, altsepIndex)
|
|
168
|
+
|
|
169
|
+
dotIndex = p.rfind(extsep)
|
|
170
|
+
if dotIndex > sepIndex:
|
|
171
|
+
# skip all leading dots
|
|
172
|
+
filenameIndex = sepIndex + 1
|
|
173
|
+
while filenameIndex < dotIndex:
|
|
174
|
+
if p[filenameIndex:filenameIndex+1] != extsep:
|
|
175
|
+
return p[:dotIndex], p[dotIndex:]
|
|
176
|
+
filenameIndex += 1
|
|
177
|
+
|
|
178
|
+
return p, p[:0]
|
|
179
|
+
|
|
180
|
+
def _check_arg_types(funcname, *args):
|
|
181
|
+
hasstr = hasbytes = False
|
|
182
|
+
for s in args:
|
|
183
|
+
if isinstance(s, str):
|
|
184
|
+
hasstr = True
|
|
185
|
+
elif isinstance(s, bytes):
|
|
186
|
+
hasbytes = True
|
|
187
|
+
else:
|
|
188
|
+
raise TypeError(f'{funcname}() argument must be str, bytes, or '
|
|
189
|
+
f'os.PathLike object, not {s.__class__.__name__!r}') from None
|
|
190
|
+
if hasstr and hasbytes:
|
|
191
|
+
raise TypeError("Can't mix strings and bytes in path components") from None
|
|
192
|
+
|
|
193
|
+
# A singleton with a true boolean value.
|
|
194
|
+
@object.__new__
|
|
195
|
+
class ALLOW_MISSING:
|
|
196
|
+
"""Special value for use in realpath()."""
|
|
197
|
+
def __repr__(self):
|
|
198
|
+
return 'os.path.ALLOW_MISSING'
|
|
199
|
+
def __reduce__(self):
|
|
200
|
+
return self.__class__.__name__
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"""Parser for command line options.
|
|
2
|
+
|
|
3
|
+
This module helps scripts to parse the command line arguments in
|
|
4
|
+
sys.argv. It supports the same conventions as the Unix getopt()
|
|
5
|
+
function (including the special meanings of arguments of the form `-'
|
|
6
|
+
and `--'). Long options similar to those supported by GNU software
|
|
7
|
+
may be used as well via an optional third argument. This module
|
|
8
|
+
provides two functions and an exception:
|
|
9
|
+
|
|
10
|
+
getopt() -- Parse command line options
|
|
11
|
+
gnu_getopt() -- Like getopt(), but allow option and non-option arguments
|
|
12
|
+
to be intermixed.
|
|
13
|
+
GetoptError -- exception (class) raised with 'opt' attribute, which is the
|
|
14
|
+
option involved with the exception.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# Long option support added by Lars Wirzenius <liw@iki.fi>.
|
|
18
|
+
#
|
|
19
|
+
# Gerrit Holl <gerrit@nl.linux.org> moved the string-based exceptions
|
|
20
|
+
# to class-based exceptions.
|
|
21
|
+
#
|
|
22
|
+
# Peter Åstrand <astrand@lysator.liu.se> added gnu_getopt().
|
|
23
|
+
#
|
|
24
|
+
# TODO for gnu_getopt():
|
|
25
|
+
#
|
|
26
|
+
# - GNU getopt_long_only mechanism
|
|
27
|
+
# - allow the caller to specify ordering
|
|
28
|
+
# - RETURN_IN_ORDER option
|
|
29
|
+
# - GNU extension with '-' as first character of option string
|
|
30
|
+
# - optional arguments, specified by double colons
|
|
31
|
+
# - an option string with a W followed by semicolon should
|
|
32
|
+
# treat "-W foo" as "--foo"
|
|
33
|
+
|
|
34
|
+
__all__ = ["GetoptError","error","getopt","gnu_getopt"]
|
|
35
|
+
|
|
36
|
+
import os
|
|
37
|
+
try:
|
|
38
|
+
from gettext import gettext as _
|
|
39
|
+
except ImportError:
|
|
40
|
+
# Bootstrapping Python: gettext's dependencies not built yet
|
|
41
|
+
def _(s): return s
|
|
42
|
+
|
|
43
|
+
class GetoptError(Exception):
|
|
44
|
+
opt = ''
|
|
45
|
+
msg = ''
|
|
46
|
+
def __init__(self, msg, opt=''):
|
|
47
|
+
self.msg = msg
|
|
48
|
+
self.opt = opt
|
|
49
|
+
Exception.__init__(self, msg, opt)
|
|
50
|
+
|
|
51
|
+
def __str__(self):
|
|
52
|
+
return self.msg
|
|
53
|
+
|
|
54
|
+
error = GetoptError # backward compatibility
|
|
55
|
+
|
|
56
|
+
def getopt(args, shortopts, longopts = []):
|
|
57
|
+
"""getopt(args, options[, long_options]) -> opts, args
|
|
58
|
+
|
|
59
|
+
Parses command line options and parameter list. args is the
|
|
60
|
+
argument list to be parsed, without the leading reference to the
|
|
61
|
+
running program. Typically, this means "sys.argv[1:]". shortopts
|
|
62
|
+
is the string of option letters that the script wants to
|
|
63
|
+
recognize, with options that require an argument followed by a
|
|
64
|
+
colon (i.e., the same format that Unix getopt() uses). If
|
|
65
|
+
specified, longopts is a list of strings with the names of the
|
|
66
|
+
long options which should be supported. The leading '--'
|
|
67
|
+
characters should not be included in the option name. Options
|
|
68
|
+
which require an argument should be followed by an equal sign
|
|
69
|
+
('=').
|
|
70
|
+
|
|
71
|
+
The return value consists of two elements: the first is a list of
|
|
72
|
+
(option, value) pairs; the second is the list of program arguments
|
|
73
|
+
left after the option list was stripped (this is a trailing slice
|
|
74
|
+
of the first argument). Each option-and-value pair returned has
|
|
75
|
+
the option as its first element, prefixed with a hyphen (e.g.,
|
|
76
|
+
'-x'), and the option argument as its second element, or an empty
|
|
77
|
+
string if the option has no argument. The options occur in the
|
|
78
|
+
list in the same order in which they were found, thus allowing
|
|
79
|
+
multiple occurrences. Long and short options may be mixed.
|
|
80
|
+
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
opts = []
|
|
84
|
+
if isinstance(longopts, str):
|
|
85
|
+
longopts = [longopts]
|
|
86
|
+
else:
|
|
87
|
+
longopts = list(longopts)
|
|
88
|
+
while args and args[0].startswith('-') and args[0] != '-':
|
|
89
|
+
if args[0] == '--':
|
|
90
|
+
args = args[1:]
|
|
91
|
+
break
|
|
92
|
+
if args[0].startswith('--'):
|
|
93
|
+
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
|
|
94
|
+
else:
|
|
95
|
+
opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
|
|
96
|
+
|
|
97
|
+
return opts, args
|
|
98
|
+
|
|
99
|
+
def gnu_getopt(args, shortopts, longopts = []):
|
|
100
|
+
"""getopt(args, options[, long_options]) -> opts, args
|
|
101
|
+
|
|
102
|
+
This function works like getopt(), except that GNU style scanning
|
|
103
|
+
mode is used by default. This means that option and non-option
|
|
104
|
+
arguments may be intermixed. The getopt() function stops
|
|
105
|
+
processing options as soon as a non-option argument is
|
|
106
|
+
encountered.
|
|
107
|
+
|
|
108
|
+
If the first character of the option string is `+', or if the
|
|
109
|
+
environment variable POSIXLY_CORRECT is set, then option
|
|
110
|
+
processing stops as soon as a non-option argument is encountered.
|
|
111
|
+
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
opts = []
|
|
115
|
+
prog_args = []
|
|
116
|
+
if isinstance(longopts, str):
|
|
117
|
+
longopts = [longopts]
|
|
118
|
+
else:
|
|
119
|
+
longopts = list(longopts)
|
|
120
|
+
|
|
121
|
+
# Allow options after non-option arguments?
|
|
122
|
+
if shortopts.startswith('+'):
|
|
123
|
+
shortopts = shortopts[1:]
|
|
124
|
+
all_options_first = True
|
|
125
|
+
elif os.environ.get("POSIXLY_CORRECT"):
|
|
126
|
+
all_options_first = True
|
|
127
|
+
else:
|
|
128
|
+
all_options_first = False
|
|
129
|
+
|
|
130
|
+
while args:
|
|
131
|
+
if args[0] == '--':
|
|
132
|
+
prog_args += args[1:]
|
|
133
|
+
break
|
|
134
|
+
|
|
135
|
+
if args[0][:2] == '--':
|
|
136
|
+
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
|
|
137
|
+
elif args[0][:1] == '-' and args[0] != '-':
|
|
138
|
+
opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
|
|
139
|
+
else:
|
|
140
|
+
if all_options_first:
|
|
141
|
+
prog_args += args
|
|
142
|
+
break
|
|
143
|
+
else:
|
|
144
|
+
prog_args.append(args[0])
|
|
145
|
+
args = args[1:]
|
|
146
|
+
|
|
147
|
+
return opts, prog_args
|
|
148
|
+
|
|
149
|
+
def do_longs(opts, opt, longopts, args):
|
|
150
|
+
try:
|
|
151
|
+
i = opt.index('=')
|
|
152
|
+
except ValueError:
|
|
153
|
+
optarg = None
|
|
154
|
+
else:
|
|
155
|
+
opt, optarg = opt[:i], opt[i+1:]
|
|
156
|
+
|
|
157
|
+
has_arg, opt = long_has_args(opt, longopts)
|
|
158
|
+
if has_arg:
|
|
159
|
+
if optarg is None:
|
|
160
|
+
if not args:
|
|
161
|
+
raise GetoptError(_('option --%s requires argument') % opt, opt)
|
|
162
|
+
optarg, args = args[0], args[1:]
|
|
163
|
+
elif optarg is not None:
|
|
164
|
+
raise GetoptError(_('option --%s must not have an argument') % opt, opt)
|
|
165
|
+
opts.append(('--' + opt, optarg or ''))
|
|
166
|
+
return opts, args
|
|
167
|
+
|
|
168
|
+
# Return:
|
|
169
|
+
# has_arg?
|
|
170
|
+
# full option name
|
|
171
|
+
def long_has_args(opt, longopts):
|
|
172
|
+
possibilities = [o for o in longopts if o.startswith(opt)]
|
|
173
|
+
if not possibilities:
|
|
174
|
+
raise GetoptError(_('option --%s not recognized') % opt, opt)
|
|
175
|
+
# Is there an exact match?
|
|
176
|
+
if opt in possibilities:
|
|
177
|
+
return False, opt
|
|
178
|
+
elif opt + '=' in possibilities:
|
|
179
|
+
return True, opt
|
|
180
|
+
# No exact match, so better be unique.
|
|
181
|
+
if len(possibilities) > 1:
|
|
182
|
+
# XXX since possibilities contains all valid continuations, might be
|
|
183
|
+
# nice to work them into the error msg
|
|
184
|
+
raise GetoptError(_('option --%s not a unique prefix') % opt, opt)
|
|
185
|
+
assert len(possibilities) == 1
|
|
186
|
+
unique_match = possibilities[0]
|
|
187
|
+
has_arg = unique_match.endswith('=')
|
|
188
|
+
if has_arg:
|
|
189
|
+
unique_match = unique_match[:-1]
|
|
190
|
+
return has_arg, unique_match
|
|
191
|
+
|
|
192
|
+
def do_shorts(opts, optstring, shortopts, args):
|
|
193
|
+
while optstring != '':
|
|
194
|
+
opt, optstring = optstring[0], optstring[1:]
|
|
195
|
+
if short_has_arg(opt, shortopts):
|
|
196
|
+
if optstring == '':
|
|
197
|
+
if not args:
|
|
198
|
+
raise GetoptError(_('option -%s requires argument') % opt,
|
|
199
|
+
opt)
|
|
200
|
+
optstring, args = args[0], args[1:]
|
|
201
|
+
optarg, optstring = optstring, ''
|
|
202
|
+
else:
|
|
203
|
+
optarg = ''
|
|
204
|
+
opts.append(('-' + opt, optarg))
|
|
205
|
+
return opts, args
|
|
206
|
+
|
|
207
|
+
def short_has_arg(opt, shortopts):
|
|
208
|
+
for i in range(len(shortopts)):
|
|
209
|
+
if opt == shortopts[i] != ':':
|
|
210
|
+
return shortopts.startswith(':', i+1)
|
|
211
|
+
raise GetoptError(_('option -%s not recognized') % opt, opt)
|
|
212
|
+
|
|
213
|
+
if __name__ == '__main__':
|
|
214
|
+
import sys
|
|
215
|
+
print(getopt(sys.argv[1:], "a:b", ["alpha=", "beta"]))
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"""Utilities to get a password and/or the current user name.
|
|
2
|
+
|
|
3
|
+
getpass(prompt[, stream]) - Prompt for a password, with echo turned off.
|
|
4
|
+
getuser() - Get the user name from the environment or password database.
|
|
5
|
+
|
|
6
|
+
GetPassWarning - This UserWarning is issued when getpass() cannot prevent
|
|
7
|
+
echoing of the password contents while reading.
|
|
8
|
+
|
|
9
|
+
On Windows, the msvcrt module will be used.
|
|
10
|
+
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
# Authors: Piers Lauder (original)
|
|
14
|
+
# Guido van Rossum (Windows support and cleanup)
|
|
15
|
+
# Gregory P. Smith (tty support & GetPassWarning)
|
|
16
|
+
|
|
17
|
+
import contextlib
|
|
18
|
+
import io
|
|
19
|
+
import os
|
|
20
|
+
import sys
|
|
21
|
+
|
|
22
|
+
__all__ = ["getpass","getuser","GetPassWarning"]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class GetPassWarning(UserWarning): pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def unix_getpass(prompt='Password: ', stream=None):
|
|
29
|
+
"""Prompt for a password, with echo turned off.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
prompt: Written on stream to ask for the input. Default: 'Password: '
|
|
33
|
+
stream: A writable file object to display the prompt. Defaults to
|
|
34
|
+
the tty. If no tty is available defaults to sys.stderr.
|
|
35
|
+
Returns:
|
|
36
|
+
The seKr3t input.
|
|
37
|
+
Raises:
|
|
38
|
+
EOFError: If our input tty or stdin was closed.
|
|
39
|
+
GetPassWarning: When we were unable to turn echo off on the input.
|
|
40
|
+
|
|
41
|
+
Always restores terminal settings before returning.
|
|
42
|
+
"""
|
|
43
|
+
passwd = None
|
|
44
|
+
with contextlib.ExitStack() as stack:
|
|
45
|
+
try:
|
|
46
|
+
# Always try reading and writing directly on the tty first.
|
|
47
|
+
fd = os.open('/dev/tty', os.O_RDWR|os.O_NOCTTY)
|
|
48
|
+
tty = io.FileIO(fd, 'w+')
|
|
49
|
+
stack.enter_context(tty)
|
|
50
|
+
input = io.TextIOWrapper(tty)
|
|
51
|
+
stack.enter_context(input)
|
|
52
|
+
if not stream:
|
|
53
|
+
stream = input
|
|
54
|
+
except OSError:
|
|
55
|
+
# If that fails, see if stdin can be controlled.
|
|
56
|
+
stack.close()
|
|
57
|
+
try:
|
|
58
|
+
fd = sys.stdin.fileno()
|
|
59
|
+
except (AttributeError, ValueError):
|
|
60
|
+
fd = None
|
|
61
|
+
passwd = fallback_getpass(prompt, stream)
|
|
62
|
+
input = sys.stdin
|
|
63
|
+
if not stream:
|
|
64
|
+
stream = sys.stderr
|
|
65
|
+
|
|
66
|
+
if fd is not None:
|
|
67
|
+
try:
|
|
68
|
+
old = termios.tcgetattr(fd) # a copy to save
|
|
69
|
+
new = old[:]
|
|
70
|
+
new[3] &= ~termios.ECHO # 3 == 'lflags'
|
|
71
|
+
tcsetattr_flags = termios.TCSAFLUSH
|
|
72
|
+
if hasattr(termios, 'TCSASOFT'):
|
|
73
|
+
tcsetattr_flags |= termios.TCSASOFT
|
|
74
|
+
try:
|
|
75
|
+
termios.tcsetattr(fd, tcsetattr_flags, new)
|
|
76
|
+
passwd = _raw_input(prompt, stream, input=input)
|
|
77
|
+
finally:
|
|
78
|
+
termios.tcsetattr(fd, tcsetattr_flags, old)
|
|
79
|
+
stream.flush() # issue7208
|
|
80
|
+
except termios.error:
|
|
81
|
+
if passwd is not None:
|
|
82
|
+
# _raw_input succeeded. The final tcsetattr failed. Reraise
|
|
83
|
+
# instead of leaving the terminal in an unknown state.
|
|
84
|
+
raise
|
|
85
|
+
# We can't control the tty or stdin. Give up and use normal IO.
|
|
86
|
+
# fallback_getpass() raises an appropriate warning.
|
|
87
|
+
if stream is not input:
|
|
88
|
+
# clean up unused file objects before blocking
|
|
89
|
+
stack.close()
|
|
90
|
+
passwd = fallback_getpass(prompt, stream)
|
|
91
|
+
|
|
92
|
+
stream.write('\n')
|
|
93
|
+
return passwd
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def win_getpass(prompt='Password: ', stream=None):
|
|
97
|
+
"""Prompt for password with echo off, using Windows getwch()."""
|
|
98
|
+
if sys.stdin is not sys.__stdin__:
|
|
99
|
+
return fallback_getpass(prompt, stream)
|
|
100
|
+
|
|
101
|
+
for c in prompt:
|
|
102
|
+
msvcrt.putwch(c)
|
|
103
|
+
pw = ""
|
|
104
|
+
while 1:
|
|
105
|
+
c = msvcrt.getwch()
|
|
106
|
+
if c == '\r' or c == '\n':
|
|
107
|
+
break
|
|
108
|
+
if c == '\003':
|
|
109
|
+
raise KeyboardInterrupt
|
|
110
|
+
if c == '\b':
|
|
111
|
+
pw = pw[:-1]
|
|
112
|
+
else:
|
|
113
|
+
pw = pw + c
|
|
114
|
+
msvcrt.putwch('\r')
|
|
115
|
+
msvcrt.putwch('\n')
|
|
116
|
+
return pw
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def fallback_getpass(prompt='Password: ', stream=None):
|
|
120
|
+
import warnings
|
|
121
|
+
warnings.warn("Can not control echo on the terminal.", GetPassWarning,
|
|
122
|
+
stacklevel=2)
|
|
123
|
+
if not stream:
|
|
124
|
+
stream = sys.stderr
|
|
125
|
+
print("Warning: Password input may be echoed.", file=stream)
|
|
126
|
+
return _raw_input(prompt, stream)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _raw_input(prompt="", stream=None, input=None):
|
|
130
|
+
# This doesn't save the string in the GNU readline history.
|
|
131
|
+
if not stream:
|
|
132
|
+
stream = sys.stderr
|
|
133
|
+
if not input:
|
|
134
|
+
input = sys.stdin
|
|
135
|
+
prompt = str(prompt)
|
|
136
|
+
if prompt:
|
|
137
|
+
try:
|
|
138
|
+
stream.write(prompt)
|
|
139
|
+
except UnicodeEncodeError:
|
|
140
|
+
# Use replace error handler to get as much as possible printed.
|
|
141
|
+
prompt = prompt.encode(stream.encoding, 'replace')
|
|
142
|
+
prompt = prompt.decode(stream.encoding)
|
|
143
|
+
stream.write(prompt)
|
|
144
|
+
stream.flush()
|
|
145
|
+
# NOTE: The Python C API calls flockfile() (and unlock) during readline.
|
|
146
|
+
line = input.readline()
|
|
147
|
+
if not line:
|
|
148
|
+
raise EOFError
|
|
149
|
+
if line[-1] == '\n':
|
|
150
|
+
line = line[:-1]
|
|
151
|
+
return line
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def getuser():
|
|
155
|
+
"""Get the username from the environment or password database.
|
|
156
|
+
|
|
157
|
+
First try various environment variables, then the password
|
|
158
|
+
database. This works on Windows as long as USERNAME is set.
|
|
159
|
+
Any failure to find a username raises OSError.
|
|
160
|
+
|
|
161
|
+
.. versionchanged:: 3.13
|
|
162
|
+
Previously, various exceptions beyond just :exc:`OSError`
|
|
163
|
+
were raised.
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
|
|
167
|
+
user = os.environ.get(name)
|
|
168
|
+
if user:
|
|
169
|
+
return user
|
|
170
|
+
|
|
171
|
+
try:
|
|
172
|
+
import pwd
|
|
173
|
+
return pwd.getpwuid(os.getuid())[0]
|
|
174
|
+
except (ImportError, KeyError) as e:
|
|
175
|
+
raise OSError('No username set in the environment') from e
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# Bind the name getpass to the appropriate function
|
|
179
|
+
try:
|
|
180
|
+
import termios
|
|
181
|
+
# it's possible there is an incompatible termios from the
|
|
182
|
+
# McMillan Installer, make sure we have a UNIX-compatible termios
|
|
183
|
+
termios.tcgetattr, termios.tcsetattr
|
|
184
|
+
except (ImportError, AttributeError):
|
|
185
|
+
try:
|
|
186
|
+
import msvcrt
|
|
187
|
+
except ImportError:
|
|
188
|
+
getpass = fallback_getpass
|
|
189
|
+
else:
|
|
190
|
+
getpass = win_getpass
|
|
191
|
+
else:
|
|
192
|
+
getpass = unix_getpass
|