Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1903956 - python-MDAnalysis: FTBFS in Fedora rawhide
Summary: python-MDAnalysis: FTBFS in Fedora rawhide
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: python-MDAnalysis
Version: 35
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Christoph Junghans
QA Contact: Fedora Extras Quality Assurance
URL: https://koschei.fedoraproject.org/pac...
Whiteboard:
: 1968874 (view as bug list)
Depends On:
Blocks: F34FTBFS PYTHON3.10 F35FTBFS F35FailsToInstall F36FTBFS F36FailsToInstall
TreeView+ depends on / blocked
 
Reported: 2020-12-03 08:46 UTC by Tomáš Hrnčiar
Modified: 2021-09-18 19:54 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-09-18 19:54:02 UTC
Type: Bug
Embargoed:
junghans: needinfo+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github MDAnalysis mdanalysis issues 3056 0 None open v1.0.0: rpm build fails on fedora rawhide 2021-01-08 14:03:28 UTC

Description Tomáš Hrnčiar 2020-12-03 08:46:03 UTC
Description of problem:
Package python-MDAnalysis fails to build from source in Fedora rawhide.

Version-Release number of selected component (if applicable):
0.20.1-5.fc33

Steps to Reproduce:
koji build --scratch f34 python-MDAnalysis-0.20.1-5.fc33.src.rpm

Additional info:
This package is tracked by Koschei. See:
https://koschei.fedoraproject.org/package/python-MDAnalysis

============================= test session starts ==============================
platform linux -- Python 3.10.0a2, pytest-6.0.2, py-1.9.0, pluggy-0.13.1 -- /usr/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/builddir/build/BUILD/MDAnalysis-0.20.1/MDAnalysisTests-0.20.1/MDAnalysisTests/.hypothesis/examples')
rootdir: /builddir/build/BUILD/MDAnalysis-0.20.1/MDAnalysisTests-0.20.1, configfile: setup.cfg
plugins: hypothesis-5.41.3, xdist-2.1.0, forked-1.3.0
gw0 I
[gw0] linux Python 3.10.0 cwd: /builddir/build/BUILD/MDAnalysis-0.20.1/MDAnalysisTests-0.20.1/MDAnalysisTests
[gw0] Python 3.10.0a2 (default, Nov  4 2020, 00:00:00)  -- [GCC 10.2.1 20201112 (Red Hat 10.2.1-8)]
gw0 [586]

scheduling tests via LoadScheduling
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/xdist/dsession.py", line 112, in pytest_runtestloop
INTERNALERROR>     self.loop_once()
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/xdist/dsession.py", line 135, in loop_once
INTERNALERROR>     call(**kwargs)
INTERNALERROR>   File "/usr/lib/python3.10/site-packages/xdist/dsession.py", line 174, in worker_workerfinished
INTERNALERROR>     assert not crashitem, (crashitem, node)
INTERNALERROR> AssertionError: ('MDAnalysisTests/analysis/test_data.py::test_all_exports', <WorkerController gw0>)
INTERNALERROR> assert not 'MDAnalysisTests/analysis/test_data.py::test_all_exports'

======================= 4 warnings, 117 errors in 11.66s =======================
error: Bad exit status from /var/tmp/rpm-tmp.CIuygx (%check)
    Bad exit status from /var/tmp/rpm-tmp.CIuygx (%check)

Comment 1 Fedora Release Engineering 2020-12-06 04:22:56 UTC
Dear Maintainer,

your package has an open Fails To Build From Source bug for Fedora 34.
Action is required from you.

If you can fix your package to build, perform a build in koji, and either create
an update in bodhi, or close this bug without creating an update, if updating is
not appropriate [1]. If you are working on a fix, set the status to ASSIGNED to
acknowledge this. If you have already fixed this issue, please close this Bugzilla report.

Following the policy for such packages [2], your package will be orphaned if
this bug remains in NEW state more than 8 weeks (not sooner than 2021-01-28).

A week before the mass branching of Fedora 35 according to the schedule [3],
any packages not successfully rebuilt at least on Fedora 33 will be
retired regardless of the status of this bug.

[1] https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/
[2] https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/
[3] https://fedorapeople.org/groups/schedule/f-35/f-35-key-tasks.html

Comment 2 Ben Cotton 2021-02-09 15:29:41 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 34 development cycle.
Changing version to 34.

Comment 3 Miro Hrončok 2021-06-04 20:15:27 UTC
This is a mass-posted update. Sorry if it is not 100% accurate to this bugzilla.


The Python 3.10 rebuild is in progress in a Koji side tag. If you manage to fix the problem, please commit the fix in the rawhide branch, but don't build the package in regular rawhide.

You can either build the package in the side tag, with:

    $ fedpkg build --target=f35-python

Or you can the build and we will eventually build it for you.

Note that the rebuild is still in progress, so not all (build) dependencies of this package might be available right away.

Thanks.

See also https://fedoraproject.org/wiki/Changes/Python3.10

If you have general questions about the rebuild, please use this mailing list thread: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/G47SGOYIQLRDTWGOSLSWERZSSHXDEDH5/

Comment 4 Miro Hrončok 2021-06-07 22:59:53 UTC
The f35-python side tag has been merged to Rawhide. From now on, build as you would normally build.

Comment 5 Miro Hrončok 2021-06-08 11:27:51 UTC
*** Bug 1968874 has been marked as a duplicate of this bug. ***

Comment 6 Ben Cotton 2021-08-10 12:49:48 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 35 development cycle.
Changing version to 35.

Comment 7 Miro Hrončok 2021-09-13 13:04:52 UTC
Christoph, what is the plan wrt this package? Is there a Python-related problem I can help with?

Note that it seems we have some very old version packaged.


I've adapted the pytest call so the problems can be easier to spot:

- I've removed --numprocesses=auto
- I've replaced single quotes around the -k expression with double quotes as the current pytest does not seem to like backslashes and newlines in it

I see a lot of:

ImportError while importing test module '/builddir/build/BUILD/MDAnalysis-0.20.1/MDAnalysisTests-0.20.1/MDAnalysisTests/utils/test_streamio.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.10/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
utils/test_streamio.py:35: in <module>
    import MDAnalysis
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/__init__.py:198: in <module>
    from .core.universe import Universe, as_Universe, Merge
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/__init__.py:465: in <module>
    from . import AtomGroup
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/AtomGroup.py:28: in <module>
    from . import universe
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/universe.py:128: in <module>
    from .topology import Topology
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/topology.py:64: in <module>
    from .topologyattrs import Atomindices, Resindices, Segindices
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/topologyattrs.py:40: in <module>
    import Bio.Alphabet
/usr/lib64/python3.10/site-packages/Bio/Alphabet/__init__.py:20: in <module>
    raise ImportError(
E   ImportError: Bio.Alphabet has been removed from Biopython. In many cases, the alphabet can simply be ignored and removed from scripts. In a few cases, you may need to specify the ``molecule_type`` as an annotation on a SeqRecord for your script to work correctly. Please see https://biopython.org/wiki/Alphabet for more information.


It appears this has been fixed in 11.0.0 with https://github.com/MDAnalysis/mdanalysis/pull/2457

Comment 8 Miro Hrončok 2021-09-13 13:16:42 UTC
I've succeeded in backporting https://github.com/MDAnalysis/mdanalysis/pull/2457 -- will send a PR soon, running tests now to see what happens.

Comment 9 Miro Hrončok 2021-09-13 13:45:05 UTC
=================================== FAILURES ===================================
__ Test_density_from_Universe.test_density_from_Universe_userdefn_selwarning ___
[gw5] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.analysis.test_density.Test_density_from_Universe object at 0x7f060360bfa0>
universe = <Universe with 47681 atoms>
    def test_density_from_Universe_userdefn_selwarning(self, universe):
        import MDAnalysis.analysis.density
        wmsg = ("Atom selection does not fit grid --- "
                "you may want to define a larger box")
        with pytest.warns(UserWarning) as record:
            D = MDAnalysis.analysis.density.density_from_Universe(
                universe, atomselection=self.selections['static'],
                delta=1.0, xdim=1.0, ydim=2.0, zdim=2.0,
                gridcenter=self.gridcenters['static_defined'])
    
>       assert len(record) == 2
E       assert 4 == 2
E         +4
E         -2
analysis/test_density.py:249: AssertionError
------------------------------ Captured log call -------------------------------
WARNING  MDAnalysis.analysis.density:density.py:726 Non-orthorhombic unit-cell --- make sure that it has been remapped properly!
WARNING  MDAnalysis.analysis.density:density.py:548 Atom selection does not fit grid --- you may want to define a larger box
________________________________ test_warnings _________________________________
[gw3] linux -- Python 3.10.0 /usr/bin/python3
tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_warnings0')
    def test_warnings(tmpdir):
        """Testing that a warning which can be raised"""
        u = MDAnalysis.Universe(GRO, XTC)
        u.trajectory[1]
    
        with tmpdir.as_cwd():
            with pytest.warns(UserWarning) as record:
                MDAnalysis.analysis.helanal.helanal_trajectory(
                    u, selection="name CA", begin=-1, finish=99999
                )
    
>               assert len(record) == 2
E               assert 3 == 2
E                 +3
E                 -2
analysis/test_helanal.py:201: AssertionError
------------------------------ Captured log call -------------------------------
WARNING  MDAnalysis.analysis.helanal:helanal.py:270 The input begin time (-1 ps) precedes the starting trajectory time --- Setting starting frame to 0
WARNING  MDAnalysis.analysis.helanal:helanal.py:296 The input finish time (99999 ps) occurs after the end of the trajectory (1000.0000762939453 ps). Finish time will be set to the end of the trajectory
________________________ test_written_remarks_property _________________________
[gw2] linux -- Python 3.10.0 /usr/bin/python3
item = <Function test_written_remarks_property>
    @pytest.hookimpl(hookwrapper=True)
    def pytest_runtest_call(item):
        if not hasattr(item, "obj"):
            yield
        elif not is_hypothesis_test(item.obj):
            # If @given was not applied, check whether other hypothesis
            # decorators were applied, and raise an error if they were.
            if getattr(item.obj, "is_hypothesis_strategy_function", False):
                raise InvalidArgument(
                    "%s is a function that returns a Hypothesis strategy, but pytest "
                    "has collected it as a test function.  This is useless as the "
                    "function body will never be executed.  To define a test "
                    "function, use @given instead of @composite." % (item.nodeid,)
                )
            message = "Using `@%s` on a test without `@given` is completely pointless."
            for name, attribute in [
                ("example", "hypothesis_explicit_examples"),
                ("seed", "_hypothesis_internal_use_seed"),
                ("settings", "_hypothesis_internal_settings_applied"),
                ("reproduce_example", "_hypothesis_internal_use_reproduce_failure"),
            ]:
                if hasattr(item.obj, attribute):
                    raise InvalidArgument(message % (name,))
            yield
        else:
            # Retrieve the settings for this test from the test object, which
            # is normally a Hypothesis wrapped_test wrapper. If this doesn't
            # work, the test object is probably something weird
            # (e.g a stateful test wrapper), so we skip the function-scoped
            # fixture check.
            settings = getattr(item.obj, "_hypothesis_internal_use_settings", None)
    
            # Check for suspicious use of function-scoped fixtures, but only
            # if the corresponding health check is not suppressed.
            if (
                settings is not None
                and HealthCheck.function_scoped_fixture
                not in settings.suppress_health_check
            ):
                # Warn about function-scoped fixtures, excluding autouse fixtures because
                # the advice is probably not actionable and the status quo seems OK...
                # See https://github.com/HypothesisWorks/hypothesis/issues/377 for detail.
                msg = (
                    "%s uses the %r fixture, which is reset between function calls but not "
                    "between test cases generated by `@given(...)`.  You can change it to "
                    "a module- or session-scoped fixture if it is safe to reuse; if not "
                    "we recommend using a context manager inside your test function.  See "
                    "https://docs.pytest.org/en/latest/how-to/fixtures.html"
                    "#scope-sharing-fixtures-across-classes-modules-packages-or-session "
                    "for details on fixture scope."
                )
                argnames = None
                for fx_defs in item._request._fixturemanager.getfixtureinfo(
                    node=item, func=item.function, cls=None
                ).name2fixturedefs.values():
                    if argnames is None:
                        argnames = frozenset(signature(item.function).parameters)
                    for fx in fx_defs:
                        if fx.argname in argnames:
                            active_fx = item._request._get_active_fixturedef(fx.argname)
                            if active_fx.scope == "function":
>                               fail_health_check(
                                    settings,
                                    msg % (item.nodeid, fx.argname),
                                    HealthCheck.function_scoped_fixture,
                                )
E                               hypothesis.errors.FailedHealthCheck: MDAnalysisTests/formats/test_libdcd.py::test_written_remarks_property uses the 'tmpdir' fixture, which is reset between function calls but not between test cases generated by `@given(...)`.  You can change it to a module- or session-scoped fixture if it is safe to reuse; if not we recommend using a context manager inside your test function.  See https://docs.pytest.org/en/latest/how-to/fixtures.html#scope-sharing-fixtures-across-classes-modules-packages-or-session for details on fixture scope.
E                               See https://hypothesis.readthedocs.io/en/latest/healthchecks.html for more information about this. If you want to disable just this health check, add HealthCheck.function_scoped_fixture to the suppress_health_check settings for this test.
/usr/lib/python3.10/site-packages/hypothesis/extra/pytestplugin.py:199: FailedHealthCheck
____________________ TestDihedralSelections.test_phi_nodep _____________________
[gw1] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_atomgroup.TestDihedralSelections object at 0x7fd94ad04310>
PSFDCD = <Universe with 3341 atoms>
    def test_phi_nodep(self, PSFDCD):
>       with no_deprecated_call():
E       AssertionError: Produced DeprecationWarning or PendingDeprecationWarning
core/test_atomgroup.py:821: AssertionError
____________________ TestDihedralSelections.test_chi1_nodep ____________________
[gw5] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_atomgroup.TestDihedralSelections object at 0x7f060341b7f0>
PSFDCD = <Universe with 3341 atoms>
    def test_chi1_nodep(self, PSFDCD):
>       with no_deprecated_call():
E       AssertionError: Produced DeprecationWarning or PendingDeprecationWarning
core/test_atomgroup.py:833: AssertionError
____________________ TestDihedralSelections.test_psi_nodep _____________________
[gw3] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_atomgroup.TestDihedralSelections object at 0x7fcdabee66e0>
PSFDCD = <Universe with 3341 atoms>
    def test_psi_nodep(self, PSFDCD):
>       with no_deprecated_call():
E       AssertionError: Produced DeprecationWarning or PendingDeprecationWarning
core/test_atomgroup.py:825: AssertionError
______________________ TestFlattenDict.test_flatten_dict _______________________
[gw0] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.lib.test_util.TestFlattenDict object at 0x7f6a5fe6f5b0>
    def test_flatten_dict(self):
        d = {
            'A' : { 1 : ('a', 'b', 'c')},
            'B' : { 2 : ('c', 'd', 'e')},
            'C' : { 3 : ('f', 'g', 'h')}
        }
>       result = util.flatten_dict(d)
lib/test_util.py:1366: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
d = {'A': {1: ('a', 'b', 'c')}, 'B': {2: ('c', 'd', 'e')}, 'C': {3: ('f', 'g', 'h')}}
parent_key = ()
    def flatten_dict(d, parent_key=tuple()):
        """Flatten a nested dict `d` into a shallow dict with tuples as keys.
    
        Parameters
        ----------
        d : dict
    
        Returns
        -------
        dict
    
        Note
        -----
        Based on https://stackoverflow.com/a/6027615/
        by user https://stackoverflow.com/users/1897/imran
    
        .. versionadded:: 0.18.0
        """
    
        items = []
        for k, v in d.items():
            if type(k) != tuple:
                new_key = parent_key + (k, )
            else:
                new_key = parent_key + k
>           if isinstance(v, collections.MutableMapping):
E           AttributeError: module 'collections' has no attribute 'MutableMapping'
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/lib/util.py:1749: AttributeError
____________________ TestGroupBy.test_groupby_float_string _____________________
[gw1] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_groups.TestGroupBy object at 0x7fd947b28c70>
u = <Universe with 125 atoms>
    def test_groupby_float_string(self, u):
>       gb = u.atoms.groupby(['charges', 'segids'])
core/test_groups.py:800: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1753: in groupby
    res[i] = self[ta == i].groupby(topattrs[1:])
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1755: in groupby
    return util.flatten_dict(res)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
d = {'SegA': <AtomGroup with 5 atoms>, 'SegB': <AtomGroup with 5 atoms>, 'SegC': <AtomGroup with 5 atoms>, 'SegD': <AtomGroup with 5 atoms>, ...}
parent_key = ()
    def flatten_dict(d, parent_key=tuple()):
        """Flatten a nested dict `d` into a shallow dict with tuples as keys.
    
        Parameters
        ----------
        d : dict
    
        Returns
        -------
        dict
    
        Note
        -----
        Based on https://stackoverflow.com/a/6027615/
        by user https://stackoverflow.com/users/1897/imran
    
        .. versionadded:: 0.18.0
        """
    
        items = []
        for k, v in d.items():
            if type(k) != tuple:
                new_key = parent_key + (k, )
            else:
                new_key = parent_key + k
>           if isinstance(v, collections.MutableMapping):
E           AttributeError: module 'collections' has no attribute 'MutableMapping'
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/lib/util.py:1749: AttributeError
______________________ TestGroupBy.test_groupby_int_float ______________________
[gw1] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_groups.TestGroupBy object at 0x7fd945326800>
u = <Universe with 125 atoms>
    def test_groupby_int_float(self, u):
>       gb = u.atoms.groupby(['resids', 'charges'])
core/test_groups.py:811: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1753: in groupby
    res[i] = self[ta == i].groupby(topattrs[1:])
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1755: in groupby
    return util.flatten_dict(res)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
d = {-1.5: <AtomGroup with 1 atom>, -0.5: <AtomGroup with 1 atom>, 0.0: <AtomGroup with 1 atom>, 0.5: <AtomGroup with 1 atom>, ...}
parent_key = ()
    def flatten_dict(d, parent_key=tuple()):
        """Flatten a nested dict `d` into a shallow dict with tuples as keys.
    
        Parameters
        ----------
        d : dict
    
        Returns
        -------
        dict
    
        Note
        -----
        Based on https://stackoverflow.com/a/6027615/
        by user https://stackoverflow.com/users/1897/imran
    
        .. versionadded:: 0.18.0
        """
    
        items = []
        for k, v in d.items():
            if type(k) != tuple:
                new_key = parent_key + (k, )
            else:
                new_key = parent_key + k
>           if isinstance(v, collections.MutableMapping):
E           AttributeError: module 'collections' has no attribute 'MutableMapping'
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/lib/util.py:1749: AttributeError
_____________________ TestGroupBy.test_groupby_string_int ______________________
[gw1] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_groups.TestGroupBy object at 0x7fd94617cc10>
u = <Universe with 125 atoms>
    def test_groupby_string_int(self, u):
>       gb = u.atoms.groupby(['segids', 'resids'])
core/test_groups.py:823: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1753: in groupby
    res[i] = self[ta == i].groupby(topattrs[1:])
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/groups.py:1755: in groupby
    return util.flatten_dict(res)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
d = {6: <AtomGroup with 5 atoms>, 7: <AtomGroup with 5 atoms>, 8: <AtomGroup with 5 atoms>, 9: <AtomGroup with 5 atoms>, ...}
parent_key = ()
    def flatten_dict(d, parent_key=tuple()):
        """Flatten a nested dict `d` into a shallow dict with tuples as keys.
    
        Parameters
        ----------
        d : dict
    
        Returns
        -------
        dict
    
        Note
        -----
        Based on https://stackoverflow.com/a/6027615/
        by user https://stackoverflow.com/users/1897/imran
    
        .. versionadded:: 0.18.0
        """
    
        items = []
        for k, v in d.items():
            if type(k) != tuple:
                new_key = parent_key + (k, )
            else:
                new_key = parent_key + k
>           if isinstance(v, collections.MutableMapping):
E           AttributeError: module 'collections' has no attribute 'MutableMapping'
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/lib/util.py:1749: AttributeError
_______________________________ test_PDB_metals ________________________________
[gw0] linux -- Python 3.10.0 /usr/bin/python3
    @pytest.mark.filterwarnings("error")
    def test_PDB_metals():
        from MDAnalysis.topology import tables
    
>       u = mda.Universe(PDB_metal, format='PDB')
topology/test_pdb.py:238: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/core/universe.py:292: in __init__
    self._topology = p.parse(**kwargs)
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/topology/PDBParser.py:183: in parse
    top = self._parseatoms()
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/topology/PDBParser.py:316: in _parseatoms
    residx, (resids, resnames, icodes, resnums, segids) = change_squash(
../../../../BUILDROOT/python-MDAnalysis-0.20.1-8.fc36.x86_64/usr/lib64/python3.10/site-packages/MDAnalysis/topology/base.py:172: in change_squash
    residx = np.zeros_like(criteria[0], dtype=np.int)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
attr = 'int'
    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        try:
            msg = __expired_functions__[attr]
        except KeyError:
            pass
        else:
            warnings.warn(msg, DeprecationWarning, stacklevel=2)
    
            def _expired(*args, **kwds):
                raise RuntimeError(msg)
    
            return _expired
    
        # Emit warnings for deprecated attributes
        try:
            val, msg = __deprecated_attrs__[attr]
        except KeyError:
            pass
        else:
>           warnings.warn(msg, DeprecationWarning, stacklevel=2)
E           DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
E           Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
/usr/lib64/python3.10/site-packages/numpy/__init__.py:297: DeprecationWarning
___________________ TestDihedralSelections.test_omega_nodep ____________________
[gw4] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_atomgroup.TestDihedralSelections object at 0x7f8e8d821b40>
PSFDCD = <Universe with 3341 atoms>
    def test_omega_nodep(self, PSFDCD):
>       with no_deprecated_call():
E       AssertionError: Produced DeprecationWarning or PendingDeprecationWarning
core/test_atomgroup.py:829: AssertionError
_______________ TestGuessMasses.test_universe_loading_no_warning _______________
[gw4] linux -- Python 3.10.0 /usr/bin/python3
self = <MDAnalysisTests.core.test_universe.TestGuessMasses object at 0x7f8e75c87b80>
    def test_universe_loading_no_warning(self):
>       assert_nowarns(UserWarning, lambda x: mda.Universe(x), GRO)
core/test_universe.py:336: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
warning_class = <class 'UserWarning'>
args = ('/builddir/build/BUILD/MDAnalysis-0.20.1/MDAnalysisTests-0.20.1/MDAnalysisTests/data/adk_oplsaa.gro',)
kwargs = {}
func = <function TestGuessMasses.test_universe_loading_no_warning.<locals>.<lambda> at 0x7f8e760ccd30>
value = <Universe with 47681 atoms>
    def assert_nowarns(warning_class, *args, **kwargs):
        """Fail if the given callable throws the specified warning.
    
        A warning of class warning_class should NOT be thrown by the callable when
        invoked with arguments args and keyword arguments kwargs.
        If a different type of warning is thrown, it will not be caught.
    
        Parameters
        ----------
        warning_class : class
            The class defining the warning that `func` is expected to throw.
        func : callable
            The callable to test.
        \*args : Arguments
            Arguments passed to `func`.
        \*\*kwargs : Kwargs
            Keyword arguments passed to `func`.
    
        Returns
        -------
        True
             if no `AssertionError` is raised
    
        Note
        ----
        numpy.testing.assert_warn returns the value returned by `func`; we would
        need a second func evaluation so in order to avoid it, only True is
        returned if no assertion is raised.
    
        SeeAlso
        -------
        numpy.testing.assert_warn
    
        """
        func = args[0]
        args = args[1:]
        try:
            value = assert_warns(DeprecationWarning, func, *args, **kwargs)
        except AssertionError:
            # a warning was NOT emitted: all good
            return True
        else:
            # There was a warning even though we do not want to see one.
>           raise AssertionError("function {0} raises warning of class {1}".format(
                func.__name__, warning_class.__name__))
E           AssertionError: function <lambda> raises warning of class UserWarning
util.py:171: AssertionError
=========================== short test summary info ============================
FAILED analysis/test_density.py::Test_density_from_Universe::test_density_from_Universe_userdefn_selwarning
FAILED analysis/test_helanal.py::test_warnings - assert 3 == 2
FAILED formats/test_libdcd.py::test_written_remarks_property - hypothesis.err...
FAILED core/test_atomgroup.py::TestDihedralSelections::test_phi_nodep - Asser...
FAILED core/test_atomgroup.py::TestDihedralSelections::test_chi1_nodep - Asse...
FAILED core/test_atomgroup.py::TestDihedralSelections::test_psi_nodep - Asser...
FAILED lib/test_util.py::TestFlattenDict::test_flatten_dict - AttributeError:...
FAILED core/test_groups.py::TestGroupBy::test_groupby_float_string - Attribut...
FAILED core/test_groups.py::TestGroupBy::test_groupby_int_float - AttributeEr...
FAILED core/test_groups.py::TestGroupBy::test_groupby_string_int - AttributeE...
FAILED topology/test_pdb.py::test_PDB_metals - DeprecationWarning: `np.int` i...
FAILED core/test_atomgroup.py::TestDihedralSelections::test_omega_nodep - Ass...
FAILED core/test_universe.py::TestGuessMasses::test_universe_loading_no_warning
= 13 failed, 15396 passed, 69 skipped, 2 xfailed, 1 xpassed, 474128 warnings in 265.81s (0:04:25) =

Comment 11 Christoph Junghans 2021-09-14 15:44:25 UTC
I don't have a plan mainly due to a lack of time. I started working on bumping the version to v1.0.0 in the "v1.0.0" branch of my fork, but didn't get very far. If you want to take it over please go ahead.

Comment 12 Miro Hrončok 2021-09-17 08:41:28 UTC
I don't want to take over. I suggest retiring python-MDAnalysis before the final freeze if it is not fixed:

 - in the current state, it gives no benefit to the users, as they cannot install it on Fedora 35+
 - it is a leaf package nothing in Fedora depends on
 - if this is fixed later, it can be reintroduced (in an newer version maybe)

What do you think?

Comment 13 Christoph Junghans 2021-09-17 13:08:26 UTC
Yes let's do that.

Comment 14 Christoph Junghans 2021-09-17 16:41:45 UTC
Package retired.

Comment 15 Miro Hrončok 2021-09-17 16:51:03 UTC
Thanks. I've merged your commit to the f35 branch and will close this once it actually gets retired in Koji.

Comment 16 Miro Hrončok 2021-09-18 19:54:02 UTC
Done.

$ koji list-pkgs --show-blocked  --tag f35 --quiet --package python-MDAnalysis
python-MDAnalysis       f35                                      junghans        [BLOCKED]

$ koji list-pkgs --show-blocked  --tag f36 --quiet --package python-MDAnalysis
python-MDAnalysis       f36                                      junghans        [BLOCKED]


Note You need to log in before you can comment on or make changes to this bug.