msfabricpysdkcore 0.2.5__py3-none-any.whl → 0.2.7__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.
Files changed (54) hide show
  1. msfabricpysdkcore/coreapi.py +742 -32
  2. msfabricpysdkcore/otheritems.py +61 -1
  3. msfabricpysdkcore/workspace.py +161 -9
  4. {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/METADATA +4 -2
  5. msfabricpysdkcore-0.2.7.dist-info/RECORD +30 -0
  6. msfabricpysdkcore/tests/__init__.py +0 -0
  7. msfabricpysdkcore/tests/test_admin_apis.py +0 -174
  8. msfabricpysdkcore/tests/test_admin_tags.py +0 -46
  9. msfabricpysdkcore/tests/test_connection.py +0 -111
  10. msfabricpysdkcore/tests/test_copy_jobs.py +0 -60
  11. msfabricpysdkcore/tests/test_dataflows.py +0 -60
  12. msfabricpysdkcore/tests/test_datapipelines.py +0 -60
  13. msfabricpysdkcore/tests/test_deployment_pipeline.py +0 -63
  14. msfabricpysdkcore/tests/test_deployment_pipelinev2.py +0 -135
  15. msfabricpysdkcore/tests/test_domains.py +0 -126
  16. msfabricpysdkcore/tests/test_environments.py +0 -114
  17. msfabricpysdkcore/tests/test_evenhouses.py +0 -56
  18. msfabricpysdkcore/tests/test_evenstreams.py +0 -52
  19. msfabricpysdkcore/tests/test_eventstream_topology.py +0 -82
  20. msfabricpysdkcore/tests/test_external_data_shares.py +0 -51
  21. msfabricpysdkcore/tests/test_fabric_azure_client.py +0 -80
  22. msfabricpysdkcore/tests/test_folders.py +0 -53
  23. msfabricpysdkcore/tests/test_gateways.py +0 -99
  24. msfabricpysdkcore/tests/test_git.py +0 -66
  25. msfabricpysdkcore/tests/test_graphqlapi.py +0 -44
  26. msfabricpysdkcore/tests/test_items.py +0 -97
  27. msfabricpysdkcore/tests/test_jobs.py +0 -96
  28. msfabricpysdkcore/tests/test_kql_dashboards.py +0 -63
  29. msfabricpysdkcore/tests/test_kql_queryset.py +0 -64
  30. msfabricpysdkcore/tests/test_kqldatabases.py +0 -56
  31. msfabricpysdkcore/tests/test_lakehouse.py +0 -93
  32. msfabricpysdkcore/tests/test_managed_private_endpoints.py +0 -61
  33. msfabricpysdkcore/tests/test_mirroreddatabases.py +0 -80
  34. msfabricpysdkcore/tests/test_ml_experiments.py +0 -47
  35. msfabricpysdkcore/tests/test_ml_models.py +0 -47
  36. msfabricpysdkcore/tests/test_mounted_adf.py +0 -64
  37. msfabricpysdkcore/tests/test_notebooks.py +0 -57
  38. msfabricpysdkcore/tests/test_one_lake_data_access_security.py +0 -63
  39. msfabricpysdkcore/tests/test_other_items.py +0 -45
  40. msfabricpysdkcore/tests/test_reflex.py +0 -57
  41. msfabricpysdkcore/tests/test_reports.py +0 -56
  42. msfabricpysdkcore/tests/test_semantic_model.py +0 -56
  43. msfabricpysdkcore/tests/test_shortcuts.py +0 -60
  44. msfabricpysdkcore/tests/test_spark.py +0 -91
  45. msfabricpysdkcore/tests/test_sparkjobdefinition.py +0 -55
  46. msfabricpysdkcore/tests/test_sqldatabases.py +0 -45
  47. msfabricpysdkcore/tests/test_tags.py +0 -28
  48. msfabricpysdkcore/tests/test_variable_libary.py +0 -61
  49. msfabricpysdkcore/tests/test_warehouses.py +0 -50
  50. msfabricpysdkcore/tests/test_workspaces_capacities.py +0 -159
  51. msfabricpysdkcore-0.2.5.dist-info/RECORD +0 -75
  52. {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/WHEEL +0 -0
  53. {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/licenses/LICENSE +0 -0
  54. {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,15 @@
1
1
  from msfabricpysdkcore.item import Item
2
2
 
3
+ class ApacheAirflowJob(Item):
4
+ """Class to represent a ApacheAirflowJob in Microsoft Fabric"""
5
+
6
+ def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
7
+ super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
8
+
9
+ def from_dict(item_dict, core_client):
10
+ return ApacheAirflowJob(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
11
+ properties=item_dict.get('properties', None),
12
+ definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
3
13
 
4
14
  class CopyJob(Item):
5
15
  """Class to represent a copy job in Microsoft Fabric"""
@@ -36,7 +46,44 @@ class DataPipeline(Item):
36
46
 
37
47
  def run_on_demand_item_job(self, execution_data=None):
38
48
  return self.core_client.run_on_demand_item_job(workspace_id=self.workspace_id, item_id=self.id, job_type="Pipeline", execution_data=execution_data)
49
+
50
+ class DigitalTwinBuilder(Item):
51
+ """Class to represent a DigitalTwinBuilder in Microsoft Fabric"""
52
+
53
+ def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
54
+ super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
55
+
56
+ def from_dict(item_dict, core_client):
57
+ return DigitalTwinBuilder(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
58
+ properties=item_dict.get('properties', None),
59
+ definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
60
+
61
+ class DigitalTwinBuilderFlow(Item):
62
+ """Class to represent a DigitalTwinBuilderFlow in Microsoft Fabric"""
63
+
64
+ def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
65
+ super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
66
+
67
+ def from_dict(item_dict, core_client):
68
+ return DigitalTwinBuilderFlow(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
69
+ properties=item_dict.get('properties', None),
70
+ definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
71
+
72
+ class MirroredAzureDatabricksCatalog(Item):
73
+ """Class to represent a mirrored Azure Databricks catalog in Microsoft Fabric"""
74
+
75
+ def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
76
+ super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
77
+
78
+ def from_dict(item_dict, core_client):
79
+ return MirroredAzureDatabricksCatalog(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
80
+ properties=item_dict.get('properties', None),
81
+ definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
39
82
 
83
+ def refresh_catalog_metadata(self):
84
+ """Method to refresh the metadata of the mirrored Azure Databricks catalog"""
85
+ return self.core_client.refresh_mirrored_azure_databricks_catalog_metadata(self.workspace_id, self.id)
86
+
40
87
  class Eventhouse(Item):
41
88
  """Class to represent a eventhouse in Microsoft Fabric"""
42
89
 
@@ -110,6 +157,17 @@ class Warehouse(Item):
110
157
  return Warehouse(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
111
158
  properties=item_dict.get('properties', None),
112
159
  definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
160
+
161
+ class WarehouseSnapshot(Item):
162
+ """Class to represent a warehouse snapshot in Microsoft Fabric"""
163
+
164
+ def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
165
+ super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
166
+
167
+ def from_dict(item_dict, core_client):
168
+ return WarehouseSnapshot(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
169
+ properties=item_dict.get('properties', None),
170
+ definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
113
171
 
114
172
  class KQLDashboard(Item):
115
173
  """Class to represent a kql dashboard in Microsoft Fabric"""
@@ -180,7 +238,9 @@ class GraphQLApi(Item):
180
238
  return GraphQLApi(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
181
239
  properties=item_dict.get('properties', None),
182
240
  definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
183
-
241
+
242
+
243
+
184
244
  class MirroredDatabase(Item):
185
245
  """Class to represent a mirrored database in Microsoft Fabric"""
186
246
 
@@ -184,6 +184,11 @@ class Workspace:
184
184
  def revoke_external_data_share(self, item_id, external_data_share_id):
185
185
  return self.core_client.revoke_external_data_share(workspace_id=self.id, item_id=item_id, external_data_share_id=external_data_share_id)
186
186
 
187
+ # delete
188
+ def delete_external_data_share(self, item_id, external_data_share_id):
189
+ """Delete an external data share from an item in a workspace"""
190
+ return self.core_client.delete_external_data_share(workspace_id=self.id, item_id=item_id, external_data_share_id=external_data_share_id)
191
+
187
192
  # Folders
188
193
  # Folders
189
194
  # POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/folders
@@ -423,6 +428,33 @@ class Workspace:
423
428
  def list_mirrored_warehouses(self):
424
429
  return self.core_client.list_mirrored_warehouses(workspace_id=self.id)
425
430
 
431
+ # apache airflow jobs
432
+ def create_apache_airflow_job(self, display_name, definition = None, description = None, folder_id = None):
433
+ return self.core_client.create_apache_airflow_job(workspace_id=self.id, display_name=display_name, description=description,
434
+ definition=definition, folder_id=folder_id)
435
+
436
+ def delete_apache_airflow_job(self, apache_airflow_job_id):
437
+ return self.core_client.delete_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id)
438
+
439
+ def get_apache_airflow_job(self, apache_airflow_job_id = None, apache_airflow_job_name = None):
440
+ return self.core_client.get_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
441
+ apache_airflow_job_name=apache_airflow_job_name)
442
+
443
+ # get_apache_airflow_job_definition
444
+ def get_apache_airflow_job_definition(self, apache_airflow_job_id, format = None):
445
+ return self.core_client.get_apache_airflow_job_definition(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id, format=format)
446
+
447
+ def list_apache_airflow_jobs(self, with_properties = False):
448
+ return self.core_client.list_apache_airflow_jobs(workspace_id=self.id, with_properties=with_properties)
449
+
450
+ def update_apache_airflow_job(self, apache_airflow_job_id, display_name = None, description = None):
451
+ return self.core_client.update_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
452
+ display_name=display_name, description=description)
453
+
454
+ def update_apache_airflow_job_definition(self, apache_airflow_job_id, definition, update_metadata = None):
455
+ return self.core_client.update_apache_airflow_job_definition(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
456
+ definition=definition, update_metadata=update_metadata)
457
+
426
458
  # copy jobs
427
459
 
428
460
  def create_copy_job(self, display_name, definition = None, description = None):
@@ -556,6 +588,40 @@ class Workspace:
556
588
  return self.core_client.update_data_pipeline_definition(workspace_id=self.id, data_pipeline_id=data_pipeline_id,
557
589
  definition=definition, update_metadata=update_metadata)
558
590
 
591
+ # digital twin builders
592
+
593
+ def create_digital_twin_builder(self, display_name, definition = None, description = None, folder_id = None):
594
+ """Create a digital twin builder in a workspace"""
595
+ return self.core_client.create_digital_twin_builder(workspace_id=self.id, display_name=display_name,
596
+ definition=definition, description=description, folder_id=folder_id)
597
+
598
+ def delete_digital_twin_builder(self, digital_twin_builder_id):
599
+ """Delete a digital twin builder from a workspace"""
600
+ return self.core_client.delete_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id)
601
+
602
+ def get_digital_twin_builder(self, digital_twin_builder_id = None, digital_twin_builder_name = None):
603
+ """Get a digital twin builder from a workspace"""
604
+ return self.core_client.get_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
605
+ digital_twin_builder_name=digital_twin_builder_name)
606
+
607
+ def get_digital_twin_builder_definition(self, digital_twin_builder_id, format = None):
608
+ """Get the definition of a digital twin builder from a workspace"""
609
+ return self.core_client.get_digital_twin_builder_definition(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id, format=format)
610
+
611
+ def list_digital_twin_builders(self, with_properties = False):
612
+ """List digital twin builders in a workspace"""
613
+ return self.core_client.list_digital_twin_builders(workspace_id=self.id, with_properties=with_properties)
614
+
615
+ def update_digital_twin_builder(self, digital_twin_builder_id, display_name = None, description = None):
616
+ """Update a digital twin builder in a workspace"""
617
+ return self.core_client.update_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
618
+ display_name=display_name, description=description)
619
+
620
+ def update_digital_twin_builder_definition(self, digital_twin_builder_id, definition, update_metadata = None):
621
+ """Update the definition of a digital twin builder in a workspace"""
622
+ return self.core_client.update_digital_twin_builder_definition(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
623
+ definition=definition, update_metadata=update_metadata)
624
+
559
625
  # environments
560
626
 
561
627
  def list_environments(self, with_properties = False):
@@ -625,10 +691,10 @@ class Workspace:
625
691
  """List eventhouses in a workspace"""
626
692
  return self.core_client.list_eventhouses(workspace_id=self.id, with_properties=with_properties)
627
693
 
628
- def create_eventhouse(self, display_name, description = None):
694
+ def create_eventhouse(self, display_name, definition = None, creation_payload = None, description = None):
629
695
  """Create an eventhouse in a workspace"""
630
- return self.core_client.create_eventhouse(workspace_id=self.id, display_name=display_name, description=description)
631
-
696
+ return self.core_client.create_eventhouse(workspace_id=self.id, display_name=display_name, description=description, definition=definition, creation_payload=creation_payload)
697
+
632
698
  def get_eventhouse(self, eventhouse_id = None, eventhouse_name = None):
633
699
  """Get an eventhouse from a workspace"""
634
700
  return self.core_client.get_eventhouse(workspace_id=self.id, eventhouse_id=eventhouse_id,
@@ -655,10 +721,11 @@ class Workspace:
655
721
  # eventstreams
656
722
 
657
723
 
658
- def create_eventstream(self, display_name, description = None):
724
+ def create_eventstream(self, display_name, description = None, definition = None, creation_payload = None):
659
725
  """Create an eventstream in a workspace"""
660
- return self.core_client.create_eventstream(workspace_id=self.id, display_name=display_name, description=description)
661
-
726
+ return self.core_client.create_eventstream(workspace_id=self.id, display_name=display_name,
727
+ description=description, definition=definition, creation_payload=creation_payload)
728
+
662
729
  def delete_eventstream(self, eventstream_id):
663
730
  """Delete an eventstream from a workspace"""
664
731
  return self.core_client.delete_eventstream(workspace_id=self.id, eventstream_id=eventstream_id)
@@ -861,6 +928,62 @@ class Workspace:
861
928
  return self.core_client.update_kql_queryset_definition(workspace_id=self.id, kql_queryset_id=kql_queryset_id,
862
929
  definition=definition, update_metadata=update_metadata)
863
930
 
931
+ # mirrored Azure databricks catalog
932
+ def create_mirrored_azure_databricks_catalog(self, display_name, description = None, definition = None):
933
+ """Create a mirrored Azure Databricks catalog in a workspace"""
934
+ return self.core_client.create_mirrored_azure_databricks_catalog(workspace_id=self.id, display_name=display_name,
935
+ description=description, definition=definition)
936
+
937
+ def delete_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id):
938
+ """Delete a mirrored Azure Databricks catalog from a workspace"""
939
+ return self.core_client.delete_mirrored_azure_databricks_catalog(workspace_id=self.id,
940
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id)
941
+ def get_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id = None,
942
+ mirrored_azure_databricks_catalog_name = None):
943
+ """Get a mirrored Azure Databricks catalog from a workspace"""
944
+ return self.core_client.get_mirrored_azure_databricks_catalog(workspace_id=self.id,
945
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
946
+ mirrored_azure_databricks_catalog_name=mirrored_azure_databricks_catalog_name)
947
+ def get_mirrored_azure_databricks_catalog_definition(self, mirrored_azure_databricks_catalog_id, format = None):
948
+ """Get the definition of a mirrored Azure Databricks catalog from a workspace"""
949
+ return self.core_client.get_mirrored_azure_databricks_catalog_definition(workspace_id=self.id,
950
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
951
+ format=format)
952
+ def list_mirrored_azure_databricks_catalogs(self, with_properties = False):
953
+ """List mirrored Azure Databricks catalogs in a workspace"""
954
+ return self.core_client.list_mirrored_azure_databricks_catalogs(workspace_id=self.id, with_properties=with_properties)
955
+
956
+ def update_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id, display_name = None,
957
+ description = None):
958
+ """Update a mirrored Azure Databricks catalog in a workspace"""
959
+ return self.core_client.update_mirrored_azure_databricks_catalog(workspace_id=self.id,
960
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
961
+ display_name=display_name, description=description)
962
+ def update_mirrored_azure_databricks_catalog_definition(self, mirrored_azure_databricks_catalog_id, definition,
963
+ update_metadata = None):
964
+ """Update the definition of a mirrored Azure Databricks catalog in a workspace"""
965
+ return self.core_client.update_mirrored_azure_databricks_catalog_definition(workspace_id=self.id,
966
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
967
+ definition=definition, update_metadata=update_metadata)
968
+ def refresh_mirrored_azure_databricks_catalog_metadata(self, mirrored_azure_databricks_catalog_id):
969
+ """Refresh the metadata of a mirrored Azure Databricks catalog in a workspace"""
970
+ return self.core_client.refresh_mirrored_azure_databricks_catalog_metadata(workspace_id=self.id,
971
+ mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id)
972
+
973
+ def discover_mirrored_azure_databricks_catalogs(self, databricks_workspace_connection_id, max_results = None):
974
+ return self.core_client.discover_mirrored_azure_databricks_catalogs(workspace_id=self.id, databricks_workspace_connection_id=databricks_workspace_connection_id,
975
+ max_results=max_results)
976
+
977
+ def discover_mirrored_azure_databricks_catalog_schemas(self, catalog_name, databricks_workspace_connection_id, max_results = None):
978
+ return self.core_client.discover_mirrored_azure_databricks_catalog_schemas(workspace_id=self.id, catalog_name=catalog_name,
979
+ databricks_workspace_connection_id=databricks_workspace_connection_id,
980
+ max_results=max_results)
981
+ def discover_mirrored_azure_databricks_catalog_tables(self, catalog_name, schema_name, databricks_workspace_connection_id, max_results = None):
982
+ return self.core_client.discover_mirrored_azure_databricks_catalog_tables(workspace_id=self.id, catalog_name=catalog_name,
983
+ schema_name=schema_name,
984
+ databricks_workspace_connection_id=databricks_workspace_connection_id,
985
+ max_results=max_results)
986
+
864
987
  # lakehouses
865
988
  def run_on_demand_table_maintenance(self, lakehouse_id, execution_data,
866
989
  job_type = "TableMaintenance", wait_for_completion = True):
@@ -869,10 +992,10 @@ class Workspace:
869
992
  execution_data=execution_data, job_type=job_type,
870
993
  wait_for_completion=wait_for_completion)
871
994
 
872
- def create_lakehouse(self, display_name, description = None):
995
+ def create_lakehouse(self, display_name, description = None, creation_payload = None):
873
996
  """Create a lakehouse in a workspace"""
874
- return self.core_client.create_lakehouse(workspace_id=self.id, display_name=display_name, description=description)
875
-
997
+ return self.core_client.create_lakehouse(workspace_id=self.id, display_name=display_name, description=description, creation_payload=creation_payload)
998
+
876
999
  def delete_lakehouse(self, lakehouse_id):
877
1000
  """Delete a lakehouse from a workspace"""
878
1001
  return self.core_client.delete_lakehouse(workspace_id=self.id, lakehouse_id=lakehouse_id)
@@ -1260,6 +1383,12 @@ class Workspace:
1260
1383
  """Get a livy session for a spark job definition from a workspace"""
1261
1384
  return self.core_client.get_spark_job_definition_livy_session(workspace_id=self.id, spark_job_definition_id=spark_job_definition_id, livy_id=livy_id)
1262
1385
 
1386
+ # sql endpoint
1387
+ def refresh_sql_endpoint_metadata(self, sql_endpoint_id, preview = True, timeout = None, wait_for_completion = False):
1388
+ """Refresh the metadata of a sql endpoint in a workspace"""
1389
+ return self.core_client.refresh_sql_endpoint_metadata(workspace_id=self.id, sql_endpoint_id=sql_endpoint_id,
1390
+ preview=preview, timeout=timeout, wait_for_completion=wait_for_completion)
1391
+
1263
1392
  # sql databases
1264
1393
 
1265
1394
  def create_sql_database(self, display_name, description = None):
@@ -1305,6 +1434,29 @@ class Workspace:
1305
1434
  """Update a warehouse in a workspace"""
1306
1435
  return self.core_client.update_warehouse(workspace_id=self.id, warehouse_id=warehouse_id, display_name=display_name, description=description)
1307
1436
 
1437
+ def create_warehouse_snapshot(self, display_name, creation_payload, description = None, folder_id = None):
1438
+ return self.core_client.create_warehouse_snapshot(workspace_id=self.id, display_name=display_name,
1439
+ creation_payload=creation_payload, description=description,
1440
+ folder_id=folder_id)
1441
+
1442
+ def delete_warehouse_snapshot(self, warehouse_snapshot_id):
1443
+ """Delete a warehouse snapshot from a workspace"""
1444
+ return self.core_client.delete_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id)
1445
+
1446
+ def get_warehouse_snapshot(self, warehouse_snapshot_id = None, warehouse_snapshot_name = None):
1447
+ """Get a warehouse snapshot from a workspace"""
1448
+ return self.core_client.get_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id,
1449
+ warehouse_snapshot_name=warehouse_snapshot_name)
1450
+
1451
+ def list_warehouse_snapshots(self, with_properties = False):
1452
+ """List warehouse snapshots in a workspace"""
1453
+ return self.core_client.list_warehouse_snapshots(workspace_id=self.id, with_properties=with_properties)
1454
+
1455
+ def update_warehouse_snapshot(self, warehouse_snapshot_id, display_name = None, description = None):
1456
+ """Update a warehouse snapshot in a workspace"""
1457
+ return self.core_client.update_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id,
1458
+ display_name=display_name, description=description)
1459
+
1308
1460
  # variable libraries
1309
1461
 
1310
1462
  def create_variable_library(self, display_name, definition = None, description = None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: msfabricpysdkcore
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: A Python SDK for Microsoft Fabric
5
5
  Author: Andreas Rederer
6
6
  Project-URL: Homepage, https://github.com/DaSenf1860/ms-fabric-sdk-core
@@ -18,7 +18,7 @@ Dynamic: requires-dist
18
18
 
19
19
  # Python SDK for Microsoft Fabric
20
20
 
21
- This is a Python SDK for Microsoft Fabric. It is a wrapper around the REST APIs (v1) of Fabric*. It supports all Fabric REST APIs as well as Azure Resource Management APIs for Fabric (as of May 19, 2025).
21
+ This is a Python SDK for Microsoft Fabric. It is a wrapper around the REST APIs (v1) of Fabric*. It supports all Fabric REST APIs as well as Azure Resource Management APIs for Fabric (as of June 25, 2025).
22
22
 
23
23
  ![Python hugging a F](assets/fabricpythontransparent.png)
24
24
 
@@ -460,6 +460,8 @@ data_share_ids = [ds['id'] for ds in data_share_list]
460
460
 
461
461
  response_code = fc.revoke_external_data_share(workspace_id, item_id, data_share['id'])
462
462
 
463
+ # Delete
464
+ response_code = fc.delete_external_data_share(workspace_id, item_id, data_share['id'])
463
465
  ```
464
466
 
465
467
  ### External Data Shares Recipient
@@ -0,0 +1,30 @@
1
+ msfabricpysdkcore/__init__.py,sha256=ObRW5Q8IMqrvA6VH6zXSv3n01AzRCGjn5RojJXAR6VE,208
2
+ msfabricpysdkcore/admin_item.py,sha256=9L09Kb7kn7JW0bqVu1qPOMT6oHLduX4Q5_qhVJZTLxQ,3290
3
+ msfabricpysdkcore/admin_workspace.py,sha256=umNnIF8sf5Y8BDgfQdfG6sOZrQQc7RJINL9j8DPnm3c,3180
4
+ msfabricpysdkcore/adminapi.py,sha256=ldne1ML_t_o42WGwz9UNJM_qEaT9kjtmypexY3ECpZE,39930
5
+ msfabricpysdkcore/auth.py,sha256=Y9YUDqoArvkD7rLnbQvNBnCXqHJtw6PDRUHMx0CVMT0,4330
6
+ msfabricpysdkcore/capacity.py,sha256=Q_2-XrZtdf9F67fY0qU3D0ocEOGQq4KtIXAv9dXjQhI,1761
7
+ msfabricpysdkcore/client.py,sha256=KpHREbfzQRRighyJzyES3COZP3raK0C1-WhxGd07LHU,7890
8
+ msfabricpysdkcore/coreapi.py,sha256=NujzngKZcOEWUcd0ZRUouGbPeWnypmQCHNdtehKXhLk,302165
9
+ msfabricpysdkcore/deployment_pipeline.py,sha256=0yTLwSJZDSLF5LU882GuTs-_KZkMDP_k5l_GAV1nf-Y,10156
10
+ msfabricpysdkcore/domain.py,sha256=MAv7R64waQgI3OF1f5hmMdH98pJIb-BPTCZSvPZDzgU,7061
11
+ msfabricpysdkcore/environment.py,sha256=4k2Le1mAQIrfcpNc3n1DbgdCzAldGTSTCbiDQGk0DlA,2784
12
+ msfabricpysdkcore/eventstream.py,sha256=e9u16sVARI0yUktzY5oaj3R-QvJXGpP6lPH-TFzbVvU,4517
13
+ msfabricpysdkcore/fabric_azure_capacity.py,sha256=7JxMp9weiKG_mDjlRK-88oIXr0kdG0pzv-Ouycf3fus,2808
14
+ msfabricpysdkcore/fabric_azure_client.py,sha256=I7Z0Y8Xy_esQcPaXgPL7EAkQmoQkAklJO4hxk_90dno,10722
15
+ msfabricpysdkcore/folder.py,sha256=-nop7KsVr9Nha_tY1nlOwkpjzVd6QfaR2nZG7mgLcvU,2782
16
+ msfabricpysdkcore/item.py,sha256=75RphdDpMNMbF0Ajz35wkrpzmuLdoKeZiu671A-mw1E,9405
17
+ msfabricpysdkcore/job_instance.py,sha256=rtZp-OpuzfdMiQyuQLum38lgcfSZJTr3s9sECZglcWg,2389
18
+ msfabricpysdkcore/lakehouse.py,sha256=iYjj4EUJ9ylVw6f0BAguuFeHRxwSAIasFqbTlRIse7A,2081
19
+ msfabricpysdkcore/long_running_operation.py,sha256=XTlsueSZKVFICxhx99geEQ6btZFlFb8-lssigmQ9c6Y,2133
20
+ msfabricpysdkcore/onelakeshortcut.py,sha256=H02wR6Z86qTEJOwVRMKz1Ou3K88Y9pfJa91vizjprvo,1661
21
+ msfabricpysdkcore/otheritems.py,sha256=CXKobc2lqup3KOlqRp5yxYBM7Wvb0BLDe9F5iwEv1fc,26255
22
+ msfabricpysdkcore/spark_custom_pool.py,sha256=YsEULaQG-FO507aPIb-4kk93ZWBmDZj6fbOEHYoyxHE,3188
23
+ msfabricpysdkcore/workspace.py,sha256=YBkCK8MTIDdd_P2BGEh1JxkHb6jAolKEyOzH8STGAog,91984
24
+ msfabricpysdkcore/util/__init__.py,sha256=p-1dC4AurfKdIUppNVlRCIcmwHBTURqfgIwxcie3fEA,50
25
+ msfabricpysdkcore/util/logger.py,sha256=XXdeaqI-BhXZgacChKrWP88TPU4FTWvS8L0YWjCT54A,1166
26
+ msfabricpysdkcore-0.2.7.dist-info/licenses/LICENSE,sha256=1NrGuF-zOmzbwzk3iI6lsP9koyDeKO1B0-8OD_tTvOQ,1156
27
+ msfabricpysdkcore-0.2.7.dist-info/METADATA,sha256=dgK0MqK49iMDJMCU0MchNsouzY6ARAuN1SpFKvOoqy0,39852
28
+ msfabricpysdkcore-0.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ msfabricpysdkcore-0.2.7.dist-info/top_level.txt,sha256=3iRonu6ptDGQN4Yl6G76XGM7xbFNsskiEHW-P2gMQGY,18
30
+ msfabricpysdkcore-0.2.7.dist-info/RECORD,,
File without changes
@@ -1,174 +0,0 @@
1
- import unittest
2
- from dotenv import load_dotenv
3
- from msfabricpysdkcore import FabricClientAdmin
4
-
5
- load_dotenv()
6
-
7
- class TestFabricClientCore(unittest.TestCase):
8
-
9
- def __init__(self, *args, **kwargs):
10
- super(TestFabricClientCore, self).__init__(*args, **kwargs)
11
- self.fca = FabricClientAdmin()
12
-
13
- def test_admin_api(self):
14
- fca = self.fca
15
-
16
- user_id = '1dc64c6e-7a10-4ea9-8488-85d0739a377d'
17
-
18
- # List workspaces
19
- ws = fca.list_workspaces(name="testitems")[0]
20
-
21
- self.assertEqual(ws.name, "testitems")
22
-
23
- # Get workspace
24
- ws_clone = fca.get_workspace(workspace_id=ws.id)
25
-
26
- self.assertEqual(ws.id, ws_clone.id)
27
-
28
- # Discover git connections
29
-
30
- git_connections = fca.discover_git_connections()
31
-
32
- self.assertGreater(len(git_connections), 0)
33
-
34
- git_conn = [g for g in git_connections if g['workspaceId'] == '63aa9e13-4912-4abe-9156-8a56e565b7a3'][0]
35
- self.assertEqual(git_conn['gitProviderDetails']['ownerName'], 'DaSenf1860')
36
-
37
- # List workspace access details
38
-
39
- ws_access = fca.list_workspace_access_details(ws.id)
40
- principials = ws_access["accessDetails"]
41
- principials_ids = [p["principal"]["id"] for p in principials]
42
- self.assertIn(user_id, principials_ids)
43
-
44
- # Get access entities
45
-
46
- access_entities = fca.list_access_entities(user_id, type="Notebook")
47
- self.assertGreater(len(access_entities), 0)
48
-
49
- # List tenant settings
50
-
51
- settings = fca.list_tenant_settings()
52
- monitoring_setting = [setting for setting in settings if setting['settingName'] == 'PlatformMonitoringTenantSetting'][0]
53
-
54
- self.assertIsNotNone(monitoring_setting)
55
-
56
- # List tenant settings capacity overrides
57
-
58
- settings_capa = fca.list_capacities_tenant_settings_overrides()
59
- setting = [s for s in settings_capa if s['id'] == '9E7E757D-D567-4FB3-BC4F-D230AABF2A00']
60
-
61
- self.assertGreater(len(setting), 0)
62
-
63
-
64
- # List tenant settings overrides on domains
65
-
66
- domain_overrides = fca.list_domain_tenant_settings_overrides()
67
- len(domain_overrides) == 0
68
- self.assertEqual(len(domain_overrides), 0)
69
-
70
- # List tenant settings overrides on workspaces
71
-
72
- workspace_overrides = fca.list_workspace_tenant_settings_overrides()
73
- wover = [w for w in workspace_overrides if w["id"] == "192333b2-5f89-4da5-ae69-64a3ee4c649c"]
74
- self.assertIsNotNone(wover)
75
-
76
- # Update tenant settings
77
-
78
- if monitoring_setting["enabled"] == False:
79
- changed_settings = fca.update_tenant_setting("PlatformMonitoringTenantSetting", enabled=True)
80
- "tenantSettings" in changed_settings and len(changed_settings["tenantSettings"]) > 0 and changed_settings["tenantSettings"][0]["enabled"] == True
81
- else:
82
- changed_settings = fca.update_tenant_setting("PlatformMonitoringTenantSetting", enabled=False)
83
- "tenantSettings" in changed_settings and len(changed_settings["tenantSettings"]) > 0 and changed_settings["tenantSettings"][0]["enabled"] == False
84
-
85
-
86
-
87
- # Update tenant settings capacity overrides
88
-
89
-
90
- enabledSecurityGroups = [{'graphId': '73ba0244-b701-41ed-96d9-79917b74f5f8', 'name': 'fabricadmins'}]
91
- excludedSecurityGroups = [{'graphId': '16450670-829a-4b70-b80e-6524eea067cb', 'name': 'fabricuser'}]
92
- feedback = fca.update_capacity_tenant_setting_override("9e7e757d-d567-4fb3-bc4f-d230aabf2a00",
93
- "PlatformMonitoringTenantSetting",
94
- enabled=True,
95
- excluded_security_groups=excludedSecurityGroups,
96
- enabled_security_groups=enabledSecurityGroups)
97
-
98
-
99
- # List tenant settings overrides by capacity id
100
-
101
- settings_capa = fca.list_capacity_tenant_settings_overrides_by_capacity_id("9e7e757d-d567-4fb3-bc4f-d230aabf2a00")
102
- setting = [s for s in settings_capa if s['settingName'] == 'PlatformMonitoringTenantSetting']
103
-
104
- self.assertGreater(len(setting), 0)
105
-
106
- # Update tenant settings capacity overrides
107
-
108
- status_code = fca.delete_capacity_tenant_setting_override("9e7e757d-d567-4fb3-bc4f-d230aabf2a00", "PlatformMonitoringTenantSetting")
109
-
110
- self.assertEqual(status_code, 200)
111
-
112
- settings = [set for set in fca.list_capacity_tenant_settings_overrides_by_capacity_id("9e7e757d-d567-4fb3-bc4f-d230aabf2a00") if set["settingName"] == "PlatformMonitoringTenantSetting"]
113
-
114
- self.assertEqual(len(settings), 0)
115
-
116
- self.assertIn("overrides", feedback)
117
- self.assertGreater(len(feedback["overrides"]), 0)
118
- self.assertEqual(feedback["overrides"][0]["enabled"], True)
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
- # List items
127
-
128
- item_list = fca.list_items(workspace_id=ws.id)
129
- self.assertGreater(len(item_list), 0)
130
-
131
- # Get item
132
-
133
- item = fca.get_item(workspace_id=ws.id, item_id=item_list[0].id)
134
- self.assertEqual(item.id, item_list[0].id)
135
-
136
- # Get item access details
137
-
138
- item_access = fca.list_item_access_details(workspace_id=ws.id, item_id=item_list[0].id)
139
- principials = item_access["accessDetails"]
140
-
141
- principials_ids = [p["principal"]["id"] for p in principials]
142
-
143
- self.assertIn(user_id, principials_ids)
144
-
145
-
146
- def test_labels(self):
147
-
148
- fca = self.fca
149
-
150
- items = [{"id": "9cdd3192-bcd0-4cbe-b945-29f5964e7ab7", "type": "Lakehouse"}]
151
- label_id = "defa4170-0d19-0005-0007-bc88714345d2"
152
- resp = fca.bulk_set_labels(items=items, label_id=label_id)
153
- self.assertEqual(resp["itemsChangeLabelStatus"][0]["status"], "Succeeded")
154
- resp = fca.bulk_remove_labels(items=items)
155
- self.assertEqual(resp["itemsChangeLabelStatus"][0]["status"], "Succeeded")
156
-
157
- def test_admin_external_data_shares(self):
158
-
159
- fca = self.fca
160
-
161
- data_shares = fca.list_external_data_shares()
162
- ws_id = "63aa9e13-4912-4abe-9156-8a56e565b7a3"
163
-
164
- data_shares = [d for d in data_shares if d['workspaceId'] == ws_id]
165
-
166
- self.assertGreater(len(data_shares), 0)
167
- # fca.revoke_external_data_share(external_data_share_id = data_shares[0]['id'],
168
- # item_id = data_shares[0]['itemId'],
169
- # workspace_id = data_shares[0]['workspaceId'])
170
- # data_shares = fca.list_external_data_shares()
171
-
172
- # data_shares = [d for d in data_shares if d['workspaceId'] == ws_id]
173
-
174
- # self.assertEqual(data_shares[0]['status'], 'Revoked')
@@ -1,46 +0,0 @@
1
- import unittest
2
- from dotenv import load_dotenv
3
- from msfabricpysdkcore import FabricClientAdmin
4
-
5
- load_dotenv()
6
-
7
- class TestFabricClientCore(unittest.TestCase):
8
-
9
- def __init__(self, *args, **kwargs):
10
- super(TestFabricClientCore, self).__init__(*args, **kwargs)
11
- self.fca = FabricClientAdmin()
12
-
13
- def test_admin_api(self):
14
- fca = self.fca
15
-
16
- sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
17
- if len(sdk_tag) > 0:
18
- sdk_tag = sdk_tag[0]
19
- resp = fca.delete_tag(tag_id=sdk_tag["id"])
20
- self.assertEqual(resp, 200)
21
-
22
- new_tags = [{"displayName": "sdk_tag_temp"}]
23
- resp = fca.bulk_create_tags(create_tags_request=new_tags)
24
- self.assertEqual(len(resp["tags"]), 1)
25
- resp = resp["tags"][0]
26
- self.assertEqual(resp["displayName"], "sdk_tag_temp")
27
-
28
- sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
29
- self.assertEqual(len(sdk_tag), 1)
30
- sdk_tag = sdk_tag[0]
31
-
32
- self.assertIsNotNone(sdk_tag["id"])
33
-
34
- resp = fca.update_tag(tag_id=sdk_tag["id"], display_name="sdk_tag_updated")
35
- self.assertIsNotNone(resp["id"])
36
- self.assertEqual(resp["displayName"], "sdk_tag_updated")
37
-
38
-
39
- resp = fca.delete_tag(tag_id=resp["id"])
40
- self.assertEqual(resp, 200)
41
-
42
- sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
43
- self.assertEqual(len(sdk_tag), 0)
44
-
45
-
46
-