#
# Autogenerated by Thrift
#
# DO NOT EDIT
#  @generated
#

from __future__ import annotations

import typing as _typing

import apache.thrift.metadata.thrift_types as _fbthrift_metadata
import folly.iobuf as _fbthrift_iobuf
from thrift.python.client import (
    AsyncClient as _fbthrift_python_AsyncClient,
    SyncClient as _fbthrift_python_SyncClient,
    Client as _fbthrift_python_Client,
)
from thrift.python.client.omni_client import InteractionMethodPosition as _fbthrift_InteractionMethodPosition, FunctionQualifier as _fbthrift_FunctionQualifier
from thrift.python.common import RpcOptions
import thrift.python.exceptions as _fbthrift_python_exceptions
import thrift.python.types as _fbthrift_python_types
import test.fixtures.basic.module.thrift_types
import test.fixtures.basic.module.thrift_metadata

class FooService(_fbthrift_python_Client["FooService.Async", "FooService.Sync"]):
    @staticmethod
    def __get_thrift_name__() -> str:
        return "module.FooService"
    
    @staticmethod
    def __get_thrift_uri__() -> _typing.Optional[str]:
        return "test.dev/fixtures/basic/FooService"
    
    @staticmethod
    def __get_thrift_unstructured_annotations_DEPRECATED__() -> _typing.Mapping[str, str]:
        return {
        }
    
    @staticmethod
    def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
        return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FooService()
    
    class Async(_fbthrift_python_AsyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.FooService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/FooService"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FooService()
    
        async def simple_rpc(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "FooService",
                "simple_rpc",
                test.fixtures.basic.module.thrift_types._fbthrift_FooService_simple_rpc_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_FooService_simple_rpc_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/FooService",
                rpc_options=rpc_options,
            )
    
    class Sync(_fbthrift_python_SyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.FooService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/FooService"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FooService()
    
        def simple_rpc(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "FooService",
                "simple_rpc",
                test.fixtures.basic.module.thrift_types._fbthrift_FooService_simple_rpc_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_FooService_simple_rpc_result,
                uri_or_name="test.dev/fixtures/basic/FooService",
                rpc_options=rpc_options,
            )


class FB303Service(_fbthrift_python_Client["FB303Service.Async", "FB303Service.Sync"]):
    @staticmethod
    def __get_thrift_name__() -> str:
        return "module.FB303Service"
    
    @staticmethod
    def __get_thrift_uri__() -> _typing.Optional[str]:
        return "test.dev/fixtures/basic/FB303Service"
    
    @staticmethod
    def __get_thrift_unstructured_annotations_DEPRECATED__() -> _typing.Mapping[str, str]:
        return {
        }
    
    @staticmethod
    def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
        return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FB303Service()
    
    class Async(_fbthrift_python_AsyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.FB303Service"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/FB303Service"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FB303Service()
    
        async def simple_rpc(
            self,
            int_parameter: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> test.fixtures.basic.module.thrift_types.ReservedKeyword:
            _fbthrift_resp = await self._send_request(
                "FB303Service",
                "simple_rpc",
                test.fixtures.basic.module.thrift_types._fbthrift_FB303Service_simple_rpc_args(
                    int_parameter=int_parameter,),
                test.fixtures.basic.module.thrift_types._fbthrift_FB303Service_simple_rpc_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/FB303Service",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
    class Sync(_fbthrift_python_SyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.FB303Service"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/FB303Service"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_FB303Service()
    
        def simple_rpc(
            self,
            int_parameter: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> test.fixtures.basic.module.thrift_types.ReservedKeyword:
            _fbthrift_resp = self._send_request(
                "FB303Service",
                "simple_rpc",
                test.fixtures.basic.module.thrift_types._fbthrift_FB303Service_simple_rpc_args(
                    int_parameter=int_parameter,),
                test.fixtures.basic.module.thrift_types._fbthrift_FB303Service_simple_rpc_result,
                uri_or_name="test.dev/fixtures/basic/FB303Service",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )


class MyService(_fbthrift_python_Client["MyService.Async", "MyService.Sync"]):
    @staticmethod
    def __get_thrift_name__() -> str:
        return "module.MyService"
    
    @staticmethod
    def __get_thrift_uri__() -> _typing.Optional[str]:
        return "test.dev/fixtures/basic/MyService"
    
    @staticmethod
    def __get_thrift_unstructured_annotations_DEPRECATED__() -> _typing.Mapping[str, str]:
        return {
        }
    
    @staticmethod
    def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
        return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_MyService()
    
    class Async(_fbthrift_python_AsyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.MyService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/MyService"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_MyService()
    
        async def ping(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "ping",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_ping_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_ping_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        async def getRandomData(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> str:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "getRandomData",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getRandomData_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getRandomData_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        async def sink(
            self,
            sink: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "sink",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_sink_args(
                    sink=sink,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_sink_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        async def putDataById(
            self,
            id: int,
            data: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "putDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_putDataById_args(
                    id=id,
                    data=data,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_putDataById_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        async def hasDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bool:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "hasDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_hasDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_hasDataById_result,
                qualifier = _fbthrift_FunctionQualifier.ReadOnly,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        async def getDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> str:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "getDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getDataById_result,
                qualifier = _fbthrift_FunctionQualifier.ReadOnly,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        async def deleteDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "deleteDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_deleteDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_deleteDataById_result,
                qualifier = _fbthrift_FunctionQualifier.Idempotent,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        async def lobDataById(
            self,
            id: int,
            data: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "lobDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_lobDataById_args(
                    id=id,
                    data=data,),
                None,
                qualifier = _fbthrift_FunctionQualifier.OneWay,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        async def invalid_return_for_hack(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> _typing.AbstractSet[float]:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "invalid_return_for_hack",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_invalid_return_for_hack_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_invalid_return_for_hack_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        async def rpc_skipped_codegen(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "rpc_skipped_codegen",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_rpc_skipped_codegen_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_rpc_skipped_codegen_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
    class Sync(_fbthrift_python_SyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.MyService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/MyService"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_MyService()
    
        def ping(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "ping",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_ping_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_ping_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        def getRandomData(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> str:
            _fbthrift_resp = self._send_request(
                "MyService",
                "getRandomData",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getRandomData_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getRandomData_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        def sink(
            self,
            sink: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "sink",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_sink_args(
                    sink=sink,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_sink_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        def putDataById(
            self,
            id: int,
            data: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "putDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_putDataById_args(
                    id=id,
                    data=data,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_putDataById_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        def hasDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bool:
            _fbthrift_resp = self._send_request(
                "MyService",
                "hasDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_hasDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_hasDataById_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        def getDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> str:
            _fbthrift_resp = self._send_request(
                "MyService",
                "getDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_getDataById_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        def deleteDataById(
            self,
            id: int,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "deleteDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_deleteDataById_args(
                    id=id,),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_deleteDataById_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        def lobDataById(
            self,
            id: int,
            data: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "lobDataById",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_lobDataById_args(
                    id=id,
                    data=data,),
                None,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
    
        def invalid_return_for_hack(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> _typing.AbstractSet[float]:
            _fbthrift_resp = self._send_request(
                "MyService",
                "invalid_return_for_hack",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_invalid_return_for_hack_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_invalid_return_for_hack_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        def rpc_skipped_codegen(
            self,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "rpc_skipped_codegen",
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_rpc_skipped_codegen_args(),
                test.fixtures.basic.module.thrift_types._fbthrift_MyService_rpc_skipped_codegen_result,
                uri_or_name="test.dev/fixtures/basic/MyService",
                rpc_options=rpc_options,
            )


class DbMixedStackArguments(_fbthrift_python_Client["DbMixedStackArguments.Async", "DbMixedStackArguments.Sync"]):
    @staticmethod
    def __get_thrift_name__() -> str:
        return "module.DbMixedStackArguments"
    
    @staticmethod
    def __get_thrift_uri__() -> _typing.Optional[str]:
        return "test.dev/fixtures/basic/DbMixedStackArguments"
    
    @staticmethod
    def __get_thrift_unstructured_annotations_DEPRECATED__() -> _typing.Mapping[str, str]:
        return {
        }
    
    @staticmethod
    def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
        return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_DbMixedStackArguments()
    
    class Async(_fbthrift_python_AsyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.DbMixedStackArguments"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/DbMixedStackArguments"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_DbMixedStackArguments()
    
        async def getDataByKey0(
            self,
            key: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bytes:
            _fbthrift_resp = await self._send_request(
                "DbMixedStackArguments",
                "getDataByKey0",
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey0_args(
                    key=key,),
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey0_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/DbMixedStackArguments",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        async def getDataByKey1(
            self,
            key: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bytes:
            _fbthrift_resp = await self._send_request(
                "DbMixedStackArguments",
                "getDataByKey1",
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey1_args(
                    key=key,),
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey1_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="test.dev/fixtures/basic/DbMixedStackArguments",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
    class Sync(_fbthrift_python_SyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "module.DbMixedStackArguments"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return "test.dev/fixtures/basic/DbMixedStackArguments"
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return test.fixtures.basic.module.thrift_metadata.gen_metadata_service_DbMixedStackArguments()
    
        def getDataByKey0(
            self,
            key: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bytes:
            _fbthrift_resp = self._send_request(
                "DbMixedStackArguments",
                "getDataByKey0",
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey0_args(
                    key=key,),
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey0_result,
                uri_or_name="test.dev/fixtures/basic/DbMixedStackArguments",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )
    
        def getDataByKey1(
            self,
            key: str,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> bytes:
            _fbthrift_resp = self._send_request(
                "DbMixedStackArguments",
                "getDataByKey1",
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey1_args(
                    key=key,),
                test.fixtures.basic.module.thrift_types._fbthrift_DbMixedStackArguments_getDataByKey1_result,
                uri_or_name="test.dev/fixtures/basic/DbMixedStackArguments",
                rpc_options=rpc_options,
            )
            # shortcut to success path for non-void returns
            if _fbthrift_resp.success is not None:
                return _fbthrift_resp.success
            raise _fbthrift_python_exceptions.ApplicationError(
                _fbthrift_python_exceptions.ApplicationErrorType.MISSING_RESULT,
                "Empty Response",
            )

