HEX
Server: Apache
System: Linux infong-uk86 4.4.400-icpu-106 #2 SMP Mon Sep 15 08:23:40 UTC 2025 x86_64
User: u44115835 (4976590)
PHP: 8.4.17
Disabled: NONE
Upload Files
File: //kunden/lib/python3/dist-packages/breezy/__pycache__/option.cpython-39.pyc
a

�*�^CZ�@s$ddlmZddlZddlZddlmZmZmZddl	m
Z
Gdd�dej�Zdd	�Z
d
d�Zdd
�Zdd�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�dej�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zdgd$d%�Zdad&d'�Zed(d)d*d+�ed,d-d.ed/�ed0d1d2�ed3d4d5ed/�ed6ed7d8d9d:�ed;d<e
d=d>�ed?e
d@dA�edBdCdDdEdFdGdHidI�edJdKdLdEdMdN�edOe
dPdQdR�edSdTdUd+�edVdWd2�edXdYd2�edZd[d2�ed8e
d\d]dR�ed^d_d2�ed`e dadb�e�!�Z"e"�#dcddde�df�dce"_$dS)h�)�absolute_importN�)�errors�registry�revisionspec)�	text_typec@seZdZdZdd�ZdS)�BadOptionValuez,Bad value "%(value)s" for option "%(name)s".cCstjj|||d�dS)N)�name�value)r�BzrError�__init__)�selfr	r
�r�//usr/lib/python3/dist-packages/breezy/option.pyr'szBadOptionValue.__init__N)�__name__�
__module__�__qualname__Z_fmtrrrrrr#srcCs8g}t�d�}|�|�D]}|�tj�|p,d��q|S)a�	This handles a revision string -> revno.

    This always returns a list.  The list will have one element for
    each revision specifier supplied.

    >>> _parse_revision_str('234')
    [<RevisionSpec_dwim 234>]
    >>> _parse_revision_str('234..567')
    [<RevisionSpec_dwim 234>, <RevisionSpec_dwim 567>]
    >>> _parse_revision_str('..')
    [<RevisionSpec None>, <RevisionSpec None>]
    >>> _parse_revision_str('..234')
    [<RevisionSpec None>, <RevisionSpec_dwim 234>]
    >>> _parse_revision_str('234..')
    [<RevisionSpec_dwim 234>, <RevisionSpec None>]
    >>> _parse_revision_str('234..456..789') # Maybe this should be an error
    [<RevisionSpec_dwim 234>, <RevisionSpec_dwim 456>, <RevisionSpec_dwim 789>]
    >>> _parse_revision_str('234....789') #Error ?
    [<RevisionSpec_dwim 234>, <RevisionSpec None>, <RevisionSpec_dwim 789>]
    >>> _parse_revision_str('revid:test@other.com-234234')
    [<RevisionSpec_revid revid:test@other.com-234234>]
    >>> _parse_revision_str('revid:test@other.com-234234..revid:test@other.com-234235')
    [<RevisionSpec_revid revid:test@other.com-234234>, <RevisionSpec_revid revid:test@other.com-234235>]
    >>> _parse_revision_str('revid:test@other.com-234234..23')
    [<RevisionSpec_revid revid:test@other.com-234234>, <RevisionSpec_dwim 23>]
    >>> _parse_revision_str('date:2005-04-12')
    [<RevisionSpec_date date:2005-04-12>]
    >>> _parse_revision_str('date:2005-04-12 12:24:33')
    [<RevisionSpec_date date:2005-04-12 12:24:33>]
    >>> _parse_revision_str('date:2005-04-12T12:24:33')
    [<RevisionSpec_date date:2005-04-12T12:24:33>]
    >>> _parse_revision_str('date:2005-04-12,12:24:33')
    [<RevisionSpec_date date:2005-04-12,12:24:33>]
    >>> _parse_revision_str('-5..23')
    [<RevisionSpec_dwim -5>, <RevisionSpec_dwim 23>]
    >>> _parse_revision_str('-5')
    [<RevisionSpec_dwim -5>]
    >>> _parse_revision_str('123a')
    [<RevisionSpec_dwim 123a>]
    >>> _parse_revision_str('abc')
    [<RevisionSpec_dwim abc>]
    >>> _parse_revision_str('branch:../branch2')
    [<RevisionSpec_branch branch:../branch2>]
    >>> _parse_revision_str('branch:../../branch2')
    [<RevisionSpec_branch branch:../../branch2>]
    >>> _parse_revision_str('branch:../../branch2..23')
    [<RevisionSpec_branch branch:../../branch2>, <RevisionSpec_dwim 23>]
    >>> _parse_revision_str('branch:..\\branch2')
    [<RevisionSpec_branch branch:..\branch2>]
    >>> _parse_revision_str('branch:..\\..\\branch2..23')
    [<RevisionSpec_branch branch:..\..\branch2>, <RevisionSpec_dwim 23>]
    z
\.\.(?![\\/])N)�re�compile�split�appendr�RevisionSpec�from_string)�revstr�revs�sep�xrrr�_parse_revision_str+s
6
rcCs4t|�}t|�dkrt���tj�d|�|dfS)a^Parse the revision string and return a tuple with left-most
    parent of the revision.

    >>> _parse_change_str('123')
    (<RevisionSpec_before before:123>, <RevisionSpec_dwim 123>)
    >>> _parse_change_str('123..124')
    Traceback (most recent call last):
      ...
    RangeInChangeOption: Option --change does not accept revision ranges
    rzbefore:r)r�lenrZRangeInChangeOptionrrr)rrrrr�_parse_change_stris�rcCst|�S�N)�get_merge_type)�
typestringrrr�_parse_merge_type{sr#cspddlm}z||dWStyjdd��fdd�|��D�}d�|�}d||f}t�|��Yn0d	S)
zAAttempt to find the merge class/factory associated with a string.r)�merge_typesz%s%%7s: %%sz            cs$g|]}�|d|ddf�qS)rrr)�.0�f�Ztemplrr�
<listcomp>��z"get_merge_type.<locals>.<listcomp>�
z/No known merge type %s. Supported types are:
%sN)�merger$�KeyError�items�joinr�BzrCommandError)r"r$�linesZ	type_list�msgrr'rr!s
�r!c@sbeZdZdZiZiZddd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�ZdS)�Optionz�Description of a command line option

    :ivar _short_name: If this option has a single-letter name, this is it.
    Otherwise None.
    �NFc		Csp||_||_||_||_|dur.|r:td��n|dur:d}||_|durZ|j�dd�|_n||_||_||_	dS)a�Make a new command option.

        :param name: regular name of the command, used in the double-dash
            form and also as the parameter to the command's run()
            method (unless param_name is specified).

        :param help: help message displayed in command help

        :param type: function called to parse the option argument, or
            None (default) if this option doesn't take an argument.

        :param argname: name of option argument, if any

        :param short_name: short option code for use with a single -, e.g.
            short_name="v" to enable parsing of -v.

        :param param_name: name of the parameter which will be passed to
            the command's run() method.

        :param custom_callback: a callback routine to be called after normal
            processing. The signature of the callback routine is
            (option, name, new_value, parser).
        :param hidden: If True, the option should be hidden in help and
            documentation.
        Nzargname not valid for booleansZARG�-�_)
r	�help�type�_short_name�
ValueError�argname�replace�_param_name�custom_callback�hidden)	r
r	r6r7r:�
short_name�
param_namer=r>rrrr�s
zOption.__init__cCs|jr|jSdSr �r8�r
rrrr?�szOption.short_namecCs
||_dSr rA)r
r?rrr�set_short_name�szOption.set_short_namecCs(|j�d�r|jdd�Sd|jSdS)Nzno-�)r	�
startswithrBrrr�get_negation_name�szOption.get_negation_namec	Cs�d|jg}|dur"|�d|�|jr0tj}n|j}|j}|dur�|j|d|jd|d��d|�	�g}|j|d|jdtjd��n$|j|d|j
d|j��|t
jd	��dS)
�%Add this option to an Optparse parser�--%sN�-%s�callback)T)�actionrJZ
callback_argsr6)F�string)rKrJr7�metavarr6�default)r	rr>�optparse�
SUPPRESS_HELPr6r7�
add_option�_optparse_bool_callbackrF�_optparse_callbackr:�upper�OptionParser�
DEFAULT_VALUE)r
�parserr?�option_stringsr6ZoptargfnZnegation_stringsrrrrQ�s>����
�
�zOption.add_optioncCs0t|j|j|�|jdur,|�||j||�dSr )�setattr�valuesr<r=)r
�option�opt_strr
rWZbool_vrrrrR�s
zOption._optparse_bool_callbackc
Csvz|�|�}Wn6tyD}zt�d||f��WYd}~n
d}~00t|j|j|�|jdurr|�||j||�dS)Nzinvalid value for option %s: %s)	r7r9rOZOptionValueErrorrYrZr<r=r	)r
r[�optr
rW�v�errrrS�s
�
zOption._optparse_callbackccs0|j}|dur|��}|j|��||jfVdS�z�Iterate through the list of switches provided by the option

        :return: an iterator of (name, short_name, argname, help)
        N)r:rTr	r?r6)r
r:rrr�
iter_switchesszOption.iter_switchescCs|jSr )r>�r
r	rrr�	is_hiddenszOption.is_hidden)r3NNNNNF)rrr�__doc__�STD_OPTIONS�OPTIONSrr?rCrFrQrRrSrarcrrrrr2�s�
-

r2c@s eZdZdZdd�Zdd�ZdS)�
ListOptionahOption used to provide a list of values.

    On the command line, arguments are specified by a repeated use of the
    option. '-' is a special argument that resets the list. For example,
      --foo=a --foo=b
    sets the value of the 'foo' option to ['a', 'b'], and
      --foo=a --foo=b --foo=- --foo=c
    sets the value of the 'foo' option to ['c'].
    c
CsNd|jg}|dur"|�d|�|j|d|jd|j��|j|jgd��dS)z&Add this option to an Optparse parser.rHNrIrJrL)rKrJr7rMr6�destrN)r	rrQrSr:rTr6r<)r
rWr?rXrrrrQs�

�zListOption.add_optioncCsRt|j|j�}|dkr"|dd�=n|�|�|��|jdurN|�||j||�dS)Nr4)�getattrrZr<rr7r=)r
r[r]r
rWrZrrrrS&s
zListOption._optparse_callbackN)rrrrdrQrSrrrrrgs
rgc@sleZdZdZdd�Zdd�Zdd	d
�Zedd��Ze	dd
d��Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�RegistryOptionz�Option based on a registry

    The values for the options correspond to entries in the registry.  Input
    must be a registry key.  After validation, it is converted into an object
    using Registry.get or a caller-provided converter.
    cCs||jvrt|j|��dS)zValidate a value nameN)rrr	�r
r
rrr�validate_value8s
zRegistryOption.validate_valuecCs.|�|�|jdur |j�|�S|�|�SdS)z(Convert a value name into an output typeN)rl�	converterr�getrkrrr�convert=s

zRegistryOption.convertNFTcCs�tj||||j|	d�||_|dur@|dur4td��tj|�|_|durX|durXtd��||_||_	||_
||_|
|_||_
|j
dur�||_
dS)aq
        Constructor.

        :param name: The option name.
        :param help: Help for the option.
        :param registry: A Registry containing the values
        :param converter: Callable to invoke with the value name to produce
            the value.  If not supplied, self.registry.get is used.
        :param value_switches: If true, each possible value is assigned its
            own switch.  For example, instead of '--format knit',
            '--knit' can be used interchangeably.
        :param enum_switch: If true, a switch is provided with the option name,
            which takes a value.
        :param lazy_registry: A tuple of (module name, attribute name) for a
            registry to be lazily loaded.
        :param short_name: The short name for the enum switch, if any
        :param short_value_switches: A dict mapping values to short names
        �r7r?Nz/One of registry or lazy_registry must be given.z1registry and lazy_registry are mutually exclusive)r2rro�	_registry�AssertionError�
_mod_registryZ_LazyObjectGetter�_lazy_registryr	rm�value_switches�enum_switch�short_value_switches�title)r
r	r6rrmrurxrv�
lazy_registryr?rwrrrrEs0����
zRegistryOption.__init__cCs|jdur|j��|_|jSr )rqrtZget_objrBrrrros
zRegistryOption.registryc	Ksxt��}t|���D]N\}}|�dd�}|j|||d�|s|d|d|}|�d�s|d}qt||||||d�S)a Convenience method to generate string-map registry options

        name, help, value_switches and enum_switch are passed to the
        RegistryOption constructor.  Any other keyword arguments are treated
        as values for the option, and their value is treated as the help.
        r5r4�r6z  "z": �.)rxrurv)rs�Registry�sortedr-r;�register�endswithrj)	Zname_r6rxrurv�kwargsZregr	Zswitch_helprrr�from_kwargsus	


�zRegistryOption.from_kwargscs��jr|��j�}�jr&t��||��jr܈j��}�j��D]�}|�j�	�vrTq@dd�|g�fdd�|�
|g�D�D�}��|�r�tj
}n�j�|�}�jr�|�jvr�|�d�j|�|j|d��|�|d��q@dS)rGcSsg|]}d|�qS)rHr)r%r	rrrr(�s�z-RegistryOption.add_option.<locals>.<listcomp>csg|]}��|�s|�qSr)rc)r%�aliasrBrrr(�s
�rIrJ)rKrJr6N)ruZadd_option_grouprxrvr2rQr�	alias_map�keys�aliasesrnrcrOrP�get_helprwr�_optparse_value_callback)r
rWr?r��keyrXr6rrBrrQ�s:
��
����zRegistryOption.add_optioncs��fdd�}|S)Ncs:����}t|j�j|��jdur6��|�j||�dSr )r7rYrZr<r=)r[r]r
rWr^��cb_valuer
rr�cb�s

z3RegistryOption._optparse_value_callback.<locals>.cbr)r
r�r�rr�rr��sz'RegistryOption._optparse_value_callbackccsJt�|�D]
}|Vq
|jrFt|j���D]}|dd|j�|�fVq*dSr`)r2rarur}rr�r�)r
r
r�rrrra�s
zRegistryOption.iter_switchescCs||jkrdS||j��vS)z.Check whether a particular format is an alias.F)r	rr�rbrrr�is_alias�s
zRegistryOption.is_aliascCs*||jkrt�||�St|j�|�dd�S)Nr>F)r	r2rcrirZget_inforbrrrrc�s
zRegistryOption.is_hidden)NNFNTNNN)NNFT)rrrrdrlror�propertyr�staticmethodr�rQr�rar�rcrrrrrj0s$�
*
�rjc@s&eZdZdZe�Zdd�Zdd�ZdS)rUz6OptionParser that raises exceptions instead of exitingcCstj�|�t�|_dSr )rOrUr�GettextIndentedHelpFormatterZ	formatterrBrrrr�szOptionParser.__init__cCst�|��dSr )rr/)r
�messagerrr�error�szOptionParser.errorN)rrrrd�objectrVrr�rrrrrU�srUc@s eZdZdZdd�Zdd�ZdS)r�z&Adds gettext() call to format_option()cCstj�|�dSr )rO�IndentedHelpFormatterrrBrrrr�sz%GettextIndentedHelpFormatter.__init__cCs,|jrddlm}||j�|_tj�||�S)z$code taken from Python's optparse.pyr)�gettext)r6Zi18nr�rOr��
format_option)r
r[r�rrrr��sz*GettextIndentedHelpFormatter.format_optionN)rrrrdrr�rrrrr��sr�cCs.t�}|�d�|D]}|�||���q|S)z4Generate an optparse parser for breezy-style optionsz--help)rUZ
remove_optionrQr?)ZoptionsrWr[rrr�
get_optparser�s

r�cCs"ddl}|�tj|�}||_|S)z*Clone a common option overriding the help.rN)�copyr2rfr6)r	r6r��orrr�custom_help�sr�cKs*t|fi|��tj|<tj|tj|<dS�zRegister a standard option.N)r2rerf�r	r�rrr�_standard_option�sr�cKs*t|fi|��tj|<tj|tj|<dSr�)rgr2rerfr�rrr�_standard_list_option�sr�cKst|fi|��tj|<dS)zRegister a global option.N)r2rfr�rrr�_global_optionsr�cKst|||fi|��tj|<dSr )rjr2rf)r	r6rr�rrr�_global_registry_optionsr�cCsD|s
dan6|dkr*tdkr$td7aq@dantdkr<td8andadS)Nr�verboser���)�_verbosity_level)r[r\r
rWrrr�_verbosity_level_callbacks

r�r6�hzShow help message.)r?r6�quiet�qz!Only display errors and warnings.)r?r6r=ZusagezShow usage message and options.rzr�r^zDisplay more information.Zchange�cZrevisionzRSelect changes introduced by the specified revision. See also "help revisionspec".)r7r?r@r6Z	directory�dz3Branch to operate on, instead of working directory.)r?r7r6�file�Frpz
log-formatzUse specified log format.)z
breezy.logZlog_formatter_registryTz
Log formatZshort�S)ryrurxrwz
merge-typez$Select a particular merge algorithm.)zbreezy.mergeZmerge_type_registryzMerge algorithm)ryrurxr��mzMessage string.)r7r?r6Znull�0z6Use an ASCII NUL (\0) separator rather than a newline.Z	overwritezBIgnore differences between branches and overwrite unconditionally.Zrememberz-Remember the specified location as a default.Z	reprocessz'Reprocess to reduce spurious conflicts.�rz$See "help revisionspec" for details.zshow-idszShow internal object ids.�timezonez,Display timezone as local, original, or utc.)r7r6ZplaincCs|Sr r)rrrr�<lambda>Wr)r�zPlaintext diff output.)N)%Z
__future__rrOrr3rrrsrZsixishrrrrrr#r!r�r2rgrjrUr�r�r�r�r�r�r�r�r�r��strr|Zdiff_writer_registryr~Zdefault_keyrrrr�<module>s�> 


�������������