You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
importlib: PYTHONCASEOK should be ignored when using python3 -E #82872
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2020-03-25.18:01:14.573>created_at=<Date2019-11-05.01:55:55.991>labels= ['library', '3.9']
title='importlib: PYTHONCASEOK should be ignored when using python3 -E'updated_at=<Date2020-03-25.18:01:14.572>user='https://github.com/vstinner'
changed the title [-]importlib: PYTHONCASEOK should be ignored when using python3 -E[/-][+][easy] importlib: PYTHONCASEOK should be ignored when using python3 -E[/+]on Jan 24, 2020
Traceback (most recent call last):
File "/Users/buildbot/buildarea/3.x.billenstein-macos/build/Lib/test/test_importlib/extension/test_case_sensitivity.py", line 36, in test_case_insensitivityself.assertTrue(hasattr(loader, 'load_module'))
AssertionError: False is not true
Traceback (most recent call last):
File "/Users/buildbot/buildarea/3.x.billenstein-macos/build/Lib/test/test_importlib/extension/test_case_sensitivity.py", line 36, in test_case_insensitivityself.assertTrue(hasattr(loader, 'load_module'))
AssertionError: False is not true
I'm unable to debug the issue on macOS. I prepared PR 18553 to revert the change, just to give more time to fix the issue. It's to repair the CI, so we can notice other regressions.
changed the title [-][easy] importlib: PYTHONCASEOK should be ignored when using python3 -E[/-][+]importlib: PYTHONCASEOK should be ignored when using python3 -E[/+]on Feb 18, 2020
Tests are run with "./python.exe ./Tools/scripts/run_tests.py -j 1 -u all -W --slowest --fail-env-changed --timeout=900 -j2 --junit-xml test-results.xml" which runs tests with "./python.exe -E": ignore PYTHON* environment variables. Maybe the test should just take that in account.
idomic commented on Feb 19, 2020
idomicmannequin
Mannequin
More actions
Yes I saw those in the morning, thanks for patching it up. I will debug this over the weekend and will update.
From what I can tell, the regression seems like it could be fixed by adding "@unittest.skipIf(sys.flags.ignore_environment)" to the following tests in python/cpython/Lib/test/test_importlib/source/test_case_sensitivity.py that modify "PYTHONCASEOK":
Those tests seem ultimately pointless if environmental variables are being ignored (-E or -I), so I think in this case it's a misleading test failure, no?
New changeset 4dee92b by Victor Stinner in branch 'master':
Revert "bpo-38691 Added a switch to ignore PYTHONCASEOK when -E or -I flags passed (bpo-18314)" (GH-18553) 4dee92b
Sorry, this is false. I just checked out to the last commit to importlib before #62827 and it did not refleak. But when I actually reverted just #62827, the issue persisted.
By bisecting, I found out that it's #63284 which causes the refleak and it only just so happens that this refleak appears in importlib tests.
bpo-40050: Fix importlib._bootstrap_external (GH-19135)
Remove two unused imports: _thread and _weakref. Avoid creating a new
winreg builtin module if it's already available in sys.modules.
The winreg module is now stored as "winreg" rather than "_winreg".
Activity
vstinner commentedon Nov 5, 2019
When using python3 -E or python3 -I, PYTHONCASEOK environment variable should be ignored by importlib. See an email sent in 2012:
https://mail.python.org/pipermail/python-dev/2012-December/123403.html
See importlib._bootstrap_external._relax_case attribute and its _make_relax_case() function.
vstinner commentedon Jan 24, 2020
sys.flags.ignore_environment should be used.
[-]importlib: PYTHONCASEOK should be ignored when using python3 -E[/-][+][easy] importlib: PYTHONCASEOK should be ignored when using python3 -E[/+]idomic commentedon Feb 2, 2020
Created this PR: #62514
corona10 commentedon Feb 3, 2020
@ido Michael
I left review comments for you :)
Thanks for the contribution.
vstinner commentedon Feb 17, 2020
New changeset d83b660 by idomic in branch 'master':
bpo-38691 Added a switch to ignore PYTHONCASEOK when -E or -I flags passed (bpo-18314)
d83b660
vstinner commentedon Feb 18, 2020
Tests fail on macOS:
https://buildbot.python.org/all/#/builders/275/builds/249
I reopen the issue. The issue should be fixed soon, or the change will be reverted to repair buildobts:
https://pythondev.readthedocs.io/ci.html#revert-on-fail
======================================================================
FAIL: test_case_insensitivity (test.test_importlib.extension.test_case_sensitivity.Frozen_ExtensionModuleCaseSensitivityTest)
----------------------------------------------------------------------
======================================================================
FAIL: test_case_insensitivity (test.test_importlib.extension.test_case_sensitivity.Source_ExtensionModuleCaseSensitivityTest)
----------------------------------------------------------------------
======================================================================
FAIL: test_insensitive (test.test_importlib.source.test_case_sensitivity.Frozen_CaseSensitivityTestPEP302)
----------------------------------------------------------------------
======================================================================
FAIL: test_insensitive (test.test_importlib.source.test_case_sensitivity.Frozen_CaseSensitivityTestPEP451)
----------------------------------------------------------------------
======================================================================
FAIL: test_insensitive (test.test_importlib.source.test_case_sensitivity.Source_CaseSensitivityTestPEP302)
----------------------------------------------------------------------
======================================================================
FAIL: test_insensitive (test.test_importlib.source.test_case_sensitivity.Source_CaseSensitivityTestPEP451)
----------------------------------------------------------------------
vstinner commentedon Feb 18, 2020
I'm unable to debug the issue on macOS. I prepared PR 18553 to revert the change, just to give more time to fix the issue. It's to repair the CI, so we can notice other regressions.
[-][easy] importlib: PYTHONCASEOK should be ignored when using python3 -E[/-][+]importlib: PYTHONCASEOK should be ignored when using python3 -E[/+]vstinner commentedon Feb 18, 2020
Tests are run with "./python.exe ./Tools/scripts/run_tests.py -j 1 -u all -W --slowest --fail-env-changed --timeout=900 -j2 --junit-xml test-results.xml" which runs tests with "./python.exe -E": ignore PYTHON* environment variables. Maybe the test should just take that in account.
idomic commentedon Feb 19, 2020
Yes I saw those in the morning, thanks for patching it up. I will debug this over the weekend and will update.
aeros commentedon Feb 19, 2020
From what I can tell, the regression seems like it could be fixed by adding "@unittest.skipIf(sys.flags.ignore_environment)" to the following tests in python/cpython/Lib/test/test_importlib/source/test_case_sensitivity.py that modify "PYTHONCASEOK":
CaseSensitivityTest.test_sensitive
CaseSensitivityTest.test_insensitive
Those tests seem ultimately pointless if environmental variables are being ignored (-E or -I), so I think in this case it's a misleading test failure, no?
vstinner commentedon Feb 19, 2020
New changeset 4dee92b by Victor Stinner in branch 'master':
Revert "bpo-38691 Added a switch to ignore PYTHONCASEOK when -E or -I flags passed (bpo-18314)" (GH-18553)
4dee92b
vstinner commentedon Feb 19, 2020
Ok, perfect. In the meanwhile, as announced, I reverted the change to be able to notify other regressions.
Once we get a fix, we can reapply the change with the fix.
idomic commentedon Feb 23, 2020
Added a new clean PR with the code changes, will let you know once the tests are fixed: #62827
idomic commentedon Mar 1, 2020
@vstinner ready for review.
vstinner commentedon Mar 9, 2020
New changeset fc72ab6 by idomic in branch 'master':
bpo-38691: importlib ignores PYTHONCASEOK if -E is used (GH-18627)
fc72ab6
ambv commentedon Mar 23, 2020
Re-opening as it causes refleaks all across the stable buildbots. I can reproduce on macOS Catalina as well. Run this to see for yourself:
Reverting #62827 fixes the issue.
ambv commentedon Mar 23, 2020
Sorry, this is false. I just checked out to the last commit to importlib before #62827 and it did not refleak. But when I actually reverted just #62827, the issue persisted.
By bisecting, I found out that it's #63284 which causes the refleak and it only just so happens that this refleak appears in importlib tests.
vstinner commentedon Mar 25, 2020
FYI importlib leak was fixed in bpo-40050 by:
commit 83d46e0
Author: Victor Stinner <[email protected]>
Date: Tue Mar 24 18:03:34 2020 +0100