
    Xj                        d dl mZ d dl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mZmZmZ d dlmZmZ e	rd dlmZ e G d d	             Z G d
 ded      Z G d de      Zg dZy)    )annotationsN)ABCabstractmethod)	dataclass)TYPE_CHECKINGAny	CoroutineDictListMappingOptionalUnion)Literal	TypedDict)GraphQLFormattedErrorc                  ,    e Zd ZU ded<   ded<   ded<   y)Responsez%Optional[List[GraphQLFormattedError]]errorsOptional[Dict[str, object]]data
extensionsN__name__
__module____qualname____annotations__     c/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/test/client.pyr   r      s    11
%%++r   r   c                  "    e Zd ZU ded<   ded<   y)Bodystrqueryr   	variablesNr   r   r   r   r!   r!      s    J**r   r!   F)totalc                      e Zd Z	 d	 	 	 	 	 d	dZ	 	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 ddZe	 	 d	 	 	 	 	 	 	 dd       Z	 	 d	 	 	 	 	 	 	 ddZe	 	 	 	 	 	 dd       Z	ddZ
y)BaseGraphQLTestClientc                     || _         || _        y N)_clienturl)selfclientr+   s      r   __init__zBaseGraphQLTestClient.__init__   s    
 r   Nc                   | j                  |||      }| j                  |||      }| j                  ||rdnd      }t        |j	                  d      |j	                  d      |j	                  d            }	|r|	j
                  J |	S )N	multipartjson)typer   r   r   )r   r   r   )_build_bodyrequest_decoder   getr   )
r,   r#   r$   headersasserts_errorsfilesbodyrespr   responses
             r   r#   zBaseGraphQLTestClient.query"   s     y%8||D'51||De{|H88H%&!xx-

 ??***r   c                    t         r)   )NotImplementedError)r,   r:   r7   r9   s       r   r4   zBaseGraphQLTestClient.request9   s
     "!r   c                    d|i}|r||d<   |rK|J |J t         j                  ||      }t        j                  |      t        j                  |      d|}|S )Nr#   r$   )
operationsmap)r'   _build_multipart_file_mapr1   dumps)r,   r#   r$   r9   r:   file_maps         r   r3   z!BaseGraphQLTestClient._build_bodyB   s{     $+E"2 )D((($$$,FFyRWXH #jj.zz(+ D r   c                T   i }| j                         D ]  \  }}|}|}t        |t              r/t        t	        |j                                     }|d| z  }||   }t        |t              r|j                         }t        |      D ]d  \  }	}
t        t	        |j                                     }|j                  |       |j                  |g        ||   j                  d| d|	        f d| g||<    |j                         D ci c]  \  }}||v s|| }}}|S c c}}w )a  Creates the file mapping between the variables and the files objects passed as key arguments.

        Args:
            variables: A dictionary with the variables that are going to be passed to the
                query.
            files: A dictionary with the files that are going to be passed to the query.

        Example usages:

        ```python
        _build_multipart_file_map(variables={"textFile": None}, files={"textFile": f})
        # {"textFile": ["variables.textFile"]}
        ```

        If the variable is a list we have to enumerate files in the mapping

        ```python
        _build_multipart_file_map(
            variables={"files": [None, None]},
            files={"file1": file1, "file2": file2},
        )
        # {"file1": ["variables.files.0"], "file2": ["variables.files.1"]}
        ```

        If `variables` contains another keyword (a folder) we must include that keyword
        in the mapping

        ```python
        _build_multipart_file_map(
            variables={"folder": {"files": [None, None]}},
            files={"file1": file1, "file2": file2},
        )
        # {
        #     "file1": ["variables.files.folder.files.0"],
        #     "file2": ["variables.files.folder.files.1"]
        # }
        ```

        If `variables` includes both a list of files and other single values, we must
        map them accordingly

        ```python
        _build_multipart_file_map(
            variables={"files": [None, None], "textFile": None},
            files={"file1": file1, "file2": file2, "textFile": file3},
        )
        # {
        #     "file1": ["variables.files.0"],
        #     "file2": ["variables.files.1"],
        #     "textFile": ["variables.textFile"],
        # }
        ```
        .z
variables.)items
isinstancedictnextiterkeyslistcopy	enumeratepop
setdefaultappend)r$   r9   rA   keyvalues	referencevariable_values
folder_key_kwargsindex_kvmap_without_varss                 r   rB   z/BaseGraphQLTestClient._build_multipart_file_mapZ   s1   r %'$??, 	6KCI$O &$'!$v{{}"56
q--	"1*"= /40**, )/ : DHE1T',,.12AKKNNN1b)FMMJyk5'"BC	D )45C-	66 .1YY[GTQAJAqDGG Hs   D$D$c                    |dk(  r-t        j                  |j                  j                               S |j                         S )Nr0   )r1   loadscontentdecode)r,   r<   r2   s      r   r5   zBaseGraphQLTestClient._decode   s4    ;::h..55788}}r   )z	/graphql/)r-   r   r+   r"   returnNone)NNTN)r#   r"   r$   Optional[Dict[str, Mapping]]r7   r   r8   zOptional[bool]r9   r   rb   z.Union[Coroutine[Any, Any, Response], Response])NN)r:   Dict[str, object]r7   r   r9   r   rb   r   )r#   r"   r$   rd   r9   r   rb   re   )r$   zDict[str, Mapping]r9   re   rb   zDict[str, List[str]])r<   r   r2   zLiteral['multipart', 'json']rb   r   )r   r   r   r.   r#   r   r4   r3   staticmethodrB   r5   r   r   r   r'   r'      s!      
	 37/3)--1 0 -	
 ' + 
8.  04-1	"" -" +	"
 
" " 37-1	 0 +	
 
0 U %U .?U 	U  U nr   r'   )r'   r   r!   )
__future__r   r1   abcr   r   dataclassesr   typingr   r   r	   r
   r   r   r   r   typing_extensionsr   r   graphqlr   r   r!   r'   __all__r   r   r   <module>rn      s`    "  # ! V V V 0- , , ,+9E +
\C \~ 8r   