diff --git a/api/__init__.py b/api/__init__.py index e69de29..9e281b9 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -0,0 +1 @@ +from tronscan import Tronscan diff --git a/config/__init__.py b/config/__init__.py index e69de29..b2e49c5 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -0,0 +1 @@ +import settings \ No newline at end of file diff --git a/config/settings.py b/config/settings.py new file mode 100644 index 0000000..67f6c82 --- /dev/null +++ b/config/settings.py @@ -0,0 +1,116 @@ +#!/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") + logger.add(os.path.join(ROOT_DIR, "logs", "recommender_{time}.log"), level="DEBUG", encoding='utf8', rotation="100 MB", retention=3) + + +nacos_url = f"http://{os.getenv('NACOS_SOCKET', '192.168.15.40:38865')}/nacos/v1/cs/configs" + + +def get_config() -> Config: + requests.adapters.DEFAULT_RETRIES = 3 + + configparser = ConfigParser() + configparser.read(fr'{ROOT_DIR}/config_file/param.conf') + parser = argparse.ArgumentParser(description='recommendation system') + parser.add_argument("--seed", type=int, default=2024) + args = parser.parse_args() + config = Config(configparser, args) + return config