8000 Fix sas datastep input values when table is provided · teoland/python-sasctl@03e426b · GitHub
[go: up one dir, main page]

Skip to content

Commit 03e426b

Browse files
author
Cloud User
committed
Fix sas datastep input values when table is provided
1 parent 306043e commit 03e426b

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/sasctl/utils/astore.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,24 @@ def create_package_from_datastep(table, input=None):
8989

9090
dscode = table.to_frame().loc[0, 'DataStepSrc']
9191

92-
#TODO: Extract inputs into file
92+
# Extract inputs if provided
93+
input_vars = []
94+
# Workaround because sasdataframe does not like to be check if exist
95+
if str(input) != "None":
96+
from .pymas.python import ds2_variables
97+
vars=None
98+
if hasattr(input, 'columns'):
99+
# Assuming input is a DataFrame representing model inputs. Use to
100+
# get input variables
101+
vars = ds2_variables(input)
102+
elif isinstance(input, type):
103+
params = OrderedDict([(k, input)
104+
for k in target_func.__code__.co_varnames])
105+
vars = ds2_variables(params)
106+
elif isinstance(input, dict):
107+
vars = ds2_variables(input)
108+
if vars:
109+
input_vars = [var.as_model_metadata() for var in vars if not var.out]
93110

94111
#Find outputs from ds code
95112
output_vars=[]
@@ -123,7 +140,8 @@ def create_package_from_datastep(table, input=None):
123140
'fileMetadata.json': file_metadata,
124141
'dmcas_scorecode.sas': dscode,
125142
'ModelProperties.json': {"scoreCodeType":"dataStep"},
126-
'outputVar.json': output_vars
143+
'outputVar.json': output_vars,
144+
'inputVar.json': input_vars
127145
})
128146

129147
return zip_file

src/sasctl/utils/pymas/ds2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def _map_type(cls, mapping, t):
339339

340340
def as_model_metadata(self):
341341
viya_type = self._map_type(self.DS2_TYPE_TO_VIYA, self.type)
342-
role = 'Output' if self.out else 'Input'
342+
role = 'Output' if self.out else 'input'
343343

344344
return OrderedDict(
345345
[('name', self.name), ('role', role), ('type', viya_type)])

0 commit comments

Comments
 (0)
0