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.
- dbt_autofix-0.0.0.post1.dev0/.claude/skills/add-integration-test/SKILL.md +176 -0
- dbt_autofix-0.0.0.post1.dev0/.coverage +0 -0
- dbt_autofix-0.0.0.post1.dev0/.github/CODEOWNERS +6 -0
- dbt_autofix-0.0.0.post1.dev0/.github/dependabot.yml +16 -0
- dbt_autofix-0.0.0.post1.dev0/.github/pull_request_template.md +22 -0
- dbt_autofix-0.0.0.post1.dev0/.github/workflows/nox-pr.yml +15 -0
- dbt_autofix-0.0.0.post1.dev0/.github/workflows/pytest-pr.yml +48 -0
- dbt_autofix-0.0.0.post1.dev0/.github/workflows/release.yml +52 -0
- dbt_autofix-0.0.0.post1.dev0/.github/workflows/schedule.yml +17 -0
- dbt_autofix-0.0.0.post1.dev0/.github/workflows/uv-dependency-submission.yml +30 -0
- dbt_autofix-0.0.0.post1.dev0/.gitignore +30 -0
- dbt_autofix-0.0.0.post1.dev0/.pre-commit-config.yaml +19 -0
- dbt_autofix-0.0.0.post1.dev0/.pre-commit-hooks.yaml +13 -0
- dbt_autofix-0.0.0.post1.dev0/.python-version +1 -0
- dbt_autofix-0.0.0.post1.dev0/AGENTS.md +72 -0
- dbt_autofix-0.0.0.post1.dev0/CONTRIBUTING.md +53 -0
- dbt_autofix-0.0.0.post1.dev0/LICENSE +201 -0
- dbt_autofix-0.0.0.post1.dev0/PKG-INFO +200 -0
- dbt_autofix-0.0.0.post1.dev0/README.md +180 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/README.md +17 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/custom_configuration.md +105 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/dynamic_sql.md +33 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/misspelled_config_keys.md +16 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/package_incompatibility.md +51 -0
- dbt_autofix-0.0.0.post1.dev0/manual_fixes/sources_without_tables.md +13 -0
- dbt_autofix-0.0.0.post1.dev0/notes.md +5 -0
- dbt_autofix-0.0.0.post1.dev0/noxfile.py +266 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/.gitignore +28 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/.python-version +1 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/README.md +55 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/pyproject.toml +41 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/__init__.py +2 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/check_parse_conformance.py +445 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/compatibility.py +51 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/dbt_package.py +276 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/dbt_package_version.py +110 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/exceptions.py +26 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/fusion_version_compatibility_output.py +12852 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/manual_overrides.py +100 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/package_example.py +2 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/scripts/conformance_output.py +138 -0
- 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
- 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
- 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
- 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
- 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
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/upgrade_status.py +41 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/version_utils.py +523 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/yaml/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/packages/dbt_fusion_package_tools/src/dbt_fusion_package_tools/yaml/loader.py +49 -0
- dbt_autofix-0.0.0.post1.dev0/pre_commit_hooks/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/pre_commit_hooks/check_deprecations.py +163 -0
- dbt_autofix-0.0.0.post1.dev0/pyproject.toml +202 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/_jinja_environment.py +305 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/dbt_api.py +343 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/deprecations.py +20 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/duplicate_keys.py +133 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/fields_properties_configs.py +348 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/hub_packages.py +72 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/jinja.py +259 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/main.py +252 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/package_upgrade.py +584 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_file.py +319 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_lock_file.py +155 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/dbt_package_text_file.py +315 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/packages/installed_packages.py +168 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactor.py +740 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/__init__.py +0 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_project_yml.py +636 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_python.py +362 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_schema_yml.py +1086 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_schema_yml_semantic_layer.py +1065 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_sql.py +723 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/changesets/dbt_sql_improved.py +142 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/constants.py +17 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/fancy_quotes_utils.py +22 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/iceberg_table_format.py +40 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/results.py +386 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/static_analysis.py +127 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/refactors/yml.py +68 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/retrieve_schemas.py +348 -0
- dbt_autofix-0.0.0.post1.dev0/src/dbt_autofix/semantic_definitions.py +189 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/.gitignore +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/.gitignore +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/.gitignore +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/README.md +15 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/analyses/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/dbt_project.yml +71 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/macros/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/analyses.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/groups.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_config.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_custom_configs.sql +25 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_dbt_jinja.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_dbt_jinja_hook.sql +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_jinja_plus.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_malformed_comment.sql +19 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/model_with_post_hook.sql +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/my_first_dbt_model.sql +27 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/my_second_dbt_model.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/schema_yml_with_tests.yml +67 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/semantic_models.yml +74 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/sources.yml +72 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_anchors.yml +27 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_custom_keys.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_dupes.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/example/yml_with_tabs.yml +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/exposures.yml +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/models/how_to.md +14 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/seeds/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/snapshots/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/null_email.sql +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1/tests/null_email2.sql +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/.gitignore +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/README.md +15 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/analyses/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/dbt_project.yml +69 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/macros/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/analyses.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/groups.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_config.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_custom_configs.sql +21 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_dbt_jinja.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_dbt_jinja_hook.sql +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_jinja_plus.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_malformed_comment.sql +19 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/model_with_post_hook.sql +4 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/my_first_dbt_model.sql +27 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/my_second_dbt_model.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/schema_yml_with_tests.yml +78 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/semantic_models.yml +74 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/sources.yml +73 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_anchors.yml +29 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_custom_keys.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_dupes.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/example/yml_with_tabs.yml +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/exposures.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/models/how_to.md +14 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/seeds/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/snapshots/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/.gitkeep +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/null_email.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected/tests/null_email2.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project1_expected.stdout +452 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/dbt_project.yml +26 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/model with spaces.sql +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/python model with spaces.py +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/example/schema.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes/models/how_to.md +14 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/dbt_project.yml +26 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/example/model_with_spaces.sql +1 -0
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/example/schema.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected/models/how_to.md +14 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_behavior_changes_expected.stdout +55 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings/dbt_project.yml +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings/models/my_autofix_model.sql +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected/dbt_project.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected/models/my_autofix_model.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_config_quoted_strings_expected.stdout +26 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/customer_metrics.py +22 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/models.yaml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config/models/order_summary.sql +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/customer_metrics.py +22 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/models.yaml +12 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected/models/order_summary.sql +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_custom_key_in_config_expected.stdout +49 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/.dbtignore +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/ignored/ignored_model.sql +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/ignored/schema.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/included/included_model.sql +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore/models/included/schema.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/.dbtignore +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/dbt_project.yml +12 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/ignored/ignored_model.sql +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/ignored/schema.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/included/included_model.sql +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected/models/included/schema.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_dbtignore_expected.stdout +25 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates/dbt_project.yml +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates/models/schema.yml +25 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected/dbt_project.yml +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected/models/schema.yml +23 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_jinja_templates_expected.stdout +23 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/models/schema.yml +24 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config/tests/data_quality_test.sql +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected/models/schema.yml +28 -0
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_nested_quotes_in_config_expected.stdout +50 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/dbt_project.yml +23 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/customers.yml +120 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/locations.yml +35 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/locations_model.yml +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/order_items.yml +257 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/orders.yml +137 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/products.yml +26 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer/models/supplies.yml +24 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/dbt_project.yml +23 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/customers.yml +103 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/locations.yml +0 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/locations_model.yml +46 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/order_items.yml +248 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/orders.yml +126 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/products.yml +29 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected/models/supplies.yml +26 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_semantic_layer_expected.stdout +347 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/dbt_project.yml +28 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/model_sql_false.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/model_sql_true.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/models/schema.yml +15 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis/seeds/sample_seed.csv +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/dbt_project.yml +30 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/model_sql_false.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/model_sql_true.sql +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/models/schema.yml +15 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected/seeds/sample_seed.csv +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/dbt_projects/project_static_analysis_expected.stdout +79 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/dbt_project.yml +30 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/package-lock.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/integration_tests/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/codegen/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/datavault4dbt/dbt_project.yml +87 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/dbt_project.yml +81 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/package-lock.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_packages/dbt_utils/integration_tests/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/package-lock.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/datavault4dbt/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/.gitignore +4 -0
- 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
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/dependencies.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/package-lock.yml +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/dbt_utils_package_lookup_map_2/packages.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/avo_audit/dbt_project.yml +9 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/codegen/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_artifacts/dbt_project.yml +23 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_date/dbt_project.yml +20 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_project_evaluator/dbt_project.yml +115 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_set_similarity/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_stat_test/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/dbt_utils/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/logging/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/materialize_dbt_utils/dbt_project.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_packages/snowplow/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/dependencies.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/mixed_versions/packages.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/dbt_project.yml +10 -0
- 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
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/integration_tests/profiles.yml +50 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/audit_helper/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/dbt_project.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/dbt_project.yml +30 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/package-lock.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/integration_tests/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/codegen/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/dbt_project.yml +19 -0
- 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
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_date/integration_tests/packages.yml +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/dbt_project.yml +14 -0
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/integration_tests/packages.yml +2 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_expectations/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/dbt_project.yml +112 -0
- 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
- 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
- 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
- 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
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_project_evaluator/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/dbt_utils/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/dbt_project.yml +38 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/package-lock.yml +8 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_packages/jaffle_shop/packages.yml +7 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/dbt_project.yml +24 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/package-lock.yml +25 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/private_packages/packages.yml +13 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/ad_reporting/dbt_project.yml +24 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/ad_reporting/packages.yml +33 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/amazon_ads/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/amazon_ads/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/apple_search_ads/dbt_project.yml +30 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/apple_search_ads/packages.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_project_evaluator/dbt_project.yml +115 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_project_evaluator/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/dbt_utils/dbt_project.yml +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/facebook_ads/dbt_project.yml +46 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/facebook_ads/packages.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/fivetran_utils/dbt_project.yml +4 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/fivetran_utils/packages.yml +3 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/google_ads/dbt_project.yml +41 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/google_ads/packages.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/linkedin/dbt_project.yml +31 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/linkedin/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/microsoft_ads/dbt_project.yml +36 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/microsoft_ads/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/pinterest/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/pinterest/packages.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/reddit_ads/dbt_project.yml +47 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/reddit_ads/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/snapchat_ads/dbt_project.yml +36 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/snapchat_ads/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/spark_utils/dbt_project.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/tiktok_ads/dbt_project.yml +29 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/tiktok_ads/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/twitter_ads/dbt_project.yml +41 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_packages/twitter_ads/packages.yml +5 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/dbt_project.yml +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/package-lock.yml +50 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/package_upgrades/transitive_dependencies/packages.yml +10 -0
- dbt_autofix-0.0.0.post1.dev0/tests/integration_tests/test_full_dbt_projects.py +171 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_packages/dbt_utils/dbt_project.yml +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_packages/private_package/dbt_project.yml +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/dbt_projects/project_with_packages/dbt_project.yml +6 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/README.md +1 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/dbt_utils.json +1572 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_check_parse_conformance.py +467 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package.py +134 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_file.py +266 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_lock_file.py +160 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_text_file.py +194 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_dbt_package_version.py +347 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_fusion_compatible_versions.py +49 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_hub_fusion_compatibility.py +355 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade.py +175 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade_datavault4dbt.py +115 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_package_upgrade_with_lock_file.py +131 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_update_package_hub_json.py +484 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_version_utils.py +49 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/package_upgrades/test_yaml.py +11 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_check_deprecations.py +16 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_check_fields_no_overlap.py +21 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_config_meta_autofix.py +380 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dbt_api.py +52 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dbt_python.py +801 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_dict_config_subkeys.py +286 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_duplicate_keys.py +139 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_fix_space_after_plus.py +444 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_iceberg_table_format_autofix.py +256 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_jinja.py +346 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_jinja_environment.py +45 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_rec_check_yaml_path.py +962 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_refactor.py +2995 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_retrieve_schemas.py +34 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_serialize_config.py +222 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_should_skip_package.py +24 -0
- dbt_autofix-0.0.0.post1.dev0/tests/unit_tests/test_static_analysis.py +154 -0
- 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,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."
|