Skip to content

Commit

Permalink
much cleaner way to switch arctic/parquet
Browse files Browse the repository at this point in the history
  • Loading branch information
Rob Carver committed Nov 20, 2023
1 parent bef9dbe commit 6856479
Show file tree
Hide file tree
Showing 18 changed files with 259 additions and 187 deletions.
19 changes: 11 additions & 8 deletions sysdata/data_blob.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,13 @@ def __init__(
def __repr__(self):
return "dataBlob with elements: %s" % ",".join(self._attr_list)

def add_class_list(self, class_list: list):
def add_class_list(self, class_list: list, use_prefix: str = arg_not_supplied):
for class_object in class_list:
self.add_class_object(class_object)
self.add_class_object(class_object, use_prefix=use_prefix)

def add_class_object(self, class_object):
def add_class_object(self, class_object, use_prefix: str = arg_not_supplied):
class_name = get_class_name(class_object)
attr_name = self._get_new_name(class_name)
attr_name = self._get_new_name(class_name, use_prefix=use_prefix)
if not self._already_existing_class_name(attr_name):
resolved_instance = self._get_resolved_instance_of_class(class_object)
self._resolve_names_and_add(resolved_instance, class_name)
Expand Down Expand Up @@ -236,10 +236,11 @@ def _resolve_names_and_add(self, resolved_instance, class_name: str):
attr_name = self._get_new_name(class_name)
self._add_new_class_with_new_name(resolved_instance, attr_name)

def _get_new_name(self, class_name: str) -> str:
def _get_new_name(self, class_name: str, use_prefix: str = arg_not_supplied) -> str:
split_up_name = camel_case_split(class_name)
attr_name = identifying_name(
split_up_name, keep_original_prefix=self._keep_original_prefix
split_up_name, keep_original_prefix=self._keep_original_prefix,
use_prefix=use_prefix
)

return attr_name
Expand Down Expand Up @@ -382,7 +383,7 @@ def get_parquet_root_directory(config):
return get_resolved_pathname(path)


def identifying_name(split_up_name: list, keep_original_prefix=False) -> str:
def identifying_name(split_up_name: list, keep_original_prefix: bool=False, use_prefix: str = arg_not_supplied) -> str:
"""
Turns sourceClassNameData into broker_class_name or db_class_name
Expand All @@ -400,7 +401,9 @@ def identifying_name(split_up_name: list, keep_original_prefix=False) -> str:
except BaseException:
raise Exception("Get_data strings only work if class name ends in ...Data")

if keep_original_prefix:
if use_prefix is not arg_not_supplied:
source_label = use_prefix
elif keep_original_prefix:
source_label = original_source_label
else:
try:
Expand Down
4 changes: 0 additions & 4 deletions sysdata/pointers.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
from sysdata.parquet.parquet_adjusted_prices import parquetFuturesAdjustedPricesData as og_parquetFuturesAdjustedPricesData
from sysdata.arctic.arctic_adjusted_prices import arcticFuturesAdjustedPricesData

from sysdata.parquet.parquet_capital import parquetCapitalData as og_parquetCapitalData
from sysdata.arctic.arctic_capital import arcticCapitalData
from sysdata.arctic.arctic_futures_per_contract_prices import arcticFuturesContractPriceData
from sysdata.parquet.parquet_futures_per_contract_prices import parquetFuturesContractPriceData as og_parquetFuturesContractPriceData
from sysdata.data_blob import get_parquet_root_directory
from sysdata.config.production_config import get_production_config

Expand All @@ -15,7 +12,6 @@
pass

## TO USE ARCTIC RATHER THAN PARQUET, REPLACE THE og_ with the relevant arctic class
parquetFuturesAdjustedPricesData = og_parquetFuturesAdjustedPricesData ## change to arctic if desired
parquet_futures_adjusted_price_data = parquetFuturesAdjustedPricesData(parquet_root) ## replace with arcticFuturesContractPriceData() if desired

parquetCapitalData = og_parquetCapitalData
Expand Down
39 changes: 32 additions & 7 deletions sysdata/sim/db_futures_sim_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from syscore.constants import arg_not_supplied

from sysdata.pointers import parquetFuturesAdjustedPricesData
from sysdata.parquet.parquet_adjusted_prices import parquetFuturesAdjustedPricesData
from sysdata.arctic.arctic_multiple_prices import arcticFuturesMultiplePricesData
from sysdata.arctic.arctic_spotfx_prices import arcticFxPricesData
from sysdata.csv.csv_instrument_data import csvFuturesInstrumentData
Expand All @@ -26,12 +26,12 @@ def __init__(
data = dataBlob(
log=log,
class_list=[
parquetFuturesAdjustedPricesData,
arcticFuturesMultiplePricesData,
arcticFxPricesData,
csvFuturesInstrumentData,
csvRollParametersData,
mongoSpreadCostData,
get_class_for_data_type(FUTURES_ADJUSTED_PRICE_DATA),
get_class_for_data_type(FUTURES_MULTIPLE_PRICE_DATA),
get_class_for_data_type(FX_DATA),
get_class_for_data_type(FUTURES_INSTRUMENT_DATA),
get_class_for_data_type(ROLL_PARAMETERS_DATA),
get_class_for_data_type(SPREAD_DATA)
],
)

Expand All @@ -43,6 +43,31 @@ def __repr__(self):
)


FUTURES_MULTIPLE_PRICE_DATA = "futures_multiple_price_data"
FUTURES_ADJUSTED_PRICE_DATA = "futures_adjusted_price_data"
CAPITAL_DATA = "capital_data"
FX_DATA = "fx_data"
ROLL_PARAMETERS_DATA = "roll_parameters_data"
FUTURES_INSTRUMENT_DATA = "futures_instrument_data"
SPREAD_DATA = "spread_data"

def get_class_for_data_type(data_type:str):

return use_sim_classes[data_type]

use_sim_classes = {
FX_DATA: arcticFxPricesData,
ROLL_PARAMETERS_DATA: csvRollParametersData,
FUTURES_INSTRUMENT_DATA: csvFuturesInstrumentData,

FUTURES_MULTIPLE_PRICE_DATA: arcticFuturesMultiplePricesData,
FUTURES_ADJUSTED_PRICE_DATA: parquetFuturesAdjustedPricesData,
SPREAD_DATA: mongoSpreadCostData
}




if __name__ == "__main__":
import doctest

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
"""
from syscore.constants import arg_not_supplied
from sysdata.arctic.arctic_multiple_prices import arcticFuturesMultiplePricesData
from sysdata.pointers import parquet_futures_adjusted_price_data
from sysproduction.data.production_data_objects import get_class_for_data_type, FUTURES_ADJUSTED_PRICE_DATA
from sysdata.csv.csv_adjusted_prices import csvFuturesAdjustedPricesData

from sysobjects.adjusted_prices import futuresAdjustedPrices


def _get_data_inputs(csv_adj_data_path):
arctic_multiple_prices = arcticFuturesMultiplePricesData()
parquet_adjusted_prices = parquet_futures_adjusted_price_data
parquet_adjusted_prices = get_class_for_data_type(FUTURES_ADJUSTED_PRICE_DATA)
csv_adjusted_prices = csvFuturesAdjustedPricesData(csv_adj_data_path)

return arctic_multiple_prices, parquet_adjusted_prices, csv_adjusted_prices
Expand Down
2 changes: 2 additions & 0 deletions sysinit/futures/clone_data_for_instrument.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from sysdata.csv.csv_multiple_prices import csvFuturesMultiplePricesData
from sysdata.csv.csv_adjusted_prices import csvFuturesAdjustedPricesData



from sysobjects.contracts import futuresContract
from syscore.dateutils import DAILY_PRICE_FREQ, HOURLY_FREQ
from sysobjects.multiple_prices import futuresMultiplePrices
Expand Down
Loading

0 comments on commit 6856479

Please sign in to comment.