HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/qrcode/__pycache__/main.cpython-310.pyc
o

$weN@�@sUddlZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZmZmZddlmZddlmZeeeeZiZeeefed<dd	d
�Zdd�Zd
d�Zdd�Zdd�Z Gdd�de�Z!e
ded�Z"e
ded�Z#Gdd�dee"�Z$dS)�N)�bisect_left)	�Dict�Generic�List�
NamedTuple�Optional�Type�TypeVar�cast�overload)�Literal)�	constants�
exceptions�util)�	BaseImage)�
PyPNGImage�precomputed_qr_blankscKs tdi|��}|�|�|��S)N�)�QRCode�add_data�
make_image)�data�kwargs�qrrr�D/home/arjun/projects/env/lib/python3.10/site-packages/qrcode/main.py�makes
rcCs t|�dkrtd|�d���dS)NrzInvalid box size (was z, expected larger than 0)��int�
ValueError��sizerrr�_check_box_size s�r!cCst|�dkrtd|��dS)Nrz=Invalid border value (was %s, expected 0 or larger than that)rrrrr�
_check_border%s
��r"cCsN|durdSt|t�stdt|��d���|dks|dkr%td|�d���dS)NzInvalid mask pattern (was z, expected int)r�z(Mask pattern should be in range(8) (got �))�
isinstancer�	TypeError�typer)�mask_patternrrr�_check_mask_pattern,s
��r)cCsdd�|D�S)NcSsg|]}|dd��qS�Nr)�.0�rowrrr�
<listcomp>8sz!copy_2d_array.<locals>.<listcomp>r)�xrrr�
copy_2d_array7sr/c@sdeZdZUeed<eed<eed<eed<eed<eed<eed<eed<eed	<d
efdd�Zd
S)�ActiveWithNeighbors�NW�N�NE�W�me�E�SW�S�SE�returncC�|jSr*)r5��selfrrr�__bool__FszActiveWithNeighbors.__bool__N)�__name__�
__module__�__qualname__�bool�__annotations__r>rrrrr0;s
r0�GenericImage)�bound�GenericImageLocalc@szeZdZUeed<dZeeed<dej	ddddfdee
efdd�Ze
d	efd
d��Zejd;dd��Ze
d
d��Zejdd��Zdd�Zd<dd�Zd=dd�Zdd�Zdd�Zd>dd�Zdd�Zd>d d!�Zd?d#d$�Zed>dedd	efd%d&��Ze	d>de
ed	efd'd&��Zd>d(d&�Zd)ed*ed	efd+d,�Zd-d.�Z d/d0�Z!d1d2�Z"d3d4�Z#d5d6�Z$d7d8�Z%d)ed*ed	e&fd9d:�Z'dS)@r�modulesN�_version�
��
image_factorycCsbt|�t|�||_t|�|_t|�|_t|�|_||_||_|dur+t	|t
�s+J�|��dSr*)r!r"�versionr�error_correction�box_size�borderr(rK�
issubclassr�clear)r=rLrMrNrOrKr(rrr�__init__Rs	


zQRCode.__init__r:cCs|jdur	|��tt|j�Sr*)rH�best_fitr
rr<rrrrLis
zQRCode.versioncCs$|dur
t|�}t�|�||_dSr*)rr�
check_versionrH)r=�valuerrrrLos

cCr;r*)�
_mask_patternr<rrrr(vszQRCode.mask_patterncCst|�||_dSr*)r)rV)r=�patternrrrr(zs
cCsgg|_d|_d|_g|_dS)z*
        Reset the internal data.
        rN)rG�
modules_count�
data_cache�	data_listr<rrrrQs
zQRCode.clear�cCsRt|tj�r
|j�|�n|r|j�tj||d��n	|j�t�|��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.
        )�minimumN)r%r�QRDatarZ�append�extend�optimal_data_chunksrY)r=r�optimizerrrr�s
zQRCode.add_dataTcCsL|s|jdur|j|jd�|jdur|�d|���dS|�d|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)rLrSr(�makeImpl�best_mask_pattern)r=�fitrrrr�s

zQRCode.makecs��jdd�_�jtvrtt�j��_n5�fdd�t�j�D��_��dd����jdd���d�jd�������t�j�t�j<��	||��jdkr[��
|��jdurkt�
�j�j�j��_���j|�dS)NrJ�csg|]}dg�j�qSr*)rX)r+�ir<rrr-�s�z#QRCode.makeImpl.<locals>.<listcomp>rr#)rLrXrr/rG�range�setup_position_probe_pattern�setup_position_adjust_pattern�setup_timing_pattern�setup_type_info�setup_type_numberrYr�create_datarMrZ�map_data)r=�testr(rr<rrd�s(

�


�zQRCode.makeImplcCs�tdd�D]u}||dks|j||krqtdd�D]_}||dks)|j||kr*qd|kr4dkr:nn|dvsbd|krDdkrJnn|dvsbd|krTdkrnnnd|kr`dkrnnnd|j||||<qd	|j||||<qqdS)
N����r�>rrt�rJTF�rirXrG)r=r,�col�r�crrrrj�s  0��z#QRCode.setup_position_probe_patterncCs�|durd}t�|�t�|�}t��}|jD]}|�|jd�|�t|�||j�|�|�qt|�}t	tj
|j||�|_|jdkrIt
���|t�|j�urX|j|jd�|jS)zD
        Find the minimum size required to fit in the data.
        N�rJ�)rb)rrT�mode_sizes_for_version�	BitBufferrZ�put�mode�len�writer�BIT_LIMIT_TABLErMrLr�DataOverflowErrorrS)r=rc�
mode_sizes�bufferr�needed_bitsrrrrS�s$


�
zQRCode.best_fitcCsJd}d}td�D]}|�d|�t�|j�}|dks||kr"|}|}q|S)z7
        Find the most efficient mask pattern.
        rrsT)rirdr�
lost_pointrG)r=�min_lost_pointrWrhr�rrrre�s�zQRCode.best_mask_patterncCs�|durddl}|j}|��std��|jdur|��|j}|�dd|ddd�t|�D]%}|�d	�t|�D]}|j	||rL|�d
�q=|�d	�q=|�d�q2|�dd|ddd�|�
�dS)zz
        Output the QR Code only using TTY colors.

        If the data has not been compiled yet, make it first.
        Nr�	Not a ttyz� rurJz
z  z  z  
)�sys�stdout�isatty�OSErrorrYrrXr�rirG�flush)r=�outr��modcountrxryrrr�	print_ttys$

zQRCode.print_ttyFc	s$|durtj}|r|��std���jdur����j�dd�dD�}|r(d��r.|��dtf���fdd	�}t	�j
��j
d
�D]G}|r]�rS|��j
dkrX|�d�|�d
�t	�j
��j
�D]}|||�||d|�d>}|�||�qg|r�|�d�|�d�qD|��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)
        Nr�cSsg|]
}t|f��d��qS)�cp437)�bytes�decode)r+�coderrrr-5sz&QRCode.print_ascii.<locals>.<listcomp>)�������Tr:csV�r�jrt||���jkrdSt||�dkst||��kr!dStt�j||�S)Nrzr)rO�max�minr
rrG)r.�y��invertr�r=rr�
get_module;s
z&QRCode.print_ascii.<locals>.get_modulerurzzzz�
)
r�r�r�r�rYrrX�reverserrirOr�r�)	r=r��ttyr��codesr�rxry�posrr�r�print_ascii$s2



zQRCode.print_asciicK�dSr*r�r=rKrrrrrOszQRCode.make_imagecKr�r*rr�rrrrSscKs�t|j�|jdur|��|durt|t�sJ�n|j}|dur/ddlm}m	}|r-|nt
}||j|j|jfd|j
i|��}|jrkt|j�D]#}t|j�D]}|jr\|j|||d�qN|j
||ri|�||�qNqG|jrr|��|S)zu
        Make an image from the QR Code data.

        If the data has not been compiled yet, make it first.
        Nr)�Image�PilImage�qrcode_modules)r)r!rNrYrrPrrK�qrcode.image.pilr�r�rrOrXrG�needs_drawrectri�
needs_context�drawrect_context�drawrect�needs_processing�process)r=rKrr�r��imrxryrrrrYs<

�����r,rwcCs0|dko|t|j�ko|dko|t|j|�kS)Nr)r�rG)r=r,rwrrr�is_constrained�s���zQRCode.is_constrainedcCs�td|jd�D]}|j|ddurq|ddk|j|d<qtd|jd�D]}|jd|dur4q(|ddk|jd|<q(dS)Nrsrtrurrv)r=rxryrrrrl�s�zQRCode.setup_timing_patterncCs�t�|j�}tt|��D]\}||}tt|��D]O}||}|j||dur(qtdd�D]9}tdd�D]1}|dksN|dksN|dksN|dksN|dkrZ|dkrZd|j||||<q4d|j||||<q4q-qqdS)N����rurTF)r�pattern_positionrLrir�rG)r=r�rhr,�jrwrxryrrrrk�s(����z$QRCode.setup_position_adjust_patterncCs�t�|j�}td�D]}|o||?d@dk}||j|d|d|jdd<q
td�D]}|o:||?d@dk}||j|d|jdd|d<q.dS)N�rzr�rs)r�BCH_type_numberrLrirGrX)r=rq�bitsrh�modrrrrn�s&&�zQRCode.setup_type_numbercCs"|jd>|B}t�|�}td�D]3}|o||?d@dk}|dkr)||j|d<q|dkr7||j|dd<q||j|jd|d<qtd�D];}|oT||?d@dk}|dkrf||jd|j|d<qH|dkrx||jdd|dd<qH||jdd|d<qH||j|jdd<dS)Nr��rzrtrs�	)rMr�
BCH_type_inforirGrX)r=rqr(rr�rhr�rrrrm�s"
zQRCode.setup_type_infoc
Csd}|jd}d}d}t�|�}t|�}t|jddd�D]b}	|	dkr'|	d8}	|	|	df}
	|
D]8}|j||durhd}||krK|||?d@dk}|||�rS|}||j||<|d8}|dkrh|d7}d}q0||7}|dksv|j|kr~||8}|}nq.qdS)	Nrrrzr#rr�rtTF)rXr�	mask_funcr�rirG)
r=rr(�incr,�bitIndex�	byteIndexr��data_lenrw�	col_rangery�darkrrrrp�s@


���zQRCode.map_datacCs�|jdur	|��|js|jSt|j�|jd}dg|g|j}dg|j}|jD]}|�|ttt|�|�q+|dg|g|j7}|S)z�
        Return the QR Code as a multidimensional array, including the border.

        To return the array without a border, set ``self.border`` to 0 first.
        NruF)	rYrrOrGr�r^r
rrB)r=�widthr��x_border�modulerrr�
get_matrix	s

zQRCode.get_matrixcCs`g}t|d|d�D] }t|d|d�D]}|�|�||�o(t|j||��qqt|�S)Nrzru)rir^r�rBrGr0)r=r,rw�contextrxryrrr�active_with_neighborss&�zQRCode.active_with_neighbors)r:N)r[)Tr*)NFF)(r?r@rA�ModulesTyperCrHrrr
�ERROR_CORRECT_MrrDrR�propertyrL�setterr(rQrrrdrjrSrer�r�rrrrFrBr�rlrkrnrmrpr�r0r�rrrrrNs^
�

�


	



+���
)-rr*)%r��bisectr�typingrrrrrrr	r
r�typing_extensionsr�qrcoder
rr�qrcode.image.baser�qrcode.image.purerrBr�rrrCrr!r"r)r/r0rDrFrrrrr�<module>s$
,