• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

my8100 / logparser / 1006

01 Jan 2025 01:45PM UTC coverage: 80.811% (-6.6%) from 87.405%
1006

push

circleci

web-flow
Release v0.8.3 and support Python 3.13 (#30)

1 of 1 new or added line in 1 file covered. (100.0%)

57 existing lines in 4 files now uncovered.

737 of 912 relevant lines covered (80.81%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.0
/logparser/utils.py
1
# coding: utf-8
2
import json
1✔
3
import logging
1✔
4
import platform
1✔
5
import sys
1✔
6

7
try:
1✔
8
    from scrapy import __version__ as scrapy_version
1✔
9
except ImportError:
1✔
10
    scrapy_version = '0.0.0'
1✔
11
from six.moves.urllib.parse import urlencode
1✔
12
from six.moves.urllib.request import urlopen
1✔
13

14
from .__version__ import __version__
1✔
15
from .settings import (SCRAPYD_SERVER, SCRAPYD_LOGS_DIR, PARSE_ROUND_INTERVAL,
1✔
16
                       ENABLE_TELNET, OVERRIDE_TELNET_CONSOLE_HOST, LOG_ENCODING, LOG_EXTENSIONS,
17
                       LOG_HEAD_LINES, LOG_TAIL_LINES, LOG_CATEGORIES_LIMIT, JOBS_TO_KEEP, CHUNK_SIZE,
18
                       DELETE_EXISTING_JSON_FILES_AT_STARTUP, KEEP_DATA_IN_MEMORY, VERBOSE)
19

20

21
custom_settings = dict(
1✔
22
    scrapyd_server=SCRAPYD_SERVER,
23
    scrapyd_logs_dir=SCRAPYD_LOGS_DIR,
24
    parse_round_interval=PARSE_ROUND_INTERVAL,
25
    enable_telnet=ENABLE_TELNET,
26
    override_telnet_console_host=OVERRIDE_TELNET_CONSOLE_HOST,
27
    log_encoding=LOG_ENCODING,
28
    log_extensions=LOG_EXTENSIONS,
29
    log_head_lines=LOG_HEAD_LINES,
30
    log_tail_lines=LOG_TAIL_LINES,
31
    log_categories_limit=LOG_CATEGORIES_LIMIT,
32
    jobs_to_keep=JOBS_TO_KEEP,
33
    chunk_size=CHUNK_SIZE,
34
    delete_existing_json_files_at_startup=DELETE_EXISTING_JSON_FILES_AT_STARTUP,
35
    keep_data_in_memory=KEEP_DATA_IN_MEMORY,
36
    verbose=VERBOSE,
37
    # main_pid=0,
38
    # debug=False,
39
    # exit_timeout=0
40
)
41

42

43
def get_logger(name, level=logging.DEBUG):
1✔
44
    logger = logging.getLogger(name)
1✔
45
    handler = logging.StreamHandler()
1✔
46
    formatter = logging.Formatter(fmt="[%(asctime)s] %(levelname)-8s in %(name)s: %(message)s")
1✔
47
    handler.setFormatter(formatter)
1✔
48
    logger.addHandler(handler)
1✔
49
    logger.setLevel(level)
1✔
50
    return logger
1✔
51

52

53
def check_update(timeout=5):
1✔
54
    logger = get_logger(__name__)
1✔
55
    js = {}
1✔
56
    try:
1✔
57
        data = dict(custom_settings)
1✔
58
        data['os'] = platform.platform()
1✔
59
        data['py'] = '.'.join([str(n) for n in sys.version_info[:3]])
1✔
60
        data['logparser'] = __version__
1✔
61
        data['scrapy_version'] = scrapy_version
1✔
62
        if sys.version_info.major >= 3:
1✔
UNCOV
63
            data = urlencode(data).encode('utf-8', 'replace')
×
64
        else:
65
            data = urlencode(data)
1✔
66
        req = urlopen('https://my8100.herokuapp.com/check_update', data=data, timeout=timeout)
1✔
67
        text = req.read().decode('utf-8', 'replace')
×
68
        js = json.loads(text)
×
69
        # print(js)
70
    # except Exception as err:
71
        # print(err)
72
    except:
1✔
73
        pass
1✔
74
    else:
75
        if js.get('latest_version') == __version__:
×
76
            logger.info("Running the latest version: %s", __version__)
×
77
        else:
78
            if js.get('info', ''):
×
79
                logger.warning(js['info'])
×
80
            if js.get('force_update', ''):
×
81
                sys.exit("Please update and then restart logparser. ")
×
82
    return js  # For test only
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc