From dde9273dc1a2642884619fa8f1ba5c9f1b656075 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Tue, 4 Jun 2024 13:17:20 +0300 Subject: [PATCH] Fix style --- list_imap_messages/list_imap_messages.py | 61 ++++++++++++++---------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/list_imap_messages/list_imap_messages.py b/list_imap_messages/list_imap_messages.py index 874e521..f497191 100755 --- a/list_imap_messages/list_imap_messages.py +++ b/list_imap_messages/list_imap_messages.py @@ -8,38 +8,47 @@ import sys import os import logging -import click -import click_config_file from logging.handlers import SysLogHandler import imaplib -import re import json -from operator import itemgetter, attrgetter +import click +import click_config_file class Mailbox: + '''Class defining an IMAP mailbox''' def __init__(self, name, count, children): self.name = name self.count = count self.children = children - + def __str__(self): return f"{self.name} {self.count} messages and {len(self.children)} children mailboxes" - def toJSON(self): + def to_json(self): + '''Convert mailbox object to JSON data''' return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) def __repr__(self): return repr((self.name, self.count, self.children)) -class list_imap_messages: - +class ListImapMessages: + '''Class to list IMAP messages''' def __init__(self, debug_level, log_file, **kwargs): ''' Initial function called when object is created ''' - self.config = dict() + self.config = {} self.config['debug_level'] = debug_level if log_file is None: - log_file = os.path.join(os.environ.get('HOME', os.environ.get('USERPROFILE', os.getcwd())), 'log', 'list_imap_messages.log') + log_file = os.path.join( + os.environ.get( + 'HOME', + os.environ.get( + 'USERPROFILE', + os.getcwd() + ) + ), + 'log', 'list_imap_messages.log' + ) self.config['log_file'] = log_file self.config.update(kwargs) self._init_log() @@ -52,21 +61,21 @@ class list_imap_messages: self._list_mailboxes() def _list_mailboxes(self): - self._log.debug(f"Listing mailboxes in '{self.config['mailbox']}'") + self._log.debug("Listing mailboxes in '%s'", self.config['mailbox']) result_list = self.imap.list() if result_list[0] == 'NO': - self._log.error(f"Error listing mailboxes in {self.config['mailbox']}: {result_list[1]}") + self._log.error("Error listing mailboxes in %s: %s", self.config['mailbox'], result_list[1]) self.imap.close() self.imap.logout() sys.exit(1) else: - self._log.debug(f"Result: {result_list}") + self._log.debug("Result: %s", result_list) mailboxes = list() for raw_mailbox in result_list[1]: self._log.debug(raw_mailbox) mailbox_list = raw_mailbox.decode().split(' "/" ') result = self._select_mailbox(mailbox_list[1]) - self._log.debug(f"Selecting mailbox '{mailbox_list[1]}', result: {result}") + self._log.debug("Selecting mailbox '%s', result: %s", mailbox_list[1], result) # result_list = self.imap.list(mailbox_list[1])[1] # self._log.debug(f"Listing mailboxes in '{mailbox_list[1]}', result: {result_list}") # if len(result_list) > 1: @@ -100,46 +109,46 @@ class list_imap_messages: def _select_mailbox(self, mailbox): try: - self._log.debug(f"Selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}'") + self._log.debug("Selecting mailbox '%s@%s:%s/%s'", self.config['username'], self.config['server'], self.config['port'], mailbox) result=self.imap.select(mailbox, True) except imaplib.IMAP4.error as error: - self._log.error(f"Error selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}': {error}") + self._log.error("Error selecting mailbox '%s@%s:%s/%s': %s", self.config['username'], self.config['server'], self.config['port'], mailbox, error) self.imap.close() self.imap.logout() sys.exit(1) if result[0] == 'NO': - self._log.error(f"Error selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}': {result[1]}") + self._log.error("Error selecting mailbox '%s@%s:%s/%s': %s", self.config['username'], self.config['server'], self.config['port'], mailbox, result[1]) self.imap.close() self.imap.logout() sys.exit(1) else: - self._log.debug(f"Result: {result}") + self._log.debug("Result: %s", result) return result def _login(self): try: - self._log.debug(f"Login as '{self.config['username']}@{self.config['server']}:{self.config['port']}'") + self._log.debug("Login as '%s@%s:%s'...", self.config['username'], self.config['server'], self.config['port']) self.imap.login(self.config['username'], self.config['password']) #except imaplib.IMAP4.error as error: except Exception as error: - self._log.error(f"Error login as '{self.config['username']}@{self.config['server']}:{self.config['port']}': {error}") + self._log.error("Error login as '%s@%s:%s': %s", self.config['username'], self.config['server'], self.config['port'], error) self.imap.logout() sys.exit(1) def _connect_ssl(self): try: - self._log.debug(f"Connecting to '{self.config['server']}:{self.config['port']}/SSL'") + self._log.debug("Connecting to '%s:%s/SSL'...", self.config['server'], self.config['port']) self.imap=imaplib.IMAP4_SSL(self.config['server'], self.config['port']) except Exception as error: - self._log.error(f"Error connecting to '{self.config['server']}:{self.config['port']}': {error}") + self._log.error("Error connecting to '%s:%s': %s", self.config['server'], self.config['port'], error) sys.exit(1) def _connect(self): try: - self._log.debug(f"Connecting to '{self.config['server']}:{self.config['port']}/noSSL'") + self._log.debug("Connecting to '%s:%s/noSSL'...", self.config['server'], self.config['port']) self.imap=imaplib.IMAP4(self.config['server'], self.config['port']) except Exception as error: - self._log.error(f"Error connecting to '{self.config['server']}:{self.config['port']}': {error}") + self._log.error("Error connecting to '%s:%s': %s", self.config['server'], self.config['port'], error) sys.exit(1) @@ -189,8 +198,8 @@ class list_imap_messages: @click.option("--mailbox","-m", default='INBOX', help="Mailbox to start examination.") @click.option("--only-empty", "-e", is_flag=True, default=False, help='List only empty folder') @click_config_file.configuration_option() -def __main__(debug_level, log_file, **kwargs): - return list_imap_messages(debug_level, log_file, **kwargs) +def __main__(debug_level='INFO', log_file=None, **kwargs): + return ListImapMessages(debug_level, log_file, **kwargs) if __name__ == "__main__": __main__()