semantic-link-labs 0.12.1__py3-none-any.whl → 0.12.3__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 (32) hide show
  1. {semantic_link_labs-0.12.1.dist-info → semantic_link_labs-0.12.3.dist-info}/METADATA +4 -2
  2. {semantic_link_labs-0.12.1.dist-info → semantic_link_labs-0.12.3.dist-info}/RECORD +32 -26
  3. sempy_labs/__init__.py +12 -0
  4. sempy_labs/_a_lib_info.py +1 -1
  5. sempy_labs/_data_access_security.py +98 -0
  6. sempy_labs/_data_pipelines.py +23 -9
  7. sempy_labs/_dataflows.py +0 -1
  8. sempy_labs/_deployment_pipelines.py +49 -27
  9. sempy_labs/_eventstreams.py +9 -1
  10. sempy_labs/_generate_semantic_model.py +2 -2
  11. sempy_labs/_get_connection_string.py +84 -0
  12. sempy_labs/_helper_functions.py +17 -1
  13. sempy_labs/_job_scheduler.py +63 -33
  14. sempy_labs/_labels.py +4 -6
  15. sempy_labs/_model_dependencies.py +5 -2
  16. sempy_labs/_semantic_models.py +118 -0
  17. sempy_labs/_sql_endpoints.py +12 -24
  18. sempy_labs/_warehouses.py +1 -1
  19. sempy_labs/admin/__init__.py +6 -0
  20. sempy_labs/admin/_sharing_links.py +110 -0
  21. sempy_labs/graph/__init__.py +16 -0
  22. sempy_labs/graph/_groups.py +157 -2
  23. sempy_labs/graph/_sensitivity_labels.py +81 -0
  24. sempy_labs/graph/_users.py +162 -0
  25. sempy_labs/lakehouse/_shortcuts.py +16 -11
  26. sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +9 -0
  27. sempy_labs/report/_bpareporttemplate/.platform +11 -0
  28. sempy_labs/report/_reportwrapper.py +53 -6
  29. sempy_labs/tom/_model.py +49 -18
  30. {semantic_link_labs-0.12.1.dist-info → semantic_link_labs-0.12.3.dist-info}/WHEEL +0 -0
  31. {semantic_link_labs-0.12.1.dist-info → semantic_link_labs-0.12.3.dist-info}/licenses/LICENSE +0 -0
  32. {semantic_link_labs-0.12.1.dist-info → semantic_link_labs-0.12.3.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.12.1
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.1&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,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.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
158
+ * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
157
159
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
158
160
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
159
161
  * [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
@@ -1,6 +1,6 @@
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
1
+ semantic_link_labs-0.12.3.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
+ sempy_labs/__init__.py,sha256=YHGcCDoS9Vr9GPSIZ0ziX0bih9J6qrCDFHFBp4iep5g,16533
3
+ sempy_labs/_a_lib_info.py,sha256=CqHuHL_fnKTvOytnNfVS-2H843UDtuG44yT4bAY9aOA,53
4
4
  sempy_labs/_ai.py,sha256=fiI3RCadJ2jG15vZIWD9rKVhvmGWoD9uth9-PlSPBNs,16196
5
5
  sempy_labs/_authentication.py,sha256=-mSXB3tlVhutOo2nhmQQOllWWVvuy4G9rTM77v4S8lw,8485
6
6
  sempy_labs/_capacities.py,sha256=TQYlbM0LP21G-KsW6QrJ7heBzKL42XxA939VldWiKeg,40436
@@ -8,30 +8,32 @@ sempy_labs/_capacity_migration.py,sha256=g675DY2YgsVA_ffb_8WNdARVMyHh8iu2P94QWLl
8
8
  sempy_labs/_clear_cache.py,sha256=UY_pljGeqb168Qe5sP66ecLeREPN4NMpjIEocCmxg0M,13201
9
9
  sempy_labs/_connections.py,sha256=deIovVV2JOx4QW-4-A_V9O6l-FJPh3JWTGmIXZ_YH2M,19821
10
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
11
+ sempy_labs/_data_access_security.py,sha256=F4J6WS54m341zRcGXlnj_Q6gtUPzHMoiuAraplORZBs,3375
12
+ sempy_labs/_data_pipelines.py,sha256=3XGKSyIkvWywtiwi3FX0LB2fxxp2EWMGnU3zQGGleDI,5477
13
+ sempy_labs/_dataflows.py,sha256=syu33ckJeI9w5H9fPnEqq_6pZ-5K1y5t-PuXdVAqBwk,20352
13
14
  sempy_labs/_dax.py,sha256=Q_GylKeuHFnRB_sztZS1ON5v5tr6ua6lc9elyJYKbV8,17219
14
15
  sempy_labs/_daxformatter.py,sha256=A2jTg9kSAye_LuIsCYmaYq5EbInAMfbDylHrERGB3Cs,3037
15
16
  sempy_labs/_delta_analyzer.py,sha256=d6qxZrEhn3Hfg5qMQODt7dDG5mYSY18xeXUkW_NyMgw,17281
16
17
  sempy_labs/_delta_analyzer_history.py,sha256=9v627Ubxbz4Dn2IAASUNu_sww9V3scoWgGk3yAWJIr0,10893
17
- sempy_labs/_deployment_pipelines.py,sha256=PRTcSeMxmce4kzMjfhryGrD31GFAbFBSxuCkRbbArrM,6303
18
+ sempy_labs/_deployment_pipelines.py,sha256=MyCbAWYt9SWdG9v0iFrRN5YqgjiCBDsuroQJba7obx4,7068
18
19
  sempy_labs/_dictionary_diffs.py,sha256=DCXuASmt45gshsBO1FgSZDqxm68DnojuDcO-H35EH7Q,9003
19
20
  sempy_labs/_documentation.py,sha256=_TzhSYzGBVZYPaHm34T8dtTCbc_t4Mx45EzQKwD048g,5051
20
21
  sempy_labs/_environments.py,sha256=uY8CS0FJx1BDTCZmYO7-QDv-ezgfXpSwRrf4OYX2KeI,5984
21
22
  sempy_labs/_eventhouses.py,sha256=AJXJ00AOfEaKq0wagZfoLHorztyLHaRx6pkdbunCvFI,5934
22
- sempy_labs/_eventstreams.py,sha256=XkaUohgAx3v_U7ATWd_TOobphnezxO5nyt_mwF21bPk,3556
23
+ sempy_labs/_eventstreams.py,sha256=o9DPk1nBS3TDbokPP9AEtM18CmtRhaHI7LGZ2sRmTeA,4118
23
24
  sempy_labs/_external_data_shares.py,sha256=qHirKpBGseQOkg3xHOM5450Wpz3vmWfG3xexYjLQT9M,8945
24
25
  sempy_labs/_gateways.py,sha256=Nsb2qSXiAVS0CELhjji4FkKVBdnXhP-6spqqTBZc6sU,18100
25
- sempy_labs/_generate_semantic_model.py,sha256=hK2f61PR55080smJBIrq7BgcoTWal_4i4eQulwHjtos,18236
26
+ sempy_labs/_generate_semantic_model.py,sha256=jx6azjeLRiFTOF1up4u6emwOoD_EqFy1X18LyDcReb8,18236
27
+ sempy_labs/_get_connection_string.py,sha256=55AAckOhWLC2Vz1bIjseGkWrC6pnN3sgIfLD8hAy45w,2989
26
28
  sempy_labs/_git.py,sha256=x8BrvkJNWkP6I-_os_wdNjEZVNViqfINmc-q7sGoQ3Q,17903
27
29
  sempy_labs/_graphQL.py,sha256=WDallUQBiOqJdz0aJmYH3cUXCOW_AqhFLs0EpV8_5Rw,2749
28
- sempy_labs/_helper_functions.py,sha256=O15Jlw23ECCupLs2vBojcXh7BQ7R3mj14MonVRzsiEk,84726
30
+ sempy_labs/_helper_functions.py,sha256=YBsKm2bC29QluFy156nPBZ-h1GDVjkFxLqFF_VQVU2c,85192
29
31
  sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
30
- sempy_labs/_job_scheduler.py,sha256=N2zukwZk69pHSb0YYeOHV2Q9M1IYA9Ho8R1YGAGdM20,17790
32
+ sempy_labs/_job_scheduler.py,sha256=iCrtFD3pWwUCmjPwV4XzMbmJn_Bn2DwDvedxN9qQNFo,18868
31
33
  sempy_labs/_kql_databases.py,sha256=Wr338mNf0wzvpBJYHbWHjzUudoeMZMUia_smdkzbPfI,4796
32
34
  sempy_labs/_kql_querysets.py,sha256=C7nRv03riGJc7sbeGNz1R6dom6Wb-5dno_wAhFep468,4128
33
35
  sempy_labs/_kusto.py,sha256=g3Up4j1KNdIGC2DDbvoduCdX1Pp8fAPGAlBAqOtaBeg,4544
34
- sempy_labs/_labels.py,sha256=UfGUSicESu5uhBzRsrIRiKtZoVH3lPo_rlbYClKP8X0,3770
36
+ sempy_labs/_labels.py,sha256=nPSf2lbXELAnh7-doOIw-i1MJYK-wNLW9asv3QYuxBg,3580
35
37
  sempy_labs/_list_functions.py,sha256=VMjUzYdqKhAYpWV_tuIuhDxzV1K2Al_aTCPKw6A2qCU,59824
36
38
  sempy_labs/_managed_private_endpoints.py,sha256=dsjaUVq_t9DlcAw5EaQfhi4FVbM71w8RKFkDFb80x5E,7068
37
39
  sempy_labs/_mirrored_databases.py,sha256=njjHHqXiTBNA_424MrgaE-O7lvZiyvCEen0aTcrjogs,14832
@@ -41,16 +43,16 @@ sempy_labs/_model_auto_build.py,sha256=LpeRDY-L3b8LxvxmbUXZGDfzlqcs84rAPePf9XgJ0
41
43
  sempy_labs/_model_bpa.py,sha256=ZPsBxDaxLRc3xcOCfvzK2GBCCmNTPLMP3jzW5IHcrXY,22041
42
44
  sempy_labs/_model_bpa_bulk.py,sha256=hRY3dRBUtecrbscCZsEGv6TpCVqg_zAi8NmRq6dVMiE,15845
43
45
  sempy_labs/_model_bpa_rules.py,sha256=SZKUHEsWzvivpNQK28zkmaJ1Z16o6_XdQPcpwxznPTg,46299
44
- sempy_labs/_model_dependencies.py,sha256=0xGgubrq76zIvBdEqmEX_Pd6WdizXFVECBW6BPl2DZo,13162
46
+ sempy_labs/_model_dependencies.py,sha256=iAEbaInRDiKPqx0JFl35Yby6pD1STo3ruZrBK0wsAU8,13213
45
47
  sempy_labs/_mounted_data_factories.py,sha256=jNlSxtUs_LNwE7R9HQusBAksk2QbinKyDx3ySe_q9q4,3924
46
48
  sempy_labs/_notebooks.py,sha256=_0Ug6SF2bihCEFt6P-6DjoGj3302OlDfXmfOJ-ue5Tg,14395
47
49
  sempy_labs/_one_lake_integration.py,sha256=aThg8Fcei9qTFUTzg2Qwsn-3deTk0ICTCXx53Y23oso,6293
48
50
  sempy_labs/_query_scale_out.py,sha256=tcIEJSHjZ1gh7--WMS8sDqDfF3wbfIEX9Xm2qgahXrc,15348
49
51
  sempy_labs/_refresh_semantic_model.py,sha256=yu92m4Ys6lbW68PP9tVCeUNHXj7cGXvyGr2WYRqgl1g,17365
50
- sempy_labs/_semantic_models.py,sha256=PbDM0u1mv6-aRwUJbxfsGm2yFFBTJvYotLFUHyvMF6g,12585
52
+ sempy_labs/_semantic_models.py,sha256=WGIyzDA6AiuJG6A3VSMMNtVlUbAcHrEKJNTfxyiYosM,16975
51
53
  sempy_labs/_spark.py,sha256=aQAqmRAm04NWH9j4_qmYJAWdIluoWKzHDTBPr01GWbA,19404
52
54
  sempy_labs/_sql.py,sha256=Y7yRO8j0P6h68VNaqmWVSyfLrI9L9TMBLykovDkgIzY,8274
53
- sempy_labs/_sql_endpoints.py,sha256=eD2i5r7l9FA9YIW4i0PIpsG3H5mr1HPXJ9g6Lae1uNQ,6766
55
+ sempy_labs/_sql_endpoints.py,sha256=EUiJxWdnivxYw5ZQxam9kipxy67RZfUVSJUpKnaUw0Q,6679
54
56
  sempy_labs/_sqldatabase.py,sha256=vmTsB1IAluQ99cf8fmcPO2z0SjAjTOM8OCD5nuJdSOI,6908
55
57
  sempy_labs/_tags.py,sha256=tqQlj7AvbaniN8mZl59g145Ofj_wdA6Bnrna0PzlwI4,5897
56
58
  sempy_labs/_translations.py,sha256=6A8CPmH_xvsONX4dOG5XSZ-XeJuAy5VokFJql6uf_Ak,1432
@@ -58,7 +60,7 @@ sempy_labs/_user_delegation_key.py,sha256=dj540zd_IGNt2GQ_a69_8IBoyZdpldx_3z6NxN
58
60
  sempy_labs/_utils.py,sha256=X7wcjg809ZyEgf6fE0mZIv9qe1n1oQX_hHXEHgR4u0U,2737
59
61
  sempy_labs/_vertipaq.py,sha256=1UvB79xOxeGdRFINsUsreXxtZtiatHlACAfbQhv45as,38536
60
62
  sempy_labs/_vpax.py,sha256=4rtXXGVoadvdu7uiU9PVsgKszST3XH-K56zmWdMmZEg,15471
61
- sempy_labs/_warehouses.py,sha256=xCdj7Mvleolbxp3Wbtgj-RLO2OnjNNNffPFDADItsS0,7778
63
+ sempy_labs/_warehouses.py,sha256=l5oJQTwqi0yW6ewHM2mS9TmRy7w1IWeeyQjDHJgWnuU,7788
62
64
  sempy_labs/_workloads.py,sha256=K2KPY1_e6SDqz_NQDBrrMlRwzEyVV5dqd1shBs8Bu6E,4731
63
65
  sempy_labs/_workspace_identity.py,sha256=rLzrNjnWbpjNn4bu7xW0nSjG9t1nbc4xG6BdkZNKP1Q,2605
64
66
  sempy_labs/_workspaces.py,sha256=djjY7zLLKqsN0UJqzVpCp3j6_k81RP3VimCv1IM8Eb4,18334
@@ -100,7 +102,7 @@ sempy_labs/_bpa_translation/_model/_translations_tr-TR.po,sha256=NdW-X4E0QmeLKM0
100
102
  sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L6738FjpJ8o4spwp8FNFGbVItHD-_ec,43500
101
103
  sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
102
104
  sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
103
- sempy_labs/admin/__init__.py,sha256=wwjwMS19-Fg2Et0D9N9NBT_svfPEhG-o4pKP_NX2kNw,3914
105
+ sempy_labs/admin/__init__.py,sha256=B6cdHZ6wrGXZSr7kDn3D4xSsya8GPkupfsFVXl4nRAc,4062
104
106
  sempy_labs/admin/_activities.py,sha256=SN-uAEWvFO5nKuw4Yi483niixzxShDGMXRv0SV4s4Bk,6833
105
107
  sempy_labs/admin/_apps.py,sha256=4R-VZqo9SGIrwqcQfnFGXIWueBhr4mSI7H8SUlLVl8s,4131
106
108
  sempy_labs/admin/_artifacts.py,sha256=IQ1BOVKMK8Qy_5HpREUso6_NWXbftIodWekByvVvJ5k,2315
@@ -115,6 +117,7 @@ sempy_labs/admin/_items.py,sha256=LBvUUzqp2wV8YRiXCQGUhv7BoCbalZUojlvCukd1h6Y,90
115
117
  sempy_labs/admin/_reports.py,sha256=JrmooHhiS4ViZsVinUz5T_9oZ7bdn1fIeW_wI8L1BnY,7908
116
118
  sempy_labs/admin/_scanner.py,sha256=0dNfl9W25RTxIQj1rMGhQrH1ioGWpf3-CiZOxHLZ5hQ,4345
117
119
  sempy_labs/admin/_shared.py,sha256=axTqVqp1V1tDtq2YTuSD6M0ST4lAjXqcIfRHwkZqyOQ,3115
120
+ sempy_labs/admin/_sharing_links.py,sha256=MGCpAS8F5XfpCytP3UU_AE-kFxurk5A0ctKUiUfTZZA,3830
118
121
  sempy_labs/admin/_tags.py,sha256=emIA626JoC9Cp_vesVNFwahUdDLAK48APNsdG5ki1Xo,3788
119
122
  sempy_labs/admin/_tenant.py,sha256=8mewLN79Lf3a-HUKG6Cl8Oimb2kv3r7XWAJKzvEHBMc,19581
120
123
  sempy_labs/admin/_tenant_keys.py,sha256=9yajAPmsbjT25g1-4YbcRkXK8n3JcTFKVOnR0lt2BmU,2762
@@ -134,10 +137,11 @@ sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=dX
134
137
  sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=EQpePqgTsetDG5JJrL5pfYjibmsuzrYk6x2mj0PDfEY,8984
135
138
  sempy_labs/directlake/_warm_cache.py,sha256=ks_rX2WOUk77rLsvwsCYyQOx-5U-pts27_guLYgMw6w,9236
136
139
  sempy_labs/dotnet_lib/dotnet.runtime.config.json,sha256=syhDFQv6cEmZnE1WtFjNe3NwhsIsnd-CFULv-vEWOFI,167
137
- sempy_labs/graph/__init__.py,sha256=fIx2ks5EhOiZ-8orZ7jq7txfwmfhlJ-4BdLWowm4YmE,572
138
- sempy_labs/graph/_groups.py,sha256=YRFrsJbHGCraUBlqRaL2VEN4BoGGmS2PoLjHcA6D8ME,12935
140
+ sempy_labs/graph/__init__.py,sha256=LLWs0t_rdu4oGBz9948Ob1UPDscDjhTWAswO8B4YthY,891
141
+ sempy_labs/graph/_groups.py,sha256=T3uzMepJC3SYISV4C9y4sVY7r_qH609sScBMljhC5rY,17763
142
+ sempy_labs/graph/_sensitivity_labels.py,sha256=tTTBQDevbaG5cdmCjgzbXIigamOi_Tx9o_2Wkfkc0bY,2907
139
143
  sempy_labs/graph/_teams.py,sha256=UH5ETsReD0pzmdgqQFkcX_95o1aUAv2lAajRJc0RIZY,3175
140
- sempy_labs/graph/_users.py,sha256=cVd-FrEIsQ43c1GG5eCiZ3-xIYciQKrPcfj2fn7x5nY,9929
144
+ sempy_labs/graph/_users.py,sha256=2QwwUYfaJnPHPY6M2a9QBWYwwkVDjpcbOQd_Bo9GjJ8,15181
141
145
  sempy_labs/lakehouse/__init__.py,sha256=jOCjgkIZgwl373pb6lmEwqIkbifwJUKY3K0eZ8LAVws,1245
142
146
  sempy_labs/lakehouse/_blobs.py,sha256=peVPDCw97sB1x9a4KMKOqUB2Igu82-gb4CsvGdbubrU,8557
143
147
  sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=QVxejuu4WFGkG-c2i9B_H6dZsb1m_FRSTraS9GahnT4,3681
@@ -146,7 +150,7 @@ sempy_labs/lakehouse/_helper.py,sha256=q-z6DTO3-Iy5hM9zXpZhXRD1OPp7JAzGhcyJ_VheD
146
150
  sempy_labs/lakehouse/_lakehouse.py,sha256=tJFeXG1U_GcEW1EVMQKIQpz6kqh_aatAGo208cDCE0Y,10262
147
151
  sempy_labs/lakehouse/_livy_sessions.py,sha256=XwEA0QkcFCbCGxSO6MJ5GZ-j9kjNIBiQhIkWG_Znm0E,6034
148
152
  sempy_labs/lakehouse/_materialized_lake_views.py,sha256=EOyVxEo_SaEuVELQzhrWIZVbd-HB7iRbyx0JVpWg1xA,2814
149
- sempy_labs/lakehouse/_shortcuts.py,sha256=ESBVIVY_ROcMgGXFeCJav14PkDhRFqeruDDDTJncgi4,16935
153
+ sempy_labs/lakehouse/_shortcuts.py,sha256=_XzyX1PCxZaDdZgMr9pyQ_sQyZD0S0tA9iViVl8B5WU,17089
150
154
  sempy_labs/migration/__init__.py,sha256=aA8r2g2mN_elPG8qptXlRiIcyQ9Z5hjKJo23fSNm1RY,1015
151
155
  sempy_labs/migration/_create_pqt_file.py,sha256=IztG7XKAg98zZiWW0oUMtO7WnuqvcmE96gOAwe3UiKg,9659
152
156
  sempy_labs/migration/_direct_lake_to_import.py,sha256=XBGQUTHp3uVgOcRk85aPtMlfdaXhrdh9AkaA0AglfSc,3987
@@ -173,9 +177,11 @@ sempy_labs/report/_report_functions.py,sha256=cBJhjoC6iNYF-I6Ak1a2i2EKQykA5TPVLo
173
177
  sempy_labs/report/_report_helper.py,sha256=L9wU0N0rvTUMglZHTxcowywrBDuZvZTv3DA4JrX84Os,7207
174
178
  sempy_labs/report/_report_list_functions.py,sha256=m_Wf1YeZmNtOfCwIILpKUuVR7V2CnwnfhDjz1DDTxOI,3945
175
179
  sempy_labs/report/_report_rebind.py,sha256=c4-dPCvjqnwdsasjCFlsTo8w6TvhAQ7WPRmAb-mowns,6437
176
- sempy_labs/report/_reportwrapper.py,sha256=GI38yGY_mXlFhE-WD8-0oHlL6kmU-M_kBcPp1qozgt0,110493
180
+ sempy_labs/report/_reportwrapper.py,sha256=HP-ZOGmva5y1ZsxuA2QTddyVjF2nXOm0YEbe5OfrXm8,112178
177
181
  sempy_labs/report/_save_report.py,sha256=0P1WwIBtSgwrhnjWWvf9xf-e7ifka3DWVF0HM5zeXps,5998
182
+ sempy_labs/report/_bpareporttemplate/.platform,sha256=kWRa6B_KwSYLsvVFDx372mQriQO8v7dJ_YzQV_cfD-Q,303
178
183
  sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
184
+ sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json,sha256=kzjBlNdjbsSBBSHBwbQc298AJCr9Vp6Ex0D5PemUuT0,1578
179
185
  sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json,sha256=4N6sT5nLlYBobGmZ1Xb68uOMVVCBEyheR535js_et28,13467
180
186
  sempy_labs/report/_bpareporttemplate/definition/report.json,sha256=-8BK5blTE-nc0Y4-M0pTHD8Znt3pHZ-u2veRppxPDBQ,3975
181
187
  sempy_labs/report/_bpareporttemplate/definition/version.json,sha256=yL3ZZqhfHqq0MS0glrbXtQgkPk17xaTSWvPPyxBWpOc,152
@@ -205,10 +211,10 @@ sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visua
205
211
  sempy_labs/theme/__init__.py,sha256=JN0z8w_Hc7VUIchRbpY-rjU6879msrFiSTRtMMlr_5g,185
206
212
  sempy_labs/theme/_org_themes.py,sha256=ArLqr1KYI6CT1_mxKOsZlVPaTO0KSkkQ1LbFy4A1fqg,3323
207
213
  sempy_labs/tom/__init__.py,sha256=ZwSpgYDP5VamZTnYP3a1cYHiaKdktOvlOBSOY1816zY,107
208
- sempy_labs/tom/_model.py,sha256=W74vT2th6UfMFrvfWKXV20ieIMZIaoEDr1Y5SUpZUA0,222514
214
+ sempy_labs/tom/_model.py,sha256=8ArPJJJ8Wgo6FYWfEPWlVl60Umq8INdU6NOyMXaYavY,223643
209
215
  sempy_labs/variable_library/__init__.py,sha256=qyTw5vNldnwYv-TotQSFupwznKIQfcws1UxGjf1RNNo,437
210
216
  sempy_labs/variable_library/_functions.py,sha256=eoB3hUKFGdGMSBNDEsEF9bVoELZp5AnyDxp5BsLGeDc,13733
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,,
217
+ semantic_link_labs-0.12.3.dist-info/METADATA,sha256=HhegWEKJLmk-NZMGq9L4gRnrODhbC3HzSvlZNZnRw3M,27747
218
+ semantic_link_labs-0.12.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
219
+ semantic_link_labs-0.12.3.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
220
+ semantic_link_labs-0.12.3.dist-info/RECORD,,
sempy_labs/__init__.py CHANGED
@@ -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,
@@ -347,6 +349,12 @@ from ._vertipaq import (
347
349
  from ._user_delegation_key import (
348
350
  get_user_delegation_key,
349
351
  )
352
+ from ._data_access_security import (
353
+ list_data_access_roles,
354
+ )
355
+ from ._get_connection_string import (
356
+ get_connection_string,
357
+ )
350
358
 
351
359
  __all__ = [
352
360
  "resolve_warehouse_id",
@@ -599,4 +607,8 @@ __all__ = [
599
607
  "get_item_definition",
600
608
  "get_workspace_network_communication_policy",
601
609
  "set_workspace_network_communication_policy",
610
+ "get_connection_string",
611
+ "list_data_access_roles",
612
+ "bind_semantic_model_connection",
613
+ "unbind_semantic_model_connection",
602
614
  ]
sempy_labs/_a_lib_info.py CHANGED
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.1"
2
+ lib_version = "0.12.3"
@@ -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
 
sempy_labs/_dataflows.py CHANGED
@@ -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
@@ -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.