done
This commit is contained in:
112
lib/python3.11/site-packages/pandas/tests/test_errors.py
Normal file
112
lib/python3.11/site-packages/pandas/tests/test_errors.py
Normal file
@ -0,0 +1,112 @@
|
||||
import pytest
|
||||
|
||||
from pandas.errors import (
|
||||
AbstractMethodError,
|
||||
UndefinedVariableError,
|
||||
)
|
||||
|
||||
import pandas as pd
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"exc",
|
||||
[
|
||||
"AttributeConflictWarning",
|
||||
"CSSWarning",
|
||||
"CategoricalConversionWarning",
|
||||
"ClosedFileError",
|
||||
"DataError",
|
||||
"DatabaseError",
|
||||
"DtypeWarning",
|
||||
"EmptyDataError",
|
||||
"IncompatibilityWarning",
|
||||
"IndexingError",
|
||||
"InvalidColumnName",
|
||||
"InvalidComparison",
|
||||
"InvalidVersion",
|
||||
"LossySetitemError",
|
||||
"MergeError",
|
||||
"NoBufferPresent",
|
||||
"NumExprClobberingError",
|
||||
"NumbaUtilError",
|
||||
"OptionError",
|
||||
"OutOfBoundsDatetime",
|
||||
"ParserError",
|
||||
"ParserWarning",
|
||||
"PerformanceWarning",
|
||||
"PossibleDataLossError",
|
||||
"PossiblePrecisionLoss",
|
||||
"PyperclipException",
|
||||
"SettingWithCopyError",
|
||||
"SettingWithCopyWarning",
|
||||
"SpecificationError",
|
||||
"UnsortedIndexError",
|
||||
"UnsupportedFunctionCall",
|
||||
"ValueLabelTypeMismatch",
|
||||
],
|
||||
)
|
||||
def test_exception_importable(exc):
|
||||
from pandas import errors
|
||||
|
||||
err = getattr(errors, exc)
|
||||
assert err is not None
|
||||
|
||||
# check that we can raise on them
|
||||
|
||||
msg = "^$"
|
||||
|
||||
with pytest.raises(err, match=msg):
|
||||
raise err()
|
||||
|
||||
|
||||
def test_catch_oob():
|
||||
from pandas import errors
|
||||
|
||||
msg = "Cannot cast 1500-01-01 00:00:00 to unit='ns' without overflow"
|
||||
with pytest.raises(errors.OutOfBoundsDatetime, match=msg):
|
||||
pd.Timestamp("15000101").as_unit("ns")
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"is_local",
|
||||
[
|
||||
True,
|
||||
False,
|
||||
],
|
||||
)
|
||||
def test_catch_undefined_variable_error(is_local):
|
||||
variable_name = "x"
|
||||
if is_local:
|
||||
msg = f"local variable '{variable_name}' is not defined"
|
||||
else:
|
||||
msg = f"name '{variable_name}' is not defined"
|
||||
|
||||
with pytest.raises(UndefinedVariableError, match=msg):
|
||||
raise UndefinedVariableError(variable_name, is_local)
|
||||
|
||||
|
||||
class Foo:
|
||||
@classmethod
|
||||
def classmethod(cls):
|
||||
raise AbstractMethodError(cls, methodtype="classmethod")
|
||||
|
||||
@property
|
||||
def property(self):
|
||||
raise AbstractMethodError(self, methodtype="property")
|
||||
|
||||
def method(self):
|
||||
raise AbstractMethodError(self)
|
||||
|
||||
|
||||
def test_AbstractMethodError_classmethod():
|
||||
xpr = "This classmethod must be defined in the concrete class Foo"
|
||||
with pytest.raises(AbstractMethodError, match=xpr):
|
||||
Foo.classmethod()
|
||||
|
||||
xpr = "This property must be defined in the concrete class Foo"
|
||||
with pytest.raises(AbstractMethodError, match=xpr):
|
||||
Foo().property
|
||||
|
||||
xpr = "This method must be defined in the concrete class Foo"
|
||||
with pytest.raises(AbstractMethodError, match=xpr):
|
||||
Foo().method()
|
Reference in New Issue
Block a user