HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //proc/self/root/lib/python3.6/site-packages/qrcode/__pycache__/main.cpython-36.pyc
3

eb�V�4�@s`ddlmZmZmZddlmZddlZddlmZd
dd�Z	dd�Z
d	d
�ZGdd�d�ZdS)�)�	constants�
exceptions�util)�	BaseImageN)�bisect_leftcKstf|�}|j|�|j�S)N)�QRCode�add_data�
make_image)�data�kwargsZqr�r�/usr/lib/python3.6/main.py�makes

rcCs |dks|dkrtd|��dS)N��(z*Invalid version (was %s, expected 1 to 40))�
ValueError)�versionrrr
�_check_versionsrcCst|�dkrtd|��dS)Nrz1Invalid box size (was %s, expected larger than 0))�intr)�sizerrr
�_check_box_sizesrc@s�eZdZdejdddfdd�Zdd�Zd)d	d
�Zd*dd
�Zdd�Z	dd�Z
d+dd�Zdd�Zd,dd�Z
d-dd�Zd.dd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdS)/rN�
�cCs\t|�|ot|�|_t|�|_t|�|_t|�|_||_|dk	rPt|t�sPt	�|j
�dS)N)rrr�error_correction�box_size�border�
image_factory�
issubclassr�AssertionError�clear)�selfrrrrrrrr
�__init__s


zQRCode.__init__cCsd|_d|_d|_g|_dS)z*
        Reset the internal data.
        Nr)�modules�
modules_count�
data_cache�	data_list)r rrr
r,szQRCode.clear�cCsNt|tj�r|jj|�n*|r2|jjtj|��n|jjtj|��d|_dS)a
        Add data to this QR Code.

        :param optimize: Data will be split into multiple chunks to optimize
            the QR size by finding to more compressed modes of at least this
            length. Set to ``0`` to avoid optimizing at all.
        N)�
isinstancerZQRDatar%�append�extendZoptimal_data_chunksr$)r r
�optimizerrr
r5szQRCode.add_dataTcCs0|s|jdkr|j|jd�|jd|j��dS)z�
        Compile the data into a QR Code array.

        :param fit: If ``True`` (or if a size has not been provided), find the
            best fit for the data to avoid data overflow errors.
        N)�startF)r�best_fit�makeImpl�best_mask_pattern)r Zfitrrr
rFszQRCode.makecCst|j�|jdd|_dg|j|_xFt|j�D]8}dg|j|j|<x t|j�D]}d|j||<qVWq4W|jdd�|j|jdd�|jd|jd�|j�|j�|j||�|jdkr�|j	|�|j
dkr�tj|j|j
|j�|_
|j|j
|�dS)Nr�r�)rrr#r"�range�setup_position_probe_pattern�setup_position_adjust_pattern�setup_timing_pattern�setup_type_info�setup_type_numberr$rZcreate_datarr%�map_data)r �test�mask_pattern�row�colrrr
r-Qs&



zQRCode.makeImplcCs�x�td	d�D]�}||d
ks|j||kr,qx�tdd�D]�}||dks8|j||krXq8d|krx|dkrx|dks�|dks�d|kr�|dkr�|dks�|dks�d|kr�|dkr�d|kr�|dkr�d|j||||<q8d|j||||<q8WqWdS)
Nr�r��rTF���r?r?r?)r1r#r")r r:r;�r�crrr
r2ls   z#QRCode.setup_position_probe_patterncCs�|dkrd}t|�tj|�}tj�}x<|jD]2}|j|jd�|jt|�||j�|j|�q.Wt|�}t	tj
|j||�|_|jdkr�t
j��|tj|j�k	r�|j|jd�|jS)zD
        Find the minimum size required to fit in the data.
        Nrr�))r+)rrZmode_sizes_for_versionZ	BitBufferr%Zput�mode�len�writerZBIT_LIMIT_TABLErrrZDataOverflowErrorr,)r r+Z
mode_sizes�bufferr
Zneeded_bitsrrr
r,~s"


zQRCode.best_fitcCsNd}d}x@td�D]4}|jd|�tj|j�}|dks>||kr|}|}qW|S)z7
        Find the most efficient mask pattern.
        rr<T)r1r-r�
lost_pointr")r Zmin_lost_point�pattern�irGrrr
r.�szQRCode.best_mask_patterncCs�|dkrddl}|j}|j�s&td��|jdkr8|j�|j}|jdd|ddd�xZt|�D]N}|jd	�x4t|�D](}|j	||r�|jd
�q~|jd	�q~W|jd�qfW|jdd|ddd�|j
�dS)zz
        Output the QR Code only using TTY colors.

        If the data has not been compiled yet, make it first.
        Nrz	Not a ttyz� r>rz
z  z  z  
)�sys�stdout�isatty�OSErrorr$rr#rEr1r"�flush)r �outrK�modcountr@rArrr
�	print_tty�s$

zQRCode.print_ttyFcs^|dkr>ddl}|jdkr8ddl}|j|jj�|j�}n|j}|rT|j�rTtd���jdkrf�j	��j
�dd�dD�}|r�d��r�|j����fd
d�}x�t�j
��j
d�D]�}|r�s�|��j
dkr�|jd�|jd�xHt�j
��j
�D]0}	|||	�||d|	�d>}
|j||
��qW|�rD|jd�|jd�q�W|j�dS)z�
        Output the QR Code using ASCII characters.

        :param tty: use fixed TTY color codes (forces invert=True)
        :param invert: invert the ASCII characters (solid <-> transparent)
        Nrr>r0z	Not a ttycSsg|]}tj|�jd��qS)�cp437)�sixZint2byte�decode)�.0�coderrr
�
<listcomp>�sz&QRCode.print_ascii.<locals>.<listcomp>�������TcsP�r"�jr"t||���jkr"dSt||�dks>t||��krBdS�j||S)Nrr)r�max�minr")�x�y)�invertrQr rr
�
get_module�s
z&QRCode.print_ascii.<locals>.get_modulerzzz�
)r>r0)rYrZr[r\)rK�version_info�codecs�	getwriterrL�encodingrMrNr$rr#�reverser1rrErO)r rPZttyrarKreZcodesrbr@rA�posr)rarQr r
�print_ascii�s<




zQRCode.print_asciicKs�t|j�|jdkr|j�|dk	r4t|t�sRt�n|j}|dkrRddlm	}|}||j
|j|jf|�}x@t|j�D]2}x,t|j�D]}|j
||r�|j||�q�WqtW|S)zu
        Make an image from the QR Code data.

        If the data has not been compiled yet, make it first.
        Nr)�PilImage)rrr$rrrrrZqrcode.image.pilrkrr#r1r"Zdrawrect)r rrrkZimr@rArrr
r	�s 

zQRCode.make_imagecCs�xBtd|jd�D].}|j|ddk	r*q|ddk|j|d<qWxBtd|jd�D].}|jd|dk	rnqV|ddk|jd|<qVWdS)Nr<r=r>r)r1r#r")r r@rArrr
r4szQRCode.setup_timing_patterncCs�tj|j�}x�tt|��D]�}x�tt|��D]�}||}||}|j||dk	rTq,x�tdd�D]v}xptdd�D]b}|dks�|dks�|d	ks�|dks�|dkr�|dkr�d|j||||<qpd|j||||<qpWq`Wq,WqWdS)
Nr>�rTF���rmrmrm)rZpattern_positionrr1rDr")r rirI�jr:r;r@rArrr
r3%s z$QRCode.setup_position_adjust_patterncCs�tj|j�}xJtd�D]>}|o.||?d@dk}||j|d|d|jdd<qWxJtd�D]>}|oz||?d@dk}||j|d|jdd|d<qbWdS)N�rrlr<)rZBCH_type_numberrr1r"r#)r r8�bitsrI�modrrr
r6<s(zQRCode.setup_type_numbercCs*|jd>|B}tj|�}xrtd�D]f}|o:||?d@dk}|dkrT||j|d<q"|dkrp||j|dd<q"||j|jd|d<q"Wx�td�D]v}|o�||?d@dk}|dkr�||jd|j|d<q�|dkr�||jdd|dd<q�||jdd|d<q�W||j|jdd<dS)Nrl�rr=r<�	)rrZ
BCH_type_infor1r"r#)r r8r9r
rprIrqrrr
r5Gs"
zQRCode.setup_type_infoc
Csd}|jd}d}d}tj|�}t|�}x�tjj|jddd�D]�}	|	dkrT|	d8}	|	|	df}
x�xx|
D]p}|j||dkrhd}||kr�|||?d@dk}|||�r�|}||j||<|d8}|d	krh|d7}d}qhW||7}|dks�|j|krb||8}|}PqbWq@WdS)
Nrr0rr>r=Fr?rmr?)r#r�	mask_funcrDrTZmovesZxranger")
r r
r9Zincr:ZbitIndexZ	byteIndexrtZdata_lenr;Z	col_rangerAZdarkrrr
r7fs8



zQRCode.map_datacCs�|jdkr|j�|js|jSt|j�|jd}dg|g|j}dg|j}x |jD]}|j|||�qXW|dg|g|j7}|S)z�
        Return the QR Code as a multidimensonal array, including the border.

        To return the array without a border, set ``self.border`` to 0 first.
        Nr>F)r$rrr"rDr()r �widthrWZx_border�modulerrr
�
get_matrix�s
zQRCode.get_matrix)r&)T)N)N)NFF)N)�__name__�
__module__�__qualname__rZERROR_CORRECT_Mr!rrrr-r2r,r.rRrjr	r4r3r6r5r7rwrrrr
rs(
	




5
-r)N)
ZqrcoderrrZqrcode.image.baserrTZbisectrrrrrrrrr
�<module>s