Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"""base protocol for all merging strategies"""

from typing import Any, List, Protocol, Tuple

from .standard_merge import Bayesian, NoSynthetic, Simple, SyntheticAsFallback


class Merger(Protocol):  # pylint: disable=too-few-public-methods
    """Protocol for Merge strategies"""

    def merge(
        self,
        dp_keys: List[Tuple[Any, ...]],
        dp_values: List[List[Any]],
        sy_keys: List[Tuple[Any, ...]],
        sy_values: List[List[Any]],
    ) -> List[List[Any]]:
        """Protocol for the merging function"""
        ...


def simple(**kwargs: Any) -> Merger:
    """Create and return a Simple merger"""
    return Simple(**kwargs)


def bayesian(**kwargs: Any) -> Merger:
    """Create and return a Bayesian merger"""
    return Bayesian(**kwargs)


def synthetic_as_fallback(**_kwargs: Any) -> Merger:
    """Create and return a SyntheticAsFallback merger"""
    return SyntheticAsFallback()


def no_synthetic(**_kwargs: Any) -> Merger:
    """Create and return a NoSynthetic merger"""
    return NoSynthetic()


def logistic(**kwargs: Any) -> Merger:
    """Create and return a Logistic merger"""
    from .tf_merge import Logistic

    return Logistic(**kwargs)


def neural_network(**kwargs: Any) -> Merger:
    """Create and return a neural network merger"""
    from .tf_merge import NN

    return NN(**kwargs)