Bug 2113648

Summary: python-pynwb: FTBFS in Fedora rawhide/f37
Product: [Fedora] Fedora Reporter: Fedora Release Engineering <releng>
Component: python-pynwbAssignee: Ankur Sinha (FranciscoD) <sanjay.ankur>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 37CC: bazanluis20, code, neuro-sig, sanjay.ankur
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-pynwb-2.1.0-1.fc38 python-pynwb-2.1.0-1.fc37 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-08-15 16:58:02 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2045102, 2107826, 2117176    
Attachments:
Description Flags
build.log
none
root.log
none
state.log none

Description Fedora Release Engineering 2022-08-02 00:08:51 UTC
python-pynwb failed to build from source in Fedora rawhide/f37

https://koji.fedoraproject.org/koji/taskinfo?taskID=89887156


For details on the mass rebuild see:

https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Please fix python-pynwb at your earliest convenience and set the bug's status to
ASSIGNED when you start fixing it. If the bug remains in NEW state for 8 weeks,
python-pynwb will be orphaned. Before branching of Fedora 38,
python-pynwb will be retired, if it still fails to build.

For more details on the FTBFS policy, please visit:
https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/

Comment 1 Fedora Release Engineering 2022-08-02 00:08:53 UTC
Created attachment 1902363 [details]
build.log

file build.log too big, will only attach last 32768 bytes

Comment 2 Fedora Release Engineering 2022-08-02 00:08:55 UTC
Created attachment 1902364 [details]
root.log

file root.log too big, will only attach last 32768 bytes

Comment 3 Fedora Release Engineering 2022-08-02 00:08:56 UTC
Created attachment 1902365 [details]
state.log

Comment 4 Tomáš Hrnčiar 2022-08-09 10:44:11 UTC
Dear Maintainer,

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

PYC magic number has changed in Python 3.11.0b4, and all packages with Python
bytecode need to be
rebuilt. Most of them were rebuilt during the Fedora 37 mass rebuild, but since
this
package is FTBFS, we were hoping you could fix it and rebuild it manually, or
it will cause subtle issues when used.

Tracking bugzilla for all affected packages:
https://bugzilla.redhat.com/show_bug.cgi?id=2107826

If you can fix your package to build, perform a build in koji, and if
necessary, create
an update in bodhi. 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.

Note that Fedora 37 is about to be branched very soon.
If you fix this after branching, make sure to rebuild the package in both
Rawhide (Fedora 38) and Fedora 37.

==============================================

Following the policy for FTBFS packages [1], your package will be orphaned if
this bug remains in a NEW state for more than 8 weeks (not sooner than
2022-09-27).

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

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

Comment 5 Ben Cotton 2022-08-09 13:32:53 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 37 development cycle.
Changing version to 37.

Comment 6 Ben Beasley 2022-08-15 13:56:44 UTC
=================================== FAILURES ===================================
_____ NWBFileTests.test_deprecate_simultaneous_recordings_on_add_stimulus ______

self = <tests.unit.test_icephys_metadata_tables.NWBFileTests testMethod=test_deprecate_simultaneous_recordings_on_add_stimulus>

    def test_deprecate_simultaneous_recordings_on_add_stimulus(self):
        """
        Test that warnings are raised if the user tries to use a simultaneous_recordings table
        """
        nwbfile = self.__get_icephysfile()
        device = self.__add_device(nwbfile)
        electrode = self.__add_electrode(nwbfile, device)
        stimulus = self.__get_stimulus(electrode=electrode)
        response = self.__get_response(electrode=electrode)
        # Make sure we warn if sweeptable is added on add_stimulus
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")  # Trigger all warnings
            nwbfile.add_stimulus(stimulus, use_sweep_table=True)
>           self.assertEqual(len(w), 1)
E           AssertionError: 2 != 1

tests/unit/test_icephys_metadata_tables.py:968: AssertionError
__________ NWBFileTests.test_deprecate_sweepstable_on_add_acquistion ___________

self = <tests.unit.test_icephys_metadata_tables.NWBFileTests testMethod=test_deprecate_sweepstable_on_add_acquistion>

    def test_deprecate_sweepstable_on_add_acquistion(self):
        """
        Test that warnings are raised if the user tries to use a sweeps table
        """
        nwbfile = self.__get_icephysfile()
        device = self.__add_device(nwbfile)
        electrode = self.__add_electrode(nwbfile, device)
        stimulus = self.__get_stimulus(electrode=electrode)
        response = self.__get_response(electrode=electrode)
        # Make sure we warn if sweeptable is added on add_stimulus
        with warnings.catch_warnings(record=True) as w:
            nwbfile.add_acquisition(response, use_sweep_table=True)
>           self.assertEqual(len(w), 1)
E           AssertionError: 2 != 1

tests/unit/test_icephys_metadata_tables.py:1025: AssertionError
_______________ NWBFileTests.test_deprecate_sweepstable_on_init ________________

self = <tests.unit.test_icephys_metadata_tables.NWBFileTests testMethod=test_deprecate_sweepstable_on_init>

    def test_deprecate_sweepstable_on_init(self):
        """
        Test that warnings are raised if the user tries to use a sweeps table
        """
        from pynwb.icephys import SweepTable
        with warnings.catch_warnings(record=True) as w:
            nwbfile = NWBFile(
                session_description='my first synthetic recording',
                identifier='EXAMPLE_ID',
                session_start_time=datetime.now(tzlocal()),
                sweep_table=SweepTable()
            )
            device = self.__add_device(nwbfile)
            electrode = self.__add_electrode(nwbfile, device)
            stimulus = self.__get_stimulus(electrode=electrode)
>           self.assertEqual(len(w), 1)
E           AssertionError: 2 != 1

tests/unit/test_icephys_metadata_tables.py:1049: AssertionError
_______ NWBFileTests.test_deprecate_sweeptable_on_add_stimulus_template ________

self = <tests.unit.test_icephys_metadata_tables.NWBFileTests testMethod=test_deprecate_sweeptable_on_add_stimulus_template>

    def test_deprecate_sweeptable_on_add_stimulus_template(self):
        """
        Make sure we warn when using the sweep-table
        """
        nwbfile = self.__get_icephysfile()
        local_electrode = nwbfile.create_icephys_electrode(
            name="elec0",
            description='a mock intracellular electrode',
            device=nwbfile.create_device(name='Heka ITC-1600')
        )
        local_stimulus = VoltageClampStimulusSeries(
            name="ccss",
            data=[1, 2, 3, 4, 5],
            starting_time=123.6,
            rate=10e3,
            electrode=local_electrode,
            gain=0.02,
            sweep_number=np.uint64(15)
        )
        local_stimulus2 = VoltageClampStimulusSeries(
            name="ccss2",
            data=[1, 2, 3, 4, 5],
            starting_time=123.6,
            rate=10e3,
            electrode=local_electrode,
            gain=0.02,
            sweep_number=np.uint64(15)
        )
        with warnings.catch_warnings(record=True) as w:
            nwbfile.add_stimulus_template(local_stimulus, use_sweep_table=True)
>           self.assertEqual(len(w), 1)
E           AssertionError: 2 != 1

tests/unit/test_icephys_metadata_tables.py:1004: AssertionError
=============================== warnings summary ===============================

Comment 7 Ben Beasley 2022-08-15 13:57:06 UTC
=============================== warnings summary ===============================
tests/unit/test_base.py: 8 warnings
tests/unit/test_icephys_metadata_tables.py: 35 warnings
  /usr/lib/python3.11/site-packages/hdmf/utils.py:577: FutureWarning: VectorData.__init__: Using positional arguments for this method is discouraged and will be deprecated in a future major release. Please use keyword arguments to ensure future compatibility.
    warnings.warn(msg, FutureWarning)

tests/unit/test_core.py: 1 warning
tests/unit/test_ecephys.py: 15 warnings
tests/unit/test_epoch.py: 5 warnings
tests/unit/test_file.py: 16 warnings
tests/unit/test_icephys_metadata_tables.py: 54 warnings
tests/unit/test_misc.py: 15 warnings
tests/unit/test_ophys.py: 11 warnings
  /usr/lib/python3.11/site-packages/hdmf/utils.py:577: FutureWarning: DynamicTable.__init__: Using positional arguments for this method is discouraged and will be deprecated in a future major release. Please use keyword arguments to ensure future compatibility.
    warnings.warn(msg, FutureWarning)

tests/unit/test_ecephys.py: 15 warnings
tests/unit/test_file.py: 1 warning
  /usr/lib/python3.11/site-packages/hdmf/utils.py:577: FutureWarning: DynamicTableRegion.__init__: Using positional arguments for this method is discouraged and will be deprecated in a future major release. Please use keyword arguments to ensure future compatibility.
    warnings.warn(msg, FutureWarning)

tests/unit/test_icephys_metadata_tables.py: 32 warnings
  /usr/lib/python3.11/site-packages/hdmf/utils.py:577: FutureWarning: AlignedDynamicTable.__init__: Using positional arguments for this method is discouraged and will be deprecated in a future major release. Please use keyword arguments to ensure future compatibility.
    warnings.warn(msg, FutureWarning)

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

Comment 8 Ben Beasley 2022-08-15 15:18:25 UTC
It looks like this should be solved by updating to 2.1.0:

https://github.com/NeurodataWithoutBorders/pynwb/blob/2.1.0/CHANGELOG.md#enhancements-and-minor-changes

> Added support for HDMF 3.3.1. This is now the minimum version of HDMF supported. Importantly, HDMF 3.3 introduces warnings when the constructor of a class mapped to an HDMF-common data type or an autogenerated data type class is passed positional arguments instead of all keyword arguments. @rly (#1484)

Comment 9 Fedora Update System 2022-08-15 16:54:49 UTC
FEDORA-2022-bf7b5c46a4 has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2022-bf7b5c46a4

Comment 10 Fedora Update System 2022-08-15 16:58:02 UTC
FEDORA-2022-bf7b5c46a4 has been pushed to the Fedora 38 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 11 Fedora Update System 2022-08-15 17:03:05 UTC
FEDORA-2022-a55b64113d has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2022-a55b64113d

Comment 12 Fedora Update System 2022-08-15 17:04:02 UTC
FEDORA-2022-a55b64113d has been pushed to the Fedora 37 stable repository.
If problem still persists, please make note of it in this bug report.