Re: [libgpiod][PATCH] bindings: python: tests: replace LooseVersion with packaging.version.Version

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov 19, 2024 at 4:20 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
>
> On Tue, Nov 19, 2024 at 4:18 PM Vincent Fazio <vfazio@xxxxxxxxxxx> wrote:
> >
> >
> >
> > > -----Original Message-----
> > > From: Bartosz Golaszewski <brgl@xxxxxxxx>
> > > Sent: Tuesday, November 19, 2024 8:43 AM
> > > To: Linus Walleij <linus.walleij@xxxxxxxxxx>; Kent Gibson
> > > <warthog618@xxxxxxxxx>; Vincent Fazio <vfazio@xxxxxxxxxxx>
> > > Cc: linux-gpio@xxxxxxxxxxxxxxx; Bartosz Golaszewski
> > > <bartosz.golaszewski@xxxxxxxxxx>
> > > Subject: [External] - [libgpiod][PATCH] bindings: python: tests: replace
> > > LooseVersion with packaging.version.Version
> > >
> > > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
> > >
> > > Distutils are deprecated. Use the Version class from packaging.version instead
> > > of LooseVersion from distutils.version.
> > >
> > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
> > > ---
> > >  bindings/python/tests/__init__.py | 7 ++++---
> > >  1 file changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/bindings/python/tests/__init__.py
> > > b/bindings/python/tests/__init__.py
> > > index a0f22ae..d6275bb 100644
> > > --- a/bindings/python/tests/__init__.py
> > > +++ b/bindings/python/tests/__init__.py
> > > @@ -2,10 +2,11 @@
> > >  # SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@xxxxxxxx>
> > >
> > >  import os
> > > -from distutils.version import LooseVersion
> > >
> > > -required_kernel_version = LooseVersion("5.19.0") -current_version =
> > > LooseVersion(os.uname().release.split("-")[0])
> > > +from packaging.version import Version
> > > +
> > > +required_kernel_version = Version("5.19.0") current_version =
> > > +Version(os.uname().release.split("-")[0])
> > >
> >
> > I think these changes are "accurate", however, the challenge is `packaging`
> > Is not part of the stdlib like distutils was so it's very possible someone runs into:
> >
> > vfazio4 /mnt/development/libgpiod/bindings/python # make python-tests-run
> > PYTHONPATH=/mnt/development/libgpiod/bindings/python \
> > LD_LIBRARY_PATH=/mnt/development/libgpiod/lib/.libs/:\
> > /mnt/development/libgpiod/tests/gpiosim/.libs/ \
> > /mnt/development/libgpiod/bindings/python/venv/bin/python3 -B -m tests
> > Traceback (most recent call last):
> >   File "/home/vfazio/.pyenv/versions/3.9.8/lib/python3.9/runpy.py", line 188, in _run_module_as_main
> >     mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
> >   File "/home/vfazio/.pyenv/versions/3.9.8/lib/python3.9/runpy.py", line 147, in _get_module_details
> >     return _get_module_details(pkg_main_name, error)
> >   File "/home/vfazio/.pyenv/versions/3.9.8/lib/python3.9/runpy.py", line 111, in _get_module_details
> >     __import__(pkg_name)
> >   File "/mnt/development/libgpiod/bindings/python/tests/__init__.py", line 6, in <module>
> >     from packaging.version import Version
> > ModuleNotFoundError: No module named 'packaging'
> > make: *** [Makefile:691: python-tests-run] Error 1
> >
> > It may be necessary to document that anyone doing development on the bindings prepares a virtual environment with a minimal set of required dependencies and that it's activated when the build is configured... or the tests need to setup an environment with proper dependencies necessary for them to run.
> >
> >
>
> We do have it as a requirement in pyproject.toml though, shouldn't
> that be enough?
>
> Bart

Alternatively I'm just tempted to rename the procname package to
helpers or something similar and just implement the version checking
in C using KERNEL_VERSION.

This way we wouldn't depend on anything in python.

Bart





[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux