semantic-link-labs 0.8.11__py3-none-any.whl → 0.9.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of semantic-link-labs might be problematic. Click here for more details.

Files changed (40) hide show
  1. {semantic_link_labs-0.8.11.dist-info → semantic_link_labs-0.9.1.dist-info}/METADATA +9 -6
  2. {semantic_link_labs-0.8.11.dist-info → semantic_link_labs-0.9.1.dist-info}/RECORD +40 -40
  3. {semantic_link_labs-0.8.11.dist-info → semantic_link_labs-0.9.1.dist-info}/WHEEL +1 -1
  4. sempy_labs/__init__.py +29 -2
  5. sempy_labs/_authentication.py +78 -4
  6. sempy_labs/_capacities.py +770 -200
  7. sempy_labs/_capacity_migration.py +7 -37
  8. sempy_labs/_clear_cache.py +8 -8
  9. sempy_labs/_deployment_pipelines.py +1 -1
  10. sempy_labs/_gateways.py +2 -0
  11. sempy_labs/_generate_semantic_model.py +8 -0
  12. sempy_labs/_helper_functions.py +119 -79
  13. sempy_labs/_job_scheduler.py +138 -3
  14. sempy_labs/_list_functions.py +40 -31
  15. sempy_labs/_model_bpa.py +207 -204
  16. sempy_labs/_model_bpa_bulk.py +2 -2
  17. sempy_labs/_model_bpa_rules.py +3 -3
  18. sempy_labs/_notebooks.py +2 -0
  19. sempy_labs/_query_scale_out.py +8 -0
  20. sempy_labs/_sql.py +11 -7
  21. sempy_labs/_vertipaq.py +4 -2
  22. sempy_labs/_warehouses.py +6 -6
  23. sempy_labs/admin/_basic_functions.py +156 -103
  24. sempy_labs/admin/_domains.py +7 -2
  25. sempy_labs/admin/_git.py +4 -1
  26. sempy_labs/admin/_items.py +7 -2
  27. sempy_labs/admin/_scanner.py +7 -4
  28. sempy_labs/directlake/_directlake_schema_compare.py +7 -2
  29. sempy_labs/directlake/_directlake_schema_sync.py +6 -0
  30. sempy_labs/directlake/_dl_helper.py +51 -31
  31. sempy_labs/directlake/_get_directlake_lakehouse.py +20 -27
  32. sempy_labs/directlake/_update_directlake_partition_entity.py +5 -0
  33. sempy_labs/lakehouse/_get_lakehouse_columns.py +17 -22
  34. sempy_labs/lakehouse/_get_lakehouse_tables.py +20 -32
  35. sempy_labs/lakehouse/_lakehouse.py +2 -19
  36. sempy_labs/report/_generate_report.py +45 -0
  37. sempy_labs/report/_report_bpa.py +2 -2
  38. sempy_labs/tom/_model.py +97 -16
  39. {semantic_link_labs-0.8.11.dist-info → semantic_link_labs-0.9.1.dist-info}/LICENSE +0 -0
  40. {semantic_link_labs-0.8.11.dist-info → semantic_link_labs-0.9.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: semantic-link-labs
3
- Version: 0.8.11
3
+ Version: 0.9.1
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -15,11 +15,10 @@ 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.8.3
18
+ Requires-Dist: semantic-link-sempy>=0.8.5
19
19
  Requires-Dist: anytree
20
20
  Requires-Dist: powerbiclient
21
21
  Requires-Dist: polib
22
- Requires-Dist: azure.mgmt.resource
23
22
  Requires-Dist: jsonpath_ng
24
23
  Provides-Extra: test
25
24
  Requires-Dist: pytest>=8.2.1; extra == "test"
@@ -27,7 +26,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
27
26
  # Semantic Link Labs
28
27
 
29
28
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
30
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.11&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.1&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
31
30
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
32
31
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
33
32
 
@@ -84,7 +83,9 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
84
83
  * Notebooks
85
84
  * [Import a notebook from the web](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.import_notebook_from_web)
86
85
  * APIs
87
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
86
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
87
+ * Service Principal Authentication
88
+ * Now supported using the [service_principal_authentication](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.service_principal_authentication) context manager for the [admin](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.admin.html) subpackage, Azure API wrapper functions, and [connect_semantic_model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.connect_semantic_model). See this [helper notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb) for additional instructions.
88
89
 
89
90
  ## Helper Notebooks
90
91
 
@@ -142,6 +143,8 @@ An even better way to ensure the semantic-link-labs library is available in your
142
143
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
143
144
 
144
145
  ## Version History
146
+ * [0.9.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.1) (January 22, 2024)
147
+ * [0.9.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.0) (January 22, 2024)
145
148
  * [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
146
149
  * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
147
150
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
@@ -1,47 +1,47 @@
1
- sempy_labs/__init__.py,sha256=tFS1eXuaSVb2pFpDI3tod4ei4OJsitxbZupbyME0Zxw,13271
1
+ sempy_labs/__init__.py,sha256=JkIsrdcqLJL0-jR32hFeRzSzOURnYargMZrWRbnyoRM,14001
2
2
  sempy_labs/_ai.py,sha256=CzsNw6Wpd2B5Rd0RcY250-_p0L-0gFoMNLEc_KmrobU,16177
3
- sempy_labs/_authentication.py,sha256=a4sPN8IAf7w-Jftm3PvtF62HqWLkCD69tXgze_G59Zg,4642
4
- sempy_labs/_capacities.py,sha256=HWX1ivlWpyS7Ea_ny-39kUAQYFGMzo42kWMGdJMINos,25466
5
- sempy_labs/_capacity_migration.py,sha256=PCIodWXas9v7q93hqD2m8EanJHPJzke52jbCWOfnLZk,27764
6
- sempy_labs/_clear_cache.py,sha256=gaHbumh26I0RDKwjWhmlKVN7uR3oRNiFNzD4PNXjqG0,12896
3
+ sempy_labs/_authentication.py,sha256=GjtN5XqIyWXbR5Ni4hfYiUNwgFa-ySX8e-BrqE1vgGc,6903
4
+ sempy_labs/_capacities.py,sha256=8FdjQ5Uc6kDarqxpfeeNedsigJLGPyGyXqzEgIQQrvc,45294
5
+ sempy_labs/_capacity_migration.py,sha256=F74x6ptdYi1joeleoZ_jKVI-G73tQEDKO4_IrKAeQbU,26152
6
+ sempy_labs/_clear_cache.py,sha256=02zw7ccbKZtvCIgr5u5MyyJEgevzFFcxtU727y4eafM,12780
7
7
  sempy_labs/_connections.py,sha256=l6iDJgB-ZGR7jhNHGlhM1__xRVciLNAyILWLo8IX5bs,17693
8
8
  sempy_labs/_data_pipelines.py,sha256=1elajdbtNySi-XSqeshG6q9dVUsjNvb6lvVQqelpzoI,5754
9
9
  sempy_labs/_dataflows.py,sha256=hchdtA4pIC4R7q0QOKkE5Lmef_HBfRftoRorvp8-rt4,8311
10
10
  sempy_labs/_dax.py,sha256=64yaKbSUpoDnub7uKXsuznJ6u_0peN_RfAZJYEB6uPY,9302
11
- sempy_labs/_deployment_pipelines.py,sha256=WBBQM85-3-MkXb5OmRPF6U83xLyhKSlYUyhRlkvcl4k,6027
11
+ sempy_labs/_deployment_pipelines.py,sha256=LdrzvcU7JmspGAWBkSMViVyp0ZR-VGhChSGnk3SFRho,6027
12
12
  sempy_labs/_documentation.py,sha256=yVA8VPEzx_fmljtcvSxtB7-BeupYsfdMXXjp6Fpnyo8,5007
13
13
  sempy_labs/_environments.py,sha256=m0bZNUWERS0zMwVbGaHhJBbugpmql89V_QuFx4n20BI,5574
14
14
  sempy_labs/_eventhouses.py,sha256=cmGrvH2j7SnpOIiYiILBRpgUVeFq18vBhSOzLiMAMV4,4161
15
15
  sempy_labs/_eventstreams.py,sha256=MNjeHQCfKQ99vxr9J42qDR85Kmg4D5x3on3irRxwViQ,4186
16
16
  sempy_labs/_external_data_shares.py,sha256=lKuAoW2M3SkWo4Tp0isd3W_Ich473605odAJcrtBm-c,6793
17
- sempy_labs/_gateways.py,sha256=CulZHryKIsjExrj1YcS1iH0PmNUbB5iXTVmOb_xF0yA,16298
18
- sempy_labs/_generate_semantic_model.py,sha256=RUpdXgqE2kQGnAoTtipML03cIS7JIw3ijE46t-heMCI,18322
17
+ sempy_labs/_gateways.py,sha256=nmxfSLf6FdEGrtcnJBI7IFk7b9gPWofjy8bXBQjqZNw,16337
18
+ sempy_labs/_generate_semantic_model.py,sha256=eOugdIGf7m-Tdh8fFSgRbz0NkzqUSj16wTUF_R5ekYE,18391
19
19
  sempy_labs/_git.py,sha256=ZHIo5qnR9QbV1DVKayBSb0i9iBxthkEtfm4YMKbUwNo,15926
20
- sempy_labs/_helper_functions.py,sha256=HVoWFypkpSZMBkwGmk0yvueHJfP7WoEIh7HzsKEw28Q,40518
20
+ sempy_labs/_helper_functions.py,sha256=JjkMTpvK8GWxAGBxOHb_jrsOwwXZqNXGafjVunpyfck,41615
21
21
  sempy_labs/_icons.py,sha256=ez2dx_LCti71S_-eB6WYQ-kOMyiBL8ZJN12-ev5dcmA,3579
22
- sempy_labs/_job_scheduler.py,sha256=a3URwhhLZMNz0oz3B2Vwkk_B3s6fN5dgkPxuh38XM20,2913
22
+ sempy_labs/_job_scheduler.py,sha256=Xfpn-_jyWPrv9Gnj_GBrXTyQPHCS1zLD1oNjZKNd3ZU,7697
23
23
  sempy_labs/_kql_databases.py,sha256=z4UmjkLPOoIspystiCqA-4inpK5jv6IGYf-DsEcihhg,4746
24
24
  sempy_labs/_kql_querysets.py,sha256=csnvTKB3jtcf_tv6D6okY0k445DVNcSmN253y6dRZww,4282
25
- sempy_labs/_list_functions.py,sha256=bgDWfyc7lgG7QrQdFwtScv6pGUw28yIxl5ZqfFmRhns,62369
25
+ sempy_labs/_list_functions.py,sha256=nnNptMa_768jclvFmow1AC_pba3k6y5C7BkqFPlPoDc,62795
26
26
  sempy_labs/_managed_private_endpoints.py,sha256=Cbql3ppCfLiCPqAvaApXL2wmjDyyljdZwibMFNsYYCk,6299
27
27
  sempy_labs/_mirrored_databases.py,sha256=vbgbezabeO1QvN20IEmLCgag_aPAHsozDJIpkRNAgRU,14704
28
28
  sempy_labs/_mirrored_warehouses.py,sha256=Q4fyl3Ov753nS68uG99EHSc9MwgAwwI4DEuQmx5XNaM,1816
29
29
  sempy_labs/_ml_experiments.py,sha256=_Lj_aJJbhWAWg98Q1NY77wmelq-h5jLkTSnfv-Xnhds,4321
30
30
  sempy_labs/_ml_models.py,sha256=74ncPj0PcTSrCkMmx3aKFYtel9B-Bb6OdV0TbiVJrjc,4166
31
31
  sempy_labs/_model_auto_build.py,sha256=PTQo3dufzLSFcQ5shFkmBWAVSdP7cTJgpUclrcXyNbg,5105
32
- sempy_labs/_model_bpa.py,sha256=xx0scJho_-_O0wpGMKevj2tuTEqsQye5kwgOll10n5I,21801
33
- sempy_labs/_model_bpa_bulk.py,sha256=jU-kaeUeE1Slz5HEh3lSbnILzj2tfzMwvaOqOQG16Wg,16027
34
- sempy_labs/_model_bpa_rules.py,sha256=96_GkXQGhON-_uyUATgUibk4W9y7e9wl1QciUr96gIQ,45544
32
+ sempy_labs/_model_bpa.py,sha256=7NIKlF7Mhxm0RxLK42Pi3aLOiRmxFFb_20aPTHLM9W4,21413
33
+ sempy_labs/_model_bpa_bulk.py,sha256=F_AzebdpMm7QvYuSuSj52NTg6jYE9H1FJJDpdnyNF-g,16039
34
+ sempy_labs/_model_bpa_rules.py,sha256=rYDIsGcoynntcdNA1O3sLf-e6R6dspIBByhWrziV59Q,45555
35
35
  sempy_labs/_model_dependencies.py,sha256=rMh5FWrVNNs5uHC1AWIH1MwhZ3lvpb08ECwNQ7-7zvs,13111
36
- sempy_labs/_notebooks.py,sha256=XlHgiNcY02bO8mOLraBSGBY8e-MUp8gCxTdWOmBFgdY,8452
36
+ sempy_labs/_notebooks.py,sha256=oesdAFq195F2ccI-co6DBGypiwQiranSRFY4A83jbIY,8491
37
37
  sempy_labs/_one_lake_integration.py,sha256=fnmM6MeiME5ks1Jd7r3tWYKSafU37Um90K6iDx5S5zg,6223
38
- sempy_labs/_query_scale_out.py,sha256=VuNGGGuzD6KiVvU4QbvZsyQufxgD2tbwkNvd_avSfRw,16385
38
+ sempy_labs/_query_scale_out.py,sha256=uHF4w6Bp1fiX-5FSr_BGwlr-lNRe_El7WtK8j3V9fXw,16454
39
39
  sempy_labs/_refresh_semantic_model.py,sha256=G6j1Pj9HBTRbJQ2UX_fxYzoBrzgUmlxy_7_eEijqLtc,17547
40
40
  sempy_labs/_spark.py,sha256=txetwju75jz1mkQNY-QUscp0at7StDYHLpjvJ0-v7xQ,20340
41
- sempy_labs/_sql.py,sha256=RAhO1-wbKAwjcYyfGbLh8osIUWecT8w_OiBQm9Nju4c,5366
41
+ sempy_labs/_sql.py,sha256=-YYal5uqpQvmpy8MOZtUPEcjGLuVk_5dBNjO9ykkLJg,5532
42
42
  sempy_labs/_translations.py,sha256=CxpfnyCmn6hAiImxTOvz6x1HG4ppZORHCemJogKPV-M,16193
43
- sempy_labs/_vertipaq.py,sha256=TTMe0l2HYjVn03xhDsJrgzpVu_lPZKSrG1XecDxWJjw,37930
44
- sempy_labs/_warehouses.py,sha256=lsKWbJfWVQKwrhe0S0dIZ9cTYFwAIdQytzBCRAiX5W8,7380
43
+ sempy_labs/_vertipaq.py,sha256=YX69B1sMzKyQqVquU74yLidR7eEgzOrg6hc2GY-9jr4,37972
44
+ sempy_labs/_warehouses.py,sha256=oiKK4UFmfisvbmnrd1lGQr1rt_kzl34x2a52KDMTdRU,7430
45
45
  sempy_labs/_workloads.py,sha256=x3dS2mOkrS9rA-p70z8849DZlMIvMbzTjMzO_YmnHRg,4449
46
46
  sempy_labs/_workspace_identity.py,sha256=Av_9hHBHzgOZE3mYiE9v6015tnAJfzfRyqm2_zUOt5c,2357
47
47
  sempy_labs/_workspaces.py,sha256=iDVbGsHksDDli_6_v1wcL3a0xLIyXY8Bd1FDHpcRlOE,11510
@@ -84,29 +84,29 @@ sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L67
84
84
  sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
85
85
  sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
86
86
  sempy_labs/admin/__init__.py,sha256=YYOwKRfRr6alAez4BImlPcX9bQExATrb856BRq7a3O8,1945
87
- sempy_labs/admin/_basic_functions.py,sha256=y0YnjGhQDmOfQTToSGTLTk48KFalylzPt8hsKeuFGrM,36969
88
- sempy_labs/admin/_domains.py,sha256=5mv2SzIZCibvHwd4tgm-Lelj0zi66A2KKzQjDQgT9ms,12385
87
+ sempy_labs/admin/_basic_functions.py,sha256=sGkUUM0v0G6aEqzy-WEoEyICe8uXz1FFDeN2yvZrmaQ,39846
88
+ sempy_labs/admin/_domains.py,sha256=XXkCusjdAnRe2zW1aFty0YnUpsgeV_U1XeYhD3U3UgU,12857
89
89
  sempy_labs/admin/_external_data_share.py,sha256=NNdkBbs0OhSmZHNCN0QehWEdbx-amkxxLXAPBBKh11I,3512
90
- sempy_labs/admin/_git.py,sha256=OY2F5ICKBXrB1HhlYDWdXQPnhTwSrMfWzEa2xcutClc,2181
91
- sempy_labs/admin/_items.py,sha256=txVetZOlGLFVxfnkVi-b2Aw_oTA3ut0NHHOQ3E-nQJY,8464
92
- sempy_labs/admin/_scanner.py,sha256=kun5Mib2Q6OolnaQ9lc0FuWzdxr3xm6KPWN9F3FKspM,4525
90
+ sempy_labs/admin/_git.py,sha256=yvqfpvFyprV_BhNUcD6Bp76vDWGQM0um53wbJzBlauw,2438
91
+ sempy_labs/admin/_items.py,sha256=7f6pDDdqORgy1wg-qBv96exYwLphkOb767AWA2p13tg,8936
92
+ sempy_labs/admin/_scanner.py,sha256=5NfCMkafBkJQB9eq0q03dOgc2_FpD3b6S9tbNWwsZ_k,4785
93
93
  sempy_labs/directlake/__init__.py,sha256=etaj-3wqe5t93mu74tGYjEOQ6gtHWUogidOygiVvlq8,2131
94
- sempy_labs/directlake/_directlake_schema_compare.py,sha256=zpt2voLmMUj8JhGi61tGFNetIfKn3ljqc7daLY7AAEw,4756
95
- sempy_labs/directlake/_directlake_schema_sync.py,sha256=vzf8AkerBb_OKEVXHlZ3Ey4UO5YehKGTsw_-ewZmoQA,4437
96
- sempy_labs/directlake/_dl_helper.py,sha256=SJ-tUUpaLIr2Q8_m5y0p5IobYq3B-NPHl2G5_a8oIfI,9853
94
+ sempy_labs/directlake/_directlake_schema_compare.py,sha256=Cjw1l05jCetWPKvnqmcp7kzCe_RIWb9Pd-uwSbDrnVI,4989
95
+ sempy_labs/directlake/_directlake_schema_sync.py,sha256=5nDyE-8ApeaUJO9aJLasop8G9bG9TjPamDQvgAlCUew,4671
96
+ sempy_labs/directlake/_dl_helper.py,sha256=IVhZHBxK7LTFxlSgTTFowhR8Ygu_Z8ZnLCFDIoCJ9Y4,10722
97
97
  sempy_labs/directlake/_generate_shared_expression.py,sha256=93ufAnD-qM0beRQp7lSzsuOAvhnMXqkoJoZei2RNVYg,3141
98
- sempy_labs/directlake/_get_directlake_lakehouse.py,sha256=CxyGq6xvGihYDG-I3djCD4HGDePh6yh-PF32_2jHYj4,2592
98
+ sempy_labs/directlake/_get_directlake_lakehouse.py,sha256=LzB-2aj2m8YqfOfWIGqm8mA_LOn2YSbdYWIMpMOhnrQ,2338
99
99
  sempy_labs/directlake/_get_shared_expression.py,sha256=qc85kXggkx_7Sz_rAAli_yPnLzrGZpgD8IfVbTfZhQM,1133
100
100
  sempy_labs/directlake/_guardrails.py,sha256=YO8OycXDxmWrtH8nTz5a4AddfnpskM83rTPEPBVpqbM,2701
101
101
  sempy_labs/directlake/_list_directlake_model_calc_tables.py,sha256=QA35_8YWK4b8-wEvHiRnCm9me_XD2noLqxAtE2pCgnY,2451
102
102
  sempy_labs/directlake/_show_unsupported_directlake_objects.py,sha256=xu2PUaXtZAbgYksc0YSlIZvL9rh-oI6rLhHnHwoNjYI,3453
103
103
  sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=DC8Ig8oJtPY5qdWytIy03iiqYiQxLoRmQ5hsu6I69Sw,6348
104
- sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=aZV5Sg_VGth9HNbo2ZAjec44sZJiUjW4YVTMaURjx7I,8102
104
+ sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=z6dSrzPzRTQOVByLcGigMyXOF9YAUjSEqeAyAeVGh5U,8335
105
105
  sempy_labs/directlake/_warm_cache.py,sha256=mFwyhtsCPJd3nDKcwMkyFtXbDhE77WCPBZkYppIRVq4,9207
106
106
  sempy_labs/lakehouse/__init__.py,sha256=6LVQltQ3cjyiuxvjXTuNdJ163zSqi4h_tEZY4zsxuSw,647
107
- sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=ptat3OXf19j4ITcynqUZQIgqfbvPubVTNU9zdfOW3lo,2704
108
- sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=scO4oyXmeQTwF-m4etZ0W9BEInVpHhsPyZvtXjiU8cA,9084
109
- sempy_labs/lakehouse/_lakehouse.py,sha256=4G7r2kyIcj_rhnPKzFqTFic4m0jeaPCBNLDzzp6TNtg,5404
107
+ sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=y1WZ0D5HfzVVqWQvpzz6DuEhpncNN8LgQnBfghbh0vA,2638
108
+ sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=UOZ70YX7gwVg6xaJsJ53vTFz2OJ_Eif_COT-4Ogxf1c,8682
109
+ sempy_labs/lakehouse/_lakehouse.py,sha256=Yg1PxUIGFYnmXyAAFTLcXtBdwhyZ-YuRmeiuCg1BweI,4808
110
110
  sempy_labs/lakehouse/_shortcuts.py,sha256=YqII1rBOLebNPz8OroaTAgZFb96T61Lxqfzz4gct_Fo,8103
111
111
  sempy_labs/migration/__init__.py,sha256=w4vvGk6wTWXVfofJDmio2yIFvSSJsxOpjv6mvNGmrOI,1043
112
112
  sempy_labs/migration/_create_pqt_file.py,sha256=eRK0Jz9ZeV_7jV3kNRze0bTAIqxsAZXLKMGE_loKOaY,9677
@@ -119,9 +119,9 @@ sempy_labs/migration/_refresh_calc_tables.py,sha256=lKkwVBN7eyDoMJd0cv4jkLyO6iGj
119
119
  sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
120
120
  sempy_labs/report/__init__.py,sha256=esE_i1lL2AdcwWs7cE8AKSXZy_7w_4jJJtFULFkDPcU,1244
121
121
  sempy_labs/report/_download_report.py,sha256=BtgcHiz1jYeC1fr908oPot9_K00Ej_OadCYfd2BKL6E,2848
122
- sempy_labs/report/_generate_report.py,sha256=iZFYA3AQSWsW6zLrjiSP_DK7HkLp1ehujwl1g-3J8oY,12885
122
+ sempy_labs/report/_generate_report.py,sha256=bzyMgov414v3rrTOHRDNf24C_E_3mFH73znAP8OmL30,14331
123
123
  sempy_labs/report/_paginated.py,sha256=khQHoanEsxoVL3g08WrOPcsI3ggo9TAlb5cNXgOs7dg,2278
124
- sempy_labs/report/_report_bpa.py,sha256=LhXHFonZc6JF6ao7UBPzcm5pte1nMGBmgKaDD2MrA7c,13849
124
+ sempy_labs/report/_report_bpa.py,sha256=bMZlvFVKypRCC7uC0QmkqV9i4n5nMj3X-tI2N6OOxLc,13861
125
125
  sempy_labs/report/_report_bpa_rules.py,sha256=tPVGA0hmE6QMLlWtig7Va7Ksr2yXWl_Lndq--tWWd6w,4959
126
126
  sempy_labs/report/_report_functions.py,sha256=49TrYBIeWqth__q9GodacXIRdn90HBZfzBUv5nI01Gw,30007
127
127
  sempy_labs/report/_report_helper.py,sha256=NcdWgFuh1GjDwVPzy6QWwg3ecaJKoWzZdhbxT6hbbdA,10599
@@ -158,9 +158,9 @@ sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visua
158
158
  sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json,sha256=wBVuNc8S2NaUA0FC708w6stmR2djNZp8nAsHMqesgsc,293
159
159
  sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json,sha256=mlY6t9OlSe-Y6_QmXJpS1vggU6Y3FjISUKECL8FVSg8,931
160
160
  sempy_labs/tom/__init__.py,sha256=Qbs8leW0fjzvWwOjyWK3Hjeehu7IvpB1beASGsi28bk,121
161
- sempy_labs/tom/_model.py,sha256=wYMJ6YgO6aX2lSIBXMktMkxY9JZFVwJGLRaDEBwQjfs,174828
162
- semantic_link_labs-0.8.11.dist-info/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
163
- semantic_link_labs-0.8.11.dist-info/METADATA,sha256=6rBFyBH6tpO4t6MulX1XfoMvRC-3jJ-Ms-JSfFtjoUw,21296
164
- semantic_link_labs-0.8.11.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
165
- semantic_link_labs-0.8.11.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
166
- semantic_link_labs-0.8.11.dist-info/RECORD,,
161
+ sempy_labs/tom/_model.py,sha256=Hju9gqw374JQSNfdiujauRGnHxz7dUgXSXyN1Xhgdr8,178744
162
+ semantic_link_labs-0.9.1.dist-info/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
163
+ semantic_link_labs-0.9.1.dist-info/METADATA,sha256=TZTo2jRAbiDMsgfsptWK3r_-JS-kqPlXblkwrqP7dC0,22088
164
+ semantic_link_labs-0.9.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
165
+ semantic_link_labs-0.9.1.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
166
+ semantic_link_labs-0.9.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
sempy_labs/__init__.py CHANGED
@@ -1,4 +1,7 @@
1
- from sempy_labs._job_scheduler import list_item_job_instances
1
+ from sempy_labs._job_scheduler import (
2
+ list_item_job_instances,
3
+ list_item_schedules,
4
+ )
2
5
  from sempy_labs._gateways import (
3
6
  list_gateway_members,
4
7
  list_gateway_role_assigments,
@@ -11,9 +14,9 @@ from sempy_labs._gateways import (
11
14
  update_on_premises_gateway,
12
15
  bind_semantic_model_to_gateway,
13
16
  )
14
-
15
17
  from sempy_labs._authentication import (
16
18
  ServicePrincipalTokenProvider,
19
+ service_principal_authentication,
17
20
  )
18
21
  from sempy_labs._mirrored_databases import (
19
22
  get_mirrored_database_definition,
@@ -118,6 +121,17 @@ from sempy_labs._capacities import (
118
121
  delete_embedded_capacity,
119
122
  delete_premium_capacity,
120
123
  create_resource_group,
124
+ list_skus,
125
+ list_skus_for_capacity,
126
+ list_subscriptions,
127
+ list_tenants,
128
+ get_subscription,
129
+ check_resource_group_existence,
130
+ list_storage_accounts,
131
+ create_storage_account,
132
+ create_or_update_resource_group,
133
+ list_resource_groups,
134
+ get_resource_group,
121
135
  )
122
136
  from sempy_labs._spark import (
123
137
  get_spark_settings,
@@ -470,4 +484,17 @@ __all__ = [
470
484
  "bind_semantic_model_to_gateway",
471
485
  "list_semantic_model_errors",
472
486
  "list_item_job_instances",
487
+ "list_item_schedules",
488
+ "list_skus",
489
+ "list_skus_for_capacity",
490
+ "list_subscriptions",
491
+ "list_tenants",
492
+ "get_subscription",
493
+ "check_resource_group_existence",
494
+ "list_storage_accounts",
495
+ "create_storage_account",
496
+ "create_or_update_resource_group",
497
+ "list_resource_groups",
498
+ "get_resource_group",
499
+ "service_principal_authentication",
473
500
  ]
@@ -1,6 +1,9 @@
1
- from typing import Literal
1
+ from typing import Literal, Optional
2
2
  from sempy.fabric._token_provider import TokenProvider
3
3
  from azure.identity import ClientSecretCredential
4
+ from sempy._utils._log import log
5
+ from contextlib import contextmanager
6
+ import contextvars
4
7
 
5
8
 
6
9
  class ServicePrincipalTokenProvider(TokenProvider):
@@ -41,6 +44,10 @@ class ServicePrincipalTokenProvider(TokenProvider):
41
44
  tenant_id=tenant_id, client_id=client_id, client_secret=client_secret
42
45
  )
43
46
 
47
+ cls.tenant_id = tenant_id
48
+ cls.client_id = client_id
49
+ cls.client_secret = client_secret
50
+
44
51
  return cls(credential)
45
52
 
46
53
  @classmethod
@@ -89,16 +96,26 @@ class ServicePrincipalTokenProvider(TokenProvider):
89
96
  tenant_id=tenant_id, client_id=client_id, client_secret=client_secret
90
97
  )
91
98
 
99
+ cls.tenant_id = tenant_id
100
+ cls.client_id = client_id
101
+ cls.client_secret = client_secret
102
+
92
103
  return cls(credential)
93
104
 
94
105
  def __call__(
95
- self, audience: Literal["pbi", "storage", "azure", "graph"] = "pbi"
106
+ self,
107
+ audience: Literal[
108
+ "pbi", "storage", "azure", "graph", "asazure", "keyvault"
109
+ ] = "pbi",
110
+ region: Optional[str] = None,
96
111
  ) -> str:
97
112
  """
98
113
  Parameters
99
114
  ----------
100
- audience : Literal["pbi", "storage", "azure", "graph"] = "pbi") -> str
115
+ audience : Literal["pbi", "storage", "azure", "graph", "asazure", "keyvault"] = "pbi") -> str
101
116
  Literal if it's for PBI/Fabric API call or OneLake/Storage Account call.
117
+ region : str, default=None
118
+ The region of the Azure Analysis Services. For example: 'westus2'.
102
119
  """
103
120
  if audience == "pbi":
104
121
  return self.credential.get_token(
@@ -114,12 +131,21 @@ class ServicePrincipalTokenProvider(TokenProvider):
114
131
  return self.credential.get_token(
115
132
  "https://graph.microsoft.com/.default"
116
133
  ).token
134
+ elif audience == "asazure":
135
+ return self.credential.get_token(
136
+ f"https://{region}.asazure.windows.net/.default"
137
+ ).token
138
+ elif audience == "keyvault":
139
+ return self.credential.get_token("https://vault.azure.net/.default").token
117
140
  else:
118
141
  raise NotImplementedError
119
142
 
120
143
 
121
144
  def _get_headers(
122
- token_provider: str, audience: Literal["pbi", "storage", "azure", "graph"] = "azure"
145
+ token_provider: str,
146
+ audience: Literal[
147
+ "pbi", "storage", "azure", "graph", "asazure", "keyvault"
148
+ ] = "azure",
123
149
  ):
124
150
  """
125
151
  Generates headers for an API request.
@@ -135,3 +161,51 @@ def _get_headers(
135
161
  headers["Content-Type"] = "application/json"
136
162
 
137
163
  return headers
164
+
165
+
166
+ token_provider = contextvars.ContextVar("token_provider", default=None)
167
+
168
+
169
+ @log
170
+ @contextmanager
171
+ def service_principal_authentication(
172
+ key_vault_uri: str,
173
+ key_vault_tenant_id: str,
174
+ key_vault_client_id: str,
175
+ key_vault_client_secret: str,
176
+ ):
177
+ """
178
+ Establishes an authentication via Service Principal.
179
+
180
+ Parameters
181
+ ----------
182
+ key_vault_uri : str
183
+ Azure Key Vault URI.
184
+ key_vault_tenant_id : str
185
+ Name of the secret in the Key Vault with the Fabric Tenant ID.
186
+ key_vault_client_id : str
187
+ Name of the secret in the Key Vault with the Service Principal Client ID.
188
+ key_vault_client_secret : str
189
+ Name of the secret in the Key Vault with the Service Principal Client Secret.
190
+ """
191
+
192
+ # Save the prior state
193
+ prior_token = token_provider.get()
194
+
195
+ # Set the new token_provider in a thread-safe manner
196
+ token_provider.set(
197
+ ServicePrincipalTokenProvider.from_azure_key_vault(
198
+ key_vault_uri=key_vault_uri,
199
+ key_vault_tenant_id=key_vault_tenant_id,
200
+ key_vault_client_id=key_vault_client_id,
201
+ key_vault_client_secret=key_vault_client_secret,
202
+ )
203
+ )
204
+ try:
205
+ yield
206
+ finally:
207
+ # Restore the prior state
208
+ if prior_token is None:
209
+ token_provider.set(None)
210
+ else:
211
+ token_provider.set(prior_token)