# HG changeset patch # User Mads Kiilerich # Date 1687863903 -7200 # Node ID 847f703a4d136cb8000603766dc5c6247fb98529 # Parent b9eb65a1ec140ccecd51e0b456de6e0e56e63c82 utils: imp module is removed in Python 3.12 - get is_frozen() from _imp imp has been deprecated for a long time, and has finally been removed in Python 3.12 . The successor importlib is using the same internal _imp module as imp, but doesn't expose it's is_frozen. Using the internal function directly seems like the cleanest solution. Another alternative to imp.is_frozen("__main__") is sys.modules['__main__'].__spec__.origin == 'frozen' but that seems even more internal and fragile. diff -r b9eb65a1ec14 -r 847f703a4d13 mercurial/utils/resourceutil.py --- a/mercurial/utils/resourceutil.py Tue Jun 27 22:31:44 2023 +0200 +++ b/mercurial/utils/resourceutil.py Tue Jun 27 13:05:03 2023 +0200 @@ -8,7 +8,7 @@ # GNU General Public License version 2 or any later version. -import imp +import _imp import os import sys @@ -24,7 +24,7 @@ return ( pycompat.safehasattr(sys, "frozen") # new py2exe or pycompat.safehasattr(sys, "importers") # old py2exe - or imp.is_frozen("__main__") # tools/freeze + or _imp.is_frozen("__main__") # tools/freeze )