Mercurial > hg-stable
view hg @ 51694:141ed0bf72a1 stable
hgdemandimport: add collections.abc to the ignore list because Python 3.13 rc3
It worked in Python 3.13 rc2, but something changed for rc3.
Now, when i18n.py imports typing and it touches collections.abc.Hashable , we
get:
ValueError: module object for collections.abc substituted in sys.modules during a lazy load
This seems to be a general problem, released in the final Python 3.13 . I have
not analyzed the problem in details.
We *could* work around the problem by disabling demand import of typing. But
that would effectively disable demand import of collections.abc too. Instead,
just disable demand import for collections.abc .
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Mon, 07 Oct 2024 19:53:24 +0200 |
parents | 057639af827c |
children | f4733654f144 |
line wrap: on
line source
#!/usr/bin/env python3 # # mercurial - scalable distributed SCM # # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. import os import sys libdir = '@LIBDIR@' if libdir != '@' 'LIBDIR' '@': if not os.path.isabs(libdir): libdir = os.path.join( os.path.dirname(os.path.realpath(__file__)), libdir ) libdir = os.path.abspath(libdir) sys.path.insert(0, libdir) # Make `pip install --user ...` packages available to the official Windows # build. Most py2 packaging installs directly into the system python # environment, so no changes are necessary for other platforms. The Windows # py2 package uses py2exe, which lacks a `site` module. Hardcode it according # to the documentation. if getattr(sys, 'frozen', None) == 'console_exe': vi = sys.version_info appdata = os.environ.get('APPDATA') if appdata: sys.path.append( os.path.join( appdata, 'Python', 'Python%d%d' % (vi[0], vi[1]), 'site-packages', ) ) try: from hgdemandimport import tracing except ImportError: sys.stderr.write( "abort: couldn't find mercurial libraries in [%s]\n" % ' '.join(sys.path) ) sys.stderr.write("(check your install and PYTHONPATH)\n") sys.exit(-1) with tracing.log('hg script'): # enable importing on demand to reduce startup time import hgdemandimport hgdemandimport.enable() from mercurial import dispatch dispatch.run()