Best Python code snippet using tempest_python
test_extension_commands.py
Source:test_extension_commands.py
...54 def test_add_list_show_remove_extension(self):55 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)56 actual = list_extensions()57 self.assertEqual(len(actual), 1)58 ext = show_extension(MY_EXT_NAME)59 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)60 remove_extension(MY_EXT_NAME)61 num_exts = len(list_extensions())62 self.assertEqual(num_exts, 0)63 def test_add_list_show_remove_system_extension(self):64 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, system=True)65 actual = list_extensions()66 self.assertEqual(len(actual), 1)67 ext = show_extension(MY_EXT_NAME)68 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)69 remove_extension(MY_EXT_NAME)70 num_exts = len(list_extensions())71 self.assertEqual(num_exts, 0)72 def test_add_list_show_remove_user_system_extensions(self):73 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)74 add_extension(cmd=self.cmd, source=MY_SECOND_EXT_SOURCE_DASHES, system=True)75 actual = list_extensions()76 self.assertEqual(len(actual), 2)77 ext = show_extension(MY_EXT_NAME)78 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)79 self.assertEqual(ext[OUT_KEY_PATH], build_extension_path(MY_EXT_NAME))80 second_ext = show_extension(MY_SECOND_EXT_NAME_DASHES)81 self.assertEqual(second_ext[OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)82 self.assertEqual(second_ext[OUT_KEY_PATH], build_extension_path(MY_SECOND_EXT_NAME_DASHES, system=True))83 remove_extension(MY_EXT_NAME)84 num_exts = len(list_extensions())85 self.assertEqual(num_exts, 1)86 remove_extension(MY_SECOND_EXT_NAME_DASHES)87 num_exts = len(list_extensions())88 self.assertEqual(num_exts, 0)89 def test_add_list_show_remove_extension_with_dashes(self):90 add_extension(cmd=self.cmd, source=MY_SECOND_EXT_SOURCE_DASHES)91 actual = list_extensions()92 self.assertEqual(len(actual), 1)93 ext = show_extension(MY_SECOND_EXT_NAME_DASHES)94 self.assertEqual(ext[OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)95 self.assertIn(OUT_KEY_NAME, ext[OUT_KEY_METADATA], "Unable to get full metadata")96 self.assertEqual(ext[OUT_KEY_METADATA][OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)97 remove_extension(MY_SECOND_EXT_NAME_DASHES)98 num_exts = len(list_extensions())99 self.assertEqual(num_exts, 0)100 def test_add_extension_twice(self):101 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)102 num_exts = len(list_extensions())103 self.assertEqual(num_exts, 1)104 with self.assertRaises(CLIError):105 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)106 def test_add_same_extension_user_system(self):107 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)108 num_exts = len(list_extensions())109 self.assertEqual(num_exts, 1)110 with self.assertRaises(CLIError):111 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, system=True)112 def test_add_extension_invalid(self):113 with self.assertRaises(ValueError):114 add_extension(cmd=self.cmd, source=MY_BAD_EXT_SOURCE)115 actual = list_extensions()116 self.assertEqual(len(actual), 0)117 def test_add_extension_invalid_whl_name(self):118 with self.assertRaises(CLIError):119 add_extension(cmd=self.cmd, source=os.path.join('invalid', 'ext', 'path', 'file.whl'))120 actual = list_extensions()121 self.assertEqual(len(actual), 0)122 def test_add_extension_valid_whl_name_filenotfound(self):123 with self.assertRaises(CLIError):124 add_extension(cmd=self.cmd, source=_get_test_data_file('mywheel-0.0.3+dev-py2.py3-none-any.whl'))125 actual = list_extensions()126 self.assertEqual(len(actual), 0)127 def test_add_extension_with_pip_proxy(self):128 extension_name = MY_EXT_NAME129 proxy_param = '--proxy'130 proxy_endpoint = "https://user:pass@proxy.microsoft.com"131 computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)132 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \133 mock.patch('azure.cli.core.extension.operations.shutil'), \134 mock.patch('azure.cli.core.extension.operations.check_output') as check_output:135 add_extension(cmd=self.cmd, extension_name=extension_name, pip_proxy=proxy_endpoint)136 args = check_output.call_args137 pip_cmd = args[0][0]138 proxy_index = pip_cmd.index(proxy_param)139 assert pip_cmd[proxy_index + 1] == proxy_endpoint140 def test_add_extension_verify_no_pip_proxy(self):141 extension_name = MY_EXT_NAME142 computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)143 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \144 mock.patch('azure.cli.core.extension.operations.shutil'), \145 mock.patch('azure.cli.core.extension.operations.check_output') as check_output:146 add_extension(cmd=self.cmd, extension_name=extension_name)147 args = check_output.call_args148 pip_cmd = args[0][0]149 if '--proxy' in pip_cmd:150 raise AssertionError("proxy parameter in check_output args although no proxy specified")151 def test_add_extension_with_specific_version(self):152 extension_name = MY_EXT_NAME153 extension1 = 'myfirstcliextension-0.0.3+dev-py2.py3-none-any.whl'154 extension2 = 'myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl'155 mocked_index_data = {156 extension_name: [157 mock_ext(extension1, version='0.0.3+dev', download_url=_get_test_data_file(extension1)),158 mock_ext(extension2, version='0.0.4+dev', download_url=_get_test_data_file(extension2))159 ]160 }161 with IndexPatch(mocked_index_data):162 add_extension(self.cmd, extension_name=extension_name, version='0.0.3+dev')163 ext = show_extension(extension_name)164 self.assertEqual(ext['name'], extension_name)165 self.assertEqual(ext['version'], '0.0.3+dev')166 def test_add_extension_with_non_existing_version(self):167 extension_name = MY_EXT_NAME168 extension1 = 'myfirstcliextension-0.0.3+dev-py2.py3-none-any.whl'169 extension2 = 'myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl'170 mocked_index_data = {171 extension_name: [172 mock_ext(extension1, version='0.0.3+dev', download_url=_get_test_data_file(extension1)),173 mock_ext(extension2, version='0.0.4+dev', download_url=_get_test_data_file(extension2))174 ]175 }176 non_existing_version = '0.0.5'177 with IndexPatch(mocked_index_data):178 with self.assertRaisesRegex(CLIError, non_existing_version):179 add_extension(self.cmd, extension_name=extension_name, version=non_existing_version)180 def test_add_extension_with_name_valid_checksum(self):181 extension_name = MY_EXT_NAME182 computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)183 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):184 add_extension(cmd=self.cmd, extension_name=extension_name)185 ext = show_extension(MY_EXT_NAME)186 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)187 def test_add_extension_with_name_invalid_checksum(self):188 extension_name = MY_EXT_NAME189 bad_sha256 = 'thishashisclearlywrong'190 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, bad_sha256)):191 with self.assertRaises(CLIError) as err:192 add_extension(cmd=self.cmd, extension_name=extension_name)193 self.assertTrue('The checksum of the extension does not match the expected value.' in str(err.exception))194 def test_add_extension_with_name_source_not_whl(self):195 extension_name = 'myextension'196 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=('{}.notwhl'.format(extension_name), None)):197 with self.assertRaises(ValueError) as err:198 add_extension(cmd=self.cmd, extension_name=extension_name)199 self.assertTrue('Unknown extension type. Only Python wheels are supported.' in str(err.exception))200 def test_add_extension_with_name_but_it_already_exists(self):201 # Add extension without name first202 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)203 ext = show_extension(MY_EXT_NAME)204 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)205 # Now add using name206 computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)207 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):208 with mock.patch('azure.cli.core.extension.operations.logger') as mock_logger:209 add_extension(cmd=self.cmd, extension_name=MY_EXT_NAME)210 call_args = mock_logger.warning.call_args211 self.assertEqual("Extension '%s' is already installed.", call_args[0][0])212 self.assertEqual(MY_EXT_NAME, call_args[0][1])213 self.assertEqual(mock_logger.warning.call_count, 1)214 def test_update_extension(self):215 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)216 ext = show_extension(MY_EXT_NAME)217 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')218 newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')219 computed_extension_sha256 = _compute_file_hash(newer_extension)220 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, computed_extension_sha256)):221 update_extension(self.cmd, MY_EXT_NAME)222 ext = show_extension(MY_EXT_NAME)223 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')224 def test_update_extension_with_pip_proxy(self):225 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)226 ext = show_extension(MY_EXT_NAME)227 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')228 newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')229 computed_extension_sha256 = _compute_file_hash(newer_extension)230 proxy_param = '--proxy'231 proxy_endpoint = "https://user:pass@proxy.microsoft.com"232 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \233 mock.patch('azure.cli.core.extension.operations.shutil'), \234 mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \235 mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \236 mock.patch('azure.cli.core.extension.operations.check_output') as check_output:237 update_extension(self.cmd, MY_EXT_NAME, pip_proxy=proxy_endpoint)238 args = check_output.call_args239 pip_cmd = args[0][0]240 proxy_index = pip_cmd.index(proxy_param)241 assert pip_cmd[proxy_index + 1] == proxy_endpoint242 def test_update_extension_verify_no_pip_proxy(self):243 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)244 ext = show_extension(MY_EXT_NAME)245 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')246 newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')247 computed_extension_sha256 = _compute_file_hash(newer_extension)248 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \249 mock.patch('azure.cli.core.extension.operations.shutil'), \250 mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \251 mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \252 mock.patch('azure.cli.core.extension.operations.check_output') as check_output:253 update_extension(self.cmd, MY_EXT_NAME)254 args = check_output.call_args255 pip_cmd = args[0][0]256 if '--proxy' in pip_cmd:257 raise AssertionError("proxy parameter in check_output args although no proxy specified")258 def test_update_extension_not_found(self):259 with self.assertRaises(CLIError) as err:260 update_extension(self.cmd, MY_EXT_NAME)261 self.assertEqual(str(err.exception), 'The extension {} is not installed.'.format(MY_EXT_NAME))262 def test_update_extension_no_updates(self):263 logger_msgs = []264 def mock_log_warning(_, msg):265 logger_msgs.append(msg)266 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)267 ext = show_extension(MY_EXT_NAME)268 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')269 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', side_effect=NoExtensionCandidatesError()), \270 mock.patch('logging.Logger.warning', mock_log_warning):271 update_extension(self.cmd, MY_EXT_NAME)272 self.assertTrue("No updates available for '{}'.".format(MY_EXT_NAME) in logger_msgs[0])273 def test_update_extension_exception_in_update_and_rolled_back(self):274 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)275 ext = show_extension(MY_EXT_NAME)276 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')277 newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')278 bad_sha256 = 'thishashisclearlywrong'279 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, bad_sha256)):280 with self.assertRaises(CLIError) as err:281 update_extension(self.cmd, MY_EXT_NAME)282 self.assertTrue('Failed to update. Rolled {} back to {}.'.format(ext['name'], ext[OUT_KEY_VERSION]) in str(err.exception))283 ext = show_extension(MY_EXT_NAME)284 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')285 def test_list_available_extensions_default(self):286 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', autospec=True) as c:287 list_available_extensions()288 c.assert_called_once_with(None)289 def test_list_available_extensions_operations_index_url(self):290 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', autospec=True) as c:291 index_url = 'http://contoso.com'292 list_available_extensions(index_url=index_url)293 c.assert_called_once_with(index_url)294 def test_list_available_extensions_show_details(self):295 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', autospec=True) as c:296 list_available_extensions(show_details=True)297 c.assert_called_once_with(None)298 def test_list_available_extensions_no_show_details(self):299 sample_index_extensions = {300 'test_sample_extension1': [{301 'metadata': {302 'name': 'test_sample_extension1',303 'summary': 'my summary',304 'version': '0.1.0'305 }}],306 'test_sample_extension2': [{307 'metadata': {308 'name': 'test_sample_extension2',309 'summary': 'my summary',310 'version': '0.1.0',311 'azext.isPreview': True,312 'azext.isExperimental': True313 }}]314 }315 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', return_value=sample_index_extensions):316 res = list_available_extensions()317 self.assertIsInstance(res, list)318 self.assertEqual(len(res), len(sample_index_extensions))319 self.assertEqual(res[0]['name'], 'test_sample_extension1')320 self.assertEqual(res[0]['summary'], 'my summary')321 self.assertEqual(res[0]['version'], '0.1.0')322 self.assertEqual(res[0]['preview'], False)323 self.assertEqual(res[0]['experimental'], False)324 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', return_value=sample_index_extensions):325 res = list_available_extensions()326 self.assertIsInstance(res, list)327 self.assertEqual(len(res), len(sample_index_extensions))328 self.assertEqual(res[1]['name'], 'test_sample_extension2')329 self.assertEqual(res[1]['summary'], 'my summary')330 self.assertEqual(res[1]['version'], '0.1.0')331 self.assertEqual(res[1]['preview'], True)332 self.assertEqual(res[1]['experimental'], True)333 def test_list_available_extensions_incompatible_cli_version(self):334 sample_index_extensions = {335 'test_sample_extension1': [{336 'metadata': {337 "azext.maxCliCoreVersion": "0.0.0",338 'name': 'test_sample_extension1',339 'summary': 'my summary',340 'version': '0.1.0'341 }}]342 }343 with mock.patch('azure.cli.core.extension.operations.get_index_extensions', return_value=sample_index_extensions):344 res = list_available_extensions()345 self.assertIsInstance(res, list)346 self.assertEqual(len(res), 0)347 def test_add_list_show_remove_extension_extra_index_url(self):348 """349 Tests extension addition while specifying --extra-index-url parameter.350 :return:351 """352 extra_index_urls = ['https://testpypi.python.org/simple', 'https://pypi.python.org/simple']353 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, pip_extra_index_urls=extra_index_urls)354 actual = list_extensions()355 self.assertEqual(len(actual), 1)356 ext = show_extension(MY_EXT_NAME)357 self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)358 remove_extension(MY_EXT_NAME)359 num_exts = len(list_extensions())360 self.assertEqual(num_exts, 0)361 def test_update_extension_extra_index_url(self):362 """363 Tests extension update while specifying --extra-index-url parameter.364 :return:365 """366 extra_index_urls = ['https://testpypi.python.org/simple', 'https://pypi.python.org/simple']367 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, pip_extra_index_urls=extra_index_urls)368 ext = show_extension(MY_EXT_NAME)369 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')370 newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')371 computed_extension_sha256 = _compute_file_hash(newer_extension)372 with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, computed_extension_sha256)):373 update_extension(self.cmd, MY_EXT_NAME, pip_extra_index_urls=extra_index_urls)374 ext = show_extension(MY_EXT_NAME)375 self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')376 def test_add_extension_to_path(self):377 add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)378 num_exts = len(list_extensions())379 self.assertEqual(num_exts, 1)380 ext = get_extension('myfirstcliextension')381 old_path = sys.path[:]382 try:383 add_extension_to_path(ext.name)384 self.assertSequenceEqual(old_path, sys.path[:-1])385 self.assertEqual(ext.path, sys.path[-1])386 finally:387 sys.path[:] = old_path388 def test_add_extension_azure_to_path(self):...
region_writer.py
Source:region_writer.py
1""" Class to write out region files compatable with ds9. 2$Header$3author: Joshua Lande4"""5from uw.like.roi_extended import ExtendedSource6from uw.like.SpatialModels import *7from math import degrees8def unparse_point(ps,label_sources):9 string="fk5; point(%.4f, %.4f) # point=cross" % \10 (ps.skydir.ra(),ps.skydir.dec())11 if label_sources: string += " text={%s}" % ps.name12 return string13def unparse_point_sources(point_sources,show_sources,label_sources):14 return [unparse_point(ps,label_sources) for ps in point_sources] if show_sources else []15def unparse_extension(spatial_model,extension_color=None,r68=False):16 """ By default, return edge for disk source,17 inner and outer edge for ring sources,18 and otherwise the 68% edge.19 20 If r68 flag is true, always return 68% edge21 of extended source. """22 sm = spatial_model23 extra = 'color=%s' % extension_color if extension_color is not None else '' 24 if isinstance(sm,PseudoSpatialModel) or type(sm) == SpatialMap:25 return []26 ra,dec=sm.center.ra(),sm.center.dec()27 if isinstance(sm,RadiallySymmetricModel):28 sigma=sm.sigma29 if isinstance(sm,Disk) and r68 is False:30 return ["fk5; circle(%.4f, %.4f, %.4f) # %s Circle encloses all of the disk." % \31 (ra,dec,sigma,extra)]32 elif isinstance(sm,Ring) and r68 is False:33 frac=sm.frac34 return ["fk5; circle(%.4f, %.4f, %.4f) # %s" % \35 (ra,dec,_,extra) for _ in [frac*sigma,sigma]]36 else: 37 return ["fk5; circle(%.4f, %.4f, %.4f) # %s Circle containing 68 percent of the source." % \38 (ra,dec,sm.r68(),extra)]39 elif isinstance(sm,EllipticalSpatialModel):40 sigma_x, sigma_y, theta = sm.sigma_x, sm.sigma_y, sm.theta41 if isinstance(sm,EllipticalDisk) and r68 is False:42 return ["fk5; ellipse(%.4f, %.4f, %.4f, %.4f, %.4f) # %s" % \43 (ra,dec,sigma_y,sigma_x,sm.theta,extra)]44 elif isinstance(sm,EllipticalRing) and r68 is False:45 frac = sm.frac46 return ["fk5; ellipse(%.4f, %.4f, %.4f, %.4f, %.4f) # %s" % \47 (ra,dec,_*sigma_y,_*sigma_x,sm.theta,extra) \48 for _ in [frac,1]]49 else:50 a,b,c=sm.ellipse_68()51 return ["fk5; ellipse(%.4f, %.4f, %.4f, %.4f, %.4f) # %s" % \52 (ra,dec,b,a,c,extra)]53 else:54 raise Exception("Unable to Parse Spatial Model %s" % type(sm))55def unparse_diffuse_sources(diffuse_sources,show_sources,label_sources,show_extension,extension_color):56 """ There is the same inconsistency in ellipse definition 57 between extended sources ellipses and ds9 ellipses as58 is discussed in the docstring for unparse_localization,59 resulting in the same switch from maj,min <-> min,maj. """60 lines = []61 for ds in diffuse_sources:62 if isinstance(ds,ExtendedSource):63 sm = ds.spatial_model64 if show_sources: 65 lines.append(unparse_point(ds,label_sources))66 if show_extension:67 lines += unparse_extension(sm,extension_color)68 return lines69def unparse_localization(roi):70 """ Note that maj and min are switched. This is caused by a discrepancy between71 pointlike's localization code and ds9's ellipse definition. It was 72 discussed in http://confluence.slac.stanford.edu/x/JSCJBQ73 The same link is: https://confluence.slac.stanford.edu/display/SCIGRPS/LAT+Catalog+ds9+regions74 """75 if roi.__dict__.has_key('qform'):76 ra,dec=roi.qform.par[0:2]77 a,b,ang=roi.qform.par[3:6]78 return ["# The next line is the localization error",79 "fk5; ellipse(%.4f, %.4f, %.4f, %.4f, %.4f)" % \80 (ra,dec,b,a,ang)]81 else:82 return []83def get_region(roi,color,show_sources=True, label_sources=True,show_localization=True,show_extension=True,extension_color=None):84 lines = [85 "# Region file format: DS9 version 4.0",86 "global color=%s" % color,87 ]88 lines += unparse_diffuse_sources(roi.dsm.diffuse_sources,show_sources,label_sources,show_extension,extension_color)89 lines += unparse_point_sources(roi.psm.point_sources,show_sources,label_sources)90 if show_localization:91 lines += unparse_localization(roi)92 if len(lines)==2: return None93 return '\n'.join(lines)94def writeRegion(roi,filename,color='green',show_sources=True, label_sources=True,show_localization=True, show_extension=True):95 """ Saves out an ROI to a ds9 style region file.96 97 The size of simple exended sources is saved to the region file98 as are elliptical localization errors if they exist. """99 file=open(filename,'w')100 file.write(get_region(roi,color,show_sources,label_sources,show_localization,show_extension))...
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!!