Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
Bug description:
Using one of theFORCE_COLOR,NO_COLOR orTERM=dumb environment variables is ignored when you use Python with-E.
-E means:
Ignore all
PYTHON*environment variables, e.g.PYTHONPATH andPYTHONHOME, that might be set.
The-E is stored insys.flags.ignore_environment.
sys.flags.ignore_environment is used to ignorePYTHON_COLORS (correct) but it's also ignoring these other env vars (incorrect).
For example, this is not colourised, as expected:
❯ NO_COLOR=1 python3.13 -c 1/0Traceback (most recent call last): File "<string>", line 1, in <module> 1/0 ~^~ZeroDivisionError: division by zeroHowever,NO_COLOR=1 is ignored when passing-E and the output has colour when it should not:
❯ NO_COLOR=1 python3.13 -E -c 1/0Traceback (most recent call last): File "<string>", line 1, in <module> 1/0 ~^~ZeroDivisionError: division by zeroThis bit needs updating:
Lines 43 to 56 in487fdbe
| ifnotsys.flags.ignore_environment: | |
| ifos.environ.get("PYTHON_COLORS")=="0": | |
| returnFalse | |
| ifos.environ.get("PYTHON_COLORS")=="1": | |
| returnTrue | |
| if"NO_COLOR"inos.environ: | |
| returnFalse | |
| ifnotCOLORIZE: | |
| returnFalse | |
| ifnotsys.flags.ignore_environment: | |
| if"FORCE_COLOR"inos.environ: | |
| returnTrue | |
| ifos.environ.get("TERM")=="dumb": | |
| returnFalse |
CPython versions tested on:
3.13, 3.14
Operating systems tested on:
Linux, macOS, Windows

