diff options
Diffstat (limited to '__init__.py')
-rw-r--r-- | __init__.py | 56 |
1 files changed, 22 insertions, 34 deletions
diff --git a/__init__.py b/__init__.py index 099145f..2d475a2 100644 --- a/__init__.py +++ b/__init__.py @@ -2,52 +2,29 @@ from __future__ import print_function -# install_requires of ruamel.base is not really required but the old -# ruamel.base installed __init__.py, and thus a new version should -# be installed at some point _package_data = dict( - full_package_name="ruamel.std.argparse", - version_info=(0, 7, 1), + full_package_name='ruamel.std.argparse', + version_info=(0, 8, 0), + __version__='0.8.0', author='Anthon van der Neut', author_email='a.van.der.neut@ruamel.eu', - description="Enhancements to argparse: extra actions, subparser aliases, " - "smart formatter, a decorator based wrapper", + description='Enhancements to argparse: extra actions, subparser aliases, smart formatter, a decorator based wrapper', # NOQA entry_points=None, - install_requires=dict( - any=[] - ), + since=2007, + keywords='argparse enhanced', + install_requires=[], universal=True, ) - -# < from ruamel.util.new import _convert_version -def _convert_version(tup): - """create a PEP 386 pseudo-format conformant string from tuple tup""" - ret_val = str(tup[0]) # first is always digit - next_sep = "." # separator for next extension, can be "" or "." - for x in tup[1:]: - if isinstance(x, int): - ret_val += next_sep + str(x) - next_sep = '.' - continue - first_letter = x[0].lower() - next_sep = '' - if first_letter in 'abcr': - ret_val += 'rc' if first_letter == 'r' else first_letter - elif first_letter in 'pd': - ret_val += '.post' if first_letter == 'p' else '.dev' - return ret_val - - -# < version_info = _package_data['version_info'] -__version__ = _convert_version(version_info) - -del _convert_version +__version__ = _package_data['__version__'] import sys # NOQA +import os # NOQA import argparse # NOQA from argparse import ArgumentParser # NOQA +import glob # NOQA +from importlib import import_module # NOQA PY3 = sys.version_info[0] == 3 @@ -176,6 +153,7 @@ class ProgramBase(object): """ self._verbose = kw.pop('verbose', 0) aliases = kw.pop('aliases', 0) + self._full_package_name = kw.pop('full_package_name', None) self._parser = argparse.ArgumentParser(*args, **kw) if aliases and sys.version_info < (3,): self._parser.register('action', 'parsers', SubParsersAction) # NOQA @@ -184,6 +162,16 @@ class ProgramBase(object): self._sub_parsers = None methods_with_sub_parsers = [] # list to process, multilevel all_methods_with_sub_parsers = [] + file_names = glob.glob('*/__plug_in__.py') + if self._full_package_name: + for file_name in file_names: + dn, fn = file_name.split(os.sep) + fn = fn.replace('.py', '') + module = import_module( + '.' + dn + '.' + fn, + package=self._full_package_name, + ) + sp = module.load(self) # NOQA def add_subparsers(method_name_list, parser, level=0): if not method_name_list: |