Skip to content

Testers

coola.equality.testers

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

coola.equality.testers.BaseEqualityTester

Bases: ABC

Define the base class to implement an equality tester.

coola.equality.testers.BaseEqualityTester.equal abstractmethod

equal(
    actual: Any, expected: Any, config: EqualityConfig
) -> bool

Indicate if two objects are equal or not.

Parameters:

Name Type Description Default
actual Any

The actual input.

required
expected Any

The expected input.

required
config EqualityConfig

The equality configuration.

required

Returns:

Type Description
bool

True if the two objects are equal, otherwise False.

Example usage:

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

coola.equality.testers.EqualityTester

Bases: BaseEqualityTester

Implement the default equality tester.

coola.equality.testers.EqualityTester.add_comparator classmethod

add_comparator(
    data_type: type,
    comparator: BaseEqualityComparator,
    exist_ok: bool = False,
) -> None

Add an equality comparator for a given data type.

Parameters:

Name Type Description Default
data_type type

The data type for this test.

required
comparator BaseEqualityComparator

The comparator used to test the equality of the specified type.

required
exist_ok bool

If False, RuntimeError is raised if the data type already exists. This parameter should be set to True to overwrite the comparator for a type.

False

Raises:

Type Description
RuntimeError

if a comparator is already registered for the data type and exist_ok=False.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> from coola.equality.comparators import SequenceEqualityComparator
>>> EqualityTester.add_comparator(list, SequenceEqualityComparator(), exist_ok=True)

coola.equality.testers.EqualityTester.find_comparator classmethod

find_comparator(data_type: Any) -> BaseEqualityComparator

Find the equality comparator associated to an object.

Parameters:

Name Type Description Default
data_type Any

The data type to get.

required

Returns:

Type Description
BaseEqualityComparator

The equality comparator associated to the data type.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> EqualityTester.find_comparator(list)
SequenceEqualityComparator()
>>> EqualityTester.find_comparator(str)
DefaultEqualityComparator()

coola.equality.testers.EqualityTester.has_comparator classmethod

has_comparator(data_type: type) -> bool

Indicate if an equality comparator is registered for the given data type.

Parameters:

Name Type Description Default
data_type type

The data type to check.

required

Returns:

Type Description
bool

True if an equality comparator is registered, otherwise False.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> EqualityTester.has_comparator(list)
True
>>> EqualityTester.has_comparator(str)
False

coola.equality.testers.EqualityTester.local_copy classmethod

local_copy() -> LocalEqualityTester

Return a copy of EqualityTester that can easily be customized without changind EqualityTester.

Returns:

Type Description
LocalEqualityTester

A "local" copy of EqualityTester.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> tester = EqualityTester.local_copy()
>>> tester
LocalEqualityTester(...)

coola.equality.testers.LocalEqualityTester

Bases: BaseEqualityTester

Implement an equality tester that can be easily customized.

Parameters:

Name Type Description Default
registry dict[type, BaseEqualityComparator] | None

The initial registry with the equality comparators.

None

coola.equality.testers.LocalEqualityTester.add_comparator

add_comparator(
    data_type: type,
    comparator: BaseEqualityComparator,
    exist_ok: bool = False,
) -> None

Add an equality comparator for a given data type.

Parameters:

Name Type Description Default
data_type type

The data type for this test.

required
comparator BaseEqualityComparator

The comparator used to test the equality of the specified type.

required
exist_ok bool

If False, RuntimeError is raised if the data type already exists. This parameter should be set to True to overwrite the comparator for a type.

False

Raises:

Type Description
RuntimeError

if an comparator is already registered for the data type and exist_ok=False.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> from coola.equality.comparators import DefaultEqualityComparator
>>> tester = EqualityTester.local_copy()
>>> tester.add_comparator(str, DefaultEqualityComparator())
>>> tester.add_comparator(str, DefaultEqualityComparator(), exist_ok=True)

coola.equality.testers.LocalEqualityTester.clone

Clones the current tester.

Returns:

Type Description
LocalEqualityTester

A deep copy of the current tester.

Example usage:

```pycon

from coola.equality.testers import EqualityTester tester = EqualityTester.local_copy() tester_cloned = tester.clone()

```

coola.equality.testers.LocalEqualityTester.find_comparator

find_comparator(data_type: Any) -> BaseEqualityComparator

Find the equality comparator associated to an object.

Parameters:

Name Type Description Default
data_type Any

The data type to get.

required

Returns:

Type Description
BaseEqualityComparator

The equality comparator associated to the data type.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> tester = EqualityTester.local_copy()
>>> tester.find_comparator(list)
SequenceEqualityComparator()
>>> tester.find_comparator(str)
DefaultEqualityComparator()

coola.equality.testers.LocalEqualityTester.has_comparator

has_comparator(data_type: type) -> bool

Indicate if an equality comparator is registered for the given data type.

Parameters:

Name Type Description Default
data_type type

The data type to check.

required

Returns:

Type Description
bool

True if an equality comparator is registered, otherwise False.

Example usage:

>>> from coola.equality.testers import EqualityTester
>>> tester = EqualityTester.local_copy()
>>> tester.has_comparator(list)
True
>>> tester.has_comparator(str)
False