sapling/edenscm/hgext/extlib
Jun Wu 9dc21f8d0b codemod: import from the edenscm package
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
2019-01-29 17:25:32 -08:00
..
cfastmanifest codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
cstore codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
ctreemanifest codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
indexes codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
phabricator codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
pyrevisionstore codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
pywatchman codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
watchmanclient codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
__init__.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
cfastmanifest.c codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
linelog.pyx codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
litemmap.pyx codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mysqlutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
README.md codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
traceprofimpl.cpp codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00

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.