# Path: zaifbot/exchange/api/http.py
# class BotPublicApi(ZaifPublicApi):
# 
#     @_with_retry
#     def last_price(self, currency_pair):
#         return super().last_price(str(currency_pair))
# 
#     @_with_retry
#     def ticker(self, currency_pair):
#         return super().ticker(currency_pair)
# 
#     @_with_retry
#     def trades(self, currency_pair):
#         return super().trades(currency_pair)
# 
#     @_with_retry
#     def depth(self, currency_pair):
#         return super().depth(currency_pair)
# 
#     @_with_retry
#     def currency_pairs(self, currency_pair):
#         return super().currency_pairs(currency_pair)
# 
#     @_with_retry
#     def currencies(self, currency):
#         return super().currencies(currency)


from threading import Lock
from zaifbot.exchange.api.http import BotPublicApi

    def __init__(self, name):
        self._name = str(name)
        self._info = _ZaifCurrencyPairsInfo()[self._name]

    def __str__(self):
        return self._name

    @property
    def name(self):
        return self._name

    @property
    def info(self):
        return self._info

    @property
    def is_token(self):
        return self._info['is_token']


class _ZaifCurrencyPairsInfo:
    _instance = None
    _lock = Lock()
    _currency_pairs = None

    def __new__(cls):
        with cls._lock:
            if cls._instance is None:
                cls._instance = super().__new__(cls)

# Path: zaifbot/exchange/api/http.py
# class BotPublicApi(ZaifPublicApi):
# 
#     @_with_retry
#     def last_price(self, currency_pair):
#         return super().last_price(str(currency_pair))
# 
#     @_with_retry
#     def ticker(self, currency_pair):
#         return super().ticker(currency_pair)
# 
#     @_with_retry
#     def trades(self, currency_pair):
#         return super().trades(currency_pair)
# 
#     @_with_retry
#     def depth(self, currency_pair):
#         return super().depth(currency_pair)
# 
#     @_with_retry
#     def currency_pairs(self, currency_pair):
#         return super().currency_pairs(currency_pair)
# 
#     @_with_retry
#     def currencies(self, currency):
#         return super().currencies(currency)


# Path: zaifbot/exchange/currency_pairs.py
from threading import Lock
from zaifbot.exchange.api.http import BotPublicApi


    def __init__(self, name):
        self._name = str(name)
        self._info = _ZaifCurrencyPairsInfo()[self._name]

    def __str__(self):
        return self._name

    @property
    def name(self):
        return self._name

    @property
    def info(self):
        return self._info

    @property
    def is_token(self):
        return self._info['is_token']


class _ZaifCurrencyPairsInfo:
    _instance = None
    _lock = Lock()
    _currency_pairs = None

    def __new__(cls):
        with cls._lock:
            if cls._instance is None:
                cls._instance = super().__new__(cls)

                api = BotPublicApi()