sapling/hgext
Pierre-Yves David cc59112ca7 hgext: officially turn 'hgext' into a namespace package
Actually since Python 2.3, there is some way to turn top level package into
"namespace package" so that multiple subpackage installed in different part of
the path can still be imported transparently. This feature was previously
thought (at least by myself) to be only provided by some setuptool black magic.

Turning hgext into such namespace package allows third extensions to install
themselves inside the "hgext" namespace package to avoid polluting the global
python module namespace. They will now be able to do so without making it a pain
to use a Mercurial "installed" in a different way/location than these
extensions.

The only constrains is that the extension ship a 'hgext/__init__.py' containing
the same call to 'pkgutil.extend_path' and nothing else. This seems realistic.

The main question that remains is: should we introduce a dedicated namespace for
third party extension (hgext3rd?) to make a clearer distinction between what is
officially supported and what is not? If so, this will be introduced in a follow
up patch.
2016-02-27 12:56:26 +01:00
..
convert convert: __init__ use absolute_import 2016-03-02 16:34:43 +00:00
fsmonitor fsmonitor: hook up state-enter, state-leave signals 2016-03-10 16:04:09 +00:00
highlight cleanup: remove superfluous space after space after equals (python) 2015-12-31 08:16:59 +00:00
largefiles largefiles: add abstract methods in remotestore class 2016-03-10 10:56:02 +01:00
zeroconf zeroconf: replace has_key with in 2016-03-01 10:22:10 +00:00
__init__.py hgext: officially turn 'hgext' into a namespace package 2016-02-27 12:56:26 +01:00
acl.py acl: use absolute_import 2016-02-09 17:29:39 -08:00
automv.py automv: use 95 as the default similarity threshold 2016-02-16 15:58:32 +00:00
blackbox.py blackbox: guard against recursion from dirty check 2016-03-08 20:34:59 +00:00
bugzilla.py bugzilla: use absolute_import 2016-02-09 17:31:50 -08:00
censor.py censor: make censor acquire locks before processing 2015-12-09 08:28:53 +09:00
chgserver.py chgserver: implement validate command 2016-03-05 13:56:59 +00:00
children.py children: use absolute_import 2016-02-09 17:34:32 -08:00
churn.py churn: use absolute_import 2016-02-09 17:50:45 -08:00
clonebundles.py clonebundles: improve BUNDLESPEC documentation 2016-01-14 22:50:55 -08:00
color.py color: drop useless override of ui.popbuffer() 2015-12-05 23:41:11 +09:00
eol.py eol: make output stable 2015-12-27 23:55:54 +09:00
extdiff.py extdiff: use @command decorator to set up diff commands 2016-01-01 22:35:34 +09:00
factotum.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
fetch.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
gpg.py with: use context manager for wlock in sign 2016-01-15 13:14:46 -08:00
graphlog.py graphlog: update help with replacement 2016-01-06 17:17:49 +00:00
hgcia.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
hgk.py hgk: tweak doc format for path option 2015-06-25 17:37:14 -05:00
histedit.py histedit: adds hint how to reorder changesets at editor (issue3766) 2016-03-08 21:59:06 +01:00
keyword.py keyword: use absolute_import 2016-03-01 10:33:06 +00:00
mq.py merge with stable 2016-03-11 15:24:27 -06:00
notify.py notify: use absolute_import 2016-03-02 21:48:08 +00:00
pager.py pager: use absolute_import 2016-02-28 22:15:00 -05:00
patchbomb.py patchbomb: use absolute_import 2016-03-02 21:42:42 +00:00
purge.py purge: use absolute_import 2016-03-02 21:39:55 +00:00
rebase.py rebase: turn rebaseskipobsolete on by default 2016-03-09 08:08:27 -08:00
record.py record: use absolute_import 2016-03-02 21:38:32 +00:00
relink.py relink: use absolute_import 2016-03-02 21:36:14 +00:00
schemes.py schemas: use absolute_import 2016-03-02 21:33:55 +00:00
share.py share: pass named arguments 2015-12-12 22:07:40 -05:00
shelve.py shelve: changes getting opts values by get method 2016-03-09 08:21:57 +01:00
strip.py strip: use absolute_import 2016-03-02 21:26:36 +00:00
transplant.py revset: replace extpredicate by revsetpredicate of registrar 2016-03-08 23:04:53 +09:00
win32mbcs.py win32mbcs: use absolute_import 2016-03-02 21:50:35 +00:00
win32text.py urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00