From ff10ac1bde7251e5cea7994739b5fcde24bbacd6 Mon Sep 17 00:00:00 2001 From: Rob Lemley Date: Wed, 11 Sep 2024 01:12:13 +0000 Subject: [PATCH] Bug 1912140 - Update vendored colorama to 0.4.6. r=sylvestre,mach-reviewers,ahal Differential Revision: https://phabricator.services.mozilla.com/D221721 --- .../colorama/colorama-0.4.5.dist-info/RECORD | 11 -- .../colorama-0.4.5.dist-info/top_level.txt | 1 - .../METADATA | 106 +++++++++++------- .../colorama/colorama-0.4.6.dist-info/RECORD | 17 +++ .../WHEEL | 3 +- .../licenses}/LICENSE.txt | 0 .../python/colorama/colorama/__init__.py | 5 +- .../python/colorama/colorama/ansitowin32.py | 17 ++- .../python/colorama/colorama/initialise.py | 51 ++++++++- third_party/python/colorama/colorama/win32.py | 28 +++++ .../python/colorama/colorama/winterm.py | 28 ++++- third_party/python/poetry.lock | 10 +- third_party/python/requirements.in | 2 +- third_party/python/requirements.txt | 6 +- 14 files changed, 213 insertions(+), 72 deletions(-) delete mode 100644 third_party/python/colorama/colorama-0.4.5.dist-info/RECORD delete mode 100644 third_party/python/colorama/colorama-0.4.5.dist-info/top_level.txt rename third_party/python/colorama/{colorama-0.4.5.dist-info => colorama-0.4.6.dist-info}/METADATA (80%) create mode 100644 third_party/python/colorama/colorama-0.4.6.dist-info/RECORD rename third_party/python/colorama/{colorama-0.4.5.dist-info => colorama-0.4.6.dist-info}/WHEEL (70%) rename third_party/python/colorama/{colorama-0.4.5.dist-info => colorama-0.4.6.dist-info/licenses}/LICENSE.txt (100%) diff --git a/third_party/python/colorama/colorama-0.4.5.dist-info/RECORD b/third_party/python/colorama/colorama-0.4.5.dist-info/RECORD deleted file mode 100644 index b5754771c372..000000000000 --- a/third_party/python/colorama/colorama-0.4.5.dist-info/RECORD +++ /dev/null @@ -1,11 +0,0 @@ -colorama/__init__.py,sha256=ihDoWQOkapwF7sqQ99AoDoEF3vGYm40OtmgW211cLZw,239 -colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 -colorama/ansitowin32.py,sha256=gGrO7MVtwc-j1Sq3jKfZpERT1JWmYSOsTVDiTnFbZU4,10830 -colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915 -colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404 -colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438 -colorama-0.4.5.dist-info/LICENSE.txt,sha256=ysNcAmhuXQSlpxQL-zs25zrtSWZW6JEQLkKIhteTAxg,1491 -colorama-0.4.5.dist-info/METADATA,sha256=Kb6MoYzWBmkPhFCf0SW7a-5Eeyssj-szefJmxokQFSU,15128 -colorama-0.4.5.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110 -colorama-0.4.5.dist-info/top_level.txt,sha256=_Kx6-Cni2BT1PEATPhrSRxo0d7kSgfBbHf5o7IF1ABw,9 -colorama-0.4.5.dist-info/RECORD,, diff --git a/third_party/python/colorama/colorama-0.4.5.dist-info/top_level.txt b/third_party/python/colorama/colorama-0.4.5.dist-info/top_level.txt deleted file mode 100644 index 3fcfb51b2ad0..000000000000 --- a/third_party/python/colorama/colorama-0.4.5.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -colorama diff --git a/third_party/python/colorama/colorama-0.4.5.dist-info/METADATA b/third_party/python/colorama/colorama-0.4.6.dist-info/METADATA similarity index 80% rename from third_party/python/colorama/colorama-0.4.5.dist-info/METADATA rename to third_party/python/colorama/colorama-0.4.6.dist-info/METADATA index cd9393530e1d..a1b5c5754300 100644 --- a/third_party/python/colorama/colorama-0.4.5.dist-info/METADATA +++ b/third_party/python/colorama/colorama-0.4.6.dist-info/METADATA @@ -1,13 +1,11 @@ Metadata-Version: 2.1 Name: colorama -Version: 0.4.5 +Version: 0.4.6 Summary: Cross-platform colored terminal text. -Home-page: https://github.com/tartley/colorama -Author: Jonathan Hartley -Author-email: tartley@tartley.com -Maintainer: Arnon Yaari -License: BSD -Keywords: color colour terminal text ansi windows crossplatform xplatform +Project-URL: Homepage, https://github.com/tartley/colorama +Author-email: Jonathan Hartley +License-File: LICENSE.txt +Keywords: ansi,color,colour,crossplatform,terminal,text,windows,xplatform Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers @@ -17,8 +15,6 @@ Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 @@ -26,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Terminals -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* -License-File: LICENSE.txt +Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7 +Description-Content-Type: text/x-rst .. image:: https://img.shields.io/pypi/v/colorama.svg :target: https://pypi.org/project/colorama/ @@ -57,11 +53,10 @@ cursor positioning) work under MS Windows. If you find Colorama useful, please |donate| to the authors. Thank you! - Installation ------------ -Tested on CPython 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 and 3.10 and Pypy 2.7 and 3.6. +Tested on CPython 2.7, 3.7, 3.8, 3.9 and 3.10 and Pypy 2.7 and 3.8. No requirements other than the standard library. @@ -71,7 +66,6 @@ No requirements other than the standard library. # or conda install -c anaconda colorama - Description ----------- @@ -86,7 +80,8 @@ This has the upshot of providing a simple cross-platform API for printing colored terminal text from Python, and has the happy side-effect that existing applications or libraries which use ANSI sequences to produce colored output on Linux or Macs can now also work on Windows, simply by calling -``colorama.init()``. +``colorama.just_fix_windows_console()`` (since v0.4.6) or ``colorama.init()`` +(all versions, but may have other side-effects – see below). An alternative approach is to install ``ansi.sys`` on Windows machines, which provides the same behaviour for all applications running in terminals. Colorama @@ -116,30 +111,65 @@ Usage Initialisation .............. -Applications should initialise Colorama using: +If the only thing you want from Colorama is to get ANSI escapes to work on +Windows, then run: + +.. code-block:: python + + from colorama import just_fix_windows_console + just_fix_windows_console() + +If you're on a recent version of Windows 10 or better, and your stdout/stderr +are pointing to a Windows console, then this will flip the magic configuration +switch to enable Windows' built-in ANSI support. + +If you're on an older version of Windows, and your stdout/stderr are pointing to +a Windows console, then this will wrap ``sys.stdout`` and/or ``sys.stderr`` in a +magic file object that intercepts ANSI escape sequences and issues the +appropriate Win32 calls to emulate them. + +In all other circumstances, it does nothing whatsoever. Basically the idea is +that this makes Windows act like Unix with respect to ANSI escape handling. + +It's safe to call this function multiple times. It's safe to call this function +on non-Windows platforms, but it won't do anything. It's safe to call this +function when one or both of your stdout/stderr are redirected to a file – it +won't do anything to those streams. + +Alternatively, you can use the older interface with more features (but also more +potential footguns): .. code-block:: python from colorama import init init() -On Windows, calling ``init()`` will filter ANSI escape sequences out of any -text sent to ``stdout`` or ``stderr``, and replace them with equivalent Win32 -calls. +This does the same thing as ``just_fix_windows_console``, except for the +following differences: -On other platforms, calling ``init()`` has no effect (unless you request other -optional functionality, see "Init Keyword Args" below; or if output -is redirected). By design, this permits applications to call ``init()`` -unconditionally on all platforms, after which ANSI output should just work. +- It's not safe to call ``init`` multiple times; you can end up with multiple + layers of wrapping and broken ANSI support. -On all platforms, if output is redirected, ANSI escape sequences are completely -stripped out. +- Colorama will apply a heuristic to guess whether stdout/stderr support ANSI, + and if it thinks they don't, then it will wrap ``sys.stdout`` and + ``sys.stderr`` in a magic file object that strips out ANSI escape sequences + before printing them. This happens on all platforms, and can be convenient if + you want to write your code to emit ANSI escape sequences unconditionally, and + let Colorama decide whether they should actually be output. But note that + Colorama's heuristic is not particularly clever. + +- ``init`` also accepts explicit keyword args to enable/disable various + functionality – see below. To stop using Colorama before your program exits, simply call ``deinit()``. This will restore ``stdout`` and ``stderr`` to their original values, so that Colorama is disabled. To resume using Colorama again, call ``reinit()``; it is cheaper than calling ``init()`` again (but does the same thing). +Most users should depend on ``colorama >= 0.4.6``, and use +``just_fix_windows_console``. The old ``init`` interface will be supported +indefinitely for backwards compatibility, but we don't plan to fix any issues +with it, also for backwards compatibility. Colored Output .............. @@ -174,13 +204,17 @@ then consider using one of the above highly capable libraries to generate colors, etc, and use Colorama just for its primary purpose: to convert those ANSI sequences to also work on Windows: +SIMILARLY, do not send PRs adding the generation of new ANSI types to Colorama. +We are only interested in converting ANSI codes to win32 API calls, not +shortcuts like the above to generate ANSI characters. + .. code-block:: python - from colorama import init + from colorama import just_fix_windows_console from termcolor import colored # use Colorama to make Termcolor work on Windows too - init() + just_fix_windows_console() # then use Termcolor for all colored text output print(colored('Hello, World!', 'green', 'on_red')) @@ -199,14 +233,12 @@ These are fairly well supported, but not part of the standard:: Fore: LIGHTBLACK_EX, LIGHTRED_EX, LIGHTGREEN_EX, LIGHTYELLOW_EX, LIGHTBLUE_EX, LIGHTMAGENTA_EX, LIGHTCYAN_EX, LIGHTWHITE_EX Back: LIGHTBLACK_EX, LIGHTRED_EX, LIGHTGREEN_EX, LIGHTYELLOW_EX, LIGHTBLUE_EX, LIGHTMAGENTA_EX, LIGHTCYAN_EX, LIGHTWHITE_EX - Cursor Positioning .................. ANSI codes to reposition the cursor are supported. See ``demos/demo06.py`` for an example of how to generate them. - Init Keyword Args ................. @@ -258,7 +290,6 @@ init(wrap=True): # Python 3 print(Fore.BLUE + 'blue text on stderr', file=stream) - Recognised ANSI Sequences ......................... @@ -327,15 +358,17 @@ initial characters, are not recognised or stripped. It would be cool to add them though. Let me know if it would be useful for you, via the Issues on GitHub. - Status & Known Problems ----------------------- I've personally only tested it on Windows XP (CMD, Console2), Ubuntu (gnome-terminal, xterm), and OS X. -Some presumably valid ANSI sequences aren't recognised (see details below), -but to my knowledge nobody has yet complained about this. Puzzling. +Some valid ANSI sequences aren't recognised. + +If you're hacking on the code, see `README-hacking.md`_. ESPECIALLY, see the +explanation there of why we do not want PRs that allow Colorama to generate new +types of ANSI codes. See outstanding issues and wish-list: https://github.com/tartley/colorama/issues @@ -345,18 +378,14 @@ I'd love to hear about it on that issues list, would be delighted by patches, and would be happy to grant commit access to anyone who submits a working patch or two. -If you're hacking on the code, see `README-hacking.md`_. - .. _README-hacking.md: README-hacking.md - License ------- Copyright Jonathan Hartley & Arnon Yaari, 2013-2020. BSD 3-Clause license; see LICENSE file. - Professional support -------------------- @@ -377,10 +406,11 @@ Professional support .. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-colorama?utm_source=pypi-colorama&utm_medium=referral&utm_campaign=readme - Thanks ------ +See the CHANGELOG for more thanks! + * Marc Schlaich (schlamar) for a ``setup.py`` fix for Python2.5. * Marc Abramowitz, reported & fixed a crash on exit with closed ``stdout``, providing a solution to issue #7's setuptools/distutils debate, diff --git a/third_party/python/colorama/colorama-0.4.6.dist-info/RECORD b/third_party/python/colorama/colorama-0.4.6.dist-info/RECORD new file mode 100644 index 000000000000..250746e3d018 --- /dev/null +++ b/third_party/python/colorama/colorama-0.4.6.dist-info/RECORD @@ -0,0 +1,17 @@ +colorama/__init__.py,sha256=wePQA4U20tKgYARySLEC047ucNX-g8pRLpYBuiHlLb8,266 +colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 +colorama/ansitowin32.py,sha256=vPNYa3OZbxjbuFyaVo0Tmhmy1FZ1lKMWCnT7odXpItk,11128 +colorama/initialise.py,sha256=-hIny86ClXo39ixh5iSCfUIa2f_h_bgKRDW7gqs-KLU,3325 +colorama/win32.py,sha256=YQOKwMTwtGBbsY4dL5HYTvwTeP9wIQra5MvPNddpxZs,6181 +colorama/winterm.py,sha256=XCQFDHjPi6AHYNdZwy0tA02H-Jh48Jp-HvCjeLeLp3U,7134 +colorama/tests/__init__.py,sha256=MkgPAEzGQd-Rq0w0PZXSX2LadRWhUECcisJY8lSrm4Q,75 +colorama/tests/ansi_test.py,sha256=FeViDrUINIZcr505PAxvU4AjXz1asEiALs9GXMhwRaE,2839 +colorama/tests/ansitowin32_test.py,sha256=RN7AIhMJ5EqDsYaCjVo-o4u8JzDD4ukJbmevWKS70rY,10678 +colorama/tests/initialise_test.py,sha256=BbPy-XfyHwJ6zKozuQOvNvQZzsx9vdb_0bYXn7hsBTc,6741 +colorama/tests/isatty_test.py,sha256=Pg26LRpv0yQDB5Ac-sxgVXG7hsA1NYvapFgApZfYzZg,1866 +colorama/tests/utils.py,sha256=1IIRylG39z5-dzq09R_ngufxyPZxgldNbrxKxUGwGKE,1079 +colorama/tests/winterm_test.py,sha256=qoWFPEjym5gm2RuMwpf3pOis3a5r_PJZFCzK254JL8A,3709 +colorama-0.4.6.dist-info/METADATA,sha256=e67SnrUMOym9sz_4TjF3vxvAV4T3aF7NyqRHHH3YEMw,17158 +colorama-0.4.6.dist-info/WHEEL,sha256=cdcF4Fbd0FPtw2EMIOwH-3rSOTUdTCeOSXRMD1iLUb8,105 +colorama-0.4.6.dist-info/licenses/LICENSE.txt,sha256=ysNcAmhuXQSlpxQL-zs25zrtSWZW6JEQLkKIhteTAxg,1491 +colorama-0.4.6.dist-info/RECORD,, diff --git a/third_party/python/colorama/colorama-0.4.5.dist-info/WHEEL b/third_party/python/colorama/colorama-0.4.6.dist-info/WHEEL similarity index 70% rename from third_party/python/colorama/colorama-0.4.5.dist-info/WHEEL rename to third_party/python/colorama/colorama-0.4.6.dist-info/WHEEL index 0b18a281107a..d79189fda325 100644 --- a/third_party/python/colorama/colorama-0.4.5.dist-info/WHEEL +++ b/third_party/python/colorama/colorama-0.4.6.dist-info/WHEEL @@ -1,6 +1,5 @@ Wheel-Version: 1.0 -Generator: bdist_wheel (0.37.1) +Generator: hatchling 1.11.1 Root-Is-Purelib: true Tag: py2-none-any Tag: py3-none-any - diff --git a/third_party/python/colorama/colorama-0.4.5.dist-info/LICENSE.txt b/third_party/python/colorama/colorama-0.4.6.dist-info/licenses/LICENSE.txt similarity index 100% rename from third_party/python/colorama/colorama-0.4.5.dist-info/LICENSE.txt rename to third_party/python/colorama/colorama-0.4.6.dist-info/licenses/LICENSE.txt diff --git a/third_party/python/colorama/colorama/__init__.py b/third_party/python/colorama/colorama/__init__.py index 9138a8cc8f04..383101cdb387 100644 --- a/third_party/python/colorama/colorama/__init__.py +++ b/third_party/python/colorama/colorama/__init__.py @@ -1,6 +1,7 @@ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from .initialise import init, deinit, reinit, colorama_text +from .initialise import init, deinit, reinit, colorama_text, just_fix_windows_console from .ansi import Fore, Back, Style, Cursor from .ansitowin32 import AnsiToWin32 -__version__ = '0.4.5' +__version__ = '0.4.6' + diff --git a/third_party/python/colorama/colorama/ansitowin32.py b/third_party/python/colorama/colorama/ansitowin32.py index 3db248baac44..abf209e60c7c 100644 --- a/third_party/python/colorama/colorama/ansitowin32.py +++ b/third_party/python/colorama/colorama/ansitowin32.py @@ -4,7 +4,7 @@ import sys import os from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL -from .winterm import WinTerm, WinColor, WinStyle +from .winterm import enable_vt_processing, WinTerm, WinColor, WinStyle from .win32 import windll, winapi_test @@ -94,15 +94,22 @@ class AnsiToWin32(object): # (e.g. Cygwin Terminal). In this case it's up to the terminal # to support the ANSI codes. conversion_supported = on_windows and winapi_test() + try: + fd = wrapped.fileno() + except Exception: + fd = -1 + system_has_native_ansi = not on_windows or enable_vt_processing(fd) + have_tty = not self.stream.closed and self.stream.isatty() + need_conversion = conversion_supported and not system_has_native_ansi # should we strip ANSI sequences from our output? if strip is None: - strip = conversion_supported or (not self.stream.closed and not self.stream.isatty()) + strip = need_conversion or not have_tty self.strip = strip # should we should convert ANSI sequences into win32 calls? if convert is None: - convert = conversion_supported and not self.stream.closed and self.stream.isatty() + convert = need_conversion and have_tty self.convert = convert # dict of ansi codes to win32 functions and parameters @@ -264,3 +271,7 @@ class AnsiToWin32(object): if params[0] in '02': winterm.set_title(params[1]) return text + + + def flush(self): + self.wrapped.flush() diff --git a/third_party/python/colorama/colorama/initialise.py b/third_party/python/colorama/colorama/initialise.py index 430d0668727c..d5fd4b71fed1 100644 --- a/third_party/python/colorama/colorama/initialise.py +++ b/third_party/python/colorama/colorama/initialise.py @@ -6,13 +6,27 @@ import sys from .ansitowin32 import AnsiToWin32 -orig_stdout = None -orig_stderr = None +def _wipe_internal_state_for_tests(): + global orig_stdout, orig_stderr + orig_stdout = None + orig_stderr = None -wrapped_stdout = None -wrapped_stderr = None + global wrapped_stdout, wrapped_stderr + wrapped_stdout = None + wrapped_stderr = None -atexit_done = False + global atexit_done + atexit_done = False + + global fixed_windows_console + fixed_windows_console = False + + try: + # no-op if it wasn't registered + atexit.unregister(reset_all) + except AttributeError: + # python 2: no atexit.unregister. Oh well, we did our best. + pass def reset_all(): @@ -55,6 +69,29 @@ def deinit(): sys.stderr = orig_stderr +def just_fix_windows_console(): + global fixed_windows_console + + if sys.platform != "win32": + return + if fixed_windows_console: + return + if wrapped_stdout is not None or wrapped_stderr is not None: + # Someone already ran init() and it did stuff, so we won't second-guess them + return + + # On newer versions of Windows, AnsiToWin32.__init__ will implicitly enable the + # native ANSI support in the console as a side-effect. We only need to actually + # replace sys.stdout/stderr if we're in the old-style conversion mode. + new_stdout = AnsiToWin32(sys.stdout, convert=None, strip=None, autoreset=False) + if new_stdout.convert: + sys.stdout = new_stdout + new_stderr = AnsiToWin32(sys.stderr, convert=None, strip=None, autoreset=False) + if new_stderr.convert: + sys.stderr = new_stderr + + fixed_windows_console = True + @contextlib.contextmanager def colorama_text(*args, **kwargs): init(*args, **kwargs) @@ -78,3 +115,7 @@ def wrap_stream(stream, convert, strip, autoreset, wrap): if wrapper.should_wrap(): stream = wrapper.stream return stream + + +# Use this for initial setup as well, to reduce code duplication +_wipe_internal_state_for_tests() diff --git a/third_party/python/colorama/colorama/win32.py b/third_party/python/colorama/colorama/win32.py index c2d836033673..841b0e270a38 100644 --- a/third_party/python/colorama/colorama/win32.py +++ b/third_party/python/colorama/colorama/win32.py @@ -4,6 +4,8 @@ STDOUT = -11 STDERR = -12 +ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 + try: import ctypes from ctypes import LibraryLoader @@ -89,6 +91,20 @@ else: ] _SetConsoleTitleW.restype = wintypes.BOOL + _GetConsoleMode = windll.kernel32.GetConsoleMode + _GetConsoleMode.argtypes = [ + wintypes.HANDLE, + POINTER(wintypes.DWORD) + ] + _GetConsoleMode.restype = wintypes.BOOL + + _SetConsoleMode = windll.kernel32.SetConsoleMode + _SetConsoleMode.argtypes = [ + wintypes.HANDLE, + wintypes.DWORD + ] + _SetConsoleMode.restype = wintypes.BOOL + def _winapi_test(handle): csbi = CONSOLE_SCREEN_BUFFER_INFO() success = _GetConsoleScreenBufferInfo( @@ -150,3 +166,15 @@ else: def SetConsoleTitle(title): return _SetConsoleTitleW(title) + + def GetConsoleMode(handle): + mode = wintypes.DWORD() + success = _GetConsoleMode(handle, byref(mode)) + if not success: + raise ctypes.WinError() + return mode.value + + def SetConsoleMode(handle, mode): + success = _SetConsoleMode(handle, mode) + if not success: + raise ctypes.WinError() diff --git a/third_party/python/colorama/colorama/winterm.py b/third_party/python/colorama/colorama/winterm.py index 0fdb4ec4e910..aad867e8c80b 100644 --- a/third_party/python/colorama/colorama/winterm.py +++ b/third_party/python/colorama/colorama/winterm.py @@ -1,7 +1,13 @@ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from . import win32 +try: + from msvcrt import get_osfhandle +except ImportError: + def get_osfhandle(_): + raise OSError("This isn't windows!") +from . import win32 + # from wincon.h class WinColor(object): BLACK = 0 @@ -167,3 +173,23 @@ class WinTerm(object): def set_title(self, title): win32.SetConsoleTitle(title) + + +def enable_vt_processing(fd): + if win32.windll is None or not win32.winapi_test(): + return False + + try: + handle = get_osfhandle(fd) + mode = win32.GetConsoleMode(handle) + win32.SetConsoleMode( + handle, + mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING, + ) + + mode = win32.GetConsoleMode(handle) + if mode & win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING: + return True + # Can get TypeError in testsuite where 'fd' is a Mock() + except (OSError, TypeError): + return False diff --git a/third_party/python/poetry.lock b/third_party/python/poetry.lock index cf5464761ba2..448b724b2cca 100644 --- a/third_party/python/poetry.lock +++ b/third_party/python/poetry.lock @@ -378,13 +378,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] @@ -1600,4 +1600,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=4.6)", "pytest-black ( [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "98838f8ae6148066153ada6da6d47f8fe4e3e873d3af0f5d4da700c88b4e20ae" +content-hash = "c273b01abe74a9a3d3da930046113ad38f949a9a074862c036da108cfd141c64" diff --git a/third_party/python/requirements.in b/third_party/python/requirements.in index 6943e1a8bc39..7cdab9844874 100644 --- a/third_party/python/requirements.in +++ b/third_party/python/requirements.in @@ -11,7 +11,7 @@ blessed==1.19.1 cbor2==4.0.1 certifi==2022.12.7 click==8.1.6 -colorama==0.4.5 +colorama==0.4.6 compare-locales==9.0.1 cookies==2.2.1 cram==0.7 diff --git a/third_party/python/requirements.txt b/third_party/python/requirements.txt index f13c62207951..fe783d8a72c8 100644 --- a/third_party/python/requirements.txt +++ b/third_party/python/requirements.txt @@ -201,9 +201,9 @@ charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ click==8.1.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd \ --hash=sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5 -colorama==0.4.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da \ - --hash=sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4 +colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 compare-locales==9.0.1 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:2de0f1d382749fffa6a482d462daff0d70bbc99d48520a0bf8459b22dc7fe9da \ --hash=sha256:eda953796841cbfab508ee35f7613a38ae7fbeed48bd26bf5cda9063bd638f06