Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:07:13 -0800] rev 27280
tests/test-ancestor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:39:12 -0800] rev 27279
tests: add test for Python 3 compatibility
Python 3 is inevitable. There have been incremental movements towards
converting the code base to be Python 3 compatible. Unfortunately, we
don't have any tests that look for Python 3 compatibility. This patch
changes that.
We introduce a check-py3-compat.py script whose role is to verify
Python 3 compatibility of the files passed in. We add a test that
calls this script with all .py files from the source checkout.
The script currently only verifies that absolute_import and
print_function are used. These are the low hanging fruits for Python
compatbility. Over time, we can include more checks, including
verifying we're able to load each Python file with Python 3. You
have to start somewhere.
Accepting this patch means that all new .py files must have
absolute_import and print_function (if "print" is used) to avoid
a new warning about Python 3 incompatibility. We've already
converted several files to use absolute_import and print_function
is in the same boat, so I don't think this is such a radical
proposition.
Matt Mackall <mpm@selenic.com> [Mon, 07 Dec 2015 18:06:13 -0600] rev 27278
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Dec 2015 23:14:49 -0800] rev 27277
localrepo: reinstate localrepo.parents with a deprecation warning
The function was dropped in 3fe8cb40c9c5. This API drop brokes three of my
extensions including some critical to my workflow like tortoisehg. Lets mark
this API for death and give people time to fix their code.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Dec 2015 23:34:07 -0800] rev 27276
bookmark: deprecate 'bmstore.write' method
This function does not collaborate with the transaction and must disappear. As
we have likely a lot of third party users, we make it deprecated to let them some
time to upgrade their code.
Thanks goes to Laurent Charignon for cleanup the last remains of the 'write'
method.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Dec 2015 23:05:49 -0800] rev 27275
ui: add a 'deprecwarn' helper to issue deprecation warnings
As discussed on the list, we are adding an official way to keep old API around
for a short time in order to help third party developer to catch up. The
deprecated API will issue developer warning (issued by default during test runs)
to warn extensions authors that they need to upgrade their code without
instantaneously breaking tool chains and normal users.
The version is passed as an explicit argument so that developer think about it
and a potential future script can automatically check for it.
This is not build as a decorator because accessing the 'ui' instance will likely
be different each time. The message is also free form because deprecated API are
replaced in a variety of ways. I'm not super happy about the final rendering of
that message, but this is a developer oriented warning and I would like to move
forward.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Dec 2015 23:05:33 -0800] rev 27274
ui: add a 'stacklevel' argument to 'develwarn'
This allows helper functions (like deprecation warning) to prepare a devel
warning for higher up in the stack. The argument is named after the one in the
Python's 'warning,warn' function.
Yuya Nishihara <yuya@tcha.org> [Sun, 06 Dec 2015 14:28:35 +0900] rev 27273
import-checker: tell which symbol causes "direct symbol import"
This would be sometimes useful to understand why import-checker.py complains
about it.
Yuya Nishihara <yuya@tcha.org> [Sun, 06 Dec 2015 14:18:19 +0900] rev 27272
import-checker: allow absolute imports of sub modules from local packages
Before this patch, import-checker.py didn't know if a name in ImportFrom
statement are module or not. Therefore, it complained the following example
did "direct symbol import from mercurial".
# hgext/foo.py
from mercurial import hg
This patch reuses the dict of local modules to filter out sub-module names.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 Dec 2015 14:24:45 -0800] rev 27271
manifest: use 't' for tree manifest flag
We currently use 'd' to indicate that a manifest entry is a
directory. Let's switch to 't', since that's not a valid hex digit and
therefore easier to spot in the raw manifest data.
This will break any existing repos with tree manifests, but it's still
an experimental feature and there are probably only a few test repos
in existence with 'd' flags.