sapling/contrib
Jun Wu f1c575a099 flake8: enable F821 check
Summary:
This check is useful and detects real errors (ex. fbconduit).  Unfortunately
`arc lint` will run it with both py2 and py3 so a lot of py2 builtins will
still be warned.

I didn't find a clean way to disable py3 check. So this diff tries to fix them.
For `xrange`, the change was done by a script:

```
import sys
import redbaron

headertypes = {'comment', 'endl', 'from_import', 'import', 'string',
               'assignment', 'atomtrailers'}

xrangefix = '''try:
    xrange(0)
except NameError:
    xrange = range

'''

def isxrange(x):
    try:
        return x[0].value == 'xrange'
    except Exception:
        return False

def main(argv):
    for i, path in enumerate(argv):
        print('(%d/%d) scanning %s' % (i + 1, len(argv), path))
        content = open(path).read()
        try:
            red = redbaron.RedBaron(content)
        except Exception:
            print('  warning: failed to parse')
            continue
        hasxrange = red.find('atomtrailersnode', value=isxrange)
        hasxrangefix = 'xrange = range' in content
        if hasxrangefix or not hasxrange:
            print('  no need to change')
            continue

        # find a place to insert the compatibility  statement
        changed = False
        for node in red:
            if node.type in headertypes:
                continue
            # node.insert_before is an easier API, but it has bugs changing
            # other "finally" and "except" positions. So do the insert
            # manually.
            # # node.insert_before(xrangefix)
            line = node.absolute_bounding_box.top_left.line - 1
            lines = content.splitlines(1)
            content = ''.join(lines[:line]) + xrangefix + ''.join(lines[line:])
            changed = True
            break

        if changed:
            # "content" is faster than "red.dumps()"
            open(path, 'w').write(content)
            print('  updated')

if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))
```

For other py2 builtins that do not have a py3 equivalent, some `# noqa`
were added as a workaround for now.

Reviewed By: DurhamG

Differential Revision: D6934535

fbshipit-source-id: 546b62830af144bc8b46788d2e0fd00496838939
2018-04-13 21:51:09 -07:00
..
benchmarks perf: add historical support of ui.load() 2016-12-15 12:17:08 +01:00
builddeb_fb contrib: move builddeb to contrib/builddeb_fb/ 2018-01-09 16:44:27 -08:00
chg chg: prefix (re|m)allocx with chg_ 2018-04-13 21:51:03 -07:00
debian build: "make deb" failed when the base path contained spaces 2017-10-11 01:47:00 +02:00
docker docker: try to follow the best practices for writing Dockerfiles 2017-10-01 01:02:22 +02:00
hgsh backout of e4cb9628354c 2011-01-27 11:15:08 +01:00
hgsubversion/tools hgsuversion: move docs and tools 2018-01-10 16:20:15 -08:00
macosx packaging: update book URL in Mac and Windows READMEs 2017-10-20 13:54:51 -05:00
plan9 urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
python-zstandard zstd: vendor python-zstandard 0.8.1 2017-04-08 14:33:20 -07:00
vagrant vagrant: update to official Debian 8.1 base box 2015-09-02 11:52:24 -05:00
vim spelling: fixes of non-dictionary words 2016-10-17 23:16:55 +02:00
win32 packaging: update book URL in Mac and Windows READMEs 2017-10-20 13:54:51 -05:00
wix hgweb: implement json-graph 2017-12-07 17:18:29 +08:00
all-revsets.txt spelling: fixes of non-dictionary words 2016-10-17 23:16:55 +02:00
asv.conf.json perf: add asv benchmarks 2016-09-29 10:16:34 +02:00
base-revsets.txt contrib: introduce an all-revsets.txt file 2015-06-16 22:15:30 -07:00
bash_completion bashcompletion: allow skipping completion for 'hg status' 2016-09-26 10:47:37 +02:00
bdiff-torture.py flake8: enable F821 check 2018-04-13 21:51:09 -07:00
build-linux-wheels.sh contrib: make build-linux-wheels.sh executable 2017-07-19 13:45:06 -04:00
builddeb build: "make deb" failed when the base path contained spaces 2017-10-11 01:47:00 +02:00
buildrpm build: build deb/rpm independently on config/extensions in the host system 2017-10-17 22:46:08 +02:00
casesmash.py casesmash: use absolute_import 2016-03-06 02:25:50 +05:30
check-code.py check-code: fix foo_bar naming detection and add a whitelist 2018-04-13 21:51:09 -07:00
check-config.py check-config: mention the file and line of the error 2017-07-18 06:27:36 -07:00
check-py3-compat.py check: check modules in hgdemandimport 2017-05-21 13:44:26 -07:00
clang-format-blacklist cfastmanifest: move to hgext/extlib/ 2018-01-09 10:36:54 -08:00
debugcmdserver.py debugcmdserver: use absolute_import and print_function 2016-03-06 03:06:09 +05:30
dirstatenonnormalcheck.py dirstate: move nonnormal and otherparent sets to dirstatemap 2017-10-05 11:34:41 -07:00
dockerdeb dockerdeb: pass the rest of the args to the builder script 2016-04-23 12:47:57 -07:00
dockerlib.sh docker: pass proxy arguments to docker process 2017-07-27 13:44:15 +02:00
dockerrpm docker: pass proxy arguments to docker process 2017-07-27 13:44:15 +02:00
dumprevlog py3: make contrib/dumprevlog use print_function 2016-05-13 02:16:32 +05:30
editmerge editmerge: dequote other use of $ED 2015-10-19 21:36:12 -07:00
editmergeps.bat contrib: run editmergeps.ps1 from the same location as editmergeps.bat 2017-05-30 05:56:48 -07:00
editmergeps.ps1 contrib: remove unnecessary debug output from editmergeps.ps1 2017-05-30 06:22:14 -07:00
fixpax.py fixpax: use absolute_import and print_function 2016-03-06 03:10:17 +05:30
genosxversion.py osx: new script for generating OS X package versions 2017-07-24 20:38:09 -04:00
git-sl contrib: move builddeb to contrib/builddeb_fb/ 2018-01-09 16:44:27 -08:00
hg-new-workdir scripts: move fb-hgext/scripts/ to contrib/ 2018-01-09 16:22:02 -08:00
hg-ssh serve: move hg-ssh readonly logic into hg serve 2018-01-03 05:35:56 -08:00
hg-test-mode.el hg-test-mode: make exit code highlight work again 2014-08-12 12:53:23 -05:00
hgclient.py test-commandserver: handle cStringIO.StringIO/io.StringIO divergence 2016-04-06 20:34:34 +00:00
hggitperf.py hggit: internalize extension 2018-01-09 06:08:01 -08:00
hgk hgk: display committer name when set by hg-git 2015-04-03 22:44:25 +02:00
hgperf dispatch: move initialization of sys.std* files 2017-10-02 07:18:24 +01:00
hgweb.fcgi mq: add a warning about uncommitted changes for qfinish 2011-11-10 15:40:34 -06:00
hgweb.wsgi urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
import-checker.py import-checker: consider lz4 as a system module 2018-04-13 21:51:01 -07:00
lint.py contrib: move git-sl 2018-01-09 16:30:14 -08:00
linux-wheel-centos5-blacklist packaging: add make target for linux wheels 2017-04-25 16:50:01 +02:00
logo-droplets.svg logo: clean up source file with scour 2010-04-05 14:33:41 -05:00
Makefile.python contrib: disable SSLv3_method() to build old Python with recent libssl 2015-11-07 16:31:04 +09:00
memory.py atexit: switch to home-grown implementation 2017-04-11 14:54:12 -07:00
mercurial.el en-us: penalize 2012-08-17 13:58:19 -07:00
mercurial.spec rpms: add chg 2017-07-27 16:09:26 +02:00
mq.el Remove FSF mailing address from GPL headers 2012-01-06 16:27:13 +01:00
packagelib.sh build: build deb/rpm independently on config/extensions in the host system 2017-10-17 22:46:08 +02:00
perf.py flake8: enable F821 check 2018-04-13 21:51:09 -07:00
phabricator.py phabricator: add a config to use curl for communication 2017-09-01 12:13:17 -07:00
pylintrc codingstyle: remove trailing spaces in various text files 2013-04-17 03:40:18 +02:00
python3-ratchet.py contrib: add a ratchet for tests in Python 3 2017-06-15 11:00:29 -04:00
python3-whitelist py3: add 32 new tests passing to the whitelist 2017-12-10 05:41:05 +05:30
python-hook-examples.py contrib: python-hook-examples use absolute_import 2016-03-16 04:13:28 +05:30
revsetbenchmarks.py py3: make contrib/revsetbenchmarks.py not import symbols from stdlib modules 2016-05-14 14:23:04 +09:00
scm-prompt.sh Do not probe the home directory because autofs 2018-04-13 21:50:59 -07:00
showstack.py showstack: use absolute_import 2016-03-13 01:59:18 +05:30
simplemerge context: add arbitraryfilectx, which can represent files outside the workdir 2017-09-01 11:52:20 -07:00
synthrepo.py flake8: enable F821 check 2018-04-13 21:51:09 -07:00
tcsh_completion contrib: update tcsh_completion for Mercurial 1.8 2011-03-01 07:28:20 +01:00
tcsh_completion_build.sh contrib: update tcsh_completion for Mercurial 1.8 2011-03-01 07:28:20 +01:00
traceprof.py flake8: enable F821 check 2018-04-13 21:51:09 -07:00
undumprevlog undumprevlog: update to valid Python 3 syntax 2017-08-22 12:58:51 -04:00
unit.py scripts: move fb-hgext/scripts/ to contrib/ 2018-01-09 16:22:02 -08:00
utils.py scripts: move fb-hgext/scripts/ to contrib/ 2018-01-09 16:22:02 -08:00
with-hg-dev scripts: move fb-hgext/scripts/ to contrib/ 2018-01-09 16:22:02 -08:00
xml.rnc Added RelaxNG schema for hg log XML output format 2009-12-30 02:44:37 +01:00
zsh_completion zsh_completion: add '--partial' flag to completions for 'import' (issue5618) 2017-07-12 10:11:02 +02:00