Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"The schema transformer function has no effect in a "
"check_output decorator. Please perform the necessary "
"transformations in the '%s' function instead." % fn.__name__)
out = fn(*args, **kwargs)
if obj_getter is None:
obj = out
elif isinstance(obj_getter, (int, str)):
obj = out[obj_getter]
elif callable(obj_getter):
obj = obj_getter(out)
else:
raise ValueError(
"obj_getter is unrecognized type: %s" % type(obj_getter))
try:
schema.validate(obj, head, tail, sample, random_state)
except SchemaError as e:
raise SchemaError(
"error in check_output decorator of function '%s': %s" %
(fn.__name__, e))
return out
"bool, found %s" %
(check_index, self.fn.__name__, val_result.dtype))
if val_result.all():
return True
elif isinstance(check_obj, dict) or \
check_obj.shape[0] != val_result.shape[0] or \
(check_obj.index != val_result.index).all():
raise SchemaError(
self.generic_error_message(parent_schema, check_index))
else:
raise SchemaError(self.vectorized_error_message(
parent_schema, check_index, check_obj[~val_result]))
else:
if val_result:
return True
raise SchemaError(
self.generic_error_message(parent_schema, check_index))
def relationships(self, relationship):
"""Impose a relationship on a supplied Test function.
:param relationship: represents what relationship conditions are
imposed on the hypothesis test. A function or lambda function can
be supplied. If a string is provided, a lambda function will be
returned from Hypothesis.relationships. Available relationships
are: "greater_than", "less_than", "not_equal"
:type relationship: str|callable
"""
if isinstance(relationship, str):
if relationship not in self.RELATIONSHIPS:
raise SchemaError(
"The relationship %s isn't a built in method"
% relationship)
else:
relationship = self.RELATIONSHIPS[relationship]
elif not callable(relationship):
raise ValueError(
"expected relationship to be str or callable, found %s" % type(
relationship)
)
return relationship
concluding that a difference exists when there is no actual
difference.
:type alpha: float
:param equal_var: (Default value = True) If True (default), perform a
standard independent 2 sample test that assumes equal population
variances. If False, perform Welch's t-test, which does not
assume equal population variance
:type equal_var: bool
:param nan_policy: Defines how to handle when input returns nan, one of
{'propagate', 'raise', 'omit'}, (Default value = 'propagate').
For more details see:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html # noqa E53
:type nan_policy: str
"""
if relationship not in cls.RELATIONSHIPS:
raise SchemaError(
"relationship must be one of %s" % set(cls.RELATIONSHIPS))
return cls(
test=stats.ttest_ind,
samples=[sample1, sample2],
groupby=groupby,
relationship=relationship,
test_kwargs={"equal_var": equal_var, "nan_policy": nan_policy},
relationship_kwargs={"alpha": alpha},
error="failed two sample ttest between '%s' and '%s'" % (
sample1, sample2),
)
def _wrapper(fn, instance, args, kwargs):
args = list(args)
if isinstance(obj_getter, int):
try:
args[obj_getter] = schema.validate(args[obj_getter])
except IndexError as e:
raise SchemaError(
"error in check_input decorator of function '%s': the "
"index '%s' was supplied to the check but this "
"function accepts '%s' arguments, so the maximum "
"index is '%s'. The full error is: '%s'" %
(fn.__name__,
obj_getter,
len(_get_fn_argnames(fn)),
max(0, len(_get_fn_argnames(fn))-1),
e
)
)
elif isinstance(obj_getter, str):
if obj_getter in kwargs:
kwargs[obj_getter] = schema.validate(kwargs[obj_getter])
else:
arg_spec_args = _get_fn_argnames(fn)
"check_output decorator. Please perform the necessary "
"transformations in the '%s' function instead." % fn.__name__)
out = fn(*args, **kwargs)
if obj_getter is None:
obj = out
elif isinstance(obj_getter, (int, str)):
obj = out[obj_getter]
elif callable(obj_getter):
obj = obj_getter(out)
else:
raise ValueError(
"obj_getter is unrecognized type: %s" % type(obj_getter))
try:
schema.validate(obj, head, tail, sample, random_state)
except SchemaError as e:
raise SchemaError(
"error in check_output decorator of function '%s': %s" %
(fn.__name__, e))
return out
:param relationship: Represents what relationship conditions are
imposed on the hypothesis test. Available relationships
are: "greater_than", "less_than", "not_equal" and "equal". For
example, `group1 greater_than group2` specifies an alternative
hypothesis that the mean of group1 is greater than group 2 relative
to a null hypothesis that they are equal.
:type relationship: str
:param alpha: (Default value = 0.01) The significance level; the
probability of rejecting the null hypothesis when it is true. For
example, a significance level of 0.01 indicates a 1% risk of
concluding that a difference exists when there is no actual
difference.
:type alpha: float
"""
if relationship not in cls.RELATIONSHIPS:
raise SchemaError(
"relationship must be one of %s" % set(cls.RELATIONSHIPS))
return cls(
test=stats.ttest_ind,
samples=sample,
relationship=relationship,
test_kwargs={"popmean": popmean},
relationship_kwargs={"alpha": alpha},
error="failed one sample ttest between for column '%s'" % (
sample),
)
def __call__(self, series, dataframe=None):
"""Validate a series."""
if series.name != self._name:
raise SchemaError(
"Expected %s to have name '%s', found '%s'" %
(type(self), self._name, series.name))
expected_dtype = _dtype = self._pandas_dtype if \
isinstance(self._pandas_dtype, str) else self._pandas_dtype.value
if self._nullable:
series = series.dropna()
if dataframe is not None:
dataframe = dataframe.loc[series.index]
if _dtype in ["int_", "int8", "int16", "int32", "int64", "uint8",
"uint16", "uint32", "uint64"]:
_series = series.astype(_dtype)
if (_series != series).any():
# in case where dtype is meant to be int, make sure that
# casting to int results in the same values.
raise SchemaError(
"after dropping null values, expected values in "
def validate(self, series):
"""Check if all values in a series have a corresponding column in the
DataFrameSchema
:param pd.Series series: One-dimensional ndarray with axis labels
(including time series).
"""
if not isinstance(series, pd.Series):
raise TypeError("expected %s, got %s" % (pd.Series, type(series)))
if super(SeriesSchema, self).__call__(series):
return series
raise SchemaError()