File: //lib/python3/dist-packages/botocore/retries/__pycache__/bucket.cpython-310.pyc
o
.&�a� � @ sD d Z ddlZddlZddlmZ G dd� de�ZG dd� de�ZdS )zEThis module implements token buckets used for client side throttling.� N)�CapacityNotAvailableErrorc @ s$ e Zd Zdd� Zdd� Zdd� ZdS )�Clockc C s d S �N� ��selfr r �9/usr/lib/python3/dist-packages/botocore/retries/bucket.py�__init__ s zClock.__init__c C s t �|� d S r )�time�sleep�r �amountr r r r s zClock.sleepc C s t � � S r )r
r r r r �current_time s zClock.current_timeN)�__name__�
__module__�__qualname__r r r r r r r r s r c @ sp e Zd ZdZefdd�Zedd� �Zejdd� �Zedd� �Zed d
� �Z dd
d�Z
dd� Zdd� Zdd� Z
dS )�TokenBucketg �?c C sF d | _ d | _d| _|| _d | _|| _t�� | _t� | j�| _
|| _d S )Nr )�
_fill_rate�
_max_capacity�_current_capacity�_clock�_last_timestamp� _min_rate� threading�Lock�_lock� Condition�_new_fill_rate_condition�max_rate)r r �clock�min_rater r r r s
zTokenBucket.__init__c C � | j S r )r r r r r r "