From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 5B4CF138206 for ; Tue, 17 Sep 2013 16:41:02 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id F2609E0C52; Tue, 17 Sep 2013 16:40:58 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 4A37FE0C3D for ; Tue, 17 Sep 2013 16:40:58 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 118E633EB2B for ; Tue, 17 Sep 2013 16:40:57 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id B584AE530A for ; Tue, 17 Sep 2013 16:40:55 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1379427003.5dd5292462c176a1d1e7458ecd69fd4467ed9440.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/setupscript/, roverlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/argparser.py roverlay/argutil.py roverlay/runtime.py roverlay/setupscript/runtime.py roverlay/status.py X-VCS-Directories: roverlay/setupscript/ roverlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 5dd5292462c176a1d1e7458ecd69fd4467ed9440 X-VCS-Branch: master Date: Tue, 17 Sep 2013 16:40:55 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 9ba09453-7bcf-4f1b-9fd0-18257ce3b016 X-Archives-Hash: 7da664f1b8b770918118de659d3dcd04 commit: 5dd5292462c176a1d1e7458ecd69fd4467ed9440 Author: André Erdmann mailerd de> AuthorDate: Tue Sep 17 14:10:03 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Tue Sep 17 14:10:03 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5dd52924 ArgumentParserProxy: use existing parser @classmethod create_new_parser(...) can be used to get the old behavior (ArgumentParserProxy creates the parser). --- roverlay/argparser.py | 31 ++++++++++++++++++------------- roverlay/argutil.py | 17 +++++++++++++---- roverlay/runtime.py | 4 +++- roverlay/setupscript/runtime.py | 6 +++--- roverlay/status.py | 4 +++- 5 files changed, 40 insertions(+), 22 deletions(-) diff --git a/roverlay/argparser.py b/roverlay/argparser.py index 154fdce..5b28d0f 100644 --- a/roverlay/argparser.py +++ b/roverlay/argparser.py @@ -37,42 +37,45 @@ class RoverlayArgumentParserBase ( roverlay.argutil.ArgumentParserProxy ): DESCRIPTION_TEMPLATE = None - def __init__ ( - self, defaults=None, description=True, formatter_class=True, - format_description=False, **kwargs + @classmethod + def create_new_parser ( cls, + defaults=None, description=True, formatter_class=True, + format_description=True, **kwargs ): if description is True: - if self.DESCRIPTION_TEMPLATE is None: + if cls.DESCRIPTION_TEMPLATE is None: desc = ( roverlay.core.description_str + '\n' + roverlay.core.license_str ) else: - desc = self.format_description() + desc = cls.format_description() elif description: if format_description: - desc = self.format_description ( description ) + desc = cls.format_description ( description ) else: desc = description else: desc = None - super ( RoverlayArgumentParserBase, self ).__init__ ( + return super ( RoverlayArgumentParserBase, cls ).create_new_parser ( defaults = defaults, description = desc, formatter_class = ( argparse.RawDescriptionHelpFormatter if formatter_class is True else formatter_class ), - **kwargs ) + # --- end of create_new_parser (...) --- - + def __init__ ( self, *args, **kwargs ): + super ( RoverlayArgumentParserBase, self ).__init__ ( *args, **kwargs ) self.extra_conf = None # --- end of __init__ (...) --- - def format_description ( self, desc=None ): - return ( self.DESCRIPTION_TEMPLATE if desc is None else desc ).format ( + @classmethod + def format_description ( cls, desc=None ): + return ( cls.DESCRIPTION_TEMPLATE if desc is None else desc ).format ( version=roverlay.core.version, license=roverlay.core.license_str, ) @@ -566,8 +569,10 @@ class RoverlayArgumentParser ( RoverlayArgumentParserBase ): COMMAND_DESCRIPTION = None DEFAULT_COMMAND = None - def __init__ ( self, default_command=None, **kwargs ): - super ( RoverlayArgumentParser, self ).__init__ ( **kwargs ) + def __init__ ( self, parser, default_command=None, defaults=None ): + super ( RoverlayArgumentParser, self ).__init__ ( + parser, defaults=defaults + ) self.default_command = ( self.DEFAULT_COMMAND if default_command is None else default_command ) diff --git a/roverlay/argutil.py b/roverlay/argutil.py index 90444a3..c3981e5 100644 --- a/roverlay/argutil.py +++ b/roverlay/argutil.py @@ -184,11 +184,20 @@ class ArgumentParserProxy ( object ): STR_SUPPRESS = 'keep' - - - def __init__ ( self, defaults=None, **kwargs ): + @classmethod + def create_new_parser ( cls, defaults=None, **kwargs ): + parser = argparse.ArgumentParser ( **kwargs ) + return cls ( parser, defaults=defaults ) + # --- end of create_new_parser (...) --- + + @classmethod + def wrap ( cls, parser, defaults=None ): + return cls ( parser, defaults=defaults ) + # --- end of wrap (...) --- + + def __init__ ( self, parser, defaults=None ): super ( ArgumentParserProxy, self ).__init__() - self.parser = argparse.ArgumentParser (**kwargs ) + self.parser = parser if defaults is None: self.defaults = dict() diff --git a/roverlay/runtime.py b/roverlay/runtime.py index 2c12334..43140b2 100644 --- a/roverlay/runtime.py +++ b/roverlay/runtime.py @@ -150,7 +150,9 @@ class RuntimeEnvironmentBase ( MinimalRuntimeEnvironment ): class RuntimeEnvironment ( RuntimeEnvironmentBase ): - ARG_PARSER_CLS = roverlay.argparser.RoverlayMainArgumentParser + ARG_PARSER_CLS = ( + roverlay.argparser.RoverlayMainArgumentParser.create_new_parser + ) def __init__ ( self, installed, *args, **kw ): super ( RuntimeEnvironment, self ).__init__ ( installed, *args, **kw ) diff --git a/roverlay/setupscript/runtime.py b/roverlay/setupscript/runtime.py index 8b51973..75bfff6 100644 --- a/roverlay/setupscript/runtime.py +++ b/roverlay/setupscript/runtime.py @@ -47,7 +47,7 @@ def arg_stdout_or_fs ( value ): # --- end of arg_stdout_or_fs (...) --- -class SetupArgParser ( roverlay.argparser.RoverlayArgumentParser ): +class SetupArgumentParser ( roverlay.argparser.RoverlayArgumentParser ): MULTIPLE_COMMANDS = False COMMAND_DESCRIPTION = { 'init' : 'initialize roverlay\'s config and filesystem layout', @@ -262,7 +262,7 @@ class SetupArgParser ( roverlay.argparser.RoverlayArgumentParser ): return arg # --- end of setup_hooks (...) --- -# --- end of SetupArgParser --- +# --- end of SetupArgumentParser --- class SetupEnvironment ( roverlay.runtime.IndependentRuntimeEnvironment ): @@ -326,7 +326,7 @@ class SetupEnvironment ( roverlay.runtime.IndependentRuntimeEnvironment ): # --- end of get_parser_defaults (...) --- def create_argparser ( self ): - return SetupArgParser ( + return SetupArgumentParser.create_new_parser ( description = 'roverlay setup script', defaults = self.get_parser_defaults(), epilog = ( diff --git a/roverlay/status.py b/roverlay/status.py index 50372b8..cb25edb 100644 --- a/roverlay/status.py +++ b/roverlay/status.py @@ -118,7 +118,9 @@ class SelfReferencingDict ( ReferenceableDict ): class StatusRuntimeEnvironment ( roverlay.runtime.RuntimeEnvironmentBase ): - ARG_PARSER_CLS = roverlay.argparser.RoverlayStatusArgumentParser + ARG_PARSER_CLS = ( + roverlay.argparser.RoverlayStatusArgumentParser.create_new_parser + ) TEMPLATE_ENCODING = 'utf-8'