o
    8f                   $   @   s  U d Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZmZmZ ddlmZ G dd	 d	eZG d
d deZdejiZeed< ejejhejejhejejejhejejejejejejhejejejejejej ejhej!ejej"ejejejej ejej#ej$ej%ej&hej'ejej"ejejejej ejej#ej(ej$ej%ej&ej)hej*ejej"ejejejej ejej#ej(ej$ej%ej&ej)ej+hej,ejej"ejejejej ejej#ej(ej$ej%ej&ej)ej+ej-ej.hej/ejej"ejejejej ejej#ej(ej$ej%ej&ej)ej+ej-ej.ej0hi
Z1eeee f ed< dee dede2fddZ3G dd deZ4e4j5e4j6e4j7e4j8hZ9ee4 ed< G dd de:Z;dZ<eed< eG dd dZ=dS )zData structures configuring Black behavior.

Mostly around Python language feature support per version and Black configuration
chosen by the user.
    )	dataclassfield)Enumauto)sha256)
attrgetter)DictFinalSet)DEFAULT_LINE_LENGTHc                   @   s4   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )TargetVersion                  	   
         N)__name__
__module____qualname__PY33PY34PY35PY36PY37PY38PY39PY310PY311PY312 r$   r$   C/home/ertert/spirit/venv/lib/python3.10/site-packages/black/mode.pyr      s    r   c                   @   sX   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdS )Feature   r   r   r   r   r   r   r   r   r   r                     2   3   N)r   r   r   	F_STRINGSNUMERIC_UNDERSCORESTRAILING_COMMA_IN_CALLTRAILING_COMMA_IN_DEFASYNC_IDENTIFIERSASYNC_KEYWORDSASSIGNMENT_EXPRESSIONSPOS_ONLY_ARGUMENTSRELAXED_DECORATORSPATTERN_MATCHINGUNPACKING_ON_FLOWANN_ASSIGN_EXTENDED_RHSEXCEPT_STARVARIADIC_GENERICSDEBUG_F_STRINGSPARENTHESIZED_CONTEXT_MANAGERSTYPE_PARAMSFORCE_OPTIONAL_PARENTHESESFUTURE_ANNOTATIONSr$   r$   r$   r%   r&      s(    r&   annotationsFUTURE_FLAG_TO_FEATUREVERSION_TO_FEATUREStarget_versionsfeaturereturnc                    s   t  fdd| D S )Nc                 3   s    | ]	} t | v V  qd S N)rE   .0versionrG   r$   r%   	<genexpr>   s    z#supports_feature.<locals>.<genexpr>)all)rF   rG   r$   rM   r%   supports_feature   s   rP   c                   @   sR   e Zd ZdZe Ze Ze Ze Ze Z	e Z
e Ze Ze Ze Ze ZdS )Previewz"Individual preview style features.N)r   r   r   __doc__r   hex_codes_in_unicode_sequencesstring_processing*hug_parens_with_braces_and_square_bracketsunify_docstring_detection no_normalize_fmt_skip_whitespacewrap_long_dict_values_in_parensmultiline_string_handlingtyped_params_trailing_comma*is_simple_lookup_for_doublestar_expressiondocstring_check_for_newlineremove_redundant_guard_parensr$   r$   r$   r%   rQ      s    
rQ   UNSTABLE_FEATURESc                   @   s   e Zd ZdZdS )
DeprecatedzVisible deprecation warning.N)r   r   r   rR   r$   r$   r$   r%   r_      s    r_       _MAX_CACHE_KEY_PART_LENGTHc                   @   s   e Zd ZU eedZee ed< e	Z
eed< dZeed< dZeed< dZeed< dZeed	< dZeed
< eedZee ed< dZeed< dZeed< eedZee ed< dedefddZdefddZdS )Mode)default_factoryrF   line_lengthTstring_normalizationFis_pyiis_ipynbskip_source_first_linemagic_trailing_commapython_cell_magicspreviewunstableenabled_featuresrG   rH   c                 C   s&   | j rdS || jv rdS | jo|tvS )a)  
        Provide `Preview.FEATURE in Mode` syntax that mirrors the ``preview`` flag.

        In unstable mode, all features are enabled. In preview mode, all features
        except those in UNSTABLE_FEATURES are enabled. Any features in
        `self.enabled_features` are also enabled.
        T)rl   rm   rk   r^   )selfrG   r$   r$   r%   __contains__   s
   
zMode.__contains__c              
   C   s  | j rddd t| j tddD }nd}t|tkr)t|  d t }dtdd | j	D d dt| j
 }t|tkrRt|  d t }|t| jtt| jtt| jtt| jtt| jtt| jtt| j|g	}d	|S )
N,c                 s   s    | ]}t |jV  qd S rI   )strvaluerJ   r$   r$   r%   rN      s
    
z%Mode.get_cache_key.<locals>.<genexpr>rr   )key-c                 s   s    | ]}|j V  qd S rI   )name)rK   fr$   r$   r%   rN      s    @.)rF   joinsortedr   lenra   r   encode	hexdigestrm   rj   rq   rd   intre   rf   rg   rh   ri   rk   )rn   version_strfeatures_and_magicspartsr$   r$   r%   get_cache_key   s<   


zMode.get_cache_keyN)r   r   r   r   setrF   r
   r   __annotations__r   rd   r~   re   boolrf   rg   rh   ri   rj   rq   rk   rl   rm   rQ   ro   r   r$   r$   r$   r%   rb      s   
 rb   N)>rR   dataclassesr   r   enumr   r   hashlibr   operatorr   typingr   r	   r
   black.constr   r   r&   rB   rD   r   r   r4   r   r   r2   r   r0   r1   r3   r   r5   r   r>   r6   r7   r:   r;   r    r8   r?   r!   r9   r"   r<   r=   r#   r@   rE   r   rP   rQ   rT   rX   rY   rU   r^   UserWarningr_   ra   rb   r$   r$   r$   r%   <module>   s    

g