Nice.
I'm just devoting my Friday productivity to fixing bustages in python
3.7 compared to 3.6. Which affect code I copied from mozpack.path ;-) [0]
Which leads me to: We should run tests in automation for at least 3.7
and 3.6. Not sure what still ships 3.5, if at all?
Testing some version of 3.x sadly isn't covering all our bases.
Axel
[0] https://bugzilla.mozilla.org/show_bug.cgi?id=1473847 for my copy
Am 03.07.18 um 17:48 schrieb Andrew Halberstadt:
Dave Hunt has recently landed a lot of great work to get
some of our python unittests running with Python 3. You
can see his blog post on it here:
http://davehunt.co.uk/2018/06/29/python-unit-tests-now-running-with-python-3-at-mozilla.html
The march to Python 3 has been long and slow, but this is a
major milestone along the way. It gives us more confidence
that porting a module won't be immediately regressed again
with the next change. Thanks Dave!
I want to emphasize that the time is ripe to start porting
any python modules you maintain to support Python 3
(in addition to 2). Here are some things you can do:
1) Enable the py2/py3 and flake8 linters on your module. You
can do this by adjusting the include/exclude paths at the
following locations:
https://searchfox.org/mozilla-central/source/tools/lint/py2.yml
https://searchfox.org/mozilla-central/source/tools/lint/py3.yml
https://searchfox.org/mozilla-central/source/tools/lint/flake8.yml
Then run |mach lint <path/to/module>| and fix any errors that
show up (use --fix to automatically fix whatever it can).
2) Run your |mach python-test| tests under Python 3 in CI. The
first step is to remove the 'skip-if' annotation from the relevant
manifest:
https://searchfox.org/mozilla-central/search?q=skip-if.*python+%3F%3D%3D+%3F3&case=true®exp=true&path=ini
Next, run |mach python-test <path/to/module> --python 3| and
fix any test failures that show up.
Finally, adjust the task (if applicable) to run with both python 2
and 3 by modifying this line in the appropriate task:
https://searchfox.org/mozilla-central/source/taskcluster/ci/source-test/python.yml#94
3) Write all new python code to be both Python 2 and Python 3
compatible. The 'six' library should be available in all contexts
of mozilla-central (both locally and in CI). If it isn't, please file
a bug.
Here is a handy cheat sheet you can reference to solve
incompatibilities:
http://python-future.org/compatible_idioms.html
4) File bugs! Even if you don't have time to do the conversion
now, get bugs on file and make them block the 'buildpython3'
meta bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1388447
Having bugs like these on file can also turn into great first
projects for a contributor.
There is also infrastructure work we could implement to make
the transition easier. For example, we should run the 'flake8'
linter under python 3 as well as 2. We should also make
|mach python-test| default to running tests with both.
We'll only ever get to full python 3 compatibility if everyone
buys in. While the end goal is still a long long way away, that
shouldn't stop us from starting to make some progress now.
Cheers,
Andrew
_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds