Showing 29 of 34 files from the diff.
Newly tracked file
dosagelib/plugins/b.py changed.
Newly tracked file
dosagelib/util.py changed.
Newly tracked file
dosagelib/plugins/a.py changed.
Newly tracked file
dosagelib/singleton.py changed.
Newly tracked file
dosagelib/plugins/old.py changed.
Newly tracked file
dosagelib/plugins/l.py changed.
Newly tracked file
dosagelib/cmd.py changed.
Newly tracked file
dosagelib/director.py changed.
Newly tracked file
dosagelib/scraper.py changed.
Newly tracked file
dosagelib/plugins/e.py changed.
Newly tracked file
dosagelib/plugins/h.py changed.
Newly tracked file
dosagelib/events.py changed.
Newly tracked file
dosagelib/xml.py changed.
Newly tracked file
dosagelib/plugins/s.py changed.
Newly tracked file
dosagelib/plugins/c.py changed.
Other files ignored by Codecov

@@ -52,5 +52,5 @@
Loading
52 52
            cls('LRE', 'RLE', 'the-leyend-of-the-rose-cover'),
53 53
            cls('ProjectPrime', 'project-prime', 'custus-part-i-cover'),
54 54
            cls('PurpurinaEffect', 'purpurina-effect', 'purpurina-effect-cover'),
55 -
            cls('TheVoid', 'the-void', 'the-void-cover')
55 +
            cls('TheVoid', 'the-void', 'the-void-cover'),
56 56
        )

@@ -8,7 +8,7 @@
Loading
8 8
from ..util import tagre
9 9
from ..scraper import _BasicScraper, _ParserScraper
10 10
from ..helpers import indirectStarter
11 -
from .common import _ComicControlScraper, _WordPressScraper, _WPNavi, _WPNaviIn, _WPWebcomic
11 +
from .common import _ComicControlScraper, _WordPressScraper, _WPNavi, _WPWebcomic
12 12
13 13
14 14
class BackOffice(_WPNavi):
@@ -95,8 +95,7 @@
Loading
95 95
    def namer(self, image_url, page_url):
96 96
        indexes = tuple(page_url.rstrip('/').split('/')[-4:])
97 97
        name = '%s-%s-%s-%s' % indexes
98 -
        name = name + '_' + image_url.split('/')[-1]
99 -
        return name
98 +
        return name + '_' + image_url.split('/')[-1]
100 99
101 100
102 101
class Bethellium(_WPWebcomic):
@@ -265,8 +264,8 @@
Loading
265 264
266 265
267 266
class BroodHollow(_WordPressScraper):
268 -
    url = 'http://broodhollow.chainsawsuit.com/'
269 -
    firstStripUrl = 'http://broodhollow.chainsawsuit.com/page/2012/10/06/book-1-curious-little-thing'
267 +
    url = 'https://broodhollow.chainsawsuit.com/'
268 +
    firstStripUrl = url + 'page/2012/10/06/book-1-curious-little-thing'
270 269
271 270
    def shouldSkipUrl(self, url, data):
272 271
        return data.xpath('//div[@id="comic"]//iframe')
@@ -297,7 +296,7 @@
Loading
297 296
    imageSearch = '//center/img'
298 297
    prevSearch = (
299 298
        '//a[img[contains(@src, "previous")]]',  # 3-x
300 -
        '//a[text()="previous"]'  # 2-x
299 +
        '//a[text()="previous"]',  # 2-x
301 300
    )
302 301
303 302

@@ -38,5 +38,5 @@
Loading
38 38
            cls('Matilda', 'Ma_001', last='Ma_060'),
39 39
            cls('PerfectDate', 'PD_01', last='PD_18'),
40 40
            cls('TakePride', 'P_01', last='P_08'),
41 -
            cls('Valentines', 'Vol_VDay001', last='Vol_VDaylast')
41 +
            cls('Valentines', 'Vol_VDay001', last='Vol_VDaylast'),
42 42
        )

@@ -1,7 +1,7 @@
Loading
1 1
# SPDX-License-Identifier: MIT
2 2
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
3 3
# Copyright (C) 2012-2014 Bastian Kleineidam
4 -
# Copyright (C) 2015-2019 Tobias Gruetzmacher
4 +
# Copyright (C) 2015-2020 Tobias Gruetzmacher
5 5
import html
6 6
import os
7 7
import re

@@ -122,7 +122,7 @@
Loading
122 122
    nav = {
123 123
        'ah-club-2-cover': 'ah-club-1-page-24',
124 124
        'ah-club-3-cover': 'ah-club-2-page-28',
125 -
        'ah-club-4-cover': 'ah-club-3-page-22'
125 +
        'ah-club-4-cover': 'ah-club-3-page-22',
126 126
    }
127 127
128 128
    def getPrevUrl(self, url, data):

@@ -2,5 +2,6 @@
Loading
2 2
# Copyright (C) 2020 Tobias Gruetzmacher
3 3
import os
4 4
5 +
5 6
def get_hook_dirs():
6 7
    return [os.path.dirname(__file__)]

@@ -56,7 +56,7 @@
Loading
56 56
            try:
57 57
                fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
58 58
                # raises IOError on Python << 3.3, else OSError
59 -
            except (IOError, OSError):
59 +
            except OSError:
60 60
                self.exit(exit_code)
61 61
        self.initialized = True
62 62

@@ -27,7 +27,7 @@
Loading
27 27
        return {'rem-' + self.reason: self.REASONS[self.reason]}
28 28
29 29
    @classmethod
30 -
    def getmodules(cls):
30 +
    def getmodules(cls):  # noqa: Allowed to be long
31 31
        return (
32 32
            # Removed in 2.16
33 33
            cls('AbleAndBaker'),
@@ -675,7 +675,7 @@
Loading
675 675
        return {'ren-%i' % self.i: self.MSG % self.newname}
676 676
677 677
    @classmethod
678 -
    def getmodules(cls):
678 +
    def getmodules(cls):  # noqa: Allowed to be long
679 679
        return (
680 680
            # Renamed in 2.16
681 681
            cls('1997', '1977'),

@@ -42,7 +42,7 @@
Loading
42 42
            cls('SpareParts', 'sparepartscomics.com', first='20031022', last='20080331'),
43 43
            cls('TheNDU', 'thendu.com'),
44 44
            cls('WonderKittens', 'wonderkittens.com'),
45 -
            cls('YouSayItFirst', 'yousayitfirst.com', first='20040220', last='20130125')
45 +
            cls('YouSayItFirst', 'yousayitfirst.com', first='20040220', last='20130125'),
46 46
        )
47 47
48 48

@@ -107,14 +107,13 @@
Loading
107 107
        '0500': '0501',
108 108
        '0508': '0509',
109 109
        '0558': '0559',
110 -
        '0577': '05extra'
110 +
        '0577': '05extra',
111 111
    }
112 112
113 113
    def namer(self, imageUrl, pageUrl):
114 114
        # Fix inconsistent filenames
115 115
        filename = imageUrl.rsplit('/', 1)[-1]
116 -
        filename = filename.replace('ReN', 'N').replace('N01P', 'A02S')
117 -
        return filename
116 +
        return filename.replace('ReN', 'N').replace('N01P', 'A02S')
118 117
119 118
    def fetchUrls(self, url, data, urlSearch):
120 119
        # Fix missing image link
@@ -167,7 +166,7 @@
Loading
167 166
    starter = bounceStarter
168 167
    nav = {
169 168
        '517': '515',
170 -
        '449': '447'
169 +
        '449': '447',
171 170
    }
172 171
173 172
    def namer(self, imageUrl, pageUrl):
@@ -190,8 +189,9 @@
Loading
190 189
191 190
192 191
class LoFiJinks(_WPNaviIn):
193 -
    url = 'http://hijinksensue.com/comic/learning-to-love-again/'
194 -
    firstStripUrl = 'http://hijinksensue.com/comic/lo-fijinks-everything-i-know-anout-james-camerons-avatar-movie/'
192 +
    baseUrl = 'https://hijinksensue.com/comic/'
193 +
    url = baseUrl + 'learning-to-love-again/'
194 +
    firstStripUrl = baseUrl + 'lo-fijinks-everything-i-know-anout-james-camerons-avatar-movie/'
195 195
    endOfLife = True
196 196
197 197

@@ -301,12 +301,12 @@
Loading
301 301
def do_single_list(scrapers, verbose=False):
302 302
    """Get list of scraper names, one per line."""
303 303
    disabled = {}
304 -
    for num, scraperobj in enumerate(scrapers):
304 +
    for scraperobj in scrapers:
305 305
        if verbose:
306 306
            display_comic_help(scraperobj)
307 307
        else:
308 308
            out.info(get_tagged_scraper_name(scraperobj, reasons=disabled))
309 -
    return num + 1, disabled
309 +
    return len(scrapers) + 1, disabled
310 310
311 311
312 312
def do_column_list(scrapers):
@@ -359,11 +359,10 @@
Loading
359 359
    try:
360 360
        options = setup_options().parse_args(args=args)
361 361
        options.basepath = os.path.expanduser(options.basepath)
362 -
        res = run(options)
362 +
        return run(options)
363 363
    except KeyboardInterrupt:
364 364
        print("Aborted.")
365 -
        res = 1
365 +
        return 1
366 366
    except Exception:
367 367
        internal_error()
368 -
        res = 2
369 -
    return res
368 +
        return 2

@@ -1,7 +1,7 @@
Loading
1 1
# SPDX-License-Identifier: MIT
2 2
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
3 3
# Copyright (C) 2012-2014 Bastian Kleineidam
4 -
# Copyright (C) 2015-2016 Tobias Gruetzmacher
4 +
# Copyright (C) 2015-2020 Tobias Gruetzmacher
5 5
from .common import _WordPressScraper
6 6
7 7
@@ -9,16 +9,17 @@
Loading
9 9
    prevSearch = '//a[@rel="prev"]'
10 10
11 11
    def __init__(self, name, urlName, firstUrl, lang='en'):
12 -
        super(SandraAndWoo, self).__init__(name)
12 +
        super().__init__(name)
13 13
        self.url = 'http://www.sandraandwoo.com/' + urlName
14 14
        self.firstStripUrl = self.url + firstUrl
15 15
        self.lang = lang
16 16
17 17
    @classmethod
18 18
    def getmodules(cls):
19 -
        return [
19 +
        return (
20 20
            cls('Gaia', 'gaia/', '2000/01/01/welcome-to-gaia/'),
21 21
            cls('GaiaGerman', 'gaiade/', '2000/01/01/welcome-to-gaia/', lang='de'),
22 22
            cls('SandraAndWoo', '', '2000/01/01/welcome-to-sandra-and-woo/'),
23 -
            cls('SandraAndWooGerman', 'woode/', '2008/10/19/ein-ausgefuchster-waschbar/', lang='de'),
24 -
        ]
23 +
            cls('SandraAndWooGerman', 'woode/',
24 +
                '2008/10/19/ein-ausgefuchster-waschbar/', lang='de'),
25 +
        )

@@ -39,12 +39,13 @@
Loading
39 39
            cls('Darius', 'dbook-01', '03102010', last='darius-end'),
40 40
            cls('DracoVulpes', 'draco-vulpes', 'draco-vulpes'),
41 41
            cls('GenoworksSaga', 'genoworks-saga', '07012004'),
42 -
            cls('GralenCraggHall', 'gchall', '07152002', last='chapter-6-05', nav={'chapter-5': '02152005'}),
42 +
            cls('GralenCraggHall', 'gchall', '07152002', last='chapter-6-05',
43 +
                nav={'chapter-5': '02152005'}),
43 44
            cls('Kiet', 'kiet', 'kiet-c01'),
44 45
            cls('NoAngel', 'no-angel', '08112001', last='12142006'),
45 46
            cls('Pawprints', 'pawprints', 'airboard-page-1', last='pawprints-sheana-10'),
46 47
            cls('RandomRamblings', 'random-ramblings', 'darrik'),
47 -
            cls('SinkOrSwim', 'sos', 'sink-or-swim', last='ricochete-and-seraphim')
48 +
            cls('SinkOrSwim', 'sos', 'sink-or-swim', last='ricochete-and-seraphim'),
48 49
        )
49 50
50 51
@@ -85,5 +86,5 @@
Loading
85 86
            cls('Extras', 'extras', '01012012', nav={'12302012': '08152013'}),
86 87
            cls('Pure', 'pure', '04082002', last='chapter-6-page-1'),
87 88
            cls('SerinFairyHunter', 'serin', 'character-serin'),
88 -
            cls('SivineBlades', 'sivine', '06302002', last='10242008')
89 +
            cls('SivineBlades', 'sivine', '06302002', last='10242008'),
89 90
        )

@@ -163,7 +163,7 @@
Loading
163 163
            jobs.put(scraperobj)
164 164
        # start threads
165 165
        num_threads = min(options.parallel, jobs.qsize())
166 -
        for i in range(num_threads):
166 +
        for _i in range(num_threads):
167 167
            t = ComicGetter(options, jobs)
168 168
            threads.append(t)
169 169
            t.start()

@@ -67,7 +67,7 @@
Loading
67 67
        return "%s_%s%s" % (self.prefix, num, ext)
68 68
69 69
    @classmethod
70 -
    def getmodules(cls):
70 +
    def getmodules(cls):  # noqa: Allowed to be long
71 71
        return (
72 72
            # These were once in the list below, but fell out from the index...
73 73
            cls('BadassologyByMichaelBay', 'strudelology'),

@@ -117,7 +117,7 @@
Loading
117 117
        """Initialize internal variables."""
118 118
        self.name = name
119 119
        self.urls = set()
120 -
        self._indexes = tuple()
120 +
        self._indexes = ()
121 121
        self.skippedUrls = set()
122 122
        self.hitFirstStripUrl = False
123 123
@@ -247,7 +247,7 @@
Loading
247 247
248 248
    def namer(self, image_url, page_url):
249 249
        """Return filename for given image and page URL."""
250 -
        return None
250 +
        return
251 251
252 252
    def link_modifier(self, fromurl, tourl):
253 253
        """Optional modification of parsed link (previous/back/latest) URLs.
@@ -342,19 +342,18 @@
Loading
342 342
        Return language of the comic as a human-readable language name instead
343 343
        of a 2-character ISO639-1 code.
344 344
        """
345 -
        lang = 'Unknown (%s)' % self.lang
346 345
        if pycountry is None:
347 346
            if self.lang in languages.Languages:
348 -
                lang = languages.Languages[self.lang]
347 +
                return languages.Languages[self.lang]
349 348
        else:
350 349
            try:
351 -
                lang = pycountry.languages.get(alpha_2=self.lang).name
350 +
                return pycountry.languages.get(alpha_2=self.lang).name
352 351
            except KeyError:
353 352
                try:
354 -
                    lang = pycountry.languages.get(alpha2=self.lang).name
353 +
                    return pycountry.languages.get(alpha2=self.lang).name
355 354
                except KeyError:
356 355
                    pass
357 -
        return lang
356 +
        return 'Unknown (%s)' % self.lang
358 357
359 358
    def geoblocked(self):
360 359
        """Helper method to indicate that the user is most probably geo-blocked."""
@@ -467,8 +466,7 @@
Loading
467 466
        return tree
468 467
469 468
    def _parse_page(self, data):
470 -
        tree = lxml.html.document_fromstring(data)
471 -
        return tree
469 +
        return lxml.html.document_fromstring(data)
472 470
473 471
    def fetchUrls(self, url, data, urlSearch):
474 472
        """Search all entries for given XPath in a HTML page."""

@@ -120,10 +120,9 @@
Loading
120 120
    def fetchUrls(self, url, data, urlSearch):
121 121
        # Return the main logo for text-only pages
122 122
        try:
123 -
            imageUrls = super(Erfworld, self).fetchUrls(url, data, urlSearch)
123 +
            return super().fetchUrls(url, data, urlSearch)
124 124
        except ValueError:
125 -
            imageUrls = super(Erfworld, self).fetchUrls(url, data, '//li[@class="erf-logo"]//img')
126 -
        return imageUrls
125 +
            return super().fetchUrls(url, data, '//li[@class="erf-logo"]//img')
127 126
128 127
    def namer(self, imageUrl, pageUrl):
129 128
        # Fix inconsistent filenames

@@ -26,9 +26,7 @@
Loading
26 26
        url = 'http://www.hagardunor.net/comics.php'
27 27
        data = self.getPage(url)
28 28
        pattern = compile(tagre("a", "href", self.prevUrl))
29 -
        for starturl in self.fetchUrls(url, data, pattern):
30 -
            pass
31 -
        return starturl
29 +
        return self.fetchUrls(url, data, pattern)[-1]
32 30
33 31
34 32
# "Hiatus", navigation missing

@@ -5,12 +5,12 @@
Loading
5 5
6 6
7 7
class RHJunior(_ParserScraper):
8 -
    stripUrl = 'http://www.rhjunior.com/%s/'
8 +
    stripUrl = 'https://www.rhjunior.com/%s/'
9 9
    imageSearch = '//div[contains(@class, "entry-content")]//img'
10 10
    multipleImagesPerStrip = True
11 11
12 12
    def __init__(self, name, sub, prev, first, last=None):
13 -
        super(RHJunior, self).__init__('RHJunior/' + name)
13 +
        super().__init__('RHJunior/' + name)
14 14
        self.prevSearch = ('//a[@rel="prev"]', '//a[@title="' + prev + '"]')
15 15
        self.url = self.stripUrl % ('comics/' + sub)
16 16
        self.firstStripUrl = self.stripUrl % (sub + '-' + first)
@@ -22,10 +22,16 @@
Loading
22 22
    @classmethod
23 23
    def getmodules(cls):
24 24
        return (
25 -
            cls('GoblinHollow', 'goblin-hollow', '', '0001', last='7'),
26 -
            cls('NipAndTuck', 'nip-and-tuck', 'Nip and Tuck', '0000'),
27 -
            cls('QuentynQuinnSpaceRanger', 'quentyn-quinn-space-ranger', 'Quentyn Quinn, Space Ranger', '0001'),
28 -
            cls('TalesOfTheQuestor', 'tales-of-the-questor', 'Tales of the Questor', 'cover'),
29 -
            cls('TheJournalOfEnniasLongscript', 'the-journal-of-ennias-longscript', '', '0001', last='0111'),
30 -
            cls('TheProbabilityBomb', 'the-probability-bomb', 'the Probability Bomb', 'kickstarter')
25 +
            cls('GoblinHollow', 'goblin-hollow',
26 +
                '', '0001', last='7'),
27 +
            cls('NipAndTuck', 'nip-and-tuck',
28 +
                'Nip and Tuck', '0000'),
29 +
            cls('QuentynQuinnSpaceRanger', 'quentyn-quinn-space-ranger',
30 +
                'Quentyn Quinn, Space Ranger', '0001'),
31 +
            cls('TalesOfTheQuestor', 'tales-of-the-questor',
32 +
                'Tales of the Questor', 'cover'),
33 +
            cls('TheJournalOfEnniasLongscript', 'the-journal-of-ennias-longscript',
34 +
                '', '0001', last='0111'),
35 +
            cls('TheProbabilityBomb', 'the-probability-bomb',
36 +
                'the Probability Bomb', 'kickstarter'),
31 37
        )

@@ -118,7 +118,7 @@
Loading
118 118
            title,
119 119
            imageUrl,
120 120
            description,
121 -
            util.rfc822date(time.time())
121 +
            util.rfc822date(time.time()),
122 122
        )
123 123
124 124
        if self.newfile:
@@ -164,8 +164,7 @@
Loading
164 164
        """Get filename from date."""
165 165
        fn = time.strftime('comics-%Y%m%d', date)
166 166
        fn = os.path.join(self.basepath, 'html', fn + ".html")
167 -
        fn = os.path.abspath(fn)
168 -
        return fn
167 +
        return os.path.abspath(fn)
169 168
170 169
    def addNavLinks(self):
171 170
        if self.yesterdayUrl:
@@ -270,8 +269,7 @@
Loading
270 269
    def jsonFn(self, scraper):
271 270
        """Get filename for the JSON file for a comic."""
272 271
        fn = os.path.join(scraper.get_download_dir(self.basepath), 'dosage.json')
273 -
        fn = os.path.abspath(fn)
274 -
        return fn
272 +
        return os.path.abspath(fn)
275 273
276 274
    def getComicData(self, scraper):
277 275
        """Return dictionary with comic info."""

@@ -5,7 +5,7 @@
Loading
5 5
6 6
NS = {
7 7
    'd': 'https://dosage.rocks/xpath',
8 -
    're': 'http://exslt.org/regular-expressions'
8 +
    're': 'http://exslt.org/regular-expressions',
9 9
}
10 10
11 11

@@ -371,7 +371,7 @@
Loading
371 371
        '88-0_5d9e0dedb942e/03.': '88-0_5d9e0dedb942e/03b.',
372 372
        '88-0_5d9e0dedb942e/05.': '88-0_5d9e0dedb942e/05a.',
373 373
        '88-0_5d9e0dedb942e/30.': '88-0_5d9e0dedb942e/30a.',
374 -
        '87-0_5d94cdebd9df7/01a.': '87-0_5d94cdebd9df7/01c.'
374 +
        '87-0_5d94cdebd9df7/01a.': '87-0_5d94cdebd9df7/01c.',
375 375
    }
376 376
377 377
    def imageUrlModifier(self, imageUrl, data):
@@ -533,7 +533,7 @@
Loading
533 533
            self.stripUrl % '20050504',
534 534
            self.stripUrl % '20040705',
535 535
            self.stripUrl % '20030418',
536 -
            self.stripUrl % '20030214'
536 +
            self.stripUrl % '20030214',
537 537
        )
538 538
539 539
@@ -598,6 +598,7 @@
Loading
598 598
            self.currentChapter = self.currentChapter - 1
599 599
        return filename
600 600
601 +
601 602
class StarTrip(_ComicControlScraper):
602 603
    url = 'https://www.startripcomic.com/'
603 604
@@ -684,11 +685,11 @@
Loading
684 685
    imageSearch = (
685 686
        '//div[@class="img"]/img',      # When there's one image per strip
686 687
        '//div[@class="img"]/p/img',    # When there's multiple images per strip
687 -
        '//td/img'                      # Special case for Lesson1296.html
688 +
        '//td/img',                     # Special case for Lesson1296.html
688 689
    )
689 690
    prevSearch = (
690 691
        '//li[@class="previous"]/a',
691 -
        '//td/a'                        # Special case for Lesson1296.html
692 +
        '//td/a',                       # Special case for Lesson1296.html
692 693
    )
693 694
    multipleImagesPerStrip = True
694 695
    help = 'Index format: name'

@@ -20,7 +20,7 @@
Loading
20 20
        return self.url + '&uc_full_date=%s' % index
21 21
22 22
    @classmethod
23 -
    def getmodules(cls):
23 +
    def getmodules(cls):  # noqa: Allowed to be long
24 24
        return (
25 25
            # do not edit anything below since these entries are generated from
26 26
            # scripts/comicsherpa.py

@@ -34,7 +34,7 @@
Loading
34 34
        return data.xpath('//img[contains(@src, "content-error-missing")]')
35 35
36 36
    @classmethod
37 -
    def getmodules(cls):
37 +
    def getmodules(cls):  # noqa: Allowed to be long
38 38
        return (
39 39
            # old comics removed from the listing
40 40
            cls('HeavenlyNostrils', 'heavenly-nostrils'),

@@ -26,7 +26,7 @@
Loading
26 26
        return tourl
27 27
28 28
    @classmethod
29 -
    def getmodules(cls):
29 +
    def getmodules(cls):  # noqa: Allowed to be long
30 30
        return (
31 31
            # Some comics are not listed on the "all" page (too old?)
32 32

@@ -61,7 +61,7 @@
Loading
61 61
                'titleNo': self._comicid,
62 62
                'articleNo': url.rsplit('=', 1)[1],
63 63
                'page': 1,
64 -
                'order': 'new'
64 +
                'order': 'new',
65 65
            })
66 66
            response.raise_for_status()
67 67
            comments = response.json()['result']['list']
@@ -70,10 +70,10 @@
Loading
70 70
                    return comment['commentText']
71 71
            return None
72 72
        else:
73 -
            super(SmackJeeves, self).fetchText(url, data, textSearch, optional)
73 +
            return super().fetchText(url, data, textSearch, optional)
74 74
75 75
    @classmethod
76 -
    def getmodules(cls):
76 +
    def getmodules(cls):  # noqa: Allowed to be long
77 77
        return (
78 78
            cls('20TimesKirby', 91583),
79 79
            cls('2Kingdoms', 112096, endOfLife=True),

@@ -249,8 +249,8 @@
Loading
249 249
    url = 'http://www.cigarro.ca/'
250 250
    stripUrl = url + 'comic/%s/'
251 251
    firstStripUrl = stripUrl % 'reacquaintance'
252 -
    imageSearch = '//div[@id="comic"]//img',
253 -
    prevSearch = '//a[contains(text()," Prev")]',
252 +
    imageSearch = '//div[@id="comic"]//img'
253 +
    prevSearch = '//a[contains(text()," Prev")]'
254 254
255 255
256 256
class ClanOfTheCats(_WordPressScraper):
@@ -488,4 +488,4 @@
Loading
488 488
    endOfLife = True
489 489
490 490
    def shouldSkipUrl(self, url, data):
491 -
        return '2016/the-end' in url # video
491 +
        return '2016/the-end' in url  # video

@@ -44,7 +44,7 @@
Loading
44 44
        return "%s-%03d.%s" % (episodeNum, imageNum, imageExt)
45 45
46 46
    @classmethod
47 -
    def getmodules(cls):
47 +
    def getmodules(cls):  # noqa: Allowed to be long
48 48
        return (
49 49
            # START AUTOUPDATE
50 50
            cls('1000', 'action/one-thousand', 1217),

@@ -54,7 +54,8 @@
Loading
54 54
            # Not on frontpage...
55 55
            cls('Buzzboy', 'buzzboy'),
56 56
            cls('EveryoneLovesAdis', 'adis'),
57 -
            cls('GeneCatlowAlternate', 'genecatlow', last='20170302', adult=True, path='altd/%s.html'),
57 +
            cls('GeneCatlowAlternate', 'genecatlow', last='20170302',
58 +
                adult=True, path='altd/%s.html'),
58 59
59 60
            # do not edit anything below since these entries are generated from
60 61
            # scripts/update_plugins.sh
Files Coverage
dosagelib 82.04%
Project Totals (76 files) 82.04%
677.2
TRAVIS_PYTHON_VERSION=3.6
TRAVIS_OS_NAME=linux
677.3
TRAVIS_PYTHON_VERSION=3.7
TRAVIS_OS_NAME=linux

No yaml found.

Create your codecov.yml to customize your Codecov experience

Sunburst
The inner-most circle is the entire project, moving away from the center are folders then, finally, a single file. The size and color of each slice is representing the number of statements and the coverage, respectively.
Icicle
The top section represents the entire project. Proceeding with folders and finally individual files. The size and color of each slice is representing the number of statements and the coverage, respectively.
Grid
Each block represents a single file in the project. The size and color of each block is represented by the number of statements and the coverage, respectively.
Loading