Skip to content

Commit

Permalink
Fix mayor bug found by fomo, sym info getting stored incorrectly on p…
Browse files Browse the repository at this point in the history
…ps.toml causing it to load pp wrong on second open, also fix header leak bug
  • Loading branch information
guilledk committed Mar 1, 2023
1 parent b8776eb commit 501fe9a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
3 changes: 2 additions & 1 deletion piker/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ def write(
config: dict, # toml config as dict
name: str = 'brokers',
path: str = None,
fail_empty: bool = True,
**toml_kwargs,

) -> None:
Expand All @@ -252,7 +253,7 @@ def write(
log.debug(f"Creating config dir {_config_dir}")
os.makedirs(dirname)

if not config:
if not config and fail_empty:
raise ValueError(
"Watch out you're trying to write a blank config!")

Expand Down
28 changes: 19 additions & 9 deletions piker/pp.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
'''
from __future__ import annotations
from contextlib import contextmanager as cm
from pathlib import Path
from decimal import Decimal, ROUND_HALF_EVEN
from pprint import pformat
import os
Expand Down Expand Up @@ -198,11 +199,9 @@ def to_pretoml(self) -> tuple[str, dict]:
sym_info = s.broker_info[broker]

d['symbol'] = {
'info': {
'asset_type': sym_info['asset_type'],
'price_tick_size': sym_info['price_tick_size'],
'lot_tick_size': sym_info['lot_tick_size']
}
'asset_type': sym_info['asset_type'],
'price_tick_size': sym_info['price_tick_size'],
'lot_tick_size': sym_info['lot_tick_size']
}

if self.expiry is None:
Expand Down Expand Up @@ -693,11 +692,20 @@ def write_config(self) -> None:
'''
# TODO: show diff output?
# https://stackoverflow.com/questions/12956957/print-diff-of-python-dictionaries
log.info(f'Updating ``pps.toml`` for {path}:\n')
# active, closed_pp_objs = table.dump_active()
pp_entries = self.to_toml()
log.info(f'Current positions:\n{pp_entries}')
self.conf[self.brokername][self.acctid] = pp_entries
if pp_entries:
log.info(f'Updating ``pps.toml`` for {path}:\n')
log.info(f'Current positions:\n{pp_entries}')
self.conf[self.brokername][self.acctid] = pp_entries

elif (
self.brokername in self.conf and
self.acctid in self.conf[self.brokername]
):
del self.conf[self.brokername][self.acctid]
if len(self.conf[self.brokername]) == 0:
del self.conf[self.brokername]

# TODO: why tf haven't they already done this for inline
# tables smh..
Expand All @@ -711,6 +719,7 @@ def write_config(self) -> None:
self.conf,
'pps',
encoder=enc,
fail_empty=False
)


Expand Down Expand Up @@ -972,7 +981,8 @@ def open_pps(
expiry = pendulum.parse(expiry)

pp = pp_objs[bsuid] = Position(
Symbol.from_fqsn(fqsn, info={}),
Symbol.from_fqsn(
fqsn, entry['symbol']),
size=size,
ppu=ppu,
split_ratio=split_ratio,
Expand Down

0 comments on commit 501fe9a

Please sign in to comment.