semantic-link-labs 0.12.4__py3-none-any.whl → 0.12.6__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: semantic-link-labs
3
- Version: 0.12.4
3
+ Version: 0.12.6
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.1
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.4&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.12.6&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.6](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.6) (October 30, 2025)
158
+ * [0.12.5](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.5) (October 30, 2025)
157
159
  * [0.12.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.4) (October 16, 2025)
158
160
  * [0.12.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.3) (September 17, 2025)
159
161
  * [0.12.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.2) (September 12, 2025)
@@ -1,6 +1,6 @@
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
1
+ semantic_link_labs-0.12.6.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=qqgyWkDSThThN1uIw1ThNXBdeyaVcvvJ3m0kUS23_dE,53
4
4
  sempy_labs/_ai.py,sha256=fiI3RCadJ2jG15vZIWD9rKVhvmGWoD9uth9-PlSPBNs,16196
5
5
  sempy_labs/_authentication.py,sha256=HtWZEHdf01ILhAxRrWpUpi5i1Ow8Des8CfMSzDVNGlM,8500
6
6
  sempy_labs/_capacities.py,sha256=NL3tBB3OUHyy8OMHow4XMKMijSW5MaGl82Q0-mJJ2KI,40437
@@ -10,12 +10,11 @@ sempy_labs/_connections.py,sha256=deIovVV2JOx4QW-4-A_V9O6l-FJPh3JWTGmIXZ_YH2M,19
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
@@ -26,7 +25,7 @@ sempy_labs/_generate_semantic_model.py,sha256=jx6azjeLRiFTOF1up4u6emwOoD_EqFy1X1
26
25
  sempy_labs/_get_connection_string.py,sha256=55AAckOhWLC2Vz1bIjseGkWrC6pnN3sgIfLD8hAy45w,2989
27
26
  sempy_labs/_git.py,sha256=7aWH5O6FE7aJL0U1NnZlz3szFL51DjQvmb9EqtiuqzI,17905
28
27
  sempy_labs/_graphQL.py,sha256=WDallUQBiOqJdz0aJmYH3cUXCOW_AqhFLs0EpV8_5Rw,2749
29
- sempy_labs/_helper_functions.py,sha256=VNl0a56mq0vL3GSmuR3VhSfbt5vxw8NHJrwHBsvJJmU,85831
28
+ sempy_labs/_helper_functions.py,sha256=JJbkScQlbFjoU7fUKPjL1ZwF-GBB7vxay65QC3XpVE4,85957
30
29
  sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
31
30
  sempy_labs/_job_scheduler.py,sha256=iCrtFD3pWwUCmjPwV4XzMbmJn_Bn2DwDvedxN9qQNFo,18868
32
31
  sempy_labs/_kql_databases.py,sha256=Wr338mNf0wzvpBJYHbWHjzUudoeMZMUia_smdkzbPfI,4796
@@ -34,18 +33,19 @@ sempy_labs/_kql_querysets.py,sha256=C7nRv03riGJc7sbeGNz1R6dom6Wb-5dno_wAhFep468,
34
33
  sempy_labs/_kusto.py,sha256=g3Up4j1KNdIGC2DDbvoduCdX1Pp8fAPGAlBAqOtaBeg,4544
35
34
  sempy_labs/_labels.py,sha256=nPSf2lbXELAnh7-doOIw-i1MJYK-wNLW9asv3QYuxBg,3580
36
35
  sempy_labs/_list_functions.py,sha256=DJyEWAeWg4GEpxXEP_nWe1YnQjqe2KA_hLpyrA2A6MY,61184
37
- sempy_labs/_managed_private_endpoints.py,sha256=KEcVtuYwiKcMo8-8YiAbKFoN0n-2W_wc24R2KiRZKFM,7069
36
+ sempy_labs/_managed_private_endpoints.py,sha256=mLxoPSN2lpnkxwCwqaPwe9LT0ggUfr3N96e0rCLbNwc,9397
38
37
  sempy_labs/_mirrored_databases.py,sha256=njjHHqXiTBNA_424MrgaE-O7lvZiyvCEen0aTcrjogs,14832
39
38
  sempy_labs/_mirrored_warehouses.py,sha256=QvHze0WiYSMiwlskVZcfxMICXtwsLwyygJx9foLOX70,1793
40
39
  sempy_labs/_ml_experiments.py,sha256=hC8Mh5rEbpilno-O21MeTzKOjXrhzUYX2aysSgjnNdE,3439
41
40
  sempy_labs/_model_auto_build.py,sha256=LpeRDY-L3b8LxvxmbUXZGDfzlqcs84rAPePf9XgJ0yE,5075
42
- sempy_labs/_model_bpa.py,sha256=ZPsBxDaxLRc3xcOCfvzK2GBCCmNTPLMP3jzW5IHcrXY,22041
41
+ sempy_labs/_model_bpa.py,sha256=dq2mOfMMzP8vjX8--Lss7uqWEjAkBKqMq5fK_NF8-6s,22282
43
42
  sempy_labs/_model_bpa_bulk.py,sha256=hRY3dRBUtecrbscCZsEGv6TpCVqg_zAi8NmRq6dVMiE,15845
44
43
  sempy_labs/_model_bpa_rules.py,sha256=SZKUHEsWzvivpNQK28zkmaJ1Z16o6_XdQPcpwxznPTg,46299
45
44
  sempy_labs/_model_dependencies.py,sha256=iAEbaInRDiKPqx0JFl35Yby6pD1STo3ruZrBK0wsAU8,13213
46
45
  sempy_labs/_mounted_data_factories.py,sha256=jNlSxtUs_LNwE7R9HQusBAksk2QbinKyDx3ySe_q9q4,3924
47
46
  sempy_labs/_notebooks.py,sha256=3cFLxYnjxZjmFN1s42_X3oTcRL4V7jPI9Kds_GBk18Q,14441
48
47
  sempy_labs/_one_lake_integration.py,sha256=aThg8Fcei9qTFUTzg2Qwsn-3deTk0ICTCXx53Y23oso,6293
48
+ sempy_labs/_onelake.py,sha256=qIl-6_EX4wbTV7_aI7Gb552Ao-JRacxOyURexbc6ajE,4876
49
49
  sempy_labs/_query_scale_out.py,sha256=tcIEJSHjZ1gh7--WMS8sDqDfF3wbfIEX9Xm2qgahXrc,15348
50
50
  sempy_labs/_refresh_semantic_model.py,sha256=yu92m4Ys6lbW68PP9tVCeUNHXj7cGXvyGr2WYRqgl1g,17365
51
51
  sempy_labs/_semantic_models.py,sha256=WGIyzDA6AiuJG6A3VSMMNtVlUbAcHrEKJNTfxyiYosM,16975
@@ -105,8 +105,8 @@ sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeM
105
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
- sempy_labs/admin/_artifacts.py,sha256=IQ1BOVKMK8Qy_5HpREUso6_NWXbftIodWekByvVvJ5k,2315
109
- sempy_labs/admin/_basic_functions.py,sha256=HfJhdh8tVskRaaypU3qD_EE6IaDDR3MKJyt9Bl-56LE,16306
108
+ sempy_labs/admin/_artifacts.py,sha256=fNqJbUwnsYrKoAPwZnCAK_8LRREcQJs52J7UCUTknPs,2331
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
@@ -123,7 +123,9 @@ sempy_labs/admin/_tags.py,sha256=emIA626JoC9Cp_vesVNFwahUdDLAK48APNsdG5ki1Xo,378
123
123
  sempy_labs/admin/_tenant.py,sha256=8mewLN79Lf3a-HUKG6Cl8Oimb2kv3r7XWAJKzvEHBMc,19581
124
124
  sempy_labs/admin/_tenant_keys.py,sha256=9yajAPmsbjT25g1-4YbcRkXK8n3JcTFKVOnR0lt2BmU,2762
125
125
  sempy_labs/admin/_users.py,sha256=fYeUez98Dx_g6dC15S-0vttCZRUWWCrNPWNMGVtoiVE,4685
126
- 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
127
129
  sempy_labs/directlake/__init__.py,sha256=xDH3Y4Hxdnp1s7Whdkn6DCrS_cExcJURxkvuz-qv_HI,1879
128
130
  sempy_labs/directlake/_directlake_schema_compare.py,sha256=8KJEdcHHP-6IuEoipDbIOQeqLUtpPt0x4ZXL54MPp0U,5047
129
131
  sempy_labs/directlake/_directlake_schema_sync.py,sha256=hL3QwP9SN46CBqT39lkeLnJ9lLNDl5kLQryzamHUufM,6601
@@ -135,18 +137,18 @@ sempy_labs/directlake/_guardrails.py,sha256=k6MFKEViVSD3mVfHK7IMUM9ws1-goMKjLqt-
135
137
  sempy_labs/directlake/_list_directlake_model_calc_tables.py,sha256=08c6YomMCmOrglO1bRT42beZCss71NDOT_dCwEy10r0,2482
136
138
  sempy_labs/directlake/_show_unsupported_directlake_objects.py,sha256=KlMcIByts2GT_zVD4vMN4V8vySqEiRDr9WE_9xFlaK0,3495
137
139
  sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=dXeEnqrZ4kXns2n7YgQupObA9Se76uf2X5eSqDcZLOg,9201
138
- sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=EQpePqgTsetDG5JJrL5pfYjibmsuzrYk6x2mj0PDfEY,8984
140
+ sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=_5_fzYuQVzPbrSSnJyND7CcsV3RUOzm3STfAh3f3qGM,10511
139
141
  sempy_labs/directlake/_warm_cache.py,sha256=F-LJ8LR950iRW70K2AnkAZfGocPKNzAgDeT9yRW9M44,9294
140
142
  sempy_labs/dotnet_lib/dotnet.runtime.config.json,sha256=syhDFQv6cEmZnE1WtFjNe3NwhsIsnd-CFULv-vEWOFI,167
141
143
  sempy_labs/eventstream/__init__.py,sha256=amAbVOPhHLsuhBL-BqhTVJ9QYCOW6qFtJ71Ckuydx3Y,1008
142
144
  sempy_labs/eventstream/_items.py,sha256=qpNUHEVn7ecizb9cREBMlP60su0Uh_REcku04gnz9Ws,7819
143
145
  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/__init__.py,sha256=Y8_R__JasLES8DPeLynmsNjmRuvWPl2McWdr3HU1g0o,1163
147
+ sempy_labs/graph/_groups.py,sha256=LHZ3YyDxDIdL5QCo5OahDFYuDVbJkcttu5xBtxMrLB0,20032
146
148
  sempy_labs/graph/_sensitivity_labels.py,sha256=KhY-2-yco5WDdjFJgM3QVYZxEKy_v6kchWBD3LiNPzc,3961
147
149
  sempy_labs/graph/_teams.py,sha256=Yeuvb_ZeFyVu5HZTXDG7PdUCAIu3ehdJTQVkQ2wCnGw,3278
148
150
  sempy_labs/graph/_user_licenses.py,sha256=akvtDeMwPIM4bJqdaJQPlwRlePsfOmKUmaWBv_dwoQA,2770
149
- sempy_labs/graph/_users.py,sha256=dmeDAAWJv1_NnxmNRM9ibGK5MRwHscSEfPwB7nED458,15453
151
+ sempy_labs/graph/_users.py,sha256=WD5gtF_EKQpkdgpM1C658lYxdBMSUo1wH1A6-Nzw51I,17235
150
152
  sempy_labs/lakehouse/__init__.py,sha256=jOCjgkIZgwl373pb6lmEwqIkbifwJUKY3K0eZ8LAVws,1245
151
153
  sempy_labs/lakehouse/_blobs.py,sha256=peVPDCw97sB1x9a4KMKOqUB2Igu82-gb4CsvGdbubrU,8557
152
154
  sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=QVxejuu4WFGkG-c2i9B_H6dZsb1m_FRSTraS9GahnT4,3681
@@ -174,7 +176,7 @@ sempy_labs/ml_model/_functions.py,sha256=b_TzmVorVXdn8k0JD0SF3kXYu9fduizN6BKSq_5
174
176
  sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
175
177
  sempy_labs/report/__init__.py,sha256=bMX55Py9iJZqLYC1G-M1AgSwLfu4EHRhQGqym4K2Nzc,1264
176
178
  sempy_labs/report/_download_report.py,sha256=pvyiscU2_eZ6RW1wgYEK4MXsDNKwSY7thmcYWRhEyrs,2899
177
- sempy_labs/report/_export_report.py,sha256=BICwz2rkvD914pcp3BmXjw8G7LD2IQramyWTgP-7NXc,11275
179
+ sempy_labs/report/_export_report.py,sha256=mqbQTW23JN13SavilqCEX9pwpbkdD-GX265VDOyrqJg,10291
178
180
  sempy_labs/report/_generate_report.py,sha256=o2oc5Iz4CZdYUAHv46SfKQ2s72VqMod7FzmZwigPJQY,14503
179
181
  sempy_labs/report/_paginated.py,sha256=Tn3XUIBhi2DJcQQzRBVYLKnFnpO7T0nPfvhNcniI5dY,2424
180
182
  sempy_labs/report/_report_bpa.py,sha256=9BNJmxDiZlldYoQvUKcWYc47eycyv_mo0-pocNub7Qk,13419
@@ -182,8 +184,8 @@ sempy_labs/report/_report_bpa_rules.py,sha256=kPPE1UZ_78GePULcIRUarRfdqR7s4CQ46M
182
184
  sempy_labs/report/_report_functions.py,sha256=cBJhjoC6iNYF-I6Ak1a2i2EKQykA5TPVLoofkgsuMkk,20105
183
185
  sempy_labs/report/_report_helper.py,sha256=L9wU0N0rvTUMglZHTxcowywrBDuZvZTv3DA4JrX84Os,7207
184
186
  sempy_labs/report/_report_list_functions.py,sha256=m_Wf1YeZmNtOfCwIILpKUuVR7V2CnwnfhDjz1DDTxOI,3945
185
- sempy_labs/report/_report_rebind.py,sha256=c4-dPCvjqnwdsasjCFlsTo8w6TvhAQ7WPRmAb-mowns,6437
186
- sempy_labs/report/_reportwrapper.py,sha256=CzMfGZYISTqrMjWp5FPhNYRys556aQnnHnOEZmzDXwU,112542
187
+ sempy_labs/report/_report_rebind.py,sha256=MJGeT2_ZH7yp2IQChzbsSifhdwDfE0Yg7PFA6KDh3Zs,6260
188
+ sempy_labs/report/_reportwrapper.py,sha256=L8OLPEj9MoRESn4xub3cXy7ruDVk_k_aVnz9y__HcV0,113638
187
189
  sempy_labs/report/_save_report.py,sha256=0P1WwIBtSgwrhnjWWvf9xf-e7ifka3DWVF0HM5zeXps,5998
188
190
  sempy_labs/report/_bpareporttemplate/.platform,sha256=kWRa6B_KwSYLsvVFDx372mQriQO8v7dJ_YzQV_cfD-Q,303
189
191
  sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
@@ -220,7 +222,7 @@ sempy_labs/tom/__init__.py,sha256=ZwSpgYDP5VamZTnYP3a1cYHiaKdktOvlOBSOY1816zY,10
220
222
  sempy_labs/tom/_model.py,sha256=Hjb_zvMVUDgJK-oQKS0NWE9FHNL7FytnebsHK2nWHOY,226595
221
223
  sempy_labs/variable_library/__init__.py,sha256=qyTw5vNldnwYv-TotQSFupwznKIQfcws1UxGjf1RNNo,437
222
224
  sempy_labs/variable_library/_functions.py,sha256=eoB3hUKFGdGMSBNDEsEF9bVoELZp5AnyDxp5BsLGeDc,13733
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,,
225
+ semantic_link_labs-0.12.6.dist-info/METADATA,sha256=ydR2MzhwR9IPkPOzW-Q8ohfbA4QBzP2oue-cI5uJek8,28044
226
+ semantic_link_labs-0.12.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
227
+ semantic_link_labs-0.12.6.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
228
+ semantic_link_labs-0.12.6.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,
@@ -212,11 +213,6 @@ from ._workspace_identity import (
212
213
  provision_workspace_identity,
213
214
  deprovision_workspace_identity,
214
215
  )
215
- from ._deployment_pipelines import (
216
- list_deployment_pipeline_stage_items,
217
- list_deployment_pipeline_stages,
218
- list_deployment_pipelines,
219
- )
220
216
  from ._git import (
221
217
  get_git_connection,
222
218
  get_git_status,
@@ -236,6 +232,7 @@ from ._dataflows import (
236
232
  list_upstream_dataflows,
237
233
  upgrade_dataflow,
238
234
  get_dataflow_definition,
235
+ discover_dataflow_parameters,
239
236
  )
240
237
  from ._connections import (
241
238
  list_connections,
@@ -356,6 +353,10 @@ from ._sql_audit_settings import (
356
353
  update_sql_audit_settings,
357
354
  set_audit_actions_and_group,
358
355
  )
356
+ from ._onelake import (
357
+ get_onelake_settings,
358
+ modify_onelake_diagnostics,
359
+ )
359
360
 
360
361
  __all__ = [
361
362
  "resolve_warehouse_id",
@@ -448,9 +449,6 @@ __all__ = [
448
449
  "resolve_capacity_name",
449
450
  "run_model_bpa_bulk",
450
451
  "create_model_bpa_semantic_model",
451
- "list_deployment_pipeline_stage_items",
452
- "list_deployment_pipeline_stages",
453
- "list_deployment_pipelines",
454
452
  "get_git_connection",
455
453
  "get_git_status",
456
454
  "commit_to_git",
@@ -512,6 +510,7 @@ __all__ = [
512
510
  "list_managed_private_endpoints",
513
511
  "create_managed_private_endpoint",
514
512
  "delete_managed_private_endpoint",
513
+ "list_managed_private_endpoint_fqdns",
515
514
  "get_dax_query_dependencies",
516
515
  "get_dax_query_memory_size",
517
516
  "get_mirrored_database_definition",
@@ -613,4 +612,7 @@ __all__ = [
613
612
  "get_sql_audit_settings",
614
613
  "update_sql_audit_settings",
615
614
  "set_audit_actions_and_group",
615
+ "discover_dataflow_parameters",
616
+ "get_onelake_settings",
617
+ "modify_onelake_diagnostics",
616
618
  ]
sempy_labs/_a_lib_info.py CHANGED
@@ -1,2 +1,2 @@
1
1
  lib_name = "semanticlinklabs"
2
- lib_version = "0.12.4"
2
+ lib_version = "0.12.6"
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
@@ -1003,6 +1003,7 @@ def save_as_delta_table(
1003
1003
 
1004
1004
  if merge_schema:
1005
1005
  write_args["schema_mode"] = "merge"
1006
+ write_args["engine"] = "rust"
1006
1007
 
1007
1008
  write_deltalake(**write_args)
1008
1009
  else:
@@ -2319,7 +2320,10 @@ def _update_dataframe_datatypes(dataframe: pd.DataFrame, column_map: dict):
2319
2320
  elif data_type == "int_fillna":
2320
2321
  dataframe[column] = dataframe[column].fillna(0).astype(int)
2321
2322
  elif data_type in ["str", "string"]:
2322
- dataframe[column] = dataframe[column].astype(str)
2323
+ try:
2324
+ dataframe[column] = dataframe[column].astype(str)
2325
+ except Exception:
2326
+ pass
2323
2327
  # Avoid having empty lists or lists with a value of None.
2324
2328
  elif data_type in ["list"]:
2325
2329
  dataframe[column] = dataframe[column].apply(
@@ -2,6 +2,7 @@ import pandas as pd
2
2
  import sempy_labs._icons as icons
3
3
  from typing import Optional
4
4
  from sempy_labs._helper_functions import (
5
+ resolve_item_id,
5
6
  resolve_workspace_name_and_id,
6
7
  _is_valid_uuid,
7
8
  _base_api,
@@ -190,3 +191,64 @@ def delete_managed_private_endpoint(
190
191
  workspace_name=workspace_name,
191
192
  action="deleted",
192
193
  )
194
+
195
+
196
+ @log
197
+ def list_managed_private_endpoint_fqdns(
198
+ managed_private_endpoint: str | UUID, workspace: Optional[str | UUID] = None
199
+ ) -> pd.DataFrame:
200
+ """
201
+ Shows a list of fully qualified domain names (FQDNs) associated with the specified managed private endpoint.
202
+
203
+ This is a wrapper function for the following API: `Managed Private Endpoints - List FQDNs <https://learn.microsoft.com/rest/api/fabric/core/managed-private-endpoints/list-fqd-ns>`.
204
+
205
+ Service Principal Authentication is supported (see `here <https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb>`_ for examples).
206
+
207
+ Parameters
208
+ ----------
209
+ managed_private_endpoint : str | uuid.UUID
210
+ The managed private endpoint name or ID.
211
+ workspace : str | uuid.UUID, default=None
212
+ The Fabric workspace name or ID.
213
+ Defaults to None which resolves to the workspace of the attached lakehouse
214
+ or if no lakehouse attached, resolves to the workspace of the notebook.
215
+
216
+ Returns
217
+ -------
218
+ pandas.DataFrame
219
+ A pandas dataframe showing a list of fully qualified domain names (FQDNs) associated with the specified managed private endpoint.
220
+ """
221
+
222
+ workspace_id = resolve_workspace_id(workspace)
223
+ if _is_valid_uuid(managed_private_endpoint):
224
+ item_id = managed_private_endpoint
225
+ else:
226
+ df = list_managed_private_endpoints(workspace=workspace_id)
227
+ df_filt = df[df["Managed Private Endpoint Name"] == managed_private_endpoint]
228
+ if df_filt.empty:
229
+ raise ValueError(
230
+ f"{icons.red_dot} The '{managed_private_endpoint}' managed private endpoint does not exist within the workspace."
231
+ )
232
+ item_id = df_filt["Managed Private Endpoint Id"].iloc[0]
233
+
234
+ columns = {"FQDN": "str"}
235
+ df = _create_dataframe(columns=columns)
236
+ responses = _base_api(
237
+ request=f"/v1/workspaces/{workspace_id}/managedPrivateEndpoints/{item_id}/targetFQDNs",
238
+ uses_pagination=True,
239
+ client="fabric_sp",
240
+ )
241
+
242
+ rows = []
243
+ for r in responses:
244
+ for v in r.get("value", []):
245
+ rows.append(
246
+ {
247
+ "FQDN": v,
248
+ }
249
+ )
250
+
251
+ if rows:
252
+ df = pd.DataFrame(rows, columns=list(columns.keys()))
253
+
254
+ return df
sempy_labs/_model_bpa.py CHANGED
@@ -300,6 +300,10 @@ def run_model_bpa(
300
300
  tom.all_partitions(),
301
301
  lambda obj: format_dax_object_name(obj.Parent.Name, obj.Name),
302
302
  ),
303
+ "Function": (
304
+ tom.all_functions(),
305
+ lambda obj: obj.Name,
306
+ ),
303
307
  }
304
308
 
305
309
  for i, r in rules.iterrows():
@@ -320,6 +324,8 @@ def run_model_bpa(
320
324
  x = ["Model"]
321
325
  elif scope == "Measure":
322
326
  x = [nm(obj) for obj in tom.all_measures() if expr(obj, tom)]
327
+ elif scope == "Function":
328
+ x = [nm(obj) for obj in tom.all_functions() if expr(obj, tom)]
323
329
  elif scope == "Column":
324
330
  x = [nm(obj) for obj in tom.all_columns() if expr(obj, tom)]
325
331
  elif scope == "Partition":