Mercurial > hg-stable
changeset 51665:63ede7a43a37 stable
demandimport: don't delay threading import
A recent cpython change breaks demandimport by importing threading
locally in importlib.util.LazyLoader.exec_module; add it (plus warnings
and _weakrefset, which are imported by threading) to demandimport's
ignore list.
```
Traceback (most recent call last):
File "/usr/bin/hg", line 57, in <module>
from mercurial import dispatch
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "/usr/lib/python3/dist-packages/hgdemandimport/demandimportpy3.py", line 52, in exec_module
super().exec_module(module)
File "<frozen importlib.util>", line 257, in exec_module
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "/usr/lib/python3/dist-packages/hgdemandimport/demandimportpy3.py", line 52, in exec_module
super().exec_module(module)
File "<frozen importlib.util>", line 267, in exec_module
AttributeError: partially initialized module 'threading' has no attribute 'RLock' (most likely due to a circular import)
```
Ref: https://github.com/python/cpython/issues/117983
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076449
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076747
author | Julien Cristau <jcristau@debian.org> |
---|---|
date | Fri, 26 Jul 2024 10:52:28 +0200 |
parents | e6508d1e0b47 |
children | 48fd4d23c867 |
files | hgdemandimport/__init__.py |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/hgdemandimport/__init__.py Thu Jul 11 11:10:40 2024 -0400 +++ b/hgdemandimport/__init__.py Fri Jul 26 10:52:28 2024 +0200 @@ -58,6 +58,10 @@ # setuptools uses this hack to inject it's own distutils at import time 'setuptools', '_distutils_hack.override', + # threading is locally imported by importlib.util.LazyLoader.exec_module + '_weakrefset', + 'warnings', + 'threading', } _pypy = '__pypy__' in sys.builtin_module_names