Coverage for tests/test_translator.py: 17%

92 statements  

« prev     ^ index     » next       coverage.py v7.2.6, created at 2023-05-26 03:14 -0700

1# This file is part of obs_lsst. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (http://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the GNU General Public License 

20# along with this program. If not, see <http://www.gnu.org/licenses/>. 

21 

22import os.path 

23import unittest 

24import warnings 

25import astropy.units as u 

26import astropy.units.cds as cds 

27from astropy.io.fits.verify import VerifyWarning 

28 

29import lsst.obs.lsst.translators # noqa: F401 -- register the translators 

30from astro_metadata_translator.tests import MetadataAssertHelper 

31 

32TESTDIR = os.path.abspath(os.path.dirname(__file__)) 

33 

34 

35class LsstMetadataTranslatorTestCase(unittest.TestCase, MetadataAssertHelper): 

36 """Each test reads in raw headers from YAML files, constructs an 

37 `ObservationInfo`, and compares the properties with the expected values 

38 defined in the corresponding `dict`.""" 

39 

40 datadir = os.path.join(TESTDIR, "headers") 

41 

42 def test_lsstCam_translator(self): 

43 test_data = (("lsstCam-MC_C_20190319_000001_R10_S02.yaml", 

44 dict(telescope="Simonyi Survey Telescope", 

45 instrument="LSSTCam", 

46 boresight_rotation_coord="unknown", 

47 dark_time=0.0*u.s, 

48 detector_exposure_id=0x269200011d, 

49 detector_group="R10", 

50 detector_name="S02", 

51 detector_num=29, 

52 detector_serial="ITL-3800C-041", 

53 exposure_id=3019031900001, 

54 exposure_group="3019031900001", 

55 exposure_time=0.0*u.s, 

56 focus_z=0.0*u.mm, 

57 group_counter_end=1, 

58 group_counter_start=1, 

59 has_simulated_content=False, 

60 object="UNKNOWN", 

61 observation_counter=1, 

62 observation_id="MC_C_20190319_000001", 

63 observation_type="bias", 

64 observation_reason="bias", 

65 observing_day=20190319, 

66 physical_filter="unknown", 

67 pressure=None, 

68 relative_humidity=None, 

69 science_program="unknown", 

70 temperature=None, 

71 visit_id=3019031900001)), 

72 ("lsstCam-MC_C_20190319_000001_R22_S21.yaml", 

73 dict(telescope="Simonyi Survey Telescope", 

74 instrument="LSSTCam", 

75 boresight_rotation_coord="unknown", 

76 dark_time=0.0*u.s, 

77 detector_exposure_id=0x2692000161, 

78 detector_group="R22", 

79 detector_name="S21", 

80 detector_num=97, 

81 detector_serial="ITL-3800C-139", 

82 exposure_id=3019031900001, 

83 exposure_group="3019031900001", 

84 exposure_time=0.0*u.s, 

85 focus_z=0.0*u.mm, 

86 group_counter_end=1, 

87 group_counter_start=1, 

88 has_simulated_content=False, 

89 object="UNKNOWN", 

90 observation_counter=1, 

91 observation_id="MC_C_20190319_000001", 

92 observation_type="bias", 

93 observation_reason="bias", 

94 observing_day=20190319, 

95 physical_filter="unknown", 

96 pressure=None, 

97 relative_humidity=None, 

98 science_program="unknown", 

99 temperature=None, 

100 visit_id=3019031900001)), 

101 ("lsstCam-MC_C_20190322_000002_R10_S22.yaml", 

102 dict(telescope="Simonyi Survey Telescope", 

103 instrument="LSSTCam", 

104 boresight_rotation_coord="unknown", 

105 dark_time=1.0*u.s, 

106 detector_exposure_id=0x2693800223, 

107 detector_group="R10", 

108 detector_name="S22", 

109 detector_num=35, 

110 detector_serial="ITL-3800C-103", 

111 exposure_id=3019032200002, 

112 exposure_group="3019032200002", 

113 exposure_time=1.0*u.s, 

114 focus_z=0.0*u.mm, 

115 group_counter_end=2, 

116 group_counter_start=2, 

117 has_simulated_content=False, 

118 object="UNKNOWN", 

119 observation_counter=2, 

120 observation_id="MC_C_20190322_000002", 

121 observation_type="flat", 

122 observation_reason="flat", 

123 observing_day=20190322, 

124 physical_filter="SDSSi~ND_OD0.5", 

125 pressure=None, 

126 relative_humidity=None, 

127 science_program="6489D", 

128 temperature=None, 

129 visit_id=3019032200002)), 

130 ("lsstCam-MC_C_20190406_000643_R10_S00.yaml", 

131 dict(telescope="Simonyi Survey Telescope", 

132 instrument="LSSTCam", 

133 boresight_rotation_coord="unknown", 

134 dark_time=1007.422*u.s, 

135 detector_exposure_id=0x269b02831b, 

136 detector_group="R10", 

137 detector_name="S00", 

138 detector_num=27, 

139 detector_serial="ITL-3800C-145", 

140 exposure_id=3019040600643, 

141 exposure_group="3019040600643", 

142 exposure_time=999.99*u.s, 

143 focus_z=0.0*u.mm, 

144 group_counter_end=643, 

145 group_counter_start=643, 

146 has_simulated_content=False, 

147 object="UNKNOWN", 

148 observation_counter=643, 

149 observation_id="MC_C_20190406_000643", 

150 observation_type="flat", 

151 observation_reason="lambda", 

152 observing_day=20190406, 

153 physical_filter="950nm", 

154 pressure=None, 

155 relative_humidity=None, 

156 science_program="6549D", 

157 temperature=None, 

158 visit_id=3019040600643)), 

159 ) 

160 for filename, expected in test_data: 

161 with self.subTest(f"Testing {filename}"): 

162 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

163 

164 def test_phoSimLsstCam_translator(self): 

165 test_data = (("lsstCam-MC_H_20100217_000032_R22_S00.yaml", 

166 dict(telescope="Simonyi Survey Telescope", 

167 instrument="LSSTCam", 

168 boresight_rotation_coord="sky", 

169 dark_time=15.0*u.s, 

170 detector_exposure_id=0x401780205a, 

171 detector_group="R22", 

172 detector_name="S00", 

173 detector_num=90, 

174 detector_serial="E2V-CCD250-369", 

175 detector_unique_name="R22_S00", 

176 exposure_group="4010021700032", 

177 exposure_id=4010021700032, 

178 exposure_time=15.0*u.s, 

179 focus_z=0.0*u.mm, 

180 group_counter_end=32, 

181 group_counter_start=32, 

182 has_simulated_content=True, 

183 object="UNKNOWN", 

184 observation_counter=32, 

185 observation_id="MC_H_20100217_000032", 

186 observation_reason="phosim", 

187 observation_type="science", 

188 observing_day=20100217, 

189 physical_filter="g", 

190 pressure=None, 

191 relative_humidity=None, 

192 science_program="9006001", 

193 temperature=None, 

194 visit_id=4010021700032)), 

195 ) 

196 for filename, expected in test_data: 

197 with self.subTest(f"Testing {filename}"): 

198 self.assertObservationInfoFromYaml(filename, dir=self.datadir, 

199 check_wcs=False, **expected) 

200 

201 def test_comCam_translator(self): 

202 test_data = (("comCam-CC_C_20190530_000001_R22_S00.yaml", 

203 dict(telescope="Simonyi Survey Telescope", 

204 instrument="LSSTComCam", 

205 boresight_rotation_coord="unknown", 

206 dark_time=0.398*u.s, 

207 detector_exposure_id=0x26b6000100, 

208 detector_group="R22", 

209 detector_name="S00", 

210 detector_num=0, 

211 detector_serial="ITL-3800C-229", 

212 exposure_id=3019053000001, 

213 exposure_group="3019053000001", 

214 exposure_time=0.0*u.s, 

215 focus_z=0.0*u.mm, 

216 group_counter_end=1, 

217 group_counter_start=1, 

218 has_simulated_content=False, 

219 object="UNKNOWN", 

220 observation_counter=1, 

221 observation_id="CC_C_20190530_000001", 

222 observation_type="bias", 

223 observation_reason="bias", 

224 observing_day=20190530, 

225 physical_filter="unknown", 

226 pressure=None, 

227 relative_humidity=None, 

228 science_program="unknown", 

229 temperature=None, 

230 visit_id=3019053000001)), 

231 ("comCam-CC_C_20190526_000223_R22_S01.yaml", 

232 dict(telescope="Simonyi Survey Telescope", 

233 instrument="LSSTComCam", 

234 boresight_rotation_coord="unknown", 

235 dark_time=0.034*u.s, 

236 detector_exposure_id=0x26b400df01, 

237 detector_group="R22", 

238 detector_name="S01", 

239 detector_num=1, 

240 detector_serial="ITL-3800C-251", 

241 exposure_id=3019052600223, 

242 exposure_group="3019052600223", 

243 exposure_time=0.0*u.s, 

244 focus_z=0.0*u.mm, 

245 group_counter_end=223, 

246 group_counter_start=223, 

247 has_simulated_content=False, 

248 object="UNKNOWN", 

249 observation_counter=223, 

250 observation_id="CC_C_20190526_000223", 

251 observation_type="bias", 

252 observation_reason="dark", 

253 observing_day=20190526, 

254 physical_filter="unknown", 

255 pressure=None, 

256 relative_humidity=None, 

257 science_program="unknown", 

258 temperature=None, 

259 visit_id=3019052600223)), 

260 ) 

261 for filename, expected in test_data: 

262 with self.subTest(f"Testing {filename}"): 

263 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

264 

265 def test_phoSimComCam_translator(self): 

266 test_data = (("comCam-CC_H_20100217_006001_R22_S00.yaml", 

267 dict(telescope="Simonyi Survey Telescope", 

268 instrument="LSSTComCam", 

269 boresight_rotation_coord="sky", 

270 dark_time=1.0*u.s, 

271 detector_exposure_id=0x4017977100, 

272 detector_group="R22", 

273 detector_name="S00", 

274 detector_num=0, 

275 detector_serial="ITL-3800C-229", 

276 exposure_id=4010021706001, 

277 exposure_group="4010021706001", 

278 exposure_time=1.0*u.s, 

279 focus_z=0.0*u.mm, 

280 group_counter_end=6001, 

281 group_counter_start=6001, 

282 has_simulated_content=True, 

283 object="UNKNOWN", 

284 observation_counter=6001, 

285 observation_id="CC_H_20100217_006001", 

286 observation_type="science", 

287 observation_reason="test", 

288 observing_day=20100217, 

289 physical_filter="g_01", 

290 pressure=None, 

291 relative_humidity=None, 

292 science_program="9006001", 

293 temperature=None, 

294 visit_id=4010021706001)), 

295 ) 

296 for filename, expected in test_data: 

297 with self.subTest(f"Testing {filename}"): 

298 self.assertObservationInfoFromYaml(filename, dir=self.datadir, 

299 check_wcs=False, **expected) 

300 

301 def test_phosim_translator(self): 

302 test_data = (("phosim-lsst_a_204595_f3_R11_S02_E000.yaml", 

303 dict(telescope="Simonyi Survey Telescope", 

304 instrument="LSSTCam-PhoSim", 

305 boresight_rotation_coord="sky", 

306 dark_time=30.0*u.s, 

307 detector_exposure_id=204595038, 

308 detector_group="R11", 

309 detector_name="S02", 

310 detector_num=38, 

311 detector_serial="R11_S02", 

312 exposure_id=204595, 

313 exposure_group="204595", 

314 exposure_time=30.0*u.s, 

315 focus_z=0.0*u.mm, 

316 group_counter_end=204595, 

317 group_counter_start=204595, 

318 has_simulated_content=True, 

319 object="UNKNOWN", 

320 observation_counter=0, 

321 observation_id="204595", 

322 observation_type="science", 

323 observation_reason="phosim", 

324 observing_day=20221004, 

325 physical_filter="i", 

326 pressure=520.0*cds.mmHg, 

327 relative_humidity=40.0, 

328 science_program="204595", 

329 temperature=20.0*u.deg_C, 

330 visit_id=204595, 

331 wcs_params=dict(max_sep=3000.))), # 2022 

332 ) 

333 for filename, expected in test_data: 

334 with self.subTest(f"Testing {filename}"): 

335 with warnings.catch_warnings(): 

336 # Avoid warnings from too-long FITS header keys. 

337 warnings.simplefilter("ignore", VerifyWarning) 

338 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

339 

340 def test_latiss_translator(self): 

341 test_data = (("latiss-2018-09-20-05700065-det000.yaml", 

342 dict(telescope="Rubin Auxiliary Telescope", 

343 instrument="LATISS", 

344 boresight_rotation_coord="unknown", 

345 dark_time=27.0*u.s, 

346 detector_exposure_id=0x2638004100, 

347 detector_group="RXX", 

348 detector_name="S00", 

349 detector_num=0, 

350 detector_serial="ITL-3800C-098", 

351 exposure_id=3018092000065, 

352 exposure_group="3018092000065", 

353 exposure_time=27.0*u.s, 

354 focus_z=0.0*u.mm, 

355 group_counter_end=65, 

356 group_counter_start=65, 

357 has_simulated_content=False, 

358 object="UNKNOWN", 

359 observation_counter=65, 

360 observation_id="AT_C_20180920_000065", 

361 observation_type="unknown", 

362 observation_reason="unknown", 

363 observing_day=20180920, 

364 physical_filter="unknown~unknown", 

365 pressure=None, 

366 relative_humidity=None, 

367 science_program="unknown", 

368 temperature=None, 

369 visit_id=3018092000065, 

370 )), 

371 ("latiss-AT_O_20190306_000014.yaml", 

372 dict(telescope="Rubin Auxiliary Telescope", 

373 instrument="LATISS", 

374 boresight_rotation_coord="unknown", 

375 dark_time=1.06*u.s, 

376 detector_exposure_id=0x68b800e00, 

377 detector_group="RXX", 

378 detector_name="S00", 

379 detector_num=0, 

380 detector_serial="ITL-3800C-098", 

381 exposure_id=2019030600014, 

382 exposure_group="2019030600014", 

383 exposure_time=1.06*u.s, 

384 focus_z=0.0*u.mm, 

385 group_counter_end=14, 

386 group_counter_start=14, 

387 has_simulated_content=False, 

388 object="UNKNOWN", 

389 observation_counter=14, 

390 observation_id="AT_O_20190306_000014", 

391 observation_type="unknown", 

392 observation_reason="unknown", 

393 observing_day=20190306, 

394 physical_filter="unknown~unknown", 

395 pressure=None, 

396 relative_humidity=None, 

397 science_program="unknown", 

398 temperature=None, 

399 visit_id=2019030600014, 

400 )), 

401 ("latiss-AT_O_20190329_000022-ats-wfs_ccd.yaml", 

402 dict(telescope="Rubin Auxiliary Telescope", 

403 instrument="LATISS", 

404 boresight_rotation_coord="unknown", 

405 dark_time=0.0*u.s, 

406 detector_exposure_id=0x697001600, 

407 detector_group="RXX", 

408 detector_name="S00", 

409 detector_num=0, 

410 detector_serial="ITL-3800C-098", 

411 exposure_id=2019032900022, 

412 exposure_group="2019032900022", 

413 exposure_time=0.0*u.s, 

414 focus_z=0.0*u.mm, 

415 group_counter_end=22, 

416 group_counter_start=22, 

417 has_simulated_content=False, 

418 object="UNKNOWN", 

419 observation_counter=22, 

420 observation_id="AT_O_20190329_000022", 

421 observation_type="bias", 

422 observation_reason="unknown", 

423 observing_day=20190329, 

424 physical_filter="unknown~unknown", 

425 pressure=None, 

426 relative_humidity=None, 

427 science_program="unknown", 

428 temperature=None, 

429 visit_id=2019032900022, 

430 )), 

431 ("latiss-future.yaml", 

432 dict(telescope="Rubin Auxiliary Telescope", 

433 instrument="LATISS", 

434 boresight_rotation_coord="unknown", 

435 dark_time=0.0*u.s, 

436 detector_exposure_id=0x74e001600, 

437 detector_group="RXX", 

438 detector_name="S00", 

439 detector_num=0, 

440 detector_serial="ITL-3800C-068", 

441 exposure_id=2020032900022, 

442 exposure_group="2020-03-29T16:55:00.012#24", 

443 exposure_time=0.0*u.s, 

444 focus_z=0.0*u.mm, 

445 group_counter_end=22, 

446 group_counter_start=22, 

447 has_simulated_content=False, 

448 object="UNKNOWN", 

449 observation_counter=22, 

450 observation_id="AT_X_20200329_000022", 

451 observation_type="bias", 

452 observation_reason="unknown", 

453 observing_day=20200329, 

454 physical_filter="unknown~unknown", 

455 pressure=None, 

456 relative_humidity=None, 

457 science_program="unknown", 

458 temperature=None, 

459 visit_id=1654305000120024, 

460 )), 

461 ("latiss-AT_O_20190915_000037.yaml", 

462 dict(telescope="Rubin Auxiliary Telescope", 

463 instrument="LATISS", 

464 boresight_rotation_coord="unknown", 

465 dark_time=0.0*u.s, 

466 detector_exposure_id=0x6ec002500, 

467 detector_group="RXX", 

468 detector_name="S00", 

469 detector_num=0, 

470 detector_serial="ITL-3800C-068", 

471 exposure_id=2019091500037, 

472 exposure_group="bias_0027_0100", 

473 exposure_time=0.0*u.s, 

474 focus_z=0.0*u.mm, 

475 group_counter_end=37, 

476 group_counter_start=37, 

477 has_simulated_content=False, 

478 object="UNKNOWN", 

479 observation_counter=37, 

480 observation_id="AT_O_20190915_000037", 

481 observation_type="bias", 

482 observation_reason="unknown", 

483 observing_day=20190915, 

484 physical_filter="unknown~unknown", 

485 pressure=None, 

486 relative_humidity=None, 

487 science_program="unknown", 

488 temperature=None, 

489 visit_id=3575576933793566714, 

490 )), 

491 ("latiss-AT_O_20191031_000004.yaml", 

492 dict(telescope="Rubin Auxiliary Telescope", 

493 instrument="LATISS", 

494 boresight_rotation_coord="unknown", 

495 dark_time=3.0*u.s, 

496 detector_exposure_id=0x703000400, 

497 detector_group="RXX", 

498 detector_name="S00", 

499 detector_num=0, 

500 detector_serial="ITL-3800C-068", 

501 exposure_id=2019103100004, 

502 exposure_group="TEST01", 

503 exposure_time=3.0*u.s, 

504 focus_z=0.0*u.mm, 

505 group_counter_end=4, 

506 group_counter_start=4, 

507 has_simulated_content=False, 

508 object="UNKNOWN", 

509 observation_counter=4, 

510 observation_id="AT_O_20191031_000004", 

511 observation_type="engtest", 

512 observation_reason="unknown", 

513 observing_day=20191031, 

514 physical_filter="unknown~unknown", 

515 pressure=None, 

516 relative_humidity=None, 

517 science_program="unknown", 

518 temperature=None, 

519 visit_id=1123819875881954006, 

520 )), 

521 ("latiss-AT_O_20191104_000003.yaml", 

522 dict(telescope="Rubin Auxiliary Telescope", 

523 instrument="LATISS", 

524 boresight_rotation_coord="unknown", 

525 dark_time=3.0*u.s, 

526 detector_exposure_id=0x705000300, 

527 detector_group="RXX", 

528 detector_name="S00", 

529 detector_num=0, 

530 detector_serial="ITL-3800C-068", 

531 exposure_id=2019110400003, 

532 exposure_group="TEST01", 

533 exposure_time=3.0*u.s, 

534 focus_z=0.0*u.mm, 

535 group_counter_end=3, 

536 group_counter_start=3, 

537 has_simulated_content=False, 

538 object="UNKNOWN", 

539 observation_counter=3, 

540 observation_id="AT_O_20191104_000003", 

541 observation_type="engtest", 

542 observation_reason="unknown", 

543 observing_day=20191104, 

544 physical_filter="unknown~unknown", 

545 pressure=None, 

546 relative_humidity=None, 

547 science_program="unknown", 

548 temperature=None, 

549 visit_id=1123819875881954006, 

550 )), 

551 ("latiss-AT_O_20191113_000061.yaml", 

552 dict(telescope="Rubin Auxiliary Telescope", 

553 instrument="LATISS", 

554 boresight_rotation_coord="unknown", 

555 dark_time=0.5*u.s, 

556 detector_exposure_id=0x709803d00, 

557 detector_group="RXX", 

558 detector_name="S00", 

559 detector_num=0, 

560 detector_serial="ITL-3800C-068", 

561 exposure_id=2019111300061, 

562 exposure_group="wave,Focus,455,32.0PH=5um", 

563 exposure_time=0.5*u.s, 

564 focus_z=0.0*u.mm, 

565 group_counter_end=61, 

566 group_counter_start=61, 

567 has_simulated_content=False, 

568 object="UNKNOWN", 

569 observation_counter=61, 

570 observation_id="AT_O_20191113_000061", 

571 observation_type="engtest", 

572 observation_reason="unknown", 

573 observing_day=20191113, 

574 physical_filter="empty~ronchi90lpmm", 

575 pressure=None, 

576 relative_humidity=None, 

577 science_program="unknown", 

578 temperature=None, 

579 visit_id=1892608703001301325, 

580 )), 

581 ("latiss-AT_O_20191118_000011.yaml", 

582 dict(telescope="Rubin Auxiliary Telescope", 

583 instrument="LATISS", 

584 boresight_rotation_coord="unknown", 

585 dark_time=15.0*u.s, 

586 detector_exposure_id=0x70c000b00, 

587 detector_group="RXX", 

588 detector_name="S00", 

589 detector_num=0, 

590 detector_serial="ITL-3800C-068", 

591 exposure_id=2019111800011, 

592 exposure_group="dark_0002_0005", 

593 exposure_time=15.0*u.s, 

594 focus_z=0.0*u.mm, 

595 group_counter_end=11, 

596 group_counter_start=11, 

597 has_simulated_content=False, 

598 object="UNKNOWN", 

599 observation_counter=11, 

600 observation_id="AT_O_20191118_000011", 

601 observation_type="dark", 

602 observation_reason="unknown", 

603 observing_day=20191118, 

604 physical_filter="diffuser~ronchi170lpmm", 

605 pressure=None, 

606 relative_humidity=None, 

607 science_program="unknown", 

608 temperature=None, 

609 visit_id=6861884254113212214, 

610 )), 

611 ("latiss-AT_O_20200121_000045.yaml", 

612 dict(telescope="Rubin Auxiliary Telescope", 

613 instrument="LATISS", 

614 boresight_rotation_coord="sky", 

615 dark_time=100.0*u.s, 

616 detector_exposure_id=0x72c002d00, 

617 detector_group="RXX", 

618 detector_name="S00", 

619 detector_num=0, 

620 detector_serial="ITL-3800C-068", 

621 exposure_id=2020012100045, 

622 exposure_group="test", 

623 exposure_time=100.0*u.s, 

624 focus_z=0.560002659202*u.mm, 

625 group_counter_end=45, 

626 group_counter_start=45, 

627 has_simulated_content=False, 

628 object="UNKNOWN", 

629 observation_counter=45, 

630 observation_id="AT_O_20200121_000045", 

631 observation_type="engtest", 

632 observation_reason="unknown", 

633 observing_day=20200121, 

634 physical_filter="blank_bk7_wg05~empty", 

635 pressure=None, 

636 relative_humidity=None, 

637 science_program="unknown", 

638 temperature=None, 

639 visit_id=4702443654717948604, 

640 check_altaz=True, 

641 )), 

642 ("latiss-AT_O_20200128_000379.yaml", 

643 dict(telescope="Rubin Auxiliary Telescope", 

644 instrument="LATISS", 

645 boresight_rotation_coord="sky", 

646 dark_time=5.0*u.s, 

647 detector_exposure_id=0x72f817b00, 

648 detector_group="RXX", 

649 detector_name="S00", 

650 detector_num=0, 

651 detector_serial="ITL-3800C-068", 

652 exposure_id=2020012800379, 

653 exposure_group="2020-01-29T07:25:52.166", 

654 exposure_time=5.0*u.s, 

655 focus_z=0.35416568455*u.mm, 

656 group_counter_end=379, 

657 group_counter_start=379, 

658 has_simulated_content=False, 

659 object="HD107696", 

660 observation_counter=379, 

661 observation_id="AT_O_20200128_000379", 

662 observation_type="science", 

663 observation_reason="science", 

664 observing_day=20200128, 

665 physical_filter="KPNO_406_828nm~empty", 

666 pressure=None, 

667 relative_humidity=None, 

668 science_program="unknown", 

669 temperature=None, 

670 visit_id=1602123521660000, 

671 # We have some timing discrepancies in the headers 

672 # that make it hard to match the demand RA/DEC to 

673 # the recorded AZ/EL/TIME. 

674 wcs_params=dict(max_sep=7.), 

675 )), 

676 ("latiss-AT_O_20220405_000348.yaml", 

677 dict(telescope="Rubin Auxiliary Telescope", 

678 instrument="LATISS", 

679 boresight_rotation_coord="sky", 

680 dark_time=30.3176279067993*u.s, 

681 detector_exposure_id=0x8be815c00, 

682 detector_group="RXX", 

683 detector_name="S00", 

684 detector_num=0, 

685 detector_serial="ITL-3800C-068", 

686 exposure_id=2022040500348, 

687 exposure_group="2022-04-06T02:58:07.181", 

688 exposure_time=30.0*u.s, 

689 focus_z=0.0697081759572029*u.mm, 

690 group_counter_end=349, 

691 group_counter_start=348, 

692 has_simulated_content=False, 

693 object="LATISS_E6A_00000040", 

694 observation_counter=348, 

695 observation_id="AT_O_20220405_000348", 

696 observation_type="science", 

697 observation_reason="object", 

698 observing_day=20220405, 

699 physical_filter="SDSSr~empty", 

700 pressure=None, 

701 relative_humidity=None, 

702 science_program="LATISS_E6A", 

703 temperature=None, 

704 visit_id=2291434871810000, 

705 # We have some timing discrepancies in the headers 

706 # that make it hard to match the demand RA/DEC to 

707 # the recorded AZ/EL/TIME. 

708 wcs_params=dict(max_sep=7.), 

709 )), 

710 ("latiss-AT_O_20220405_000349.yaml", 

711 dict(telescope="Rubin Auxiliary Telescope", 

712 instrument="LATISS", 

713 boresight_rotation_coord="sky", 

714 dark_time=30.2387452125549*u.s, 

715 detector_exposure_id=0x8be815d00, 

716 detector_group="RXX", 

717 detector_name="S00", 

718 detector_num=0, 

719 detector_serial="ITL-3800C-068", 

720 exposure_id=2022040500349, 

721 exposure_group="2022-04-06T02:58:07.181", 

722 exposure_time=30.0*u.s, 

723 focus_z=0.0697081759572029*u.mm, 

724 group_counter_end=349, 

725 group_counter_start=348, 

726 has_simulated_content=False, 

727 object="LATISS_E6A_00000040", 

728 observation_counter=349, 

729 observation_id="AT_O_20220405_000349", 

730 observation_type="science", 

731 observation_reason="object", 

732 observing_day=20220405, 

733 physical_filter="SDSSr~empty", 

734 pressure=None, 

735 relative_humidity=None, 

736 science_program="LATISS_E6A", 

737 temperature=None, 

738 visit_id=2291434871810000, 

739 # We have some timing discrepancies in the headers 

740 # that make it hard to match the demand RA/DEC to 

741 # the recorded AZ/EL/TIME. 

742 wcs_params=dict(max_sep=7.), 

743 )), 

744 ("latiss-AT_O_20230321_000053.yaml", 

745 dict(telescope="Rubin Auxiliary Telescope", 

746 instrument="LATISS", 

747 boresight_rotation_coord="unknown", 

748 dark_time=30.0126*u.s, 

749 detector_exposure_id=0x96d803500, 

750 detector_group="RXX", 

751 detector_name="S00", 

752 detector_num=0, 

753 detector_serial="ITL-3800C-068", 

754 exposure_id=2023032100053, 

755 exposure_group="2023-03-21T16:11:07.633", 

756 exposure_time=30.0*u.s, 

757 focus_z=0.0*u.mm, 

758 group_counter_end=53, 

759 group_counter_start=53, 

760 has_simulated_content=False, 

761 object="slew_icrs", 

762 observation_counter=53, 

763 observation_id="AT_O_20230321_000053", 

764 observation_type="dark", 

765 observation_reason="dark", 

766 observing_day=20230321, 

767 physical_filter="empty~empty", 

768 pressure=None, 

769 relative_humidity=None, 

770 science_program="unknown", 

771 temperature=None, 

772 visit_id=2593446676330000, 

773 check_altaz=True, 

774 )) 

775 ) 

776 with warnings.catch_warnings(): 

777 # Avoid warnings from too-long FITS header keys. 

778 warnings.simplefilter("ignore", VerifyWarning) 

779 self.assertObservationInfoFromYaml("latiss-future.yaml", dir=self.datadir) 

780 for filename, expected in test_data: 

781 with self.subTest(f"Testing {filename}"): 

782 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

783 

784 # This translation should fail 

785 with self.assertRaises(KeyError): 

786 self.assertObservationInfoFromYaml("latiss-future-bad.yaml", dir=self.datadir) 

787 

788 def test_imsim_translator(self): 

789 test_data = (("imsim-bias-lsst_a_3010002_R11_S00.yaml", 

790 dict(telescope="Simonyi Survey Telescope", 

791 instrument="LSSTCam-imSim", 

792 boresight_rotation_coord="sky", 

793 dark_time=0.0*u.s, 

794 detector_exposure_id=3010002036, 

795 detector_group="R11", 

796 detector_name="S00", 

797 detector_num=36, 

798 detector_serial="LCA-11021_RTM-000", 

799 exposure_id=3010002, 

800 exposure_group="3010002", 

801 exposure_time=0.0*u.s, 

802 focus_z=0.0*u.mm, 

803 group_counter_end=3010002, 

804 group_counter_start=3010002, 

805 has_simulated_content=True, 

806 object="UNKNOWN", 

807 observation_counter=0, 

808 observation_id="3010002", 

809 observation_type="science", # The header is wrong 

810 observation_reason="imsim", 

811 observing_day=20211231, 

812 physical_filter="i", 

813 pressure=None, 

814 relative_humidity=40.0, 

815 science_program="42", 

816 temperature=None, 

817 visit_id=3010002, 

818 wcs_params=dict(max_sep=3000.), # 2022 

819 )), 

820 ("imsim-lsst_a_204595_R11_S02_i.yaml", 

821 dict(telescope="Simonyi Survey Telescope", 

822 instrument="LSSTCam-imSim", 

823 boresight_rotation_coord="sky", 

824 dark_time=30.0*u.s, 

825 detector_exposure_id=204595038, 

826 detector_group="R11", 

827 detector_name="S02", 

828 detector_num=38, 

829 detector_serial="LCA-11021_RTM-000", 

830 exposure_id=204595, 

831 exposure_group="204595", 

832 exposure_time=30.0*u.s, 

833 focus_z=0.0*u.mm, 

834 group_counter_end=204595, 

835 group_counter_start=204595, 

836 has_simulated_content=True, 

837 object="UNKNOWN", 

838 observation_counter=0, 

839 observation_id="204595", 

840 observation_type="science", # The header is wrong 

841 observation_reason="imsim", 

842 observing_day=20221004, 

843 physical_filter="i_sim_1.4", 

844 pressure=None, 

845 relative_humidity=40.0, 

846 science_program="204595", 

847 temperature=None, 

848 visit_id=204595, 

849 wcs_params=dict(max_sep=3000.), # 2022 

850 )), 

851 ("imsim-flats-lsst_a_5000007_R11_S20_i.yaml", 

852 dict(telescope="Simonyi Survey Telescope", 

853 instrument="LSSTCam-imSim", 

854 boresight_rotation_coord="sky", 

855 dark_time=30.0*u.s, 

856 detector_exposure_id=5000007042, 

857 detector_group="R11", 

858 detector_name="S20", 

859 detector_num=42, 

860 detector_serial="LCA-11021_RTM-000", 

861 exposure_id=5000007, 

862 exposure_group="5000007", 

863 exposure_time=30.0*u.s, 

864 focus_z=0.0*u.mm, 

865 group_counter_end=5000007, 

866 group_counter_start=5000007, 

867 has_simulated_content=True, 

868 object="UNKNOWN", 

869 observation_counter=0, 

870 observation_id="5000007", 

871 observation_type="flat", 

872 observation_reason="imsim", 

873 observing_day=20220805, 

874 physical_filter="i", 

875 pressure=None, 

876 relative_humidity=40.0, 

877 science_program="5000007", 

878 temperature=None, 

879 visit_id=5000007, 

880 wcs_params=dict(max_sep=3000.), # 2022 

881 )), 

882 ("imsim-dark-lsst_a_4010003_R11_S11.yaml", 

883 dict(telescope="Simonyi Survey Telescope", 

884 instrument="LSSTCam-imSim", 

885 boresight_rotation_coord="sky", 

886 dark_time=500.0*u.s, 

887 detector_exposure_id=4010003040, 

888 detector_group="R11", 

889 detector_name="S11", 

890 detector_num=40, 

891 detector_serial="LCA-11021_RTM-000", 

892 exposure_id=4010003, 

893 exposure_group="4010003", 

894 exposure_time=500.0*u.s, 

895 focus_z=0.0*u.mm, 

896 group_counter_end=4010003, 

897 group_counter_start=4010003, 

898 has_simulated_content=True, 

899 object="UNKNOWN", 

900 observation_counter=0, 

901 observation_id="4010003", 

902 observation_type="science", # The header is wrong 

903 observation_reason="imsim", 

904 observing_day=20211231, 

905 physical_filter="i", 

906 pressure=None, 

907 relative_humidity=40.0, 

908 science_program="42", 

909 temperature=None, 

910 visit_id=4010003, 

911 wcs_params=dict(max_sep=3000.), # 2022 

912 )), 

913 ) 

914 for filename, expected in test_data: 

915 with self.subTest(f"Testing {filename}"): 

916 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

917 

918 def test_ts3_translator(self): 

919 test_data = (("ts3-E2V-CCD250-411_lambda_flat_1000_025_20181115075559.yaml", 

920 dict(telescope=None, 

921 instrument="LSST-TS3", 

922 dark_time=44.631*u.s, 

923 detector_exposure_id=201811151255111433, 

924 detector_group="R433", 

925 detector_name="S00", 

926 detector_num=433, 

927 detector_serial="E2V-CCD250-411", 

928 exposure_id=201811151255111, 

929 exposure_group="201811151255111", 

930 exposure_time=44.631*u.s, 

931 focus_z=0.0*u.mm, 

932 group_counter_end=25, 

933 group_counter_start=25, 

934 has_simulated_content=False, 

935 observation_counter=25, 

936 observation_id="E2V-CCD250-411_lambda_flat_1000_025_20181115075559", 

937 observation_type="flat", 

938 observation_reason="lambda", 

939 observing_day=20181115, 

940 physical_filter="550CutOn", 

941 science_program="2018-11-15", 

942 visit_id=201811151255111)), 

943 ("ts3-ITL-3800C-098_lambda_flat_1000_067_20160722020740.yaml", 

944 dict(telescope=None, 

945 instrument="LSST-TS3", 

946 dark_time=30.611*u.s, 

947 detector_exposure_id=201607220607067071, 

948 detector_group="R071", 

949 detector_name="S00", 

950 detector_num=71, 

951 detector_serial="ITL-3800C-098", 

952 exposure_id=201607220607067, 

953 exposure_group="201607220607067", 

954 exposure_time=30.611*u.s, 

955 focus_z=0.0*u.mm, 

956 group_counter_end=67, 

957 group_counter_start=67, 

958 has_simulated_content=False, 

959 observation_counter=67, 

960 observation_id="ITL-3800C-098_lambda_flat_1000_067_20160722020740", 

961 observation_type="flat", 

962 observation_reason="lambda", 

963 observing_day=20160721, 

964 physical_filter="550CutOn", 

965 science_program="2016-07-22", 

966 visit_id=201607220607067)), 

967 ) 

968 for filename, expected in test_data: 

969 with self.subTest(f"Testing {filename}"): 

970 with warnings.catch_warnings(): 

971 # Avoid warnings from too-long FITS header keys. 

972 warnings.simplefilter("ignore", VerifyWarning) 

973 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

974 

975 def test_ts8_translator(self): 

976 test_data = (("ts8-E2V-CCD250-179_lambda_bias_024_6006D_20180724104156.yaml", 

977 dict(telescope=None, 

978 instrument="LSST-TS8", 

979 dark_time=0.0*u.s, 

980 detector_exposure_id=201807241041568067, 

981 detector_group="RTM-010", 

982 detector_name="S11", 

983 detector_num=67, 

984 detector_serial="E2V-CCD250-179", 

985 exposure_id=201807241041568, 

986 exposure_group="201807241041568", 

987 exposure_time=0.0*u.s, 

988 focus_z=0.0*u.mm, 

989 group_counter_end=24, 

990 group_counter_start=24, 

991 has_simulated_content=False, 

992 observation_counter=24, 

993 observation_id="E2V-CCD250-179_lambda_bias_024_6006D_20180724104156", 

994 observation_type="bias", 

995 observation_reason="lambda", 

996 observing_day=20180724, 

997 physical_filter="y", 

998 science_program="6006D", 

999 visit_id=201807241041568)), 

1000 ("ts8-E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845.yaml", 

1001 dict(telescope=None, 

1002 instrument="LSST-TS8", 

1003 dark_time=21.913*u.s, 

1004 detector_exposure_id=201807241028453065, 

1005 detector_group="RTM-010", 

1006 detector_name="S02", 

1007 detector_num=65, 

1008 detector_serial="E2V-CCD250-200", 

1009 exposure_id=201807241028453, 

1010 exposure_group="201807241028453", 

1011 exposure_time=21.913*u.s, 

1012 focus_z=0.0*u.mm, 

1013 group_counter_end=17, 

1014 group_counter_start=17, 

1015 has_simulated_content=False, 

1016 observation_counter=17, 

1017 observation_id="E2V-CCD250-200-Dev_lambda_flat_0700_6006D_20180724102845", 

1018 observation_type="flat", 

1019 observation_reason="lambda", 

1020 observing_day=20180724, 

1021 physical_filter="z", 

1022 science_program="6006D", 

1023 visit_id=201807241028453)), 

1024 ("ts8-E2V-CCD250-220_fe55_fe55_094_6288_20171215114006.yaml", 

1025 dict(telescope=None, 

1026 instrument="LSST-TS8", 

1027 dark_time=300.0*u.s, 

1028 detector_exposure_id=201712151140062027, 

1029 detector_group="RTM-005", 

1030 detector_name="S00", 

1031 detector_num=27, 

1032 detector_serial="E2V-CCD250-220", 

1033 exposure_id=201712151140062, 

1034 exposure_group="201712151140062", 

1035 exposure_time=300.0*u.s, 

1036 focus_z=0.0*u.mm, 

1037 group_counter_end=94, 

1038 group_counter_start=94, 

1039 has_simulated_content=False, 

1040 observation_counter=94, 

1041 observation_id="E2V-CCD250-220_fe55_fe55_094_6288_20171215114006", 

1042 observation_type="fe55", 

1043 observation_reason="fe55", 

1044 observing_day=20171215, 

1045 physical_filter="i", 

1046 science_program="6288", 

1047 visit_id=201712151140062)), 

1048 ("ts8-TS_C_20220711_000174_R22_S00.yaml", 

1049 dict(telescope=None, 

1050 instrument="LSST-TS8", 

1051 dark_time=210.315*u.s, 

1052 detector_exposure_id=202207111714459018, 

1053 detector_group="RTM-004", 

1054 detector_name="S00", 

1055 detector_num=18, 

1056 detector_serial="ITL-3800C-372", 

1057 exposure_id=202207111714459, 

1058 exposure_group="202207111714459", 

1059 exposure_time=210.0*u.s, 

1060 focus_z=0.0*u.mm, 

1061 group_counter_end=174, 

1062 group_counter_start=174, 

1063 has_simulated_content=False, 

1064 observation_counter=174, 

1065 observation_id="TS_C_20220711_000174", 

1066 observation_type="spot", 

1067 observation_reason="spot_flat", 

1068 observing_day=20220711, 

1069 physical_filter="unknown", 

1070 science_program="7074D", 

1071 visit_id=202207111714459)), 

1072 ("ts8-TS_C_20230512_000021_R22_S02.yaml", 

1073 dict(telescope=None, 

1074 instrument="LSST-TS8", 

1075 dark_time=15.165*u.s, 

1076 detector_exposure_id=202305121917591020, 

1077 detector_group="RTM-004", 

1078 detector_name="S02", 

1079 detector_num=20, 

1080 detector_serial="ITL-3800C-380", 

1081 exposure_id=202305121917591, 

1082 exposure_group="202305121917591", 

1083 exposure_time=15.0*u.s, 

1084 focus_z=0.0*u.mm, 

1085 group_counter_end=21, 

1086 group_counter_start=21, 

1087 has_simulated_content=False, 

1088 observation_counter=21, 

1089 observation_id="TS_C_20230512_000021", 

1090 observation_type="flat", 

1091 observation_reason="sflat_hi", 

1092 observing_day=20230512, 

1093 physical_filter="HIGH", 

1094 science_program="7187D", 

1095 visit_id=202305121917591)), 

1096 ("ts8-TS_C_20230512_000021_R22_S02-fixed.yaml", # Will not apply header fixups 

1097 dict(telescope=None, 

1098 instrument="LSST-TS8", 

1099 dark_time=15.165*u.s, 

1100 detector_exposure_id=202305121917591020, 

1101 detector_group="RTM-004", 

1102 detector_name="S02", 

1103 detector_num=20, 

1104 detector_serial="ITL-3800C-380", 

1105 exposure_id=202305121917591, 

1106 exposure_group="202305121917591", 

1107 exposure_time=15.0*u.s, 

1108 focus_z=0.0*u.mm, 

1109 group_counter_end=21, 

1110 group_counter_start=21, 

1111 has_simulated_content=False, 

1112 observation_counter=21, 

1113 observation_id="TS_C_20230512_000021", 

1114 observation_type="flat", 

1115 observation_reason="sflat_hi", 

1116 observing_day=20230512, 

1117 physical_filter="HIGH", 

1118 science_program="7187D", 

1119 visit_id=202305121917591)), 

1120 ("ts8-TS_C_20230523_000127_R22_S00.yaml", 

1121 dict(telescope=None, 

1122 instrument="LSST-TS8", 

1123 dark_time=15.16*u.s, 

1124 detector_exposure_id=202305231936194018, 

1125 detector_group="RTM-004", 

1126 detector_name="S00", 

1127 detector_num=18, 

1128 detector_serial="ITL-3800C-372", 

1129 exposure_id=202305231936194, 

1130 exposure_group="202305231936194", 

1131 exposure_time=15.0*u.s, 

1132 focus_z=0.0*u.mm, 

1133 group_counter_end=127, 

1134 group_counter_start=127, 

1135 has_simulated_content=False, 

1136 observation_counter=127, 

1137 observation_id="TS_C_20230523_000127", 

1138 observation_type="flat", 

1139 observation_reason="flat", 

1140 observing_day=20230523, 

1141 physical_filter="unknown", 

1142 science_program="7220D", 

1143 visit_id=202305231936194)), 

1144 ("ts8-TS_C_20230525_000041_R22_S00.yaml", 

1145 dict(telescope=None, 

1146 instrument="LSST-TS8", 

1147 dark_time=30.151*u.s, 

1148 detector_exposure_id=3023052500041018, 

1149 detector_group="RTM-004", 

1150 detector_name="S00", 

1151 detector_num=18, 

1152 detector_serial="ITL-3800C-372", 

1153 exposure_id=3023052500041, 

1154 exposure_group="3023052500041", 

1155 exposure_time=30.0*u.s, 

1156 focus_z=0.0*u.mm, 

1157 group_counter_end=41, 

1158 group_counter_start=41, 

1159 has_simulated_content=False, 

1160 observation_counter=41, 

1161 observation_id="TS_C_20230525_000041", 

1162 observation_type="flat", 

1163 observation_reason="flat", 

1164 observing_day=20230525, 

1165 physical_filter="unknown", 

1166 science_program="7227D", 

1167 visit_id=3023052500041)), 

1168 ) 

1169 for filename, expected in test_data: 

1170 with self.subTest(f"Testing {filename}"): 

1171 with warnings.catch_warnings(): 

1172 # Avoid warnings from too-long FITS header keys. 

1173 warnings.simplefilter("ignore", VerifyWarning) 

1174 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1175 

1176 def test_ucdcam_translator(self): 

1177 test_data = (("UCD-E2V-CCD250-112-04_flat_flat_100_20181205153143.yaml", 

1178 dict(telescope=None, 

1179 instrument="LSST-UCDCam", 

1180 dark_time=0.5*u.s, 

1181 detector_exposure_id=201812052331480, 

1182 detector_group="R00", 

1183 detector_name="S00", 

1184 detector_num=0, 

1185 detector_serial="E2V-CCD250-112-04", 

1186 exposure_id=20181205233148, 

1187 exposure_group="20181205233148", 

1188 exposure_time=0.5*u.s, 

1189 focus_z=0.0*u.mm, 

1190 group_counter_end=100, 

1191 group_counter_start=100, 

1192 has_simulated_content=False, 

1193 observation_counter=100, 

1194 observation_id="E2V-CCD250-112-04_flat_flat_100_20181205153143", 

1195 observation_type="flat", 

1196 observation_reason="flat", 

1197 observing_day=20181205, 

1198 physical_filter="r", 

1199 science_program="2018-12-05", 

1200 visit_id=20181205233148)), 

1201 ("UCD-ITL-3800C-002_flat_flat_100_20180530080354.yaml", 

1202 dict(telescope=None, 

1203 instrument="LSST-UCDCam", 

1204 dark_time=0.5*u.s, 

1205 detector_exposure_id=201805301503552, 

1206 detector_group="R02", 

1207 detector_name="S00", 

1208 detector_num=2, 

1209 detector_serial="ITL-3800C-002", 

1210 exposure_id=20180530150355, 

1211 exposure_group="20180530150355", 

1212 exposure_time=0.5*u.s, 

1213 focus_z=0.0*u.mm, 

1214 group_counter_end=100, 

1215 group_counter_start=100, 

1216 has_simulated_content=False, 

1217 observation_counter=100, 

1218 observation_id="ITL-3800C-002_flat_flat_100_20180530080354", 

1219 observation_type="flat", 

1220 observation_reason="flat", 

1221 observing_day=20180530, 

1222 physical_filter="r", 

1223 science_program="2018-05-30", 

1224 visit_id=20180530150355)), 

1225 ) 

1226 for filename, expected in test_data: 

1227 with self.subTest(f"Testing {filename}"): 

1228 self.assertObservationInfoFromYaml(filename, dir=self.datadir, **expected) 

1229 

1230 def test_checker(self): 

1231 filename = "latiss-future.yaml" 

1232 from astro_metadata_translator.tests import read_test_file 

1233 from astro_metadata_translator import ObservationInfo 

1234 header = read_test_file(filename, self.datadir) 

1235 obsInfo = ObservationInfo(header, pedantic=True, filename=filename) 

1236 self.assertTrue(obsInfo) 

1237 

1238 def test_fix_header(self): 

1239 from astro_metadata_translator import fix_header 

1240 from astro_metadata_translator.tests import read_test_file 

1241 # Test that header fix up is working 

1242 # Not all headers are used in metadata translation 

1243 test_data = ( 

1244 ("latiss-AT_O_20210212_000006.yaml", 

1245 dict(RASTART=260.024385071917)), 

1246 ("latiss-AT_O_20210210_000011.yaml", 

1247 dict(RASTART=355.41750341182313)), 

1248 ) 

1249 for filename, expected in test_data: 

1250 with self.subTest(f"Testing {filename}"): 

1251 header = read_test_file(filename, dir=self.datadir) 

1252 modified = fix_header(header) 

1253 self.assertTrue(modified) 

1254 for k, v in expected.items(): 

1255 self.assertEqual(header[k], v, f"Testing {k} in {filename}") 

1256 

1257 

1258if __name__ == "__main__": 1258 ↛ 1259line 1258 didn't jump to line 1259, because the condition on line 1258 was never true

1259 unittest.main()