dbt-autofix 0.0.0.post1.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. dbt_autofix-0.0.0.post1.dev0/.claude/skills/add-integration-test/SKILL.md +176 -0
  2. dbt_autofix-0.0.0.post1.dev0/.coverage +0 -0
  3. dbt_autofix-0.0.0.post1.dev0/.github/CODEOWNERS +6 -0
  4. dbt_autofix-0.0.0.post1.dev0/.github/dependabot.yml +16 -0
  5. dbt_autofix-0.0.0.post1.dev0/.github/pull_request_template.md +22 -0
  6. dbt_autofix-0.0.0.post1.dev0/.github/workflows/nox-pr.yml +15 -0
  7. dbt_autofix-0.0.0.post1.dev0/.github/workflows/pytest-pr.yml +48 -0
  8. dbt_autofix-0.0.0.post1.dev0/.github/workflows/release.yml +52 -0
  9. dbt_autofix-0.0.0.post1.dev0/.github/workflows/schedule.yml +17 -0
  10. dbt_autofix-0.0.0.post1.dev0/.github/workflows/uv-dependency-submission.yml +30 -0
  11. dbt_autofix-0.0.0.post1.dev0/.gitignore +30 -0
  12. dbt_autofix-0.0.0.post1.dev0/.pre-commit-config.yaml +19 -0
  13. dbt_autofix-0.0.0.post1.dev0/.pre-commit-hooks.yaml +13 -0
  14. dbt_autofix-0.0.0.post1.dev0/.python-version +1 -0
  15. dbt_autofix-0.0.0.post1.dev0/AGENTS.md +72 -0
  16. dbt_autofix-0.0.0.post1.dev0/CONTRIBUTING.md +53 -0
  17. dbt_autofix-0.0.0.post1.dev0/LICENSE +201 -0
  18. dbt_autofix-0.0.0.post1.dev0/PKG-INFO +200 -0
  19. dbt_autofix-0.0.0.post1.dev0/README.md +180 -0
  20. dbt_autofix-0.0.0.post1.dev0/manual_fixes/README.md +17 -0
  21. dbt_autofix-0.0.0.post1.dev0/manual_fixes/custom_configuration.md +105 -0
  22. dbt_autofix-0.0.0.post1.dev0/manual_fixes/dynamic_sql.md +33 -0
  23. dbt_autofix-0.0.0.post1.dev0/manual_fixes/misspelled_config_keys.md +16 -0
  24. dbt_autofix-0.0.0.post1.dev0/manual_fixes/package_incompatibility.md +51 -0
  25. dbt_autofix-0.0.0.post1.dev0/manual_fixes/sources_without_tables.md +13 -0
  26. dbt_autofix-0.0.0.post1.dev0/notes.md +5 -0
  27. dbt_autofix-0.0.0.post1.dev0/noxfile.py +266 -0
  28. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/.gitignore +28 -0
  29. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/.python-version +1 -0
  30. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/README.md +55 -0
  31. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/pyproject.toml +41 -0
  32. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/__init__.py +2 -0
  33. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/check_parse_conformance.py +445 -0
  34. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/compatibility.py +51 -0
  35. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/dbt_package.py +276 -0
  36. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/dbt_package_version.py +110 -0
  37. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/exceptions.py +26 -0
  38. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/fusion_version_compatibility_output.py +12852 -0
  39. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/manual_overrides.py +100 -0
  40. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/package_example.py +2 -0
  41. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/__init__.py +0 -0
  42. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/conformance_output.py +138 -0
  43. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/get_fusion_compatible_versions.py +247 -0
  44. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/get_package_hub_files.py +204 -0
  45. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/package_hub_fusion_compatibility.py +452 -0
  46. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/packages_with_fusion_compatibility_changes.py +37 -0
  47. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/update_package_hub_json.py +193 -0
  48. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/upgrade_status.py +41 -0
  49. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/version_utils.py +523 -0
  50. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/yaml/__init__.py +0 -0
  51. dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/yaml/loader.py +49 -0
  52. dbt_autofix-0.0.0.post1.dev0/pre_commit_hooks/__init__.py +0 -0
  53. dbt_autofix-0.0.0.post1.dev0/pre_commit_hooks/check_deprecations.py +163 -0
  54. dbt_autofix-0.0.0.post1.dev0/pyproject.toml +202 -0
  55. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/__init__.py +0 -0
  56. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/_jinja_environment.py +305 -0
  57. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/dbt_api.py +343 -0
  58. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/deprecations.py +20 -0
  59. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/duplicate_keys.py +133 -0
  60. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/fields_properties_configs.py +348 -0
  61. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/hub_packages.py +72 -0
  62. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/jinja.py +259 -0
  63. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/main.py +252 -0
  64. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/package_upgrade.py +584 -0
  65. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/__init__.py +0 -0
  66. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_file.py +319 -0
  67. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_lock_file.py +155 -0
  68. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_text_file.py +315 -0
  69. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/installed_packages.py +168 -0
  70. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactor.py +740 -0
  71. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/__init__.py +0 -0
  72. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/__init__.py +0 -0
  73. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_project_yml.py +636 -0
  74. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_python.py +362 -0
  75. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_schema_yml.py +1086 -0
  76. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_schema_yml_semantic_layer.py +1065 -0
  77. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_sql.py +723 -0
  78. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_sql_improved.py +142 -0
  79. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/constants.py +17 -0
  80. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/fancy_quotes_utils.py +22 -0
  81. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/iceberg_table_format.py +40 -0
  82. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/results.py +386 -0
  83. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/static_analysis.py +127 -0
  84. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/yml.py +68 -0
  85. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/retrieve_schemas.py +348 -0
  86. dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/semantic_definitions.py +189 -0
  87. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/.gitignore +1 -0
  88. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/.gitignore +3 -0
  89. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/.gitignore +5 -0
  90. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/README.md +15 -0
  91. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/analyses/.gitkeep +0 -0
  92. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/dbt_project.yml +71 -0
  93. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/macros/.gitkeep +0 -0
  94. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/analyses.yml +9 -0
  95. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/groups.yml +9 -0
  96. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_config.yml +10 -0
  97. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_custom_configs.sql +25 -0
  98. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_dbt_jinja.sql +6 -0
  99. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_dbt_jinja_hook.sql +7 -0
  100. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_jinja_plus.sql +6 -0
  101. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_malformed_comment.sql +19 -0
  102. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_post_hook.sql +1 -0
  103. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/my_first_dbt_model.sql +27 -0
  104. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/my_second_dbt_model.sql +6 -0
  105. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/schema_yml_with_tests.yml +67 -0
  106. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/semantic_models.yml +74 -0
  107. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/sources.yml +72 -0
  108. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_anchors.yml +27 -0
  109. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_custom_keys.yml +5 -0
  110. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_dupes.yml +6 -0
  111. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_tabs.yml +8 -0
  112. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/exposures.yml +8 -0
  113. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/how_to.md +14 -0
  114. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/seeds/.gitkeep +0 -0
  115. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/snapshots/.gitkeep +0 -0
  116. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/.gitkeep +0 -0
  117. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/null_email.sql +3 -0
  118. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/null_email2.sql +3 -0
  119. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/.gitignore +5 -0
  120. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/README.md +15 -0
  121. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/analyses/.gitkeep +0 -0
  122. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/dbt_project.yml +69 -0
  123. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/macros/.gitkeep +0 -0
  124. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/analyses.yml +10 -0
  125. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/groups.yml +9 -0
  126. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_config.yml +11 -0
  127. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_custom_configs.sql +21 -0
  128. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_dbt_jinja.sql +6 -0
  129. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_dbt_jinja_hook.sql +7 -0
  130. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_jinja_plus.sql +6 -0
  131. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_malformed_comment.sql +19 -0
  132. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_post_hook.sql +4 -0
  133. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/my_first_dbt_model.sql +27 -0
  134. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/my_second_dbt_model.sql +6 -0
  135. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/schema_yml_with_tests.yml +78 -0
  136. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/semantic_models.yml +74 -0
  137. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/sources.yml +73 -0
  138. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_anchors.yml +29 -0
  139. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_custom_keys.yml +3 -0
  140. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_dupes.yml +3 -0
  141. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_tabs.yml +8 -0
  142. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/exposures.yml +9 -0
  143. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/how_to.md +14 -0
  144. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/seeds/.gitkeep +0 -0
  145. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/snapshots/.gitkeep +0 -0
  146. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/.gitkeep +0 -0
  147. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/null_email.sql +6 -0
  148. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/null_email2.sql +6 -0
  149. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected.stdout +452 -0
  150. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/dbt_project.yml +26 -0
  151. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/model with spaces.sql +1 -0
  152. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/python model with spaces.py +2 -0
  153. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/schema.yml +6 -0
  154. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/how_to.md +14 -0
  155. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/dbt_project.yml +26 -0
  156. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/example/model_with_spaces.sql +1 -0
  157. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/example/python_model_with_spaces.py +2 -0
  158. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/example/schema.yml +6 -0
  159. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/how_to.md +14 -0
  160. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected.stdout +55 -0
  161. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings/dbt_project.yml +7 -0
  162. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings/models/my_autofix_model.sql +10 -0
  163. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected/dbt_project.yml +9 -0
  164. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected/models/my_autofix_model.sql +6 -0
  165. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected.stdout +26 -0
  166. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/dbt_project.yml +10 -0
  167. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/customer_metrics.py +22 -0
  168. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/models.yaml +10 -0
  169. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/order_summary.sql +10 -0
  170. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/dbt_project.yml +10 -0
  171. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/customer_metrics.py +22 -0
  172. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/models.yaml +12 -0
  173. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/order_summary.sql +8 -0
  174. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected.stdout +49 -0
  175. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/.dbtignore +1 -0
  176. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/dbt_project.yml +10 -0
  177. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/ignored/ignored_model.sql +2 -0
  178. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/ignored/schema.yml +9 -0
  179. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/included/included_model.sql +1 -0
  180. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/included/schema.yml +9 -0
  181. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/.dbtignore +1 -0
  182. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/dbt_project.yml +12 -0
  183. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/ignored/ignored_model.sql +2 -0
  184. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/ignored/schema.yml +9 -0
  185. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/included/included_model.sql +1 -0
  186. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/included/schema.yml +10 -0
  187. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected.stdout +25 -0
  188. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates/dbt_project.yml +7 -0
  189. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates/models/schema.yml +25 -0
  190. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected/dbt_project.yml +7 -0
  191. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected/models/schema.yml +23 -0
  192. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected.stdout +23 -0
  193. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/dbt_project.yml +10 -0
  194. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/models/schema.yml +24 -0
  195. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/tests/data_quality_test.sql +8 -0
  196. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected/dbt_project.yml +10 -0
  197. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected/models/schema.yml +28 -0
  198. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected/tests/data_quality_test.sql +8 -0
  199. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected.stdout +50 -0
  200. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/dbt_project.yml +23 -0
  201. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/customers.yml +120 -0
  202. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/locations.yml +35 -0
  203. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/locations_model.yml +2 -0
  204. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/order_items.yml +257 -0
  205. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/orders.yml +137 -0
  206. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/products.yml +26 -0
  207. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/supplies.yml +24 -0
  208. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/dbt_project.yml +23 -0
  209. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/customers.yml +103 -0
  210. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/locations.yml +0 -0
  211. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/locations_model.yml +46 -0
  212. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/order_items.yml +248 -0
  213. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/orders.yml +126 -0
  214. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/products.yml +29 -0
  215. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/supplies.yml +26 -0
  216. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected.stdout +347 -0
  217. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/dbt_project.yml +28 -0
  218. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/model_sql_false.sql +6 -0
  219. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/model_sql_true.sql +6 -0
  220. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/schema.yml +15 -0
  221. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/seeds/sample_seed.csv +3 -0
  222. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/dbt_project.yml +30 -0
  223. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/model_sql_false.sql +6 -0
  224. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/model_sql_true.sql +6 -0
  225. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/schema.yml +15 -0
  226. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/seeds/sample_seed.csv +3 -0
  227. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected.stdout +79 -0
  228. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/dbt_project.yml +10 -0
  229. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/dbt_project.yml +30 -0
  230. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/package-lock.yml +5 -0
  231. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/packages.yml +3 -0
  232. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/packages.yml +3 -0
  233. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/datavault4dbt/dbt_project.yml +87 -0
  234. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/dbt_project.yml +11 -0
  235. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/dbt_project.yml +81 -0
  236. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/package-lock.yml +3 -0
  237. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/packages.yml +3 -0
  238. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_project.yml +34 -0
  239. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/package-lock.yml +11 -0
  240. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/packages.yml +5 -0
  241. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/.gitignore +4 -0
  242. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dbt_packages/codegen/dbt_project.yml +10 -0
  243. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dbt_packages/dbt_utils/dbt_project.yml +11 -0
  244. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dbt_project.yml +34 -0
  245. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dependencies.yml +3 -0
  246. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/package-lock.yml +8 -0
  247. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/packages.yml +11 -0
  248. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/avo_audit/dbt_project.yml +9 -0
  249. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/codegen/dbt_project.yml +10 -0
  250. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_artifacts/dbt_project.yml +23 -0
  251. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_date/dbt_project.yml +20 -0
  252. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_project_evaluator/dbt_project.yml +115 -0
  253. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_set_similarity/dbt_project.yml +11 -0
  254. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_stat_test/dbt_project.yml +11 -0
  255. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_utils/dbt_project.yml +10 -0
  256. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/logging/dbt_project.yml +11 -0
  257. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/materialize_dbt_utils/dbt_project.yml +5 -0
  258. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/snowplow/dbt_project.yml +11 -0
  259. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_project.yml +34 -0
  260. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dependencies.yml +3 -0
  261. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/packages.yml +34 -0
  262. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/dbt_project.yml +10 -0
  263. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/dbt_project.yml +30 -0
  264. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/package-lock.yml +5 -0
  265. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/packages.yml +3 -0
  266. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/profiles.yml +50 -0
  267. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/packages.yml +3 -0
  268. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/dbt_project.yml +10 -0
  269. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/dbt_project.yml +30 -0
  270. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/package-lock.yml +5 -0
  271. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/packages.yml +3 -0
  272. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/packages.yml +3 -0
  273. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/dbt_project.yml +19 -0
  274. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/integration_tests/dbt_project.yml +31 -0
  275. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/integration_tests/package-lock.yml +3 -0
  276. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/integration_tests/packages.yml +2 -0
  277. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/dbt_project.yml +14 -0
  278. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/integration_tests/dbt_project.yml +40 -0
  279. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/integration_tests/packages.yml +2 -0
  280. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/packages.yml +3 -0
  281. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/dbt_project.yml +112 -0
  282. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/integration_tests/dbt_project.yml +71 -0
  283. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/integration_tests/packages.yml +3 -0
  284. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/integration_tests_2/dbt_project.yml +41 -0
  285. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/integration_tests_2/packages.yml +2 -0
  286. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/packages.yml +3 -0
  287. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_utils/dbt_project.yml +11 -0
  288. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/dbt_project.yml +38 -0
  289. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/package-lock.yml +8 -0
  290. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/packages.yml +7 -0
  291. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_project.yml +24 -0
  292. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/package-lock.yml +25 -0
  293. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/packages.yml +13 -0
  294. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/ad_reporting/dbt_project.yml +24 -0
  295. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/ad_reporting/packages.yml +33 -0
  296. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/amazon_ads/dbt_project.yml +34 -0
  297. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/amazon_ads/packages.yml +3 -0
  298. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/apple_search_ads/dbt_project.yml +30 -0
  299. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/apple_search_ads/packages.yml +6 -0
  300. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_project_evaluator/dbt_project.yml +115 -0
  301. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_project_evaluator/packages.yml +3 -0
  302. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_utils/dbt_project.yml +11 -0
  303. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/facebook_ads/dbt_project.yml +46 -0
  304. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/facebook_ads/packages.yml +6 -0
  305. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/fivetran_utils/dbt_project.yml +4 -0
  306. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/fivetran_utils/packages.yml +3 -0
  307. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/google_ads/dbt_project.yml +41 -0
  308. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/google_ads/packages.yml +6 -0
  309. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/linkedin/dbt_project.yml +31 -0
  310. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/linkedin/packages.yml +5 -0
  311. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/microsoft_ads/dbt_project.yml +36 -0
  312. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/microsoft_ads/packages.yml +5 -0
  313. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/pinterest/dbt_project.yml +34 -0
  314. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/pinterest/packages.yml +6 -0
  315. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/reddit_ads/dbt_project.yml +47 -0
  316. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/reddit_ads/packages.yml +5 -0
  317. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/snapchat_ads/dbt_project.yml +36 -0
  318. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/snapchat_ads/packages.yml +5 -0
  319. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/spark_utils/dbt_project.yml +5 -0
  320. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/tiktok_ads/dbt_project.yml +29 -0
  321. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/tiktok_ads/packages.yml +5 -0
  322. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/twitter_ads/dbt_project.yml +41 -0
  323. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/twitter_ads/packages.yml +5 -0
  324. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_project.yml +34 -0
  325. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/package-lock.yml +50 -0
  326. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/packages.yml +10 -0
  327. dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/test_full_dbt_projects.py +171 -0
  328. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_packages/dbt_utils/dbt_project.yml +1 -0
  329. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_packages/private_package/dbt_project.yml +1 -0
  330. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_project.yml +6 -0
  331. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/README.md +1 -0
  332. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/dbt_utils.json +1572 -0
  333. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_check_parse_conformance.py +467 -0
  334. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package.py +134 -0
  335. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_file.py +266 -0
  336. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_lock_file.py +160 -0
  337. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_text_file.py +194 -0
  338. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_version.py +347 -0
  339. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_fusion_compatible_versions.py +49 -0
  340. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_hub_fusion_compatibility.py +355 -0
  341. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade.py +175 -0
  342. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade_datavault4dbt.py +115 -0
  343. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade_with_lock_file.py +131 -0
  344. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_update_package_hub_json.py +484 -0
  345. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_version_utils.py +49 -0
  346. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_yaml.py +11 -0
  347. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_check_deprecations.py +16 -0
  348. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_check_fields_no_overlap.py +21 -0
  349. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_config_meta_autofix.py +380 -0
  350. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dbt_api.py +52 -0
  351. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dbt_python.py +801 -0
  352. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dict_config_subkeys.py +286 -0
  353. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_duplicate_keys.py +139 -0
  354. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_fix_space_after_plus.py +444 -0
  355. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_iceberg_table_format_autofix.py +256 -0
  356. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_jinja.py +346 -0
  357. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_jinja_environment.py +45 -0
  358. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_rec_check_yaml_path.py +962 -0
  359. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_refactor.py +2995 -0
  360. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_retrieve_schemas.py +34 -0
  361. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_serialize_config.py +222 -0
  362. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_should_skip_package.py +24 -0
  363. dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_static_analysis.py +154 -0
  364. dbt_autofix-0.0.0.post1.dev0/uv.lock +1012 -0
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: add-integration-test
3
+ description: Create a new integration test for dbt-autofix with proper folder structure and golden files
4
+ disable-model-invocation: true
5
+ argument-hint: [project-name]
6
+ allowed-tools: Read, Write, Bash, Glob, Grep, Edit
7
+ ---
8
+
9
+ # Add Integration Test
10
+
11
+ Create a new integration test for dbt-autofix. Integration tests verify that the refactor tool correctly transforms dbt projects.
12
+
13
+ ## Philosophy: Test-Driven Development
14
+
15
+ **Integration tests document DESIRED behavior, not current behavior.**
16
+
17
+ - For bug fixes: Create a test that reproduces the bug, with expected output showing the correct behavior
18
+ - For feature requests: Create a test that specifies what the feature should do
19
+ - Tests should FAIL initially, then PASS once the fix/feature is implemented
20
+
21
+ This approach:
22
+ 1. Serves as a specification for the work
23
+ 2. Prevents regressions
24
+ 3. Automatically validates when the implementation is complete
25
+
26
+ **Using GOLDIE_UPDATE:** Run with `GOLDIE_UPDATE=1` to understand *current* behavior, but don't blindly accept it as the expected output. Manually craft the `_expected` files to reflect what the behavior *should* be.
27
+
28
+ ## Arguments
29
+
30
+ - `$ARGUMENTS` - The test project name (e.g., `config_quoted_strings`)
31
+
32
+ **Running a single test:**
33
+ ```bash
34
+ uv run pytest "tests/integration_tests/test_full_dbt_projects.py::test_project_refactor[project_<name>]" -v
35
+ ```
36
+
37
+ Example for a project named `config_quoted_strings`:
38
+ ```bash
39
+ uv run pytest "tests/integration_tests/test_full_dbt_projects.py::test_project_refactor[project_config_quoted_strings]" -v
40
+ ```
41
+
42
+ **Naming guidance:** Use descriptive names that explain what the test covers, not issue numbers. For example:
43
+ - `config_quoted_strings` (not `issue_221`)
44
+ - `python_model_meta_config` (not `issue_220`)
45
+ - `jinja_unmatched_endif`
46
+
47
+ The name becomes `project_<name>` in the test projects directory.
48
+
49
+ ## Test Structure
50
+
51
+ Each integration test requires 3 artifacts in `tests/integration_tests/dbt_projects/`:
52
+
53
+ 1. **`project_<name>/`** - Input dbt project (before refactor)
54
+ - Minimum: `dbt_project.yml` + model files in `models/`
55
+
56
+ 2. **`project_<name>_expected/`** - Expected output (after refactor)
57
+ - Mirror of input with the DESIRED transformations applied
58
+
59
+ 3. **`project_<name>_expected.stdout`** - Expected JSON log output
60
+ - One JSON object per line documenting refactors that SHOULD be applied
61
+
62
+ ## Steps to Follow
63
+
64
+ ### Step 1: Gather Information
65
+
66
+ **Reference the README** for the authoritative list of deprecations: [README.md](../../../README.md)
67
+
68
+ **Discover existing test projects** to see patterns and avoid duplication:
69
+ ```bash
70
+ ls tests/integration_tests/dbt_projects/ | grep -v _expected
71
+ ```
72
+
73
+ Ask the user:
74
+ 1. What deprecation, bug, or behavior is being tested?
75
+ 2. Is there a GitHub issue number to reference?
76
+ 3. Does this test need special flags?
77
+ - `--behavior-change` mode
78
+ - `--semantic-layer` mode
79
+
80
+ ### Step 2: Understand Current Behavior (Optional)
81
+
82
+ Run with `GOLDIE_UPDATE=1` to see what the tool currently does:
83
+
84
+ ```bash
85
+ GOLDIE_UPDATE=1 uv run pytest "tests/integration_tests/test_full_dbt_projects.py::test_project_refactor[project_<name>]" -v
86
+ ```
87
+
88
+ **Note:** Do NOT commit the auto-generated `_expected` files from `GOLDIE_UPDATE` without review. They reflect current behavior, not necessarily desired behavior. Manually craft the expected output to reflect what the behavior *should* be.
89
+
90
+ ### Step 3: Create Project Structure
91
+
92
+ ```
93
+ tests/integration_tests/dbt_projects/
94
+ ├── project_<name>/
95
+ │ ├── dbt_project.yml
96
+ │ └── models/
97
+ │ └── <model>.sql (or .py for Python models)
98
+ ├── project_<name>_expected/
99
+ │ ├── dbt_project.yml
100
+ │ └── models/
101
+ │ └── <model>.sql
102
+ └── project_<name>_expected.stdout
103
+ ```
104
+
105
+ **Minimal `dbt_project.yml`:**
106
+ ```yaml
107
+ name: '<test name>'
108
+ version: '1.0.0'
109
+ config-version: 2
110
+
111
+ profile: 'default'
112
+
113
+ model-paths: ["models"]
114
+ ```
115
+
116
+ ### Step 4: Create Test Models (Input)
117
+
118
+ Create model files that demonstrate the behavior being tested. The input should contain the pattern that triggers the deprecation/refactor.
119
+
120
+ ### Step 5: Create Expected Output (Desired Behavior)
121
+
122
+ Manually create the `_expected` files showing what the output SHOULD be after the fix/feature is implemented. Do NOT just copy current behavior.
123
+
124
+ ### Step 6: Create Expected stdout
125
+
126
+ Write the JSON log output that SHOULD be produced. Each line is a JSON object:
127
+
128
+ ```json
129
+ {"mode": "applied", "file_path": "...", "refactors": [{"deprecation": "...", "log": "..."}]}
130
+ {"mode": "complete"}
131
+ ```
132
+
133
+ ### Step 7: Handle Special Modes (if needed)
134
+
135
+ If the test requires `--behavior-change` or `--semantic-layer`, add an entry to the dicts in `tests/integration_tests/test_full_dbt_projects.py`:
136
+
137
+ ```python
138
+ project_dir_to_behavior_change_mode["project_<name>"] = True
139
+ # or
140
+ project_dir_to_semantic_layer_mode["project_<name>"] = True
141
+ ```
142
+
143
+ ### Step 8: Verify Test Behavior
144
+
145
+ ```bash
146
+ # Should fail (or xfail) if feature not implemented
147
+ uv run pytest "tests/integration_tests/test_full_dbt_projects.py::test_project_refactor[project_<name>]" -v
148
+
149
+ # Should pass once feature is implemented
150
+ ```
151
+
152
+ ## Golden File Tips
153
+
154
+ - `GOLDIE_UPDATE=1` shows current behavior - use for understanding, not as source of truth
155
+ - The `file_path` key is ignored during comparison (paths don't need to match)
156
+ - Blank lines are ignored in file comparisons
157
+ - The `_expected` suffix must match exactly
158
+ - Include trailing newlines in files
159
+
160
+ ## Example Workflows
161
+
162
+ ### Bug Fix (quoted strings causing errors)
163
+
164
+ 1. Create `project_config_quoted_strings/` with a model containing the problematic quoted string
165
+ 2. Create `project_config_quoted_strings_expected/` showing correct handling (no error, proper transformation)
166
+ 3. Test fails initially (bug exists)
167
+ 4. Fix the bug
168
+ 5. Test passes (bug fixed)
169
+
170
+ ### Feature Request (Python model custom config access)
171
+
172
+ 1. Create `project_python_model_meta_config/` with a Python model using `dbt.config.get("custom_key")`
173
+ 2. Create `project_python_model_meta_config_expected/` showing the Python code updated to `dbt.config.get("meta").get("custom_key")`
174
+ 3. Test fails initially (feature not implemented)
175
+ 4. Implement feature
176
+ 5. Test passes (feature complete)
Binary file
@@ -0,0 +1,6 @@
1
+ * @chayac @dbt-labs/dbt-package-owners
2
+
3
+
4
+ ### Deprecations
5
+
6
+ /src/dbt_autofix/deprecations.py @dbt-labs/growth-pricing
@@ -0,0 +1,16 @@
1
+ version: 2
2
+ updates:
3
+ # Enable version updates for API
4
+ - package-ecosystem: "uv"
5
+ # Look for `pyproject.toml` and `uv.lock` file in the `root` directory
6
+ directory: "/"
7
+ schedule:
8
+ interval: "daily"
9
+
10
+ # Enable version updates for GitHub Actions
11
+ - package-ecosystem: "github-actions"
12
+ # Workflow files stored in the default location of `.github/workflows`
13
+ # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
14
+ directory: "/"
15
+ schedule:
16
+ interval: "weekly"
@@ -0,0 +1,22 @@
1
+ ## Description
2
+
3
+ Please describe the changes made and why they were made. Link to any relevant issues or tickets.
4
+
5
+ ## Type of change
6
+
7
+ * [ ] Bug fix (non-breaking change which fixes an issue)
8
+ * [ ] New feature (non-breaking change which adds functionality)
9
+ * [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
10
+ * [ ] Documentation update
11
+
12
+ ## Checklist
13
+
14
+ * [ ] Ran `uv run ruff check . --config pyproject.toml`
15
+ * [ ] Ran `uv run ruff format --config pyproject.toml`
16
+ * [ ] Ran `uv run ty check`
17
+ * [ ] If this is a bug fix:
18
+ * [ ] Updated integration tests with bug repro
19
+ * [ ] Linked to bug report ticket
20
+ * [ ] Added unit tests if needed
21
+ * [ ] Updated unit tests if needed
22
+ * [ ] Tests passed when run locally
@@ -0,0 +1,15 @@
1
+ name: Run Nox on PR
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+
7
+ jobs:
8
+ nox:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # actions/checkout@v4
12
+ - name: Install uv
13
+ uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # astral-sh/setup-uv@v5
14
+ - uses: fjwillemsen/setup-nox2@da319daa4a57af7b0802d65173dd08b7e902fa08 # fjwillemsen/setup-nox2@v4.0.0
15
+ - run: nox
@@ -0,0 +1,48 @@
1
+ name: Run Pytest
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ types: [opened, synchronize, reopened]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ name: test on ${{ matrix.python-version }}
15
+ runs-on: ubuntu-latest
16
+ continue-on-error: true
17
+ timeout-minutes: 5
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
22
+ steps:
23
+ - uses: actions/checkout@v7
24
+
25
+ - uses: astral-sh/setup-uv@e58605a9b6da7c637471fab8847a5e5a6b8df081 # v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+ enable-cache: true
29
+ cache-suffix: test
30
+
31
+ - run: uv sync --all-packages
32
+ - run: uv run pytest
33
+
34
+ static-analysis:
35
+ name: static analysis
36
+ runs-on: ubuntu-latest
37
+ timeout-minutes: 5
38
+ steps:
39
+ - uses: actions/checkout@v7
40
+ - uses: astral-sh/setup-uv@e58605a9b6da7c637471fab8847a5e5a6b8df081 # v5
41
+ with:
42
+ python-version: "3.10"
43
+ enable-cache: true
44
+ cache-suffix: static-analysis
45
+ - run: uv sync --all-packages
46
+ - run: uv run ruff check . --config pyproject.toml --output-format github
47
+ - run: uv run ruff format --check --diff . --config pyproject.toml
48
+ - run: uv run ty check --output-format github
@@ -0,0 +1,52 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ deploy-to:
7
+ type: choice
8
+ description: Choose where to publish (test/prod)
9
+ options:
10
+ - PypiProd
11
+ - PypiTest
12
+ default: PypiTest
13
+ push:
14
+ tags:
15
+ - 'v*'
16
+
17
+ permissions: read-all
18
+
19
+ # will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise
20
+ concurrency:
21
+ group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }}
22
+ cancel-in-progress: true
23
+
24
+ jobs:
25
+
26
+ release:
27
+ name: PyPI - ${{ inputs.deploy-to || 'PypiProd' }}
28
+ runs-on: ubuntu-latest
29
+ permissions:
30
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
31
+
32
+ steps:
33
+ - name: Check out repository
34
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # actions/checkout@v4
35
+ with:
36
+ persist-credentials: false
37
+
38
+ - name: Install uv
39
+ uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # astral-sh/setup-uv@v3
40
+
41
+ - name: Build artifacts
42
+ run: uv build --all
43
+
44
+ - name: Publish artifacts to PyPI Test
45
+ if: inputs.deploy-to == 'PypiTest'
46
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # pypa/gh-action-pypi-publish@release/v1
47
+ with:
48
+ repository-url: https://test.pypi.org/legacy/
49
+
50
+ - name: Publish artifacts to PyPI Prod
51
+ if: inputs.deploy-to == 'PypiProd' || github.event_name == 'push'
52
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,17 @@
1
+ name: Run Nox every hour to check JSON schema parsing
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 * * * *'
6
+
7
+ jobs:
8
+ nox:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # actions/checkout@v4
12
+ - name: Install uv
13
+ uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # astral-sh/setup-uv@v5
14
+ - uses: fjwillemsen/setup-nox2@da319daa4a57af7b0802d65173dd08b7e902fa08 # fjwillemsen/setup-nox2@v4.0.0
15
+ - run: nox --session check_latest_schema-3.13
16
+ - run: uv sync --all-extras --all-packages --python 3.13
17
+ - run: uv run --python 3.13 pytest
@@ -0,0 +1,30 @@
1
+ name: Dependency Submission for uv
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches: ['main', 'master']
7
+ paths:
8
+ - '**/uv.lock'
9
+
10
+ permissions: {}
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ dependency-submission:
18
+ name: Submit uv dependencies
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 15
21
+ permissions:
22
+ contents: write # needs to submit dependency graph data
23
+ steps:
24
+ - name: Checkout repository
25
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
26
+ with:
27
+ persist-credentials: false
28
+
29
+ - name: Submit dependency snapshot
30
+ uses: rmuir/uv-dependency-submission@1c48aaac13e566e39fd04269ff1900b86c1105c5 # v1.0.0
@@ -0,0 +1,30 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ .nox
12
+ venv
13
+
14
+ # IDE files
15
+ .vscode/launch.json
16
+ .vscode/settings.json
17
+
18
+ # special files
19
+ config_resources.csv
20
+ project2/*
21
+
22
+ .DS_Store
23
+
24
+ # raw package hub output (because big)
25
+ src/dbt_autofix/packages/scripts/output/*
26
+ # profiles.yml temporarily added by unit tests
27
+ tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/profiles.yml
28
+
29
+ # Fusion logs output
30
+ **/logs/*
@@ -0,0 +1,19 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.11.2
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ args: [ --fix ]
9
+ # Run the formatter.
10
+ - id: ruff-format
11
+
12
+ - repo: local
13
+ hooks:
14
+ - id: ty
15
+ name: Run ty type checker
16
+ entry: uv run ty check .
17
+ language: system
18
+ types: [python]
19
+ pass_filenames: false # Prevents passing only staged files, runs on the whole project
@@ -0,0 +1,13 @@
1
+ - id: dbt-autofix-check
2
+ name: Check for dbt deprecations
3
+ description: Check for dbt deprecations using dbt-autofix (dry-run mode)
4
+ entry: python -m pre_commit_hooks.check_deprecations --dry-run
5
+ language: python
6
+ pass_filenames: true
7
+
8
+ - id: dbt-autofix-fix
9
+ name: Fix dbt deprecations
10
+ description: Automatically fix dbt deprecations using dbt-autofix
11
+ entry: python -m pre_commit_hooks.check_deprecations
12
+ language: python
13
+ pass_filenames: true
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,72 @@
1
+ # `AGENTS.md`
2
+
3
+ ## Goals
4
+
5
+ 1. Make a pre-existing dbt project compatible with the new authoring layer, so it can parse and compile successfully on the Fusion engine.
6
+ 2. Preserve existing functionality as much as possible.
7
+ 3. Flag when the dbt project is using functionality that's not yet supported in Fusion, and ask users so they can choose whether to wait for feature support or remove use of unsupported features.
8
+
9
+
10
+ ## Migrating to the new authoring layer and the dbt Fusion engine
11
+
12
+ if a user says "migrate my dbt project to the new authoring layer" or "make my dbt project compatible with the Fusion engine" do the following steps and the migration is only successfully completed once `dbtf compile` finishes with 0 errors. Create a changes_made.md file documenting and summarizing all of the code changes made in the user's dbt project, including what the error was, the fix applied, and a summary of why the fix was chosen.
13
+
14
+ Before you begin, please read and understand the resources section below. You should strictly use the resources below to update the project.
15
+
16
+ 1. Run `dbtf debug` in the terminal to check their data platform connections. Proceed to step 2 if there are no errors. If there are errors, please summarize the error succinctly so the user knows how to debug on their own.
17
+ 2. Run `dbtf parse --show-all-deprecations` in the terminal to check for compatibility errors in their current project. Summarize the log output by specifying how many errors were found and group the errors in a way that's easily understandable.
18
+ 3. Install [dbt-autofix](https://github.com/dbt-labs/dbt-autofix) and run autofix to try to fix errors. Prefer uv/uvx to install (`uv tool install dbt-autofix`) and run the package (`uvx dbt-autofix deprecations`), but fall back to pip and other methods if needed. Summarize the results of the autofix run and include how many errors were resolved. Run `dbtf parse` again to check for remaining errors and summarize with how many errors were found and a brief summary of the types of errors.
19
+ 4. For remaining errors, please ONLY use the resources below to attempt to resolve them. If you can't figure out a fix from the resources below, notify the user and break out of the flow. Attempt the fixes error by error, grouping similar errors based on the error code and message. You should also summarize which error you're working on in the chat to give users context.
20
+
21
+ **Special handling for common unsupported features:**
22
+ - **Python model errors**: Disable with `{{ config(enabled=false) }}` at the top of the file.
23
+
24
+ Run `dbtf parse` throughout this step to check for progress towards completing the migration. Once `dbtf parse` finishes successfully with 0 errors, proceed to step 5.
25
+ 5. Run `dbtf compile` in the terminal and check if it finishes with 0 errors. If it finishes with 0 errors, you have successfully completed the migration. If there are unresolved errors, try step 4 again. Except this time, use `dbtf compile` to check for progress towards completing the migration.
26
+
27
+ ## Don't Do These Things
28
+ 1. At any point, if you run into a feature that's not yet supported on Fusion (not a deprecation!), please let the user know instead of trying to resolve it. Give the user the choice of removing the feature or manually addressing it themselves.
29
+
30
+ ## Handling Unsupported Features
31
+
32
+ When you encounter unsupported features in Fusion, follow this decision tree:
33
+
34
+ ### For Unsupported Model Types (Python models, etc.)
35
+ - **Python models**: Disable with `{{ config(enabled=false) }}` at the top of the file
36
+ - **Materialized views/Dynamic tables**: Disable with `{{ config(enabled=false) }}` at the top of the file
37
+
38
+ ### For Unsupported Config Keys
39
+ - **Custom configs**: Move to `meta` block in model files (see [`custom_configuration.md`](https://github.com/dbt-labs/dbt-autofix/blob/main/manual_fixes/custom_configuration.md))
40
+ - **Deprecated configs**: Follow misspelled_config_keys.md guidance
41
+
42
+ ### For Dependency Issues
43
+ - If a model depends on an unsupported feature, disable the dependent model as well
44
+ - Update exposure dependencies to remove references to disabled models
45
+
46
+ ## Resources
47
+
48
+ ### Common problems that cannot be addressed with deterministic dbt-autofix
49
+ Use the files in the `manual_fixes/` directory as the context for resolving these common problems:
50
+ - Each file outlines one problem and the solution you should use.
51
+ - Only follow what's specified in the file. If you need more context, use the dbt docs section below as a resource.
52
+
53
+ Unsupported features and blockers to Fusion compatibility. These pages outline the supported and unsupported features of the Fusion engine:
54
+ - https://docs.getdbt.com/docs/fusion/supported-features
55
+ - Unsupported features on Fusion: https://docs.getdbt.com/docs/fusion/supported-features#limitations
56
+ - https://docs.getdbt.com/docs/dbt-versions/core-upgrade/upgrading-to-fusion
57
+ - If a model type is unsupported on Fusion (e.g. python models), you can disable it with this jinja macro `{{ config(enabled=false) }}` at the top of the file to disable the model.
58
+
59
+ Config keys that Fusion should recognize:
60
+ You can find the latest schema file using this template: `https://public.cdn.getdbt.com/fs/schemas/fs-schema-{RESOURCE}-{VERSION}.json`
61
+ - `RESOURCE` is either `dbt-yaml-files` or `dbt-project`
62
+ - `VERSION` is the fusion version (e.g. `v2.0.0-beta.34`, but `https://public.cdn.getdbt.com/fs/latest.json` gives you the latest version)
63
+ - Example file: https://public.cdn.getdbt.com/fs/schemas/fs-schema-dbt-yaml-files-v2.0.0-beta.34.json
64
+
65
+ ### dbt docs
66
+
67
+ https://docs.getdbt.com/reference/deprecations#list-of-deprecation-warnings
68
+ https://github.com/dbt-labs/dbt-fusion/discussions/401
69
+ https://docs.getdbt.com/docs/fusion/supported-features
70
+ https://docs.getdbt.com/docs/fusion/new-concepts
71
+
72
+
@@ -0,0 +1,53 @@
1
+ # Contributing to `dbt-autofix`
2
+
3
+ ## Installation
4
+
5
+ This project uses `uv` for workspace and virtualenv management.
6
+
7
+ 1. Clone the repo: `gh repo clone dbt-labs/dbt-autofix`
8
+ 2. Install `uv`: [See docs](https://docs.astral.sh/uv/getting-started/installation/)
9
+ 3. Install dependencies: `uv sync`
10
+ 4. Activate virtual environment: `source .venv/bin/activate`
11
+
12
+ You confirm your installation worked as expected via `dbt-autofix --version`
13
+
14
+ ## Testing
15
+
16
+ The tests in this codebase are located in the `tests` directory and contain `integration_tests` and `unit_tests` subdirectories.
17
+
18
+ To run all tests in the repo, simply run `pytest tests`
19
+
20
+ Integration tests are based on check-in sample dbt projects and corresponding expected dbt projects and stdout log files. For example:
21
+ * `integration_tests/dbt_projects/project1` is a sample input project.
22
+ * `integration_tests/dbt_projects/project1_expected` is the expected resulting project after `dbt-autofix deprecations <flags>` is run.
23
+ * `integration_tests/dbt_projects/project1_expected.stdout` contains the the expected stdout logs.
24
+
25
+ If `*.stdout` files need to be updated to reflect new or changed logs as part of the change being introduced, run:
26
+
27
+ ```sh
28
+ GOLDIE_UPDATE=1 pytest tests/integration_tests
29
+ ```
30
+
31
+ to automatically update the expected *.stdout files.
32
+ ## Adding new dependencies
33
+
34
+ `dbt-autofix` declares `dependencies` as dynamic (managed by the `uv-dynamic-versioning` metadata hook), so `uv add` cannot write to `[project].dependencies`.
35
+
36
+ - **Runtime dependency:** Manually add it to the `[tool.hatch.metadata.hooks.uv-dynamic-versioning].dependencies` list in `pyproject.toml`, then run `uv sync`.
37
+ - **Dev/test dependency:** `uv add --optional test <package>` works as normal since `[project.optional-dependencies]` is static.
38
+
39
+ ## Releasing
40
+
41
+ To kick off a new release:
42
+ 1. Click into 'Releases' under the 'About' section of https://github.com/dbt-labs/dbt-autofix
43
+ 2. Click 'Draft a new release'
44
+ 3. Create a new tag - incrementing the last latest release available on https://pypi.org/project/dbt-autofix/ by either a minor or patch version as appropriate - format should be `v0.*.*`
45
+ 4. Title the release the same as the tag name from (3)
46
+ 5. Click 'Generate release notes` to populate the release body
47
+ 6. Hit 'Publish Release' ensuring that `Set as the latest release` is checked.
48
+
49
+ That's it! The Github release triggers an automated release to pypi which can be observed at: https://github.com/dbt-labs/dbt-autofix/actions/workflows/release.yml
50
+
51
+ ## Troubleshooting
52
+
53
+ If you're not getting autocomplete in VSCode for `dbt-fusion-package-tools`, open VSC settings and enable "Python > Terminal: Activate Env in Current Terminal."