Skip to content

Explicitly test/support python 3.13 and 3.14#490

Merged
sundarshankar89 merged 22 commits intomainfrom
refresh
Mar 13, 2026
Merged

Explicitly test/support python 3.13 and 3.14#490
sundarshankar89 merged 22 commits intomainfrom
refresh

Conversation

@asnare
Copy link
Contributor

@asnare asnare commented Mar 3, 2026

The primary purpose of this PR is to extend the CI/CD and project metadata to cover Python 3.13 and 3.14.

Changes include:

  • Switching to Hatch-controlled python versions, defaulting to 3.10, with support for 3.11 thru 3.14.
  • Updating CI/CD to also cover 3.13 and 3.14.

Some incidental changes include:

  • Upgrading actions/checkout: 4.2.2 → 6.x
  • Upgrading actions/setup-python: 5.x → 6.x
  • Upgrading Hatch: 1.9.4 → 1.16.5

@asnare asnare added this to UCX Mar 3, 2026
@asnare asnare added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Mar 3, 2026
@asnare asnare self-assigned this Mar 3, 2026
@asnare asnare moved this to Ready for Review in UCX Mar 3, 2026
@github-actions
Copy link

github-actions bot commented Mar 3, 2026

❌ 33/36 passed, 3 failed, 4 skipped, 27m7s total

❌ test_dashboards_creates_exported_dashboard_definition: assert {'datasets': ...: 'queries'}]} == {'datasets': ...: 'queries'}]} (2.014s)
assert {'datasets': ...: 'queries'}]} == {'datasets': ...: 'queries'}]}
  
  Omitting 1 identical items, use -vv to show
  Differing items:
  {'datasets': [{'displayName': 'counter', 'name': 'counter', 'query': 'SELECT 6217 AS count'}, {'displayName': 'office_...0 University Ave, Suite 722', 'Berkeley', 'CA', '94704', 'USA') AS tab(Address, City, State, `Zip Code`, Country)\n"}]} != {'datasets': [{'displayName': 'counter', 'name': 'counter'}, {'displayName': 'office_locations', 'name': 'office_locations'}]}
  
  Full diff:
    {
        'datasets': [
            {
                'displayName': 'counter',
                'name': 'counter',
  +             'query': 'SELECT 6217 AS count',
            },
            {
                'displayName': 'office_locations',
                'name': 'office_locations',
  +             'query': 'SELECT\n'
  +             '  Address,\n'
  +             '  City,\n'
  +             '  State,\n'
  +             '  `Zip Code`,\n'
  +             '  Country\n'
  +             'FROM\n'
  +             'VALUES\n'
  +             "  ('160 Spear St 15th Floor', 'San Francisco', 'CA', '94105', "
  +             "'USA'),\n"
  +             "  ('756 W Peachtree St NW, Suite 03W114', 'Atlanta', 'GA', "
  +             "'30308', 'USA'),\n"
  +             "  ('500 108th Ave NE, Suite 1820', 'Bellevue', 'WA', '98004', "
  +             "'USA'),\n"
  +             "  ('125 High St, Suite 220', 'Boston', 'MA', '02110', 'USA'),\n"
  +             "  ('2120 University Ave, Suite 722', 'Berkeley', 'CA', '94704', "
  +             "'USA') AS tab(Address, City, State, `Zip Code`, Country)\n",
            },
        ],
        'pages': [
            {
                'displayName': 'queries',
                'layout': [
                    {
                        'position': {
                            'height': 3,
                            'width': 1,
                            'x': 0,
                            'y': 0,
                        },
                        'widget': {
                            'name': 'counter',
                            'queries': [
                                {
                                    'name': 'main_query',
                                    'query': {
                                        'datasetName': 'counter',
                                        'disaggregated': True,
                                        'fields': [
                                            {
                                                'expression': '`count`',
                                                'name': 'count',
                                            },
                                        ],
                                    },
                                },
                            ],
                            'spec': {
                                'encodings': {
                                    'value': {
                                        'displayName': 'count',
                                        'fieldName': 'count',
                                    },
                                },
                                'version': 2,
                                'widgetType': 'counter',
                            },
                        },
                    },
                    {
                        'position': {
                            'height': 5,
                            'width': 3,
                            'x': 1,
                            'y': 0,
                        },
                        'widget': {
                            'name': 'table',
                            'queries': [
                                {
                                    'name': 'main_query',
                                    'query': {
                                        'datasetName': 'office_locations',
                                        'disaggregated': True,
                                        'fields': [
                                            {
                                                'expression': '`Address`',
                                                'name': 'Address',
                                            },
                                            {
                                                'expression': '`City`',
                                                'name': 'City',
                                            },
                                            {
                                                'expression': '`State`',
                                                'name': 'State',
                                            },
                                            {
                                                'expression': '`Zip Code`',
                                                'name': 'Zip Code',
                                            },
                                            {
                                                'expression': '`Country`',
                                                'name': 'Country',
                                            },
                                        ],
                                    },
                                },
                            ],
                            'spec': {
                                'allowHTMLByDefault': False,
                                'condensed': True,
                                'encodings': {
                                    'columns': [
                                        {
                                            'alignContent': 'left',
                                            'allowHTML': False,
                                            'allowSearch': False,
                                            'booleanValues': [
                                                'false',
                                                'true',
                                            ],
                                            'displayAs': 'string',
                                            'displayName': 'Address',
                                            'fieldName': 'Address',
                                            'highlightLinks': False,
                                            'imageHeight': '',
                                            'imageTitleTemplate': '{{ @ }}',
                                            'imageUrlTemplate': '{{ @ }}',
                                            'imageWidth': '',
                                            'linkOpenInNewTab': True,
                                            'linkTextTemplate': '{{ @ }}',
                                            'linkTitleTemplate': '{{ @ }}',
                                            'linkUrlTemplate': '{{ @ }}',
                                            'order': 100000,
                                            'preserveWhitespace': False,
                                            'title': 'Address',
                                            'type': 'string',
                                            'useMonospaceFont': False,
                                            'visible': True,
                                        },
                                        {
                                            'alignContent': 'left',
                                            'allowHTML': False,
                                            'allowSearch': False,
                                            'booleanValues': [
                                                'false',
                                                'true',
                                            ],
                                            'displayAs': 'string',
                                            'displayName': 'City',
                                            'fieldName': 'City',
                                            'highlightLinks': False,
                                            'imageHeight': '',
                                            'imageTitleTemplate': '{{ @ }}',
                                            'imageUrlTemplate': '{{ @ }}',
                                            'imageWidth': '',
                                            'linkOpenInNewTab': True,
                                            'linkTextTemplate': '{{ @ }}',
                                            'linkTitleTemplate': '{{ @ }}',
                                            'linkUrlTemplate': '{{ @ }}',
                                            'order': 100001,
                                            'preserveWhitespace': False,
                                            'title': 'City',
                                            'type': 'string',
                                            'useMonospaceFont': False,
                                            'visible': True,
                                        },
                                        {
                                            'alignContent': 'left',
                                            'allowHTML': False,
                                            'allowSearch': False,
                                            'booleanValues': [
                                                'false',
                                                'true',
                                            ],
                                            'displayAs': 'string',
                                            'displayName': 'State',
                                            'fieldName': 'State',
                                            'highlightLinks': False,
                                            'imageHeight': '',
                                            'imageTitleTemplate': '{{ @ }}',
                                            'imageUrlTemplate': '{{ @ }}',
                                            'imageWidth': '',
                                            'linkOpenInNewTab': True,
                                            'linkTextTemplate': '{{ @ }}',
                                            'linkTitleTemplate': '{{ @ }}',
                                            'linkUrlTemplate': '{{ @ }}',
                                            'order': 100002,
                                            'preserveWhitespace': False,
                                            'title': 'State',
                                            'type': 'string',
                                            'useMonospaceFont': False,
                                            'visible': True,
                                        },
                                        {
                                            'alignContent': 'left',
                                            'allowHTML': False,
                                            'allowSearch': False,
                                            'booleanValues': [
                                                'false',
                                                'true',
                                            ],
                                            'displayAs': 'string',
                                            'displayName': 'Zip Code',
                                            'fieldName': 'Zip Code',
                                            'highlightLinks': False,
                                            'imageHeight': '',
                                            'imageTitleTemplate': '{{ @ }}',
                                            'imageUrlTemplate': '{{ @ }}',
                                            'imageWidth': '',
                                            'linkOpenInNewTab': True,
                                            'linkTextTemplate': '{{ @ }}',
                                            'linkTitleTemplate': '{{ @ }}',
                                            'linkUrlTemplate': '{{ @ }}',
                                            'order': 100003,
                                            'preserveWhitespace': False,
                                            'title': 'Zip Code',
                                            'type': 'string',
                                            'useMonospaceFont': False,
                                            'visible': True,
                                        },
                                        {
                                            'alignContent': 'left',
                                            'allowHTML': False,
                                            'allowSearch': False,
                                            'booleanValues': [
                                                'false',
                                                'true',
                                            ],
                                            'displayAs': 'string',
                                            'displayName': 'Country',
                                            'fieldName': 'Country',
                                            'highlightLinks': False,
                                            'imageHeight': '',
                                            'imageTitleTemplate': '{{ @ }}',
                                            'imageUrlTemplate': '{{ @ }}',
                                            'imageWidth': '',
                                            'linkOpenInNewTab': True,
                                            'linkTextTemplate': '{{ @ }}',
                                            'linkTitleTemplate': '{{ @ }}',
                                            'linkUrlTemplate': '{{ @ }}',
                                            'order': 100004,
                                            'preserveWhitespace': False,
                                            'title': 'Country',
                                            'type': 'string',
                                            'useMonospaceFont': False,
                                            'visible': True,
                                        },
                                    ],
                                },
                                'invisibleColumns': [],
                                'itemsPerPage': 25,
                                'paginationSize': 'TEST_SCHEMA',
                                'version': 1,
                                'widgetType': 'table',
                                'withRowNumber': False,
                            },
                        },
                    },
                ],
                'name': 'queries',
            },
        ],
    }
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
[gw9] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:07 DEBUG [databricks.sdk] POST /api/2.0/lakeview/dashboards
> {
>   "display_name": "created_by_lsql_9birNaeX0oo50gmh"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.376Z",
<   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
<   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
<   "etag": "366538604",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
<   "serialized_dashboard": "{}\n",
<   "update_time": "2026-03-11T13:07:31.428Z"
< }
13:07 DEBUG [databricks.sdk] PATCH /api/2.0/lakeview/dashboards/01f11d4b434513158b9564b5bca63a2b
> {
>   "create_time": "2026-03-11T13:07:31.376Z",
>   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
>   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
>   "etag": "366538604",
>   "lifecycle_state": "ACTIVE",
>   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
>   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
>   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"6e3ba8d4\",\n      \"displayName\": \"counter\",\n      \"query\":... (8678 more bytes)",
>   "update_time": "2026-03-11T13:07:31.428Z"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.376Z",
<   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
<   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
<   "etag": "126972076",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
<   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"6e3ba8d4\",\n      \"displayName\": \"counter\",\n      \"queryLi... (8907 more bytes)",
<   "update_time": "2026-03-11T13:07:31.688Z"
< }
13:07 DEBUG [databricks.sdk] GET /api/2.0/workspace/export?path=/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json&direct_download=true&format=SOURCE
< 200 OK
< [raw stream]
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:07 DEBUG [databricks.sdk] POST /api/2.0/lakeview/dashboards
> {
>   "display_name": "created_by_lsql_9birNaeX0oo50gmh"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.376Z",
<   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
<   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
<   "etag": "366538604",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
<   "serialized_dashboard": "{}\n",
<   "update_time": "2026-03-11T13:07:31.428Z"
< }
13:07 DEBUG [databricks.sdk] PATCH /api/2.0/lakeview/dashboards/01f11d4b434513158b9564b5bca63a2b
> {
>   "create_time": "2026-03-11T13:07:31.376Z",
>   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
>   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
>   "etag": "366538604",
>   "lifecycle_state": "ACTIVE",
>   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
>   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
>   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"6e3ba8d4\",\n      \"displayName\": \"counter\",\n      \"query\":... (8678 more bytes)",
>   "update_time": "2026-03-11T13:07:31.428Z"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.376Z",
<   "dashboard_id": "01f11d4b434513158b9564b5bca63a2b",
<   "display_name": "created_by_lsql_9birNaeX0oo50gmh",
<   "etag": "126972076",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json",
<   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"6e3ba8d4\",\n      \"displayName\": \"counter\",\n      \"queryLi... (8907 more bytes)",
<   "update_time": "2026-03-11T13:07:31.688Z"
< }
13:07 DEBUG [databricks.sdk] GET /api/2.0/workspace/export?path=/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_9birNaeX0oo50gmh.lvdash.json&direct_download=true&format=SOURCE
< 200 OK
< [raw stream]
13:07 DEBUG [databricks.sdk] DELETE /api/2.0/lakeview/dashboards/01f11d4b434513158b9564b5bca63a2b
< 200 OK
< {}
[gw9] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python
❌ test_dashboard_deploys_dashboard_the_same_as_created_dashboard: AssertionError: assert {'datasets': ...GiaSLJCAuD'}]} == {'datasets': ...GiaSLJCAuD'}]} (1.886s)
AssertionError: assert {'datasets': ...GiaSLJCAuD'}]} == {'datasets': ...GiaSLJCAuD'}]}
  
  Omitting 1 identical items, use -vv to show
  Differing items:
  {'datasets': [{'displayName': 'counter', 'name': 'counter', 'query': 'SELECT 10 AS count'}]} != {'datasets': [{'displayName': 'counter', 'name': 'counter'}]}
  
  Full diff:
    {
        'datasets': [
            {
                'displayName': 'counter',
                'name': 'counter',
  +             'query': 'SELECT 10 AS count',
            },
        ],
        'pages': [
            {
                'displayName': 'created_by_lsql_ryy1kFGiaSLJCAuD',
                'layout': [
                    {
                        'position': {
                            'height': 3,
                            'width': 1,
                            'x': 0,
                            'y': 0,
                        },
                        'widget': {
                            'name': 'counter',
                            'queries': [
                                {
                                    'name': 'main_query',
                                    'query': {
                                        'datasetName': 'counter',
                                        'disaggregated': True,
                                        'fields': [
                                            {
                                                'expression': '`count`',
                                                'name': 'count',
                                            },
                                        ],
                                    },
                                },
                            ],
                            'spec': {
                                'encodings': {
                                    'value': {
                                        'displayName': 'count',
                                        'fieldName': 'count',
                                    },
                                },
                                'frame': {
                                    'description': '',
                                    'showDescription': False,
                                    'showTitle': False,
                                    'title': '',
                                },
                                'version': 2,
                                'widgetType': 'counter',
                            },
                        },
                    },
                ],
                'name': 'created_by_lsql_ryy1kFGiaSLJCAuD',
            },
        ],
    }
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
[gw5] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:07 DEBUG [databricks.sdk] POST /api/2.0/lakeview/dashboards
> {
>   "display_name": "created_by_lsql_nDqv1C0NDwhQJaLt"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.955Z",
<   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
<   "display_name": "created_by_lsql_nDqv1C0NDwhQJaLt",
<   "etag": "366538604",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_nDqv1C0NDwhQJaLt.lvdash.json",
<   "serialized_dashboard": "{}\n",
<   "update_time": "2026-03-11T13:07:31.985Z"
< }
13:07 DEBUG [databricks.sdk] PATCH /api/2.0/lakeview/dashboards/01f11d4b439d1063a1fae3cda06cc453
> {
>   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
>   "display_name": "created_by_lsql_ryy1kFGiaSLJCAuD",
>   "serialized_dashboard": "{\"datasets\": [{\"displayName\": \"counter\", \"name\": \"counter\", \"query\": \"SELECT 10 AS count\"}], \"pa... (574 more bytes)"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.955Z",
<   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
<   "display_name": "created_by_lsql_ryy1kFGiaSLJCAuD",
<   "etag": "-2641948153",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_ryy1kFGiaSLJCAuD.lvdash.json",
<   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"counter\",\n      \"displayName\": \"counter\",\n      \"queryLin... (1350 more bytes)",
<   "update_time": "2026-03-11T13:07:32.224Z"
< }
13:07 DEBUG [databricks.sdk] GET /api/2.0/workspace/export?path=/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_ryy1kFGiaSLJCAuD.lvdash.json&direct_download=true&format=SOURCE
< 200 OK
< [raw stream]
13:07 DEBUG [databricks.sdk] Loaded from environment
13:07 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:07 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:07 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:07 DEBUG [databricks.sdk] POST /api/2.0/lakeview/dashboards
> {
>   "display_name": "created_by_lsql_nDqv1C0NDwhQJaLt"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.955Z",
<   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
<   "display_name": "created_by_lsql_nDqv1C0NDwhQJaLt",
<   "etag": "366538604",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_nDqv1C0NDwhQJaLt.lvdash.json",
<   "serialized_dashboard": "{}\n",
<   "update_time": "2026-03-11T13:07:31.985Z"
< }
13:07 DEBUG [databricks.sdk] PATCH /api/2.0/lakeview/dashboards/01f11d4b439d1063a1fae3cda06cc453
> {
>   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
>   "display_name": "created_by_lsql_ryy1kFGiaSLJCAuD",
>   "serialized_dashboard": "{\"datasets\": [{\"displayName\": \"counter\", \"name\": \"counter\", \"query\": \"SELECT 10 AS count\"}], \"pa... (574 more bytes)"
> }
< 200 OK
< {
<   "create_time": "2026-03-11T13:07:31.955Z",
<   "dashboard_id": "01f11d4b439d1063a1fae3cda06cc453",
<   "display_name": "created_by_lsql_ryy1kFGiaSLJCAuD",
<   "etag": "-2641948153",
<   "lifecycle_state": "ACTIVE",
<   "parent_path": "/Users/4106dc97-a963-48f0-a079-a578238959a6",
<   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_ryy1kFGiaSLJCAuD.lvdash.json",
<   "serialized_dashboard": "{\n  \"datasets\": [\n    {\n      \"name\": \"counter\",\n      \"displayName\": \"counter\",\n      \"queryLin... (1350 more bytes)",
<   "update_time": "2026-03-11T13:07:32.224Z"
< }
13:07 DEBUG [databricks.sdk] GET /api/2.0/workspace/export?path=/Users/4106dc97-a963-48f0-a079-a578238959a6/created_by_lsql_ryy1kFGiaSLJCAuD.lvdash.json&direct_download=true&format=SOURCE
< 200 OK
< [raw stream]
13:07 DEBUG [databricks.sdk] DELETE /api/2.0/lakeview/dashboards/01f11d4b439d1063a1fae3cda06cc453
< 200 OK
< {}
[gw5] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python
❌ test_runtime_backend_errors_handled[\nfrom databricks.labs.lsql.backends import RuntimeBackend\nfrom databricks.sdk.errors import Unknown\nbackend = RuntimeBackend()\ntry:\n grants = backend.fetch("SHOW GRANTS ON METASTORE")\n print("FAILED")\nexcept Unknown:\n print("PASSED")\n]: AssertionError: assert 'FAILED' == 'PASSED' (24.529s)
AssertionError: assert 'FAILED' == 'PASSED'
  
  - PASSED
  + FAILED
13:12 DEBUG [databricks.sdk] Loaded from environment
13:12 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:12 INFO [databricks.sdk] Using Databricks Metadata Service authentication
[gw4] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python
13:12 DEBUG [databricks.sdk] Loaded from environment
13:12 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:12 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:12 DEBUG [databricks.sdk] GET /api/2.0/preview/scim/v2/Me
< 200 OK
< {
<   "active": true,
<   "displayName": "labs-runtime-identity",
<   "emails": [
<     {
<       "primary": true,
<       "type": "work",
<       "value": "**REDACTED**"
<     }
<   ],
<   "externalId": "d0f9bd2c-5651-45fd-b648-12a3fc6375c4",
<   "groups": [
<     {
<       "$ref": "Groups/153383108335587",
<       "display": "users",
<       "type": "direct",
<       "value": "**REDACTED**"
<     },
<     "... (1 additional elements)"
<   ],
<   "id": "4643477475987733",
<   "name": {
<     "givenName": "labs-runtime-identity"
<   },
<   "schemas": [
<     "urn:ietf:params:scim:schemas:core:2.0:User",
<     "... (1 additional elements)"
<   ],
<   "userName": "4106dc97-a963-48f0-a079-a578238959a6"
< }
13:12 DEBUG [databricks.labs.blueprint.wheels] Building wheel for /tmp/tmpl9fcetmv/working-copy in /tmp/tmpl9fcetmv
13:12 DEBUG [databricks.labs.blueprint.installation] Uploading: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels/databricks_labs_lsql-0.16.1+2620260311131213-py3-none-any.whl
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 404 Not Found
< {
<   "error_code": "RESOURCE_DOES_NOT_EXIST",
<   "message": "The parent folder (/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels) does not exist."
< }
13:12 DEBUG [databricks.labs.blueprint.installation] Creating missing folders: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/mkdirs
> {
>   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels"
> }
< 200 OK
< {}
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 200 OK
< {
<   "object_id": 22952847556813
< }
13:12 DEBUG [databricks.labs.blueprint.installation] Converting Version into JSON format
13:12 DEBUG [databricks.labs.blueprint.installation] Uploading: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/version.json
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 200 OK
< {
<   "object_id": 22952847556814
< }
13:12 DEBUG [databricks.sdk] GET /api/2.1/clusters/get?cluster_id=DATABRICKS_CLUSTER_ID
< 200 OK
< {
<   "autotermination_minutes": 60,
<   "CLOUD_ENV_attributes": {
<     "availability": "ON_DEMAND_AZURE",
<     "first_on_demand": 2147483647,
<     "spot_bid_max_price": -1.0
<   },
<   "cluster_cores": 8.0,
<   "cluster_id": "DATABRICKS_CLUSTER_ID",
<   "cluster_memory_mb": 32768,
<   "cluster_name": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<   "cluster_source": "UI",
<   "creator_user_name": "liran.bareket@databricks.com",
<   "custom_tags": {
<     "ResourceClass": "SingleNode"
<   },
<   "data_security_mode": "SINGLE_USER",
<   "TEST_SCHEMA_tags": {
<     "Budget": "opex.sales.labs",
<     "ClusterId": "DATABRICKS_CLUSTER_ID",
<     "ClusterName": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<     "Creator": "liran.bareket@databricks.com",
<     "DatabricksInstanceGroupId": "-7571316921879686317",
<     "DatabricksInstancePoolCreatorId": "6779888502363704",
<     "DatabricksInstancePoolId": "TEST_INSTANCE_POOL_ID",
<     "Owner": "labs-oss@databricks.com",
<     "Vendor": "Databricks"
<   },
<   "disk_spec": {},
<   "driver": {
<     "host_private_ip": "10.179.12.10",
<     "instance_id": "42a697798c7c4ebdb4ce649f195cf3ed",
<     "ngrok_endpoint_base_domain": "green.mux.ngrok-dataplane.wildcard",
<     "node_attributes": {
<       "is_spot": false
<     },
<     "node_id": "f699f54bbfd6435c9e03f8a558d26e2c",
<     "node_type_id": "Standard_D8ads_v6",
<     "private_ip": "10.179.14.10",
<     "public_dns": "",
<     "start_timestamp": 1773234651277
<   },
<   "driver_healthy": true,
<   "driver_instance_pool_id": "TEST_INSTANCE_POOL_ID",
<   "driver_instance_source": {
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID"
<   },
<   "driver_node_type_id": "Standard_D8ads_v6",
<   "effective_spark_version": "16.4.x-scala2.12",
<   "enable_elastic_disk": true,
<   "enable_local_disk_encryption": false,
<   "init_scripts_safe_mode": false,
<   "instance_pool_id": "TEST_INSTANCE_POOL_ID",
<   "instance_source": {
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID"
<   },
<   "jdbc_port": 10000,
<   "last_activity_time": 1773234728713,
<   "last_restarted_time": 1773234703253,
<   "last_state_loss_time": 1773234703199,
<   "node_type_id": "Standard_D8ads_v6",
<   "num_workers": 0,
<   "pinned_by_user_name": "6779888502363704",
<   "release_version": "16.4.19",
<   "single_user_name": "4106dc97-a963-48f0-a079-a578238959a6",
<   "spark_conf": {
<     "spark.databricks.cluster.profile": "singleNode",
<     "spark.master": "local[*]"
<   },
<   "spark_context_id": 6072004013732582596,
<   "spark_version": "16.4.x-scala2.12",
<   "spec": {
<     "autotermination_minutes": 60,
<     "cluster_name": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<     "custom_tags": {
<       "ResourceClass": "SingleNode"
<     },
<     "data_security_mode": "SINGLE_USER",
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID",
<     "num_workers": 0,
<     "single_user_name": "4106dc97-a963-48f0-a079-a578238959a6",
<     "spark_conf": {
<       "spark.databricks.cluster.profile": "singleNode",
<       "spark.master": "local[*]"
<     },
<     "spark_version": "16.4.x-scala2.12"
<   },
<   "start_time": 1759339672984,
<   "state": "RUNNING",
<   "state_message": ""
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/contexts/create
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "853091362510518653"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Pending"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, context_id=853091362510518653: (ContextStatus.PENDING) current status: ContextStatus.PENDING (sleeping ~1s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Pending"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, context_id=853091362510518653: (ContextStatus.PENDING) current status: ContextStatus.PENDING (sleeping ~2s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/commands/execute
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "command": "get_ipython().run_line_magic('pip', 'install /Workspace/Users/4106dc97-a963-48f0-a079-a578238959... (111 more bytes)",
>   "contextId": "853091362510518653",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~1s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~2s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~3s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~4s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": {
<     "data": "Processing /Workspace/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels/databricks_labs_ls... (5309 more bytes)",
<     "resultType": "text"
<   },
<   "status": "Finished"
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/commands/execute
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "command": "from databricks.labs.lsql.backends import RuntimeBackend\nfrom databricks.sdk.errors import Unkno... (145 more bytes)",
>   "contextId": "853091362510518653",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "229a1a4402c54808b7f8888450fdaca9"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=229a1a4402c54808b7f8888450fdaca9&contextId=853091362510518653
< 200 OK
< {
<   "id": "229a1a4402c54808b7f8888450fdaca9",
<   "results": {
<     "data": "FAILED",
<     "resultType": "text"
<   },
<   "status": "Finished"
< }
13:12 DEBUG [databricks.sdk] Loaded from environment
13:12 DEBUG [databricks.sdk] Ignoring pat auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Ignoring basic auth, because metadata-service is preferred
13:12 DEBUG [databricks.sdk] Attempting to configure auth: metadata-service
13:12 INFO [databricks.sdk] Using Databricks Metadata Service authentication
13:12 DEBUG [databricks.sdk] GET /api/2.0/preview/scim/v2/Me
< 200 OK
< {
<   "active": true,
<   "displayName": "labs-runtime-identity",
<   "emails": [
<     {
<       "primary": true,
<       "type": "work",
<       "value": "**REDACTED**"
<     }
<   ],
<   "externalId": "d0f9bd2c-5651-45fd-b648-12a3fc6375c4",
<   "groups": [
<     {
<       "$ref": "Groups/153383108335587",
<       "display": "users",
<       "type": "direct",
<       "value": "**REDACTED**"
<     },
<     "... (1 additional elements)"
<   ],
<   "id": "4643477475987733",
<   "name": {
<     "givenName": "labs-runtime-identity"
<   },
<   "schemas": [
<     "urn:ietf:params:scim:schemas:core:2.0:User",
<     "... (1 additional elements)"
<   ],
<   "userName": "4106dc97-a963-48f0-a079-a578238959a6"
< }
13:12 DEBUG [databricks.labs.blueprint.wheels] Building wheel for /tmp/tmpl9fcetmv/working-copy in /tmp/tmpl9fcetmv
13:12 DEBUG [databricks.labs.blueprint.installation] Uploading: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels/databricks_labs_lsql-0.16.1+2620260311131213-py3-none-any.whl
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 404 Not Found
< {
<   "error_code": "RESOURCE_DOES_NOT_EXIST",
<   "message": "The parent folder (/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels) does not exist."
< }
13:12 DEBUG [databricks.labs.blueprint.installation] Creating missing folders: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/mkdirs
> {
>   "path": "/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels"
> }
< 200 OK
< {}
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 200 OK
< {
<   "object_id": 22952847556813
< }
13:12 DEBUG [databricks.labs.blueprint.installation] Converting Version into JSON format
13:12 DEBUG [databricks.labs.blueprint.installation] Uploading: /Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/version.json
13:12 DEBUG [databricks.sdk] Retry disabled for non-seekable stream: type=<class 'dict'>
13:12 DEBUG [databricks.sdk] POST /api/2.0/workspace/import
> [raw stream]
< 200 OK
< {
<   "object_id": 22952847556814
< }
13:12 DEBUG [databricks.sdk] GET /api/2.1/clusters/get?cluster_id=DATABRICKS_CLUSTER_ID
< 200 OK
< {
<   "autotermination_minutes": 60,
<   "CLOUD_ENV_attributes": {
<     "availability": "ON_DEMAND_AZURE",
<     "first_on_demand": 2147483647,
<     "spot_bid_max_price": -1.0
<   },
<   "cluster_cores": 8.0,
<   "cluster_id": "DATABRICKS_CLUSTER_ID",
<   "cluster_memory_mb": 32768,
<   "cluster_name": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<   "cluster_source": "UI",
<   "creator_user_name": "liran.bareket@databricks.com",
<   "custom_tags": {
<     "ResourceClass": "SingleNode"
<   },
<   "data_security_mode": "SINGLE_USER",
<   "TEST_SCHEMA_tags": {
<     "Budget": "opex.sales.labs",
<     "ClusterId": "DATABRICKS_CLUSTER_ID",
<     "ClusterName": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<     "Creator": "liran.bareket@databricks.com",
<     "DatabricksInstanceGroupId": "-7571316921879686317",
<     "DatabricksInstancePoolCreatorId": "6779888502363704",
<     "DatabricksInstancePoolId": "TEST_INSTANCE_POOL_ID",
<     "Owner": "labs-oss@databricks.com",
<     "Vendor": "Databricks"
<   },
<   "disk_spec": {},
<   "driver": {
<     "host_private_ip": "10.179.12.10",
<     "instance_id": "42a697798c7c4ebdb4ce649f195cf3ed",
<     "ngrok_endpoint_base_domain": "green.mux.ngrok-dataplane.wildcard",
<     "node_attributes": {
<       "is_spot": false
<     },
<     "node_id": "f699f54bbfd6435c9e03f8a558d26e2c",
<     "node_type_id": "Standard_D8ads_v6",
<     "private_ip": "10.179.14.10",
<     "public_dns": "",
<     "start_timestamp": 1773234651277
<   },
<   "driver_healthy": true,
<   "driver_instance_pool_id": "TEST_INSTANCE_POOL_ID",
<   "driver_instance_source": {
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID"
<   },
<   "driver_node_type_id": "Standard_D8ads_v6",
<   "effective_spark_version": "16.4.x-scala2.12",
<   "enable_elastic_disk": true,
<   "enable_local_disk_encryption": false,
<   "init_scripts_safe_mode": false,
<   "instance_pool_id": "TEST_INSTANCE_POOL_ID",
<   "instance_source": {
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID"
<   },
<   "jdbc_port": 10000,
<   "last_activity_time": 1773234728713,
<   "last_restarted_time": 1773234703253,
<   "last_state_loss_time": 1773234703199,
<   "node_type_id": "Standard_D8ads_v6",
<   "num_workers": 0,
<   "pinned_by_user_name": "6779888502363704",
<   "release_version": "16.4.19",
<   "single_user_name": "4106dc97-a963-48f0-a079-a578238959a6",
<   "spark_conf": {
<     "spark.databricks.cluster.profile": "singleNode",
<     "spark.master": "local[*]"
<   },
<   "spark_context_id": 6072004013732582596,
<   "spark_version": "16.4.x-scala2.12",
<   "spec": {
<     "autotermination_minutes": 60,
<     "cluster_name": "Scoped MSI Cluster: runtime (Single Node, Single User)",
<     "custom_tags": {
<       "ResourceClass": "SingleNode"
<     },
<     "data_security_mode": "SINGLE_USER",
<     "instance_pool_id": "TEST_INSTANCE_POOL_ID",
<     "num_workers": 0,
<     "single_user_name": "4106dc97-a963-48f0-a079-a578238959a6",
<     "spark_conf": {
<       "spark.databricks.cluster.profile": "singleNode",
<       "spark.master": "local[*]"
<     },
<     "spark_version": "16.4.x-scala2.12"
<   },
<   "start_time": 1759339672984,
<   "state": "RUNNING",
<   "state_message": ""
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/contexts/create
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "853091362510518653"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Pending"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, context_id=853091362510518653: (ContextStatus.PENDING) current status: ContextStatus.PENDING (sleeping ~1s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Pending"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, context_id=853091362510518653: (ContextStatus.PENDING) current status: ContextStatus.PENDING (sleeping ~2s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/contexts/status?clusterId=DATABRICKS_CLUSTER_ID&contextId=853091362510518653
< 200 OK
< {
<   "id": "853091362510518653",
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/commands/execute
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "command": "get_ipython().run_line_magic('pip', 'install /Workspace/Users/4106dc97-a963-48f0-a079-a578238959... (111 more bytes)",
>   "contextId": "853091362510518653",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~1s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~2s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~3s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": null,
<   "status": "Running"
< }
13:12 DEBUG [databricks.sdk] cluster_id=DATABRICKS_CLUSTER_ID, command_id=628e6995d227435388080be3e89016eb, context_id=853091362510518653: (CommandStatus.RUNNING) current status: CommandStatus.RUNNING (sleeping ~4s)
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=628e6995d227435388080be3e89016eb&contextId=853091362510518653
< 200 OK
< {
<   "id": "628e6995d227435388080be3e89016eb",
<   "results": {
<     "data": "Processing /Workspace/Users/4106dc97-a963-48f0-a079-a578238959a6/.0Eyh/wheels/databricks_labs_ls... (5309 more bytes)",
<     "resultType": "text"
<   },
<   "status": "Finished"
< }
13:12 DEBUG [databricks.sdk] POST /api/1.2/commands/execute
> {
>   "clusterId": "DATABRICKS_CLUSTER_ID",
>   "command": "from databricks.labs.lsql.backends import RuntimeBackend\nfrom databricks.sdk.errors import Unkno... (145 more bytes)",
>   "contextId": "853091362510518653",
>   "language": "python"
> }
< 200 OK
< {
<   "id": "229a1a4402c54808b7f8888450fdaca9"
< }
13:12 DEBUG [databricks.sdk] GET /api/1.2/commands/status?clusterId=DATABRICKS_CLUSTER_ID&commandId=229a1a4402c54808b7f8888450fdaca9&contextId=853091362510518653
< 200 OK
< {
<   "id": "229a1a4402c54808b7f8888450fdaca9",
<   "results": {
<     "data": "FAILED",
<     "resultType": "text"
<   },
<   "status": "Finished"
< }
[gw4] linux -- Python 3.10.19 /home/runner/work/lsql/lsql/.venv/bin/python

Running from acceptance #560

This hardcoded path is needed by the labs tool to locate the integration tests.
…ith the projects.

These don't currently control the version of python properly.
@asnare asnare marked this pull request as ready for review March 6, 2026 17:31
@asnare asnare requested a review from FastLee March 6, 2026 17:31
@asnare
Copy link
Contributor Author

asnare commented Mar 6, 2026

❌ 33/36 passed, 3 failed, 4 skipped, 4m45s total

❌ test_dashboard_deploys_dashboard_the_same_as_created_dashboard: AssertionError: assert {'datasets': ...3iiRWXaCE1'}]} == {'datasets': ...3iiRWXaCE1'}]} (2.018s)
❌ test_dashboards_creates_exported_dashboard_definition: assert {'datasets': ...: 'queries'}]} == {'datasets': ...: 'queries'}]} (2.592s)
❌ test_runtime_backend_errors_handled[\nfrom databricks.labs.lsql.backends import RuntimeBackend\nfrom databricks.sdk.errors import Unknown\nbackend = RuntimeBackend()\ntry:\n grants = backend.fetch("SHOW GRANTS ON METASTORE")\n print("FAILED")\nexcept Unknown:\n print("PASSED")\n]: AssertionError: assert 'FAILED' == 'PASSED' (18.263s)
Running from acceptance #555

These test failures are unrelated to changes on this branch. (They're addressed separately by #490 and #491.)

@asnare asnare changed the title Update to explicitly test/support python 3.13 and 3.14 Explicitly test/support python 3.13 and 3.14 Mar 9, 2026
The triggers have been updated so that integration tests also run for draft PRs.
@asnare asnare enabled auto-merge (squash) March 12, 2026 09:30
@sundarshankar89 sundarshankar89 merged commit db7292c into main Mar 13, 2026
9 of 10 checks passed
@sundarshankar89 sundarshankar89 deleted the refresh branch March 13, 2026 08:11
@github-project-automation github-project-automation bot moved this from Ready for Review to Done in UCX Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants