looker-sdk 25.18.0__tar.gz → 25.20.0__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.
Files changed (42) hide show
  1. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/PKG-INFO +16 -2
  2. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/sdk/api40/methods.py +3 -0
  3. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/sdk/api40/models.py +212 -60
  4. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/sdk/constants.py +1 -1
  5. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/version.py +1 -1
  6. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk.egg-info/PKG-INFO +17 -3
  7. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/LICENSE.txt +0 -0
  8. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/MANIFEST.in +0 -0
  9. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/README.rst +0 -0
  10. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/__init__.py +0 -0
  11. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/error.py +0 -0
  12. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/py.typed +0 -0
  13. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/__init__.py +0 -0
  14. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/api_methods.py +0 -0
  15. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/api_settings.py +0 -0
  16. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/auth_session.py +0 -0
  17. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/auth_token.py +0 -0
  18. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/constants.py +0 -0
  19. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/hooks.py +0 -0
  20. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/model.py +0 -0
  21. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/requests_transport.py +0 -0
  22. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/serialize.py +0 -0
  23. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/rtl/transport.py +0 -0
  24. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/sdk/__init__.py +0 -0
  25. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk/sdk/api40/__init__.py +0 -0
  26. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk.egg-info/SOURCES.txt +0 -0
  27. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk.egg-info/dependency_links.txt +0 -0
  28. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk.egg-info/requires.txt +0 -0
  29. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/looker_sdk.egg-info/top_level.txt +0 -0
  30. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/setup.cfg +0 -0
  31. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/setup.py +0 -0
  32. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/integration/__init__.py +0 -0
  33. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/integration/test_methods.py +0 -0
  34. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/integration/test_netrc.py +0 -0
  35. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/__init__.py +0 -0
  36. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_api_methods.py +0 -0
  37. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_api_settings.py +0 -0
  38. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_auth_session.py +0 -0
  39. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_auth_token.py +0 -0
  40. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_requests_transport.py +0 -0
  41. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_serialize.py +0 -0
  42. {looker_sdk-25.18.0 → looker_sdk-25.20.0}/tests/rtl/test_transport.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: looker_sdk
3
- Version: 25.18.0
3
+ Version: 25.20.0
4
4
  Summary: Looker REST API
5
5
  Home-page: https://pypi.python.org/pypi/looker_sdk
6
6
  Author: Looker Data Sciences, Inc.
@@ -9,6 +9,20 @@ Keywords: Looker,Looker API,looker_sdk,Looker API 4.0
9
9
  Requires-Python: >=3.6
10
10
  Description-Content-Type: text/x-rst
11
11
  License-File: LICENSE.txt
12
+ Requires-Dist: requests>=2.22
13
+ Requires-Dist: typing-extensions>=4.1.1
14
+ Requires-Dist: attrs>=20.1.0; python_version >= "3.7"
15
+ Requires-Dist: cattrs>=1.3; python_version >= "3.7"
16
+ Dynamic: author
17
+ Dynamic: description
18
+ Dynamic: description-content-type
19
+ Dynamic: home-page
20
+ Dynamic: keywords
21
+ Dynamic: license
22
+ Dynamic: license-file
23
+ Dynamic: requires-dist
24
+ Dynamic: requires-python
25
+ Dynamic: summary
12
26
 
13
27
  ===========
14
28
  Looker SDK
@@ -7637,6 +7637,8 @@ class Looker40SDK(api_methods.APIMethods):
7637
7637
  exclude_hidden: Optional[bool] = None,
7638
7638
  # Whether or not to include built-in models such as System Activity (Defaults to false)
7639
7639
  include_internal: Optional[bool] = None,
7640
+ # Whether or not to include self service models (Defaults to false)
7641
+ include_self_service: Optional[bool] = None,
7640
7642
  transport_options: Optional[transport.TransportOptions] = None,
7641
7643
  ) -> Sequence[mdls.LookmlModel]:
7642
7644
  """Get All LookML Models"""
@@ -7652,6 +7654,7 @@ class Looker40SDK(api_methods.APIMethods):
7652
7654
  "exclude_empty": exclude_empty,
7653
7655
  "exclude_hidden": exclude_hidden,
7654
7656
  "include_internal": include_internal,
7657
+ "include_self_service": include_self_service,
7655
7658
  },
7656
7659
  transport_options=transport_options,
7657
7660
  ),
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 377 API models: 289 Spec, 0 Request, 64 Write, 24 Enum
24
+ # 380 API models: 290 Spec, 0 Request, 65 Write, 25 Enum
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -367,6 +367,7 @@ class AlertNotifications(model.Model):
367
367
  threshold_value: The value of the threshold which triggers the alert notification
368
368
  ran_at: The time at which the alert query ran
369
369
  alert:
370
+ notification_type: The type of notification, 'email' or 'slack'
370
371
  """
371
372
 
372
373
  notification_id: Optional[str] = None
@@ -377,6 +378,7 @@ class AlertNotifications(model.Model):
377
378
  threshold_value: Optional[float] = None
378
379
  ran_at: Optional[str] = None
379
380
  alert: Optional["MobilePayload"] = None
381
+ notification_type: Optional[str] = None
380
382
 
381
383
  def __init__(
382
384
  self,
@@ -388,7 +390,8 @@ class AlertNotifications(model.Model):
388
390
  field_value: Optional[float] = None,
389
391
  threshold_value: Optional[float] = None,
390
392
  ran_at: Optional[str] = None,
391
- alert: Optional["MobilePayload"] = None
393
+ alert: Optional["MobilePayload"] = None,
394
+ notification_type: Optional[str] = None
392
395
  ):
393
396
  self.notification_id = notification_id
394
397
  self.alert_condition_id = alert_condition_id
@@ -398,6 +401,7 @@ class AlertNotifications(model.Model):
398
401
  self.threshold_value = threshold_value
399
402
  self.ran_at = ran_at
400
403
  self.alert = alert
404
+ self.notification_type = notification_type
401
405
 
402
406
 
403
407
  @attr.s(auto_attribs=True, init=False)
@@ -1062,6 +1066,50 @@ class Category(enum.Enum):
1062
1066
  Category.__new__ = model.safe_enum__new__ # type: ignore
1063
1067
 
1064
1068
 
1069
+ @attr.s(auto_attribs=True, init=False)
1070
+ class Certification(model.Model):
1071
+ """
1072
+ Attributes:
1073
+ certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked".
1074
+ user_name: Display name of user who certified the content, derived from user_id
1075
+ notes: Certification notes
1076
+ updated_at: Timestamp of certification
1077
+ """
1078
+
1079
+ certification_status: Optional["CertificationStatus"] = None
1080
+ user_name: Optional[str] = None
1081
+ notes: Optional[str] = None
1082
+ updated_at: Optional[datetime.datetime] = None
1083
+
1084
+ def __init__(
1085
+ self,
1086
+ *,
1087
+ certification_status: Optional["CertificationStatus"] = None,
1088
+ user_name: Optional[str] = None,
1089
+ notes: Optional[str] = None,
1090
+ updated_at: Optional[datetime.datetime] = None
1091
+ ):
1092
+ self.certification_status = certification_status
1093
+ self.user_name = user_name
1094
+ self.notes = notes
1095
+ self.updated_at = updated_at
1096
+
1097
+
1098
+ class CertificationStatus(enum.Enum):
1099
+ """
1100
+ Certification status: "certified" or "revoked" Valid values are: "certified", "revoked". (Enum defined in Certification)
1101
+
1102
+ """
1103
+
1104
+ certified = "certified"
1105
+ revoked = "revoked"
1106
+ invalid_api_enum_value = "invalid_api_enum_value"
1107
+
1108
+
1109
+ # https://github.com/python/mypy/issues/2427
1110
+ CertificationStatus.__new__ = model.safe_enum__new__ # type: ignore
1111
+
1112
+
1065
1113
  @attr.s(auto_attribs=True, init=False)
1066
1114
  class CIChangeRequest(model.Model):
1067
1115
  """
@@ -1120,55 +1168,6 @@ class CIGitState(model.Model):
1120
1168
  self.target = target
1121
1169
 
1122
1170
 
1123
- @attr.s(auto_attribs=True, init=False)
1124
- class CIRunResult(model.Model):
1125
- """
1126
- Attributes:
1127
- sql_result:
1128
- sql_error:
1129
- assert_result:
1130
- assert_error:
1131
- content_result:
1132
- content_error:
1133
- lookml_result:
1134
- lookml_error:
1135
- generic_error:
1136
- """
1137
-
1138
- sql_result: Optional["SqlValidatorResult"] = None
1139
- sql_error: Optional["GenericError"] = None
1140
- assert_result: Optional["AssertValidatorResult"] = None
1141
- assert_error: Optional["GenericError"] = None
1142
- content_result: Optional["ContentValidatorResult"] = None
1143
- content_error: Optional["GenericError"] = None
1144
- lookml_result: Optional["LookMLValidatorResult"] = None
1145
- lookml_error: Optional["GenericError"] = None
1146
- generic_error: Optional["GenericError"] = None
1147
-
1148
- def __init__(
1149
- self,
1150
- *,
1151
- sql_result: Optional["SqlValidatorResult"] = None,
1152
- sql_error: Optional["GenericError"] = None,
1153
- assert_result: Optional["AssertValidatorResult"] = None,
1154
- assert_error: Optional["GenericError"] = None,
1155
- content_result: Optional["ContentValidatorResult"] = None,
1156
- content_error: Optional["GenericError"] = None,
1157
- lookml_result: Optional["LookMLValidatorResult"] = None,
1158
- lookml_error: Optional["GenericError"] = None,
1159
- generic_error: Optional["GenericError"] = None
1160
- ):
1161
- self.sql_result = sql_result
1162
- self.sql_error = sql_error
1163
- self.assert_result = assert_result
1164
- self.assert_error = assert_error
1165
- self.content_result = content_result
1166
- self.content_error = content_error
1167
- self.lookml_result = lookml_result
1168
- self.lookml_error = lookml_error
1169
- self.generic_error = generic_error
1170
-
1171
-
1172
1171
  @attr.s(auto_attribs=True, init=False)
1173
1172
  class CIScheduleTrigger(model.Model):
1174
1173
  """
@@ -1607,6 +1606,7 @@ class ContentSummary(model.Model):
1607
1606
  group_weighted_score:
1608
1607
  suggestion_score:
1609
1608
  preferred_viewer: The preferred route for viewing this content (ie: dashboards or dashboards-next)
1609
+ certification_metadata:
1610
1610
  """
1611
1611
 
1612
1612
  can: Optional[MutableMapping[str, bool]] = None
@@ -1628,6 +1628,7 @@ class ContentSummary(model.Model):
1628
1628
  group_weighted_score: Optional[float] = None
1629
1629
  suggestion_score: Optional[float] = None
1630
1630
  preferred_viewer: Optional[str] = None
1631
+ certification_metadata: Optional["Certification"] = None
1631
1632
 
1632
1633
  def __init__(
1633
1634
  self,
@@ -1650,7 +1651,8 @@ class ContentSummary(model.Model):
1650
1651
  weighted_score: Optional[float] = None,
1651
1652
  group_weighted_score: Optional[float] = None,
1652
1653
  suggestion_score: Optional[float] = None,
1653
- preferred_viewer: Optional[str] = None
1654
+ preferred_viewer: Optional[str] = None,
1655
+ certification_metadata: Optional["Certification"] = None
1654
1656
  ):
1655
1657
  self.can = can
1656
1658
  self.id = id
@@ -1671,6 +1673,7 @@ class ContentSummary(model.Model):
1671
1673
  self.group_weighted_score = group_weighted_score
1672
1674
  self.suggestion_score = suggestion_score
1673
1675
  self.preferred_viewer = preferred_viewer
1676
+ self.certification_metadata = certification_metadata
1674
1677
 
1675
1678
 
1676
1679
  @attr.s(auto_attribs=True, init=False)
@@ -3274,6 +3277,7 @@ class Dashboard(model.Model):
3274
3277
  user_id: Id of User
3275
3278
  slug: Content Metadata Slug
3276
3279
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3280
+ certification_metadata:
3277
3281
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
3278
3282
  background_color: Background color
3279
3283
  created_at: Time that the Dashboard was created.
@@ -3325,6 +3329,7 @@ class Dashboard(model.Model):
3325
3329
  user_id: Optional[str] = None
3326
3330
  slug: Optional[str] = None
3327
3331
  preferred_viewer: Optional[str] = None
3332
+ certification_metadata: Optional["Certification"] = None
3328
3333
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
3329
3334
  background_color: Optional[str] = None
3330
3335
  created_at: Optional[datetime.datetime] = None
@@ -3378,6 +3383,7 @@ class Dashboard(model.Model):
3378
3383
  user_id: Optional[str] = None,
3379
3384
  slug: Optional[str] = None,
3380
3385
  preferred_viewer: Optional[str] = None,
3386
+ certification_metadata: Optional["Certification"] = None,
3381
3387
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
3382
3388
  background_color: Optional[str] = None,
3383
3389
  created_at: Optional[datetime.datetime] = None,
@@ -3428,6 +3434,7 @@ class Dashboard(model.Model):
3428
3434
  self.user_id = user_id
3429
3435
  self.slug = slug
3430
3436
  self.preferred_viewer = preferred_viewer
3437
+ self.certification_metadata = certification_metadata
3431
3438
  self.alert_sync_with_dashboard_filter_enabled = (
3432
3439
  alert_sync_with_dashboard_filter_enabled
3433
3440
  )
@@ -3547,6 +3554,7 @@ class DashboardBase(model.Model):
3547
3554
  user_id: Id of User
3548
3555
  slug: Content Metadata Slug
3549
3556
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
3557
+ certification_metadata:
3550
3558
  """
3551
3559
 
3552
3560
  can: Optional[MutableMapping[str, bool]] = None
@@ -3565,6 +3573,7 @@ class DashboardBase(model.Model):
3565
3573
  user_id: Optional[str] = None
3566
3574
  slug: Optional[str] = None
3567
3575
  preferred_viewer: Optional[str] = None
3576
+ certification_metadata: Optional["Certification"] = None
3568
3577
 
3569
3578
  def __init__(
3570
3579
  self,
@@ -3584,7 +3593,8 @@ class DashboardBase(model.Model):
3584
3593
  title: Optional[str] = None,
3585
3594
  user_id: Optional[str] = None,
3586
3595
  slug: Optional[str] = None,
3587
- preferred_viewer: Optional[str] = None
3596
+ preferred_viewer: Optional[str] = None,
3597
+ certification_metadata: Optional["Certification"] = None
3588
3598
  ):
3589
3599
  self.can = can
3590
3600
  self.content_favorite_id = content_favorite_id
@@ -3602,6 +3612,7 @@ class DashboardBase(model.Model):
3602
3612
  self.user_id = user_id
3603
3613
  self.slug = slug
3604
3614
  self.preferred_viewer = preferred_viewer
3615
+ self.certification_metadata = certification_metadata
3605
3616
 
3606
3617
 
3607
3618
  @attr.s(auto_attribs=True, init=False)
@@ -3612,6 +3623,7 @@ class DashboardElement(model.Model):
3612
3623
  body_text: Text tile body text
3613
3624
  body_text_as_html: Text tile body text as Html
3614
3625
  dashboard_id: Id of Dashboard
3626
+ dashboard_layout_id: Id of Dashboard Layout
3615
3627
  edit_uri: Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only).
3616
3628
  id: Unique Id
3617
3629
  look:
@@ -3645,6 +3657,7 @@ class DashboardElement(model.Model):
3645
3657
  body_text: Optional[str] = None
3646
3658
  body_text_as_html: Optional[str] = None
3647
3659
  dashboard_id: Optional[str] = None
3660
+ dashboard_layout_id: Optional[str] = None
3648
3661
  edit_uri: Optional[str] = None
3649
3662
  id: Optional[str] = None
3650
3663
  look: Optional["LookWithQuery"] = None
@@ -3680,6 +3693,7 @@ class DashboardElement(model.Model):
3680
3693
  body_text: Optional[str] = None,
3681
3694
  body_text_as_html: Optional[str] = None,
3682
3695
  dashboard_id: Optional[str] = None,
3696
+ dashboard_layout_id: Optional[str] = None,
3683
3697
  edit_uri: Optional[str] = None,
3684
3698
  id: Optional[str] = None,
3685
3699
  look: Optional["LookWithQuery"] = None,
@@ -3712,6 +3726,7 @@ class DashboardElement(model.Model):
3712
3726
  self.body_text = body_text
3713
3727
  self.body_text_as_html = body_text_as_html
3714
3728
  self.dashboard_id = dashboard_id
3729
+ self.dashboard_layout_id = dashboard_layout_id
3715
3730
  self.edit_uri = edit_uri
3716
3731
  self.id = id
3717
3732
  self.look = look
@@ -5436,6 +5451,7 @@ class ExternalOauthApplication(model.Model):
5436
5451
  client_secret: (Write-Only) The OAuth Client Secret for this application
5437
5452
  tenant_id: The OAuth Tenant ID for this application
5438
5453
  dialect_name: The database dialect for this application.
5454
+ bi_directional_data_access: Whether this application supports bi-directional data access.
5439
5455
  created_at: Creation time for this application
5440
5456
  """
5441
5457
 
@@ -5446,6 +5462,7 @@ class ExternalOauthApplication(model.Model):
5446
5462
  client_secret: Optional[str] = None
5447
5463
  tenant_id: Optional[str] = None
5448
5464
  dialect_name: Optional[str] = None
5465
+ bi_directional_data_access: Optional[bool] = None
5449
5466
  created_at: Optional[datetime.datetime] = None
5450
5467
 
5451
5468
  def __init__(
@@ -5458,6 +5475,7 @@ class ExternalOauthApplication(model.Model):
5458
5475
  client_secret: Optional[str] = None,
5459
5476
  tenant_id: Optional[str] = None,
5460
5477
  dialect_name: Optional[str] = None,
5478
+ bi_directional_data_access: Optional[bool] = None,
5461
5479
  created_at: Optional[datetime.datetime] = None
5462
5480
  ):
5463
5481
  self.can = can
@@ -5467,6 +5485,7 @@ class ExternalOauthApplication(model.Model):
5467
5485
  self.client_secret = client_secret
5468
5486
  self.tenant_id = tenant_id
5469
5487
  self.dialect_name = dialect_name
5488
+ self.bi_directional_data_access = bi_directional_data_access
5470
5489
  self.created_at = created_at
5471
5490
 
5472
5491
 
@@ -7431,6 +7450,7 @@ class Look(model.Model):
7431
7450
  id: Unique Id
7432
7451
  title: Look Title
7433
7452
  user_id: User Id
7453
+ certification_metadata:
7434
7454
  content_favorite_id: Content Favorite Id
7435
7455
  created_at: Time that the Look was created.
7436
7456
  deleted: Whether or not a look is 'soft' deleted.
@@ -7464,6 +7484,7 @@ class Look(model.Model):
7464
7484
  id: Optional[str] = None
7465
7485
  title: Optional[str] = None
7466
7486
  user_id: Optional[str] = None
7487
+ certification_metadata: Optional["Certification"] = None
7467
7488
  content_favorite_id: Optional[str] = None
7468
7489
  created_at: Optional[datetime.datetime] = None
7469
7490
  deleted: Optional[bool] = None
@@ -7499,6 +7520,7 @@ class Look(model.Model):
7499
7520
  id: Optional[str] = None,
7500
7521
  title: Optional[str] = None,
7501
7522
  user_id: Optional[str] = None,
7523
+ certification_metadata: Optional["Certification"] = None,
7502
7524
  content_favorite_id: Optional[str] = None,
7503
7525
  created_at: Optional[datetime.datetime] = None,
7504
7526
  deleted: Optional[bool] = None,
@@ -7531,6 +7553,7 @@ class Look(model.Model):
7531
7553
  self.id = id
7532
7554
  self.title = title
7533
7555
  self.user_id = user_id
7556
+ self.certification_metadata = certification_metadata
7534
7557
  self.content_favorite_id = content_favorite_id
7535
7558
  self.created_at = created_at
7536
7559
  self.deleted = deleted
@@ -7568,6 +7591,7 @@ class LookBasic(model.Model):
7568
7591
  id: Unique Id
7569
7592
  title: Look Title
7570
7593
  user_id: User Id
7594
+ certification_metadata:
7571
7595
  """
7572
7596
 
7573
7597
  can: Optional[MutableMapping[str, bool]] = None
@@ -7575,6 +7599,7 @@ class LookBasic(model.Model):
7575
7599
  id: Optional[str] = None
7576
7600
  title: Optional[str] = None
7577
7601
  user_id: Optional[str] = None
7602
+ certification_metadata: Optional["Certification"] = None
7578
7603
 
7579
7604
  def __init__(
7580
7605
  self,
@@ -7583,13 +7608,15 @@ class LookBasic(model.Model):
7583
7608
  content_metadata_id: Optional[str] = None,
7584
7609
  id: Optional[str] = None,
7585
7610
  title: Optional[str] = None,
7586
- user_id: Optional[str] = None
7611
+ user_id: Optional[str] = None,
7612
+ certification_metadata: Optional["Certification"] = None
7587
7613
  ):
7588
7614
  self.can = can
7589
7615
  self.content_metadata_id = content_metadata_id
7590
7616
  self.id = id
7591
7617
  self.title = title
7592
7618
  self.user_id = user_id
7619
+ self.certification_metadata = certification_metadata
7593
7620
 
7594
7621
 
7595
7622
  @attr.s(auto_attribs=True, init=False)
@@ -7998,6 +8025,8 @@ class LookmlModelExploreField(model.Model):
7998
8025
  week_start_day: The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday".
7999
8026
  times_used: The number of times this field has been used in queries
8000
8027
  original_view: The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter.
8028
+ datatype: The data_type for a date in lookml
8029
+ convert_tz: Whether time zones should be converted for datetime fields
8001
8030
  """
8002
8031
 
8003
8032
  align: Optional["Align"] = None
@@ -8062,6 +8091,8 @@ class LookmlModelExploreField(model.Model):
8062
8091
  week_start_day: Optional["WeekStartDay"] = None
8063
8092
  times_used: Optional[int] = None
8064
8093
  original_view: Optional[str] = None
8094
+ datatype: Optional[str] = None
8095
+ convert_tz: Optional[bool] = None
8065
8096
 
8066
8097
  def __init__(
8067
8098
  self,
@@ -8129,7 +8160,9 @@ class LookmlModelExploreField(model.Model):
8129
8160
  dynamic: Optional[bool] = None,
8130
8161
  week_start_day: Optional["WeekStartDay"] = None,
8131
8162
  times_used: Optional[int] = None,
8132
- original_view: Optional[str] = None
8163
+ original_view: Optional[str] = None,
8164
+ datatype: Optional[str] = None,
8165
+ convert_tz: Optional[bool] = None
8133
8166
  ):
8134
8167
  self.align = align
8135
8168
  self.can_filter = can_filter
@@ -8191,6 +8224,8 @@ class LookmlModelExploreField(model.Model):
8191
8224
  self.week_start_day = week_start_day
8192
8225
  self.times_used = times_used
8193
8226
  self.original_view = original_view
8227
+ self.datatype = datatype
8228
+ self.convert_tz = convert_tz
8194
8229
 
8195
8230
 
8196
8231
  @attr.s(auto_attribs=True, init=False)
@@ -8735,6 +8770,7 @@ class LookWithDashboards(model.Model):
8735
8770
  id: Unique Id
8736
8771
  title: Look Title
8737
8772
  user_id: User Id
8773
+ certification_metadata:
8738
8774
  content_favorite_id: Content Favorite Id
8739
8775
  created_at: Time that the Look was created.
8740
8776
  deleted: Whether or not a look is 'soft' deleted.
@@ -8769,6 +8805,7 @@ class LookWithDashboards(model.Model):
8769
8805
  id: Optional[str] = None
8770
8806
  title: Optional[str] = None
8771
8807
  user_id: Optional[str] = None
8808
+ certification_metadata: Optional["Certification"] = None
8772
8809
  content_favorite_id: Optional[str] = None
8773
8810
  created_at: Optional[datetime.datetime] = None
8774
8811
  deleted: Optional[bool] = None
@@ -8805,6 +8842,7 @@ class LookWithDashboards(model.Model):
8805
8842
  id: Optional[str] = None,
8806
8843
  title: Optional[str] = None,
8807
8844
  user_id: Optional[str] = None,
8845
+ certification_metadata: Optional["Certification"] = None,
8808
8846
  content_favorite_id: Optional[str] = None,
8809
8847
  created_at: Optional[datetime.datetime] = None,
8810
8848
  deleted: Optional[bool] = None,
@@ -8838,6 +8876,7 @@ class LookWithDashboards(model.Model):
8838
8876
  self.id = id
8839
8877
  self.title = title
8840
8878
  self.user_id = user_id
8879
+ self.certification_metadata = certification_metadata
8841
8880
  self.content_favorite_id = content_favorite_id
8842
8881
  self.created_at = created_at
8843
8882
  self.deleted = deleted
@@ -8876,6 +8915,7 @@ class LookWithQuery(model.Model):
8876
8915
  id: Unique Id
8877
8916
  title: Look Title
8878
8917
  user_id: User Id
8918
+ certification_metadata:
8879
8919
  content_favorite_id: Content Favorite Id
8880
8920
  created_at: Time that the Look was created.
8881
8921
  deleted: Whether or not a look is 'soft' deleted.
@@ -8911,6 +8951,7 @@ class LookWithQuery(model.Model):
8911
8951
  id: Optional[str] = None
8912
8952
  title: Optional[str] = None
8913
8953
  user_id: Optional[str] = None
8954
+ certification_metadata: Optional["Certification"] = None
8914
8955
  content_favorite_id: Optional[str] = None
8915
8956
  created_at: Optional[datetime.datetime] = None
8916
8957
  deleted: Optional[bool] = None
@@ -8948,6 +8989,7 @@ class LookWithQuery(model.Model):
8948
8989
  id: Optional[str] = None,
8949
8990
  title: Optional[str] = None,
8950
8991
  user_id: Optional[str] = None,
8992
+ certification_metadata: Optional["Certification"] = None,
8951
8993
  content_favorite_id: Optional[str] = None,
8952
8994
  created_at: Optional[datetime.datetime] = None,
8953
8995
  deleted: Optional[bool] = None,
@@ -8982,6 +9024,7 @@ class LookWithQuery(model.Model):
8982
9024
  self.id = id
8983
9025
  self.title = title
8984
9026
  self.user_id = user_id
9027
+ self.certification_metadata = certification_metadata
8985
9028
  self.content_favorite_id = content_favorite_id
8986
9029
  self.created_at = created_at
8987
9030
  self.deleted = deleted
@@ -11031,7 +11074,7 @@ class Run(model.Model):
11031
11074
  status: Optional[str] = None
11032
11075
  git_service: Optional[str] = None
11033
11076
  git_state: Optional["CIGitState"] = None
11034
- result: Optional["CIRunResult"] = None
11077
+ result: Optional["RunResult"] = None
11035
11078
  schedule: Optional["CIScheduleTrigger"] = None
11036
11079
  target_branch: Optional[str] = None
11037
11080
  title: Optional[str] = None
@@ -11051,7 +11094,7 @@ class Run(model.Model):
11051
11094
  status: Optional[str] = None,
11052
11095
  git_service: Optional[str] = None,
11053
11096
  git_state: Optional["CIGitState"] = None,
11054
- result: Optional["CIRunResult"] = None,
11097
+ result: Optional["RunResult"] = None,
11055
11098
  schedule: Optional["CIScheduleTrigger"] = None,
11056
11099
  target_branch: Optional[str] = None,
11057
11100
  title: Optional[str] = None,
@@ -11179,6 +11222,55 @@ class RunningQueries(model.Model):
11179
11222
  self.sql_interface_sql = sql_interface_sql
11180
11223
 
11181
11224
 
11225
+ @attr.s(auto_attribs=True, init=False)
11226
+ class RunResult(model.Model):
11227
+ """
11228
+ Attributes:
11229
+ sql_result:
11230
+ sql_error:
11231
+ assert_result:
11232
+ assert_error:
11233
+ content_result:
11234
+ content_error:
11235
+ lookml_result:
11236
+ lookml_error:
11237
+ generic_error:
11238
+ """
11239
+
11240
+ sql_result: Optional["SqlValidatorResult"] = None
11241
+ sql_error: Optional["GenericError"] = None
11242
+ assert_result: Optional["AssertValidatorResult"] = None
11243
+ assert_error: Optional["GenericError"] = None
11244
+ content_result: Optional["ContentValidatorResult"] = None
11245
+ content_error: Optional["GenericError"] = None
11246
+ lookml_result: Optional["LookMLValidatorResult"] = None
11247
+ lookml_error: Optional["GenericError"] = None
11248
+ generic_error: Optional["GenericError"] = None
11249
+
11250
+ def __init__(
11251
+ self,
11252
+ *,
11253
+ sql_result: Optional["SqlValidatorResult"] = None,
11254
+ sql_error: Optional["GenericError"] = None,
11255
+ assert_result: Optional["AssertValidatorResult"] = None,
11256
+ assert_error: Optional["GenericError"] = None,
11257
+ content_result: Optional["ContentValidatorResult"] = None,
11258
+ content_error: Optional["GenericError"] = None,
11259
+ lookml_result: Optional["LookMLValidatorResult"] = None,
11260
+ lookml_error: Optional["GenericError"] = None,
11261
+ generic_error: Optional["GenericError"] = None
11262
+ ):
11263
+ self.sql_result = sql_result
11264
+ self.sql_error = sql_error
11265
+ self.assert_result = assert_result
11266
+ self.assert_error = assert_error
11267
+ self.content_result = content_result
11268
+ self.content_error = content_error
11269
+ self.lookml_result = lookml_result
11270
+ self.lookml_error = lookml_error
11271
+ self.generic_error = generic_error
11272
+
11273
+
11182
11274
  @attr.s(auto_attribs=True, init=False)
11183
11275
  class SamlConfig(model.Model):
11184
11276
  """
@@ -14208,6 +14300,30 @@ class WriteBoardSection(model.Model):
14208
14300
  self.title = title
14209
14301
 
14210
14302
 
14303
+ @attr.s(auto_attribs=True, init=False)
14304
+ class WriteCertification(model.Model):
14305
+ """
14306
+ Dynamic writeable type for Certification removes:
14307
+ user_name, updated_at
14308
+
14309
+ Attributes:
14310
+ certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked".
14311
+ notes: Certification notes
14312
+ """
14313
+
14314
+ certification_status: Optional["CertificationStatus"] = None
14315
+ notes: Optional[str] = None
14316
+
14317
+ def __init__(
14318
+ self,
14319
+ *,
14320
+ certification_status: Optional["CertificationStatus"] = None,
14321
+ notes: Optional[str] = None
14322
+ ):
14323
+ self.certification_status = certification_status
14324
+ self.notes = notes
14325
+
14326
+
14211
14327
  @attr.s(auto_attribs=True, init=False)
14212
14328
  class WriteColorCollection(model.Model):
14213
14329
  """
@@ -14467,6 +14583,8 @@ class WriteDashboard(model.Model):
14467
14583
  title: Dashboard Title
14468
14584
  slug: Content Metadata Slug
14469
14585
  preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next)
14586
+ certification_metadata: Dynamic writeable type for Certification removes:
14587
+ user_name, updated_at
14470
14588
  alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes
14471
14589
  background_color: Background color
14472
14590
  crossfilter_enabled: Enables crossfiltering in dashboards - only available in dashboards-next (beta)
@@ -14494,6 +14612,7 @@ class WriteDashboard(model.Model):
14494
14612
  title: Optional[str] = None
14495
14613
  slug: Optional[str] = None
14496
14614
  preferred_viewer: Optional[str] = None
14615
+ certification_metadata: Optional["WriteCertification"] = None
14497
14616
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None
14498
14617
  background_color: Optional[str] = None
14499
14618
  crossfilter_enabled: Optional[bool] = None
@@ -14523,6 +14642,7 @@ class WriteDashboard(model.Model):
14523
14642
  title: Optional[str] = None,
14524
14643
  slug: Optional[str] = None,
14525
14644
  preferred_viewer: Optional[str] = None,
14645
+ certification_metadata: Optional["WriteCertification"] = None,
14526
14646
  alert_sync_with_dashboard_filter_enabled: Optional[bool] = None,
14527
14647
  background_color: Optional[str] = None,
14528
14648
  crossfilter_enabled: Optional[bool] = None,
@@ -14549,6 +14669,7 @@ class WriteDashboard(model.Model):
14549
14669
  self.title = title
14550
14670
  self.slug = slug
14551
14671
  self.preferred_viewer = preferred_viewer
14672
+ self.certification_metadata = certification_metadata
14552
14673
  self.alert_sync_with_dashboard_filter_enabled = (
14553
14674
  alert_sync_with_dashboard_filter_enabled
14554
14675
  )
@@ -14579,12 +14700,21 @@ class WriteDashboardBase(model.Model):
14579
14700
  Attributes:
14580
14701
  folder: Dynamic writeable type for FolderBase removes:
14581
14702
  id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can
14703
+ certification_metadata: Dynamic writeable type for Certification removes:
14704
+ user_name, updated_at
14582
14705
  """
14583
14706
 
14584
14707
  folder: Optional["WriteFolderBase"] = None
14708
+ certification_metadata: Optional["WriteCertification"] = None
14585
14709
 
14586
- def __init__(self, *, folder: Optional["WriteFolderBase"] = None):
14710
+ def __init__(
14711
+ self,
14712
+ *,
14713
+ folder: Optional["WriteFolderBase"] = None,
14714
+ certification_metadata: Optional["WriteCertification"] = None
14715
+ ):
14587
14716
  self.folder = folder
14717
+ self.certification_metadata = certification_metadata
14588
14718
 
14589
14719
 
14590
14720
  @attr.s(auto_attribs=True, init=False)
@@ -14596,6 +14726,7 @@ class WriteDashboardElement(model.Model):
14596
14726
  Attributes:
14597
14727
  body_text: Text tile body text
14598
14728
  dashboard_id: Id of Dashboard
14729
+ dashboard_layout_id: Id of Dashboard Layout
14599
14730
  look: Dynamic writeable type for LookWithQuery removes:
14600
14731
  can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, url
14601
14732
  look_id: Id Of Look
@@ -14622,6 +14753,7 @@ class WriteDashboardElement(model.Model):
14622
14753
 
14623
14754
  body_text: Optional[str] = None
14624
14755
  dashboard_id: Optional[str] = None
14756
+ dashboard_layout_id: Optional[str] = None
14625
14757
  look: Optional["WriteLookWithQuery"] = None
14626
14758
  look_id: Optional[str] = None
14627
14759
  merge_result_id: Optional[str] = None
@@ -14647,6 +14779,7 @@ class WriteDashboardElement(model.Model):
14647
14779
  *,
14648
14780
  body_text: Optional[str] = None,
14649
14781
  dashboard_id: Optional[str] = None,
14782
+ dashboard_layout_id: Optional[str] = None,
14650
14783
  look: Optional["WriteLookWithQuery"] = None,
14651
14784
  look_id: Optional[str] = None,
14652
14785
  merge_result_id: Optional[str] = None,
@@ -14671,6 +14804,7 @@ class WriteDashboardElement(model.Model):
14671
14804
  ):
14672
14805
  self.body_text = body_text
14673
14806
  self.dashboard_id = dashboard_id
14807
+ self.dashboard_layout_id = dashboard_layout_id
14674
14808
  self.look = look
14675
14809
  self.look_id = look_id
14676
14810
  self.merge_result_id = merge_result_id
@@ -15287,6 +15421,7 @@ class WriteExternalOauthApplication(model.Model):
15287
15421
  client_secret: (Write-Only) The OAuth Client Secret for this application
15288
15422
  tenant_id: The OAuth Tenant ID for this application
15289
15423
  dialect_name: The database dialect for this application.
15424
+ bi_directional_data_access: Whether this application supports bi-directional data access.
15290
15425
  """
15291
15426
 
15292
15427
  name: Optional[str] = None
@@ -15294,6 +15429,7 @@ class WriteExternalOauthApplication(model.Model):
15294
15429
  client_secret: Optional[str] = None
15295
15430
  tenant_id: Optional[str] = None
15296
15431
  dialect_name: Optional[str] = None
15432
+ bi_directional_data_access: Optional[bool] = None
15297
15433
 
15298
15434
  def __init__(
15299
15435
  self,
@@ -15302,13 +15438,15 @@ class WriteExternalOauthApplication(model.Model):
15302
15438
  client_id: Optional[str] = None,
15303
15439
  client_secret: Optional[str] = None,
15304
15440
  tenant_id: Optional[str] = None,
15305
- dialect_name: Optional[str] = None
15441
+ dialect_name: Optional[str] = None,
15442
+ bi_directional_data_access: Optional[bool] = None
15306
15443
  ):
15307
15444
  self.name = name
15308
15445
  self.client_id = client_id
15309
15446
  self.client_secret = client_secret
15310
15447
  self.tenant_id = tenant_id
15311
15448
  self.dialect_name = dialect_name
15449
+ self.bi_directional_data_access = bi_directional_data_access
15312
15450
 
15313
15451
 
15314
15452
  @attr.s(auto_attribs=True, init=False)
@@ -15638,12 +15776,21 @@ class WriteLookBasic(model.Model):
15638
15776
 
15639
15777
  Attributes:
15640
15778
  user_id: User Id
15779
+ certification_metadata: Dynamic writeable type for Certification removes:
15780
+ user_name, updated_at
15641
15781
  """
15642
15782
 
15643
15783
  user_id: Optional[str] = None
15784
+ certification_metadata: Optional["WriteCertification"] = None
15644
15785
 
15645
- def __init__(self, *, user_id: Optional[str] = None):
15786
+ def __init__(
15787
+ self,
15788
+ *,
15789
+ user_id: Optional[str] = None,
15790
+ certification_metadata: Optional["WriteCertification"] = None
15791
+ ):
15646
15792
  self.user_id = user_id
15793
+ self.certification_metadata = certification_metadata
15647
15794
 
15648
15795
 
15649
15796
  @attr.s(auto_attribs=True, init=False)
@@ -15687,6 +15834,8 @@ class WriteLookWithQuery(model.Model):
15687
15834
  Attributes:
15688
15835
  title: Look Title
15689
15836
  user_id: User Id
15837
+ certification_metadata: Dynamic writeable type for Certification removes:
15838
+ user_name, updated_at
15690
15839
  deleted: Whether or not a look is 'soft' deleted.
15691
15840
  description: Description
15692
15841
  is_run_on_load: auto-run query when Look viewed
@@ -15701,6 +15850,7 @@ class WriteLookWithQuery(model.Model):
15701
15850
 
15702
15851
  title: Optional[str] = None
15703
15852
  user_id: Optional[str] = None
15853
+ certification_metadata: Optional["WriteCertification"] = None
15704
15854
  deleted: Optional[bool] = None
15705
15855
  description: Optional[str] = None
15706
15856
  is_run_on_load: Optional[bool] = None
@@ -15715,6 +15865,7 @@ class WriteLookWithQuery(model.Model):
15715
15865
  *,
15716
15866
  title: Optional[str] = None,
15717
15867
  user_id: Optional[str] = None,
15868
+ certification_metadata: Optional["WriteCertification"] = None,
15718
15869
  deleted: Optional[bool] = None,
15719
15870
  description: Optional[str] = None,
15720
15871
  is_run_on_load: Optional[bool] = None,
@@ -15726,6 +15877,7 @@ class WriteLookWithQuery(model.Model):
15726
15877
  ):
15727
15878
  self.title = title
15728
15879
  self.user_id = user_id
15880
+ self.certification_metadata = certification_metadata
15729
15881
  self.deleted = deleted
15730
15882
  self.description = description
15731
15883
  self.is_run_on_load = is_run_on_load
@@ -20,5 +20,5 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
21
  # THE SOFTWARE.
22
22
 
23
- sdk_version = "25.18"
23
+ sdk_version = "25.20"
24
24
  environment_prefix = "LOOKERSDK"
@@ -20,4 +20,4 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
21
  # THE SOFTWARE.
22
22
 
23
- __version__ = "25.18.0"
23
+ __version__ = "25.20.0"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
2
- Name: looker-sdk
3
- Version: 25.18.0
1
+ Metadata-Version: 2.4
2
+ Name: looker_sdk
3
+ Version: 25.20.0
4
4
  Summary: Looker REST API
5
5
  Home-page: https://pypi.python.org/pypi/looker_sdk
6
6
  Author: Looker Data Sciences, Inc.
@@ -9,6 +9,20 @@ Keywords: Looker,Looker API,looker_sdk,Looker API 4.0
9
9
  Requires-Python: >=3.6
10
10
  Description-Content-Type: text/x-rst
11
11
  License-File: LICENSE.txt
12
+ Requires-Dist: requests>=2.22
13
+ Requires-Dist: typing-extensions>=4.1.1
14
+ Requires-Dist: attrs>=20.1.0; python_version >= "3.7"
15
+ Requires-Dist: cattrs>=1.3; python_version >= "3.7"
16
+ Dynamic: author
17
+ Dynamic: description
18
+ Dynamic: description-content-type
19
+ Dynamic: home-page
20
+ Dynamic: keywords
21
+ Dynamic: license
22
+ Dynamic: license-file
23
+ Dynamic: requires-dist
24
+ Dynamic: requires-python
25
+ Dynamic: summary
12
26
 
13
27
  ===========
14
28
  Looker SDK
File without changes
File without changes
File without changes
File without changes
File without changes