Spaces:
Running
on
Zero
Running
on
Zero
class Skill: | |
name = 'base skill' | |
description = 'This is the base skill.' | |
api_keys_required = [] | |
def __init__(self, api_keys): | |
self.api_keys = api_keys | |
missing_keys = self.check_required_keys(api_keys) | |
if missing_keys: | |
print(f"Missing API keys for {self.name}: {missing_keys}") | |
self.valid = False | |
else: | |
self.valid = True | |
for key in self.api_keys_required: | |
if isinstance(key, list): | |
for subkey in key: | |
if subkey in api_keys: | |
setattr(self, f"{subkey}_api_key", api_keys.get(subkey)) | |
elif key in api_keys: | |
setattr(self, f"{key}_api_key", api_keys.get(key)) | |
def check_required_keys(self, api_keys): | |
missing_keys = [] | |
for key in self.api_keys_required: | |
if isinstance(key, list): # If the key is actually a list of alternatives | |
if not any(k in api_keys for k in key): # If none of the alternatives are present | |
missing_keys.append(key) # Add the list of alternatives to the missing keys | |
elif key not in api_keys: # If the key is a single key and it's not present | |
missing_keys.append(key) # Add the key to the missing keys | |
return missing_keys | |
def execute(self, params, dependent_task_outputs, objective): | |
raise NotImplementedError('Execute method must be implemented in subclass.') |