semantic-link-labs 0.12.3__py3-none-any.whl → 0.12.5__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 (47) hide show
  1. {semantic_link_labs-0.12.3.dist-info → semantic_link_labs-0.12.5.dist-info}/METADATA +5 -3
  2. {semantic_link_labs-0.12.3.dist-info → semantic_link_labs-0.12.5.dist-info}/RECORD +45 -37
  3. sempy_labs/__init__.py +20 -16
  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/_dataflows.py +98 -10
  8. sempy_labs/_git.py +1 -1
  9. sempy_labs/_helper_functions.py +32 -5
  10. sempy_labs/_list_functions.py +55 -5
  11. sempy_labs/_managed_private_endpoints.py +63 -1
  12. sempy_labs/_model_bpa.py +6 -0
  13. sempy_labs/_notebooks.py +4 -2
  14. sempy_labs/_onelake.py +131 -0
  15. sempy_labs/_sql_audit_settings.py +208 -0
  16. sempy_labs/_sql_endpoints.py +18 -3
  17. sempy_labs/_utils.py +2 -0
  18. sempy_labs/admin/__init__.py +6 -0
  19. sempy_labs/admin/_basic_functions.py +17 -13
  20. sempy_labs/admin/_items.py +3 -3
  21. sempy_labs/admin/_labels.py +211 -0
  22. sempy_labs/admin/_workspaces.py +2 -2
  23. sempy_labs/deployment_pipeline/__init__.py +21 -0
  24. sempy_labs/deployment_pipeline/_items.py +486 -0
  25. sempy_labs/directlake/_update_directlake_partition_entity.py +73 -41
  26. sempy_labs/directlake/_warm_cache.py +3 -1
  27. sempy_labs/eventstream/__init__.py +37 -0
  28. sempy_labs/eventstream/_items.py +263 -0
  29. sempy_labs/eventstream/_topology.py +652 -0
  30. sempy_labs/graph/__init__.py +10 -0
  31. sempy_labs/graph/_groups.py +123 -53
  32. sempy_labs/graph/_sensitivity_labels.py +39 -0
  33. sempy_labs/graph/_teams.py +19 -18
  34. sempy_labs/graph/_user_licenses.py +96 -0
  35. sempy_labs/graph/_users.py +69 -18
  36. sempy_labs/lakehouse/_get_lakehouse_tables.py +33 -1
  37. sempy_labs/lakehouse/_lakehouse.py +6 -2
  38. sempy_labs/lakehouse/_partitioning.py +165 -0
  39. sempy_labs/report/_export_report.py +0 -22
  40. sempy_labs/report/_report_rebind.py +29 -43
  41. sempy_labs/report/_reportwrapper.py +80 -35
  42. sempy_labs/tom/_model.py +81 -4
  43. sempy_labs/_deployment_pipelines.py +0 -209
  44. sempy_labs/_eventstreams.py +0 -123
  45. {semantic_link_labs-0.12.3.dist-info → semantic_link_labs-0.12.5.dist-info}/WHEEL +0 -0
  46. {semantic_link_labs-0.12.3.dist-info → semantic_link_labs-0.12.5.dist-info}/licenses/LICENSE +0 -0
  47. {semantic_link_labs-0.12.3.dist-info → semantic_link_labs-0.12.5.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.3
3
+ Version: 0.12.5
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.2
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.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.5&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.5](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.5) (October 30, 2025)
158
+ * [0.12.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.4) (October 16, 2025)
157
159
  * [0.12.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
158
160
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
159
161
  * [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
@@ -1,63 +1,63 @@
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
1
+ semantic_link_labs-0.12.5.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
2
+ sempy_labs/__init__.py,sha256=ekYmmvo8eR0hFQxmTBR3VijQUO6kqfyoVPdmV5ILjGQ,16684
3
+ sempy_labs/_a_lib_info.py,sha256=MZ5zxVub8ukkSA0v3UCDeDlRD-WbozdNY9TI6l1u08E,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
10
10
  sempy_labs/_dashboards.py,sha256=1Cpllydezqf8INt31lAVfYcEOZmrqiBPiSzh7GQDWog,2161
11
11
  sempy_labs/_data_access_security.py,sha256=F4J6WS54m341zRcGXlnj_Q6gtUPzHMoiuAraplORZBs,3375
12
12
  sempy_labs/_data_pipelines.py,sha256=3XGKSyIkvWywtiwi3FX0LB2fxxp2EWMGnU3zQGGleDI,5477
13
- sempy_labs/_dataflows.py,sha256=syu33ckJeI9w5H9fPnEqq_6pZ-5K1y5t-PuXdVAqBwk,20352
13
+ sempy_labs/_dataflows.py,sha256=d2PLqm1l5v0cBJy7PH_vNo7tlv0aCEsRdmLmnaSAwog,23519
14
14
  sempy_labs/_dax.py,sha256=Q_GylKeuHFnRB_sztZS1ON5v5tr6ua6lc9elyJYKbV8,17219
15
15
  sempy_labs/_daxformatter.py,sha256=A2jTg9kSAye_LuIsCYmaYq5EbInAMfbDylHrERGB3Cs,3037
16
16
  sempy_labs/_delta_analyzer.py,sha256=d6qxZrEhn3Hfg5qMQODt7dDG5mYSY18xeXUkW_NyMgw,17281
17
17
  sempy_labs/_delta_analyzer_history.py,sha256=9v627Ubxbz4Dn2IAASUNu_sww9V3scoWgGk3yAWJIr0,10893
18
- sempy_labs/_deployment_pipelines.py,sha256=MyCbAWYt9SWdG9v0iFrRN5YqgjiCBDsuroQJba7obx4,7068
19
18
  sempy_labs/_dictionary_diffs.py,sha256=DCXuASmt45gshsBO1FgSZDqxm68DnojuDcO-H35EH7Q,9003
20
19
  sempy_labs/_documentation.py,sha256=_TzhSYzGBVZYPaHm34T8dtTCbc_t4Mx45EzQKwD048g,5051
21
20
  sempy_labs/_environments.py,sha256=uY8CS0FJx1BDTCZmYO7-QDv-ezgfXpSwRrf4OYX2KeI,5984
22
21
  sempy_labs/_eventhouses.py,sha256=AJXJ00AOfEaKq0wagZfoLHorztyLHaRx6pkdbunCvFI,5934
23
- sempy_labs/_eventstreams.py,sha256=o9DPk1nBS3TDbokPP9AEtM18CmtRhaHI7LGZ2sRmTeA,4118
24
22
  sempy_labs/_external_data_shares.py,sha256=qHirKpBGseQOkg3xHOM5450Wpz3vmWfG3xexYjLQT9M,8945
25
23
  sempy_labs/_gateways.py,sha256=Nsb2qSXiAVS0CELhjji4FkKVBdnXhP-6spqqTBZc6sU,18100
26
24
  sempy_labs/_generate_semantic_model.py,sha256=jx6azjeLRiFTOF1up4u6emwOoD_EqFy1X18LyDcReb8,18236
27
25
  sempy_labs/_get_connection_string.py,sha256=55AAckOhWLC2Vz1bIjseGkWrC6pnN3sgIfLD8hAy45w,2989
28
- sempy_labs/_git.py,sha256=x8BrvkJNWkP6I-_os_wdNjEZVNViqfINmc-q7sGoQ3Q,17903
26
+ sempy_labs/_git.py,sha256=7aWH5O6FE7aJL0U1NnZlz3szFL51DjQvmb9EqtiuqzI,17905
29
27
  sempy_labs/_graphQL.py,sha256=WDallUQBiOqJdz0aJmYH3cUXCOW_AqhFLs0EpV8_5Rw,2749
30
- sempy_labs/_helper_functions.py,sha256=YBsKm2bC29QluFy156nPBZ-h1GDVjkFxLqFF_VQVU2c,85192
28
+ sempy_labs/_helper_functions.py,sha256=JJbkScQlbFjoU7fUKPjL1ZwF-GBB7vxay65QC3XpVE4,85957
31
29
  sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
32
30
  sempy_labs/_job_scheduler.py,sha256=iCrtFD3pWwUCmjPwV4XzMbmJn_Bn2DwDvedxN9qQNFo,18868
33
31
  sempy_labs/_kql_databases.py,sha256=Wr338mNf0wzvpBJYHbWHjzUudoeMZMUia_smdkzbPfI,4796
34
32
  sempy_labs/_kql_querysets.py,sha256=C7nRv03riGJc7sbeGNz1R6dom6Wb-5dno_wAhFep468,4128
35
33
  sempy_labs/_kusto.py,sha256=g3Up4j1KNdIGC2DDbvoduCdX1Pp8fAPGAlBAqOtaBeg,4544
36
34
  sempy_labs/_labels.py,sha256=nPSf2lbXELAnh7-doOIw-i1MJYK-wNLW9asv3QYuxBg,3580
37
- sempy_labs/_list_functions.py,sha256=VMjUzYdqKhAYpWV_tuIuhDxzV1K2Al_aTCPKw6A2qCU,59824
38
- sempy_labs/_managed_private_endpoints.py,sha256=dsjaUVq_t9DlcAw5EaQfhi4FVbM71w8RKFkDFb80x5E,7068
35
+ sempy_labs/_list_functions.py,sha256=DJyEWAeWg4GEpxXEP_nWe1YnQjqe2KA_hLpyrA2A6MY,61184
36
+ sempy_labs/_managed_private_endpoints.py,sha256=mLxoPSN2lpnkxwCwqaPwe9LT0ggUfr3N96e0rCLbNwc,9397
39
37
  sempy_labs/_mirrored_databases.py,sha256=njjHHqXiTBNA_424MrgaE-O7lvZiyvCEen0aTcrjogs,14832
40
38
  sempy_labs/_mirrored_warehouses.py,sha256=QvHze0WiYSMiwlskVZcfxMICXtwsLwyygJx9foLOX70,1793
41
39
  sempy_labs/_ml_experiments.py,sha256=hC8Mh5rEbpilno-O21MeTzKOjXrhzUYX2aysSgjnNdE,3439
42
40
  sempy_labs/_model_auto_build.py,sha256=LpeRDY-L3b8LxvxmbUXZGDfzlqcs84rAPePf9XgJ0yE,5075
43
- sempy_labs/_model_bpa.py,sha256=ZPsBxDaxLRc3xcOCfvzK2GBCCmNTPLMP3jzW5IHcrXY,22041
41
+ sempy_labs/_model_bpa.py,sha256=dq2mOfMMzP8vjX8--Lss7uqWEjAkBKqMq5fK_NF8-6s,22282
44
42
  sempy_labs/_model_bpa_bulk.py,sha256=hRY3dRBUtecrbscCZsEGv6TpCVqg_zAi8NmRq6dVMiE,15845
45
43
  sempy_labs/_model_bpa_rules.py,sha256=SZKUHEsWzvivpNQK28zkmaJ1Z16o6_XdQPcpwxznPTg,46299
46
44
  sempy_labs/_model_dependencies.py,sha256=iAEbaInRDiKPqx0JFl35Yby6pD1STo3ruZrBK0wsAU8,13213
47
45
  sempy_labs/_mounted_data_factories.py,sha256=jNlSxtUs_LNwE7R9HQusBAksk2QbinKyDx3ySe_q9q4,3924
48
- sempy_labs/_notebooks.py,sha256=_0Ug6SF2bihCEFt6P-6DjoGj3302OlDfXmfOJ-ue5Tg,14395
46
+ sempy_labs/_notebooks.py,sha256=3cFLxYnjxZjmFN1s42_X3oTcRL4V7jPI9Kds_GBk18Q,14441
49
47
  sempy_labs/_one_lake_integration.py,sha256=aThg8Fcei9qTFUTzg2Qwsn-3deTk0ICTCXx53Y23oso,6293
48
+ sempy_labs/_onelake.py,sha256=qIl-6_EX4wbTV7_aI7Gb552Ao-JRacxOyURexbc6ajE,4876
50
49
  sempy_labs/_query_scale_out.py,sha256=tcIEJSHjZ1gh7--WMS8sDqDfF3wbfIEX9Xm2qgahXrc,15348
51
50
  sempy_labs/_refresh_semantic_model.py,sha256=yu92m4Ys6lbW68PP9tVCeUNHXj7cGXvyGr2WYRqgl1g,17365
52
51
  sempy_labs/_semantic_models.py,sha256=WGIyzDA6AiuJG6A3VSMMNtVlUbAcHrEKJNTfxyiYosM,16975
53
52
  sempy_labs/_spark.py,sha256=aQAqmRAm04NWH9j4_qmYJAWdIluoWKzHDTBPr01GWbA,19404
54
53
  sempy_labs/_sql.py,sha256=Y7yRO8j0P6h68VNaqmWVSyfLrI9L9TMBLykovDkgIzY,8274
55
- sempy_labs/_sql_endpoints.py,sha256=EUiJxWdnivxYw5ZQxam9kipxy67RZfUVSJUpKnaUw0Q,6679
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
56
56
  sempy_labs/_sqldatabase.py,sha256=vmTsB1IAluQ99cf8fmcPO2z0SjAjTOM8OCD5nuJdSOI,6908
57
57
  sempy_labs/_tags.py,sha256=tqQlj7AvbaniN8mZl59g145Ofj_wdA6Bnrna0PzlwI4,5897
58
58
  sempy_labs/_translations.py,sha256=6A8CPmH_xvsONX4dOG5XSZ-XeJuAy5VokFJql6uf_Ak,1432
59
59
  sempy_labs/_user_delegation_key.py,sha256=dj540zd_IGNt2GQ_a69_8IBoyZdpldx_3z6NxNV35yo,1453
60
- sempy_labs/_utils.py,sha256=X7wcjg809ZyEgf6fE0mZIv9qe1n1oQX_hHXEHgR4u0U,2737
60
+ sempy_labs/_utils.py,sha256=DBNBmio6jvlVRNITg1pBRqpvMNz3p6GhXONfFNLt5EY,2799
61
61
  sempy_labs/_vertipaq.py,sha256=1UvB79xOxeGdRFINsUsreXxtZtiatHlACAfbQhv45as,38536
62
62
  sempy_labs/_vpax.py,sha256=4rtXXGVoadvdu7uiU9PVsgKszST3XH-K56zmWdMmZEg,15471
63
63
  sempy_labs/_warehouses.py,sha256=l5oJQTwqi0yW6ewHM2mS9TmRy7w1IWeeyQjDHJgWnuU,7788
@@ -102,18 +102,19 @@ sempy_labs/_bpa_translation/_model/_translations_tr-TR.po,sha256=NdW-X4E0QmeLKM0
102
102
  sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L6738FjpJ8o4spwp8FNFGbVItHD-_ec,43500
103
103
  sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
104
104
  sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
105
- sempy_labs/admin/__init__.py,sha256=B6cdHZ6wrGXZSr7kDn3D4xSsya8GPkupfsFVXl4nRAc,4062
105
+ sempy_labs/admin/__init__.py,sha256=0-atps9aClek_q9gs-T0wYG2BG1YL02lyPjAiufSUm0,4181
106
106
  sempy_labs/admin/_activities.py,sha256=SN-uAEWvFO5nKuw4Yi483niixzxShDGMXRv0SV4s4Bk,6833
107
107
  sempy_labs/admin/_apps.py,sha256=4R-VZqo9SGIrwqcQfnFGXIWueBhr4mSI7H8SUlLVl8s,4131
108
108
  sempy_labs/admin/_artifacts.py,sha256=IQ1BOVKMK8Qy_5HpREUso6_NWXbftIodWekByvVvJ5k,2315
109
- sempy_labs/admin/_basic_functions.py,sha256=HfJhdh8tVskRaaypU3qD_EE6IaDDR3MKJyt9Bl-56LE,16306
109
+ sempy_labs/admin/_basic_functions.py,sha256=Pt_10Ndxp50HSKdivWF9RiYNnX1e9U-Rb8VYae_cbZE,16321
110
110
  sempy_labs/admin/_capacities.py,sha256=nanec6kuyuUNjP1iseOoVmVax5VLKzOW0_91oESzEE4,16693
111
111
  sempy_labs/admin/_dataflows.py,sha256=So7kzRdDZ2henr-gmPw-ahEBQTm_xGhZrjkW-gALLQk,1432
112
112
  sempy_labs/admin/_datasets.py,sha256=scGbRZpR32u62HDsvKaUYtpX85n4RGx4eYjxClFIT5U,6277
113
113
  sempy_labs/admin/_domains.py,sha256=siLhIi5UqVM9kf_Xqq-kzvwZKouyqf-wWpPhJ7D-VMk,15238
114
114
  sempy_labs/admin/_external_data_share.py,sha256=HMwKAjSE7Y-499Fo_weaY2SnKIU8_ohTBN3qjJtuJDs,3506
115
115
  sempy_labs/admin/_git.py,sha256=mx2B7RcU4Fi4x6HEeXEotYk0jvcbHYG9_RPjo6UowcA,2379
116
- 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
117
118
  sempy_labs/admin/_reports.py,sha256=JrmooHhiS4ViZsVinUz5T_9oZ7bdn1fIeW_wI8L1BnY,7908
118
119
  sempy_labs/admin/_scanner.py,sha256=0dNfl9W25RTxIQj1rMGhQrH1ioGWpf3-CiZOxHLZ5hQ,4345
119
120
  sempy_labs/admin/_shared.py,sha256=axTqVqp1V1tDtq2YTuSD6M0ST4lAjXqcIfRHwkZqyOQ,3115
@@ -122,7 +123,9 @@ sempy_labs/admin/_tags.py,sha256=emIA626JoC9Cp_vesVNFwahUdDLAK48APNsdG5ki1Xo,378
122
123
  sempy_labs/admin/_tenant.py,sha256=8mewLN79Lf3a-HUKG6Cl8Oimb2kv3r7XWAJKzvEHBMc,19581
123
124
  sempy_labs/admin/_tenant_keys.py,sha256=9yajAPmsbjT25g1-4YbcRkXK8n3JcTFKVOnR0lt2BmU,2762
124
125
  sempy_labs/admin/_users.py,sha256=fYeUez98Dx_g6dC15S-0vttCZRUWWCrNPWNMGVtoiVE,4685
125
- sempy_labs/admin/_workspaces.py,sha256=jOs2IwFWtCAoWJ4GMYLtAjAfaDlJ-i-urNUYGukpZS4,7650
126
+ sempy_labs/admin/_workspaces.py,sha256=GvNUNF5BQw3UgR1kgSV1fs_U-lJw1jCsQZ7m013xhtA,7675
127
+ sempy_labs/deployment_pipeline/__init__.py,sha256=q1Uwvkugz5310WoXOfmj-JzDISp-rGd193Gskycnpw0,647
128
+ sempy_labs/deployment_pipeline/_items.py,sha256=Ng3YfCLJj7DRiCUqDlMfugqQtU6BuucjBl22zC4qmBU,16505
126
129
  sempy_labs/directlake/__init__.py,sha256=xDH3Y4Hxdnp1s7Whdkn6DCrS_cExcJURxkvuz-qv_HI,1879
127
130
  sempy_labs/directlake/_directlake_schema_compare.py,sha256=8KJEdcHHP-6IuEoipDbIOQeqLUtpPt0x4ZXL54MPp0U,5047
128
131
  sempy_labs/directlake/_directlake_schema_sync.py,sha256=hL3QwP9SN46CBqT39lkeLnJ9lLNDl5kLQryzamHUufM,6601
@@ -134,22 +137,27 @@ sempy_labs/directlake/_guardrails.py,sha256=k6MFKEViVSD3mVfHK7IMUM9ws1-goMKjLqt-
134
137
  sempy_labs/directlake/_list_directlake_model_calc_tables.py,sha256=08c6YomMCmOrglO1bRT42beZCss71NDOT_dCwEy10r0,2482
135
138
  sempy_labs/directlake/_show_unsupported_directlake_objects.py,sha256=KlMcIByts2GT_zVD4vMN4V8vySqEiRDr9WE_9xFlaK0,3495
136
139
  sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=dXeEnqrZ4kXns2n7YgQupObA9Se76uf2X5eSqDcZLOg,9201
137
- sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=EQpePqgTsetDG5JJrL5pfYjibmsuzrYk6x2mj0PDfEY,8984
138
- sempy_labs/directlake/_warm_cache.py,sha256=ks_rX2WOUk77rLsvwsCYyQOx-5U-pts27_guLYgMw6w,9236
140
+ sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=_5_fzYuQVzPbrSSnJyND7CcsV3RUOzm3STfAh3f3qGM,10511
141
+ sempy_labs/directlake/_warm_cache.py,sha256=F-LJ8LR950iRW70K2AnkAZfGocPKNzAgDeT9yRW9M44,9294
139
142
  sempy_labs/dotnet_lib/dotnet.runtime.config.json,sha256=syhDFQv6cEmZnE1WtFjNe3NwhsIsnd-CFULv-vEWOFI,167
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
143
- sempy_labs/graph/_teams.py,sha256=UH5ETsReD0pzmdgqQFkcX_95o1aUAv2lAajRJc0RIZY,3175
144
- sempy_labs/graph/_users.py,sha256=2QwwUYfaJnPHPY6M2a9QBWYwwkVDjpcbOQd_Bo9GjJ8,15181
143
+ sempy_labs/eventstream/__init__.py,sha256=amAbVOPhHLsuhBL-BqhTVJ9QYCOW6qFtJ71Ckuydx3Y,1008
144
+ sempy_labs/eventstream/_items.py,sha256=qpNUHEVn7ecizb9cREBMlP60su0Uh_REcku04gnz9Ws,7819
145
+ sempy_labs/eventstream/_topology.py,sha256=Rq18s7ru_YsSp8g0mZbXUi7m8Hr37RYaPE0RaKSmTjo,24412
146
+ sempy_labs/graph/__init__.py,sha256=Y8_R__JasLES8DPeLynmsNjmRuvWPl2McWdr3HU1g0o,1163
147
+ sempy_labs/graph/_groups.py,sha256=LHZ3YyDxDIdL5QCo5OahDFYuDVbJkcttu5xBtxMrLB0,20032
148
+ sempy_labs/graph/_sensitivity_labels.py,sha256=KhY-2-yco5WDdjFJgM3QVYZxEKy_v6kchWBD3LiNPzc,3961
149
+ sempy_labs/graph/_teams.py,sha256=Yeuvb_ZeFyVu5HZTXDG7PdUCAIu3ehdJTQVkQ2wCnGw,3278
150
+ sempy_labs/graph/_user_licenses.py,sha256=akvtDeMwPIM4bJqdaJQPlwRlePsfOmKUmaWBv_dwoQA,2770
151
+ sempy_labs/graph/_users.py,sha256=WD5gtF_EKQpkdgpM1C658lYxdBMSUo1wH1A6-Nzw51I,17235
145
152
  sempy_labs/lakehouse/__init__.py,sha256=jOCjgkIZgwl373pb6lmEwqIkbifwJUKY3K0eZ8LAVws,1245
146
153
  sempy_labs/lakehouse/_blobs.py,sha256=peVPDCw97sB1x9a4KMKOqUB2Igu82-gb4CsvGdbubrU,8557
147
154
  sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=QVxejuu4WFGkG-c2i9B_H6dZsb1m_FRSTraS9GahnT4,3681
148
- sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=4p43Sa2mjJT4heUDp_EpF0vgZff5oNqCxjbat7IZxwk,11940
155
+ sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=x5ugW07-v7aVLAE_XHkXnFt2uJgmFkG0z3caYuVhJHA,13031
149
156
  sempy_labs/lakehouse/_helper.py,sha256=q-z6DTO3-Iy5hM9zXpZhXRD1OPp7JAzGhcyJ_VheDcM,8644
150
- sempy_labs/lakehouse/_lakehouse.py,sha256=tJFeXG1U_GcEW1EVMQKIQpz6kqh_aatAGo208cDCE0Y,10262
157
+ sempy_labs/lakehouse/_lakehouse.py,sha256=Cb72P_sM8UjwBnx3TOQKEe9JySnO-p2x3nqq6Gvyyrc,10338
151
158
  sempy_labs/lakehouse/_livy_sessions.py,sha256=XwEA0QkcFCbCGxSO6MJ5GZ-j9kjNIBiQhIkWG_Znm0E,6034
152
159
  sempy_labs/lakehouse/_materialized_lake_views.py,sha256=EOyVxEo_SaEuVELQzhrWIZVbd-HB7iRbyx0JVpWg1xA,2814
160
+ sempy_labs/lakehouse/_partitioning.py,sha256=JrdcyHZ6j_fXpNHk3jWXBP8YxF7IUet1CzhzIosiTvI,5203
153
161
  sempy_labs/lakehouse/_shortcuts.py,sha256=_XzyX1PCxZaDdZgMr9pyQ_sQyZD0S0tA9iViVl8B5WU,17089
154
162
  sempy_labs/migration/__init__.py,sha256=aA8r2g2mN_elPG8qptXlRiIcyQ9Z5hjKJo23fSNm1RY,1015
155
163
  sempy_labs/migration/_create_pqt_file.py,sha256=IztG7XKAg98zZiWW0oUMtO7WnuqvcmE96gOAwe3UiKg,9659
@@ -168,7 +176,7 @@ sempy_labs/ml_model/_functions.py,sha256=b_TzmVorVXdn8k0JD0SF3kXYu9fduizN6BKSq_5
168
176
  sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
169
177
  sempy_labs/report/__init__.py,sha256=bMX55Py9iJZqLYC1G-M1AgSwLfu4EHRhQGqym4K2Nzc,1264
170
178
  sempy_labs/report/_download_report.py,sha256=pvyiscU2_eZ6RW1wgYEK4MXsDNKwSY7thmcYWRhEyrs,2899
171
- sempy_labs/report/_export_report.py,sha256=BICwz2rkvD914pcp3BmXjw8G7LD2IQramyWTgP-7NXc,11275
179
+ sempy_labs/report/_export_report.py,sha256=mqbQTW23JN13SavilqCEX9pwpbkdD-GX265VDOyrqJg,10291
172
180
  sempy_labs/report/_generate_report.py,sha256=o2oc5Iz4CZdYUAHv46SfKQ2s72VqMod7FzmZwigPJQY,14503
173
181
  sempy_labs/report/_paginated.py,sha256=Tn3XUIBhi2DJcQQzRBVYLKnFnpO7T0nPfvhNcniI5dY,2424
174
182
  sempy_labs/report/_report_bpa.py,sha256=9BNJmxDiZlldYoQvUKcWYc47eycyv_mo0-pocNub7Qk,13419
@@ -176,8 +184,8 @@ sempy_labs/report/_report_bpa_rules.py,sha256=kPPE1UZ_78GePULcIRUarRfdqR7s4CQ46M
176
184
  sempy_labs/report/_report_functions.py,sha256=cBJhjoC6iNYF-I6Ak1a2i2EKQykA5TPVLoofkgsuMkk,20105
177
185
  sempy_labs/report/_report_helper.py,sha256=L9wU0N0rvTUMglZHTxcowywrBDuZvZTv3DA4JrX84Os,7207
178
186
  sempy_labs/report/_report_list_functions.py,sha256=m_Wf1YeZmNtOfCwIILpKUuVR7V2CnwnfhDjz1DDTxOI,3945
179
- sempy_labs/report/_report_rebind.py,sha256=c4-dPCvjqnwdsasjCFlsTo8w6TvhAQ7WPRmAb-mowns,6437
180
- sempy_labs/report/_reportwrapper.py,sha256=HP-ZOGmva5y1ZsxuA2QTddyVjF2nXOm0YEbe5OfrXm8,112178
187
+ sempy_labs/report/_report_rebind.py,sha256=MJGeT2_ZH7yp2IQChzbsSifhdwDfE0Yg7PFA6KDh3Zs,6260
188
+ sempy_labs/report/_reportwrapper.py,sha256=L8OLPEj9MoRESn4xub3cXy7ruDVk_k_aVnz9y__HcV0,113638
181
189
  sempy_labs/report/_save_report.py,sha256=0P1WwIBtSgwrhnjWWvf9xf-e7ifka3DWVF0HM5zeXps,5998
182
190
  sempy_labs/report/_bpareporttemplate/.platform,sha256=kWRa6B_KwSYLsvVFDx372mQriQO8v7dJ_YzQV_cfD-Q,303
183
191
  sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
@@ -211,10 +219,10 @@ sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visua
211
219
  sempy_labs/theme/__init__.py,sha256=JN0z8w_Hc7VUIchRbpY-rjU6879msrFiSTRtMMlr_5g,185
212
220
  sempy_labs/theme/_org_themes.py,sha256=ArLqr1KYI6CT1_mxKOsZlVPaTO0KSkkQ1LbFy4A1fqg,3323
213
221
  sempy_labs/tom/__init__.py,sha256=ZwSpgYDP5VamZTnYP3a1cYHiaKdktOvlOBSOY1816zY,107
214
- sempy_labs/tom/_model.py,sha256=8ArPJJJ8Wgo6FYWfEPWlVl60Umq8INdU6NOyMXaYavY,223643
222
+ sempy_labs/tom/_model.py,sha256=Hjb_zvMVUDgJK-oQKS0NWE9FHNL7FytnebsHK2nWHOY,226595
215
223
  sempy_labs/variable_library/__init__.py,sha256=qyTw5vNldnwYv-TotQSFupwznKIQfcws1UxGjf1RNNo,437
216
224
  sempy_labs/variable_library/_functions.py,sha256=eoB3hUKFGdGMSBNDEsEF9bVoELZp5AnyDxp5BsLGeDc,13733
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,,
225
+ semantic_link_labs-0.12.5.dist-info/METADATA,sha256=ROgV9CQR3LMGQVxBnVbTeT6dL6BXSpnLbI-N_pRkLhk,27945
226
+ semantic_link_labs-0.12.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
227
+ semantic_link_labs-0.12.5.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
228
+ semantic_link_labs-0.12.5.dist-info/RECORD,,
sempy_labs/__init__.py CHANGED
@@ -80,6 +80,7 @@ from ._managed_private_endpoints import (
80
80
  list_managed_private_endpoints,
81
81
  create_managed_private_endpoint,
82
82
  delete_managed_private_endpoint,
83
+ list_managed_private_endpoint_fqdns,
83
84
  )
84
85
  from ._workloads import (
85
86
  list_workloads,
@@ -115,11 +116,6 @@ from ._eventhouses import (
115
116
  delete_eventhouse,
116
117
  get_eventhouse_definition,
117
118
  )
118
- from ._eventstreams import (
119
- list_eventstreams,
120
- create_eventstream,
121
- delete_eventstream,
122
- )
123
119
  from ._kql_querysets import (
124
120
  list_kql_querysets,
125
121
  create_kql_queryset,
@@ -217,11 +213,6 @@ from ._workspace_identity import (
217
213
  provision_workspace_identity,
218
214
  deprovision_workspace_identity,
219
215
  )
220
- from ._deployment_pipelines import (
221
- list_deployment_pipeline_stage_items,
222
- list_deployment_pipeline_stages,
223
- list_deployment_pipelines,
224
- )
225
216
  from ._git import (
226
217
  get_git_connection,
227
218
  get_git_status,
@@ -241,6 +232,7 @@ from ._dataflows import (
241
232
  list_upstream_dataflows,
242
233
  upgrade_dataflow,
243
234
  get_dataflow_definition,
235
+ discover_dataflow_parameters,
244
236
  )
245
237
  from ._connections import (
246
238
  list_connections,
@@ -284,6 +276,7 @@ from ._list_functions import (
284
276
  list_server_properties,
285
277
  list_semantic_model_errors,
286
278
  list_synonyms,
279
+ list_user_defined_functions,
287
280
  )
288
281
  from ._helper_functions import (
289
282
  get_item_definition,
@@ -355,6 +348,15 @@ from ._data_access_security import (
355
348
  from ._get_connection_string import (
356
349
  get_connection_string,
357
350
  )
351
+ from ._sql_audit_settings import (
352
+ get_sql_audit_settings,
353
+ update_sql_audit_settings,
354
+ set_audit_actions_and_group,
355
+ )
356
+ from ._onelake import (
357
+ get_onelake_settings,
358
+ modify_onelake_diagnostics,
359
+ )
358
360
 
359
361
  __all__ = [
360
362
  "resolve_warehouse_id",
@@ -447,9 +449,6 @@ __all__ = [
447
449
  "resolve_capacity_name",
448
450
  "run_model_bpa_bulk",
449
451
  "create_model_bpa_semantic_model",
450
- "list_deployment_pipeline_stage_items",
451
- "list_deployment_pipeline_stages",
452
- "list_deployment_pipelines",
453
452
  "get_git_connection",
454
453
  "get_git_status",
455
454
  "commit_to_git",
@@ -486,9 +485,6 @@ __all__ = [
486
485
  "list_data_pipelines",
487
486
  "create_data_pipeline",
488
487
  "delete_data_pipeline",
489
- "list_eventstreams",
490
- "create_eventstream",
491
- "delete_eventstream",
492
488
  "list_kql_querysets",
493
489
  "create_kql_queryset",
494
490
  "delete_kql_queryset",
@@ -514,6 +510,7 @@ __all__ = [
514
510
  "list_managed_private_endpoints",
515
511
  "create_managed_private_endpoint",
516
512
  "delete_managed_private_endpoint",
513
+ "list_managed_private_endpoint_fqdns",
517
514
  "get_dax_query_dependencies",
518
515
  "get_dax_query_memory_size",
519
516
  "get_mirrored_database_definition",
@@ -611,4 +608,11 @@ __all__ = [
611
608
  "list_data_access_roles",
612
609
  "bind_semantic_model_connection",
613
610
  "unbind_semantic_model_connection",
611
+ "list_user_defined_functions",
612
+ "get_sql_audit_settings",
613
+ "update_sql_audit_settings",
614
+ "set_audit_actions_and_group",
615
+ "discover_dataflow_parameters",
616
+ "get_onelake_settings",
617
+ "modify_onelake_diagnostics",
614
618
  ]
sempy_labs/_a_lib_info.py CHANGED
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.3"
2
+ lib_version = "0.12.5"
@@ -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
 
sempy_labs/_dataflows.py CHANGED
@@ -10,18 +10,25 @@ from sempy_labs._helper_functions import (
10
10
  _decode_b64,
11
11
  _conv_b64,
12
12
  get_jsonpath_value,
13
+ resolve_item_id,
13
14
  )
14
15
  from typing import Optional, Tuple
15
16
  import sempy_labs._icons as icons
16
17
  from uuid import UUID
17
18
  from jsonpath_ng.ext import parse
18
19
  import json
20
+ from sempy._utils._log import log
19
21
 
20
22
 
23
+ @log
21
24
  def list_dataflows(workspace: Optional[str | UUID] = None):
22
25
  """
23
26
  Shows a list of all dataflows which exist within a workspace.
24
27
 
28
+ This is a wrapper function for the following API: `Items - List Dataflows <https://learn.microsoft.com/rest/api/fabric/dataflow/items/list-dataflows>`_.
29
+
30
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
31
+
25
32
  Parameters
26
33
  ----------
27
34
  workspace : str | uuid.UUID, default=None
@@ -91,6 +98,7 @@ def list_dataflows(workspace: Optional[str | UUID] = None):
91
98
  return df
92
99
 
93
100
 
101
+ @log
94
102
  def assign_workspace_to_dataflow_storage(
95
103
  dataflow_storage_account: str, workspace: Optional[str | UUID] = None
96
104
  ):
@@ -133,6 +141,7 @@ def assign_workspace_to_dataflow_storage(
133
141
  )
134
142
 
135
143
 
144
+ @log
136
145
  def list_dataflow_storage_accounts() -> pd.DataFrame:
137
146
  """
138
147
  Shows the accessible dataflow storage accounts.
@@ -154,19 +163,24 @@ def list_dataflow_storage_accounts() -> pd.DataFrame:
154
163
 
155
164
  response = _base_api(request="/v1.0/myorg/dataflowStorageAccounts")
156
165
 
166
+ rows = []
157
167
  for v in response.json().get("value", []):
158
- new_data = {
159
- "Dataflow Storage Account ID": v.get("id"),
160
- "Dataflow Storage Account Name": v.get("name"),
161
- "Enabled": v.get("isEnabled"),
162
- }
163
- df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
168
+ rows.append(
169
+ {
170
+ "Dataflow Storage Account ID": v.get("id"),
171
+ "Dataflow Storage Account Name": v.get("name"),
172
+ "Enabled": v.get("isEnabled"),
173
+ }
174
+ )
164
175
 
165
- _update_dataframe_datatypes(dataframe=df, column_map=columns)
176
+ if rows:
177
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
178
+ _update_dataframe_datatypes(dataframe=df, column_map=columns)
166
179
 
167
180
  return df
168
181
 
169
182
 
183
+ @log
170
184
  def list_upstream_dataflows(
171
185
  dataflow: str | UUID, workspace: Optional[str | UUID] = None
172
186
  ) -> pd.DataFrame:
@@ -175,6 +189,8 @@ def list_upstream_dataflows(
175
189
 
176
190
  This is a wrapper function for the following API: `Dataflows - Get Upstream Dataflows In Group <https://learn.microsoft.com/rest/api/power-bi/dataflows/get-upstream-dataflows-in-group>`_.
177
191
 
192
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
193
+
178
194
  Parameters
179
195
  ----------
180
196
  dataflow : str | uuid.UUID
@@ -211,7 +227,8 @@ def list_upstream_dataflows(
211
227
 
212
228
  def collect_upstreams(dataflow_id, dataflow_name, workspace_id, workspace_name):
213
229
  response = _base_api(
214
- request=f"/v1.0/myorg/groups/{workspace_id}/dataflows/{dataflow_id}/upstreamDataflows"
230
+ request=f"/v1.0/myorg/groups/{workspace_id}/dataflows/{dataflow_id}/upstreamDataflows",
231
+ client="fabric_sp",
215
232
  )
216
233
 
217
234
  values = response.json().get("value", [])
@@ -246,6 +263,7 @@ def list_upstream_dataflows(
246
263
  return df
247
264
 
248
265
 
266
+ @log
249
267
  def _resolve_dataflow_name_and_id_and_generation(
250
268
  dataflow: str | UUID, workspace: Optional[str | UUID] = None
251
269
  ) -> Tuple[str, UUID, str]:
@@ -271,6 +289,7 @@ def _resolve_dataflow_name_and_id_and_generation(
271
289
  return (dataflow_name, dataflow_id, dataflow_generation)
272
290
 
273
291
 
292
+ @log
274
293
  def get_dataflow_definition(
275
294
  dataflow: str | UUID,
276
295
  workspace: Optional[str | UUID] = None,
@@ -338,6 +357,7 @@ def get_dataflow_definition(
338
357
  return result
339
358
 
340
359
 
360
+ @log
341
361
  def upgrade_dataflow(
342
362
  dataflow: str | UUID,
343
363
  workspace: Optional[str | UUID] = None,
@@ -507,8 +527,6 @@ def upgrade_dataflow(
507
527
  new_mashup_doc += ";\r\nshared " + i
508
528
  new_mashup_doc = f"{new_mashup_doc};"
509
529
 
510
- return new_mashup_doc, query_metadata
511
-
512
530
  # Add the dataflow definition to the payload
513
531
  new_definition = {
514
532
  "parts": [
@@ -532,6 +550,7 @@ def upgrade_dataflow(
532
550
  )
533
551
 
534
552
 
553
+ @log
535
554
  def create_dataflow(
536
555
  name: str,
537
556
  workspace: Optional[str | UUID] = None,
@@ -541,6 +560,10 @@ def create_dataflow(
541
560
  """
542
561
  Creates a native Fabric Dataflow Gen2 CI/CD item.
543
562
 
563
+ This is a wrapper function for the following API: `Items - Create Dataflow <https://learn.microsoft.com/rest/api/fabric/dataflow/items/create-dataflow>`_.
564
+
565
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
566
+
544
567
  Parameters
545
568
  ----------
546
569
  name : str
@@ -578,3 +601,68 @@ def create_dataflow(
578
601
  print(
579
602
  f"{icons.green_dot} The dataflow '{name}' has been created within the '{workspace_name}' workspace."
580
603
  )
604
+
605
+
606
+ @log
607
+ def discover_dataflow_parameters(
608
+ dataflow: str | UUID, workspace: str | UUID
609
+ ) -> pd.DataFrame:
610
+ """
611
+ Retrieves all parameters defined in the specified Dataflow.
612
+
613
+ This is a wrapper function for the following API: `Items - Discover Dataflow Parameters <https://learn.microsoft.com/rest/api/fabric/dataflow/items/discover-dataflow-parameters>`_.
614
+
615
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
616
+
617
+ Parameters
618
+ ----------
619
+ dataflow : str | uuid.UUID
620
+ Name or ID of the dataflow.
621
+ workspace : str | uuid.UUID, default=None
622
+ The Fabric workspace name or ID.
623
+ Defaults to None which resolves to the workspace of the attached lakehouse
624
+ or if no lakehouse attached, resolves to the workspace of the notebook.
625
+
626
+ Returns
627
+ -------
628
+ pandas.DataFrame
629
+ A pandas dataframe showing all parameters defined in the specified Dataflow.
630
+ """
631
+
632
+ workspace_id = resolve_workspace_id(workspace)
633
+ dataflow_id = resolve_item_id(
634
+ item=dataflow, type="Dataflow", workspace=workspace_id
635
+ )
636
+ responses = _base_api(
637
+ request=f"/v1/workspaces/{workspace_id}/dataflows/{dataflow_id}/parameters",
638
+ client="fabric_sp",
639
+ uses_pagination=True,
640
+ )
641
+
642
+ columns = {
643
+ "Parameter Name": "string",
644
+ "Is Required": "bool",
645
+ "Description": "string",
646
+ "Parameter Type": "string",
647
+ "Default Value": "string",
648
+ }
649
+
650
+ df = _create_dataframe(columns=columns)
651
+ rows = []
652
+ for r in responses:
653
+ for v in r.get("value", []):
654
+ rows.append(
655
+ {
656
+ "Parameter Name": v.get("name"),
657
+ "Is Required": v.get("isRequired"),
658
+ "Description": v.get("description"),
659
+ "Parameter Type": v.get("type"),
660
+ "Default Value": v.get("defaultValue"),
661
+ }
662
+ )
663
+
664
+ if rows:
665
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
666
+ _update_dataframe_datatypes(dataframe=df, column_map=columns)
667
+
668
+ return df
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
 
@@ -1004,6 +1003,7 @@ def save_as_delta_table(
1004
1003
 
1005
1004
  if merge_schema:
1006
1005
  write_args["schema_mode"] = "merge"
1006
+ write_args["engine"] = "rust"
1007
1007
 
1008
1008
  write_deltalake(**write_args)
1009
1009
  else:
@@ -1619,6 +1619,27 @@ def pagination(client, response):
1619
1619
  return responses
1620
1620
 
1621
1621
 
1622
+ def graph_pagination(response, headers):
1623
+
1624
+ responses = []
1625
+ response_json = response.json()
1626
+ responses.append(response_json)
1627
+
1628
+ # Check for pagination
1629
+ odata_next_link = response_json.get("@odata.nextLink")
1630
+
1631
+ # Loop to handle pagination
1632
+ while odata_next_link is not None:
1633
+ response = requests.get(odata_next_link, headers=headers)
1634
+ response_json = response.json()
1635
+ responses.append(response_json)
1636
+
1637
+ # Update the odata next link for the next iteration
1638
+ odata_next_link = response_json.get("@odata.nextLink")
1639
+
1640
+ return responses
1641
+
1642
+
1622
1643
  def resolve_deployment_pipeline_id(deployment_pipeline: str | UUID) -> UUID:
1623
1644
  """
1624
1645
  Obtains the Id for a given deployment pipeline.
@@ -2254,7 +2275,10 @@ def _base_api(
2254
2275
  if response.status_code not in status_codes:
2255
2276
  raise FabricHTTPException(response)
2256
2277
  if uses_pagination:
2257
- responses = pagination(c, response)
2278
+ if client == "graph":
2279
+ responses = graph_pagination(response, headers)
2280
+ else:
2281
+ responses = pagination(c, response)
2258
2282
  return responses
2259
2283
  else:
2260
2284
  return response
@@ -2296,7 +2320,10 @@ def _update_dataframe_datatypes(dataframe: pd.DataFrame, column_map: dict):
2296
2320
  elif data_type == "int_fillna":
2297
2321
  dataframe[column] = dataframe[column].fillna(0).astype(int)
2298
2322
  elif data_type in ["str", "string"]:
2299
- dataframe[column] = dataframe[column].astype(str)
2323
+ try:
2324
+ dataframe[column] = dataframe[column].astype(str)
2325
+ except Exception:
2326
+ pass
2300
2327
  # Avoid having empty lists or lists with a value of None.
2301
2328
  elif data_type in ["list"]:
2302
2329
  dataframe[column] = dataframe[column].apply(