mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 09:48:05 +03:00
9dc21f8d0b
Summary: D13853115 adds `edenscm/` to `sys.path` and code still uses `import mercurial`. That has nasty problems if both `import mercurial` and `import edenscm.mercurial` are used, because Python would think `mercurial.foo` and `edenscm.mercurial.foo` are different modules so code like `try: ... except mercurial.error.Foo: ...`, or `isinstance(x, mercurial.foo.Bar)` would fail to handle the `edenscm.mercurial` version. There are also some module-level states (ex. `extensions._extensions`) that would cause trouble if they have multiple versions in a single process. Change imports to use the `edenscm` so ideally the `mercurial` is no longer imported at all. Add checks in extensions.py to catch unexpected extensions importing modules from the old (wrong) locations when running tests. Reviewed By: phillco Differential Revision: D13868981 fbshipit-source-id: f4e2513766957fd81d85407994f7521a08e4de48 |
||
---|---|---|
.. | ||
cfastmanifest | ||
cstore | ||
ctreemanifest | ||
indexes | ||
phabricator | ||
pyrevisionstore | ||
pywatchman | ||
watchmanclient | ||
__init__.py | ||
cfastmanifest.c | ||
linelog.pyx | ||
litemmap.pyx | ||
mysqlutil.py | ||
README.md | ||
traceprofimpl.cpp |
extlib
Code that extensions depend on, but aren't themselves extensions, should go here. Both native (C/C++/Cython/Rust) and Python code is allowed. Code that depends on Python is also allowed.
In theory, this code should slowly disappear as extension code gets folded into
mainline Mercurial. (The native bits should go into lib/
or mercurial/cext
),
the Python code into mercurial/
itself.)
See also lib/README.md
, mercurial/cext/README.md
.