import importlib from array import array class PseudoDB: def __init__(self, datasource="default.data"): self.datasource = datasource self.data = self.load_data() def load_data(self): module_name = self.datasource.replace('.py', '') try: module = importlib.import_module(module_name) return module except ImportError: print(f"Data module '{module_name}' not found.") return None def get_collections(self): # Check if default has been successfully loaded if self.data is not None: attr_names = [] for attr_name in dir(self.data): if not attr_name.startswith('__') and attr_name != 'ar': collection = getattr(self.data, attr_name) attr_names.append((attr_name, type(collection))) # Sort the collections by their name before returning return sorted(attr_names, key=lambda x: x[0]) else: return [] def get_keys(self, attr_name): if self.data is not None: collection = getattr(self.data, attr_name) if isinstance(collection, dict): return list(collection.keys()) else: return {} def get_values(self, attr_name, key=None): if self.data is not None: collection = getattr(self.data, attr_name) if isinstance(collection, dict): return list(collection[key]) elif isinstance(collection, list): return collection elif isinstance(collection, array): return collection elif isinstance(collection, tuple): return collection else: # assume it's a string return str(collection) else: return None