semantic-link-labs 0.11.3__py3-none-any.whl → 0.12.1__py3-none-any.whl

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 (75) hide show
  1. {semantic_link_labs-0.11.3.dist-info → semantic_link_labs-0.12.1.dist-info}/METADATA +6 -4
  2. {semantic_link_labs-0.11.3.dist-info → semantic_link_labs-0.12.1.dist-info}/RECORD +75 -73
  3. sempy_labs/__init__.py +6 -0
  4. sempy_labs/_a_lib_info.py +1 -1
  5. sempy_labs/_authentication.py +85 -32
  6. sempy_labs/_capacities.py +2 -2
  7. sempy_labs/_capacity_migration.py +4 -4
  8. sempy_labs/_clear_cache.py +1 -1
  9. sempy_labs/_connections.py +107 -70
  10. sempy_labs/_dashboards.py +6 -2
  11. sempy_labs/_data_pipelines.py +1 -1
  12. sempy_labs/_dataflows.py +1 -1
  13. sempy_labs/_dax.py +3 -3
  14. sempy_labs/_delta_analyzer.py +4 -4
  15. sempy_labs/_delta_analyzer_history.py +1 -1
  16. sempy_labs/_deployment_pipelines.py +1 -1
  17. sempy_labs/_environments.py +1 -1
  18. sempy_labs/_eventhouses.py +9 -3
  19. sempy_labs/_eventstreams.py +1 -1
  20. sempy_labs/_external_data_shares.py +1 -1
  21. sempy_labs/_gateways.py +14 -7
  22. sempy_labs/_generate_semantic_model.py +7 -12
  23. sempy_labs/_git.py +1 -1
  24. sempy_labs/_graphQL.py +1 -1
  25. sempy_labs/_helper_functions.py +161 -54
  26. sempy_labs/_job_scheduler.py +12 -1
  27. sempy_labs/_kql_databases.py +1 -1
  28. sempy_labs/_kql_querysets.py +10 -2
  29. sempy_labs/_kusto.py +2 -2
  30. sempy_labs/_list_functions.py +1 -1
  31. sempy_labs/_managed_private_endpoints.py +1 -1
  32. sempy_labs/_mirrored_databases.py +40 -16
  33. sempy_labs/_mirrored_warehouses.py +1 -1
  34. sempy_labs/_ml_experiments.py +1 -1
  35. sempy_labs/_model_bpa.py +6 -6
  36. sempy_labs/_model_bpa_bulk.py +3 -3
  37. sempy_labs/_model_dependencies.py +1 -1
  38. sempy_labs/_mounted_data_factories.py +3 -3
  39. sempy_labs/_notebooks.py +2 -1
  40. sempy_labs/_query_scale_out.py +2 -2
  41. sempy_labs/_refresh_semantic_model.py +1 -1
  42. sempy_labs/_semantic_models.py +15 -3
  43. sempy_labs/_spark.py +1 -1
  44. sempy_labs/_sql.py +3 -3
  45. sempy_labs/_sql_endpoints.py +5 -3
  46. sempy_labs/_sqldatabase.py +5 -1
  47. sempy_labs/_tags.py +3 -1
  48. sempy_labs/_translations.py +7 -360
  49. sempy_labs/_user_delegation_key.py +2 -2
  50. sempy_labs/_utils.py +27 -0
  51. sempy_labs/_vertipaq.py +3 -3
  52. sempy_labs/_vpax.py +1 -1
  53. sempy_labs/_warehouses.py +5 -0
  54. sempy_labs/_workloads.py +1 -1
  55. sempy_labs/_workspace_identity.py +1 -1
  56. sempy_labs/_workspaces.py +145 -11
  57. sempy_labs/admin/__init__.py +6 -0
  58. sempy_labs/admin/_capacities.py +37 -14
  59. sempy_labs/admin/_items.py +2 -2
  60. sempy_labs/admin/_tenant_keys.py +89 -0
  61. sempy_labs/directlake/_dl_helper.py +1 -1
  62. sempy_labs/lakehouse/__init__.py +4 -0
  63. sempy_labs/lakehouse/_materialized_lake_views.py +76 -0
  64. sempy_labs/lakehouse/_shortcuts.py +8 -2
  65. sempy_labs/report/_download_report.py +4 -1
  66. sempy_labs/report/_export_report.py +12 -5
  67. sempy_labs/report/_generate_report.py +11 -3
  68. sempy_labs/report/_paginated.py +21 -15
  69. sempy_labs/report/_report_functions.py +19 -11
  70. sempy_labs/report/_report_rebind.py +56 -33
  71. sempy_labs/theme/_org_themes.py +5 -6
  72. sempy_labs/tom/_model.py +5 -16
  73. {semantic_link_labs-0.11.3.dist-info → semantic_link_labs-0.12.1.dist-info}/WHEEL +0 -0
  74. {semantic_link_labs-0.11.3.dist-info → semantic_link_labs-0.12.1.dist-info}/licenses/LICENSE +0 -0
  75. {semantic_link_labs-0.11.3.dist-info → semantic_link_labs-0.12.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: semantic-link-labs
3
- Version: 0.11.3
3
+ Version: 0.12.1
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -15,7 +15,7 @@ Classifier: Framework :: Jupyter
15
15
  Requires-Python: <3.12,>=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: semantic-link-sempy>=0.11.1
18
+ Requires-Dist: semantic-link-sempy>=0.12.0
19
19
  Requires-Dist: anytree
20
20
  Requires-Dist: polib
21
21
  Requires-Dist: jsonpath_ng
@@ -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.11.3&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.1&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.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
158
+ * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
157
159
  * [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
158
160
  * [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
159
161
  * [0.11.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.1) (June 24, 2025)
@@ -213,7 +215,7 @@ Check out my [blog post](https://www.elegantbi.com/post/direct-lake-migration) o
213
215
  ### Instructions
214
216
 
215
217
  1. Download this [notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Migration%20to%20Direct%20Lake.ipynb).
216
- 2. Make sure you are in the ['Data Engineering' persona](https://learn.microsoft.com/fabric/get-started/microsoft-fabric-overview#components-of-microsoft-fabric). Click the icon at the bottom left corner of your Workspace screen and select 'Data Engineering'
218
+ 2. Make sure you are in the 'Fabric Developer' experience. Click the icon at the bottom left corner of your Workspace screen and select 'Fabric'.
217
219
  3. In your workspace, select 'New -> Import notebook' and import the notebook from step 1.
218
220
  4. [Add your lakehouse](https://learn.microsoft.com/fabric/data-engineering/lakehouse-notebook-explore#add-or-remove-a-lakehouse) to your Fabric notebook
219
221
  5. Follow the instructions within the notebook.
@@ -1,67 +1,67 @@
1
- semantic_link_labs-0.11.3.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
- sempy_labs/__init__.py,sha256=1XV5tHtRTI45Jwmn4YDI2PTwc36c46bdtCZl1oEwymw,15940
3
- sempy_labs/_a_lib_info.py,sha256=JoUvoiyW1DCzOuvpwzUxE9orjhsXBfeQMKvbWDpcdgM,53
1
+ semantic_link_labs-0.12.1.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
+ sempy_labs/__init__.py,sha256=XXjFqLjr5HXuCNTE_zs2Goyjk-TXXsiBdz5DeNBPjxs,16188
3
+ sempy_labs/_a_lib_info.py,sha256=T42IY7w9DbMr4dEI7yZNEWVAdGYwER_A1tX9Ro4_xgE,53
4
4
  sempy_labs/_ai.py,sha256=fiI3RCadJ2jG15vZIWD9rKVhvmGWoD9uth9-PlSPBNs,16196
5
- sempy_labs/_authentication.py,sha256=GjtN5XqIyWXbR5Ni4hfYiUNwgFa-ySX8e-BrqE1vgGc,6903
6
- sempy_labs/_capacities.py,sha256=KSm7OKkv8AvkGeH1e_U22hit7LRTCdWf00MdtY9J6f8,40416
7
- sempy_labs/_capacity_migration.py,sha256=gPPcRb8UE5lgAkseSZl2mv0JMyS4cQciGIcgh9MMFk4,24787
8
- sempy_labs/_clear_cache.py,sha256=PyDESIeMzqGG3Vac9blZzt00bR1aNt2gPLxIWb0JMqY,13191
9
- sempy_labs/_connections.py,sha256=IZOgwsKvdx8FwvwEXCQddvxWzTK2iZYVVzdufd6cjIo,18722
10
- sempy_labs/_dashboards.py,sha256=_4_3c22F2u652NwxhQ3eJayVkslYu4-RWMwIIp0DRYs,1942
11
- sempy_labs/_data_pipelines.py,sha256=ZskrozWywbb-KHuf7Ku3DR1X_LVfgvkKPr_SiLF6KL8,4861
12
- sempy_labs/_dataflows.py,sha256=cJtvWFMj3hFKdIVHOK-EREo3DjQGDI9mWZ3fX1ChlyA,20368
13
- sempy_labs/_dax.py,sha256=Nlm88FpXMJapBcyUQBBwLxBdRzEHGqI3xMZnSqWAEb4,17189
5
+ sempy_labs/_authentication.py,sha256=-mSXB3tlVhutOo2nhmQQOllWWVvuy4G9rTM77v4S8lw,8485
6
+ sempy_labs/_capacities.py,sha256=TQYlbM0LP21G-KsW6QrJ7heBzKL42XxA939VldWiKeg,40436
7
+ sempy_labs/_capacity_migration.py,sha256=g675DY2YgsVA_ffb_8WNdARVMyHh8iu2P94QWLllmDY,24827
8
+ sempy_labs/_clear_cache.py,sha256=UY_pljGeqb168Qe5sP66ecLeREPN4NMpjIEocCmxg0M,13201
9
+ sempy_labs/_connections.py,sha256=deIovVV2JOx4QW-4-A_V9O6l-FJPh3JWTGmIXZ_YH2M,19821
10
+ sempy_labs/_dashboards.py,sha256=1Cpllydezqf8INt31lAVfYcEOZmrqiBPiSzh7GQDWog,2161
11
+ sempy_labs/_data_pipelines.py,sha256=F-VNPVtCQbM_FZsJqZap7vfJSkv7Ta1V28RAOjGfrrk,4871
12
+ sempy_labs/_dataflows.py,sha256=9wu1QOPuNQLe7RrscjnmnrOQ4fe8gyMYyiOtMVZlnCI,20378
13
+ sempy_labs/_dax.py,sha256=Q_GylKeuHFnRB_sztZS1ON5v5tr6ua6lc9elyJYKbV8,17219
14
14
  sempy_labs/_daxformatter.py,sha256=A2jTg9kSAye_LuIsCYmaYq5EbInAMfbDylHrERGB3Cs,3037
15
- sempy_labs/_delta_analyzer.py,sha256=TxfSxdOw7PYLWIBPkdvsIDJO61nNtcpYmtvtrr83sDA,17241
16
- sempy_labs/_delta_analyzer_history.py,sha256=wwA9UNzFVsIpsUUy9zD50AaarA-wBY_hnpC3-Db4VTU,10883
17
- sempy_labs/_deployment_pipelines.py,sha256=SnQw-kPMAxt1VxvsnbO148iwjVhbj5kazWVFWDLzjmc,6293
15
+ sempy_labs/_delta_analyzer.py,sha256=d6qxZrEhn3Hfg5qMQODt7dDG5mYSY18xeXUkW_NyMgw,17281
16
+ sempy_labs/_delta_analyzer_history.py,sha256=9v627Ubxbz4Dn2IAASUNu_sww9V3scoWgGk3yAWJIr0,10893
17
+ sempy_labs/_deployment_pipelines.py,sha256=PRTcSeMxmce4kzMjfhryGrD31GFAbFBSxuCkRbbArrM,6303
18
18
  sempy_labs/_dictionary_diffs.py,sha256=DCXuASmt45gshsBO1FgSZDqxm68DnojuDcO-H35EH7Q,9003
19
19
  sempy_labs/_documentation.py,sha256=_TzhSYzGBVZYPaHm34T8dtTCbc_t4Mx45EzQKwD048g,5051
20
- sempy_labs/_environments.py,sha256=35-uxuKL2NqOgBRJ_l5_Eat_lNZJSR8fqryliiH7-G0,5974
21
- sempy_labs/_eventhouses.py,sha256=8jhTKNX6BFJEkeupvwA9RhH9KdQij3-kdBMCS1Bp64M,5397
22
- sempy_labs/_eventstreams.py,sha256=XaGlWzWKJVPhrQ1xUNsuPyJOQFJyrcvJTXbEtQddGfk,3546
23
- sempy_labs/_external_data_shares.py,sha256=xoP9zKpIBIe_m2TYawuwRFIji-DVBMn9pbmjUTuo2Sc,8935
24
- sempy_labs/_gateways.py,sha256=j0xgOukiv-_ARF413-38lGy4mD8t9DTPAcrLpBk340I,17814
25
- sempy_labs/_generate_semantic_model.py,sha256=brw0nahfWLPGxk2G7osVGeSzMObdI2UoHJreQmlx0Bc,18399
26
- sempy_labs/_git.py,sha256=3ip_tWHrJgnr0o_odfG5tlnIKeHJF4F1iLgS3fCyj6w,17893
27
- sempy_labs/_graphQL.py,sha256=rkYvNXYgg94EZbIHyOY4Z1lOOSQP8g7sdubA11RngeI,2739
28
- sempy_labs/_helper_functions.py,sha256=oR8FiOnwIvzB6IsX1EdLd_e5I6FqZAcI6E0OAb_Digo,80937
20
+ sempy_labs/_environments.py,sha256=uY8CS0FJx1BDTCZmYO7-QDv-ezgfXpSwRrf4OYX2KeI,5984
21
+ sempy_labs/_eventhouses.py,sha256=AJXJ00AOfEaKq0wagZfoLHorztyLHaRx6pkdbunCvFI,5934
22
+ sempy_labs/_eventstreams.py,sha256=XkaUohgAx3v_U7ATWd_TOobphnezxO5nyt_mwF21bPk,3556
23
+ sempy_labs/_external_data_shares.py,sha256=qHirKpBGseQOkg3xHOM5450Wpz3vmWfG3xexYjLQT9M,8945
24
+ sempy_labs/_gateways.py,sha256=Nsb2qSXiAVS0CELhjji4FkKVBdnXhP-6spqqTBZc6sU,18100
25
+ sempy_labs/_generate_semantic_model.py,sha256=hK2f61PR55080smJBIrq7BgcoTWal_4i4eQulwHjtos,18236
26
+ sempy_labs/_git.py,sha256=x8BrvkJNWkP6I-_os_wdNjEZVNViqfINmc-q7sGoQ3Q,17903
27
+ sempy_labs/_graphQL.py,sha256=WDallUQBiOqJdz0aJmYH3cUXCOW_AqhFLs0EpV8_5Rw,2749
28
+ sempy_labs/_helper_functions.py,sha256=O15Jlw23ECCupLs2vBojcXh7BQ7R3mj14MonVRzsiEk,84726
29
29
  sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
30
- sempy_labs/_job_scheduler.py,sha256=uUsxxPujJQdoHDB122DxCkEuHmQAlkYG7-LPM1pm0vY,17198
31
- sempy_labs/_kql_databases.py,sha256=UDUSM7NELKPUcbL43YhOW6D9cQVg2Ko9TT-_DBvyZDE,4786
32
- sempy_labs/_kql_querysets.py,sha256=FmtWRxtuw65Pu5h1qE3S-JqvWEQfCSUsQvH2VOIt8P0,3556
33
- sempy_labs/_kusto.py,sha256=p8zIlpdDoUWrLeq0fpoqreEsXKD3c0fklz1G3dnJRnU,4524
30
+ sempy_labs/_job_scheduler.py,sha256=N2zukwZk69pHSb0YYeOHV2Q9M1IYA9Ho8R1YGAGdM20,17790
31
+ sempy_labs/_kql_databases.py,sha256=Wr338mNf0wzvpBJYHbWHjzUudoeMZMUia_smdkzbPfI,4796
32
+ sempy_labs/_kql_querysets.py,sha256=C7nRv03riGJc7sbeGNz1R6dom6Wb-5dno_wAhFep468,4128
33
+ sempy_labs/_kusto.py,sha256=g3Up4j1KNdIGC2DDbvoduCdX1Pp8fAPGAlBAqOtaBeg,4544
34
34
  sempy_labs/_labels.py,sha256=UfGUSicESu5uhBzRsrIRiKtZoVH3lPo_rlbYClKP8X0,3770
35
- sempy_labs/_list_functions.py,sha256=Dm8sZjXnbUOF-zQanCTGimVdATo2GWttXNJSyen9sCk,59814
36
- sempy_labs/_managed_private_endpoints.py,sha256=1IVbrvo51qRaTAHyl7NwBX0kDEWD4hygF78oA6KGs8k,7058
37
- sempy_labs/_mirrored_databases.py,sha256=dpn2NWQI9FcJNPLxOOuOHTpGco4mTiHiDPz69D6ANK0,13269
38
- sempy_labs/_mirrored_warehouses.py,sha256=uW0s-pUA0btvSsFfBkAjv2pbCQJKBkTGq2czMJrMN8g,1783
39
- sempy_labs/_ml_experiments.py,sha256=KXjqJ3hBXw6vvMLNHvhH2Y44Co2CapNsTbP9A6TExGE,3429
35
+ sempy_labs/_list_functions.py,sha256=VMjUzYdqKhAYpWV_tuIuhDxzV1K2Al_aTCPKw6A2qCU,59824
36
+ sempy_labs/_managed_private_endpoints.py,sha256=dsjaUVq_t9DlcAw5EaQfhi4FVbM71w8RKFkDFb80x5E,7068
37
+ sempy_labs/_mirrored_databases.py,sha256=njjHHqXiTBNA_424MrgaE-O7lvZiyvCEen0aTcrjogs,14832
38
+ sempy_labs/_mirrored_warehouses.py,sha256=QvHze0WiYSMiwlskVZcfxMICXtwsLwyygJx9foLOX70,1793
39
+ sempy_labs/_ml_experiments.py,sha256=hC8Mh5rEbpilno-O21MeTzKOjXrhzUYX2aysSgjnNdE,3439
40
40
  sempy_labs/_model_auto_build.py,sha256=LpeRDY-L3b8LxvxmbUXZGDfzlqcs84rAPePf9XgJ0yE,5075
41
- sempy_labs/_model_bpa.py,sha256=BTet6zRYehlDLYlt-wvfT-2J_cvhNZen5IKIsM5bcJo,21982
42
- sempy_labs/_model_bpa_bulk.py,sha256=N13FsCqDu3PrY1Jd7GnBM5mesoEwAohB0vhXnePIKZ4,15815
41
+ sempy_labs/_model_bpa.py,sha256=ZPsBxDaxLRc3xcOCfvzK2GBCCmNTPLMP3jzW5IHcrXY,22041
42
+ sempy_labs/_model_bpa_bulk.py,sha256=hRY3dRBUtecrbscCZsEGv6TpCVqg_zAi8NmRq6dVMiE,15845
43
43
  sempy_labs/_model_bpa_rules.py,sha256=SZKUHEsWzvivpNQK28zkmaJ1Z16o6_XdQPcpwxznPTg,46299
44
- sempy_labs/_model_dependencies.py,sha256=MYig8VyWZRVn36teWcNrKFNfMnwIIB-W2drVKYaiHAg,13152
45
- sempy_labs/_mounted_data_factories.py,sha256=8-Rzvjv7DO3W0VkiL1__cRCgO3bk62Ui1QH34QNd7i0,3912
46
- sempy_labs/_notebooks.py,sha256=M-GDK802I_RgmRyHfmxssXJHfpOgyXmPt2oNU0k6wmE,14389
44
+ sempy_labs/_model_dependencies.py,sha256=0xGgubrq76zIvBdEqmEX_Pd6WdizXFVECBW6BPl2DZo,13162
45
+ sempy_labs/_mounted_data_factories.py,sha256=jNlSxtUs_LNwE7R9HQusBAksk2QbinKyDx3ySe_q9q4,3924
46
+ sempy_labs/_notebooks.py,sha256=_0Ug6SF2bihCEFt6P-6DjoGj3302OlDfXmfOJ-ue5Tg,14395
47
47
  sempy_labs/_one_lake_integration.py,sha256=aThg8Fcei9qTFUTzg2Qwsn-3deTk0ICTCXx53Y23oso,6293
48
- sempy_labs/_query_scale_out.py,sha256=1VDwf-W47RXXxxf45FTzH7bjZvY8XPbMj-ONtd2j2MQ,15342
49
- sempy_labs/_refresh_semantic_model.py,sha256=PiWPRlWqkXCBiaNLBbh2163zvMbXJzJClCTUMIIVkLM,17355
50
- sempy_labs/_semantic_models.py,sha256=FljaFmtPP4AG6jJVxpFWr4Zk22VKXWlOEBJLNn4FyKg,11666
51
- sempy_labs/_spark.py,sha256=MyVTPsTMVM-_4A8NyTtHF1-y65zWJR2slDtluP_WyCg,19394
52
- sempy_labs/_sql.py,sha256=e-dg7xyYMu79Xpx0EKb-JptT03UvdKaWytWCkMcPKlY,8271
53
- sempy_labs/_sql_endpoints.py,sha256=Pu29rPV-t5WnOI34KFut7faskAn0QCI_aTUsfxxdUu4,6581
54
- sempy_labs/_sqldatabase.py,sha256=DiRQL_h9TQmTGKnWhvtlLsz68rmXkL7J-9ly1Rcx9Us,6548
55
- sempy_labs/_tags.py,sha256=0Rw9lzLD2zhl-gJFAoGL-8tDaPKjOnIs0UIP4gs2ng8,5712
56
- sempy_labs/_translations.py,sha256=incxaW8U3jDYO6rCgASlgtScRN1wGwh14nW2Rmanl48,16158
57
- sempy_labs/_user_delegation_key.py,sha256=Jw8I8KNWlcKHo-mWkGPdM2QY37nsgjzgp-yhPH2yz8U,1433
58
- sempy_labs/_utils.py,sha256=aKGnUiXSLLRQRXXv8TH_XhGcOtDsnrs0RHmQ6YZMn3o,1786
59
- sempy_labs/_vertipaq.py,sha256=3Qg9sSBq_jxeoYv01T_V0m7bncJeCQi3-s5TZSuRODo,38506
60
- sempy_labs/_vpax.py,sha256=7kP0VExTpx5PKiqA0lHr3ud-TmXUk_Li1hXDyNKTlE8,15461
61
- sempy_labs/_warehouses.py,sha256=8irFySpXN0MDcEHnUQodIvQUfZLRmcKzcRHqbvZSUzs,7400
62
- sempy_labs/_workloads.py,sha256=G85SI7htzYWgvJjdPkRAvUHacsEyhbnM4v_Jl8d3JJY,4721
63
- sempy_labs/_workspace_identity.py,sha256=RUSkL3bxIUCuPJ5HoGfKsjKZEUVO23-F-nFq-lzaJGc,2595
64
- sempy_labs/_workspaces.py,sha256=nFpFVCw1FmI75M6Vva2_2LiwJLR202m7QX5958D4YdY,13213
48
+ sempy_labs/_query_scale_out.py,sha256=tcIEJSHjZ1gh7--WMS8sDqDfF3wbfIEX9Xm2qgahXrc,15348
49
+ sempy_labs/_refresh_semantic_model.py,sha256=yu92m4Ys6lbW68PP9tVCeUNHXj7cGXvyGr2WYRqgl1g,17365
50
+ sempy_labs/_semantic_models.py,sha256=PbDM0u1mv6-aRwUJbxfsGm2yFFBTJvYotLFUHyvMF6g,12585
51
+ sempy_labs/_spark.py,sha256=aQAqmRAm04NWH9j4_qmYJAWdIluoWKzHDTBPr01GWbA,19404
52
+ sempy_labs/_sql.py,sha256=Y7yRO8j0P6h68VNaqmWVSyfLrI9L9TMBLykovDkgIzY,8274
53
+ sempy_labs/_sql_endpoints.py,sha256=eD2i5r7l9FA9YIW4i0PIpsG3H5mr1HPXJ9g6Lae1uNQ,6766
54
+ sempy_labs/_sqldatabase.py,sha256=vmTsB1IAluQ99cf8fmcPO2z0SjAjTOM8OCD5nuJdSOI,6908
55
+ sempy_labs/_tags.py,sha256=tqQlj7AvbaniN8mZl59g145Ofj_wdA6Bnrna0PzlwI4,5897
56
+ sempy_labs/_translations.py,sha256=6A8CPmH_xvsONX4dOG5XSZ-XeJuAy5VokFJql6uf_Ak,1432
57
+ sempy_labs/_user_delegation_key.py,sha256=dj540zd_IGNt2GQ_a69_8IBoyZdpldx_3z6NxNV35yo,1453
58
+ sempy_labs/_utils.py,sha256=X7wcjg809ZyEgf6fE0mZIv9qe1n1oQX_hHXEHgR4u0U,2737
59
+ sempy_labs/_vertipaq.py,sha256=1UvB79xOxeGdRFINsUsreXxtZtiatHlACAfbQhv45as,38536
60
+ sempy_labs/_vpax.py,sha256=4rtXXGVoadvdu7uiU9PVsgKszST3XH-K56zmWdMmZEg,15471
61
+ sempy_labs/_warehouses.py,sha256=xCdj7Mvleolbxp3Wbtgj-RLO2OnjNNNffPFDADItsS0,7778
62
+ sempy_labs/_workloads.py,sha256=K2KPY1_e6SDqz_NQDBrrMlRwzEyVV5dqd1shBs8Bu6E,4731
63
+ sempy_labs/_workspace_identity.py,sha256=rLzrNjnWbpjNn4bu7xW0nSjG9t1nbc4xG6BdkZNKP1Q,2605
64
+ sempy_labs/_workspaces.py,sha256=djjY7zLLKqsN0UJqzVpCp3j6_k81RP3VimCv1IM8Eb4,18334
65
65
  sempy_labs/_bpa_translation/_model/_translations_am-ET.po,sha256=zQVjJ-t0vtgIYan-HaXtUVJLB_PJvB53Nf5BNoOReU4,39199
66
66
  sempy_labs/_bpa_translation/_model/_translations_ar-AE.po,sha256=QP1PjDLFccLDs9zq456crdAST57wrcWVk5rRiqqoCws,36959
67
67
  sempy_labs/_bpa_translation/_model/_translations_bg-BG.po,sha256=sqezjpS3wfk09WD7x27bHoCBtgmqeHtyHNKTwG7-bkI,44132
@@ -100,29 +100,30 @@ sempy_labs/_bpa_translation/_model/_translations_tr-TR.po,sha256=NdW-X4E0QmeLKM0
100
100
  sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L6738FjpJ8o4spwp8FNFGbVItHD-_ec,43500
101
101
  sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
102
102
  sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
103
- sempy_labs/admin/__init__.py,sha256=vSmsOfolndUvGSlciKkAwdUXBougosHYgowxIcEvyyQ,3790
103
+ sempy_labs/admin/__init__.py,sha256=wwjwMS19-Fg2Et0D9N9NBT_svfPEhG-o4pKP_NX2kNw,3914
104
104
  sempy_labs/admin/_activities.py,sha256=SN-uAEWvFO5nKuw4Yi483niixzxShDGMXRv0SV4s4Bk,6833
105
105
  sempy_labs/admin/_apps.py,sha256=4R-VZqo9SGIrwqcQfnFGXIWueBhr4mSI7H8SUlLVl8s,4131
106
106
  sempy_labs/admin/_artifacts.py,sha256=IQ1BOVKMK8Qy_5HpREUso6_NWXbftIodWekByvVvJ5k,2315
107
107
  sempy_labs/admin/_basic_functions.py,sha256=HfJhdh8tVskRaaypU3qD_EE6IaDDR3MKJyt9Bl-56LE,16306
108
- sempy_labs/admin/_capacities.py,sha256=KZ-5tKu2Ozc6AcSJxlPHpDLxMhqX2r2yWKALUVVqbt4,15846
108
+ sempy_labs/admin/_capacities.py,sha256=nanec6kuyuUNjP1iseOoVmVax5VLKzOW0_91oESzEE4,16693
109
109
  sempy_labs/admin/_dataflows.py,sha256=So7kzRdDZ2henr-gmPw-ahEBQTm_xGhZrjkW-gALLQk,1432
110
110
  sempy_labs/admin/_datasets.py,sha256=scGbRZpR32u62HDsvKaUYtpX85n4RGx4eYjxClFIT5U,6277
111
111
  sempy_labs/admin/_domains.py,sha256=siLhIi5UqVM9kf_Xqq-kzvwZKouyqf-wWpPhJ7D-VMk,15238
112
112
  sempy_labs/admin/_external_data_share.py,sha256=HMwKAjSE7Y-499Fo_weaY2SnKIU8_ohTBN3qjJtuJDs,3506
113
113
  sempy_labs/admin/_git.py,sha256=mx2B7RcU4Fi4x6HEeXEotYk0jvcbHYG9_RPjo6UowcA,2379
114
- sempy_labs/admin/_items.py,sha256=FY4WWmEy5R5H3H_hKXqicWXdvVJV0N0tecmA9Yy4Ysw,9036
114
+ sempy_labs/admin/_items.py,sha256=LBvUUzqp2wV8YRiXCQGUhv7BoCbalZUojlvCukd1h6Y,9040
115
115
  sempy_labs/admin/_reports.py,sha256=JrmooHhiS4ViZsVinUz5T_9oZ7bdn1fIeW_wI8L1BnY,7908
116
116
  sempy_labs/admin/_scanner.py,sha256=0dNfl9W25RTxIQj1rMGhQrH1ioGWpf3-CiZOxHLZ5hQ,4345
117
117
  sempy_labs/admin/_shared.py,sha256=axTqVqp1V1tDtq2YTuSD6M0ST4lAjXqcIfRHwkZqyOQ,3115
118
118
  sempy_labs/admin/_tags.py,sha256=emIA626JoC9Cp_vesVNFwahUdDLAK48APNsdG5ki1Xo,3788
119
119
  sempy_labs/admin/_tenant.py,sha256=8mewLN79Lf3a-HUKG6Cl8Oimb2kv3r7XWAJKzvEHBMc,19581
120
+ sempy_labs/admin/_tenant_keys.py,sha256=9yajAPmsbjT25g1-4YbcRkXK8n3JcTFKVOnR0lt2BmU,2762
120
121
  sempy_labs/admin/_users.py,sha256=fYeUez98Dx_g6dC15S-0vttCZRUWWCrNPWNMGVtoiVE,4685
121
122
  sempy_labs/admin/_workspaces.py,sha256=jOs2IwFWtCAoWJ4GMYLtAjAfaDlJ-i-urNUYGukpZS4,7650
122
123
  sempy_labs/directlake/__init__.py,sha256=xDH3Y4Hxdnp1s7Whdkn6DCrS_cExcJURxkvuz-qv_HI,1879
123
124
  sempy_labs/directlake/_directlake_schema_compare.py,sha256=8KJEdcHHP-6IuEoipDbIOQeqLUtpPt0x4ZXL54MPp0U,5047
124
125
  sempy_labs/directlake/_directlake_schema_sync.py,sha256=hL3QwP9SN46CBqT39lkeLnJ9lLNDl5kLQryzamHUufM,6601
125
- sempy_labs/directlake/_dl_helper.py,sha256=3lsCrz85NocEFmN3Ma4oQ0rrEcWus2FmInKzqeKMkBs,10389
126
+ sempy_labs/directlake/_dl_helper.py,sha256=X5GfDpk6FSmDzXiRXT3fHo_VLQemPgBCFVdXQMssaqw,10402
126
127
  sempy_labs/directlake/_generate_shared_expression.py,sha256=JgyDR-E-4eAvcGkAZ0zRjNtAw_ZULzHmABwwOy9FOq0,3591
127
128
  sempy_labs/directlake/_get_directlake_lakehouse.py,sha256=9IxO4FuvScQig4aubpfhvu6AxASdrAP9hdW8YBKZ6xU,2292
128
129
  sempy_labs/directlake/_get_shared_expression.py,sha256=t5aZkyCci3Anxle6NQBhjbT_pEAJcIeNZW54GCQRlHA,1172
@@ -137,14 +138,15 @@ sempy_labs/graph/__init__.py,sha256=fIx2ks5EhOiZ-8orZ7jq7txfwmfhlJ-4BdLWowm4YmE,
137
138
  sempy_labs/graph/_groups.py,sha256=YRFrsJbHGCraUBlqRaL2VEN4BoGGmS2PoLjHcA6D8ME,12935
138
139
  sempy_labs/graph/_teams.py,sha256=UH5ETsReD0pzmdgqQFkcX_95o1aUAv2lAajRJc0RIZY,3175
139
140
  sempy_labs/graph/_users.py,sha256=cVd-FrEIsQ43c1GG5eCiZ3-xIYciQKrPcfj2fn7x5nY,9929
140
- sempy_labs/lakehouse/__init__.py,sha256=Nvn2idufLanbNuNWVYQeXyrTbJo-aiLBiXcg2OR248g,1127
141
+ sempy_labs/lakehouse/__init__.py,sha256=jOCjgkIZgwl373pb6lmEwqIkbifwJUKY3K0eZ8LAVws,1245
141
142
  sempy_labs/lakehouse/_blobs.py,sha256=peVPDCw97sB1x9a4KMKOqUB2Igu82-gb4CsvGdbubrU,8557
142
143
  sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=QVxejuu4WFGkG-c2i9B_H6dZsb1m_FRSTraS9GahnT4,3681
143
144
  sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=4p43Sa2mjJT4heUDp_EpF0vgZff5oNqCxjbat7IZxwk,11940
144
145
  sempy_labs/lakehouse/_helper.py,sha256=q-z6DTO3-Iy5hM9zXpZhXRD1OPp7JAzGhcyJ_VheDcM,8644
145
146
  sempy_labs/lakehouse/_lakehouse.py,sha256=tJFeXG1U_GcEW1EVMQKIQpz6kqh_aatAGo208cDCE0Y,10262
146
147
  sempy_labs/lakehouse/_livy_sessions.py,sha256=XwEA0QkcFCbCGxSO6MJ5GZ-j9kjNIBiQhIkWG_Znm0E,6034
147
- sempy_labs/lakehouse/_shortcuts.py,sha256=6WVqr-QvPvXQiB572BkcN8q-nA4JLCEEBT_eQNCoS-Q,16676
148
+ sempy_labs/lakehouse/_materialized_lake_views.py,sha256=EOyVxEo_SaEuVELQzhrWIZVbd-HB7iRbyx0JVpWg1xA,2814
149
+ sempy_labs/lakehouse/_shortcuts.py,sha256=ESBVIVY_ROcMgGXFeCJav14PkDhRFqeruDDDTJncgi4,16935
148
150
  sempy_labs/migration/__init__.py,sha256=aA8r2g2mN_elPG8qptXlRiIcyQ9Z5hjKJo23fSNm1RY,1015
149
151
  sempy_labs/migration/_create_pqt_file.py,sha256=IztG7XKAg98zZiWW0oUMtO7WnuqvcmE96gOAwe3UiKg,9659
150
152
  sempy_labs/migration/_direct_lake_to_import.py,sha256=XBGQUTHp3uVgOcRk85aPtMlfdaXhrdh9AkaA0AglfSc,3987
@@ -161,16 +163,16 @@ sempy_labs/ml_model/__init__.py,sha256=2rHXo_C-70NO4t5_McN6lxGwN2M3IBB6VuQMTE0Vn
161
163
  sempy_labs/ml_model/_functions.py,sha256=b_TzmVorVXdn8k0JD0SF3kXYu9fduizN6BKSq_5Ot7w,15282
162
164
  sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
163
165
  sempy_labs/report/__init__.py,sha256=bMX55Py9iJZqLYC1G-M1AgSwLfu4EHRhQGqym4K2Nzc,1264
164
- sempy_labs/report/_download_report.py,sha256=Q1ho8EJybAKV8BlqN4Hq2yznH8DtUtLbSYtGUvG-toY,2695
165
- sempy_labs/report/_export_report.py,sha256=RMV-ng_dgQ1ssQVfKkawUYIuFUHXMTE4j-7q3CedVFo,10950
166
- sempy_labs/report/_generate_report.py,sha256=dYIhFzTT3NOU_t9dpZ_qkYp0r-LXRpHPAUsfSmuqtEA,13911
167
- sempy_labs/report/_paginated.py,sha256=9zW-TXNDT7j6TCiPPxIbn7BI69HLKCAfe-Xys25IZt0,2186
166
+ sempy_labs/report/_download_report.py,sha256=pvyiscU2_eZ6RW1wgYEK4MXsDNKwSY7thmcYWRhEyrs,2899
167
+ sempy_labs/report/_export_report.py,sha256=BICwz2rkvD914pcp3BmXjw8G7LD2IQramyWTgP-7NXc,11275
168
+ sempy_labs/report/_generate_report.py,sha256=o2oc5Iz4CZdYUAHv46SfKQ2s72VqMod7FzmZwigPJQY,14503
169
+ sempy_labs/report/_paginated.py,sha256=Tn3XUIBhi2DJcQQzRBVYLKnFnpO7T0nPfvhNcniI5dY,2424
168
170
  sempy_labs/report/_report_bpa.py,sha256=9BNJmxDiZlldYoQvUKcWYc47eycyv_mo0-pocNub7Qk,13419
169
171
  sempy_labs/report/_report_bpa_rules.py,sha256=kPPE1UZ_78GePULcIRUarRfdqR7s4CQ46MMS8VUyJnk,4998
170
- sempy_labs/report/_report_functions.py,sha256=QVxM77PosaQvGu9s_UAiBMcuvgTAenP8mk2Kjqkt45w,19709
172
+ sempy_labs/report/_report_functions.py,sha256=cBJhjoC6iNYF-I6Ak1a2i2EKQykA5TPVLoofkgsuMkk,20105
171
173
  sempy_labs/report/_report_helper.py,sha256=L9wU0N0rvTUMglZHTxcowywrBDuZvZTv3DA4JrX84Os,7207
172
174
  sempy_labs/report/_report_list_functions.py,sha256=m_Wf1YeZmNtOfCwIILpKUuVR7V2CnwnfhDjz1DDTxOI,3945
173
- sempy_labs/report/_report_rebind.py,sha256=J6DkNX5JF2NdC1Az-f3fkEfRQJ1LmpAMhftoz9WHoEI,5081
175
+ sempy_labs/report/_report_rebind.py,sha256=c4-dPCvjqnwdsasjCFlsTo8w6TvhAQ7WPRmAb-mowns,6437
174
176
  sempy_labs/report/_reportwrapper.py,sha256=GI38yGY_mXlFhE-WD8-0oHlL6kmU-M_kBcPp1qozgt0,110493
175
177
  sempy_labs/report/_save_report.py,sha256=0P1WwIBtSgwrhnjWWvf9xf-e7ifka3DWVF0HM5zeXps,5998
176
178
  sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
@@ -201,12 +203,12 @@ sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visua
201
203
  sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json,sha256=wBVuNc8S2NaUA0FC708w6stmR2djNZp8nAsHMqesgsc,293
202
204
  sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json,sha256=mlY6t9OlSe-Y6_QmXJpS1vggU6Y3FjISUKECL8FVSg8,931
203
205
  sempy_labs/theme/__init__.py,sha256=JN0z8w_Hc7VUIchRbpY-rjU6879msrFiSTRtMMlr_5g,185
204
- sempy_labs/theme/_org_themes.py,sha256=7W9AsDNQ3JaQBovg_EEev-NRD8VEvzpelBspS7vsUTM,3296
206
+ sempy_labs/theme/_org_themes.py,sha256=ArLqr1KYI6CT1_mxKOsZlVPaTO0KSkkQ1LbFy4A1fqg,3323
205
207
  sempy_labs/tom/__init__.py,sha256=ZwSpgYDP5VamZTnYP3a1cYHiaKdktOvlOBSOY1816zY,107
206
- sempy_labs/tom/_model.py,sha256=vAHPuRr3BK0qzFAXMBpztvuvDjDI9yBfRhdBk1FlIW0,222768
208
+ sempy_labs/tom/_model.py,sha256=W74vT2th6UfMFrvfWKXV20ieIMZIaoEDr1Y5SUpZUA0,222514
207
209
  sempy_labs/variable_library/__init__.py,sha256=qyTw5vNldnwYv-TotQSFupwznKIQfcws1UxGjf1RNNo,437
208
210
  sempy_labs/variable_library/_functions.py,sha256=eoB3hUKFGdGMSBNDEsEF9bVoELZp5AnyDxp5BsLGeDc,13733
209
- semantic_link_labs-0.11.3.dist-info/METADATA,sha256=sbLyEIHvlDZOQ0XWi_bdJ7fsEXCmQzz_swfe_OMafUg,27458
210
- semantic_link_labs-0.11.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
211
- semantic_link_labs-0.11.3.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
212
- semantic_link_labs-0.11.3.dist-info/RECORD,,
211
+ semantic_link_labs-0.12.1.dist-info/METADATA,sha256=pT9s2npkcYOCBOOAbEbFPoDqw_Qky5z_13WMH4bpgYc,27545
212
+ semantic_link_labs-0.12.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
213
+ semantic_link_labs-0.12.1.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
214
+ semantic_link_labs-0.12.1.dist-info/RECORD,,
sempy_labs/__init__.py CHANGED
@@ -188,6 +188,8 @@ from ._workspaces import (
188
188
  unassign_workspace_from_capacity,
189
189
  list_workspace_role_assignments,
190
190
  delete_workspace,
191
+ get_workspace_network_communication_policy,
192
+ set_workspace_network_communication_policy,
191
193
  )
192
194
  from ._notebooks import (
193
195
  get_notebook_definition,
@@ -282,6 +284,7 @@ from ._list_functions import (
282
284
  list_synonyms,
283
285
  )
284
286
  from ._helper_functions import (
287
+ get_item_definition,
285
288
  copy_item,
286
289
  convert_to_friendly_case,
287
290
  resolve_environment_id,
@@ -593,4 +596,7 @@ __all__ = [
593
596
  "copy_item",
594
597
  "search_notebooks",
595
598
  "list_notebooks",
599
+ "get_item_definition",
600
+ "get_workspace_network_communication_policy",
601
+ "set_workspace_network_communication_policy",
596
602
  ]
sempy_labs/_a_lib_info.py CHANGED
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.11.3"
2
+ lib_version = "0.12.1"
@@ -1,18 +1,27 @@
1
- from typing import Literal, Optional
2
- from sempy.fabric._token_provider import TokenProvider
1
+ from typing import Dict, Literal, Optional
2
+ from azure.core.credentials import AccessToken, TokenCredential
3
3
  from azure.identity import ClientSecretCredential
4
4
  from sempy._utils._log import log
5
5
  from contextlib import contextmanager
6
6
  import contextvars
7
7
 
8
8
 
9
- class ServicePrincipalTokenProvider(TokenProvider):
9
+ class ServicePrincipalTokenProvider(TokenCredential):
10
10
  """
11
- Implementation of the sempy.fabric.TokenProvider to be used with Service Principal.
11
+ A class to acquire authentication token with Service Principal.
12
12
 
13
13
  For more information on Service Principal see: `Application and service principal objects in Microsoft Entra ID <https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser#service-principal-object>`_
14
14
  """
15
15
 
16
+ _shorthand_scopes: Dict[str, str] = {
17
+ "pbi": "https://analysis.windows.net/powerbi/api/.default",
18
+ "storage": "https://storage.azure.com/.default",
19
+ "azure": "https://management.azure.com/.default",
20
+ "graph": "https://graph.microsoft.com/.default",
21
+ "asazure": "https://{region}.asazure.windows.net/.default",
22
+ "keyvault": "https://vault.azure.net/.default",
23
+ }
24
+
16
25
  def __init__(self, credential: ClientSecretCredential):
17
26
 
18
27
  self.credential = credential
@@ -20,7 +29,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
20
29
  @classmethod
21
30
  def from_aad_application_key_authentication(
22
31
  cls, tenant_id: str, client_id: str, client_secret: str
23
- ):
32
+ ) -> "ServicePrincipalTokenProvider":
24
33
  """
25
34
  Generates the ServicePrincipalTokenProvider, providing the Service Principal information.
26
35
 
@@ -37,7 +46,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
37
46
 
38
47
  Returns
39
48
  -------
40
- sempy.fabric.TokenProvider
49
+ ServicePrincipalTokenProvider
41
50
  Token provider to be used with FabricRestClient or PowerBIRestClient.
42
51
  """
43
52
  credential = ClientSecretCredential(
@@ -57,7 +66,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
57
66
  key_vault_tenant_id: str,
58
67
  key_vault_client_id: str,
59
68
  key_vault_client_secret: str,
60
- ):
69
+ ) -> "ServicePrincipalTokenProvider":
61
70
  """
62
71
  Generates the ServicePrincipalTokenProvider, providing the Azure Key Vault details.
63
72
 
@@ -76,7 +85,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
76
85
 
77
86
  Returns
78
87
  -------
79
- sempy.fabric.TokenProvider
88
+ ServicePrincipalTokenProvider
80
89
  Token provider to be used with FabricRestClient or PowerBIRestClient.
81
90
  """
82
91
 
@@ -117,32 +126,69 @@ class ServicePrincipalTokenProvider(TokenProvider):
117
126
  region : str, default=None
118
127
  The region of the Azure Analysis Services. For example: 'westus2'.
119
128
  """
120
- if audience == "pbi":
121
- return self.credential.get_token(
122
- "https://analysis.windows.net/powerbi/api/.default"
123
- ).token
124
- elif audience == "storage":
125
- return self.credential.get_token("https://storage.azure.com/.default").token
126
- elif audience == "azure":
127
- return self.credential.get_token(
128
- "https://management.azure.com/.default"
129
- ).token
130
- elif audience == "graph":
131
- return self.credential.get_token(
132
- "https://graph.microsoft.com/.default"
133
- ).token
134
- elif audience == "asazure":
135
- return self.credential.get_token(
136
- f"https://{region}.asazure.windows.net/.default"
137
- ).token
138
- elif audience == "keyvault":
139
- return self.credential.get_token("https://vault.azure.net/.default").token
140
- else:
129
+ # Check if audience is supported
130
+ if audience not in self._shorthand_scopes:
141
131
  raise NotImplementedError
142
132
 
133
+ return self.get_token(audience).token
134
+
135
+ def get_token(self, *scopes, **kwargs) -> AccessToken:
136
+ """
137
+ Gets a token for the specified scopes.
138
+
139
+ Parameters
140
+ ----------
141
+ *scopes : str
142
+ The scopes for which to obtain a token.
143
+ **kwargs : dict
144
+ Additional parameters to pass to the token request.
145
+
146
+ Returns
147
+ -------
148
+ AccessToken
149
+ The access token.
150
+ """
151
+ if len(scopes) == 0:
152
+ scopes = ("pbi",)
153
+
154
+ region = kwargs.pop("region", None)
155
+ scopes = [
156
+ self._get_fully_qualified_scope(scope, region=region) for scope in scopes
157
+ ]
158
+ return self.credential.get_token(*scopes, **kwargs)
159
+
160
+ def _get_fully_qualified_scope(
161
+ self, scope: str, region: Optional[str] = None
162
+ ) -> str:
163
+ """
164
+ Resolve to fully qualified scope if Fabric short-handed scope is given.
165
+ Otherwise, return the original scope.
166
+
167
+ Parameters
168
+ ----------
169
+ scope : str
170
+ The scope to resolve.
171
+ region : str, default=None
172
+ The specific region to use to resolve scope.
173
+ Required if scope is "asazure".
174
+
175
+ Returns
176
+ -------
177
+ str
178
+ The resolved scope.
179
+ """
180
+ fully_qualified_scope = self._shorthand_scopes.get(scope, scope)
181
+
182
+ if scope == "asazure":
183
+ if region is None:
184
+ raise ValueError("Region is required for 'asazure' scope")
185
+ return fully_qualified_scope.format(region=region)
186
+
187
+ return fully_qualified_scope
188
+
143
189
 
144
190
  def _get_headers(
145
- token_provider: str,
191
+ token_provider: TokenCredential,
146
192
  audience: Literal[
147
193
  "pbi", "storage", "azure", "graph", "asazure", "keyvault"
148
194
  ] = "azure",
@@ -151,7 +197,7 @@ def _get_headers(
151
197
  Generates headers for an API request.
152
198
  """
153
199
 
154
- token = token_provider(audience=audience)
200
+ token = token_provider.get_token(audience).token
155
201
 
156
202
  headers = {"Authorization": f"Bearer {token}"}
157
203
 
@@ -202,7 +248,14 @@ def service_principal_authentication(
202
248
  )
203
249
  )
204
250
  try:
205
- yield
251
+ from sempy.fabric import set_service_principal
252
+
253
+ with set_service_principal(
254
+ (key_vault_uri, key_vault_tenant_id),
255
+ (key_vault_uri, key_vault_client_id),
256
+ client_secret=(key_vault_uri, key_vault_client_secret),
257
+ ):
258
+ yield
206
259
  finally:
207
260
  # Restore the prior state
208
261
  if prior_token is None:
sempy_labs/_capacities.py CHANGED
@@ -4,12 +4,12 @@ import sempy_labs._icons as icons
4
4
  from sempy.fabric.exceptions import FabricHTTPException
5
5
  import requests
6
6
  import pandas as pd
7
- from ._authentication import (
7
+ from sempy_labs._authentication import (
8
8
  _get_headers,
9
9
  ServicePrincipalTokenProvider,
10
10
  )
11
11
  from uuid import UUID
12
- from ._helper_functions import (
12
+ from sempy_labs._helper_functions import (
13
13
  _is_valid_uuid,
14
14
  _update_dataframe_datatypes,
15
15
  _base_api,
@@ -2,20 +2,20 @@ import sempy.fabric as fabric
2
2
  from typing import Optional, List
3
3
  from sempy._utils._log import log
4
4
  import sempy_labs._icons as icons
5
- from ._workspaces import assign_workspace_to_capacity
6
- from .admin import (
5
+ from sempy_labs._workspaces import assign_workspace_to_capacity
6
+ from sempy_labs.admin import (
7
7
  assign_workspaces_to_capacity,
8
8
  )
9
9
  from .admin._capacities import (
10
10
  _list_capacities_meta,
11
11
  list_capacities,
12
12
  )
13
- from ._helper_functions import (
13
+ from sempy_labs._helper_functions import (
14
14
  resolve_capacity_id,
15
15
  convert_to_alphanumeric_lowercase,
16
16
  _base_api,
17
17
  )
18
- from ._capacities import create_fabric_capacity
18
+ from sempy_labs._capacities import create_fabric_capacity
19
19
  from uuid import UUID
20
20
 
21
21
 
@@ -1,5 +1,5 @@
1
1
  import sempy.fabric as fabric
2
- from ._helper_functions import (
2
+ from sempy_labs._helper_functions import (
3
3
  is_default_semantic_model,
4
4
  _get_adls_client,
5
5
  resolve_workspace_name_and_id,