Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

15 tests fail with AttributeError: module 'numpy' has no attribute 'float' #126

Open
yurivict opened this issue Jul 9, 2024 · 2 comments

Comments

@yurivict
Copy link

yurivict commented Jul 9, 2024

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
___________________________________________________________________________ test_devices[MicroCel GSN 100 64 1.0] ___________________________________________________________________________

device = 'MicroCel GSN 100 64 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
____________________________________________________________________________ test_devices[HydroCel GSN 128 1.0] _____________________________________________________________________________

device = 'HydroCel GSN 128 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
__________________________________________________________________________ test_devices[Geodesic Head Web 130 1.0] __________________________________________________________________________

device = 'Geodesic Head Web 130 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
___________________________________________________________________________ test_devices[MicroCel GSN 100 32 1.0] ___________________________________________________________________________

device = 'MicroCel GSN 100 32 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
___________________________________________________________________________ test_devices[Standard 10-20 (19 ch)] ____________________________________________________________________________

device = 'Standard 10-20 (19 ch)'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
_________________________________________________________________________ test_devices[Geodesic Sensor Net 128 2.1] _________________________________________________________________________

device = 'Geodesic Sensor Net 128 2.1'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
__________________________________________________________________________ test_devices[MicroCel GSN 100 128 1.0] ___________________________________________________________________________

device = 'MicroCel GSN 100 128 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
____________________________________________________________________________ test_devices[HydroCel GSN 256 1.0] _____________________________________________________________________________

device = 'HydroCel GSN 256 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
__________________________________________________________________________ test_devices[Geodesic Head Web 280 1.0] __________________________________________________________________________

device = 'Geodesic Head Web 280 1.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
_________________________________________________________________________ test_devices[Geodesic Sensor Net 64 2.0] __________________________________________________________________________

device = 'Geodesic Sensor Net 64 2.0'

    @pytest.mark.parametrize("device", [
        'Geodesic Head Web 130 1.0',
        'Geodesic Head Web 280 1.0',
        'Geodesic Sensor Net 64 2.0',
        'Geodesic Sensor Net 128 2.1',
        'Geodesic Sensor Net 256 2.1',
        'HydroCel GSN 32 1.0',
        'HydroCel GSN 64 1.0',
        'HydroCel GSN 128 1.0',
        'HydroCel GSN 256 1.0',
        'MicroCel GSN 100 32 1.0',
        'MicroCel GSN 100 64 1.0',
        'MicroCel GSN 100 128 1.0',
        'MicroCel GSN 100 256 1.0',
        'Standard 10-20 (19 ch)'
    ])
    def test_devices(device):
        """test integrity of coordinates.xml locations for each supported device
    
        For each device, all electrode locations are compared against
        the hashed values in 'mffpy/resources/testing'"""
        xmls = coordinates_and_sensor_layout(device)
        coords = xmls['coordinates']
        locs = np.array([
            np.array([props['x'], props['y'], props['z']])
            for i, (_, props) in enumerate(coords.sensors.items())
>       ], dtype=np.float)

mffpy/tests/test_devices.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

attr = 'float'

    def __getattr__(attr):
        # Warn for expired attributes, and return a dummy function
        # that always raises an exception.
        import warnings
        import math
        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)
            return val
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
>           raise AttributeError(__former_attrs__[attr])
E           AttributeError: module 'numpy' has no attribute 'float'.
E           `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
E           The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
E               https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

/usr/local/lib/python3.11/site-packages/numpy/__init__.py:324: AttributeError
____________________________________________________________________________________ test_overwrite_mfz _____________________________________________________________________________________

tmpdir = local('/tmp/pytest-of-yuri/pytest-55/test_overwrite_mfz0')

    def test_overwrite_mfz(tmpdir):
        """Test mffdir and mfz file are overwritten when overwrite is on"""
        mfzpath = join(tmpdir, 'test.mfz')
        mffpath = splitext(mfzpath)[0] + '.mff'
        time1 = datetime.strptime('1984-02-18T14:00:10.000000+0100',
                                  "%Y-%m-%dT%H:%M:%S.%f%z")
        time2 = datetime.strptime('1973-10-23T14:00:10.000000+0100',
                                  "%Y-%m-%dT%H:%M:%S.%f%z")
    
        W1 = Writer(mfzpath)
        W1.addxml('fileInfo', recordTime=time1)
>       W1.write()

mffpy/tests/test_writer.py:153: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
mffpy/writer.py:69: in write
    check_output(['mff2mfz.py', self.mffdir])
/usr/local/lib/python3.11/subprocess.py:466: in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
/usr/local/lib/python3.11/subprocess.py:548: in run
    with Popen(*popenargs, **kwargs) as process:
/usr/local/lib/python3.11/subprocess.py:1026: in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Popen: returncode: 255 args: ['mff2mfz.py', '/tmp/pytest-of-yuri/pytest-55/...>, args = ['mff2mfz.py', '/tmp/pytest-of-yuri/pytest-55/test_overwrite_mfz0/test.mff']
executable = b'mff2mfz.py', preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1
c2pread = 13, c2pwrite = 14, errread = -1, errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None, umask = -1, start_new_session = False, process_group = -1

    def _execute_child(self, args, executable, preexec_fn, close_fds,
                       pass_fds, cwd, env,
                       startupinfo, creationflags, shell,
                       p2cread, p2cwrite,
                       c2pread, c2pwrite,
                       errread, errwrite,
                       restore_signals,
                       gid, gids, uid, umask,
                       start_new_session, process_group):
        """Execute program (POSIX version)"""
    
        if isinstance(args, (str, bytes)):
            args = [args]
        elif isinstance(args, os.PathLike):
            if shell:
                raise TypeError('path-like args is not allowed when '
                                'shell is true')
            args = [args]
        else:
            args = list(args)
    
        if shell:
            # On Android the default shell is at '/system/bin/sh'.
            unix_shell = ('/system/bin/sh' if
                      hasattr(sys, 'getandroidapilevel') else '/bin/sh')
            args = [unix_shell, "-c"] + args
            if executable:
                args[0] = executable
    
        if executable is None:
            executable = args[0]
    
        sys.audit("subprocess.Popen", executable, args, cwd, env)
    
        if (_USE_POSIX_SPAWN
                and os.path.dirname(executable)
                and preexec_fn is None
                and not close_fds
                and not pass_fds
                and cwd is None
                and (p2cread == -1 or p2cread > 2)
                and (c2pwrite == -1 or c2pwrite > 2)
                and (errwrite == -1 or errwrite > 2)
                and not start_new_session
                and process_group == -1
                and gid is None
                and gids is None
                and uid is None
                and umask < 0):
            self._posix_spawn(args, executable, env, restore_signals,
                              p2cread, p2cwrite,
                              c2pread, c2pwrite,
                              errread, errwrite)
            return
    
        orig_executable = executable
    
        # For transferring possible exec failure from child to parent.
        # Data format: "exception name:hex errno:description"
        # Pickle is not used; it is complex and involves memory allocation.
        errpipe_read, errpipe_write = os.pipe()
        # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
        low_fds_to_close = []
        while errpipe_write < 3:
            low_fds_to_close.append(errpipe_write)
            errpipe_write = os.dup(errpipe_write)
        for low_fd in low_fds_to_close:
            os.close(low_fd)
        try:
            try:
                # We must avoid complex work that could involve
                # malloc or free in the child process to avoid
                # potential deadlocks, thus we do all this here.
                # and pass it to fork_exec()
    
                if env is not None:
                    env_list = []
                    for k, v in env.items():
                        k = os.fsencode(k)
                        if b'=' in k:
                            raise ValueError("illegal environment variable name")
                        env_list.append(k + b'=' + os.fsencode(v))
                else:
                    env_list = None  # Use execv instead of execve.
                executable = os.fsencode(executable)
                if os.path.dirname(executable):
                    executable_list = (executable,)
                else:
                    # This matches the behavior of os._execvpe().
                    executable_list = tuple(
                        os.path.join(os.fsencode(dir), executable)
                        for dir in os.get_exec_path(env))
                fds_to_keep = set(pass_fds)
                fds_to_keep.add(errpipe_write)
                self.pid = _fork_exec(
                        args, executable_list,
                        close_fds, tuple(sorted(map(int, fds_to_keep))),
                        cwd, env_list,
                        p2cread, p2cwrite, c2pread, c2pwrite,
                        errread, errwrite,
                        errpipe_read, errpipe_write,
                        restore_signals, start_new_session,
                        process_group, gid, gids, uid, umask,
                        preexec_fn, _USE_VFORK)
                self._child_created = True
            finally:
                # be sure the FD is closed no matter what
                os.close(errpipe_write)
    
            self._close_pipe_fds(p2cread, p2cwrite,
                                 c2pread, c2pwrite,
                                 errread, errwrite)
    
            # Wait for exec to fail or succeed; possibly raising an
            # exception (limited in size)
            errpipe_data = bytearray()
            while True:
                part = os.read(errpipe_read, 50000)
                errpipe_data += part
                if not part or len(errpipe_data) > 50000:
                    break
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_read)
    
        if errpipe_data:
            try:
                pid, sts = os.waitpid(self.pid, 0)
                if pid == self.pid:
                    self._handle_exitstatus(sts)
                else:
                    self.returncode = sys.maxsize
            except ChildProcessError:
                pass
    
            try:
                exception_name, hex_errno, err_msg = (
                        errpipe_data.split(b':', 2))
                # The encoding here should match the encoding
                # written in by the subprocess implementations
                # like _posixsubprocess
                err_msg = err_msg.decode()
            except ValueError:
                exception_name = b'SubprocessError'
                hex_errno = b'0'
                err_msg = 'Bad exception data from child: {!r}'.format(
                              bytes(errpipe_data))
            child_exception_type = getattr(
                    builtins, exception_name.decode('ascii'),
                    SubprocessError)
            if issubclass(child_exception_type, OSError) and hex_errno:
                errno_num = int(hex_errno, 16)
                if err_msg == "noexec:chdir":
                    err_msg = ""
                    # The error must be from chdir(cwd).
                    err_filename = cwd
                elif err_msg == "noexec":
                    err_msg = ""
                    err_filename = None
                else:
                    err_filename = orig_executable
                if errno_num != 0:
                    err_msg = os.strerror(errno_num)
                if err_filename is not None:
>                   raise child_exception_type(errno_num, err_msg, err_filename)
E                   FileNotFoundError: [Errno 2] No such file or directory: 'mff2mfz.py'

/usr/local/lib/python3.11/subprocess.py:1955: FileNotFoundError
============================================================================== 15 failed, 109 passed in 8.98s ===============================================================================

Version: 0.10.0
Python-3.11
numpy-1.26.4
FreeBSD 14.1

@scott-huberty
Copy link

The error message gives a hint: np.float was deprecated back in v1.20 and removed in v1.24 (And we are on Numpy 2 now!).

The easiest fix here is probably to put a lower pin on the numpy version and fix the tests. i.e. change instances of dtype=np.float to dtype=float.

@jusjusjus
Copy link
Collaborator

Hi @scott-huberty , thanks for pointing this out. I'll try to update versions to something more reasonable. I also noticed that python 3.6 is eol.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants