Skip to content

Commit

Permalink
Run yapf & pylint fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ojarva committed Jan 25, 2021
1 parent 9c4df9b commit e285be4
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 38 deletions.
5 changes: 5 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[format]
max-line-length=125

[messages control]
disable=line-too-long,missing-docstring,no-self-use,fixme,bad-indentation,bad-continuation,invalid-name,too-many-locals,duplicate-code,too-many-branches,wrong-import-order
10 changes: 10 additions & 0 deletions .style.yapf
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[style]
based_on_style = pep8
allow_split_before_dict_value = false
blank_line_before_nested_class_or_def = false
coalesce_brackets = true
column_limit = 125
dedent_closing_brackets = true
each_dict_entry_on_separate_line = true
join_multiple_lines = true
spaces_around_power_operator = true
48 changes: 23 additions & 25 deletions openvpn_status_parser/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,18 @@
import datetime
import logging
import sys

from . import exceptions


class OpenVPNStatusParser(object):
class OpenVPNStatusParser:
"""
Usage:
import pprint
parser = OpenVPNStatusParser(filename)
pprint.pprint(parser.connected_clients)
"""

def __init__(self, filename):
self.filename = filename
self._connected_clients = None
Expand All @@ -59,55 +59,54 @@ def __init__(self, filename):
def _process_title(self, row):
try:
self._details["title"] = row[1]
except IndexError:
except IndexError as err:
logging.error("TITLE row is invalid: %s", row)
raise exceptions.MalformedFileException("TITLE row is invalid")
raise exceptions.MalformedFileException("TITLE row is invalid") from err

def _process_time(self, row):
try:
self._details["timestamp"] = datetime.datetime.fromtimestamp(int(row[2]))
except (IndexError, ValueError):
except (IndexError, ValueError) as err:
logging.error("TIME row is invalid: %s", row)
raise exceptions.MalformedFileException("TIME row is invalid")
raise exceptions.MalformedFileException("TIME row is invalid") from err

def _process_header(self, row):
try:
self.topics_for[row[1]] = row[2:]
except IndexError:
except IndexError as err:
logging.error("HEADER row is invalid: %s", row)
raise exceptions.MalformedFileException("HEADER row is invalid")
raise exceptions.MalformedFileException("HEADER row is invalid") from err

def _process_client_list(self, row):
try:
self._connected_clients[row[1]] = dict(zip(self.topics_for["CLIENT_LIST"], row[1:]))
self._connected_clients[row[1]]["connected_since"] = (
datetime.datetime.fromtimestamp(int(row[-1])))
except IndexError:
self._connected_clients[row[1]]["connected_since"] = (datetime.datetime.fromtimestamp(int(row[-1])))
except IndexError as err:
logging.error("CLIENT_LIST row is invalid: %s", row)
raise exceptions.MalformedFileException("CLIENT_LIST row is invalid")
except KeyError:
raise exceptions.MalformedFileException("Topics for CLIENT_LIST are missing")
raise exceptions.MalformedFileException("CLIENT_LIST row is invalid") from err
except KeyError as err:
raise exceptions.MalformedFileException("Topics for CLIENT_LIST are missing") from err

def _process_routing_table(self, row):
if len(row[1:]) != len(self.topics_for.get("ROUTING_TABLE", [])):
raise exceptions.MalformedFileException("Invalid number of topics for ROUTING_TABLE row")
try:
self._routing_table[row[2]] = dict(zip(self.topics_for["ROUTING_TABLE"], row[1:]))
self._routing_table[row[2]]["last_ref"] = datetime.datetime.fromtimestamp(int(row[-1]))
except IndexError:
except IndexError as err:
logging.error("ROUTING_TABLE row is invalid: %s", row)
raise exceptions.MalformedFileException("ROUTING_TABLE row is invalid")
except ValueError:
raise exceptions.MalformedFileException("Invalid timestamp")
except KeyError:
raise exceptions.MalformedFileException("Topics for ROUTING_TABLE are missing")
raise exceptions.MalformedFileException("ROUTING_TABLE row is invalid") from err
except ValueError as err:
raise exceptions.MalformedFileException("Invalid timestamp") from err
except KeyError as err:
raise exceptions.MalformedFileException("Topics for ROUTING_TABLE are missing") from err

def _process_global_stats(self, row):
try:
self._details[row[1]] = row[2]
except IndexError:
except IndexError as err:
logging.error("GLOBAL_STATS row is invalid: %s", row)
raise exceptions.MalformedFileException("GLOBAL_STATS row is invalid")
raise exceptions.MalformedFileException("GLOBAL_STATS row is invalid") from err

def _parse_file(self):
self._details = {}
Expand All @@ -122,9 +121,8 @@ def _parse_file(self):
elif row_title == "END":
return True
else:
logging.warning("Line was not parsed. Keyword %s not recognized. %s",
row_title, row)
raise exceptions.MalformedFileException("Unhandled keyword %s", row_title)
logging.warning("Line was not parsed. Keyword %s not recognized. %s", row_title, row)
raise exceptions.MalformedFileException(f"Unhandled keyword {row_title}")

logging.error("File was incomplete. END line was missing.")
raise exceptions.MalformedFileException("END line was missing.")
Expand Down
2 changes: 1 addition & 1 deletion openvpn_status_parser/openvpn-status-parser
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python

"""OpenVPN status parser
Usage:
Expand All @@ -12,6 +11,7 @@ import pprint
import sys

import docopt

import openvpn_status_parser


Expand Down
11 changes: 5 additions & 6 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from setuptools import setup, find_packages
from codecs import open
from os import path

from setuptools import find_packages, setup

here = path.abspath(path.dirname(__file__))

with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
Expand All @@ -18,25 +19,23 @@
license='MIT',
classifiers=[
'Development Status :: 4 - Beta',

'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',

'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: Implementation :: PyPy',
],
keywords='openvpn',
packages=["openvpn_status_parser"],
install_requires=["docopt>=0.6.2"],
test_suite="tests",
scripts=["openvpn_status_parser/openvpn-status-parser"],

extras_require={
'dev': ['twine', 'wheel'],
},
Expand Down
14 changes: 8 additions & 6 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import datetime
import glob
import unittest
import datetime

import openvpn_status_parser
import openvpn_status_parser.exceptions
Expand All @@ -11,17 +11,19 @@ def _test_file(self, filename):
parsed = openvpn_status_parser.OpenVPNStatusParser(filename)

def _call_details():
parsed.details
parsed.details # pylint: disable=pointless-statement

self.assertRaises(openvpn_status_parser.exceptions.MalformedFileException, _call_details)


def ch(filename):
return lambda self: self._test_file(filename)
return lambda self: self._test_file(filename) # pylint: disable=protected-access


for filename in glob.glob("tests/testfiles/broken/*.status"):
print("Adding %s" % filename)
setattr(TestBroken, "test_%s" % filename.replace(".", "_"), ch(filename))
for fn in glob.glob("tests/testfiles/broken/*.status"):
print(f"Adding {fn}")
test_func_name = fn.replace(".", "_")
setattr(TestBroken, f"test_{test_func_name}", ch(fn))

if __name__ == '__main__':
unittest.main()

0 comments on commit e285be4

Please sign in to comment.