o
    RDir                     @  s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ G dd	 d	eZd
Zejej ZdZdZdZdZdZdZd)d*ddZd+ddZd,ddZd-d!d"Zd#d$ ZG d%d& d&e
Zd.d'd(ZdS )/    )annotationsN)Enum)stack)choice)Timer)UUIDc                   @  s<   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdS )TempObjectTypeTABLEVIEWSTAGEFUNCTIONFILE_FORMAT	QUERY_TAGCOLUMN	PROCEDURETABLE_FUNCTIONDYNAMIC_TABLEAGGREGATE_FUNCTIONCTEN)__name__
__module____qualname__r	   r
   r   r   r   r   r   r   r   r   r   r    r   r   S/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/_utils.pyr      s    r   SNOWPARK_TEMP_TEMPzSCOPED TEMPORARY'PYTHON_SNOWPARK_USE_SCOPED_TEMP_OBJECTS	requestIdi   @*snowflake_server_dop_cap_for_file_transfer
   lengthintreturnstrc                 C  s   d dd t| D S )N c                 s  s    | ]}t tV  qd S N)r   ALPHANUMERIC).0_r   r   r   	<genexpr>/   s    z/generate_random_alphanumeric.<locals>.<genexpr>)joinrange)r    r   r   r   generate_random_alphanumeric.   s   r,   object_typec                 C  s   t  | j dt   S )Nr(   )TEMP_OBJECT_NAME_PREFIXvaluer,   upper)r-   r   r   r   random_name_for_temp_object2   s   r1   use_scoped_temp_objectsboolc                 C  s   | rt S tS r%   )SCOPED_TEMPORARY_STRINGTEMPORARY_STRING)r2   r   r   r   get_temp_type_for_object6   s   r6   str_or_uuid
str | UUIDc                 C  sR   t | tr
| jdkS t | tsdS ztt| dd}W || kS  ty(   Y dS w )z;Check whether provided string str is a valid UUID version4.   F)version)
isinstancer   r:   r#   
ValueError)r7   uuid_strr   r   r   is_uuid4:   s   


r>   c                 C  s   t | dt tS )zZReturns the server side cap on max parallelism for file transfer for the given connection.r(   )getattr/_VARIABLE_NAME_SERVER_DOP_CAP_FOR_FILE_TRANSFER/_DEFAULT_VALUE_SERVER_DOP_CAP_FOR_FILE_TRANSFER)
connectionr   r   r   ,_snowflake_max_parallelism_for_file_transferI   s
   rC   c                      s*   e Zd Zd fdd	Z fddZ  ZS )_TrackedQueryCancellationTimerNc                   s   t  |||| d| _d S )NF)super__init__executed)selfintervalfunctionargskwargs	__class__r   r   rF   S   s   
z'_TrackedQueryCancellationTimer.__init__c                   s   t    d| _d S )NT)rE   runrG   )rH   rM   r   r   rO   W   s   

z"_TrackedQueryCancellationTimer.run)NN)r   r   r   rF   rO   __classcell__r   r   rM   r   rD   R   s    rD   c                  C  s(   z	t  d } | jW S  ty   Y dS w )z;Get the path of the application script using the connector.unknown)r   filename	Exception)outermost_framer   r   r   get_application_path\   s   
rV   )r   )r    r!   r"   r#   )r-   r   r"   r#   )r2   r3   r"   r#   )r7   r8   r"   r3   )r"   r#   )
__future__r   stringenumr   inspectr   randomr   	threadingr   uuidr   r   r.   digitsascii_lowercaser&   r5   r4   /_PYTHON_SNOWPARK_USE_SCOPED_TEMP_OBJECTS_STRINGREQUEST_ID_STATEMENT_PARAM_NAMErA   r@   r,   r1   r6   r>   rC   rD   rV   r   r   r   r   <module>   s2    


	
