semantic-link-labs 0.8.9__tar.gz → 0.8.10__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.8.9 → semantic_link_labs-0.8.10}/PKG-INFO +4 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/README.md +3 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/conf.py +1 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/pyproject.toml +1 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/PKG-INFO +4 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/__init__.py +8 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_authentication.py +31 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_dataflows.py +1 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_gateways.py +46 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_generate_semantic_model.py +2 -10
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_git.py +32 -27
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_helper_functions.py +60 -23
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_list_functions.py +178 -32
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa.py +25 -23
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa_bulk.py +3 -3
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_dependencies.py +13 -7
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_notebooks.py +50 -18
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_refresh_semantic_model.py +23 -17
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/__init__.py +4 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_basic_functions.py +34 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_scanner.py +4 -4
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_dl_helper.py +13 -8
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/tom/_model.py +76 -34
- semantic_link_labs-0.8.10/tests/test_tom.py +37 -0
- semantic_link_labs-0.8.9/tests/test_tom.py +0 -31
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/workflows/build.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.github/workflows/codeql.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.gitignore +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.readthedocs.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/.vscode/settings.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/CODE_OF_CONDUCT.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/LICENSE +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/SECURITY.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/SUPPORT.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/Makefile +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/make.bat +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/requirements.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/index.rst +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/docs/source/modules.rst +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/environment.yml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Capacity Migration.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Migration to Direct Lake.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Model Optimization.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Query Scale Out.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Report Analysis.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/SQL.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Semantic Model Refresh.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/notebooks/Tabular Object Model.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/setup.cfg +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/SOURCES.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/requires.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ai.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_capacities.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_capacity_migration.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_clear_cache.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_connections.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_data_pipelines.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_dax.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_deployment_pipelines.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_documentation.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_environments.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_eventhouses.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_eventstreams.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_external_data_shares.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_icons.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_kql_databases.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_kql_querysets.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_managed_private_endpoints.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_mirrored_databases.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_mirrored_warehouses.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ml_experiments.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_ml_models.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_auto_build.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_model_bpa_rules.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_one_lake_integration.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_query_scale_out.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_spark.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_sql.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_translations.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_vertipaq.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_warehouses.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workloads.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workspace_identity.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_workspaces.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_domains.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_external_data_share.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_git.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/admin/_items.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_guardrails.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/directlake/_warm_cache.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_migration_validation.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_download_report.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_generate_report.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_paginated.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_bpa.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_functions.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_helper.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_list_functions.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_report_rebind.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/report/_reportwrapper.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/tom/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/test_friendly_case.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/tests/test_shortcuts.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.10
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
|
27
27
|
# Semantic Link Labs
|
|
28
28
|
|
|
29
29
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
30
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
31
31
|
[](https://github.com/psf/black)
|
|
32
32
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
33
33
|
|
|
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
64
64
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
65
65
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
66
66
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
67
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
67
68
|
* Reports
|
|
68
69
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
69
70
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -141,6 +142,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
141
142
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
142
143
|
|
|
143
144
|
## Version History
|
|
145
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
144
146
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
145
147
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
146
148
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
|
@@ -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
|
|
|
@@ -38,6 +38,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
38
38
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
39
39
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
40
40
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
41
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
41
42
|
* Reports
|
|
42
43
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
43
44
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -115,6 +116,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
115
116
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
116
117
|
|
|
117
118
|
## Version History
|
|
119
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
118
120
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
119
121
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
120
122
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
|
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('../../src/'))
|
|
|
13
13
|
project = 'semantic-link-labs'
|
|
14
14
|
copyright = '2024, Microsoft and community'
|
|
15
15
|
author = 'Microsoft and community'
|
|
16
|
-
release = '0.8.
|
|
16
|
+
release = '0.8.10'
|
|
17
17
|
|
|
18
18
|
# -- General configuration ---------------------------------------------------
|
|
19
19
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
{semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/semantic_link_labs.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.10
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
|
27
27
|
# Semantic Link Labs
|
|
28
28
|
|
|
29
29
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
30
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
31
31
|
[](https://github.com/psf/black)
|
|
32
32
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
33
33
|
|
|
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
64
64
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
65
65
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
66
66
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
67
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
67
68
|
* Reports
|
|
68
69
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
69
70
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -141,6 +142,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
141
142
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
142
143
|
|
|
143
144
|
## Version History
|
|
145
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
144
146
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
145
147
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
146
148
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
|
@@ -8,6 +8,7 @@ from sempy_labs._gateways import (
|
|
|
8
8
|
create_vnet_gateway,
|
|
9
9
|
update_vnet_gateway,
|
|
10
10
|
update_on_premises_gateway,
|
|
11
|
+
bind_semantic_model_to_gateway,
|
|
11
12
|
)
|
|
12
13
|
|
|
13
14
|
from sempy_labs._authentication import (
|
|
@@ -205,6 +206,8 @@ from sempy_labs._list_functions import (
|
|
|
205
206
|
list_lakehouses,
|
|
206
207
|
list_sql_endpoints,
|
|
207
208
|
update_item,
|
|
209
|
+
list_server_properties,
|
|
210
|
+
list_semantic_model_errors,
|
|
208
211
|
)
|
|
209
212
|
from sempy_labs._helper_functions import (
|
|
210
213
|
convert_to_friendly_case,
|
|
@@ -230,6 +233,7 @@ from sempy_labs._helper_functions import (
|
|
|
230
233
|
get_capacity_id,
|
|
231
234
|
get_capacity_name,
|
|
232
235
|
resolve_capacity_name,
|
|
236
|
+
get_tenant_id,
|
|
233
237
|
)
|
|
234
238
|
from sempy_labs._model_bpa_bulk import (
|
|
235
239
|
run_model_bpa_bulk,
|
|
@@ -458,4 +462,8 @@ __all__ = [
|
|
|
458
462
|
"update_vnet_gateway",
|
|
459
463
|
"update_on_premises_gateway",
|
|
460
464
|
"get_semantic_model_definition",
|
|
465
|
+
"get_tenant_id",
|
|
466
|
+
"list_server_properties",
|
|
467
|
+
"bind_semantic_model_to_gateway",
|
|
468
|
+
"list_semantic_model_errors",
|
|
461
469
|
]
|
|
@@ -91,11 +91,13 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
91
91
|
|
|
92
92
|
return cls(credential)
|
|
93
93
|
|
|
94
|
-
def __call__(
|
|
94
|
+
def __call__(
|
|
95
|
+
self, audience: Literal["pbi", "storage", "azure", "graph"] = "pbi"
|
|
96
|
+
) -> str:
|
|
95
97
|
"""
|
|
96
98
|
Parameters
|
|
97
99
|
----------
|
|
98
|
-
audience : Literal["pbi", "storage"] = "pbi") -> str
|
|
100
|
+
audience : Literal["pbi", "storage", "azure", "graph"] = "pbi") -> str
|
|
99
101
|
Literal if it's for PBI/Fabric API call or OneLake/Storage Account call.
|
|
100
102
|
"""
|
|
101
103
|
if audience == "pbi":
|
|
@@ -104,5 +106,32 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
104
106
|
).token
|
|
105
107
|
elif audience == "storage":
|
|
106
108
|
return self.credential.get_token("https://storage.azure.com/.default").token
|
|
109
|
+
elif audience == "azure":
|
|
110
|
+
return self.credential.get_token(
|
|
111
|
+
"https://management.azure.com/.default"
|
|
112
|
+
).token
|
|
113
|
+
elif audience == "graph":
|
|
114
|
+
return self.credential.get_token(
|
|
115
|
+
"https://graph.microsoft.com/.default"
|
|
116
|
+
).token
|
|
107
117
|
else:
|
|
108
118
|
raise NotImplementedError
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _get_headers(
|
|
122
|
+
token_provider: str, audience: Literal["pbi", "storage", "azure", "graph"] = "azure"
|
|
123
|
+
):
|
|
124
|
+
"""
|
|
125
|
+
Generates headers for an API request.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
token = token_provider(audience=audience)
|
|
129
|
+
|
|
130
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
131
|
+
|
|
132
|
+
if audience == "graph":
|
|
133
|
+
headers["ConsistencyLevel"] = "eventual"
|
|
134
|
+
else:
|
|
135
|
+
headers["Content-Type"] = "application/json"
|
|
136
|
+
|
|
137
|
+
return headers
|
|
@@ -42,7 +42,7 @@ def list_dataflows(workspace: Optional[str] = None):
|
|
|
42
42
|
"Dataflow Id": v.get("objectId"),
|
|
43
43
|
"Dataflow Name": v.get("name"),
|
|
44
44
|
"Configured By": v.get("configuredBy"),
|
|
45
|
-
"Users":
|
|
45
|
+
"Users": v.get("users"),
|
|
46
46
|
"Generation": v.get("generation"),
|
|
47
47
|
}
|
|
48
48
|
df = pd.concat(
|
|
@@ -6,6 +6,8 @@ from sempy_labs._helper_functions import (
|
|
|
6
6
|
pagination,
|
|
7
7
|
_is_valid_uuid,
|
|
8
8
|
resolve_capacity_id,
|
|
9
|
+
resolve_workspace_name_and_id,
|
|
10
|
+
resolve_dataset_name_and_id,
|
|
9
11
|
)
|
|
10
12
|
from uuid import UUID
|
|
11
13
|
import sempy_labs._icons as icons
|
|
@@ -437,3 +439,47 @@ def update_vnet_gateway(
|
|
|
437
439
|
raise FabricHTTPException(response)
|
|
438
440
|
|
|
439
441
|
print(f"{icons.green_dot} The '{gateway}' has been updated accordingly.")
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
def bind_semantic_model_to_gateway(
|
|
445
|
+
dataset: str | UUID, gateway: str | UUID, workspace: Optional[str | UUID] = None
|
|
446
|
+
):
|
|
447
|
+
"""
|
|
448
|
+
Binds the specified dataset from the specified workspace to the specified gateway.
|
|
449
|
+
|
|
450
|
+
This is a wrapper function for the following API: `Datasets - Bind To Gateway In Group <https://learn.microsoft.com/rest/api/power-bi/datasets/bind-to-gateway-in-group>`_.
|
|
451
|
+
|
|
452
|
+
Parameters
|
|
453
|
+
----------
|
|
454
|
+
dataset : str | UUID
|
|
455
|
+
The name or ID of the semantic model.
|
|
456
|
+
gateway : str | UUID
|
|
457
|
+
The name or ID of the gateway.
|
|
458
|
+
workspace : str | UUID, default=None
|
|
459
|
+
The Fabric workspace name.
|
|
460
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
461
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
462
|
+
"""
|
|
463
|
+
|
|
464
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
465
|
+
(dataset_name, dataset_id) = resolve_dataset_name_and_id(
|
|
466
|
+
dataset, workspace=workspace_id
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
gateway_id = _resolve_gateway_id(gateway)
|
|
470
|
+
payload = {
|
|
471
|
+
"gatewayObjectId": gateway_id,
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
client = fabric.FabricRestClient()
|
|
475
|
+
response = client.post(
|
|
476
|
+
f"/v1.0/myorg/groups/{workspace_id}/datasets/{dataset_id}/Default.BindToGateway",
|
|
477
|
+
json=payload,
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
if response.status_code != 200:
|
|
481
|
+
raise FabricHTTPException(response)
|
|
482
|
+
|
|
483
|
+
print(
|
|
484
|
+
f"{icons.green_dot} The '{dataset_name}' semantic model within the '{workspace_name}' workspace has been binded to the '{gateway_id}' gateway."
|
|
485
|
+
)
|
{semantic_link_labs-0.8.9 → semantic_link_labs-0.8.10}/src/sempy_labs/_generate_semantic_model.py
RENAMED
|
@@ -203,14 +203,7 @@ def update_semantic_model_from_bim(
|
|
|
203
203
|
"""
|
|
204
204
|
|
|
205
205
|
(workspace, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
206
|
-
|
|
207
|
-
dfD = fabric.list_datasets(workspace=workspace, mode="rest")
|
|
208
|
-
dfD_filt = dfD[dfD["Dataset Name"] == dataset]
|
|
209
|
-
if len(dfD_filt) == 0:
|
|
210
|
-
raise ValueError(
|
|
211
|
-
f"{icons.red_dot} The '{dataset}' semantic model within the '{workspace}' workspace does not exist."
|
|
212
|
-
)
|
|
213
|
-
dataset_id = dfD_filt["Dataset Id"].iloc[0]
|
|
206
|
+
dataset_id = resolve_dataset_id(dataset=dataset, workspace=workspace)
|
|
214
207
|
|
|
215
208
|
client = fabric.FabricRestClient()
|
|
216
209
|
defPBIDataset = {"version": "1.0", "settings": {}}
|
|
@@ -303,12 +296,11 @@ def deploy_semantic_model(
|
|
|
303
296
|
bim = get_semantic_model_bim(dataset=source_dataset, workspace=source_workspace)
|
|
304
297
|
|
|
305
298
|
# Create the semantic model if the model does not exist
|
|
306
|
-
if
|
|
299
|
+
if dfD_filt.empty:
|
|
307
300
|
create_semantic_model_from_bim(
|
|
308
301
|
dataset=target_dataset,
|
|
309
302
|
bim_file=bim,
|
|
310
303
|
workspace=target_workspace,
|
|
311
|
-
overwrite=overwrite,
|
|
312
304
|
)
|
|
313
305
|
# Update the semantic model if the model exists
|
|
314
306
|
else:
|
|
@@ -277,43 +277,48 @@ def commit_to_git(
|
|
|
277
277
|
workspace, workspace_id = resolve_workspace_name_and_id(workspace)
|
|
278
278
|
|
|
279
279
|
gs = get_git_status(workspace=workspace)
|
|
280
|
-
|
|
280
|
+
if not gs.empty:
|
|
281
|
+
workspace_head = gs["Workspace Head"].iloc[0]
|
|
281
282
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
283
|
+
if item_ids is None:
|
|
284
|
+
commit_mode = "All"
|
|
285
|
+
else:
|
|
286
|
+
commit_mode = "Selective"
|
|
286
287
|
|
|
287
|
-
|
|
288
|
-
|
|
288
|
+
if isinstance(item_ids, str):
|
|
289
|
+
item_ids = [item_ids]
|
|
289
290
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
291
|
+
request_body = {
|
|
292
|
+
"mode": commit_mode,
|
|
293
|
+
"workspaceHead": workspace_head,
|
|
294
|
+
"comment": comment,
|
|
295
|
+
}
|
|
295
296
|
|
|
296
|
-
|
|
297
|
-
|
|
297
|
+
if item_ids is not None:
|
|
298
|
+
request_body["items"] = [{"objectId": item_id} for item_id in item_ids]
|
|
298
299
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
300
|
+
client = fabric.FabricRestClient()
|
|
301
|
+
response = client.post(
|
|
302
|
+
f"/v1/workspaces/{workspace_id}/git/commitToGit",
|
|
303
|
+
json=request_body,
|
|
304
|
+
)
|
|
304
305
|
|
|
305
|
-
|
|
306
|
-
|
|
306
|
+
if response.status_code not in [200, 202]:
|
|
307
|
+
raise FabricHTTPException(response)
|
|
307
308
|
|
|
308
|
-
|
|
309
|
+
lro(client=client, response=response, return_status_code=True)
|
|
309
310
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
311
|
+
if commit_mode == "All":
|
|
312
|
+
print(
|
|
313
|
+
f"{icons.green_dot} All items within the '{workspace}' workspace have been committed to Git."
|
|
314
|
+
)
|
|
315
|
+
else:
|
|
316
|
+
print(
|
|
317
|
+
f"{icons.green_dot} The {item_ids} items within the '{workspace}' workspace have been committed to Git."
|
|
318
|
+
)
|
|
314
319
|
else:
|
|
315
320
|
print(
|
|
316
|
-
f"{icons.
|
|
321
|
+
f"{icons.info} Git already up to date: no modified items found within the '{workspace}' workspace."
|
|
317
322
|
)
|
|
318
323
|
|
|
319
324
|
|
|
@@ -160,14 +160,34 @@ def resolve_report_name(report_id: UUID, workspace: Optional[str] = None) -> str
|
|
|
160
160
|
return obj
|
|
161
161
|
|
|
162
162
|
|
|
163
|
-
def
|
|
163
|
+
def resolve_dataset_name_and_id(
|
|
164
|
+
dataset: str | UUID, workspace: Optional[str] = None
|
|
165
|
+
) -> Tuple[str, UUID]:
|
|
166
|
+
|
|
167
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
168
|
+
|
|
169
|
+
if _is_valid_uuid(dataset):
|
|
170
|
+
dataset_id = dataset
|
|
171
|
+
dataset_name = fabric.resolve_item_name(
|
|
172
|
+
item_id=dataset_id, type="SemanticModel", workspace=workspace_id
|
|
173
|
+
)
|
|
174
|
+
else:
|
|
175
|
+
dataset_name = dataset
|
|
176
|
+
dataset_id = fabric.resolve_item_id(
|
|
177
|
+
item_name=dataset, type="SemanticModel", workspace=workspace_id
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
return dataset_name, dataset_id
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def resolve_dataset_id(dataset: str | UUID, workspace: Optional[str] = None) -> UUID:
|
|
164
184
|
"""
|
|
165
185
|
Obtains the ID of the semantic model.
|
|
166
186
|
|
|
167
187
|
Parameters
|
|
168
188
|
----------
|
|
169
|
-
dataset : str
|
|
170
|
-
The name of the semantic model.
|
|
189
|
+
dataset : str | UUID
|
|
190
|
+
The name or ID of the semantic model.
|
|
171
191
|
workspace : str, default=None
|
|
172
192
|
The Fabric workspace name.
|
|
173
193
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
@@ -179,15 +199,14 @@ def resolve_dataset_id(dataset: str, workspace: Optional[str] = None) -> UUID:
|
|
|
179
199
|
The ID of the semantic model.
|
|
180
200
|
"""
|
|
181
201
|
|
|
182
|
-
if
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
)
|
|
202
|
+
if _is_valid_uuid(dataset):
|
|
203
|
+
dataset_id = dataset
|
|
204
|
+
else:
|
|
205
|
+
dataset_id = fabric.resolve_item_id(
|
|
206
|
+
item_name=dataset, type="SemanticModel", workspace=workspace
|
|
207
|
+
)
|
|
189
208
|
|
|
190
|
-
return
|
|
209
|
+
return dataset_id
|
|
191
210
|
|
|
192
211
|
|
|
193
212
|
def resolve_dataset_name(dataset_id: UUID, workspace: Optional[str] = None) -> str:
|
|
@@ -761,13 +780,19 @@ def get_capacity_id(workspace: Optional[str] = None) -> UUID:
|
|
|
761
780
|
The capacity Id.
|
|
762
781
|
"""
|
|
763
782
|
|
|
764
|
-
workspace
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
783
|
+
if workspace is None:
|
|
784
|
+
capacity_id = _get_x_id(name="trident.capacity.id")
|
|
785
|
+
else:
|
|
786
|
+
|
|
787
|
+
workspace = fabric.resolve_workspace_name(workspace)
|
|
788
|
+
filter_condition = urllib.parse.quote(workspace)
|
|
789
|
+
dfW = fabric.list_workspaces(filter=f"name eq '{filter_condition}'")
|
|
790
|
+
if len(dfW) == 0:
|
|
791
|
+
raise ValueError(f"{icons.red_dot} The '{workspace}' does not exist'.")
|
|
792
|
+
|
|
793
|
+
capacity_id = dfW["Capacity Id"].iloc[0]
|
|
769
794
|
|
|
770
|
-
return
|
|
795
|
+
return capacity_id
|
|
771
796
|
|
|
772
797
|
|
|
773
798
|
def get_capacity_name(workspace: Optional[str] = None) -> str:
|
|
@@ -1167,20 +1192,20 @@ def _make_list_unique(my_list):
|
|
|
1167
1192
|
|
|
1168
1193
|
def _get_partition_map(dataset: str, workspace: Optional[str] = None) -> pd.DataFrame:
|
|
1169
1194
|
|
|
1170
|
-
|
|
1171
|
-
|
|
1195
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
1196
|
+
(dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
|
|
1172
1197
|
|
|
1173
1198
|
partitions = fabric.evaluate_dax(
|
|
1174
|
-
dataset=
|
|
1175
|
-
workspace=
|
|
1199
|
+
dataset=dataset_id,
|
|
1200
|
+
workspace=workspace_id,
|
|
1176
1201
|
dax_string="""
|
|
1177
1202
|
select [ID] AS [PartitionID], [TableID], [Name] AS [PartitionName] from $system.tmschema_partitions
|
|
1178
1203
|
""",
|
|
1179
1204
|
)
|
|
1180
1205
|
|
|
1181
1206
|
tables = fabric.evaluate_dax(
|
|
1182
|
-
dataset=
|
|
1183
|
-
workspace=
|
|
1207
|
+
dataset=dataset_id,
|
|
1208
|
+
workspace=workspace_id,
|
|
1184
1209
|
dax_string="""
|
|
1185
1210
|
select [ID] AS [TableID], [Name] AS [TableName] from $system.tmschema_tables
|
|
1186
1211
|
""",
|
|
@@ -1352,3 +1377,15 @@ def _is_valid_uuid(
|
|
|
1352
1377
|
return True
|
|
1353
1378
|
except ValueError:
|
|
1354
1379
|
return False
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
def _get_fabric_context_setting(name: str):
|
|
1383
|
+
|
|
1384
|
+
from synapse.ml.internal_utils.session_utils import get_fabric_context
|
|
1385
|
+
|
|
1386
|
+
return get_fabric_context().get(name)
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
def get_tenant_id():
|
|
1390
|
+
|
|
1391
|
+
_get_fabric_context_setting(name="trident.tenant.id")
|