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.10.tar.gz (20.2 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.10-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shared_exchange_config-0.0.10.tar.gz
  • Upload date:
  • Size: 20.2 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.10.tar.gz
Algorithm Hash digest
SHA256 10fc7998354b4f03008364e0618b104c05e3e9f421d0e042c62b340f46b7b20d
MD5 485950344523b9d122d5dbc703471fbc
BLAKE2b-256 c19c56a69698c0c0a7c07c907cd2cb6ee3e41d48f9cb2f7b7d90995eb6d39ae9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for shared_exchange_config-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 11f23d34038c5ed07fb633682d5904aeece80962ffcb41279b84fbaaa23347f3
MD5 2fcd3d918448169db045b397e4ae4e05
BLAKE2b-256 bba324c99f8b2f58f86d38aa9b04b552b625317306de133c2ba7e8ec8f5f013c

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