payment/config/settings.py

114 lines
3.2 KiB
Python
Raw Normal View History

2024-11-06 13:42:20 +00:00
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project payment
@File __init__.py.py
@IDE PyCharm
@Author rengengchen
@Time 2024/11/06 16:11
"""
import argparse
import os
import random
import sys
from argparse import Namespace
from configparser import ConfigParser
import requests
from loguru import logger
random_seed = 20240717
ROOT_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
def setup_seed(seed):
# import torch
# torch.manual_seed(seed)
# torch.cuda.manual_seed_all(seed)
# torch.backends.cudnn.deterministic = True
# import numpy as np
# np.random.seed(seed)
random.seed(seed)
setup_seed(random_seed)
class Config:
def __init__(self,
config_parser: ConfigParser = None,
argument_parser: Namespace = None,
**kwargs):
if argument_parser:
for k in vars(argument_parser):
kwargs[k] = getattr(argument_parser, k)
if config_parser:
kwargs1 = kwargs.copy()
for section in config_parser.sections():
section1 = kwargs.setdefault(section, Config(**kwargs1))
for option in config_parser.options(section):
section1[option] = config_parser.get(section, option)
self.config = {k: Config(**v) if isinstance(v, dict) else v for k, v in kwargs.items()}
def refresh(self, **kwargs):
kwargs = {k: Config(**v) if isinstance(v, dict) else v for k, v in kwargs.items()}
self.config.update(kwargs)
def get(self, item, default=None):
if item in self.config:
return self.config[item]
return default
def get_int(self, item):
v = self.get(item)
if v is not None:
return int(v)
def get_float(self, item):
v = self.get(item)
if v is not None:
return float(v)
def get_bool(self, item):
v = self.get(item)
if v is not None:
return bool(v)
def __getitem__(self, item):
return self.config[item]
def __setitem__(self, key, value):
self.config[key] = value
def __getattr__(self, key):
if key in self.__dict__:
return self.__dict__[key]
try:
return self.config[key]
except KeyError:
raise AttributeError(f"'{self}' object has no attribute '{key}'")
def __str__(self):
return str(self.config)
def log_config(config):
# fmt = '%(asctime)s [%(name)s] %(levelname)s: %(message)s'
# datefmt = "%Y-%m-%d %H:%M:%S"
logger.remove()
logger.add(sys.stdout, level=config.log_level)
logger.add(sys.stderr, level="ERROR")
2024-11-11 07:32:36 +00:00
logger.add(os.path.join(ROOT_DIR, "logs", "{time}.log"), level="DEBUG", encoding='utf8', rotation="100 MB", retention=3)
2024-11-06 13:42:20 +00:00
def get_config() -> Config:
requests.adapters.DEFAULT_RETRIES = 3
configparser = ConfigParser()
configparser.read(fr'{ROOT_DIR}/config_file/param.conf')
2024-11-11 07:32:36 +00:00
parser = argparse.ArgumentParser(description='payment system')
2024-11-06 13:42:20 +00:00
parser.add_argument("--seed", type=int, default=2024)
args = parser.parse_args()
config = Config(configparser, args)
return config