Current File : /home/inlingua/miniconda3/lib/python3.12/site-packages/conda/cli/actions.py |
# Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause
"""
Collection of custom argparse actions.
"""
from argparse import Action, _CountAction
from ..common.constants import NULL
class NullCountAction(_CountAction):
@staticmethod
def _ensure_value(namespace, name, value):
if getattr(namespace, name, NULL) in (NULL, None):
setattr(namespace, name, value)
return getattr(namespace, name)
def __call__(self, parser, namespace, values, option_string=None):
new_count = self._ensure_value(namespace, self.dest, 0) + 1
setattr(namespace, self.dest, new_count)
class ExtendConstAction(Action):
"""
A derivative of _AppendConstAction and Python 3.8's _ExtendAction
"""
def __init__(
self,
option_strings,
dest,
const,
default=None,
type=None,
choices=None,
required=False,
help=None,
metavar=None,
):
super().__init__(
option_strings=option_strings,
dest=dest,
nargs="*",
const=const,
default=default,
type=type,
choices=choices,
required=required,
help=help,
metavar=metavar,
)
def __call__(self, parser, namespace, values, option_string=None):
items = getattr(namespace, self.dest, None)
items = [] if items is None else items[:]
items.extend(values or [self.const])
setattr(namespace, self.dest, items)