[Debian-med-packaging] Bug#982699: intake: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13

Lucas Nussbaum lucas at debian.org
Sat Feb 13 17:12:24 GMT 2021


Source: intake
Version: 0.6.0-4
Severity: serious
Justification: FTBFS on amd64
Tags: bullseye sid ftbfs
Usertags: ftbfs-20210213 ftbfs-bullseye

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.

Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_install
> # For some reason, not all data is movable via install or dh_install, so
> # just force copy (and overwrite if needed) for pytest to actually work
> for py in `py3versions -sv` ; do cp -a intake/source/tests .pybuild/cpython3_${py}_intake/build/intake/source; done
> PYBUILD_SYSTEM=custom \
> 	       PYBUILD_TEST_ARGS='cd {build_dir}; PATH=/<<PKGBUILDDIR>>/debian/{package}/usr/bin:/<<PKGBUILDDIR>>/debian/{package}/usr/lib:/<<PKGBUILDDIR>>/debian/{package}/build/intake:$PATH {interpreter} -m pytest' \
> 	       dh_auto_test --buildsystem=pybuild
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build; PATH=/<<PKGBUILDDIR>>/debian/python3-intake/usr/bin:/<<PKGBUILDDIR>>/debian/python3-intake/usr/lib:/<<PKGBUILDDIR>>/debian/python3-intake/build/intake:$PATH python3.9 -m pytest
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1+, pytest-6.0.2, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>
> collected 371 items / 9 skipped / 362 selected
> 
> intake/auth/tests/test_auth.py ......                                    [  1%]
> intake/catalog/tests/test_alias.py ..                                    [  2%]
> intake/catalog/tests/test_auth_integration.py ..                         [  2%]
> intake/catalog/tests/test_caching_integration.py ..................      [  7%]
> intake/catalog/tests/test_core.py .                                      [  7%]
> intake/catalog/tests/test_default.py .                                   [  8%]
> intake/catalog/tests/test_discovery.py .                                 [  8%]
> intake/catalog/tests/test_gui.py ..s..s                                  [  9%]
> intake/catalog/tests/test_local.py ..................................... [ 19%]
> .................................................                        [ 33%]
> intake/catalog/tests/test_parameters.py ............                     [ 36%]
> intake/catalog/tests/test_persist.py .s                                  [ 36%]
> intake/catalog/tests/test_reload_integration.py ....                     [ 38%]
> intake/catalog/tests/test_remote_integration.py ........................ [ 44%]
> ...                                                                      [ 45%]
> intake/catalog/tests/test_utils.py .......                               [ 47%]
> intake/catalog/tests/test_zarr.py ...                                    [ 47%]
> intake/cli/client/tests/test_cache.py ......                             [ 49%]
> intake/cli/client/tests/test_conf.py .....                               [ 50%]
> intake/cli/client/tests/test_local_integration.py .........              [ 53%]
> intake/cli/server/tests/test_serializer.py sss.........                  [ 56%]
> intake/cli/server/tests/test_server.py ......ss..                        [ 59%]
> intake/cli/tests/test_util.py ........                                   [ 61%]
> intake/container/tests/test_generics.py .                                [ 61%]
> intake/container/tests/test_persist.py ...s                              [ 62%]
> intake/gui/tests/test_init_gui.py ..s                                    [ 63%]
> intake/source/tests/test_base.py .................                       [ 68%]
> intake/source/tests/test_cache.py ...............s                       [ 72%]
> intake/source/tests/test_csv.py ......FFF..s..                           [ 76%]
> intake/source/tests/test_discovery.py ......                             [ 77%]
> intake/source/tests/test_npy.py ...........                              [ 80%]
> intake/source/tests/test_text.py ..................                      [ 85%]
> intake/source/tests/test_utils.py ...............................        [ 94%]
> intake/tests/test_config.py ........                                     [ 96%]
> intake/tests/test_top_level.py ......s.                                  [ 98%]
> intake/tests/test_utils.py ......                                        [100%]
> 
> =================================== FAILURES ===================================
> ______________________________ test_read_pattern _______________________________
> 
> sample_pattern_datasource = sources:
>   csv:
>     args:
>       urlpath: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/source/tests/sample{num:d}_{dup:d}.csv
>     description: ''
>     driver: intake.source.csv.CSVSource
>     metadata: {}
> 
> 
>     def test_read_pattern(sample_pattern_datasource):
>         da = sample_pattern_datasource.to_dask()
>         assert set(da.num.cat.categories) == {2, 3}
>         assert set(da.dup.cat.categories) == {1, 2}
> >       check_read_pattern_output(sample_pattern_datasource)
> 
> intake/source/tests/test_csv.py:156: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> source = sources:
>   csv:
>     args:
>       urlpath: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/source/tests/sample{num:d}_{dup:d}.csv
>     description: ''
>     driver: intake.source.csv.CSVSource
>     metadata: {}
> 
> 
>     def check_read_pattern_output(source):
>         da = source.to_dask()
>         assert da.num.cat.known is True
>         assert da.dup.cat.known is True
>     
>         # check that first partition has correct num and dup; which file
>         # it represents is not guaranteed
>         df0 = da.get_partition(0).compute()
>         if df0['name'][0].endswith('1'):
> >           assert all(df0.num == 2)
> E           assert False
> E            +  where False = all(0    3\n1    3\n2    3\n3    3\nName: num, dtype: category\nCategories (2, int64): [2, 3] == 2)
> E            +    where 0    3\n1    3\n2    3\n3    3\nName: num, dtype: category\nCategories (2, int64): [2, 3] =        name  score  rank num dup\n0    Alice1  100.5     1   3   2\n1      Bob1   50.3     2   3   2\n2  Charlie1   25.0     3   3   2\n3      Eve1   25.0     3   3   2.num
> 
> intake/source/tests/test_csv.py:119: AssertionError
> _________________________ test_read_pattern_with_cache _________________________
> 
> sample_pattern_datasource_with_cache = sources:
>   csv:
>     args:
>       urlpath: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/s...    regex: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/source/tests
>         type: file
> 
> 
>     def test_read_pattern_with_cache(sample_pattern_datasource_with_cache):
>         da = sample_pattern_datasource_with_cache.to_dask()
>         assert set(da.num.cat.categories) == {2, 3}
>         assert set(da.dup.cat.categories) == {1, 2}
> >       check_read_pattern_output(sample_pattern_datasource_with_cache)
> 
> intake/source/tests/test_csv.py:163: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> source = sources:
>   csv:
>     args:
>       urlpath: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/s...    regex: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build/intake/source/tests
>         type: file
> 
> 
>     def check_read_pattern_output(source):
>         da = source.to_dask()
>         assert da.num.cat.known is True
>         assert da.dup.cat.known is True
>     
>         # check that first partition has correct num and dup; which file
>         # it represents is not guaranteed
>         df0 = da.get_partition(0).compute()
>         if df0['name'][0].endswith('1'):
>             assert all(df0.num == 2)
> >           assert all(df0.dup == 1)
> E           assert False
> E            +  where False = all(0    2\n1    2\n2    2\n3    2\nName: dup, dtype: category\nCategories (2, int64): [1, 2] == 1)
> E            +    where 0    2\n1    2\n2    2\n3    2\nName: dup, dtype: category\nCategories (2, int64): [1, 2] =        name  score  rank num dup\n0    Alice1  100.5     1   2   2\n1      Bob1   50.3     2   2   2\n2  Charlie1   25.0     3   2   2\n3      Eve1   25.0     3   2   2.dup
> 
> intake/source/tests/test_csv.py:120: AssertionError
> ----------------------------- Captured stderr call -----------------------------
> 
> 0/|/sample2_2.csv: |
> 
> 0/|/sample3_2.csv: |
> 
> 
> 0/|/sample2_1.csv: |
>                     
> 
> 
>                     
> 
> 
>                     
> __________________ test_read_pattern_with_path_as_pattern_str __________________
> 
> sample_list_datasource_with_path_as_pattern_str = sources:
>   csv:
>     args:
>       path_as_pattern: sample{num:d}_{dup:d}.csv
>       urlpath:
>       - /<<BUILDDIR>>...e/build/intake/source/tests/sample2_2.csv
>     description: ''
>     driver: intake.source.csv.CSVSource
>     metadata: {}
> 
> 
>     def test_read_pattern_with_path_as_pattern_str(sample_list_datasource_with_path_as_pattern_str):
>         da = sample_list_datasource_with_path_as_pattern_str.to_dask()
>         assert set(da.num.cat.categories) == {2}
>         assert set(da.dup.cat.categories) == {1, 2}
> >       check_read_pattern_output(sample_list_datasource_with_path_as_pattern_str)
> 
> intake/source/tests/test_csv.py:170: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> source = sources:
>   csv:
>     args:
>       path_as_pattern: sample{num:d}_{dup:d}.csv
>       urlpath:
>       - /<<BUILDDIR>>...e/build/intake/source/tests/sample2_2.csv
>     description: ''
>     driver: intake.source.csv.CSVSource
>     metadata: {}
> 
> 
>     def check_read_pattern_output(source):
>         da = source.to_dask()
>         assert da.num.cat.known is True
>         assert da.dup.cat.known is True
>     
>         # check that first partition has correct num and dup; which file
>         # it represents is not guaranteed
>         df0 = da.get_partition(0).compute()
>         if df0['name'][0].endswith('1'):
>             assert all(df0.num == 2)
> >           assert all(df0.dup == 1)
> E           assert False
> E            +  where False = all(0    2\n1    2\n2    2\n3    2\nName: dup, dtype: category\nCategories (2, int64): [1, 2] == 1)
> E            +    where 0    2\n1    2\n2    2\n3    2\nName: dup, dtype: category\nCategories (2, int64): [1, 2] =        name  score  rank num dup\n0    Alice1  100.5     1   2   2\n1      Bob1   50.3     2   2   2\n2  Charlie1   25.0     3   2   2\n3      Eve1   25.0     3   2   2.dup
> 
> intake/source/tests/test_csv.py:120: AssertionError
> =========================== short test summary info ============================
> FAILED intake/source/tests/test_csv.py::test_read_pattern - assert False
> FAILED intake/source/tests/test_csv.py::test_read_pattern_with_cache - assert...
> FAILED intake/source/tests/test_csv.py::test_read_pattern_with_path_as_pattern_str
> ================== 3 failed, 355 passed, 22 skipped in 50.61s ==================
> E: pybuild pybuild:353: test: plugin custom failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_intake/build; PATH=/<<PKGBUILDDIR>>/debian/python3-intake/usr/bin:/<<PKGBUILDDIR>>/debian/python3-intake/usr/lib:/<<PKGBUILDDIR>>/debian/python3-intake/build/intake:$PATH python3.9 -m pytest
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13

The full build log is available from:
   http://qa-logs.debian.net/2021/02/13/intake_0.6.0-4_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with me
so that we can identify if something relevant changed in the meantime.

About the archive rebuild: The rebuild was done on EC2 VM instances from
Amazon Web Services, using a clean, minimal and up-to-date chroot. Every
failed build was retried once to eliminate random failures.



More information about the Debian-med-packaging mailing list