Skip to content

Conversation

@danielgafni
Copy link
Collaborator

No description provided.

Copy link
Collaborator Author

danielgafni commented Nov 11, 2025

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Coverage

Coverage Report (Python 3.10)
FileStmtsMissCoverMissing
__init__.py20385%108, 112–113
_packaging.py28871%17–18, 40, 43–44, 46, 48, 96
_utils.py19289%26, 32
config.py2052388%50, 56, 61, 74–75, 223–226, 270, 395, 436, 464, 472–473, 475–476, 478, 534, 552, 585, 603, 611
entrypoints.py661084%156, 171, 215–216, 218–219, 221–222, 225–226
_testing
   metaxy_project.py2623088%93, 129, 136, 199, 306, 308–314, 353, 418, 439, 474, 488, 520, 533, 658, 791, 804, 806–812, 818
   models.py22195%40
   runbook.py2683885%97–101, 109–112, 138, 209, 244, 281, 383–385, 409, 411, 413–414, 426, 527, 536, 548, 550, 552, 560, 581, 626, 645, 657, 693, 716–717, 724, 742, 753, 827
_testing/parametric
   metadata.py1253175%122–123, 128, 131, 133–134, 136, 139, 145–147, 149, 153–154, 156–157, 162–163, 166–167, 169, 172, 174, 323, 357, 597–599, 604, 613, 641
cli
   context.py502746%44–45, 49–50, 52–54, 66–68, 72, 80–82, 86, 99, 111, 113, 121–122, 124, 128, 156–157, 159, 164, 167
ext/dagster
   io_manager.py55198%94
   metaxify.py1691491%433–435, 439, 492, 531–532, 561, 575, 577, 579, 585, 587, 590
   selection.py10640%63, 65, 67–69, 73
   table_metadata.py101694%45, 83–84, 89, 100, 224
   utils.py88594%85, 108–110, 153
ext/sqlalchemy
   plugin.py68592%122, 268–269, 273, 277
ext/sqlmodel
   plugin.py1283076%116–118, 190–191, 195, 197, 199–201, 203, 205, 208, 211, 213–214, 217–218, 221–223, 226, 230, 451, 469, 474, 480, 490, 492–493
graph
   describe.py1361304%46–47, 53, 56, 61–62, 64–65, 67, 69–71, 73–75, 77–80, 82, 85–88, 91, 96–98, 100–111, 114–117, 120, 130–132, 134, 159–161, 164–167, 169, 173, 175, 180–181, 183–184, 186–187, 189, 191–193, 195–197, 199–201, 206, 208, 214–215, 218, 220–225, 227–228, 230, 256–263, 265, 269, 271, 276–277, 279–280, 282–283, 285, 288–294, 299–300, 302–303, 309–310, 313, 315–320, 322–323, 325
   status.py1071070%7, 9–10, 12–13, 15, 27, 30–39, 42, 45, 52, 60, 70–77, 82–83, 85–91, 93, 95–98, 101–102, 104, 111, 118–119, 121–122, 124, 126, 133–134, 136–137, 139, 150, 157, 163–164, 166, 180, 199–200, 202–203, 206–207, 211, 213–214, 217–218, 222, 224, 227, 236, 239, 260–261, 264, 267–270, 272, 275–276, 279–280, 282–283, 288–292, 295–296, 306, 309, 315–316, 318, 327
   utils.py11190%17
graph/diff
   diff_models.py1431688%70, 82, 154, 171, 182, 200, 214, 228, 242, 299, 319, 333, 357, 378, 399, 420
   differ.py2782391%42, 74, 127–128, 133, 152, 173–174, 179, 192, 194–196, 198, 454, 573, 607, 705, 709–710, 737–738, 753
   models.py1648647%110, 121, 152, 182, 186, 209, 227, 274, 276–277, 280–282, 285, 288–290, 292–293, 295, 301, 304–306, 309, 312, 320, 323–324, 326, 342, 344–345, 348, 350, 353–361, 363, 366–367, 370–373, 376–377, 379–380, 382, 385–398, 400–402, 405–407, 409, 415, 418, 424, 432, 435–438, 440
   traversal.py968511%24, 41–42, 44–45, 47–50, 52, 55, 59–61, 63, 66–67, 69, 83–85, 87–89, 91–92, 94–95, 97–98, 100–102, 105–108, 110, 133–135, 138, 141–144, 147–150, 153, 157, 164, 183, 185–187, 189, 191–194, 196–197, 199–200, 215–221, 223, 225–227, 229–231, 233–234, 236–237, 245
graph/diff/rendering
   base.py935639%99–100, 103–104, 106, 111, 123, 135, 172–173, 176–177, 180–181, 183–185, 196–198, 209–216, 218, 232–234, 250, 261, 269, 272–274, 276–277, 280–281, 285–286, 289–295, 298, 306–307, 309, 315
   cards.py89827%23–25, 27, 30, 33, 35–36, 38–40, 43–46, 50, 53–61, 66–68, 71, 78–80, 91–92, 94, 97–98, 101, 104–106, 108, 111–112, 114–116, 118–120, 122–124, 127–131, 133, 144, 147–148, 153–155, 157–158, 160–161, 164–166, 168, 179–186, 188
   formatter.py2945182%62, 64, 66, 82–87, 89, 104, 125–127, 130, 134, 137, 139, 144, 149, 155, 160–163, 165–166, 171, 174–175, 180, 183–184, 189, 194, 198, 210, 222–223, 438–439, 444–445, 454, 461, 465, 555–556, 597–598, 730
   graphviz.py1141048%24, 27, 30–32, 35–36, 38–43, 46, 48–51, 54–55, 57, 61, 64–69, 71, 74–76, 78–79, 81–83, 86, 88, 94, 98, 100, 112–113, 116–119, 121, 132–139, 141, 152–159, 161, 172, 175–177, 179–180, 182–184, 186–187, 189–190, 192, 203, 206–208, 210–211, 216–218, 220–221, 223–224, 226, 237–244, 246
   mermaid.py13712310%25, 28, 31, 33–35, 37–38, 41, 44, 46–48, 51–59, 62, 64, 71, 74, 77–79, 82–84, 87, 92–94, 96, 99–100, 102, 113, 125–128, 130, 141, 155, 158, 160, 163–165, 167, 169, 171, 174, 176, 179, 181, 184, 186, 191–192, 194, 205, 208–209, 212–213, 218–220, 223–224, 226–227, 229–231, 233–234, 236–237, 239, 242, 244–247, 250–251, 262, 265–267, 269–270, 272–273, 278–280, 282–283, 285–286, 288, 290, 301–306, 308, 319–324, 326
   rich.py72659%23–24, 26, 29, 32–34, 38, 41, 43–45, 48–50, 60, 63, 68–69, 72–73, 75, 78, 81–82, 84–85, 88–90, 92–93, 96–99, 102–106, 118, 120, 125–126, 131, 134, 137–138, 140–141, 144–146, 148–149, 160–167, 169
   theme.py16193%48
metadata_store
   _ducklake_support.py2253484%41, 43, 46, 55, 62, 75, 81, 89, 96–97, 110–111, 129, 132, 140, 150, 178–180, 182, 207, 261, 269, 271, 279, 285, 288, 377, 405–408, 411, 414
   base.py4333791%445, 505, 528, 652, 683–684, 727, 729, 944, 961, 966, 1175, 1286, 1364, 1371, 1379, 1385, 1485, 1515, 1686, 1706–1707, 1711, 1716, 1723, 1728–1729, 1734, 1741, 1743, 1752, 1754, 1757, 1760, 1782–1783, 1786
   bigquery.py761185%236, 262–263, 301, 306, 311, 316, 321, 327, 332, 337
   clickhouse.py46980%97, 132, 137, 142, 147, 155, 160, 165, 170
   delta.py1201389%113, 127, 130, 164–165, 227, 271, 297, 300–301, 304, 312, 352
   duckdb.py1582981%84–90, 92, 203–204, 208, 276, 286–288, 290, 298–299, 320, 325, 330, 344–345, 356, 361, 419, 426, 432, 437
   ibis.py1341191%204, 223, 374–375, 377, 402, 416, 434, 490, 517, 530
   lancedb.py1201190%159–161, 164, 314–315, 328–330, 371, 391
   memory.py921385%95, 98, 100–101, 104, 138, 140, 148, 150, 174, 177–178, 219
   utils.py33293%100, 102
   warnings.py22195%29
metadata_store/system
   models.py44393%92–93, 108
   storage.py1714971%143, 189, 379, 381–383, 385–386, 389–390, 392–396, 401, 403, 406, 422, 425, 429–430, 436, 438, 445, 465–466, 468, 471, 473–474, 477, 479–480, 483, 486, 497, 505, 518, 730, 816, 827, 832, 888, 891, 897–898, 904, 916
migrations
   detector.py57984%69, 79, 94–95, 100, 102, 117, 123, 129
   executor.py1512583%54, 59–60, 62, 111–112, 117, 178–180, 194–195, 250–251, 260–261, 293–295, 406, 409–410, 413–414, 422
   generator.py1151150%3–4, 6, 8–13, 20, 33, 35–36, 39–41, 44–46, 48, 51, 106, 108, 110, 112–113, 117, 120–122, 124, 128–129, 134, 137, 140–145, 149, 156, 161, 166–167, 170, 173–175, 177–178, 181, 184, 192–194, 197–200, 202, 204–206, 209–211, 214–217, 220–221, 224, 226–227, 231–233, 236–237, 244–245, 247–249, 251–252, 255–256, 258–259, 261–262, 265–266, 268, 273, 275, 278, 280, 286, 288–290, 292, 295–297, 299, 304, 308, 310, 319
   loader.py927815%26, 28, 30–31, 33–34, 37–40, 42, 58–59, 61–62, 68–73, 75, 78–84, 86, 101–102, 104–105, 107–108, 126, 129, 134–135, 141, 144, 146, 148, 153–154, 161, 178, 180–181, 183–184, 187–190, 192–193, 196–198, 201–202, 204–207, 209–210, 215–218, 221, 224–226, 231
   models.py106892%129, 238, 288, 321–322, 324–326
   ops.py1004159%54–58, 210–211, 223–224, 236, 246, 252–253, 257–258, 261–262, 268, 270, 273–274, 276, 278–279, 282, 292, 296, 299, 304–306, 309, 312–313, 315, 319–320, 325–327, 329
models
   feature.py4085387%127, 132, 136, 138–139, 146, 171, 176, 221, 230, 309, 318, 348, 394, 405, 408–410, 412, 543, 656, 767–768, 771–774, 786, 790, 805, 807–808, 811–815, 818, 820, 843, 898, 1005–1006, 1010, 1013, 1039–1041, 1319, 1326–1327, 1329, 1335
   feature_spec.py94297%133, 158
   field.py53688%41, 43, 56–57, 59, 163
   fields_mapping.py911187%55, 105, 114–115, 208, 281–284, 287, 289
   filter_expression.py1624075%45, 75, 79–81, 84, 99, 117, 172, 180–184, 187–189, 210, 220–225, 233, 242, 251–255, 270–274, 282–283, 285, 289
   lineage.py44197%74
   plan.py981782%37, 41, 45, 75, 77–78, 80, 84, 86–88, 90, 135, 168, 188, 222–223
   types.py1411490%89–93, 103–104, 106, 131, 167, 181, 187, 193, 199
utils
   exceptions.py6183%10
   hashing.py55689%45, 139, 185, 191, 197, 207
versioning
   engine.py1831094%45, 66, 69, 83, 295, 521, 524, 614, 619, 656
   ibis.py581475%72, 160–161, 164, 167, 170, 173, 178–179, 183–184, 189, 192, 227
   polars.py43295%58, 177
   types.py22195%41
TOTAL7632184775% 

Tests Skipped Failures Errors Time
1342 21 💤 3 ❌ 0 🔥 5m 21s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Coverage

Coverage Report (Python 3.11)
FileStmtsMissCoverMissing
__init__.py20385%108, 112–113
_packaging.py28871%17–18, 40, 43–44, 46, 48, 96
_utils.py19289%26, 32
config.py2052388%50, 56, 61, 74–75, 223–226, 270, 395, 436, 464, 472–473, 475–476, 478, 534, 552, 585, 603, 611
entrypoints.py661084%156, 171, 215–216, 218–219, 221–222, 225–226
_testing
   metaxy_project.py2623088%93, 129, 136, 199, 306, 308–314, 353, 418, 439, 474, 488, 520, 533, 658, 791, 804, 806–812, 818
   models.py22195%40
   runbook.py2683885%97–101, 109–112, 138, 209, 244, 281, 383–385, 409, 411, 413–414, 426, 527, 536, 548, 550, 552, 560, 581, 626, 645, 657, 693, 716–717, 724, 742, 753, 827
_testing/parametric
   metadata.py1253175%122–123, 128, 131, 133–134, 136, 139, 145–147, 149, 153–154, 156–157, 162–163, 166–167, 169, 172, 174, 323, 357, 597–599, 604, 613, 641
cli
   context.py502746%44–45, 49–50, 52–54, 66–68, 72, 80–82, 86, 99, 111, 113, 121–122, 124, 128, 156–157, 159, 164, 167
ext/dagster
   io_manager.py55198%94
   metaxify.py1691491%433–435, 439, 492, 531–532, 561, 575, 577, 579, 585, 587, 590
   selection.py10640%63, 65, 67–69, 73
   table_metadata.py101694%45, 83–84, 89, 100, 224
   utils.py88594%85, 108–110, 153
ext/sqlalchemy
   plugin.py68592%122, 268–269, 273, 277
ext/sqlmodel
   plugin.py1283076%116–118, 190–191, 195, 197, 199–201, 203, 205, 208, 211, 213–214, 217–218, 221–223, 226, 230, 451, 469, 474, 480, 490, 492–493
graph
   describe.py1361304%46–47, 53, 56, 61–62, 64–65, 67, 69–71, 73–75, 77–80, 82, 85–88, 91, 96–98, 100–111, 114–117, 120, 130–132, 134, 159–161, 164–167, 169, 173, 175, 180–181, 183–184, 186–187, 189, 191–193, 195–197, 199–201, 206, 208, 214–215, 218, 220–225, 227–228, 230, 256–263, 265, 269, 271, 276–277, 279–280, 282–283, 285, 288–294, 299–300, 302–303, 309–310, 313, 315–320, 322–323, 325
   status.py1071070%7, 9–10, 12–13, 15, 27, 30–39, 42, 45, 52, 60, 70–77, 82–83, 85–91, 93, 95–98, 101–102, 104, 111, 118–119, 121–122, 124, 126, 133–134, 136–137, 139, 150, 157, 163–164, 166, 180, 199–200, 202–203, 206–207, 211, 213–214, 217–218, 222, 224, 227, 236, 239, 260–261, 264, 267–270, 272, 275–276, 279–280, 282–283, 288–292, 295–296, 306, 309, 315–316, 318, 327
   utils.py11190%17
graph/diff
   diff_models.py1431688%70, 82, 154, 171, 182, 200, 214, 228, 242, 299, 319, 333, 357, 378, 399, 420
   differ.py2782391%42, 74, 127–128, 133, 152, 173–174, 179, 192, 194–196, 198, 454, 573, 607, 705, 709–710, 737–738, 753
   models.py1648647%110, 121, 152, 182, 186, 209, 227, 274, 276–277, 280–282, 285, 288–290, 292–293, 295, 301, 304–306, 309, 312, 320, 323–324, 326, 342, 344–345, 348, 350, 353–361, 363, 366–367, 370–373, 376–377, 379–380, 382, 385–398, 400–402, 405–407, 409, 415, 418, 424, 432, 435–438, 440
   traversal.py968511%24, 41–42, 44–45, 47–50, 52, 55, 59–61, 63, 66–67, 69, 83–85, 87–89, 91–92, 94–95, 97–98, 100–102, 105–108, 110, 133–135, 138, 141–144, 147–150, 153, 157, 164, 183, 185–187, 189, 191–194, 196–197, 199–200, 215–221, 223, 225–227, 229–231, 233–234, 236–237, 245
graph/diff/rendering
   base.py935639%99–100, 103–104, 106, 111, 123, 135, 172–173, 176–177, 180–181, 183–185, 196–198, 209–216, 218, 232–234, 250, 261, 269, 272–274, 276–277, 280–281, 285–286, 289–295, 298, 306–307, 309, 315
   cards.py89827%23–25, 27, 30, 33, 35–36, 38–40, 43–46, 50, 53–61, 66–68, 71, 78–80, 91–92, 94, 97–98, 101, 104–106, 108, 111–112, 114–116, 118–120, 122–124, 127–131, 133, 144, 147–148, 153–155, 157–158, 160–161, 164–166, 168, 179–186, 188
   formatter.py2945182%62, 64, 66, 82–87, 89, 104, 125–127, 130, 134, 137, 139, 144, 149, 155, 160–163, 165–166, 171, 174–175, 180, 183–184, 189, 194, 198, 210, 222–223, 438–439, 444–445, 454, 461, 465, 555–556, 597–598, 730
   graphviz.py1141048%24, 27, 30–32, 35–36, 38–43, 46, 48–51, 54–55, 57, 61, 64–69, 71, 74–76, 78–79, 81–83, 86, 88, 94, 98, 100, 112–113, 116–119, 121, 132–139, 141, 152–159, 161, 172, 175–177, 179–180, 182–184, 186–187, 189–190, 192, 203, 206–208, 210–211, 216–218, 220–221, 223–224, 226, 237–244, 246
   mermaid.py13712310%25, 28, 31, 33–35, 37–38, 41, 44, 46–48, 51–59, 62, 64, 71, 74, 77–79, 82–84, 87, 92–94, 96, 99–100, 102, 113, 125–128, 130, 141, 155, 158, 160, 163–165, 167, 169, 171, 174, 176, 179, 181, 184, 186, 191–192, 194, 205, 208–209, 212–213, 218–220, 223–224, 226–227, 229–231, 233–234, 236–237, 239, 242, 244–247, 250–251, 262, 265–267, 269–270, 272–273, 278–280, 282–283, 285–286, 288, 290, 301–306, 308, 319–324, 326
   rich.py72659%23–24, 26, 29, 32–34, 38, 41, 43–45, 48–50, 60, 63, 68–69, 72–73, 75, 78, 81–82, 84–85, 88–90, 92–93, 96–99, 102–106, 118, 120, 125–126, 131, 134, 137–138, 140–141, 144–146, 148–149, 160–167, 169
   theme.py16193%48
metadata_store
   _ducklake_support.py2253484%41, 43, 46, 55, 62, 75, 81, 89, 96–97, 110–111, 129, 132, 140, 150, 178–180, 182, 207, 261, 269, 271, 279, 285, 288, 377, 405–408, 411, 414
   base.py4333791%445, 505, 528, 652, 683–684, 727, 729, 944, 961, 966, 1175, 1286, 1364, 1371, 1379, 1385, 1485, 1515, 1686, 1706–1707, 1711, 1716, 1723, 1728–1729, 1734, 1741, 1743, 1752, 1754, 1757, 1760, 1782–1783, 1786
   bigquery.py761185%236, 262–263, 301, 306, 311, 316, 321, 327, 332, 337
   clickhouse.py46980%97, 132, 137, 142, 147, 155, 160, 165, 170
   delta.py1201389%113, 127, 130, 164–165, 227, 271, 297, 300–301, 304, 312, 352
   duckdb.py1582981%84–90, 92, 203–204, 208, 276, 286–288, 290, 298–299, 320, 325, 330, 344–345, 356, 361, 419, 426, 432, 437
   ibis.py1341191%204, 223, 374–375, 377, 402, 416, 434, 490, 517, 530
   lancedb.py1201190%159–161, 164, 314–315, 328–330, 371, 391
   memory.py921385%95, 98, 100–101, 104, 138, 140, 148, 150, 174, 177–178, 219
   utils.py33293%100, 102
   warnings.py22195%29
metadata_store/system
   models.py44393%92–93, 108
   storage.py1714971%143, 189, 379, 381–383, 385–386, 389–390, 392–396, 401, 403, 406, 422, 425, 429–430, 436, 438, 445, 465–466, 468, 471, 473–474, 477, 479–480, 483, 486, 497, 505, 518, 730, 816, 827, 832, 888, 891, 897–898, 904, 916
migrations
   detector.py57984%69, 79, 94–95, 100, 102, 117, 123, 129
   executor.py1512583%54, 59–60, 62, 111–112, 117, 178–180, 194–195, 250–251, 260–261, 293–295, 406, 409–410, 413–414, 422
   generator.py1151150%3–4, 6, 8–13, 20, 33, 35–36, 39–41, 44–46, 48, 51, 106, 108, 110, 112–113, 117, 120–122, 124, 128–129, 134, 137, 140–145, 149, 156, 161, 166–167, 170, 173–175, 177–178, 181, 184, 192–194, 197–200, 202, 204–206, 209–211, 214–217, 220–221, 224, 226–227, 231–233, 236–237, 244–245, 247–249, 251–252, 255–256, 258–259, 261–262, 265–266, 268, 273, 275, 278, 280, 286, 288–290, 292, 295–297, 299, 304, 308, 310, 319
   loader.py927815%26, 28, 30–31, 33–34, 37–40, 42, 58–59, 61–62, 68–73, 75, 78–84, 86, 101–102, 104–105, 107–108, 126, 129, 134–135, 141, 144, 146, 148, 153–154, 161, 178, 180–181, 183–184, 187–190, 192–193, 196–198, 201–202, 204–207, 209–210, 215–218, 221, 224–226, 231
   models.py106892%129, 238, 288, 321–322, 324–326
   ops.py1004159%54–58, 210–211, 223–224, 236, 246, 252–253, 257–258, 261–262, 268, 270, 273–274, 276, 278–279, 282, 292, 296, 299, 304–306, 309, 312–313, 315, 319–320, 325–327, 329
models
   feature.py4085387%127, 132, 136, 138–139, 146, 171, 176, 221, 230, 309, 318, 348, 394, 405, 408–410, 412, 543, 656, 767–768, 771–774, 786, 790, 805, 807–808, 811–815, 818, 820, 843, 898, 1005–1006, 1010, 1013, 1039–1041, 1319, 1326–1327, 1329, 1335
   feature_spec.py94297%133, 158
   field.py53688%41, 43, 56–57, 59, 163
   fields_mapping.py911187%55, 105, 114–115, 208, 281–284, 287, 289
   filter_expression.py1624075%45, 75, 79–81, 84, 99, 117, 172, 180–184, 187–189, 210, 220–225, 233, 242, 251–255, 270–274, 282–283, 285, 289
   lineage.py44197%74
   plan.py981782%37, 41, 45, 75, 77–78, 80, 84, 86–88, 90, 135, 168, 188, 222–223
   types.py1411490%89–93, 103–104, 106, 131, 167, 181, 187, 193, 199
utils
   exceptions.py6183%10
   hashing.py55689%45, 139, 185, 191, 197, 207
versioning
   engine.py1831094%45, 66, 69, 83, 295, 521, 524, 614, 619, 656
   ibis.py581475%72, 160–161, 164, 167, 170, 173, 178–179, 183–184, 189, 192, 227
   polars.py43295%58, 177
   types.py22195%41
TOTAL7632184775% 

Tests Skipped Failures Errors Time
1342 21 💤 3 ❌ 0 🔥 5m 25s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Coverage

Coverage Report (Python 3.12)
FileStmtsMissCoverMissing
__init__.py20385%108, 112–113
_packaging.py28871%17–18, 40, 43–44, 46, 48, 96
_utils.py19289%26, 32
config.py2052388%50, 56, 61, 74–75, 223–226, 270, 395, 436, 464, 472–473, 475–476, 478, 534, 552, 585, 603, 611
entrypoints.py661084%156, 171, 215–216, 218–219, 221–222, 225–226
_testing
   metaxy_project.py2623088%93, 129, 136, 199, 306, 308–314, 353, 418, 439, 474, 488, 520, 533, 658, 791, 804, 806–812, 818
   models.py22195%40
   runbook.py2683885%97–101, 109–112, 138, 209, 244, 281, 383–385, 409, 411, 413–414, 426, 527, 536, 548, 550, 552, 560, 581, 626, 645, 657, 693, 716–717, 724, 742, 753, 827
_testing/parametric
   metadata.py1253175%122–123, 128, 131, 133–134, 136, 139, 145–147, 149, 153–154, 156–157, 162–163, 166–167, 169, 172, 174, 323, 357, 597–599, 604, 613, 641
cli
   context.py502746%44–45, 49–50, 52–54, 66–68, 72, 80–82, 86, 99, 111, 113, 121–122, 124, 128, 156–157, 159, 164, 167
ext/dagster
   io_manager.py55198%94
   metaxify.py1691491%433–435, 439, 492, 531–532, 561, 575, 577, 579, 585, 587, 590
   selection.py10640%63, 65, 67–69, 73
   table_metadata.py101694%45, 83–84, 89, 100, 224
   utils.py88594%85, 108–110, 153
ext/sqlalchemy
   plugin.py68592%122, 268–269, 273, 277
ext/sqlmodel
   plugin.py1283076%116–118, 190–191, 195, 197, 199–201, 203, 205, 208, 211, 213–214, 217–218, 221–223, 226, 230, 451, 469, 474, 480, 490, 492–493
graph
   describe.py1361304%46–47, 53, 56, 61–62, 64–65, 67, 69–71, 73–75, 77–80, 82, 85–88, 91, 96–98, 100–111, 114–117, 120, 130–132, 134, 159–161, 164–167, 169, 173, 175, 180–181, 183–184, 186–187, 189, 191–193, 195–197, 199–201, 206, 208, 214–215, 218, 220–225, 227–228, 230, 256–263, 265, 269, 271, 276–277, 279–280, 282–283, 285, 288–294, 299–300, 302–303, 309–310, 313, 315–320, 322–323, 325
   status.py1071070%7, 9–10, 12–13, 15, 27, 30–39, 42, 45, 52, 60, 70–77, 82–83, 85–91, 93, 95–98, 101–102, 104, 111, 118–119, 121–122, 124, 126, 133–134, 136–137, 139, 150, 157, 163–164, 166, 180, 199–200, 202–203, 206–207, 211, 213–214, 217–218, 222, 224, 227, 236, 239, 260–261, 264, 267–270, 272, 275–276, 279–280, 282–283, 288–292, 295–296, 306, 309, 315–316, 318, 327
   utils.py11190%17
graph/diff
   diff_models.py1431688%70, 82, 154, 171, 182, 200, 214, 228, 242, 299, 319, 333, 357, 378, 399, 420
   differ.py2782391%42, 74, 127–128, 133, 152, 173–174, 179, 192, 194–196, 198, 454, 573, 607, 705, 709–710, 737–738, 753
   models.py1648647%110, 121, 152, 182, 186, 209, 227, 274, 276–277, 280–282, 285, 288–290, 292–293, 295, 301, 304–306, 309, 312, 320, 323–324, 326, 342, 344–345, 348, 350, 353–361, 363, 366–367, 370–373, 376–377, 379–380, 382, 385–398, 400–402, 405–407, 409, 415, 418, 424, 432, 435–438, 440
   traversal.py968511%24, 41–42, 44–45, 47–50, 52, 55, 59–61, 63, 66–67, 69, 83–85, 87–89, 91–92, 94–95, 97–98, 100–102, 105–108, 110, 133–135, 138, 141–144, 147–150, 153, 157, 164, 183, 185–187, 189, 191–194, 196–197, 199–200, 215–221, 223, 225–227, 229–231, 233–234, 236–237, 245
graph/diff/rendering
   base.py935639%99–100, 103–104, 106, 111, 123, 135, 172–173, 176–177, 180–181, 183–185, 196–198, 209–216, 218, 232–234, 250, 261, 269, 272–274, 276–277, 280–281, 285–286, 289–295, 298, 306–307, 309, 315
   cards.py89827%23–25, 27, 30, 33, 35–36, 38–40, 43–46, 50, 53–61, 66–68, 71, 78–80, 91–92, 94, 97–98, 101, 104–106, 108, 111–112, 114–116, 118–120, 122–124, 127–131, 133, 144, 147–148, 153–155, 157–158, 160–161, 164–166, 168, 179–186, 188
   formatter.py2945182%62, 64, 66, 82–87, 89, 104, 125–127, 130, 134, 137, 139, 144, 149, 155, 160–163, 165–166, 171, 174–175, 180, 183–184, 189, 194, 198, 210, 222–223, 438–439, 444–445, 454, 461, 465, 555–556, 597–598, 730
   graphviz.py1141048%24, 27, 30–32, 35–36, 38–43, 46, 48–51, 54–55, 57, 61, 64–69, 71, 74–76, 78–79, 81–83, 86, 88, 94, 98, 100, 112–113, 116–119, 121, 132–139, 141, 152–159, 161, 172, 175–177, 179–180, 182–184, 186–187, 189–190, 192, 203, 206–208, 210–211, 216–218, 220–221, 223–224, 226, 237–244, 246
   mermaid.py13712310%25, 28, 31, 33–35, 37–38, 41, 44, 46–48, 51–59, 62, 64, 71, 74, 77–79, 82–84, 87, 92–94, 96, 99–100, 102, 113, 125–128, 130, 141, 155, 158, 160, 163–165, 167, 169, 171, 174, 176, 179, 181, 184, 186, 191–192, 194, 205, 208–209, 212–213, 218–220, 223–224, 226–227, 229–231, 233–234, 236–237, 239, 242, 244–247, 250–251, 262, 265–267, 269–270, 272–273, 278–280, 282–283, 285–286, 288, 290, 301–306, 308, 319–324, 326
   rich.py72659%23–24, 26, 29, 32–34, 38, 41, 43–45, 48–50, 60, 63, 68–69, 72–73, 75, 78, 81–82, 84–85, 88–90, 92–93, 96–99, 102–106, 118, 120, 125–126, 131, 134, 137–138, 140–141, 144–146, 148–149, 160–167, 169
   theme.py16193%48
metadata_store
   _ducklake_support.py2253484%41, 43, 46, 55, 62, 75, 81, 89, 96–97, 110–111, 129, 132, 140, 150, 178–180, 182, 207, 261, 269, 271, 279, 285, 288, 377, 405–408, 411, 414
   base.py4333791%445, 505, 528, 652, 683–684, 727, 729, 944, 961, 966, 1175, 1286, 1364, 1371, 1379, 1385, 1485, 1515, 1686, 1706–1707, 1711, 1716, 1723, 1728–1729, 1734, 1741, 1743, 1752, 1754, 1757, 1760, 1782–1783, 1786
   bigquery.py761185%236, 262–263, 301, 306, 311, 316, 321, 327, 332, 337
   clickhouse.py46980%97, 132, 137, 142, 147, 155, 160, 165, 170
   delta.py1201389%113, 127, 130, 164–165, 227, 271, 297, 300–301, 304, 312, 352
   duckdb.py1582981%84–90, 92, 203–204, 208, 276, 286–288, 290, 298–299, 320, 325, 330, 344–345, 356, 361, 419, 426, 432, 437
   ibis.py1341191%204, 223, 374–375, 377, 402, 416, 434, 490, 517, 530
   lancedb.py1201190%159–161, 164, 314–315, 328–330, 371, 391
   memory.py921385%95, 98, 100–101, 104, 138, 140, 148, 150, 174, 177–178, 219
   utils.py33293%100, 102
   warnings.py22195%29
metadata_store/system
   models.py44393%92–93, 108
   storage.py1714971%143, 189, 379, 381–383, 385–386, 389–390, 392–396, 401, 403, 406, 422, 425, 429–430, 436, 438, 445, 465–466, 468, 471, 473–474, 477, 479–480, 483, 486, 497, 505, 518, 730, 816, 827, 832, 888, 891, 897–898, 904, 916
migrations
   detector.py57984%69, 79, 94–95, 100, 102, 117, 123, 129
   executor.py1512583%54, 59–60, 62, 111–112, 117, 178–180, 194–195, 250–251, 260–261, 293–295, 406, 409–410, 413–414, 422
   generator.py1151150%3–4, 6, 8–13, 20, 33, 35–36, 39–41, 44–46, 48, 51, 106, 108, 110, 112–113, 117, 120–122, 124, 128–129, 134, 137, 140–145, 149, 156, 161, 166–167, 170, 173–175, 177–178, 181, 184, 192–194, 197–200, 202, 204–206, 209–211, 214–217, 220–221, 224, 226–227, 231–233, 236–237, 244–245, 247–249, 251–252, 255–256, 258–259, 261–262, 265–266, 268, 273, 275, 278, 280, 286, 288–290, 292, 295–297, 299, 304, 308, 310, 319
   loader.py927815%26, 28, 30–31, 33–34, 37–40, 42, 58–59, 61–62, 68–73, 75, 78–84, 86, 101–102, 104–105, 107–108, 126, 129, 134–135, 141, 144, 146, 148, 153–154, 161, 178, 180–181, 183–184, 187–190, 192–193, 196–198, 201–202, 204–207, 209–210, 215–218, 221, 224–226, 231
   models.py106892%129, 238, 288, 321–322, 324–326
   ops.py1004159%54–58, 210–211, 223–224, 236, 246, 252–253, 257–258, 261–262, 268, 270, 273–274, 276, 278–279, 282, 292, 296, 299, 304–306, 309, 312–313, 315, 319–320, 325–327, 329
models
   feature.py4085387%127, 132, 136, 138–139, 146, 171, 176, 221, 230, 309, 318, 348, 394, 405, 408–410, 412, 543, 656, 767–768, 771–774, 786, 790, 805, 807–808, 811–815, 818, 820, 843, 898, 1005–1006, 1010, 1013, 1039–1041, 1319, 1326–1327, 1329, 1335
   feature_spec.py94297%133, 158
   field.py53688%41, 43, 56–57, 59, 163
   fields_mapping.py911187%55, 105, 114–115, 208, 281–284, 287, 289
   filter_expression.py1624075%45, 75, 79–81, 84, 99, 117, 172, 180–184, 187–189, 210, 220–225, 233, 242, 251–255, 270–274, 282–283, 285, 289
   lineage.py44197%74
   plan.py981782%37, 41, 45, 75, 77–78, 80, 84, 86–88, 90, 135, 168, 188, 222–223
   types.py1411490%89–93, 103–104, 106, 131, 167, 181, 187, 193, 199
utils
   exceptions.py6183%10
   hashing.py55689%45, 139, 185, 191, 197, 207
versioning
   engine.py1831094%45, 66, 69, 83, 295, 521, 524, 614, 619, 656
   ibis.py581475%72, 160–161, 164, 167, 170, 173, 178–179, 183–184, 189, 192, 227
   polars.py43295%58, 177
   types.py22195%41
TOTAL7632184775% 

Tests Skipped Failures Errors Time
1342 21 💤 3 ❌ 0 🔥 5m 29s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Coverage

Coverage Report (Python 3.13)
FileStmtsMissCoverMissing
__init__.py20385%108, 112–113
_packaging.py28871%17–18, 40, 43–44, 46, 48, 96
_utils.py19289%26, 32
config.py2052388%50, 56, 61, 74–75, 223–226, 270, 395, 436, 464, 472–473, 475–476, 478, 534, 552, 585, 603, 611
entrypoints.py661084%156, 171, 215–216, 218–219, 221–222, 225–226
_testing
   metaxy_project.py2623088%93, 129, 136, 199, 306, 308–314, 353, 418, 439, 474, 488, 520, 533, 658, 791, 804, 806–812, 818
   models.py22195%40
   runbook.py2683885%97–101, 109–112, 138, 209, 244, 281, 383–385, 409, 411, 413–414, 426, 527, 536, 548, 550, 552, 560, 581, 626, 645, 657, 693, 716–717, 724, 742, 753, 827
_testing/parametric
   metadata.py1253175%122–123, 128, 131, 133–134, 136, 139, 145–147, 149, 153–154, 156–157, 162–163, 166–167, 169, 172, 174, 323, 357, 597–599, 604, 613, 641
cli
   context.py502746%44–45, 49–50, 52–54, 66–68, 72, 80–82, 86, 99, 111, 113, 121–122, 124, 128, 156–157, 159, 164, 167
ext/dagster
   io_manager.py55198%94
   metaxify.py1691491%433–435, 439, 492, 531–532, 561, 575, 577, 579, 585, 587, 590
   selection.py10640%63, 65, 67–69, 73
   table_metadata.py101694%45, 83–84, 89, 100, 224
   utils.py88594%85, 108–110, 153
ext/sqlalchemy
   plugin.py68592%122, 268–269, 273, 277
ext/sqlmodel
   plugin.py1283076%116–118, 190–191, 195, 197, 199–201, 203, 205, 208, 211, 213–214, 217–218, 221–223, 226, 230, 451, 469, 474, 480, 490, 492–493
graph
   describe.py1361304%46–47, 53, 56, 61–62, 64–65, 67, 69–71, 73–75, 77–80, 82, 85–88, 91, 96–98, 100–111, 114–117, 120, 130–132, 134, 159–161, 164–167, 169, 173, 175, 180–181, 183–184, 186–187, 189, 191–193, 195–197, 199–201, 206, 208, 214–215, 218, 220–225, 227–228, 230, 256–263, 265, 269, 271, 276–277, 279–280, 282–283, 285, 288–294, 299–300, 302–303, 309–310, 313, 315–320, 322–323, 325
   status.py1071070%7, 9–10, 12–13, 15, 27, 30–39, 42, 45, 52, 60, 70–77, 82–83, 85–91, 93, 95–98, 101–102, 104, 111, 118–119, 121–122, 124, 126, 133–134, 136–137, 139, 150, 157, 163–164, 166, 180, 199–200, 202–203, 206–207, 211, 213–214, 217–218, 222, 224, 227, 236, 239, 260–261, 264, 267–270, 272, 275–276, 279–280, 282–283, 288–292, 295–296, 306, 309, 315–316, 318, 327
   utils.py11190%17
graph/diff
   diff_models.py1431688%70, 82, 154, 171, 182, 200, 214, 228, 242, 299, 319, 333, 357, 378, 399, 420
   differ.py2782391%42, 74, 127–128, 133, 152, 173–174, 179, 192, 194–196, 198, 454, 573, 607, 705, 709–710, 737–738, 753
   models.py1648647%110, 121, 152, 182, 186, 209, 227, 274, 276–277, 280–282, 285, 288–290, 292–293, 295, 301, 304–306, 309, 312, 320, 323–324, 326, 342, 344–345, 348, 350, 353–361, 363, 366–367, 370–373, 376–377, 379–380, 382, 385–398, 400–402, 405–407, 409, 415, 418, 424, 432, 435–438, 440
   traversal.py968511%24, 41–42, 44–45, 47–50, 52, 55, 59–61, 63, 66–67, 69, 83–85, 87–89, 91–92, 94–95, 97–98, 100–102, 105–108, 110, 133–135, 138, 141–144, 147–150, 153, 157, 164, 183, 185–187, 189, 191–194, 196–197, 199–200, 215–221, 223, 225–227, 229–231, 233–234, 236–237, 245
graph/diff/rendering
   base.py935639%99–100, 103–104, 106, 111, 123, 135, 172–173, 176–177, 180–181, 183–185, 196–198, 209–216, 218, 232–234, 250, 261, 269, 272–274, 276–277, 280–281, 285–286, 289–295, 298, 306–307, 309, 315
   cards.py89827%23–25, 27, 30, 33, 35–36, 38–40, 43–46, 50, 53–61, 66–68, 71, 78–80, 91–92, 94, 97–98, 101, 104–106, 108, 111–112, 114–116, 118–120, 122–124, 127–131, 133, 144, 147–148, 153–155, 157–158, 160–161, 164–166, 168, 179–186, 188
   formatter.py2945182%62, 64, 66, 82–87, 89, 104, 125–127, 130, 134, 137, 139, 144, 149, 155, 160–163, 165–166, 171, 174–175, 180, 183–184, 189, 194, 198, 210, 222–223, 438–439, 444–445, 454, 461, 465, 555–556, 597–598, 730
   graphviz.py1141048%24, 27, 30–32, 35–36, 38–43, 46, 48–51, 54–55, 57, 61, 64–69, 71, 74–76, 78–79, 81–83, 86, 88, 94, 98, 100, 112–113, 116–119, 121, 132–139, 141, 152–159, 161, 172, 175–177, 179–180, 182–184, 186–187, 189–190, 192, 203, 206–208, 210–211, 216–218, 220–221, 223–224, 226, 237–244, 246
   mermaid.py13712310%25, 28, 31, 33–35, 37–38, 41, 44, 46–48, 51–59, 62, 64, 71, 74, 77–79, 82–84, 87, 92–94, 96, 99–100, 102, 113, 125–128, 130, 141, 155, 158, 160, 163–165, 167, 169, 171, 174, 176, 179, 181, 184, 186, 191–192, 194, 205, 208–209, 212–213, 218–220, 223–224, 226–227, 229–231, 233–234, 236–237, 239, 242, 244–247, 250–251, 262, 265–267, 269–270, 272–273, 278–280, 282–283, 285–286, 288, 290, 301–306, 308, 319–324, 326
   rich.py72659%23–24, 26, 29, 32–34, 38, 41, 43–45, 48–50, 60, 63, 68–69, 72–73, 75, 78, 81–82, 84–85, 88–90, 92–93, 96–99, 102–106, 118, 120, 125–126, 131, 134, 137–138, 140–141, 144–146, 148–149, 160–167, 169
   theme.py16193%48
metadata_store
   _ducklake_support.py2253484%41, 43, 46, 55, 62, 75, 81, 89, 96–97, 110–111, 129, 132, 140, 150, 178–180, 182, 207, 261, 269, 271, 279, 285, 288, 377, 405–408, 411, 414
   base.py4333791%445, 505, 528, 652, 683–684, 727, 729, 944, 961, 966, 1175, 1286, 1364, 1371, 1379, 1385, 1485, 1515, 1686, 1706–1707, 1711, 1716, 1723, 1728–1729, 1734, 1741, 1743, 1752, 1754, 1757, 1760, 1782–1783, 1786
   bigquery.py761185%236, 262–263, 301, 306, 311, 316, 321, 327, 332, 337
   clickhouse.py46980%97, 132, 137, 142, 147, 155, 160, 165, 170
   delta.py1201389%113, 127, 130, 164–165, 227, 271, 297, 300–301, 304, 312, 352
   duckdb.py1582981%84–90, 92, 203–204, 208, 276, 286–288, 290, 298–299, 320, 325, 330, 344–345, 356, 361, 419, 426, 432, 437
   ibis.py1341191%204, 223, 374–375, 377, 402, 416, 434, 490, 517, 530
   lancedb.py1201190%159–161, 164, 314–315, 328–330, 371, 391
   memory.py921385%95, 98, 100–101, 104, 138, 140, 148, 150, 174, 177–178, 219
   utils.py33293%100, 102
   warnings.py22195%29
metadata_store/system
   models.py44393%92–93, 108
   storage.py1714971%143, 189, 379, 381–383, 385–386, 389–390, 392–396, 401, 403, 406, 422, 425, 429–430, 436, 438, 445, 465–466, 468, 471, 473–474, 477, 479–480, 483, 486, 497, 505, 518, 730, 816, 827, 832, 888, 891, 897–898, 904, 916
migrations
   detector.py57984%69, 79, 94–95, 100, 102, 117, 123, 129
   executor.py1512583%54, 59–60, 62, 111–112, 117, 178–180, 194–195, 250–251, 260–261, 293–295, 406, 409–410, 413–414, 422
   generator.py1151150%3–4, 6, 8–13, 20, 33, 35–36, 39–41, 44–46, 48, 51, 106, 108, 110, 112–113, 117, 120–122, 124, 128–129, 134, 137, 140–145, 149, 156, 161, 166–167, 170, 173–175, 177–178, 181, 184, 192–194, 197–200, 202, 204–206, 209–211, 214–217, 220–221, 224, 226–227, 231–233, 236–237, 244–245, 247–249, 251–252, 255–256, 258–259, 261–262, 265–266, 268, 273, 275, 278, 280, 286, 288–290, 292, 295–297, 299, 304, 308, 310, 319
   loader.py927815%26, 28, 30–31, 33–34, 37–40, 42, 58–59, 61–62, 68–73, 75, 78–84, 86, 101–102, 104–105, 107–108, 126, 129, 134–135, 141, 144, 146, 148, 153–154, 161, 178, 180–181, 183–184, 187–190, 192–193, 196–198, 201–202, 204–207, 209–210, 215–218, 221, 224–226, 231
   models.py106892%129, 238, 288, 321–322, 324–326
   ops.py1004159%54–58, 210–211, 223–224, 236, 246, 252–253, 257–258, 261–262, 268, 270, 273–274, 276, 278–279, 282, 292, 296, 299, 304–306, 309, 312–313, 315, 319–320, 325–327, 329
models
   feature.py4085387%127, 132, 136, 138–139, 146, 171, 176, 221, 230, 309, 318, 348, 394, 405, 408–410, 412, 543, 656, 767–768, 771–774, 786, 790, 805, 807–808, 811–815, 818, 820, 843, 898, 1005–1006, 1010, 1013, 1039–1041, 1319, 1326–1327, 1329, 1335
   feature_spec.py94297%133, 158
   field.py53688%41, 43, 56–57, 59, 163
   fields_mapping.py911187%55, 105, 114–115, 208, 281–284, 287, 289
   filter_expression.py1624075%45, 75, 79–81, 84, 99, 117, 172, 180–184, 187–189, 210, 220–225, 233, 242, 251–255, 270–274, 282–283, 285, 289
   lineage.py44197%74
   plan.py981782%37, 41, 45, 75, 77–78, 80, 84, 86–88, 90, 135, 168, 188, 222–223
   types.py1411490%89–93, 103–104, 106, 131, 167, 181, 187, 193, 199
utils
   exceptions.py6183%10
   hashing.py55689%45, 139, 185, 191, 197, 207
versioning
   engine.py1831094%45, 66, 69, 83, 295, 521, 524, 614, 619, 656
   ibis.py581475%72, 160–161, 164, 167, 170, 173, 178–179, 183–184, 189, 192, 227
   polars.py43295%58, 177
   types.py22195%41
TOTAL7632184775% 

Tests Skipped Failures Errors Time
1342 21 💤 3 ❌ 0 🔥 5m 17s ⏱️

@danielgafni danielgafni marked this pull request as ready for review November 11, 2025 22:16
@danielgafni danielgafni changed the base branch from 11-05-record_runbook_events to graphite-base/272 November 25, 2025 10:12
@danielgafni danielgafni force-pushed the 11-11-save_runbook_snapshot branch from 6b43cc8 to 739c1eb Compare November 28, 2025 16:55
@danielgafni danielgafni changed the base branch from graphite-base/272 to 11-05-record_runbook_events November 28, 2025 16:55
@github-actions
Copy link
Contributor

github-actions bot commented Nov 28, 2025

Test Results (Python 3.10)

1 342 tests   1 318 ✅  5m 21s ⏱️
    1 suites     21 💤
    1 files        3 ❌

For more details on these failures, see this check.

Results for commit 926814d.

♻️ This comment has been updated with latest results.

@danielgafni danielgafni force-pushed the 11-11-save_runbook_snapshot branch from 739c1eb to ba86732 Compare November 28, 2025 19:34
@danielgafni danielgafni force-pushed the 11-05-record_runbook_events branch from a5982d1 to 7931fa3 Compare November 28, 2025 19:34
@danielgafni danielgafni force-pushed the 11-11-save_runbook_snapshot branch from ba86732 to 926814d Compare November 28, 2025 20:14
@danielgafni danielgafni force-pushed the 11-05-record_runbook_events branch from 7931fa3 to 2958f1e Compare November 28, 2025 20:14
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.

2 participants