From 20b6c4c1600e5d696c0f004242b6d21ce90ea4f0 Mon Sep 17 00:00:00 2001 From: nvbn Date: Wed, 22 Apr 2015 22:36:18 +0200 Subject: [PATCH] Inherit `RulesNamesList` from `list` --- tests/test_conf.py | 10 +++++----- tests/test_main.py | 2 +- thefuck/conf.py | 29 ++++++++++------------------- 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/tests/test_conf.py b/tests/test_conf.py index 41c693e6..929a41e1 100644 --- a/tests/test_conf.py +++ b/tests/test_conf.py @@ -3,11 +3,11 @@ from thefuck.main import Rule from thefuck import conf -def test_rules_list(): - assert conf.RulesList(['bash', 'lisp']) == ['bash', 'lisp'] - assert conf.RulesList(['bash', 'lisp']) == conf.RulesList(['bash', 'lisp']) - assert Rule('lisp', None, None, False) in conf.RulesList(['lisp']) - assert Rule('bash', None, None, False) not in conf.RulesList(['lisp']) +def test_rules_names_list(): + assert conf.RulesNamesList(['bash', 'lisp']) == ['bash', 'lisp'] + assert conf.RulesNamesList(['bash', 'lisp']) == conf.RulesNamesList(['bash', 'lisp']) + assert Rule('lisp', None, None, False) in conf.RulesNamesList(['lisp']) + assert Rule('bash', None, None, False) not in conf.RulesNamesList(['lisp']) def test_default(): diff --git a/tests/test_main.py b/tests/test_main.py index 12f06ea4..aacc17d4 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -32,7 +32,7 @@ def test_get_rules(): main.Rule('lisp', 'lisp', 'lisp', True)] assert list(main.get_rules( Path('~'), - Mock(rules=conf.RulesList(['bash'])))) \ + Mock(rules=conf.RulesNamesList(['bash'])))) \ == [main.Rule('bash', 'bash', 'bash', True), main.Rule('bash', 'bash', 'bash', True)] diff --git a/thefuck/conf.py b/thefuck/conf.py index 2f3da7d1..6c2b8947 100644 --- a/thefuck/conf.py +++ b/thefuck/conf.py @@ -6,38 +6,29 @@ from six import text_type from . import logs -class RulesList(object): +class RulesNamesList(list): """Wrapper a top of list for string rules names.""" - def __init__(self, rules): - self.rules = rules - def __contains__(self, item): - return item.name in self.rules - - def __getattr__(self, item): - return getattr(self.rules, item) - - def __eq__(self, other): - return self.rules == other + return super(RulesNamesList, self).__contains__(item.name) -class _DefaultRules(RulesList): +class _DefaultRulesNames(RulesNamesList): def __add__(self, items): - return _DefaultRules(self.rules + items) + return _DefaultRulesNames(list(self) + items) def __contains__(self, item): return item.enabled_by_default or \ - super(_DefaultRules, self).__contains__(item) + super(_DefaultRulesNames, self).__contains__(item) def __eq__(self, other): - if isinstance(other, _DefaultRules): - return self.rules == other.rules + if isinstance(other, _DefaultRulesNames): + return super(_DefaultRulesNames, self).__eq__(other) else: return False -DEFAULT = _DefaultRules([]) +DEFAULT = _DefaultRulesNames([]) class Settings(object): @@ -118,7 +109,7 @@ def get_settings(user_dir): sys.exc_info(), Settings(conf)) - if not isinstance(conf['rules'], RulesList): - conf['rules'] = RulesList(conf['rules']) + if not isinstance(conf['rules'], RulesNamesList): + conf['rules'] = RulesNamesList(conf['rules']) return Settings(conf)