o
    f                  	   @   s   U d Z dgZddlZddlmZmZ ddlZejejej	ej
ejejejejejf	Zeeegef df ed< dded	ed
efddZdS )z&An implementation of RFC4013 SASLprep.saslprep    N)CallableTuple._PROHIBITEDTdataprohibit_unassigned_code_pointsreturnc                    s   |r	t tjf }nt }tjtjdfdd| D } tjd| } tj	}|| d r?|| d s8t
d|tjf }n||f }| D ] t fdd	|D rWt
d
qF| S )a  An implementation of RFC4013 SASLprep.
    :param data:
        The string to SASLprep.
    :param prohibit_unassigned_code_points:
        RFC 3454 and RFCs for various SASL mechanisms distinguish between
        `queries` (unassigned code points allowed) and
        `stored strings` (unassigned code points prohibited). Defaults
        to ``True`` (unassigned code points are prohibited).
    :return: The SASLprep'ed version of `data`.
     c                    s$   g | ]} |s|rd n|qS )  ).0elt)in_table_b1in_table_c12r   K/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pdfminer/_saslprep.py
<listcomp>C   s   $ zsaslprep.<locals>.<listcomp>NFKCr   z$SASLprep: failed bidirectional checkc                 3   s    | ]}| V  qd S )Nr   )r   in_table)charr   r   	<genexpr>\   s    zsaslprep.<locals>.<genexpr>z+SASLprep: failed prohibited character check)r   
stringprepin_table_a1r   r   joinunicodedata	ucd_3_2_0	normalizein_table_d1
ValueErrorin_table_d2any)r   r   
prohibitedr   r   )r   r   r   r   r   ,   s(   
)T)__doc____all__r   typingr   r   r   r   in_table_c21_c22in_table_c3in_table_c4in_table_c5in_table_c6in_table_c7in_table_c8in_table_c9r   strbool__annotations__r   r   r   r   r   <module>   s    