forked from magnaopus1/Synthron-Crypto-Trader
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path__init__.py
More file actions
117 lines (102 loc) · 3.46 KB
/
__init__.py
File metadata and controls
117 lines (102 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
"""
Synthron Crypto Trader Initialization Module
By Magna Opus Technologies
"""
import os
import logging
from .config import (
Settings,
LoggingConfig,
SolanaConfig,
FiltersConfig,
DexScreenerAPI,
RaydiumAPI,
TwitterConfig
)
from utils.logger import get_logger
from config.settings import initialize_settings
# Initialize settings first
initialize_settings()
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [%(levelname)s] %(name)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# Create output directories if they don't exist
os.makedirs('outputs', exist_ok=True)
os.makedirs('data', exist_ok=True)
# Initialize global settings
settings = Settings()
# Global logger setup
logger = get_logger("SynthronCryptoTrader")
# Package Metadata
__version__ = "1.0.0"
__author__ = "Magna Opus Technologies"
__email__ = "support@magnaopustechnologies.com"
__license__ = "MIT"
__status__ = "Production"
# Constants for Configuration Validation
REQUIRED_ENV_VARS = [
"SOLANA_RPC_ENDPOINT",
"RAYDIUM_API_KEY",
"DEXSCREENER_API_URL",
"TRADING_PAIR",
"PRIVATE_KEY_PATH",
]
def validate_environment_variables():
"""Ensure all required environment variables are set."""
logger.info("Validating environment variables...")
missing_vars = [var for var in REQUIRED_ENV_VARS if not os.getenv(var)]
if missing_vars:
error_message = f"Missing required environment variables: {', '.join(missing_vars)}"
logger.error(error_message)
raise EnvironmentError(error_message)
logger.info("All required environment variables are set.")
def initialize_configurations():
"""Load and validate configurations."""
logger.info("Initializing configurations...")
try:
# Load configurations
settings = Settings()
solana_config = SolanaConfig(settings)
filters_config = FiltersConfig()
dex_screener_config = DexScreenerAPI()
raydium_config = RaydiumAPI(settings)
twitter_config = TwitterConfig()
LoggingConfig() # Apply logging configuration globally
# Log configuration details (sanitized where necessary)
logger.debug(f"Settings: {settings}")
logger.debug(f"SolanaConfig: {solana_config}")
logger.debug(f"FiltersConfig: {filters_config}")
logger.info("Configurations initialized successfully.")
return {
"settings": settings,
"solana_config": solana_config,
"filters_config": filters_config,
"dex_screener_config": dex_screener_config,
"raydium_config": raydium_config,
"twitter_config": twitter_config
}
except Exception as e:
logger.error(f"Failed to initialize configurations: {e}")
raise
def initialize_package():
"""Initialize the Synthron Crypto Trader package."""
logger.info("Initializing Synthron Crypto Trader package...")
try:
# Validate environment variables
validate_environment_variables()
# Initialize configurations
configs = initialize_configurations()
logger.info("Package initialized successfully.")
return configs
except Exception as e:
logger.critical(f"Package initialization failed: {e}")
raise
# Initialize the package when the module is imported
try:
CONFIGS = initialize_package()
except Exception as e:
logger.critical("Failed to initialize the package. Exiting...")
raise SystemExit(e)