§
    øyIfÛÊ  ã            [       ó|  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"Z"d d	l#m$Z$ d d
l%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZRmSZSmTZT d dlQmUZU d dlQmVZVmWZWmXZX d dlYmZZZm[Z[m\Z\m]Z] d dl^m_Z_m`Z`maZambZbmcZcmdZd d dlemfZfmgZgmhZhmiZimjZj d dlkmlZlmmZmmnZnmoZo d dlpmqZqmrZrmsZs d dltmuZu d dlvmwZwmxZx  eey¦  «        jz        dv Z{e|Z}e|Z~e|Z G d „ d!e¦  «        Z€eUZ�d"e"j‚        d#e"jƒ        d$ee|         d%ee|         fd&„Z„d"e"j‚        d'ee|         d(e|d%dfd)„Z…d*e"j‚        d+e!e"j†        e"jƒ        f         d,e e|d-f         d%eeW         fd.„Z‡d*e"j‚        d+e!e"j†        e"jƒ        f         d,e e|d-f         d%eeV         fd/„Zˆd0e|d%ee|         fd1„Z‰d"e"j‚        d#e"jƒ        d$ee|         d%eee|                  fd2„ZŠ e"j‹        d3d4d5gid6¬7¦  «         e"jŒ        d8d9e|d:¬;¦  «         e"jŒ        d<d=e�e5d>d?¬@¦  «         e"jŒ        dAdB e"jŽ        dC„ eWD ¦   «         ¦  «        e‡d?dD¬E¦  «         e"jŒ        dFd?dG¬H¦  «         e"jŒ        dId?dJ¬H¦  «         e"jŒ        dKd?dLdM �                     e�eC¦  «        ¦  «        › dN�g ¬O¦  «         e"jŒ        dPdQd?dR¬H¦  «         e"jŒ        dSdTd?dU¬H¦  «         e"jŒ        dVdWd?dX¬H¦  «         e"jŒ        dYd?dZ¬H¦  «         e"jŒ        d[d?d\¬H¦  «         e"jŒ        d] e"jŽ        d^„ eVD ¦   «         ¦  «        eˆd?d_¬E¦  «         e"jŒ        d`d?da¬H¦  «         e"jŒ        dbd?dc¬H¦  «         e"jŒ        ddd?de¬H¦  «         e"jŒ        dfd?dgdhdi¬j¦  «         e"jŒ        dkd?dl¬H¦  «         e"jŒ        dme|dn¬;¦  «         e"jŒ        doe|eŠdpe3› dq�dr¬s¦  «         e"jŒ        dte|eŠdu¬v¦  «         e"jŒ        dwe|eŠdx¬v¦  «         e"jŒ        dye|d?dz¬{¦  «         e"jŒ        d|e|e4eŠd}d?¬~¦  «         e"jŒ        dd€ e"j‘        d�¬‚¦  «        ddƒ¬„¦  «         e"jŒ        d…d†d?d‡¬H¦  «         e"jŒ        dˆd‰d?dŠ¬H¦  «         e"j’        e-d‹e{rdŒnd�› dŽ ej“        ¦   «         › d� ej”        ¦   «         › �¬�¦  «         e"j•        d‘d’ e"j        d?d?d?d?d?¬“¦  «        d?d”¬•¦  «         e"jŒ        d– e"j        d?d?drd?dre|¬—¦  «        d?e„d˜¬™¦  «        e"j–        d"e"j‚        dšee|         d›e�dœeeW         d�e—dže—dŸee|         d e—d¡e—d¢e—d£e—d¤ee|         d¥e—d¦e—d§e—d¨e—d©e—dªeeV         d«e—d¬e—d­ee|         d®ee|         d¯eee|                  d°eee|                  d±eee|                  d²ee|         d³ee�         d‘e e|d-f         d´ee|         d%df<dµ„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z˜d¶ed‘e e|d-f         d«e—d¬e—d®ee|         d¯eee|                  d°eee|                  d±eee|                  d·d¸d²ee|         d%ee         fd¹„Z™d‘edºe|d«e—d¬e—d"e"j‚        d%dfd»„Zšdid¼œd½e|d¡e—d¾e€d¿eUd·esdÀee e�e�f                  d%dfdÁ„Z› e&d?¬Â¦  «        did¼œd‘ed¡e—d¾e€d¿eUd·d¸dÀee e�e�f                  d%dfdÃ„¦   «         Zœe€j�        dfdid¼œd‘ed¡e—d¿eUd¾e€dÄedÀee e�e�f                  d%e—fdÅ„Zžde€j�        didÆœd¡e—d½ee|         d¾e€d¿eUdÀee e�e�f                  d%e—fdÇ„ZŸdid¼œdÈe|dÉe|d¿eUdÀee e�e�f                  d%df
dÊ„Z did¼œdÈe|d¡e—d¿eUdÀee e�e�f                  d%e}f
dË„Z¡d‘e|d¿eUd%dfdÌ„Z¢d‘e|d¡e—d¿eUd%e|fdÍ„Z£dÎee|ef         d%dfdÏ„Z¤dÈe|d¡e—d¿eUd%e}fdÐ„Z¥did¼œdÈe|d¿eUdÀee e�e�f                  d%e|fdÑ„Z¦did¼œdÈe|d¿eUdÀee e�e�f                  d%e|fdÒ„Z§d‘e¨d%e e}e~ef         fdÓ„Z©ddÔœdÕexdÖeee|                  d%eeT         fd×„ZªdÕe!exewf         d%e—fdØ„Z«ddÔœdÕexdÖeee|                  d%eeW         fdÙ„Z¬dÕexd%ee|         fdÚ„Z­d‘e|dÛe|d%dfdÜ„Z®did¼œd‘e|dÛe|d¿eUdÀee e�e�f                  d%df
dÝ„Z¯ed%ed         fdÞ„¦   «         Z°dádß„Z±e²dàk    r e±¦   «          dS dS )âé    N)Úcontextmanager)Úreplace)ÚdatetimeÚtimezone)ÚEnum)ÚJSONDecodeError)ÚPath)ÚAnyÚ
CollectionÚDictÚ	GeneratorÚIteratorÚListÚMutableMappingÚOptionalÚPatternÚSequenceÚSetÚSizedÚTupleÚUnion)ÚParameterSource)Ú
mypyc_attr)ÚPathSpec)ÚGitWildMatchPatternError)Úversion)ÚCache)Únormalize_fmt_off)ÚDEFAULT_EXCLUDESÚDEFAULT_INCLUDESÚDEFAULT_LINE_LENGTHÚSTDIN_PLACEHOLDER)
Úbest_effort_relative_pathÚfind_project_rootÚfind_pyproject_tomlÚfind_user_pyproject_tomlÚgen_python_filesÚget_gitignoreÚparse_pyproject_tomlÚpath_is_excludedÚ$resolves_outside_root_or_cannot_statÚwrap_stream_for_windows)ÚPYTHON_CELL_MAGICSÚTRANSFORMED_MAGICSÚ"jupyter_dependencies_are_installedÚ	mask_cellÚput_trailing_semicolon_backÚremove_trailing_semicolonÚunmask_cell)ÚLNÚLineGeneratorÚtransform_line)ÚEmptyLineTrackerÚ
LinesBlock)ÚFUTURE_FLAG_TO_FEATUREÚVERSION_TO_FEATURESÚFeature)ÚMode)ÚPreviewÚTargetVersionÚsupports_feature)ÚSTARSÚis_number_tokenÚis_simple_decorator_expressionÚsyms)Ú
color_diffÚdiffÚdump_to_fileÚerrÚ
ipynb_diffÚout)ÚASTSafetyErrorÚInvalidInputÚlib2to3_parseÚ	parse_astÚstringify_ast)Úadjusted_linesÚconvert_unchanged_linesÚparse_line_rangesÚsanitized_lines)ÚChangedÚNothingChangedÚReport)Útoken)ÚLeafÚNode)z.pydz.soc            
       óP   — e Zd ZdZdZdZdZdZeddœde	d	e	d
e	dd fd„¦   «         Z
dS )Ú	WriteBackr   é   é   é   é   F)ÚcolorÚcheckrE   r_   Úreturnc                óN   — |r	|s| j         S |r	|r| j        S |r| j        n| j        S ©N)ÚCHECKÚ
COLOR_DIFFÚDIFFÚYES)Úclsr`   rE   r_   s       úB/var/www/piapp/venv/lib/python3.11/site-packages/black/__init__.pyÚfrom_configurationzWriteBack.from_configurationj   sE   € ð ð 	˜ð 	Ø”9Ðàð 	"�Eð 	"Ø”>Ð!àÐ,ˆsŒxˆx S¤WÐ,ó    N)Ú__name__Ú
__module__Ú__qualname__ÚNOrg   rf   rd   re   ÚclassmethodÚboolrj   © rk   ri   rZ   rZ   c   sx   € € € € € Ø	
€BØ
€CØ€DØ€EØ€Jàà7<ð	-ð 	-ð 	-Øð	-Ø#'ð	-Ø04ð	-à	ð	-ð 	-ð 	-ñ „[ð	-ð 	-ð 	-rk   rZ   ÚctxÚparamÚvaluera   c                 óú  — |sFt          | j                             dd¦  «        | j                             dd¦  «        ¦  «        }|€dS 	 t          |¦  «        }n3# t          t
          f$ r}t          j        |d|› �¬¦  «        d‚d}~ww xY w|sdS t          | t          |¦  «        |¦  «         d„ | 
                    ¦   «         D ¦   «         }|                     d¦  «        }|�*t          |t          ¦  «        st          j        d	d
¦  «        ‚|                     d¦  «        }|�*t          |t          ¦  «        st          j        dd¦  «        ‚|                     d¦  «        }|�*t          |t          ¦  «        st          j        dd¦  «        ‚|                     d¦  «        }|�t          j        dd¦  «        ‚i }	| j        r|	                     | j        ¦  «         |	                     |¦  «         |	| _        |S )z¬Inject Black configuration from "pyproject.toml" into defaults in `ctx`.

    Returns the path to a successfully found and read configuration file, None
    otherwise.
    Úsrcrr   Ústdin_filenameNz"Error reading configuration file: )ÚfilenameÚhintc                 óp   — i | ]3\  }}|t          |t          t          f¦  «        st          |¦  «        n|“Œ4S rr   )Ú
isinstanceÚlistÚdictÚstr)Ú.0ÚkÚvs      ri   ú
<dictcomp>z'read_pyproject_toml.<locals>.<dictcomp>˜   sK   € ð 
ð 
ð 
á��1ð �Z¨­Dµ$¨<Ñ8Ô8Ð?�s�1‰vŒvˆv¸að
ð 
ð 
rk   Útarget_versionztarget-versionz(Config key target-version must be a listÚexcludez#Config key exclude must be a stringÚextend_excludezextend-excludez*Config key extend-exclude must be a stringÚline_rangeszline-rangesz2Cannot use line-ranges in the pyproject.toml file.)r%   ÚparamsÚgetr)   ÚOSErrorÚ
ValueErrorÚclickÚ	FileErrorÚspellcheck_pyproject_toml_keysr}   Úitemsr|   ÚBadOptionUsager   Údefault_mapÚupdate)
rs   rt   ru   ÚconfigÚer„   r…   r†   r‡   r‘   s
             ri   Úread_pyproject_tomlr•   {   s9  € ð ð Ý#ØŒJ�NŠN˜5 "Ñ%Ô% s¤z§~¢~Ð6FÈÑ'MÔ'Mñ
ô 
ˆð ˆ=Ø�4ðÝ% eÑ,Ô,ˆˆøÝ•ZÐ ð ð ð ÝŒoØÐ!IÀaÐ!IÐ!Ið
ñ 
ô 
àð	øøøøðøøøð
 ð 

Øˆtå& s­D°©L¬L¸%Ñ@Ô@Ð@ð
ð 
àŸš™œð
ñ 
ô 
ˆð
 —Z’ZÐ 0Ñ1Ô1€NØÐ!­*°^ÅTÑ*JÔ*JÐ!ÝÔ"ØÐHñ
ô 
ð 	
ð �jŠj˜Ñ#Ô#€GØÐ¥:¨gµsÑ#;Ô#;ÐÝÔ" 9Ð.SÑTÔTÐTà—Z’ZÐ 0Ñ1Ô1€NØÐ!­*°^ÅSÑ*IÔ*IÐ!ÝÔ"ØÐJñ
ô 
ð 	
ð —*’*˜]Ñ+Ô+€KØÐÝÔ"ØÐOñ
ô 
ð 	
ð #%€KØ
„ð ,Ø×Ò˜3œ?Ñ+Ô+Ð+Ø×Ò�vÑÔÐà!€C„OØ€Ls   Á
A ÁB
Á+BÂB
Úconfig_keysÚconfig_file_pathc                 óú   — g }d„ | j         j        D ¦   «         }|D ]}||vr|                     |¦  «         Œ|rBd                     t	          t
          |¦  «        ¦  «        }t          d|› d|› d�d¬¦  «         d S d S )Nc                 ó   — h | ]	}|j         ’Œ
S rr   ©Úname)r€   rt   s     ri   ú	<setcomp>z1spellcheck_pyproject_toml_keys.<locals>.<setcomp>À   s   € ÐKÐKÐK¨u ¤
ÐKÐKÐKrk   ú, zInvalid config keys detected: z (in ú)Úred©Úfg)Úcommandrˆ   ÚappendÚjoinÚmapÚreprrI   )rs   r–   r—   Úinvalid_keysÚavailable_config_optionsÚkeyÚkeys_strs          ri   rŽ   rŽ   ¼   sº   € ð !€LØKÐK¸¼Ô8JÐKÑKÔKÐØð %ð %ˆØÐ.Ð.Ð.Ø×Ò Ñ$Ô$Ð$øØð 
Ø—9’9�S¥ |Ñ4Ô4Ñ5Ô5ˆÝØO¨XÐOÐOÐ<LÐOÐOÐOØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
rk   ÚcÚpr‚   .c                 ó   — d„ |D ¦   «         S )z¼Compute the target versions from a --target-version flag.

    This is its own function because mypy couldn't infer the type correctly
    when it was a lambda, causing mypyc trouble.
    c                 óL   — g | ]!}t           |                     ¦   «                  ‘Œ"S rr   )r>   Úupper©r€   Úvals     ri   ú
<listcomp>z2target_version_option_callback.<locals>.<listcomp>Ô   s%   € Ð4Ð4Ð4¨3�M˜#Ÿ)š)™+œ+Ô&Ð4Ð4Ð4rk   rr   ©r«   r¬   r‚   s      ri   Útarget_version_option_callbackr´   Ì   s   € ð 5Ð4°!Ð4Ñ4Ô4Ð4rk   c                 ó   — d„ |D ¦   «         S )z<Compute the features from an --enable-unstable-feature flag.c                 ó(   — g | ]}t           |         ‘ŒS rr   )r=   r°   s     ri   r²   z4enable_unstable_feature_callback.<locals>.<listcomp>Û   s   € Ð&Ð&Ð&˜S�G�CŒLÐ&Ð&Ð&rk   rr   r³   s      ri   Ú enable_unstable_feature_callbackr·   ×   s   € ð 'Ð& AÐ&Ñ&Ô&Ð&rk   Úregexc                 ó@   — d| v rd| z   } t          j        | ¦  «        }|S )zdCompile a regular expression string in `regex`.

    If it contains newlines, use verbose mode.
    ú
z(?x))ÚreÚcompile)r¸   Úcompileds     ri   Úre_compile_maybe_verboser¾   Þ   s*   € ð
 ˆu€}€}Ø˜‘ˆÝœZ¨Ñ.Ô.€HØ€Ork   c                 óˆ   — 	 |�t          |¦  «        nd S # t          j        $ r}t          j        d|› �¦  «        d ‚d }~ww xY w)Nz Not a valid regular expression: )r¾   r»   ÚerrorrŒ   ÚBadParameter)rs   rt   ru   r”   s       ri   Úvalidate_regexrÂ   é   sb   € ð
SØ27Ð2CÕ'¨Ñ.Ô.Ð.ÈÐMøÝŒ8ð Sð Sð SÝÔ Ð!GÀAÐ!GÐ!GÑHÔHÈdÐRøøøøðSøøøs   ‚ •A¤<¼AÚhelp_option_namesz-hz--helpú"The uncompromising code formatter.)Úcontext_settingsÚhelpz-cz--codez&Format the code passed in as a string.)ÚtyperÆ   z-lz--line-lengthz&How many characters per line to allow.T)rÇ   ÚdefaultrÆ   Úshow_defaultz-tz--target-versionc                 ó@   — g | ]}|j                              ¦   «         ‘ŒS rr   )r›   Úlower©r€   r‚   s     ri   r²   r²     s"   € Ð=Ð=Ð=¨!�q”v—|’|‘~”~Ð=Ð=Ð=rk   a!  Python versions that should be supported by Black's output. You should include all versions that your code supports. By default, Black will infer target versions from the project metadata in pyproject.toml. If this does not yield conclusive results, Black will use per-file auto-detection.)rÇ   ÚcallbackÚmultiplerÆ   z--pyiz{Format all input files like typing stubs regardless of file extension. This is useful when piping source on standard input.)Úis_flagrÆ   z--ipynbz€Format all input files like Jupyter Notebooks regardless of file extension. This is useful when piping source on standard input.z--python-cell-magicsz[When processing Jupyter Notebooks, add the given magic to the list of known python-magics (r�   z9). Useful for formatting cells with custom python magics.)rÎ   rÆ   rÈ   z-xz--skip-source-first-linez'Skip the first line of the source code.z-Sz--skip-string-normalizationz*Don't normalize string quotes or prefixes.z-Cz--skip-magic-trailing-commaz5Don't use trailing commas as a reason to split lines.z	--previewzvEnable potentially disruptive style changes that may be added to Black's main functionality in the next major release.z
--unstablez®Enable potentially disruptive style changes that have known bugs or are not currently expected to make it into the stable style Black's next major release. Implies --preview.z--enable-unstable-featurec                 ó   — g | ]	}|j         ‘Œ
S rr   rš   rÌ   s     ri   r²   r²   O  s   € Ð/Ð/Ð/ !�q”vÐ/Ð/Ð/rk   z²Enable specific features included in the `--unstable` style. Requires `--preview`. No compatibility guarantees are provided on the behavior or existence of any unstable features.z--checkzÅDon't write the files back, just return the status. Return code 0 means nothing would change. Return code 1 means some files would be reformatted. Return code 123 means there was an internal error.z--diffz”Don't write the files back, just output a diff to indicate what changes Black would've made. They are printed to stdout so capturing them is simple.z--color/--no-colorzFShow (or do not show) colored diff. Only applies when --diff is given.z--line-rangesz	START-ENDa@  When specified, Black will try its best to only format these lines. This option can be specified multiple times, and a union of the lines will be formatted. Each range must be specified as two integers connected by a `-`: `<START>-<END>`. The `<START>` and `<END>` integer indices are 1-based and inclusive on both ends.rr   )rÎ   ÚmetavarrÆ   rÈ   z--fast/--safez¬By default, Black performs an AST safety check after formatting your code. The --fast flag turns off this check and the --safe flag explicitly enables it. [default: --safe]z--required-versiona5  Require a specific version of Black to be running. This is useful for ensuring that all contributors to your project are using the same version, because different versions of Black may format code a little differently. This option can be set in a configuration file for consistent results across environments.z	--excludea[  A regular expression that matches files and directories that should be excluded on recursive searches. An empty value means no paths are excluded. Use forward slashes for directories on all platforms (Windows, too). By default, Black also ignores all paths listed in .gitignore. Changing this value will override all default exclusions. [default: ú]F)rÇ   rÍ   rÆ   rÉ   z--extend-excludezrLike --exclude, but adds additional files and directories on top of the default values instead of overriding them.)rÇ   rÍ   rÆ   z--force-excludezöLike --exclude, but files and directories matching this regex will be excluded even when they are passed explicitly as arguments. This is useful when invoking Black programmatically on changed files, such as in a pre-commit hook or editor plugin.z--stdin-filenamezŸThe name of the file when passing it through stdin. Useful to make sure Black will respect the --force-exclude option on some editors that rely on using stdin.)rÇ   Úis_eagerrÆ   z	--includea=  A regular expression that matches files and directories that should be included on recursive searches. An empty value means all files are included regardless of the name. Use forward slashes for directories on all platforms (Windows, too). Overrides all exclusions, including from .gitignore and command line options.)rÇ   rÈ   rÍ   rÆ   rÉ   z-Wz	--workersr[   )Úmina  When Black formats multiple files, it may use a process pool to speed up formatting. This option controls the number of parallel workers. This can also be specified via the BLACK_NUM_WORKERS environment variable. Defaults to the number of CPUs in the system.)rÇ   rÈ   rÆ   z-qz--quietzpStop emitting all non-critical output. Error messages will still be emitted (which can silenced by 2>/dev/null).z-vz	--verbosez½Emit messages about files that were not changed or were ignored due to exclusion patterns. If Black is using a configuration file, a message detailing which one it is using will be emitted.z!%(prog)s, %(version)s (compiled: ÚyesÚnoz
)
Python (z) )r   Úmessagerw   éÿÿÿÿ)ÚexistsÚ	file_okayÚdir_okayÚreadableÚ
allow_dashzSRC ...)ÚnargsrÇ   rÓ   rÑ   z--config)rÙ   rÚ   rÛ   rÜ   rÝ   Ú	path_typez5Read configuration options from a configuration file.)rÇ   rÓ   rÍ   rÆ   ÚcodeÚline_lengthr„   r`   rE   r‡   r_   ÚfastÚpyiÚipynbÚpython_cell_magicsÚskip_source_first_lineÚskip_string_normalizationÚskip_magic_trailing_commaÚpreviewÚunstableÚenable_unstable_featureÚquietÚverboseÚrequired_versionÚincluder…   r†   Úforce_excluderx   Úworkersr“   c                 óÈ	  — |                       t          ¦  «         |rA|�?t          t                               | ¦  «        dz   ¦  «         |                      d¦  «         |sA|€?t          t                               | ¦  «        dz   ¦  «         |                      d¦  «         |rC|sA|s?t          t                               | ¦  «        dz   ¦  «         |                      d¦  «         |€t          ||¦  «        nd\  }}|| j        d<   |rã|rt          d|› d	|› d
�d¬¦  «         |rÇ|                      d¦  «        }t          t          ¦   «         ¦  «        } || k    rt          d| › d�d¬¦  «         nA|t          j        t          j        fv rt          dd¬¦  «         nt          d|› d�d¬¦  «         | j        r3| j                             ¦   «         D ]\  }!}"t          |!› d|"› �¦  «         Œd}#|r[|t           k    rP|t!          j        d
¦  «        d         k    r2t%          |#› d|› dt           › d�¦  «         |                      d¦  «         |
r&|	r$t%          d¦  «         |                      d¦  «         t&                               |||¬¦  «        }$|rt+          |¦  «        }%nt+          ¦   «         }%t-          |%||	|
|| | ||t+          |¦  «        t+          |¦  «        ¬¦  «        }&g }'|r|
r$t%          d¦  «         |                      d¦  «         	 t/          |¦  «        }'nH# t0          $ r;}(t%          t          |(¦  «        ¦  «         |                      d¦  «         Y d}(~(nd}(~(ww xY w|�d}t3          ||||¬¦  «        })|�t5          |||$|&|)|'¬¦  «         nÏ|€J ‚	 t7          |||||||||)|¬¦
  «
        }*n%# t8          $ r |                      d¦  «         Y nw xY wt;          |*d ||| ¦  «         t=          |*¦  «        dk    r(t?          |*                      ¦   «         ||$|&|)|'¬!¦  «         n=dd"l!m"}+ |'r$t%          d#¦  «         |                      d¦  «          |+|*||$|&|)|¬$¦  «         |s|s]|€|s|)j#        s|)j$        rt          ¦   «          t          |)j%        r|#nd%¦  «         |€#tM          j'        t          |)¦  «        d¬&¦  «         |                      |)j%        ¦  «         dS )'rÄ   Nz3

'SRC' and 'code' cannot be passed simultaneously.r[   z%

One of 'SRC' or 'code' is required.z3

'--enable-unstable-feature' requires '--preview'.)NNÚrootzIdentified `z` as project root containing a ú.Úbluer    r“   z/Using configuration from user-level config at 'z'.z&Using configuration from project root.zUsing configuration in 'z: u   Oh no! ðŸ’¥ ðŸ’” ðŸ’¥r   z The required version `z&` does not match the running version `z`!z)Cannot pass both `pyi` and `ipynb` flags!)r`   rE   r_   )Útarget_versionsrá   Úis_pyiÚis_ipynbræ   Ústring_normalizationÚmagic_trailing_commaré   rê   rå   Úenabled_featuresz*Cannot use --line-ranges with ipynb files.T)r`   rE   rì   rí   )Úcontentrâ   Ú
write_backÚmodeÚreportÚlines)
ró   rw   rì   rí   rï   r…   r†   rð   rÿ   rx   u?   No Python files are present to be formatted. Nothing to do ðŸ˜´)rw   râ   rý   rþ   rÿ   r   )Úreformat_manyz2Cannot use --line-ranges to format multiple files.)Úsourcesrâ   rý   rþ   rÿ   rñ   u   All done! âœ¨ ðŸ�° âœ¨)rG   )(Úensure_objectr~   rI   ÚmainÚ	get_usageÚexitr$   ÚobjÚget_parameter_sourcer   r&   r   ÚDEFAULTÚDEFAULT_MAPr‘   r�   Ú__version__ÚsplitrG   rZ   rj   Úsetr<   rQ   r‹   rU   Úreformat_codeÚget_sourcesr   Ú
path_emptyÚlenÚreformat_oneÚpopÚblack.concurrencyr  Úchange_countÚfailure_countÚreturn_coderŒ   Úecho),rs   rà   rá   r„   r`   rE   r‡   r_   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   r…   r†   rð   rx   rñ   rw   r“   ró   ÚmethodÚconfig_sourceÚuser_level_configrt   ru   Ú	error_msgrý   Úversionsrþ   r   r”   rÿ   r  r  s,                                               ri   r  r  ô   sf  € ðd	 ×Ò•dÑÔÐà
ð ˆtÐÝÝ�NŠN˜3ÑÔØEñFñ	
ô 	
ð 	
ð 	�Š�‰ŒˆØð �4�<Ý�D�NŠN˜3ÑÔÐ"KÑKÑLÔLÐLØ�Š�‰Œˆð ð ¨ð °8ð ÝÝ�NŠN˜3ÑÔØEñFñ	
ô 	
ð 	
ð 	�Š�‰Œˆð 37°,Õ˜#˜~Ñ.Ô.Ð.ÀLñ €Dˆ&ð €C„GˆF�Oàð -Øð 	ÝØM˜tÐMÐMÀFÐMÐMÐMØðñ ô ð ð
 ð 	-Ø×4Ò4°XÑ>Ô>ˆMÝ #Õ$<Ñ$>Ô$>Ñ ?Ô ?ÐØÐ*Ò*Ð*Ýð.Ø)ð.ð .ð .àðñ ô ð ð ð
 ÝÔ'ÝÔ+ð#ð ð õ Ð<ÀÐHÑHÔHÐHÐHåÐ9¨vÐ9Ð9Ð9¸fÐEÑEÔEÐEØŒð -Ø$'¤O×$9Ò$9Ñ$;Ô$;ð -ð -‘L�E˜5Ý˜5Ð+Ð+ EÐ+Ð+Ñ,Ô,Ð,Ð,à'€Iàð	à¥Ò+Ð+Ø¥Ô 1°#Ñ 6Ô 6°qÔ 9Ò9Ð9åØð 5ð 5Ð1Að 5ð 5Ý%0ð5ð 5ð 5ñ	
ô 	
ð 	
ð 	�Š�‰ŒˆØð �ð ÝÐ7Ñ8Ô8Ð8Ø�Š�‰Œˆå×-Ò-°EÀÈEÐ-ÑRÔR€JØð Ý�~Ñ&Ô&ˆˆõ ‘5”5ˆÝØ ØØØØ5Ø!:Ð:Ø!:Ð:ØØÝÐ1Ñ2Ô2ÝÐ4Ñ5Ô5ðñ ô €Dð $&€EØð 	Øð 	ÝÐ<Ñ=Ô=Ð=Ø�HŠH�Q‰KŒKˆKð	Ý% kÑ2Ô2ˆEˆEøÝð 	ð 	ð 	Ý•�A‘”‰KŒKˆKØ�HŠH�Q‰KŒKˆKˆKˆKˆKˆKˆKøøøøð	øøøð Ðð ˆå˜% d°%ÀÐIÑIÔI€FàÐÝØØØ!ØØØð	
ñ 	
ô 	
ð 	
ð 	
ð ÐÐÐð	Ý!ØØØØØØØ-Ø+ØØ-ðñ ô ˆGˆGøõ (ð 	ð 	ð 	Ø�HŠH�Q‰KŒKˆKˆKˆKð	øøøõ 	ØØMØØØñ	
ô 	
ð 	
õ ˆw‰<Œ<˜1ÒÐÝØ—K’K‘M”MØØ%ØØØðñ ô ð ð ð 8Ð7Ð7Ð7Ð7Ð7àð ÝÐHÑIÔIÐIØ—’˜‘”�ØˆMØØØ%ØØØðñ ô ð ð ð .�eð .Øˆ<˜Wˆ<¨Ô(;ˆ<¸vÔ?Sˆ<Ý‰EŒEˆEÝ˜Ô+ÐIˆIˆIÐ1IÑJÔJÐJØˆ<ÝŒJ•s˜6‘{”{¨Ð-Ñ-Ô-Ð-Ø‡H‚HˆVÔÑ Ô Ð Ð Ð s*   ÌL! Ì!
M&Ì+1M!Í!M&ÎN7 Î7OÏOró   rÿ   rU   c        
         óþ  — t          ¦   «         }
|                      ¦   «         sJ d| › �¦   «         ‚|du }|€t          t          ¦  «        n|}d}t	          | ¦  «        }|D �]}|dk    r|	rt          |	¦  «        }d}nt          |¦  «        }d}|s|                     ¦   «         rìt          || |¦  «        r|rt          d|› d�d¬	¦  «         Œmt          || ¦  «         
                    ¦   «         }d
|z   }t          ||¦  «        r|                     |d¦  «         Œ»|r%t          t          › t          |¦  «        › �¦  «        }|j        dk    rt!          |p| ¬¦  «        s�Œ|rt          d|› d�d¬	¦  «         |
                     |¦  «         �Œ0|                     ¦   «         r–| |                     ¦   «                              | ¦  «        z  }|rt          d|› d�d¬	¦  «         |r| ||t	          |¦  «        i}|
                     t-          |                     ¦   «         | ||||||||¬¦
  «
        ¦  «         �ŒÚ|dk    r*|rt          dd¬	¦  «         |
                     |¦  «         �Œ
t1          d|› �¦  «         �Œ|
S )z)Compute the set of files to be formatted.z/INTERNAL ERROR: `root` must be absolute but is Nú-TFzSkipping invalid source: "ú"rŸ   r    ú/z.matches the --force-exclude regular expressionú.ipynb)ÚwarnzFound input source: "rõ   zFound input source directory: ")rí   rì   zFound input source stdinzinvalid path: )r  Úis_absoluter¾   r   r(   r	   Úis_filer+   rI   r#   Úas_posixr*   Úpath_ignoredr"   r   Úsuffixr/   ÚaddÚis_dirÚresolveÚrelative_tor’   r'   ÚiterdirrG   )ró   rw   rì   rí   rï   r…   r†   rð   rÿ   rx   r  Úusing_default_excludeÚ	gitignoreÚroot_gitignoreÚsÚpathÚis_stdinÚroot_relative_paths                     ri   r  r  Ô  s$  € õ ™œ€Gà×ÒÑÔÐWÐWÐWÐQUÐWÐWÑWÔWÐWØ# t˜OÐØ<C¸OÕ&Õ'7Ñ8Ô8Ð8ÐQX€GØ04€IÝ" 4Ñ(Ô(€Nàð A&ñ A&ˆØ�Š8ˆ8˜ˆ8Ý˜Ñ'Ô'ˆDØˆHˆHå˜‘7”7ˆDØˆHð ð 8	&�t—|’|‘~”~ð 8	&Ý3°D¸$ÀÑGÔGð Øð HÝÐ<°TÐ<Ð<Ð<ÀÐGÑGÔGÐGØå!:¸4ÀÑ!FÔ!F×!OÒ!OÑ!QÔ!QÐØ!$Ð'9Ñ!9Ðõ  Ð 2°MÑBÔBð Ø×#Ò#ØÐJñô ð ð àð ?ÝÕ0Ð=µ#°d±)´)Ð=Ð=Ñ>Ô>�àŒ{˜hÒ&Ð&Õ/QØÐ) E 	ð0ñ 0ô 0Ð&ñ àð @ÝÐ3¨DÐ3Ð3Ð3¸Ð?Ñ?Ô?Ð?Ø�KŠK˜ÑÔÐÑØ�[Š[‰]Œ]ð 	&Ø˜4Ÿ<š<™>œ>×5Ò5°dÑ;Ô;Ñ<ˆDØð JÝÐ=°dÐ=Ð=Ð=À&ÐIÑIÔIÐIà$ð à˜.Ø�-¨Ñ-Ô-ð�	ð �NŠNÝ Ø—L’L‘N”NØØØØ"Ø!ØØØ#Øðñ ô ñô ð ñ ð �#ŠXˆXØð ;ÝÐ.°6Ð:Ñ:Ô:Ð:Ø�KŠK˜ÑÔÐÑåÐ$ Ð$Ð$Ñ%Ô%Ð%Ñ%à€Nrk   Úmsgc                 ó^   — | s*|s|st          |¦  «         |                     d¦  «         dS dS )z;
    Exit if there is no `src` provided for formatting
    r   N)rI   r  )rw   r5  rì   rí   rs   s        ri   r  r  0  sC   € ð ð Øð 	˜%ð 	Ý�‰HŒHˆHØ�Š�‰Œˆˆˆðð rk   )r   rü   rý   rþ   r   c                óT  — t          d¦  «        }	 t          j        }t          | ||||¬¦  «        rt          j        }|                     ||¦  «         dS # t          $ rH}|j        rt          j	        ¦   «          | 
                    |t          |¦  «        ¦  «         Y d}~dS d}~ww xY w)a  
    Reformat and print out `content` without spawning child processes.
    Similar to `reformat_one`, but for string content.

    `fast`, `write_back`, and `mode` options are passed to
    :func:`format_file_in_place` or :func:`format_stdin_to_stdout`.
    z<string>)rü   râ   rý   rþ   r   N)r	   rS   ro   Úformat_stdin_to_stdoutrg   ÚdoneÚ	Exceptionrí   Ú	tracebackÚ	print_excÚfailedr   )	rü   râ   rý   rþ   rÿ   r   r2  ÚchangedÚexcs	            ri   r  r  <  sÇ   € õ  �
ÑÔ€Dð
&Ý”*ˆÝ!Ø $°:ÀDÐPUð
ñ 
ô 
ð 	"õ ”kˆGØ�Š�D˜'Ñ"Ô"Ð"Ð"Ð"øÝð &ð &ð &ØŒ>ð 	"ÝÔÑ!Ô!Ð!Ø�Š�d�C ™HœHÑ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%øøøøð&øøøs   ‘AA Á
B'Á=B"Â"B')Ú	patchablec                ó2  — 	 t           j        }t          | ¦  «        dk    rd}nbt          | ¦  «                             t          ¦  «        r9d}t          t          | ¦  «        t          t          ¦  «        d…         ¦  «        } nd}|rY| j        dk    rt          |d¬¦  «        }n| j        dk    rt          |d¬¦  «        }t          ||||¬	¦  «        rt           j
        }nËt          j        |¦  «        }|t          j        t          j        fvr!|                     | ¦  «        st           j        }|t           j        ur t%          | ||||¬	¦  «        rt           j
        }|t          j
        u r|t           j        us|t          j        u r$|t           j        u r|                     | g¦  «         |                     | |¦  «         dS # t,          $ rH}	|j        rt1          j        ¦   «          |                     | t          |	¦  «        ¦  «         Y d}	~	dS d}	~	ww xY w)
zÉReformat a single file under `src` without spawning child processes.

    `fast`, `write_back`, and `mode` options are passed to
    :func:`format_file_in_place` or :func:`format_stdin_to_stdout`.
    r  TNFú.pyi©r÷   r"  ©rø   )râ   rý   rþ   r   )rS   ro   r   Ú
startswithr"   r	   r  r(  r   r8  rg   r   ÚreadrZ   rf   re   Ú
is_changedÚCACHEDÚformat_file_in_placerd   Úwriter9  r:  rí   r;  r<  r=  )
rw   râ   rý   rþ   rÿ   r   r>  r3  Úcacher?  s
             ri   r  r  \  s#  € ð'%Ý”*ˆåˆs‰8Œ8�sŠ?ˆ?ØˆHˆHÝ�‰XŒX× Ò Õ!2Ñ3Ô3ð 	ØˆHõ •s˜3‘x”x¥Õ$5Ñ 6Ô 6Ð 8Ð 8Ô9Ñ:Ô:ˆCˆCàˆHàð 	#ØŒz˜VÒ#Ð#Ý˜t¨DÐ1Ñ1Ô1��Ø”˜xÒ'Ð'Ý˜t¨dÐ3Ñ3Ô3�Ý%Ø j°tÀ5ðñ ô ð &õ "œ+�øå”J˜tÑ$Ô$ˆEØ¥)¤.µ)Ô2FÐ!GÐGÐGØ×'Ò'¨Ñ,Ô,ð -Ý%œn�GØ�gœnÐ,Ð,Õ1EØ˜$¨:¸DÈð2ñ 2ô 2Ð,õ "œ+�Ø�iœmÐ+Ð+°½w¼~Ð0MÐ0MØ�iœoÐ-Ð-°'½W¼ZÐ2GÐ2Gà—’˜S˜EÑ"Ô"Ð"Ø�Š�C˜Ñ!Ô!Ð!Ð!Ð!øÝð %ð %ð %ØŒ>ð 	"ÝÔÑ!Ô!Ð!Ø�Š�c�3˜s™8œ8Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$øøøøð%øøøs   ‚G G Ç
HÇ=HÈHÚlockc                ór  — | j         dk    rt          |d¬¦  «        }n| j         dk    rt          |d¬¦  «        }t          j        |                      ¦   «         j        t          j        ¦  «        }d}t          | d¦  «        5 }|j	        r| 
                    ¦   «         }t          |                     ¦   «         ¦  «        \  }	}
}ddd¦  «         n# 1 swxY w Y   	 t          |	|||¬	¦  «        }n.# t          $ r Y d
S t          $ r t!          d| › d�¦  «        d‚w xY w|                     |
¦  «        |	z   }	|                     |
¦  «        |z   }|t$          j        k    rBt          | d|
|¬¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   �n|t$          j        t$          j        fv rþt          j        t          j        ¦  «        }| › d|› �}| › d|› �}|j        rt3          |	|||¦  «        }nt5          |	|||¦  «        }|t$          j        k    rt7          |¦  «        }|pt9          ¦   «         5  t;          j        t>          j         j!        |
|d¬¦  «        }tE          |¦  «        }|                     |¦  «         | #                    ¦   «          ddd¦  «         n# 1 swxY w Y   dS )zðFormat file under `src` path. Return True if changed.

    If `write_back` is DIFF, write a diff to stdout. If it is YES, write reformatted
    code to the file.
    `mode` and `fast` options are passed to :func:`format_file_contents`.
    rB  TrC  r"  rD  rk   ÚrbN©râ   rþ   r   FzFile 'z-' cannot be parsed as valid Jupyter notebook.Úw)ÚencodingÚnewlineú	©rQ  rR  Úwrite_through)$r(  r   r   ÚfromtimestampÚstatÚst_mtimer   ÚutcÚopenræ   ÚreadlineÚdecode_bytesrF  Úformat_file_contentsrT   r   r‹   ÚdecoderZ   rg   rJ  rf   re   Únowrø   rH   rE   rD   ÚnullcontextÚioÚTextIOWrapperÚsysÚstdoutÚbufferr,   Údetach)rw   râ   rþ   rý   rL  r   ÚthenÚheaderÚbufÚsrc_contentsrQ  rR  Údst_contentsÚfr_  Úsrc_nameÚdst_nameÚdiff_contentss                     ri   rI  rI  •  s—  € ð „z�VÒÐÝ�t DÐ)Ñ)Ô)ˆˆØ	Œ�xÒ	Ð	Ý�t dÐ+Ñ+Ô+ˆåÔ! #§(¢(¡*¤*Ô"5µx´|ÑDÔD€DØ€FÝ	ˆc�4‰Œð C˜CØÔ&ð 	$Ø—\’\‘^”^ˆFÝ*6°s·x²x±z´zÑ*BÔ*BÑ'ˆ�h ðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð	Ý+Ø˜t¨$°eð
ñ 
ô 
ˆˆøõ ð ð ð ØˆuˆuÝð ð ð ÝØG�SÐGÐGÐGñ
ô 
àð	ðøøøð —=’= Ñ*Ô*¨\Ñ9€LØ—=’= Ñ*Ô*¨\Ñ9€Là•Y”]Ò"Ð"Ý�#�s X°wÐ?Ñ?Ô?ð 	"À1Ø�GŠG�LÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ùà	�	œ­	Ô(<Ð=Ð	=Ð	=ÝŒl�8œ<Ñ(Ô(ˆØÐ#Ð#˜TÐ#Ð#ˆØ�?�?˜S�?�?ˆØŒ=ð 	QÝ& |°\À8ÈXÑVÔVˆMˆMå  ¨|¸XÀxÑPÔPˆMà�Ô-Ò-Ð-Ý& }Ñ5Ô5ˆMàÐ"•[‘]”]ð 		ð 		ÝÔ Ý”
Ô!Ø!ØØ"ð	ñ ô ˆAõ (¨Ñ*Ô*ˆAØ�GŠG�MÑ"Ô"Ð"Ø�HŠH‰JŒJˆJð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð ˆ4sJ   ÂACÃCÃCÃC/ Ã/
DÃ<DÅ0FÆFÆFÉ A J,Ê,J0Ê3J0)rü   rý   r   c                óZ  — t          j        t          j        ¦  «        }|€5t	          t
          j        j                             ¦   «         ¦  «        \  }}}n|dd}}}|}		 t          || ||¬¦  «        }		 t          j        t
          j        j        ||d¬¦  «        }
|t          j        k    r)|	r|	d         dk    r|	dz  }	|
                     |	¦  «         n—|t          j        t          j        fv r}t          j        t          j        ¦  «        }d	|› �}d
|› �}t%          ||	||¦  «        }|t          j        k    rt'          |¦  «        }t)          |
¦  «        }
|
                     |¦  «         |
                     ¦   «          dS # t,          $ �r Y t          j        t
          j        j        ||d¬¦  «        }
|t          j        k    r)|	r|	d         dk    r|	dz  }	|
                     |	¦  «         n—|t          j        t          j        fv r}t          j        t          j        ¦  «        }d	|› �}d
|› �}t%          ||	||¦  «        }|t          j        k    rt'          |¦  «        }t)          |
¦  «        }
|
                     |¦  «         |
                     ¦   «          dS w xY w# t          j        t
          j        j        ||d¬¦  «        }
|t          j        k    r)|	r|	d         dk    r|	dz  }	|
                     |	¦  «         n—|t          j        t          j        fv r}t          j        t          j        ¦  «        }d	|› �}d
|› �}t%          ||	||¦  «        }|t          j        k    rt'          |¦  «        }t)          |
¦  «        }
|
                     |¦  «         |
                     ¦   «          w xY w)a  Format file on stdin. Return True if changed.

    If content is None, it's read from sys.stdin.

    If `write_back` is YES, write reformatted code back to stdout. If it is DIFF,
    write a diff to stdout. The `mode` argument is passed to
    :func:`format_file_contents`.
    Núutf-8Ú rO  TrT  rØ   rº   zSTDIN	zSTDOUT	F)r   r_  r   rY  r\  rc  Ústdinre  rF  r]  ra  rb  rd  rZ   rg   rJ  rf   re   rE   rD   r,   rf  rT   )râ   rü   rý   rþ   r   rg  rw   rQ  rR  Údstrl  r_  rm  rn  Úds                  ri   r8  r8  Ù  s�  € õ  Œ<�œÑ%Ô%€Dà€Ý!-­c¬iÔ.>×.CÒ.CÑ.EÔ.EÑ!FÔ!FÑˆˆX�w�wà!(¨'°2�wˆXˆà
€CðÝ" 3¨T¸ÀEÐJÑJÔJˆØõ ÔÝŒJÔ¨¸'ÐQUð
ñ 
ô 
ˆð �œÒ&Ð&àð �s˜2”w $’�Ø�t‘�Ø�GŠG�C‰LŒLˆLˆLØ�IœN­IÔ,@ÐAÐAÐAÝ”,�xœ|Ñ,Ô,ˆCØ' Ð'Ð'ˆHØ' #Ð'Ð'ˆHÝ�S˜#˜x¨Ñ2Ô2ˆAØ�YÔ1Ò1Ð1Ý˜q‘M”M�Ý+¨AÑ.Ô.�Ø�GŠG�A‰JŒJˆJØ	�Š‰
Œ
ˆ
ˆ
ˆ
øõ+ ð ñ ð Øõ ÔÝŒJÔ¨¸'ÐQUð
ñ 
ô 
ˆð �œÒ&Ð&àð �s˜2”w $’�Ø�t‘�Ø�GŠG�C‰LŒLˆLˆLØ�IœN­IÔ,@ÐAÐAÐAÝ”,�xœ|Ñ,Ô,ˆCØ' Ð'Ð'ˆHØ' #Ð'Ð'ˆHÝ�S˜#˜x¨Ñ2Ô2ˆAØ�YÔ1Ò1Ð1Ý˜q‘M”M�Ý+¨AÑ.Ô.�Ø�GŠG�A‰JŒJˆJØ	�Š‰
Œ
ˆ
ˆ
ˆ
ð+øøøøõ ÔÝŒJÔ¨¸'ÐQUð
ñ 
ô 
ˆð �œÒ&Ð&àð �s˜2”w $’�Ø�t‘�Ø�GŠG�C‰LŒLˆLˆLØ�IœN­IÔ,@ÐAÐAÐAÝ”,�xœ|Ñ,Ô,ˆCØ' Ð'Ð'ˆHØ' #Ð'Ð'ˆHÝ�S˜#˜x¨Ñ2Ô2ˆAØ�YÔ1Ò1Ð1Ý˜q‘M”M�Ý+¨AÑ.Ô.�Ø�GŠG�A‰JŒJˆJØ	�Š‰
Œ
ˆ
ˆ
øøøs%   ÁF  Æ JÆJ ÊJÊJ ÊDN*rj  rk  c                óL   — t          | |¦  «         t          | |||¬¦  «         dS )zÒPerform stability and equivalence checks.

    Raise AssertionError if source and destination contents are not
    equivalent, or if a second pass of the formatter would format the
    content differently.
    ©rþ   r   N)Úassert_equivalentÚassert_stable)rj  rk  rþ   r   s       ri   Úcheck_stability_and_equivalencerz    s1   € õ �l LÑ1Ô1Ð1Ý�, °4¸uÐEÑEÔEÐEÐEÐErk   c                ó°   — |j         rt          | ||¬¦  «        }nt          | ||¬¦  «        }| |k    rt          ‚|s|j         st	          | |||¬¦  «         |S )a   Reformat contents of a file and return new contents.

    If `fast` is False, additionally confirm that the reformatted code is
    valid by calling :func:`assert_equivalent` and :func:`assert_stable` on it.
    `mode` is passed to :func:`format_str`.
    ©râ   rþ   rw  )rø   Úformat_ipynb_stringÚ
format_strrT   rz  )rj  râ   rþ   r   rk  s        ri   r]  r]    sƒ   € ð „}ð HÝ*¨<¸dÈÐNÑNÔNˆˆå! ,°TÀÐGÑGÔGˆØ�|Ò#Ð#ÝÐàð 
˜œð 
å'Ø˜,¨T¸ð	
ñ 	
ô 	
ð 	
ð Ðrk   c                 óæ   ‡ — t          ˆ fd„t          D ¦   «         ¦  «        rt          ‚‰ dd…         dk    r8‰                      ¦   «         d         dd…         t          |j        z  vr	t          ‚dS dS )aé  Check that cell does not already contain TransformerManager transformations,
    or non-Python cell magics, which might cause tokenizer_rt to break because of
    indentations.

    If a cell contains ``!ls``, then it'll be transformed to
    ``get_ipython().system('ls')``. However, if the cell originally contained
    ``get_ipython().system('ls')``, then it would get transformed in the same way:

        >>> TransformerManager().transform_cell("get_ipython().system('ls')")
        "get_ipython().system('ls')
"
        >>> TransformerManager().transform_cell("!ls")
        "get_ipython().system('ls')
"

    Due to the impossibility of safely roundtripping in such situations, cells
    containing transformed magics will be ignored.
    c              3   ó    •K  — | ]}|‰v V — Œ	d S rc   rr   )r€   Útransformed_magicrw   s     €ri   ú	<genexpr>z validate_cell.<locals>.<genexpr>K  s*   øè è € Ð
PÐ
PÐ(9Ð Ð#Ð
PÐ
PÐ
PÐ
PÐ
PÐ
Prk   Nr\   z%%r   )Úanyr.   rT   r  r-   rå   )rw   rþ   s   ` ri   Úvalidate_cellr„  :  s~   ø€ õ" Ð
PÐ
PÐ
PÐ
PÕ=OÐ
PÑ
PÔ
PÑPÔPð ÝÐàˆBˆQˆBŒ�4ŠˆØ�IŠI‰KŒK˜ŒN˜1˜2˜2ÔÕ&8¸4Ô;RÑ&RÐRÐRåÐð 	ˆØRÐRrk   c                ón  — t          | |¦  «         t          | ¦  «        \  }}	 t          |¦  «        \  }}n# t          $ r	 t          d‚w xY wt          ||¬¦  «        }|st          |||¬¦  «         t          ||¦  «        }t          ||¦  «        }	|	 	                    d¦  «        }	|	| k    rt          d‚|	S )aà  Format code in given cell of Jupyter notebook.

    General idea is:

      - if cell has trailing semicolon, remove it;
      - if cell has IPython magics, mask them;
      - format cell;
      - reinstate IPython magics;
      - reinstate trailing semicolon (if originally present);
      - strip trailing newlines.

    Cells with syntax errors will not be processed, as they
    could potentially be automagics or multi-line magics, which
    are currently not supported.
    N©rþ   rº   )
r„  r2   r0   ÚSyntaxErrorrT   r~  rz  r3   r1   Úrstrip)
rw   râ   rþ   Úsrc_without_trailing_semicolonÚhas_trailing_semicolonÚ
masked_srcÚreplacementsÚ
masked_dstÚdst_without_trailing_semicolonrt  s
             ri   Úformat_cellr�  T  sè   € õ  �#�tÑÔÐÝ=VØñ>ô >Ñ:Ð"Ð$:ð'Ý#,Ð-KÑ#LÔ#LÑ ˆ
�L�LøÝð 'ð 'ð 'Ý $Ð&ð'øøøå˜J¨TÐ2Ñ2Ô2€JØð KÝ'¨
°JÀTÐJÑJÔJÐJÝ%0°¸\Ñ%JÔ%JÐ"Ý
%Ø&Ð(>ñô €Cð �*Š*�TÑ
Ô
€CØ
ˆc‚z€zÝ $Ð&Ø€Js	   ¤7 ·A
Únbc                 ó¦   — |                       di ¦  «                              di ¦  «                              dd¦  «        }|�|dk    r
t          d‚dS dS )zþIf notebook is marked as non-Python, don't format it.

    All notebook metadata fields are optional, see
    https://nbformat.readthedocs.io/en/latest/format_description.html. So
    if a notebook has empty metadata, we will try to parse it anyway.
    ÚmetadataÚlanguage_infor›   NÚpython)r‰   rT   )r�  Úlanguages     ri   Úvalidate_metadatar–  y  s]   € ð �vŠv�j "Ñ%Ô%×)Ò)¨/¸2Ñ>Ô>×BÒBÀ6È4ÑPÔP€HØÐ ¨HÒ 4Ð 4Ý $Ð&ð ÐÐ 4Ð 4rk   c                óÆ  — | st           ‚| d         dk    }d}t          j        | ¦  «        }t          |¦  «         |d         D ]v}|                     dd¦  «        dk    rZ	 d                     |d	         ¦  «        }t          |||¬
¦  «        }|                     d¬¦  «        |d	<   d}Œf# t           $ r Y Œrw xY wŒw|r t          j        |dd¬¦  «        }	|r|	dz   }	|	S t           ‚)z´Format Jupyter notebook.

    Operate cell-by-cell, only on code cells, only for Python notebooks.
    If the ``.ipynb`` originally had a trailing newline, it'll be preserved.
    rØ   rº   FÚcellsÚ	cell_typeNrà   rr  Úsourcer|  T)Úkeependsr[   )ÚindentÚensure_ascii)	rT   ÚjsonÚloadsr–  r‰   r¤   r�  Ú
splitlinesÚdumps)
rj  râ   rþ   Útrailing_newlineÚmodifiedr�  Úcellrw   rt  rk  s
             ri   r}  r}  …  s#  € ð ð ÝÐà# BÔ'¨4Ò/ÐØ€HÝ	Œ�LÑ	!Ô	!€BÝ�bÑÔÐØ�7”ð 	 ð 	 ˆØ�8Š8�K Ñ&Ô&¨&Ò0Ð0ð Ø—g’g˜d 8œnÑ-Ô-�Ý! #¨D°tÐ<Ñ<Ô<�ð "%§¢¸ Ñ!>Ô!>��X‘Ø��øõ	 "ð ð ð Ø�ðøøøð	 1ð ð Ý”z "¨Q¸UÐCÑCÔCˆØð 	/Ø'¨$Ñ.ˆLØÐåÐs   Á -B)Â)
B6Â5B6c                ó¬   — |rt          || ¦  «        }|s| S t          | ||¬¦  «        }| |k    r%|rt          || |¦  «        }t          |||¬¦  «        S |S )aÄ  Reformat a string and return new contents.

    `mode` determines formatting options, such as how many characters per line are
    allowed.  Example:

    >>> import black
    >>> print(black.format_str("def f(arg:str='')->None:...", mode=black.Mode()))
    def f(arg: str = "") -> None:
        ...

    A more complex example:

    >>> print(
    ...   black.format_str(
    ...     "def f(arg:str='')->None: hey",
    ...     mode=black.Mode(
    ...       target_versions={black.TargetVersion.PY36},
    ...       line_length=10,
    ...       string_normalization=False,
    ...       is_pyi=False,
    ...     ),
    ...   ),
    ... )
    def f(
        arg: str = '',
    ) -> None:
        hey

    rw  )rR   Ú_format_str_oncerO   )rj  rþ   r   rk  s       ri   r~  r~  ¥  s€   € ð@ ð  Ý  |Ñ4Ô4ˆØð 	 ØÐÝ# L°tÀ5ÐIÑIÔI€Lð �|Ò#Ð#Øð 	FÝ" 5¨,¸ÑEÔEˆEÝ °4¸uÐEÑEÔEÐEØÐrk   c                óº  ‡— t          |                      ¦   «         |j        ¦  «        }g }|j        r|j        Šn t          |¦  «        }t	          ||¬¦  «        Šˆfd„t
          j        hD ¦   «         }t          |||¦  «         |rt          ||¦  «         t          ||¬¦  «        }t          |¬¦  «        }ˆfd„t
          j        t
          j        hD ¦   «         }	d }
|                     |¦  «        D ]h}|                     |¦  «        }
|                     |
¦  «         t!          |||	¬¦  «        D ])}|
j                             t%          |¦  «        ¦  «         Œ*Œi|rd|d         _        g }|D ])}
|                     |
                     ¦   «         ¦  «         Œ*|s.t-          |                      d¦  «        ¦  «        \  }}}d	|v r|S d
S d
                     |¦  «        S )N©Úfuture_importsc                 ó4   •— h | ]}t          ‰|¦  «        ¯|’ŒS rr   ©r?   ©r€   Úfeaturer  s     €ri   rœ   z#_format_str_once.<locals>.<setcomp>ß  s9   ø€ ð  ð  ð  àÝ˜H gÑ.Ô.ð Øð ð  ð  rk   )rþ   Úfeaturesr†  c                 ó4   •— h | ]}t          ‰|¦  «        ¯|’ŒS rr   r«  r¬  s     €ri   rœ   z#_format_str_once.<locals>.<setcomp>ë  s;   ø€ ð ð ð àõ ˜H gÑ.Ô.ðØðð ð rk   r   rØ   rq  rº   rr  )rL   Úlstriprö   Úget_future_importsÚdetect_target_versionsr;   ÚPARENTHESIZED_CONTEXT_MANAGERSr   rP   r5   r7   ÚTRAILING_COMMA_IN_CALLÚTRAILING_COMMA_IN_DEFÚvisitÚmaybe_empty_linesr£   r6   Úcontent_linesr   ÚafterÚextendÚ	all_linesr\  Úencoder¤   )rj  rþ   r   Úsrc_nodeÚ
dst_blocksr©  Úcontext_manager_featuresÚline_generatorÚeltÚsplit_line_featuresÚblockÚcurrent_lineÚlinerk  Únormalized_contentÚ_rR  r  s                    @ri   r¦  r¦  Ô  sL  ø€ õ ˜\×0Ò0Ñ2Ô2°DÔ4HÑIÔI€HØ#%€JØÔð SØÔ'ˆˆå+¨HÑ5Ô5ˆÝ)¨(À>ÐRÑRÔRˆð ð  ð  ð  åÔ>Ð?ð ñ  ô  Ðõ
 �h  eÑ,Ô,Ð,Øð 1å ¨%Ñ0Ô0Ð0å"¨Ð7OÐPÑPÔP€NÝ
 Ð
%Ñ
%Ô
%€Cðð ð ð õ Ô*ÝÔ)ð
ðñ ô Ðð #'€EØ&×,Ò,¨XÑ6Ô6ð 2ð 2ˆØ×%Ò% lÑ3Ô3ˆØ×Ò˜%Ñ Ô Ð Ý"Ø˜tÐ.Að
ñ 
ô 
ð 	2ð 	2ˆDð Ô×&Ò&¥s¨4¡y¤yÑ1Ô1Ð1Ð1ð	2ð ð !Ø ˆ
�2ŒÔØ€LØð /ð /ˆØ×Ò˜EŸOšOÑ-Ô-Ñ.Ô.Ð.Ð.Øð õ *6°l×6IÒ6IÈ'Ñ6RÔ6RÑ)SÔ)SÑ&Ð˜A˜wØÐ%Ð%Ð%ØˆNØˆrØ�7Š7�<Ñ Ô Ð rk   c                 óV  — t          j        | ¦  «        }t          j        |j        ¦  «        \  }}|sd|dfS d|d         dd…         k    rdnd}|                     d¦  «         t          j        ||¦  «        5 }|                     ¦   «         ||fcddd¦  «         S # 1 swxY w Y   dS )z¸Return a tuple of (decoded_contents, encoding, newline).

    `newline` is either CRLF or LF but `decoded_contents` is decoded with
    universal newlines (i.e. only contains LF).
    rr  rº   s   
r   éþÿÿÿNz
)ra  ÚBytesIOÚtokenizeÚdetect_encodingr[  Úseekrb  rF  )rw   ÚsrcbufrQ  r   rR  Útiows         ri   r\  r\  
  sð   € õ ŒZ˜‰_Œ_€FÝÔ.¨v¬Ñ?Ô?�O€HˆeØð "Ø�8˜TÐ!Ð!à 5¨¤8¨B¨C¨C¤=Ò0Ð0ˆfˆf°d€GØ
‡K‚K��N„N€NÝ	Ô	˜& (Ñ	+Ô	+ð .¨tØ�yŠy‰{Œ{˜H gÐ-ð.ð .ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   Á:BÂB"Â%B"r¨  Únoder©  c                óø  — t          ¦   «         }|r|d„ |D ¦   «         z  }|                      ¦   «         D �]Ä}|j        t          j        k    r |                     t          j        ¦  «         Œ8|j        t          j        k    rJ|j	        �Ct          d„ |j	        j        D ¦   «         ¦  «        r |                     t          j        ¦  «         Œ—t          |¦  «        r)d|j        v r|                     t          j        ¦  «         ŒÏ|j        t          j        k    rW|j	        rN|j	        j        t"          j        t"          j        t"          j        hv r|                     t          j        ¦  «         �Œ;|j        t          j        k    r!|                     t          j        ¦  «         �Œq|j        t"          j        k    rSt3          |j        ¦  «        dk    r9t5          |j        d         ¦  «        s|                     t          j        ¦  «         �ŒÙ|j        t"          j        t"          j        hv rÆ|j        r¿|j        d         j        t          j        k    rŸ|j        t"          j        k    rt          j        }nt          j        }|j        D ]g}|j        t>          v r|                     |¦  «         |j        t"          j         k    r-|j        D ]%}|j        t>          v r|                     |¦  «         Œ&Œh�Œ¾|j        t"          j!        t"          j"        hv r‚t3          |j        ¦  «        dk    rj|j        d         j        t"          j#        k    rJt          d„ |j        d         j        D ¦   «         ¦  «        r!|                     t          j$        ¦  «         �Œ_|j        t"          j%        k    rYt3          |j        ¦  «        d	k    rA|j        d
         j        t"          j#        k    r!|                     t          j&        ¦  «         �ŒÍ|j        t"          j'        k    rÉt3          |j        ¦  «        dk    r±|j        d         j        t"          j(        k    r‘|j        d         j        }t3          |¦  «        d
k    rj|d         j        t          j)        k    rOtU          |d         ¦  «        r:|d         j        t          j+        k    r|                     t          j,        ¦  «         �Œ«|j        t"          j-        k    r!|                     t          j.        ¦  «         �Œá|j        t"          j/        k    rYt3          |j        ¦  «        dk    rA|j        d         j        t          j0        k    r!|                     t          j1        ¦  «         �ŒO|j        t"          j2        t"          j3        hv r?t          d„ |j        D ¦   «         ¦  «        r!|                     t          j4        ¦  «         �Œ­|j        t"          j5        k    rYt3          |j        ¦  «        d
k    rA|j        d         j        t"          j6        k    r!|                     t          j4        ¦  «         �Œ|j        t"          j7        t"          j8        fv r!|                     t          j9        ¦  «         �Œ[|j        t"          j:        t"          j;        t"          j<        fv r?|j        d         j        t          j=        k    r|                     t          j>        ¦  «         �ŒÆ|S )aY  Return a set of (relatively) new Python features used in this file.

    Currently looking for:
    - f-strings;
    - self-documenting expressions in f-strings (f"{x=}");
    - underscores in numeric literals;
    - trailing commas after * or ** in function signatures and calls;
    - positional only arguments in function signatures and lambdas;
    - assignment expression;
    - relaxed decorator syntax;
    - usage of __future__ flags (annotations);
    - print / exec statements;
    - parenthesized context managers;
    - match statements;
    - except* clause;
    - variadic generics;
    c                 ó:   — h | ]}|t           v ¯t           |         ’ŒS rr   )r9   )r€   Úfuture_imports     ri   rœ   z$get_features_used.<locals>.<setcomp>1  s3   € ð 
ð 
ð 
àØÕ 6Ð6Ð6õ # =Ô1à6Ð6Ð6rk   Nc              3   ó@   K  — | ]}|j         t          j        k    V — Œd S rc   )rÇ   rV   ÚEQUAL©r€   Úchilds     ri   r‚  z$get_features_used.<locals>.<genexpr>=  s+   è è € ÐMÐM°%�E”J¥%¤+Ò-ÐMÐMÐMÐMÐMÐMrk   rÇ  r[   rØ   r\   c              3   ó@   K  — | ]}|j         t          j        k    V — Œd S rc   ©rÇ   rC   Ú	star_exprrÖ  s     ri   r‚  z$get_features_used.<locals>.<genexpr>m  s+   è è € ÐUÐU°U�E”J¥$¤.Ò0ÐUÐUÐUÐUÐUÐUrk   r^   r]   r   c              3   ó@   K  — | ]}|j         t          j        k    V — Œd S rc   rÙ  rÖ  s     ri   r‚  z$get_features_used.<locals>.<genexpr>�  sD   è è € ð B
ð B
Ø-2ˆEŒJ�$œ.Ò(ðB
ð B
ð B
ð B
ð B
ð B
rk   rÉ  )?r  Ú	pre_orderrÇ   rV   ÚFSTRING_STARTr)  r;   Ú	F_STRINGSÚRBRACEÚparentrƒ  ÚchildrenÚDEBUG_F_STRINGSrA   ru   ÚNUMERIC_UNDERSCORESÚSLASHrC   ÚtypedargslistÚarglistÚvarargslistÚPOS_ONLY_ARGUMENTSÚ
COLONEQUALÚASSIGNMENT_EXPRESSIONSÚ	decoratorr  rB   ÚRELAXED_DECORATORSÚCOMMArµ  r´  r@   ÚargumentÚreturn_stmtÚ
yield_exprÚtestlist_star_exprÚUNPACKING_ON_FLOWÚ	annassignÚANN_ASSIGN_EXTENDED_RHSÚ	with_stmtÚatomÚLPARÚ_contains_asexprÚRPARr³  Ú
match_stmtÚPATTERN_MATCHINGÚexcept_clauseÚSTARÚEXCEPT_STARÚsubscriptlistÚtrailerÚVARIADIC_GENERICSÚ
tname_starrÚ  Ú	type_stmtÚ
typeparamsÚTYPE_PARAMSÚtypevartupleÚ	paramspecÚtypevarrÕ  ÚTYPE_PARAM_DEFAULTS)rÐ  r©  r®  Únr­  ÚchÚargchÚatom_childrens           ri   Úget_features_usedr    sÝ  € õ( !™UœU€HØð 
Øð 
ð 
à!/ð
ñ 
ô 
ñ 	
ˆð �^Š^ÑÔð l6ñ l6ˆØŒ6•UÔ(Ò(Ð(Ø�LŠL�Ô*Ñ+Ô+Ð+Ð+àŒF•e”lÒ"Ð"Ø”Ð$ÝÐMÐM¸1¼8Ô;LÐMÑMÔMÑMÔMð %ð �LŠL�Ô0Ñ1Ô1Ð1Ð1å˜QÑÔð b	6Ø�a”gˆ~ˆ~Ø—’�WÔ8Ñ9Ô9Ð9øàŒV•u”{Ò"Ð"ØŒxð 9˜AœHœMÝÔ"Ý”ÝÔ ð.ð ð ð
 —’�WÔ7Ñ8Ô8Ð8ùàŒV•uÔ'Ò'Ð'Ø�LŠL�Ô7Ñ8Ô8Ð8Ñ8àŒV•t”~Ò%Ð%Ý�1”:‰Œ Ò"Ð"Õ+IØ”
˜1”ñ,ô ,Ð"ð —’�WÔ7Ñ8Ô8Ð8ùð ŒF•tÔ)­4¬<Ð8Ð8Ð8Ø”
ð 9à”
˜2”Ô#¥u¤{Ò2Ð2àŒv�Ô+Ò+Ð+Ý!Ô7��å!Ô8�à”jð 2ð 2�Ø”7�eÐ#Ð#Ø—L’L Ñ)Ô)Ð)à”7�dœmÒ+Ð+Ø!#¤ð 2ð 2˜Ø œ:­Ð.Ð.Ø$ŸLšL¨Ñ1Ô1Ð1øøñ2ð ŒF•tÔ'­¬Ð9Ð9Ð9Ý�A”J‘” 1Ò$Ð$Ø”
˜1”Ô"¥dÔ&=Ò=Ð=ÝÐUÐU¸a¼jÈ¼mÔ>TÐUÑUÔUÑUÔUð >ð �LŠL�Ô2Ñ3Ô3Ð3Ñ3ð ŒF•d”nÒ$Ð$Ý�A”J‘” 1Ò$Ð$Ø”
˜1”Ô"¥dÔ&=Ò=Ð=à�LŠL�Ô8Ñ9Ô9Ð9Ñ9ð ŒF•d”nÒ$Ð$Ý�A”J‘” !Ò#Ð#Ø”
˜1”Ô"¥d¤iÒ/Ð/àœJ qœMÔ2ˆMå�MÑ"Ô" aÒ'Ð'Ø! !Ô$Ô)­U¬ZÒ7Ð7Ý$ ]°1Ô%5Ñ6Ô6ð 8à! !Ô$Ô)­U¬ZÒ7Ð7à—’�WÔCÑDÔDÐDùàŒV•t”Ò&Ð&Ø�LŠL�Ô1Ñ2Ô2Ð2Ñ2ð ŒF•dÔ(Ò(Ð(Ý�A”J‘” 1Ò$Ð$Ø”
˜1”Ô"¥e¤jÒ0Ð0à�LŠL�Ô,Ñ-Ô-Ð-Ñ-àŒV�Ô*­D¬LÐ9Ð9Ð9½cð B
ð B
Ø67´jðB
ñ B
ô B
ñ ?
ô ?
Ð9ð �LŠL�Ô2Ñ3Ô3Ð3Ñ3ð ŒF•d”oÒ%Ð%Ý�A”J‘” 1Ò$Ð$Ø”
˜1”Ô"¥d¤nÒ4Ð4à�LŠL�Ô2Ñ3Ô3Ð3Ñ3àŒV�œ­¬Ð8Ð8Ð8Ø�LŠL�Ô,Ñ-Ô-Ð-Ñ-ð ŒF•tÔ(­$¬.½$¼,ÐGÐGÐGØ”
˜2”Ô#¥u¤{Ò2Ð2à�LŠL�Ô4Ñ5Ô5Ð5ùà€Ork   c                 óª  — | j         t          j        k    rdS | j         t          j        k    rst	          | j        ¦  «        dk    rZ| j        d         j         t          j        k    r:| j        d         j         t          j        k    rt          | j        d         ¦  «        S n3| j         t          j
        k    rt          d„ | j        D ¦   «         ¦  «        S dS )z-Return True if `node` contains an as-pattern.Tr]   r   r\   r[   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rc   )rø  rÖ  s     ri   r‚  z#_contains_asexpr.<locals>.<genexpr>´  s+   è è € ÐFÐF¨uÕ# EÑ*Ô*ÐFÐFÐFÐFÐFÐFrk   F)rÇ   rC   Úasexpr_teströ  r  rá  rV   r÷  rù  rø  Útestlist_gexprƒ  )rÐ  s    ri   rø  rø  ¨  s³   € à„y•DÔ$Ò$Ð$ØˆtØ	Œ•d”iÒ	Ð	å�”ÑÔ !Ò#Ð#Ø”˜aÔ Ô%­¬Ò3Ð3Ø”˜aÔ Ô%­¬Ò3Ð3å# D¤M°!Ô$4Ñ5Ô5Ð5øØ	Œ•dÔ(Ò	(Ð	(ÝÐFÐF¸¼ÐFÑFÔFÑFÔFÐFØˆ5rk   c                óL   ‡— t          | |¬¦  «        Šˆfd„t          D ¦   «         S )z5Detect the version to target based on the nodes used.r¨  c                 ó6   •— h | ]}‰t           |         k    ¯|’ŒS rr   )r:   )r€   r   r®  s     €ri   rœ   z)detect_target_versions.<locals>.<setcomp>½  s1   ø€ ð ð ð Ø°Õ<OÐPWÔ<XÒ0XÐ0XˆÐ0XÐ0XÐ0Xrk   )r  r>   )rÐ  r©  r®  s     @ri   r²  r²  ¸  sB   ø€ õ ! °nÐEÑEÔE€Hðð ð ð Ý,ðñ ô ð rk   c           	      ó~  ‡— t          ¦   «         }dt          t                   dt          t          ddf         fˆfd„Š| j        D ]ø}|j        t          j        k    r nà|j        d         }t          |t          ¦  «        rPt          |j        ¦  «        dk    r6|j        t          j        k    r!|j        d         j        t          j        k    rŒ‰ nn|j        t          j        k    rX|j        d         }t          |t          ¦  «        r|j        dk    r n*|t           ‰|j        d	d…         ¦  «        ¦  «        z  }Œø |S )
z/Return a set of __future__ imports in the file.rá  ra   Nc              3   óÆ  •K  — | D ]Ú}t          |t          ¦  «        r|j        t          j        k    r	|j        V — Œ6|j        t          j        k    rU|j        d         }t          |t          ¦  «        s
J d¦   «         ‚|j        t          j        k    s
J d¦   «         ‚|j        V — Œ |j        t          j	        k    r ‰|j        ¦  «        E d {V —† ŒÌt          d¦  «        ‚d S )Nr   zInvalid syntax parsing imports)r|   rW   rÇ   rV   ÚNAMEru   rC   Úimport_as_namerá  Úimport_as_namesÚAssertionError)rá  r×  Ú	orig_nameÚget_imports_from_childrens      €ri   r  z5get_future_imports.<locals>.get_imports_from_childrenÆ  s  øè è € Øð 	Gð 	GˆEÝ˜%¥Ñ&Ô&ð GØ”:¥¤Ò+Ð+Øœ+Ð%Ð%Ð%øà”�tÔ2Ò2Ð2Ø!œN¨1Ô-�	Ý! )­TÑ2Ô2ÐTÐTÐ4TÑTÔTÐTØ ”~­¬Ò3Ð3Ð3Ð5UÑ3Ô3Ð3Ø”oÐ%Ð%Ð%Ð%à”�tÔ3Ò3Ð3Ø4Ð4°U´^ÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDõ %Ð%EÑFÔFÐFð	Gð 	Grk   r   r\   r[   Ú
__future__r]   )r  r   r4   r   r   rá  rÇ   rC   Úsimple_stmtr|   rW   r  rV   ÚSTRINGÚNEWLINEÚimport_fromru   )rÐ  Úimportsr×  Úfirst_childÚmodule_namer  s        @ri   r±  r±  Â  sQ  ø€ å™œ€GðG­Dµ¬Hð G½Å3ÈÈdÀ?Ô9Sð Gð Gð Gð Gð Gð Gð$ ”ð ð ˆØŒ:�Ô)Ò)Ð)ØˆEà”n QÔ'ˆÝ�k¥4Ñ(Ô(ð 	õ �E”NÑ#Ô# qÒ(Ð(ØÔ$­¬Ò4Ð4Ø”N 1Ô%Ô*­e¬mÒ;Ð;ààˆEàÔ¥Ô!1Ò1Ð1Ø%Ô.¨qÔ1ˆKÝ˜k­4Ñ0Ô0ð °KÔ4EÈÒ4UÐ4UØ�à•sÐ4Ð4°[Ô5IÈ!È"È"Ô5MÑNÔNÑOÔOÑOˆGˆGàà€Nrk   rt  c                 óR  — 	 t          | ¦  «        }n&# t          $ r}t          d|› d�¦  «        |‚d}~ww xY w	 t          |¦  «        }nb# t          $ rU}t          d                     t          j        |j        ¦  «        ¦  «        |¦  «        }t          d|› d|› �¦  «        d‚d}~ww xY wd                     t          |¦  «        ¦  «        }d                     t          |¦  «        ¦  «        }||k    r2t          t          ||dd	¦  «        ¦  «        }t          d
|› �¦  «        d‚dS )z:Raise AssertionError if `src` and `dst` aren't equivalent.zCcannot use --safe with this file; failed to parse source file AST: z~
This could be caused by running Black with an older Python version that does not support new syntax used in your source file.Nrr  z-INTERNAL ERROR: Black produced invalid code: ze. Please report a bug on https://github.com/psf/black/issues.  This invalid output might be helpful: rº   rw   rt  z¤INTERNAL ERROR: Black produced code that is not equivalent to the source.  Please report a bug on https://github.com/psf/black/issues.  This diff might be helpful: )
rM   r:  rJ   rF   r¤   r;  Ú	format_tbÚ__traceback__rN   rE   )rw   rt  Úsrc_astr?  Údst_astÚlogÚsrc_ast_strÚdst_ast_strs           ri   rx  rx  ô  s‚  € ðÝ˜C‘.”.ˆˆøÝð ð ð ÝðIØðIð Ið Iñ
ô 
ð
 ð	øøøøðøøøðÝ˜C‘.”.ˆˆøÝð ð ð Ý˜2Ÿ7š7¥9Ô#6°sÔ7HÑ#IÔ#IÑJÔJÈCÑPÔPˆÝð;¸Cð ;ð ;à58ð;ð ;ñ
ô 
ð ð		øøøøðøøøð —)’)�M¨'Ñ2Ô2Ñ3Ô3€KØ—)’)�M¨'Ñ2Ô2Ñ3Ô3€KØ�kÒ!Ð!Ý�4 ¨[¸%ÀÑGÔGÑHÔHˆÝðWàQTðWð Wñ
ô 
ð ð		ð "Ð!s(   ‚ ’
5œ0°5¹A	 Á	
B(ÁAB#Â#B(c          
      óà   — |rdS t          |||¬¦  «        }||k    rQt          t          |¦  «        t          | |dd¦  «        t          ||dd¦  «        ¦  «        }t	          d|› �¦  «        d‚dS )zDRaise AssertionError if `dst` reformats differently the second time.Nrw  rš  z
first passzsecond passz­INTERNAL ERROR: Black produced different code on the second pass of the formatter.  Please report a bug on https://github.com/psf/black/issues.  This diff might be helpful: )r¦  rF   r   rE   r  )rw   rt  rþ   r   Únewdstr*  s         ri   ry  ry    sž   € ð ð ð 	ˆõ ˜c¨°EÐ:Ñ:Ô:€FØ
ˆf‚}€}ÝÝ�‰IŒIÝ��c˜8 \Ñ2Ô2Ý��f˜l¨MÑ:Ô:ñ
ô 
ˆõ
 ð3à-0ð3ð 3ñ
ô 
ð ð		ð €}rk   c               #   ó   K  — dV — dS )zWReturn an empty context manager.

    To be used like `nullcontext` in Python 3.7.
    Nrr   rr   rk   ri   r`  r`  1  s   è è € ð 
€E€E€E€E€Erk   c                  ón   — t          t          dd¦  «        rddlm}   | ¦   «          t	          ¦   «          d S )NÚfrozenFr   ©Úfreeze_support)Úgetattrrc  Úmultiprocessingr3  r  r2  s    ri   Úpatched_mainr6  :  sE   € õ �s�H˜eÑ$Ô$ð Ø2Ð2Ð2Ð2Ð2Ð2àˆÑÔÐå�F„F€F€F€Frk   Ú__main__)ra   N)³ra  rž  Úplatformr»   rc  rË  r;  Ú
contextlibr   Údataclassesr   r   r   Úenumr   Újson.decoderr   Úpathlibr	   Útypingr
   r   r   r   r   r   r   r   r   r   r   r   r   r   rŒ   Ú
click.corer   Úmypy_extensionsr   Úpathspecr   Úpathspec.patterns.gitwildmatchr   Ú_black_versionr   r  Úblack.cacher   Úblack.commentsr   Úblack.constr   r    r!   r"   Úblack.filesr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Úblack.handle_ipynb_magicsr-   r.   r/   r0   r1   r2   r3   Úblack.linegenr4   r5   r6   Úblack.linesr7   r8   Ú
black.moder9   r:   r;   r<   r=   r>   r?   Úblack.nodesr@   rA   rB   rC   Úblack.outputrD   rE   rF   rG   rH   rI   Úblack.parsingrJ   rK   rL   rM   rN   Úblack.rangesrO   rP   rQ   rR   Úblack.reportrS   rT   rU   Úblib2to3.pgen2rV   Úblib2to3.pytreerW   rX   Ú__file__r(  ÚCOMPILEDr   ÚFileContentÚEncodingÚNewLinerZ   ÚFileModeÚContextÚ	Parameterr•   rŽ   ÚOptionr´   r·   r¾   rÂ   r¢   ÚoptionÚintÚChoicer¤   ÚsortedÚIntRangeÚversion_optionÚpython_implementationÚpython_versionrî  Úpass_contextrq   r  r  r  r  r  ro   rI  r8  rz  r]  r„  r�  r–  r}  r~  r¦  Úbytesr\  r  rø  r²  r±  rx  ry  r`  r6  rl   rr   rk   ri   ú<module>rf     s'  ðØ 	€	€	€	Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ Cà 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ #Ð #Ð #Ð #Ð #Ð #Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &àˆ4�‰>Œ>Ô  OÐ3€ð €Ø€Ø
€ð-ð -ð -ð -ð -�ñ -ô -ð -ð* €ð>Ø	Œð>Ø$œð>Ø7?À´}ð>àˆc„]ð>ð >ð >ð >ðB
Ø	Œð
Ø%)¨#¤Yð
ØBEð
à	ð
ð 
ð 
ð 
ð 5Ø„}ð5Ø˜uœ|¨U¬_Ð<Ô=ð5ØBGÈÈSÈÄ/ð5à	ˆ-Ôð5ð 5ð 5ð 5ð'Ø„}ð'Ø˜uœ|¨U¬_Ð<Ô=ð'ØBGÈÈSÈÄ/ð'à	ˆ'„]ð'ð 'ð 'ð 'ð Cð ¨G°C¬Lð ð ð ð ðSØ	ŒðSàŒ?ðSð �CŒ=ðSð ˆg�cŒlÔð	Sð Sð Sð Sð €„Ø)¨D°(Ð+;Ð<ð 
.ð	ñ ô ð €„ˆd�H 3Ð-UÐVÑVÔVØ€„ØØØ	ØØ	1Øðñ ô ð €„ØØØ	ˆŒÐ=Ð=¨}Ð=Ñ=Ô=Ñ	>Ô	>Ø+Øð	Qðñ ô ð €„ØØð	;ð	ñ ô ð €„ØØð	@ð	ñ ô ð €„ØØð	BØ$(§I¢I¨f¨fÐ5GÑ.HÔ.HÑ$IÔ$Ið	Bð 	Bð 	Bð ð	ñ 	ô 	ð €„ØØØØ	2ð	ñ ô ð €„ØØ!ØØ	5ð	ñ ô ð €„ØØ!ØØ	@ð	ñ ô ð €„ØØð	4ð	ñ ô ð €„ØØð	'ð	ñ ô ð €„ØØ	ˆŒÐ/Ð/ wÐ/Ñ/Ô/Ñ	0Ô	0Ø-Øð	2ð
ñ 
ô 
ð €„ØØð	>ð	ñ ô ð €„ØØð	Xð	ñ ô ð €„ØØØ	Qðñ ô ð
 €„ØØØð	#ð ðñ ô ð €„ØØð	!ð	ñ ô ð €„ØØ	ð	(ð	
ñ 
ô 
ð €„ØØ	Øð	Vð CSð		Vð 	Vð 	Vð ðñ ô ð €„ØØ	Øð	6ðñ ô ð €„ØØ	Øð	"ð
ñ 
ô 
ð €„ØØ	Øð	ð	ñ 	ô 	ð €„ØØ	ØØð	!ð ðñ ô ð €„ØØØ	ˆŒ˜AÐ	Ñ	Ô	Øð	0ðñ ô ð €„ØØØð	0ðñ ô ð €„ØØØð	<ð	ñ 	ô 	ð €ÔØð	S°XÐ,G¨E¨EÀ4ð 	Sð 	SØ1�8Ô1Ñ3Ô3ð	Sð 	SØ7N°xÔ7NÑ7PÔ7Pð	Sð 	Sðñ ô ð €„Ø	Ø
Ø	ˆŒØ˜t¨d¸TÈdð
ñ 
ô 
ð Øðñ ô ð €„ØØ	ˆŒØØØØØØð
ñ 
ô 
ð Ø Ø	@ðñ ô ð ÔðK!Ø	ŒðK!à
�3Œ-ðK!ð ðK!ð ˜Ô'ð	K!ð
 ðK!ð ðK!ð ˜#”ðK!ð ðK!ð ðK!ð 
ðK!ð ðK!ð ! œðK!ð !ðK!ð  $ðK!ð  $ðK!ð  ð!K!ð" ð#K!ð$ " 'œ]ð%K!ð& ð'K!ð( ð)K!ð* ˜s”mð+K!ð, �SŒ\ð-K!ð. �g˜c”lÔ#ð/K!ð0 ˜W Sœ\Ô*ð1K!ð2 ˜G CœLÔ)ð3K!ð4 ˜S”Mð5K!ð6 �cŒ]ð7K!ð8 
ˆs�CˆxŒð9K!ð: �SŒMð;K!ð< 
ð=K!ð K!ð K!ñ Ôñô ñô ñô ñ	ô 	ñô ñô ñô ñ	ô 	ñ
ô 
ñô ñô ñ
ô 
ñô ñô ñô ñô ñô ñ
ô 
ñô ñô ñô ñô ñô ñ	ô 	ñô ñô ñô ñô ñ WÔVñô ðdK!ð\Yà
ðYð 
ˆs�CˆxŒðYð ð	Yð
 ðYð �SŒ\ðYð �g˜c”lÔ#ðYð ˜W Sœ\Ô*ðYð ˜G CœLÔ)ðYð ðYð ˜S”MðYð 	ˆ„YðYð Yð Yð Yðx	Ø	ð	Øð	Ø!%ð	Ø04ð	Ø;@¼=ð	à	ð	ð 	ð 	ð 	ð& *,ð&ð &ð &Øð&à
ð&ð ð&ð ð	&ð
 ð&ð �e˜C ˜H”oÔ&ð&ð 
ð&ð &ð &ð &ð@ €�dÐÑÔð *,ð5%ð 5%ð 5%Ø	ð5%à
ð5%ð ð5%ð ð	5%ð
 ð5%ð �e˜C ˜H”oÔ&ð5%ð 
ð5%ð 5%ð 5%ñ Ôð5%ðx &œLØðAð *,ðAð Að AØ	ðAà
ðAð ðAð ð	Að
 ðAð �e˜C ˜H”oÔ&ðAð 
ðAð Að Að AðN "Ø%œLà)+ð1ð 1ð 1Ø
ð1ð �cŒ]ð1ð ð	1ð
 ð1ð �e˜C ˜H”oÔ&ð1ð 
ð1ð 1ð 1ð 1ðr *,ðFð Fð FØðFàðFð ð	Fð
 �e˜C ˜H”oÔ&ðFð 
ðFð Fð Fð Fð, *,ðð ð Øðð ðð ð	ð
 �e˜C ˜H”oÔ&ðð ðð ð ð ð8�sð  $ð ¨4ð ð ð ð ð4"�Sð " 4ð "¨tð "¸ð "ð "ð "ð "ðJ	'˜.¨¨c¨Ô2ð 	'°tð 	'ð 	'ð 	'ð 	'ð cð °Dð Àð Èð ð ð ð ðB LNð,ð ,ð ,Øð,Ø $ð,Ø-7¸¸cÀ3¸h¼Ô-Hð,àð,ð ,ð ,ð ,ð` LNð3!ð 3!ð 3!Øð3!Ø $ð3!Ø-7¸¸cÀ3¸h¼Ô-Hð3!àð3!ð 3!ð 3!ð 3!ðl.�eð .  k°8¸WÐ&DÔ Eð .ð .ð .ð .ð$ 9=ðJð Jð JØ
ðJØ#+¨C°¬HÔ#5ðJàˆ„\ðJð Jð Jð JðZ˜5  t Ô,ð °ð ð ð ð ð" 9=ðð ð Ø
ðØ#+¨C°¬HÔ#5ðàˆÔðð ð ð ð/˜Tð / c¨#¤hð /ð /ð /ð /ðd˜3ð  Sð ¨Tð ð ð ð ðD MOðð ð Ø	ðØðØ"ðØ.8¸¸sÀC¸x¼Ô.Iðà	ðð ð ð ð8 ð
�X˜d”^ð 
ð 
ð 
ñ „ð
ðð ð ð ð ˆzÒÐØ€L�N„N€N€N€Nð Ðrk   