�
!A?h� � � � d Z g d�ZddlZddlZddlmZ ddlmZ e� � Zej Z
ej Zd� ZdZ
dd�Zdd �Zdd
�ZdS )z�Generate cryptographically strong pseudo-random numbers suitable for
managing secrets such as account authentication, tokens, and similar.
See PEP 506 for more information.
https://peps.python.org/pep-0506/
)�choice� randbelow�randbits�SystemRandom�token_bytes� token_hex�
token_urlsafe�compare_digest� N)r )r c �` � | dk rt d� � �t � | � � S )z(Return a random int in the range [0, n).r
zUpper bound must be positive.)�
ValueError�_sysrand�
_randbelow)�exclusive_upper_bounds �4/opt/alt/python-internal/lib64/python3.11/secrets.pyr r s1 � ���!�!��8�9�9�9����4�5�5�5� � c �H � | �t } t � | � � S )z�Return a random byte string containing *nbytes* bytes.
If *nbytes* is ``None`` or not supplied, a reasonable
default is used.
>>> token_bytes(16) #doctest:+SKIP
b'\xebr\x17D*t\xae\xd4\xe3S\xb6\xe2\xebP1\x8b'
)�DEFAULT_ENTROPYr
� randbytes��nbytess r r r " s" � � �~� �����f�%�%�%r c �j � t j t | � � � � � d� � S )a" Return a random text string, in hexadecimal.
The string has *nbytes* random bytes, each byte converted to two
hex digits. If *nbytes* is ``None`` or not supplied, a reasonable
default is used.
>>> token_hex(16) #doctest:+SKIP
'f9bf78b9a18ce6d46a0cd2b0b86df9da'
�ascii)�binascii�hexlifyr �decoder s r r r 0 s+ � � ��K��/�/�0�0�7�7��@�@�@r c � � t | � � }t j |� � � d� � � d� � S )z�Return a random URL-safe text string, in Base64 encoding.
The string has *nbytes* random bytes. If *nbytes* is ``None``
or not supplied, a reasonable default is used.
>>> token_urlsafe(16) #doctest:+SKIP
'Drmhze6EPcv0fN_81Bj-nA'
� =r )r �base64�urlsafe_b64encode�rstripr )r �toks r r r = s> � � �f�
�
�C��#�C�(�(�/�/��5�5�<�<�W�E�E�Er )N)�__doc__�__all__r r �hmacr �randomr r
�getrandbitsr r r r r r r � r r �