o
    lQi/                     @  sL   d Z ddlmZ ddlZddlmZ ddlmZ e	e
ZG dd dZdS )zH
R2 helpers for transcript-variant shard input and packed output files.
    )annotationsN)Path)Configc                   @  s2   e Zd Zdd Zdd
dZdddZdddZdS )VariantR2Clientc              	   C  sP   || _ |j| _|j| _| js&dd l}|jd|j|j|jdt	ddd| _
d S d S )Nr   s3auto    )max_pool_connections)endpoint_urlaws_access_key_idaws_secret_access_keyregion_nameconfig)r   	mock_mode	r2_bucketdefault_bucketboto3clientr2_endpoint_urlr2_access_key_idr2_secret_access_key
BotoConfigr   )selfr   r    r   src/variant_r2.py__init__   s   zVariantR2Client.__init__
local_pathr   bucketstrkeyreturnintc                 C  sZ   | j rtd||| | r| jS dS td||| | jt||| | jS )Nz[MOCK] upload %s -> s3://%s/%sr   zUploading %s -> s3://%s/%s)	r   loggerinfoexistsstatst_sizer   upload_filer   )r   r   r   r   r   r   r   r'       s   
zVariantR2Client.upload_filec                 C  sF   | j rtd|jjddd td||| | j||t| d S )Nz&Mock mode does not support R2 downloadT)parentsexist_okzDownloading s3://%s/%s -> %s)	r   RuntimeErrorparentmkdirr"   r#   r   download_filer   )r   r   r   r   r   r   r   r-   (   s
   zVariantR2Client.download_filec                 C  s*   | j rdS | jj||d}t|ddS )Nr   )BucketKeyContentLength)r   r   head_objectr!   get)r   r   r   metar   r   r   	head_size/   s   zVariantR2Client.head_sizeN)r   r   r   r   r   r   r    r!   )r   r   r   r   r   r   )r   r   r   r   r    r!   )__name__
__module____qualname__r   r'   r-   r4   r   r   r   r   r      s
    

r   )__doc__
__future__r   loggingpathlibr   botocore.configr   r   	getLoggerr5   r"   r   r   r   r   r   <module>   s    
