msfabricpysdkcore 0.2.1__py3-none-any.whl → 0.2.3__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 (49) hide show
  1. msfabricpysdkcore/adminapi.py +142 -2
  2. msfabricpysdkcore/coreapi.py +476 -9
  3. msfabricpysdkcore/domain.py +4 -1
  4. msfabricpysdkcore/item.py +6 -4
  5. msfabricpysdkcore/otheritems.py +93 -0
  6. msfabricpysdkcore/tests/__init__.py +0 -0
  7. msfabricpysdkcore/tests/test_admin_apis.py +174 -0
  8. msfabricpysdkcore/tests/test_connection.py +111 -0
  9. msfabricpysdkcore/tests/test_datapipelines.py +45 -0
  10. msfabricpysdkcore/tests/test_deployment_pipeline.py +63 -0
  11. msfabricpysdkcore/tests/test_domains.py +126 -0
  12. msfabricpysdkcore/tests/test_environments.py +114 -0
  13. msfabricpysdkcore/tests/test_evenhouses.py +56 -0
  14. msfabricpysdkcore/tests/test_evenstreams.py +52 -0
  15. msfabricpysdkcore/tests/test_external_data_shares.py +51 -0
  16. msfabricpysdkcore/tests/test_fabric_azure_client.py +80 -0
  17. msfabricpysdkcore/tests/test_gateways.py +99 -0
  18. msfabricpysdkcore/tests/test_git.py +66 -0
  19. msfabricpysdkcore/tests/test_graphqlapi.py +44 -0
  20. msfabricpysdkcore/tests/test_items.py +97 -0
  21. msfabricpysdkcore/tests/test_jobs.py +96 -0
  22. msfabricpysdkcore/tests/test_kql_dashboards.py +63 -0
  23. msfabricpysdkcore/tests/test_kql_queryset.py +64 -0
  24. msfabricpysdkcore/tests/test_kqldatabases.py +56 -0
  25. msfabricpysdkcore/tests/test_lakehouse.py +93 -0
  26. msfabricpysdkcore/tests/test_managed_private_endpoints.py +61 -0
  27. msfabricpysdkcore/tests/test_mirroreddatabases.py +80 -0
  28. msfabricpysdkcore/tests/test_ml_experiments.py +47 -0
  29. msfabricpysdkcore/tests/test_ml_models.py +47 -0
  30. msfabricpysdkcore/tests/test_mounted_adf.py +64 -0
  31. msfabricpysdkcore/tests/test_notebooks.py +57 -0
  32. msfabricpysdkcore/tests/test_one_lake_data_access_security.py +63 -0
  33. msfabricpysdkcore/tests/test_other_items.py +45 -0
  34. msfabricpysdkcore/tests/test_reflex.py +57 -0
  35. msfabricpysdkcore/tests/test_reports.py +56 -0
  36. msfabricpysdkcore/tests/test_semantic_model.py +56 -0
  37. msfabricpysdkcore/tests/test_shortcuts.py +60 -0
  38. msfabricpysdkcore/tests/test_spark.py +91 -0
  39. msfabricpysdkcore/tests/test_sparkjobdefinition.py +55 -0
  40. msfabricpysdkcore/tests/test_sqldatabases.py +45 -0
  41. msfabricpysdkcore/tests/test_warehouses.py +50 -0
  42. msfabricpysdkcore/tests/test_workspaces_capacities.py +159 -0
  43. msfabricpysdkcore/workspace.py +149 -5
  44. {msfabricpysdkcore-0.2.1.dist-info → msfabricpysdkcore-0.2.3.dist-info}/METADATA +33 -6
  45. msfabricpysdkcore-0.2.3.dist-info/RECORD +65 -0
  46. {msfabricpysdkcore-0.2.1.dist-info → msfabricpysdkcore-0.2.3.dist-info}/WHEEL +1 -1
  47. msfabricpysdkcore-0.2.1.dist-info/RECORD +0 -28
  48. {msfabricpysdkcore-0.2.1.dist-info → msfabricpysdkcore-0.2.3.dist-info/licenses}/LICENSE +0 -0
  49. {msfabricpysdkcore-0.2.1.dist-info → msfabricpysdkcore-0.2.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,159 @@
1
+ import unittest
2
+ from dotenv import load_dotenv
3
+ from datetime import datetime
4
+ from msfabricpysdkcore.coreapi import FabricClientCore
5
+
6
+ load_dotenv()
7
+
8
+ class TestFabricClientCore(unittest.TestCase):
9
+
10
+ def __init__(self, *args, **kwargs):
11
+ super(TestFabricClientCore, self).__init__(*args, **kwargs)
12
+ self.fc = FabricClientCore()
13
+
14
+
15
+ def test_end_to_end_workspace(self):
16
+ fc = self.fc
17
+ datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
18
+ display_name = "testws" + datetime_str
19
+
20
+ datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
21
+ workspace_name_new = "newws" + datetime_str
22
+ ws_created = fc.create_workspace(display_name=display_name,
23
+ description="test workspace",
24
+ exists_ok=False)
25
+ # Add assertions here to verify the result
26
+ self.assertEqual(ws_created.display_name, display_name)
27
+ workspace_id = ws_created.id
28
+ ws = fc.get_workspace_by_id(id = workspace_id)
29
+ self.assertEqual(ws.display_name, display_name)
30
+ self.assertEqual(ws.description, "test workspace")
31
+
32
+ # def test_assign_to_capacity(self):
33
+
34
+ result_status_code = fc.assign_to_capacity(workspace_id=ws.id,
35
+ capacity_id="840a6c1e-5289-4094-bbc8-716daabaeeba")
36
+ self.assertEqual(result_status_code, 202)
37
+
38
+
39
+ # def test_list_workspaces(self):
40
+
41
+ result = fc.list_workspaces()
42
+ display_names = [ws.display_name for ws in result]
43
+ self.assertIn(display_name, display_names)
44
+
45
+ for ws in result:
46
+ if ws.display_name == display_name:
47
+ self.assertEqual(ws.capacity_id, "840a6c1e-5289-4094-bbc8-716daabaeeba")
48
+
49
+
50
+ # def test_get_workspace_by_name(self):
51
+
52
+ workspace_name = display_name
53
+ ws = fc.get_workspace_by_name(name = workspace_name)
54
+ self.assertEqual(ws.display_name, display_name)
55
+
56
+ # def test_get_workspace_by_id(self):
57
+ ws = fc.get_workspace_by_id(id = workspace_id)
58
+ self.assertEqual(display_name, ws.display_name)
59
+
60
+
61
+ # def test_get_workspace(self):
62
+ result = fc.get_workspace_by_id(id = workspace_id)
63
+ self.assertEqual(result.display_name, display_name)
64
+
65
+ # def test_add_role_assignment(self):
66
+ result_status = fc.add_workspace_role_assignment(workspace_id = ws.id,
67
+ principal = {"id" : "755f273c-98f8-408c-a886-691794938bd8",
68
+ "type" : "ServicePrincipal"},
69
+ role = 'Member')
70
+
71
+ self.assertEqual(result_status, 201)
72
+
73
+ # def test_get_workspace_role_assignments(self):
74
+ result = fc.list_workspace_role_assignments(workspace_id = ws.id)
75
+ self.assertTrue(len(result) == 2)
76
+ for user in result:
77
+ if user["principal"]["displayName"] == "fabrictestuser":
78
+ self.assertEqual(user["role"], "Member")
79
+
80
+ # Get get_workspace_role_assignment
81
+
82
+ result = fc.get_workspace_role_assignment(workspace_id = ws.id,
83
+ workspace_role_assignment_id = "755f273c-98f8-408c-a886-691794938bd8")
84
+
85
+ self.assertEqual(result["role"], "Member")
86
+
87
+ # def test_update_workspace_role_assignment(self):
88
+
89
+ result_status_code = fc.update_workspace_role_assignment(workspace_id = ws.id,
90
+ role = "Contributor",
91
+ workspace_role_assignment_id= "755f273c-98f8-408c-a886-691794938bd8")
92
+
93
+ self.assertEqual(result_status_code, 200)
94
+
95
+ result = fc.list_workspace_role_assignments(workspace_id = ws.id)
96
+ self.assertTrue(len(result) == 2)
97
+ for user in result:
98
+ if user["principal"]["displayName"] == "fabrictestuser":
99
+ self.assertTrue(user["role"] == "Contributor")
100
+
101
+ # def test_delete_role_assignment(self):
102
+ result_status_code = fc.delete_workspace_role_assignment(workspace_id = ws.id,
103
+ workspace_role_assignment_id = "755f273c-98f8-408c-a886-691794938bd8")
104
+ self.assertEqual(result_status_code, 200)
105
+
106
+ # def test_get_workspace_role_assignments(self):
107
+ result = fc.list_workspace_role_assignments(workspace_id = ws.id)
108
+ self.assertTrue(len(result) == 1)
109
+ user = result[0]
110
+ # self.assertTrue(user["principal"]["displayName"] == "fabricapi")
111
+ self.assertTrue(user["role"] == "Admin")
112
+
113
+ # def test_update_workspace(self):
114
+ ws_updated = fc.update_workspace(workspace_id=ws.id,
115
+ display_name=workspace_name_new,
116
+ description="new description")
117
+ self.assertEqual(ws_updated.display_name, workspace_name_new)
118
+ self.assertEqual(ws_updated.description, "new description")
119
+ ws = fc.get_workspace_by_id(id = ws.id)
120
+ self.assertEqual(ws.display_name, workspace_name_new)
121
+ self.assertEqual(ws.description, "new description")
122
+
123
+ # def test_unassign_from_capacity(self):
124
+
125
+ result_status_code = fc.unassign_from_capacity(workspace_id=ws.id)
126
+ self.assertEqual(result_status_code, 202)
127
+ ws = fc.get_workspace_by_id(ws.id)
128
+ self.assertEqual(ws.capacity_id, None)
129
+
130
+ # result = fc.provision_identity(workspace_id=ws.id)
131
+ # self.assertIsNotNone(result["applicationId"])
132
+ # fc.deprovision_identity(workspace_id=ws.id)
133
+
134
+
135
+
136
+ # def test_delete_workspace(self):
137
+ result_status = fc.delete_workspace(display_name=workspace_name_new)
138
+ self.assertEqual(result_status, 200)
139
+
140
+ def test_list_capacities(self):
141
+ result = self.fc.list_capacities()
142
+ self.assertTrue(len(result) > 0)
143
+ cap_ids = [cap.id for cap in result]
144
+ self.assertIn("c861242b-c4ac-4e3a-9a21-13f65d9b17b2", cap_ids)
145
+
146
+ def test_get_capacity(self):
147
+ capacity = self.fc.get_capacity(capacity_id = "c861242b-c4ac-4e3a-9a21-13f65d9b17b2")
148
+ self.assertEqual(capacity.id, "c861242b-c4ac-4e3a-9a21-13f65d9b17b2")
149
+
150
+ cap = self.fc.get_capacity(capacity_name= capacity.display_name)
151
+
152
+ self.assertEqual(capacity.id, cap.id)
153
+ self.assertIsNotNone(cap.state)
154
+ self.assertIsNotNone(cap.sku)
155
+ self.assertIsNotNone(cap.region)
156
+
157
+
158
+ if __name__ == "__main__":
159
+ unittest.main()
@@ -233,6 +233,9 @@ class Workspace:
233
233
  def list_shortcuts(self, item_id, parent_path = None):
234
234
  return self.core_client.list_shortcuts(self.id, item_id, parent_path=parent_path)
235
235
 
236
+ def reset_shortcut_cache(self, wait_for_completion = False):
237
+ return self.core_client.reset_shortcut_cache(self.id, wait_for_completion=wait_for_completion)
238
+
236
239
  def cancel_item_job_instance(self, item_id, job_instance_id):
237
240
  return self.core_client.cancel_item_job_instance(workspace_id=self.id, item_id=item_id,
238
241
  job_instance_id=job_instance_id)
@@ -439,6 +442,10 @@ class Workspace:
439
442
  return self.core_client.get_eventhouse(workspace_id=self.id, eventhouse_id=eventhouse_id,
440
443
  eventhouse_name=eventhouse_name)
441
444
 
445
+ def get_eventhouse_definition(self, eventhouse_id, format = None):
446
+ """Get the definition of an eventhouse from a workspace"""
447
+ return self.core_client.get_eventhouse_definition(workspace_id=self.id, eventhouse_id=eventhouse_id, format=format)
448
+
442
449
  def delete_eventhouse(self, eventhouse_id):
443
450
  """Delete an eventhouse from a workspace"""
444
451
  return self.core_client.delete_eventhouse(workspace_id=self.id, eventhouse_id=eventhouse_id)
@@ -448,6 +455,11 @@ class Workspace:
448
455
  return self.core_client.update_eventhouse(workspace_id=self.id, eventhouse_id=eventhouse_id,
449
456
  display_name=display_name, description=description)
450
457
 
458
+ def update_eventhouse_definition(self, eventhouse_id, definition, update_metadata = None):
459
+ """Update the definition of an eventhouse in a workspace"""
460
+ return self.core_client.update_eventhouse_definition(workspace_id=self.id, eventhouse_id=eventhouse_id,
461
+ definition=definition, update_metadata=update_metadata)
462
+
451
463
  # eventstreams
452
464
 
453
465
 
@@ -462,6 +474,10 @@ class Workspace:
462
474
  def get_eventstream(self, eventstream_id = None, eventstream_name = None):
463
475
  return self.core_client.get_eventstream(workspace_id=self.id, eventstream_id=eventstream_id, eventstream_name=eventstream_name)
464
476
 
477
+ def get_eventstream_definition(self, eventstream_id, format = None):
478
+ """Get the definition of an eventstream from a workspace"""
479
+ return self.core_client.get_eventstream_definition(workspace_id=self.id, eventstream_id=eventstream_id, format=format)
480
+
465
481
  def list_eventstreams(self, with_properties = False):
466
482
  """List eventstreams in a workspace"""
467
483
  return self.core_client.list_eventstreams(workspace_id=self.id, with_properties=with_properties)
@@ -471,6 +487,34 @@ class Workspace:
471
487
  return self.core_client.update_eventstream(workspace_id=self.id, eventstream_id=eventstream_id,
472
488
  display_name=display_name, description=description)
473
489
 
490
+ def update_eventstream_definition(self, eventstream_id, definition, update_metadata = None):
491
+ """Update the definition of an eventstream in a workspace"""
492
+ return self.core_client.update_eventstream_definition(workspace_id=self.id, eventstream_id=eventstream_id,
493
+ definition=definition, update_metadata=update_metadata)
494
+
495
+ # graphQLapis
496
+
497
+ def create_graphql_api(self, display_name, description = None):
498
+ """Create a graphQL api in a workspace"""
499
+ return self.core_client.create_graphql_api(workspace_id=self.id, display_name=display_name, description=description)
500
+
501
+ def delete_graphql_api(self, graphql_api_id):
502
+ """Delete a graphQL api from a workspace"""
503
+ return self.core_client.delete_graphql_api(workspace_id=self.id, graphql_api_id=graphql_api_id)
504
+
505
+ def get_graphql_api(self, graphql_api_id = None, graphql_api_name = None):
506
+ """Get a graphQL api from a workspace"""
507
+ return self.core_client.get_graphql_api(workspace_id=self.id, graphql_api_id=graphql_api_id, graphql_api_name=graphql_api_name)
508
+
509
+ def list_graphql_apis(self, with_properties = False):
510
+ """List graphQL apis in a workspace"""
511
+ return self.core_client.list_graphql_apis(workspace_id=self.id, with_properties=with_properties)
512
+
513
+ def update_graphql_api(self, graphql_api_id, display_name = None, description = None):
514
+ """Update a graphQL api in a workspace"""
515
+ return self.core_client.update_graphql_api(workspace_id=self.id, graphql_api_id=graphql_api_id,
516
+ display_name=display_name, description=description)
517
+
474
518
  # kqlDashboards
475
519
 
476
520
  def create_kql_dashboard(self, display_name, description = None):
@@ -520,7 +564,10 @@ class Workspace:
520
564
  return self.core_client.get_kql_database(workspace_id=self.id, kql_database_id=kql_database_id,
521
565
  kql_database_name=kql_database_name)
522
566
 
523
-
567
+ def get_kql_database_definition(self, kql_database_id, format = None):
568
+ """Get the definition of a kql database from a workspace"""
569
+ return self.core_client.get_kql_database_definition(workspace_id=self.id, kql_database_id=kql_database_id, format=format)
570
+
524
571
  def list_kql_databases(self, with_properties = False):
525
572
  """List kql databases in a workspace"""
526
573
  return self.core_client.list_kql_databases(workspace_id=self.id, with_properties=with_properties)
@@ -530,6 +577,11 @@ class Workspace:
530
577
  return self.core_client.update_kql_database(workspace_id=self.id, kql_database_id=kql_database_id,
531
578
  display_name=display_name, description=description)
532
579
 
580
+ def update_kql_database_definition(self, kql_database_id, definition, update_metadata = None):
581
+ """Update the definition of a kql database in a workspace"""
582
+ return self.core_client.update_kql_database_definition(workspace_id=self.id, kql_database_id=kql_database_id,
583
+ definition=definition, update_metadata=update_metadata)
584
+
533
585
  # kqlQuerysets
534
586
 
535
587
  def create_kql_queryset(self, display_name, description = None, definition = None):
@@ -689,6 +741,40 @@ class Workspace:
689
741
  """Update an ml model in a workspace"""
690
742
  return self.core_client.update_ml_model(workspace_id=self.id, ml_model_id=ml_model_id, display_name=display_name, description=description)
691
743
 
744
+ # mounted data factory
745
+
746
+ def create_mounted_data_factory(self, display_name, description = None, definition = None):
747
+ """Create a mounted data factory in a workspace"""
748
+ return self.core_client.create_mounted_data_factory(workspace_id=self.id, display_name=display_name,
749
+ description=description, definition=definition)
750
+
751
+ def delete_mounted_data_factory(self, mounted_data_factory_id):
752
+ """Delete a mounted data factory from a workspace"""
753
+ return self.core_client.delete_mounted_data_factory(workspace_id=self.id, mounted_data_factory_id=mounted_data_factory_id)
754
+
755
+ def get_mounted_data_factory(self, mounted_data_factory_id = None, mounted_data_factory_name = None):
756
+ """Get a mounted data factory from a workspace"""
757
+ return self.core_client.get_mounted_data_factory(workspace_id=self.id, mounted_data_factory_id=mounted_data_factory_id,
758
+ mounted_data_factory_name=mounted_data_factory_name)
759
+
760
+ def get_mounted_data_factory_definition(self, mounted_data_factory_id, format = None):
761
+ """Get the definition of a mounted data factory from a workspace"""
762
+ return self.core_client.get_mounted_data_factory_definition(workspace_id=self.id, mounted_data_factory_id=mounted_data_factory_id, format=format)
763
+
764
+ def list_mounted_data_factories(self, with_properties = False):
765
+ """List mounted data factories in a workspace"""
766
+ return self.core_client.list_mounted_data_factories(workspace_id=self.id, with_properties=with_properties)
767
+
768
+ def update_mounted_data_factory(self, mounted_data_factory_id, display_name = None, description = None):
769
+ """Update a mounted data factory in a workspace"""
770
+ return self.core_client.update_mounted_data_factory(workspace_id=self.id, mounted_data_factory_id=mounted_data_factory_id,
771
+ display_name=display_name, description=description)
772
+
773
+ def update_mounted_data_factory_definition(self, mounted_data_factory_id, definition, update_metadata = None):
774
+ """Update the definition of a mounted data factory in a workspace"""
775
+ return self.core_client.update_mounted_data_factory_definition(workspace_id=self.id, mounted_data_factory_id=mounted_data_factory_id, definition=definition,
776
+ update_metadata=update_metadata)
777
+
692
778
  # notebooks
693
779
 
694
780
  def create_notebook(self, display_name, definition = None, description = None):
@@ -729,21 +815,52 @@ class Workspace:
729
815
  return self.core_client.update_paginated_report(workspace_id=self.id, paginated_report_id=paginated_report_id,
730
816
  display_name=display_name, description=description)
731
817
 
818
+ # reflex
819
+
820
+ def create_reflex(self, display_name, description = None):
821
+ """Create a reflex in a workspace"""
822
+ return self.core_client.create_reflex(workspace_id=self.id, display_name=display_name, description=description)
823
+
824
+ def delete_reflex(self, reflex_id):
825
+ """Delete a reflex from a workspace"""
826
+ return self.core_client.delete_reflex(workspace_id=self.id, reflex_id=reflex_id)
827
+
828
+ def get_reflex(self, reflex_id = None, reflex_name = None):
829
+ """Get a reflex from a workspace"""
830
+ return self.core_client.get_reflex(workspace_id=self.id, reflex_id=reflex_id, reflex_name=reflex_name)
831
+
832
+ def get_reflex_definition(self, reflex_id, format = None):
833
+ """Get the definition of a reflex from a workspace"""
834
+ return self.core_client.get_reflex_definition(workspace_id=self.id, reflex_id=reflex_id, format=format)
835
+
836
+ def list_reflexes(self, with_properties = False):
837
+ """List reflexes in a workspace"""
838
+ return self.core_client.list_reflexes(workspace_id=self.id, with_properties=with_properties)
839
+
840
+ def update_reflex(self, reflex_id, display_name = None, description = None):
841
+ """Update a reflex in a workspace"""
842
+ return self.core_client.update_reflex(workspace_id=self.id, reflex_id=reflex_id, display_name=display_name, description=description)
843
+
844
+ def update_reflex_definition(self, reflex_id, definition, update_metadata = None):
845
+ """Update the definition of a reflex in a workspace"""
846
+ return self.core_client.update_reflex_definition(workspace_id=self.id, reflex_id=reflex_id, definition=definition,
847
+ update_metadata=update_metadata)
848
+
849
+
732
850
  # reports
733
851
 
734
852
  def create_report(self, display_name, definition = None, description = None):
735
853
  """Create a report in a workspace"""
736
854
  return self.core_client.create_report(workspace_id=self.id, display_name=display_name,
737
855
  definition=definition, description=description)
856
+ def delete_report(self, report_id):
857
+ """Delete a report from a workspace"""
858
+ return self.core_client.delete_report(workspace_id=self.id, report_id=report_id)
738
859
 
739
860
  def get_report(self, report_id = None, report_name = None):
740
861
  """Get a report from a workspace"""
741
862
  return self.core_client.get_report(workspace_id=self.id, report_id=report_id, report_name=report_name)
742
863
 
743
- def delete_report(self, report_id):
744
- """Delete a report from a workspace"""
745
- return self.core_client.delete_report(workspace_id=self.id, report_id=report_id)
746
-
747
864
  def get_report_definition(self, report_id, format = None):
748
865
  """Get the definition of a report from a workspace"""
749
866
  return self.core_client.get_report_definition(workspace_id=self.id, report_id=report_id, format=format)
@@ -752,6 +869,10 @@ class Workspace:
752
869
  """List reports in a workspace"""
753
870
  return self.core_client.list_reports(workspace_id=self.id, with_properties=with_properties)
754
871
 
872
+ def update_report(self, report_id, display_name = None, description = None):
873
+ """Update a report in a workspace"""
874
+ return self.core_client.update_report(workspace_id=self.id, report_id=report_id, display_name=display_name, description=description)
875
+
755
876
  def update_report_definition(self, report_id, definition):
756
877
  """Update the definition of a report in a workspace"""
757
878
  return self.core_client.update_report_definition(workspace_id=self.id, report_id=report_id, definition=definition)
@@ -864,6 +985,29 @@ class Workspace:
864
985
  """Run on demand spark job definition"""
865
986
  return self.core_client.run_on_demand_spark_job_definition(workspace_id=self.id, spark_job_definition_id=spark_job_definition_id, job_type=job_type)
866
987
 
988
+ # sql databases
989
+
990
+ def create_sql_database(self, display_name, description = None):
991
+ """Create a sql database in a workspace"""
992
+ return self.core_client.create_sql_database(workspace_id=self.id, display_name=display_name, description=description)
993
+
994
+ def delete_sql_database(self, sql_database_id):
995
+ """Delete a sql database from a workspace"""
996
+ return self.core_client.delete_sql_database(workspace_id=self.id, sql_database_id=sql_database_id)
997
+
998
+ def get_sql_database(self, sql_database_id = None, sql_database_name = None):
999
+ """Get a sql database from a workspace"""
1000
+ return self.core_client.get_sql_database(workspace_id=self.id, sql_database_id=sql_database_id, sql_database_name=sql_database_name)
1001
+
1002
+ def list_sql_databases(self, with_properties = False):
1003
+ """List sql databases in a workspace"""
1004
+ return self.core_client.list_sql_databases(workspace_id=self.id, with_properties=with_properties)
1005
+
1006
+ def update_sql_database(self, sql_database_id, display_name = None, description = None):
1007
+ """Update a sql database in a workspace"""
1008
+ return self.core_client.update_sql_database(workspace_id=self.id, sql_database_id=sql_database_id,
1009
+ display_name=display_name, description=description)
1010
+
867
1011
  # warehouses
868
1012
 
869
1013
  def list_warehouses(self, with_properties = False):
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: msfabricpysdkcore
3
- Version: 0.2.1
3
+ Version: 0.2.3
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
@@ -13,10 +13,12 @@ License-File: LICENSE
13
13
  Requires-Dist: requests>=2.30.0
14
14
  Requires-Dist: azure-identity>=1.15.0
15
15
  Requires-Dist: msal>=1.28.0
16
+ Dynamic: license-file
17
+ Dynamic: requires-dist
16
18
 
17
19
  # Python SDK for Microsoft Fabric
18
20
 
19
- 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 July 23, 2024).
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 March 06, 2025).
20
22
 
21
23
  ![Python hugging a F](assets/fabricpythontransparent.png)
22
24
 
@@ -460,6 +462,9 @@ gw = fc.create_gateway(gateway_request=gwr)
460
462
  # Delete gateway
461
463
  resp_code = fc.delete_gateway(gateway_id= "gateway_id")
462
464
 
465
+ # Delete gatewway member
466
+ resp_code = fc.delete_gateway_member(gateway_id= "gateway_id", gateway_member_id= "gateway_member_id")
467
+
463
468
  # Delete gateway role assignment
464
469
  resp_code = fc.delete_gateway_role_assignment(gateway_id=gw['id'], gateway_role_assignment_id=new_ras['id'])
465
470
 
@@ -631,6 +636,9 @@ ws.list_shortcuts(item_id="item_id",
631
636
  # or
632
637
  item.list_shortcuts(parent_path="Tables")
633
638
 
639
+ # Reset shortcut cache
640
+ fc.reset_shortcut_cache(workspace_id="23232", wait_for_completion = False)
641
+
634
642
  ```
635
643
 
636
644
 
@@ -821,14 +829,33 @@ from msfabricpysdkcore import FabricClientAdmin
821
829
 
822
830
  fca = FabricClientAdmin()
823
831
 
824
- # Get tenant settings
825
-
832
+ # List tenant settings
826
833
  tenant_settings = fca.list_tenant_settings()
827
834
 
828
835
  # Get capacity tenant settings overrides
829
-
830
836
  overrides = fca.list_capacities_tenant_settings_overrides()
831
837
 
838
+ # Get domain tenant settings overrides
839
+ overrides = fca.list_domain_tenant_settings_overrides()
840
+
841
+ # Get workspace tenant settings overrides
842
+ overrides = fca.list_workspace_tenant_settings_overrides()
843
+
844
+ # Get capacity tenant settings overrides by capacity id
845
+ overrides = fca.list_capacity_tenant_settings_overrides_by_capacity_id(capacity_id="adsfasdfasf")
846
+
847
+ # Update tenant setting
848
+ fc.update_tenant_setting(tenant_setting_name = "PlatformMonitoringTenantSetting", enabled = True, delegate_to_capacity = None, delegate_to_domain = None,
849
+ delegate_to_workspace = None, enabled_security_groups = None, excluded_security_groups = None, properties = None)
850
+
851
+ # Update capacity tenant setting override
852
+ fc.update_capacity_tenant_setting_override(capacity_id = "capacity_id", tenant_setting_name = "PlatformMonitoringTenantSetting", enabled = True, delegate_to_workspace = None,
853
+ enabled_security_groups = None, excluded_security_groups = None)
854
+
855
+
856
+ # Delete capacity tenant setting override
857
+ fc.delete_capacity_tenant_setting_override(capacity_id = "capacity_id", tenant_setting_name = "PlatformMonitoringTenantSetting")
858
+
832
859
  ```
833
860
 
834
861
  ### Admin API for Items
@@ -0,0 +1,65 @@
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=eJNI9BiMl93ms60APGZSKK8OGZF-0XFWdsTW4vooyUM,35341
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=GW-dIiNZIj2S9-49Sej2HgpubSToIqj1THAlWoDP9xE,200762
9
+ msfabricpysdkcore/deployment_pipeline.py,sha256=2d7BqRPgfBiAlQOP4UfYLmFMM8xonSjPkJKhevIKGEY,5756
10
+ msfabricpysdkcore/domain.py,sha256=MAv7R64waQgI3OF1f5hmMdH98pJIb-BPTCZSvPZDzgU,7061
11
+ msfabricpysdkcore/environment.py,sha256=4k2Le1mAQIrfcpNc3n1DbgdCzAldGTSTCbiDQGk0DlA,2784
12
+ msfabricpysdkcore/fabric_azure_capacity.py,sha256=7JxMp9weiKG_mDjlRK-88oIXr0kdG0pzv-Ouycf3fus,2808
13
+ msfabricpysdkcore/fabric_azure_client.py,sha256=I7Z0Y8Xy_esQcPaXgPL7EAkQmoQkAklJO4hxk_90dno,10722
14
+ msfabricpysdkcore/item.py,sha256=37M_hWZ3AHLhifO0I1wj7nYStQQ14JpHfe5SBxQyicY,8992
15
+ msfabricpysdkcore/job_instance.py,sha256=rtZp-OpuzfdMiQyuQLum38lgcfSZJTr3s9sECZglcWg,2389
16
+ msfabricpysdkcore/lakehouse.py,sha256=yIrzatWM9emPn-Y54Cg_ZdAydIWjxrpK65jIQ4SClgE,1703
17
+ msfabricpysdkcore/long_running_operation.py,sha256=XTlsueSZKVFICxhx99geEQ6btZFlFb8-lssigmQ9c6Y,2133
18
+ msfabricpysdkcore/onelakeshortcut.py,sha256=H02wR6Z86qTEJOwVRMKz1Ou3K88Y9pfJa91vizjprvo,1661
19
+ msfabricpysdkcore/otheritems.py,sha256=r6YalCheej8R0vmM50kMAtsRshdaWJ3R7bsMzRXheUk,20848
20
+ msfabricpysdkcore/spark_custom_pool.py,sha256=YsEULaQG-FO507aPIb-4kk93ZWBmDZj6fbOEHYoyxHE,3188
21
+ msfabricpysdkcore/workspace.py,sha256=22FfhDW3afUIXs7yeVnSVjLoPfbHZXrAnEcV5CcFx8o,59432
22
+ msfabricpysdkcore/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ msfabricpysdkcore/tests/test_admin_apis.py,sha256=J3LmrQkGtgBcVf7ScmuNDvpLSJjMAO3sXKkmowF_HNk,6852
24
+ msfabricpysdkcore/tests/test_connection.py,sha256=jmwvRwfp81-a3eHjC_rBFgBJJihZ63qXVdfilTaxHYw,4491
25
+ msfabricpysdkcore/tests/test_datapipelines.py,sha256=OcqudrkR9XD0ce8by2EMoAILplH5OG2P7l-u6Fpmllw,1774
26
+ msfabricpysdkcore/tests/test_deployment_pipeline.py,sha256=J7szEWrw26U91O6hSooUAJ2eNorDo-x55lPgr00J-gU,2072
27
+ msfabricpysdkcore/tests/test_domains.py,sha256=KQIzziiQcnNjrgUlV8Ei_HT41LwaJCI5AnWsIHmEQxI,4711
28
+ msfabricpysdkcore/tests/test_environments.py,sha256=EDyS-pbLVI5AVEq0_JklpDe5lc_tdsPAPf1n4Gm3rbo,5132
29
+ msfabricpysdkcore/tests/test_evenhouses.py,sha256=xl9AWV4-H69IwHvrzoF4T_mDNuaUsVoRAI5171tIPcg,2283
30
+ msfabricpysdkcore/tests/test_evenstreams.py,sha256=nTvDwhkuHewkjETDK3hk2KjbFBfOCWiBTGStoiXSiYk,2013
31
+ msfabricpysdkcore/tests/test_external_data_shares.py,sha256=YqFiVFSWhVW7pLc0DC6Em4GFOGkok2Gezk8llPOtsv0,1550
32
+ msfabricpysdkcore/tests/test_fabric_azure_client.py,sha256=_dTc3vLILwXstvDs3TUFg3aCY-14CiI4cZ5-EdEtqJY,3099
33
+ msfabricpysdkcore/tests/test_gateways.py,sha256=xR5kpgxeW_PmTvcRdUITNCRGMJCgJTQfN9GGeY6bvuE,3685
34
+ msfabricpysdkcore/tests/test_git.py,sha256=KIME3KzqnDNmmsg4M4GhhDqeVqeMXy4iVA6MJOOmrlE,2567
35
+ msfabricpysdkcore/tests/test_graphqlapi.py,sha256=NGAIfh0GjAtgKybTNCgHa2Fs2AwR34_pP6QGAgJ7Wpw,1633
36
+ msfabricpysdkcore/tests/test_items.py,sha256=84bnWyyTzvTzrEQ3Vz17AHZjo7ZvovY-zMDHO6za6g0,4546
37
+ msfabricpysdkcore/tests/test_jobs.py,sha256=wa7RiqExvZddW425beSZ5yy9zmWHlgTfRUrEySmrfDs,4086
38
+ msfabricpysdkcore/tests/test_kql_dashboards.py,sha256=w1_MiVEVfGsDkSIt3BTnUHxY5iFzfAHQcAuC6Qnzlzs,2377
39
+ msfabricpysdkcore/tests/test_kql_queryset.py,sha256=KqIz8oxq-i394r-ezKqYiWCPvls_REfj3XKVXfopGx8,2606
40
+ msfabricpysdkcore/tests/test_kqldatabases.py,sha256=dPAerTpTrFNrbSQqSv-Y745TR-Dku33CNvm202T8P28,2372
41
+ msfabricpysdkcore/tests/test_lakehouse.py,sha256=OqeDjeyszMdzq6yiNZ0zFLOACqJLCCdEy5gsG0aw6PE,3805
42
+ msfabricpysdkcore/tests/test_managed_private_endpoints.py,sha256=prd3FbH1Z0o0BC26NpzZmy8yCTOCHiL45MLhTcYY0dQ,3167
43
+ msfabricpysdkcore/tests/test_mirroreddatabases.py,sha256=b0KjReoJ9U3tTbtmhtV2Vk9zatBR10cmpOg4Omuj5EU,3686
44
+ msfabricpysdkcore/tests/test_ml_experiments.py,sha256=UJIQitJdUDRlmAmF2jdXuFPYvp8BsrpDyI2opyIBt8I,1897
45
+ msfabricpysdkcore/tests/test_ml_models.py,sha256=AilbnYXb9rTUZW5sPJ0HqFZxB5fkTb0t_qnRW1NhO_E,1723
46
+ msfabricpysdkcore/tests/test_mounted_adf.py,sha256=4TPUvAiRR4yDCNdWr9a554ajLkIvZwB3Wx08chOqzp8,3409
47
+ msfabricpysdkcore/tests/test_notebooks.py,sha256=usk99tftcJb-3m8rjmpiFOD5Dqp3dd4e7RFEeUMkX7c,2280
48
+ msfabricpysdkcore/tests/test_one_lake_data_access_security.py,sha256=eto_F6oBRqggGgWVHQ52mB6D2G-Qr-y74Sx308aJDqc,2297
49
+ msfabricpysdkcore/tests/test_other_items.py,sha256=rGyL7QCn9Y_k_NIyctIIxwujtM5_MeMKJ3g6gU1CWM4,1772
50
+ msfabricpysdkcore/tests/test_reflex.py,sha256=TDP1UccImfr7cSJeYmwJNX4xJV1SD-DxIJaqzyCsn9Q,2023
51
+ msfabricpysdkcore/tests/test_reports.py,sha256=Wu0VqArrUxuCs6l1zCcNyb8TGjrdzg-yGiRjXjThjTM,2093
52
+ msfabricpysdkcore/tests/test_semantic_model.py,sha256=AKQk0BBjMBs0j6sR8B_NE66OW2woTHkGlOaXARn34_U,2477
53
+ msfabricpysdkcore/tests/test_shortcuts.py,sha256=1ANIi8PCZCLDR2yFE0MyZvGIUxS-aJR9SsWgFl2ipoA,2622
54
+ msfabricpysdkcore/tests/test_spark.py,sha256=faoVF3AuUCyfk2PvVccPngafyAkhq2SAj87KmESUwx0,3546
55
+ msfabricpysdkcore/tests/test_sparkjobdefinition.py,sha256=SANfiOLgwKRGnQN9ArEwv0fyXM12glEn9BG4jIL4W-c,2838
56
+ msfabricpysdkcore/tests/test_sqldatabases.py,sha256=aFH-JLHKASGiIqz14wGpHfBMp_5OMZ3x_Upd_O0A2f0,1642
57
+ msfabricpysdkcore/tests/test_warehouses.py,sha256=CKF2kJMe-JSOWWok3dR_hn5HNwz9GtKoYT4fP59mTPk,1813
58
+ msfabricpysdkcore/tests/test_workspaces_capacities.py,sha256=V5ePndbtLVyYNa8Kug1Ul0oOF-Jd6DXEl8PclgfLhuw,6822
59
+ msfabricpysdkcore/util/__init__.py,sha256=p-1dC4AurfKdIUppNVlRCIcmwHBTURqfgIwxcie3fEA,50
60
+ msfabricpysdkcore/util/logger.py,sha256=XXdeaqI-BhXZgacChKrWP88TPU4FTWvS8L0YWjCT54A,1166
61
+ msfabricpysdkcore-0.2.3.dist-info/licenses/LICENSE,sha256=1NrGuF-zOmzbwzk3iI6lsP9koyDeKO1B0-8OD_tTvOQ,1156
62
+ msfabricpysdkcore-0.2.3.dist-info/METADATA,sha256=G8XXu-pIWd0p1MPp0hv2ZA0DH7zZZj9w2ypQWcKuL58,33595
63
+ msfabricpysdkcore-0.2.3.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
64
+ msfabricpysdkcore-0.2.3.dist-info/top_level.txt,sha256=3iRonu6ptDGQN4Yl6G76XGM7xbFNsskiEHW-P2gMQGY,18
65
+ msfabricpysdkcore-0.2.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,28 +0,0 @@
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=usvPhIecOSCLvkJJ0Q5_4XUWenJGFoxb2EpF6ooDPNI,27245
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=yRat_IA3kGBdpP0uaRhjfEZ25aAcxHLVY6b7gvoHCFg,177345
9
- msfabricpysdkcore/deployment_pipeline.py,sha256=2d7BqRPgfBiAlQOP4UfYLmFMM8xonSjPkJKhevIKGEY,5756
10
- msfabricpysdkcore/domain.py,sha256=92IVvZ3jXHIT1a0zlTPD7uoQX6TcBBE_Y_b4dScxHSU,6949
11
- msfabricpysdkcore/environment.py,sha256=4k2Le1mAQIrfcpNc3n1DbgdCzAldGTSTCbiDQGk0DlA,2784
12
- msfabricpysdkcore/fabric_azure_capacity.py,sha256=7JxMp9weiKG_mDjlRK-88oIXr0kdG0pzv-Ouycf3fus,2808
13
- msfabricpysdkcore/fabric_azure_client.py,sha256=I7Z0Y8Xy_esQcPaXgPL7EAkQmoQkAklJO4hxk_90dno,10722
14
- msfabricpysdkcore/item.py,sha256=xMbIdITQ8Ii1-8hnvR7M4mUXPpCmsUL2tlKBxT-wEsE,8900
15
- msfabricpysdkcore/job_instance.py,sha256=rtZp-OpuzfdMiQyuQLum38lgcfSZJTr3s9sECZglcWg,2389
16
- msfabricpysdkcore/lakehouse.py,sha256=yIrzatWM9emPn-Y54Cg_ZdAydIWjxrpK65jIQ4SClgE,1703
17
- msfabricpysdkcore/long_running_operation.py,sha256=XTlsueSZKVFICxhx99geEQ6btZFlFb8-lssigmQ9c6Y,2133
18
- msfabricpysdkcore/onelakeshortcut.py,sha256=H02wR6Z86qTEJOwVRMKz1Ou3K88Y9pfJa91vizjprvo,1661
19
- msfabricpysdkcore/otheritems.py,sha256=6Gqx2w7VWRq6G7qOCkmhmUha5f52WZQ3jPA5A0HzwZc,15355
20
- msfabricpysdkcore/spark_custom_pool.py,sha256=YsEULaQG-FO507aPIb-4kk93ZWBmDZj6fbOEHYoyxHE,3188
21
- msfabricpysdkcore/workspace.py,sha256=oiZADyl5VTRKtIGivcBU0kWUTVYKJEyHvrYauVEjbRU,49965
22
- msfabricpysdkcore/util/__init__.py,sha256=p-1dC4AurfKdIUppNVlRCIcmwHBTURqfgIwxcie3fEA,50
23
- msfabricpysdkcore/util/logger.py,sha256=XXdeaqI-BhXZgacChKrWP88TPU4FTWvS8L0YWjCT54A,1166
24
- msfabricpysdkcore-0.2.1.dist-info/LICENSE,sha256=1NrGuF-zOmzbwzk3iI6lsP9koyDeKO1B0-8OD_tTvOQ,1156
25
- msfabricpysdkcore-0.2.1.dist-info/METADATA,sha256=WmhOfDyrAtkQSTxeN0QeEgqoQtR7lJAfQvxsiDpzZ5A,32114
26
- msfabricpysdkcore-0.2.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
27
- msfabricpysdkcore-0.2.1.dist-info/top_level.txt,sha256=3iRonu6ptDGQN4Yl6G76XGM7xbFNsskiEHW-P2gMQGY,18
28
- msfabricpysdkcore-0.2.1.dist-info/RECORD,,