semantic-link-labs 0.10.0__py3-none-any.whl → 0.11.0__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 (95) hide show
  1. {semantic_link_labs-0.10.0.dist-info → semantic_link_labs-0.11.0.dist-info}/METADATA +9 -6
  2. {semantic_link_labs-0.10.0.dist-info → semantic_link_labs-0.11.0.dist-info}/RECORD +95 -87
  3. sempy_labs/__init__.py +11 -1
  4. sempy_labs/_a_lib_info.py +2 -0
  5. sempy_labs/_capacities.py +2 -0
  6. sempy_labs/_connections.py +11 -0
  7. sempy_labs/_dashboards.py +9 -4
  8. sempy_labs/_data_pipelines.py +5 -0
  9. sempy_labs/_dataflows.py +284 -17
  10. sempy_labs/_daxformatter.py +80 -0
  11. sempy_labs/_delta_analyzer_history.py +4 -1
  12. sempy_labs/_deployment_pipelines.py +4 -0
  13. sempy_labs/_documentation.py +3 -0
  14. sempy_labs/_environments.py +10 -1
  15. sempy_labs/_eventhouses.py +12 -5
  16. sempy_labs/_eventstreams.py +11 -3
  17. sempy_labs/_external_data_shares.py +8 -2
  18. sempy_labs/_gateways.py +26 -5
  19. sempy_labs/_git.py +11 -0
  20. sempy_labs/_graphQL.py +10 -3
  21. sempy_labs/_helper_functions.py +62 -10
  22. sempy_labs/_job_scheduler.py +54 -7
  23. sempy_labs/_kql_databases.py +11 -2
  24. sempy_labs/_kql_querysets.py +11 -3
  25. sempy_labs/_list_functions.py +17 -45
  26. sempy_labs/_managed_private_endpoints.py +11 -2
  27. sempy_labs/_mirrored_databases.py +17 -3
  28. sempy_labs/_mirrored_warehouses.py +9 -3
  29. sempy_labs/_ml_experiments.py +11 -3
  30. sempy_labs/_ml_models.py +11 -3
  31. sempy_labs/_model_bpa_rules.py +2 -0
  32. sempy_labs/_mounted_data_factories.py +12 -8
  33. sempy_labs/_notebooks.py +6 -3
  34. sempy_labs/_refresh_semantic_model.py +1 -0
  35. sempy_labs/_semantic_models.py +107 -0
  36. sempy_labs/_spark.py +7 -0
  37. sempy_labs/_sql_endpoints.py +208 -0
  38. sempy_labs/_sqldatabase.py +13 -4
  39. sempy_labs/_tags.py +5 -1
  40. sempy_labs/_user_delegation_key.py +2 -0
  41. sempy_labs/_variable_libraries.py +3 -1
  42. sempy_labs/_warehouses.py +13 -3
  43. sempy_labs/_workloads.py +3 -0
  44. sempy_labs/_workspace_identity.py +3 -0
  45. sempy_labs/_workspaces.py +14 -1
  46. sempy_labs/admin/__init__.py +2 -0
  47. sempy_labs/admin/_activities.py +6 -5
  48. sempy_labs/admin/_apps.py +31 -31
  49. sempy_labs/admin/_artifacts.py +8 -3
  50. sempy_labs/admin/_basic_functions.py +5 -0
  51. sempy_labs/admin/_capacities.py +39 -28
  52. sempy_labs/admin/_datasets.py +51 -51
  53. sempy_labs/admin/_domains.py +17 -1
  54. sempy_labs/admin/_external_data_share.py +8 -2
  55. sempy_labs/admin/_git.py +14 -9
  56. sempy_labs/admin/_items.py +15 -2
  57. sempy_labs/admin/_reports.py +64 -65
  58. sempy_labs/admin/_shared.py +7 -1
  59. sempy_labs/admin/_tags.py +5 -0
  60. sempy_labs/admin/_tenant.py +5 -2
  61. sempy_labs/admin/_users.py +9 -3
  62. sempy_labs/admin/_workspaces.py +88 -0
  63. sempy_labs/directlake/_dl_helper.py +2 -0
  64. sempy_labs/directlake/_generate_shared_expression.py +2 -0
  65. sempy_labs/directlake/_get_directlake_lakehouse.py +2 -4
  66. sempy_labs/directlake/_get_shared_expression.py +2 -0
  67. sempy_labs/directlake/_guardrails.py +2 -0
  68. sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +5 -3
  69. sempy_labs/directlake/_warm_cache.py +1 -0
  70. sempy_labs/graph/_groups.py +22 -7
  71. sempy_labs/graph/_teams.py +7 -2
  72. sempy_labs/graph/_users.py +1 -0
  73. sempy_labs/lakehouse/_blobs.py +1 -0
  74. sempy_labs/lakehouse/_get_lakehouse_tables.py +88 -27
  75. sempy_labs/lakehouse/_helper.py +2 -0
  76. sempy_labs/lakehouse/_lakehouse.py +38 -5
  77. sempy_labs/lakehouse/_livy_sessions.py +2 -1
  78. sempy_labs/lakehouse/_shortcuts.py +7 -1
  79. sempy_labs/migration/_direct_lake_to_import.py +2 -0
  80. sempy_labs/mirrored_azure_databricks_catalog/__init__.py +15 -0
  81. sempy_labs/mirrored_azure_databricks_catalog/_discover.py +213 -0
  82. sempy_labs/mirrored_azure_databricks_catalog/_refresh_catalog_metadata.py +45 -0
  83. sempy_labs/report/_download_report.py +2 -1
  84. sempy_labs/report/_generate_report.py +2 -0
  85. sempy_labs/report/_paginated.py +2 -0
  86. sempy_labs/report/_report_bpa.py +110 -122
  87. sempy_labs/report/_report_bpa_rules.py +2 -0
  88. sempy_labs/report/_report_functions.py +7 -0
  89. sempy_labs/report/_reportwrapper.py +86 -48
  90. sempy_labs/theme/__init__.py +12 -0
  91. sempy_labs/theme/_org_themes.py +96 -0
  92. sempy_labs/tom/_model.py +702 -35
  93. {semantic_link_labs-0.10.0.dist-info → semantic_link_labs-0.11.0.dist-info}/WHEEL +0 -0
  94. {semantic_link_labs-0.10.0.dist-info → semantic_link_labs-0.11.0.dist-info}/licenses/LICENSE +0 -0
  95. {semantic_link_labs-0.10.0.dist-info → semantic_link_labs-0.11.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,96 @@
1
+ import pandas as pd
2
+ from uuid import UUID
3
+ from sempy_labs._helper_functions import (
4
+ _is_valid_uuid,
5
+ _base_api,
6
+ _update_dataframe_datatypes,
7
+ _create_dataframe,
8
+ )
9
+
10
+
11
+ _pbi_url_prefix = None
12
+
13
+
14
+ def init_pbi_url_prefix():
15
+ global _pbi_url_prefix
16
+ if _pbi_url_prefix:
17
+ return
18
+
19
+ response = _base_api("/v1.0/myorg/capacities")
20
+ _pbi_url_prefix = response.json().get("@odata.context").split("/v1.0/myorg")[0]
21
+
22
+
23
+ def list_org_themes() -> pd.DataFrame:
24
+
25
+ init_pbi_url_prefix()
26
+
27
+ columns = {
28
+ "Theme Id": "str",
29
+ "Theme Name": "str",
30
+ "Description": "str",
31
+ "Enabled In Theme Gallery": "bool",
32
+ "Update Time": "datetime",
33
+ "For Copilot": "bool",
34
+ "Theme Json": "str",
35
+ }
36
+
37
+ df = _create_dataframe(columns=columns)
38
+
39
+ response = _base_api(request=f"{_pbi_url_prefix}/metadata/organization/themes")
40
+
41
+ result = response.json().get("orgThemes")
42
+ if result:
43
+ df = pd.json_normalize(result)
44
+ df.rename(
45
+ columns={
46
+ "objectId": "Theme Id",
47
+ "displayName": "Theme Name",
48
+ "description": "Description",
49
+ "enabledInThemeGallery": "Enabled In Theme Gallery",
50
+ "updateTime": "Update Time",
51
+ "forCopilot": "For Copilot",
52
+ "themeJson": "Theme Json",
53
+ },
54
+ inplace=True,
55
+ )
56
+ _update_dataframe_datatypes(df, columns)
57
+
58
+ return df
59
+
60
+
61
+ def resolve_theme_id(theme: str | UUID):
62
+
63
+ if _is_valid_uuid(theme):
64
+ return theme
65
+ else:
66
+ df = list_org_themes()
67
+ df_filt = df[df["Theme Name"] == theme]
68
+ if df_filt.empty:
69
+ raise ValueError("Invalid theme")
70
+ else:
71
+ return df_filt["Theme Id"].iloc[0]
72
+
73
+
74
+ def get_org_theme_json(theme: str | UUID) -> dict:
75
+
76
+ init_pbi_url_prefix()
77
+
78
+ theme_id = resolve_theme_id(theme)
79
+ response = _base_api(
80
+ request=f"{_pbi_url_prefix}/metadata/organization/themes/{theme_id}"
81
+ )
82
+ return response.json().get("themeJson", {})
83
+
84
+
85
+ def delete_org_theme(theme: str | UUID) -> None:
86
+ """
87
+ Deletes an organization theme by its name or ID.
88
+ """
89
+ init_pbi_url_prefix()
90
+
91
+ theme_id = resolve_theme_id(theme)
92
+ _base_api(
93
+ request=f"{_pbi_url_prefix}/metadata/organization/themes/{theme_id}",
94
+ method="delete",
95
+ status_codes=204,
96
+ )