o
    h                     @  s   U d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ejZejZejZdZdZ	 d	Ze
Zd
ZdZeedZded< eedZded< 		d&d'ddZd(ddZ		d&d'ddZd(d d!Zd)d$d%Z dS )*    )annotationsN)AnyOptional)	ASCENDING)MAX_MESSAGE_SIZE)InvalidOperation       
i  i <   )Zfiles_idnzdict[str, Any]_C_INDEX)filenameZ
uploadDate_F_INDEXF
field_namestr	docstring	read_onlyOptional[bool]closed_onlyreturnr   c                   |   d| drd dd fdd	}dfdd}|r%|d7 }n r-d|d}|s8 s8t|||dS t||dS )Create a GridIn property. DEPRECATED,GridIn property '2' is deprecated and will be removed in PyMongo 5.0selfr   r   c                   N   r
t jdtd  r| jstd dkr | jdS | jd S N   
stacklevelcategoryz can only get %r on a closed filelengthr   warningswarnDeprecationWarning_closedAttributeError_filegetr   r   r   warn_str J/var/www/html/venv/lib/python3.10/site-packages/gridfs/grid_file_shared.pygetter/      
z#_a_grid_in_property.<locals>.gettervaluec                   s0   r
t jdtd | jrtd|| j < d S )Nr   r    zAsyncGridIn does not support __setattr__ after being closed(). Set the attribute before closing the file or use AsyncGridIn.set() instead)r%   r&   r'   r(   r   r*   r   r3   r   r.   r/   r0   setter9   s   z#_a_grid_in_property.<locals>.setter

This attribute is read-only.{}

{}UThis attribute is read-only and can only be read after :meth:`close` has been called.docNr   r   r   r   r   r   r3   r   r   r   
startswithformatpropertyr   r   r   r   r1   r6   r/   r-   r0   _a_grid_in_property!   s    


	
rC   c                   s"   d	 fdd}|d7 }t ||dS )
Create a GridOut property.r   r   r   c                   s6   | j s	td   dkr| j  dS | j  d S )Nz=You must call GridOut.open() before accessing the %s propertyr#   r   )r*   r   r+   r,   r   r/   r0   a_getterT   s   z&_a_grid_out_property.<locals>.a_getterr7   r:   Nr<   )rA   )r   r   rF   r/   rE   r0   _a_grid_out_propertyQ   s   
rG   c                   r   )r   r   r   r   r   r   r   r   c                   r   r   r$   r,   r-   r/   r0   r1   o   r2   z!_grid_in_property.<locals>.getterr3   c                   sJ   r
t jdtd | jr| jjd| jd id |ii || j < d S )Nr   r    Z_idz$set)r%   r&   r'   r(   Z_collfilesZ
update_oner*   r4   r5   r/   r0   r6   y   s
   "z!_grid_in_property.<locals>.setterr7   r8   r9   r:   Nr<   r=   r>   rB   r/   r-   r0   _grid_in_propertyb   s    



rI   c                   s>   d| drd  dd fdd	}|d
7 }t||dS )rD   r   r   zGridOut property 'r   r   r   r   c                   s@   r
t jdtd |    dkr| j dS | j d S )Nr   r    r#   r   )r%   r&   r'   openr*   r+   r,   r5   r/   r0   r1      s   z"_grid_out_property.<locals>.getterr7   r:   Nr<   )r?   rA   )r   r   r1   r/   r5   r0   _grid_out_property   s   


rK   entitykwargsc                 K  s"   | j jdd}| jdd|i|S )z;Clear the given database/collection object's type registry.N)Ztype_registrycodec_optionsr/   )rN   Zwith_options)rL   rM   Z	codecoptsr/   r/   r0   _clear_entity_type_registry   s   rO   )FF)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )rL   r   rM   r   r   r   )!
__future__r   osr%   typingr   r   Zpymongor   Zpymongo.commonr   Zpymongo.errorsr   SEEK_SETZ	_SEEK_SETSEEK_CURZ	_SEEK_CURSEEK_ENDZ	_SEEK_ENDZEMPTYZNEWLNZDEFAULT_CHUNK_SIZEZ_UPLOAD_BUFFER_SIZEZ_UPLOAD_BUFFER_CHUNKSZ_CHUNK_OVERHEADr   __annotations__r   rC   rG   rI   rK   rO   r/   r/   r/   r0   <module>   s8    
0
-