示例#1
0
    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')
示例#2
0
    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')
示例#3
0
 def test_list_required_arguments_no_args(self):
     expected = set()
     actual = list_missing_args()
     self.assertEqual(expected, actual)
示例#4
0
 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)
示例#5
0
 def test_list_required_arguments(self):
     expected = set('c')
     actual = list_missing_args(required=('a','b','c'), provided=('a','b'))
     self.assertEqual(expected, actual)
示例#6
0
 def test_list_required_arguments_no_args(self):
     expected = set()
     actual = list_missing_args()
     self.assertEqual(expected, actual)
示例#7
0
 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)
示例#8
0
 def test_list_required_arguments(self):
     expected = set('c')
     actual = list_missing_args(required=('a', 'b', 'c'),
                                provided=('a', 'b'))
     self.assertEqual(expected, actual)