Skip to content

Explicitly test/support python 3.13 and 3.14#490

Open
asnare wants to merge 22 commits intomainfrom
refresh
Open

Explicitly test/support python 3.13 and 3.14#490
asnare wants to merge 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
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: Ready for Review

Development

Successfully merging this pull request may close these issues.

2 participants