Skip to content

Comparators

coola.equality.comparators

Contain the comparators to check if two objects are equal or not.

coola.equality.comparators.BaseEqualityComparator

Bases: ABC, Generic[T]

Define the base class to implement an equality operator.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import DefaultEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = DefaultEqualityComparator()
>>> comparator.equal(42, 42, config)
True
>>> comparator.equal("meow", "meov", config)
False

coola.equality.comparators.BaseEqualityComparator.clone abstractmethod

Return a copy of the equality operator.

Returns:

Type Description
BaseEqualityComparator

A copy of the equality operator.

Example usage:

>>> from coola.equality.comparators import DefaultEqualityComparator
>>> op = DefaultEqualityComparator()
>>> op_cloned = op.clone()
>>> op_cloned
DefaultEqualityComparator()
>>> op is op_cloned
False

coola.equality.comparators.BaseEqualityComparator.equal abstractmethod

equal(
    object1: T, object2: Any, config: EqualityConfig
) -> bool

Indicate if two objects are equal or not.

Parameters:

Name Type Description Default
object1 T

Specifies the first object to compare.

required
object2 Any

Specifies the second object to compare.

required
config EqualityConfig

Specifies the equality configuration.

required

Returns:

Type Description
bool

True if the two objects are equal, otherwise False.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import DefaultEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = DefaultEqualityComparator()
>>> comparator.equal(42, 42, config)
True
>>> comparator.equal("meow", "meov", config)
False

coola.equality.comparators.DefaultEqualityComparator

Bases: BaseEqualityComparator[Any]

Implement a default equality comparator.

The == operator is used to test the equality between the objects.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import DefaultEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = DefaultEqualityComparator()
>>> comparator.equal(42, 42, config)
True
>>> comparator.equal("meow", "meov", config)
False

coola.equality.comparators.JaxArrayEqualityComparator

Bases: BaseEqualityComparator[ndarray]

Implement an equality comparator for jax.numpy.ndarray.

Example usage:

>>> import jax.numpy as jnp
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import JaxArrayEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = JaxArrayEqualityComparator()
>>> comparator.equal(jnp.ones((2, 3)), jnp.ones((2, 3)), config)
True
>>> comparator.equal(jnp.ones((2, 3)), jnp.zeros((2, 3)), config)
False

coola.equality.comparators.MappingEqualityComparator

Bases: BaseEqualityComparator[Mapping]

Implement a sequence equality comparator.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import MappingEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = MappingEqualityComparator()
>>> comparator.equal({"a": 1, "b": 2}, {"a": 1, "b": 2}, config)
True
>>> comparator.equal({"a": 1, "b": 2}, {"a": 1, "b": 4}, config)
False

coola.equality.comparators.NumpyArrayEqualityComparator

Bases: BaseEqualityComparator[ndarray]

Implement an equality comparator for numpy.ndarray.

Example usage:

>>> import numpy as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import NumpyArrayEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = NumpyArrayEqualityComparator()
>>> comparator.equal(np.ones((2, 3)), np.ones((2, 3)), config)
True
>>> comparator.equal(np.ones((2, 3)), np.zeros((2, 3)), config)
False

coola.equality.comparators.NumpyMaskedArrayEqualityComparator

Bases: BaseEqualityComparator[MaskedArray]

Implement an equality comparator for numpy.ndarray.

Example usage:

>>> import numpy as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import NumpyMaskedArrayEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = NumpyMaskedArrayEqualityComparator()
>>> comparator.equal(np.ma.array(data=[0.0, 1.0, 1.2], mask=[0, 1, 0]), np.ma.array(data=[0.0, 1.0, 1.2], mask=[0, 1, 0]), config,)
True
>>> comparator.equal(np.ma.array(data=[0.0, 1.0, 1.2], mask=[0, 1, 0]), np.ma.array(data=[0.0, 1.0, 2.0], mask=[0, 1, 0]), config,)
False

coola.equality.comparators.PandasDataFrameEqualityComparator

Bases: BaseEqualityComparator[DataFrame]

Implement an equality comparator for pandas.DataFrame.

Example usage:

>>> import pandas as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import PandasDataFrameEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = PandasDataFrameEqualityComparator()
>>> comparator.equal(
...     pandas.DataFrame({"col": [1, 2, 3]}),
...     pandas.DataFrame({"col": [1, 2, 3]}),
...     config,
... )
True
>>> comparator.equal(
...     pandas.DataFrame({"col": [1, 2, 3]}),
...     pandas.DataFrame({"col": [1, 2, 4]}),
...     config,
... )
False

coola.equality.comparators.PandasSeriesEqualityComparator

Bases: BaseEqualityComparator[Series]

Implement an equality comparator for pandas.Series.

Example usage:

>>> import pandas as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import PandasSeriesEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = PandasSeriesEqualityComparator()
>>> comparator.equal(pandas.Series([1, 2, 3]), pandas.Series([1, 2, 3]), config)
True
>>> comparator.equal(pandas.Series([1, 2, 3]), pandas.Series([1, 2, 4]), config)
False

coola.equality.comparators.PolarsDataFrameEqualityComparator

Bases: BaseEqualityComparator[DataFrame]

Implement an equality comparator for polars.DataFrame.

Example usage:

>>> import polars as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import PolarsDataFrameEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = PolarsDataFrameEqualityComparator()
>>> comparator.equal(
...     polars.DataFrame({"col": [1, 2, 3]}),
...     polars.DataFrame({"col": [1, 2, 3]}),
...     config,
... )
True
>>> comparator.equal(
...     polars.DataFrame({"col": [1, 2, 3]}),
...     polars.DataFrame({"col": [1, 2, 4]}),
...     config,
... )
False

coola.equality.comparators.PolarsSeriesEqualityComparator

Bases: BaseEqualityComparator[Series]

Implement an equality comparator for polars.Series.

Example usage:

>>> import polars as np
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import PolarsSeriesEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = PolarsSeriesEqualityComparator()
>>> comparator.equal(polars.Series([1, 2, 3]), polars.Series([1, 2, 3]), config)
True
>>> comparator.equal(polars.Series([1, 2, 3]), polars.Series([1, 2, 4]), config)
False

coola.equality.comparators.ScalarEqualityComparator

Bases: BaseEqualityComparator[Any]

Implement a default equality comparator.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import ScalarEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = ScalarEqualityComparator()
>>> comparator.equal(42.0, 42.0, config)
True
>>> comparator.equal(42.0, 1.0, config)
False

coola.equality.comparators.SequenceEqualityComparator

Bases: BaseEqualityComparator[Sequence]

Implement a sequence equality comparator.

Example usage:

>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import SequenceEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = SequenceEqualityComparator()
>>> comparator.equal([1, 2, 3], [1, 2, 3], config)
True
>>> comparator.equal([1, 2, 3], [1, 2, 4], config)
False

coola.equality.comparators.TorchPackedSequenceEqualityComparator

Bases: BaseEqualityComparator[PackedSequence]

Implement an equality comparator for torch.Tensor.

Example usage:

>>> import torch
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import TorchPackedSequenceEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = TorchTensorEqualityComparator()
>>> comparator.equal(torch.ones(2, 3), torch.ones(2, 3), config)
True
>>> comparator.equal(torch.ones(2, 3), torch.zeros(2, 3), config)
False

coola.equality.comparators.TorchTensorEqualityComparator

Bases: BaseEqualityComparator[Tensor]

Implement an equality comparator for torch.Tensor.

Example usage:

>>> import torch
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import TorchTensorEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = TorchTensorEqualityComparator()
>>> comparator.equal(torch.ones(2, 3), torch.ones(2, 3), config)
True
>>> comparator.equal(torch.ones(2, 3), torch.zeros(2, 3), config)
False

coola.equality.comparators.XarrayDataArrayEqualityComparator

Bases: BaseEqualityComparator[DataArray]

Implement an equality comparator for xarray.DataArray.

Example usage:

>>> import numpy as np
>>> import xarray as xr
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import XarrayDataArrayEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = XarrayDataArrayEqualityComparator()
>>> comparator.equal(
...     xr.DataArray(np.arange(6), dims=["z"]),
...     xr.DataArray(np.arange(6), dims=["z"]),
...     config,
... )
True
>>> comparator.equal(
...     xr.DataArray(np.ones(6), dims=["z"]),
...     xr.DataArray(np.zeros(6), dims=["z"]),
...     config,
... )
False

coola.equality.comparators.XarrayDatasetEqualityComparator

Bases: BaseEqualityComparator[Dataset]

Implement an equality comparator for xarray.Dataset.

Example usage:

>>> import numpy as np
>>> import xarray as xr
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import XarrayDatasetEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = XarrayDatasetEqualityComparator()
>>> comparator.equal(
...     xr.Dataset({ "x": xr.DataArray(np.arange(6), dims=["z"])}),
...     xr.Dataset({ "x": xr.DataArray(np.arange(6), dims=["z"])}),
...     config,
... )
True
>>> comparator.equal(
...     xr.Dataset({ "x": xr.DataArray(np.zeros(6), dims=["z"])}),
...     xr.Dataset({ "x": xr.DataArray(np.ones(6), dims=["z"])}),
...     config,
... )
False

coola.equality.comparators.XarrayVariableEqualityComparator

Bases: BaseEqualityComparator[Variable]

Implement an equality comparator for xarray.Variable.

Example usage:

>>> import numpy as np
>>> import xarray as xr
>>> from coola.equality import EqualityConfig
>>> from coola.equality.comparators import XarrayVariableEqualityComparator
>>> from coola.equality.testers import EqualityTester
>>> config = EqualityConfig(tester=EqualityTester())
>>> comparator = XarrayVariableEqualityComparator()
>>> comparator.equal(
...     xr.Variable(dims=["z"], data=np.arange(6)),
...     xr.Variable(dims=["z"], data=np.arange(6)),
...     config,
... )
True
>>> comparator.equal(
...     xr.Variable(dims=["z"], data=np.zeros(6)),
...     xr.Variable(dims=["z"], data=np.ones(6)),
...     config,
... )
False

coola.equality.comparators.get_type_comparator_mapping

get_type_comparator_mapping() -> (
    dict[type, BaseEqualityComparator]
)

Get a default mapping between the types and the equality comparators.

Returns:

Type Description
dict[type, BaseEqualityComparator]

The mapping between the types and the equality comparators.

>>> from coola.equality.comparators import get_type_comparator_mapping
>>> get_type_comparator_mapping()
{<class 'object'>: DefaultEqualityComparator(),
 <class 'collections.abc.Mapping'>: MappingEqualityComparator(),
 <class 'collections.abc.Sequence'>: SequenceEqualityComparator(), ...}