Skip to content

Conversation

@tswast
Copy link
Collaborator

@tswast tswast commented Aug 5, 2025

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

Fixes internal issue b/436628302 🦕

@tswast tswast requested review from a team as code owners August 5, 2025 21:51
@tswast tswast requested a review from jialuoo August 5, 2025 21:51
@product-auto-label product-auto-label bot added the size: xs Pull request size is extra small. label Aug 5, 2025
@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/python-bigquery-dataframes API. label Aug 5, 2025
@tswast
Copy link
Collaborator Author

tswast commented Aug 5, 2025

Tested locally, successfully:

bigframes/display/anywidget.py                                            101    101     18      0     0%   15-227
bigframes/dtypes.py                                                       374    142    190     33    55%   285, 289, 293, 297, 304, 311, 315, 321, 329, 335, 341, 350, 411, 438, 495, 498, 525->exit, 528, 537-569, 577, 582-585, 596, 598-602, 610, 618, 622, 624, 626, 630, 640, 665-668, 670-678, 683-686, 691, 695-697, 713-722, 728, 731-734, 737, 744, 776, 790-803, 809-831, 837-850, 855, 857, 870, 879->881, 882, 885, 898-903
bigframes/enums.py                                                          7      0      0      0   100%
bigframes/exceptions.py                                                    25      0      2      1    96%   126->128
bigframes/features.py                                                      16      0      2      0   100%
bigframes/formatting_helpers.py                                           144     89     52      7    33%   58, 69-91, 102-119, 142, 146-153, 158-165, 171-172, 174-175, 179-186, 198, 202-207, 211-216, 220, 222-223, 227-234, 245-251, 262, 273, 284, 295, 327-330, 335
bigframes/functions/__init__.py                                             2      0      0      0   100%
bigframes/functions/_function_client.py                                   224     92     60     13    54%   35, 98->exit, 120-122, 180, 221, 240, 242, 244, 252, 312, 334-336, 351-364, 384-519, 555, 572, 606, 622, 635-647
bigframes/functions/_function_session.py                                  184     33     74     25    76%   52, 84, 102, 118, 133, 149, 164->167, 179, 185, 210->205, 215-216, 460, 501, 508-512, 520, 530, 537-539, 546, 587-593, 822, 832, 839-841, 848, 854-855, 897, 946->953
bigframes/functions/_utils.py                                             124     41     40      7    66%   58, 60, 81-88, 101, 124-168, 197, 207, 215, 238, 276-278, 282-292
bigframes/functions/function.py                                           170     89     28      2    42%   21-22, 36-37, 47-62, 74-75, 84-95, 101-112, 116-123, 130-150, 163-191, 221-230, 238, 242, 246, 250, 254, 258, 262, 267-269, 302-308, 312, 316, 320, 324, 328, 332, 336, 340, 345-347
bigframes/functions/function_template.py                                  156     80     30      4    45%   44-45, 95-96, 112, 139, 160-181, 186-226, 231-246, 260-294, 309-312, 325, 329-331
bigframes/functions/function_typing.py                                     48     26     22      4    37%   61-63, 73, 75, 80-84, 92-99, 105-112, 119, 121
bigframes/functions/udf_def.py                                             85     26     16      0    64%   40-42, 54, 60, 64, 70, 85-113, 157, 163-173
bigframes/geopandas/__init__.py                                             2      0      0      0   100%
bigframes/geopandas/geoseries.py                                           50     20      0      0    60%   29, 41-43, 47-49, 62-64, 77-79, 85-88, 91-93, 96, 104
bigframes/ml/__init__.py                                                    1      0      0      0   100%
bigframes/ml/base.py                                                      123     50     14      1    55%   83, 105, 124-133, 137, 147, 151, 166, 174-175, 184, 193-194, 204, 208, 254-280, 288, 299, 323-327, 337, 341, 348, 358, 362, 368
bigframes/ml/cluster.py                                                    68     43     14      0    30%   61-70, 74-84, 89-102, 110-117, 121-126, 132-137, 156-166, 181-185, 192-197
bigframes/ml/compose.py                                                   130     20     40      7    83%   112, 126, 170, 225, 296-297, 300, 304, 307, 314, 339-349, 352-358
bigframes/ml/core.py                                                      198    100     20      2    47%   37-38, 45-48, 99->102, 113, 116, 119, 129, 134, 151, 160-161, 168, 178-179, 194-195, 210, 223-225, 234-240, 243-249, 263-265, 268-270, 273-275, 278-282, 287-291, 296-300, 303-314, 317-331, 341, 391, 423-440, 450-482, 507-516, 531-537, 558-567, 571-576
bigframes/ml/decomposition.py                                             148     62     52      5    52%   64-78, 83-94, 102-112, 116-119, 123-128, 134-139, 144-149, 168-178, 193-197, 204-208, 283-291, 305->308, 317, 332, 349-353, 361, 364-367
bigframes/ml/ensemble.py                                                  234    176     32      0    22%   82-101, 107-115, 120, 151-167, 173-177, 184-192, 204-208, 241-260, 266-274, 279, 310-326, 329-333, 340-348, 361-365, 394-409, 415-423, 428, 456-472, 478-482, 506-514, 527-531, 560-575, 581-589, 594, 622-638, 644-648, 672-680, 693-697
bigframes/ml/forecasting.py                                               118     72     54      1    28%   155-163, 168-200, 231-253, 279-289, 323-326, 347-349, 367-377, 416-425, 448-450, 463-467
bigframes/ml/globals.py                                                     8      0      0      0   100%
bigframes/ml/imported.py                                                  111     80     28      0    22%   46-49, 52-53, 61-65, 77-85, 98-105, 125-128, 131-132, 140-144, 156-164, 177-184, 223-228, 231-248, 259-263, 275-283, 296-303
bigframes/ml/impute.py                                                     40     22      4      0    41%   42-45, 48, 63-65, 81-83, 90-100, 103-109, 120
bigframes/ml/linear_model.py                                              157     51     44     12    61%   92-100, 118, 120, 122, 125, 142-143, 157, 192-202, 221-224, 232, 250-254, 307-322, 347, 350, 367-368, 385, 421-431, 441, 459-469
bigframes/ml/llm.py                                                       291    213     74      0    21%   154-163, 167-192, 200-217, 235-249, 268-269, 301-310, 314-330, 338-355, 374-392, 413-414, 471-493, 497-521, 529-543, 548-552, 579-594, 668-745, 791-815, 829-830, 884-893, 897-913, 921-942, 947-950, 997-1026, 1045-1046
bigframes/ml/loader.py                                                     31     17      6      0    38%   115-121, 125-130, 134-144, 154, 158
bigframes/ml/metrics/__init__.py                                            3      3      0      0     0%   15-30
bigframes/ml/metrics/_metrics.py                                          122    122     14      0     0%   18-358
bigframes/ml/metrics/pairwise.py                                           24     24      0      0     0%   15-80
bigframes/ml/model_selection.py                                            98     98     34      0     0%   20-206
bigframes/ml/pipeline.py                                                   48     20      6      0    52%   98-102, 109-118, 121, 128-132, 145-150
bigframes/ml/preprocessing.py                                             268    142     44      4    42%   47, 60-62, 78-79, 86-96, 99-105, 124, 137-139, 156-157, 164-174, 177-183, 202, 215-217, 234-235, 242-252, 255-261, 282, 292, 305-335, 349-358, 365-375, 378-384, 410, 421, 434-448, 464-474, 481-491, 494-500, 525, 549, 589-599, 602-608, 624-629, 632, 645-648, 663-666, 673-684, 687-693
bigframes/ml/remote.py                                                     33     33      2      0     0%   17-124
bigframes/ml/sql.py                                                       168      9     28      8    91%   43, 194, 229->231, 244->246, 264->266, 276->278, 290->292, 292->294, 294->296, 341-342, 355-356, 426, 435-436
bigframes/ml/utils.py                                                      78     55     24      1    24%   72-74, 89, 93-105, 110-121, 125-138, 145-156, 171-190, 194-203
bigframes/operations/__init__.py                                           21      0      0      0   100%
bigframes/operations/_matplotlib/__init__.py                               11      4      0      0    64%   32-35
bigframes/operations/_matplotlib/core.py                                   91     48     18      0    39%   32, 38-40, 44-47, 54, 58, 61-62, 65-66, 70-84, 91, 97, 103, 107, 118, 124, 127-136, 142-164, 167, 174
bigframes/operations/_matplotlib/hist.py                                   68     52     16      0    19%   28, 36-54, 61-94, 108-130, 140-152, 159-172
bigframes/operations/_op_converters.py                                      8      5      0      0    38%   19-21, 25-33
bigframes/operations/aggregations.py                                      371    108     40      0    64%   34, 44, 59, 66, 73, 86, 91, 95, 99, 106, 113, 120, 128, 137, 145-153, 162, 166-171, 181, 185, 188-190, 202-209, 218-226, 236-238, 246, 266, 278-281, 291, 301, 312, 315, 326, 330, 333, 347, 350-377, 381, 390, 394, 397, 403, 412, 415, 426, 448, 451, 455, 462, 465, 469, 481, 493, 502, 511, 514-516, 525, 528-530, 539, 542-544, 552, 562, 572, 582, 635-646
bigframes/operations/ai.py                                                209    178     88      0    10%   29-34, 89-102, 183-253, 325-338, 408-479, 535-585, 648-697, 747-764, 768-773, 779-783, 789-795, 802-807, 815, 819-822, 827-848
bigframes/operations/array_ops.py                                          37     16     10      0    45%   28-31, 40-48, 59-65
bigframes/operations/base.py                                              141     75     38      9    43%   56, 66, 70, 79-107, 113-117, 119, 121-132, 150, 173-201, 210-214, 219-222, 230, 236, 242-248, 252-253, 270-300, 304
bigframes/operations/base_ops.py                                           83     13      6      1    84%   25, 31, 34, 39, 44, 49, 54, 69, 74, 79, 112, 128, 150
bigframes/operations/blob.py                                              252    209     56      0    14%   50, 57-59, 66-68, 76, 83-88, 95, 106, 117, 129-138, 152-154, 160-178, 185, 194, 214-257, 261, 278-279, 300-301, 324-345, 376-430, 465-528, 563-621, 655-685, 727-766, 803-845
bigframes/operations/blob_ops.py                                           21      4      2      0    74%   34, 42-45
bigframes/operations/bool_ops.py                                            8      0      0      0   100%
bigframes/operations/comparison_ops.py                                     16      0      0      0   100%
bigframes/operations/date_ops.py                                           33      5      4      0    76%   81-89
bigframes/operations/datetime_ops.py                                       66     17     14      2    64%   55, 73, 83, 91-93, 101-103, 111-113, 121-129
bigframes/operations/datetimes.py                                          99     40      6      0    56%   46, 50, 54, 58, 62, 66, 70, 74, 78, 81-87, 92, 96, 100, 104, 109-111, 115-117, 121-123, 126-128, 131-133, 138-144, 149, 152, 155, 158
bigframes/operations/distance_ops.py                                        8      0      0      0   100%
bigframes/operations/frequency_ops.py                                      30      3      0      0    90%   33, 47, 61
bigframes/operations/generic_ops.py                                        83      8      4      2    89%   75, 84, 106, 118, 133, 155, 159, 171
bigframes/operations/geo_ops.py                                            36      2      0      0    94%   99, 108
bigframes/operations/json_ops.py                                           97     43     22      0    45%   31-37, 46-52, 63-69, 80-86, 96-102, 110-116, 125-138, 147-153, 162-168, 179-185
bigframes/operations/lists.py                                              21      6      4      0    60%   36, 39-44
bigframes/operations/numeric_ops.py                                       168     58     60     15    55%   146, 150, 152, 155, 158, 161, 168, 184, 187, 190, 193, 196, 199, 202, 210, 221-240, 251-271, 282-299, 310-329
bigframes/operations/numpy_op_maps.py                                       4      0      0      0   100%
bigframes/operations/plotting.py                                           32     14      2      0    53%   33-50, 53, 58, 66, 75, 83, 93
bigframes/operations/remote_function_ops.py                                32      6      0      0    81%   31, 34, 44, 47, 57, 60
bigframes/operations/semantics.py                                         335    297    134      0     8%   113-230, 290-315, 365-421, 485-545, 614-682, 737-784, 851-919, 931-982, 1046-1092, 1096-1101, 1107-1111, 1117-1123, 1130-1135, 1143, 1147-1150, 1155-1176
bigframes/operations/string_ops.py                                        158     27      6      0    80%   100, 109, 118, 129, 138, 147, 156, 166, 176, 185, 194-198, 207, 216, 227-230, 240, 250, 259, 268-272
bigframes/operations/strings.py                                           147     95     38      0    28%   43-48, 56, 59, 62, 85, 92, 95, 100, 103, 108, 113, 118, 123, 128, 133, 138, 141, 146, 151, 154, 158-159, 164-165, 168, 171, 176, 181, 188-196, 199-222, 233-252, 258-260, 266-268, 275-280, 283, 286, 296, 318-320, 324-344
bigframes/operations/struct_ops.py                                         31     15      6      0    43%   31-40, 49-63
bigframes/operations/structs.py                                            41     21      6      0    43%   35-41, 44-47, 52-53, 67, 70-82
bigframes/operations/time_ops.py                                           11      0      0      0   100%
bigframes/operations/timedelta_ops.py                                      57     23     16      0    47%   29-35, 48-51, 63-74, 88-94, 108-120, 134-140
bigframes/operations/type.py                                              148     61     48      2    45%   35, 41, 57, 75, 88-92, 100-107, 117-121, 132-136, 145-149, 159-167, 179-185, 197, 208-218, 228-236
bigframes/pandas/__init__.py                                              105     23     10      2    75%   64-67, 96, 125, 149, 170, 192, 203, 218, 240, 277-296, 331, 338, 345, 358->366, 360->366, 363-364
bigframes/pandas/core/__init__.py                                           0      0      0      0   100%
bigframes/pandas/core/api.py                                                2      0      0      0   100%
bigframes/pandas/core/methods/__init__.py                                   0      0      0      0   100%
bigframes/pandas/core/methods/describe.py                                  38     38     18      0     0%   15-129
bigframes/pandas/core/tools/__init__.py                                     0      0      0      0   100%
bigframes/pandas/core/tools/timedeltas.py                                  30     21     18      0    19%   33-40, 49-70
bigframes/pandas/io/__init__.py                                             0      0      0      0   100%
bigframes/pandas/io/api.py                                                145     65     16      0    50%   89-90, 129, 161, 190, 206, 221-222, 246-253, 268-275, 285, 295, 322-353, 362, 374, 399, 415, 430-431, 460, 475, 489-490, 512, 521, 530, 538, 555, 573, 588, 601, 615-625, 629-635, 639, 653-672
bigframes/series.py                                                      1076    617    228      7    36%   81, 111, 119, 131-133, 138, 143, 148, 153, 161-162, 166, 170, 174, 178, 183, 187, 196, 206-208, 212, 216, 220, 225, 229, 233, 237-241, 245, 248, 251, 256, 261, 264, 271, 281, 291, 307-333, 347, 354, 364, 374, 392, 405-407, 416-422, 463-466, 556-596, 654-659, 662-663, 674-696, 700-701, 705-711, 715-716, 719, 722-728, 733-746, 755, 759-760, 767-768, 772, 776, 780, 784-785, 789-790, 795-796, 807, 810, 815-831, 834-843, 846-861, 864-894, 899-902, 912-917, 921, 925, 952-966, 970, 973-977, 982-986, 991-1000, 1005, 1011, 1017, 1024, 1031, 1038, 1043, 1048, 1051, 1054, 1059, 1064, 1067, 1073, 1078, 1083, 1086, 1092, 1097, 1102, 1105, 1114, 1119, 1124, 1127, 1130, 1135, 1140, 1143, 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170, 1175, 1180, 1183, 1188, 1193, 1196, 1199, 1204, 1209-1211, 1214-1217, 1220, 1223, 1226, 1231-1239, 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1263, 1266, 1269, 1275-1277, 1280-1293, 1301-1303, 1306-1319, 1322-1335, 1341-1369, 1372, 1375-1378, 1381-1392, 1395, 1398, 1404, 1407, 1410, 1415, 1418, 1421, 1425, 1429, 1432-1437, 1440-1444, 1447-1460, 1464-1471, 1477-1484, 1490-1510, 1514-1524, 1528-1538, 1543, 1550, 1556-1573, 1586-1601, 1605, 1610, 1615-1619, 1629-1636, 1648, 1660, 1671-1686, 1692, 1698, 1705-1722, 1731-1741, 1751-1752, 1769-1782, 1790, 1805-1834, 1848-1893, 1900-1923, 1927, 1931, 1936-1938, 1947-1986, 1990-2015, 2019, 2022-2025, 2028-2037, 2040-2045, 2052-2064, 2067-2072, 2084, 2124, 2186-2188, 2235-2241, 2250-2274, 2285-2290, 2297, 2358-2367, 2376-2388, 2392, 2397, 2407, 2418, 2428, 2438, 2454, 2457-2458, 2464
bigframes/session/__init__.py                                             427    175    116     20    56%   84-87, 138, 274, 282, 294, 309, 326-329, 333, 338, 343-352, 356, 399, 415, 433, 437, 452, 484, 494, 556, 572, 646, 650, 676, 691, 729, 733, 766-779, 803-809, 818, 827, 836, 905-912, 914, 934, 955, 957, 959, 965, 1092-1107, 1134->1140, 1141, 1144->1148, 1153, 1166-1196, 1206-1217, 1226-1263, 1279-1342, 1345-1362, 1623, 1839, 2011, 2019-2026, 2036-2057, 2061-2085, 2089, 2095, 2126-2131, 2141-2157, 2180-2184, 2188
bigframes/session/_io/__init__.py                                           0      0      0      0   100%
bigframes/session/_io/bigquery/__init__.py                                188     40     60      7    77%   88-101, 116, 137, 139, 160-167, 224-226, 253, 268, 284, 300, 337, 348-351, 355, 385-395, 454, 524, 536, 541, 584-585
bigframes/session/_io/bigquery/read_gbq_query.py                           23      1      0      0    96%   41
bigframes/session/_io/bigquery/read_gbq_table.py                          116     25     58     11    75%   42, 103, 107-113, 116-122, 137-140, 154-160, 263-264, 273-275, 277-282, 287, 289-302
bigframes/session/_io/pandas.py                                            50      1     16      1    97%   52
bigframes/session/anonymous_dataset.py                                     42     12      2      1    70%   54, 58, 69-78, 85-92, 99-101, 127
bigframes/session/bigquery_session.py                                      88     15     16      7    79%   79-83, 96, 99, 106, 125, 129-143, 156, 166-167, 171->exit
bigframes/session/bq_caching_executor.py                                  295    152    104     20    43%   70, 106-123, 131-136, 175-177, 191, 205, 209, 227-236, 251, 257-259, 262-263, 273-279, 306-308, 319-344, 349-352, 361-382, 398, 402->405, 419-436, 448, 465-479, 485-500, 508-521, 526-535, 539-553, 561-576, 583-597, 612, 620-633, 638-647, 665-710, 725, 728, 729->726, 733, 741
bigframes/session/clients.py                                              147     22     50      9    79%   54, 91-94, 120-126, 171, 175, 204->207, 207->223, 239, 264, 270, 291-318
bigframes/session/direct_gbq_execution.py                                  19     19      0      0     0%   14-76
bigframes/session/dry_runs.py                                              68     23     12      3    65%   26-54, 64, 69, 115-116
bigframes/session/environment.py                                           38      4      6      2    86%   49, 60, 67-68
bigframes/session/executor.py                                              75     13     14      3    78%   58-64, 89-105, 113, 118
bigframes/session/loader.py                                               387    184    148     29    47%   65-66, 92, 102, 106, 140-151, 159-165, 181-189, 204-227, 286-301, 308-318, 339-377, 389-413, 425-467, 474-479, 502, 525, 614, 641, 648-663, 666-672, 689-690, 703-725, 728, 756->758, 778, 829-836, 845, 860-886, 903, 920, 938->941, 942, 949-950, 968-969, 986->988, 1023-1030, 1034->1046, 1056, 1088-1089, 1101, 1128-1134, 1144, 1212-1220, 1227-1236, 1252-1255
bigframes/session/local_scan_executor.py                                   26      1     12      2    92%   40->44, 51
bigframes/session/metrics.py                                               73     37     14      2    46%   63-82, 99-117, 141-166
bigframes/session/planner.py                                               33      4     10      1    84%   57-61
bigframes/session/polars_executor.py                                       54     54     22      0     0%   14-135
bigframes/session/read_api_execution.py                                    62     41     24      3    28%   45-113, 134, 138-141
bigframes/session/semi_executor.py                                          6      0      0      0   100%
bigframes/session/temporary_storage.py                                     10      3      0      0    70%   23, 28, 32
bigframes/session/time.py                                                  25      2      4      2    86%   38, 50
bigframes/session/validation.py                                             4      0      0      0   100%
bigframes/streaming/__init__.py                                            10     10      0      0     0%   15-34
bigframes/streaming/dataframe.py                                          120    120     22      0     0%   16-537
bigframes/testing/__init__.py                                               0      0      0      0   100%
bigframes/testing/compiler_session.py                                      12     12      2      0     0%   15-41
bigframes/testing/engine_utils.py                                          12     12      0      0     0%   15-34
bigframes/testing/mocks.py                                                 86      1     18      2    97%   108, 138->142
bigframes/testing/polars_session.py                                        49     49      2      0     0%   15-123
bigframes/testing/utils.py                                                189    155     74      0    13%   72-74, 80-82, 86-99, 105-113, 117, 121-124, 134-226, 248-279, 295-302, 319-331, 338-347, 359-379, 386-388, 392, 404-436, 443-450
bigframes/version.py                                                        2      0      0      0   100%
tests/unit/__init__.py                                                      0      0      0      0   100%
tests/unit/_config/__init__.py                                              0      0      0      0   100%
tests/unit/_config/test_bigquery_options.py                                75      0      4      0   100%
tests/unit/_config/test_compute_options.py                                  5      0      0      0   100%
tests/unit/_config/test_experiment_options.py                              19      0      0      0   100%
tests/unit/_config/test_threaded_options.py                                18      0      0      0   100%
tests/unit/_tools/__init__.py                                               0      0      0      0   100%
tests/unit/_tools/test_strings.py                                          55      0      6      0   100%
tests/unit/bigquery/__init__.py                                             0      0      0      0   100%
tests/unit/bigquery/test_json.py                                            8      0      0      0   100%
tests/unit/core/__init__.py                                                 0      0      0      0   100%
tests/unit/core/compile/__init__.py                                         0      0      0      0   100%
tests/unit/core/compile/googlesql/__init__.py                               0      0      0      0   100%
tests/unit/core/compile/googlesql/test_expression.py                        8      0      0      0   100%
tests/unit/core/compile/googlesql/test_function.py                          5      0      0      0   100%
tests/unit/core/compile/googlesql/test_query.py                            78      0      0      0   100%
tests/unit/core/compile/sqlglot/__init__.py                                 0      0      0      0   100%
tests/unit/core/compile/sqlglot/aggregations/__init__.py                    0      0      0      0   100%
tests/unit/core/compile/sqlglot/aggregations/test_op_registration.py       20      1      0      0    95%   40
tests/unit/core/compile/sqlglot/aggregations/test_unary_compiler.py        18     13      0      0    28%   24-51
tests/unit/core/compile/sqlglot/aggregations/test_windows.py               41      1      2      1    95%   141
tests/unit/core/compile/sqlglot/conftest.py                                92     44      0      0    52%   35-46, 52, 58, 64, 72, 77, 99-101, 109-116, 123-126, 131, 156-160, 168-185, 190, 206-210, 218-224, 229, 239-244, 251-273
tests/unit/core/compile/sqlglot/expressions/__init__.py                     0      0      0      0   100%
tests/unit/core/compile/sqlglot/expressions/test_binary_compiler.py        30     24      0      0    20%   26-71
tests/unit/core/compile/sqlglot/expressions/test_op_registration.py        20      1      0      0    95%   40
tests/unit/core/compile/sqlglot/expressions/test_unary_compiler.py        387    382      0      0     1%   24-690
tests/unit/core/compile/sqlglot/test_compile_aggregate.py                   9      6      0      0    33%   22-33
tests/unit/core/compile/sqlglot/test_compile_concat.py                     10      5      0      0    50%   24-32
tests/unit/core/compile/sqlglot/test_compile_explode.py                    10      7      0      0    30%   23-31
tests/unit/core/compile/sqlglot/test_compile_filter.py                      7      4      0      0    43%   22-25
tests/unit/core/compile/sqlglot/test_compile_join.py                       31     28      0      0    10%   22-61
tests/unit/core/compile/sqlglot/test_compile_random_sample.py               9      4      0      0    56%   24-35
tests/unit/core/compile/sqlglot/test_compile_readlocal.py                  17     12      0      0    29%   24-60
tests/unit/core/compile/sqlglot/test_compile_readtable.py                  19     16      0      0    16%   22-49
tests/unit/core/compile/sqlglot/test_sqlglot_types.py                      33      0      0      0   100%
tests/unit/core/test_bf_utils.py                                           23      0      0      0   100%
tests/unit/core/test_blocks.py                                             21      0      0      0   100%
tests/unit/core/test_dtypes.py                                             61      0      0      0   100%
tests/unit/core/test_expression.py                                         51      0      0      0   100%
tests/unit/core/test_guid.py                                               32      1      2      1    94%   41
tests/unit/core/test_indexes.py                                             9      0      0      0   100%
tests/unit/core/test_log_adapter.py                                        84      0      2      0   100%
tests/unit/core/test_pyarrow_utils.py                                      23      0      4      0   100%
tests/unit/core/test_pyformat.py                                           64      0      0      0   100%
tests/unit/core/test_rewrite.py                                            25      0      0      0   100%
tests/unit/core/test_slices.py                                             11      0      0      0   100%
tests/unit/core/test_sql.py                                                20      0      0      0   100%
tests/unit/core/test_windowspec.py                                         18      0      0      0   100%
tests/unit/core/tools/__init__.py                                           0      0      0      0   100%
tests/unit/core/tools/test_bigquery_schema.py                              15      0      0      0   100%
tests/unit/core/tools/test_datetimes.py                                    18      0      0      0   100%
tests/unit/functions/__init__.py                                            0      0      0      0   100%
tests/unit/functions/test_function_template.py                             35      0      0      0   100%
tests/unit/functions/test_remote_function.py                               55      4      0      0    93%   98, 112, 128, 140
tests/unit/functions/test_remote_function_utils.py                         19      0      2      0   100%
tests/unit/ml/__init__.py                                                   0      0      0      0   100%
tests/unit/ml/test_api_primitives.py                                       27      0      0      0   100%
tests/unit/ml/test_compose.py                                             135      1      2      0    99%   482
tests/unit/ml/test_forecasting.py                                          18      0      0      0   100%
tests/unit/ml/test_golden_sql.py                                          112      0      0      0   100%
tests/unit/ml/test_matrix_factorization.py                                 46      0      0      0   100%
tests/unit/ml/test_pipeline.py                                             16      0      0      0   100%
tests/unit/ml/test_sql.py                                                 122      0      0      0   100%
tests/unit/operations/__init__.py                                           0      0      0      0   100%
tests/unit/pandas/io/test_api.py                                           34     28      0      0    18%   27-80
tests/unit/session/__init__.py                                              0      0      0      0   100%
tests/unit/session/test_clients.py                                        129      2      2      0    98%   89-90
tests/unit/session/test_io_arrow.py                                        47      0      0      0   100%
tests/unit/session/test_io_bigquery.py                                    147      0     12      0   100%
tests/unit/session/test_io_pandas.py                                       35      0      2      0   100%
tests/unit/session/test_local_scan_executor.py                             28      0      0      0   100%
tests/unit/session/test_read_gbq_colab.py                                  45      0     10      1    98%   116->120
tests/unit/session/test_read_gbq_query.py                                  11      0      4      1    93%   32->36
tests/unit/session/test_read_gbq_table.py                                  19      0      0      0   100%
tests/unit/session/test_session.py                                        175      1      2      1    99%   458
tests/unit/session/test_time.py                                            28     14      2      0    47%   39-42, 52-68
tests/unit/test_clients.py                                                 31      0      0      0   100%
tests/unit/test_constants.py                                                6      0      0      0   100%
tests/unit/test_daemon.py                                                  18      0      0      0   100%
tests/unit/test_dataframe.py                                               59      0      0      0   100%
tests/unit/test_dataframe_io.py                                            15      0      0      0   100%
tests/unit/test_dataframe_polars.py                                      1987   1969     46      0     1%   42-4429
tests/unit/test_features.py                                                19      0      0      0   100%
tests/unit/test_formatting_helpers.py                                      34      0      0      0   100%
tests/unit/test_index.py                                                   15      0      0      0   100%
tests/unit/test_local_data.py                                              52      0      2      1    98%   103->107
tests/unit/test_local_engine.py                                           103     96      0      0     7%   24-233
tests/unit/test_notebook.py                                                 3      0      0      0   100%
tests/unit/test_pandas.py                                                  57      1      6      1    97%   56
tests/unit/test_planner.py                                                 48      0      0      0   100%
tests/unit/test_sequences.py                                               21      0      2      0   100%
tests/unit/test_series.py                                                  28      0      0      0   100%
tests/unit/test_series_io.py                                               13      0      0      0   100%
-------------------------------------------------------------------------------------------------------------------
TOTAL                                                                   30266  15173   6492    626    46%
722 passed, 16 skipped, 2 xfailed, 175 warnings in 85.53s (0:01:25)
nox > Session unit_prerelease was successful.

@tswast tswast enabled auto-merge (squash) August 5, 2025 21:56
@tswast tswast merged commit 7acc2f1 into main Aug 5, 2025
18 of 25 checks passed
@tswast tswast deleted the tswast-patch-1 branch August 5, 2025 22:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigquery Issues related to the googleapis/python-bigquery-dataframes API. size: xs Pull request size is extra small.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants