diff --git a/pre_commit/commands.py b/pre_commit/commands.py index e43a0878..15813fd1 100644 --- a/pre_commit/commands.py +++ b/pre_commit/commands.py @@ -4,16 +4,16 @@ import os import pkg_resources import shutil import stat +from asottile.ordereddict import OrderedDict +from asottile.yaml import ordered_dump +from asottile.yaml import ordered_load from plumbum import local import pre_commit.constants as C from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA from pre_commit.clientlib.validate_config import load_config from pre_commit.jsonschema_extensions import remove_defaults -from pre_commit.ordereddict import OrderedDict from pre_commit.repository import Repository -from pre_commit.yaml_extensions import ordered_dump -from pre_commit.yaml_extensions import ordered_load def install(runner): diff --git a/pre_commit/ordereddict.py b/pre_commit/ordereddict.py deleted file mode 100644 index 53926577..00000000 --- a/pre_commit/ordereddict.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import absolute_import - -# This module serves only as a shim for OrderedDict - -try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - -__all__ = (OrderedDict.__name__,) diff --git a/pre_commit/repository.py b/pre_commit/repository.py index dd5faadb..6b27aa11 100644 --- a/pre_commit/repository.py +++ b/pre_commit/repository.py @@ -1,12 +1,12 @@ import contextlib import logging +from asottile.ordereddict import OrderedDict from plumbum import local import pre_commit.constants as C from pre_commit.clientlib.validate_manifest import load_manifest from pre_commit.hooks_workspace import in_hooks_workspace from pre_commit.languages.all import languages -from pre_commit.ordereddict import OrderedDict from pre_commit.prefixed_command_runner import PrefixedCommandRunner from pre_commit.util import cached_property from pre_commit.util import clean_path_on_failure diff --git a/pre_commit/yaml_extensions.py b/pre_commit/yaml_extensions.py deleted file mode 100644 index 2b9cd6ee..00000000 --- a/pre_commit/yaml_extensions.py +++ /dev/null @@ -1,31 +0,0 @@ -import yaml - -from pre_commit.ordereddict import OrderedDict - - -# Adapted from http://stackoverflow.com/a/21912744/812183 - -def ordered_load(stream): - class OrderedLoader(yaml.loader.Loader): - pass - - def constructor(loader, node): - return OrderedDict(loader.construct_pairs(node)) - OrderedLoader.add_constructor( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - constructor, - ) - return yaml.load(stream, Loader=OrderedLoader) - - -def ordered_dump(obj, **kwargs): - class OrderedDumper(yaml.dumper.SafeDumper): - pass - - def dict_representer(dumper, data): - return dumper.represent_mapping( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - data.items(), - ) - OrderedDumper.add_representer(OrderedDict, dict_representer) - return yaml.dump(obj, Dumper=OrderedDumper, **kwargs) diff --git a/setup.py b/setup.py index c284d317..17be2135 100644 --- a/setup.py +++ b/setup.py @@ -1,21 +1,7 @@ -import sys from setuptools import find_packages from setuptools import setup -install_requires = [ - 'argparse', - 'jsonschema', - 'plumbum', - 'pyyaml', - 'simplejson', -] - - -if sys.version_info < (2, 7): - install_requires.append('ordereddict') - - setup( name='pre_commit', description='A framework for managing and maintaining multi-language pre-commit hooks.', @@ -38,7 +24,15 @@ setup( 'resources/pre-commit.sh' ] }, - install_requires=install_requires, + install_requires=[ + 'argparse', + 'asottile.ordereddict', + 'asottile.yaml', + 'jsonschema', + 'plumbum', + 'pyyaml', + 'simplejson', + ], entry_points={ 'console_scripts': [ 'pre-commit = pre_commit.run:run', diff --git a/tests/clientlib/validate_base_test.py b/tests/clientlib/validate_base_test.py index abd727ad..67cda358 100644 --- a/tests/clientlib/validate_base_test.py +++ b/tests/clientlib/validate_base_test.py @@ -1,8 +1,8 @@ import pytest +from asottile.ordereddict import OrderedDict +from asottile.yaml import ordered_load from pre_commit.clientlib.validate_base import get_validator -from pre_commit.ordereddict import OrderedDict -from pre_commit.yaml_extensions import ordered_load from testing.util import get_resource_path diff --git a/tests/commands_test.py b/tests/commands_test.py index e5b44e98..381762ae 100644 --- a/tests/commands_test.py +++ b/tests/commands_test.py @@ -4,8 +4,11 @@ import pkg_resources import pytest import shutil import stat +from asottile.ordereddict import OrderedDict +from asottile.yaml import ordered_dump from plumbum import local + import pre_commit.constants as C from pre_commit import git from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA @@ -17,9 +20,7 @@ from pre_commit.commands import RepositoryCannotBeUpdatedError from pre_commit.commands import uninstall from pre_commit.commands import _update_repository from pre_commit.jsonschema_extensions import apply_defaults -from pre_commit.ordereddict import OrderedDict from pre_commit.runner import Runner -from pre_commit.yaml_extensions import ordered_dump from testing.auto_namedtuple import auto_namedtuple from testing.util import get_resource_path diff --git a/tests/yaml_extensions_test.py b/tests/yaml_extensions_test.py deleted file mode 100644 index 0559c878..00000000 --- a/tests/yaml_extensions_test.py +++ /dev/null @@ -1,35 +0,0 @@ -import pre_commit.constants as C -from pre_commit.ordereddict import OrderedDict -from pre_commit.yaml_extensions import ordered_dump -from pre_commit.yaml_extensions import ordered_load - - -def test_ordered_load(): - ret = ordered_load( - 'a: herp\n' - 'c: derp\n' - 'd: darp\n' - 'b: harp\n' - ) - # Original behavior - assert ret == {'a': 'herp', 'b': 'harp', 'c': 'derp', 'd': 'darp'} - # Ordered behavior - assert ( - ret.items() == - [('a', 'herp'), ('c', 'derp'), ('d', 'darp'), ('b', 'harp')] - ) - - -def test_ordered_dump(): - ret = ordered_dump( - OrderedDict( - (('a', 'herp'), ('c', 'derp'), ('b', 'harp'), ('d', 'darp')) - ), - **C.YAML_DUMP_KWARGS - ) - assert ret == ( - 'a: herp\n' - 'c: derp\n' - 'b: harp\n' - 'd: darp\n' - )