altimate-datapilot-cli 0.0.15__tar.gz → 0.0.17__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 (214) hide show
  1. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.bumpversion.cfg +1 -1
  2. altimate-datapilot-cli-0.0.17/.github/workflows/github-actions.yml +197 -0
  3. {altimate-datapilot-cli-0.0.15/src/altimate_datapilot_cli.egg-info → altimate-datapilot-cli-0.0.17}/PKG-INFO +1 -1
  4. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/conf.py +1 -1
  5. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/features.rst +21 -2
  6. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/setup.py +1 -1
  7. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17/src/altimate_datapilot_cli.egg-info}/PKG-INFO +1 -1
  8. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/SOURCES.txt +0 -1
  9. altimate-datapilot-cli-0.0.17/src/datapilot/__init__.py +1 -0
  10. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/clients/altimate/client.py +6 -0
  11. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/clients/altimate/utils.py +10 -0
  12. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/cli/cli.py +31 -1
  13. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/schemas/catalog.py +0 -27
  14. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/schemas/manifest.py +0 -51
  15. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py +1 -1
  16. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py +1 -1
  17. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/wrapper.py +1 -1
  18. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tox.ini +5 -3
  19. altimate-datapilot-cli-0.0.15/.github/workflows/github-actions.yml +0 -329
  20. altimate-datapilot-cli-0.0.15/src/datapilot/__init__.py +0 -1
  21. altimate-datapilot-cli-0.0.15/src/datapilot/constants.py +0 -7
  22. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.cookiecutterrc +0 -0
  23. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.coveragerc +0 -0
  24. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.editorconfig +0 -0
  25. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.pre-commit-config.yaml +0 -0
  26. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.pre-commit-hooks.yaml +0 -0
  27. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/.readthedocs.yml +0 -0
  28. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/AUTHORS.rst +0 -0
  29. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/CHANGELOG.rst +0 -0
  30. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/CONTRIBUTING.rst +0 -0
  31. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/LICENSE +0 -0
  32. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/MANIFEST.in +0 -0
  33. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/README.md +0 -0
  34. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/README.rst +0 -0
  35. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/ci/bootstrap.py +0 -0
  36. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/ci/requirements.txt +0 -0
  37. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/ci/templates/.github/workflows/github-actions.yml +0 -0
  38. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/authors.rst +0 -0
  39. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/changelog.rst +0 -0
  40. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/configuration.rst +0 -0
  41. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/contributing.rst +0 -0
  42. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/hooks.rst +0 -0
  43. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/index.rst +0 -0
  44. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/insights.rst +0 -0
  45. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/installation.rst +0 -0
  46. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/introduction.rst +0 -0
  47. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/performance.rst +0 -0
  48. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/readme.rst +0 -0
  49. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/reference/datapilot.rst +0 -0
  50. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/reference/index.rst +0 -0
  51. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/requirements.txt +0 -0
  52. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/spelling_wordlist.txt +0 -0
  53. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/docs/usage.rst +0 -0
  54. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/pyproject.toml +0 -0
  55. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/pytest.ini +0 -0
  56. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/setup.cfg +0 -0
  57. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/dependency_links.txt +0 -0
  58. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/entry_points.txt +0 -0
  59. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/not-zip-safe +0 -0
  60. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/requires.txt +0 -0
  61. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/altimate_datapilot_cli.egg-info/top_level.txt +0 -0
  62. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/__main__.py +0 -0
  63. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/cli/__init__.py +0 -0
  64. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/cli/main.py +0 -0
  65. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/clients/__init__.py +0 -0
  66. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/clients/altimate/__init__.py +0 -0
  67. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/config/__init__.py +0 -0
  68. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/config/config.py +0 -0
  69. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/config/utils.py +0 -0
  70. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/__init__.py +0 -0
  71. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/__init__.py +0 -0
  72. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/base/__init__.py +0 -0
  73. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/base/insight.py +0 -0
  74. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/report.py +0 -0
  75. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/schema.py +0 -0
  76. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/sql/__init__.py +0 -0
  77. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/sql/base/__init__.py +0 -0
  78. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/sql/base/insight.py +0 -0
  79. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/sql/runtime/__init__.py +0 -0
  80. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/sql/static/__init__.py +0 -0
  81. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/insights/utils.py +0 -0
  82. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/__init__.py +0 -0
  83. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/__init__.py +0 -0
  84. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/cli/__init__.py +0 -0
  85. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/constants.py +0 -0
  86. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/exceptions.py +0 -0
  87. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/executor.py +0 -0
  88. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/factory.py +0 -0
  89. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/formatting.py +0 -0
  90. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/hooks/__init__.py +0 -0
  91. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/hooks/executor_hook.py +0 -0
  92. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/__init__.py +0 -0
  93. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/base.py +0 -0
  94. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/__init__.py +0 -0
  95. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/base.py +0 -0
  96. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_column_desc_are_same.py +0 -0
  97. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_column_name_contract.py +0 -0
  98. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_args_have_desc.py +0 -0
  99. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_has_desc.py +0 -0
  100. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_all_columns.py +0 -0
  101. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_labels_keys.py +0 -0
  102. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_meta_keys.py +0 -0
  103. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_properties_file.py +0 -0
  104. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_group.py +0 -0
  105. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_name.py +0 -0
  106. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_type.py +0 -0
  107. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_materialization_by_childs.py +0 -0
  108. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_name_contract.py +0 -0
  109. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_and_childs.py +0 -0
  110. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_database.py +0 -0
  111. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_schema.py +0 -0
  112. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_model_tags.py +0 -0
  113. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_childs.py +0 -0
  114. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_columns_have_desc.py +0 -0
  115. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_all_columns.py +0 -0
  116. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_freshness.py +0 -0
  117. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_labels_keys.py +0 -0
  118. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_loader.py +0 -0
  119. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_meta_keys.py +0 -0
  120. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests.py +0 -0
  121. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_group.py +0 -0
  122. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_name.py +0 -0
  123. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_type.py +0 -0
  124. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_table_has_description.py +0 -0
  125. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/checks/check_source_tags.py +0 -0
  126. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/dbt_test/__init__.py +0 -0
  127. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/dbt_test/base.py +0 -0
  128. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/dbt_test/missing_primary_key_tests.py +0 -0
  129. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/dbt_test/test_coverage.py +0 -0
  130. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/__init__.py +0 -0
  131. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/base.py +0 -0
  132. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/documentation_on_stale_columns.py +0 -0
  133. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/exposures_dependent_on_private_models.py +0 -0
  134. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/public_models_without_contracts.py +0 -0
  135. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_columns.py +0 -0
  136. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_public_models.py +0 -0
  137. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/README.md +0 -0
  138. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/__init__.py +0 -0
  139. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/base.py +0 -0
  140. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/direct_join_to_source.py +0 -0
  141. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/downstream_models_dependent_on_source.py +0 -0
  142. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/duplicate_sources.py +0 -0
  143. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/hard_coded_references.py +0 -0
  144. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/joining_of_upstream_concepts.py +0 -0
  145. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/model_fanout.py +0 -0
  146. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/multiple_sources_joined.py +0 -0
  147. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/root_model.py +0 -0
  148. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/source_fanout.py +0 -0
  149. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_downstream_models.py +0 -0
  150. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_staging_models.py +0 -0
  151. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/modelling/unused_sources.py +0 -0
  152. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/performance/__init__.py +0 -0
  153. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/performance/base.py +0 -0
  154. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/performance/chain_view_linking.py +0 -0
  155. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/performance/exposure_parent_materializations.py +0 -0
  156. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/schema.py +0 -0
  157. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/sql/__init__.py +0 -0
  158. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/sql/base.py +0 -0
  159. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/sql/sql_check.py +0 -0
  160. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/__init__.py +0 -0
  161. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/base.py +0 -0
  162. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/model_directories_structure.py +0 -0
  163. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/model_naming_conventions.py +0 -0
  164. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/source_directories_structure.py +0 -0
  165. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/structure/test_directory_structure.py +0 -0
  166. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/insights/utils.py +0 -0
  167. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/schemas/__init__.py +0 -0
  168. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/utils.py +0 -0
  169. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/__init__.py +0 -0
  170. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/catalog/__init__.py +0 -0
  171. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/__init__.py +0 -0
  172. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py +0 -0
  173. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/catalog/wrapper.py +0 -0
  174. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/__init__.py +0 -0
  175. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/__init__.py +0 -0
  176. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/schemas.py +0 -0
  177. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/__init__.py +0 -0
  178. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py +0 -0
  179. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/__init__.py +0 -0
  180. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/schemas.py +0 -0
  181. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py +0 -0
  182. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/run_results/__init__.py +0 -0
  183. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/core/platforms/dbt/wrappers/run_results/run_results.py +0 -0
  184. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/exceptions/__init__.py +0 -0
  185. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/exceptions/exceptions.py +0 -0
  186. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/schemas/__init__.py +0 -0
  187. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/schemas/constants.py +0 -0
  188. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/schemas/nodes.py +0 -0
  189. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/schemas/sql.py +0 -0
  190. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/utils/__init__.py +0 -0
  191. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/utils/formatting/__init__.py +0 -0
  192. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/utils/formatting/utils.py +0 -0
  193. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/src/datapilot/utils/utils.py +0 -0
  194. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/core/__init__.py +0 -0
  195. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/core/platform/__init__.py +0 -0
  196. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/core/platform/dbt/__init__.py +0 -0
  197. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/core/platform/dbt/test_cli.py +0 -0
  198. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/core/platform/dbt/test_utils.py +0 -0
  199. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/catalog_v1.json +0 -0
  200. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/catalog_v12.json +0 -0
  201. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/config.yml +0 -0
  202. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifest_v10.json +0 -0
  203. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifest_v10macroargs.json +0 -0
  204. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifest_v11.json +0 -0
  205. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifest_v11macroargs.json +0 -0
  206. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifest_v12.json +0 -0
  207. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_js.json +0 -0
  208. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_js2.json +0 -0
  209. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_js3.json +0 -0
  210. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_tuva.json +0 -0
  211. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_tuva2.json +0 -0
  212. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/data/manifests/manifest_tuva3.json +0 -0
  213. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/utils/__init__.py +0 -0
  214. {altimate-datapilot-cli-0.0.15 → altimate-datapilot-cli-0.0.17}/tests/utils/test_utils.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.0.15
2
+ current_version = 0.0.17
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -0,0 +1,197 @@
1
+ name: build
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ name: ${{ matrix.name }}
6
+ runs-on: ${{ matrix.os }}
7
+ timeout-minutes: 30
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ include:
12
+ - name: 'check'
13
+ python: '3.11'
14
+ toxpython: 'python3.11'
15
+ tox_env: 'check'
16
+ os: 'ubuntu-latest'
17
+ - name: 'docs'
18
+ python: '3.11'
19
+ toxpython: 'python3.11'
20
+ tox_env: 'docs'
21
+ os: 'ubuntu-latest'
22
+ - name: 'py39-pydantic28-cover (ubuntu)'
23
+ python: '3.9'
24
+ toxpython: 'python3.9'
25
+ python_arch: 'x64'
26
+ tox_env: 'py39-pydantic28-cover'
27
+ os: 'ubuntu-latest'
28
+ - name: 'py39-pydantic28-cover (windows)'
29
+ python: '3.9'
30
+ toxpython: 'python3.9'
31
+ python_arch: 'x64'
32
+ tox_env: 'py39-pydantic28-cover'
33
+ os: 'windows-latest'
34
+ - name: 'py39-pydantic28-cover (macos)'
35
+ python: '3.9'
36
+ toxpython: 'python3.9'
37
+ python_arch: 'x64'
38
+ tox_env: 'py39-pydantic28-cover'
39
+ os: 'macos-13'
40
+ - name: 'py39-pydantic210-cover'
41
+ python: '3.9'
42
+ toxpython: 'python3.9'
43
+ python_arch: 'x64'
44
+ tox_env: 'py39-pydantic210-cover'
45
+ os: 'ubuntu-latest'
46
+ - name: 'py39-pydantic28-nocov'
47
+ python: '3.9'
48
+ toxpython: 'python3.9'
49
+ python_arch: 'x64'
50
+ tox_env: 'py39-pydantic28-nocov'
51
+ os: 'ubuntu-latest'
52
+ - name: 'py39-pydantic210-nocov'
53
+ python: '3.9'
54
+ toxpython: 'python3.9'
55
+ python_arch: 'x64'
56
+ tox_env: 'py39-pydantic210-nocov'
57
+ os: 'ubuntu-latest'
58
+ - name: 'py310-pydantic28-cover'
59
+ python: '3.10'
60
+ toxpython: 'python3.10'
61
+ python_arch: 'x64'
62
+ tox_env: 'py310-pydantic28-cover'
63
+ os: 'ubuntu-latest'
64
+ - name: 'py310-pydantic210-cover'
65
+ python: '3.10'
66
+ toxpython: 'python3.10'
67
+ python_arch: 'x64'
68
+ tox_env: 'py310-pydantic210-cover'
69
+ os: 'ubuntu-latest'
70
+ - name: 'py310-pydantic28-nocov'
71
+ python: '3.10'
72
+ toxpython: 'python3.10'
73
+ python_arch: 'x64'
74
+ tox_env: 'py310-pydantic28-nocov'
75
+ os: 'ubuntu-latest'
76
+ - name: 'py310-pydantic210-nocov'
77
+ python: '3.10'
78
+ toxpython: 'python3.10'
79
+ python_arch: 'x64'
80
+ tox_env: 'py310-pydantic210-nocov'
81
+ os: 'ubuntu-latest'
82
+ - name: 'py311-pydantic28-cover'
83
+ python: '3.11'
84
+ toxpython: 'python3.11'
85
+ python_arch: 'x64'
86
+ tox_env: 'py311-pydantic28-cover'
87
+ os: 'ubuntu-latest'
88
+ - name: 'py311-pydantic210-cover'
89
+ python: '3.11'
90
+ toxpython: 'python3.11'
91
+ python_arch: 'x64'
92
+ tox_env: 'py311-pydantic210-cover'
93
+ os: 'ubuntu-latest'
94
+ - name: 'py311-pydantic28-nocov'
95
+ python: '3.11'
96
+ toxpython: 'python3.11'
97
+ python_arch: 'x64'
98
+ tox_env: 'py311-pydantic28-nocov'
99
+ os: 'ubuntu-latest'
100
+ - name: 'py311-pydantic210-nocov'
101
+ python: '3.11'
102
+ toxpython: 'python3.11'
103
+ python_arch: 'x64'
104
+ tox_env: 'py311-pydantic210-nocov'
105
+ os: 'ubuntu-latest'
106
+ - name: 'py312-pydantic28-cover'
107
+ python: '3.12'
108
+ toxpython: 'python3.12'
109
+ python_arch: 'x64'
110
+ tox_env: 'py312-pydantic28-cover'
111
+ os: 'ubuntu-latest'
112
+ - name: 'py312-pydantic210-cover'
113
+ python: '3.12'
114
+ toxpython: 'python3.12'
115
+ python_arch: 'x64'
116
+ tox_env: 'py312-pydantic210-cover'
117
+ os: 'ubuntu-latest'
118
+ - name: 'py312-pydantic28-nocov'
119
+ python: '3.12'
120
+ toxpython: 'python3.12'
121
+ python_arch: 'x64'
122
+ tox_env: 'py312-pydantic28-nocov'
123
+ os: 'ubuntu-latest'
124
+ - name: 'py312-pydantic210-nocov'
125
+ python: '3.12'
126
+ toxpython: 'python3.12'
127
+ python_arch: 'x64'
128
+ tox_env: 'py312-pydantic210-nocov'
129
+ os: 'ubuntu-latest'
130
+ - name: 'pypy39-pydantic28-cover'
131
+ python: 'pypy-3.9'
132
+ toxpython: 'pypy3.9'
133
+ python_arch: 'x64'
134
+ tox_env: 'pypy39-pydantic28-cover'
135
+ os: 'ubuntu-latest'
136
+ - name: 'pypy39-pydantic210-cover'
137
+ python: 'pypy-3.9'
138
+ toxpython: 'pypy3.9'
139
+ python_arch: 'x64'
140
+ tox_env: 'pypy39-pydantic210-cover'
141
+ os: 'ubuntu-latest'
142
+ - name: 'pypy39-pydantic28-nocov'
143
+ python: 'pypy-3.9'
144
+ toxpython: 'pypy3.9'
145
+ python_arch: 'x64'
146
+ tox_env: 'pypy39-pydantic28-nocov'
147
+ os: 'ubuntu-latest'
148
+ - name: 'pypy39-pydantic210-nocov'
149
+ python: 'pypy-3.9'
150
+ toxpython: 'pypy3.9'
151
+ python_arch: 'x64'
152
+ tox_env: 'pypy39-pydantic210-nocov'
153
+ os: 'ubuntu-latest'
154
+ - name: 'pypy310-pydantic28-cover'
155
+ python: 'pypy-3.10'
156
+ toxpython: 'pypy3.10'
157
+ python_arch: 'x64'
158
+ tox_env: 'pypy310-pydantic28-cover'
159
+ os: 'ubuntu-latest'
160
+ - name: 'pypy310-pydantic210-cover'
161
+ python: 'pypy-3.10'
162
+ toxpython: 'pypy3.10'
163
+ python_arch: 'x64'
164
+ tox_env: 'pypy310-pydantic210-cover'
165
+ os: 'ubuntu-latest'
166
+ - name: 'pypy310-pydantic28-nocov'
167
+ python: 'pypy-3.10'
168
+ toxpython: 'pypy3.10'
169
+ python_arch: 'x64'
170
+ tox_env: 'pypy310-pydantic28-nocov'
171
+ os: 'ubuntu-latest'
172
+ - name: 'pypy310-pydantic210-nocov'
173
+ python: 'pypy-3.10'
174
+ toxpython: 'pypy3.10'
175
+ python_arch: 'x64'
176
+ tox_env: 'pypy310-pydantic210-nocov'
177
+ os: 'ubuntu-latest'
178
+ steps:
179
+ - uses: actions/checkout@v4
180
+ with:
181
+ fetch-depth: 0
182
+ - uses: actions/setup-python@v5
183
+ with:
184
+ python-version: ${{ matrix.python }}
185
+ architecture: ${{ matrix.python_arch }}
186
+ - name: install dependencies
187
+ run: |
188
+ python -mpip install --progress-bar=off -r ci/requirements.txt
189
+ virtualenv --version
190
+ pip --version
191
+ tox --version
192
+ pip list --format=freeze
193
+ - name: test
194
+ env:
195
+ TOXPYTHON: '${{ matrix.toxpython }}'
196
+ run: >
197
+ tox -e ${{ matrix.tox_env }} -v
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.15
3
+ Version: 0.0.17
4
4
  Summary: Assistant for Data Teams
5
5
  Home-page: https://github.com/AltimateAI/datapilot-cli
6
6
  Author: Altimate Inc
@@ -15,7 +15,7 @@ project = "datapilot-cli"
15
15
  year = "2024"
16
16
  author = "Altimate Inc."
17
17
  copyright = f"{year}, {author}"
18
- version = release = "0.0.15"
18
+ version = release = "0.0.17"
19
19
 
20
20
  pygments_style = "trac"
21
21
  templates_path = ["."]
@@ -42,6 +42,25 @@ You can also select specific list of models to run the health check on by provid
42
42
 
43
43
  datapilot dbt project-health --manifest-path ./target/manifest.json --select "path:dir1 path:dir2 model1 model2"
44
44
 
45
- This will run the health check on all the models in the 'dir1' and 'dir2' directory. It will also run the health check on the 'model1' and 'model2' models.
45
+ This will run the health check on all the models in the 'dir1' and 'dir2' directory, as well as the 'model1' and 'model2' models.
46
46
  As of now, the '--select' flag only supports filtering based on model path and model name. We will add support for other filters and make it compatible
47
- with the dbt comands soon.
47
+ with the dbt commands soon.
48
+
49
+ 3. **Configuration**:
50
+ You can provide configuration in two ways:
51
+
52
+ a. Using a local config file:
53
+ .. code-block:: shell
54
+
55
+ datapilot dbt project-health --manifest-path ./target/manifest.json --config-path ./path/to/config.yml
56
+
57
+ b. Using a named config from the API:
58
+ .. code-block:: shell
59
+
60
+ datapilot dbt project-health --manifest-path ./target/manifest.json --config-name "my-config" --token "YOUR_API_TOKEN" --instance-name "YOUR_INSTANCE"
61
+
62
+ The ``--config-name`` option allows you to use a configuration stored in the Altimate API. When using this option, you must also provide:
63
+ - ``--token``: Your API token for authentication
64
+ - ``--instance-name``: Your tenant ID
65
+
66
+ If both ``--config-path`` and ``--config-name`` are provided, the local config file (``--config-path``) takes precedence.
@@ -13,7 +13,7 @@ def read(*names, **kwargs):
13
13
 
14
14
  setup(
15
15
  name="altimate-datapilot-cli",
16
- version="0.0.15",
16
+ version="0.0.17",
17
17
  license="MIT",
18
18
  description="Assistant for Data Teams",
19
19
  long_description="{}\n{}".format(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.15
3
+ Version: 0.0.17
4
4
  Summary: Assistant for Data Teams
5
5
  Home-page: https://github.com/AltimateAI/datapilot-cli
6
6
  Author: Altimate Inc
@@ -47,7 +47,6 @@ src/altimate_datapilot_cli.egg-info/requires.txt
47
47
  src/altimate_datapilot_cli.egg-info/top_level.txt
48
48
  src/datapilot/__init__.py
49
49
  src/datapilot/__main__.py
50
- src/datapilot/constants.py
51
50
  src/datapilot/cli/__init__.py
52
51
  src/datapilot/cli/main.py
53
52
  src/datapilot/clients/__init__.py
@@ -0,0 +1 @@
1
+ __version__ = "0.0.17"
@@ -104,3 +104,9 @@ class APIClient:
104
104
  "check_names": check_names,
105
105
  }
106
106
  return self.post(endpoint, data=data)
107
+
108
+ def get_all_dbt_configs(self):
109
+ """Get all DBT configs with a page size of 100."""
110
+ endpoint = "/dbtconfig/"
111
+ params = {"size": 100}
112
+ return self.get(endpoint, params=params)
@@ -124,3 +124,13 @@ def run_project_governance_llm_checks(
124
124
  ):
125
125
  api_client = APIClient(api_token=api_token, base_url=backend_url, tenant=tenant)
126
126
  return api_client.run_project_governance_llm_checks(manifest, catalog, check_names)
127
+
128
+
129
+ def get_all_dbt_configs(
130
+ api_token,
131
+ tenant,
132
+ backend_url,
133
+ ):
134
+ """Get all DBT configs from the API."""
135
+ api_client = APIClient(api_token=api_token, base_url=backend_url, tenant=tenant)
136
+ return api_client.get_all_dbt_configs()
@@ -3,6 +3,7 @@ import logging
3
3
  import click
4
4
 
5
5
  from datapilot.clients.altimate.utils import check_token_and_instance
6
+ from datapilot.clients.altimate.utils import get_all_dbt_configs
6
7
  from datapilot.clients.altimate.utils import onboard_file
7
8
  from datapilot.clients.altimate.utils import start_dbt_ingestion
8
9
  from datapilot.clients.altimate.utils import validate_credentials
@@ -45,6 +46,11 @@ def dbt():
45
46
  required=False,
46
47
  help="Path to the DBT config file",
47
48
  )
49
+ @click.option(
50
+ "--config-name",
51
+ required=False,
52
+ help="Name of the DBT config to use from the API",
53
+ )
48
54
  @click.option(
49
55
  "--select",
50
56
  required=False,
@@ -53,7 +59,14 @@ def dbt():
53
59
  )
54
60
  @click.option("--backend-url", required=False, help="Altimate's Backend URL", default="https://api.myaltimate.com")
55
61
  def project_health(
56
- token, instance_name, manifest_path, catalog_path, config_path=None, select=None, backend_url="https://api.myaltimate.com"
62
+ token,
63
+ instance_name,
64
+ manifest_path,
65
+ catalog_path,
66
+ config_path=None,
67
+ config_name=None,
68
+ select=None,
69
+ backend_url="https://api.myaltimate.com",
57
70
  ):
58
71
  """
59
72
  Validate the DBT project's configuration and structure.
@@ -62,6 +75,23 @@ def project_health(
62
75
  config = None
63
76
  if config_path:
64
77
  config = load_config(config_path)
78
+ elif config_name and token and instance_name:
79
+ # Get configs from API
80
+ configs = get_all_dbt_configs(token, instance_name, backend_url)
81
+ if configs and "items" in configs:
82
+ # Find config by name
83
+ matching_configs = [c for c in configs["items"] if c["name"] == config_name]
84
+ if matching_configs:
85
+ # Get the config directly from the API response
86
+ click.echo(f"Using config: {config_name}")
87
+ config = matching_configs[0].get("config", {})
88
+ else:
89
+ click.echo(f"No config found with name: {config_name}")
90
+ return
91
+ else:
92
+ click.echo("Failed to fetch configs from API")
93
+ return
94
+
65
95
  selected_models = []
66
96
  if select:
67
97
  selected_models = select.split(" ")
@@ -5,17 +5,10 @@ from typing import List
5
5
  from typing import Optional
6
6
  from typing import Union
7
7
 
8
- from pydantic import ConfigDict
9
8
  from pydantic.main import BaseModel
10
9
 
11
- from datapilot.constants import Extra
12
-
13
10
 
14
11
  class AltimateCatalogMetadata(BaseModel):
15
- model_config = ConfigDict(
16
- extra=Extra.forbid,
17
- )
18
-
19
12
  dbt_schema_version: Optional[str] = "https://schemas.getdbt.com/dbt/catalog/v1.json"
20
13
  dbt_version: Optional[str] = "0.19.0"
21
14
  generated_at: Optional[datetime] = "2021-02-10T04:42:33.680487Z"
@@ -24,10 +17,6 @@ class AltimateCatalogMetadata(BaseModel):
24
17
 
25
18
 
26
19
  class AltimateCatalogTableMetadata(BaseModel):
27
- model_config = ConfigDict(
28
- extra=Extra.forbid,
29
- )
30
-
31
20
  type: str
32
21
  database: Optional[Optional[str]] = None
33
22
  schema_name: str
@@ -37,10 +26,6 @@ class AltimateCatalogTableMetadata(BaseModel):
37
26
 
38
27
 
39
28
  class AltimateCatalogColumnMetadata(BaseModel):
40
- model_config = ConfigDict(
41
- extra=Extra.forbid,
42
- )
43
-
44
29
  type: str
45
30
  comment: Optional[Optional[str]] = None
46
31
  index: int
@@ -48,10 +33,6 @@ class AltimateCatalogColumnMetadata(BaseModel):
48
33
 
49
34
 
50
35
  class AltimateCatalogStatsItem(BaseModel):
51
- model_config = ConfigDict(
52
- extra=Extra.forbid,
53
- )
54
-
55
36
  id: str
56
37
  label: str
57
38
  value: Optional[Optional[Union[bool, str, float]]] = None
@@ -60,10 +41,6 @@ class AltimateCatalogStatsItem(BaseModel):
60
41
 
61
42
 
62
43
  class AltimateCatalogTable(BaseModel):
63
- model_config = ConfigDict(
64
- extra=Extra.forbid,
65
- )
66
-
67
44
  metadata: AltimateCatalogTableMetadata
68
45
  columns: Dict[str, AltimateCatalogColumnMetadata]
69
46
  stats: Dict[str, AltimateCatalogStatsItem]
@@ -71,10 +48,6 @@ class AltimateCatalogTable(BaseModel):
71
48
 
72
49
 
73
50
  class AltimateCatalogCatalogV1(BaseModel):
74
- model_config = ConfigDict(
75
- extra=Extra.forbid,
76
- )
77
-
78
51
  metadata: AltimateCatalogMetadata
79
52
  nodes: Dict[str, AltimateCatalogTable]
80
53
  sources: Dict[str, AltimateCatalogTable]
@@ -19,9 +19,6 @@ from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
19
19
  from dbt_artifacts_parser.parsers.manifest.manifest_v11 import ManifestV11
20
20
  from dbt_artifacts_parser.parsers.manifest.manifest_v11 import SupportedLanguage
21
21
  from pydantic import BaseModel
22
- from pydantic import ConfigDict
23
-
24
- from datapilot.constants import Extra
25
22
 
26
23
 
27
24
  class DBTVersion(BaseModel):
@@ -48,10 +45,6 @@ Catalog = CatalogV1
48
45
 
49
46
 
50
47
  class AltimateDocs(BaseModel):
51
- model_config = ConfigDict(
52
- extra=Extra.forbid,
53
- )
54
-
55
48
  show: Optional[bool] = True
56
49
  node_color: Optional[Optional[str]] = None
57
50
 
@@ -101,20 +94,12 @@ class AltimateAccess(Enum):
101
94
 
102
95
 
103
96
  class AltimateDBTContract(BaseModel):
104
- model_config = ConfigDict(
105
- extra=Extra.forbid,
106
- )
107
-
108
97
  enforced: Optional[bool] = False
109
98
  alias_types: Optional[bool] = True
110
99
  checksum: Optional[Optional[str]] = None
111
100
 
112
101
 
113
102
  class AltimateHook(BaseModel):
114
- model_config = ConfigDict(
115
- extra=Extra.forbid,
116
- )
117
-
118
103
  sql: str
119
104
  transaction: Optional[bool] = True
120
105
  index: Optional[Optional[int]] = None
@@ -122,10 +107,6 @@ class AltimateHook(BaseModel):
122
107
 
123
108
  # TODO: Need to add the rest of the fields
124
109
  class AltimateNodeConfig(BaseModel):
125
- model_config = ConfigDict(
126
- extra=Extra.allow,
127
- )
128
-
129
110
  _extra: Optional[Dict[str, Any]] = None
130
111
  enabled: Optional[bool] = True
131
112
  alias: Optional[Optional[str]] = None
@@ -209,10 +190,6 @@ class AltimateSourceConfig(BaseModel):
209
190
 
210
191
 
211
192
  class AltimateDeferRelation(BaseModel):
212
- model_config = ConfigDict(
213
- extra=Extra.forbid,
214
- )
215
-
216
193
  database: Optional[str]
217
194
  schema_name: str
218
195
  alias: str
@@ -220,10 +197,6 @@ class AltimateDeferRelation(BaseModel):
220
197
 
221
198
 
222
199
  class AltimateSeedConfig(BaseModel):
223
- model_config = ConfigDict(
224
- extra=Extra.allow,
225
- )
226
-
227
200
  _extra: Optional[Dict[str, Any]] = None
228
201
  enabled: Optional[bool] = True
229
202
  alias: Optional[Optional[str]] = None
@@ -322,10 +295,6 @@ class AltimateExposureType(Enum):
322
295
 
323
296
 
324
297
  class AltimateOwner(BaseModel):
325
- model_config = ConfigDict(
326
- extra=Extra.allow,
327
- )
328
-
329
298
  _extra: Optional[Dict[str, Any]] = None
330
299
  email: Optional[Optional[str]] = None
331
300
  name: Optional[Optional[str]] = None
@@ -338,20 +307,12 @@ class AltimateMaturityEnum(Enum):
338
307
 
339
308
 
340
309
  class AltimateRefArgs(BaseModel):
341
- model_config = ConfigDict(
342
- extra=Extra.forbid,
343
- )
344
-
345
310
  name: str
346
311
  package: Optional[Optional[str]] = None
347
312
  version: Optional[Optional[Union[str, float]]] = None
348
313
 
349
314
 
350
315
  class AltimateExposureConfig(BaseModel):
351
- model_config = ConfigDict(
352
- extra=Extra.allow,
353
- )
354
-
355
316
  _extra: Optional[Dict[str, Any]] = None
356
317
  enabled: Optional[bool] = True
357
318
 
@@ -382,20 +343,12 @@ class AltimateManifestExposureNode(BaseModel):
382
343
 
383
344
 
384
345
  class AltimateTestMetadata(BaseModel):
385
- model_config = ConfigDict(
386
- extra=Extra.forbid,
387
- )
388
-
389
346
  name: str
390
347
  kwargs: Optional[Dict[str, Any]] = None
391
348
  namespace: Optional[Optional[str]] = None
392
349
 
393
350
 
394
351
  class AltimateTestConfig(BaseModel):
395
- model_config = ConfigDict(
396
- extra=Extra.allow,
397
- )
398
-
399
352
  _extra: Optional[Dict[str, Any]] = None
400
353
  enabled: Optional[bool] = True
401
354
  alias: Optional[Optional[str]] = None
@@ -446,10 +399,6 @@ class AltimateManifestTestNode(BaseModel):
446
399
 
447
400
 
448
401
  class AltimateMacroArgument(BaseModel):
449
- model_config = ConfigDict(
450
- extra=Extra.forbid,
451
- )
452
-
453
402
  name: str
454
403
  type: Optional[Optional[str]] = None
455
404
  description: Optional[Optional[str]] = ""
@@ -116,7 +116,7 @@ class ManifestV10Wrapper(BaseManifestWrapper):
116
116
  contract=contract,
117
117
  meta=node.meta,
118
118
  patch_path=node.patch_path,
119
- access=node.access.value,
119
+ access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
120
120
  )
121
121
 
122
122
  def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
@@ -116,7 +116,7 @@ class ManifestV11Wrapper(BaseManifestWrapper):
116
116
  contract=contract,
117
117
  meta=node.meta,
118
118
  patch_path=node.patch_path,
119
- access=node.access.value,
119
+ access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
120
120
  )
121
121
 
122
122
  def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
@@ -116,7 +116,7 @@ class ManifestV12Wrapper(BaseManifestWrapper):
116
116
  contract=contract,
117
117
  meta=node.meta,
118
118
  patch_path=node.patch_path,
119
- access=node.access.value,
119
+ access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
120
120
  )
121
121
 
122
122
  def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
@@ -14,7 +14,7 @@ envlist =
14
14
  clean,
15
15
  check,
16
16
  docs,
17
- {py38,py39,py310,py311,py312,pypy38,pypy39,pypy310}-{cover,nocov},
17
+ {py39,py310,py311,py312,pypy39,pypy310}-{pydantic28,pydantic210}-{cover,nocov},
18
18
  report
19
19
  ignore_basepython_conflict = true
20
20
 
@@ -40,9 +40,11 @@ usedevelop =
40
40
  deps =
41
41
  pytest
42
42
  cover: pytest-cov
43
+ pydantic28: pydantic>=2.8,<2.9
44
+ pydantic210: pydantic>=2.10,<2.11
43
45
  commands =
44
- nocov: {posargs:pytest -vv --ignore=src}
45
- cover: {posargs:pytest --cov --cov-report=term-missing --cov-report=xml -vv}
46
+ nocov: {posargs:pytest -vv --ignore=src -p no:warnings}
47
+ cover: {posargs:pytest --cov --cov-report=term-missing --cov-report=xml -vv -p no:warnings}
46
48
 
47
49
  [testenv:check]
48
50
  deps =