Mercurial > hg
annotate tests/test-check-py3-compat.t @ 30435:b86a448a2965
zstd: vendor python-zstandard 0.5.0
As the commit message for the previous changeset says, we wish
for zstd to be a 1st class citizen in Mercurial. To make that
happen, we need to enable Python to talk to the zstd C API. And
that requires bindings.
This commit vendors a copy of existing Python bindings. Why do we
need to vendor? As the commit message of the previous commit says,
relying on systems in the wild to have the bindings or zstd present
is a losing proposition. By distributing the zstd and bindings with
Mercurial, we significantly increase our chances that zstd will
work. Since zstd will deliver a better end-user experience by
achieving better performance, this benefits our users. Another
reason is that the Python bindings still aren't stable and the
API is somewhat fluid. While Mercurial could be coded to target
multiple versions of the Python bindings, it is safer to bundle
an explicit, known working version.
The added Python bindings are mostly a fully-featured interface
to the zstd C API. They allow one-shot operations, streaming,
reading and writing from objects implements the file object
protocol, dictionary compression, control over low-level compression
parameters, and more. The Python bindings work on Python 2.6,
2.7, and 3.3+ and have been tested on Linux and Windows. There are
CFFI bindings, but they are lacking compared to the C extension.
Upstream work will be needed before we can support zstd with PyPy.
But it will be possible.
The files added in this commit come from Git commit
e637c1b214d5f869cf8116c550dcae23ec13b677 from
https://github.com/indygreg/python-zstandard and are added without
modifications. Some files from the upstream repository have been
omitted, namely files related to continuous integration.
In the spirit of full disclosure, I'm the maintainer of the
"python-zstandard" project and have authored 100% of the code
added in this commit. Unfortunately, the Python bindings have
not been formally code reviewed by anyone. While I've tested
much of the code thoroughly (I even have tests that fuzz APIs),
there's a good chance there are bugs, memory leaks, not well
thought out APIs, etc. If someone wants to review the code and
send feedback to the GitHub project, it would be greatly
appreciated.
Despite my involvement with both projects, my opinions of code
style differ from Mercurial's. The code in this commit introduces
numerous code style violations in Mercurial's linters. So, the code
is excluded from most lints. However, some violations I agree with.
These have been added to the known violations ignore list for now.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 10 Nov 2016 22:15:58 -0800 |
parents | 776a6d29b2cc |
children | 8b3ad0252344 |
rev | line source |
---|---|
27279
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 #require test-repo |
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 |
29219
3c9066ed557c
tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents:
29195
diff
changeset
|
3 $ . "$TESTDIR/helpers-testrepo.sh" |
27279
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 $ cd "$TESTDIR"/.. |
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 |
27438
f121cf57ca9a
tests: convert directory separators to '/' for MSYS in test-check-py-compat
Matt Harbison <matt_harbison@yahoo.com>
parents:
27361
diff
changeset
|
6 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py |
30435
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
7 contrib/python-zstandard/setup.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
8 contrib/python-zstandard/setup_zstd.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
9 contrib/python-zstandard/tests/common.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
10 contrib/python-zstandard/tests/test_cffi.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
11 contrib/python-zstandard/tests/test_compressor.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
12 contrib/python-zstandard/tests/test_data_structures.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
13 contrib/python-zstandard/tests/test_decompressor.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
14 contrib/python-zstandard/tests/test_estimate_sizes.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
15 contrib/python-zstandard/tests/test_module_attributes.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
16 contrib/python-zstandard/tests/test_roundtrip.py not using absolute_import |
b86a448a2965
zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30333
diff
changeset
|
17 contrib/python-zstandard/tests/test_train_dictionary.py not using absolute_import |
28432
2377c4ac4eec
fsmonitor: dependencies for new experimental extension
Martijn Pieters <mjpieters@fb.com>
parents:
28417
diff
changeset
|
18 hgext/fsmonitor/pywatchman/__init__.py not using absolute_import |
2377c4ac4eec
fsmonitor: dependencies for new experimental extension
Martijn Pieters <mjpieters@fb.com>
parents:
28417
diff
changeset
|
19 hgext/fsmonitor/pywatchman/__init__.py requires print_function |
2377c4ac4eec
fsmonitor: dependencies for new experimental extension
Martijn Pieters <mjpieters@fb.com>
parents:
28417
diff
changeset
|
20 hgext/fsmonitor/pywatchman/capabilities.py not using absolute_import |
2377c4ac4eec
fsmonitor: dependencies for new experimental extension
Martijn Pieters <mjpieters@fb.com>
parents:
28417
diff
changeset
|
21 hgext/fsmonitor/pywatchman/pybser.py not using absolute_import |
27279
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
22 i18n/check-translation.py not using absolute_import |
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
23 setup.py not using absolute_import |
40eb385f798f
tests: add test for Python 3 compatibility
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
24 tests/test-demandimport.py not using absolute_import |
28583
260ce2eed951
tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28564
diff
changeset
|
25 |
260ce2eed951
tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28564
diff
changeset
|
26 #if py3exe |
29886
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
27 $ hg files 'set:(**.py) - grep(pygments)' | sed 's|\\|/|g' \ |
29810
ceff91dea404
py3: automatically glob out line numbers from check-py3-compat output
Yuya Nishihara <yuya@tcha.org>
parents:
29809
diff
changeset
|
28 > | xargs $PYTHON3 contrib/check-py3-compat.py \ |
ceff91dea404
py3: automatically glob out line numbers from check-py3-compat output
Yuya Nishihara <yuya@tcha.org>
parents:
29809
diff
changeset
|
29 > | sed 's/[0-9][0-9]*)$/*)/' |
30132
72f75eda02ba
py3: use raw strings in line continuation (convert ext)
Mateusz Kwapich <mitrandir@fb.com>
parents:
30131
diff
changeset
|
30 hgext/convert/transport.py: error importing: <ImportError> No module named 'svn.client' (error at transport.py:*) |
30094
f701fffd21d8
py3: make check-py3-compat.py load modules in standard manner
Yuya Nishihara <yuya@tcha.org>
parents:
30093
diff
changeset
|
31 hgext/fsmonitor/pywatchman/capabilities.py: error importing: <ImportError> No module named 'pybser' (error at __init__.py:*) |
f701fffd21d8
py3: make check-py3-compat.py load modules in standard manner
Yuya Nishihara <yuya@tcha.org>
parents:
30093
diff
changeset
|
32 hgext/fsmonitor/pywatchman/pybser.py: error importing: <ImportError> No module named 'pybser' (error at __init__.py:*) |
f701fffd21d8
py3: make check-py3-compat.py load modules in standard manner
Yuya Nishihara <yuya@tcha.org>
parents:
30093
diff
changeset
|
33 hgext/fsmonitor/watchmanclient.py: error importing: <ImportError> No module named 'pybser' (error at __init__.py:*) |
f701fffd21d8
py3: make check-py3-compat.py load modules in standard manner
Yuya Nishihara <yuya@tcha.org>
parents:
30093
diff
changeset
|
34 hgext/mq.py: error importing: <TypeError> __import__() argument 1 must be str, not bytes (error at extensions.py:*) |
30333
776a6d29b2cc
py3: update test-check-py3-compat.t output
Yuya Nishihara <yuya@tcha.org>
parents:
30257
diff
changeset
|
35 mercurial/scmwindows.py: error importing: <ImportError> No module named 'msvcrt' (error at win32.py:*) |
30257
7428223ed7c2
statprof: use print function
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30256
diff
changeset
|
36 mercurial/statprof.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at statprof.py:*) |
30093
68010ed1636d
py3: include module filename in check-py3-compat.py output
Yuya Nishihara <yuya@tcha.org>
parents:
30087
diff
changeset
|
37 mercurial/win32.py: error importing: <ImportError> No module named 'msvcrt' (error at win32.py:*) |
68010ed1636d
py3: include module filename in check-py3-compat.py output
Yuya Nishihara <yuya@tcha.org>
parents:
30087
diff
changeset
|
38 mercurial/windows.py: error importing: <ImportError> No module named 'msvcrt' (error at windows.py:*) |
28583
260ce2eed951
tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28564
diff
changeset
|
39 |
260ce2eed951
tests: perform an ast parse with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28564
diff
changeset
|
40 #endif |
29886
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
41 |
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
42 #if py3exe py3pygments |
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
43 $ hg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \ |
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
44 > | xargs $PYTHON3 contrib/check-py3-compat.py \ |
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
45 > | sed 's/[0-9][0-9]*)$/*)/' |
e2c086f147ef
py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com>
parents:
29810
diff
changeset
|
46 #endif |