Skip to content

Conversation

@geoHeil
Copy link
Collaborator

@geoHeil geoHeil commented Oct 31, 2025

No description provided.

@geoHeil geoHeil changed the base branch from main to feat/66-metadata October 31, 2025 13:51
@geoHeil geoHeil force-pushed the fix/re-add-typechecker branch from d170f3a to ba0b0df Compare October 31, 2025 14:02
@github-actions
Copy link
Contributor

github-actions bot commented Oct 31, 2025

Coverage

Coverage Report (Python 3.11)
FileStmtsMissCoverMissing
__init__.py15473%57, 61–63
_version.py110%1
config.py1831890%9–10, 51, 57, 62, 75–76, 323, 393, 415, 423–424, 426–427, 429, 455, 494, 519
entrypoints.py831384%154, 214, 217–219, 221–222, 224–226, 228, 233–234
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
data_versioning/calculators
   duckdb.py882275%80, 96–101, 103, 111–112, 148–151, 154, 157, 159–160, 162, 207–209
   ibis.py621083%89–91, 118, 131, 213–215, 217–218
data_versioning/diff
   narwhals.py23195%57
data_versioning/joiners
   narwhals.py103793%134, 136, 153, 164, 204, 206, 229
ext
   alembic.py18288%91–92
   sqlmodel.py39197%131
graph
   describe.py1361304%44–45, 51, 54, 59–60, 62–63, 65, 67–69, 71–73, 75–78, 80, 83–86, 89, 94–96, 98–109, 112–115, 118, 128–130, 132, 157–159, 162–165, 167, 171, 173, 178–179, 181–182, 184–185, 187, 189–191, 193–195, 197–199, 204, 206, 212–213, 216, 218–223, 225–226, 228, 254–261, 263, 267, 269, 274–275, 277–278, 280–281, 283, 286–292, 297–298, 300–301, 307–308, 311, 313–318, 320–321, 323
   utils.py11190%17
graph/diff
   diff_models.py117496%68, 80, 166, 291
   differ.py2702092%40, 68, 121–122, 127, 146, 167–168, 173, 186, 188–190, 192, 448, 567, 601, 725–726, 740
   models.py1548346%108, 119, 176, 180, 256, 258–259, 262–264, 267, 270–272, 274–275, 277, 283, 286–288, 291, 294, 302, 305–306, 308, 324, 326–327, 330, 332, 335–343, 345, 348–349, 352–355, 358–359, 361–362, 364, 367–380, 382–384, 387–389, 391, 397, 400, 406, 414, 417–420, 422
   traversal.py966829%42, 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, 122, 134, 170–171, 174–175, 178–179, 181–183, 194–196, 207–214, 216, 230–232, 248, 259, 267, 270–272, 274–275, 278–279, 283–284, 287–293, 296, 304–305, 307, 313
   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.py5308284%57–58, 152, 367, 501–504, 506, 521, 523, 535, 537–539, 579, 585, 589, 671, 673, 697, 875, 887, 889, 892–894, 897, 923, 925, 1119, 1128, 1135, 1269, 1285, 1288–1290, 1292–1293, 1296, 1298, 1303, 1308, 1311, 1313–1315, 1317, 1363, 1370, 1377, 1382–1383, 1388, 1395, 1397, 1406, 1408, 1411, 1414, 1436–1437, 1440, 1488, 1493, 1495, 1506–1508, 1539, 1545–1547, 1751, 1786, 1824, 1920–1921, 1924–1926
   clickhouse.py41197%86
   duckdb.py951980%49–55, 57, 170–171, 175, 213, 237, 239–240, 250, 257, 263, 268
   ibis.py1322084%103–104, 111, 130, 134, 143, 169, 177–179, 183–184, 186–188, 190, 310, 312, 325, 429
   memory.py79593%107, 109, 117, 119, 145
   system_tables.py1356948%110, 112–113, 116–117, 119–120, 123, 126–127, 219, 313, 315, 317, 320–321, 323–324, 326–327, 329, 331, 349, 351–354, 356–357, 360–361, 363–367, 372, 374, 377, 381, 384, 388–390, 393, 397, 404, 422, 424–425, 428, 430–433, 435, 437, 439–440, 442–444, 447, 450, 453, 456–457, 459, 469
migrations
   detector.py54885%62, 72, 84, 93, 95, 110, 116, 122
   executor.py15473%76–77, 82, 125
   generator.py1231230%3–4, 6, 8–12, 19, 32, 34–35, 38–40, 43–45, 47, 50, 101, 103, 105, 107–108, 112, 115–117, 119, 123–124, 129, 132, 135–140, 144, 152, 154–155, 161–162, 165–168, 177, 180, 185–186, 189, 192–194, 196–197, 200, 203, 211–213, 216–219, 221, 227–229, 232–234, 237–240, 243–244, 247, 249–250, 254–256, 259–260, 267–268, 270–272, 274–275, 278–279, 281–282, 284–285, 288–289, 291, 296, 302, 305, 307, 313, 315–317, 321, 324–326, 328, 333, 337, 339, 348
   loader.py1028813%24, 26, 28–29, 31–32, 35, 38, 40–42, 45, 48–51, 53, 56, 59–60, 66, 75, 91–92, 94–95, 101–106, 108, 111–117, 119, 134–135, 137–138, 140–141, 157, 160, 165–166, 172, 175, 177, 179, 184–185, 192, 209–210, 212–213, 216–219, 221–222, 225–227, 230–231, 233–236, 238–239, 244–247, 250, 253–255, 260
   models.py2191792%116, 193, 231, 238–239, 254, 264, 279, 283, 307, 399, 528–530, 583, 586, 629
   ops.py801581%66–67, 178–179, 191–192, 214, 221, 236, 238, 244, 267–269, 275
models
   feature.py3333988%58–59, 112, 117, 162, 242, 267–268, 272, 353, 493–494, 497–500, 512, 516, 531, 533–534, 537–541, 544, 546, 560, 611, 709–710, 714, 775, 780, 790–791, 794, 1035
   feature_spec.py1803182%123, 134, 145, 156, 167, 202, 221, 226–232, 237, 239, 242–243, 285, 305, 318, 331, 343, 385, 419–420, 456, 495, 507, 519, 531
   field.py611378%45, 54, 63, 72, 81, 90, 103, 105, 136, 146, 156, 166, 177
   plan.py741185%33, 37, 41, 68, 70–71, 73, 110, 112, 150–151
   types.py2013582%63, 68, 73, 78, 83, 158–159, 161, 167, 172, 176, 186, 206, 224, 230, 236, 242, 299, 304, 309, 314, 319, 328, 333–335, 384, 389, 394, 399, 404, 413, 418–420
utils
   hashing.py49491%175, 200, 202, 205
TOTAL5174151270% 

Tests Skipped Failures Errors Time
871 14 💤 4 ❌ 0 🔥 5m 15s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Oct 31, 2025

Coverage

Coverage Report (Python 3.10)
FileStmtsMissCoverMissing
__init__.py15473%57, 61–63
_version.py110%1
config.py1831691%51, 57, 62, 75–76, 323, 393, 415, 423–424, 426–427, 429, 455, 494, 519
entrypoints.py831384%154, 214, 217–219, 221–222, 224–226, 228, 233–234
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
data_versioning/calculators
   duckdb.py882275%80, 96–101, 103, 111–112, 148–151, 154, 157, 159–160, 162, 207–209
   ibis.py621083%89–91, 118, 131, 213–215, 217–218
data_versioning/diff
   narwhals.py23195%57
data_versioning/joiners
   narwhals.py103793%134, 136, 153, 164, 204, 206, 229
ext
   alembic.py18288%91–92
   sqlmodel.py39197%131
graph
   describe.py1361304%44–45, 51, 54, 59–60, 62–63, 65, 67–69, 71–73, 75–78, 80, 83–86, 89, 94–96, 98–109, 112–115, 118, 128–130, 132, 157–159, 162–165, 167, 171, 173, 178–179, 181–182, 184–185, 187, 189–191, 193–195, 197–199, 204, 206, 212–213, 216, 218–223, 225–226, 228, 254–261, 263, 267, 269, 274–275, 277–278, 280–281, 283, 286–292, 297–298, 300–301, 307–308, 311, 313–318, 320–321, 323
   utils.py11190%17
graph/diff
   diff_models.py117496%68, 80, 166, 291
   differ.py2702092%40, 68, 121–122, 127, 146, 167–168, 173, 186, 188–190, 192, 448, 567, 601, 725–726, 740
   models.py1548346%108, 119, 176, 180, 256, 258–259, 262–264, 267, 270–272, 274–275, 277, 283, 286–288, 291, 294, 302, 305–306, 308, 324, 326–327, 330, 332, 335–343, 345, 348–349, 352–355, 358–359, 361–362, 364, 367–380, 382–384, 387–389, 391, 397, 400, 406, 414, 417–420, 422
   traversal.py966829%42, 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, 122, 134, 170–171, 174–175, 178–179, 181–183, 194–196, 207–214, 216, 230–232, 248, 259, 267, 270–272, 274–275, 278–279, 283–284, 287–293, 296, 304–305, 307, 313
   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.py5308284%57–58, 152, 367, 501–504, 506, 521, 523, 535, 537–539, 579, 585, 589, 671, 673, 697, 875, 887, 889, 892–894, 897, 923, 925, 1119, 1128, 1135, 1269, 1285, 1288–1290, 1292–1293, 1296, 1298, 1303, 1308, 1311, 1313–1315, 1317, 1363, 1370, 1377, 1382–1383, 1388, 1395, 1397, 1406, 1408, 1411, 1414, 1436–1437, 1440, 1488, 1493, 1495, 1506–1508, 1539, 1545–1547, 1751, 1786, 1824, 1920–1921, 1924–1926
   clickhouse.py41197%86
   duckdb.py951980%49–55, 57, 170–171, 175, 213, 237, 239–240, 250, 257, 263, 268
   ibis.py1322084%103–104, 111, 130, 134, 143, 169, 177–179, 183–184, 186–188, 190, 310, 312, 325, 429
   memory.py79593%107, 109, 117, 119, 145
   system_tables.py1356948%110, 112–113, 116–117, 119–120, 123, 126–127, 219, 313, 315, 317, 320–321, 323–324, 326–327, 329, 331, 349, 351–354, 356–357, 360–361, 363–367, 372, 374, 377, 381, 384, 388–390, 393, 397, 404, 422, 424–425, 428, 430–433, 435, 437, 439–440, 442–444, 447, 450, 453, 456–457, 459, 469
migrations
   detector.py54885%62, 72, 84, 93, 95, 110, 116, 122
   executor.py15473%76–77, 82, 125
   generator.py1231230%3–4, 6, 8–12, 19, 32, 34–35, 38–40, 43–45, 47, 50, 101, 103, 105, 107–108, 112, 115–117, 119, 123–124, 129, 132, 135–140, 144, 152, 154–155, 161–162, 165–168, 177, 180, 185–186, 189, 192–194, 196–197, 200, 203, 211–213, 216–219, 221, 227–229, 232–234, 237–240, 243–244, 247, 249–250, 254–256, 259–260, 267–268, 270–272, 274–275, 278–279, 281–282, 284–285, 288–289, 291, 296, 302, 305, 307, 313, 315–317, 321, 324–326, 328, 333, 337, 339, 348
   loader.py1028813%24, 26, 28–29, 31–32, 35, 38, 40–42, 45, 48–51, 53, 56, 59–60, 66, 75, 91–92, 94–95, 101–106, 108, 111–117, 119, 134–135, 137–138, 140–141, 157, 160, 165–166, 172, 175, 177, 179, 184–185, 192, 209–210, 212–213, 216–219, 221–222, 225–227, 230–231, 233–236, 238–239, 244–247, 250, 253–255, 260
   models.py2191792%116, 193, 231, 238–239, 254, 264, 279, 283, 307, 399, 528–530, 583, 586, 629
   ops.py801581%66–67, 178–179, 191–192, 214, 221, 236, 238, 244, 267–269, 275
models
   feature.py3333988%58–59, 112, 117, 162, 242, 267–268, 272, 353, 493–494, 497–500, 512, 516, 531, 533–534, 537–541, 544, 546, 560, 611, 709–710, 714, 775, 780, 790–791, 794, 1035
   feature_spec.py1803182%123, 134, 145, 156, 167, 202, 221, 226–232, 237, 239, 242–243, 285, 305, 318, 331, 343, 385, 419–420, 456, 495, 507, 519, 531
   field.py611378%45, 54, 63, 72, 81, 90, 103, 105, 136, 146, 156, 166, 177
   plan.py741185%33, 37, 41, 68, 70–71, 73, 110, 112, 150–151
   types.py2013582%63, 68, 73, 78, 83, 158–159, 161, 167, 172, 176, 186, 206, 224, 230, 236, 242, 299, 304, 309, 314, 319, 328, 333–335, 384, 389, 394, 399, 404, 413, 418–420
utils
   hashing.py49491%175, 200, 202, 205
TOTAL5174151070% 

Tests Skipped Failures Errors Time
871 14 💤 4 ❌ 0 🔥 5m 12s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Oct 31, 2025

Coverage

Coverage Report (Python 3.13)
FileStmtsMissCoverMissing
__init__.py15473%57, 61–63
_version.py110%1
config.py1831890%9–10, 51, 57, 62, 75–76, 323, 393, 415, 423–424, 426–427, 429, 455, 494, 519
entrypoints.py831384%154, 214, 217–219, 221–222, 224–226, 228, 233–234
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
data_versioning/calculators
   duckdb.py882275%80, 96–101, 103, 111–112, 148–151, 154, 157, 159–160, 162, 207–209
   ibis.py621083%89–91, 118, 131, 213–215, 217–218
data_versioning/diff
   narwhals.py23195%57
data_versioning/joiners
   narwhals.py103793%134, 136, 153, 164, 204, 206, 229
ext
   alembic.py18288%91–92
   sqlmodel.py39197%131
graph
   describe.py1361304%44–45, 51, 54, 59–60, 62–63, 65, 67–69, 71–73, 75–78, 80, 83–86, 89, 94–96, 98–109, 112–115, 118, 128–130, 132, 157–159, 162–165, 167, 171, 173, 178–179, 181–182, 184–185, 187, 189–191, 193–195, 197–199, 204, 206, 212–213, 216, 218–223, 225–226, 228, 254–261, 263, 267, 269, 274–275, 277–278, 280–281, 283, 286–292, 297–298, 300–301, 307–308, 311, 313–318, 320–321, 323
   utils.py11190%17
graph/diff
   diff_models.py117496%68, 80, 166, 291
   differ.py2702092%40, 68, 121–122, 127, 146, 167–168, 173, 186, 188–190, 192, 448, 567, 601, 725–726, 740
   models.py1548346%108, 119, 176, 180, 256, 258–259, 262–264, 267, 270–272, 274–275, 277, 283, 286–288, 291, 294, 302, 305–306, 308, 324, 326–327, 330, 332, 335–343, 345, 348–349, 352–355, 358–359, 361–362, 364, 367–380, 382–384, 387–389, 391, 397, 400, 406, 414, 417–420, 422
   traversal.py966829%42, 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, 122, 134, 170–171, 174–175, 178–179, 181–183, 194–196, 207–214, 216, 230–232, 248, 259, 267, 270–272, 274–275, 278–279, 283–284, 287–293, 296, 304–305, 307, 313
   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.py5308284%57–58, 152, 367, 501–504, 506, 521, 523, 535, 537–539, 579, 585, 589, 671, 673, 697, 875, 887, 889, 892–894, 897, 923, 925, 1119, 1128, 1135, 1269, 1285, 1288–1290, 1292–1293, 1296, 1298, 1303, 1308, 1311, 1313–1315, 1317, 1363, 1370, 1377, 1382–1383, 1388, 1395, 1397, 1406, 1408, 1411, 1414, 1436–1437, 1440, 1488, 1493, 1495, 1506–1508, 1539, 1545–1547, 1751, 1786, 1824, 1920–1921, 1924–1926
   clickhouse.py41197%86
   duckdb.py951980%49–55, 57, 170–171, 175, 213, 237, 239–240, 250, 257, 263, 268
   ibis.py1322084%103–104, 111, 130, 134, 143, 169, 177–179, 183–184, 186–188, 190, 310, 312, 325, 429
   memory.py79593%107, 109, 117, 119, 145
   system_tables.py1356948%110, 112–113, 116–117, 119–120, 123, 126–127, 219, 313, 315, 317, 320–321, 323–324, 326–327, 329, 331, 349, 351–354, 356–357, 360–361, 363–367, 372, 374, 377, 381, 384, 388–390, 393, 397, 404, 422, 424–425, 428, 430–433, 435, 437, 439–440, 442–444, 447, 450, 453, 456–457, 459, 469
migrations
   detector.py54885%62, 72, 84, 93, 95, 110, 116, 122
   executor.py15473%76–77, 82, 125
   generator.py1231230%3–4, 6, 8–12, 19, 32, 34–35, 38–40, 43–45, 47, 50, 101, 103, 105, 107–108, 112, 115–117, 119, 123–124, 129, 132, 135–140, 144, 152, 154–155, 161–162, 165–168, 177, 180, 185–186, 189, 192–194, 196–197, 200, 203, 211–213, 216–219, 221, 227–229, 232–234, 237–240, 243–244, 247, 249–250, 254–256, 259–260, 267–268, 270–272, 274–275, 278–279, 281–282, 284–285, 288–289, 291, 296, 302, 305, 307, 313, 315–317, 321, 324–326, 328, 333, 337, 339, 348
   loader.py1028813%24, 26, 28–29, 31–32, 35, 38, 40–42, 45, 48–51, 53, 56, 59–60, 66, 75, 91–92, 94–95, 101–106, 108, 111–117, 119, 134–135, 137–138, 140–141, 157, 160, 165–166, 172, 175, 177, 179, 184–185, 192, 209–210, 212–213, 216–219, 221–222, 225–227, 230–231, 233–236, 238–239, 244–247, 250, 253–255, 260
   models.py2191792%116, 193, 231, 238–239, 254, 264, 279, 283, 307, 399, 528–530, 583, 586, 629
   ops.py801581%66–67, 178–179, 191–192, 214, 221, 236, 238, 244, 267–269, 275
models
   feature.py3333988%58–59, 112, 117, 162, 242, 267–268, 272, 353, 493–494, 497–500, 512, 516, 531, 533–534, 537–541, 544, 546, 560, 611, 709–710, 714, 775, 780, 790–791, 794, 1035
   feature_spec.py1803182%123, 134, 145, 156, 167, 202, 221, 226–232, 237, 239, 242–243, 285, 305, 318, 331, 343, 385, 419–420, 456, 495, 507, 519, 531
   field.py611378%45, 54, 63, 72, 81, 90, 103, 105, 136, 146, 156, 166, 177
   plan.py741185%33, 37, 41, 68, 70–71, 73, 110, 112, 150–151
   types.py2013582%63, 68, 73, 78, 83, 158–159, 161, 167, 172, 176, 186, 206, 224, 230, 236, 242, 299, 304, 309, 314, 319, 328, 333–335, 384, 389, 394, 399, 404, 413, 418–420
utils
   hashing.py49491%175, 200, 202, 205
TOTAL5174151270% 

Tests Skipped Failures Errors Time
871 14 💤 4 ❌ 0 🔥 6m 4s ⏱️

@github-actions
Copy link
Contributor

github-actions bot commented Oct 31, 2025

Coverage

Coverage Report (Python 3.12)
FileStmtsMissCoverMissing
__init__.py15473%57, 61–63
_version.py110%1
config.py1831890%9–10, 51, 57, 62, 75–76, 323, 393, 415, 423–424, 426–427, 429, 455, 494, 519
entrypoints.py831384%154, 214, 217–219, 221–222, 224–226, 228, 233–234
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
data_versioning/calculators
   duckdb.py882275%80, 96–101, 103, 111–112, 148–151, 154, 157, 159–160, 162, 207–209
   ibis.py621083%89–91, 118, 131, 213–215, 217–218
data_versioning/diff
   narwhals.py23195%57
data_versioning/joiners
   narwhals.py103793%134, 136, 153, 164, 204, 206, 229
ext
   alembic.py18288%91–92
   sqlmodel.py39197%131
graph
   describe.py1361304%44–45, 51, 54, 59–60, 62–63, 65, 67–69, 71–73, 75–78, 80, 83–86, 89, 94–96, 98–109, 112–115, 118, 128–130, 132, 157–159, 162–165, 167, 171, 173, 178–179, 181–182, 184–185, 187, 189–191, 193–195, 197–199, 204, 206, 212–213, 216, 218–223, 225–226, 228, 254–261, 263, 267, 269, 274–275, 277–278, 280–281, 283, 286–292, 297–298, 300–301, 307–308, 311, 313–318, 320–321, 323
   utils.py11190%17
graph/diff
   diff_models.py117496%68, 80, 166, 291
   differ.py2702092%40, 68, 121–122, 127, 146, 167–168, 173, 186, 188–190, 192, 448, 567, 601, 725–726, 740
   models.py1548346%108, 119, 176, 180, 256, 258–259, 262–264, 267, 270–272, 274–275, 277, 283, 286–288, 291, 294, 302, 305–306, 308, 324, 326–327, 330, 332, 335–343, 345, 348–349, 352–355, 358–359, 361–362, 364, 367–380, 382–384, 387–389, 391, 397, 400, 406, 414, 417–420, 422
   traversal.py966829%42, 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, 122, 134, 170–171, 174–175, 178–179, 181–183, 194–196, 207–214, 216, 230–232, 248, 259, 267, 270–272, 274–275, 278–279, 283–284, 287–293, 296, 304–305, 307, 313
   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.py5308284%57–58, 152, 367, 501–504, 506, 521, 523, 535, 537–539, 579, 585, 589, 671, 673, 697, 875, 887, 889, 892–894, 897, 923, 925, 1119, 1128, 1135, 1269, 1285, 1288–1290, 1292–1293, 1296, 1298, 1303, 1308, 1311, 1313–1315, 1317, 1363, 1370, 1377, 1382–1383, 1388, 1395, 1397, 1406, 1408, 1411, 1414, 1436–1437, 1440, 1488, 1493, 1495, 1506–1508, 1539, 1545–1547, 1751, 1786, 1824, 1920–1921, 1924–1926
   clickhouse.py41197%86
   duckdb.py951980%49–55, 57, 170–171, 175, 213, 237, 239–240, 250, 257, 263, 268
   ibis.py1322084%103–104, 111, 130, 134, 143, 169, 177–179, 183–184, 186–188, 190, 310, 312, 325, 429
   memory.py79593%107, 109, 117, 119, 145
   system_tables.py1356948%110, 112–113, 116–117, 119–120, 123, 126–127, 219, 313, 315, 317, 320–321, 323–324, 326–327, 329, 331, 349, 351–354, 356–357, 360–361, 363–367, 372, 374, 377, 381, 384, 388–390, 393, 397, 404, 422, 424–425, 428, 430–433, 435, 437, 439–440, 442–444, 447, 450, 453, 456–457, 459, 469
migrations
   detector.py54885%62, 72, 84, 93, 95, 110, 116, 122
   executor.py15473%76–77, 82, 125
   generator.py1231230%3–4, 6, 8–12, 19, 32, 34–35, 38–40, 43–45, 47, 50, 101, 103, 105, 107–108, 112, 115–117, 119, 123–124, 129, 132, 135–140, 144, 152, 154–155, 161–162, 165–168, 177, 180, 185–186, 189, 192–194, 196–197, 200, 203, 211–213, 216–219, 221, 227–229, 232–234, 237–240, 243–244, 247, 249–250, 254–256, 259–260, 267–268, 270–272, 274–275, 278–279, 281–282, 284–285, 288–289, 291, 296, 302, 305, 307, 313, 315–317, 321, 324–326, 328, 333, 337, 339, 348
   loader.py1028813%24, 26, 28–29, 31–32, 35, 38, 40–42, 45, 48–51, 53, 56, 59–60, 66, 75, 91–92, 94–95, 101–106, 108, 111–117, 119, 134–135, 137–138, 140–141, 157, 160, 165–166, 172, 175, 177, 179, 184–185, 192, 209–210, 212–213, 216–219, 221–222, 225–227, 230–231, 233–236, 238–239, 244–247, 250, 253–255, 260
   models.py2191792%116, 193, 231, 238–239, 254, 264, 279, 283, 307, 399, 528–530, 583, 586, 629
   ops.py801581%66–67, 178–179, 191–192, 214, 221, 236, 238, 244, 267–269, 275
models
   feature.py3333988%58–59, 112, 117, 162, 242, 267–268, 272, 353, 493–494, 497–500, 512, 516, 531, 533–534, 537–541, 544, 546, 560, 611, 709–710, 714, 775, 780, 790–791, 794, 1035
   feature_spec.py1803182%123, 134, 145, 156, 167, 202, 221, 226–232, 237, 239, 242–243, 285, 305, 318, 331, 343, 385, 419–420, 456, 495, 507, 519, 531
   field.py611378%45, 54, 63, 72, 81, 90, 103, 105, 136, 146, 156, 166, 177
   plan.py741185%33, 37, 41, 68, 70–71, 73, 110, 112, 150–151
   types.py2013582%63, 68, 73, 78, 83, 158–159, 161, 167, 172, 176, 186, 206, 224, 230, 236, 242, 299, 304, 309, 314, 319, 328, 333–335, 384, 389, 394, 399, 404, 413, 418–420
utils
   hashing.py49491%175, 200, 202, 205
TOTAL5174151270% 

Tests Skipped Failures Errors Time
871 14 💤 4 ❌ 0 🔥 5m 44s ⏱️

@geoHeil geoHeil force-pushed the fix/re-add-typechecker branch from 0e4eb3c to d9321c4 Compare October 31, 2025 15:25
@geoHeil geoHeil marked this pull request as ready for review October 31, 2025 15:28
@geoHeil geoHeil requested a review from Copilot October 31, 2025 15:28
@geoHeil
Copy link
Collaborator Author

geoHeil commented Oct 31, 2025

had to launch tests manually though (no code change) https://github.com/anam-org/metaxy/actions/runs/18977281412

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR re-enables the previously commented-out typecheck job in the QA workflow and adds permission controls. The main changes modernize the typecheck job by replacing the Node.js binary workaround with environment variable save/restore operations.

  • Re-enables the typecheck job that runs Basedpyright type checking
  • Replaces Node.js binary replacement logic with environment save/restore steps
  • Adds explicit contents: read permission to the check job
Comments suppressed due to low confidence (1)

.github/workflows/QA.yml:203

  • The check job's needs list is missing typecheck. Since the typecheck job has been re-enabled, it should be added to the needs list to ensure the job is included in the final status check.
    needs:
      - test
      - lint
      - format
      - docs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@geoHeil geoHeil force-pushed the fix/re-add-typechecker branch from b520221 to 5e19916 Compare October 31, 2025 21:11
#- uses: nicknovitski/nix-develop@v1
- name: Run Typecheck in Nix Shell
run: |
nix develop '.#python3.10' -c bash <<'EOF'
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Run nix develop '.#python3.10' -c bash <<'EOF'
nix: symbol lookup error: /nix/store/qhw0sp183mqd04x5jp75981kwya64npv-glibc-2.40-66/lib/libc.so.6: undefined symbol: __tunable_is_initialized, version GLIBC_PRIVATE

now using a temporary nix shell - still failing

Base automatically changed from feat/66-metadata to main November 1, 2025 22:04
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.

3 participants