semantic-link-labs 0.8.9__tar.gz → 0.8.10__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.

Potentially problematic release.


This version of semantic-link-labs might be problematic. Click here for more details.

Files changed (202) hide show
  1. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/PKG-INFO +4 -2
  2. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/README.md +3 -1
  3. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/conf.py +1 -1
  4. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/pyproject.toml +1 -1
  5. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/PKG-INFO +4 -2
  6. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/__init__.py +8 -0
  7. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_authentication.py +31 -2
  8. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_dataflows.py +1 -1
  9. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_gateways.py +46 -0
  10. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_generate_semantic_model.py +2 -10
  11. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_git.py +32 -27
  12. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_helper_functions.py +60 -23
  13. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_list_functions.py +178 -32
  14. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa.py +25 -23
  15. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa_bulk.py +3 -3
  16. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_dependencies.py +13 -7
  17. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_notebooks.py +50 -18
  18. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_refresh_semantic_model.py +23 -17
  19. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/__init__.py +4 -0
  20. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_basic_functions.py +34 -0
  21. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_scanner.py +4 -4
  22. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_dl_helper.py +13 -8
  23. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/tom/_model.py +76 -34
  24. semantic_link_labs-0.8.10/tests/test_tom.py +37 -0
  25. semantic_link_labs-0.8.9/tests/test_tom.py +0 -31
  26. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  27. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  28. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  29. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/workflows/build.yaml +0 -0
  30. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/workflows/codeql.yaml +0 -0
  31. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.gitignore +0 -0
  32. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.readthedocs.yaml +0 -0
  33. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.vscode/settings.json +0 -0
  34. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/CODE_OF_CONDUCT.md +0 -0
  35. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/LICENSE +0 -0
  36. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/SECURITY.md +0 -0
  37. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/SUPPORT.md +0 -0
  38. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/Makefile +0 -0
  39. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/make.bat +0 -0
  40. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/requirements.txt +0 -0
  41. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/index.rst +0 -0
  42. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/modules.rst +0 -0
  43. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/environment.yml +0 -0
  44. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  45. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Capacity Migration.ipynb +0 -0
  46. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Migration to Direct Lake.ipynb +0 -0
  47. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Model Optimization.ipynb +0 -0
  48. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Query Scale Out.ipynb +0 -0
  49. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Report Analysis.ipynb +0 -0
  50. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/SQL.ipynb +0 -0
  51. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Semantic Model Refresh.ipynb +0 -0
  52. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Tabular Object Model.ipynb +0 -0
  53. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/setup.cfg +0 -0
  54. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/SOURCES.txt +0 -0
  55. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  56. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/requires.txt +0 -0
  57. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  58. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ai.py +0 -0
  59. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  60. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  61. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  62. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  63. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  64. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  65. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  66. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  67. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  68. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  69. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  70. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  71. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  72. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  73. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  74. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  75. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  76. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  77. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  78. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  79. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  80. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  81. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  82. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  83. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  84. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  85. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  86. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  87. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  88. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  89. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  90. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  91. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  92. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  93. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  94. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  95. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  96. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  97. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_capacities.py +0 -0
  98. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_capacity_migration.py +0 -0
  99. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_clear_cache.py +0 -0
  100. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_connections.py +0 -0
  101. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_data_pipelines.py +0 -0
  102. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_dax.py +0 -0
  103. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_deployment_pipelines.py +0 -0
  104. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_documentation.py +0 -0
  105. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_environments.py +0 -0
  106. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_eventhouses.py +0 -0
  107. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_eventstreams.py +0 -0
  108. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_external_data_shares.py +0 -0
  109. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_icons.py +0 -0
  110. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_kql_databases.py +0 -0
  111. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_kql_querysets.py +0 -0
  112. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_managed_private_endpoints.py +0 -0
  113. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_mirrored_databases.py +0 -0
  114. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  115. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ml_experiments.py +0 -0
  116. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ml_models.py +0 -0
  117. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_auto_build.py +0 -0
  118. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa_rules.py +0 -0
  119. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_one_lake_integration.py +0 -0
  120. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_query_scale_out.py +0 -0
  121. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_spark.py +0 -0
  122. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_sql.py +0 -0
  123. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_translations.py +0 -0
  124. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_vertipaq.py +0 -0
  125. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_warehouses.py +0 -0
  126. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workloads.py +0 -0
  127. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workspace_identity.py +0 -0
  128. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workspaces.py +0 -0
  129. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_domains.py +0 -0
  130. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_external_data_share.py +0 -0
  131. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_git.py +0 -0
  132. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_items.py +0 -0
  133. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/__init__.py +0 -0
  134. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
  135. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
  136. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
  137. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
  138. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  139. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_guardrails.py +0 -0
  140. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  141. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
  142. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
  143. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
  144. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  145. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/__init__.py +0 -0
  146. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
  147. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
  148. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
  149. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
  150. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/__init__.py +0 -0
  151. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
  152. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  153. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  154. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  155. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  156. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migration_validation.py +0 -0
  157. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  158. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  159. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/__init__.py +0 -0
  160. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  161. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  162. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  163. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  164. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  165. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  166. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  167. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  168. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  169. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  170. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  171. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  172. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  173. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  174. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  175. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  176. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  177. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  178. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  179. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  180. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  181. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  182. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  183. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  184. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  185. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  186. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  187. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  188. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  189. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_download_report.py +0 -0
  190. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_generate_report.py +0 -0
  191. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_paginated.py +0 -0
  192. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_bpa.py +0 -0
  193. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  194. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_functions.py +0 -0
  195. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_helper.py +0 -0
  196. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_list_functions.py +0 -0
  197. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_rebind.py +0 -0
  198. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_reportwrapper.py +0 -0
  199. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/tom/__init__.py +0 -0
  200. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/__init__.py +0 -0
  201. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/test_friendly_case.py +0 -0
  202. {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/test_shortcuts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: semantic-link-labs
3
- Version: 0.8.9
3
+ Version: 0.8.10
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
27
27
  # Semantic Link Labs
28
28
 
29
29
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
30
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.9&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.10&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
31
31
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
32
32
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
33
33
 
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
64
64
  * [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
65
65
  * [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
66
66
  * [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
67
+ * [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
67
68
  * Reports
68
69
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
69
70
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -141,6 +142,7 @@ An even better way to ensure the semantic-link-labs library is available in your
141
142
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
142
143
 
143
144
  ## Version History
145
+ * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
144
146
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
145
147
  * [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
146
148
  * [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
@@ -1,7 +1,7 @@
1
1
  # Semantic Link Labs
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
4
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.9&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.10&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
5
5
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
6
6
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
7
7
 
@@ -38,6 +38,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
38
38
  * [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
39
39
  * [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
40
40
  * [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
41
+ * [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
41
42
  * Reports
42
43
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
43
44
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -115,6 +116,7 @@ An even better way to ensure the semantic-link-labs library is available in your
115
116
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
116
117
 
117
118
  ## Version History
119
+ * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
118
120
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
119
121
  * [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
120
122
  * [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('../../src/'))
13
13
  project = 'semantic-link-labs'
14
14
  copyright = '2024, Microsoft and community'
15
15
  author = 'Microsoft and community'
16
- release = '0.8.9'
16
+ release = '0.8.10'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -7,7 +7,7 @@ name="semantic-link-labs"
7
7
  authors = [
8
8
  { name = "Microsoft Corporation" },
9
9
  ]
10
- version="0.8.9"
10
+ version="0.8.10"
11
11
  description="Semantic Link Labs for Microsoft Fabric"
12
12
  readme="README.md"
13
13
  requires-python=">=3.10,<3.12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: semantic-link-labs
3
- Version: 0.8.9
3
+ Version: 0.8.10
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
27
27
  # Semantic Link Labs
28
28
 
29
29
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
30
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.9&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.10&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
31
31
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
32
32
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
33
33
 
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
64
64
  * [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
65
65
  * [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
66
66
  * [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
67
+ * [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
67
68
  * Reports
68
69
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
69
70
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -141,6 +142,7 @@ An even better way to ensure the semantic-link-labs library is available in your
141
142
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
142
143
 
143
144
  ## Version History
145
+ * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
144
146
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
145
147
  * [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
146
148
  * [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
@@ -8,6 +8,7 @@ from sempy_labs._gateways import (
8
8
  create_vnet_gateway,
9
9
  update_vnet_gateway,
10
10
  update_on_premises_gateway,
11
+ bind_semantic_model_to_gateway,
11
12
  )
12
13
 
13
14
  from sempy_labs._authentication import (
@@ -205,6 +206,8 @@ from sempy_labs._list_functions import (
205
206
  list_lakehouses,
206
207
  list_sql_endpoints,
207
208
  update_item,
209
+ list_server_properties,
210
+ list_semantic_model_errors,
208
211
  )
209
212
  from sempy_labs._helper_functions import (
210
213
  convert_to_friendly_case,
@@ -230,6 +233,7 @@ from sempy_labs._helper_functions import (
230
233
  get_capacity_id,
231
234
  get_capacity_name,
232
235
  resolve_capacity_name,
236
+ get_tenant_id,
233
237
  )
234
238
  from sempy_labs._model_bpa_bulk import (
235
239
  run_model_bpa_bulk,
@@ -458,4 +462,8 @@ __all__ = [
458
462
  "update_vnet_gateway",
459
463
  "update_on_premises_gateway",
460
464
  "get_semantic_model_definition",
465
+ "get_tenant_id",
466
+ "list_server_properties",
467
+ "bind_semantic_model_to_gateway",
468
+ "list_semantic_model_errors",
461
469
  ]
@@ -91,11 +91,13 @@ class ServicePrincipalTokenProvider(TokenProvider):
91
91
 
92
92
  return cls(credential)
93
93
 
94
- def __call__(self, audience: Literal["pbi", "storage"] = "pbi") -> str:
94
+ def __call__(
95
+ self, audience: Literal["pbi", "storage", "azure", "graph"] = "pbi"
96
+ ) -> str:
95
97
  """
96
98
  Parameters
97
99
  ----------
98
- audience : Literal["pbi", "storage"] = "pbi") -> str
100
+ audience : Literal["pbi", "storage", "azure", "graph"] = "pbi") -> str
99
101
  Literal if it's for PBI/Fabric API call or OneLake/Storage Account call.
100
102
  """
101
103
  if audience == "pbi":
@@ -104,5 +106,32 @@ class ServicePrincipalTokenProvider(TokenProvider):
104
106
  ).token
105
107
  elif audience == "storage":
106
108
  return self.credential.get_token("https://storage.azure.com/.default").token
109
+ elif audience == "azure":
110
+ return self.credential.get_token(
111
+ "https://management.azure.com/.default"
112
+ ).token
113
+ elif audience == "graph":
114
+ return self.credential.get_token(
115
+ "https://graph.microsoft.com/.default"
116
+ ).token
107
117
  else:
108
118
  raise NotImplementedError
119
+
120
+
121
+ def _get_headers(
122
+ token_provider: str, audience: Literal["pbi", "storage", "azure", "graph"] = "azure"
123
+ ):
124
+ """
125
+ Generates headers for an API request.
126
+ """
127
+
128
+ token = token_provider(audience=audience)
129
+
130
+ headers = {"Authorization": f"Bearer {token}"}
131
+
132
+ if audience == "graph":
133
+ headers["ConsistencyLevel"] = "eventual"
134
+ else:
135
+ headers["Content-Type"] = "application/json"
136
+
137
+ return headers
@@ -42,7 +42,7 @@ def list_dataflows(workspace: Optional[str] = None):
42
42
  "Dataflow Id": v.get("objectId"),
43
43
  "Dataflow Name": v.get("name"),
44
44
  "Configured By": v.get("configuredBy"),
45
- "Users": [v.get("users")],
45
+ "Users": v.get("users"),
46
46
  "Generation": v.get("generation"),
47
47
  }
48
48
  df = pd.concat(
@@ -6,6 +6,8 @@ from sempy_labs._helper_functions import (
6
6
  pagination,
7
7
  _is_valid_uuid,
8
8
  resolve_capacity_id,
9
+ resolve_workspace_name_and_id,
10
+ resolve_dataset_name_and_id,
9
11
  )
10
12
  from uuid import UUID
11
13
  import sempy_labs._icons as icons
@@ -437,3 +439,47 @@ def update_vnet_gateway(
437
439
  raise FabricHTTPException(response)
438
440
 
439
441
  print(f"{icons.green_dot} The '{gateway}' has been updated accordingly.")
442
+
443
+
444
+ def bind_semantic_model_to_gateway(
445
+ dataset: str | UUID, gateway: str | UUID, workspace: Optional[str | UUID] = None
446
+ ):
447
+ """
448
+ Binds the specified dataset from the specified workspace to the specified gateway.
449
+
450
+ This is a wrapper function for the following API: `Datasets - Bind To Gateway In Group <https://learn.microsoft.com/rest/api/power-bi/datasets/bind-to-gateway-in-group>`_.
451
+
452
+ Parameters
453
+ ----------
454
+ dataset : str | UUID
455
+ The name or ID of the semantic model.
456
+ gateway : str | UUID
457
+ The name or ID of the gateway.
458
+ workspace : str | UUID, default=None
459
+ The Fabric workspace name.
460
+ Defaults to None which resolves to the workspace of the attached lakehouse
461
+ or if no lakehouse attached, resolves to the workspace of the notebook.
462
+ """
463
+
464
+ (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
465
+ (dataset_name, dataset_id) = resolve_dataset_name_and_id(
466
+ dataset, workspace=workspace_id
467
+ )
468
+
469
+ gateway_id = _resolve_gateway_id(gateway)
470
+ payload = {
471
+ "gatewayObjectId": gateway_id,
472
+ }
473
+
474
+ client = fabric.FabricRestClient()
475
+ response = client.post(
476
+ f"/v1.0/myorg/groups/{workspace_id}/datasets/{dataset_id}/Default.BindToGateway",
477
+ json=payload,
478
+ )
479
+
480
+ if response.status_code != 200:
481
+ raise FabricHTTPException(response)
482
+
483
+ print(
484
+ f"{icons.green_dot} The '{dataset_name}' semantic model within the '{workspace_name}' workspace has been binded to the '{gateway_id}' gateway."
485
+ )
@@ -203,14 +203,7 @@ def update_semantic_model_from_bim(
203
203
  """
204
204
 
205
205
  (workspace, workspace_id) = resolve_workspace_name_and_id(workspace)
206
-
207
- dfD = fabric.list_datasets(workspace=workspace, mode="rest")
208
- dfD_filt = dfD[dfD["Dataset Name"] == dataset]
209
- if len(dfD_filt) == 0:
210
- raise ValueError(
211
- f"{icons.red_dot} The '{dataset}' semantic model within the '{workspace}' workspace does not exist."
212
- )
213
- dataset_id = dfD_filt["Dataset Id"].iloc[0]
206
+ dataset_id = resolve_dataset_id(dataset=dataset, workspace=workspace)
214
207
 
215
208
  client = fabric.FabricRestClient()
216
209
  defPBIDataset = {"version": "1.0", "settings": {}}
@@ -303,12 +296,11 @@ def deploy_semantic_model(
303
296
  bim = get_semantic_model_bim(dataset=source_dataset, workspace=source_workspace)
304
297
 
305
298
  # Create the semantic model if the model does not exist
306
- if len(dfD_filt) == 0:
299
+ if dfD_filt.empty:
307
300
  create_semantic_model_from_bim(
308
301
  dataset=target_dataset,
309
302
  bim_file=bim,
310
303
  workspace=target_workspace,
311
- overwrite=overwrite,
312
304
  )
313
305
  # Update the semantic model if the model exists
314
306
  else:
@@ -277,43 +277,48 @@ def commit_to_git(
277
277
  workspace, workspace_id = resolve_workspace_name_and_id(workspace)
278
278
 
279
279
  gs = get_git_status(workspace=workspace)
280
- workspace_head = gs["Workspace Head"].iloc[0]
280
+ if not gs.empty:
281
+ workspace_head = gs["Workspace Head"].iloc[0]
281
282
 
282
- if item_ids is None:
283
- commit_mode = "All"
284
- else:
285
- commit_mode = "Selective"
283
+ if item_ids is None:
284
+ commit_mode = "All"
285
+ else:
286
+ commit_mode = "Selective"
286
287
 
287
- if isinstance(item_ids, str):
288
- item_ids = [item_ids]
288
+ if isinstance(item_ids, str):
289
+ item_ids = [item_ids]
289
290
 
290
- request_body = {
291
- "mode": commit_mode,
292
- "workspaceHead": workspace_head,
293
- "comment": comment,
294
- }
291
+ request_body = {
292
+ "mode": commit_mode,
293
+ "workspaceHead": workspace_head,
294
+ "comment": comment,
295
+ }
295
296
 
296
- if item_ids is not None:
297
- request_body["items"] = [{"objectId": item_id} for item_id in item_ids]
297
+ if item_ids is not None:
298
+ request_body["items"] = [{"objectId": item_id} for item_id in item_ids]
298
299
 
299
- client = fabric.FabricRestClient()
300
- response = client.post(
301
- f"/v1/workspaces/{workspace_id}/git/commitToGit",
302
- json=request_body,
303
- )
300
+ client = fabric.FabricRestClient()
301
+ response = client.post(
302
+ f"/v1/workspaces/{workspace_id}/git/commitToGit",
303
+ json=request_body,
304
+ )
304
305
 
305
- if response.status_code not in [200, 202]:
306
- raise FabricHTTPException(response)
306
+ if response.status_code not in [200, 202]:
307
+ raise FabricHTTPException(response)
307
308
 
308
- lro(client, response)
309
+ lro(client=client, response=response, return_status_code=True)
309
310
 
310
- if commit_mode == "All":
311
- print(
312
- f"{icons.green_dot} All items within the '{workspace}' workspace have been committed to Git."
313
- )
311
+ if commit_mode == "All":
312
+ print(
313
+ f"{icons.green_dot} All items within the '{workspace}' workspace have been committed to Git."
314
+ )
315
+ else:
316
+ print(
317
+ f"{icons.green_dot} The {item_ids} items within the '{workspace}' workspace have been committed to Git."
318
+ )
314
319
  else:
315
320
  print(
316
- f"{icons.green_dot} The {item_ids} items ithin the '{workspace}' workspace have been committed to Git."
321
+ f"{icons.info} Git already up to date: no modified items found within the '{workspace}' workspace."
317
322
  )
318
323
 
319
324
 
@@ -160,14 +160,34 @@ def resolve_report_name(report_id: UUID, workspace: Optional[str] = None) -> str
160
160
  return obj
161
161
 
162
162
 
163
- def resolve_dataset_id(dataset: str, workspace: Optional[str] = None) -> UUID:
163
+ def resolve_dataset_name_and_id(
164
+ dataset: str | UUID, workspace: Optional[str] = None
165
+ ) -> Tuple[str, UUID]:
166
+
167
+ (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
168
+
169
+ if _is_valid_uuid(dataset):
170
+ dataset_id = dataset
171
+ dataset_name = fabric.resolve_item_name(
172
+ item_id=dataset_id, type="SemanticModel", workspace=workspace_id
173
+ )
174
+ else:
175
+ dataset_name = dataset
176
+ dataset_id = fabric.resolve_item_id(
177
+ item_name=dataset, type="SemanticModel", workspace=workspace_id
178
+ )
179
+
180
+ return dataset_name, dataset_id
181
+
182
+
183
+ def resolve_dataset_id(dataset: str | UUID, workspace: Optional[str] = None) -> UUID:
164
184
  """
165
185
  Obtains the ID of the semantic model.
166
186
 
167
187
  Parameters
168
188
  ----------
169
- dataset : str
170
- The name of the semantic model.
189
+ dataset : str | UUID
190
+ The name or ID of the semantic model.
171
191
  workspace : str, default=None
172
192
  The Fabric workspace name.
173
193
  Defaults to None which resolves to the workspace of the attached lakehouse
@@ -179,15 +199,14 @@ def resolve_dataset_id(dataset: str, workspace: Optional[str] = None) -> UUID:
179
199
  The ID of the semantic model.
180
200
  """
181
201
 
182
- if workspace is None:
183
- workspace_id = fabric.get_workspace_id()
184
- workspace = fabric.resolve_workspace_name(workspace_id)
185
-
186
- obj = fabric.resolve_item_id(
187
- item_name=dataset, type="SemanticModel", workspace=workspace
188
- )
202
+ if _is_valid_uuid(dataset):
203
+ dataset_id = dataset
204
+ else:
205
+ dataset_id = fabric.resolve_item_id(
206
+ item_name=dataset, type="SemanticModel", workspace=workspace
207
+ )
189
208
 
190
- return obj
209
+ return dataset_id
191
210
 
192
211
 
193
212
  def resolve_dataset_name(dataset_id: UUID, workspace: Optional[str] = None) -> str:
@@ -761,13 +780,19 @@ def get_capacity_id(workspace: Optional[str] = None) -> UUID:
761
780
  The capacity Id.
762
781
  """
763
782
 
764
- workspace = fabric.resolve_workspace_name(workspace)
765
- filter_condition = urllib.parse.quote(workspace)
766
- dfW = fabric.list_workspaces(filter=f"name eq '{filter_condition}'")
767
- if len(dfW) == 0:
768
- raise ValueError(f"{icons.red_dot} The '{workspace}' does not exist'.")
783
+ if workspace is None:
784
+ capacity_id = _get_x_id(name="trident.capacity.id")
785
+ else:
786
+
787
+ workspace = fabric.resolve_workspace_name(workspace)
788
+ filter_condition = urllib.parse.quote(workspace)
789
+ dfW = fabric.list_workspaces(filter=f"name eq '{filter_condition}'")
790
+ if len(dfW) == 0:
791
+ raise ValueError(f"{icons.red_dot} The '{workspace}' does not exist'.")
792
+
793
+ capacity_id = dfW["Capacity Id"].iloc[0]
769
794
 
770
- return dfW["Capacity Id"].iloc[0]
795
+ return capacity_id
771
796
 
772
797
 
773
798
  def get_capacity_name(workspace: Optional[str] = None) -> str:
@@ -1167,20 +1192,20 @@ def _make_list_unique(my_list):
1167
1192
 
1168
1193
  def _get_partition_map(dataset: str, workspace: Optional[str] = None) -> pd.DataFrame:
1169
1194
 
1170
- if workspace is None:
1171
- workspace = fabric.resolve_workspace_name()
1195
+ (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
1196
+ (dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
1172
1197
 
1173
1198
  partitions = fabric.evaluate_dax(
1174
- dataset=dataset,
1175
- workspace=workspace,
1199
+ dataset=dataset_id,
1200
+ workspace=workspace_id,
1176
1201
  dax_string="""
1177
1202
  select [ID] AS [PartitionID], [TableID], [Name] AS [PartitionName] from $system.tmschema_partitions
1178
1203
  """,
1179
1204
  )
1180
1205
 
1181
1206
  tables = fabric.evaluate_dax(
1182
- dataset=dataset,
1183
- workspace=workspace,
1207
+ dataset=dataset_id,
1208
+ workspace=workspace_id,
1184
1209
  dax_string="""
1185
1210
  select [ID] AS [TableID], [Name] AS [TableName] from $system.tmschema_tables
1186
1211
  """,
@@ -1352,3 +1377,15 @@ def _is_valid_uuid(
1352
1377
  return True
1353
1378
  except ValueError:
1354
1379
  return False
1380
+
1381
+
1382
+ def _get_fabric_context_setting(name: str):
1383
+
1384
+ from synapse.ml.internal_utils.session_utils import get_fabric_context
1385
+
1386
+ return get_fabric_context().get(name)
1387
+
1388
+
1389
+ def get_tenant_id():
1390
+
1391
+ _get_fabric_context_setting(name="trident.tenant.id")