semantic-link-labs 0.12.2__py3-none-any.whl → 0.12.4__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 (40) hide show
  1. {semantic_link_labs-0.12.2.dist-info → semantic_link_labs-0.12.4.dist-info}/METADATA +5 -3
  2. {semantic_link_labs-0.12.2.dist-info → semantic_link_labs-0.12.4.dist-info}/RECORD +39 -31
  3. sempy_labs/__init__.py +18 -10
  4. sempy_labs/_a_lib_info.py +1 -1
  5. sempy_labs/_authentication.py +1 -1
  6. sempy_labs/_capacities.py +1 -1
  7. sempy_labs/_generate_semantic_model.py +2 -2
  8. sempy_labs/_get_connection_string.py +84 -0
  9. sempy_labs/_git.py +1 -1
  10. sempy_labs/_helper_functions.py +28 -4
  11. sempy_labs/_list_functions.py +55 -5
  12. sempy_labs/_managed_private_endpoints.py +1 -1
  13. sempy_labs/_notebooks.py +4 -2
  14. sempy_labs/_semantic_models.py +118 -0
  15. sempy_labs/_sql_audit_settings.py +208 -0
  16. sempy_labs/_sql_endpoints.py +27 -24
  17. sempy_labs/_utils.py +2 -0
  18. sempy_labs/_warehouses.py +1 -56
  19. sempy_labs/admin/__init__.py +6 -0
  20. sempy_labs/admin/_items.py +3 -3
  21. sempy_labs/admin/_labels.py +211 -0
  22. sempy_labs/directlake/_warm_cache.py +3 -1
  23. sempy_labs/eventstream/__init__.py +37 -0
  24. sempy_labs/eventstream/_items.py +263 -0
  25. sempy_labs/eventstream/_topology.py +652 -0
  26. sempy_labs/graph/__init__.py +12 -0
  27. sempy_labs/graph/_groups.py +60 -53
  28. sempy_labs/graph/_sensitivity_labels.py +120 -0
  29. sempy_labs/graph/_teams.py +19 -18
  30. sempy_labs/graph/_user_licenses.py +96 -0
  31. sempy_labs/graph/_users.py +23 -16
  32. sempy_labs/lakehouse/_get_lakehouse_tables.py +33 -1
  33. sempy_labs/lakehouse/_lakehouse.py +6 -2
  34. sempy_labs/lakehouse/_partitioning.py +165 -0
  35. sempy_labs/report/_reportwrapper.py +15 -5
  36. sempy_labs/tom/_model.py +111 -16
  37. sempy_labs/_eventstreams.py +0 -123
  38. {semantic_link_labs-0.12.2.dist-info → semantic_link_labs-0.12.4.dist-info}/WHEEL +0 -0
  39. {semantic_link_labs-0.12.2.dist-info → semantic_link_labs-0.12.4.dist-info}/licenses/LICENSE +0 -0
  40. {semantic_link_labs-0.12.2.dist-info → semantic_link_labs-0.12.4.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.2
3
+ Version: 0.12.4
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.12.0
18
+ Requires-Dist: semantic-link-sempy>=0.12.1
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.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.4&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.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.4) (October 16, 2025)
158
+ * [0.12.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
157
159
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
158
160
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
159
161
  * [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
@@ -1,9 +1,9 @@
1
- semantic_link_labs-0.12.2.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
- sempy_labs/__init__.py,sha256=ftNoWwvm0GfuyNRo3ObrtwqBFtoi71QALNLPECyx84c,16361
3
- sempy_labs/_a_lib_info.py,sha256=i6qs3OhdpTrleupFQc-NjZPBCANJDJeKGl37EJgjlc0,53
1
+ semantic_link_labs-0.12.4.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
+ sempy_labs/__init__.py,sha256=aQKr2VeeDPv25OVUf6OVEadRIp2pRuHD9JxZXY2DDtI,16649
3
+ sempy_labs/_a_lib_info.py,sha256=8HTB3fMgdfzSfaO2YWEHD-zEVtEwB7WQFRkSpvFT9JQ,53
4
4
  sempy_labs/_ai.py,sha256=fiI3RCadJ2jG15vZIWD9rKVhvmGWoD9uth9-PlSPBNs,16196
5
- sempy_labs/_authentication.py,sha256=-mSXB3tlVhutOo2nhmQQOllWWVvuy4G9rTM77v4S8lw,8485
6
- sempy_labs/_capacities.py,sha256=TQYlbM0LP21G-KsW6QrJ7heBzKL42XxA939VldWiKeg,40436
5
+ sempy_labs/_authentication.py,sha256=HtWZEHdf01ILhAxRrWpUpi5i1Ow8Des8CfMSzDVNGlM,8500
6
+ sempy_labs/_capacities.py,sha256=NL3tBB3OUHyy8OMHow4XMKMijSW5MaGl82Q0-mJJ2KI,40437
7
7
  sempy_labs/_capacity_migration.py,sha256=g675DY2YgsVA_ffb_8WNdARVMyHh8iu2P94QWLllmDY,24827
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
@@ -20,21 +20,21 @@ sempy_labs/_dictionary_diffs.py,sha256=DCXuASmt45gshsBO1FgSZDqxm68DnojuDcO-H35EH
20
20
  sempy_labs/_documentation.py,sha256=_TzhSYzGBVZYPaHm34T8dtTCbc_t4Mx45EzQKwD048g,5051
21
21
  sempy_labs/_environments.py,sha256=uY8CS0FJx1BDTCZmYO7-QDv-ezgfXpSwRrf4OYX2KeI,5984
22
22
  sempy_labs/_eventhouses.py,sha256=AJXJ00AOfEaKq0wagZfoLHorztyLHaRx6pkdbunCvFI,5934
23
- sempy_labs/_eventstreams.py,sha256=o9DPk1nBS3TDbokPP9AEtM18CmtRhaHI7LGZ2sRmTeA,4118
24
23
  sempy_labs/_external_data_shares.py,sha256=qHirKpBGseQOkg3xHOM5450Wpz3vmWfG3xexYjLQT9M,8945
25
24
  sempy_labs/_gateways.py,sha256=Nsb2qSXiAVS0CELhjji4FkKVBdnXhP-6spqqTBZc6sU,18100
26
- sempy_labs/_generate_semantic_model.py,sha256=hK2f61PR55080smJBIrq7BgcoTWal_4i4eQulwHjtos,18236
27
- sempy_labs/_git.py,sha256=x8BrvkJNWkP6I-_os_wdNjEZVNViqfINmc-q7sGoQ3Q,17903
25
+ sempy_labs/_generate_semantic_model.py,sha256=jx6azjeLRiFTOF1up4u6emwOoD_EqFy1X18LyDcReb8,18236
26
+ sempy_labs/_get_connection_string.py,sha256=55AAckOhWLC2Vz1bIjseGkWrC6pnN3sgIfLD8hAy45w,2989
27
+ sempy_labs/_git.py,sha256=7aWH5O6FE7aJL0U1NnZlz3szFL51DjQvmb9EqtiuqzI,17905
28
28
  sempy_labs/_graphQL.py,sha256=WDallUQBiOqJdz0aJmYH3cUXCOW_AqhFLs0EpV8_5Rw,2749
29
- sempy_labs/_helper_functions.py,sha256=dWqifJIgGTjjGTEzNxYsCpsiVv9kvCIrrGBnM8wb3VE,85166
29
+ sempy_labs/_helper_functions.py,sha256=VNl0a56mq0vL3GSmuR3VhSfbt5vxw8NHJrwHBsvJJmU,85831
30
30
  sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
31
31
  sempy_labs/_job_scheduler.py,sha256=iCrtFD3pWwUCmjPwV4XzMbmJn_Bn2DwDvedxN9qQNFo,18868
32
32
  sempy_labs/_kql_databases.py,sha256=Wr338mNf0wzvpBJYHbWHjzUudoeMZMUia_smdkzbPfI,4796
33
33
  sempy_labs/_kql_querysets.py,sha256=C7nRv03riGJc7sbeGNz1R6dom6Wb-5dno_wAhFep468,4128
34
34
  sempy_labs/_kusto.py,sha256=g3Up4j1KNdIGC2DDbvoduCdX1Pp8fAPGAlBAqOtaBeg,4544
35
35
  sempy_labs/_labels.py,sha256=nPSf2lbXELAnh7-doOIw-i1MJYK-wNLW9asv3QYuxBg,3580
36
- sempy_labs/_list_functions.py,sha256=VMjUzYdqKhAYpWV_tuIuhDxzV1K2Al_aTCPKw6A2qCU,59824
37
- sempy_labs/_managed_private_endpoints.py,sha256=dsjaUVq_t9DlcAw5EaQfhi4FVbM71w8RKFkDFb80x5E,7068
36
+ sempy_labs/_list_functions.py,sha256=DJyEWAeWg4GEpxXEP_nWe1YnQjqe2KA_hLpyrA2A6MY,61184
37
+ sempy_labs/_managed_private_endpoints.py,sha256=KEcVtuYwiKcMo8-8YiAbKFoN0n-2W_wc24R2KiRZKFM,7069
38
38
  sempy_labs/_mirrored_databases.py,sha256=njjHHqXiTBNA_424MrgaE-O7lvZiyvCEen0aTcrjogs,14832
39
39
  sempy_labs/_mirrored_warehouses.py,sha256=QvHze0WiYSMiwlskVZcfxMICXtwsLwyygJx9foLOX70,1793
40
40
  sempy_labs/_ml_experiments.py,sha256=hC8Mh5rEbpilno-O21MeTzKOjXrhzUYX2aysSgjnNdE,3439
@@ -44,22 +44,23 @@ sempy_labs/_model_bpa_bulk.py,sha256=hRY3dRBUtecrbscCZsEGv6TpCVqg_zAi8NmRq6dVMiE
44
44
  sempy_labs/_model_bpa_rules.py,sha256=SZKUHEsWzvivpNQK28zkmaJ1Z16o6_XdQPcpwxznPTg,46299
45
45
  sempy_labs/_model_dependencies.py,sha256=iAEbaInRDiKPqx0JFl35Yby6pD1STo3ruZrBK0wsAU8,13213
46
46
  sempy_labs/_mounted_data_factories.py,sha256=jNlSxtUs_LNwE7R9HQusBAksk2QbinKyDx3ySe_q9q4,3924
47
- sempy_labs/_notebooks.py,sha256=_0Ug6SF2bihCEFt6P-6DjoGj3302OlDfXmfOJ-ue5Tg,14395
47
+ sempy_labs/_notebooks.py,sha256=3cFLxYnjxZjmFN1s42_X3oTcRL4V7jPI9Kds_GBk18Q,14441
48
48
  sempy_labs/_one_lake_integration.py,sha256=aThg8Fcei9qTFUTzg2Qwsn-3deTk0ICTCXx53Y23oso,6293
49
49
  sempy_labs/_query_scale_out.py,sha256=tcIEJSHjZ1gh7--WMS8sDqDfF3wbfIEX9Xm2qgahXrc,15348
50
50
  sempy_labs/_refresh_semantic_model.py,sha256=yu92m4Ys6lbW68PP9tVCeUNHXj7cGXvyGr2WYRqgl1g,17365
51
- sempy_labs/_semantic_models.py,sha256=PbDM0u1mv6-aRwUJbxfsGm2yFFBTJvYotLFUHyvMF6g,12585
51
+ sempy_labs/_semantic_models.py,sha256=WGIyzDA6AiuJG6A3VSMMNtVlUbAcHrEKJNTfxyiYosM,16975
52
52
  sempy_labs/_spark.py,sha256=aQAqmRAm04NWH9j4_qmYJAWdIluoWKzHDTBPr01GWbA,19404
53
53
  sempy_labs/_sql.py,sha256=Y7yRO8j0P6h68VNaqmWVSyfLrI9L9TMBLykovDkgIzY,8274
54
- sempy_labs/_sql_endpoints.py,sha256=eD2i5r7l9FA9YIW4i0PIpsG3H5mr1HPXJ9g6Lae1uNQ,6766
54
+ sempy_labs/_sql_audit_settings.py,sha256=eGP6exvP-_hfPxNBoaQGXRkenz3J8nxwsqN1aQDjITs,7269
55
+ sempy_labs/_sql_endpoints.py,sha256=j-Lbm-qV_rv-Sds9DJ3odLhYqp5w-qZGNc3HK-hVpns,7423
55
56
  sempy_labs/_sqldatabase.py,sha256=vmTsB1IAluQ99cf8fmcPO2z0SjAjTOM8OCD5nuJdSOI,6908
56
57
  sempy_labs/_tags.py,sha256=tqQlj7AvbaniN8mZl59g145Ofj_wdA6Bnrna0PzlwI4,5897
57
58
  sempy_labs/_translations.py,sha256=6A8CPmH_xvsONX4dOG5XSZ-XeJuAy5VokFJql6uf_Ak,1432
58
59
  sempy_labs/_user_delegation_key.py,sha256=dj540zd_IGNt2GQ_a69_8IBoyZdpldx_3z6NxNV35yo,1453
59
- sempy_labs/_utils.py,sha256=X7wcjg809ZyEgf6fE0mZIv9qe1n1oQX_hHXEHgR4u0U,2737
60
+ sempy_labs/_utils.py,sha256=DBNBmio6jvlVRNITg1pBRqpvMNz3p6GhXONfFNLt5EY,2799
60
61
  sempy_labs/_vertipaq.py,sha256=1UvB79xOxeGdRFINsUsreXxtZtiatHlACAfbQhv45as,38536
61
62
  sempy_labs/_vpax.py,sha256=4rtXXGVoadvdu7uiU9PVsgKszST3XH-K56zmWdMmZEg,15471
62
- sempy_labs/_warehouses.py,sha256=ep4ZMa_1CNbWuQ3AGbGu8udOZ_SIochFJa4fCLqgkL0,9757
63
+ sempy_labs/_warehouses.py,sha256=l5oJQTwqi0yW6ewHM2mS9TmRy7w1IWeeyQjDHJgWnuU,7788
63
64
  sempy_labs/_workloads.py,sha256=K2KPY1_e6SDqz_NQDBrrMlRwzEyVV5dqd1shBs8Bu6E,4731
64
65
  sempy_labs/_workspace_identity.py,sha256=rLzrNjnWbpjNn4bu7xW0nSjG9t1nbc4xG6BdkZNKP1Q,2605
65
66
  sempy_labs/_workspaces.py,sha256=djjY7zLLKqsN0UJqzVpCp3j6_k81RP3VimCv1IM8Eb4,18334
@@ -101,7 +102,7 @@ sempy_labs/_bpa_translation/_model/_translations_tr-TR.po,sha256=NdW-X4E0QmeLKM0
101
102
  sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L6738FjpJ8o4spwp8FNFGbVItHD-_ec,43500
102
103
  sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
103
104
  sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
104
- sempy_labs/admin/__init__.py,sha256=B6cdHZ6wrGXZSr7kDn3D4xSsya8GPkupfsFVXl4nRAc,4062
105
+ sempy_labs/admin/__init__.py,sha256=0-atps9aClek_q9gs-T0wYG2BG1YL02lyPjAiufSUm0,4181
105
106
  sempy_labs/admin/_activities.py,sha256=SN-uAEWvFO5nKuw4Yi483niixzxShDGMXRv0SV4s4Bk,6833
106
107
  sempy_labs/admin/_apps.py,sha256=4R-VZqo9SGIrwqcQfnFGXIWueBhr4mSI7H8SUlLVl8s,4131
107
108
  sempy_labs/admin/_artifacts.py,sha256=IQ1BOVKMK8Qy_5HpREUso6_NWXbftIodWekByvVvJ5k,2315
@@ -112,7 +113,8 @@ sempy_labs/admin/_datasets.py,sha256=scGbRZpR32u62HDsvKaUYtpX85n4RGx4eYjxClFIT5U
112
113
  sempy_labs/admin/_domains.py,sha256=siLhIi5UqVM9kf_Xqq-kzvwZKouyqf-wWpPhJ7D-VMk,15238
113
114
  sempy_labs/admin/_external_data_share.py,sha256=HMwKAjSE7Y-499Fo_weaY2SnKIU8_ohTBN3qjJtuJDs,3506
114
115
  sempy_labs/admin/_git.py,sha256=mx2B7RcU4Fi4x6HEeXEotYk0jvcbHYG9_RPjo6UowcA,2379
115
- sempy_labs/admin/_items.py,sha256=LBvUUzqp2wV8YRiXCQGUhv7BoCbalZUojlvCukd1h6Y,9040
116
+ sempy_labs/admin/_items.py,sha256=-sEnn63BrooSEQLKwS2A4hIxNHMKYHVA0tn0CAunFlA,9081
117
+ sempy_labs/admin/_labels.py,sha256=NsQ94ZU6JHVtY1Tf5ZCNY2HnueA4AkurMVj-iGuV4-w,6088
116
118
  sempy_labs/admin/_reports.py,sha256=JrmooHhiS4ViZsVinUz5T_9oZ7bdn1fIeW_wI8L1BnY,7908
117
119
  sempy_labs/admin/_scanner.py,sha256=0dNfl9W25RTxIQj1rMGhQrH1ioGWpf3-CiZOxHLZ5hQ,4345
118
120
  sempy_labs/admin/_shared.py,sha256=axTqVqp1V1tDtq2YTuSD6M0ST4lAjXqcIfRHwkZqyOQ,3115
@@ -134,20 +136,26 @@ sempy_labs/directlake/_list_directlake_model_calc_tables.py,sha256=08c6YomMCmOrg
134
136
  sempy_labs/directlake/_show_unsupported_directlake_objects.py,sha256=KlMcIByts2GT_zVD4vMN4V8vySqEiRDr9WE_9xFlaK0,3495
135
137
  sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=dXeEnqrZ4kXns2n7YgQupObA9Se76uf2X5eSqDcZLOg,9201
136
138
  sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=EQpePqgTsetDG5JJrL5pfYjibmsuzrYk6x2mj0PDfEY,8984
137
- sempy_labs/directlake/_warm_cache.py,sha256=ks_rX2WOUk77rLsvwsCYyQOx-5U-pts27_guLYgMw6w,9236
139
+ sempy_labs/directlake/_warm_cache.py,sha256=F-LJ8LR950iRW70K2AnkAZfGocPKNzAgDeT9yRW9M44,9294
138
140
  sempy_labs/dotnet_lib/dotnet.runtime.config.json,sha256=syhDFQv6cEmZnE1WtFjNe3NwhsIsnd-CFULv-vEWOFI,167
139
- sempy_labs/graph/__init__.py,sha256=OwFxe_JvIETazMCPw0Cx-tHXh5sGOiEPwawCeR6O7jg,794
140
- sempy_labs/graph/_groups.py,sha256=T3uzMepJC3SYISV4C9y4sVY7r_qH609sScBMljhC5rY,17763
141
- sempy_labs/graph/_teams.py,sha256=UH5ETsReD0pzmdgqQFkcX_95o1aUAv2lAajRJc0RIZY,3175
142
- sempy_labs/graph/_users.py,sha256=2QwwUYfaJnPHPY6M2a9QBWYwwkVDjpcbOQd_Bo9GjJ8,15181
141
+ sempy_labs/eventstream/__init__.py,sha256=amAbVOPhHLsuhBL-BqhTVJ9QYCOW6qFtJ71Ckuydx3Y,1008
142
+ sempy_labs/eventstream/_items.py,sha256=qpNUHEVn7ecizb9cREBMlP60su0Uh_REcku04gnz9Ws,7819
143
+ sempy_labs/eventstream/_topology.py,sha256=Rq18s7ru_YsSp8g0mZbXUi7m8Hr37RYaPE0RaKSmTjo,24412
144
+ sempy_labs/graph/__init__.py,sha256=syo22Cs4S2FqOpzHMnrBHLO0uWCBSeDF9iVJgq85rrs,1091
145
+ sempy_labs/graph/_groups.py,sha256=FD_jTqUVlDKEAycGltg15TGZQm0y9rEb3MN4buztkKc,18096
146
+ sempy_labs/graph/_sensitivity_labels.py,sha256=KhY-2-yco5WDdjFJgM3QVYZxEKy_v6kchWBD3LiNPzc,3961
147
+ sempy_labs/graph/_teams.py,sha256=Yeuvb_ZeFyVu5HZTXDG7PdUCAIu3ehdJTQVkQ2wCnGw,3278
148
+ sempy_labs/graph/_user_licenses.py,sha256=akvtDeMwPIM4bJqdaJQPlwRlePsfOmKUmaWBv_dwoQA,2770
149
+ sempy_labs/graph/_users.py,sha256=dmeDAAWJv1_NnxmNRM9ibGK5MRwHscSEfPwB7nED458,15453
143
150
  sempy_labs/lakehouse/__init__.py,sha256=jOCjgkIZgwl373pb6lmEwqIkbifwJUKY3K0eZ8LAVws,1245
144
151
  sempy_labs/lakehouse/_blobs.py,sha256=peVPDCw97sB1x9a4KMKOqUB2Igu82-gb4CsvGdbubrU,8557
145
152
  sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=QVxejuu4WFGkG-c2i9B_H6dZsb1m_FRSTraS9GahnT4,3681
146
- sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=4p43Sa2mjJT4heUDp_EpF0vgZff5oNqCxjbat7IZxwk,11940
153
+ sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=x5ugW07-v7aVLAE_XHkXnFt2uJgmFkG0z3caYuVhJHA,13031
147
154
  sempy_labs/lakehouse/_helper.py,sha256=q-z6DTO3-Iy5hM9zXpZhXRD1OPp7JAzGhcyJ_VheDcM,8644
148
- sempy_labs/lakehouse/_lakehouse.py,sha256=tJFeXG1U_GcEW1EVMQKIQpz6kqh_aatAGo208cDCE0Y,10262
155
+ sempy_labs/lakehouse/_lakehouse.py,sha256=Cb72P_sM8UjwBnx3TOQKEe9JySnO-p2x3nqq6Gvyyrc,10338
149
156
  sempy_labs/lakehouse/_livy_sessions.py,sha256=XwEA0QkcFCbCGxSO6MJ5GZ-j9kjNIBiQhIkWG_Znm0E,6034
150
157
  sempy_labs/lakehouse/_materialized_lake_views.py,sha256=EOyVxEo_SaEuVELQzhrWIZVbd-HB7iRbyx0JVpWg1xA,2814
158
+ sempy_labs/lakehouse/_partitioning.py,sha256=JrdcyHZ6j_fXpNHk3jWXBP8YxF7IUet1CzhzIosiTvI,5203
151
159
  sempy_labs/lakehouse/_shortcuts.py,sha256=_XzyX1PCxZaDdZgMr9pyQ_sQyZD0S0tA9iViVl8B5WU,17089
152
160
  sempy_labs/migration/__init__.py,sha256=aA8r2g2mN_elPG8qptXlRiIcyQ9Z5hjKJo23fSNm1RY,1015
153
161
  sempy_labs/migration/_create_pqt_file.py,sha256=IztG7XKAg98zZiWW0oUMtO7WnuqvcmE96gOAwe3UiKg,9659
@@ -175,7 +183,7 @@ sempy_labs/report/_report_functions.py,sha256=cBJhjoC6iNYF-I6Ak1a2i2EKQykA5TPVLo
175
183
  sempy_labs/report/_report_helper.py,sha256=L9wU0N0rvTUMglZHTxcowywrBDuZvZTv3DA4JrX84Os,7207
176
184
  sempy_labs/report/_report_list_functions.py,sha256=m_Wf1YeZmNtOfCwIILpKUuVR7V2CnwnfhDjz1DDTxOI,3945
177
185
  sempy_labs/report/_report_rebind.py,sha256=c4-dPCvjqnwdsasjCFlsTo8w6TvhAQ7WPRmAb-mowns,6437
178
- sempy_labs/report/_reportwrapper.py,sha256=HP-ZOGmva5y1ZsxuA2QTddyVjF2nXOm0YEbe5OfrXm8,112178
186
+ sempy_labs/report/_reportwrapper.py,sha256=CzMfGZYISTqrMjWp5FPhNYRys556aQnnHnOEZmzDXwU,112542
179
187
  sempy_labs/report/_save_report.py,sha256=0P1WwIBtSgwrhnjWWvf9xf-e7ifka3DWVF0HM5zeXps,5998
180
188
  sempy_labs/report/_bpareporttemplate/.platform,sha256=kWRa6B_KwSYLsvVFDx372mQriQO8v7dJ_YzQV_cfD-Q,303
181
189
  sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
@@ -209,10 +217,10 @@ sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visua
209
217
  sempy_labs/theme/__init__.py,sha256=JN0z8w_Hc7VUIchRbpY-rjU6879msrFiSTRtMMlr_5g,185
210
218
  sempy_labs/theme/_org_themes.py,sha256=ArLqr1KYI6CT1_mxKOsZlVPaTO0KSkkQ1LbFy4A1fqg,3323
211
219
  sempy_labs/tom/__init__.py,sha256=ZwSpgYDP5VamZTnYP3a1cYHiaKdktOvlOBSOY1816zY,107
212
- sempy_labs/tom/_model.py,sha256=Izf1YSh2nE4VZq9K92cefJN8_onmqP7DD_o4oiOUCOQ,223020
220
+ sempy_labs/tom/_model.py,sha256=Hjb_zvMVUDgJK-oQKS0NWE9FHNL7FytnebsHK2nWHOY,226595
213
221
  sempy_labs/variable_library/__init__.py,sha256=qyTw5vNldnwYv-TotQSFupwznKIQfcws1UxGjf1RNNo,437
214
222
  sempy_labs/variable_library/_functions.py,sha256=eoB3hUKFGdGMSBNDEsEF9bVoELZp5AnyDxp5BsLGeDc,13733
215
- semantic_link_labs-0.12.2.dist-info/METADATA,sha256=2ft_8tljZ0wn-asR56HeweU56aup-69e2a0WJFytrSY,27646
216
- semantic_link_labs-0.12.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
217
- semantic_link_labs-0.12.2.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
218
- semantic_link_labs-0.12.2.dist-info/RECORD,,
223
+ semantic_link_labs-0.12.4.dist-info/METADATA,sha256=yvwKhzK3McEhkn4ebfKS0BK1-7xOKxuXDXUe9Y1yFv0,27846
224
+ semantic_link_labs-0.12.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
225
+ semantic_link_labs-0.12.4.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
226
+ semantic_link_labs-0.12.4.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,
@@ -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,
@@ -114,11 +115,6 @@ from ._eventhouses import (
114
115
  delete_eventhouse,
115
116
  get_eventhouse_definition,
116
117
  )
117
- from ._eventstreams import (
118
- list_eventstreams,
119
- create_eventstream,
120
- delete_eventstream,
121
- )
122
118
  from ._kql_querysets import (
123
119
  list_kql_querysets,
124
120
  create_kql_queryset,
@@ -283,6 +279,7 @@ from ._list_functions import (
283
279
  list_server_properties,
284
280
  list_semantic_model_errors,
285
281
  list_synonyms,
282
+ list_user_defined_functions,
286
283
  )
287
284
  from ._helper_functions import (
288
285
  get_item_definition,
@@ -351,6 +348,14 @@ from ._user_delegation_key import (
351
348
  from ._data_access_security import (
352
349
  list_data_access_roles,
353
350
  )
351
+ from ._get_connection_string import (
352
+ get_connection_string,
353
+ )
354
+ from ._sql_audit_settings import (
355
+ get_sql_audit_settings,
356
+ update_sql_audit_settings,
357
+ set_audit_actions_and_group,
358
+ )
354
359
 
355
360
  __all__ = [
356
361
  "resolve_warehouse_id",
@@ -482,9 +487,6 @@ __all__ = [
482
487
  "list_data_pipelines",
483
488
  "create_data_pipeline",
484
489
  "delete_data_pipeline",
485
- "list_eventstreams",
486
- "create_eventstream",
487
- "delete_eventstream",
488
490
  "list_kql_querysets",
489
491
  "create_kql_queryset",
490
492
  "delete_kql_queryset",
@@ -603,6 +605,12 @@ __all__ = [
603
605
  "get_item_definition",
604
606
  "get_workspace_network_communication_policy",
605
607
  "set_workspace_network_communication_policy",
606
- "get_warehouse_connection_string",
608
+ "get_connection_string",
607
609
  "list_data_access_roles",
610
+ "bind_semantic_model_connection",
611
+ "unbind_semantic_model_connection",
612
+ "list_user_defined_functions",
613
+ "get_sql_audit_settings",
614
+ "update_sql_audit_settings",
615
+ "set_audit_actions_and_group",
608
616
  ]
sempy_labs/_a_lib_info.py CHANGED
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.2"
2
+ lib_version = "0.12.4"
@@ -130,7 +130,7 @@ class ServicePrincipalTokenProvider(TokenCredential):
130
130
  if audience not in self._shorthand_scopes:
131
131
  raise NotImplementedError
132
132
 
133
- return self.get_token(audience).token
133
+ return self.get_token(audience, region=region).token
134
134
 
135
135
  def get_token(self, *scopes, **kwargs) -> AccessToken:
136
136
  """
sempy_labs/_capacities.py CHANGED
@@ -876,7 +876,7 @@ def create_storage_account(
876
876
  """
877
877
  Asynchronously creates a new storage account with the specified parameters. If an account is already created and a subsequent create request is issued with different properties, the account properties will be updated. If an account is already created and a subsequent create or update request is issued with the exact same set of properties, the request will succeed.
878
878
 
879
- This is a wrapper function for the following API: `Storage Accounts - Create <https://learn.microsoft.com/rest/api/storagerp/storage-accounts/create`_.
879
+ This is a wrapper function for the following API: `Storage Accounts - Create <https://learn.microsoft.com/rest/api/storagerp/storage-accounts/create>`_.
880
880
 
881
881
  Service Principal Authentication is required (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
882
882
 
@@ -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")
sempy_labs/_git.py CHANGED
@@ -157,7 +157,7 @@ def get_git_status(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
157
157
  """
158
158
  Obtains the Git status of items in the workspace, that can be committed to Git.
159
159
 
160
- This is a wrapper function for the following API: `Git - Get Status <https://learn.microsoft.com/rest/api/fabric/core/git/get-status>.
160
+ This is a wrapper function for the following API: `Git - Get Status <https://learn.microsoft.com/rest/api/fabric/core/git/get-status>`_.
161
161
 
162
162
  Parameters
163
163
  ----------
@@ -282,8 +282,7 @@ def create_item(
282
282
  """
283
283
 
284
284
  (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
285
- item_type = utils.item_types.get(type)[0].lower()
286
- item_type_url = utils.item_types.get(type)[1]
285
+ item_type_url = utils.items.get(type)
287
286
 
288
287
  payload = {
289
288
  "displayName": name,
@@ -306,7 +305,7 @@ def create_item(
306
305
  client="fabric_sp",
307
306
  )
308
307
  print(
309
- f"{icons.green_dot} The '{name}' {item_type} has been successfully created within the '{workspace_name}' workspace."
308
+ f"{icons.green_dot} The '{name}' {type} has been successfully created within the '{workspace_name}' workspace."
310
309
  )
311
310
 
312
311
 
@@ -549,6 +548,7 @@ def get_item_definition(
549
548
  definition["definition"]["parts"].append(
550
549
  {"path": path, "payload": decoded_payload}
551
550
  )
551
+ return definition
552
552
  else:
553
553
  return result
554
554
 
@@ -1618,6 +1618,27 @@ def pagination(client, response):
1618
1618
  return responses
1619
1619
 
1620
1620
 
1621
+ def graph_pagination(response, headers):
1622
+
1623
+ responses = []
1624
+ response_json = response.json()
1625
+ responses.append(response_json)
1626
+
1627
+ # Check for pagination
1628
+ odata_next_link = response_json.get("@odata.nextLink")
1629
+
1630
+ # Loop to handle pagination
1631
+ while odata_next_link is not None:
1632
+ response = requests.get(odata_next_link, headers=headers)
1633
+ response_json = response.json()
1634
+ responses.append(response_json)
1635
+
1636
+ # Update the odata next link for the next iteration
1637
+ odata_next_link = response_json.get("@odata.nextLink")
1638
+
1639
+ return responses
1640
+
1641
+
1621
1642
  def resolve_deployment_pipeline_id(deployment_pipeline: str | UUID) -> UUID:
1622
1643
  """
1623
1644
  Obtains the Id for a given deployment pipeline.
@@ -2253,7 +2274,10 @@ def _base_api(
2253
2274
  if response.status_code not in status_codes:
2254
2275
  raise FabricHTTPException(response)
2255
2276
  if uses_pagination:
2256
- responses = pagination(c, response)
2277
+ if client == "graph":
2278
+ responses = graph_pagination(response, headers)
2279
+ else:
2280
+ responses = pagination(c, response)
2257
2281
  return responses
2258
2282
  else:
2259
2283
  return response
@@ -756,6 +756,53 @@ def update_item(
756
756
  )
757
757
 
758
758
 
759
+ @log
760
+ def list_user_defined_functions(
761
+ dataset: str | UUID, workspace: Optional[str | UUID] = None
762
+ ) -> pd.DataFrame:
763
+ """
764
+ Shows a list of the user-defined functions within a semantic model.
765
+
766
+ Parameters
767
+ ----------
768
+ dataset: str | uuid.UUID
769
+ Name or UUID of the semantic model.
770
+ workspace : str | uuid.UUID, default=None
771
+ The Fabric workspace name or ID.
772
+ Defaults to None which resolves to the workspace of the attached lakehouse
773
+ or if no lakehouse attached, resolves to the workspace of the notebook.
774
+
775
+ Returns
776
+ -------
777
+ pandas.DataFrame
778
+ A pandas dataframe showing a list of the user-defined functions within a semantic model.
779
+ """
780
+
781
+ from sempy_labs.tom import connect_semantic_model
782
+
783
+ columns = {
784
+ "Function Name": "string",
785
+ "Expression": "string",
786
+ "Lineage Tag": "string",
787
+ }
788
+ df = _create_dataframe(columns=columns)
789
+ rows = []
790
+ with connect_semantic_model(dataset=dataset, workspace=workspace) as tom:
791
+ for f in tom.model.Functions:
792
+ rows.append(
793
+ {
794
+ "Function Name": f.Name,
795
+ "Expression": f.Expression,
796
+ "Lineage Tag": f.LineageTag,
797
+ }
798
+ )
799
+
800
+ if rows:
801
+ df = pd.DataFrame(rows)
802
+
803
+ return df
804
+
805
+
759
806
  @log
760
807
  def list_relationships(
761
808
  dataset: str | UUID, workspace: Optional[str | UUID] = None, extended: bool = False
@@ -1484,15 +1531,14 @@ def list_semantic_model_errors(
1484
1531
 
1485
1532
  from sempy_labs.tom import connect_semantic_model
1486
1533
 
1487
- (workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
1488
- (dataset_name, dataset_id) = resolve_dataset_name_and_id(
1489
- dataset, workspace=workspace_id
1534
+ df = pd.DataFrame(
1535
+ columns=["Object Type", "Table Name", "Object Name", "Error Message"]
1490
1536
  )
1491
1537
 
1492
1538
  error_rows = []
1493
1539
 
1494
1540
  with connect_semantic_model(
1495
- dataset=dataset_id, workspace=workspace_id, readonly=True
1541
+ dataset=dataset, workspace=workspace, readonly=True
1496
1542
  ) as tom:
1497
1543
  # Define mappings of TOM objects to object types and attributes
1498
1544
  error_checks = [
@@ -1546,6 +1592,7 @@ def list_semantic_model_errors(
1546
1592
  else ""
1547
1593
  ),
1548
1594
  ),
1595
+ ("Function", tom.all_functions, lambda o: o.ErrorMessage),
1549
1596
  ]
1550
1597
 
1551
1598
  # Iterate over all error checks
@@ -1562,7 +1609,10 @@ def list_semantic_model_errors(
1562
1609
  }
1563
1610
  )
1564
1611
 
1565
- return pd.DataFrame(error_rows)
1612
+ if error_rows:
1613
+ df = pd.DataFrame(error_rows)
1614
+
1615
+ return df
1566
1616
 
1567
1617
 
1568
1618
  @log
@@ -24,7 +24,7 @@ def create_managed_private_endpoint(
24
24
  """
25
25
  Creates a managed private endpoint.
26
26
 
27
- This is a wrapper function for the following API: `Managed Private Endpoints - Create Workspace Managed Private Endpoint <https://learn.microsoft.com/rest/api/fabric/core/managed-private-endpoints/create-workspace-managed-private-endpoint>`.
27
+ This is a wrapper function for the following API: `Managed Private Endpoints - Create Workspace Managed Private Endpoint <https://learn.microsoft.com/rest/api/fabric/core/managed-private-endpoints/create-workspace-managed-private-endpoint>`_.
28
28
 
29
29
  Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
30
30
 
sempy_labs/_notebooks.py CHANGED
@@ -163,7 +163,7 @@ def import_notebook_from_web(
163
163
  if len(dfI_filt) == 0:
164
164
  create_notebook(
165
165
  name=notebook_name,
166
- notebook_content=response.content,
166
+ notebook_content=response.content.decode("utf-8"),
167
167
  workspace=workspace_id,
168
168
  description=description,
169
169
  format="ipynb",
@@ -216,7 +216,9 @@ def create_notebook(
216
216
  Defaults to None which places the notebook in the root of the workspace.
217
217
  """
218
218
 
219
- notebook_payload = base64.b64encode(notebook_content).decode("utf-8")
219
+ notebook_payload = base64.b64encode(notebook_content.encode("utf-8")).decode(
220
+ "utf-8"
221
+ )
220
222
 
221
223
  definition_payload = {
222
224
  "parts": [