Skip to main content

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:

  1. 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"]
    }
}
  1. 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
  1. 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 currencies
  • add_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 cryptocurrencies
  • available_fiat_currencies - List of available fiat currencies
  • currencies_to_networks - Currency to networks mapping
  • networks - Available networks
  • currency_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 functions
    • settings_parser.py: ExchangeOverridesConfigSettings class for loading override configuration from various sources
    • applicator.py: ConfigurationApplicator class for applying overrides to exchange configurations
  • exchanges/: Exchange-specific classes with specialized functionality
  • manager.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shared_exchange_config-0.0.17.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shared_exchange_config-0.0.17-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file shared_exchange_config-0.0.17.tar.gz.

File metadata

  • Download URL: shared_exchange_config-0.0.17.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for shared_exchange_config-0.0.17.tar.gz
Algorithm Hash digest
SHA256 332d641e85a4072d33434a603403bd3fa3ca551cbf7af8231f9f95904e2905c5
MD5 3ef083667b64aac1d6e77abfc19d89e5
BLAKE2b-256 99dd4a87730f81a609073ccd01586f060454a97ae910c816ab387cb401ec16f8

See more details on using hashes here.

File details

Details for the file shared_exchange_config-0.0.17-py3-none-any.whl.

File metadata

File hashes

Hashes for shared_exchange_config-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 ad1701a2375bd6399d352853ef8ed739e47fe75809da015bc33e372035bc6a11
MD5 cc3227272c643f42f1f3e8145414204c
BLAKE2b-256 414bf8258ca0ae3c10249483bfc144d75a1acb77bc22fdaa09a0ee39e39249ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page