Skip to content

Commit d9f31ff

Browse files
author
todd
committed
Raise missingData in get_result_dict_for_key
1 parent 08e1aa3 commit d9f31ff

15 files changed

+54
-59
lines changed

sysdata/mongodb/mongo_futures_contracts.py

-3
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ def _get_contract_data_without_checking(
9292
def _get_contract_data_from_key_without_checking(self, key: str) -> futuresContract:
9393

9494
result_dict = self.mongo_data.get_result_dict_for_key_without_key_value(key)
95-
if result_dict is missing_data:
96-
# shouldn't happen...
97-
raise Exception("Data for %s gone AWOL" % key)
9895

9996
contract_object = futuresContract.create_from_dict(result_dict)
10097

sysdata/mongodb/mongo_futures_instruments.py

-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ def get_list_of_instruments(self):
3838
def _get_instrument_data_without_checking(self, instrument_code):
3939

4040
result_dict = self.mongo_data.get_result_dict_for_key(instrument_code)
41-
if result_dict is missing_data:
42-
# shouldn't happen...
43-
raise Exception("Data for %s gone AWOL" % instrument_code)
4441

4542
instrument_object = futuresInstrumentWithMetaData.from_dict(result_dict)
4643

sysdata/mongodb/mongo_generic.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def get_result_dict_for_key(self, key) -> dict:
8282
key_name = self.key_name
8383
result_dict = self.collection.find_one({key_name: key})
8484
if result_dict is None:
85-
return missing_data
85+
raise missingData("Key %s not found in Mongo data" % key)
8686

8787
result_dict.pop(MONGO_ID_KEY)
8888

@@ -91,8 +91,6 @@ def get_result_dict_for_key(self, key) -> dict:
9191
def get_result_dict_for_key_without_key_value(self, key) -> dict:
9292
key_name = self.key_name
9393
result_dict = self.get_result_dict_for_key(key)
94-
if result_dict is missing_data:
95-
return missing_data
9694

9795
result_dict.pop(key_name)
9896

@@ -106,8 +104,9 @@ def get_list_of_result_dict_for_custom_dict(self, custom_dict: dict) -> list:
106104
return dict_list
107105

108106
def key_is_in_data(self, key):
109-
result = self.get_result_dict_for_key(key)
110-
if result is missing_data:
107+
try:
108+
self.get_result_dict_for_key(key)
109+
except missingData:
111110
return False
112111
else:
113112
return True

sysdata/mongodb/mongo_historic_orders.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22

3-
from syscore.objects import success, missing_order, arg_not_supplied, missing_data
3+
from syscore.exceptions import missingData
4+
from syscore.objects import success, missing_order, arg_not_supplied
45
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
56

67
from sysexecution.orders.base_orders import Order
@@ -82,9 +83,9 @@ def _add_order_to_data_no_checking(self, order: Order):
8283
self.mongo_data.add_data(order.order_id, mongo_record, allow_overwrite=True)
8384

8485
def get_order_with_orderid(self, order_id: int):
85-
result_dict = self.mongo_data.get_result_dict_for_key(order_id)
86-
87-
if result_dict is missing_data:
86+
try:
87+
result_dict = self.mongo_data.get_result_dict_for_key(order_id)
88+
except missingData:
8889
return missing_order
8990

9091
order_class = self._order_class()

sysdata/mongodb/mongo_lock_data.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from syscore.objects import arg_not_supplied, missing_data
1+
from syscore.objects import arg_not_supplied
22
from sysdata.production.locks import lockData, lock_off, lock_on
33
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
44
from syslogdiag.log_to_screen import logtoscreen
@@ -30,8 +30,6 @@ def mongo_data(self):
3030

3131
def _get_lock_for_instrument_no_checking(self, instrument_code: str) -> str:
3232
result = self.mongo_data.get_result_dict_for_key(instrument_code)
33-
if result is missing_data:
34-
return missing_data
3533

3634
lock = result[LOCK_DICT_KEY]
3735

sysdata/mongodb/mongo_margin.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pandas as pd
22
from syscore.dateutils import long_to_datetime, datetime_to_long
3+
from syscore.exceptions import missingData
34
from syscore.objects import arg_not_supplied, missing_data
45
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
56

@@ -44,10 +45,11 @@ def get_series_of_strategy_margin(self, strategy_name: str) -> seriesOfMargin:
4445
return series_of_margin
4546

4647
def _get_data_dict_for_strategy_margin(self, strategy_name: str) -> dict:
47-
data_dict = self.mongo_data.get_result_dict_for_key_without_key_value(
48-
strategy_name
49-
)
50-
if data_dict is missing_data:
48+
try:
49+
data_dict = self.mongo_data.get_result_dict_for_key_without_key_value(
50+
strategy_name
51+
)
52+
except missingData:
5153
return dict()
5254

5355
return data_dict

sysdata/mongodb/mongo_order_stack.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from syscore.objects import success, missing_data
1+
from syscore.exceptions import missingData
22
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
33
from syslogdiag.log_to_screen import logtoscreen
44

@@ -51,8 +51,9 @@ def __repr__(self):
5151
)
5252

5353
def get_order_with_id_from_stack(self, order_id: int):
54-
result_dict = self.mongo_data.get_result_dict_for_key(order_id)
55-
if result_dict is missing_data:
54+
try:
55+
result_dict = self.mongo_data.get_result_dict_for_key(order_id)
56+
except missingData:
5657
return missing_order
5758

5859
order_class = self._order_class()
@@ -90,8 +91,9 @@ def _get_next_order_id(self) -> int:
9091
return new_orderid
9192

9293
def _get_current_max_order_id(self) -> int:
93-
result_dict = self.mongo_data.get_result_dict_for_key(ORDER_ID_STORE_KEY)
94-
if result_dict is missing_data:
94+
try:
95+
result_dict = self.mongo_data.get_result_dict_for_key(ORDER_ID_STORE_KEY)
96+
except missingData:
9597
orderid = self._create_and_return_max_order_id()
9698
return orderid
9799

sysdata/mongodb/mongo_process_control.py

-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ def _get_control_for_process_name_without_default(self, process_name):
4040
result_dict = self.mongo_data.get_result_dict_for_key_without_key_value(
4141
process_name
4242
)
43-
if result_dict is missing_data:
44-
return missing_data
4543

4644
control_object = controlProcess.from_dict(result_dict)
4745

sysdata/mongodb/mongo_roll_data.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
from syscore.exceptions import missingData
12
from sysdata.futures.rolls_parameters import rollParametersData
23
from sysobjects.rolls import rollParameters
34

45
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
56
from syslogdiag.log_to_screen import logtoscreen
6-
from syscore.objects import arg_not_supplied, missing_data
7+
from syscore.objects import arg_not_supplied
78

89
ROLL_COLLECTION = "futures_roll_parameters"
910

@@ -36,13 +37,15 @@ def get_list_of_instruments(self) -> list:
3637
def _get_roll_parameters_without_checking(
3738
self, instrument_code: str
3839
) -> rollParameters:
39-
result_dict = self.mongo_data.get_result_dict_for_key_without_key_value(
40-
instrument_code
41-
)
42-
if result_dict is missing_data:
40+
try:
41+
result_dict = self.mongo_data.get_result_dict_for_key_without_key_value(
42+
instrument_code
43+
)
44+
except missingData:
4345
self.log.critical(
4446
"%s just vanished from roll parameters??" % instrument_code
4547
)
48+
raise
4649

4750
roll_parameters_object = rollParameters.create_from_dict(result_dict)
4851

sysdata/mongodb/mongo_roll_state_storage.py

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from sysdata.production.roll_state import rollStateData
22
from sysdata.mongodb.mongo_generic import mongoDataWithSingleKey
3-
from syscore.objects import success, missing_data
43
from syslogdiag.log_to_screen import logtoscreen
54

65
ROLL_STATUS_COLLECTION = "futures_roll_status"
@@ -39,8 +38,6 @@ def get_list_of_instruments(self) -> list:
3938

4039
def _get_roll_state_as_str_no_default(self, instrument_code: str):
4140
result_dict = self.mongo_data.get_result_dict_for_key(instrument_code)
42-
if result_dict is missing_data:
43-
return missing_data
4441

4542
roll_status = result_dict[ROLL_STATE_KEY]
4643

sysdata/mongodb/mongo_temporary_close.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from syscore.objects import arg_not_supplied, missing_data
1+
from syscore.objects import arg_not_supplied
22

33
from sysdata.production.temporary_close import temporaryCloseData
44
from sysobjects.production.position_limits import positionLimitForInstrument
@@ -34,8 +34,6 @@ def get_stored_position_limit_for_instrument(
3434
self, instrument_code: str
3535
) -> positionLimitForInstrument:
3636
result_dict = self.mongo_data.get_result_dict_for_key(instrument_code)
37-
if result_dict is missing_data:
38-
return missing_data
3937

4038
return positionLimitForInstrument(
4139
instrument_code, result_dict[POSITION_LIMIT_FIELD]

sysdata/production/locks.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from syscore.exceptions import missingData
12
from syslogdiag.log_to_screen import logtoscreen
2-
from syscore.objects import missing_data
33

44
lock_on = "ON"
55
lock_off = "OFF"
@@ -16,9 +16,9 @@ def is_instrument_locked(self, instrument_code: str) -> bool:
1616
return False
1717

1818
def get_lock_for_instrument(self, instrument_code: str) -> str:
19-
20-
lock = self._get_lock_for_instrument_no_checking(instrument_code)
21-
if lock is missing_data:
19+
try:
20+
lock = self._get_lock_for_instrument_no_checking(instrument_code)
21+
except missingData:
2222
return lock_off
2323

2424
return lock

sysdata/production/process_control_data.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import datetime
22

3+
from syscore.exceptions import missingData
34
from sysobjects.production.process_control import (
45
dictOfControlProcesses,
56
controlProcess,
@@ -31,8 +32,9 @@ def get_list_of_process_names(self) -> list:
3132
return list(self._control_store.keys())
3233

3334
def get_control_for_process_name(self, process_name) -> controlProcess:
34-
control = self._get_control_for_process_name_without_default(process_name)
35-
if control is missing_data:
35+
try:
36+
control = self._get_control_for_process_name_without_default(process_name)
37+
except missingData:
3638
return controlProcess()
3739
else:
3840
return control
@@ -44,10 +46,9 @@ def _get_control_for_process_name_without_default(
4446
return control
4547

4648
def _update_control_for_process_name(self, process_name, new_control_object):
47-
existing_control = self._get_control_for_process_name_without_default(
48-
process_name
49-
)
50-
if existing_control is missing_data:
49+
try:
50+
self._get_control_for_process_name_without_default(process_name)
51+
except missingData:
5152
self._add_control_for_process_name(process_name, new_control_object)
5253
else:
5354
self._modify_existing_control_for_process_name(

sysdata/production/roll_state.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from syscore.objects import missing_data
1+
from syscore.exceptions import missingData
22
from sysdata.base_data import baseData
33
from syslogdiag.log_to_screen import logtoscreen
44
from sysobjects.production.roll_state import (
@@ -22,8 +22,9 @@ def get_name_of_roll_state(self, instrument_code: str) -> str:
2222
return state_name
2323

2424
def get_roll_state(self, instrument_code: str) -> RollState:
25-
state_as_str = self._get_roll_state_as_str_no_default(instrument_code)
26-
if state_as_str is missing_data:
25+
try:
26+
state_as_str = self._get_roll_state_as_str_no_default(instrument_code)
27+
except missingData:
2728
state = default_state
2829
self.set_roll_state(instrument_code, state)
2930
else:

sysproduction/data/controls.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dataclasses import dataclass
22

3-
from syscore.objects import missing_data
3+
from syscore.exceptions import missingData
44

55
from sysdata.config.instruments import (
66
get_list_of_bad_instruments_in_config,
@@ -657,12 +657,13 @@ def temporarily_set_position_limit_to_zero_and_store_original_limit(
657657
)
658658

659659
def reset_position_limit_for_instrument_to_original_value(self, instrument_code):
660-
original_limit = (
661-
self.db_temporary_close_data.get_stored_position_limit_for_instrument(
662-
instrument_code
660+
try:
661+
original_limit = (
662+
self.db_temporary_close_data.get_stored_position_limit_for_instrument(
663+
instrument_code
664+
)
663665
)
664-
)
665-
if original_limit is missing_data:
666+
except missingData:
666667
self.log.warn("No temporary position limit stored")
667668
return None
668669

0 commit comments

Comments
 (0)