Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.maint.python > #14213 > unrolled thread

Re: Strangely rare pytest 7.x bug report

Started byCarles Pina i Estany <carles@pina.cat>
First post2022-07-04 17:20 +0200
Last post2022-07-05 09:50 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.debian.maint.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Strangely rare pytest 7.x bug report Carles Pina i Estany <carles@pina.cat> - 2022-07-04 17:20 +0200
    Re: Strangely rare pytest 7.x bug report Julian Gilbey <julian@d-and-j.net> - 2022-07-04 20:40 +0200
      Re: Strangely rare pytest 7.x bug report Carles Pina i Estany <carles@pina.cat> - 2022-07-04 21:40 +0200
        Re: Strangely rare pytest 7.x bug report Carles Pina i Estany <carles@pina.cat> - 2022-07-05 09:50 +0200

#14213 — Re: Strangely rare pytest 7.x bug report

FromCarles Pina i Estany <carles@pina.cat>
Date2022-07-04 17:20 +0200
SubjectRe: Strangely rare pytest 7.x bug report
Message-ID<EFw1H-96u2-3@gated-at.bofh.it>
Hi,

I'm a lurker of debian-python@lists.debian.org but seeing Python+Qt I
wanted to have a look. I don't have a solution (I might look more
another time if time permits) but I might have something that might help
someone who knows the tools better.

I am not familiar with Python Debian packaging details/tools neither
with pytest :-( so take all of this with a pinch of salt.

If it helps the error comes from:
/usr/lib/python3.9/importlib/__init__.py in the functin "import_modules"
it does:
"""
    if name.startswith('.'):
        if not package:
            msg = ("the 'package' argument is required to perform a relative "
                   "import for {!r}")
            raise TypeError(msg.format(name))
"""

When the import fails the "name" parameter of "import_modules" function
is: '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests' , which is derived
from the hidden dirctory ".pybuild" as created by default by "pybuild".

I think that the initial "." is used only as a directory name but Python
assumes that is a relative import requiring the package parameter.

Just to check my thoughts, and after running dpkg-buildpackage and
failing let's try again:

$ cd .pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
Fails with the:

TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests'
/home/carles/git/python-qtpy

Then let's try to avoid the initial "." confusion:

$ mv .pybuild pybuild
$ cd pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -

It works.

I don't know why this is the only package affected by this though...

Hopefully it helps a bit!

On Jul/04/2022, Julian Gilbey wrote:
> Dear all,
> 
> I wonder whether you might have any clue about
> https://bugs.debian.org/1013700
> I have mostly worked out the "cause" of the bug, but I haven't quite
> got to the bottom of it.
> 
> When running the command
> PYTHONPATH=. python3.10 -m pytest qtpy/tests
> in the directory .pybuild/cpython3_3.10_qtpy/build, I get the error
> message:
> 
> ImportError while loading conftest '/home/jdg/debian/spyder-packages/qtpy/build-area/python-qtpy-2.1.0/.pybuild/cpython3_3.10_qtpy/build/qtpy/tests/conftest.py'.
> TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.10_qtpy.build.qtpy.tests'
> 
> If the directory .pybuild is renamed to pybuild, the tests run without
> a problem.  So there seems to be something funny about conftest.py
> (and removing all of the other files from the qtpy/tests directory
> except for the empty __init__.py gives the same error); here's a link
> to it:
> 
> https://salsa.debian.org/python-team/packages/python-qtpy/-/blob/master/qtpy/tests/conftest.py
> 
> But there doesn't seem to be anything out of the ordinary about this.
> So I am mystified: why does pytest 7.x seem to not give this error on
> any other Debian package?
> 
> The only solution I currently have for this package is skip the tests
> at build time and rely on autopkgtest to do them.
> 
> Best wishes,
> 
>    Julian
-- 
Carles Pina i Estany
https://carles.pina.cat

[toc] | [next] | [standalone]


#14214

FromJulian Gilbey <julian@d-and-j.net>
Date2022-07-04 20:40 +0200
Message-ID<EFz9f-98bw-3@gated-at.bofh.it>
In reply to#14213
Hi Carles,

Thanks for your thoughts!  Yes, indeed that seems to be the issue.
But what I don't understand is why the import is turned into
.pybuild.cpython3_3.9_qtpy.build.qtpy.tests and not just qtpy.tests or
a longer path, and why only this package fails in this way.  Perhaps
this is the only package that has an import statement in
pytest_configure?

Best wishes,

   Julian

On Mon, Jul 04, 2022 at 04:03:39PM +0100, Carles Pina i Estany wrote:
> 
> Hi,
> 
> I'm a lurker of debian-python@lists.debian.org but seeing Python+Qt I
> wanted to have a look. I don't have a solution (I might look more
> another time if time permits) but I might have something that might help
> someone who knows the tools better.
> 
> I am not familiar with Python Debian packaging details/tools neither
> with pytest :-( so take all of this with a pinch of salt.
> 
> If it helps the error comes from:
> /usr/lib/python3.9/importlib/__init__.py in the functin "import_modules"
> it does:
> """
>     if name.startswith('.'):
>         if not package:
>             msg = ("the 'package' argument is required to perform a relative "
>                    "import for {!r}")
>             raise TypeError(msg.format(name))
> """
> 
> When the import fails the "name" parameter of "import_modules" function
> is: '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests' , which is derived
> from the hidden dirctory ".pybuild" as created by default by "pybuild".
> 
> I think that the initial "." is used only as a directory name but Python
> assumes that is a relative import requiring the package parameter.
> 
> Just to check my thoughts, and after running dpkg-buildpackage and
> failing let's try again:
> 
> $ cd .pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> Fails with the:
> 
> TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests'
> /home/carles/git/python-qtpy
> 
> Then let's try to avoid the initial "." confusion:
> 
> $ mv .pybuild pybuild
> $ cd pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> 
> It works.
> 
> I don't know why this is the only package affected by this though...
> 
> Hopefully it helps a bit!
> 
> On Jul/04/2022, Julian Gilbey wrote:
> > Dear all,
> > 
> > I wonder whether you might have any clue about
> > https://bugs.debian.org/1013700
> > I have mostly worked out the "cause" of the bug, but I haven't quite
> > got to the bottom of it.
> > 
> > When running the command
> > PYTHONPATH=. python3.10 -m pytest qtpy/tests
> > in the directory .pybuild/cpython3_3.10_qtpy/build, I get the error
> > message:
> > 
> > ImportError while loading conftest '/home/jdg/debian/spyder-packages/qtpy/build-area/python-qtpy-2.1.0/.pybuild/cpython3_3.10_qtpy/build/qtpy/tests/conftest.py'.
> > TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.10_qtpy.build.qtpy.tests'
> > 
> > If the directory .pybuild is renamed to pybuild, the tests run without
> > a problem.  So there seems to be something funny about conftest.py
> > (and removing all of the other files from the qtpy/tests directory
> > except for the empty __init__.py gives the same error); here's a link
> > to it:
> > 
> > https://salsa.debian.org/python-team/packages/python-qtpy/-/blob/master/qtpy/tests/conftest.py
> > 
> > But there doesn't seem to be anything out of the ordinary about this.
> > So I am mystified: why does pytest 7.x seem to not give this error on
> > any other Debian package?
> > 
> > The only solution I currently have for this package is skip the tests
> > at build time and rely on autopkgtest to do them.
> > 
> > Best wishes,
> > 
> >    Julian

[toc] | [prev] | [next] | [standalone]


#14215

FromCarles Pina i Estany <carles@pina.cat>
Date2022-07-04 21:40 +0200
Message-ID<EFA5j-98IY-7@gated-at.bofh.it>
In reply to#14214
Hi Julian,

On Jul/04/2022, Julian Gilbey wrote:
> Hi Carles,
> 
> Thanks for your thoughts!  Yes, indeed that seems to be the issue.
> But what I don't understand is why the import is turned into
> .pybuild.cpython3_3.9_qtpy.build.qtpy.tests and not just qtpy.tests or

I see how pytest does it (but keep reading)

> a longer path, and why only this package fails in this way.  Perhaps
> this is the only package that has an import statement in
> pytest_configure?

This I don't know and I'm curious, and it might help disecting the issue
(or understanding it). Do you know of any other python3 package that you
expected to fail? (using pytest in a similar way).

I might try to get both and follow what they do different (to hopefully
know what is python-qtpy doing different :-) )

I'm sure that there are tons of packages that use pytest :-) I'm
wondering if you had a good candidate.

Best regards,

> 
> Best wishes,
> 
>    Julian
> 
> On Mon, Jul 04, 2022 at 04:03:39PM +0100, Carles Pina i Estany wrote:
> > 
> > Hi,
> > 
> > I'm a lurker of debian-python@lists.debian.org but seeing Python+Qt I
> > wanted to have a look. I don't have a solution (I might look more
> > another time if time permits) but I might have something that might help
> > someone who knows the tools better.
> > 
> > I am not familiar with Python Debian packaging details/tools neither
> > with pytest :-( so take all of this with a pinch of salt.
> > 
> > If it helps the error comes from:
> > /usr/lib/python3.9/importlib/__init__.py in the functin "import_modules"
> > it does:
> > """
> >     if name.startswith('.'):
> >         if not package:
> >             msg = ("the 'package' argument is required to perform a relative "
> >                    "import for {!r}")
> >             raise TypeError(msg.format(name))
> > """
> > 
> > When the import fails the "name" parameter of "import_modules" function
> > is: '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests' , which is derived
> > from the hidden dirctory ".pybuild" as created by default by "pybuild".
> > 
> > I think that the initial "." is used only as a directory name but Python
> > assumes that is a relative import requiring the package parameter.
> > 
> > Just to check my thoughts, and after running dpkg-buildpackage and
> > failing let's try again:
> > 
> > $ cd .pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> > Fails with the:
> > 
> > TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests'
> > /home/carles/git/python-qtpy
> > 
> > Then let's try to avoid the initial "." confusion:
> > 
> > $ mv .pybuild pybuild
> > $ cd pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> > 
> > It works.
> > 
> > I don't know why this is the only package affected by this though...
> > 
> > Hopefully it helps a bit!
> > 
> > On Jul/04/2022, Julian Gilbey wrote:
> > > Dear all,
> > > 
> > > I wonder whether you might have any clue about
> > > https://bugs.debian.org/1013700
> > > I have mostly worked out the "cause" of the bug, but I haven't quite
> > > got to the bottom of it.
> > > 
> > > When running the command
> > > PYTHONPATH=. python3.10 -m pytest qtpy/tests
> > > in the directory .pybuild/cpython3_3.10_qtpy/build, I get the error
> > > message:
> > > 
> > > ImportError while loading conftest '/home/jdg/debian/spyder-packages/qtpy/build-area/python-qtpy-2.1.0/.pybuild/cpython3_3.10_qtpy/build/qtpy/tests/conftest.py'.
> > > TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.10_qtpy.build.qtpy.tests'
> > > 
> > > If the directory .pybuild is renamed to pybuild, the tests run without
> > > a problem.  So there seems to be something funny about conftest.py
> > > (and removing all of the other files from the qtpy/tests directory
> > > except for the empty __init__.py gives the same error); here's a link
> > > to it:
> > > 
> > > https://salsa.debian.org/python-team/packages/python-qtpy/-/blob/master/qtpy/tests/conftest.py
> > > 
> > > But there doesn't seem to be anything out of the ordinary about this.
> > > So I am mystified: why does pytest 7.x seem to not give this error on
> > > any other Debian package?
> > > 
> > > The only solution I currently have for this package is skip the tests
> > > at build time and rely on autopkgtest to do them.
> > > 
> > > Best wishes,
> > > 
> > >    Julian
-- 
Carles Pina i Estany
https://carles.pina.cat

[toc] | [prev] | [next] | [standalone]


#14216

FromCarles Pina i Estany <carles@pina.cat>
Date2022-07-05 09:50 +0200
Message-ID<EFLtL-9fq2-7@gated-at.bofh.it>
In reply to#14215
Hi,

On Jul/04/2022, Julian Gilbey wrote:

> It is utterly, utterly bizarre.  But I think I've found the problem.

[...]

> Thanks for your help!

You're welcome!

Cheers,

> 
> Best wishes,
> 
>    Julian
> 
> On Mon, Jul 04, 2022 at 08:39:32PM +0100, Carles Pina i Estany wrote:
> > 
> > Hi Julian,
> > 
> > On Jul/04/2022, Julian Gilbey wrote:
> > > Hi Carles,
> > > 
> > > Thanks for your thoughts!  Yes, indeed that seems to be the issue.
> > > But what I don't understand is why the import is turned into
> > > .pybuild.cpython3_3.9_qtpy.build.qtpy.tests and not just qtpy.tests or
> > 
> > I see how pytest does it (but keep reading)
> > 
> > > a longer path, and why only this package fails in this way.  Perhaps
> > > this is the only package that has an import statement in
> > > pytest_configure?
> > 
> > This I don't know and I'm curious, and it might help disecting the issue
> > (or understanding it). Do you know of any other python3 package that you
> > expected to fail? (using pytest in a similar way).
> > 
> > I might try to get both and follow what they do different (to hopefully
> > know what is python-qtpy doing different :-) )
> > 
> > I'm sure that there are tons of packages that use pytest :-) I'm
> > wondering if you had a good candidate.
> > 
> > Best regards,
> > 
> > > 
> > > Best wishes,
> > > 
> > >    Julian
> > > 
> > > On Mon, Jul 04, 2022 at 04:03:39PM +0100, Carles Pina i Estany wrote:
> > > > 
> > > > Hi,
> > > > 
> > > > I'm a lurker of debian-python@lists.debian.org but seeing Python+Qt I
> > > > wanted to have a look. I don't have a solution (I might look more
> > > > another time if time permits) but I might have something that might help
> > > > someone who knows the tools better.
> > > > 
> > > > I am not familiar with Python Debian packaging details/tools neither
> > > > with pytest :-( so take all of this with a pinch of salt.
> > > > 
> > > > If it helps the error comes from:
> > > > /usr/lib/python3.9/importlib/__init__.py in the functin "import_modules"
> > > > it does:
> > > > """
> > > >     if name.startswith('.'):
> > > >         if not package:
> > > >             msg = ("the 'package' argument is required to perform a relative "
> > > >                    "import for {!r}")
> > > >             raise TypeError(msg.format(name))
> > > > """
> > > > 
> > > > When the import fails the "name" parameter of "import_modules" function
> > > > is: '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests' , which is derived
> > > > from the hidden dirctory ".pybuild" as created by default by "pybuild".
> > > > 
> > > > I think that the initial "." is used only as a directory name but Python
> > > > assumes that is a relative import requiring the package parameter.
> > > > 
> > > > Just to check my thoughts, and after running dpkg-buildpackage and
> > > > failing let's try again:
> > > > 
> > > > $ cd .pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> > > > Fails with the:
> > > > 
> > > > TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.9_qtpy.build.qtpy.tests'
> > > > /home/carles/git/python-qtpy
> > > > 
> > > > Then let's try to avoid the initial "." confusion:
> > > > 
> > > > $ mv .pybuild pybuild
> > > > $ cd pybuild/cpython3_3.9_qtpy/build; python3.9 -m pytest qtpy/tests ; cd -
> > > > 
> > > > It works.
> > > > 
> > > > I don't know why this is the only package affected by this though...
> > > > 
> > > > Hopefully it helps a bit!
> > > > 
> > > > On Jul/04/2022, Julian Gilbey wrote:
> > > > > Dear all,
> > > > > 
> > > > > I wonder whether you might have any clue about
> > > > > https://bugs.debian.org/1013700
> > > > > I have mostly worked out the "cause" of the bug, but I haven't quite
> > > > > got to the bottom of it.
> > > > > 
> > > > > When running the command
> > > > > PYTHONPATH=. python3.10 -m pytest qtpy/tests
> > > > > in the directory .pybuild/cpython3_3.10_qtpy/build, I get the error
> > > > > message:
> > > > > 
> > > > > ImportError while loading conftest '/home/jdg/debian/spyder-packages/qtpy/build-area/python-qtpy-2.1.0/.pybuild/cpython3_3.10_qtpy/build/qtpy/tests/conftest.py'.
> > > > > TypeError: the 'package' argument is required to perform a relative import for '.pybuild.cpython3_3.10_qtpy.build.qtpy.tests'
> > > > > 
> > > > > If the directory .pybuild is renamed to pybuild, the tests run without
> > > > > a problem.  So there seems to be something funny about conftest.py
> > > > > (and removing all of the other files from the qtpy/tests directory
> > > > > except for the empty __init__.py gives the same error); here's a link
> > > > > to it:
> > > > > 
> > > > > https://salsa.debian.org/python-team/packages/python-qtpy/-/blob/master/qtpy/tests/conftest.py
> > > > > 
> > > > > But there doesn't seem to be anything out of the ordinary about this.
> > > > > So I am mystified: why does pytest 7.x seem to not give this error on
> > > > > any other Debian package?
> > > > > 
> > > > > The only solution I currently have for this package is skip the tests
> > > > > at build time and rely on autopkgtest to do them.
> > > > > 
> > > > > Best wishes,
> > > > > 
> > > > >    Julian
-- 
Carles Pina i Estany
https://carles.pina.cat

[toc] | [prev] | [standalone]


Back to top | Article view | linux.debian.maint.python


csiph-web