semantic-link-labs 0.9.5__tar.gz → 0.9.7__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 (231) hide show
  1. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/PKG-INFO +8 -5
  2. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/README.md +4 -2
  3. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/source/conf.py +1 -1
  4. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/environment.yml +1 -1
  5. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Service Principal.ipynb +1 -1
  6. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/pyproject.toml +2 -2
  7. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/semantic_link_labs.egg-info/PKG-INFO +8 -5
  8. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/semantic_link_labs.egg-info/SOURCES.txt +5 -2
  9. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/semantic_link_labs.egg-info/requires.txt +1 -1
  10. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/__init__.py +19 -1
  11. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_ai.py +3 -1
  12. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_capacities.py +37 -2
  13. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_capacity_migration.py +11 -14
  14. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_connections.py +2 -4
  15. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_dataflows.py +2 -2
  16. semantic_link_labs-0.9.7/src/sempy_labs/_dax_query_view.py +57 -0
  17. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_delta_analyzer.py +16 -14
  18. semantic_link_labs-0.9.7/src/sempy_labs/_delta_analyzer_history.py +298 -0
  19. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_environments.py +8 -1
  20. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_eventhouses.py +5 -1
  21. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_external_data_shares.py +4 -10
  22. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_generate_semantic_model.py +2 -1
  23. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_graphQL.py +5 -1
  24. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_helper_functions.py +440 -63
  25. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_icons.py +6 -6
  26. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_kql_databases.py +5 -1
  27. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_list_functions.py +8 -38
  28. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_managed_private_endpoints.py +9 -2
  29. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_mirrored_databases.py +3 -1
  30. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_ml_experiments.py +1 -1
  31. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_model_bpa.py +2 -11
  32. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_model_bpa_bulk.py +33 -38
  33. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_model_bpa_rules.py +1 -1
  34. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_one_lake_integration.py +2 -1
  35. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_semantic_models.py +20 -0
  36. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_sql.py +6 -2
  37. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_sqldatabase.py +61 -100
  38. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_vertipaq.py +8 -11
  39. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_warehouses.py +14 -3
  40. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_workspace_identity.py +6 -0
  41. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_workspaces.py +42 -2
  42. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_basic_functions.py +29 -2
  43. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_reports.py +1 -1
  44. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_scanner.py +2 -4
  45. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_tenant.py +8 -3
  46. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_directlake_schema_compare.py +2 -1
  47. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_directlake_schema_sync.py +65 -19
  48. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_dl_helper.py +0 -6
  49. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_generate_shared_expression.py +19 -12
  50. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_guardrails.py +2 -1
  51. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +90 -57
  52. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +5 -2
  53. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/graph/_groups.py +6 -0
  54. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/graph/_teams.py +2 -0
  55. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/graph/_users.py +4 -0
  56. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/lakehouse/__init__.py +12 -3
  57. semantic_link_labs-0.9.7/src/sempy_labs/lakehouse/_blobs.py +231 -0
  58. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/lakehouse/_shortcuts.py +29 -8
  59. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_direct_lake_to_import.py +47 -10
  60. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_migration_validation.py +0 -4
  61. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/__init__.py +4 -0
  62. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_download_report.py +4 -6
  63. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_generate_report.py +6 -6
  64. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_functions.py +5 -4
  65. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_helper.py +17 -5
  66. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_rebind.py +8 -6
  67. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_reportwrapper.py +17 -8
  68. semantic_link_labs-0.9.7/src/sempy_labs/report/_save_report.py +147 -0
  69. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/tom/_model.py +154 -23
  70. semantic_link_labs-0.9.5/tests/test_tom.py +0 -40
  71. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  72. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  73. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  74. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.github/workflows/build.yaml +0 -0
  75. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.github/workflows/codeql.yaml +0 -0
  76. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.gitignore +0 -0
  77. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.readthedocs.yaml +0 -0
  78. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/.vscode/settings.json +0 -0
  79. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/CODE_OF_CONDUCT.md +0 -0
  80. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/LICENSE +0 -0
  81. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/SECURITY.md +0 -0
  82. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/SUPPORT.md +0 -0
  83. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/Makefile +0 -0
  84. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/make.bat +0 -0
  85. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/requirements.txt +0 -0
  86. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/source/index.rst +0 -0
  87. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/docs/source/modules.rst +0 -0
  88. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  89. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Capacity Migration.ipynb +0 -0
  90. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Delta Analyzer.ipynb +0 -0
  91. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Migration to Direct Lake.ipynb +0 -0
  92. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Model Optimization.ipynb +0 -0
  93. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Query Scale Out.ipynb +0 -0
  94. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Report Analysis.ipynb +0 -0
  95. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/SQL.ipynb +0 -0
  96. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Semantic Model Management.ipynb +0 -0
  97. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Semantic Model Refresh.ipynb +0 -0
  98. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/notebooks/Tabular Object Model.ipynb +0 -0
  99. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/setup.cfg +0 -0
  100. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  101. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  102. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_authentication.py +0 -0
  103. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  104. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  105. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  106. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  107. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  108. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  109. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  110. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  111. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  112. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  113. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  114. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  115. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  116. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  117. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  118. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  119. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  120. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  121. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  122. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  123. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  124. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  125. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  126. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  127. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  128. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  129. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  130. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  131. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  132. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  133. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  134. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  135. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  136. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  137. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  138. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  139. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  140. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  141. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_clear_cache.py +0 -0
  142. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_dashboards.py +0 -0
  143. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_data_pipelines.py +0 -0
  144. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_dax.py +0 -0
  145. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_deployment_pipelines.py +0 -0
  146. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_documentation.py +0 -0
  147. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_eventstreams.py +0 -0
  148. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_gateways.py +0 -0
  149. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_git.py +0 -0
  150. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_job_scheduler.py +0 -0
  151. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_kql_querysets.py +0 -0
  152. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  153. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_ml_models.py +0 -0
  154. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_model_auto_build.py +0 -0
  155. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_model_dependencies.py +0 -0
  156. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_mounted_data_factories.py +0 -0
  157. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_notebooks.py +0 -0
  158. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_query_scale_out.py +0 -0
  159. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_refresh_semantic_model.py +0 -0
  160. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_spark.py +0 -0
  161. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_translations.py +0 -0
  162. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_utils.py +0 -0
  163. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/_workloads.py +0 -0
  164. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/__init__.py +0 -0
  165. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_activities.py +0 -0
  166. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_apps.py +0 -0
  167. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_artifacts.py +0 -0
  168. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_capacities.py +0 -0
  169. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_datasets.py +0 -0
  170. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_domains.py +0 -0
  171. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_external_data_share.py +0 -0
  172. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_git.py +0 -0
  173. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_items.py +0 -0
  174. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_shared.py +0 -0
  175. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_users.py +0 -0
  176. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/admin/_workspaces.py +0 -0
  177. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/__init__.py +0 -0
  178. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
  179. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  180. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  181. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
  182. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  183. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/graph/__init__.py +0 -0
  184. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
  185. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
  186. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
  187. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/__init__.py +0 -0
  188. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
  189. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  190. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  191. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  192. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  193. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  194. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  195. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  196. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  197. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  198. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  199. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  200. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  201. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  202. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  203. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  204. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  205. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  206. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  207. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  208. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  209. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  210. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  211. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  212. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  213. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  214. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  215. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  216. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  217. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  218. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  219. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  220. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  221. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  222. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  223. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  224. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_export_report.py +0 -0
  225. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_paginated.py +0 -0
  226. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_bpa.py +0 -0
  227. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  228. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/report/_report_list_functions.py +0 -0
  229. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/src/sempy_labs/tom/__init__.py +0 -0
  230. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/tests/__init__.py +0 -0
  231. {semantic_link_labs-0.9.5 → semantic_link_labs-0.9.7}/tests/test_friendly_case.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: semantic-link-labs
3
- Version: 0.9.5
3
+ Version: 0.9.7
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -15,18 +15,19 @@ Classifier: Framework :: Jupyter
15
15
  Requires-Python: <3.12,>=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: semantic-link-sempy>=0.8.5
18
+ Requires-Dist: semantic-link-sempy>=0.9.3
19
19
  Requires-Dist: anytree
20
20
  Requires-Dist: powerbiclient
21
21
  Requires-Dist: polib
22
22
  Requires-Dist: jsonpath_ng
23
23
  Provides-Extra: test
24
24
  Requires-Dist: pytest>=8.2.1; extra == "test"
25
+ Dynamic: license-file
25
26
 
26
27
  # Semantic Link Labs
27
28
 
28
29
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
29
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.5&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.7&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
31
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
31
32
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
32
33
 
@@ -148,6 +149,8 @@ An even better way to ensure the semantic-link-labs library is available in your
148
149
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
149
150
 
150
151
  ## Version History
152
+ * [0.9.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.7) (April 1, 2025)
153
+ * [0.9.6](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.6) (March 12, 2025)
151
154
  * [0.9.5](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.5) (March 7, 2025)
152
155
  * [0.9.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.4) (February 27, 2025)
153
156
  * [0.9.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.3) (February 13, 2025)
@@ -308,7 +311,7 @@ We use [black](github.com/psf/black) formatting as a code formatting standard. M
308
311
 
309
312
  Run this code to install black
310
313
  ```cli
311
- pip install black
314
+ pip install black==25.1.0
312
315
  ```
313
316
 
314
317
  Run this code to format your code using black
@@ -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.9.5&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.7&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
 
@@ -123,6 +123,8 @@ An even better way to ensure the semantic-link-labs library is available in your
123
123
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
124
124
 
125
125
  ## Version History
126
+ * [0.9.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.7) (April 1, 2025)
127
+ * [0.9.6](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.6) (March 12, 2025)
126
128
  * [0.9.5](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.5) (March 7, 2025)
127
129
  * [0.9.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.4) (February 27, 2025)
128
130
  * [0.9.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.3) (February 13, 2025)
@@ -283,7 +285,7 @@ We use [black](github.com/psf/black) formatting as a code formatting standard. M
283
285
 
284
286
  Run this code to install black
285
287
  ```cli
286
- pip install black
288
+ pip install black==25.1.0
287
289
  ```
288
290
 
289
291
  Run this code to format your code using black
@@ -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.9.5'
16
+ release = '0.9.7'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -6,7 +6,7 @@ dependencies:
6
6
  - pytest-cov
7
7
  - pytest-mock
8
8
  - pip:
9
- - semantic-link-sempy>=0.8.5
9
+ - semantic-link-sempy>=0.9.3
10
10
  - azure-identity==1.7.1
11
11
  - azure-storage-blob>=12.9.0
12
12
  - pandas-stubs
@@ -144,7 +144,7 @@
144
144
  " key_vault_client_secret=key_vault_client_secret):\n",
145
145
  "\n",
146
146
  " labs.suspend_fabric_capacity(\n",
147
- " capacity_name='',\n",
147
+ " capacity='',\n",
148
148
  " azure_subscription_id='',\n",
149
149
  " resource_group='',\n",
150
150
  " )"
@@ -7,7 +7,7 @@ name="semantic-link-labs"
7
7
  authors = [
8
8
  { name = "Microsoft Corporation" },
9
9
  ]
10
- version="0.9.5"
10
+ version="0.9.7"
11
11
  description="Semantic Link Labs for Microsoft Fabric"
12
12
  readme="README.md"
13
13
  requires-python=">=3.10,<3.12"
@@ -23,7 +23,7 @@ classifiers = [
23
23
  license= { text = "MIT License" }
24
24
 
25
25
  dependencies = [
26
- "semantic-link-sempy>=0.8.5",
26
+ "semantic-link-sempy>=0.9.3",
27
27
  "anytree",
28
28
  "powerbiclient",
29
29
  "polib",
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: semantic-link-labs
3
- Version: 0.9.5
3
+ Version: 0.9.7
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -15,18 +15,19 @@ Classifier: Framework :: Jupyter
15
15
  Requires-Python: <3.12,>=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: semantic-link-sempy>=0.8.5
18
+ Requires-Dist: semantic-link-sempy>=0.9.3
19
19
  Requires-Dist: anytree
20
20
  Requires-Dist: powerbiclient
21
21
  Requires-Dist: polib
22
22
  Requires-Dist: jsonpath_ng
23
23
  Provides-Extra: test
24
24
  Requires-Dist: pytest>=8.2.1; extra == "test"
25
+ Dynamic: license-file
25
26
 
26
27
  # Semantic Link Labs
27
28
 
28
29
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
29
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.5&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.7&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
31
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
31
32
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
32
33
 
@@ -148,6 +149,8 @@ An even better way to ensure the semantic-link-labs library is available in your
148
149
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
149
150
 
150
151
  ## Version History
152
+ * [0.9.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.7) (April 1, 2025)
153
+ * [0.9.6](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.6) (March 12, 2025)
151
154
  * [0.9.5](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.5) (March 7, 2025)
152
155
  * [0.9.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.4) (February 27, 2025)
153
156
  * [0.9.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.3) (February 13, 2025)
@@ -308,7 +311,7 @@ We use [black](github.com/psf/black) formatting as a code formatting standard. M
308
311
 
309
312
  Run this code to install black
310
313
  ```cli
311
- pip install black
314
+ pip install black==25.1.0
312
315
  ```
313
316
 
314
317
  Run this code to format your code using black
@@ -47,7 +47,9 @@ src/sempy_labs/_dashboards.py
47
47
  src/sempy_labs/_data_pipelines.py
48
48
  src/sempy_labs/_dataflows.py
49
49
  src/sempy_labs/_dax.py
50
+ src/sempy_labs/_dax_query_view.py
50
51
  src/sempy_labs/_delta_analyzer.py
52
+ src/sempy_labs/_delta_analyzer_history.py
51
53
  src/sempy_labs/_deployment_pipelines.py
52
54
  src/sempy_labs/_documentation.py
53
55
  src/sempy_labs/_environments.py
@@ -163,6 +165,7 @@ src/sempy_labs/graph/_groups.py
163
165
  src/sempy_labs/graph/_teams.py
164
166
  src/sempy_labs/graph/_users.py
165
167
  src/sempy_labs/lakehouse/__init__.py
168
+ src/sempy_labs/lakehouse/_blobs.py
166
169
  src/sempy_labs/lakehouse/_get_lakehouse_columns.py
167
170
  src/sempy_labs/lakehouse/_get_lakehouse_tables.py
168
171
  src/sempy_labs/lakehouse/_lakehouse.py
@@ -189,6 +192,7 @@ src/sempy_labs/report/_report_helper.py
189
192
  src/sempy_labs/report/_report_list_functions.py
190
193
  src/sempy_labs/report/_report_rebind.py
191
194
  src/sempy_labs/report/_reportwrapper.py
195
+ src/sempy_labs/report/_save_report.py
192
196
  src/sempy_labs/report/_bpareporttemplate/.platform
193
197
  src/sempy_labs/report/_bpareporttemplate/definition.pbir
194
198
  src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json
@@ -221,5 +225,4 @@ src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/v
221
225
  src/sempy_labs/tom/__init__.py
222
226
  src/sempy_labs/tom/_model.py
223
227
  tests/__init__.py
224
- tests/test_friendly_case.py
225
- tests/test_tom.py
228
+ tests/test_friendly_case.py
@@ -1,4 +1,4 @@
1
- semantic-link-sempy>=0.8.5
1
+ semantic-link-sempy>=0.9.3
2
2
  anytree
3
3
  powerbiclient
4
4
  polib
@@ -1,3 +1,9 @@
1
+ from sempy_labs._delta_analyzer_history import (
2
+ delta_analyzer_history,
3
+ )
4
+ from sempy_labs._dax_query_view import (
5
+ generate_dax_query_view_url,
6
+ )
1
7
  from sempy_labs._mounted_data_factories import (
2
8
  list_mounted_data_factories,
3
9
  get_mounted_data_factory_definition,
@@ -7,6 +13,7 @@ from sempy_labs._mounted_data_factories import (
7
13
  from sempy_labs._semantic_models import (
8
14
  get_semantic_model_refresh_schedule,
9
15
  enable_semantic_model_scheduled_refresh,
16
+ delete_semantic_model,
10
17
  )
11
18
  from sempy_labs._graphQL import (
12
19
  list_graphql_apis,
@@ -148,6 +155,7 @@ from sempy_labs._capacities import (
148
155
  create_or_update_resource_group,
149
156
  list_resource_groups,
150
157
  get_resource_group,
158
+ list_capacities,
151
159
  )
152
160
  from sempy_labs._spark import (
153
161
  get_spark_settings,
@@ -165,6 +173,7 @@ from sempy_labs._workspaces import (
165
173
  assign_workspace_to_capacity,
166
174
  unassign_workspace_from_capacity,
167
175
  list_workspace_role_assignments,
176
+ delete_workspace,
168
177
  )
169
178
  from sempy_labs._notebooks import (
170
179
  get_notebook_definition,
@@ -180,6 +189,9 @@ from sempy_labs._sql import (
180
189
  from sempy_labs._sqldatabase import (
181
190
  get_sql_database_columns,
182
191
  get_sql_database_tables,
192
+ create_sql_database,
193
+ delete_sql_database,
194
+ list_sql_databases,
183
195
  )
184
196
  from sempy_labs._workspace_identity import (
185
197
  provision_workspace_identity,
@@ -244,7 +256,6 @@ from sempy_labs._list_functions import (
244
256
  list_semantic_model_objects,
245
257
  list_shortcuts,
246
258
  get_object_level_security,
247
- list_capacities,
248
259
  list_datamarts,
249
260
  list_lakehouses,
250
261
  list_sql_endpoints,
@@ -540,4 +551,11 @@ __all__ = [
540
551
  "list_mounted_data_factories",
541
552
  "get_mounted_data_factory_definition",
542
553
  "delete_mounted_data_factory",
554
+ "generate_dax_query_view_url",
555
+ "delete_semantic_model",
556
+ "delete_workspace",
557
+ "create_sql_database",
558
+ "delete_sql_database",
559
+ "list_sql_databases",
560
+ "delta_analyzer_history",
543
561
  ]
@@ -216,7 +216,9 @@ def generate_aggs(
216
216
  f"{icons.green_dot} The '{aggLakeTName}' table has been created/updated in the lakehouse."
217
217
 
218
218
  # Create/update semantic model agg table
219
- tom_server = fabric.create_tom_server(readonly=False, workspace=workspace)
219
+ tom_server = fabric.create_tom_server(
220
+ dataset=dataset, readonly=False, workspace=workspace
221
+ )
220
222
  m = tom_server.Databases.GetByName(dataset).Model
221
223
  print(f"\n{icons.in_progress} Updating the '{dataset}' semantic model...")
222
224
  dfC_agg = dfC[dfC["Table Name"] == aggTableName]
@@ -1,4 +1,3 @@
1
- import sempy.fabric as fabric
2
1
  from typing import Optional, List, Tuple
3
2
  from sempy._utils._log import log
4
3
  import sempy_labs._icons as icons
@@ -242,7 +241,7 @@ def list_vcores() -> pd.DataFrame:
242
241
 
243
242
  def get_capacity_resource_governance(capacity_name: str):
244
243
 
245
- dfC = fabric.list_capacities()
244
+ dfC = list_capacities()
246
245
  dfC_filt = dfC[dfC["Display Name"] == capacity_name]
247
246
  capacity_id = dfC_filt["Id"].iloc[0].upper()
248
247
 
@@ -1131,3 +1130,39 @@ def get_resource_group(azure_subscription_id: str, resource_group: str) -> pd.Da
1131
1130
  }
1132
1131
 
1133
1132
  return pd.DataFrame(new_data, index=[0])
1133
+
1134
+
1135
+ def list_capacities() -> pd.DataFrame:
1136
+ """
1137
+ Shows the capacities and their properties.
1138
+
1139
+ Returns
1140
+ -------
1141
+ pandas.DataFrame
1142
+ A pandas dataframe showing the capacities and their properties
1143
+ """
1144
+
1145
+ columns = {
1146
+ "Id": "string",
1147
+ "Display Name": "string",
1148
+ "Sku": "string",
1149
+ "Region": "string",
1150
+ "State": "string",
1151
+ "Admins": "string",
1152
+ }
1153
+ df = _create_dataframe(columns=columns)
1154
+
1155
+ response = _base_api(request="/v1.0/myorg/capacities", client="fabric_sp")
1156
+
1157
+ for i in response.json().get("value", []):
1158
+ new_data = {
1159
+ "Id": i.get("id").lower(),
1160
+ "Display Name": i.get("displayName"),
1161
+ "Sku": i.get("sku"),
1162
+ "Region": i.get("region"),
1163
+ "State": i.get("state"),
1164
+ "Admins": [i.get("admins", [])],
1165
+ }
1166
+ df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
1167
+
1168
+ return df
@@ -106,17 +106,13 @@ def migrate_workspaces(
106
106
  migrated_workspaces = []
107
107
 
108
108
  for i, r in dfW.iterrows():
109
- workspace = r["Name"]
110
-
111
- if workspaces is None or workspace in workspaces:
112
- pass
113
- else:
114
- continue
115
-
116
- if assign_workspace_to_capacity(
117
- capacity_name=target_capacity, workspace=workspace
118
- ):
119
- migrated_workspaces.append(workspace)
109
+ workspace_id = r["Id"]
110
+ workspace_name = r["Name"]
111
+ if workspaces is None or workspace_name in workspaces:
112
+ assign_workspace_to_capacity(
113
+ capacity=target_capacity, workspace=workspace_id
114
+ )
115
+ migrated_workspaces.append(workspace_name)
120
116
 
121
117
  if len(migrated_workspaces) < workspace_count:
122
118
  print(
@@ -124,10 +120,11 @@ def migrate_workspaces(
124
120
  )
125
121
  print(f"{icons.in_progress} Initiating rollback...")
126
122
  for i, r in dfW.iterrows():
127
- workspace = r["Name"]
128
- if workspace in migrated_workspaces:
123
+ workspace_id = r["Id"]
124
+ workspace_name = r["Name"]
125
+ if workspace_name in migrated_workspaces:
129
126
  assign_workspace_to_capacity(
130
- capacity_name=source_capacity, workspace=workspace
127
+ capacity=source_capacity, workspace=workspace_id
131
128
  )
132
129
  print(
133
130
  f"{icons.green_dot} Rollback of the workspaces to the '{source_capacity}' capacity is complete."
@@ -1,4 +1,3 @@
1
- import sempy.fabric as fabric
2
1
  import pandas as pd
3
2
  from typing import Optional
4
3
  from sempy_labs._helper_functions import (
@@ -7,6 +6,7 @@ from sempy_labs._helper_functions import (
7
6
  _update_dataframe_datatypes,
8
7
  _base_api,
9
8
  _create_dataframe,
9
+ resolve_item_id,
10
10
  )
11
11
  from uuid import UUID
12
12
  import sempy_labs._icons as icons
@@ -230,9 +230,7 @@ def list_item_connections(
230
230
 
231
231
  (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
232
232
  item_type = item_type[0].upper() + item_type[1:]
233
- item_id = fabric.resolve_item_id(
234
- item_name=item_name, type=item_type, workspace=workspace_id
235
- )
233
+ item_id = resolve_item_id(item=item_name, type=item_type, workspace=workspace_id)
236
234
 
237
235
  columns = {
238
236
  "Connection Name": "string",
@@ -1,4 +1,3 @@
1
- import sempy.fabric as fabric
2
1
  import pandas as pd
3
2
  from sempy_labs._helper_functions import (
4
3
  resolve_workspace_name_and_id,
@@ -6,6 +5,7 @@ from sempy_labs._helper_functions import (
6
5
  _update_dataframe_datatypes,
7
6
  _base_api,
8
7
  _create_dataframe,
8
+ resolve_workspace_name,
9
9
  )
10
10
  from typing import Optional, Tuple
11
11
  import sempy_labs._icons as icons
@@ -187,7 +187,7 @@ def list_upstream_dataflows(
187
187
  for v in values:
188
188
  tgt_dataflow_id = v.get("targetDataflowId")
189
189
  tgt_workspace_id = v.get("groupId")
190
- tgt_workspace_name = fabric.resolve_workspace_name(tgt_workspace_id)
190
+ tgt_workspace_name = resolve_workspace_name(workspace_id=tgt_workspace_id)
191
191
  (tgt_dataflow_name, _) = _resolve_dataflow_name_and_id(
192
192
  dataflow=tgt_dataflow_id, workspace=tgt_workspace_id
193
193
  )
@@ -0,0 +1,57 @@
1
+ from typing import Optional
2
+ from uuid import UUID
3
+ from sempy_labs._helper_functions import (
4
+ resolve_dataset_id,
5
+ _get_fabric_context_setting,
6
+ resolve_workspace_id,
7
+ )
8
+ from sempy._utils._log import log
9
+ import gzip
10
+ import base64
11
+ import urllib.parse
12
+
13
+
14
+ @log
15
+ def generate_dax_query_view_url(
16
+ dataset: str | UUID, dax_string: str, workspace: Optional[str | UUID] = None
17
+ ):
18
+ """
19
+ Prints a URL based on query provided. This URL opens `DAX query view <https://learn.microsoft.com/power-bi/transform-model/dax-query-view>`_ in the Power BI service, connected to the semantic model and using the query provided.
20
+
21
+ Parameters
22
+ ----------
23
+ dataset : str | uuid.UUID
24
+ The semantic model name or ID.
25
+ dax_string : str
26
+ The DAX query string.
27
+ workspace : str | uuid.UUID, default=None
28
+ The workspace name or ID.
29
+ Defaults to None which resolves to the workspace of the attached lakehouse
30
+ or if no lakehouse attached, resolves to the workspace of the notebook.
31
+ """
32
+
33
+ workspace_id = resolve_workspace_id(workspace=workspace)
34
+ dataset_id = resolve_dataset_id(dataset=dataset, workspace=workspace_id)
35
+
36
+ prefix = _get_fabric_context_setting(name="spark.trident.pbienv").lower()
37
+
38
+ if prefix == "prod":
39
+ prefix = "app"
40
+
41
+ def gzip_base64_urlsafe(input_string):
42
+ # Compress the string with gzip
43
+ compressed_data = gzip.compress(input_string.encode("utf-8"))
44
+
45
+ # Encode the compressed data in base64
46
+ base64_data = base64.b64encode(compressed_data)
47
+
48
+ # Make the base64 string URL-safe
49
+ urlsafe_data = urllib.parse.quote_plus(base64_data.decode("utf-8"))
50
+
51
+ return urlsafe_data
52
+
53
+ formatted_query = gzip_base64_urlsafe(dax_string)
54
+
55
+ url = f"https://{prefix}.powerbi.com/groups/{workspace_id}/modeling/{dataset_id}/daxQueryView?query={formatted_query}"
56
+
57
+ print(url)
@@ -52,6 +52,7 @@ def delta_analyzer(
52
52
  workspace: Optional[str | UUID] = None,
53
53
  column_stats: bool = True,
54
54
  skip_cardinality: bool = True,
55
+ schema: Optional[str] = None,
55
56
  ) -> Dict[str, pd.DataFrame]:
56
57
  """
57
58
  Analyzes a delta table and shows the results in dictionary containing a set of 5 dataframes. If 'export' is set to True, the results will be saved to delta tables in the lakehouse attached to the notebook.
@@ -85,6 +86,8 @@ def delta_analyzer(
85
86
  If True, collects data about column chunks and columns. If False, skips that step and only returns the other 3 dataframes.
86
87
  skip_cardinality : bool, default=True
87
88
  If True, skips the cardinality calculation for each column. If False, calculates the cardinality for each column.
89
+ schema : str, default=None
90
+ The name of the schema to which the table belongs (for schema-enabled lakehouses). If None, the default schema is used.
88
91
 
89
92
  Returns
90
93
  -------
@@ -96,25 +99,21 @@ def delta_analyzer(
96
99
  if not skip_cardinality:
97
100
  column_stats = True
98
101
 
99
- # display_toggle = notebookutils.common.configs.pandas_display
100
-
101
- # Turn off notebookutils display
102
- # if display_toggle is True:
103
- # notebookutils.common.configs.pandas_display = False
104
-
105
102
  prefix = "SLL_DeltaAnalyzer_"
106
103
  now = datetime.now()
107
104
  (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace=workspace)
108
105
  (lakehouse_name, lakehouse_id) = resolve_lakehouse_name_and_id(
109
106
  lakehouse=lakehouse, workspace=workspace
110
107
  )
111
- path = create_abfss_path(lakehouse_id, workspace_id, table_name)
112
- local_path = _mount(lakehouse=lakehouse, workspace=workspace)
113
- table_path = f"{local_path}/Tables/{table_name}"
114
- delta_table_path = create_abfss_path(lakehouse_id, workspace_id, table_name)
115
108
 
116
- # Set back to original value
117
- # notebookutils.common.configs.pandas_display = display_toggle
109
+ delta_table_path = create_abfss_path(
110
+ lakehouse_id, workspace_id, table_name, schema=schema
111
+ )
112
+ local_path = _mount(lakehouse=lakehouse, workspace=workspace)
113
+ if schema is not None:
114
+ table_path = f"{local_path}/Tables/{schema}/{table_name}"
115
+ else:
116
+ table_path = f"{local_path}/Tables/{table_name}"
118
117
 
119
118
  parquet_file_df_columns = {
120
119
  # "Dataset": "string",
@@ -183,7 +182,7 @@ def delta_analyzer(
183
182
  # min_reader_version = table_details.get("minReaderVersion")
184
183
  # min_writer_version = table_details.get("minWriterVersion")
185
184
 
186
- latest_files = _read_delta_table(path).inputFiles()
185
+ latest_files = _read_delta_table(delta_table_path).inputFiles()
187
186
  # file_paths = [f.split("/")[-1] for f in latest_files]
188
187
  all_parquet_files = get_parquet_file_infos(delta_table_path)
189
188
  common_file_paths = set(
@@ -430,6 +429,7 @@ def get_delta_table_history(
430
429
  table_name: str,
431
430
  lakehouse: Optional[str | UUID] = None,
432
431
  workspace: Optional[str | UUID] = None,
432
+ schema: Optional[str] = None,
433
433
  ) -> pd.DataFrame:
434
434
  """
435
435
  Returns the history of a delta table as a pandas dataframe.
@@ -445,6 +445,8 @@ def get_delta_table_history(
445
445
  The Fabric workspace name or ID used by the lakehouse.
446
446
  Defaults to None which resolves to the workspace of the attached lakehouse
447
447
  or if no lakehouse attached, resolves to the workspace of the notebook.
448
+ schema : str, default=None
449
+ The name of the schema to which the table belongs (for schema-enabled lakehouses). If None, the default schema is used.
448
450
 
449
451
  Returns
450
452
  -------
@@ -461,7 +463,7 @@ def get_delta_table_history(
461
463
  (lakehouse_name, lakehouse_id) = resolve_lakehouse_name_and_id(
462
464
  lakehouse=lakehouse, workspace=workspace
463
465
  )
464
- path = create_abfss_path(lakehouse_id, workspace_id, table_name)
466
+ path = create_abfss_path(lakehouse_id, workspace_id, table_name, schema)
465
467
 
466
468
  from delta import DeltaTable
467
469