관리-도구
편집 파일: handlers.cpython-39.opt-1.pyc
a f�WcF� � @ s d Z ddlmZ ddlZddlZe�e�ZddlZddl Z ddl mZ ddlm Z ddlmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZm Z m!Z! dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) dd l*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m0Z0m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 g d�Z9e$Z:e#Z;e%Z<e'Z=e(Z>d d� Z?dRdd�Z@dd� ZAdd� ZBe-d�ZCe-d�ZDdd� ZEdd� ZFeCdfdd�ZGeCdddfdd �ZHdSd"d#�ZIe-d�fd$d%�ZJe-d�dfd&d'�ZKdTd+d,�ZLdUd-d.�ZMdVd0d1�ZNG d2d3� d3e�ZOG d4d5� d5eO�ZPG d6d7� d7eO�ZQG d8d9� d9eQ�ZRG d:d;� d;eQ�ZSG d<d=� d=eQ�ZTG d>d?� d?eQ�ZUG d@dA� dAeQ�ZVG dBdC� dCeQ�ZWG dDdE� dEeW�ZXG dFdG� dGeQ�ZYG dHdI� dIeQ�ZZe �[� Z\G dJdK� dKe�Z]G dLdM� dMe]�Z^G dNdO� dOe]eQ�Z_G dPdQ� dQe`�ZadS )WzRpasslib.handler - code for implementing handlers, and global registry for handlers� )�with_statementN)�warn)�MissingBackendError�PasslibConfigWarning�PasslibHashWarning)�PasswordHash)�get_crypt_handler)�consteq� getrandstr�getrandbytes�rng� to_native_str�is_crypt_handler� to_unicode�MAX_PASSWORD_SIZE�accepts_keyword�as_bool�update_mixin_classes)�BASE64_CHARS�HASH64_CHARS�PADDED_BASE64_CHARS� HEX_CHARS�UPPER_HEX_CHARS�LOWER_HEX_CHARS�ALL_BYTE_VALUES)�join_byte_values�irange�u�native_string_types� uascii_to_str�join_unicode�unicode� str_to_uasciir �unicode_or_bytes_types�PY2� int_types)� classproperty�deprecated_method)� parse_mc2� parse_mc3� render_mc2� render_mc3�GenericHandler� StaticHandler�HasUserContext�HasRawChecksum� HasManyIdents�HasSalt� HasRawSalt� HasRounds�HasManyBackends� PrefixWrapperc C s0 |r(| r(ddl }t| |�t|�d� �S dS dS )zhelper for bitsize() methodsr N� )�math�int�log�len)�count�charsr7 � r= �:/usr/lib/python3.9/site-packages/passlib/utils/handlers.py�_bitsizeJ s r? � c C sd t �� }| }zL|rT|j�dd�}|�d�s6|�d�sDtd|�W ~S |d7 }|j}q| W ~S ~0 dS )zi try to guess stacklevel for application warning. looks for first frame not part of passlib. �__name__� zpasslib.tests.zpasslib.r@ N)�inspectZcurrentframe� f_globals�get� startswith�max�f_back)�start�framer; �namer= r= r>