duplicity-team team mailing list archive
-
duplicity-team team
-
Mailing list archive
-
Message #05047
Re: Progress on 0.8.0
We're making progress! With the latest update:
1. On an 18.04 Ubuntu VM:
- py27 passes all tests
- py3 passes all but 7 tests
2. On a rebuilt docker instance:
- fails a lot more tests on both
- abandoned till later
3. The "from future import ???" works as it should.
I'm fairly sure the testing code itself is responsible for some of the 7
failures, but we need to be sure.
...Thanks,
...Ken
On Mon, Jun 17, 2019 at 10:41 AM Kenneth Loafman <kenneth@xxxxxxxxxxx>
wrote:
> Just did a pipe cleaning:
>
> 2019-06-17 Kenneth Loafman <kenneth@xxxxxxxxxxx>
>
> * Fix some import conflicts with the "past" module
> - Rename collections.py to dup_collections.py
> - Remove all "from future.utils import old_div"
> - Replace old_div() with "//" (in py27 for a while).
> - All tests run for py3, unit tests run for py2. The new
> import fail is "from future import standard_library"
> * Fixed bug #1831178 sequence item 0: expected str instance, int found
> - Simply converted int to str when making list
> * Merged in lp:~kaffeekiffer/duplicity/azure-python3-fix
> - Use util.fsencode to encode file string
>
> The "from future" is doing the same thing. Merely do the following:
>
> $ python2 duplicity/asyncscheduler.py
>
> To see what's happening. Now looking for the problem.
>
> ...Ken
>
>
> On Fri, Jun 14, 2019 at 10:51 AM Kenneth Loafman <kenneth@xxxxxxxxxxx>
> wrote:
>
>>
>> On Thu, Jun 13, 2019 at 11:06 AM Kenneth Loafman <kenneth@xxxxxxxxxxx>
>> wrote:
>>
>>>
>>> On Wed, Jun 12, 2019 at 4:41 PM Aaron Whitehouse <
>>> aaron@xxxxxxxxxxxxxxxxxx> wrote:
>>>
>>>> Ken,
>>>>
>>>> On Jun 2 2019, at 2:36 pm, Aaron Whitehouse <lists@xxxxxxxxxxxxxxxxxx>
>>>> wrote:
>>>>
>>>> > On py2 I cannot get *past* to import even though it's in tox and
>>>> local site-packages. This causes all of the functional tests to fail.
>>>>
>>>> Do we need this on Py2? Isn't it to provide Python 2-equivalent
>>>> functionality in Python 3? Can we put the import within a test for Python
>>>> version (and then obviously in future move over to using Python 3
>>>> constructs).
>>>>
>>>> Yes, past.old_div() is used in multiple modules to keep away from py3's
>>>> broken division.
>>>>
>>>> I am still getting this when trying to do ./run-tests on trunk, but I
>>>> see you managed to get 0.8.00 out the door -- how did you fix it on your
>>>> machine?
>>>>
>>>>
>>>> I did a clean install on a Ubuntu Bionic VM and that worked.
>>>>
>>>>
>>>> I cannot make this work in a clean Bionic install, on my development
>>>> box or even the 16.04 docker image.
>>>>
>>>> I guess we can replace it with an equivalent old_div function in util,
>>>> but thought I would check there is not something I am missing that can get
>>>> this working. Any suggestions?
>>>>
>>>> Kind regards,
>>>>
>>>> Aaron
>>>>
>>>
>>> Aaron,
>>>
>>> Regrettably, I've managed to get myself back to the same situation, py3
>>> passes but py2 fails with 'past' imports. Not good!
>>>
>>> I had not installed all of the backend imports, so when I uncommented
>>> those and installed them via
>>> "pip install -U -r requirements.txt",
>>> py27 functional tests broke. I think there is a name conflict somewhere.
>>>
>>> So, for now, I have one run of py2 that passed unittest and functional,
>>> but none sense.
>>>
>>> Anyone else running into this problem? Did you find a fix? Google
>>> seems to be full of unanswered or misleading questions about this!
>>>
>>> ...Thanks,
>>> ...Ken
>>>
>>
>> I found the problem and it's a mess. By the time that 'from past.utils
>> import old_div' gets executed, duplicity/collections has been imported. In
>> the imports that past does, it tries to import DefaultDict from
>> collections, which does not exist. You can see it below. Working now on
>> renaming our collections to dup_collections. We're likely to hit this
>> again.
>>
>> ken@utest-18-04:~/workspace/duplicity-src8$ python duplicity/log.py
>> Traceback (most recent call last):
>> File "duplicity/log.py", line 27, in <module>
>> from builtins import str
>> File "/usr/local/lib/python2.7/dist-packages/builtins/__init__.py",
>> line 8, in <module>
>> from future.builtins import *
>> File
>> "/usr/local/lib/python2.7/dist-packages/future/builtins/__init__.py", line
>> 10, in <module>
>> from future.builtins.iterators import (filter, map, zip)
>> File
>> "/usr/local/lib/python2.7/dist-packages/future/builtins/iterators.py", line
>> 38, in <module>
>> from future import utils
>> File "/usr/local/lib/python2.7/dist-packages/future/utils/__init__.py",
>> line 55, in <module>
>> import inspect
>> File "/usr/lib/python2.7/inspect.py", line 42, in <module>
>> from collections import namedtuple
>> File "/home/ken/workspace/duplicity-src8/duplicity/collections.py",
>> line 24, in <module>
>> from past.builtins import cmp
>> File "/usr/local/lib/python2.7/dist-packages/past/__init__.py", line
>> 88, in <module>
>> from past.translation import install_hooks as autotranslate
>> File
>> "/usr/local/lib/python2.7/dist-packages/past/translation/__init__.py", line
>> 42, in <module>
>> from lib2to3.refactor import RefactoringTool
>> File "/usr/lib/python2.7/lib2to3/refactor.py", line 30, in <module>
>> from . import btm_matcher as bm
>> File "/usr/lib/python2.7/lib2to3/btm_matcher.py", line 12, in <module>
>> from collections import defaultdict
>> ImportError: cannot import name defaultdict
>>
>> ...Ken
>>
>>
Follow ups
References