Python library for managing cryptocurrency exchange configurations
Project description
Shared Exchange Configuration Library
A Python library for managing cryptocurrency exchange configurations, providing clean access to exchange data and configuration override capabilities.
Features
- Load and manage multiple exchange configurations from JSON files
- Clean Python API for accessing currency, network, and exchange-specific data
- Configuration override system for testing and customization
Installation
pip install shared-exchange-config
# Requirements: Python 3.10+
Quick Start
Basic Usage (with default configurations)
from exchange_config import ExchangeConfigManager
# Initialize the manager (loads default JSON configs)
manager = ExchangeConfigManager()
# Access exchange configurations
binance = manager.get_exchange('binance')
print(f"Binance supports {len(binance.available_currencies))} currencies")
Production Usage (with startup configuration)
Check examples/ folder for more detailed usage
Configuration Management
Startup Configuration (Recommended for Production)
For Django/FastAPI applications, configure overrides once at startup:
from exchange_config import configure_exchanges
# Multiple configuration sources supported
configure_exchanges(
config_dict=EXCHANGE_OVERRIDES, # From Django/FastAPI settings
config_file="/path/to/overrides.json", # From file
override_dir="/config/overrides/", # From directory
load_env=True, # From environment variables
env_prefix="EXCHANGE_CONFIG_" # Custom env prefix
)
Configuration Sources:
- Dictionary (Django/FastAPI settings):
EXCHANGE_OVERRIDES = {
"exchanges": {
"binance": {
"add_currencies": ["CUSTOM_TOKEN"],
"remove_currencies": ["OLD_TOKEN"],
"add_fiat_currencies": ["GBP"]
}
},
"global": {
"add_currencies": ["PLATFORM_TOKEN", "UNIVERSAL_COIN"],
"add_fiat_currencies": ["GBP", "CAD"]
}
}
- Environment Variables:
EXCHANGE_CONFIG_BINANCE_ADD_CURRENCIES=CUSTOM_TOKEN,COMPANY_COIN
EXCHANGE_CONFIG_GLOBAL_ADD_CURRENCIES=PLATFORM_TOKEN,UNIVERSAL_COIN
EXCHANGE_CONFIG_GLOBAL_ADD_FIAT_CURRENCIES=GBP,CAD
- JSON Configuration File:
{
"exchanges": {
"binance": {
"add_currencies": ["CUSTOM_TOKEN"],
"set_api_base_url": "https://api.custom.com"
}
}
}
Configuration Operations
The library provides a complete, consistent API for both exchange-specific and global configurations. All operations support both single values and lists, and there are add_ operations available for all core configuration fields:
Currency Operations:
add_currencies- Add cryptocurrencies (supports both single values and lists)add_fiat_currencies- Add fiat currencies (supports both single values and lists)remove_currencies- Remove currencies (supports both single values and lists)
Network Operations:
add_currency_networks- Add network mappings for currenciesadd_networks- Add networks to the networks dictionary (format: {"NETWORK_NAME": "network_value"})add_currency_and_network_to_alias_map- Add currency-network to alias mappings
Field Operations:
set_*- Set any configuration field directly (e.g.,set_api_timeout,set_custom_field)
Supported Override Fields:
available_currencies- List of available cryptocurrenciesavailable_fiat_currencies- List of available fiat currenciescurrencies_to_networks- Currency to networks mappingnetworks- Available networkscurrency_and_network_to_alias_map- Currency-network to alias mapping
Usage Examples:
# Exchange-specific configuration
"binance": {
"add_currencies": ["TOKEN1", "TOKEN2"], # Multiple currencies
"add_fiat_currencies": "GBP", # Single currency (string)
"remove_currencies": ["OLD_TOKEN"], # Remove multiple
"add_currency_networks": { # Add network mappings
"BTC": ["LIGHTNING"],
"ETH": ["ARBITRUM"]
},
"add_networks": {"POLYGON": "polygon", "BSC": "bsc"}, # Add available networks
"add_currency_and_network_to_alias_map": { # Add alias mappings
"BTC-LIGHTNING": "BTC_LN",
"ETH-ARBITRUM": "ETH_ARB"
}
}
# Global configuration (applies to all exchanges)
"global": {
"add_currencies": ["PLATFORM_TOKEN", "GLOBAL_COIN"], # Multiple currencies
"add_fiat_currencies": ["EUR", "JPY"], # Multiple fiat currencies
"remove_currencies": "DEPRECATED_TOKEN", # Single removal (string)
"add_networks": {"SOLANA": "solana"} # Add network globally
}
Development
Code Organization
The library has a clean, focused structure:
overrides/: Configuration override management with clear separation of concerns:__init__.py: Public API (configure_exchanges,apply_startup_configuration) and module functionssettings_parser.py:ExchangeOverridesConfigSettingsclass for loading override configuration from various sourcesapplicator.py:ConfigurationApplicatorclass for applying overrides to exchange configurations
exchanges/: Exchange-specific classes with specialized functionalitymanager.py: High-level manager for working with multiple exchanges__init__.py: Main package exports for public API
This structure provides a clean, organized codebase with clear separation of concerns.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters