From 9a1799b9a825818d5b94758cab218c299aeae8e8 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Thu, 3 Apr 2014 20:51:37 -0700 Subject: [PATCH 1/2] DRY up validate_* --- pre_commit/clientlib/validate_base.py | 26 +++++++++++++++++++++ pre_commit/clientlib/validate_config.py | 24 ++----------------- pre_commit/clientlib/validate_manifest.py | 28 +++++------------------ 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/pre_commit/clientlib/validate_base.py b/pre_commit/clientlib/validate_base.py index dcf7f115..4d33db18 100644 --- a/pre_commit/clientlib/validate_base.py +++ b/pre_commit/clientlib/validate_base.py @@ -1,10 +1,14 @@ +from __future__ import print_function + +import argparse import jsonschema import jsonschema.exceptions import os.path import yaml from pre_commit.jsonschema_extensions import apply_defaults +from pre_commit.util import entry def get_validator( @@ -48,3 +52,25 @@ def get_validator( return obj return validate + + +def get_run_function(filenames_help, validate_strategy, exception_cls): + @entry + def run(argv): + parser = argparse.ArgumentParser() + parser.add_argument('filenames', nargs='*', help=filenames_help) + args = parser.parse_args(argv) + + retval = 0 + for filename in args.filenames: + try: + validate_strategy(filename) + except exception_cls as e: + print(e.args[0]) + # If there was an inner exception, print the stringified + # version of that. + if len(e.args) > 1: + print(str(e.args[1])) + retval = 1 + return retval + return run diff --git a/pre_commit/clientlib/validate_config.py b/pre_commit/clientlib/validate_config.py index 307b5633..8019ae0d 100644 --- a/pre_commit/clientlib/validate_config.py +++ b/pre_commit/clientlib/validate_config.py @@ -1,12 +1,9 @@ -from __future__ import print_function - -import argparse import re import sys +from pre_commit.clientlib.validate_base import get_run_function from pre_commit.clientlib.validate_base import get_validator -from pre_commit.util import entry class InvalidConfigError(ValueError): pass @@ -69,24 +66,7 @@ load_config = get_validator( ) -@entry -def run(argv): - parser = argparse.ArgumentParser() - parser.add_argument('filenames', nargs='*', help='Config filenames.') - args = parser.parse_args(argv) - - retval = 0 - for filename in args.filenames: - try: - load_config(filename) - except InvalidConfigError as e: - print(e.args[0]) - # If we have more than one exception argument print the stringified - # version - if len(e.args) > 1: - print(str(e.args[1])) - retval = 1 - return retval +run = get_run_function('Config filenames.', load_config, InvalidConfigError) if __name__ == '__main__': diff --git a/pre_commit/clientlib/validate_manifest.py b/pre_commit/clientlib/validate_manifest.py index 3f89cfae..d21be1dd 100644 --- a/pre_commit/clientlib/validate_manifest.py +++ b/pre_commit/clientlib/validate_manifest.py @@ -1,12 +1,9 @@ -from __future__ import print_function - -import argparse import sys +from pre_commit.clientlib.validate_base import get_run_function from pre_commit.clientlib.validate_base import get_validator from pre_commit.languages.all import all_languages -from pre_commit.util import entry class InvalidManifestError(ValueError): pass @@ -51,24 +48,11 @@ load_manifest = get_validator( ) -@entry -def run(argv): - parser = argparse.ArgumentParser() - parser.add_argument('filenames', nargs='*', help='Manifest filenames.') - args = parser.parse_args(argv) - - retval = 0 - for filename in args.filenames: - try: - load_manifest(filename) - except InvalidManifestError as e: - print(e.args[0]) - # If we have more than one exception argument print the stringified - # version - if len(e.args) > 1: - print(str(e.args[1])) - retval = 1 - return retval +run = get_run_function( + 'Manifest filenames.', + load_manifest, + InvalidManifestError, +) if __name__ == '__main__': From d5e920b370f246b28c15919ffee4144fbe34deaf Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Thu, 3 Apr 2014 20:59:37 -0700 Subject: [PATCH 2/2] Fuck you ipython --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index 688683ed..05941327 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,8 @@ # Testing requirements coverage +# Fuck you ipython +ipython<2.0.0 ipdb mock pyflakes