databricks-cli/bundle
Gleb Kanterov 3d91691f25
PythonMutator: propagate source locations (#1783)
## Changes
Add a mechanism to load Python source locations in the Python mutator.
Previously, locations pointed to generated YAML. Now, they point to
Python sources instead. Python process outputs "locations.json"
containing locations of bundle paths, examples:

```json
{"path": "resources.jobs.job_0", "file": "resources/job_0.py", "line": 3, "column": 5}
{"path": "resources.jobs.job_0.tasks[0].task_key", "file": "resources/job_0.py", "line": 10, "column": 5}
{"path": "resources.jobs.job_1", "file": "resources/job_1.py", "line": 5, "column": 7}
```

Such locations form a tree, and we assign locations of the closest
ancestor to each `dyn.Value` based on its path. For example,
`resources.jobs.job_0.tasks[0].task_key` is located at `job_0.py:10:5`
and `resources.jobs.job_0.tasks[0].email_notifications` is located at
`job_0.py:3:5`, because we use the location of the job as the most
precise approximation.

This feature is only enabled if `experimental/python` is used.

Note: for now, we don't update locations with relative paths, because it
has a side effect in changing how these paths are resolved

## Example
```
% databricks bundle validate

Warning: job_cluster_key abc is not defined
  at resources.jobs.examples.tasks[0].job_cluster_key
  in resources/example.py:10:1
```

## Tests
Unit tests and manually
2025-01-22 15:37:37 +00:00
..
apps Changed warning message for apps (#2165) 2025-01-16 13:03:35 +00:00
artifacts Enable perfsprint linter and apply autofix (#2071) 2025-01-07 10:49:23 +00:00
config PythonMutator: propagate source locations (#1783) 2025-01-22 15:37:37 +00:00
deploy Fix context propagation in bundle/deploy/terraform (#2208) 2025-01-22 13:28:13 +00:00
env Remove support for DATABRICKS_BUNDLE_INCLUDES (#1317) 2024-03-27 10:13:54 +00:00
internal Allow using variables in enum fields (#2199) 2025-01-22 10:30:17 +00:00
libraries Enable perfsprint linter and apply autofix (#2071) 2025-01-07 10:49:23 +00:00
metadata Make `file_path` and `artifact_path` fields consistent with json tag (#987) 2023-11-15 13:37:26 +00:00
paths Fixed adding /Workspace prefix for resource paths (#1866) 2024-10-30 17:34:11 +00:00
permissions Added support for Databricks Apps in DABs (#1928) 2025-01-13 16:43:48 +00:00
phases Fixed an apps message order and added output test (#2174) 2025-01-17 14:42:39 +00:00
render Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
resources Fix segfault in bundle summary command (#1937) 2024-11-28 12:27:24 +00:00
run Refactor `bundle init` (#2074) 2025-01-20 12:09:28 +00:00
schema Allow using variables in enum fields (#2199) 2025-01-22 10:30:17 +00:00
scripts Rename `RootPath` -> `BundleRootPath` (#1792) 2024-09-27 10:03:05 +00:00
tests Migrate quality_monitor_test.go to acceptance test (#2192) 2025-01-20 16:33:03 +00:00
trampoline Enable perfsprint linter and apply autofix (#2071) 2025-01-07 10:49:23 +00:00
bundle.go Add `auth.Env` function (#2204) 2025-01-22 12:14:54 +00:00
bundle_read_only.go Properly read Git metadata when running inside workspace (#1945) 2024-12-05 10:13:13 +00:00
bundle_test.go Enable testifylint and fix the issues (#2065) 2025-01-02 12:03:41 +01:00
context.go Rename variable `bundle -> b` (#989) 2023-11-15 14:03:36 +00:00
context_test.go Enable testifylint and fix the issues (#2065) 2025-01-02 12:03:41 +01:00
deferred.go Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
deferred_test.go Enable 'govet' linter; expand log/diag with non-f functions (#1996) 2024-12-11 16:42:03 +00:00
if.go Return early in bundle destroy if no deployment exists (#1581) 2024-07-09 15:08:38 +00:00
if_test.go Return early in bundle destroy if no deployment exists (#1581) 2024-07-09 15:08:38 +00:00
log_string.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00
mutator.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00
mutator_read_only.go Added validate mutator to surface additional bundle warnings (#1352) 2024-04-18 15:13:16 +00:00
mutator_test.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00
parallel.go Added validate mutator to surface additional bundle warnings (#1352) 2024-04-18 15:13:16 +00:00
parallel_test.go Fix flaky tests for the parallel mutator (#1426) 2024-05-13 12:16:43 +00:00
root.go Enable perfsprint linter and apply autofix (#2071) 2025-01-07 10:49:23 +00:00
root_test.go Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
seq.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00
seq_test.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00