Skip to content

Reformat markdown for ruff 0.16 and pin ruff in CI - #14

Open
gomezzz wants to merge 1 commit into
mainfrom
style/ruff-0.16-markdown
Open

Reformat markdown for ruff 0.16 and pin ruff in CI#14
gomezzz wants to merge 1 commit into
mainfrom
style/ruff-0.16-markdown

Conversation

@gomezzz

@gomezzz gomezzz commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • ruff 0.16 started formatting fenced code blocks inside Markdown, so ruff format --check . fails on pre-existing docs files. That turns the lint job red on every pull request, including the contribution-guidelines PR.
  • Pin astral-sh/ruff-action@v3 to 0.16.0. The action otherwise resolves to whatever ruff is newest, so an upstream release can fail CI on unchanged code, which is exactly what happened here.

Scope

Markdown only, no Python touched. Every hunk is inside a ```python fence: quote normalisation, magic trailing commas, comment realignment, line rewrapping. No documented API, argument, or value changed.

Verified locally

  • uvx ruff@0.16.0 format --check . clean
  • ESA licence headers confirmed intact on every reformatted file (the check_license_headers job compares them byte for byte)

Test plan

  • lint green
  • check_license_headers green
  • Contribution-guidelines PR goes green once this merges

ruff 0.16 started formatting fenced code blocks inside Markdown, so
'ruff format --check .' fails on pre-existing docs files and turns the lint
job red on every pull request.

Pin the action to 0.16.0 as well. It otherwise resolves to the latest
release, so a future ruff can break CI on unchanged code the same way.
@github-actions

Copy link
Copy Markdown

Overall Coverage

Coverage Report (build + browser)
FileStmtsMissCoverMissing
__init__.py8538%13, 15, 17–18, 20
catalogue_preprocessor.py3705485%67, 83–84, 87, 281–282, 296–298, 317, 320, 328, 335, 343, 348–352, 354–355, 404–405, 408, 410–411, 414, 442–443, 446–447, 450–452, 458–459, 468–470, 483, 514–515, 559–560, 564, 609, 617, 648, 653, 667, 670, 723, 731, 735
catalogue_streamer.py162498%115, 202, 229, 376
cutout_extraction.py1561888%73–74, 76, 125, 130–131, 303–305, 356, 377, 379–381, 385–386, 388, 391
cutout_process.py2257268%87, 230, 250–251, 264, 267, 280–281, 285–288, 292, 321, 324–327, 335–336, 339–341, 344–348, 350, 352–353, 356–357, 359, 364, 367–370, 372, 377, 379, 382–383, 387, 390, 392, 397–403, 406–410, 413, 416, 419–420, 423, 425, 429, 517, 527–530, 533
cutout_process_utils.py2101991%63, 66, 84, 90, 178–179, 192–195, 244–245, 256–258, 405, 417, 433, 558
cutout_writer_fits.py2212788%44–45, 49, 131–133, 140–141, 218, 229, 286–287, 299, 375, 393–394, 455–456, 527–528, 547, 557, 566, 568, 621–623
cutout_writer_zarr.py882176%115–116, 129–130, 137–139, 169, 200–202, 223–224, 245–247, 268–269, 290–292
deployment_validator.py3027376%33–35, 92–94, 123–124, 153, 176–178, 183–184, 223–225, 275–277, 317–318, 325–326, 336–337, 341–342, 350, 353, 361–364, 388–389, 404, 415–416, 418–426, 435–436, 478–479, 484–486, 488–489, 499, 507, 511–512, 514, 517–521, 524–527, 558–559
direct_cutout.py43588%95–96, 109–110, 113
fits_dataset.py1572187%54–56, 238–243, 245–247, 251–252, 268–269, 273, 276, 300, 302, 338
fits_reader.py53394%53, 129–130
get_default_config.py150597%52, 177, 182, 209, 212
image_processor.py1471093%56, 262–267, 269, 271–272
job_tracker.py1261687%204, 219–220, 228, 232, 250, 255, 272–275, 277, 280, 285, 351, 411
loadbalancer.py3307178%111–112, 120, 123–124, 126–127, 154, 158, 160–161, 169–170, 222–223, 226–227, 231–232, 235–236, 239, 249–250, 254–255, 258, 261, 271, 303–304, 400, 407, 518, 584–585, 600–604, 606–613, 617, 619–621, 623–625, 659, 663, 666, 669–671, 678–680, 827–830, 837–838
logging_config.py33294%67, 69
normalisation_parameters.py1354666%106–110, 113, 128–129, 132, 144–148, 151, 192–194, 196, 220, 227, 230, 232, 234, 236–237, 240–243, 245–247, 249, 251–252, 254–255, 261, 269–270, 278, 280, 282, 332–333
orchestrator.py4439279%97, 143–146, 186, 189–190, 192, 194, 197–198, 201–202, 204, 206–207, 277–278, 301, 443–446, 500–503, 515–517, 524–525, 574, 577–578, 586–587, 589–593, 640–642, 665–667, 678–680, 690–692, 697–699, 764–765, 769, 773–774, 778, 781–782, 786–788, 796–797, 844–845, 863–864, 872, 895–898, 902–905, 909, 911, 944, 946–947, 951, 1051–1052
performance_profiler.py80495%144, 154, 159, 192
preview_generator.py2373187%63–64, 113, 117, 119, 157, 164, 170, 242–243, 259–260, 262–263, 271–272, 275, 281–282, 374, 407–410, 412–413, 445, 465–468
process_status_reader.py1572485%63, 85, 93–95, 105–106, 143, 146, 171, 174, 195–197, 264–266, 300–302, 354, 443–445
process_status_writer.py1402483%79–83, 86, 88–89, 123, 205, 306–309, 348–349, 352, 355, 358, 361, 364, 390–392
progress_report.py1431590%125, 132, 135–139, 145–147, 161–162, 221, 224–225
shm_pool.py105496%87, 163–164, 167
streaming_orchestrator.py3757480%127, 129, 262, 271, 275, 305, 328–330, 332–333, 335–343, 345, 347, 352–353, 365–367, 369–373, 375–376, 378, 395, 397–403, 405–406, 418, 442–443, 446–447, 457, 460, 463–465, 471, 475, 484, 488, 506–508, 515, 560–561, 565, 692, 707, 713, 720, 725, 761–762, 769
styles.py35197%37
system_monitor.py2427768%65–67, 76–78, 113–114, 116–117, 167–168, 189, 192–193, 203, 205, 210, 212, 214, 218–219, 222–227, 230–232, 236–237, 241–244, 248–249, 254–257, 400, 402, 404–405, 409, 441–442, 448–457, 482, 485–488, 496–498, 502, 536, 540–542, 544–547
validate_config.py2032787%349, 391, 468, 471–474, 479, 482, 486, 491–493, 498–500, 503, 506, 526, 539, 543, 545–547, 553, 558, 606
main_screen
   main_screen.py2407370%200, 202, 205, 209, 212, 215, 218, 221–222, 225–228, 231–235, 237–244, 247–249, 251, 254–255, 257–267, 271, 274, 277, 280–286, 288–291, 293–295, 299–302, 304–305, 313, 440–441, 444–445, 450, 549
   preview_panel.py1654076%120–121, 131–132, 147–149, 182–186, 194, 201, 203–204, 224, 234, 237–238, 289–290, 292–294, 305, 311, 313–314, 363–365, 368–371, 373–374, 376, 390
   status_panel.py1241687%165, 176, 181–183, 236, 244–246, 267, 269, 272, 275, 291, 332, 345
start_screen
   configuration_component.py39295%142, 150
   file_selection.py995346%87, 89–90, 92, 97–98, 103–104, 110–115, 117, 120–121, 123–124, 127–134, 136, 138–139, 141, 143–145, 151–152, 162, 164, 172–173, 180, 183–185, 187, 191–192, 208, 212–213, 225–227
   output_folder.py702466%50–51, 86, 88, 91–93, 95, 97, 107, 109, 117–118, 125, 128–130, 132, 136–137, 144, 150–152
   start_screen.py1745171%172–173, 177, 205–207, 209–214, 216–219, 273–274, 276–279, 281–284, 326, 328, 330, 333, 355–357, 361–362, 364, 368, 371–376, 379, 382, 389, 392, 396, 399, 406, 409
utils
   backend_interface.py1123866%64–65, 67–71, 85–86, 88, 90–92, 94, 96, 99–101, 104–106, 109–110, 113–115, 117, 120–121, 123, 125–126, 128–129, 142, 146, 161, 172
   log_manager.py682366%44, 49–50, 84, 87, 95, 123–124, 136, 139–141, 144–145, 147–151, 153, 159–160, 178
   markdown_loader.py2211991%34–36, 160, 171, 215, 255, 298, 357, 371, 438, 442–447, 591, 595
   svg_loader.py17665%26–31
widgets
   configuration_widget.py3357677%245, 277, 281, 284–286, 288, 294, 297, 304, 308, 329–330, 332–334, 336–337, 339, 341–342, 345–346, 348–351, 353, 355–358, 364, 378, 397–399, 423, 431–432, 507, 532–533, 535–536, 540–541, 543–544, 569–571, 576, 594, 596–599, 656, 658, 687, 701–705, 707–712, 720–721, 723–724
   file_chooser.py23483%184, 193–194, 196
   header_version_help.py993169%38–40, 42–43, 45–49, 52, 65, 81–87, 89, 336–339, 341–343, 346–347, 351–352
   normalisation_config_widget.py1523776%241–242, 244–245, 247–249, 252, 254–258, 261–264, 267, 270–271, 274–277, 323–325, 328–331, 333, 336–339, 343
   progress_bar.py30197%124
TOTAL7142155278% 

Tests Skipped Failures Errors Time
741 0 💤 0 ❌ 0 🔥 2m 30s ⏱️

@gomezzz
gomezzz requested a review from giusgal July 30, 2026 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant