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

View file

@ -1,6 +1,21 @@
import sys
from setuptools import find_packages from setuptools import find_packages
from setuptools import setup from setuptools import setup
install_requires = [
'argparse',
'jsonschema',
'plumbum',
'pyyaml',
'simplejson',
]
if sys.version_info < (2, 7):
install_requires.append('ordereddict')
setup( setup(
name='pre_commit', name='pre_commit',
version='0.0.0', version='0.0.0',
@ -10,13 +25,7 @@ setup(
'resources/pre-commit.sh' 'resources/pre-commit.sh'
] ]
}, },
install_requires=[ install_requires=install_requires,
'argparse',
'jsonschema',
'plumbum',
'pyyaml',
'simplejson',
],
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'pre-commit = pre_commit.run:run', 'pre-commit = pre_commit.run:run',