Merge pull request #475 from pikers/explicit_write_pps_on_exit

Explicitly write `pps.toml` on exit for `ib` and `kraken`
xdo_and_you
goodboy 2023-03-01 17:47:57 -05:00 committed by GitHub
commit 269a04ba1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 26 deletions

View File

@ -480,10 +480,17 @@ async def trades_dialogue(
# open ledger and pptable wrapper for each # open ledger and pptable wrapper for each
# detected account. # detected account.
ledger = ledgers[acctid] = lstack.enter_context( ledger = ledgers[acctid] = lstack.enter_context(
open_trade_ledger('ib', acctid) open_trade_ledger(
'ib',
acctid,
)
) )
table = tables[acctid] = lstack.enter_context( table = tables[acctid] = lstack.enter_context(
open_pps('ib', acctid) open_pps(
'ib',
acctid,
write_on_exit=True,
)
) )
for account, proxy in proxies.items(): for account, proxy in proxies.items():

View File

@ -221,7 +221,7 @@ class Client:
async def get_trades( async def get_trades(
self, self,
fetch_limit: int = 10, fetch_limit: int | None = None,
) -> dict[str, Any]: ) -> dict[str, Any]:
''' '''
@ -233,7 +233,10 @@ class Client:
trades_by_id: dict[str, Any] = {} trades_by_id: dict[str, Any] = {}
for i in itertools.count(): for i in itertools.count():
if i >= fetch_limit: if (
fetch_limit
and i >= fetch_limit
):
break break
# increment 'ofs' pagination offset # increment 'ofs' pagination offset
@ -246,7 +249,8 @@ class Client:
by_id = resp['result']['trades'] by_id = resp['result']['trades']
trades_by_id.update(by_id) trades_by_id.update(by_id)
# we can get up to 50 results per query # can get up to 50 results per query, see:
# https://docs.kraken.com/rest/#tag/User-Data/operation/getTradeHistory
if ( if (
len(by_id) < 50 len(by_id) < 50
): ):

View File

@ -470,6 +470,7 @@ async def trades_dialogue(
open_pps( open_pps(
'kraken', 'kraken',
acctid, acctid,
write_on_exit=True,
) as table, ) as table,
open_trade_ledger( open_trade_ledger(
@ -627,7 +628,7 @@ async def trades_dialogue(
cost_scalar=1, cost_scalar=1,
) )
log.info( log.info(
'Updated {dst} from transfers:\n' f'Updated {dst} from transfers:\n'
f'{pformat(updated)}' f'{pformat(updated)}'
) )
@ -1212,23 +1213,3 @@ def norm_trade_records(
) )
return records return records
@cm
def open_ledger(
acctid: str,
trade_entries: list[dict[str, Any]],
) -> set[Transaction]:
'''
Write recent session's trades to the user's (local) ledger file.
'''
with open_trade_ledger(
'kraken',
acctid,
) as ledger:
yield ledger
# update on exit
ledger.update(trade_entries)