corebridge 0.3.2__tar.gz → 0.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {corebridge-0.3.2/corebridge.egg-info → corebridge-0.3.4}/PKG-INFO +1 -1
- corebridge-0.3.4/corebridge/__init__.py +1 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge/_modidx.py +2 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge/aicorebridge.py +2 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge/rscript.py +35 -15
- {corebridge-0.3.2 → corebridge-0.3.4/corebridge.egg-info}/PKG-INFO +1 -1
- {corebridge-0.3.2 → corebridge-0.3.4}/settings.ini +1 -1
- corebridge-0.3.2/corebridge/__init__.py +0 -1
- {corebridge-0.3.2 → corebridge-0.3.4}/LICENSE +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/MANIFEST.in +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/README.md +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge/core.py +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/SOURCES.txt +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/dependency_links.txt +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/entry_points.txt +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/not-zip-safe +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/requires.txt +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/corebridge.egg-info/top_level.txt +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/setup.cfg +0 -0
- {corebridge-0.3.2 → corebridge-0.3.4}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.4"
|
|
@@ -87,4 +87,6 @@ d = { 'settings': { 'branch': 'main',
|
|
|
87
87
|
'corebridge.rscript.run_rscript_nowait': ( 'rscriptbridge.html#run_rscript_nowait',
|
|
88
88
|
'corebridge/rscript.py'),
|
|
89
89
|
'corebridge.rscript.run_rscript_wait': ('rscriptbridge.html#run_rscript_wait', 'corebridge/rscript.py'),
|
|
90
|
+
'corebridge.rscript.snake_case_to_camel_case': ( 'rscriptbridge.html#snake_case_to_camel_case',
|
|
91
|
+
'corebridge/rscript.py'),
|
|
90
92
|
'corebridge.rscript.unpack_assets': ('rscriptbridge.html#unpack_assets', 'corebridge/rscript.py')}}}
|
|
@@ -89,6 +89,7 @@ def __init__(self:AICoreModule,
|
|
|
89
89
|
*args, **kwargs):
|
|
90
90
|
|
|
91
91
|
self.init_time = datetime.datetime.now(datetime.UTC)
|
|
92
|
+
self.aicorebridge_version = __version__
|
|
92
93
|
self._init_processor(processor)
|
|
93
94
|
|
|
94
95
|
self.init_args = args
|
|
@@ -128,6 +129,7 @@ def infer(self:AICoreModule, data:dict, *_, **kwargs):
|
|
|
128
129
|
|
|
129
130
|
msg=[
|
|
130
131
|
f"Startup time: {self.init_time.isoformat()}",
|
|
132
|
+
f"Corebridge version: {self.aicorebridge_version}",
|
|
131
133
|
f"{self.processor.__name__}({self.processor_signature})",
|
|
132
134
|
f"init_args: {self.init_args}, init_kwargs: {self.init_kwargs}",
|
|
133
135
|
]
|
|
@@ -6,7 +6,7 @@ __all__ = ['syslog', 'read_chunk_size', 'RScriptProcess', 'get_asset_path', 'get
|
|
|
6
6
|
'calc_hash_from_flowobject', 'calc_hash_from_files', 'calc_hash_from_input_files',
|
|
7
7
|
'calc_hash_from_data_files', 'check_script_inputs', 'check_script_output', 'generate_checksum_file',
|
|
8
8
|
'run_rscript_wait', 'run_rscript_nowait', 'release_script_lock', 'AICoreRScriptModule',
|
|
9
|
-
'recursive_flatten_nested_data']
|
|
9
|
+
'snake_case_to_camel_case', 'recursive_flatten_nested_data']
|
|
10
10
|
|
|
11
11
|
# %% ../nbs/02_rscriptbridge.ipynb 4
|
|
12
12
|
import os, logging, json, hashlib
|
|
@@ -19,6 +19,7 @@ from functools import reduce
|
|
|
19
19
|
from collections import namedtuple
|
|
20
20
|
from fastcore.basics import patch_to, patch
|
|
21
21
|
|
|
22
|
+
import corebridge
|
|
22
23
|
from .core import *
|
|
23
24
|
|
|
24
25
|
|
|
@@ -412,6 +413,8 @@ class AICoreRScriptModule(AICoreModuleBase):
|
|
|
412
413
|
*args, **kwargs):
|
|
413
414
|
|
|
414
415
|
super().__init__(save_dir, assets_dir, *args, **kwargs)
|
|
416
|
+
|
|
417
|
+
self.corebridge_version = corebridge.__version__
|
|
415
418
|
|
|
416
419
|
self.flow_mapping = flow_mapping
|
|
417
420
|
self.cran_repo = cran_repo
|
|
@@ -500,9 +503,14 @@ def update_flow(self:AICoreRScriptModule):
|
|
|
500
503
|
|
|
501
504
|
|
|
502
505
|
# %% ../nbs/02_rscriptbridge.ipynb 125
|
|
506
|
+
def snake_case_to_camel_case(snake_case:str) -> str:
|
|
507
|
+
splittext = snake_case.split('_')
|
|
508
|
+
return ''.join([x.capitalize() if n > 0 else x for x,n in zip(splittext, range(len(splittext)))])
|
|
509
|
+
|
|
503
510
|
def recursive_flatten_nested_data(
|
|
504
511
|
data:dict,
|
|
505
|
-
column_prefix:str=''
|
|
512
|
+
column_prefix:str='',
|
|
513
|
+
camel_case=False) -> dict:
|
|
506
514
|
|
|
507
515
|
if isinstance(data, np.ndarray):
|
|
508
516
|
return {column_prefix:data}
|
|
@@ -511,7 +519,7 @@ def recursive_flatten_nested_data(
|
|
|
511
519
|
return reduce(
|
|
512
520
|
lambda R, X: dict(**R, **X) if R else X,
|
|
513
521
|
[
|
|
514
|
-
recursive_flatten_nested_data(value, f"{column_prefix}_{i+1}_")
|
|
522
|
+
recursive_flatten_nested_data(value, f"{column_prefix}_{i+1}_", camel_case)
|
|
515
523
|
for i, value in enumerate(data)
|
|
516
524
|
|
|
517
525
|
],
|
|
@@ -529,7 +537,9 @@ def recursive_flatten_nested_data(
|
|
|
529
537
|
[
|
|
530
538
|
recursive_flatten_nested_data(
|
|
531
539
|
value,
|
|
532
|
-
|
|
540
|
+
snake_case_to_camel_case(column_prefix+'_'+str(key)) if camel_case else column_prefix+'_'+str(key),
|
|
541
|
+
camel_case
|
|
542
|
+
)
|
|
533
543
|
for key, value in data.items()
|
|
534
544
|
],
|
|
535
545
|
{}
|
|
@@ -538,9 +548,12 @@ def recursive_flatten_nested_data(
|
|
|
538
548
|
else:
|
|
539
549
|
key = list(data.keys())[0]
|
|
540
550
|
value = data[key]
|
|
541
|
-
|
|
551
|
+
if column_prefix:
|
|
552
|
+
column_name = snake_case_to_camel_case(column_prefix+'_'+str(key)) if camel_case else column_prefix+'_'+str(key)
|
|
553
|
+
else:
|
|
554
|
+
column_name = snake_case_to_camel_case(str(key)) if camel_case else str(key)
|
|
542
555
|
return recursive_flatten_nested_data(
|
|
543
|
-
value, column_name,
|
|
556
|
+
value, column_name, camel_case
|
|
544
557
|
)
|
|
545
558
|
|
|
546
559
|
|
|
@@ -558,15 +571,20 @@ def write_uploaded_data(
|
|
|
558
571
|
df.reset_index().to_csv(csv_filename, index=False, date_format='%Y-%m-%d %H:%M:%S')
|
|
559
572
|
|
|
560
573
|
@patch
|
|
561
|
-
def read_data(self:AICoreRScriptModule, tag:str=None, **kwargs):
|
|
574
|
+
def read_data(self:AICoreRScriptModule, tag:str=None, camel_case=False, **kwargs):
|
|
575
|
+
|
|
562
576
|
rdata_filename = self.get_save_path(self.data_files_map.get(tag, tag))
|
|
563
577
|
converted = rdata.read_rda(rdata_filename)
|
|
564
578
|
|
|
565
|
-
flattened = recursive_flatten_nested_data(converted)
|
|
579
|
+
flattened = recursive_flatten_nested_data(converted, camel_case=camel_case)
|
|
566
580
|
df = pd.DataFrame(flattened)
|
|
567
|
-
|
|
581
|
+
syslog.debug(f"Read {df.shape[0]} rows from {rdata_filename} for {tag} (camel_case={camel_case})")
|
|
582
|
+
|
|
583
|
+
time_column = [k for k,v in df.dtypes.to_dict().items() if 'float' not in str(v)][0]
|
|
584
|
+
df.set_index( pd.DatetimeIndex(df[time_column]), inplace=True)
|
|
568
585
|
df.index.name = 'time'
|
|
569
|
-
df.drop(
|
|
586
|
+
df.drop(time_column, axis=1, inplace=True)
|
|
587
|
+
|
|
570
588
|
return df
|
|
571
589
|
|
|
572
590
|
|
|
@@ -576,10 +594,6 @@ def infer(
|
|
|
576
594
|
self:AICoreRScriptModule,
|
|
577
595
|
data:dict,
|
|
578
596
|
*_,
|
|
579
|
-
writeTag:str=None,
|
|
580
|
-
readTag:str=None,
|
|
581
|
-
timezone:str='UTC',
|
|
582
|
-
recordformat:str='records',
|
|
583
597
|
**kwargs):
|
|
584
598
|
|
|
585
599
|
"""
|
|
@@ -590,11 +604,17 @@ def infer(
|
|
|
590
604
|
|
|
591
605
|
msg=[
|
|
592
606
|
f"Startup time: {self.init_time.isoformat()}",
|
|
607
|
+
f"Corebridge version: {self.corebridge_version}",
|
|
593
608
|
f"init_args: {self.init_args}, init_kwargs: {self.init_kwargs}",
|
|
594
609
|
]
|
|
595
610
|
|
|
596
611
|
msg += self.update_flow()
|
|
597
612
|
# Pickup params, pop those that are not intended for the processor
|
|
613
|
+
writeTag = kwargs.pop('writeTag', None)
|
|
614
|
+
readTag = kwargs.pop('readTag', None)
|
|
615
|
+
camelCase = bool(kwargs.pop('camelCase', False))
|
|
616
|
+
msg.append(f"writeTag: {writeTag}, readTag: {readTag}, camelCase: {camelCase}")
|
|
617
|
+
|
|
598
618
|
lastSeen = kwargs.pop('lastSeen', False)
|
|
599
619
|
recordformat = kwargs.pop('format', "records").lower()
|
|
600
620
|
timezone = kwargs.get('timezone', 'UTC')
|
|
@@ -613,7 +633,7 @@ def infer(
|
|
|
613
633
|
self.write_uploaded_data(df, writeTag)
|
|
614
634
|
|
|
615
635
|
if readTag:
|
|
616
|
-
result = self.read_data(readTag)
|
|
636
|
+
result = self.read_data(readTag, camel_case=camelCase)
|
|
617
637
|
|
|
618
638
|
if reversed:
|
|
619
639
|
result = result[::-1]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.3.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|