aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/vk
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-06-23 18:02:35 +0200
committerEgor Tensin <egor@tensin.name>2026-06-23 18:02:35 +0200
commit98b0a2b3dff141d96ecabf1594cc72b90f80fff7 (patch)
treeb78261826035a74f68d46aef06e2fa7c1c3b2044 /vk
parentfix Pylint warnings (diff)
downloadvk-scripts-98b0a2b3dff141d96ecabf1594cc72b90f80fff7.tar.gz
vk-scripts-98b0a2b3dff141d96ecabf1594cc72b90f80fff7.zip
use default settings for Black
Diffstat (limited to 'vk')
-rw-r--r--vk/api.py34
-rw-r--r--vk/last_seen.py4
-rw-r--r--vk/mutuals.py32
-rw-r--r--vk/platform.py14
-rw-r--r--vk/tracking/__init__.py4
-rw-r--r--vk/tracking/db/__init__.py2
-rw-r--r--vk/tracking/db/backend/__init__.py6
-rw-r--r--vk/tracking/db/backend/log.py14
-rw-r--r--vk/tracking/db/format.py22
-rw-r--r--vk/tracking/db/timestamp.py4
-rw-r--r--vk/tracking/sessions.py104
-rw-r--r--vk/tracking/status.py48
-rw-r--r--vk/user.py22
-rw-r--r--vk/utils/bar_chart.py30
-rw-r--r--vk/utils/io.py12
-rw-r--r--vk/version.py6
16 files changed, 179 insertions, 179 deletions
diff --git a/vk/api.py b/vk/api.py
index 84efd91..b3f2a49 100644
--- a/vk/api.py
+++ b/vk/api.py
@@ -49,29 +49,29 @@ def _build_url(scheme, host, path, params=None, empty_params=False):
else:
raise TypeError()
path = urllib.parse.quote(path)
- return urllib.parse.urlunsplit((scheme, host, path, params, ''))
+ return urllib.parse.urlunsplit((scheme, host, path, params, ""))
def _join_param_values(values):
if isinstance(values, str):
return values
if isinstance(values, Iterable):
- return ','.join(map(str, values))
+ return ",".join(map(str, values))
return values
def _join_path(base, url):
- if not base.endswith('/'):
- base += '/'
+ if not base.endswith("/"):
+ base += "/"
return urllib.parse.urljoin(base, url)
-ACCESS_TOKEN = '9722cef09722cef09722cef071974b8cbe997229722cef0cbabfd816916af6c7bd37006'
+ACCESS_TOKEN = "9722cef09722cef09722cef071974b8cbe997229722cef0cbabfd816916af6c7bd37006"
class Version(Enum):
# https://dev.vk.com/en/reference/versions
- V5_199 = '5.199'
+ V5_199 = "5.199"
DEFAULT = V5_199
def __str__(self):
@@ -79,7 +79,7 @@ class Version(Enum):
class Language(Enum):
- EN = 'en'
+ EN = "en"
DEFAULT = EN
def __str__(self):
@@ -87,24 +87,24 @@ class Language(Enum):
class Method(Enum):
- USERS_GET = 'users.get'
- FRIENDS_GET = 'friends.get'
+ USERS_GET = "users.get"
+ FRIENDS_GET = "friends.get"
def __str__(self):
return self.value
class CommonParameters(Enum):
- ACCESS_TOKEN = 'access_token'
- VERSION = 'v'
- LANGUAGE = 'lang'
+ ACCESS_TOKEN = "access_token"
+ VERSION = "v"
+ LANGUAGE = "lang"
def __str__(self):
return self.value
class API:
- _ROOT_URL = 'https://api.vk.com/method/'
+ _ROOT_URL = "https://api.vk.com/method/"
_SCHEME, _HOST, _ROOT_PATH = _split_url(_ROOT_URL)
@@ -127,9 +127,9 @@ class API:
with urlopen(url) as response:
response = json.loads(response.read().decode())
# print(response)
- if 'response' not in response:
+ if "response" not in response:
raise vk.error.InvalidAPIResponseError(response)
- return response['response']
+ return response["response"]
except (ConnectionError, URLError) as e:
raise vk.error.APIConnectionError(str(e)) from e
@@ -154,6 +154,6 @@ class API:
response = self._call_method(
Method.FRIENDS_GET, user_id=user_id, fields=_join_param_values(fields)
)
- if 'items' not in response:
+ if "items" not in response:
raise vk.error.InvalidAPIResponseError(response)
- return self._filter_response_with_users(response['items'], deactivated_users)
+ return self._filter_response_with_users(response["items"], deactivated_users)
diff --git a/vk/last_seen.py b/vk/last_seen.py
index e5584eb..78d10b5 100644
--- a/vk/last_seen.py
+++ b/vk/last_seen.py
@@ -31,8 +31,8 @@ def _parse_platform(x):
class LastSeenField(Enum):
- TIME = 'time'
- PLATFORM = 'platform'
+ TIME = "time"
+ PLATFORM = "platform"
def __str__(self):
return self.value
diff --git a/vk/mutuals.py b/vk/mutuals.py
index 3498632..9b687c2 100644
--- a/vk/mutuals.py
+++ b/vk/mutuals.py
@@ -57,8 +57,8 @@ class OutputSinkJSON(OutputSinkMutualFriends):
class OutputFormat(Enum):
- CSV = 'csv'
- JSON = 'json'
+ CSV = "csv"
+ JSON = "json"
def __str__(self):
return self.value
@@ -72,14 +72,14 @@ class OutputFormat(Enum):
return OutputSinkCSV(fd)
if self is OutputFormat.JSON:
return OutputSinkJSON(fd)
- raise NotImplementedError(f'unsupported output format: {self}')
+ raise NotImplementedError(f"unsupported output format: {self}")
def _parse_output_format(s):
try:
return OutputFormat(s)
except ValueError:
- raise argparse.ArgumentTypeError(f'invalid output format: {s}')
+ raise argparse.ArgumentTypeError(f"invalid output format: {s}")
def _parse_args(args=None):
@@ -87,29 +87,29 @@ def _parse_args(args=None):
args = sys.argv[1:]
parser = argparse.ArgumentParser(
- description='Learn who your ex and her new boyfriend are both friends with.'
+ description="Learn who your ex and her new boyfriend are both friends with."
)
vk.version.add_to_arg_parser(parser)
parser.add_argument(
- 'uids', metavar='UID', nargs='+', help='user IDs or "screen names"'
+ "uids", metavar="UID", nargs="+", help='user IDs or "screen names"'
)
parser.add_argument(
- '-f',
- '--format',
- dest='out_fmt',
+ "-f",
+ "--format",
+ dest="out_fmt",
type=_parse_output_format,
default=OutputFormat.CSV,
choices=OutputFormat,
- help='specify output format',
+ help="specify output format",
)
parser.add_argument(
- '-o',
- '--output',
- metavar='PATH',
- dest='out_path',
- help='set output file path (standard output by default)',
+ "-o",
+ "--output",
+ metavar="PATH",
+ dest="out_path",
+ help="set output file path (standard output by default)",
)
return parser.parse_args(args)
@@ -132,5 +132,5 @@ def main(args=None):
write_mutual_friends(**vars(_parse_args(args)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/vk/platform.py b/vk/platform.py
index 7e22911..c7129e3 100644
--- a/vk/platform.py
+++ b/vk/platform.py
@@ -25,15 +25,15 @@ class Platform(Enum):
@property
def descr(self):
- return f'the {_PLATFORM_DESCRIPTIONS[self]}'
+ return f"the {_PLATFORM_DESCRIPTIONS[self]}"
_PLATFORM_DESCRIPTIONS = {
Platform.MOBILE: '"mobile" web version (or an unrecognized mobile app)',
- Platform.IPHONE: 'official iPhone app',
- Platform.IPAD: 'official iPad app',
- Platform.ANDROID: 'official Android app',
- Platform.WINDOWS_PHONE: 'official Windows Phone app',
- Platform.WINDOWS10: 'official Windows 10 app',
- Platform.WEB: 'web version (or an unrecognized app)',
+ Platform.IPHONE: "official iPhone app",
+ Platform.IPAD: "official iPad app",
+ Platform.ANDROID: "official Android app",
+ Platform.WINDOWS_PHONE: "official Windows Phone app",
+ Platform.WINDOWS10: "official Windows 10 app",
+ Platform.WEB: "web version (or an unrecognized app)",
}
diff --git a/vk/tracking/__init__.py b/vk/tracking/__init__.py
index d0809e7..76bc1b4 100644
--- a/vk/tracking/__init__.py
+++ b/vk/tracking/__init__.py
@@ -3,6 +3,6 @@
# See LICENSE.txt for details.
__all__ = (
- 'sessions',
- 'status',
+ "sessions",
+ "status",
)
diff --git a/vk/tracking/db/__init__.py b/vk/tracking/db/__init__.py
index 51b1a7c..7095cf3 100644
--- a/vk/tracking/db/__init__.py
+++ b/vk/tracking/db/__init__.py
@@ -5,4 +5,4 @@
from .format import Format
-__all__ = ('format',)
+__all__ = ("format",)
diff --git a/vk/tracking/db/backend/__init__.py b/vk/tracking/db/backend/__init__.py
index 0d3153f..8a1a7d7 100644
--- a/vk/tracking/db/backend/__init__.py
+++ b/vk/tracking/db/backend/__init__.py
@@ -6,7 +6,7 @@
from . import csv, log, null
__all__ = (
- 'csv',
- 'log',
- 'null',
+ "csv",
+ "log",
+ "null",
)
diff --git a/vk/tracking/db/backend/log.py b/vk/tracking/db/backend/log.py
index 0ffee5c..6f3ebaa 100644
--- a/vk/tracking/db/backend/log.py
+++ b/vk/tracking/db/backend/log.py
@@ -15,7 +15,7 @@ class Writer(meta.Writer):
handler = logging.StreamHandler(fd)
handler.setFormatter(
logging.Formatter(
- fmt='[%(asctime)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S%z'
+ fmt="[%(asctime)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S%z"
)
)
self._logger.addHandler(handler)
@@ -71,24 +71,24 @@ class Writer(meta.Writer):
@staticmethod
def _format_user_is_online(user):
- return f'{user.full_name} is ONLINE.'
+ return f"{user.full_name} is ONLINE."
@staticmethod
def _format_user_is_offline(user):
- return f'{user.full_name} is OFFLINE.'
+ return f"{user.full_name} is OFFLINE."
@staticmethod
def _format_user_last_seen(user):
- return f'{user.full_name} was last seen at {user.last_seen.time_local} using {user.last_seen.platform.descr}.'
+ return f"{user.full_name} was last seen at {user.last_seen.time_local} using {user.last_seen.platform.descr}."
@staticmethod
def _format_user_went_online(user):
- return f'{user.full_name} went ONLINE.'
+ return f"{user.full_name} went ONLINE."
@staticmethod
def _format_user_went_offline(user):
- return f'{user.full_name} went OFFLINE.'
+ return f"{user.full_name} went OFFLINE."
@staticmethod
def _format_another_connection_error(e):
- return f'Encountered a connection error which looks like the previous one: {e}'
+ return f"Encountered a connection error which looks like the previous one: {e}"
diff --git a/vk/tracking/db/format.py b/vk/tracking/db/format.py
index 5c88cb7..66d9132 100644
--- a/vk/tracking/db/format.py
+++ b/vk/tracking/db/format.py
@@ -12,9 +12,9 @@ from . import backend
class Format(Enum):
- CSV = 'csv'
- LOG = 'log'
- NULL = 'null'
+ CSV = "csv"
+ LOG = "log"
+ NULL = "null"
def __str__(self):
return self.value
@@ -26,7 +26,7 @@ class Format(Enum):
return backend.log.Writer(fd)
if self is Format.NULL:
return backend.null.Writer()
- raise NotImplementedError(f'unsupported database format: {self}')
+ raise NotImplementedError(f"unsupported database format: {self}")
def open_output_file(self, path=None):
if self is Format.CSV:
@@ -35,30 +35,30 @@ class Format(Enum):
return self._open_output_log_file(path)
if self is Format.NULL:
return self._open_output_database_file(None)
- raise NotImplementedError('unsupported database format: ' + str(self))
+ raise NotImplementedError("unsupported database format: " + str(self))
@staticmethod
def _open_output_log_file(path):
- return io.open_output_text_file(path, mode='a')
+ return io.open_output_text_file(path, mode="a")
@staticmethod
def _open_output_database_file(path):
- return io.open_output_text_file(path, mode='x')
+ return io.open_output_text_file(path, mode="x")
def create_reader(self, fd=sys.stdin):
if self is Format.CSV:
return backend.csv.Reader(fd)
if self is Format.LOG:
- return NotImplementedError('cannot read from a log file')
+ return NotImplementedError("cannot read from a log file")
if self is Format.NULL:
return backend.null.Reader()
- raise NotImplementedError('unsupported database format: ' + str(self))
+ raise NotImplementedError("unsupported database format: " + str(self))
def open_input_file(self, path=None):
if self is Format.CSV:
return io.open_input_text_file(path)
if self is Format.LOG:
- raise NotImplementedError('cannot read from a log file')
+ raise NotImplementedError("cannot read from a log file")
if self is Format.NULL:
return io.open_input_text_file(None)
- raise NotImplementedError('unsupported database format: ' + str(self))
+ raise NotImplementedError("unsupported database format: " + str(self))
diff --git a/vk/tracking/db/timestamp.py b/vk/tracking/db/timestamp.py
index 4a3892f..c9ed293 100644
--- a/vk/tracking/db/timestamp.py
+++ b/vk/tracking/db/timestamp.py
@@ -30,7 +30,7 @@ class Timestamp:
@staticmethod
def from_string(s):
- return Timestamp(datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ'))
+ return Timestamp(datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ"))
def __str__(self):
- return f'{self.dt.isoformat()}Z'
+ return f"{self.dt.isoformat()}Z"
diff --git a/vk/tracking/sessions.py b/vk/tracking/sessions.py
index 5d545f1..843977d 100644
--- a/vk/tracking/sessions.py
+++ b/vk/tracking/sessions.py
@@ -144,10 +144,10 @@ class OnlineSessionEnumerator(MutableMapping):
class GroupBy(Enum):
- USER = 'user'
- DATE = 'date'
- WEEKDAY = 'weekday'
- HOUR = 'hour'
+ USER = "user"
+ DATE = "date"
+ WEEKDAY = "weekday"
+ HOUR = "hour"
def __str__(self):
return self.value
@@ -162,7 +162,7 @@ class GroupBy(Enum):
return online_streaks.group_by_weekday(db_reader)
if self is GroupBy.HOUR:
return online_streaks.group_by_hour(db_reader)
- raise NotImplementedError(f'unsupported grouping: {self}')
+ raise NotImplementedError(f"unsupported grouping: {self}")
_OUTPUT_USER_FIELDS = (
@@ -211,7 +211,7 @@ class OutputSinkCSV(OutputSinkOnlineSessions):
@staticmethod
def _key_to_row(group_by, key):
if group_by not in OutputSinkCSV._CONVERT_KEY:
- raise NotImplementedError(f'unsupported grouping: {group_by}')
+ raise NotImplementedError(f"unsupported grouping: {group_by}")
return OutputSinkCSV._CONVERT_KEY[group_by](key)
def process_database(self, group_by, db_reader, time_from=None, time_to=None):
@@ -222,9 +222,9 @@ class OutputSinkCSV(OutputSinkOnlineSessions):
class OutputConverterJSON:
- _DATE_FIELD = 'date'
- _WEEKDAY_FIELD = 'weekday'
- _HOUR_FIELD = 'hour'
+ _DATE_FIELD = "date"
+ _WEEKDAY_FIELD = "weekday"
+ _HOUR_FIELD = "hour"
assert _DATE_FIELD not in map(str, _OUTPUT_USER_FIELDS)
assert _WEEKDAY_FIELD not in map(str, _OUTPUT_USER_FIELDS)
@@ -260,7 +260,7 @@ class OutputSinkJSON(OutputSinkOnlineSessions):
def __init__(self, fd=sys.stdout):
self._writer = io.FileWriterJSON(fd)
- _DURATION_FIELD = 'duration'
+ _DURATION_FIELD = "duration"
assert _DURATION_FIELD not in map(str, _OUTPUT_USER_FIELDS)
@@ -274,7 +274,7 @@ class OutputSinkJSON(OutputSinkOnlineSessions):
@staticmethod
def _key_to_object(group_by, key):
if group_by not in OutputSinkJSON._CONVERT_KEY:
- raise NotImplementedError(f'unsupported grouping: {group_by}')
+ raise NotImplementedError(f"unsupported grouping: {group_by}")
return OutputSinkJSON._CONVERT_KEY[group_by](key)
def process_database(self, group_by, db_reader, time_from=None, time_to=None):
@@ -289,7 +289,7 @@ class OutputSinkJSON(OutputSinkOnlineSessions):
class OutputConverterPlot:
@staticmethod
def convert_user(user):
- return f'{user.first_name}\n{user.last_name}'
+ return f"{user.first_name}\n{user.last_name}"
@staticmethod
def convert_date(date):
@@ -301,14 +301,14 @@ class OutputConverterPlot:
@staticmethod
def convert_hour(hour):
- return f'{hour}:00'
+ return f"{hour}:00"
class OutputSinkPlot(OutputSinkOnlineSessions):
def __init__(self, fd=sys.stdout):
self._fd = fd
- TITLE = 'How much time people spend online'
+ TITLE = "How much time people spend online"
_FORMAT_KEY = {
GroupBy.USER: OutputConverterPlot.convert_user,
@@ -320,7 +320,7 @@ class OutputSinkPlot(OutputSinkOnlineSessions):
@staticmethod
def _format_key(group_by, key):
if group_by not in OutputSinkPlot._FORMAT_KEY:
- raise NotImplementedError(f'unsupported grouping: {group_by}')
+ raise NotImplementedError(f"unsupported grouping: {group_by}")
return OutputSinkPlot._FORMAT_KEY[group_by](key)
@staticmethod
@@ -351,7 +351,7 @@ class OutputSinkPlot(OutputSinkOnlineSessions):
bar_chart.enable_grid_for_values()
bar_chart.only_integer_values()
bar_chart.set_property(
- bar_chart.get_values_labels(), fontsize='small', rotation=30
+ bar_chart.get_values_labels(), fontsize="small", rotation=30
)
bar_chart.set_value_label_formatter(self._format_duration)
@@ -374,9 +374,9 @@ class OutputSinkPlot(OutputSinkOnlineSessions):
class OutputFormat(Enum):
- CSV = 'csv'
- JSON = 'json'
- PLOT = 'plot'
+ CSV = "csv"
+ JSON = "json"
+ PLOT = "plot"
def __str__(self):
return self.value
@@ -388,7 +388,7 @@ class OutputFormat(Enum):
return OutputSinkJSON(fd)
if self is OutputFormat.PLOT:
return OutputSinkPlot(fd)
- raise NotImplementedError(f'unsupported output format: {self}')
+ raise NotImplementedError(f"unsupported output format: {self}")
def open_file(self, path=None):
if self is OutputFormat.PLOT:
@@ -407,17 +407,17 @@ def _parse_database_format(s):
try:
return DatabaseFormat(s)
except ValueError:
- raise argparse.ArgumentTypeError(f'invalid database format: {s}')
+ raise argparse.ArgumentTypeError(f"invalid database format: {s}")
def _parse_output_format(s):
try:
return OutputFormat(s)
except ValueError:
- raise argparse.ArgumentTypeError(f'invalid output format: {s}')
+ raise argparse.ArgumentTypeError(f"invalid output format: {s}")
-_DATE_RANGE_LIMIT_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
+_DATE_RANGE_LIMIT_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
def _parse_date_range_limit(s):
@@ -435,64 +435,64 @@ def _parse_args(args=None):
args = sys.argv[1:]
parser = argparse.ArgumentParser(
- description='View/visualize the amount of time people spend online.'
+ description="View/visualize the amount of time people spend online."
)
vk.version.add_to_arg_parser(parser)
parser.add_argument(
- 'db_path',
- metavar='input',
- nargs='?',
- help='database file path (standard input by default)',
+ "db_path",
+ metavar="input",
+ nargs="?",
+ help="database file path (standard input by default)",
)
parser.add_argument(
- 'out_path',
- metavar='output',
- nargs='?',
- help='output file path (standard output by default)',
+ "out_path",
+ metavar="output",
+ nargs="?",
+ help="output file path (standard output by default)",
)
parser.add_argument(
- '-g',
- '--group-by',
+ "-g",
+ "--group-by",
type=_parse_group_by,
choices=GroupBy,
default=GroupBy.USER,
- help='group online sessions by user/date/etc.',
+ help="group online sessions by user/date/etc.",
)
parser.add_argument(
- '-i',
- '--input-format',
- dest='db_fmt',
+ "-i",
+ "--input-format",
+ dest="db_fmt",
type=_parse_database_format,
default=DatabaseFormat.CSV,
choices=DatabaseFormat,
- help='specify database format',
+ help="specify database format",
)
parser.add_argument(
- '-o',
- '--output-format',
- dest='out_fmt',
+ "-o",
+ "--output-format",
+ dest="out_fmt",
type=_parse_output_format,
choices=OutputFormat,
default=OutputFormat.CSV,
- help='specify output format',
+ help="specify output format",
)
parser.add_argument(
- '-a',
- '--from',
- dest='time_from',
+ "-a",
+ "--from",
+ dest="time_from",
type=_parse_date_range_limit,
default=None,
- help='discard online activity prior to this moment',
+ help="discard online activity prior to this moment",
)
parser.add_argument(
- '-b',
- '--to',
- dest='time_to',
+ "-b",
+ "--to",
+ dest="time_to",
type=_parse_date_range_limit,
default=None,
- help='discard online activity after this moment',
+ help="discard online activity after this moment",
)
return parser.parse_args(args)
@@ -525,5 +525,5 @@ def main(args=None):
process_online_sessions(**vars(_parse_args(args)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/vk/tracking/status.py b/vk/tracking/status.py
index 7ef0b3c..8f1665e 100644
--- a/vk/tracking/status.py
+++ b/vk/tracking/status.py
@@ -155,9 +155,9 @@ def _parse_positive_integer(s):
try:
n = int(s)
except ValueError:
- raise argparse.ArgumentTypeError(f'must be a positive integer: {s}')
+ raise argparse.ArgumentTypeError(f"must be a positive integer: {s}")
if n < 1:
- raise argparse.ArgumentTypeError(f'must be a positive integer: {s}')
+ raise argparse.ArgumentTypeError(f"must be a positive integer: {s}")
return n
@@ -165,52 +165,52 @@ def _parse_database_format(s):
try:
return DatabaseFormat(s)
except ValueError:
- raise argparse.ArgumentTypeError(f'invalid database format: {s}')
+ raise argparse.ArgumentTypeError(f"invalid database format: {s}")
def _parse_args(args=None):
if args is None:
args = sys.argv[1:]
- parser = argparse.ArgumentParser(description='Track when people go online/offline.')
+ parser = argparse.ArgumentParser(description="Track when people go online/offline.")
vk.version.add_to_arg_parser(parser)
parser.add_argument(
- 'uids', metavar='UID', nargs='+', help='user IDs or "screen names"'
+ "uids", metavar="UID", nargs="+", help='user IDs or "screen names"'
)
parser.add_argument(
- '-t',
- '--timeout',
- metavar='SECONDS',
+ "-t",
+ "--timeout",
+ metavar="SECONDS",
type=_parse_positive_integer,
default=DEFAULT_TIMEOUT,
- help='set refresh interval',
+ help="set refresh interval",
)
parser.add_argument(
- '-O',
- '--only-once',
- action='store_true',
- help='query the status only once and exit',
+ "-O",
+ "--only-once",
+ action="store_true",
+ help="query the status only once and exit",
)
parser.add_argument(
- '-l',
- '--log',
- metavar='PATH',
- dest='log_path',
- help='set log file path (standard output by default)',
+ "-l",
+ "--log",
+ metavar="PATH",
+ dest="log_path",
+ help="set log file path (standard output by default)",
)
parser.add_argument(
- '-f',
- '--format',
- dest='db_fmt',
+ "-f",
+ "--format",
+ dest="db_fmt",
type=_parse_database_format,
choices=DatabaseFormat,
default=DEFAULT_DB_FORMAT,
- help='specify database format',
+ help="specify database format",
)
parser.add_argument(
- '-o', '--output', metavar='PATH', dest='db_path', help='set database file path'
+ "-o", "--output", metavar="PATH", dest="db_path", help="set database file path"
)
return parser.parse_args(args)
@@ -248,5 +248,5 @@ def main(args=None):
track_status(**vars(_parse_args(args)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/vk/user.py b/vk/user.py
index 60bde9f..62b24a5 100644
--- a/vk/user.py
+++ b/vk/user.py
@@ -37,23 +37,23 @@ def _parse_online_flag(x):
class UserField(Enum):
- UID = 'id'
- FIRST_NAME = 'first_name'
- LAST_NAME = 'last_name'
- DEACTIVATED = 'deactivated'
- HIDDEN = 'hidden'
+ UID = "id"
+ FIRST_NAME = "first_name"
+ LAST_NAME = "last_name"
+ DEACTIVATED = "deactivated"
+ HIDDEN = "hidden"
- DOMAIN = 'domain'
- ONLINE = 'online'
- LAST_SEEN = 'last_seen'
+ DOMAIN = "domain"
+ ONLINE = "online"
+ LAST_SEEN = "last_seen"
def __str__(self):
return self.value
class DeactivationReason(Enum):
- DELETED = 'deleted'
- BANNED = 'banned'
+ DELETED = "deleted"
+ BANNED = "banned"
def __str__(self):
return self.value
@@ -135,7 +135,7 @@ class User(Hashable, MutableMapping):
def full_name(self):
if not self.has_last_name:
return self.first_name
- return f'{self.first_name} {self.last_name}'
+ return f"{self.first_name} {self.last_name}"
@property
def is_deactivated(self):
diff --git a/vk/utils/bar_chart.py b/vk/utils/bar_chart.py
index 367a301..44fac3c 100644
--- a/vk/utils/bar_chart.py
+++ b/vk/utils/bar_chart.py
@@ -112,7 +112,7 @@ class BarChartBuilder:
self._get_categories_axis().set_ticklabels(categories)
- bars = self._ax.barh(bar_offsets, values, align='center', height=bar_height)
+ bars = self._ax.barh(bar_offsets, values, align="center", height=bar_height)
if min(values) >= 0:
self.set_values_axis_limits(start=0)
@@ -128,40 +128,40 @@ class BarChartBuilder:
plt.show()
def save(self, path):
- self._fig.savefig(path, bbox_inches='tight')
+ self._fig.savefig(path, bbox_inches="tight")
-if __name__ == '__main__':
+if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
- parser.add_argument('--categories', nargs='*', metavar='LABEL', default=[])
- parser.add_argument('--values', nargs='*', metavar='N', default=[], type=float)
+ parser.add_argument("--categories", nargs="*", metavar="LABEL", default=[])
+ parser.add_argument("--values", nargs="*", metavar="N", default=[], type=float)
- parser.add_argument('--output', '-o', help='set output file path')
+ parser.add_argument("--output", "-o", help="set output file path")
parser.add_argument(
- '--align-middle',
- action='store_true',
- dest='labels_align_middle',
- help='align labels to the middle of the bars',
+ "--align-middle",
+ action="store_true",
+ dest="labels_align_middle",
+ help="align labels to the middle of the bars",
)
parser.add_argument(
- '--integer-values', action='store_true', dest='only_integer_values'
+ "--integer-values", action="store_true", dest="only_integer_values"
)
parser.add_argument(
- '--any-values', action='store_false', dest='only_integer_values'
+ "--any-values", action="store_false", dest="only_integer_values"
)
- parser.add_argument('--grid-categories', action='store_true')
- parser.add_argument('--grid-values', action='store_true')
+ parser.add_argument("--grid-categories", action="store_true")
+ parser.add_argument("--grid-values", action="store_true")
args = parser.parse_args()
if len(args.categories) < len(args.values):
- parser.error('too many bar values')
+ parser.error("too many bar values")
if len(args.categories) > len(args.values):
args.values.extend([0.0] * (len(args.categories) - len(args.values)))
diff --git a/vk/utils/io.py b/vk/utils/io.py
index 7588cc0..d0f4271 100644
--- a/vk/utils/io.py
+++ b/vk/utils/io.py
@@ -15,7 +15,7 @@ class FileWriterJSON:
def write(self, something):
self._fd.write(json.dumps(something, indent=3, ensure_ascii=False))
- self._fd.write('\n')
+ self._fd.write("\n")
class FileReaderCSV:
@@ -29,7 +29,7 @@ class FileReaderCSV:
class FileWriterCSV:
def __init__(self, fd=sys.stdout, flush=False):
self._fd = fd
- self._writer = csv.writer(fd, lineterminator='\n')
+ self._writer = csv.writer(fd, lineterminator="\n")
self._flush = flush
@staticmethod
@@ -55,16 +55,16 @@ def _open_file(path=None, default=None, **kwargs):
yield fd
-_DEFAULT_ENCODING = 'utf-8'
+_DEFAULT_ENCODING = "utf-8"
def open_input_text_file(path=None):
- return _open_file(path, default=sys.stdin, mode='r', encoding=_DEFAULT_ENCODING)
+ return _open_file(path, default=sys.stdin, mode="r", encoding=_DEFAULT_ENCODING)
-def open_output_text_file(path=None, mode='w'):
+def open_output_text_file(path=None, mode="w"):
return _open_file(path, default=sys.stdout, mode=mode, encoding=_DEFAULT_ENCODING)
def open_output_binary_file(path=None):
- return _open_file(path, default=sys.stdout, mode='wb')
+ return _open_file(path, default=sys.stdout, mode="wb")
diff --git a/vk/version.py b/vk/version.py
index fc944ab..ecd6545 100644
--- a/vk/version.py
+++ b/vk/version.py
@@ -5,12 +5,12 @@ except ImportError:
try:
- __version__ = metadata.version('vk_scripts')
+ __version__ = metadata.version("vk_scripts")
except Exception:
- __version__ = 'unknown'
+ __version__ = "unknown"
def add_to_arg_parser(parser):
parser.add_argument(
- '--version', '-V', action='version', version=f'%(prog)s {__version__}'
+ "--version", "-V", action="version", version=f"%(prog)s {__version__}"
)