+
    i                       ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIt^ RIt^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RI H!t! ]PD                  ! ]#4      t$ ! R R4      t%]]&]&3,          t' ! R R]RR7      t( ! R R]4      t) ! R R 4      t*R$R! R" llt+]#R#8X  d
   ]+! 4        R# R# )%    )annotations)ArgumentParser)	Namespace)ConfigParserN)Path)Any)cast)Dict)Mapping)Optional)overload)Protocol)Sequence)TextIO)Union)	TypedDict)__version__)command)util)compat)_preserving_path_as_strc                     ] tR t^#t$ RtRRRR]P                  R]P                  ! 4       R3R R llt	Rt
R]R&    RtR]R	&    RtR]R
&    ]R R l4       t]R R l4       tRtR]R&    ]P$                  R R l4       tR R lt]P$                  R R l4       t]P$                  R R l4       tR R ltR R lt]RHR R ll4       t]R R  l4       t]R! R" l4       tRIR# R$ lltR% R& ltR' R( ltR) R* ltRIR+ R, llt]R- R. l4       t]RIR/ R0 ll4       tRIR1 R2 llt]R3 R4 l4       t ]RIR5 R6 ll4       t RIR7 R8 llt R9 R: lt!RIR; R< llt"]P$                  R= R> l4       t#R? R@ lt$RA RB lt%RC RD lt&RE RF lt'RGt(R# )JConfiga?  Represent an Alembic configuration.

Within an ``env.py`` script, this is available
via the :attr:`.EnvironmentContext.config` attribute,
which in turn is available at ``alembic.context``::

    from alembic import context

    some_param = context.config.get_main_option("my option")

When invoking Alembic programmatically, a new
:class:`.Config` can be created by passing
the name of an .ini file to the constructor::

    from alembic.config import Config
    alembic_cfg = Config("/path/to/yourapp/alembic.ini")

With a :class:`.Config` object, you can then
run Alembic commands programmatically using the directives
in :mod:`alembic.command`.

The :class:`.Config` object can also be constructed without
a filename.   Values can be set programmatically, and
new sections will be created as needed::

    from alembic.config import Config
    alembic_cfg = Config()
    alembic_cfg.set_main_option("script_location", "myapp:migrations")
    alembic_cfg.set_main_option("sqlalchemy.url", "postgresql://foo/bar")
    alembic_cfg.set_section_option("mysection", "foo", "bar")

.. warning::

   When using programmatic configuration, make sure the
   ``env.py`` file in use is compatible with the target configuration;
   including that the call to Python ``logging.fileConfig()`` is
   omitted if the programmatic configuration doesn't actually include
   logging directives.

For passing non-string values to environments, such as connections and
engines, use the :attr:`.Config.attributes` dictionary::

    with engine.begin() as connection:
        alembic_cfg.attributes['connection'] = connection
        command.upgrade(alembic_cfg, "head")

:param file\_: name of the .ini file to open if an ``alembic.ini`` is
 to be used.    This should refer to the ``alembic.ini`` file, either as
 a filename or a full path to the file.  This filename if passed must refer
 to an **ini file in ConfigParser format** only.

:param toml\_file: name of the pyproject.toml file to open if a
 ``pyproject.toml`` file is to be used.  This should refer to the
 ``pyproject.toml`` file, either as a filename or a full path to the file.
 This file must be in toml format. Both :paramref:`.Config.file\_` and
 :paramref:`.Config.toml\_file` may be passed simultaneously, or
 exclusively.

 .. versionadded:: 1.16.0

:param ini_section: name of the main Alembic section within the
 .ini file
:param output_buffer: optional file-like input buffer which
 will be passed to the :class:`.MigrationContext` - used to redirect
 the output of "offline generation" when using Alembic programmatically.
:param stdout: buffer where the "print" output of commands will be sent.
 Defaults to ``sys.stdout``.

:param config_args: A dictionary of keys and values that will be used
 for substitution in the alembic config file, as well as the pyproject.toml
 file, depending on which / both are used.  The dictionary as given is
 **copied** to two new, independent dictionaries, stored locally under the
 attributes ``.config_args`` and ``.toml_args``.   Both of these
 dictionaries will also be populated with the replacement variable
 ``%(here)s``, which refers to the location of the .ini and/or .toml file
 as appropriate.

:param attributes: optional dictionary of arbitrary Python keys/values,
 which will be populated into the :attr:`.Config.attributes` dictionary.

 .. seealso::

    :ref:`connection_sharing`

Nalembicc               <    V ^8  d   QhRRRRRRRRRR	R
RRRRRRR/	# )   file_z"Union[str, os.PathLike[str], None]	toml_fileini_sectionstroutput_bufferzOptional[TextIO]stdoutr   cmd_optsOptional[Namespace]config_argsMapping[str, Any]
attributeszOptional[Dict[str, Any]]returnNone )formats   "hC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\site-packages\alembic/config.py__annotate__Config.__annotate__z   sd     / /1/ 6/ 	/
 (/ / &/ '/ -/ 
/    c	                (   V'       d   \        V4      MRV n        V'       d   \        V4      MRV n        W0n        W@n        WPn        W`n        \        V4      V n        \        V4      V n	        V'       d   V P                  P                  V4       R# R# )z Construct a new :class:`.Config`N)r   config_file_nametoml_file_nameconfig_ini_sectionr!   r"   r#   dictr%   	toml_argsr'   update)	selfr   r   r   r!   r"   r#   r%   r'   s	   &&&&&&&&&r,   __init__Config.__init__z   s{     /4#E* 	 3<#I. 	 #.* ,k*OO"":. r/   r$   r#   Optional[str]r1   r2   c                   V ^8  d   QhRR/# r   r(   zOptional[Path]r*   )r+   s   "r,   r-   r.      s     + +> +r/   c                	L    V P                   f   R # \        V P                   4      # N)r1   r   r7   s   &r,   _config_file_pathConfig._config_file_path   s"      (D))**r/   c                   V ^8  d   QhRR/# r<   r*   )r+   s   "r,   r-   r.      s     ) ) )r/   c                	L    V P                   f   R # \        V P                   4      # r>   )r2   r   r?   s   &r,   _toml_file_pathConfig._toml_file_path   s"    &D''((r/   r    r3   c                   V ^8  d   QhRR/# )r   r(   zDict[str, Any]r*   )r+   s   "r,   r-   r.      s      N r/   c                    / # )a  A Python dictionary for storage of additional state.


This is a utility dictionary which can include not just strings but
engines, connections, schema objects, or anything else.
Use this to pass objects into an env.py script, such as passing
a :class:`sqlalchemy.engine.base.Connection` when calling
commands from :mod:`alembic.command` programmatically.

.. seealso::

    :ref:`connection_sharing`

    :paramref:`.Config.attributes`

r*   r?   s   &r,   r'   Config.attributes   s	    $ 	r/   c               $    V ^8  d   QhRRRRRR/# )r   textr    argr   r(   r)   r*   )r+   s   "r,   r-   r.      s&     O O OC OD Or/   c                    V'       d   \        V4      V,          pM\        V4      p\        P                  ! V P                  VR3/ V P                  B  R# )ad  Render a message to standard out.

When :meth:`.Config.print_stdout` is called with additional args
those arguments will formatted against the provided text,
otherwise we simply output the provided text verbatim.

This is a no-op when the``quiet`` messaging option is enabled.

e.g.::

    >>> config.print_stdout('Some text %s', 'arg')
    Some Text arg


N)r    r   write_outstreamr"   messaging_opts)r7   rJ   rK   outputs   &&* r,   print_stdoutConfig.print_stdout   s>      Y_FYFT[[&$N$:M:MNr/   c                   V ^8  d   QhRR/# )r   r(   r   r*   )r+   s   "r,   r-   r.      s      \ r/   c                D   V P                   '       d&   V P                   P                  4       P                  pM
\        4       pVP	                  4       V P
                  R&   \        V P
                  4      p\        V P                  RR4      pV P                   '       dL   \        P                  ! W P                   .4       V'       d!   \        P                  RV P                   4       V# VP                  V P                  4       V'       d   \        P                  R4       V# )zReturn the underlying ``ConfigParser`` object.

Dir*-ect access to the .ini file is available here,
though the :meth:`.Config.get_section` and
:meth:`.Config.get_main_option`
methods provide a possibly simpler interface.

hereverboseFzLoading config from file: %sz7No config file provided; using in-memory default config)r@   absoluteparentr   as_posixr%   r   getattrr#   r   read_config_parserloginfoadd_sectionr3   )r7   rU   file_configrV   s   &   r,   r_   Config.file_config   s     !!!))224;;D6D#'==? "4#3#34$--E:!!!%%k4J4J3KL2D4J4J  ##D$;$;<M r/   c                   V ^8  d   QhRR/# )r   r(   r&   r*   )r+   s   "r,   r-   r.     s      %6 r/   c                D   V P                   '       d   V P                   P                  4       '       d   V P                   P                  4       P                  pVP	                  4       V P
                  R&   \        V P                   R4      ;_uu_ 4       p\        P                  P                  V4      pVP                  R/ 4      P                  R/ 4      p\        V\        4      '       g   \        P                  ! R4      hVuuRRR4       # / #   + '       g   i     R# ; i)zEReturn a dictionary of the [tool.alembic] section from
pyproject.tomlrU   rbtoolr   zIncorrect TOML formatN)rD   existsrW   rX   rY   r5   openr   tomllibloadget
isinstancer4   r   CommandError)r7   rU   f	toml_datadatas   &    r,   toml_alembic_configConfig.toml_alembic_config  s    
 D$8$8$?$?$A$A''00299D%)]]_DNN6"d**D11Q"NN//2	 }}VR044YC!$--++,CDD 21 I 211s   A/DD	c                   V ^8  d   QhRR/# )r   r(   r    r*   )r+   s   "r,   r-   r.     s     
. 
. 
.r/   c                    ^ RI p\        VP                  4      P                  4       P                  p\        VR,          4      # )zReturn the directory where Alembic setup templates are found.

This method is used by the alembic ``init`` and ``list_templates``
commands.

N	templates)r   r   __file__rW   rX   r    )r7   r   package_dirs   &  r,   get_template_directoryConfig.get_template_directory  s6     	7++,557>>;,--r/   c                   V ^8  d   QhRR/# )r   r(   r   r*   )r+   s   "r,   r-   r.   +  s     	3 	3D 	3r/   c                4    \        V P                  4       4      # )zReturn the directory where Alembic setup templates are found.

This method is used by the alembic ``init`` and ``list_templates``
commands.

.. versionadded:: 1.16.0

)r   rv   r?   s   &r,   _get_template_pathConfig._get_template_path+  s     D//122r/   c               $    V ^8  d   QhRRRRRR/# )r   namer    defaultr)   r(   zOptional[Dict[str, str]]r*   )r+   s   "r,   r-   r.   7  s$     ' ''"&'	!'r/   c                	    R # r>   r*   r7   r}   r~   s   &&&r,   get_sectionConfig.get_section6  s     $'r/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    r~   zDict[str, str]r(   r*   )r+   s   "r,   r-   r.   ?  s$      "0	r/   c                	    R # r>   r*   r   s   &&&r,   r   r   >  s     r/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    r~   zMapping[str, str]r(   z(Union[Dict[str, str], Mapping[str, str]]r*   )r+   s   "r,   r-   r.   D  s$     7 77"37	17r/   c                	    R # r>   r*   r   s   &&&r,   r   r   C  s     47r/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    r~   zOptional[Mapping[str, str]]r(   r*   )r+   s   "r,   r-   r.   H  s$     2 22"=2	$2r/   c                    V P                   P                  V4      '       g   V# \        V P                   P                  V4      4      # )zReturn all the configuration options from a given .ini file section
as a dictionary.

If the given section does not exist, the value of ``default``
is returned, which is expected to be a dictionary or other mapping.

)r_   has_sectionr4   itemsr   s   &&&r,   r   r   H  s<     ++D11ND$$**4011r/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    valuer(   r)   r*   )r+   s   "r,   r-   r.   W  s&     F FC F F Fr/   c                >    V P                  V P                  W4       R# )a  Set an option programmatically within the 'main' section.

This overrides whatever was in the .ini file.

:param name: name of the value

:param value: the value.  Note that this value is passed to
 ``ConfigParser.set``, which supports variable interpolation using
 pyformat (e.g. ``%(some_value)s``).   A raw percent sign not part of
 an interpolation symbol must therefore be escaped, e.g. ``%%``.
 The given value may refer to another value already in the file
 using the interpolation format.

N)set_section_optionr3   r7   r}   r   s   &&&r,   set_main_optionConfig.set_main_optionW  s     	 7 7Er/   c                    V ^8  d   QhRRRR/# )r   r}   r    r(   r)   r*   )r+   s   "r,   r-   r.   h  s     F Fs Ft Fr/   c                	R    V P                   P                  V P                  V4       R # r>   )r_   remove_optionr3   )r7   r}   s   &&r,   remove_main_optionConfig.remove_main_optionh  s    &&t'>'>Er/   c               (    V ^8  d   QhRRRRRRRR/# )r   sectionr    r}   r   r(   r)   r*   )r+   s   "r,   r-   r.   k  s(     3 3# 3S 3 3 3r/   c                    V P                   P                  V4      '       g   V P                   P                  V4       V P                   P                  WV4       R# )a  Set an option programmatically within the given section.

The section is created if it doesn't exist already.
The value here will override whatever was in the .ini
file.

Does **NOT** consume from the pyproject.toml file.

.. seealso::

    :meth:`.Config.get_alembic_option` - includes pyproject support

:param section: name of the section

:param name: name of the value

:param value: the value.  Note that this value is passed to
 ``ConfigParser.set``, which supports variable interpolation using
 pyformat (e.g. ``%(some_value)s``).   A raw percent sign not part of
 an interpolation symbol must therefore be escaped, e.g. ``%%``.
 The given value may refer to another value already in the file
 using the interpolation format.

N)r_   r   r^   set)r7   r   r}   r   s   &&&&r,   r   Config.set_section_optionk  sE    4 ++G44((1WE2r/   c               (    V ^8  d   QhRRRRRRRR/# )r   r   r    r}   r~   r:   r(   r*   )r+   s   "r,   r-   r.     s,      "%0=	r/   c                   V P                   P                  V4      '       g*   \        P                  ! RV P                  : RV: R24      hV P                   P                  W4      '       d   V P                   P                  W4      # V# )z9Return an option from the given section of the .ini file.zNo config file z found, or file has no '[z
]' section)r_   r   r   rk   r1   
has_optionri   )r7   r   r}   r~   s   &&&&r,   get_section_optionConfig.get_section_option  st     ++G44##$($9$97D  &&w55##''66Nr/   c               $    V ^8  d   QhRRRRRR/# r   r}   r    r~   r(   r*   )r+   s   "r,   r-   r.     s    BBCB#B#Br/   c                	    R # r>   r*   r   s   &&&r,   get_main_optionConfig.get_main_option  s    ?Br/   c               $    V ^8  d   QhRRRRRR/# r   r}   r    r~   r:   r(   r*   )r+   s   "r,   r-   r.     $      "/	r/   c                	    R # r>   r*   r   s   &&&r,   r   r          r/   c               $    V ^8  d   QhRRRRRR/# r   r*   )r+   s   "r,   r-   r.     s)     O OO"/O	Or/   c                :    V P                  V P                  W4      # )aJ  Return an option from the 'main' section of the .ini file.

This defaults to being a key from the ``[alembic]``
section, unless the ``-n/--name`` flag were used to
indicate a different section.

Does **NOT** consume from the pyproject.toml file.

.. seealso::

    :meth:`.Config.get_alembic_option` - includes pyproject support

)r   r3   r   s   &&&r,   r   r     s      &&t'>'>NNr/   c               $    V ^8  d   QhRRRRRR/# r   r*   )r+   s   "r,   r-   r.     s    EEsESESEr/   c                	    R # r>   r*   r   s   &&&r,   get_alembic_optionConfig.get_alembic_option  s    BEr/   c               $    V ^8  d   QhRRRRRR/# r   r*   )r+   s   "r,   r-   r.     r   r/   c                	    R # r>   r*   r   s   &&&r,   r   r     r   r/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    r~   r:   r(   FUnion[None, str, list[str], dict[str, str], list[dict[str, str]], int]r*   )r+   s   "r,   r-   r.     s+     F FF"/F
Fr/   c                    V P                   P                  V P                  V4      '       d'   V P                   P                  V P                  V4      # V P	                  WR7      # )aI  Return an option from the "[alembic]" or "[tool.alembic]" section
of the configparser-parsed .ini file (e.g. ``alembic.ini``) or
toml-parsed ``pyproject.toml`` file.

The value returned is expected to be None, string, list of strings,
or dictionary of strings.   Within each type of string value, the
``%(here)s`` token is substituted out with the absolute path of the
``pyproject.toml`` file, as are other tokens which are extracted from
the :paramref:`.Config.config_args` dictionary.

Searches always prioritize the configparser namespace first, before
searching in the toml namespace.

If Alembic was run using the ``-n/--name`` flag to indicate an
alternate main section name, this is taken into account **only** for
the configparser-parsed .ini file.  The section name in toml is always
``[tool.alembic]``.


.. versionadded:: 1.16.0

)r~   )r_   r   r3   ri   _get_toml_config_valuer   s   &&&r,   r   r     sV    8 &&t'>'>EE##''(?(?FF..t.EEr/   c                    V ^8  d   QhRRRR/# )r   r}   r    r(   boolr*   )r+   s   "r,   r-   r.     s      s t r/   c                	H   V P                   P                  V P                  V4      '       d*   V P                   P                  V P                  V4      R 8H  # V P                  P                  VR4      p\        V\        4      '       g   \        P                  ! RV: 24      hV# )trueFz*boolean value expected for TOML parameter )	r_   r   r3   ri   ro   rj   r   r   rk   r   s   && r,   get_alembic_boolean_option!Config.get_alembic_boolean_option  s    &&t'>'>EE  $$T%<%<dCvM ,,00u=EeT**''@I  Lr/   c               $    V ^8  d   QhRRRRRR/# )r   r}   r    r~   zOptional[Any]r(   r   r*   )r+   s   "r,   r-   r.     s&     # ##"/#
#r/   c                	f   \        4       pV P                  P                  W4      pWCJ d   V# VEeh   \        V\        4      '       d   W@P
                  ,          pV# \        V\        4      '       d   V'       dh   \        V^ ,          \        4      '       dK   V UUUu. uF8  pVP                  4        UUu/ uF  w  rgWgV P
                  ,          bK  	  uppNK:  	  ppppV# \        RV Uu. uF  qwV P
                  ,          NK  	  up4      p V# \        V\        4      '       dB   \        RVP                  4        UUu/ uF  w  rgWgV P
                  ,          bK  	  upp4      pV# \        V\        4      '       d   V# \        P                  ! RV: 24      hV# u uppi u upppi u upi u uppi )N	list[str]zdict[str, str]z%unsupported TOML value type for key: )objectro   ri   rj   r    r5   listr4   r   r	   intr   rk   )r7   r}   r~   USE_DEFAULTr   dvkvs   &&&     r,   r   Config._get_toml_config_value  s   
 h$$((; 	 N%%%0, + E4((Za$77 #("'B >@XXZHZTQ00ZH"'  &  !#E%JEq4>>&:&:E%JE  E4(($9>GQT^^,,G  E3'''';D8D  % I &K
 Hs$   F!5FF!+F(
?F-F!c                   V ^8  d   QhRR/# )r   r(   MessagingOptionsr*   )r+   s   "r,   r-   r.     s     
 
 0 
r/   c                x    \        \        \        P                  ! R\	        V P
                  RR4      /4      4      # )zThe messaging options.quietF)r	   r   r   immutabledictrZ   r#   r?   s   &r,   rO   Config.messaging_opts  s7     '$--%@A
 	
r/   c                    V ^8  d   QhRRRR/# )r   namesr    r(   r:   r*   )r+   s   "r,   r-   r.     s      s } r/   c           
     	   V F  pV P                  V4      pVf   K   M	  R # RRRRR\        P                  RRRR/p WC,          pVR8X  d   \        P                  ! R	4       V#   \
         d   p\        R
T: RT: R24      ThR p?ii ; i)Nspace newlinerM   os:;version_path_separatorz[The version_path_separator configuration parameter is deprecated; please use path_separator'z' is not a valid value for z-; expected 'space', 'newline', 'os', ':', ';')r   r   pathsepr   warn_deprecatedKeyError
ValueError)r7   r   r}   	separatorsplit_on_pathsepkes   &*     r,   _get_file_separator_charConfig._get_file_separator_char  s    D,,T2I$ 
  St"**
	*C //$$? J  	 d$ 		s   A% %B
0BB
c                   V ^8  d   QhRR/# r   r(   zOptional[list[str]]r*   )r+   s   "r,   r-   r.   6  s     ! !,? !r/   c                	   V P                   P                  V P                  R RR7      pV'       d   V P                  RR4      pVf>   \        P
                  ! R4       \        P                  ! R4      pVP                  V4      # VP                  V4       Uu. uF  pV'       g   K  VP                  4       NK  	  up# \        RV P                  R R4      4      # u upi )version_locationsNfallbackpath_separatorr   zNo path_separator found in configuration; falling back to legacy splitting on spaces/commas for version_locations.  Consider adding path_separator=os to Alembic config.
, *|(?: +)r   r_   ri   r3   r   r   r   recompilesplitstripr	   r   )r7   version_locations_str
split_char_split_on_space_commaxs   &    r,   get_version_locations_list!Config.get_version_locations_list6  s     $ 0 0 4 4##%84 !5 !
 !66 ":J ! $$; )+

=(A%,223HII 388DD AGGID  ++,?F s   
C&Cc                   V ^8  d   QhRR/# r   r*   )r+   s   "r,   r-   r.   Y  s      ,? r/   c                	   V P                   P                  V P                  R RR7      pV'       d   V P                  R4      pVf>   \        P
                  ! R4       \        P                  ! R4      pVP                  V4      # VP                  V4       Uu. uF  pV'       g   K  VP                  4       NK  	  up# \        RV P                  R R4      4      # u upi )prepend_sys_pathNr   r   zNo path_separator found in configuration; falling back to legacy splitting on spaces, commas, and colons for prepend_sys_path.  Consider adding path_separator=os to Alembic config.z, *|(?: +)|\:r   r   )r7   prepend_sys_path_strr   _split_on_space_comma_colonr   s   &    r,   get_prepend_sys_paths_list!Config.get_prepend_sys_paths_listY  s    #//33##%7$  4  
  667GHJ! $$; /1jj9I.J+2889MNN 277
CC AGGIC  ++,>E s   
C%Cc                   V ^8  d   QhRR/# )r   r(   zlist[PostWriteHookConfig]r*   )r+   s   "r,   r-   r.   y  s     ! ! 9 !r/   c                	|   . pV P                   P                  R 4      '       gX   \        RV P                  R . 4      4      pV F3  p\	        V4      pVP                  R4      VR&   VP                  V4       K5  	  V# \        P                  ! R4      pV P                  R / 4      pVP                  VP                  RR4      4      pV Fm  pV'       g   K  V U	u/ uF?  p	V	P                  VR,           4      '       g   K#  V	\        V4      ^,           R Wi,          bKA  	  pp	WR&   VP                  V4       Ko  	  V# u up	i )	post_write_hookszlist[dict[str, str]]r}   
_hook_namer   hooks .N)r_   r   r	   r   r4   popappendr   r   r   r   ri   
startswithlen)
r7   r  toml_hook_configcfgoptsr   ini_hook_configr   r}   keys
   &         r,   get_hooks_listConfig.get_hooks_listy  s<   +-++,>??#&++,>C  (Cy%)XXf%5\"T" (0 % %'JJ}$=!"../A2FO)//##GR0E   /.~~dSj1 ?CD	A(/*>>.   &*\"T"  s    D9< D9)r#   r%   r1   r3   r!   r"   r5   r2   ).r>   ))__name__
__module____qualname____firstlineno____doc__sysr"   r   r   r8   r#   __annotations__r1   r2   propertyr@   rD   r3   memoized_propertyr'   rQ   r_   ro   rv   rz   r   r   r   r   r   r   r   r   r   r   rO   r   r   r   r  __static_attributes__r*   r/   r,   r   r   #   s   Tp 598<$*.(,)-););)=/3/6 %)H!(	 '+m*2$(NM( + +
 ) )
 #" 
 &O. 
 @ 
 &
.	3 ' '   7 72F"F3< B B O$ E E FB#J 

 
@!F@! !r/   r   c                  "    ] tR tRt$ R]R&   RtR# )r   i  r   r   r*   N)r  r  r  r  r  r  r*   r/   r,   r   r     s    Kr/   r   F)totalc                  2    ] tR tRt$ RtR]R&   R R ltRtR# )	CommandFunctioni  zA function that may be registered in the CLI as an alembic command.
It must be a named function and it must accept a :class:`.Config` object
as the first argument.

.. versionadded:: 1.15.3

r    r  c               (    V ^8  d   QhRRRRRRRR/# )r   configr   argsr   kwargsr(   r*   )r+   s   "r,   r-   CommandFunction.__annotate__  s    MMvMcMSMSMr/   c                	    R # r>   r*   )r7   r  r  r   s   &&*,r,   __call__CommandFunction.__call__  s    #r/   r*   N)r  r  r  r  r  r  r#  r  r*   r/   r,   r  r    s     MMMr/   r  c            
         ] tR tRt$ RtRaR R llt/ RRR]! R	]R
R7      3bRRR]! ]RR7      3bRR]! RRR7      3bRR]! ]RR7      3bRR]! ]RR7      3bRR]! RRR7      3bRR ]! R!R"R7      3bR#R$]! ]R%R7      3bR&R']! ]R(R7      3bR)R*]! ]R+R7      3bR,R-R.]! RR/R7      3bR0R1]! RR2R7      3bR3R4]! RR5R7      3bR6R7R8]! R9R:R7      3bR;R<R=]! RR>R7      3bR?R@]! RRAR7      3bRBRC]! RRDR7      3bRERFRG]! RRHR7      3/CtRI]! RJRK7      RL]! RMRK7      RN]! RORPRQ7      /t	]
P                  RLRN//tRR]RS&   RT RU ltRV RW ltRX RY ltRZ R[ ltR\ R] ltRaR^ R_ lltR`tR# )bCommandLinei  z/Provides the command line interface to Alembic.Nc                    V ^8  d   QhRRRR/# r   progr:   r(   r)   r*   )r+   s   "r,   r-   CommandLine.__annotate__  s     " "] "d "r/   c                	(    V P                  V4       R # r>   )_generate_args)r7   r)  s   &&r,   r8   CommandLine.__init__  s    D!r/   templatez-tz
--templategenericz"Setup template for use with 'init')r~   typehelpmessagez-mz	--messagez%Message string to use with 'revision')r0  r1  sqlz--sql
store_truez\Don't emit SQL to database - dump to standard output/file instead. See docs on offline mode.actionr1  tagz--tagz<Arbitrary 'tag' name - can be used by custom env.py scripts.headz--headzCSpecify head revision or <branchname>@head to base new revision on.splicez--splicez6Allow a non-head revision as the 'head' to splice onto
depends_onz--depends-onr  zNSpecify one or more revision identifiers which this revision should depend on.rev_idz--rev-idz9Specify a hardcoded revision id instead of generating oneversion_pathz--version-pathz2Specify specific path from config for version filebranch_labelz--branch-labelz3Specify a branch label to apply to the new revisionrV   z-vz	--verbosezUse more verbose outputresolve_dependenciesz--resolve-dependenciesz+Treat dependency versions as down revisionsautogeneratez--autogeneratezgPopulate revision script with candidate migration operations, based on comparison of database to model.	rev_rangez-rz--rev-rangestorez1Specify a revision range; format is [start]:[end]indicate_currentz-iz--indicate-currentzIndicate the current revisionpurgez--purgez7Unconditionally erase the version table before stampingpackagez	--packagezFWrite empty __init__.py files to the environment and version locationscheck_heads-cz--check-headsziCheck if all head revisions are applied to the database. Exit with an error code if this is not the case.	directoryzlocation of scripts directoryr1  revisionzrevision identifier	revisions+z/one or more revisions, or 'heads' for all heads)nargsr1  zdict[Any, dict[str, str]]_POSITIONAL_TRANSLATIONSc                    V ^8  d   QhRRRR/# r(  r*   )r+   s   "r,   r-   r*  S  s     8 8= 8T 8r/   c                	   \        VR 7      pVP                  RRR\        ,          R7       VP                  RRRRR	7       VP                  R
R\        RRR7       VP                  RRRR	7       VP                  RRRR	7       VP                  RRRRR	7       VP	                  4       V n        R R \        \        4       4        4       pV F  pV P                  V4       K  	  W n	        R# )r)  z	--versionversionz%%(prog)s %s)r6  rQ  rF  z--configr  zAlternate config file; defaults to value of ALEMBIC_CONFIG environment variable, or "alembic.ini". May also refer to pyproject.toml file.  May be specified twice to reference both files separatelyr5  z-nz--namer   zfName of section in .ini file to use for Alembic config (only applies to configparser config, not toml))r0  r~   r1  z-xzlAdditional arguments consumed by custom env.py scripts, e.g. -x setting1=somesetting -x setting2=somesettingz
--raiseerrr4  z!Raise a full stack trace on errorz-qz--quietzDo not log to std output.c              3     "   T F`  p\         P                  ! V4      '       g   K!  VP                  ^ ,          R8w  g   K;  VP                  R8X  g   KN  \	        \
        V4      x  Kb  	  R# 5i)r   _zalembic.commandN)inspect
isfunctionr  r  r	   r  ).0fns   & r,   	<genexpr>-CommandLine._generate_args.<locals>.<genexpr>~  s\      
G""2& & KKNc)	 &
 MM%66 &D"%%Gs   A*A*A*A*c              3  B   "   T F  p\        \        V4      x  K  	  R # 5ir>   )rZ   r   )rV  r}   s   & r,   rX  rY    s     G,$ww--,s   N)
r   add_argumentr   r    add_subparsers
subparsersdirr   register_commandparser)r7   r)  r`  alembic_commandsrW  s   &&   r,   r,  CommandLine._generate_argsS  s   T*	>K3O 	 	
 	1	 	 	
 	> 	 	
 	; 	 	
 	4 	 	

 	,	 	 	
 !//1
G#g,G
 #B!!"% # r/   c                    V ^8  d   QhRRRR/# )r   rW  r  r(   r)   r*   )r+   s   "r,   r-   r*    s     0 0? 0t 0r/   c                   V P                  V4      w  r#pV P                  P                  VP                  VR7      pVP	                  WV3R7       V FG  pW`P
                  9   g   K  V P
                  V,          pV^ R VR,          rVP                  ! V/ V	B  KI  	  V F2  pV P                  P                  V/ 4      p	VP                  ! V3/ V	B  K4  	  R# )zRegisters a function as a CLI subcommand. The subcommand name
matches the function name, the arguments are extracted from the
signature and the help text is read from the docstring.

.. versionadded:: 1.15.3

.. seealso::

    :ref:`custom_commandline`
rH  )cmdN)	_inspect_functionr]  
add_parserr  set_defaults_KWARGS_OPTSr[  _POSITIONAL_OPTSri   )
r7   rW  
positionalkwarg	help_text	subparserrK   	kwarg_optr  r
  s
   &&        r,   r_  CommandLine.register_command  s     (,'='=b'A$
9OO..r{{.K	BE#:;C''' --c2	&q_imd&&55	  C((,,S"5D""3/$/ r/   c                    V ^8  d   QhRRRR/# )r   rW  r  r(   ztuple[Any, Any, str]r*   )r+   s   "r,   r-   r*    s     , ,O ,8L ,r/   c                	d   \         P                  ! V4      pV^,          e<   V^ ,          ^\        V^,          4      )  pV^ ,          \        V^,          4      ) R pMV^ ,          R,          p. pWP                  9   d2   V Uu. uF%  pV P                  V,          P	                  WU4      NK'  	  ppVP
                  pV'       dS   . pVP                  R4       F:  pVP                  4       '       g    M&VP                  VP                  4       4       K<  	  M. pRP                  V4      p	W4V	3# u upi )   N:   NNrM   r   )
r   inspect_getfullargspecr  rM  ri   r  r   r   r  join)
r7   rW  specrl  rm  r}   help_
help_lineslinern  s
   &&        r,   rg  CommandLine._inspect_function  s   ,,R07ac$q'l]3JGSa\MO,EaJE... '&D --b155dA&   

JD)zz||%%djjl3	 * JHHZ(	)++'s   +D-c               $    V ^8  d   QhRRRRRR/# )r   r  r   optionsr   r(   r)   r*   )r+   s   "r,   r-   r*    s!     : :f :y :T :r/   c                	z   VP                   w  r4p T! V.V Uu. uF  p\        W&R 4      NK  	  upO5/ V Uu/ uF  qf\        W&R 4      bK  	  upB  R # u upi u upi   \        P                   dI   pTP                  '       d   h \        P
                  ! \        T4      3/ TP                  B   R p?R # R p?ii ; ir>   )re  rZ   r   rk   raiseerrerrr    rO   )r7   r  r~  rW  rl  rm  r   es   &&&     r,   run_cmdCommandLine.run_cmd  s     '
	:5?@Z''d+Z@ :??Agg$//?@?   	:Q96#8#899		:s2   A A
	A AA 
A B:2=B55B:c                    V ^8  d   QhRRRR/# )r   r~  r   r(   ztuple[str, str]r*   )r+   s   "r,   r-   r*    s     &
 &
 &
 &
r/   c                	   VP                   p\        P                  P                  R 4      pV'       d*   \        P                  P                  V4      R8X  d   TpRpMV'       d   RpTpMRpRpV'       g   WE3# R;rgV Fa  p\        P                  P                  V4      R8X  d   Ve   \        P                  ! R4      hTpKE  Ve   \        P                  ! R4      hTpKc  	  V'       d   TMTV'       d   V3# T3# )ALEMBIC_CONFIGzpyproject.tomlzalembic.iniNz'pyproject.toml indicated more than oncez"only one ini file may be indicated)r  r   environri   pathbasenamer   rk   )	r7   r~  r   alembic_config_envdefault_pyproject_tomldefault_alembic_configtomlinir}   s	   &&       r,   _inis_from_configCommandLine._inis_from_config  s   ZZ^^,<=  !348HH%7"%2"%5"%7"%2"%5")AADww%)99#++A  ?++<    t!7C
 	
2
 	
r/   c                    V ^8  d   QhRRRR/# )r   argvOptional[Sequence[str]]r(   r)   r*   )r+   s   "r,   r-   r*    s     ' '0 'D 'r/   c                   V P                   P                  V4      p\        VR4      '       g   V P                   P                  R4       R# V P	                  V4      w  r4\        VVVP                  VR7      pV P                  WR4       R# )z6Executes the command line with the provided arguments.re  ztoo few arguments)r   r   r   r#   N)r`  
parse_argshasattrerrorr  r   r}   r  )r7   r  r~  r  r  r	  s   &&    r,   mainCommandLine.main  sr    ++((.w&& KK12..w7ID#LL 	C LL&r/   )r`  r]  r>   )r  r  r  r  r  r8   r4   r    rj  rk  r   stamprM  r  r,  r_  rg  r  r  r  r  r*   r/   r,   r&  r&    s   9"L!9
L 	c GH
L 	# 
L0 	)
1L@ 	+
ALP 	#M
QL^ 	8
_Ln 	!
oL~ 	I
LL 	J
MLZ 	+DE
[Ld 	$#B!
eLr 	#(
sLD 	H
ELT 	 #4
ULd 	#N
eLr 	#4
sLB 	#G

CLL\ 	T>?D&
 	TB
	 	
K0;7 8t06,>:&
P' 'r/   r&  c               (    V ^8  d   QhRRRRRRRR/# )	r   r  r  r)  r:   r   r   r(   r)   r*   )r+   s   "r,   r-   r-     s0     + +
!+
+ + 
	+r/   c                >    \        VR7      P                  V R7       R# )z(The console runner function for Alembic.rP  )r  N)r&  r  )r  r)  r   s   &&,r,   r  r    s     TT*r/   __main__)NN),
__future__r   argparser   r   configparserr   rT  loggingr   pathlibr   r   r  typingr   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r  r   r   r   r   util.pyfilesr   	getLoggerr  r\   r   r    PostWriteHookConfigr   r  r&  r  r*   r/   r,   <module>r     s    " #  %   	  	 
           '     1 !w	 w	t c3h' y Nh N[' ['|
+ zF r/   