Best Python code snippet using avocado_python
chewy
Source:chewy
...104 , help='Module paths list'105 , nargs='+'106 )107 uninstall_parser.set_defaults(func=self.do_uninstall)108 def get_modules_dir(self):109 if not self.__modules_dir:110 if self.args.modules_dir:111 # TODO Check for symlinked directory112 if os.path.isdir(self.args.modules_dir):113 self.__modules_dir = self.args.modules_dir114 else:115 raise RuntimeError("Specified path is not a directory: `{}'".format(self.args.modules_dir))116 else:117 self.__modules_dir = chewy.modules_dir_lookup()118 log.einfo("Guessed CMake modules directory: `{}'".format(self.__modules_dir))119 return self.__modules_dir120 def uninstall(self, mod):121 '''122 Uninstall the chewy module and all related files123 Note uninstall doesn't clean empty directories possible after uninstall process124 '''125 for path in [ os.path.join(self.get_modules_dir(), f) for f in mod.addons + [mod.path] ]:126 abspath = chewy.sandbox_path(self.get_modules_dir(), path)127 # TODO: os.path.exists returns False for zero-sized files128 if os.path.exists(abspath):129 os.unlink(abspath)130 def rcv_module(self, obj, sf):131 # "Overloading" by the first argument132 local_module = None133 if isinstance(obj, chewy.Module):134 local_module = obj135 url = os.path.join(local_module.repobase, local_module.path)136 elif isinstance(obj, str):137 url = obj138 else:139 assert False140 # Doesn't catch any exception because any error means module receiving is fall141 ep = chewy.HttpEndpoint(url)142 cs = sf.get_session(ep)143 log.einfo('Receiving the module file {}'.format(url))144 data = cs.retrieve_remote_file(ep.geturl()) # Get a remote file into string145 mod = chewy.Module(data)146 def create_subtree(prefix, name):147 abs_path = chewy.sandbox_path(prefix, name)148 abs_dirname = os.path.dirname(abs_path)149 if not os.path.exists(abs_dirname):150 os.makedirs(151 abs_dirname152 , exist_ok=True153 )154 with tempfile.TemporaryDirectory() as tmpdirname:155 # Create necessary temporary directorie's sub tree156 create_subtree(tmpdirname, mod.path)157 # Write module to file158 with open(chewy.sandbox_path(tmpdirname, mod.path), 'w', encoding='utf-8') as f:159 f.write(data)160 # Receive all module-related files161 for relpath in mod.addons:162 url = os.path.join(mod.repobase, relpath)163 ep = chewy.HttpEndpoint(url)164 cs = sf.get_session(ep)165 log.einfo('Receiving the addon file {}'.format(url))166 data = cs.retrieve_remote_file(ep.geturl()) # Get a remote file into string167 # Create necessary temporary directorie's sub tree168 create_subtree(tmpdirname, relpath)169 # Going to write just received data to the temporary dir170 # TODO: Strip repobasename171 with open(chewy.sandbox_path(tmpdirname, relpath), 'w', encoding='utf-8') as f:172 f.write(data)173 # TODO: Version compare is required as well. Is it?174 if local_module:175 self.uninstall(local_module)176 # If success, install module to real modules path177 chewy.copytree(tmpdirname, self.get_modules_dir())178 def get_statuses(self):179 '''180 Return: Dictionary by unique repobase to module-related statuses' list181 '''182 # Get modules installed in a given dir183 status_map = chewy.collect_installed_modules(self.get_modules_dir())184 # Retrieve remote_modules_map for all used chewy repositories185 manifest_map = rcv_manifests(status_map.keys())186 # Iterate over installed modules (statuses actually) grouped by repository187 for repobase, modules in status_map.items():188 # Iterate over list of module statuses189 for status in modules:190 local_mod = status.module191 # Find local module in a remote repository192 remote_mod = chewy.find(manifest_map[repobase].modules, lambda x: x.path == local_mod.path)193 # If not found, mark current module as deleted194 if not remote_mod:195 status.set_remote_version(None)196 else:197 assert remote_mod.path == local_mod.path198 # Remember the remote version199 status.set_remote_version(remote_mod.version)200 return status_map201 def do_list(self):202 '''203 Execute `list' command204 If no repo given, the function try to find a modules base,205 scan it and collect used repo bases206 '''207 url_list = self.args.rep_url208 if not url_list:209 url_list = chewy.collect_installed_modules(self.get_modules_dir()).keys()210 # Make URLs unique211 urls = set(url_list)212 if not urls:213 raise RuntimeError('No chewy repository URLs was found and nothing provided in the command line')214 for repobase, manifest in rcv_manifests(urls).items():215 log.einfo("Modules from the `{}' repository".format(repobase))216 ordered_list = manifest.modules217 if self.args.s is True:218 ordered_list = sorted(manifest.modules, key=lambda mod: mod.path)219 if self.args.S is True:220 ordered_list = sorted(manifest.modules, key=lambda mod: mod.path, reverse=True)221 print(chewy.FancyGrid(222 [ [mod.path, str(mod.version), mod.description]223 for mod224 in ordered_list225 ]226 ))227 def do_install(self):228 '''Execute `install' command'''229 url_list = self.args.file_url230 if not url_list:231 raise RuntimeError('At least one url should be given')232 with chewy.session.Factory() as sf:233 for url in url_list:234 try:235 self.rcv_module(url, sf)236 # TODO pass 'can't create modules dir' exception through237 except RuntimeError as ex:238 log.eerror("Can't receive the file `{}': {}".format(url, ex))239 def do_status(self):240 '''Execute `status' command'''241 status_map = self.get_statuses().items()242 if not status_map:243 raise RuntimeError('No chewy repository URLs was found and nothing provided at the command line')244 for repobase, status_list in status_map:245 log.einfo('List of installed modules from the repository {}'.format(repobase))246 # TODO Colorise output (especially new versions)247 print(248 chewy.FancyGrid([249 [250 m.status_as_string()251 , m.module.path252 , str(m.module.version)253 , str(m.available_version())254 , m.module.description255 ]256 for m in status_list257 ])258 )259 def do_update(self):260 '''Execute `update' command'''261 # TODO: Use it262 # file_list = self.args.file_url263 with chewy.session.Factory() as sf:264 for repobase, status_list in self.get_statuses().items():265 for mod in [ st.module for st in status_list if st.needs_update() ]:266 try:267 self.rcv_module(mod, sf)268 # TODO pass 'can't create modules dir' exception through269 except RuntimeError as ex:270 log.eerror("Can't update the module `{}': {}".format(mod, ex))271 def do_uninstall(self):272 '''Execute `uninstall' command'''273 for f in self.args.file_url:274 try:275 abspath = os.path.abspath(f)276 if not abspath.startswith(self.get_modules_dir()):277 abspath = chewy.sandbox_path(self.get_modules_dir(), f)278 self.uninstall(chewy.open_module(abspath))279 except (RuntimeError, IOError) as ex:280 log.eerror("Can't uninstall `{}': {}".format(f, ex))281 continue282 def run(self):283 self.args = self.cmd_parser.parse_args()284 if self.args.cmd is not None:285 self.args.func()286 else:287 log.eerror('No command given')288if __name__ == "__main__":289 try:290 a = Application()291 a.run()...
modules.py
Source:modules.py
...81 return None82def locate_modules_dir():83 logger.debug('Locating JAGS module directory.')84 return locate_modules_dir_using_shared_objects()85def get_modules_dir():86 """Return modules directory."""87 global modules_dir88 if modules_dir is None:89 modules_dir = locate_modules_dir()90 if modules_dir is None:91 raise RuntimeError(92 'Could not locate JAGS module directory. Use pyjags.set_modules_dir(path) to configure it manually.')93 return modules_dir94def set_modules_dir(directory):95 """Set modules directory."""96 global modules_dir97 modules_dir = directory98def list_modules():99 """Return a list of loaded modules."""100 return Console.listModules()101def load_module(name, modules_dir=None):102 """Load a module.103 Parameters104 ----------105 name : str106 A name of module to load.107 modules_dir : str, optional108 Directory where modules are located.109 """110 if name not in loaded_modules:111 dir = modules_dir or get_modules_dir()112 ext = '.so' if os.name == 'posix' else '.dll'113 path = os.path.join(dir, name + ext)114 logger.info('Loading module %s from %s', name, path)115 module = ctypes.cdll.LoadLibrary(path)116 loaded_modules[name] = module117 Console.loadModule(name)118loaded_modules = {}119def unload_module(name):120 """Unload a module."""...
install.py
Source:install.py
...9 if is_installed():10 return11 12 powercli_zip = ZipFile(consts.POWERCLI_ZIP_PATH)13 modules_dir = Powershell.get_modules_dir(should_create=True)14 powercli_zip.extractall(path=modules_dir)15def uninstall_powercli():16 """ Uninstalls all PowerCLI modules from the current user. """17 powercli_modules_names = __get_powercli_modules_names(ZipFile(consts.POWERCLI_ZIP_PATH))18 modules_dir = Powershell.get_modules_dir()19 20 try: 21 for module in os.listdir(modules_dir):22 if module in powercli_modules_names:23 shutil.rmtree(os.path.join(modules_dir, module))24 except PermissionError as err:25 print("Access to the file {} is denied.".format(err.filename))26 print("Make sure you have closed all Powershell windows that use PowerCLI, and try again.")27def is_installed():28 """ Checks if all PowerCLI modules are installed correctly. """29 modules_dir = Powershell.get_modules_dir()30 if not os.path.exists(modules_dir):31 return False32 modules_in_powershell_dir = os.listdir(modules_dir)33 for module in __get_powercli_modules_names(ZipFile(consts.POWERCLI_ZIP_PATH)):34 if module not in modules_in_powershell_dir:35 return False36 37 return True38def __get_powercli_modules_names(powercli_zip):39 """ Extracts from the PowerCLI zip the PowerCLI modules names. """40 if not isinstance(powercli_zip, ZipFile):41 raise TypeError("The argument 'powercli_zip' isn't of type 'ZipFile'.")42 modules_names = []43 for single_file in powercli_zip.namelist():...
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!!