
    /jkjn                    l    d dl mZ d dlmZ d dlmZ d dlZd dlmZ h dZ	h dZ
ddZ	 	 dddZddZdS )    )annotations)Mapping)
ip_addressN)Request>   PUTPOSTPATCHDELETE>   testdisabled
local_onlyrequestr   returnboolc                    | j         r| j         j        nd}|dk    rdS 	 t          |          j        S # t          $ r Y dS w xY w)N 
testclientTF)clienthostr   is_loopback
ValueError)r   client_hosts     "src/jarvis_finance/api/security.pyis_local_requestr      s`    )0?'.%%RKl""t+&&22   uus   3 
A A
write_mode
str | NoneenvironMapping[str, str] | Nonestrc                    |pt           j        }| p|                    dd                                                                          }|t
          v r|ndS )NJARVIS_FINANCE_WRITE_MODEr   )osr   getstriplowerWRITE_MODES)r   r   env	candidates       r   resolve_write_moder)      sU     
RZCOsww'BJOOVVXX^^``I![0099j@    c                r    | j         r| j         j        nd}|dk    r|dk    S |dk    rdS t          |           S )Nr   r   r   r   F)r   r   r   )r   r   r   s      r   is_write_request_allowedr,       sL    )0?'.%%RKVl**\!!uG$$$r*   )r   r   r   r   )NN)r   r   r   r   r   r   )r   r   r   r   r   r   )
__future__r   collections.abcr   	ipaddressr   r"   fastapir   WRITE_METHODSr&   r   r)   r,    r*   r   <module>r3      s    " " " " " " # # # # # #             				      222000    "(,A A A A A% % % % % %r*   