GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Failed
Push — master ( 8fa80d...f4cf2c )
by dup
01:36
created

versions.versions.main()   A

Complexity

Conditions 5

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 11
nop 0
dl 0
loc 20
rs 9.3333
c 0
b 0
f 0
1
#!/usr/bin/env python
2
# -*- coding: utf8 -*-
3
#
4
#  versions.py : checks releases and versions of programs through RSS
5
#                or Atom feeds and tells you
6
#
7
#  (C) Copyright 2016 - 2018 Olivier Delhomme
8
#  e-mail : [email protected]
9
#
10
#  This program is free software; you can redistribute it and/or modify
11
#  it under the terms of the GNU General Public License as published by
12
#  the Free Software Foundation; either version 3, or (at your option)
13
#  any later version.
14
#
15
#  This program is distributed in the hope that it will be useful,
16
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
#  GNU General Public License for more details.
19
#
20
#  You should have received a copy of the GNU General Public License
21
#  along with this program; if not, write to the Free Software Foundation,
22
#  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
#
24
import codecs
25
import sys
26
import locale
27
import os
28
import doctest
29
import configuration
30
import caches
31
import common
32
import byproject
33
import bylist
34
35
36
"""
37
This program checks projects versions through RSS and Atom feeds and
38
should only print those with new release version.
39
40
It implements checking for projects in github.com and freshcode.club.
41
Projects must be added to a YAML file (named by default
42
~/.config/versions/versions.yaml). One can use --file=FILENAME option
43
to specify an alternative YAML file. version.yaml is included as an
44
example in this project.
45
46
Versions uses and produces text files. Those files are cache files
47
written into ~/.local/versions directory. "*.cache" are cache files
48
containing the project list and their associated version (the latest).
49
"*.feed" are information feed cache files containing on only one line
50
the latest parsed post of the feed.
51
"""
52
53
54
def check_versions(versions_conf):
55
    """
56
    Checks versions by parsing online feeds.
57
    """
58
59
    # Checks projects from by project sites such as github and sourceforge
60
    byproject_site_list = versions_conf.extract_site_list('byproject')
61
    byproject.check_versions(versions_conf, byproject_site_list)
62
63
    # Checks projects from 'list' tupe sites such as freshcode.club
64
    list_site_list = versions_conf.extract_site_list('list')
65
    bylist.check_versions(versions_conf, list_site_list)
66
# End of check_versions() function
67
68
69
def print_cache_or_check_versions(versions_conf):
70
    """
71
    Decide to pretty print projects and their associated version that
72
    are already in the cache or to check versions of that projects upon
73
    selections made at the command line
74
    """
75
76
    common.print_debug(versions_conf.options.debug, u'Loading yaml config file')
77
    versions_conf.load_yaml_from_config_file(versions_conf.config_filename)
78
79
    if versions_conf.options.list_cache is True:
80
        # Pretty prints all caches.
81
        cache_list = versions_conf.make_site_cache_list_name()
82
        caches.print_versions_from_cache(versions_conf.local_dir, cache_list)
83
84
    else:
85
        # Checks version from online feeds
86
        check_versions(versions_conf)
87
88
# End of print_list_or_check_versions() function.
89
90
91
def testmodule(name):
92
    """
93
    Runs doctests in the module called 'name'
94
    """
95
96
    print(u'{} {} {}'.format(u'»»»»»»»»»»»»»»»» Testing module:', name, u'««««««««««««««««'))
97
    mod = __import__(name)
98
    doctest.testmod(mod, verbose=True)
99
    print(u'{}'.format('End.\n'))
100
101
# End of testmodule() function.
102
103
def main():
104
    """
105
    This is the where the program begins
106
    """
107
108
    if sys.version_info[0] == 2:
109
        sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
110
111
    versions_conf = configuration.Conf()  # Configuration options
112
113
    if versions_conf.options.debug:
114
        module_list = ['__main__', 'common', 'caches', 'configuration', 'byproject', 'bylist']
115
        for module_name in module_list:
116
            testmodule(module_name)
117
118
    if os.path.isfile(versions_conf.config_filename):
119
        print_cache_or_check_versions(versions_conf)
120
121
    else:
122
        print(u'Error: file {} does not exist'.format(versions_conf.config_filename))
123
124
# End of main() function
125
126
127
if __name__ == "__main__":
128
    main()
129