
    F˝i
                       d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZ dd	lmZmZ dd
lmZ erddlmZ  ede	      Z G d de      Z G d deee         Z G d deeee   e      Zy)    )annotations)ABCabstractmethod)	Generator)TYPE_CHECKINGAnyClassVarGenericTypeVar)	BaseModel
ConfigDict)model_validator)BotContextController   )	InputFileResponseParameters)
UNSET_TYPE)BotTelegramType)boundc                  >    e Zd ZU  ed      Zded<   ded<   ded<   y	)
RequestT)arbitrary_types_allowedstrmethodzdict[str, Any | None]datazdict[str, InputFile] | NonefilesN)__name__
__module____qualname__r   model_config__annotations__     M/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/methods/base.pyr   r      s    d;LK
&&r$   r   c                  P    e Zd ZU ded<   dZded<   dZded<   dZded	<   dZd
ed<   y)ResponseboolokNzTelegramType | Noneresultz
str | Nonedescriptionz
int | None
error_codezResponseParameters | None
parameters)r   r   r    r"   r*   r+   r,   r-   r#   r$   r%   r'   r'   $   s1    H"&F&"K"!J
!,0J)0r$   r'   c                      e Zd ZU  eddd      Z ed      edd              Zerde	d<   d	e	d
<   ne
edd              Ze
edd              ZddZddZy)TelegramMethodallowT)extrapopulate_by_namer   before)modec                    t        |t              s|S |j                         D ci c]  \  }}t        |t              r|| c}}S c c}}w )a  
        Remove UNSET before fields validation.

        We use UNSET as a sentinel value for `parse_mode` and replace it to real value later.
        It isn't a problem when it's just default value for a model field,
        but UNSET might be passing to a model initialization from `Bot.method_name`,
        so we must take care of it and remove it before fields validation.
        )
isinstancedictitemsr   )clsvalueskvs       r%   remove_unsetzTelegramMethod.remove_unset3   s>     &$'M!'QAz!Z7P1QQQs
   AAzClassVar[Any]__returning__zClassVar[str]__api_method__c                     y Nr#   selfs    r%   r>   zTelegramMethod.__returning__G        r$   c                     y rA   r#   rB   s    r%   r?   zTelegramMethod.__api_method__L   rD   r$   c                .   K    ||        d {   S 7 wrA   r#   rC   bots     r%   emitzTelegramMethod.emitQ   s     Ys   c                r    | j                   }|st        d      | j                  |      j                         S )NzThis method is not mounted to a any bot instance, please call it explicilty with bot instance `await bot(method)`
or mount method to a bot instance `method.as_(bot)` and then call it `await method`)_botRuntimeErrorrI   	__await__rG   s     r%   rM   zTelegramMethod.__await__T   s9    ii2  yy~''))r$   N)r:   dict[str, Any]returnrN   )rO   type)rO   r   )rH   r   rO   r   )rO   z"Generator[Any, None, TelegramType])r   r   r    r   r!   r   classmethodr=   r   r"   propertyr   r>   r?   rI   rM   r#   r$   r%   r/   r/   ,   s     $L (#R  $R $$%% 
		 
 
	 
		 
 
		*r$   r/   N)
__future__r   abcr   r   collections.abcr   typingr   r   r	   r
   r   pydanticr   r   pydantic.functional_validatorsr   !aiogram.client.context_controllerr   typesr   r   
types.baser   
client.botr   r   r   r'   r/   r#   r$   r%   <module>r]      sr    " # %  + : B 1 # ~S1'i '1y',/ 11*)9gl6KS 1*r$   