Skip to content

Commit

Permalink
Merge pull request #242 from Davi0kProgramsThings/v3.0.2
Browse files Browse the repository at this point in the history
Merge branch `Davi0kProgramsThings:v3.0.2` into branch `bitfinexcom:master`.
  • Loading branch information
itsdeka authored May 8, 2024
2 parents 52f24ff + 74b6c77 commit b496a98
Show file tree
Hide file tree
Showing 10 changed files with 99 additions and 54 deletions.
38 changes: 0 additions & 38 deletions MANIFEST

This file was deleted.

2 changes: 1 addition & 1 deletion bfxapi/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "3.0.1"
__version__ = "3.0.2"
4 changes: 2 additions & 2 deletions bfxapi/rest/_interfaces/rest_auth_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ def get_ledgers(

def get_base_margin_info(self) -> BaseMarginInfo:
return serializers.BaseMarginInfo.parse(
*(self._m.post("auth/r/info/margin/base")[1])
*self._m.post("auth/r/info/margin/base")
)

def get_symbol_margin_info(self, symbol: str) -> SymbolMarginInfo:
Expand Down Expand Up @@ -551,7 +551,7 @@ def get_funding_trades_history(

def get_funding_info(self, key: str) -> FundingInfo:
return serializers.FundingInfo.parse(
*(self._m.post(f"auth/r/info/funding/{key}")[2])
*self._m.post(f"auth/r/info/funding/{key}")
)

def transfer_between_wallets(
Expand Down
1 change: 1 addition & 0 deletions bfxapi/types/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .dataclasses import (
BalanceAvailable,
BalanceInfo,
BaseMarginInfo,
Candle,
CurrencyConversion,
Expand Down
7 changes: 7 additions & 0 deletions bfxapi/types/dataclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,7 @@ class FundingAutoRenew(_Type):

@dataclass()
class FundingInfo(_Type):
symbol: str
yield_loan: float
yield_lend: float
duration_loan: float
Expand Down Expand Up @@ -607,6 +608,12 @@ class DerivativePositionCollateralLimits(_Type):
max_collateral: float


@dataclass
class BalanceInfo(_Type):
aum: float
aum_net: float


# endregion

# region Dataclass definitions for types of merchant use
Expand Down
26 changes: 24 additions & 2 deletions bfxapi/types/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,15 @@
FundingInfo = generate_labeler_serializer(
name="FundingInfo",
klass=dataclasses.FundingInfo,
labels=["yield_loan", "yield_lend", "duration_loan", "duration_lend"],
labels=[
"_PLACEHOLDER",
"symbol",
"yield_loan",
"yield_lend",
"duration_loan",
"duration_lend",
],
flat=True,
)

Wallet = generate_labeler_serializer(
Expand Down Expand Up @@ -745,7 +753,15 @@
BaseMarginInfo = generate_labeler_serializer(
name="BaseMarginInfo",
klass=dataclasses.BaseMarginInfo,
labels=["user_pl", "user_swaps", "margin_balance", "margin_net", "margin_min"],
labels=[
"_PLACEHOLDER",
"user_pl",
"user_swaps",
"margin_balance",
"margin_net",
"margin_min",
],
flat=True,
)

PositionClaim = generate_labeler_serializer(
Expand Down Expand Up @@ -888,4 +904,10 @@
labels=["min_collateral", "max_collateral"],
)

BalanceInfo = generate_labeler_serializer(
name="BalanceInfo",
klass=dataclasses.BalanceInfo,
labels=["aum", "aum_net"],
)

# endregion
6 changes: 5 additions & 1 deletion bfxapi/websocket/_event_emitter/bfx_event_emitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@
"trade_execution",
"trade_execution_update",
"wallet_update",
"base_margin_info",
"symbol_margin_info",
"funding_info_update",
"balance_update",
"notification",
"on-req-notification",
"ou-req-notification",
Expand Down Expand Up @@ -105,7 +109,7 @@ def on(
) -> Union[_Handler, Callable[[_Handler], _Handler]]:
if event not in BfxEventEmitter._EVENTS:
raise UnknownEventError(
f"Can't register to unknown event: <{event}> (to get a full"
f"Can't register to unknown event: <{event}> (to get a full "
"list of available events see https://docs.bitfinex.com/)."
)

Expand Down
31 changes: 22 additions & 9 deletions bfxapi/websocket/_handlers/auth_events_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class AuthEventsHandler:
"flc": "funding_loan_close",
"ws": "wallet_snapshot",
"wu": "wallet_update",
"fiu": "funding_info_update",
"bu": "balance_update",
}

__SERIALIZERS: Dict[Tuple[str, ...], serializers._Serializer] = {
Expand All @@ -43,6 +45,8 @@ class AuthEventsHandler:
("fcs", "fcn", "fcu", "fcc"): serializers.FundingCredit,
("fls", "fln", "flu", "flc"): serializers.FundingLoan,
("ws", "wu"): serializers.Wallet,
("fiu",): serializers.FundingInfo,
("bu",): serializers.BalanceInfo,
}

def __init__(self, event_emitter: EventEmitter) -> None:
Expand All @@ -51,17 +55,26 @@ def __init__(self, event_emitter: EventEmitter) -> None:
def handle(self, abbrevation: str, stream: Any) -> None:
if abbrevation == "n":
self.__notification(stream)
elif abbrevation == "miu":
if stream[0] == "base":
self.__event_emitter.emit(
"base_margin_info", serializers.BaseMarginInfo.parse(*stream)
)
elif stream[0] == "sym":
self.__event_emitter.emit(
"symbol_margin_info", serializers.SymbolMarginInfo.parse(*stream)
)
else:
for abbrevations, serializer in AuthEventsHandler.__SERIALIZERS.items():
if abbrevation in abbrevations:
event = AuthEventsHandler.__ABBREVIATIONS[abbrevation]

for abbrevations, serializer in AuthEventsHandler.__SERIALIZERS.items():
if abbrevation in abbrevations:
event = AuthEventsHandler.__ABBREVIATIONS[abbrevation]
if all(isinstance(sub_stream, list) for sub_stream in stream):
data = [serializer.parse(*sub_stream) for sub_stream in stream]
else:
data = serializer.parse(*stream)

if all(isinstance(sub_stream, list) for sub_stream in stream):
data = [serializer.parse(*sub_stream) for sub_stream in stream]
else:
data = serializer.parse(*stream)

self.__event_emitter.emit(event, data)
self.__event_emitter.emit(event, data)

def __notification(self, stream: Any) -> None:
event: str = "notification"
Expand Down
36 changes: 36 additions & 0 deletions examples/websocket/auth/calc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# python -c "import examples.websocket.auth.calc"

import os

from bfxapi import Client
from bfxapi.types import BaseMarginInfo, FundingInfo, SymbolMarginInfo

bfx = Client(
api_key=os.getenv("BFX_API_KEY"),
api_secret=os.getenv("BFX_API_SECRET"),
)


@bfx.wss.on("authenticated")
async def on_authenticated(_):
await bfx.wss.inputs.calc("margin_base", "margin_sym_tBTCUSD", "funding_sym_fUST")


@bfx.wss.on("base_margin_info")
def on_base_margin_info(data: BaseMarginInfo):
print("Base margin info:", data)


@bfx.wss.on("symbol_margin_info")
def on_symbol_margin_info(data: SymbolMarginInfo):
if data.symbol == "tBTCUSD":
print("Symbol margin info:", data)


@bfx.wss.on("funding_info_update")
def on_funding_info_update(data: FundingInfo):
if data.symbol == "fUST":
print("Funding info update:", data)


bfx.wss.run()
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name="bitfinex-api-py",
version="3.0.1",
version="3.0.2",
description="Official Bitfinex Python API",
long_description=(
"A Python reference implementation of the Bitfinex API "
Expand Down

0 comments on commit b496a98

Please sign in to comment.