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.16.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.16-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for shared_exchange_config-0.0.16.tar.gz
Algorithm Hash digest
SHA256 510172a14ab2870358f81fcdb29529de4fb018c78078577200e4a717d5a66f52
MD5 3adc4c05018e785dbfb2a8f252307a4f
BLAKE2b-256 657a5109a69eb34eb997f2eb62b2d8c813e9e668090894bd8a162881e77f9272

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for shared_exchange_config-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 39dfce6484a9ab6d082ff749a4d9f481452c787d50ef4ec579e9e70366c145d0
MD5 4f70d4f94a5ecaaa5cf29d081f1a5453
BLAKE2b-256 5a30f1c91793ef0f8bb1b6503a225bded5a335184b9e32dd069447f3bc4c85f9

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