Skip to main content

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+

PyPI deploy

pip install build twine
rm -rf dist/ build/ *.egg-info
python -m build
python -m twine check dist/*
python -m twine upload dist/*

# Requirements: Python 3.10+, build, twine

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.

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.19.tar.gz (21.4 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.19-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shared_exchange_config-0.0.19.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for shared_exchange_config-0.0.19.tar.gz
Algorithm Hash digest
SHA256 85e37aed01e7820714139f60c31886bb6bc0bad0e5565a7e346b96c211e347ba
MD5 1869d66c668d51a04be78b59a09db130
BLAKE2b-256 c7b8a1286792202764cd7a31b8df041606638bb20e3721e1f1e5324f0e4b07cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for shared_exchange_config-0.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 147caa1eb2a7108320f4e6baa194a588436e60455ea4ce320e0bbbcd44e3d9b7
MD5 bec25be87d784869448d0eab05d3b537
BLAKE2b-256 e5f7975e4b70715957ccc1880f4bfdead64d665fd8c22d6604ada23a56c11cbf

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.20

2 files

This release

0.0.19 This release

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page