Add OrderedDict dependency. Make sure hooks are run in a deterministic order

This commit is contained in:
Anthony Sottile 2014-03-23 12:35:29 -07:00
parent dc1494d0e7
commit 254655e2fd
3 changed files with 28 additions and 8 deletions

10
pre_commit/ordereddict.py Normal file
View file

@ -0,0 +1,10 @@
from __future__ import absolute_import
# This module serves only as a shim for OrderedDict
try:
from collections import OrderedDict
except ImportError:
from orderddict import OrderedDict
__all__ = (OrderedDict.__name__,)

View file

@ -6,6 +6,7 @@ import pre_commit.constants as C
from pre_commit.clientlib.validate_manifest import validate_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.util import cached_property
@ -29,7 +30,7 @@ class Repository(object):
@cached_property
def hooks(self):
return dict(
return OrderedDict(
(hook['id'], dict(hook, **self.manifest[hook['id']]))
for hook in self.repo_config['hooks']
)

View file

@ -1,6 +1,21 @@
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',
version='0.0.0',
@ -10,13 +25,7 @@ setup(
'resources/pre-commit.sh'
]
},
install_requires=[
'argparse',
'jsonschema',
'plumbum',
'pyyaml',
'simplejson',
],
install_requires=install_requires,
entry_points={
'console_scripts': [
'pre-commit = pre_commit.run:run',