internal: remove more global state from config

This commit is contained in:
mathieui 2021-04-11 18:55:26 +02:00
parent 1640a90a63
commit 0541bbb4bc
3 changed files with 11 additions and 29 deletions

View file

@ -10,16 +10,19 @@ TODO: get http://bugs.python.org/issue1410680 fixed, one day, in order
to remove our ugly custom I/O methods.
"""
import logging
import logging.config
import os
import sys
from configparser import RawConfigParser, NoOptionError, NoSectionError
from pathlib import Path
from typing import Callable, Dict, List, Optional, Union, Tuple, cast, Any
from typing import Dict, List, Optional, Union, Tuple, cast, Any
from poezio import xdg
from slixmpp import JID
log = logging.getLogger(__name__) # type: logging.Logger
ConfigValue = Union[str, int, float, bool]
@ -256,7 +259,6 @@ class Config:
in the section, we search for the global option if fallback is
True. And we return `default` as a fallback as a last resort.
"""
from slixmpp import JID
if isinstance(tabname, JID):
tabname = tabname.full
if self.default and (not default) and fallback:
@ -276,7 +278,7 @@ class Config:
"""
Try to get the value of an option for a server
"""
server = safeJID(jid).server
server = JID(jid).server
if server:
server = '@' + server
if server in self.sections() and option in self.options(server):
@ -665,17 +667,6 @@ def setup_logging(debug_file=''):
logging.disable(logging.ERROR)
logging.basicConfig(level=logging.CRITICAL)
global log
log = logging.getLogger(__name__)
def post_logging_setup():
# common imports slixmpp, which creates then its loggers, so
# it needs to be after logger configuration
from poezio.common import safeJID as JID
global safeJID
safeJID = JID
LOGGING_CONFIG = {
'version': 1,
@ -693,18 +684,8 @@ LOGGING_CONFIG = {
}
}
# True if this is the first run, in this case we will display
# some help in the info buffer
firstrun = False
# Global config object. Is setup for real in poezio.py
config = Config(Path('/dev/null'))
# The logger object for this module
log = logging.getLogger(__name__) # type: logging.Logger
# delayed import from common.py
safeJID = None # type: Optional[Callable]
# the global log dir
LOG_DIR = Path()

View file

@ -46,7 +46,7 @@ from poezio.bookmarks import (
Bookmark,
)
from poezio.common import get_error_message
from poezio.config import config, firstrun
from poezio.config import config
from poezio.contact import Contact, Resource
from poezio.daemon import Executor
from poezio.fifo import Fifo
@ -87,11 +87,13 @@ class Core:
"""
custom_version: str
firstrun: bool
def __init__(self, custom_version: str):
def __init__(self, custom_version: str, firstrun: bool):
self.completion = CompletionCore(self)
self.command = CommandCore(self)
self.handler = HandlerCore(self)
self.firstrun = firstrun
# All uncaught exception are given to this callback, instead
# of being displayed on the screen and exiting the program.
sys.excepthook = self.on_exception
@ -545,7 +547,7 @@ class Core:
' colors will probably be ugly',
'Error',
)
if firstrun:
if self.firstrun:
self.information(
'It seems that it is the first time you start poezio.\n'
'The online help is here https://doc.poez.io/\n\n'

View file

@ -84,7 +84,6 @@ def main():
from poezio import config
config.create_global_config(options.filename)
config.setup_logging(options.debug)
config.post_logging_setup()
import logging
logging.raiseExceptions = False
@ -108,7 +107,7 @@ def main():
from poezio.core.core import Core
signal.signal(signal.SIGINT, signal.SIG_IGN) # ignore ctrl-c
cocore = Core(options.custom_version)
cocore = Core(options.custom_version, firstrun)
signal.signal(signal.SIGUSR1, cocore.sigusr_handler) # reload the config
signal.signal(signal.SIGHUP, cocore.exit_from_signal)
signal.signal(signal.SIGTERM, cocore.exit_from_signal)