sapling: demandimport: Fix unknown python exception, module threading
has no attribute Rlock
#977
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
When using a recent version of python (3.12), running a sapling command returns the error
unknown python exception
: AttributeError: partially initialized module 'threading' has no attribute 'RLock' (most likely due to a circular import).This is caused by cpython breaking demandimport by importing
threading
locally inimportlib.util.LazyLoader.exec_module
.Adding
threading
along withwarnings
, and_weakrefset
(which are imported by threading) to demandimport's ignore list resolves the issue.Refs: python/cpython#117983
https://repo.mercurial-scm.org/hg/file/63ede7a43a37/hgdemandimport/__init__.py
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076449
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076747