def _parse_python_lib(self, library, args): lib_with_args = self._lib_arg_formatter(library, args) kws = {} try: lib = self.libdoc.build(lib_with_args) except DataError: raise ValueError('Library does not exist: {0}'.format(library)) if library in STDLIBS: import_name = 'robot.libraries.' + library else: import_name = library importer = Importer('test library') libcode = importer.import_class_or_module(import_name, return_source=False) kw_with_deco = self._get_keywords_with_robot_name(libcode) for keyword in lib.keywords: kw = {} kw[DBJsonSetting.keyword_name] = keyword.name kw[DBJsonSetting.tags] = list(keyword.tags._tags) kw[DBJsonSetting.keyword_arguments] = keyword.args kw[DBJsonSetting.documentation] = keyword.doc if keyword.name in kw_with_deco: function_name = kw_with_deco[keyword.name] else: function_name = keyword.name kw[DBJsonSetting.keyword_file] = self._get_library_kw_source( libcode, function_name) kws[strip_and_lower(keyword.name)] = kw return kws
def _parse_python_lib(self, library, args): lib_with_args = self._lib_arg_formatter(library, args) kws = {} try: lib = self.libdoc.build(lib_with_args) except DataError: raise ValueError( 'Library does not exist: {0}'.format(library)) if library in STDLIBS: import_name = 'robot.libraries.' + library else: import_name = library importer = Importer('test library') libcode = importer.import_class_or_module( import_name, return_source=False) kw_with_deco = self._get_keywords_with_robot_name(libcode) for keyword in lib.keywords: kw = {} kw[DBJsonSetting.keyword_name] = keyword.name kw[DBJsonSetting.tags] = list(keyword.tags._tags) kw[DBJsonSetting.keyword_arguments] = keyword.args kw[DBJsonSetting.documentation] = keyword.doc if keyword.name in kw_with_deco: function_name = kw_with_deco[keyword.name] else: function_name = keyword.name kw[DBJsonSetting.keyword_file] = self._get_library_kw_source( libcode, function_name) kws[strip_and_lower(keyword.name)] = kw return kws
def _get_reader_class_from_module(self, reader_name): importer = Importer('DataReader') self._debug(f'[ DataDriver ] Reader Module: {reader_name}') reader = importer.import_class_or_module(reader_name) if not inspect.isclass(reader): message = f"Importing custom DataReader class {reader_name} failed." raise ImportError(message) return reader
def _parse_listener(self, event_firing_webdriver): listener_module = self._string_to_modules(event_firing_webdriver) listener_count = len(listener_module) if listener_count > 1: message = f"Is is possible import only one listener but there was {listener_count} listeners." raise ValueError(message) listener_module = listener_module[0] importer = Importer("test library") listener = importer.import_class_or_module(listener_module.module) if not isclass(listener): message = f"Importing test Selenium lister class '{listener_module.module}' failed." raise DataError(message) return listener
def _parse_plugins(self, plugins): libraries = [] importer = Importer('test library') for parsed_plugin in self._string_to_modules(plugins): plugin = importer.import_class_or_module(parsed_plugin.module) if not isclass(plugin): message = "Importing test library: '%s' failed." % parsed_plugin.module raise DataError(message) plugin = plugin(self, *parsed_plugin.args, **parsed_plugin.kw_args) if not isinstance(plugin, LibraryComponent): message = 'Plugin does not inherit SeleniumLibrary.base.LibraryComponent' raise PluginError(message) self._store_plugin_keywords(plugin) libraries.append(plugin) return libraries
def _import_modules(self, plugins): importer = Importer('test library') return [ importer.import_class_or_module(plugin.plugin) for plugin in plugins ]