File: //lib/python3/dist-packages/awscli/customizations/s3/__pycache__/utils.cpython-310.pyc
o
.&�aJr � @ s� d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlm Z m
Z
d dlmZ d dl
mZmZ d dlmZ d dlmZ d dlmZ e�e�Zd Zed
dde� d�Zd
Zddddddddd�Ze�d�Ze�d�Ze�d�Ze�d�Z dd� Z!dd� Z"G dd� de j#�Z$G dd� de%�Z&G dd � d ej'�Z(d!d"� Z)d#d$� Z*d%d&� Z+d'd(� Z,dYd)d*�Z-dZd,d-�Z.G d.d/� d/e/�Z0d0d1� Z1ej2j3fd2d3�Z4d4d5� Z5G d6d7� d7e%�Z6d8d9� Z7G d:d;� d;e/�Z8G d<d=� d=e d=g d>���Z9e9Z:G d?d@� d@e/�Z;G dAdB� dBe�Z<G dCdD� dDe�Z=G dEdF� dFe=�Z>G dGdH� dHe>�Z?G dIdJ� dJe?�Z@G dKdL� dLe>�ZAG dMdN� dNe�ZBG dOdP� dPeB�ZCG dQdR� dReB�ZDG dSdT� dTe=�ZEG dUdV� dVe�ZFG dWdX� dXe/�ZGdS )[� N)�datetime)�
namedtuple�deque)�parse)�tzlocal�tzutc)�BaseSubscriber)�bytes_print)�queue)�KiB�MiB�GiB�TiB�PiB�EiBi� � )�tzinfol � i i @l )�kb�mb�gb�tb�kib�mib�gib�tibzT^(?P<bucket>arn:(aws).*:s3:[a-z\-0-9]*:[0-9]{12}:accesspoint[:/][^/]+)/?(?P<key>.*)$z�^(?P<bucket>arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63})[/:]?(?P<key>.*)$z�^(?P<bucket>arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]bucket[/:][a-zA-Z0-9\-]{1,63})[/:]?(?P<key>.*)$zs^(?P<bucket>arn:(aws).*:s3-object-lambda:[a-z\-0-9]+:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-]{1,63})[/:]?(?P<key>.*)$c C sv d}t | �}|dkrdS ||k rd| S tt�D ] \}}||d }t|| | �|k r8d|| | |f S qdS )a� Convert a size in bytes into a human readable format.
For example::
>>> human_readable_size(1)
'1 Byte'
>>> human_readable_size(10)
'10 Bytes'
>>> human_readable_size(1024)
'1.0 KiB'
>>> human_readable_size(1024 * 1024)
'1.0 MiB'
:param value: The size in bytes.
:return: The size in a human readable format based on base-2 units.
r r z1 Bytez%d Bytes� z%.1f %sN)�float� enumerate�HUMANIZE_SUFFIXES�round)�value�base� bytes_int�i�suffix�unit� r'