altimate-datapilot-cli 0.0.8__tar.gz → 0.0.9__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 (202) hide show
  1. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.bumpversion.cfg +1 -1
  2. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/CONTRIBUTING.rst +1 -1
  3. {altimate-datapilot-cli-0.0.8/src/altimate_datapilot_cli.egg-info → altimate-datapilot-cli-0.0.9}/PKG-INFO +5 -5
  4. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/README.rst +2 -2
  5. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/conf.py +6 -6
  6. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/features.rst +1 -1
  7. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/hooks.rst +2 -2
  8. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/setup.py +4 -4
  9. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9/src/altimate_datapilot_cli.egg-info}/PKG-INFO +5 -5
  10. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/SOURCES.txt +4 -0
  11. altimate-datapilot-cli-0.0.9/src/datapilot/__init__.py +1 -0
  12. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/factory.py +6 -2
  13. altimate-datapilot-cli-0.0.9/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/schemas.py +47 -0
  14. altimate-datapilot-cli-0.0.9/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py +396 -0
  15. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/core/platform/dbt/test_cli.py +18 -0
  16. altimate-datapilot-cli-0.0.9/tests/data/manifest_v10.json +1 -0
  17. altimate-datapilot-cli-0.0.9/tests/utils/__init__.py +0 -0
  18. altimate-datapilot-cli-0.0.8/src/datapilot/__init__.py +0 -1
  19. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.cookiecutterrc +0 -0
  20. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.coveragerc +0 -0
  21. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.editorconfig +0 -0
  22. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.github/workflows/github-actions.yml +0 -0
  23. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.pre-commit-config.yaml +0 -0
  24. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.pre-commit-hooks.yaml +0 -0
  25. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/.readthedocs.yml +0 -0
  26. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/AUTHORS.rst +0 -0
  27. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/CHANGELOG.rst +0 -0
  28. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/LICENSE +0 -0
  29. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/MANIFEST.in +0 -0
  30. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/README.md +0 -0
  31. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/ci/bootstrap.py +0 -0
  32. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/ci/requirements.txt +0 -0
  33. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/ci/templates/.github/workflows/github-actions.yml +0 -0
  34. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/authors.rst +0 -0
  35. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/changelog.rst +0 -0
  36. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/configuration.rst +0 -0
  37. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/contributing.rst +0 -0
  38. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/index.rst +0 -0
  39. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/insights.rst +0 -0
  40. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/installation.rst +0 -0
  41. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/introduction.rst +0 -0
  42. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/performance.rst +0 -0
  43. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/readme.rst +0 -0
  44. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/reference/datapilot.rst +0 -0
  45. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/reference/index.rst +0 -0
  46. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/requirements.txt +0 -0
  47. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/spelling_wordlist.txt +0 -0
  48. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/docs/usage.rst +0 -0
  49. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/pyproject.toml +0 -0
  50. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/pytest.ini +0 -0
  51. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/setup.cfg +0 -0
  52. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/dependency_links.txt +0 -0
  53. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/entry_points.txt +0 -0
  54. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/not-zip-safe +0 -0
  55. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/requires.txt +0 -0
  56. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/altimate_datapilot_cli.egg-info/top_level.txt +0 -0
  57. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/__main__.py +0 -0
  58. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/cli/__init__.py +0 -0
  59. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/cli/main.py +0 -0
  60. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/clients/__init__.py +0 -0
  61. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/clients/altimate/__init__.py +0 -0
  62. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/clients/altimate/client.py +0 -0
  63. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/clients/altimate/utils.py +0 -0
  64. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/config/__init__.py +0 -0
  65. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/config/config.py +0 -0
  66. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/config/utils.py +0 -0
  67. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/__init__.py +0 -0
  68. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/__init__.py +0 -0
  69. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/base/__init__.py +0 -0
  70. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/base/insight.py +0 -0
  71. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/report.py +0 -0
  72. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/schema.py +0 -0
  73. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/sql/__init__.py +0 -0
  74. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/sql/base/__init__.py +0 -0
  75. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/sql/base/insight.py +0 -0
  76. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/sql/runtime/__init__.py +0 -0
  77. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/sql/static/__init__.py +0 -0
  78. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/insights/utils.py +0 -0
  79. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/__init__.py +0 -0
  80. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/__init__.py +0 -0
  81. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/cli/__init__.py +0 -0
  82. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/cli/cli.py +0 -0
  83. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/constants.py +0 -0
  84. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/exceptions.py +0 -0
  85. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/executor.py +0 -0
  86. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/formatting.py +0 -0
  87. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/hooks/__init__.py +0 -0
  88. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/hooks/executor_hook.py +0 -0
  89. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/__init__.py +0 -0
  90. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/base.py +0 -0
  91. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/__init__.py +0 -0
  92. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/base.py +0 -0
  93. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_column_desc_are_same.py +0 -0
  94. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_column_name_contract.py +0 -0
  95. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_args_have_desc.py +0 -0
  96. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_has_desc.py +0 -0
  97. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_all_columns.py +0 -0
  98. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_labels_keys.py +0 -0
  99. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_meta_keys.py +0 -0
  100. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_properties_file.py +0 -0
  101. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_group.py +0 -0
  102. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_name.py +0 -0
  103. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_type.py +0 -0
  104. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_materialization_by_childs.py +0 -0
  105. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_name_contract.py +0 -0
  106. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_and_childs.py +0 -0
  107. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_database.py +0 -0
  108. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_schema.py +0 -0
  109. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_model_tags.py +0 -0
  110. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_childs.py +0 -0
  111. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_columns_have_desc.py +0 -0
  112. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_all_columns.py +0 -0
  113. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_freshness.py +0 -0
  114. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_labels_keys.py +0 -0
  115. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_loader.py +0 -0
  116. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_meta_keys.py +0 -0
  117. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests.py +0 -0
  118. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_group.py +0 -0
  119. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_name.py +0 -0
  120. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_type.py +0 -0
  121. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_table_has_description.py +0 -0
  122. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/checks/check_source_tags.py +0 -0
  123. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/dbt_test/__init__.py +0 -0
  124. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/dbt_test/base.py +0 -0
  125. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/dbt_test/missing_primary_key_tests.py +0 -0
  126. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/dbt_test/test_coverage.py +0 -0
  127. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/__init__.py +0 -0
  128. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/base.py +0 -0
  129. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/documentation_on_stale_columns.py +0 -0
  130. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/exposures_dependent_on_private_models.py +0 -0
  131. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/public_models_without_contracts.py +0 -0
  132. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_columns.py +0 -0
  133. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_public_models.py +0 -0
  134. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/README.md +0 -0
  135. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/__init__.py +0 -0
  136. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/base.py +0 -0
  137. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/direct_join_to_source.py +0 -0
  138. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/downstream_models_dependent_on_source.py +0 -0
  139. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/duplicate_sources.py +0 -0
  140. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/hard_coded_references.py +0 -0
  141. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/joining_of_upstream_concepts.py +0 -0
  142. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/model_fanout.py +0 -0
  143. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/multiple_sources_joined.py +0 -0
  144. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/root_model.py +0 -0
  145. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/source_fanout.py +0 -0
  146. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_downstream_models.py +0 -0
  147. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_staging_models.py +0 -0
  148. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/modelling/unused_sources.py +0 -0
  149. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/performance/__init__.py +0 -0
  150. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/performance/base.py +0 -0
  151. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/performance/chain_view_linking.py +0 -0
  152. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/performance/exposure_parent_materializations.py +0 -0
  153. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/schema.py +0 -0
  154. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/__init__.py +0 -0
  155. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/base.py +0 -0
  156. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/model_directories_structure.py +0 -0
  157. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/model_naming_conventions.py +0 -0
  158. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/source_directories_structure.py +0 -0
  159. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/structure/test_directory_structure.py +0 -0
  160. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/insights/utils.py +0 -0
  161. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/schemas/__init__.py +0 -0
  162. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/schemas/catalog.py +0 -0
  163. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/schemas/manifest.py +0 -0
  164. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/utils.py +0 -0
  165. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/__init__.py +0 -0
  166. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/catalog/__init__.py +0 -0
  167. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/__init__.py +0 -0
  168. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py +0 -0
  169. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/catalog/wrapper.py +0 -0
  170. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/manifest/__init__.py +0 -0
  171. {altimate-datapilot-cli-0.0.8/src/datapilot/core/platforms/dbt/wrappers/manifest/v11 → altimate-datapilot-cli-0.0.9/src/datapilot/core/platforms/dbt/wrappers/manifest/v10}/__init__.py +0 -0
  172. {altimate-datapilot-cli-0.0.8/src/datapilot/core/platforms/dbt/wrappers/run_results → altimate-datapilot-cli-0.0.9/src/datapilot/core/platforms/dbt/wrappers/manifest/v11}/__init__.py +0 -0
  173. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py +0 -0
  174. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py +0 -0
  175. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py +0 -0
  176. {altimate-datapilot-cli-0.0.8/src/datapilot/exceptions → altimate-datapilot-cli-0.0.9/src/datapilot/core/platforms/dbt/wrappers/run_results}/__init__.py +0 -0
  177. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/core/platforms/dbt/wrappers/run_results/run_results.py +0 -0
  178. {altimate-datapilot-cli-0.0.8/src/datapilot/schemas → altimate-datapilot-cli-0.0.9/src/datapilot/exceptions}/__init__.py +0 -0
  179. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/exceptions/exceptions.py +0 -0
  180. {altimate-datapilot-cli-0.0.8/src/datapilot/utils → altimate-datapilot-cli-0.0.9/src/datapilot/schemas}/__init__.py +0 -0
  181. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/schemas/constants.py +0 -0
  182. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/schemas/nodes.py +0 -0
  183. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/schemas/sql.py +0 -0
  184. {altimate-datapilot-cli-0.0.8/src/datapilot/utils/formatting → altimate-datapilot-cli-0.0.9/src/datapilot/utils}/__init__.py +0 -0
  185. {altimate-datapilot-cli-0.0.8/tests/core → altimate-datapilot-cli-0.0.9/src/datapilot/utils/formatting}/__init__.py +0 -0
  186. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/utils/formatting/utils.py +0 -0
  187. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/src/datapilot/utils/utils.py +0 -0
  188. {altimate-datapilot-cli-0.0.8/tests/core/platform → altimate-datapilot-cli-0.0.9/tests/core}/__init__.py +0 -0
  189. {altimate-datapilot-cli-0.0.8/tests/core/platform/dbt → altimate-datapilot-cli-0.0.9/tests/core/platform}/__init__.py +0 -0
  190. {altimate-datapilot-cli-0.0.8/tests/utils → altimate-datapilot-cli-0.0.9/tests/core/platform/dbt}/__init__.py +0 -0
  191. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/core/platform/dbt/test_utils.py +0 -0
  192. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/catalog_v1.json +0 -0
  193. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/config.yml +0 -0
  194. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifest_v11.json +0 -0
  195. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_js.json +0 -0
  196. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_js2.json +0 -0
  197. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_js3.json +0 -0
  198. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_tuva.json +0 -0
  199. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_tuva2.json +0 -0
  200. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/data/manifests/manifest_tuva3.json +0 -0
  201. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tests/utils/test_utils.py +0 -0
  202. {altimate-datapilot-cli-0.0.8 → altimate-datapilot-cli-0.0.9}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.0.8
2
+ current_version = 0.0.9
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -37,7 +37,7 @@ Development
37
37
 
38
38
  To set up `datapilot` for local development:
39
39
 
40
- 1. Fork `datapilot <https://github.com/AltimateAI/datapilot>`_
40
+ 1. Fork `datapilot <https://github.com/AltimateAI/datapilot-cli>`_
41
41
  (look for the "Fork" button).
42
42
  2. Clone your fork locally::
43
43
 
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.8
3
+ Version: 0.0.9
4
4
  Summary: Assistant for Data Teams
5
- Home-page: https://github.com/AltimateAI/datapilot
6
- Author: Anand Gupta
5
+ Home-page: https://github.com/AltimateAI/datapilot-cli
6
+ Author: Altimate Inc
7
7
  Author-email: info@altimate.ai
8
8
  License: MIT
9
9
  Project-URL: Documentation, https://datapilot.readthedocs.io/
10
10
  Project-URL: Changelog, https://datapilot.readthedocs.io/en/latest/changelog.html
11
- Project-URL: Issue Tracker, https://github.com/AltimateAI/datapilot/issues
11
+ Project-URL: Issue Tracker, https://github.com/AltimateAI/datapilot-cli/issues
12
12
  Platform: UNKNOWN
13
13
  Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Intended Audience :: Developers
@@ -50,7 +50,7 @@ Installation
50
50
 
51
51
  You can also install the in-development version with::
52
52
 
53
- pip install https://github.com/AltimateAI/datapilot/archive/main.zip
53
+ pip install https://github.com/AltimateAI/datapilot-cli/archive/main.zip
54
54
 
55
55
 
56
56
  Documentation
@@ -20,7 +20,7 @@ Overview
20
20
  :target: https://datapilot.readthedocs.io/
21
21
  :alt: Documentation Status
22
22
 
23
- .. |github-actions| image:: https://github.com/AltimateAI/datapilot/actions/workflows/github-actions.yml/badge.svg
23
+ .. |github-actions| image:: https://github.com/AltimateAI/datapilot-cli/actions/workflows/github-actions.yml/badge.svg
24
24
  :alt: GitHub Actions Build Status
25
25
  :target: https://github.com/AltimateAI/datapilot/actions
26
26
 
@@ -46,7 +46,7 @@ Installation
46
46
 
47
47
  You can also install the in-development version with::
48
48
 
49
- pip install https://github.com/AltimateAI/datapilot/archive/main.zip
49
+ pip install https://github.com/AltimateAI/datapilot-cli/archive/main.zip
50
50
 
51
51
 
52
52
  Documentation
@@ -11,22 +11,22 @@ extensions = [
11
11
  ]
12
12
  source_suffix = ".rst"
13
13
  master_doc = "index"
14
- project = "datapilot"
14
+ project = "datapilot-cli"
15
15
  year = "2024"
16
- author = "Anand Gupta"
16
+ author = "Altimate Inc."
17
17
  copyright = f"{year}, {author}"
18
- version = release = "0.0.8"
18
+ version = release = "0.0.9"
19
19
 
20
20
  pygments_style = "trac"
21
21
  templates_path = ["."]
22
22
  extlinks = {
23
- "issue": ("https://github.com/AltimateAI/datapilot/issues/%s", "#"),
24
- "pr": ("https://github.com/AltimateAI/datapilot/pull/%s", "PR #"),
23
+ "issue": ("https://github.com/AltimateAI/datapilot-cli/issues/%s", "#"),
24
+ "pr": ("https://github.com/AltimateAI/datapilot-cli/pull/%s", "PR #"),
25
25
  }
26
26
  html_theme = "sphinx_rtd_theme"
27
27
  # html_theme_path = [furo.get_html_theme_path()]
28
28
  # html_theme_options = {
29
- # "githuburl": "https://github.com/AltimateAI/datapilot/",
29
+ # "githuburl": "https://github.com/AltimateAI/datapilot-cli/",
30
30
  # }
31
31
 
32
32
  html_use_smartypants = True
@@ -4,7 +4,7 @@ dbt
4
4
  project-health
5
5
  --------------
6
6
 
7
- The ``project-health`` feature in DataPilot is a comprehensive tool designed to analyze and report on various aspects of your dbt project.
7
+ The ``project-health`` feature in DataPilot is a comprehensive tool designed to analyze and report on various aspects of your dbt project. This feature is currently supported for dbt version 1.6 and 1.7.
8
8
 
9
9
  How to Use
10
10
  ^^^^^^^^^^
@@ -19,7 +19,7 @@ pip install pre-commit
19
19
 
20
20
  ```
21
21
  repos:
22
- - repo: https://github.com/AltimateAI/datapilot
22
+ - repo: https://github.com/AltimateAI/datapilot-cli
23
23
  rev: <revision>
24
24
  hooks:
25
25
  - id: datapilot_run_dbt_checks
@@ -46,6 +46,6 @@ If you want to manually run all pre-commit hooks on a repository, run `pre-commi
46
46
  Feedback and Contributions
47
47
  --------------------------
48
48
 
49
- If you encounter any issues or have suggestions for improvements, please feel free to open an issue or pull request on the DataPilot GitHub repository at https://github.com/AltimateAI/datapilot.
49
+ If you encounter any issues or have suggestions for improvements, please feel free to open an issue or pull request on the DataPilot GitHub repository at https://github.com/AltimateAI/datapilot-cli.
50
50
 
51
51
  Thank you for using DataPilot!
@@ -13,16 +13,16 @@ def read(*names, **kwargs):
13
13
 
14
14
  setup(
15
15
  name="altimate-datapilot-cli",
16
- version="0.0.8",
16
+ version="0.0.9",
17
17
  license="MIT",
18
18
  description="Assistant for Data Teams",
19
19
  long_description="{}\n{}".format(
20
20
  re.compile("^.. start-badges.*^.. end-badges", re.M | re.S).sub("", read("README.rst")),
21
21
  re.sub(":[a-z]+:`~?(.*?)`", r"``\1``", read("CHANGELOG.rst")),
22
22
  ),
23
- author="Anand Gupta",
23
+ author="Altimate Inc",
24
24
  author_email="info@altimate.ai",
25
- url="https://github.com/AltimateAI/datapilot",
25
+ url="https://github.com/AltimateAI/datapilot-cli",
26
26
  packages=find_packages("src"),
27
27
  package_dir={"": "src"},
28
28
  py_modules=[path.stem for path in Path("src").glob("*.py")],
@@ -55,7 +55,7 @@ setup(
55
55
  project_urls={
56
56
  "Documentation": "https://datapilot.readthedocs.io/",
57
57
  "Changelog": "https://datapilot.readthedocs.io/en/latest/changelog.html",
58
- "Issue Tracker": "https://github.com/AltimateAI/datapilot/issues",
58
+ "Issue Tracker": "https://github.com/AltimateAI/datapilot-cli/issues",
59
59
  },
60
60
  keywords=[
61
61
  # eg: "keyword1", "keyword2", "keyword3",
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.8
3
+ Version: 0.0.9
4
4
  Summary: Assistant for Data Teams
5
- Home-page: https://github.com/AltimateAI/datapilot
6
- Author: Anand Gupta
5
+ Home-page: https://github.com/AltimateAI/datapilot-cli
6
+ Author: Altimate Inc
7
7
  Author-email: info@altimate.ai
8
8
  License: MIT
9
9
  Project-URL: Documentation, https://datapilot.readthedocs.io/
10
10
  Project-URL: Changelog, https://datapilot.readthedocs.io/en/latest/changelog.html
11
- Project-URL: Issue Tracker, https://github.com/AltimateAI/datapilot/issues
11
+ Project-URL: Issue Tracker, https://github.com/AltimateAI/datapilot-cli/issues
12
12
  Platform: UNKNOWN
13
13
  Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Intended Audience :: Developers
@@ -50,7 +50,7 @@ Installation
50
50
 
51
51
  You can also install the in-development version with::
52
52
 
53
- pip install https://github.com/AltimateAI/datapilot/archive/main.zip
53
+ pip install https://github.com/AltimateAI/datapilot-cli/archive/main.zip
54
54
 
55
55
 
56
56
  Documentation
@@ -162,6 +162,9 @@ src/datapilot/core/platforms/dbt/wrappers/catalog/v1/__init__.py
162
162
  src/datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py
163
163
  src/datapilot/core/platforms/dbt/wrappers/manifest/__init__.py
164
164
  src/datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py
165
+ src/datapilot/core/platforms/dbt/wrappers/manifest/v10/__init__.py
166
+ src/datapilot/core/platforms/dbt/wrappers/manifest/v10/schemas.py
167
+ src/datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py
165
168
  src/datapilot/core/platforms/dbt/wrappers/manifest/v11/__init__.py
166
169
  src/datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py
167
170
  src/datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py
@@ -184,6 +187,7 @@ tests/core/platform/dbt/test_cli.py
184
187
  tests/core/platform/dbt/test_utils.py
185
188
  tests/data/catalog_v1.json
186
189
  tests/data/config.yml
190
+ tests/data/manifest_v10.json
187
191
  tests/data/manifest_v11.json
188
192
  tests/data/manifests/manifest_js.json
189
193
  tests/data/manifests/manifest_js2.json
@@ -0,0 +1 @@
1
+ __version__ = "0.0.9"
@@ -1,9 +1,11 @@
1
1
  from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
2
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
2
3
  from dbt_artifacts_parser.parsers.manifest.manifest_v11 import ManifestV11
3
4
 
4
5
  from datapilot.core.platforms.dbt.schemas.manifest import Catalog
5
6
  from datapilot.core.platforms.dbt.schemas.manifest import Manifest
6
7
  from datapilot.core.platforms.dbt.wrappers.catalog.v1.wrapper import CatalogV1Wrapper
8
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.wrapper import ManifestV10Wrapper
7
9
  from datapilot.core.platforms.dbt.wrappers.manifest.v11.wrapper import ManifestV11Wrapper
8
10
  from datapilot.exceptions.exceptions import AltimateNotSupportedError
9
11
 
@@ -13,10 +15,12 @@ class DBTFactory:
13
15
  def get_manifest_wrapper(cls, manifest: Manifest):
14
16
  if isinstance(manifest, ManifestV11):
15
17
  return ManifestV11Wrapper(manifest)
16
- raise AltimateNotSupportedError(f"Manifest version {manifest.metadata.dbt_schema_version} not supported")
18
+ if isinstance(manifest, ManifestV10):
19
+ return ManifestV10Wrapper(manifest)
20
+ raise AltimateNotSupportedError(f"dbt version {manifest.metadata.dbt_version} not supported")
17
21
 
18
22
  @classmethod
19
23
  def get_catalog_wrapper(cls, catalog: Catalog):
20
24
  if isinstance(catalog, CatalogV1):
21
25
  return CatalogV1Wrapper(catalog)
22
- raise AltimateNotSupportedError(f"Catalog version {catalog.metadata.dbt_schema_version} not supported")
26
+ raise AltimateNotSupportedError(f"dbt version {catalog.metadata.dbt_version} not supported")
@@ -0,0 +1,47 @@
1
+ from typing import Dict
2
+ from typing import Type
3
+ from typing import Union
4
+
5
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import AnalysisNode
6
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import Exposure
7
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import GenericTestNode
8
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import HookNode
9
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import Macro
10
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ModelNode
11
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import RPCNode
12
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SeedNode
13
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SingularTestNode
14
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SnapshotNode
15
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SourceDefinition
16
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SqlNode
17
+
18
+ from datapilot.core.platforms.dbt.constants import GENERIC
19
+ from datapilot.core.platforms.dbt.constants import SINGULAR
20
+
21
+ ManifestNode = Union[
22
+ AnalysisNode,
23
+ SingularTestNode,
24
+ HookNode,
25
+ ModelNode,
26
+ RPCNode,
27
+ SqlNode,
28
+ GenericTestNode,
29
+ SnapshotNode,
30
+ SeedNode,
31
+ ]
32
+
33
+ SourceNode = SourceDefinition
34
+
35
+ ExposureNode = Exposure
36
+
37
+ TestNode = Union[GenericTestNode, SingularTestNode]
38
+
39
+ MacroNode = Macro
40
+
41
+ TEST_TYPE_TO_NODE_MAP: Dict[str, Type] = {
42
+ GENERIC: [GenericTestNode],
43
+ SINGULAR: [SingularTestNode],
44
+ }
45
+
46
+
47
+ SeedNodeMap = SeedNode
@@ -0,0 +1,396 @@
1
+ from typing import Dict
2
+ from typing import Set
3
+
4
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import GenericTestNode
5
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
6
+ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import SingularTestNode
7
+
8
+ from datapilot.core.platforms.dbt.constants import GENERIC
9
+ from datapilot.core.platforms.dbt.constants import OTHER_TEST_NODE
10
+ from datapilot.core.platforms.dbt.constants import SEED
11
+ from datapilot.core.platforms.dbt.constants import SINGULAR
12
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateDBTContract
13
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateDependsOn
14
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateExposureType
15
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateExternalTable
16
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateFileHash
17
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateFreshnessThreshold
18
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestColumnInfo
19
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestExposureNode
20
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestMacroNode
21
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestNode
22
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestSourceNode
23
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestTestNode
24
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateMaturityEnum
25
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateNodeConfig
26
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateOwner
27
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateQuoting
28
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateRefArgs
29
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateResourceType
30
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateSeedConfig
31
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateSeedNode
32
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateSourceConfig
33
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateTestConfig
34
+ from datapilot.core.platforms.dbt.schemas.manifest import AltimateTestMetadata
35
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import TEST_TYPE_TO_NODE_MAP
36
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import ExposureNode
37
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import MacroNode
38
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import ManifestNode
39
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import SeedNodeMap
40
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import SourceNode
41
+ from datapilot.core.platforms.dbt.wrappers.manifest.v10.schemas import TestNode
42
+ from datapilot.core.platforms.dbt.wrappers.manifest.wrapper import BaseManifestWrapper
43
+
44
+
45
+ class ManifestV10Wrapper(BaseManifestWrapper):
46
+ def __init__(self, manifest: ManifestV10):
47
+ self.manifest = manifest
48
+
49
+ def _get_node(self, node: ManifestNode) -> AltimateManifestNode:
50
+ (
51
+ sources,
52
+ metrics,
53
+ compiled_path,
54
+ compiled,
55
+ compiled_code,
56
+ depends_on_nodes,
57
+ depends_on_macros,
58
+ raw_code,
59
+ language,
60
+ contract,
61
+ ) = ([], [], None, None, None, None, None, "", "", None)
62
+ if node.resource_type.value != SEED:
63
+ sources = node.sources
64
+ metrics = node.metrics
65
+ depends_on_nodes = node.depends_on.nodes if node.depends_on else None
66
+ depends_on_macros = node.depends_on.macros if node.depends_on else None
67
+ compiled_path = node.compiled_path
68
+ compiled = node.compiled
69
+ raw_code = node.raw_code
70
+ language = node.language
71
+ contract = AltimateDBTContract(**node.contract.__dict__) if node.contract else None
72
+
73
+ return AltimateManifestNode(
74
+ database=node.database,
75
+ schema_name=node.schema_,
76
+ name=node.name,
77
+ resource_type=AltimateResourceType(node.resource_type.value),
78
+ package_name=node.package_name,
79
+ path=node.path,
80
+ description=node.description,
81
+ original_file_path=node.original_file_path,
82
+ unique_id=node.unique_id,
83
+ fqn=node.fqn,
84
+ alias=node.alias,
85
+ raw_code=raw_code,
86
+ language=language,
87
+ config=AltimateNodeConfig(**node.config.__dict__) if node.config else None,
88
+ checksum=AltimateFileHash(
89
+ name=node.checksum.name if node.checksum else None,
90
+ checksum=node.checksum.checksum if node.checksum else None,
91
+ ),
92
+ columns={
93
+ name: AltimateManifestColumnInfo(
94
+ name=column.name,
95
+ description=column.description,
96
+ meta=column.meta,
97
+ data_type=column.data_type,
98
+ quote=column.quote,
99
+ tags=column.tags,
100
+ )
101
+ for name, column in node.columns.items()
102
+ },
103
+ relation_name=node.relation_name,
104
+ sources=sources,
105
+ metrics=metrics,
106
+ depends_on=AltimateDependsOn(
107
+ nodes=depends_on_nodes,
108
+ macros=depends_on_macros,
109
+ ),
110
+ compiled_path=compiled_path,
111
+ compiled=compiled,
112
+ compiled_code=compiled_code,
113
+ contract=contract,
114
+ meta=node.meta,
115
+ patch_path=node.patch_path,
116
+ )
117
+
118
+ def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
119
+ return AltimateManifestSourceNode(
120
+ database=source.database,
121
+ resource_type=AltimateResourceType(source.resource_type.value),
122
+ schema_name=source.schema_,
123
+ name=source.name,
124
+ package_name=source.package_name,
125
+ path=source.path,
126
+ original_file_path=source.original_file_path,
127
+ unique_id=source.unique_id,
128
+ fqn=source.fqn,
129
+ source_name=source.source_name,
130
+ source_description=source.source_description,
131
+ loader=source.loader,
132
+ identifier=source.identifier,
133
+ quoting=AltimateQuoting(**source.quoting.dict()) if source.quoting else None,
134
+ loaded_at_field=source.loaded_at_field,
135
+ freshness=AltimateFreshnessThreshold(**source.freshness.dict()) if source.freshness else None,
136
+ external=AltimateExternalTable(**source.external.dict()) if source.external else None,
137
+ description=source.description,
138
+ columns={
139
+ name: AltimateManifestColumnInfo(
140
+ name=column.name,
141
+ description=column.description,
142
+ meta=column.meta,
143
+ data_type=column.data_type,
144
+ quote=column.quote,
145
+ tags=column.tags,
146
+ )
147
+ for name, column in source.columns.items()
148
+ },
149
+ meta=source.meta,
150
+ relation_name=source.relation_name,
151
+ source_meta=source.source_meta,
152
+ tags=source.tags,
153
+ config=AltimateSourceConfig(**source.config.dict()) if source.config else None,
154
+ patch_path=source.patch_path,
155
+ unrendered_config=source.unrendered_config,
156
+ created_at=source.created_at,
157
+ )
158
+
159
+ def _get_macro(self, macro: MacroNode) -> AltimateManifestMacroNode:
160
+ return AltimateManifestMacroNode(
161
+ name=macro.name,
162
+ resource_type=AltimateResourceType(macro.resource_type.value),
163
+ package_name=macro.package_name,
164
+ path=macro.path,
165
+ original_file_path=macro.original_file_path,
166
+ unique_id=macro.unique_id,
167
+ macro_sql=macro.macro_sql,
168
+ depends_on=(
169
+ AltimateDependsOn(
170
+ macros=macro.depends_on.macros,
171
+ )
172
+ if macro.depends_on
173
+ else None
174
+ ),
175
+ description=macro.description,
176
+ meta=macro.meta,
177
+ docs=macro.docs,
178
+ patch_path=macro.patch_path,
179
+ arguments=[AltimateRefArgs(**arg.dict()) for arg in macro.arguments] if macro.arguments else None,
180
+ created_at=macro.created_at,
181
+ supported_languages=macro.supported_languages,
182
+ )
183
+
184
+ def _get_exposure(self, exposure: ExposureNode) -> AltimateManifestExposureNode:
185
+ return AltimateManifestExposureNode(
186
+ name=exposure.name,
187
+ resource_type=AltimateResourceType(exposure.resource_type.value),
188
+ package_name=exposure.package_name,
189
+ path=exposure.path,
190
+ original_file_path=exposure.original_file_path,
191
+ unique_id=exposure.unique_id,
192
+ fqn=exposure.fqn,
193
+ type=AltimateExposureType(exposure.type.value) if exposure.type else None,
194
+ owner=AltimateOwner(**exposure.owner.dict()) if exposure.owner else None,
195
+ description=exposure.description,
196
+ label=exposure.label,
197
+ maturity=AltimateMaturityEnum(exposure.maturity.value) if exposure.maturity else None,
198
+ meta=exposure.meta,
199
+ tags=exposure.tags,
200
+ config=AltimateSourceConfig(**exposure.config.dict()) if exposure.config else None,
201
+ unrendered_config=exposure.unrendered_config,
202
+ url=exposure.url,
203
+ depends_on=AltimateDependsOn(
204
+ nodes=exposure.depends_on.nodes,
205
+ macros=exposure.depends_on.macros,
206
+ )
207
+ if exposure.depends_on
208
+ else None,
209
+ refs=[AltimateRefArgs(**ref.dict()) for ref in exposure.refs] if exposure.refs else None,
210
+ sources=exposure.sources,
211
+ metrics=exposure.metrics,
212
+ created_at=exposure.created_at,
213
+ )
214
+
215
+ def _get_tests(self, test: TestNode) -> AltimateManifestTestNode:
216
+ test_metadata = None
217
+ if isinstance(test, GenericTestNode):
218
+ test_type = GENERIC
219
+ test_metadata = AltimateTestMetadata(**test.test_metadata.dict()) if test.test_metadata else None
220
+ elif isinstance(test, SingularTestNode):
221
+ test_type = SINGULAR
222
+ else:
223
+ test_type = OTHER_TEST_NODE
224
+ return AltimateManifestTestNode(
225
+ test_metadata=test_metadata,
226
+ test_type=test_type,
227
+ name=test.name,
228
+ resource_type=AltimateResourceType(test.resource_type.value),
229
+ package_name=test.package_name,
230
+ path=test.path,
231
+ original_file_path=test.original_file_path,
232
+ unique_id=test.unique_id,
233
+ fqn=test.fqn,
234
+ alias=test.alias,
235
+ checksum=AltimateFileHash(
236
+ name=test.checksum.name,
237
+ checksum=test.checksum.checksum,
238
+ )
239
+ if test.checksum
240
+ else None,
241
+ config=AltimateTestConfig(**test.config.dict()) if test.config else None,
242
+ description=test.description,
243
+ tags=test.tags,
244
+ columns={
245
+ name: AltimateManifestColumnInfo(
246
+ name=column.name,
247
+ description=column.description,
248
+ meta=column.meta,
249
+ data_type=column.data_type,
250
+ quote=column.quote,
251
+ tags=column.tags,
252
+ )
253
+ for name, column in test.columns.items()
254
+ }
255
+ if test.columns
256
+ else None,
257
+ meta=test.meta,
258
+ relation_name=test.relation_name,
259
+ group=test.group,
260
+ raw_code=test.raw_code,
261
+ language=test.language,
262
+ refs=[AltimateRefArgs(**ref.dict()) for ref in test.refs] if test.refs else None,
263
+ sources=test.sources,
264
+ metrics=test.metrics,
265
+ depends_on=AltimateDependsOn(
266
+ nodes=test.depends_on.nodes,
267
+ macros=test.depends_on.macros,
268
+ )
269
+ if test.depends_on
270
+ else None,
271
+ compiled_path=test.compiled_path,
272
+ compiled=test.compiled,
273
+ compiled_code=test.compiled_code,
274
+ )
275
+
276
+ def _get_seed(self, seed: SeedNodeMap) -> AltimateSeedNode:
277
+ return AltimateSeedNode(
278
+ database=seed.database,
279
+ schema_name=seed.schema_,
280
+ name=seed.name,
281
+ resource_type=AltimateResourceType(seed.resource_type.value),
282
+ package_name=seed.package_name,
283
+ path=seed.path,
284
+ original_file_path=seed.original_file_path,
285
+ unique_id=seed.unique_id,
286
+ fqn=seed.fqn,
287
+ alias=seed.alias,
288
+ checksum=AltimateFileHash(
289
+ name=seed.checksum.name,
290
+ checksum=seed.checksum.checksum,
291
+ )
292
+ if seed.checksum
293
+ else None,
294
+ config=AltimateSeedConfig(**seed.config.dict()) if seed.config else None,
295
+ description=seed.description,
296
+ tags=seed.tags,
297
+ columns={
298
+ name: AltimateManifestColumnInfo(
299
+ name=column.name,
300
+ description=column.description,
301
+ meta=column.meta,
302
+ data_type=column.data_type,
303
+ quote=column.quote,
304
+ tags=column.tags,
305
+ )
306
+ for name, column in seed.columns.items()
307
+ }
308
+ if seed.columns
309
+ else None,
310
+ meta=seed.meta,
311
+ group=seed.group,
312
+ docs=seed.docs.dict() if seed.docs else None,
313
+ patch_path=seed.patch_path,
314
+ build_path=seed.build_path,
315
+ deferred=seed.deferred,
316
+ unrendered_config=seed.unrendered_config,
317
+ created_at=seed.created_at,
318
+ config_call_dict=seed.config_call_dict,
319
+ )
320
+
321
+ def get_nodes(
322
+ self,
323
+ ) -> Dict[str, AltimateManifestNode]:
324
+ nodes = {}
325
+ for node in self.manifest.nodes.values():
326
+ if (
327
+ node.resource_type.value
328
+ in [
329
+ AltimateResourceType.seed.value,
330
+ AltimateResourceType.test.value,
331
+ ]
332
+ or node.package_name != self.get_package()
333
+ ):
334
+ continue
335
+ nodes[node.unique_id] = self._get_node(node)
336
+ return nodes
337
+
338
+ def get_package(self) -> str:
339
+ return self.manifest.metadata.project_name
340
+
341
+ def get_sources(self) -> Dict[str, AltimateManifestSourceNode]:
342
+ sources = {}
343
+ for source in self.manifest.sources.values():
344
+ sources[source.unique_id] = self._get_source(source)
345
+ return sources
346
+
347
+ def get_macros(self) -> Dict[str, AltimateManifestMacroNode]:
348
+ macros = {}
349
+ for macro in self.manifest.macros.values():
350
+ if macro.resource_type.value == AltimateResourceType.macro.value and macro.package_name == self.get_package():
351
+ macros[macro.unique_id] = self._get_macro(macro)
352
+ return macros
353
+
354
+ def get_exposures(self) -> Dict[str, AltimateManifestExposureNode]:
355
+ exposures = {}
356
+ for exposure in self.manifest.exposures.values():
357
+ exposures[exposure.unique_id] = self._get_exposure(exposure)
358
+ return exposures
359
+
360
+ def get_tests(self, type=None) -> Dict[str, AltimateManifestTestNode]:
361
+ tests = {}
362
+ # Initialize types_union with TestNode
363
+ types = [GenericTestNode, SingularTestNode]
364
+
365
+ # Add other types to the union if provided
366
+ if type:
367
+ types = TEST_TYPE_TO_NODE_MAP.get(type)
368
+
369
+ for node in self.manifest.nodes.values():
370
+ # Check if the node is a test and of the correct type
371
+ if node.resource_type.value == AltimateResourceType.test.value:
372
+ if any(isinstance(node, t) for t in types):
373
+ tests[node.unique_id] = self._get_tests(node)
374
+ return tests
375
+
376
+ def get_seeds(self) -> Dict[str, AltimateSeedNode]:
377
+ seeds = {}
378
+ for seed in self.manifest.nodes.values():
379
+ if seed.resource_type.value == AltimateResourceType.seed.value:
380
+ seeds[seed.unique_id] = self._get_seed(seed)
381
+ return seeds
382
+
383
+ def parent_to_child_map(self, nodes: Dict[str, AltimateManifestNode]) -> Dict[str, Set[str]]:
384
+ """
385
+ Current manifest contains information about parents
386
+ THis gives an information of node to childre
387
+ :param nodes: A dictionary of nodes in a manifest.
388
+ :return: A dictionary of all the children of a node.
389
+ """
390
+ children_map = {}
391
+ for node_id, node in nodes.items():
392
+ if node_id not in children_map:
393
+ children_map[node_id] = set()
394
+ for parent in node.depends_on.nodes or []:
395
+ children_map.setdefault(parent, set()).add(node_id)
396
+ return children_map