skcriteria.utils.object_diff
module¶
Utilities to calculate the difference between two objects.
- skcriteria.utils.object_diff.MISSING = <MISSING>¶
A singleton object used to represent missing values.
- skcriteria.utils.object_diff.diff(left, right, **members)[source]¶
Calculates the difference between two objects, left and right, and returns a Difference object.
- Parameters:
- Returns:
A Difference object representing the differences between the two objects.
- Return type:
Difference
Notes
This function compares the values of corresponding members in the left and right objects. If a member is missing in either object, it is considered a difference. If a member is present in both objects, it is compared using the corresponding comparison function specified in members.
Examples
>>> obj_a = SomeClass(a=1, b=2) >>> obj_b = SomeClass(a=1, b=3, c=4) >>> diff(obj_a, obj_b, a=np.equal, b=np.equal) <Difference different_types=False members_diff=('b', 'c')>
- class skcriteria.utils.object_diff.DiffEqualityMixin[source]¶
Bases:
ABC
Abstract base class for classes with a diff method.
This class provides methods for comparing objects with a tolerance, allowing for differences within specified limits. It is designed to be used with numpy and pandas equality functions.
Extra methods:
aequals
almost-equals, Check if the two objects are equal within a tolerance.
equals(other)
Return True if the objects are equal.
__eq__(other)
Implement equality comparison.
__ne__(other)
Implement inequality comparison.
- abstract diff(other, rtol=1e-05, atol=1e-08, equal_nan=True, check_dtypes=False)[source]¶
Return the difference between two objects within a tolerance.
This method should be implemented by subclasses to define how differences between objects are calculated.
The tolerance parameters rtol and atol, equal_nan, and check_dtypes are provided to be used by the numpy and pandas equality functions. These parameters allow you to customize the behavior of the equality comparison, such as setting the relative and absolute tolerance for numeric comparisons, considering NaN values as equal, and checking for the data type of the objects being compared.
Notes
The tolerance values are positive, typically very small numbers. The relative difference (rtol * abs(b)) and the absolute difference atol are added together to compare against the absolute difference between a and b.
NaNs are treated as equal if they are in the same place and if
equal_nan=True
. Infs are treated as equal if they are in the same place and of the same sign in both arrays.- Parameters:
other (object) – The object to compare to.
rtol (float, optional) – The relative tolerance parameter. Default is 1e-05.
atol (float, optional) – The absolute tolerance parameter. Default is 1e-08.
equal_nan (bool, optional) – Whether to consider NaN values as equal. Default is True.
check_dtypes (bool, optional) – Whether to check the data type of the objects. Default is False.
- Returns:
The difference between the current and the other object.
- Return type:
the_diff
- aequals(other, *, rtol=1e-05, atol=1e-08, equal_nan=True, check_dtypes=False)[source]¶
Check if the two objects are equal within a tolerance.
All the parameters ara passed to the diff method.
- Parameters:
other (object) – The object to compare to.
rtol (float, optional) – The relative tolerance parameter. Default is 1e-05.
atol (float, optional) – The absolute tolerance parameter. Default is 1e-08.
equal_nan (bool, optional) – Whether to consider NaN values as equal. Default is True.
check_dtypes (bool, optional) – Whether to check the data type of the objects. Default is False.
- Returns:
True if the objects are equal within the specified tolerance, False otherwise.
- Return type: