Source code for graphein.utils.config
"""Yaml parser for config objects"""
from functools import partial
from deepdiff.operator import BaseOperator
[docs]def partial_functions_equal(func1: partial, func2: partial) -> bool:
"""
Determine whether two partial functions are equal.
:param func1: Partial function to check
:type func1: partial
:param func2: Partial function to check
:type func2: partial
:return: Whether the two functions are equal
:rtype: bool
"""
return (
all(
getattr(func1, attr) == getattr(func2, attr)
for attr in ["func", "args", "keywords"]
)
if (isinstance(func1, partial) and isinstance(func2, partial))
else False
)
[docs]class PartialMatchOperator(BaseOperator):
"""Custom operator for deepdiff comparison. This operator compares whether the two partials are equal."""
def give_up_diffing(self, level, diff_instance):
return partial_functions_equal(level.t1, level.t2)
[docs]class PathMatchOperator(BaseOperator):
"""Custom operator for deepdiff comparison. This operator compares whether the two pathlib Paths are equal."""
def give_up_diffing(self, level, diff_instance):
return level.t1 == level.t2