semantic-link-labs 0.12.2__tar.gz → 0.12.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 (256) hide show
  1. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/PKG-INFO +3 -2
  2. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/README.md +2 -1
  3. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/source/conf.py +1 -1
  4. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/pyproject.toml +1 -1
  5. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/semantic_link_labs.egg-info/PKG-INFO +3 -2
  6. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/semantic_link_labs.egg-info/SOURCES.txt +2 -0
  7. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/__init__.py +8 -2
  8. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_a_lib_info.py +1 -1
  9. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_generate_semantic_model.py +2 -2
  10. semantic_link_labs-0.12.3/src/sempy_labs/_get_connection_string.py +84 -0
  11. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_helper_functions.py +1 -0
  12. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_semantic_models.py +118 -0
  13. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_sql_endpoints.py +12 -24
  14. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_warehouses.py +1 -56
  15. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/graph/__init__.py +4 -0
  16. semantic_link_labs-0.12.3/src/sempy_labs/graph/_sensitivity_labels.py +81 -0
  17. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/tom/_model.py +30 -12
  18. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  21. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.github/workflows/build.yaml +0 -0
  22. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.github/workflows/codeql.yaml +0 -0
  23. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.gitignore +0 -0
  24. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.readthedocs.yaml +0 -0
  25. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/.vscode/settings.json +0 -0
  26. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/CODE_OF_CONDUCT.md +0 -0
  27. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/LICENSE +0 -0
  28. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/SECURITY.md +0 -0
  29. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/SUPPORT.md +0 -0
  30. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/Makefile +0 -0
  31. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/make.bat +0 -0
  32. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/requirements.txt +0 -0
  33. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/source/index.rst +0 -0
  34. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/docs/source/modules.rst +0 -0
  35. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/environment.yml +0 -0
  36. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  37. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Capacity Migration.ipynb +0 -0
  38. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Delta Analyzer.ipynb +0 -0
  39. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Migration to Direct Lake.ipynb +0 -0
  40. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Model Optimization.ipynb +0 -0
  41. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Query Scale Out.ipynb +0 -0
  42. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Report Analysis.ipynb +0 -0
  43. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/SQL.ipynb +0 -0
  44. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Semantic Model Management.ipynb +0 -0
  45. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Semantic Model Refresh.ipynb +0 -0
  46. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Service Principal.ipynb +0 -0
  47. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/notebooks/Tabular Object Model.ipynb +0 -0
  48. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/setup.cfg +0 -0
  49. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  50. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/semantic_link_labs.egg-info/requires.txt +0 -0
  51. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  52. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_ai.py +0 -0
  53. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_authentication.py +0 -0
  54. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  55. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  56. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  57. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  58. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  59. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  60. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  61. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  62. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  63. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  64. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  65. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  66. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  67. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  68. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  69. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  70. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  71. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  72. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  73. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  74. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  75. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  76. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  77. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  78. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  79. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  80. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  81. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  82. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  83. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  84. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  85. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  86. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  87. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  88. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  89. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  90. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  91. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  92. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_capacities.py +0 -0
  93. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_capacity_migration.py +0 -0
  94. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_clear_cache.py +0 -0
  95. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_connections.py +0 -0
  96. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_dashboards.py +0 -0
  97. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_data_access_security.py +0 -0
  98. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_data_pipelines.py +0 -0
  99. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_dataflows.py +0 -0
  100. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_dax.py +0 -0
  101. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_daxformatter.py +0 -0
  102. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_delta_analyzer.py +0 -0
  103. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_delta_analyzer_history.py +0 -0
  104. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_deployment_pipelines.py +0 -0
  105. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_dictionary_diffs.py +0 -0
  106. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_documentation.py +0 -0
  107. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_environments.py +0 -0
  108. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_eventhouses.py +0 -0
  109. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_eventstreams.py +0 -0
  110. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_external_data_shares.py +0 -0
  111. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_gateways.py +0 -0
  112. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_git.py +0 -0
  113. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_graphQL.py +0 -0
  114. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_icons.py +0 -0
  115. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_job_scheduler.py +0 -0
  116. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_kql_databases.py +0 -0
  117. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_kql_querysets.py +0 -0
  118. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_kusto.py +0 -0
  119. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_labels.py +0 -0
  120. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_list_functions.py +0 -0
  121. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_managed_private_endpoints.py +0 -0
  122. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_mirrored_databases.py +0 -0
  123. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  124. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_ml_experiments.py +0 -0
  125. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_model_auto_build.py +0 -0
  126. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_model_bpa.py +0 -0
  127. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_model_bpa_bulk.py +0 -0
  128. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_model_bpa_rules.py +0 -0
  129. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_model_dependencies.py +0 -0
  130. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_mounted_data_factories.py +0 -0
  131. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_notebooks.py +0 -0
  132. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_one_lake_integration.py +0 -0
  133. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_query_scale_out.py +0 -0
  134. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_refresh_semantic_model.py +0 -0
  135. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_spark.py +0 -0
  136. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_sql.py +0 -0
  137. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_sqldatabase.py +0 -0
  138. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_tags.py +0 -0
  139. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_translations.py +0 -0
  140. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_user_delegation_key.py +0 -0
  141. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_utils.py +0 -0
  142. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_vertipaq.py +0 -0
  143. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_vpax.py +0 -0
  144. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_workloads.py +0 -0
  145. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_workspace_identity.py +0 -0
  146. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/_workspaces.py +0 -0
  147. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/__init__.py +0 -0
  148. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_activities.py +0 -0
  149. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_apps.py +0 -0
  150. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_artifacts.py +0 -0
  151. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_basic_functions.py +0 -0
  152. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_capacities.py +0 -0
  153. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_dataflows.py +0 -0
  154. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_datasets.py +0 -0
  155. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_domains.py +0 -0
  156. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_external_data_share.py +0 -0
  157. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_git.py +0 -0
  158. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_items.py +0 -0
  159. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_reports.py +0 -0
  160. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_scanner.py +0 -0
  161. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_shared.py +0 -0
  162. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_sharing_links.py +0 -0
  163. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_tags.py +0 -0
  164. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_tenant.py +0 -0
  165. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_tenant_keys.py +0 -0
  166. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_users.py +0 -0
  167. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/admin/_workspaces.py +0 -0
  168. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/__init__.py +0 -0
  169. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
  170. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
  171. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_dl_helper.py +0 -0
  172. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
  173. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
  174. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  175. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_guardrails.py +0 -0
  176. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  177. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
  178. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
  179. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
  180. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  181. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/dotnet_lib/dotnet.runtime.config.json +0 -0
  182. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/graph/_groups.py +0 -0
  183. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/graph/_teams.py +0 -0
  184. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/graph/_users.py +0 -0
  185. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/__init__.py +0 -0
  186. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_blobs.py +0 -0
  187. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
  188. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
  189. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_helper.py +0 -0
  190. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
  191. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_livy_sessions.py +0 -0
  192. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_materialized_lake_views.py +0 -0
  193. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
  194. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/__init__.py +0 -0
  195. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
  196. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_direct_lake_to_import.py +0 -0
  197. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  198. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  199. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  200. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  201. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_migration_validation.py +0 -0
  202. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  203. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/mirrored_azure_databricks_catalog/__init__.py +0 -0
  204. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/mirrored_azure_databricks_catalog/_discover.py +0 -0
  205. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/mirrored_azure_databricks_catalog/_refresh_catalog_metadata.py +0 -0
  206. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/ml_model/__init__.py +0 -0
  207. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/ml_model/_functions.py +0 -0
  208. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  209. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/__init__.py +0 -0
  210. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  211. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  212. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  213. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  214. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  215. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  216. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  217. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  218. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  219. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  220. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  221. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  222. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  223. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  224. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  225. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  226. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  227. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  228. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  229. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  230. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  231. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  232. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  233. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  234. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  235. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  236. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  237. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  238. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  239. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_download_report.py +0 -0
  240. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_export_report.py +0 -0
  241. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_generate_report.py +0 -0
  242. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_paginated.py +0 -0
  243. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_bpa.py +0 -0
  244. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  245. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_functions.py +0 -0
  246. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_helper.py +0 -0
  247. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_list_functions.py +0 -0
  248. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_report_rebind.py +0 -0
  249. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_reportwrapper.py +0 -0
  250. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/report/_save_report.py +0 -0
  251. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/theme/__init__.py +0 -0
  252. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/theme/_org_themes.py +0 -0
  253. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/tom/__init__.py +0 -0
  254. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/variable_library/__init__.py +0 -0
  255. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/src/sempy_labs/variable_library/_functions.py +0 -0
  256. {semantic_link_labs-0.12.2 → semantic_link_labs-0.12.3}/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.2
3
+ Version: 0.12.3
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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.3&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,7 @@ 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.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
157
158
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
158
159
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
159
160
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.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
 
@@ -129,6 +129,7 @@ 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.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
132
133
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
133
134
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
134
135
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 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.2'
16
+ release = '0.12.3'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -7,7 +7,7 @@ name="semantic-link-labs"
7
7
  authors = [
8
8
  { name = "Microsoft Corporation" },
9
9
  ]
10
- version="0.12.2"
10
+ version="0.12.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.4
2
2
  Name: semantic-link-labs
3
- Version: 0.12.2
3
+ Version: 0.12.3
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.2&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.3&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,7 @@ 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.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
157
158
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
158
159
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
159
160
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
@@ -61,6 +61,7 @@ src/sempy_labs/_eventstreams.py
61
61
  src/sempy_labs/_external_data_shares.py
62
62
  src/sempy_labs/_gateways.py
63
63
  src/sempy_labs/_generate_semantic_model.py
64
+ src/sempy_labs/_get_connection_string.py
64
65
  src/sempy_labs/_git.py
65
66
  src/sempy_labs/_graphQL.py
66
67
  src/sempy_labs/_helper_functions.py
@@ -175,6 +176,7 @@ src/sempy_labs/directlake/_warm_cache.py
175
176
  src/sempy_labs/dotnet_lib/dotnet.runtime.config.json
176
177
  src/sempy_labs/graph/__init__.py
177
178
  src/sempy_labs/graph/_groups.py
179
+ src/sempy_labs/graph/_sensitivity_labels.py
178
180
  src/sempy_labs/graph/_teams.py
179
181
  src/sempy_labs/graph/_users.py
180
182
  src/sempy_labs/lakehouse/__init__.py
@@ -31,6 +31,8 @@ from ._semantic_models import (
31
31
  delete_semantic_model,
32
32
  update_semantic_model_refresh_schedule,
33
33
  list_semantic_model_datasources,
34
+ bind_semantic_model_connection,
35
+ unbind_semantic_model_connection,
34
36
  )
35
37
  from ._graphQL import (
36
38
  list_graphql_apis,
@@ -100,7 +102,6 @@ from ._warehouses import (
100
102
  delete_warehouse,
101
103
  get_warehouse_columns,
102
104
  get_warehouse_tables,
103
- get_warehouse_connection_string,
104
105
  )
105
106
  from ._data_pipelines import (
106
107
  list_data_pipelines,
@@ -351,6 +352,9 @@ from ._user_delegation_key import (
351
352
  from ._data_access_security import (
352
353
  list_data_access_roles,
353
354
  )
355
+ from ._get_connection_string import (
356
+ get_connection_string,
357
+ )
354
358
 
355
359
  __all__ = [
356
360
  "resolve_warehouse_id",
@@ -603,6 +607,8 @@ __all__ = [
603
607
  "get_item_definition",
604
608
  "get_workspace_network_communication_policy",
605
609
  "set_workspace_network_communication_policy",
606
- "get_warehouse_connection_string",
610
+ "get_connection_string",
607
611
  "list_data_access_roles",
612
+ "bind_semantic_model_connection",
613
+ "unbind_semantic_model_connection",
608
614
  ]
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.2"
2
+ lib_version = "0.12.3"
@@ -22,7 +22,7 @@ from uuid import UUID
22
22
  @log
23
23
  def create_blank_semantic_model(
24
24
  dataset: str,
25
- compatibility_level: int = 1605,
25
+ compatibility_level: int = 1702,
26
26
  workspace: Optional[str | UUID] = None,
27
27
  overwrite: bool = True,
28
28
  ):
@@ -33,7 +33,7 @@ def create_blank_semantic_model(
33
33
  ----------
34
34
  dataset : str
35
35
  Name of the semantic model.
36
- compatibility_level : int, default=1605
36
+ compatibility_level : int, default=1702
37
37
  The compatibility level of the semantic model.
38
38
  workspace : str | uuid.UUID, default=None
39
39
  The Fabric workspace name or ID.
@@ -0,0 +1,84 @@
1
+ from sempy_labs._helper_functions import (
2
+ resolve_item_id,
3
+ _base_api,
4
+ resolve_workspace_id,
5
+ )
6
+ from typing import Optional, Literal
7
+ import sempy_labs._icons as icons
8
+ from uuid import UUID
9
+ from sempy._utils._log import log
10
+
11
+
12
+ @log
13
+ def get_connection_string(
14
+ item: str | UUID,
15
+ type: Literal["Lakehouse", "Warehouse", "SQLEndpoint"],
16
+ workspace: Optional[str | UUID] = None,
17
+ guest_tenant_id: Optional[UUID] = None,
18
+ private_link_type: Optional[str] = None,
19
+ ) -> str:
20
+ """
21
+ Returns the SQL connection string of the specified item.
22
+
23
+ Parameters
24
+ ----------
25
+ item : str | uuid.UUID
26
+ The name or ID of the item (Lakehouse or MirroredDatabase).
27
+ type : Literal['Lakehouse', 'Warehouse', 'SQLEndpoint']
28
+ The type of the item. Must be 'Lakehouse' or 'MirroredDatabase'.
29
+ workspace : str | uuid.UUID, default=None
30
+ The Fabric workspace name or ID.
31
+ Defaults to None which resolves to the workspace of the attached lakehouse
32
+ or if no lakehouse attached, resolves to the workspace of the notebook.
33
+ guest_tenant_id : uuid.UUID, default=None
34
+ The guest tenant ID if the end user's tenant is different from the warehouse tenant.
35
+ private_link_type : str, default=None
36
+ Indicates the type of private link this connection string uses. Must be either 'Workspace' or 'None' or left as None.
37
+
38
+ Returns
39
+ -------
40
+ str
41
+ Returns the SQL connection string of the specified item.
42
+ """
43
+ workspace_id = resolve_workspace_id(workspace)
44
+ item_id = resolve_item_id(item=item, type=type, workspace=workspace)
45
+
46
+ type_dict = {
47
+ "Warehouse": "warehouses",
48
+ "SQLEndpoint": "sqlEndpoints",
49
+ }
50
+ type_for_url = type_dict.get(type)
51
+
52
+ if type == "Lakehouse":
53
+ response = _base_api(
54
+ f"/v1/workspaces/{workspace_id}/lakehouses/{item_id}", client="fabric_sp"
55
+ ).json()
56
+ return (
57
+ response.get("properties", {})
58
+ .get("sqlEndpointProperties", {})
59
+ .get("connectionString", {})
60
+ )
61
+ if type in ["SQLEndpoint", "Warehouse"]:
62
+ url = f"/v1/workspaces/{workspace_id}/{type_for_url}/{item_id}/connectionString"
63
+ else:
64
+ raise ValueError(
65
+ f"{icons.red_dot} The type must be 'Lakehouse', 'Warehouse' or 'SQLEndpoint'."
66
+ )
67
+
68
+ if private_link_type is not None and private_link_type not in ["Workspace", "None"]:
69
+ raise ValueError(
70
+ f"{icons.red_dot} private_link_type must be 'Workspace' or 'None' or left as None."
71
+ )
72
+
73
+ if guest_tenant_id or private_link_type:
74
+ params = []
75
+ if guest_tenant_id:
76
+ params.append(f"guestTenantId={guest_tenant_id}")
77
+ if private_link_type:
78
+ params.append(f"privateLinkType={private_link_type}")
79
+ param_str = "?" + "&".join(params)
80
+ url += param_str
81
+
82
+ response = _base_api(request=url, client="fabric_sp")
83
+
84
+ return response.json().get("connectionString")
@@ -549,6 +549,7 @@ def get_item_definition(
549
549
  definition["definition"]["parts"].append(
550
550
  {"path": path, "payload": decoded_payload}
551
551
  )
552
+ return definition
552
553
  else:
553
554
  return result
554
555
 
@@ -348,3 +348,121 @@ def list_semantic_model_datasources(
348
348
  df = pd.DataFrame(rows, columns=list(columns.keys()))
349
349
 
350
350
  return df
351
+
352
+
353
+ @log
354
+ def bind_semantic_model_connection(
355
+ dataset: str | UUID,
356
+ connection_id: UUID,
357
+ connectivity_type: str,
358
+ connection_type: str,
359
+ connection_path: str,
360
+ workspace: Optional[str | UUID] = None,
361
+ ):
362
+ """
363
+ Binds a semantic model data source reference to a data connection.
364
+ This API can also be used to unbind data source references.
365
+
366
+ This is a wrapper function for the following API: `Items - Bind Semantic Model Connection <https://learn.microsoft.com/rest/api/fabric/semanticmodel/items/bind-semantic-model-connection>`_.
367
+
368
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
369
+
370
+ Parameters
371
+ ----------
372
+ dataset : str | uuid.UUID
373
+ Name or ID of the semantic model.
374
+ connection_id : uuid.UUID
375
+ The object ID of the connection.
376
+ connectivity_type : str
377
+ The connectivity type of the connection. Additional connectivity types may be added over time.
378
+ connection_type : str
379
+ The `type <https://learn.microsoft.com/rest/api/fabric/semanticmodel/items/bind-semantic-model-connection?tabs=HTTP#connectivitytype>`_ of the connection.
380
+ connection_path : str
381
+ The path of the connection.
382
+ workspace : str | uuid.UUID, default=None
383
+ The workspace name or ID.
384
+ Defaults to None which resolves to the workspace of the attached lakehouse
385
+ or if no lakehouse attached, resolves to the workspace of the notebook.
386
+ """
387
+
388
+ (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
389
+ (dataset_name, dataset_id) = resolve_dataset_name_and_id(
390
+ dataset=dataset, workspace=workspace_id
391
+ )
392
+
393
+ payload = {
394
+ "connectionBinding": {
395
+ "id": str(connection_id),
396
+ "connectivityType": connectivity_type,
397
+ "connectionDetails": {
398
+ "type": connection_type,
399
+ "path": connection_path,
400
+ },
401
+ }
402
+ }
403
+
404
+ _base_api(
405
+ request=f"/v1/workspaces/{workspace_id}/semanticModels/{dataset_id}/bindConnection",
406
+ method="post",
407
+ client="fabric_sp",
408
+ payload=payload,
409
+ )
410
+
411
+ print(
412
+ f"{icons.green_dot} Connection '{connection_id}' has been bound to the '{dataset_name}' semantic model within the '{workspace_name}' workspace."
413
+ )
414
+
415
+
416
+ @log
417
+ def unbind_semantic_model_connection(
418
+ dataset: str | UUID,
419
+ connection_type: str,
420
+ connection_path: str,
421
+ workspace: Optional[str | UUID] = None,
422
+ ):
423
+ """
424
+ Unbinds a semantic model data source reference to a data connection.
425
+
426
+ This is a wrapper function for the following API: `Items - Bind Semantic Model Connection <https://learn.microsoft.com/rest/api/fabric/semanticmodel/items/bind-semantic-model-connection>`_.
427
+
428
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
429
+
430
+ Parameters
431
+ ----------
432
+ dataset : str | uuid.UUID
433
+ Name or ID of the semantic model.
434
+ connection_type : str
435
+ The `type <https://learn.microsoft.com/rest/api/fabric/semanticmodel/items/bind-semantic-model-connection?tabs=HTTP#connectivitytype>`_ of the connection.
436
+ connection_path : str
437
+ The path of the connection.
438
+ workspace : str | uuid.UUID, default=None
439
+ The workspace name or ID.
440
+ Defaults to None which resolves to the workspace of the attached lakehouse
441
+ or if no lakehouse attached, resolves to the workspace of the notebook.
442
+ """
443
+
444
+ (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
445
+ (dataset_name, dataset_id) = resolve_dataset_name_and_id(
446
+ dataset=dataset, workspace=workspace_id
447
+ )
448
+
449
+ payload = {
450
+ "connectionBinding": {
451
+ "connectivityType": "None",
452
+ "connectionDetails": {
453
+ "type": connection_type,
454
+ "path": connection_path,
455
+ },
456
+ }
457
+ }
458
+
459
+ _base_api(
460
+ request=f"/v1/workspaces/{workspace_id}/semanticModels/{dataset_id}/bindConnection",
461
+ method="post",
462
+ client="fabric_sp",
463
+ payload=payload,
464
+ )
465
+
466
+ print(
467
+ f"{icons.green_dot} The '{dataset_name}' semantic model within the '{workspace_name}' workspace has been unbound from its connection."
468
+ )
@@ -66,7 +66,8 @@ def refresh_sql_endpoint_metadata(
66
66
  item: str | UUID,
67
67
  type: Literal["Lakehouse", "MirroredDatabase"],
68
68
  workspace: Optional[str | UUID] = None,
69
- tables: dict[str, list[str]] = None,
69
+ timeout_unit: Literal["Seconds", "Minutes", "Hours", "Days"] = "Minutes",
70
+ timeout_value: int = 15,
70
71
  ) -> pd.DataFrame:
71
72
  """
72
73
  Refreshes the metadata of a SQL endpoint.
@@ -85,15 +86,10 @@ def refresh_sql_endpoint_metadata(
85
86
  The Fabric workspace name or ID.
86
87
  Defaults to None which resolves to the workspace of the attached lakehouse
87
88
  or if no lakehouse attached, resolves to the workspace of the notebook.
88
- tables : dict[str, list[str]], default=None
89
- A dictionary where the keys are schema names and the values are lists of table names.
90
- If empty, all table metadata will be refreshed.
91
-
92
- Example:
93
- {
94
- "dbo": ["DimDate", "DimGeography"],
95
- "sls": ["FactSales", "FactBudget"],
96
- }
89
+ timeout_unit : Literal['Seconds', 'Minutes', 'Hours', 'Days'], default='Minutes'
90
+ The unit of time for the request duration before timing out. Additional duration types may be added over time.
91
+ timeout_value : int, default=15
92
+ The number of time units in the request duration.
97
93
 
98
94
  Returns
99
95
  -------
@@ -132,14 +128,10 @@ def refresh_sql_endpoint_metadata(
132
128
  else:
133
129
  raise ValueError("Invalid type. Must be 'Lakehouse' or 'MirroredDatabase'.")
134
130
 
135
- payload = {}
136
- if tables:
137
- payload = {
138
- "tableDefinitions": [
139
- {"schema": schema, "tableNames": tables}
140
- for schema, tables in tables.items()
141
- ]
142
- }
131
+ payload = None
132
+ timeout_unit = timeout_unit.capitalize()
133
+ if timeout_unit != "Minutes" and timeout_value != 15:
134
+ payload = {"timeout": {"timeUnit": timeout_unit, "value": timeout_value}}
143
135
 
144
136
  result = _base_api(
145
137
  request=f"v1/workspaces/{workspace_id}/sqlEndpoints/{sql_endpoint_id}/refreshMetadata",
@@ -195,10 +187,8 @@ def refresh_sql_endpoint_metadata(
195
187
  df = df[column_order]
196
188
 
197
189
  printout = f"{icons.green_dot} The metadata of the SQL endpoint for the '{item_name}' {type.lower()} within the '{workspace_name}' workspace has been refreshed"
198
- if tables:
199
- print(f"{printout} for the following tables: {tables}.")
200
- else:
201
- print(f"{printout} for all tables.")
190
+ print(f"{printout} for all tables.")
191
+ _update_dataframe_datatypes(df, columns)
202
192
  else:
203
193
  # If the target item has no tables to refresh the metadata for
204
194
  df = pd.DataFrame(columns=columns.keys())
@@ -206,6 +196,4 @@ def refresh_sql_endpoint_metadata(
206
196
  f"{icons.yellow_dot} The SQL endpoint '{item_name}' {type.lower()} within the '{workspace_name}' workspace has no tables to refresh..."
207
197
  )
208
198
 
209
- _update_dataframe_datatypes(df, columns)
210
-
211
199
  return df
@@ -1,5 +1,4 @@
1
- from ._helper_functions import (
2
- resolve_item_id,
1
+ from sempy_labs._helper_functions import (
3
2
  resolve_workspace_name_and_id,
4
3
  _base_api,
5
4
  _create_dataframe,
@@ -233,57 +232,3 @@ def get_warehouse_columns(
233
232
  )
234
233
 
235
234
  return df
236
-
237
-
238
- @log
239
- def get_warehouse_connection_string(
240
- warehouse: str | UUID,
241
- workspace: Optional[str | UUID] = None,
242
- guest_tenant_id: Optional[UUID] = None,
243
- private_link_type: Optional[str] = None,
244
- ) -> str:
245
- """
246
- Returns the SQL connection string of the specified warehouse.
247
-
248
- Parameters
249
- ----------
250
- warehouse : str | uuid.UUID
251
- Name or ID of the Fabric warehouse.
252
- workspace : str | uuid.UUID, default=None
253
- The Fabric workspace name or ID.
254
- Defaults to None which resolves to the workspace of the attached lakehouse
255
- or if no lakehouse attached, resolves to the workspace of the notebook.
256
- guest_tenant_id : uuid.UUID, default=None
257
- The guest tenant ID if the end user's tenant is different from the warehouse tenant.
258
- private_link_type : str, default=None
259
- Indicates the type of private link this connection string uses. Must be either 'Workspace' or 'None' or left as None.
260
-
261
- Returns
262
- -------
263
- str
264
- Returns the SQL connection string of the specified warehouse.
265
- """
266
- workspace_id = resolve_workspace_id(workspace)
267
- warehouse_id = resolve_item_id(
268
- item=warehouse, type="Warehouse", workspace=workspace
269
- )
270
-
271
- url = f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/connectionString"
272
-
273
- if private_link_type is not None and private_link_type not in ["Workspace", "None"]:
274
- raise ValueError(
275
- f"{icons.red_dot} private_link_type must be 'Workspace' or 'None' or left as None."
276
- )
277
-
278
- if guest_tenant_id or private_link_type:
279
- params = []
280
- if guest_tenant_id:
281
- params.append(f"guestTenantId={guest_tenant_id}")
282
- if private_link_type:
283
- params.append(f"privateLinkType={private_link_type}")
284
- param_str = "?" + "&".join(params)
285
- url += param_str
286
-
287
- response = _base_api(request=url, client="fabric_sp")
288
-
289
- return response.json().get("connectionString")
@@ -22,6 +22,9 @@ from ._users import (
22
22
  from ._teams import (
23
23
  list_teams,
24
24
  )
25
+ from ._sensitivity_labels import (
26
+ list_sensitivity_labels,
27
+ )
25
28
 
26
29
  __all__ = [
27
30
  "list_groups",
@@ -42,4 +45,5 @@ __all__ = [
42
45
  "delete_group",
43
46
  "update_user",
44
47
  "update_group",
48
+ "list_sensitivity_labels",
45
49
  ]
@@ -0,0 +1,81 @@
1
+ import pandas as pd
2
+ from uuid import UUID
3
+ from typing import Optional
4
+ from sempy_labs._helper_functions import (
5
+ _base_api,
6
+ _create_dataframe,
7
+ _update_dataframe_datatypes,
8
+ )
9
+ from sempy._utils._log import log
10
+
11
+
12
+ @log
13
+ def list_sensitivity_labels(user: Optional[str | UUID] = None) -> pd.DataFrame:
14
+ """
15
+ Get a list of `sensitivity label <https://learn.microsoft.com/graph/api/resources/security-sensitivitylabel>`_ objects associated with a user or organization.
16
+
17
+ This is a wrapper function for the following API: `List sensitivityLabels https://learn.microsoft.com/graph/api/security-informationprotection-list-sensitivitylabels>`_.
18
+
19
+ Service Principal Authentication is required (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
20
+
21
+ Parameters
22
+ ----------
23
+ user : str | uuid.UUID
24
+ The user ID or user principal name.
25
+
26
+ Returns
27
+ -------
28
+ pandas.DataFrame
29
+ A pandas dataframe showing a list of `sensitivity label <https://learn.microsoft.com/graph/api/resources/security-sensitivitylabel>`_ objects associated with a user or organization.
30
+ """
31
+ from sempy_labs.graph import resolve_user_id
32
+
33
+ url = "/security/informationProtection/sensitivityLabels"
34
+
35
+ if user is not None:
36
+ user_id = resolve_user_id(user=user)
37
+ url = f"users/{user_id}{url}"
38
+
39
+ result = _base_api(request=url, client="graph").json()
40
+
41
+ columns = {
42
+ "Sensitivity Label Id": "str",
43
+ "Sensitivity Label Name": "str",
44
+ "Description": "str",
45
+ "Color": "str",
46
+ "Sensitivity": "int",
47
+ "Tooltip": "str",
48
+ "Is Active": "bool",
49
+ "Is Appliable": "bool",
50
+ "Has Protection": "bool",
51
+ "Parent Sensitivity Label Id": "str",
52
+ "Parent Sensitivity Label Name": "str",
53
+ }
54
+ df = _create_dataframe(columns=columns)
55
+
56
+ rows = []
57
+ for item in result.get("value", []):
58
+ row = {
59
+ "Sensitivity Label Id": item.get("id"),
60
+ "Sensitivity Label Name": item.get("name"),
61
+ "Description": item.get("description"),
62
+ "Color": item.get("color"),
63
+ "Sensitivity": item.get("sensitivity"),
64
+ "Tooltip": item.get("tooltip"),
65
+ "Is Active": item.get("isActive"),
66
+ "Is Appliable": item.get("isAppliable"),
67
+ "Has Protection": item.get("hasProtection"),
68
+ "Parent Sensitivity Label Id": (
69
+ item.get("parent", {}).get("id") if item.get("parent") else None
70
+ ),
71
+ "Parent Sensitivity Label Name": (
72
+ item.get("parent", {}).get("name") if item.get("parent") else None
73
+ ),
74
+ }
75
+ rows.append(row)
76
+
77
+ if rows:
78
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
79
+ _update_dataframe_datatypes(dataframe=df, column_map=columns)
80
+
81
+ return df