示例#1
0
文件: make.py 项目: roee30/datargs
def add_subparsers(
    parser: ArgumentParser,
    top_class: RecordClass,
    sub_parsers_field: RecordField,
    sub_parser_classes: Sequence[type],
):
    # noinspection PyArgumentList

    subparsers = cast(
        DatargsSubparsers,
        parser.add_subparsers(
            **top_class.sub_commands_params,
            action=DatargsSubparsers,
            name=sub_parsers_field.name,
        ),
    )
    for command in sub_parser_classes:
        try:
            sub_parsers_args = top_class.wrap_class(command)
        except NotARecordClass:
            raise Exception(
                f"{top_class.name}.{sub_parsers_field.name}: "
                f"Union must be used with dataclass/attrs class and creates a subparser (got: {sub_parsers_field.type})"
            )
        sub_parser = subparsers.add_parser(
            command,
            sub_parsers_args.datargs_params.name
            or camel2under(sub_parsers_args.name).replace("_", "-"),
            **sub_parsers_args.parser_params,
        )
        _make_parser(sub_parsers_args, sub_parser)
示例#2
0
def _get_default_name(func):
    from functools import partial
    if isinstance(func, partial):
        func = func.func  # just one level of partial for now

    # func_name on py2, __name__ on py3
    ret = getattr(func, 'func_name', getattr(func, '__name__', None))  # most functions hit this

    if ret is None:
        ret = camel2under(func.__class__.__name__).lower()  # callable instances, etc.

    return ret
示例#3
0
def get_inner_func_alias(func, inner_name, func_names=None):
    if func_names is None:
        func_names = set()
    func_name = get_func_name(func)
    func_alias = camel2under(func_name.replace('.', '__'))
    func_alias = func_alias.replace('middleware', 'mw')
    while func_alias in func_names:
        try:
            head, _, tail = func_alias.rpartition('_')
            cur_count = int(tail)
            func_alias = '%s_%s' % (head, cur_count + 1)
        except:
            func_alias = func_alias + '_2'
    return '%s_%s' % (inner_name, func_alias)
 def from_camel_case_dict(cls, data):
     return cls(**filter_kwargs(
         cls, **{camel2under(k): v
                 for k, v in data.items()}))
示例#5
0
	def mod_name(cls):
		return camel2under(cls.__name__)
示例#6
0
 def to_dict(self):
     return dict(name=strutils.camel2under(self.__class__.__name__),
                 dataset_id=str(self.dataset.id) if self.dataset else None,
                 uri=self.uri)
def camelcase_to_underscores(s):
    '''Converts a camelcased string to underscores'''
    return strutils.camel2under(s)