def __init__(self, *args, **kwargs): if not all(field in kwargs for field in self.REQUIRED_ARGS): error = list_missing_args(self.REQUIRED_ARGS, kwargs, message='Missing argument{s}: {args}') raise ValueError(error) for key, value in kwargs.iteritems(): new_key = '_{key}'.format(key=key) setattr(self, new_key, value) if not isinstance(self._pages, collections.Iterable): raise TypeError('\'self.pages\' is not iterable') # Pre-compile condition regexes for condition in self._conditions: condition['pattern_str'] = condition.get('pattern') condition['pattern'] = re.compile(condition.get('pattern')) if not all(x in kwargs for x in ('opener', 'cookie_jar')): self.__cookie_jar = cookielib.CookieJar() cookie_processor = urllib2.HTTPCookieProcessor(self.__cookie_jar) self.__opener = urllib2.build_opener(cookie_processor) else: self.__cookie_jar = kwargs.get('cookie_jar') self.__opener = kwargs.get('opener') # TODO: Replace calls with `urllib2.urlopen` after urllib # .install_opener? logger_name = 'hotel_tracker.{0}'.format(self._name) self.logger = logging.getLogger(logger_name) self.logger.debug('Created new instance')
def test_list_required_arguments_no_args(self): expected = set() actual = list_missing_args() self.assertEqual(expected, actual)
def test_list_required_argument_with_plural_message(self): expected = "Missing arguments: a, c" actual = list_missing_args(required=('a','b','c'), provided='b', message='Missing argument{s}: {args}') self.assertEqual(expected, actual)
def test_list_required_arguments(self): expected = set('c') actual = list_missing_args(required=('a','b','c'), provided=('a','b')) self.assertEqual(expected, actual)
def test_list_required_argument_with_plural_message(self): expected = "Missing arguments: a, c" actual = list_missing_args(required=('a', 'b', 'c'), provided='b', message='Missing argument{s}: {args}') self.assertEqual(expected, actual)
def test_list_required_arguments(self): expected = set('c') actual = list_missing_args(required=('a', 'b', 'c'), provided=('a', 'b')) self.assertEqual(expected, actual)