XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
UTF-8
from g4f.providers.base_provider import (
    AbstractProvider,
    AsyncProvider,
    AsyncGeneratorProvider,
)
from g4f.providers.response import ImageResponse
from g4f.errors import MissingAuthError


class ProviderMock(AbstractProvider):
    working = True
    use_stream_timeout = False

    @classmethod
    def create_completion(cls, model, messages, stream, **kwargs):
        yield "Mock"


class AsyncProviderMock(AsyncProvider):
    working = True
    use_stream_timeout = False

    @classmethod
    async def create_async(cls, model, messages, **kwargs):
        return "Mock"


class AsyncGeneratorProviderMock(AsyncGeneratorProvider):
    working = True
    use_stream_timeout = False

    @classmethod
    async def create_async_generator(cls, model, messages, stream, **kwargs):
        yield "Mock"


class ModelProviderMock(AbstractProvider):
    working = True
    use_stream_timeout = False  # Added to fix unittest error

    @classmethod
    def create_completion(cls, model, messages, stream, **kwargs):
        yield model


class YieldProviderMock(AsyncGeneratorProvider):
    working = True
    use_stream_timeout = False

    @classmethod
    async def create_async_generator(cls, model, messages, stream, **kwargs):
        for message in messages:
            yield message["content"]


class YieldImageResponseProviderMock(AsyncGeneratorProvider):
    working = True
    use_stream_timeout = False

    @classmethod
    async def create_async_generator(
        cls, model, messages, stream, prompt: str, **kwargs
    ):
        yield ImageResponse(prompt, "")


class MissingAuthProviderMock(AbstractProvider):
    use_stream_timeout = False
    working = True

    @classmethod
    def create_completion(cls, model, messages, stream, **kwargs):
        raise MissingAuthError(cls.__name__)
        yield cls.__name__


class RaiseExceptionProviderMock(AbstractProvider):
    working = True

    @classmethod
    def create_completion(cls, model, messages, stream, **kwargs):
        raise RuntimeError(cls.__name__)
        yield cls.__name__


class AsyncRaiseExceptionProviderMock(AsyncGeneratorProvider):
    working = True

    @classmethod
    async def create_async_generator(cls, model, messages, stream, **kwargs):
        raise RuntimeError(cls.__name__)
        yield cls.__name__


class YieldNoneProviderMock(AsyncGeneratorProvider):
    working = True

    @classmethod
    async def create_async_generator(cls, model, messages, stream, **kwargs):
        yield None