semantic-link-labs 0.8.2__tar.gz → 0.8.3__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 (191) hide show
  1. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/PKG-INFO +7 -3
  2. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/README.md +6 -2
  3. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/source/conf.py +1 -1
  4. semantic_link_labs-0.8.3/notebooks/Capacity Migration.ipynb +1 -0
  5. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/pyproject.toml +1 -1
  6. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/semantic_link_labs.egg-info/PKG-INFO +7 -3
  7. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/semantic_link_labs.egg-info/SOURCES.txt +1 -0
  8. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/__init__.py +14 -0
  9. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_capacities.py +89 -11
  10. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_capacity_migration.py +167 -60
  11. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_clear_cache.py +3 -3
  12. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_data_pipelines.py +48 -0
  13. semantic_link_labs-0.8.3/src/sempy_labs/_external_data_shares.py +188 -0
  14. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_generate_semantic_model.py +0 -1
  15. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_git.py +1 -1
  16. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_helper_functions.py +14 -11
  17. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_list_functions.py +6 -3
  18. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_model_bpa.py +5 -5
  19. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_model_bpa_bulk.py +3 -5
  20. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_notebooks.py +4 -3
  21. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_sql.py +2 -2
  22. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_translations.py +14 -14
  23. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_vertipaq.py +121 -101
  24. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_warehouses.py +11 -1
  25. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/admin/__init__.py +2 -0
  26. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/admin/_basic_functions.py +124 -21
  27. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -5
  28. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_generate_shared_expression.py +1 -1
  29. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_guardrails.py +1 -1
  30. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +1 -1
  31. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_create_pqt_file.py +2 -2
  32. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_generate_report.py +10 -14
  33. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_bpa.py +8 -10
  34. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_functions.py +13 -19
  35. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_rebind.py +4 -1
  36. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_reportwrapper.py +3 -3
  37. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/tom/_model.py +109 -34
  38. semantic_link_labs-0.8.2/notebooks/Capacity Migration.ipynb +0 -1
  39. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  40. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  41. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  42. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.github/workflows/build.yaml +0 -0
  43. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.github/workflows/codeql.yaml +0 -0
  44. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.gitignore +0 -0
  45. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.readthedocs.yaml +0 -0
  46. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/.vscode/settings.json +0 -0
  47. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/CODE_OF_CONDUCT.md +0 -0
  48. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/LICENSE +0 -0
  49. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/SECURITY.md +0 -0
  50. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/SUPPORT.md +0 -0
  51. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/Makefile +0 -0
  52. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/make.bat +0 -0
  53. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/requirements.txt +0 -0
  54. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/source/index.rst +0 -0
  55. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/docs/source/modules.rst +0 -0
  56. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/environment.yml +0 -0
  57. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  58. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Migration to Direct Lake.ipynb +0 -0
  59. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Model Optimization.ipynb +0 -0
  60. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Query Scale Out.ipynb +0 -0
  61. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Report Analysis.ipynb +0 -0
  62. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/SQL.ipynb +0 -0
  63. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Semantic Model Refresh.ipynb +0 -0
  64. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/notebooks/Tabular Object Model.ipynb +0 -0
  65. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/setup.cfg +0 -0
  66. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  67. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/semantic_link_labs.egg-info/requires.txt +0 -0
  68. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  69. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_ai.py +0 -0
  70. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  71. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  72. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  73. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  74. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  75. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  76. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  77. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  78. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  79. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  80. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  81. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  82. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  83. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  84. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  85. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  86. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  87. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  88. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  89. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  90. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  91. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  92. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  93. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  94. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  95. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  96. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  97. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  98. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  99. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  100. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  101. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  102. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  103. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  104. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  105. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  106. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  107. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  108. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_connections.py +0 -0
  109. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_dataflows.py +0 -0
  110. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_dax.py +0 -0
  111. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_deployment_pipelines.py +0 -0
  112. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_documentation.py +0 -0
  113. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_environments.py +0 -0
  114. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_eventhouses.py +0 -0
  115. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_eventstreams.py +0 -0
  116. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_icons.py +0 -0
  117. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_kql_databases.py +0 -0
  118. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_kql_querysets.py +0 -0
  119. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  120. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_ml_experiments.py +0 -0
  121. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_ml_models.py +0 -0
  122. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_model_auto_build.py +0 -0
  123. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_model_bpa_rules.py +0 -0
  124. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_model_dependencies.py +0 -0
  125. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_one_lake_integration.py +0 -0
  126. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_query_scale_out.py +0 -0
  127. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_refresh_semantic_model.py +0 -0
  128. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_spark.py +0 -0
  129. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_workspace_identity.py +0 -0
  130. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/_workspaces.py +0 -0
  131. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/admin/_domains.py +0 -0
  132. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/__init__.py +0 -0
  133. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
  134. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_dl_helper.py +0 -0
  135. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
  136. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  137. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  138. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
  139. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
  140. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  141. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/lakehouse/__init__.py +0 -0
  142. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
  143. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
  144. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
  145. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
  146. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/__init__.py +0 -0
  147. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  148. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  149. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  150. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  151. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_migration_validation.py +0 -0
  152. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  153. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  154. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/__init__.py +0 -0
  155. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  156. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  157. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  158. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  159. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  160. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  161. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  162. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  163. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  164. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  165. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  166. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  167. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  168. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  169. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  170. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  171. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  172. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  173. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  174. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  175. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  176. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  177. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  178. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  179. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  180. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  181. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  182. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  183. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  184. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  185. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_helper.py +0 -0
  186. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/report/_report_list_functions.py +0 -0
  187. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/src/sempy_labs/tom/__init__.py +0 -0
  188. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/tests/__init__.py +0 -0
  189. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/tests/test_friendly_case.py +0 -0
  190. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/tests/test_shortcuts.py +0 -0
  191. {semantic_link_labs-0.8.2 → semantic_link_labs-0.8.3}/tests/test_tom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: semantic-link-labs
3
- Version: 0.8.2
3
+ Version: 0.8.3
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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.3&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
 
@@ -47,6 +47,8 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
47
47
  * [Check Direct Lake Guardrails](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.lakehouse.html#sempy_labs.lakehouse.get_lakehouse_tables)
48
48
  * [Refresh](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Semantic%20Model%20Refresh.ipynb), [clear cache](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.clear_cache), [backup](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.backup_semantic_model), [restore](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.restore_semantic_model), [copy backup files](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.copy_semantic_model_backup_file), [move/deploy across workspaces](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.deploy_semantic_model)
49
49
  * [Run DAX queries which impersonate a user](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.evaluate_dax_impersonation)
50
+ * [Manage Query Scale Out](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Query%20Scale%20Out.ipynb).
51
+ * [Auto-generate descriptions for any/all measures in bulk](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.TOMWrapper.generate_measure_descriptions)
50
52
  * Reports
51
53
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
52
54
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -55,8 +57,9 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
55
57
  * [Rebind reports](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.report_rebind)
56
58
  * Capacities
57
59
  * [Migrating a Power BI Premium capacity (P sku) to a Fabric capacity (F sku)](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Capacity%20Migration.ipynb)
60
+ * [Create](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.create_fabric_capacity)/[update](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.update_fabric_capacity)/[suspend](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.suspend_fabric_capacity)/[resume](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.resume_fabric_capacity) Fabric capacities.
58
61
  * APIs
59
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/azure/?view=rest-power-bi-embedded-2021-01-01) APIs
62
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
60
63
 
61
64
 
62
65
  ### Check out the [helper notebooks](https://github.com/microsoft/semantic-link-labs/tree/main/notebooks) for getting started!
@@ -103,6 +106,7 @@ An even better way to ensure the semantic-link-labs library is available in your
103
106
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
104
107
 
105
108
  ## Version History
109
+ * [0.8.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.3) (October 14, 2024)
106
110
  * [0.8.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.2) (October 2, 2024)
107
111
  * [0.8.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.1) (October 2, 2024)
108
112
  * [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 25, 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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.3&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
 
@@ -21,6 +21,8 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
21
21
  * [Check Direct Lake Guardrails](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.lakehouse.html#sempy_labs.lakehouse.get_lakehouse_tables)
22
22
  * [Refresh](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Semantic%20Model%20Refresh.ipynb), [clear cache](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.clear_cache), [backup](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.backup_semantic_model), [restore](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.restore_semantic_model), [copy backup files](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.copy_semantic_model_backup_file), [move/deploy across workspaces](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.deploy_semantic_model)
23
23
  * [Run DAX queries which impersonate a user](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.evaluate_dax_impersonation)
24
+ * [Manage Query Scale Out](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Query%20Scale%20Out.ipynb).
25
+ * [Auto-generate descriptions for any/all measures in bulk](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.TOMWrapper.generate_measure_descriptions)
24
26
  * Reports
25
27
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
26
28
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -29,8 +31,9 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
29
31
  * [Rebind reports](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.report_rebind)
30
32
  * Capacities
31
33
  * [Migrating a Power BI Premium capacity (P sku) to a Fabric capacity (F sku)](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Capacity%20Migration.ipynb)
34
+ * [Create](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.create_fabric_capacity)/[update](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.update_fabric_capacity)/[suspend](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.suspend_fabric_capacity)/[resume](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.resume_fabric_capacity) Fabric capacities.
32
35
  * APIs
33
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/azure/?view=rest-power-bi-embedded-2021-01-01) APIs
36
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
34
37
 
35
38
 
36
39
  ### Check out the [helper notebooks](https://github.com/microsoft/semantic-link-labs/tree/main/notebooks) for getting started!
@@ -77,6 +80,7 @@ An even better way to ensure the semantic-link-labs library is available in your
77
80
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
78
81
 
79
82
  ## Version History
83
+ * [0.8.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.3) (October 14, 2024)
80
84
  * [0.8.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.2) (October 2, 2024)
81
85
  * [0.8.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.1) (October 2, 2024)
82
86
  * [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 25, 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.2'
16
+ release = '0.8.3'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -0,0 +1 @@
1
+ {"cells":[{"cell_type":"markdown","id":"5c27dfd1-4fe0-4a97-92e6-ddf78889aa93","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Install the latest .whl package\n","\n","Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."]},{"cell_type":"code","execution_count":null,"id":"d5cae9db-cef9-48a8-a351-9c5fcc99645c","metadata":{"jupyter":{"outputs_hidden":true,"source_hidden":false},"nteract":{"transient":{"deleting":false}}},"outputs":[],"source":["%pip install semantic-link-labs"]},{"cell_type":"markdown","id":"2856d26d","metadata":{},"source":["### Requirements\n","* Must have an Azure Subscription\n","* Must [register an App](https://ms.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)\n"," * Permissions: Will need the Contributor role at the scope where the resources will be created, which is often the subscription level\n","* Azure Key Vault\n"," * [Set up](https://learn.microsoft.com/azure/key-vault/secrets/quick-create-portal) within the Azure Subscription\n"," * Save secrets for the Tenant ID, Client ID (Application ID), Client Secret\n"," * Permissions: Ensure the user who will be executing the notebooks has “Key Vault Secrets User”\n","* Fabric Permissions\n"," * User should be a tenant admin. This ensures they have the necessary authority to execute and manage the notebooks without encountering permission issues.\n","\n","### Result\n","* F skus are created for each (specified) capacity\n"," * Within the same region as the P SKU\n"," * Equivalent SKU size as the P SKU\n"," * Same admins as listed on the P SKU\n"," * All workspaces are migrated to the corresponding new capacity\n"," * Capacity settings from the P SKU are transferred to the F SKU\n"," * Capacity settings\n"," * Notification settings\n"," * Access settings\n"," * Disaster recovery settings\n"," * Spark settings\n"," * Delegated tenant settings\n","* The names of the newly created F SKU capacities will be an alphanumeric lowercase version of the P SKU capacity name, suffixed with 'fsku'. As an example: \"My capacity_3!\" -> \"mycapacity3fsku\"."]},{"cell_type":"markdown","id":"b195eae8","metadata":{},"source":["### Import the library and set the initial parameters"]},{"cell_type":"code","execution_count":null,"id":"1344e286","metadata":{},"outputs":[],"source":["import sempy_labs as labs\n","import sempy_labs.admin as admin\n","\n","azure_subscription_id = '' # Enter your Azure subscription ID\n","key_vault_uri = '' # Enter your Azure Key Vault URI\n","key_vault_tenant_id = '' # Enter the name of the Azure Key Vault secret which stores your Tenant ID\n","key_vault_client_id = '' # Enter the name of the Azure Key Vault secret which stores your Client ID (Application ID)\n","key_vault_client_secret = '' # Enter the name of the Azure Key Vault secret which stores your Client Secret\n","resource_group = '' # Enter the name of the resource group (to be used to create the new F skus)"]},{"cell_type":"markdown","id":"5a3fe6e8-b8aa-4447-812b-7931831e07fe","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Migrate a single P SKU -> F SKU\n","Set the 'capacities' parameter to the single P SKU."]},{"cell_type":"code","execution_count":null,"id":"3655dd88","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = 'CapacityA',\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"175a59b8","metadata":{},"source":["### Migrate a list of P SKUs to F SKUs\n","Set the 'capacities' parameter to a list of P SKUs."]},{"cell_type":"code","execution_count":null,"id":"3a7a80ec","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"30438799","metadata":{},"source":["### Migrate all P SKUs to F SKUs\n","Set the 'capacities' parameter to None."]},{"cell_type":"code","execution_count":null,"id":"315c2dc7","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = None,\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"1d8e73b2","metadata":{},"source":["### Migrate a list of P SKUs to F SKUs; associate each capacity with a specific resource group\n","This process ensures that each F SKU is created within the resource group specified in the resource_group_mapping dictionary."]},{"cell_type":"code","execution_count":null,"id":"2854bf8a","metadata":{},"outputs":[],"source":["resource_group_mapping = {\n"," \"CapacityA\": \"ResourceGroupA\",\n"," \"CapacityB\": \"ResourceGroupA\",\n"," \"CapacityC\": \"ResourceGroupB\",\n","}\n","\n","labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group_mapping,\n"," capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"c3f497c8","metadata":{},"source":["### Migrate a single source capacity to a target capacity (target capacity already created)"]},{"cell_type":"code","execution_count":null,"id":"a4f0b5a2","metadata":{},"outputs":[],"source":["source_capacity = '' # Enter the Source capacity name\n","target_capacity = '' # Enter the Target capacity name (already exists) \n","\n","admin.assign_workspaces_to_capacity(\n"," source_capacity=source_capacity,\n"," target_capacity=target_capacity,\n"," workspace=None,\n",")\n","\n","# Optionally migrate settings\n","\"\"\"\n","labs.migrate_capacity_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_access_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_delegated_tenant_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_disaster_recovery_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_notification_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_spark_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","\"\"\""]},{"cell_type":"markdown","id":"e0db744b","metadata":{},"source":["### Migrate a list of source capacities to target capacities (target capacity already created)"]},{"cell_type":"code","execution_count":null,"id":"0e04d519","metadata":{},"outputs":[],"source":["capacity_mapping = {\n"," \"capacitya\": \"capacityanew\", # Format is \"Source SKU\": \"Target SKU\"\n"," \"capacityb\": \"capacitybnew\",\n"," \"capacityc\": \"capacitycnew\",\n","}\n","\n","capacities = list(capacity_mapping.keys())\n","\n","for capacity in capacities:\n"," admin.assign_workspaces_to_capacity(\n"," source_capacity=capacity,\n"," target_capacity=capacity_mapping.get(capacity),\n"," workspace=None,\n"," )\n"," # Optionally migrate settings\n"," \"\"\"\n"," labs.migrate_capacity_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_access_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_delegated_tenant_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_disaster_recovery_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_notification_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_spark_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," \"\"\"\n"]},{"cell_type":"markdown","id":"67787c3a","metadata":{},"source":["### Migrate a Fabric Trial Capacity (FT1) to a Fabric Capacity (F SKU)"]},{"cell_type":"code","execution_count":null,"id":"4efb55b2","metadata":{},"outputs":[],"source":["labs.migrate_fabric_trial_capacity(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," source_capacity = '', # The name of the Trial capacity.\n"," target_capacity = '', # The name of Fabric capacity (if it does not exist it will be created).\n"," target_capacity_sku = \"F64\", # Defaults to F64 but can specify the required SKU.\n"," target_capacity_region = None, # Setting this not None will create the Fabric capacity in the same region as the Trial capacity.\n"," target_capacity_admin_members = None, # Setting this to None will use the same admin members as the Trial capacity.\n",")"]}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"display_name":"Synapse PySpark","language":"Python","name":"synapse_pyspark"},"language_info":{"name":"python"},"microsoft":{"language":"python"},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default"},"synapse_widget":{"state":{},"version":"0.1"},"widgets":{}},"nbformat":4,"nbformat_minor":5}
@@ -7,7 +7,7 @@ name="semantic-link-labs"
7
7
  authors = [
8
8
  { name = "Microsoft Corporation" },
9
9
  ]
10
- version="0.8.2"
10
+ version="0.8.3"
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.2
3
+ Version: 0.8.3
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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.3&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
 
@@ -47,6 +47,8 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
47
47
  * [Check Direct Lake Guardrails](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.lakehouse.html#sempy_labs.lakehouse.get_lakehouse_tables)
48
48
  * [Refresh](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Semantic%20Model%20Refresh.ipynb), [clear cache](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.clear_cache), [backup](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.backup_semantic_model), [restore](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.restore_semantic_model), [copy backup files](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.copy_semantic_model_backup_file), [move/deploy across workspaces](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.deploy_semantic_model)
49
49
  * [Run DAX queries which impersonate a user](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.evaluate_dax_impersonation)
50
+ * [Manage Query Scale Out](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Query%20Scale%20Out.ipynb).
51
+ * [Auto-generate descriptions for any/all measures in bulk](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.TOMWrapper.generate_measure_descriptions)
50
52
  * Reports
51
53
  * [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
52
54
  * [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
@@ -55,8 +57,9 @@ Semantic Link Labs is a Python library designed for use in [Microsoft Fabric not
55
57
  * [Rebind reports](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.report_rebind)
56
58
  * Capacities
57
59
  * [Migrating a Power BI Premium capacity (P sku) to a Fabric capacity (F sku)](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Capacity%20Migration.ipynb)
60
+ * [Create](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.create_fabric_capacity)/[update](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.update_fabric_capacity)/[suspend](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.suspend_fabric_capacity)/[resume](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.resume_fabric_capacity) Fabric capacities.
58
61
  * APIs
59
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/azure/?view=rest-power-bi-embedded-2021-01-01) APIs
62
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
60
63
 
61
64
 
62
65
  ### Check out the [helper notebooks](https://github.com/microsoft/semantic-link-labs/tree/main/notebooks) for getting started!
@@ -103,6 +106,7 @@ An even better way to ensure the semantic-link-labs library is available in your
103
106
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
104
107
 
105
108
  ## Version History
109
+ * [0.8.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.3) (October 14, 2024)
106
110
  * [0.8.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.2) (October 2, 2024)
107
111
  * [0.8.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.1) (October 2, 2024)
108
112
  * [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 25, 2024)
@@ -47,6 +47,7 @@ src/sempy_labs/_documentation.py
47
47
  src/sempy_labs/_environments.py
48
48
  src/sempy_labs/_eventhouses.py
49
49
  src/sempy_labs/_eventstreams.py
50
+ src/sempy_labs/_external_data_shares.py
50
51
  src/sempy_labs/_generate_semantic_model.py
51
52
  src/sempy_labs/_git.py
52
53
  src/sempy_labs/_helper_functions.py
@@ -1,3 +1,8 @@
1
+ from sempy_labs._external_data_shares import (
2
+ list_external_data_shares_in_item,
3
+ create_external_data_share,
4
+ revoke_external_data_share,
5
+ )
1
6
  from sempy_labs._ml_models import (
2
7
  list_ml_models,
3
8
  create_ml_model,
@@ -17,6 +22,7 @@ from sempy_labs._data_pipelines import (
17
22
  list_data_pipelines,
18
23
  create_data_pipeline,
19
24
  delete_data_pipeline,
25
+ get_data_pipeline_definition,
20
26
  )
21
27
  from sempy_labs._eventhouses import (
22
28
  create_eventhouse,
@@ -61,6 +67,7 @@ from sempy_labs._capacity_migration import (
61
67
  migrate_delegated_tenant_settings,
62
68
  migrate_capacity_settings,
63
69
  migrate_disaster_recovery_settings,
70
+ migrate_fabric_trial_capacity,
64
71
  )
65
72
  from sempy_labs._capacities import (
66
73
  create_fabric_capacity,
@@ -71,6 +78,7 @@ from sempy_labs._capacities import (
71
78
  check_fabric_capacity_name_availablility,
72
79
  delete_embedded_capacity,
73
80
  delete_premium_capacity,
81
+ create_resource_group,
74
82
  )
75
83
  from sempy_labs._spark import (
76
84
  get_spark_settings,
@@ -359,4 +367,10 @@ __all__ = [
359
367
  "delete_ml_experiment",
360
368
  "list_sql_endpoints",
361
369
  "list_datamarts",
370
+ "get_data_pipeline_definition",
371
+ "list_external_data_shares_in_item",
372
+ "create_external_data_share",
373
+ "revoke_external_data_share",
374
+ "migrate_fabric_trial_capacity",
375
+ "create_resource_group",
362
376
  ]
@@ -4,7 +4,7 @@ from sempy._utils._log import log
4
4
  import sempy_labs._icons as icons
5
5
  from sempy.fabric.exceptions import FabricHTTPException
6
6
  import requests
7
- from sempy_labs._helper_functions import get_azure_token_credentials
7
+ from sempy_labs._helper_functions import _get_azure_token_credentials
8
8
  import pandas as pd
9
9
 
10
10
 
@@ -65,8 +65,6 @@ def create_fabric_capacity(
65
65
 
66
66
  from azure.mgmt.resource import ResourceManagementClient
67
67
 
68
- capacity_suffix = "fsku"
69
-
70
68
  if isinstance(admin_members, str):
71
69
  admin_members = [admin_members]
72
70
 
@@ -143,7 +141,7 @@ def create_fabric_capacity(
143
141
  f"{icons.red_dot} Invalid region. Valid options: {valid_regions}."
144
142
  )
145
143
 
146
- azure_token, credential, headers = get_azure_token_credentials(
144
+ azure_token, credential, headers = _get_azure_token_credentials(
147
145
  key_vault_uri=key_vault_uri,
148
146
  key_vault_tenant_id=key_vault_tenant_id,
149
147
  key_vault_client_id=key_vault_client_id,
@@ -274,7 +272,7 @@ def suspend_fabric_capacity(
274
272
  """
275
273
  # https://learn.microsoft.com/en-us/rest/api/microsoftfabric/fabric-capacities/suspend?view=rest-microsoftfabric-2023-11-01&tabs=HTTP
276
274
 
277
- azure_token, credential, headers = get_azure_token_credentials(
275
+ azure_token, credential, headers = _get_azure_token_credentials(
278
276
  key_vault_uri=key_vault_uri,
279
277
  key_vault_tenant_id=key_vault_tenant_id,
280
278
  key_vault_client_id=key_vault_client_id,
@@ -323,7 +321,7 @@ def resume_fabric_capacity(
323
321
 
324
322
  # https://learn.microsoft.com/en-us/rest/api/microsoftfabric/fabric-capacities/resume?view=rest-microsoftfabric-2023-11-01&tabs=HTTP
325
323
 
326
- azure_token, credential, headers = get_azure_token_credentials(
324
+ azure_token, credential, headers = _get_azure_token_credentials(
327
325
  key_vault_uri=key_vault_uri,
328
326
  key_vault_tenant_id=key_vault_tenant_id,
329
327
  key_vault_client_id=key_vault_client_id,
@@ -372,7 +370,7 @@ def delete_embedded_capacity(
372
370
 
373
371
  # https://learn.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/delete?view=rest-power-bi-embedded-2021-01-01&tabs=HTTP
374
372
 
375
- azure_token, credential, headers = get_azure_token_credentials(
373
+ azure_token, credential, headers = _get_azure_token_credentials(
376
374
  key_vault_uri=key_vault_uri,
377
375
  key_vault_tenant_id=key_vault_tenant_id,
378
376
  key_vault_client_id=key_vault_client_id,
@@ -449,7 +447,7 @@ def delete_fabric_capacity(
449
447
 
450
448
  # https://learn.microsoft.com/en-us/rest/api/microsoftfabric/fabric-capacities/delete?view=rest-microsoftfabric-2023-11-01&tabs=HTTP
451
449
 
452
- azure_token, credential, headers = get_azure_token_credentials(
450
+ azure_token, credential, headers = _get_azure_token_credentials(
453
451
  key_vault_uri=key_vault_uri,
454
452
  key_vault_tenant_id=key_vault_tenant_id,
455
453
  key_vault_client_id=key_vault_client_id,
@@ -503,7 +501,6 @@ def update_fabric_capacity(
503
501
  The email address(es) of the admin(s) of the Fabric capacity.
504
502
  tags : dict, default=None
505
503
  Tag(s) to add to the capacity. Example: {'tagName': 'tagValue'}.
506
-
507
504
  """
508
505
 
509
506
  # https://learn.microsoft.com/en-us/rest/api/microsoftfabric/fabric-capacities/update?view=rest-microsoftfabric-2023-11-01&tabs=HTTP
@@ -515,7 +512,7 @@ def update_fabric_capacity(
515
512
  f"{icons.red_dot} If specified, the 'tags' parameter must be a dictionary."
516
513
  )
517
514
 
518
- azure_token, credential, headers = get_azure_token_credentials(
515
+ azure_token, credential, headers = _get_azure_token_credentials(
519
516
  key_vault_uri=key_vault_uri,
520
517
  key_vault_tenant_id=key_vault_tenant_id,
521
518
  key_vault_client_id=key_vault_client_id,
@@ -556,9 +553,34 @@ def check_fabric_capacity_name_availablility(
556
553
  key_vault_client_id: str,
557
554
  key_vault_client_secret: str,
558
555
  ) -> bool:
556
+ """
557
+ This function updates a Fabric capacity's properties.
558
+
559
+ Parameters
560
+ ----------
561
+ capacity_name : str
562
+ Name of the Fabric capacity.
563
+ azure_subscription_id : str
564
+ The Azure subscription ID.
565
+ region : str
566
+ The region name.
567
+ key_vault_uri : str
568
+ The name of the `Azure key vault <https://azure.microsoft.com/products/key-vault>`_ URI. Example: "https://<Key Vault Name>.vault.azure.net/"
569
+ key_vault_tenant_id : str
570
+ The name of the Azure key vault secret storing the Tenant ID.
571
+ key_vault_client_id : str
572
+ The name of the Azure key vault secret storing the Client ID.
573
+ key_vault_client_secret : str
574
+ The name of the Azure key vault secret storing the Client Secret.
575
+
576
+ Returns
577
+ -------
578
+ bool
579
+ An indication as to whether the Fabric capacity name is available or not.
580
+ """
559
581
  # https://learn.microsoft.com/en-us/rest/api/microsoftfabric/fabric-capacities/check-name-availability?view=rest-microsoftfabric-2023-11-01&tabs=HTTP
560
582
 
561
- azure_token, credential, headers = get_azure_token_credentials(
583
+ azure_token, credential, headers = _get_azure_token_credentials(
562
584
  key_vault_uri=key_vault_uri,
563
585
  key_vault_tenant_id=key_vault_tenant_id,
564
586
  key_vault_client_id=key_vault_client_id,
@@ -575,3 +597,59 @@ def check_fabric_capacity_name_availablility(
575
597
  raise FabricHTTPException(response)
576
598
 
577
599
  return bool(response.json().get("nameAvailable"))
600
+
601
+
602
+ def create_resource_group(
603
+ azure_subscription_id: str,
604
+ key_vault_uri: str,
605
+ key_vault_tenant_id: str,
606
+ key_vault_client_id: str,
607
+ key_vault_client_secret: str,
608
+ resource_group: str,
609
+ region: str,
610
+ ):
611
+ """
612
+ This function creates a resource group in a region within an Azure subscription.
613
+
614
+ Parameters
615
+ ----------
616
+ azure_subscription_id : str
617
+ The Azure subscription ID.
618
+ key_vault_uri : str
619
+ The name of the `Azure key vault <https://azure.microsoft.com/products/key-vault>`_ URI. Example: "https://<Key Vault Name>.vault.azure.net/"
620
+ key_vault_tenant_id : str
621
+ The name of the Azure key vault secret storing the Tenant ID.
622
+ key_vault_client_id : str
623
+ The name of the Azure key vault secret storing the Client ID.
624
+ key_vault_client_secret : str
625
+ The name of the Azure key vault secret storing the Client Secret.
626
+ resource_group : str
627
+ The name of the Azure resource group to be created.
628
+ region : str
629
+ The name of the region in which the resource group will be created.
630
+ """
631
+
632
+ from azure.mgmt.resource import ResourceManagementClient
633
+
634
+ azure_token, credential, headers = get_azure_token_credentials(
635
+ key_vault_uri=key_vault_uri,
636
+ key_vault_tenant_id=key_vault_tenant_id,
637
+ key_vault_client_id=key_vault_client_id,
638
+ key_vault_client_secret=key_vault_client_secret,
639
+ )
640
+
641
+ resource_client = ResourceManagementClient(credential, azure_subscription_id)
642
+
643
+ if resource_client.resource_groups.check_existence(resource_group):
644
+ print(
645
+ f"{icons.info} The '{resource_group}' resource group already exists in the '{region}' region within the '{azure_subscription_id}' Azure subscription."
646
+ )
647
+ return
648
+
649
+ resource_client.resource_groups.create_or_update(
650
+ resource_group, {"location": region}
651
+ )
652
+
653
+ print(
654
+ f"{icons.green_dot} The '{resource_group}' resource group has been created within the '{region}' region within the '{azure_subscription_id}' Azure subscription."
655
+ )