-
Notifications
You must be signed in to change notification settings - Fork 17
Testcpio improvements, cpiofile improvements and port to py3 #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
c282eb3 to
72b8c1b
Compare
72b8c1b to
b9f1970
Compare
This is a common error documented in https://docs.python.org/2.7/whatsnew/2.6.html#pep-3110-exception-handling-changes Signed-off-by: Yann Dirson <[email protected]>
Note there are indentation issues introduced in xcp.repository, as well as uses of the `future` package (which are not supposed to happen in pass 1), and several smaller issues. All of this is handled separately in further patches, so we can easily reconstruct this patch by running `futurize -wn1`. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
…lengths Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
This API change requires switching literals from str to unicode. Signed-off-by: Yann Dirson <[email protected]>
This implementation of CpioFileCompat.write cannot work with python 2.7, as adding new attributes to a ZipInfo triggers an exception. `tarfile.py` in Python 2.7 has a fix, but this method is clearly not used, so there's no reason to keep it, especially as its use of StringIO should likely switch to BytesIO and we would need to write tests for this. Also note that in python3 the TarFileCompat class is removed. We could probably just drop our CpioFileCompat completely, if we're sure noone uses it, but it likely only exists because there was a TarFileCompat. Signed-off-by: Yann Dirson <[email protected]>
... on locations reported by futurize Signed-off-by: Yann Dirson <[email protected]>
This is the only usage we have of `future`, where we used `six` instead everywhere else. At least `future` has the advantage of being really easy to drop when we cull python2 support. Signed-off-by: Yann Dirson <[email protected]>
These changes come from a `futurize -2` or `2to3` run, but are for some reason not applied by the `urllib` fix itself. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Changes driven by "futurize -f libfuturize.fixes.fix_xrange_with_import", but not using "from builtins import range", which only brings negligible performance degradation on python2. Signed-off-by: Yann Dirson <[email protected]>
There has not been any distinction at the python code level between `long` and `int` since 2.2. `2to3 -f long` would replace them with casts to `int` instead, which would just be a no-op. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
…bility Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Only exclude a change to `xcp.accessor`. Signed-off-by: Yann Dirson <[email protected]>
…timal Signed-off-by: Yann Dirson <[email protected]>
…eeded 2to3 uses list comprehensions to replace `map` calls in many places where they're not needed, and would yield worse perf than `map`. Signed-off-by: Yann Dirson <[email protected]>
…filter())` Looks like a bug/limitation in `2to3`. Signed-off-by: Yann Dirson <[email protected]>
…ions Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
…on convention Signed-off-by: Yann Dirson <[email protected]>
…public-methods Signed-off-by: Yann Dirson <[email protected]>
…lengths Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Tests already fail on uncaught exception, and those except blocks are just adding dead code to tests. Signed-off-by: Yann Dirson <[email protected]>
Makes for much more readable tests. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
This helps understanding what really differs between 2 platforms. Signed-off-by: Yann Dirson <[email protected]>
When hunting for platform difference, it helps being able to tell that a difference comes from the original archives, now reproducible, or from the ones generated by the code under test. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
References: * xz file-format spec: https://tukaani.org/xz/xz-file-format.txt * python3 defaults: https://docs.python.org/3/library/lzma.html#lzma.LZMACompressor * python2 defaults: Help on class LZMAFile in module lzma: class LZMAFile(__builtin__.object) | LZMAFile(name [, mode='r', buffering=0, memlimit=-1, | options={'format':'xz', 'check':'crc32', 'level':6, 'extreme':False, | 'dict_size':23, 'lc':3 'lp':0, 'pb':2, 'mode':2, | 'nice_len':128, 'mf':'bt4', 'depth':0]) -> file object Signed-off-by: Yann Dirson <[email protected]>
Just safer than just checking for 2 single-digit bytes. Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Signed-off-by: Yann Dirson <[email protected]>
Really hackish in case the code gets used. Caught/tested using non-included test_cpiofile.py derived from cpython's test_tarfile.py Signed-off-by: Yann Dirson <[email protected]>
b9f1970 to
1902174
Compare
|
Could you a python3 environment in the CI to verify the port is working correctly? |
xennifer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Assuming it all works - the changes look reasnable to me.
I have done that as last commit in #17, as only then will all tests pass on python3. |
Stacked PR, commits are: ydirson/xenserver-python-libs@futurize-pass-2...ydirson:xenserver-python-libs:testcpio-py3