Comment 6 for bug 2058914

Revision history for this message
Jose Luis Rivero (j-rivero) wrote : Re: python-pytest-flake8 FTBFS against python-flake8 7

Given that the solution proposed is to ship a custom patch, I'm going to bump this to a FFe to get acceptance of the release-team and also unblock the excuses transition in existing Noble development cycle.

 * Merge request: https://code.launchpad.net/~j-rivero/ubuntu/+source/python-pytest-flake8/+git/python-pytest-flake8/+merge/464197
 * Build tested: https://code.launchpad.net/~j-rivero/+recipe/python-pytest-flake8-daily

[Justification]
This package is stopping the transition in Noble from noble-proposed to noble of python3-flake8, see https://ubuntu-archive-team.ubuntu.com/proposed-migration/update_excuses.html#python-flake8

If you install python3-flake8 in regular Noble right now, you get version 5.0.4.
flake8 depends on pydocstyle, which was updated to a newer version (6.3.0),
which changed API. So attempting to run flake8 fails at startup, trying to call
an invalid API.

python3-flake8 7.0.0 and 8.1.1 (the latest) both fix this issue.
8.1.1 is currently the version in noble-proposed. However, it has been stuck in
proposed for several months because pythonpytest-flake8 fails tests when used
against that version.

See the problem in the long build of the ROS buildfarm:
https://build.ros2.org/view/Rdev/job/Rdev__ros2cli__ubuntu_noble_amd64/2/console

---- 8< -----------------------------
08:29:45 _________________________________ test_flake8 __________________________________
08:29:45 /usr/lib/python3/dist-packages/flake8/plugins/finder.py:296: in _load_plugin
08:29:45 obj = plugin.entry_point.load()
08:29:45 /usr/lib/python3.12/importlib/metadata/__init__.py:205: in load
08:29:45 module = import_module(match.group('module'))
08:29:45 /usr/lib/python3.12/importlib/__init__.py:90: in import_module
08:29:45 return _bootstrap._gcd_import(name[level:], package, level)
08:29:45 /usr/lib/python3/dist-packages/flake8/plugins/pycodestyle.py:25: in <module>
08:29:45 from pycodestyle import missing_whitespace_around_operator as _missing_whitespace_around_operator # noqa: E501
08:29:45 E ImportError: cannot import name 'missing_whitespace_around_operator' from 'pycodestyle' (/usr/lib/python3/dist-packages/pycodestyle.py). Did you mean: 'whitespace_around_operator'?
---- 8< -----------------------------

[Testing done]

We have been injecting the python3-flake version in noble-proposed into the ROS
buildfarm build, see that there are no failures any more, software run as expected:
https://ci.ros2.org/job/ci_linux/20828/console
---- 8< ------------------------------
=============================== warnings summary ===============================
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
test/test_flake8.py::test_flake8
  /usr/lib/python3.12/multiprocessing/popen_fork.py:66: DeprecationWarning: This process (pid=259742) is multi-threaded, use of fork() may lead to deadlocks in the child.
    self.pid = os.fork()

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
---
---- 8< ------------------------------

The ROS buildfarm is a large project for testing lot of software packages in open
source robotics and the use of flake8 is integrated into each python package. We
have been using it last weeks without problems.