semantic-link-labs 0.12.0__tar.gz → 0.12.2__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 (254) hide show
  1. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/PKG-INFO +4 -2
  2. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/README.md +3 -1
  3. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/source/conf.py +1 -1
  4. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Migration to Direct Lake.ipynb +1 -1
  5. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/pyproject.toml +1 -1
  6. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/semantic_link_labs.egg-info/PKG-INFO +4 -2
  7. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/semantic_link_labs.egg-info/SOURCES.txt +2 -0
  8. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/__init__.py +6 -0
  9. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_a_lib_info.py +1 -1
  10. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_authentication.py +7 -3
  11. semantic_link_labs-0.12.2/src/sempy_labs/_data_access_security.py +98 -0
  12. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_data_pipelines.py +23 -9
  13. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_dataflows.py +0 -1
  14. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_deployment_pipelines.py +49 -27
  15. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_eventstreams.py +9 -1
  16. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_helper_functions.py +16 -1
  17. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_job_scheduler.py +63 -33
  18. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_labels.py +4 -6
  19. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_model_dependencies.py +5 -2
  20. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_warehouses.py +55 -0
  21. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/__init__.py +6 -0
  22. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_capacities.py +10 -10
  23. semantic_link_labs-0.12.2/src/sempy_labs/admin/_sharing_links.py +110 -0
  24. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/graph/__init__.py +12 -0
  25. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/graph/_groups.py +157 -2
  26. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/graph/_users.py +162 -0
  27. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_shortcuts.py +16 -11
  28. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_rebind.py +35 -23
  29. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_reportwrapper.py +53 -6
  30. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/tom/_model.py +22 -9
  31. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  32. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  33. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  34. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.github/workflows/build.yaml +0 -0
  35. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.github/workflows/codeql.yaml +0 -0
  36. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.gitignore +0 -0
  37. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.readthedocs.yaml +0 -0
  38. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/.vscode/settings.json +0 -0
  39. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/CODE_OF_CONDUCT.md +0 -0
  40. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/LICENSE +0 -0
  41. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/SECURITY.md +0 -0
  42. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/SUPPORT.md +0 -0
  43. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/Makefile +0 -0
  44. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/make.bat +0 -0
  45. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/requirements.txt +0 -0
  46. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/source/index.rst +0 -0
  47. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/docs/source/modules.rst +0 -0
  48. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/environment.yml +0 -0
  49. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  50. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Capacity Migration.ipynb +0 -0
  51. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Delta Analyzer.ipynb +0 -0
  52. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Model Optimization.ipynb +0 -0
  53. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Query Scale Out.ipynb +0 -0
  54. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Report Analysis.ipynb +0 -0
  55. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/SQL.ipynb +0 -0
  56. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Semantic Model Management.ipynb +0 -0
  57. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Semantic Model Refresh.ipynb +0 -0
  58. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Service Principal.ipynb +0 -0
  59. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/notebooks/Tabular Object Model.ipynb +0 -0
  60. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/setup.cfg +0 -0
  61. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  62. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/semantic_link_labs.egg-info/requires.txt +0 -0
  63. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  64. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_ai.py +0 -0
  65. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  66. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  67. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  68. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  69. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  70. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  71. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  72. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  73. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  74. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  75. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  76. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  77. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  78. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  79. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  80. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  81. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  82. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  83. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  84. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  85. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  86. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  87. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  88. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  89. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  90. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  91. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  92. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  93. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  94. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  95. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  96. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  97. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  98. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  99. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  100. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  101. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  102. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  103. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_capacities.py +0 -0
  104. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_capacity_migration.py +0 -0
  105. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_clear_cache.py +0 -0
  106. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_connections.py +0 -0
  107. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_dashboards.py +0 -0
  108. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_dax.py +0 -0
  109. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_daxformatter.py +0 -0
  110. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_delta_analyzer.py +0 -0
  111. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_delta_analyzer_history.py +0 -0
  112. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_dictionary_diffs.py +0 -0
  113. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_documentation.py +0 -0
  114. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_environments.py +0 -0
  115. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_eventhouses.py +0 -0
  116. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_external_data_shares.py +0 -0
  117. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_gateways.py +0 -0
  118. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_generate_semantic_model.py +0 -0
  119. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_git.py +0 -0
  120. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_graphQL.py +0 -0
  121. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_icons.py +0 -0
  122. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_kql_databases.py +0 -0
  123. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_kql_querysets.py +0 -0
  124. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_kusto.py +0 -0
  125. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_list_functions.py +0 -0
  126. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_managed_private_endpoints.py +0 -0
  127. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_mirrored_databases.py +0 -0
  128. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  129. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_ml_experiments.py +0 -0
  130. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_model_auto_build.py +0 -0
  131. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_model_bpa.py +0 -0
  132. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_model_bpa_bulk.py +0 -0
  133. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_model_bpa_rules.py +0 -0
  134. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_mounted_data_factories.py +0 -0
  135. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_notebooks.py +0 -0
  136. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_one_lake_integration.py +0 -0
  137. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_query_scale_out.py +0 -0
  138. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_refresh_semantic_model.py +0 -0
  139. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_semantic_models.py +0 -0
  140. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_spark.py +0 -0
  141. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_sql.py +0 -0
  142. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_sql_endpoints.py +0 -0
  143. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_sqldatabase.py +0 -0
  144. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_tags.py +0 -0
  145. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_translations.py +0 -0
  146. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_user_delegation_key.py +0 -0
  147. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_utils.py +0 -0
  148. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_vertipaq.py +0 -0
  149. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_vpax.py +0 -0
  150. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_workloads.py +0 -0
  151. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_workspace_identity.py +0 -0
  152. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/_workspaces.py +0 -0
  153. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_activities.py +0 -0
  154. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_apps.py +0 -0
  155. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_artifacts.py +0 -0
  156. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_basic_functions.py +0 -0
  157. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_dataflows.py +0 -0
  158. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_datasets.py +0 -0
  159. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_domains.py +0 -0
  160. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_external_data_share.py +0 -0
  161. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_git.py +0 -0
  162. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_items.py +0 -0
  163. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_reports.py +0 -0
  164. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_scanner.py +0 -0
  165. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_shared.py +0 -0
  166. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_tags.py +0 -0
  167. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_tenant.py +0 -0
  168. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_tenant_keys.py +0 -0
  169. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_users.py +0 -0
  170. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/admin/_workspaces.py +0 -0
  171. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/__init__.py +0 -0
  172. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
  173. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
  174. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_dl_helper.py +0 -0
  175. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
  176. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
  177. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  178. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_guardrails.py +0 -0
  179. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  180. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
  181. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
  182. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
  183. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  184. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/dotnet_lib/dotnet.runtime.config.json +0 -0
  185. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/graph/_teams.py +0 -0
  186. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/__init__.py +0 -0
  187. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_blobs.py +0 -0
  188. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
  189. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
  190. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_helper.py +0 -0
  191. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
  192. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_livy_sessions.py +0 -0
  193. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/lakehouse/_materialized_lake_views.py +0 -0
  194. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/__init__.py +0 -0
  195. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
  196. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_direct_lake_to_import.py +0 -0
  197. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  198. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  199. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  200. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  201. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_migration_validation.py +0 -0
  202. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  203. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/mirrored_azure_databricks_catalog/__init__.py +0 -0
  204. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/mirrored_azure_databricks_catalog/_discover.py +0 -0
  205. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/mirrored_azure_databricks_catalog/_refresh_catalog_metadata.py +0 -0
  206. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/ml_model/__init__.py +0 -0
  207. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/ml_model/_functions.py +0 -0
  208. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  209. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/__init__.py +0 -0
  210. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  211. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  212. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  213. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  214. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  215. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  216. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  217. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  218. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  219. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  220. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  221. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  222. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  223. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  224. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  225. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  226. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  227. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  228. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  229. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  230. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  231. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  232. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  233. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  234. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  235. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  236. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  237. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  238. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  239. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_download_report.py +0 -0
  240. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_export_report.py +0 -0
  241. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_generate_report.py +0 -0
  242. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_paginated.py +0 -0
  243. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_bpa.py +0 -0
  244. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  245. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_functions.py +0 -0
  246. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_helper.py +0 -0
  247. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_report_list_functions.py +0 -0
  248. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/report/_save_report.py +0 -0
  249. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/theme/__init__.py +0 -0
  250. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/theme/_org_themes.py +0 -0
  251. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/tom/__init__.py +0 -0
  252. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/variable_library/__init__.py +0 -0
  253. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/src/sempy_labs/variable_library/_functions.py +0 -0
  254. {semantic_link_labs-0.12.0 → semantic_link_labs-0.12.2}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: semantic-link-labs
3
- Version: 0.12.0
3
+ Version: 0.12.2
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -26,7 +26,7 @@ Dynamic: license-file
26
26
  # Semantic Link Labs
27
27
 
28
28
  [![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.12.0&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
30
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
31
31
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
32
32
 
@@ -154,6 +154,8 @@ An even better way to ensure the semantic-link-labs library is available in your
154
154
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
155
155
 
156
156
  ## Version History
157
+ * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
158
+ * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
157
159
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
158
160
  * [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
159
161
  * [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
@@ -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.12.0&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.2&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
 
@@ -129,6 +129,8 @@ An even better way to ensure the semantic-link-labs library is available in your
129
129
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
130
130
 
131
131
  ## Version History
132
+ * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
133
+ * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
132
134
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
133
135
  * [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
134
136
  * [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
@@ -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.12.0'
16
+ release = '0.12.2'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -250,7 +250,7 @@
250
250
  " dataset=dataset_name,\n",
251
251
  " dataset_workspace=workspace_name,\n",
252
252
  " new_dataset=new_dataset_name,\n",
253
- " new_dataset_workpace=new_dataset_workspace_name,\n",
253
+ " new_dataset_workspace=new_dataset_workspace_name,\n",
254
254
  " report_workspace=None\n",
255
255
  ")"
256
256
  ]
@@ -7,7 +7,7 @@ name="semantic-link-labs"
7
7
  authors = [
8
8
  { name = "Microsoft Corporation" },
9
9
  ]
10
- version="0.12.0"
10
+ version="0.12.2"
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.4
2
2
  Name: semantic-link-labs
3
- Version: 0.12.0
3
+ Version: 0.12.2
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -26,7 +26,7 @@ Dynamic: license-file
26
26
  # Semantic Link Labs
27
27
 
28
28
  [![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.12.0&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
30
30
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
31
31
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
32
32
 
@@ -154,6 +154,8 @@ An even better way to ensure the semantic-link-labs library is available in your
154
154
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
155
155
 
156
156
  ## Version History
157
+ * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
158
+ * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
157
159
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
158
160
  * [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
159
161
  * [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
@@ -45,6 +45,7 @@ src/sempy_labs/_capacity_migration.py
45
45
  src/sempy_labs/_clear_cache.py
46
46
  src/sempy_labs/_connections.py
47
47
  src/sempy_labs/_dashboards.py
48
+ src/sempy_labs/_data_access_security.py
48
49
  src/sempy_labs/_data_pipelines.py
49
50
  src/sempy_labs/_dataflows.py
50
51
  src/sempy_labs/_dax.py
@@ -152,6 +153,7 @@ src/sempy_labs/admin/_items.py
152
153
  src/sempy_labs/admin/_reports.py
153
154
  src/sempy_labs/admin/_scanner.py
154
155
  src/sempy_labs/admin/_shared.py
156
+ src/sempy_labs/admin/_sharing_links.py
155
157
  src/sempy_labs/admin/_tags.py
156
158
  src/sempy_labs/admin/_tenant.py
157
159
  src/sempy_labs/admin/_tenant_keys.py
@@ -100,6 +100,7 @@ from ._warehouses import (
100
100
  delete_warehouse,
101
101
  get_warehouse_columns,
102
102
  get_warehouse_tables,
103
+ get_warehouse_connection_string,
103
104
  )
104
105
  from ._data_pipelines import (
105
106
  list_data_pipelines,
@@ -347,6 +348,9 @@ from ._vertipaq import (
347
348
  from ._user_delegation_key import (
348
349
  get_user_delegation_key,
349
350
  )
351
+ from ._data_access_security import (
352
+ list_data_access_roles,
353
+ )
350
354
 
351
355
  __all__ = [
352
356
  "resolve_warehouse_id",
@@ -599,4 +603,6 @@ __all__ = [
599
603
  "get_item_definition",
600
604
  "get_workspace_network_communication_policy",
601
605
  "set_workspace_network_communication_policy",
606
+ "get_warehouse_connection_string",
607
+ "list_data_access_roles",
602
608
  ]
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.0"
2
+ lib_version = "0.12.2"
@@ -19,7 +19,7 @@ class ServicePrincipalTokenProvider(TokenCredential):
19
19
  "azure": "https://management.azure.com/.default",
20
20
  "graph": "https://graph.microsoft.com/.default",
21
21
  "asazure": "https://{region}.asazure.windows.net/.default",
22
- "keyvault": "https://vault.azure.net/.default"
22
+ "keyvault": "https://vault.azure.net/.default",
23
23
  }
24
24
 
25
25
  def __init__(self, credential: ClientSecretCredential):
@@ -152,10 +152,14 @@ class ServicePrincipalTokenProvider(TokenCredential):
152
152
  scopes = ("pbi",)
153
153
 
154
154
  region = kwargs.pop("region", None)
155
- scopes = [self._get_fully_qualified_scope(scope, region=region) for scope in scopes]
155
+ scopes = [
156
+ self._get_fully_qualified_scope(scope, region=region) for scope in scopes
157
+ ]
156
158
  return self.credential.get_token(*scopes, **kwargs)
157
159
 
158
- def _get_fully_qualified_scope(self, scope: str, region: Optional[str] = None) -> str:
160
+ def _get_fully_qualified_scope(
161
+ self, scope: str, region: Optional[str] = None
162
+ ) -> str:
159
163
  """
160
164
  Resolve to fully qualified scope if Fabric short-handed scope is given.
161
165
  Otherwise, return the original scope.
@@ -0,0 +1,98 @@
1
+ from typing import Optional
2
+ from uuid import UUID
3
+ import pandas as pd
4
+ from sempy_labs._helper_functions import (
5
+ _create_dataframe,
6
+ _base_api,
7
+ resolve_workspace_id,
8
+ resolve_item_id,
9
+ )
10
+ from sempy._utils._log import log
11
+
12
+
13
+ @log
14
+ def list_data_access_roles(
15
+ item: str | UUID, type: str, workspace: Optional[str | UUID] = None
16
+ ) -> pd.DataFrame:
17
+ """
18
+ Returns a list of OneLake roles.
19
+
20
+ This is a wrapper function for the following API: `OneLake Data Access Security - List Data Access Roles <https://learn.microsoft.com/rest/api/fabric/core/onelake-data-access-security/list-data-access-roles>`_.
21
+
22
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
23
+
24
+ Parameters
25
+ ----------
26
+ item : str | uuid.UUID
27
+ The name or ID of the item.
28
+ type : str
29
+ The type of the item.
30
+ workspace : str | uuid.UUID, default=None
31
+ The Fabric workspace name or ID.
32
+ Defaults to None which resolves to the workspace of the attached lakehouse
33
+ or if no lakehouse attached, resolves to the workspace of the notebook.
34
+
35
+ Returns
36
+ -------
37
+ pandas.DataFrame
38
+ A pandas dataframe showing a list of OneLake roles.
39
+ """
40
+
41
+ columns = {
42
+ "Role Name": "string",
43
+ "Effect": "string",
44
+ "Attribute Name": "string",
45
+ "Attribute Values": "string",
46
+ "Item Access": "string",
47
+ "Source Path": "string",
48
+ }
49
+
50
+ df = _create_dataframe(columns=columns)
51
+
52
+ workspace_id = resolve_workspace_id(workspace)
53
+ item_id = resolve_item_id(item=item, type=type, workspace=workspace_id)
54
+
55
+ responses = _base_api(
56
+ request=f"/v1/workspaces/{workspace_id}/items/{item_id}/dataAccessRoles",
57
+ uses_pagination=True,
58
+ client="fabric_sp",
59
+ )
60
+
61
+ rows = []
62
+ for r in responses:
63
+ for role in r.get("value", []):
64
+ name = role.get("name")
65
+
66
+ # Loop through members first (since they are crucial)
67
+ members = role.get("members", {}).get("fabricItemMembers", [])
68
+ if not members:
69
+ members = [{}] # if no members exist, still create at least one row
70
+
71
+ for member in members:
72
+ item_access = member.get("itemAccess", [])
73
+ source_path = member.get("sourcePath")
74
+
75
+ # Loop through decision rules
76
+ for rule in role.get("decisionRules", []):
77
+ effect = rule.get("effect")
78
+
79
+ # Loop through permissions
80
+ for perm in rule.get("permission", []):
81
+ attr_name = perm.get("attributeName")
82
+ attr_values = perm.get("attributeValueIncludedIn", [])
83
+
84
+ rows.append(
85
+ {
86
+ "Role Name": name,
87
+ "Effect": effect,
88
+ "Attribute Name": attr_name,
89
+ "Attribute Values": ", ".join(attr_values),
90
+ "Item Access": ", ".join(item_access),
91
+ "Source Path": source_path,
92
+ }
93
+ )
94
+
95
+ if rows:
96
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
97
+
98
+ return df
@@ -2,6 +2,7 @@ import pandas as pd
2
2
  from typing import Optional
3
3
  from sempy_labs._helper_functions import (
4
4
  resolve_workspace_name_and_id,
5
+ resolve_workspace_id,
5
6
  _decode_b64,
6
7
  _base_api,
7
8
  resolve_item_id,
@@ -20,6 +21,8 @@ def list_data_pipelines(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
20
21
 
21
22
  This is a wrapper function for the following API: `Items - List Data Pipelines <https://learn.microsoft.com/rest/api/fabric/datapipeline/items/list-data-pipelines>`_.
22
23
 
24
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
25
+
23
26
  Parameters
24
27
  ----------
25
28
  workspace : str | uuid.UUID, default=None
@@ -40,20 +43,26 @@ def list_data_pipelines(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
40
43
  }
41
44
  df = _create_dataframe(columns=columns)
42
45
 
43
- (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
46
+ workspace_id = resolve_workspace_id(workspace)
44
47
 
45
48
  responses = _base_api(
46
- request=f"/v1/workspaces/{workspace_id}/dataPipelines", uses_pagination=True
49
+ request=f"/v1/workspaces/{workspace_id}/dataPipelines",
50
+ uses_pagination=True,
51
+ client="fabric_sp",
47
52
  )
48
53
 
54
+ rows = []
49
55
  for r in responses:
50
56
  for v in r.get("value", []):
51
- new_data = {
52
- "Data Pipeline Name": v.get("displayName"),
53
- "Data Pipeline ID": v.get("id"),
54
- "Description": v.get("description"),
55
- }
56
- df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
57
+ rows.append(
58
+ {
59
+ "Data Pipeline Name": v.get("displayName"),
60
+ "Data Pipeline ID": v.get("id"),
61
+ "Description": v.get("description"),
62
+ }
63
+ )
64
+ if rows:
65
+ df = pd.DataFrame(rows, columns=columns.keys())
57
66
 
58
67
  return df
59
68
 
@@ -67,6 +76,8 @@ def create_data_pipeline(
67
76
 
68
77
  This is a wrapper function for the following API: `Items - Create Data Pipeline <https://learn.microsoft.com/rest/api/fabric/datapipeline/items/create-data-pipeline>`_.
69
78
 
79
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
80
+
70
81
  Parameters
71
82
  ----------
72
83
  name: str
@@ -91,6 +102,8 @@ def delete_data_pipeline(name: str | UUID, workspace: Optional[str | UUID] = Non
91
102
 
92
103
  This is a wrapper function for the following API: `Items - Delete Data Pipeline <https://learn.microsoft.com/rest/api/fabric/datapipeline/items/delete-data-pipeline>`_.
93
104
 
105
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
106
+
94
107
  Parameters
95
108
  ----------
96
109
  name: str | uuid.UUID
@@ -130,7 +143,7 @@ def get_data_pipeline_definition(
130
143
  A pandas dataframe showing the data pipelines within a workspace.
131
144
  """
132
145
 
133
- (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
146
+ workspace_id = resolve_workspace_id(workspace)
134
147
 
135
148
  item_id = resolve_item_id(item=name, type="DataPipeline", workspace=workspace)
136
149
  result = _base_api(
@@ -138,6 +151,7 @@ def get_data_pipeline_definition(
138
151
  method="post",
139
152
  lro_return_json=True,
140
153
  status_codes=None,
154
+ client="fabric_sp",
141
155
  )
142
156
  df = pd.json_normalize(result["definition"]["parts"])
143
157
 
@@ -333,7 +333,6 @@ def get_dataflow_definition(
333
333
  result = _base_api(
334
334
  request=f"/v1.0/myorg/groups/{workspace_id}/dataflows/{dataflow_id}",
335
335
  client="fabric_sp",
336
- method="get",
337
336
  ).json()
338
337
 
339
338
  return result
@@ -17,6 +17,8 @@ def list_deployment_pipelines() -> pd.DataFrame:
17
17
 
18
18
  This is a wrapper function for the following API: `Deployment Pipelines - List Deployment Pipelines <https://learn.microsoft.com/rest/api/fabric/core/deployment-pipelines/list-deployment-pipelines>`_.
19
19
 
20
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
21
+
20
22
  Returns
21
23
  -------
22
24
  pandas.DataFrame
@@ -34,16 +36,22 @@ def list_deployment_pipelines() -> pd.DataFrame:
34
36
  request="/v1/deploymentPipelines",
35
37
  status_codes=200,
36
38
  uses_pagination=True,
39
+ client="fabric_sp",
37
40
  )
38
41
 
42
+ rows = []
39
43
  for r in responses:
40
44
  for v in r.get("value", []):
41
- new_data = {
42
- "Deployment Pipeline Id": v.get("id"),
43
- "Deployment Pipeline Name": v.get("displayName"),
44
- "Description": v.get("description"),
45
- }
46
- df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
45
+ rows.append(
46
+ {
47
+ "Deployment Pipeline Id": v.get("id"),
48
+ "Deployment Pipeline Name": v.get("displayName"),
49
+ "Description": v.get("description"),
50
+ }
51
+ )
52
+
53
+ if rows:
54
+ df = pd.DataFrame(rows, columns=columns.keys())
47
55
 
48
56
  return df
49
57
 
@@ -55,6 +63,8 @@ def list_deployment_pipeline_stages(deployment_pipeline: str | UUID) -> pd.DataF
55
63
 
56
64
  This is a wrapper function for the following API: `Deployment Pipelines - List Deployment Pipeline Stages <https://learn.microsoft.com/rest/api/fabric/core/deployment-pipelines/list-deployment-pipeline-stages>`_.
57
65
 
66
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
67
+
58
68
  Parameters
59
69
  ----------
60
70
  deployment_pipeline : str | uuid.UUID
@@ -87,22 +97,26 @@ def list_deployment_pipeline_stages(deployment_pipeline: str | UUID) -> pd.DataF
87
97
  request=f"/v1/deploymentPipelines/{deployment_pipeline_id}/stages",
88
98
  status_codes=200,
89
99
  uses_pagination=True,
100
+ client="fabric_sp",
90
101
  )
91
102
 
103
+ rows = []
92
104
  for r in responses:
93
105
  for v in r.get("value", []):
94
- new_data = {
95
- "Deployment Pipeline Stage Id": v.get("id"),
96
- "Deployment Pipeline Stage Name": v.get("displayName"),
97
- "Description": v.get("description"),
98
- "Order": v.get("order"),
99
- "Workspace Id": v.get("workspaceId"),
100
- "Workspace Name": v.get("workspaceName"),
101
- "Public": v.get("isPublic"),
102
- }
103
- df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
104
-
105
- _update_dataframe_datatypes(dataframe=df, column_map=columns)
106
+ rows.append(
107
+ {
108
+ "Deployment Pipeline Stage Id": v.get("id"),
109
+ "Deployment Pipeline Stage Name": v.get("displayName"),
110
+ "Description": v.get("description"),
111
+ "Order": v.get("order"),
112
+ "Workspace Id": v.get("workspaceId"),
113
+ "Workspace Name": v.get("workspaceName"),
114
+ "Public": v.get("isPublic"),
115
+ }
116
+ )
117
+ if rows:
118
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
119
+ _update_dataframe_datatypes(df, columns)
106
120
 
107
121
  return df
108
122
 
@@ -117,6 +131,8 @@ def list_deployment_pipeline_stage_items(
117
131
 
118
132
  This is a wrapper function for the following API: `Deployment Pipelines - List Deployment Pipeline Stage Items <https://learn.microsoft.com/rest/api/fabric/core/deployment-pipelines/list-deployment-pipeline-stage-items>`_.
119
133
 
134
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
135
+
120
136
  Parameters
121
137
  ----------
122
138
  deployment_pipeline : str | uuid.UUID
@@ -170,18 +186,24 @@ def list_deployment_pipeline_stage_items(
170
186
  request=f"/v1/deploymentPipelines/{deployment_pipeline_id}/stages/{stage_id}/items",
171
187
  status_codes=200,
172
188
  uses_pagination=True,
189
+ client="fabric_sp",
173
190
  )
174
191
 
192
+ rows = []
175
193
  for r in responses:
176
194
  for v in r.get("value", []):
177
- new_data = {
178
- "Deployment Pipeline Stage Item Id": v.get("itemId"),
179
- "Deployment Pipeline Stage Item Name": v.get("itemDisplayName"),
180
- "Item Type": v.get("itemType"),
181
- "Source Item Id": v.get("sourceItemId"),
182
- "Target Item Id": v.get("targetItemId"),
183
- "Last Deployment Time": v.get("lastDeploymentTime"),
184
- }
185
- df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
195
+ rows.append(
196
+ {
197
+ "Deployment Pipeline Stage Item Id": v.get("itemId"),
198
+ "Deployment Pipeline Stage Item Name": v.get("itemDisplayName"),
199
+ "Item Type": v.get("itemType"),
200
+ "Source Item Id": v.get("sourceItemId"),
201
+ "Target Item Id": v.get("targetItemId"),
202
+ "Last Deployment Time": v.get("lastDeploymentTime"),
203
+ }
204
+ )
205
+
206
+ if rows:
207
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
186
208
 
187
209
  return df
@@ -19,6 +19,8 @@ def list_eventstreams(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
19
19
 
20
20
  This is a wrapper function for the following API: `Items - List Eventstreams <https://learn.microsoft.com/rest/api/fabric/environment/items/list-eventstreams>`_.
21
21
 
22
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
23
+
22
24
  Parameters
23
25
  ----------
24
26
  workspace : str | uuid.UUID, default=None
@@ -41,7 +43,9 @@ def list_eventstreams(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
41
43
 
42
44
  workspace_id = resolve_workspace_id(workspace)
43
45
  responses = _base_api(
44
- request=f"/v1/workspaces/{workspace_id}/eventstreams", uses_pagination=True
46
+ request=f"/v1/workspaces/{workspace_id}/eventstreams",
47
+ uses_pagination=True,
48
+ client="fabric_sp",
45
49
  )
46
50
 
47
51
  rows = []
@@ -70,6 +74,8 @@ def create_eventstream(
70
74
 
71
75
  This is a wrapper function for the following API: `Items - Create Eventstream <https://learn.microsoft.com/rest/api/fabric/environment/items/create-eventstream>`_.
72
76
 
77
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
78
+
73
79
  Parameters
74
80
  ----------
75
81
  name: str
@@ -96,6 +102,8 @@ def delete_eventstream(
96
102
 
97
103
  This is a wrapper function for the following API: `Items - Delete Eventstream <https://learn.microsoft.com/rest/api/fabric/environment/items/delete-eventstream>`_.
98
104
 
105
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
106
+
99
107
  Parameters
100
108
  ----------
101
109
  eventstream: str | uuid.UUID
@@ -303,6 +303,7 @@ def create_item(
303
303
  payload=payload,
304
304
  status_codes=[201, 202],
305
305
  lro_return_status_code=True,
306
+ client="fabric_sp",
306
307
  )
307
308
  print(
308
309
  f"{icons.green_dot} The '{name}' {item_type} has been successfully created within the '{workspace_name}' workspace."
@@ -407,7 +408,8 @@ def copy_item(
407
408
  # Get the existing source model
408
409
  if type == "Report" and keep_existing_bindings:
409
410
  result = _base_api(
410
- request=f"v1.0/myorg/groups/{target_workspace_id}/reports/{target_item_id}"
411
+ request=f"v1.0/myorg/groups/{target_workspace_id}/reports/{target_item_id}",
412
+ client="fabric_sp",
411
413
  ).json()
412
414
  dataset_id = result.get("datasetId")
413
415
  dataset_workspace_id = result.get("datasetWorkspaceId")
@@ -524,6 +526,7 @@ def get_item_definition(
524
526
  method="post",
525
527
  status_codes=None,
526
528
  lro_return_json=True,
529
+ client="fabric_sp",
527
530
  )
528
531
 
529
532
  if return_dataframe:
@@ -574,6 +577,7 @@ def _get_item_definition(
574
577
  method="post",
575
578
  status_codes=None,
576
579
  lro_return_json=True,
580
+ client="fabric_sp",
577
581
  )
578
582
 
579
583
  if return_dataframe:
@@ -2758,3 +2762,14 @@ def remove_json_value(path: str, payload: dict, json_path: str, verbose: bool =
2758
2762
  print(f"{icons.green_dot} Removed index [{index}] from '{path}'.")
2759
2763
 
2760
2764
  return payload
2765
+
2766
+
2767
+ def _get_url_prefix() -> str:
2768
+
2769
+ client = fabric.PowerBIRestClient()
2770
+ response = client.get("/v1.0/myorg/capacities")
2771
+ if response.status_code != 200:
2772
+ raise FabricHTTPException("Failed to retrieve URL prefix.")
2773
+ context = response.json().get("@odata.context")
2774
+
2775
+ return context.split("/v1.0")[0]