You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			248 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			248 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
"""
 | 
						|
Exceptions and Warnings
 | 
						|
=======================
 | 
						|
 | 
						|
General exceptions used by NumPy.  Note that some exceptions may be module
 | 
						|
specific, such as linear algebra errors.
 | 
						|
 | 
						|
.. versionadded:: NumPy 1.25
 | 
						|
 | 
						|
    The exceptions module is new in NumPy 1.25.  Older exceptions remain
 | 
						|
    available through the main NumPy namespace for compatibility.
 | 
						|
 | 
						|
.. currentmodule:: numpy.exceptions
 | 
						|
 | 
						|
Warnings
 | 
						|
--------
 | 
						|
.. autosummary::
 | 
						|
   :toctree: generated/
 | 
						|
 | 
						|
   ComplexWarning             Given when converting complex to real.
 | 
						|
   VisibleDeprecationWarning  Same as a DeprecationWarning, but more visible.
 | 
						|
   RankWarning                Issued when the design matrix is rank deficient.
 | 
						|
 | 
						|
Exceptions
 | 
						|
----------
 | 
						|
.. autosummary::
 | 
						|
   :toctree: generated/
 | 
						|
 | 
						|
    AxisError          Given when an axis was invalid.
 | 
						|
    DTypePromotionError   Given when no common dtype could be found.
 | 
						|
    TooHardError       Error specific to `numpy.shares_memory`.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
__all__ = [
 | 
						|
    "ComplexWarning", "VisibleDeprecationWarning", "ModuleDeprecationWarning",
 | 
						|
    "TooHardError", "AxisError", "DTypePromotionError"]
 | 
						|
 | 
						|
 | 
						|
# Disallow reloading this module so as to preserve the identities of the
 | 
						|
# classes defined here.
 | 
						|
if '_is_loaded' in globals():
 | 
						|
    raise RuntimeError('Reloading numpy._globals is not allowed')
 | 
						|
_is_loaded = True
 | 
						|
 | 
						|
 | 
						|
class ComplexWarning(RuntimeWarning):
 | 
						|
    """
 | 
						|
    The warning raised when casting a complex dtype to a real dtype.
 | 
						|
 | 
						|
    As implemented, casting a complex number to a real discards its imaginary
 | 
						|
    part, but this behavior may not be what the user actually wants.
 | 
						|
 | 
						|
    """
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class ModuleDeprecationWarning(DeprecationWarning):
 | 
						|
    """Module deprecation warning.
 | 
						|
 | 
						|
    .. warning::
 | 
						|
 | 
						|
        This warning should not be used, since nose testing is not relevant
 | 
						|
        anymore.
 | 
						|
 | 
						|
    The nose tester turns ordinary Deprecation warnings into test failures.
 | 
						|
    That makes it hard to deprecate whole modules, because they get
 | 
						|
    imported by default. So this is a special Deprecation warning that the
 | 
						|
    nose tester will let pass without making tests fail.
 | 
						|
 | 
						|
    """
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class VisibleDeprecationWarning(UserWarning):
 | 
						|
    """Visible deprecation warning.
 | 
						|
 | 
						|
    By default, python will not show deprecation warnings, so this class
 | 
						|
    can be used when a very visible warning is helpful, for example because
 | 
						|
    the usage is most likely a user bug.
 | 
						|
 | 
						|
    """
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class RankWarning(RuntimeWarning):
 | 
						|
    """Matrix rank warning.
 | 
						|
 | 
						|
    Issued by polynomial functions when the design matrix is rank deficient.
 | 
						|
 | 
						|
    """
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
# Exception used in shares_memory()
 | 
						|
class TooHardError(RuntimeError):
 | 
						|
    """``max_work`` was exceeded.
 | 
						|
 | 
						|
    This is raised whenever the maximum number of candidate solutions
 | 
						|
    to consider specified by the ``max_work`` parameter is exceeded.
 | 
						|
    Assigning a finite number to ``max_work`` may have caused the operation
 | 
						|
    to fail.
 | 
						|
 | 
						|
    """
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class AxisError(ValueError, IndexError):
 | 
						|
    """Axis supplied was invalid.
 | 
						|
 | 
						|
    This is raised whenever an ``axis`` parameter is specified that is larger
 | 
						|
    than the number of array dimensions.
 | 
						|
    For compatibility with code written against older numpy versions, which
 | 
						|
    raised a mixture of :exc:`ValueError` and :exc:`IndexError` for this
 | 
						|
    situation, this exception subclasses both to ensure that
 | 
						|
    ``except ValueError`` and ``except IndexError`` statements continue
 | 
						|
    to catch ``AxisError``.
 | 
						|
 | 
						|
    Parameters
 | 
						|
    ----------
 | 
						|
    axis : int or str
 | 
						|
        The out of bounds axis or a custom exception message.
 | 
						|
        If an axis is provided, then `ndim` should be specified as well.
 | 
						|
    ndim : int, optional
 | 
						|
        The number of array dimensions.
 | 
						|
    msg_prefix : str, optional
 | 
						|
        A prefix for the exception message.
 | 
						|
 | 
						|
    Attributes
 | 
						|
    ----------
 | 
						|
    axis : int, optional
 | 
						|
        The out of bounds axis or ``None`` if a custom exception
 | 
						|
        message was provided. This should be the axis as passed by
 | 
						|
        the user, before any normalization to resolve negative indices.
 | 
						|
 | 
						|
        .. versionadded:: 1.22
 | 
						|
    ndim : int, optional
 | 
						|
        The number of array dimensions or ``None`` if a custom exception
 | 
						|
        message was provided.
 | 
						|
 | 
						|
        .. versionadded:: 1.22
 | 
						|
 | 
						|
 | 
						|
    Examples
 | 
						|
    --------
 | 
						|
    >>> import numpy as np
 | 
						|
    >>> array_1d = np.arange(10)
 | 
						|
    >>> np.cumsum(array_1d, axis=1)
 | 
						|
    Traceback (most recent call last):
 | 
						|
      ...
 | 
						|
    numpy.exceptions.AxisError: axis 1 is out of bounds for array of dimension 1
 | 
						|
 | 
						|
    Negative axes are preserved:
 | 
						|
 | 
						|
    >>> np.cumsum(array_1d, axis=-2)
 | 
						|
    Traceback (most recent call last):
 | 
						|
      ...
 | 
						|
    numpy.exceptions.AxisError: axis -2 is out of bounds for array of dimension 1
 | 
						|
 | 
						|
    The class constructor generally takes the axis and arrays'
 | 
						|
    dimensionality as arguments:
 | 
						|
 | 
						|
    >>> print(np.exceptions.AxisError(2, 1, msg_prefix='error'))
 | 
						|
    error: axis 2 is out of bounds for array of dimension 1
 | 
						|
 | 
						|
    Alternatively, a custom exception message can be passed:
 | 
						|
 | 
						|
    >>> print(np.exceptions.AxisError('Custom error message'))
 | 
						|
    Custom error message
 | 
						|
 | 
						|
    """
 | 
						|
 | 
						|
    __slots__ = ("_msg", "axis", "ndim")
 | 
						|
 | 
						|
    def __init__(self, axis, ndim=None, msg_prefix=None):
 | 
						|
        if ndim is msg_prefix is None:
 | 
						|
            # single-argument form: directly set the error message
 | 
						|
            self._msg = axis
 | 
						|
            self.axis = None
 | 
						|
            self.ndim = None
 | 
						|
        else:
 | 
						|
            self._msg = msg_prefix
 | 
						|
            self.axis = axis
 | 
						|
            self.ndim = ndim
 | 
						|
 | 
						|
    def __str__(self):
 | 
						|
        axis = self.axis
 | 
						|
        ndim = self.ndim
 | 
						|
 | 
						|
        if axis is ndim is None:
 | 
						|
            return self._msg
 | 
						|
        else:
 | 
						|
            msg = f"axis {axis} is out of bounds for array of dimension {ndim}"
 | 
						|
            if self._msg is not None:
 | 
						|
                msg = f"{self._msg}: {msg}"
 | 
						|
            return msg
 | 
						|
 | 
						|
 | 
						|
class DTypePromotionError(TypeError):
 | 
						|
    """Multiple DTypes could not be converted to a common one.
 | 
						|
 | 
						|
    This exception derives from ``TypeError`` and is raised whenever dtypes
 | 
						|
    cannot be converted to a single common one.  This can be because they
 | 
						|
    are of a different category/class or incompatible instances of the same
 | 
						|
    one (see Examples).
 | 
						|
 | 
						|
    Notes
 | 
						|
    -----
 | 
						|
    Many functions will use promotion to find the correct result and
 | 
						|
    implementation.  For these functions the error will typically be chained
 | 
						|
    with a more specific error indicating that no implementation was found
 | 
						|
    for the input dtypes.
 | 
						|
 | 
						|
    Typically promotion should be considered "invalid" between the dtypes of
 | 
						|
    two arrays when `arr1 == arr2` can safely return all ``False`` because the
 | 
						|
    dtypes are fundamentally different.
 | 
						|
 | 
						|
    Examples
 | 
						|
    --------
 | 
						|
    Datetimes and complex numbers are incompatible classes and cannot be
 | 
						|
    promoted:
 | 
						|
 | 
						|
    >>> import numpy as np
 | 
						|
    >>> np.result_type(np.dtype("M8[s]"), np.complex128)  # doctest: +IGNORE_EXCEPTION_DETAIL
 | 
						|
    Traceback (most recent call last):
 | 
						|
     ...
 | 
						|
    DTypePromotionError: The DType <class 'numpy.dtype[datetime64]'> could not
 | 
						|
    be promoted by <class 'numpy.dtype[complex128]'>. This means that no common
 | 
						|
    DType exists for the given inputs. For example they cannot be stored in a
 | 
						|
    single array unless the dtype is `object`. The full list of DTypes is:
 | 
						|
    (<class 'numpy.dtype[datetime64]'>, <class 'numpy.dtype[complex128]'>)
 | 
						|
 | 
						|
    For example for structured dtypes, the structure can mismatch and the
 | 
						|
    same ``DTypePromotionError`` is given when two structured dtypes with
 | 
						|
    a mismatch in their number of fields is given:
 | 
						|
 | 
						|
    >>> dtype1 = np.dtype([("field1", np.float64), ("field2", np.int64)])
 | 
						|
    >>> dtype2 = np.dtype([("field1", np.float64)])
 | 
						|
    >>> np.promote_types(dtype1, dtype2)  # doctest: +IGNORE_EXCEPTION_DETAIL
 | 
						|
    Traceback (most recent call last):
 | 
						|
     ...
 | 
						|
    DTypePromotionError: field names `('field1', 'field2')` and `('field1',)`
 | 
						|
    mismatch.
 | 
						|
 | 
						|
    """  # noqa: E501
 | 
						|
    pass
 |