Best Python code snippet using localstack_python
factory.py
Source:factory.py
...91 module object is parsed again.92 """93 self.__cache = None94 self.__inspect_cache = None95 def _inspect_object(self, obj):96 """97 This method verifies if given object is a valid plugin.98 @return: True, if valid99 @rtype: bool100 """101 if self.__inspect_cache is None:102 self.__inspect_cache = {}103 # use memory position104 obj_memory_pos = id(obj)105 # To avoid infinite recursion and improve106 # objects inspection, check if obj has been already107 # analyzed108 inspected_rc = self.__inspect_cache.get(obj_memory_pos)109 if inspected_rc is not None:110 # avoid infinite recursion111 return inspected_rc112 base_api = self.__base_class.BASE_PLUGIN_API_VERSION113 if not inspect.isclass(obj):114 self.__inspect_cache[obj_memory_pos] = False115 return False116 if not issubclass(obj, self.__base_class):117 self.__inspect_cache[obj_memory_pos] = False118 return False119 if hasattr(obj, '__subclasses__'):120 # new style class121 if obj.__subclasses__(): # only lower classes taken122 self.__inspect_cache[obj_memory_pos] = False123 return False124 else:125 sys.stderr.write("!!! Molecule Plugin warning: " \126 "%s is not a new style class !!!\n" % (obj,))127 if obj is self.__base_class:128 # in this case, obj is our base class,129 # so we are very sure that obj is not valid130 self.__inspect_cache[obj_memory_pos] = False131 return False132 if not hasattr(obj, "PLUGIN_API_VERSION"):133 sys.stderr.write("!!! Molecule Plugin warning: " \134 "no PLUGIN_API_VERSION in %s !!!\n" % (obj,))135 self.__inspect_cache[obj_memory_pos] = False136 return False137 if obj.PLUGIN_API_VERSION != base_api:138 sys.stderr.write("!!! Molecule Plugin warning: " \139 "PLUGIN_API_VERSION mismatch in %s !!!\n" % (obj,))140 self.__inspect_cache[obj_memory_pos] = False141 return False142 if hasattr(obj, 'PLUGIN_DISABLED'):143 if obj.PLUGIN_DISABLED:144 # this plugin has been disabled145 self.__inspect_cache[obj_memory_pos] = False146 return False147 self.__inspect_cache[obj_memory_pos] = True148 return True149 def _scan_dir(self):150 """151 Scan modules in given directory looking for a valid plugin class.152 Directory is os.path.dirname(self.__modfile).153 @return: module dictionary composed by module name as key and plugin154 class as value155 @rtype: dict156 """157 available = {}158 pkg_modname = self.__plugin_package_module.__name__159 mod_dir = os.path.dirname(self.__modfile)160 modules = []161 for modname in os.listdir(mod_dir):162 if modname.startswith("__"):163 continue # python stuff164 if not (modname.endswith(PluginFactory._PYTHON_EXTENSION) \165 or "." not in modname):166 continue # not something we want to load167 if modname.endswith(PluginFactory._PYTHON_EXTENSION):168 modname = modname[:-len(PluginFactory._PYTHON_EXTENSION)]169 if not modname.endswith(PluginFactory._PLUGIN_SUFFIX):170 continue171 # remove suffix172 modname_clean = modname[:-len(PluginFactory._PLUGIN_SUFFIX)]173 modpath = "%s.%s" % (pkg_modname, modname,)174 modules.append(modpath)175 plugin_modules = self._PLUGIN_MODULES176 if plugin_modules:177 modules.extend(plugin_modules.split(":"))178 for modpath in modules:179 try:180 __import__(modpath)181 except ImportError as err:182 sys.stderr.write("!!! Molecule Plugin warning, cannot " \183 "load module: %s | %s !!!\n" % (modpath, err,))184 continue185 for obj in list(sys.modules[modpath].__dict__.values()):186 valid = self._inspect_object(obj)187 if not valid:188 continue189 available[modpath] = obj190 return available191 def _scan_egg_group(self):192 """193 Scan classes in given Python Egg group name looking for a valid plugin.194 @return: module dictionary composed by module name as key and plugin195 class as value196 @rtype: dict197 """198 # needs setuptools199 import pkg_resources200 available = {}201 for entry in pkg_resources.iter_entry_points(self.__egg_entry_group):202 obj = entry.load()203 valid = self._inspect_object(obj)204 if not valid:205 continue206 available[entry.name] = obj207 return available208 def get_available_plugins(self):209 """210 Return currently available plugin classes.211 Note: Molecule plugins can either be Python packages or modules and212 their name MUST end with PluginFactory._PLUGIN_SUFFIX ("_plugin").213 @return: dictionary composed by Molecule plugin id as key and Molecule214 Python module as value215 @rtype: dict216 """217 if self.__cache is not None:...
bpy_data_inspect_base.py
Source:bpy_data_inspect_base.py
...58 def _inspect_all_objects(self):59 objs = self.bpy_data.objects60 missed = []61 for idx, obj in enumerate(objs):62 if not self._inspect_object(obj):63 missed.append(obj.name)64 print("missed objs", missed)65 def _inspect_object(self, obj):66 return False 67 def _inspect_all_meshes(self):68 meshes = self.bpy_data.meshes69 for idx, mesh in enumerate(meshes):70 self._inspect_mesh(mesh)71 def _inspect_mesh(self, mesh):72 pass73 def _inspect_all_materials(self):74 materials = self.bpy_data.materials75 for idx, mat in enumerate(materials):76 if mat.name not in self.name2materials:77 self.name2materials[mat.name] = mat78 self._inspect_material(mat)79 def _inspect_material(self, mat):...
inspector.py
Source:inspector.py
...66 classes = set()67 for scope, frame in zip(stack, frames):68 variables = frame.f_locals69 scope['members'] = [70 {'key': key, 'value': self._inspect_object(heap, variables[key], classes, module)}71 for key, value in variables.items() if not key.startswith('_')72 ]73 if event == 'return' and len(stack) > 1:74 stack[-1]['members'].append({'key': '#return#', 'value': self._inspect_object(heap, args, classes, module)})75 elif event == 'exception':76 stack[-1]['members'].append({'key': '#exception#', 'value': repr(args[1])})77 return heap78 def _inspect_object(self, heap: dict, obj, classes: set, module: str):79 """80 Recursively inspect objects in the heap.81 String and Number like objects are transformed in str or int.82 Complex objects are transformed in dictionaries that contain information of their type and members and added to83 the snapshot, then their references are returned as a list.84 - heap: `dict`: heap dict to be filled with obj information85 - obj: `*any`: object to be processed86 - classes: `set<str>`: set of user defined classes, which is used to known which objects shall be analyzed87 - module: main module name, used to only save classes that where declared in it88 - return `int | float | str | [str]`: the transformed value89 """90 if isinstance(obj, Inspector.STRING_LIKE_TYPES):91 return str(obj)92 elif isinstance(obj, Inspector.NUMBER_LIKE_TYPES):93 return obj if abs(obj) < 2 ** 53 else str(obj)94 elif isinstance(obj, type):95 if obj.__module__ == module:96 classes.add(obj)97 return str(obj)98 id_ = str(id(obj))99 if id_ in self.ordered_ids:100 ordered_id = self.ordered_ids[id_]101 elif id_ in self.previous_ordered_ids:102 ordered_id = self.ordered_ids[id_] = self.previous_ordered_ids[id_]103 else:104 ordered_id = self.ordered_ids[id_] = self.ordered_id_count105 self.ordered_id_count += 1106 if ordered_id in heap:107 return [ordered_id]108 type_ = type(obj).__name__109 category = 'other'110 members = None111 if isinstance(obj, (tuple, list, set)):112 category = 'list' if not isinstance(obj, set) else 'set'113 members = [*enumerate(obj)]114 elif isinstance(obj, dict):115 category = 'map'116 members = [*obj.items()]117 elif isinstance(obj, (*classes,)):118 category = 'map'119 members = [(key, value) for key, value in vars(obj).items() if not key.startswith('_')]120 if members is not None: # known object type121 # add object id to the heap before further inspections to avoid stack overflows122 obj = heap[ordered_id] = {}123 obj['id'] = ordered_id124 obj['category'] = category125 obj['type'] = type_126 obj['members'] = [127 {128 'key': self._inspect_object(heap, key, classes, module),129 'value': self._inspect_object(heap, value, classes, module)130 }131 for key, value in members132 ]133 return [ordered_id]134 else: # unknown object type135 # instead of inspecting unknown objects, inspect their type only...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!