#
# 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 service.thrift_types
import service.thrift_metadata
import includes.thrift_types
import module.thrift_types
import transitive.thrift_types

class MyService(_fbthrift_python_Client["MyService.Async", "MyService.Sync"]):
    @staticmethod
    def __get_thrift_name__() -> str:
        return "service.MyService"
    
    @staticmethod
    def __get_thrift_uri__() -> _typing.Optional[str]:
        return None
    
    @staticmethod
    def __get_thrift_unstructured_annotations_DEPRECATED__() -> _typing.Mapping[str, str]:
        return {
        }
    
    @staticmethod
    def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
        return service.thrift_metadata.gen_metadata_service_MyService()
    
    class Async(_fbthrift_python_AsyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "service.MyService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return None
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return service.thrift_metadata.gen_metadata_service_MyService()
    
        async def query(
            self,
            s: module.thrift_types.MyStruct,
            i: includes.thrift_types.Included,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "query",
                service.thrift_types._fbthrift_MyService_query_args(
                    s=s,
                    i=i,),
                service.thrift_types._fbthrift_MyService_query_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="MyService",
                rpc_options=rpc_options,
            )
    
        async def has_arg_docs(
            self,
            s: module.thrift_types.MyStruct,
            i: includes.thrift_types.Included,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = await self._send_request(
                "MyService",
                "has_arg_docs",
                service.thrift_types._fbthrift_MyService_has_arg_docs_args(
                    s=s,
                    i=i,),
                service.thrift_types._fbthrift_MyService_has_arg_docs_result,
                qualifier = _fbthrift_FunctionQualifier.Unspecified,
                uri_or_name="MyService",
                rpc_options=rpc_options,
            )
    
    class Sync(_fbthrift_python_SyncClient):
        @staticmethod
        def __get_thrift_name__() -> str:
            return "service.MyService"
    
        @staticmethod
        def __get_thrift_uri__() -> _typing.Optional[str]:
            return None
    
        @staticmethod
        def __get_metadata__() -> _fbthrift_metadata.ThriftMetadata:
            return service.thrift_metadata.gen_metadata_service_MyService()
    
        def query(
            self,
            s: module.thrift_types.MyStruct,
            i: includes.thrift_types.Included,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "query",
                service.thrift_types._fbthrift_MyService_query_args(
                    s=s,
                    i=i,),
                service.thrift_types._fbthrift_MyService_query_result,
                uri_or_name="MyService",
                rpc_options=rpc_options,
            )
    
        def has_arg_docs(
            self,
            s: module.thrift_types.MyStruct,
            i: includes.thrift_types.Included,
            *,
            rpc_options: _typing.Optional[RpcOptions] = None,
        ) -> None:
            _fbthrift_resp = self._send_request(
                "MyService",
                "has_arg_docs",
                service.thrift_types._fbthrift_MyService_has_arg_docs_args(
                    s=s,
                    i=i,),
                service.thrift_types._fbthrift_MyService_has_arg_docs_result,
                uri_or_name="MyService",
                rpc_options=rpc_options,
            )

