Ë
    ýÿæiù  ã                  óz  — U d dl m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 ddlmZ ddlmZ dd	lmZ erdd
lmZ dZi Zded<   dd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Z ed«      	 	 d 	 	 	 	 	 	 	 	 	 d!d„«       Z ed«      d"d#d„«       Z ed«      d"d#d„«       Zy)$é    )ÚannotationsN)ÚAny)ÚCallable)ÚTYPE_CHECKINGé   )Úutil)Úcompat)Ú_preserving_path_as_str)ÚPostWriteHookConfigÚREVISION_SCRIPT_FILENAMEÚdictÚ	_registryc                ó   ‡ — ˆ fd„}|S )z¿A function decorator that will register that function as a write hook.

    See the documentation linked below for an example.

    .. seealso::

        :ref:`post_write_hooks_custom`


    c                ó   •— | t         ‰<   | S )N)r   )ÚfnÚnames    €úo/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/alembic/script/write_hooks.pyÚdecoratezregister.<locals>.decorate'   s   ø€ ØŒ	�$‰Øˆ	ó    © )r   r   s   ` r   Úregisterr      s   ø€ ôð €Or   c                ó”   — t        |«      }	 t        |    } |||«      S # t        $ r}t        j                  d| › d�«      |‚d}~ww xY w)a1  Invokes the formatter registered for the given name.

    :param name: The name of a formatter in the registry
    :param revision: string path to the revision file
    :param options: A dict containing kwargs passed to the
        specified formatter.
    :raises: :class:`alembic.util.CommandError`
    zNo formatter with name 'z' registeredN)r
   r   ÚKeyErrorr   ÚCommandError)r   Úrevision_pathÚoptionsÚhookÚkes        r   Ú_invoker   .   s_   € ô ,¨MÓ:€Mð,Ü˜‰ˆñ �M 7Ó+Ð+øô ò Ü×ÑØ& t f¨LÐ9ó
àð	ûðús   �	 Ÿ	A¨AÁAc                óú   — |D ]=  }|d   }	 |d   }t        j                  d|›�d¬«      5  t        || |«       ddd«       Œ? y# 1 sw Y   ŒJxY w# t        $ r!}t        j                  d|› d|›�«      |‚d}~ww xY w)	z&Invoke hooks for a generated revision.Ú
_hook_nameÚtypezRunning post write hook T)ÚnewlineNzKey 'z;.type' (or 'type' in toml) is required for post write hook )r   Ústatusr   r   r   )ÚpathÚhooksr   r   Útype_r   s         r   Ú
_run_hooksr(   F   s¢   € ó
 ˆØ�LÑ!ˆð	+Ø˜‘LˆEô —‘Ø*¨4¨(Ð3¸Töô ˜˜t TÔ*÷ð ñ ÷ð ûô ò 	Ü×#Ñ#Ø˜�vð 'Ø'+ hð0óð ðûð	ús"   ŒA«AÁA	Á	A:ÁA5Á5A:c                óÈ   — t         | vrt         dz   | z   } t        j                  | t        j                  ¬«      }|D �cg c]  }|j                  t         |«      ‘Œ }}|S c c}w )züParse options from a string into a list.

    Also substitutes the revision script token with the actual filename of
    the revision script.

    If the revision script token doesn't occur in the options string, it is
    automatically prepended.
    Ú )Úposix)ÚREVISION_SCRIPT_TOKENÚshlexÚsplitr	   Úis_posixÚreplace)Úcmdline_options_strr%   Úcmdline_options_listÚoptions       r   Ú_parse_cmdline_optionsr4   [   sq   € ô Ð$7Ñ7Ü3°cÑ9Ð<OÑOÐÜ Ÿ;™;Ø¤6§?¡?ôÐñ
 +óá*ˆFð 	�‰Ô,¨dÕ3Ø*ð ð ð  Ðùò	s   ¾Ac           
     óz   — 	 | |   S # t         $ r*}t        j                  d| d   › d|› d| d   ›�«      |‚d }~ww xY w)NzKey r!   Ú.z! is required for post write hook )r   r   r   )r   r   r   s      r   Ú_get_required_optionr7   p   sa   € ðØ�t‰}ÐøÜò Ü×ÑØ�7˜<Ñ(Ð)¨¨4¨&ð 1Ø! ,Ñ/Ð2ð4ó
ð ð	ûðús   ‚ ‡	:�%5µ:c                óÔ   — |j                  dd «      }|j                  dd«      }t        || «      }i }|rt        j                  x|d<   |d<   t        j                  g |¢|¢fd|i|¤Ž y )NÚcwdr   Ú ÚstdoutÚstderr)Úgetr4   Ú
subprocessÚDEVNULLÚrun)r%   r   Úignore_outputÚcommandr9   r1   r2   Úkws           r   Ú	_run_hookrD   z   su   € ð —k‘k %¨Ó.€CØ!Ÿ+™+ i°Ó4ÐÜ1Ð2EÀtÓLÐà€BÙÜ&0×&8Ñ&8Ð8ˆˆ8‰�r˜(‘|ä‡N�NÐ4�WÐ4Ð3Ð4ÑD¸#ÐDÀÓDr   Úconsole_scriptsc                óÖ  — t        |d«      }t        j                  d«      D ]  }|j                  |k(  sŒ|} n t	        j
                  d|› �«      ‚|rKd|j                  › d|j                  › d|› d|› d|j                  › d	|j                  › d
|j                  › d�}n*d|j                  › d|j                  › d
|j                  › d�}t        j                  d|g}t        | |||«       y )NÚ
entrypointrE   z*Could not find entrypoint console_scripts.zimport z; assert tuple(int(x) for x in z.__version__.split('.')) >= z, 'need exactly version z of z'; r6   z()z; z-c)r7   r	   Úimportlib_metadata_getr   r   r   ÚmoduleÚattrÚsysÚ
executablerD   )	r%   r   rA   Úverify_versionÚentrypoint_nameÚentryÚimplÚpyscriptrB   s	            r   rE   rE   ˆ   sÿ   € ô +¨7°LÓA€OÜ×.Ñ.Ð/@ÖAˆØ�:‰:˜Ó(ØˆDÙð Bô
 ×ÑØ8¸Ð8IÐJó
ð 	
ñ à�d—k‘k�]ð #,Ø,0¯K©K¨=Ð8TÐUcÐTdð e%Ø%3Ð$4°D¸¿¹¸À3Ø�{‰{ˆm˜1˜TŸY™Y˜K rð+ñ 	ð ˜TŸ[™[˜M¨¨D¯K©K¨=¸¸$¿)¹)¸ÀBÐGˆä�~‰~˜t XÐ.€GÜˆd�G˜]¨GÕ4r   Úexecc                ó<   — t        |d«      }t        | |||g¬«       y )NrL   )rB   )r7   rD   )r%   r   rA   rL   s       r   Úexec_rT   §   s   € ä% g¨|Ó<€JÜˆd�G˜]°Z°LÖAr   rI   c                óÌ   — t        |d«      }t        j                  j                  |«      €t        j                  d|› �«      ‚t
        j                  d|g}t        | |||«       y )NrI   zCould not find module z-m)r7   Ú	importlibr   Ú	find_specr   rK   rL   rD   )r%   r   rA   Úmodule_namerB   s        r   rI   rI   ­   sZ   € ä& w°Ó9€Kä‡~�~×Ñ Ó,Ð4Ü×ÑÐ"8¸¸Ð FÓGÐGä�~‰~˜t [Ð1€GÜˆd�G˜]¨GÕ4r   )r   ÚstrÚreturnr   )r   rY   r   ústr | os.PathLike[str]r   r   rZ   r   )r%   r[   r&   zlist[PostWriteHookConfig]rZ   ÚNone)r1   rY   r%   rY   rZ   ú	list[str])r   r   r   rY   rZ   rY   )
r%   rY   r   r   rA   ÚboolrB   r]   rZ   r\   )FN)
r%   rY   r   r   rA   r^   rM   ztuple[int, ...] | NonerZ   r\   )F)r%   rY   r   r   rA   r^   rZ   r\   )Ú
__future__r   Úimportlib.utilrV   Úosr-   r>   rK   Útypingr   r   r   r:   r   r	   Úutil.pyfilesr
   Úconfigr   r,   r   Ú__annotations__r   r   r(   r4   r7   rD   rE   rT   rI   r   r   r   Ú<module>rf      sM  ðö #ã Û 	Û Û Û 
Ý Ý Ý  å Ý Ý 2áÝ,à2Ð à€	ˆ4Ó óð&,Ø
ð,à)ð,ð !ð,ð 	ó	,ð0+Ø
 ð+Ø)Bð+à	ó+ó* ó*ðEØ
ðEØðEØ-1ðEØ<EðEà	óEñ 
Ð
Óð  Ø-1ð	5Ø
ð5àð5ð ð5ð +ð	5ð
 
ò5ó ð5ñ< 
ˆ&ÓóBó ðBñ
 
ˆ(Óó5ó ñ5r   