semantic-link-labs 0.11.3__tar.gz → 0.12.1__tar.gz
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.
- {semantic_link_labs-0.11.3/src/semantic_link_labs.egg-info → semantic_link_labs-0.12.1}/PKG-INFO +6 -4
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/README.md +4 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/pyproject.toml +2 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1/src/semantic_link_labs.egg-info}/PKG-INFO +6 -4
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/semantic_link_labs.egg-info/SOURCES.txt +3 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/semantic_link_labs.egg-info/requires.txt +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/__init__.py +6 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_a_lib_info.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_authentication.py +85 -32
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_capacities.py +2 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_capacity_migration.py +4 -4
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_clear_cache.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_connections.py +107 -70
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_dashboards.py +6 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_data_pipelines.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_dataflows.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_dax.py +3 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_delta_analyzer.py +4 -4
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_delta_analyzer_history.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_deployment_pipelines.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_environments.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_eventhouses.py +9 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_eventstreams.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_external_data_shares.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_gateways.py +14 -7
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_generate_semantic_model.py +7 -12
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_git.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_graphQL.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_helper_functions.py +161 -54
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_job_scheduler.py +12 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_kql_databases.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_kql_querysets.py +10 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_kusto.py +2 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_list_functions.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_managed_private_endpoints.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_mirrored_databases.py +40 -16
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_mirrored_warehouses.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_ml_experiments.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_model_bpa.py +6 -6
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_model_bpa_bulk.py +3 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_model_dependencies.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_mounted_data_factories.py +3 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_notebooks.py +2 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_query_scale_out.py +2 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_refresh_semantic_model.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_semantic_models.py +15 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_spark.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_sql.py +3 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_sql_endpoints.py +5 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_sqldatabase.py +5 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_tags.py +3 -1
- semantic_link_labs-0.12.1/src/sempy_labs/_translations.py +43 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_user_delegation_key.py +2 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_utils.py +27 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_vertipaq.py +3 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_vpax.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_warehouses.py +5 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_workloads.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_workspace_identity.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_workspaces.py +145 -11
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/__init__.py +6 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_capacities.py +37 -14
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_items.py +2 -2
- semantic_link_labs-0.12.1/src/sempy_labs/admin/_tenant_keys.py +89 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_dl_helper.py +1 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/__init__.py +4 -0
- semantic_link_labs-0.12.1/src/sempy_labs/lakehouse/_materialized_lake_views.py +76 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_shortcuts.py +8 -2
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_download_report.py +4 -1
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_export_report.py +12 -5
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_generate_report.py +11 -3
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_paginated.py +21 -15
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_functions.py +19 -11
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_rebind.py +56 -33
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/theme/_org_themes.py +5 -6
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/tom/_model.py +5 -16
- semantic_link_labs-0.11.3/src/sempy_labs/_translations.py +0 -396
- semantic_link_labs-0.11.3/tests/test_friendly_case.py +0 -11
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/LICENSE +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/setup.cfg +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_ai.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_daxformatter.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_dictionary_diffs.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_documentation.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_icons.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_labels.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_model_auto_build.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_model_bpa_rules.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_one_lake_integration.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_activities.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_apps.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_artifacts.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_basic_functions.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_dataflows.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_datasets.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_domains.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_external_data_share.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_git.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_reports.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_scanner.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_shared.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_tags.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_tenant.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_users.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/admin/_workspaces.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_guardrails.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/directlake/_warm_cache.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/dotnet_lib/dotnet.runtime.config.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/graph/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/graph/_groups.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/graph/_teams.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/graph/_users.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_blobs.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_helper.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/lakehouse/_livy_sessions.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_direct_lake_to_import.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_migration_validation.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/mirrored_azure_databricks_catalog/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/mirrored_azure_databricks_catalog/_discover.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/mirrored_azure_databricks_catalog/_refresh_catalog_metadata.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/ml_model/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/ml_model/_functions.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_bpa.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_helper.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_report_list_functions.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_reportwrapper.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/report/_save_report.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/theme/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/tom/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/variable_library/__init__.py +0 -0
- {semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/variable_library/_functions.py +0 -0
{semantic_link_labs-0.11.3/src/semantic_link_labs.egg-info → semantic_link_labs-0.12.1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.1
|
|
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.
|
|
18
|
+
Requires-Dist: semantic-link-sempy>=0.12.0
|
|
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
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
29
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
30
30
|
[](https://github.com/psf/black)
|
|
31
31
|
[](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.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
|
|
158
|
+
* [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
|
|
157
159
|
* [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
|
|
158
160
|
* [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
|
|
159
161
|
* [0.11.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.1) (June 24, 2025)
|
|
@@ -213,7 +215,7 @@ Check out my [blog post](https://www.elegantbi.com/post/direct-lake-migration) o
|
|
|
213
215
|
### Instructions
|
|
214
216
|
|
|
215
217
|
1. Download this [notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Migration%20to%20Direct%20Lake.ipynb).
|
|
216
|
-
2. Make sure you are in the
|
|
218
|
+
2. Make sure you are in the 'Fabric Developer' experience. Click the icon at the bottom left corner of your Workspace screen and select 'Fabric'.
|
|
217
219
|
3. In your workspace, select 'New -> Import notebook' and import the notebook from step 1.
|
|
218
220
|
4. [Add your lakehouse](https://learn.microsoft.com/fabric/data-engineering/lakehouse-notebook-explore#add-or-remove-a-lakehouse) to your Fabric notebook
|
|
219
221
|
5. Follow the instructions within the notebook.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Semantic Link Labs
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
4
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
5
5
|
[](https://github.com/psf/black)
|
|
6
6
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
7
7
|
|
|
@@ -129,6 +129,8 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
129
129
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
130
130
|
|
|
131
131
|
## Version History
|
|
132
|
+
* [0.12.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
|
|
133
|
+
* [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
|
|
132
134
|
* [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
|
|
133
135
|
* [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
|
|
134
136
|
* [0.11.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.1) (June 24, 2025)
|
|
@@ -188,7 +190,7 @@ Check out my [blog post](https://www.elegantbi.com/post/direct-lake-migration) o
|
|
|
188
190
|
### Instructions
|
|
189
191
|
|
|
190
192
|
1. Download this [notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Migration%20to%20Direct%20Lake.ipynb).
|
|
191
|
-
2. Make sure you are in the
|
|
193
|
+
2. Make sure you are in the 'Fabric Developer' experience. Click the icon at the bottom left corner of your Workspace screen and select 'Fabric'.
|
|
192
194
|
3. In your workspace, select 'New -> Import notebook' and import the notebook from step 1.
|
|
193
195
|
4. [Add your lakehouse](https://learn.microsoft.com/fabric/data-engineering/lakehouse-notebook-explore#add-or-remove-a-lakehouse) to your Fabric notebook
|
|
194
196
|
5. Follow the instructions within the notebook.
|
|
@@ -7,7 +7,7 @@ name="semantic-link-labs"
|
|
|
7
7
|
authors = [
|
|
8
8
|
{ name = "Microsoft Corporation" },
|
|
9
9
|
]
|
|
10
|
-
version="0.
|
|
10
|
+
version="0.12.1"
|
|
11
11
|
description="Semantic Link Labs for Microsoft Fabric"
|
|
12
12
|
readme="README.md"
|
|
13
13
|
requires-python=">=3.10,<3.12"
|
|
@@ -23,7 +23,7 @@ classifiers = [
|
|
|
23
23
|
license= { text = "MIT License" }
|
|
24
24
|
|
|
25
25
|
dependencies = [
|
|
26
|
-
"semantic-link-sempy>=0.
|
|
26
|
+
"semantic-link-sempy>=0.12.0",
|
|
27
27
|
"anytree",
|
|
28
28
|
"polib",
|
|
29
29
|
"jsonpath_ng",
|
{semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1/src/semantic_link_labs.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.1
|
|
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.
|
|
18
|
+
Requires-Dist: semantic-link-sempy>=0.12.0
|
|
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
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
29
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
30
30
|
[](https://github.com/psf/black)
|
|
31
31
|
[](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.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.1) (September 4, 2025)
|
|
158
|
+
* [0.12.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.12.0) (September 2, 2025)
|
|
157
159
|
* [0.11.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.3) (August 6, 2025)
|
|
158
160
|
* [0.11.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.2) (July 8, 2025)
|
|
159
161
|
* [0.11.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.11.1) (June 24, 2025)
|
|
@@ -213,7 +215,7 @@ Check out my [blog post](https://www.elegantbi.com/post/direct-lake-migration) o
|
|
|
213
215
|
### Instructions
|
|
214
216
|
|
|
215
217
|
1. Download this [notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Migration%20to%20Direct%20Lake.ipynb).
|
|
216
|
-
2. Make sure you are in the
|
|
218
|
+
2. Make sure you are in the 'Fabric Developer' experience. Click the icon at the bottom left corner of your Workspace screen and select 'Fabric'.
|
|
217
219
|
3. In your workspace, select 'New -> Import notebook' and import the notebook from step 1.
|
|
218
220
|
4. [Add your lakehouse](https://learn.microsoft.com/fabric/data-engineering/lakehouse-notebook-explore#add-or-remove-a-lakehouse) to your Fabric notebook
|
|
219
221
|
5. Follow the instructions within the notebook.
|
{semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/semantic_link_labs.egg-info/SOURCES.txt
RENAMED
|
@@ -124,6 +124,7 @@ src/sempy_labs/admin/_scanner.py
|
|
|
124
124
|
src/sempy_labs/admin/_shared.py
|
|
125
125
|
src/sempy_labs/admin/_tags.py
|
|
126
126
|
src/sempy_labs/admin/_tenant.py
|
|
127
|
+
src/sempy_labs/admin/_tenant_keys.py
|
|
127
128
|
src/sempy_labs/admin/_users.py
|
|
128
129
|
src/sempy_labs/admin/_workspaces.py
|
|
129
130
|
src/sempy_labs/directlake/__init__.py
|
|
@@ -151,6 +152,7 @@ src/sempy_labs/lakehouse/_get_lakehouse_tables.py
|
|
|
151
152
|
src/sempy_labs/lakehouse/_helper.py
|
|
152
153
|
src/sempy_labs/lakehouse/_lakehouse.py
|
|
153
154
|
src/sempy_labs/lakehouse/_livy_sessions.py
|
|
155
|
+
src/sempy_labs/lakehouse/_materialized_lake_views.py
|
|
154
156
|
src/sempy_labs/lakehouse/_shortcuts.py
|
|
155
157
|
src/sempy_labs/migration/__init__.py
|
|
156
158
|
src/sempy_labs/migration/_create_pqt_file.py
|
|
@@ -212,5 +214,4 @@ src/sempy_labs/theme/_org_themes.py
|
|
|
212
214
|
src/sempy_labs/tom/__init__.py
|
|
213
215
|
src/sempy_labs/tom/_model.py
|
|
214
216
|
src/sempy_labs/variable_library/__init__.py
|
|
215
|
-
src/sempy_labs/variable_library/_functions.py
|
|
216
|
-
tests/test_friendly_case.py
|
|
217
|
+
src/sempy_labs/variable_library/_functions.py
|
|
@@ -188,6 +188,8 @@ from ._workspaces import (
|
|
|
188
188
|
unassign_workspace_from_capacity,
|
|
189
189
|
list_workspace_role_assignments,
|
|
190
190
|
delete_workspace,
|
|
191
|
+
get_workspace_network_communication_policy,
|
|
192
|
+
set_workspace_network_communication_policy,
|
|
191
193
|
)
|
|
192
194
|
from ._notebooks import (
|
|
193
195
|
get_notebook_definition,
|
|
@@ -282,6 +284,7 @@ from ._list_functions import (
|
|
|
282
284
|
list_synonyms,
|
|
283
285
|
)
|
|
284
286
|
from ._helper_functions import (
|
|
287
|
+
get_item_definition,
|
|
285
288
|
copy_item,
|
|
286
289
|
convert_to_friendly_case,
|
|
287
290
|
resolve_environment_id,
|
|
@@ -593,4 +596,7 @@ __all__ = [
|
|
|
593
596
|
"copy_item",
|
|
594
597
|
"search_notebooks",
|
|
595
598
|
"list_notebooks",
|
|
599
|
+
"get_item_definition",
|
|
600
|
+
"get_workspace_network_communication_policy",
|
|
601
|
+
"set_workspace_network_communication_policy",
|
|
596
602
|
]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
lib_name = "semanticlinklabs"
|
|
2
|
-
lib_version = "0.
|
|
2
|
+
lib_version = "0.12.1"
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
from typing import Literal, Optional
|
|
2
|
-
from
|
|
1
|
+
from typing import Dict, Literal, Optional
|
|
2
|
+
from azure.core.credentials import AccessToken, TokenCredential
|
|
3
3
|
from azure.identity import ClientSecretCredential
|
|
4
4
|
from sempy._utils._log import log
|
|
5
5
|
from contextlib import contextmanager
|
|
6
6
|
import contextvars
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
class ServicePrincipalTokenProvider(
|
|
9
|
+
class ServicePrincipalTokenProvider(TokenCredential):
|
|
10
10
|
"""
|
|
11
|
-
|
|
11
|
+
A class to acquire authentication token with Service Principal.
|
|
12
12
|
|
|
13
13
|
For more information on Service Principal see: `Application and service principal objects in Microsoft Entra ID <https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser#service-principal-object>`_
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
+
_shorthand_scopes: Dict[str, str] = {
|
|
17
|
+
"pbi": "https://analysis.windows.net/powerbi/api/.default",
|
|
18
|
+
"storage": "https://storage.azure.com/.default",
|
|
19
|
+
"azure": "https://management.azure.com/.default",
|
|
20
|
+
"graph": "https://graph.microsoft.com/.default",
|
|
21
|
+
"asazure": "https://{region}.asazure.windows.net/.default",
|
|
22
|
+
"keyvault": "https://vault.azure.net/.default",
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
def __init__(self, credential: ClientSecretCredential):
|
|
17
26
|
|
|
18
27
|
self.credential = credential
|
|
@@ -20,7 +29,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
20
29
|
@classmethod
|
|
21
30
|
def from_aad_application_key_authentication(
|
|
22
31
|
cls, tenant_id: str, client_id: str, client_secret: str
|
|
23
|
-
):
|
|
32
|
+
) -> "ServicePrincipalTokenProvider":
|
|
24
33
|
"""
|
|
25
34
|
Generates the ServicePrincipalTokenProvider, providing the Service Principal information.
|
|
26
35
|
|
|
@@ -37,7 +46,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
37
46
|
|
|
38
47
|
Returns
|
|
39
48
|
-------
|
|
40
|
-
|
|
49
|
+
ServicePrincipalTokenProvider
|
|
41
50
|
Token provider to be used with FabricRestClient or PowerBIRestClient.
|
|
42
51
|
"""
|
|
43
52
|
credential = ClientSecretCredential(
|
|
@@ -57,7 +66,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
57
66
|
key_vault_tenant_id: str,
|
|
58
67
|
key_vault_client_id: str,
|
|
59
68
|
key_vault_client_secret: str,
|
|
60
|
-
):
|
|
69
|
+
) -> "ServicePrincipalTokenProvider":
|
|
61
70
|
"""
|
|
62
71
|
Generates the ServicePrincipalTokenProvider, providing the Azure Key Vault details.
|
|
63
72
|
|
|
@@ -76,7 +85,7 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
76
85
|
|
|
77
86
|
Returns
|
|
78
87
|
-------
|
|
79
|
-
|
|
88
|
+
ServicePrincipalTokenProvider
|
|
80
89
|
Token provider to be used with FabricRestClient or PowerBIRestClient.
|
|
81
90
|
"""
|
|
82
91
|
|
|
@@ -117,32 +126,69 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
117
126
|
region : str, default=None
|
|
118
127
|
The region of the Azure Analysis Services. For example: 'westus2'.
|
|
119
128
|
"""
|
|
120
|
-
if audience
|
|
121
|
-
|
|
122
|
-
"https://analysis.windows.net/powerbi/api/.default"
|
|
123
|
-
).token
|
|
124
|
-
elif audience == "storage":
|
|
125
|
-
return self.credential.get_token("https://storage.azure.com/.default").token
|
|
126
|
-
elif audience == "azure":
|
|
127
|
-
return self.credential.get_token(
|
|
128
|
-
"https://management.azure.com/.default"
|
|
129
|
-
).token
|
|
130
|
-
elif audience == "graph":
|
|
131
|
-
return self.credential.get_token(
|
|
132
|
-
"https://graph.microsoft.com/.default"
|
|
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
|
|
140
|
-
else:
|
|
129
|
+
# Check if audience is supported
|
|
130
|
+
if audience not in self._shorthand_scopes:
|
|
141
131
|
raise NotImplementedError
|
|
142
132
|
|
|
133
|
+
return self.get_token(audience).token
|
|
134
|
+
|
|
135
|
+
def get_token(self, *scopes, **kwargs) -> AccessToken:
|
|
136
|
+
"""
|
|
137
|
+
Gets a token for the specified scopes.
|
|
138
|
+
|
|
139
|
+
Parameters
|
|
140
|
+
----------
|
|
141
|
+
*scopes : str
|
|
142
|
+
The scopes for which to obtain a token.
|
|
143
|
+
**kwargs : dict
|
|
144
|
+
Additional parameters to pass to the token request.
|
|
145
|
+
|
|
146
|
+
Returns
|
|
147
|
+
-------
|
|
148
|
+
AccessToken
|
|
149
|
+
The access token.
|
|
150
|
+
"""
|
|
151
|
+
if len(scopes) == 0:
|
|
152
|
+
scopes = ("pbi",)
|
|
153
|
+
|
|
154
|
+
region = kwargs.pop("region", None)
|
|
155
|
+
scopes = [
|
|
156
|
+
self._get_fully_qualified_scope(scope, region=region) for scope in scopes
|
|
157
|
+
]
|
|
158
|
+
return self.credential.get_token(*scopes, **kwargs)
|
|
159
|
+
|
|
160
|
+
def _get_fully_qualified_scope(
|
|
161
|
+
self, scope: str, region: Optional[str] = None
|
|
162
|
+
) -> str:
|
|
163
|
+
"""
|
|
164
|
+
Resolve to fully qualified scope if Fabric short-handed scope is given.
|
|
165
|
+
Otherwise, return the original scope.
|
|
166
|
+
|
|
167
|
+
Parameters
|
|
168
|
+
----------
|
|
169
|
+
scope : str
|
|
170
|
+
The scope to resolve.
|
|
171
|
+
region : str, default=None
|
|
172
|
+
The specific region to use to resolve scope.
|
|
173
|
+
Required if scope is "asazure".
|
|
174
|
+
|
|
175
|
+
Returns
|
|
176
|
+
-------
|
|
177
|
+
str
|
|
178
|
+
The resolved scope.
|
|
179
|
+
"""
|
|
180
|
+
fully_qualified_scope = self._shorthand_scopes.get(scope, scope)
|
|
181
|
+
|
|
182
|
+
if scope == "asazure":
|
|
183
|
+
if region is None:
|
|
184
|
+
raise ValueError("Region is required for 'asazure' scope")
|
|
185
|
+
return fully_qualified_scope.format(region=region)
|
|
186
|
+
|
|
187
|
+
return fully_qualified_scope
|
|
188
|
+
|
|
143
189
|
|
|
144
190
|
def _get_headers(
|
|
145
|
-
token_provider:
|
|
191
|
+
token_provider: TokenCredential,
|
|
146
192
|
audience: Literal[
|
|
147
193
|
"pbi", "storage", "azure", "graph", "asazure", "keyvault"
|
|
148
194
|
] = "azure",
|
|
@@ -151,7 +197,7 @@ def _get_headers(
|
|
|
151
197
|
Generates headers for an API request.
|
|
152
198
|
"""
|
|
153
199
|
|
|
154
|
-
token = token_provider(audience
|
|
200
|
+
token = token_provider.get_token(audience).token
|
|
155
201
|
|
|
156
202
|
headers = {"Authorization": f"Bearer {token}"}
|
|
157
203
|
|
|
@@ -202,7 +248,14 @@ def service_principal_authentication(
|
|
|
202
248
|
)
|
|
203
249
|
)
|
|
204
250
|
try:
|
|
205
|
-
|
|
251
|
+
from sempy.fabric import set_service_principal
|
|
252
|
+
|
|
253
|
+
with set_service_principal(
|
|
254
|
+
(key_vault_uri, key_vault_tenant_id),
|
|
255
|
+
(key_vault_uri, key_vault_client_id),
|
|
256
|
+
client_secret=(key_vault_uri, key_vault_client_secret),
|
|
257
|
+
):
|
|
258
|
+
yield
|
|
206
259
|
finally:
|
|
207
260
|
# Restore the prior state
|
|
208
261
|
if prior_token is None:
|
|
@@ -4,12 +4,12 @@ import sempy_labs._icons as icons
|
|
|
4
4
|
from sempy.fabric.exceptions import FabricHTTPException
|
|
5
5
|
import requests
|
|
6
6
|
import pandas as pd
|
|
7
|
-
from ._authentication import (
|
|
7
|
+
from sempy_labs._authentication import (
|
|
8
8
|
_get_headers,
|
|
9
9
|
ServicePrincipalTokenProvider,
|
|
10
10
|
)
|
|
11
11
|
from uuid import UUID
|
|
12
|
-
from ._helper_functions import (
|
|
12
|
+
from sempy_labs._helper_functions import (
|
|
13
13
|
_is_valid_uuid,
|
|
14
14
|
_update_dataframe_datatypes,
|
|
15
15
|
_base_api,
|
{semantic_link_labs-0.11.3 → semantic_link_labs-0.12.1}/src/sempy_labs/_capacity_migration.py
RENAMED
|
@@ -2,20 +2,20 @@ import sempy.fabric as fabric
|
|
|
2
2
|
from typing import Optional, List
|
|
3
3
|
from sempy._utils._log import log
|
|
4
4
|
import sempy_labs._icons as icons
|
|
5
|
-
from ._workspaces import assign_workspace_to_capacity
|
|
6
|
-
from .admin import (
|
|
5
|
+
from sempy_labs._workspaces import assign_workspace_to_capacity
|
|
6
|
+
from sempy_labs.admin import (
|
|
7
7
|
assign_workspaces_to_capacity,
|
|
8
8
|
)
|
|
9
9
|
from .admin._capacities import (
|
|
10
10
|
_list_capacities_meta,
|
|
11
11
|
list_capacities,
|
|
12
12
|
)
|
|
13
|
-
from ._helper_functions import (
|
|
13
|
+
from sempy_labs._helper_functions import (
|
|
14
14
|
resolve_capacity_id,
|
|
15
15
|
convert_to_alphanumeric_lowercase,
|
|
16
16
|
_base_api,
|
|
17
17
|
)
|
|
18
|
-
from ._capacities import create_fabric_capacity
|
|
18
|
+
from sempy_labs._capacities import create_fabric_capacity
|
|
19
19
|
from uuid import UUID
|
|
20
20
|
|
|
21
21
|
|