looker-sdk 25.6.0__py3-none-any.whl → 25.10.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- looker_sdk/error.py +1 -1
- looker_sdk/sdk/api40/methods.py +58 -59
- looker_sdk/sdk/api40/models.py +747 -56
- looker_sdk/sdk/constants.py +1 -1
- looker_sdk/version.py +1 -1
- {looker_sdk-25.6.0.dist-info → looker_sdk-25.10.0.dist-info}/METADATA +1 -1
- {looker_sdk-25.6.0.dist-info → looker_sdk-25.10.0.dist-info}/RECORD +10 -10
- {looker_sdk-25.6.0.dist-info → looker_sdk-25.10.0.dist-info}/LICENSE.txt +0 -0
- {looker_sdk-25.6.0.dist-info → looker_sdk-25.10.0.dist-info}/WHEEL +0 -0
- {looker_sdk-25.6.0.dist-info → looker_sdk-25.10.0.dist-info}/top_level.txt +0 -0
looker_sdk/error.py
CHANGED
|
@@ -82,7 +82,7 @@ class SDKError(Exception):
|
|
|
82
82
|
documentation_url: {self.documentation_url}
|
|
83
83
|
error_doc_url: {self.error_doc_url}
|
|
84
84
|
error details:
|
|
85
|
-
{sep.join(str(
|
|
85
|
+
{sep.join(str(error_details) for error_details in self.errors)}
|
|
86
86
|
"""
|
|
87
87
|
|
|
88
88
|
|
looker_sdk/sdk/api40/methods.py
CHANGED
|
@@ -4879,6 +4879,8 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
4879
4879
|
# Any UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`
|
|
4880
4880
|
# property value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.
|
|
4881
4881
|
#
|
|
4882
|
+
# If the dashboard_ids parameter is specified, only the dashboards with the specified ids will be updated.
|
|
4883
|
+
#
|
|
4882
4884
|
# For this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards
|
|
4883
4885
|
# that the user has permission to update will be synced.
|
|
4884
4886
|
#
|
|
@@ -4889,9 +4891,10 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
4889
4891
|
self,
|
|
4890
4892
|
# Id of LookML dashboard, in the form 'model::dashboardname'
|
|
4891
4893
|
lookml_dashboard_id: str,
|
|
4892
|
-
body: mdls.WriteDashboard,
|
|
4893
4894
|
# If true, and this dashboard is localized, export it with the raw keys, not localized.
|
|
4894
4895
|
raw_locale: Optional[bool] = None,
|
|
4896
|
+
# An array of UDD dashboard IDs to sync. If not specified, all UDD dashboards will be synced.
|
|
4897
|
+
dashboard_ids: Optional[mdls.DelimSequence[str]] = None,
|
|
4895
4898
|
transport_options: Optional[transport.TransportOptions] = None,
|
|
4896
4899
|
) -> Sequence[int]:
|
|
4897
4900
|
"""Sync LookML Dashboard"""
|
|
@@ -4901,8 +4904,7 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
4901
4904
|
self.patch(
|
|
4902
4905
|
path=f"/dashboards/{lookml_dashboard_id}/sync",
|
|
4903
4906
|
structure=Sequence[int],
|
|
4904
|
-
query_params={"raw_locale": raw_locale},
|
|
4905
|
-
body=body,
|
|
4907
|
+
query_params={"raw_locale": raw_locale, "dashboard_ids": dashboard_ids},
|
|
4906
4908
|
transport_options=transport_options,
|
|
4907
4909
|
),
|
|
4908
4910
|
)
|
|
@@ -7984,6 +7986,59 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
7984
7986
|
|
|
7985
7987
|
# region Project: Manage Projects
|
|
7986
7988
|
|
|
7989
|
+
# ### Fetches a CI Run.
|
|
7990
|
+
#
|
|
7991
|
+
# GET /projects/{project_id}/ci/runs/{run_id} -> mdls.ProjectCIRun
|
|
7992
|
+
def get_ci_run(
|
|
7993
|
+
self,
|
|
7994
|
+
# Project Id
|
|
7995
|
+
project_id: str,
|
|
7996
|
+
# Run Id
|
|
7997
|
+
run_id: str,
|
|
7998
|
+
# Requested fields
|
|
7999
|
+
fields: Optional[str] = None,
|
|
8000
|
+
transport_options: Optional[transport.TransportOptions] = None,
|
|
8001
|
+
) -> mdls.ProjectCIRun:
|
|
8002
|
+
"""Fetch Continuous Integration run"""
|
|
8003
|
+
project_id = self.encode_path_param(project_id)
|
|
8004
|
+
run_id = self.encode_path_param(run_id)
|
|
8005
|
+
response = cast(
|
|
8006
|
+
mdls.ProjectCIRun,
|
|
8007
|
+
self.get(
|
|
8008
|
+
path=f"/projects/{project_id}/ci/runs/{run_id}",
|
|
8009
|
+
structure=mdls.ProjectCIRun,
|
|
8010
|
+
query_params={"fields": fields},
|
|
8011
|
+
transport_options=transport_options,
|
|
8012
|
+
),
|
|
8013
|
+
)
|
|
8014
|
+
return response
|
|
8015
|
+
|
|
8016
|
+
# ### Creates a CI Run.
|
|
8017
|
+
#
|
|
8018
|
+
# POST /projects/{project_id}/ci/run -> mdls.CreateCIRunResponse
|
|
8019
|
+
def create_ci_run(
|
|
8020
|
+
self,
|
|
8021
|
+
# Project Id
|
|
8022
|
+
project_id: str,
|
|
8023
|
+
body: mdls.CreateCIRunRequest,
|
|
8024
|
+
# Requested fields
|
|
8025
|
+
fields: Optional[str] = None,
|
|
8026
|
+
transport_options: Optional[transport.TransportOptions] = None,
|
|
8027
|
+
) -> mdls.CreateCIRunResponse:
|
|
8028
|
+
"""Create a Continuous Integration run"""
|
|
8029
|
+
project_id = self.encode_path_param(project_id)
|
|
8030
|
+
response = cast(
|
|
8031
|
+
mdls.CreateCIRunResponse,
|
|
8032
|
+
self.post(
|
|
8033
|
+
path=f"/projects/{project_id}/ci/run",
|
|
8034
|
+
structure=mdls.CreateCIRunResponse,
|
|
8035
|
+
query_params={"fields": fields},
|
|
8036
|
+
body=body,
|
|
8037
|
+
transport_options=transport_options,
|
|
8038
|
+
),
|
|
8039
|
+
)
|
|
8040
|
+
return response
|
|
8041
|
+
|
|
7987
8042
|
# ### Generate Lockfile for All LookML Dependencies
|
|
7988
8043
|
#
|
|
7989
8044
|
# Git must have been configured, must be in dev mode and deploy permission required
|
|
@@ -8631,9 +8686,6 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
8631
8686
|
|
|
8632
8687
|
# ### Get All Git Connection Tests
|
|
8633
8688
|
#
|
|
8634
|
-
# dev mode required.
|
|
8635
|
-
# - Call `update_session` to select the 'dev' workspace.
|
|
8636
|
-
#
|
|
8637
8689
|
# Returns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.
|
|
8638
8690
|
#
|
|
8639
8691
|
# Tests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.
|
|
@@ -8792,59 +8844,6 @@ class Looker40SDK(api_methods.APIMethods):
|
|
|
8792
8844
|
)
|
|
8793
8845
|
return response
|
|
8794
8846
|
|
|
8795
|
-
# ### Fetches a CI Run.
|
|
8796
|
-
#
|
|
8797
|
-
# GET /projects/{project_id}/ci/runs/{run_id} -> mdls.ProjectCIRun
|
|
8798
|
-
def get_ci_run(
|
|
8799
|
-
self,
|
|
8800
|
-
# Project Id
|
|
8801
|
-
project_id: str,
|
|
8802
|
-
# Run Id
|
|
8803
|
-
run_id: str,
|
|
8804
|
-
# Requested fields
|
|
8805
|
-
fields: Optional[str] = None,
|
|
8806
|
-
transport_options: Optional[transport.TransportOptions] = None,
|
|
8807
|
-
) -> mdls.ProjectCIRun:
|
|
8808
|
-
"""Fetch Continuous Integration run"""
|
|
8809
|
-
project_id = self.encode_path_param(project_id)
|
|
8810
|
-
run_id = self.encode_path_param(run_id)
|
|
8811
|
-
response = cast(
|
|
8812
|
-
mdls.ProjectCIRun,
|
|
8813
|
-
self.get(
|
|
8814
|
-
path=f"/projects/{project_id}/ci/runs/{run_id}",
|
|
8815
|
-
structure=mdls.ProjectCIRun,
|
|
8816
|
-
query_params={"fields": fields},
|
|
8817
|
-
transport_options=transport_options,
|
|
8818
|
-
),
|
|
8819
|
-
)
|
|
8820
|
-
return response
|
|
8821
|
-
|
|
8822
|
-
# ### Creates a CI Run.
|
|
8823
|
-
#
|
|
8824
|
-
# POST /projects/{project_id}/ci/run -> mdls.CreateCIRunResponse
|
|
8825
|
-
def create_ci_run(
|
|
8826
|
-
self,
|
|
8827
|
-
# Project Id
|
|
8828
|
-
project_id: str,
|
|
8829
|
-
body: mdls.CreateCIRunRequest,
|
|
8830
|
-
# Requested fields
|
|
8831
|
-
fields: Optional[str] = None,
|
|
8832
|
-
transport_options: Optional[transport.TransportOptions] = None,
|
|
8833
|
-
) -> mdls.CreateCIRunResponse:
|
|
8834
|
-
"""Create a Continuous Integration run"""
|
|
8835
|
-
project_id = self.encode_path_param(project_id)
|
|
8836
|
-
response = cast(
|
|
8837
|
-
mdls.CreateCIRunResponse,
|
|
8838
|
-
self.post(
|
|
8839
|
-
path=f"/projects/{project_id}/ci/run",
|
|
8840
|
-
structure=mdls.CreateCIRunResponse,
|
|
8841
|
-
query_params={"fields": fields},
|
|
8842
|
-
body=body,
|
|
8843
|
-
transport_options=transport_options,
|
|
8844
|
-
),
|
|
8845
|
-
)
|
|
8846
|
-
return response
|
|
8847
|
-
|
|
8848
8847
|
# ### Configure Repository Credential for a remote dependency
|
|
8849
8848
|
#
|
|
8850
8849
|
# Admin required.
|
looker_sdk/sdk/api40/models.py
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
#
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# 373 API models: 287 Spec, 0 Request, 62 Write, 24 Enum
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
|
|
@@ -620,6 +620,151 @@ class ArtifactUsage(model.Model):
|
|
|
620
620
|
self.usage = usage
|
|
621
621
|
|
|
622
622
|
|
|
623
|
+
@attr.s(auto_attribs=True, init=False)
|
|
624
|
+
class AssertValidatorErrorItem(model.Model):
|
|
625
|
+
"""
|
|
626
|
+
Attributes:
|
|
627
|
+
assert_error:
|
|
628
|
+
generic_error:
|
|
629
|
+
"""
|
|
630
|
+
|
|
631
|
+
assert_error: Optional["AssertValidatorTestError"] = None
|
|
632
|
+
generic_error: Optional["GenericError"] = None
|
|
633
|
+
|
|
634
|
+
def __init__(
|
|
635
|
+
self,
|
|
636
|
+
*,
|
|
637
|
+
assert_error: Optional["AssertValidatorTestError"] = None,
|
|
638
|
+
generic_error: Optional["GenericError"] = None
|
|
639
|
+
):
|
|
640
|
+
self.assert_error = assert_error
|
|
641
|
+
self.generic_error = generic_error
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
@attr.s(auto_attribs=True, init=False)
|
|
645
|
+
class AssertValidatorResult(model.Model):
|
|
646
|
+
"""
|
|
647
|
+
Attributes:
|
|
648
|
+
name: Name of the validator (assert)
|
|
649
|
+
status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
650
|
+
results: Results of the validation
|
|
651
|
+
"""
|
|
652
|
+
|
|
653
|
+
name: Optional[str] = None
|
|
654
|
+
status: Optional[str] = None
|
|
655
|
+
results: Optional[Sequence["AssertValidatorTestedExplore"]] = None
|
|
656
|
+
|
|
657
|
+
def __init__(
|
|
658
|
+
self,
|
|
659
|
+
*,
|
|
660
|
+
name: Optional[str] = None,
|
|
661
|
+
status: Optional[str] = None,
|
|
662
|
+
results: Optional[Sequence["AssertValidatorTestedExplore"]] = None
|
|
663
|
+
):
|
|
664
|
+
self.name = name
|
|
665
|
+
self.status = status
|
|
666
|
+
self.results = results
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
@attr.s(auto_attribs=True, init=False)
|
|
670
|
+
class AssertValidatorTestedExplore(model.Model):
|
|
671
|
+
"""
|
|
672
|
+
Attributes:
|
|
673
|
+
error_count: Total number of failed data tests
|
|
674
|
+
errors: Details of data tests that failed validation
|
|
675
|
+
success_count: Total number of successful data tests
|
|
676
|
+
successes: Details of data tests that passed validation
|
|
677
|
+
"""
|
|
678
|
+
|
|
679
|
+
error_count: Optional[int] = None
|
|
680
|
+
errors: Optional[Sequence["AssertValidatorErrorItem"]] = None
|
|
681
|
+
success_count: Optional[str] = None
|
|
682
|
+
successes: Optional[Sequence["AssertValidatorTestSuccess"]] = None
|
|
683
|
+
|
|
684
|
+
def __init__(
|
|
685
|
+
self,
|
|
686
|
+
*,
|
|
687
|
+
error_count: Optional[int] = None,
|
|
688
|
+
errors: Optional[Sequence["AssertValidatorErrorItem"]] = None,
|
|
689
|
+
success_count: Optional[str] = None,
|
|
690
|
+
successes: Optional[Sequence["AssertValidatorTestSuccess"]] = None
|
|
691
|
+
):
|
|
692
|
+
self.error_count = error_count
|
|
693
|
+
self.errors = errors
|
|
694
|
+
self.success_count = success_count
|
|
695
|
+
self.successes = successes
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
@attr.s(auto_attribs=True, init=False)
|
|
699
|
+
class AssertValidatorTestError(model.Model):
|
|
700
|
+
"""
|
|
701
|
+
Attributes:
|
|
702
|
+
model: LookML model that contains the data test
|
|
703
|
+
explore: LookML Explore that is used as the explore_source for the data test
|
|
704
|
+
test_name: Name of the data test
|
|
705
|
+
explore_url: URL to the Explore
|
|
706
|
+
lookml_url: URL to the LookML file where the data test is defined
|
|
707
|
+
message: Message returned by the data test
|
|
708
|
+
"""
|
|
709
|
+
|
|
710
|
+
model: Optional[str] = None
|
|
711
|
+
explore: Optional[str] = None
|
|
712
|
+
test_name: Optional[str] = None
|
|
713
|
+
explore_url: Optional[str] = None
|
|
714
|
+
lookml_url: Optional[str] = None
|
|
715
|
+
message: Optional[str] = None
|
|
716
|
+
|
|
717
|
+
def __init__(
|
|
718
|
+
self,
|
|
719
|
+
*,
|
|
720
|
+
model: Optional[str] = None,
|
|
721
|
+
explore: Optional[str] = None,
|
|
722
|
+
test_name: Optional[str] = None,
|
|
723
|
+
explore_url: Optional[str] = None,
|
|
724
|
+
lookml_url: Optional[str] = None,
|
|
725
|
+
message: Optional[str] = None
|
|
726
|
+
):
|
|
727
|
+
self.model = model
|
|
728
|
+
self.explore = explore
|
|
729
|
+
self.test_name = test_name
|
|
730
|
+
self.explore_url = explore_url
|
|
731
|
+
self.lookml_url = lookml_url
|
|
732
|
+
self.message = message
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
@attr.s(auto_attribs=True, init=False)
|
|
736
|
+
class AssertValidatorTestSuccess(model.Model):
|
|
737
|
+
"""
|
|
738
|
+
Attributes:
|
|
739
|
+
model: LookML model that contains the data test
|
|
740
|
+
explore: LookML Explore that is used as the explore_source for the data test
|
|
741
|
+
test_name: Name of the data test
|
|
742
|
+
explore_url: URL to the Explore
|
|
743
|
+
lookml_url: URL to the LookML file where the data test is defined
|
|
744
|
+
"""
|
|
745
|
+
|
|
746
|
+
model: Optional[str] = None
|
|
747
|
+
explore: Optional[str] = None
|
|
748
|
+
test_name: Optional[str] = None
|
|
749
|
+
explore_url: Optional[str] = None
|
|
750
|
+
lookml_url: Optional[str] = None
|
|
751
|
+
|
|
752
|
+
def __init__(
|
|
753
|
+
self,
|
|
754
|
+
*,
|
|
755
|
+
model: Optional[str] = None,
|
|
756
|
+
explore: Optional[str] = None,
|
|
757
|
+
test_name: Optional[str] = None,
|
|
758
|
+
explore_url: Optional[str] = None,
|
|
759
|
+
lookml_url: Optional[str] = None
|
|
760
|
+
):
|
|
761
|
+
self.model = model
|
|
762
|
+
self.explore = explore
|
|
763
|
+
self.test_name = test_name
|
|
764
|
+
self.explore_url = explore_url
|
|
765
|
+
self.lookml_url = lookml_url
|
|
766
|
+
|
|
767
|
+
|
|
623
768
|
@attr.s(auto_attribs=True, init=False)
|
|
624
769
|
class BackupConfiguration(model.Model):
|
|
625
770
|
"""
|
|
@@ -921,10 +1066,10 @@ Category.__new__ = model.safe_enum__new__ # type: ignore
|
|
|
921
1066
|
class CIChangeRequest(model.Model):
|
|
922
1067
|
"""
|
|
923
1068
|
Attributes:
|
|
924
|
-
change_request_number:
|
|
925
|
-
change_request_url:
|
|
926
|
-
change_request_name:
|
|
927
|
-
change_request_commits_url:
|
|
1069
|
+
change_request_number: Numeric identifier of the change request
|
|
1070
|
+
change_request_url: URL of the change request
|
|
1071
|
+
change_request_name: Name of the change request
|
|
1072
|
+
change_request_commits_url: For PR-triggered CI runs, the URL to the change request commit that triggered the run.
|
|
928
1073
|
"""
|
|
929
1074
|
|
|
930
1075
|
change_request_number: Optional[int] = None
|
|
@@ -950,10 +1095,10 @@ class CIChangeRequest(model.Model):
|
|
|
950
1095
|
class CIGitState(model.Model):
|
|
951
1096
|
"""
|
|
952
1097
|
Attributes:
|
|
953
|
-
branch: Git branch
|
|
954
|
-
repository: Git repository
|
|
955
|
-
commit_ref: Git commit
|
|
956
|
-
target:
|
|
1098
|
+
branch: Git branch that the CI run validates
|
|
1099
|
+
repository: Git repository that contains the Git branch being validated
|
|
1100
|
+
commit_ref: Git commit that the CI run validates
|
|
1101
|
+
target: For incremental runs, the Git branch that the CI run compares against during validation
|
|
957
1102
|
"""
|
|
958
1103
|
|
|
959
1104
|
branch: Optional[str] = None
|
|
@@ -979,22 +1124,22 @@ class CIGitState(model.Model):
|
|
|
979
1124
|
class CIRun(model.Model):
|
|
980
1125
|
"""
|
|
981
1126
|
Attributes:
|
|
982
|
-
run_id:
|
|
983
|
-
created_at:
|
|
984
|
-
started_at:
|
|
985
|
-
finished_at:
|
|
986
|
-
status_url:
|
|
987
|
-
status:
|
|
988
|
-
git_service: Git service for run
|
|
1127
|
+
run_id: ID of the CI run
|
|
1128
|
+
created_at: Time and date that the CI run was initiated
|
|
1129
|
+
started_at: Time and date that the CI run began executing
|
|
1130
|
+
finished_at: Time and date that the CI run completed
|
|
1131
|
+
status_url: Git provider URL where you can view the commit status. This is the status URL that you specify when you create a CI suite
|
|
1132
|
+
status: Status of the CI run (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
1133
|
+
git_service: Git service for CI run (e.g. GitHub)
|
|
989
1134
|
git_state:
|
|
990
|
-
result:
|
|
1135
|
+
result:
|
|
991
1136
|
schedule:
|
|
992
|
-
target_branch:
|
|
993
|
-
title:
|
|
994
|
-
trigger: Trigger for run
|
|
1137
|
+
target_branch: Git branch that the CI run compares against during validation, used for incremental runs
|
|
1138
|
+
title: Name of the CI suite
|
|
1139
|
+
trigger: Trigger for CI run (unknown, manual, schedule, change_request)
|
|
995
1140
|
change_request:
|
|
996
|
-
suite_id:
|
|
997
|
-
username:
|
|
1141
|
+
suite_id: ID of the CI suite
|
|
1142
|
+
username: Username of the user who triggered the CI run, if the CI run was manually triggered
|
|
998
1143
|
"""
|
|
999
1144
|
|
|
1000
1145
|
run_id: Optional[str] = None
|
|
@@ -1005,7 +1150,7 @@ class CIRun(model.Model):
|
|
|
1005
1150
|
status: Optional[str] = None
|
|
1006
1151
|
git_service: Optional[str] = None
|
|
1007
1152
|
git_state: Optional["CIGitState"] = None
|
|
1008
|
-
result: Optional[
|
|
1153
|
+
result: Optional["CIRunResult"] = None
|
|
1009
1154
|
schedule: Optional["CIScheduleTrigger"] = None
|
|
1010
1155
|
target_branch: Optional[str] = None
|
|
1011
1156
|
title: Optional[str] = None
|
|
@@ -1025,7 +1170,7 @@ class CIRun(model.Model):
|
|
|
1025
1170
|
status: Optional[str] = None,
|
|
1026
1171
|
git_service: Optional[str] = None,
|
|
1027
1172
|
git_state: Optional["CIGitState"] = None,
|
|
1028
|
-
result: Optional[
|
|
1173
|
+
result: Optional["CIRunResult"] = None,
|
|
1029
1174
|
schedule: Optional["CIScheduleTrigger"] = None,
|
|
1030
1175
|
target_branch: Optional[str] = None,
|
|
1031
1176
|
title: Optional[str] = None,
|
|
@@ -1056,28 +1201,59 @@ class CIRun(model.Model):
|
|
|
1056
1201
|
class CIRunResult(model.Model):
|
|
1057
1202
|
"""
|
|
1058
1203
|
Attributes:
|
|
1059
|
-
|
|
1060
|
-
|
|
1204
|
+
sql_result:
|
|
1205
|
+
sql_error:
|
|
1206
|
+
assert_result:
|
|
1207
|
+
assert_error:
|
|
1208
|
+
content_result:
|
|
1209
|
+
content_error:
|
|
1210
|
+
lookml_result:
|
|
1211
|
+
lookml_error:
|
|
1212
|
+
generic_error:
|
|
1061
1213
|
"""
|
|
1062
1214
|
|
|
1063
|
-
|
|
1064
|
-
|
|
1215
|
+
sql_result: Optional["SqlValidatorResult"] = None
|
|
1216
|
+
sql_error: Optional["GenericError"] = None
|
|
1217
|
+
assert_result: Optional["AssertValidatorResult"] = None
|
|
1218
|
+
assert_error: Optional["GenericError"] = None
|
|
1219
|
+
content_result: Optional["ContentValidatorResult"] = None
|
|
1220
|
+
content_error: Optional["GenericError"] = None
|
|
1221
|
+
lookml_result: Optional["LookMLValidatorResult"] = None
|
|
1222
|
+
lookml_error: Optional["GenericError"] = None
|
|
1223
|
+
generic_error: Optional["GenericError"] = None
|
|
1065
1224
|
|
|
1066
1225
|
def __init__(
|
|
1067
|
-
self,
|
|
1226
|
+
self,
|
|
1227
|
+
*,
|
|
1228
|
+
sql_result: Optional["SqlValidatorResult"] = None,
|
|
1229
|
+
sql_error: Optional["GenericError"] = None,
|
|
1230
|
+
assert_result: Optional["AssertValidatorResult"] = None,
|
|
1231
|
+
assert_error: Optional["GenericError"] = None,
|
|
1232
|
+
content_result: Optional["ContentValidatorResult"] = None,
|
|
1233
|
+
content_error: Optional["GenericError"] = None,
|
|
1234
|
+
lookml_result: Optional["LookMLValidatorResult"] = None,
|
|
1235
|
+
lookml_error: Optional["GenericError"] = None,
|
|
1236
|
+
generic_error: Optional["GenericError"] = None
|
|
1068
1237
|
):
|
|
1069
|
-
self.
|
|
1070
|
-
self.
|
|
1238
|
+
self.sql_result = sql_result
|
|
1239
|
+
self.sql_error = sql_error
|
|
1240
|
+
self.assert_result = assert_result
|
|
1241
|
+
self.assert_error = assert_error
|
|
1242
|
+
self.content_result = content_result
|
|
1243
|
+
self.content_error = content_error
|
|
1244
|
+
self.lookml_result = lookml_result
|
|
1245
|
+
self.lookml_error = lookml_error
|
|
1246
|
+
self.generic_error = generic_error
|
|
1071
1247
|
|
|
1072
1248
|
|
|
1073
1249
|
@attr.s(auto_attribs=True, init=False)
|
|
1074
1250
|
class CIScheduleTrigger(model.Model):
|
|
1075
1251
|
"""
|
|
1076
1252
|
Attributes:
|
|
1077
|
-
enabled: Whether schedule is active
|
|
1078
|
-
day:
|
|
1079
|
-
hour:
|
|
1080
|
-
frequency:
|
|
1253
|
+
enabled: Whether the CI run schedule is active
|
|
1254
|
+
day: For scheduled runs, day of the week that the CI run is scheduled
|
|
1255
|
+
hour: For schedules runs, the hour of the day (24 hour format) that the CI run is scheduled
|
|
1256
|
+
frequency: For scheduled runs, how often the CI run is scheduled to run (hourly, daily, weekly)
|
|
1081
1257
|
"""
|
|
1082
1258
|
|
|
1083
1259
|
enabled: Optional[bool] = None
|
|
@@ -1953,6 +2129,75 @@ class ContentValidationScheduledPlan(model.Model):
|
|
|
1953
2129
|
self.id = id
|
|
1954
2130
|
|
|
1955
2131
|
|
|
2132
|
+
@attr.s(auto_attribs=True, init=False)
|
|
2133
|
+
class ContentValidatorContentError(model.Model):
|
|
2134
|
+
"""
|
|
2135
|
+
Attributes:
|
|
2136
|
+
type: A URI reference that identifies the problem type
|
|
2137
|
+
title: Overview of the error
|
|
2138
|
+
detail: Detail of the error
|
|
2139
|
+
status: The HTTP status code for the problem
|
|
2140
|
+
instance: URI reference that identifies the specific occurrence of the problem
|
|
2141
|
+
model: LookML model that contains the error
|
|
2142
|
+
explore: LookML Explore that contains the error
|
|
2143
|
+
field_name: LookML field that caused the error
|
|
2144
|
+
content_type: Type of the content (dashboard, look)
|
|
2145
|
+
folder: Folder of the content
|
|
2146
|
+
url: URL of the content
|
|
2147
|
+
tile_type: Type of the tile (dashboard_element, dashboard_filter)
|
|
2148
|
+
tile_title: Title of the tile
|
|
2149
|
+
message: Message returned by the content validator
|
|
2150
|
+
"""
|
|
2151
|
+
|
|
2152
|
+
type: Optional[str] = None
|
|
2153
|
+
title: Optional[str] = None
|
|
2154
|
+
detail: Optional[str] = None
|
|
2155
|
+
status: Optional[str] = None
|
|
2156
|
+
instance: Optional[str] = None
|
|
2157
|
+
model: Optional[str] = None
|
|
2158
|
+
explore: Optional[str] = None
|
|
2159
|
+
field_name: Optional[str] = None
|
|
2160
|
+
content_type: Optional[str] = None
|
|
2161
|
+
folder: Optional[str] = None
|
|
2162
|
+
url: Optional[str] = None
|
|
2163
|
+
tile_type: Optional[str] = None
|
|
2164
|
+
tile_title: Optional[str] = None
|
|
2165
|
+
message: Optional[str] = None
|
|
2166
|
+
|
|
2167
|
+
def __init__(
|
|
2168
|
+
self,
|
|
2169
|
+
*,
|
|
2170
|
+
type: Optional[str] = None,
|
|
2171
|
+
title: Optional[str] = None,
|
|
2172
|
+
detail: Optional[str] = None,
|
|
2173
|
+
status: Optional[str] = None,
|
|
2174
|
+
instance: Optional[str] = None,
|
|
2175
|
+
model: Optional[str] = None,
|
|
2176
|
+
explore: Optional[str] = None,
|
|
2177
|
+
field_name: Optional[str] = None,
|
|
2178
|
+
content_type: Optional[str] = None,
|
|
2179
|
+
folder: Optional[str] = None,
|
|
2180
|
+
url: Optional[str] = None,
|
|
2181
|
+
tile_type: Optional[str] = None,
|
|
2182
|
+
tile_title: Optional[str] = None,
|
|
2183
|
+
message: Optional[str] = None
|
|
2184
|
+
):
|
|
2185
|
+
self.type = type
|
|
2186
|
+
self.title = title
|
|
2187
|
+
self.detail = detail
|
|
2188
|
+
self.status = status
|
|
2189
|
+
self.instance = instance
|
|
2190
|
+
self.model = model
|
|
2191
|
+
self.explore = explore
|
|
2192
|
+
self.field_name = field_name
|
|
2193
|
+
self.content_type = content_type
|
|
2194
|
+
self.folder = folder
|
|
2195
|
+
self.url = url
|
|
2196
|
+
self.tile_type = tile_type
|
|
2197
|
+
self.tile_title = tile_title
|
|
2198
|
+
self.message = message
|
|
2199
|
+
|
|
2200
|
+
|
|
1956
2201
|
@attr.s(auto_attribs=True, init=False)
|
|
1957
2202
|
class ContentValidatorError(model.Model):
|
|
1958
2203
|
"""
|
|
@@ -2008,6 +2253,77 @@ class ContentValidatorError(model.Model):
|
|
|
2008
2253
|
self.id = id
|
|
2009
2254
|
|
|
2010
2255
|
|
|
2256
|
+
@attr.s(auto_attribs=True, init=False)
|
|
2257
|
+
class ContentValidatorErrorItem(model.Model):
|
|
2258
|
+
"""
|
|
2259
|
+
Attributes:
|
|
2260
|
+
content_error:
|
|
2261
|
+
generic_error:
|
|
2262
|
+
"""
|
|
2263
|
+
|
|
2264
|
+
content_error: Optional["ContentValidatorContentError"] = None
|
|
2265
|
+
generic_error: Optional["GenericError"] = None
|
|
2266
|
+
|
|
2267
|
+
def __init__(
|
|
2268
|
+
self,
|
|
2269
|
+
*,
|
|
2270
|
+
content_error: Optional["ContentValidatorContentError"] = None,
|
|
2271
|
+
generic_error: Optional["GenericError"] = None
|
|
2272
|
+
):
|
|
2273
|
+
self.content_error = content_error
|
|
2274
|
+
self.generic_error = generic_error
|
|
2275
|
+
|
|
2276
|
+
|
|
2277
|
+
@attr.s(auto_attribs=True, init=False)
|
|
2278
|
+
class ContentValidatorResult(model.Model):
|
|
2279
|
+
"""
|
|
2280
|
+
Attributes:
|
|
2281
|
+
name: Name of the validator (content)
|
|
2282
|
+
incremental: Whether the validation was incremental
|
|
2283
|
+
status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
2284
|
+
result: Results of the content validation
|
|
2285
|
+
"""
|
|
2286
|
+
|
|
2287
|
+
name: Optional[str] = None
|
|
2288
|
+
incremental: Optional[bool] = None
|
|
2289
|
+
status: Optional[str] = None
|
|
2290
|
+
result: Optional[Sequence["ContentValidatorTestedExplore"]] = None
|
|
2291
|
+
|
|
2292
|
+
def __init__(
|
|
2293
|
+
self,
|
|
2294
|
+
*,
|
|
2295
|
+
name: Optional[str] = None,
|
|
2296
|
+
incremental: Optional[bool] = None,
|
|
2297
|
+
status: Optional[str] = None,
|
|
2298
|
+
result: Optional[Sequence["ContentValidatorTestedExplore"]] = None
|
|
2299
|
+
):
|
|
2300
|
+
self.name = name
|
|
2301
|
+
self.incremental = incremental
|
|
2302
|
+
self.status = status
|
|
2303
|
+
self.result = result
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
@attr.s(auto_attribs=True, init=False)
|
|
2307
|
+
class ContentValidatorTestedExplore(model.Model):
|
|
2308
|
+
"""
|
|
2309
|
+
Attributes:
|
|
2310
|
+
error_count: Total number of failed content validations
|
|
2311
|
+
errors: Details of the content that failed validation
|
|
2312
|
+
"""
|
|
2313
|
+
|
|
2314
|
+
error_count: Optional[int] = None
|
|
2315
|
+
errors: Optional[Sequence["ContentValidatorErrorItem"]] = None
|
|
2316
|
+
|
|
2317
|
+
def __init__(
|
|
2318
|
+
self,
|
|
2319
|
+
*,
|
|
2320
|
+
error_count: Optional[int] = None,
|
|
2321
|
+
errors: Optional[Sequence["ContentValidatorErrorItem"]] = None
|
|
2322
|
+
):
|
|
2323
|
+
self.error_count = error_count
|
|
2324
|
+
self.errors = errors
|
|
2325
|
+
|
|
2326
|
+
|
|
2011
2327
|
@attr.s(auto_attribs=True, init=False)
|
|
2012
2328
|
class ContentView(model.Model):
|
|
2013
2329
|
"""
|
|
@@ -2131,45 +2447,33 @@ class CostEstimate(model.Model):
|
|
|
2131
2447
|
class CreateCIRunRequest(model.Model):
|
|
2132
2448
|
"""
|
|
2133
2449
|
Attributes:
|
|
2134
|
-
suite_id:
|
|
2135
|
-
branch:
|
|
2136
|
-
|
|
2137
|
-
commit: The commit to test. Omit to test production.
|
|
2138
|
-
user_attributes: User attributes to set for run
|
|
2139
|
-
webhooks: Webhooks to trigger when run completes.
|
|
2450
|
+
suite_id: ID of the CI suite
|
|
2451
|
+
branch: Branch that the CI run should validate. Omit to test production.
|
|
2452
|
+
commit: Commit that the CI run should validate. Omit to test production.
|
|
2140
2453
|
"""
|
|
2141
2454
|
|
|
2142
2455
|
suite_id: Optional[str] = None
|
|
2143
2456
|
branch: Optional[str] = None
|
|
2144
|
-
target: Optional[str] = None
|
|
2145
2457
|
commit: Optional[str] = None
|
|
2146
|
-
user_attributes: Optional[Sequence[str]] = None
|
|
2147
|
-
webhooks: Optional[Sequence[str]] = None
|
|
2148
2458
|
|
|
2149
2459
|
def __init__(
|
|
2150
2460
|
self,
|
|
2151
2461
|
*,
|
|
2152
2462
|
suite_id: Optional[str] = None,
|
|
2153
2463
|
branch: Optional[str] = None,
|
|
2154
|
-
|
|
2155
|
-
commit: Optional[str] = None,
|
|
2156
|
-
user_attributes: Optional[Sequence[str]] = None,
|
|
2157
|
-
webhooks: Optional[Sequence[str]] = None
|
|
2464
|
+
commit: Optional[str] = None
|
|
2158
2465
|
):
|
|
2159
2466
|
self.suite_id = suite_id
|
|
2160
2467
|
self.branch = branch
|
|
2161
|
-
self.target = target
|
|
2162
2468
|
self.commit = commit
|
|
2163
|
-
self.user_attributes = user_attributes
|
|
2164
|
-
self.webhooks = webhooks
|
|
2165
2469
|
|
|
2166
2470
|
|
|
2167
2471
|
@attr.s(auto_attribs=True, init=False)
|
|
2168
2472
|
class CreateCIRunResponse(model.Model):
|
|
2169
2473
|
"""
|
|
2170
2474
|
Attributes:
|
|
2171
|
-
run_id:
|
|
2172
|
-
status:
|
|
2475
|
+
run_id: ID of the CI run
|
|
2476
|
+
status: Status of the CI run (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
2173
2477
|
"""
|
|
2174
2478
|
|
|
2175
2479
|
run_id: Optional[str] = None
|
|
@@ -4500,7 +4804,7 @@ class Dialect(model.Model):
|
|
|
4500
4804
|
|
|
4501
4805
|
|
|
4502
4806
|
@attr.s(auto_attribs=True, init=False)
|
|
4503
|
-
class
|
|
4807
|
+
class DialectDriverNamesVersion(model.Model):
|
|
4504
4808
|
"""
|
|
4505
4809
|
Attributes:
|
|
4506
4810
|
name: Name to be passed to the backend
|
|
@@ -4524,6 +4828,8 @@ class DialectInfo(model.Model):
|
|
|
4524
4828
|
can: Operations the current user is able to perform on this object
|
|
4525
4829
|
default_max_connections: Default number max connections
|
|
4526
4830
|
default_port: Default port number
|
|
4831
|
+
default_max_queries: Default number max queries
|
|
4832
|
+
default_max_queries_per_user: Default number max queries per user
|
|
4527
4833
|
installed: Is the supporting driver installed
|
|
4528
4834
|
label: The human-readable label of the connection
|
|
4529
4835
|
label_for_database_equivalent: What the dialect calls the equivalent of a normal SQL table
|
|
@@ -4537,13 +4843,15 @@ class DialectInfo(model.Model):
|
|
|
4537
4843
|
can: Optional[MutableMapping[str, bool]] = None
|
|
4538
4844
|
default_max_connections: Optional[str] = None
|
|
4539
4845
|
default_port: Optional[str] = None
|
|
4846
|
+
default_max_queries: Optional[str] = None
|
|
4847
|
+
default_max_queries_per_user: Optional[str] = None
|
|
4540
4848
|
installed: Optional[bool] = None
|
|
4541
4849
|
label: Optional[str] = None
|
|
4542
4850
|
label_for_database_equivalent: Optional[str] = None
|
|
4543
4851
|
label_for_schema_equivalent: Optional[str] = None
|
|
4544
4852
|
name: Optional[str] = None
|
|
4545
4853
|
supported_driver_name: Optional[str] = None
|
|
4546
|
-
supported_driver_versions: Optional[Sequence["
|
|
4854
|
+
supported_driver_versions: Optional[Sequence["DialectDriverNamesVersion"]] = None
|
|
4547
4855
|
supported_options: Optional["DialectInfoOptions"] = None
|
|
4548
4856
|
|
|
4549
4857
|
def __init__(
|
|
@@ -4552,18 +4860,24 @@ class DialectInfo(model.Model):
|
|
|
4552
4860
|
can: Optional[MutableMapping[str, bool]] = None,
|
|
4553
4861
|
default_max_connections: Optional[str] = None,
|
|
4554
4862
|
default_port: Optional[str] = None,
|
|
4863
|
+
default_max_queries: Optional[str] = None,
|
|
4864
|
+
default_max_queries_per_user: Optional[str] = None,
|
|
4555
4865
|
installed: Optional[bool] = None,
|
|
4556
4866
|
label: Optional[str] = None,
|
|
4557
4867
|
label_for_database_equivalent: Optional[str] = None,
|
|
4558
4868
|
label_for_schema_equivalent: Optional[str] = None,
|
|
4559
4869
|
name: Optional[str] = None,
|
|
4560
4870
|
supported_driver_name: Optional[str] = None,
|
|
4561
|
-
supported_driver_versions: Optional[
|
|
4871
|
+
supported_driver_versions: Optional[
|
|
4872
|
+
Sequence["DialectDriverNamesVersion"]
|
|
4873
|
+
] = None,
|
|
4562
4874
|
supported_options: Optional["DialectInfoOptions"] = None
|
|
4563
4875
|
):
|
|
4564
4876
|
self.can = can
|
|
4565
4877
|
self.default_max_connections = default_max_connections
|
|
4566
4878
|
self.default_port = default_port
|
|
4879
|
+
self.default_max_queries = default_max_queries
|
|
4880
|
+
self.default_max_queries_per_user = default_max_queries_per_user
|
|
4567
4881
|
self.installed = installed
|
|
4568
4882
|
self.label = label
|
|
4569
4883
|
self.label_for_database_equivalent = label_for_database_equivalent
|
|
@@ -5377,6 +5691,39 @@ class Format(enum.Enum):
|
|
|
5377
5691
|
Format.__new__ = model.safe_enum__new__ # type: ignore
|
|
5378
5692
|
|
|
5379
5693
|
|
|
5694
|
+
@attr.s(auto_attribs=True, init=False)
|
|
5695
|
+
class GenericError(model.Model):
|
|
5696
|
+
"""
|
|
5697
|
+
Attributes:
|
|
5698
|
+
type: A URI reference that identifies the problem type
|
|
5699
|
+
title: Overview of the error
|
|
5700
|
+
detail: Detail of the error
|
|
5701
|
+
status: The HTTP status code for the problem
|
|
5702
|
+
instance: URI reference that identifies the specific occurrence of the problem
|
|
5703
|
+
"""
|
|
5704
|
+
|
|
5705
|
+
type: Optional[str] = None
|
|
5706
|
+
title: Optional[str] = None
|
|
5707
|
+
detail: Optional[str] = None
|
|
5708
|
+
status: Optional[str] = None
|
|
5709
|
+
instance: Optional[str] = None
|
|
5710
|
+
|
|
5711
|
+
def __init__(
|
|
5712
|
+
self,
|
|
5713
|
+
*,
|
|
5714
|
+
type: Optional[str] = None,
|
|
5715
|
+
title: Optional[str] = None,
|
|
5716
|
+
detail: Optional[str] = None,
|
|
5717
|
+
status: Optional[str] = None,
|
|
5718
|
+
instance: Optional[str] = None
|
|
5719
|
+
):
|
|
5720
|
+
self.type = type
|
|
5721
|
+
self.title = title
|
|
5722
|
+
self.detail = detail
|
|
5723
|
+
self.status = status
|
|
5724
|
+
self.instance = instance
|
|
5725
|
+
|
|
5726
|
+
|
|
5380
5727
|
@attr.s(auto_attribs=True, init=False)
|
|
5381
5728
|
class GitBranch(model.Model):
|
|
5382
5729
|
"""
|
|
@@ -6530,6 +6877,22 @@ class JsonBiTableCalc(model.Model):
|
|
|
6530
6877
|
self.measure = measure
|
|
6531
6878
|
|
|
6532
6879
|
|
|
6880
|
+
class Kind(enum.Enum):
|
|
6881
|
+
"""
|
|
6882
|
+
The type of calculation for the period_over_period measure. Valid values are: "previous", "difference", "relative_change". (Enum defined in LookmlModelExploreFieldPeriodOverPeriodParams)
|
|
6883
|
+
|
|
6884
|
+
"""
|
|
6885
|
+
|
|
6886
|
+
previous = "previous"
|
|
6887
|
+
difference = "difference"
|
|
6888
|
+
relative_change = "relative_change"
|
|
6889
|
+
invalid_api_enum_value = "invalid_api_enum_value"
|
|
6890
|
+
|
|
6891
|
+
|
|
6892
|
+
# https://github.com/python/mypy/issues/2427
|
|
6893
|
+
Kind.__new__ = model.safe_enum__new__ # type: ignore
|
|
6894
|
+
|
|
6895
|
+
|
|
6533
6896
|
@attr.s(auto_attribs=True, init=False)
|
|
6534
6897
|
class LDAPConfig(model.Model):
|
|
6535
6898
|
"""
|
|
@@ -7618,6 +7981,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7618
7981
|
name: Fully-qualified name of the field.
|
|
7619
7982
|
strict_value_format: If yes, the field will not be localized with the user attribute number_format. Defaults to no
|
|
7620
7983
|
parameter: Whether this field is a parameter.
|
|
7984
|
+
period_over_period_params:
|
|
7621
7985
|
permanent: Whether this field can be removed from a query.
|
|
7622
7986
|
primary_key: Whether or not the field represents a primary key.
|
|
7623
7987
|
project_name: The name of the project this field is defined in.
|
|
@@ -7633,6 +7997,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7633
7997
|
suggest_explore: The name of the explore to base suggest queries from.
|
|
7634
7998
|
suggestable: Whether or not suggestions are possible for this field.
|
|
7635
7999
|
suggestions: If available, a list of suggestions for this field. For most fields, a suggest query is a more appropriate way to get an up-to-date list of suggestions. Or use enumerations to list all the possible values.
|
|
8000
|
+
synonyms: A list of string synonyms (words or phrases) that can be used to help large language models and app developers understand other ways that users may refer to a field.
|
|
7636
8001
|
tags: An array of arbitrary string tags provided in the model for this field.
|
|
7637
8002
|
type: The LookML type of the field.
|
|
7638
8003
|
user_attribute_filter_types: An array of user attribute types that are allowed to be used in filters on this field. Valid values are: "advanced_filter_string", "advanced_filter_number", "advanced_filter_datetime", "string", "number", "datetime", "relative_url", "yesno", "zipcode".
|
|
@@ -7677,6 +8042,9 @@ class LookmlModelExploreField(model.Model):
|
|
|
7677
8042
|
name: Optional[str] = None
|
|
7678
8043
|
strict_value_format: Optional[bool] = None
|
|
7679
8044
|
parameter: Optional[bool] = None
|
|
8045
|
+
period_over_period_params: Optional[
|
|
8046
|
+
"LookmlModelExploreFieldPeriodOverPeriodParams"
|
|
8047
|
+
] = None
|
|
7680
8048
|
permanent: Optional[bool] = None
|
|
7681
8049
|
primary_key: Optional[bool] = None
|
|
7682
8050
|
project_name: Optional[str] = None
|
|
@@ -7692,6 +8060,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7692
8060
|
suggest_explore: Optional[str] = None
|
|
7693
8061
|
suggestable: Optional[bool] = None
|
|
7694
8062
|
suggestions: Optional[Sequence[str]] = None
|
|
8063
|
+
synonyms: Optional[Sequence[str]] = None
|
|
7695
8064
|
tags: Optional[Sequence[str]] = None
|
|
7696
8065
|
type: Optional[str] = None
|
|
7697
8066
|
user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None
|
|
@@ -7738,6 +8107,9 @@ class LookmlModelExploreField(model.Model):
|
|
|
7738
8107
|
name: Optional[str] = None,
|
|
7739
8108
|
strict_value_format: Optional[bool] = None,
|
|
7740
8109
|
parameter: Optional[bool] = None,
|
|
8110
|
+
period_over_period_params: Optional[
|
|
8111
|
+
"LookmlModelExploreFieldPeriodOverPeriodParams"
|
|
8112
|
+
] = None,
|
|
7741
8113
|
permanent: Optional[bool] = None,
|
|
7742
8114
|
primary_key: Optional[bool] = None,
|
|
7743
8115
|
project_name: Optional[str] = None,
|
|
@@ -7753,6 +8125,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7753
8125
|
suggest_explore: Optional[str] = None,
|
|
7754
8126
|
suggestable: Optional[bool] = None,
|
|
7755
8127
|
suggestions: Optional[Sequence[str]] = None,
|
|
8128
|
+
synonyms: Optional[Sequence[str]] = None,
|
|
7756
8129
|
tags: Optional[Sequence[str]] = None,
|
|
7757
8130
|
type: Optional[str] = None,
|
|
7758
8131
|
user_attribute_filter_types: Optional[
|
|
@@ -7798,6 +8171,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7798
8171
|
self.name = name
|
|
7799
8172
|
self.strict_value_format = strict_value_format
|
|
7800
8173
|
self.parameter = parameter
|
|
8174
|
+
self.period_over_period_params = period_over_period_params
|
|
7801
8175
|
self.permanent = permanent
|
|
7802
8176
|
self.primary_key = primary_key
|
|
7803
8177
|
self.project_name = project_name
|
|
@@ -7813,6 +8187,7 @@ class LookmlModelExploreField(model.Model):
|
|
|
7813
8187
|
self.suggest_explore = suggest_explore
|
|
7814
8188
|
self.suggestable = suggestable
|
|
7815
8189
|
self.suggestions = suggestions
|
|
8190
|
+
self.synonyms = synonyms
|
|
7816
8191
|
self.tags = tags
|
|
7817
8192
|
self.type = type
|
|
7818
8193
|
self.user_attribute_filter_types = user_attribute_filter_types
|
|
@@ -7910,6 +8285,39 @@ class LookmlModelExploreFieldMeasureFilters(model.Model):
|
|
|
7910
8285
|
self.condition = condition
|
|
7911
8286
|
|
|
7912
8287
|
|
|
8288
|
+
@attr.s(auto_attribs=True, init=False)
|
|
8289
|
+
class LookmlModelExploreFieldPeriodOverPeriodParams(model.Model):
|
|
8290
|
+
"""
|
|
8291
|
+
Attributes:
|
|
8292
|
+
based_on: Specifies the measure that will be calculated over the different periods.
|
|
8293
|
+
based_on_time: Specifies the time dimension that this measure will operate over.
|
|
8294
|
+
period: Specifies the time frame for the comparison. Valid values are: "year", "fiscal_year", "quarter", "fiscal_quarter", "month", "week", "date".
|
|
8295
|
+
kind: The type of calculation for the period_over_period measure. Valid values are: "previous", "difference", "relative_change".
|
|
8296
|
+
value_to_date: specifies whether to compare the current partially completed period to an equivalent part of the previous period, or to use the entire previous period.
|
|
8297
|
+
"""
|
|
8298
|
+
|
|
8299
|
+
based_on: Optional[str] = None
|
|
8300
|
+
based_on_time: Optional[str] = None
|
|
8301
|
+
period: Optional["Period"] = None
|
|
8302
|
+
kind: Optional["Kind"] = None
|
|
8303
|
+
value_to_date: Optional[bool] = None
|
|
8304
|
+
|
|
8305
|
+
def __init__(
|
|
8306
|
+
self,
|
|
8307
|
+
*,
|
|
8308
|
+
based_on: Optional[str] = None,
|
|
8309
|
+
based_on_time: Optional[str] = None,
|
|
8310
|
+
period: Optional["Period"] = None,
|
|
8311
|
+
kind: Optional["Kind"] = None,
|
|
8312
|
+
value_to_date: Optional[bool] = None
|
|
8313
|
+
):
|
|
8314
|
+
self.based_on = based_on
|
|
8315
|
+
self.based_on_time = based_on_time
|
|
8316
|
+
self.period = period
|
|
8317
|
+
self.kind = kind
|
|
8318
|
+
self.value_to_date = value_to_date
|
|
8319
|
+
|
|
8320
|
+
|
|
7913
8321
|
@attr.s(auto_attribs=True, init=False)
|
|
7914
8322
|
class LookmlModelExploreFieldset(model.Model):
|
|
7915
8323
|
"""
|
|
@@ -8194,6 +8602,121 @@ class LookmlTestResult(model.Model):
|
|
|
8194
8602
|
self.success = success
|
|
8195
8603
|
|
|
8196
8604
|
|
|
8605
|
+
@attr.s(auto_attribs=True, init=False)
|
|
8606
|
+
class LookMLValidatorError(model.Model):
|
|
8607
|
+
"""
|
|
8608
|
+
Attributes:
|
|
8609
|
+
type: A URI reference that identifies the problem type
|
|
8610
|
+
title: Overview of the error
|
|
8611
|
+
detail: Detail of the error
|
|
8612
|
+
status: The HTTP status code for the problem
|
|
8613
|
+
instance: URI reference that identifies the specific occurrence of the problem
|
|
8614
|
+
model: LookML model that contains the error
|
|
8615
|
+
explore: LookML Explore that contains the error
|
|
8616
|
+
field_name: LookML field that caused the error
|
|
8617
|
+
message: Message returned by the LookML validator
|
|
8618
|
+
severity: Severity of the error (warning, error, fatal, info, success)
|
|
8619
|
+
line_number: Line number of the error in the LookML file
|
|
8620
|
+
lookml_url: URL to the LookML that caused the error
|
|
8621
|
+
file_path: IDE folder path to the LookML file that caused the error
|
|
8622
|
+
"""
|
|
8623
|
+
|
|
8624
|
+
type: Optional[str] = None
|
|
8625
|
+
title: Optional[str] = None
|
|
8626
|
+
detail: Optional[str] = None
|
|
8627
|
+
status: Optional[str] = None
|
|
8628
|
+
instance: Optional[str] = None
|
|
8629
|
+
model: Optional[str] = None
|
|
8630
|
+
explore: Optional[str] = None
|
|
8631
|
+
field_name: Optional[str] = None
|
|
8632
|
+
message: Optional[str] = None
|
|
8633
|
+
severity: Optional[str] = None
|
|
8634
|
+
line_number: Optional[str] = None
|
|
8635
|
+
lookml_url: Optional[str] = None
|
|
8636
|
+
file_path: Optional[str] = None
|
|
8637
|
+
|
|
8638
|
+
def __init__(
|
|
8639
|
+
self,
|
|
8640
|
+
*,
|
|
8641
|
+
type: Optional[str] = None,
|
|
8642
|
+
title: Optional[str] = None,
|
|
8643
|
+
detail: Optional[str] = None,
|
|
8644
|
+
status: Optional[str] = None,
|
|
8645
|
+
instance: Optional[str] = None,
|
|
8646
|
+
model: Optional[str] = None,
|
|
8647
|
+
explore: Optional[str] = None,
|
|
8648
|
+
field_name: Optional[str] = None,
|
|
8649
|
+
message: Optional[str] = None,
|
|
8650
|
+
severity: Optional[str] = None,
|
|
8651
|
+
line_number: Optional[str] = None,
|
|
8652
|
+
lookml_url: Optional[str] = None,
|
|
8653
|
+
file_path: Optional[str] = None
|
|
8654
|
+
):
|
|
8655
|
+
self.type = type
|
|
8656
|
+
self.title = title
|
|
8657
|
+
self.detail = detail
|
|
8658
|
+
self.status = status
|
|
8659
|
+
self.instance = instance
|
|
8660
|
+
self.model = model
|
|
8661
|
+
self.explore = explore
|
|
8662
|
+
self.field_name = field_name
|
|
8663
|
+
self.message = message
|
|
8664
|
+
self.severity = severity
|
|
8665
|
+
self.line_number = line_number
|
|
8666
|
+
self.lookml_url = lookml_url
|
|
8667
|
+
self.file_path = file_path
|
|
8668
|
+
|
|
8669
|
+
|
|
8670
|
+
@attr.s(auto_attribs=True, init=False)
|
|
8671
|
+
class LookMLValidatorErrorItem(model.Model):
|
|
8672
|
+
"""
|
|
8673
|
+
Attributes:
|
|
8674
|
+
lookml_error:
|
|
8675
|
+
generic_error:
|
|
8676
|
+
"""
|
|
8677
|
+
|
|
8678
|
+
lookml_error: Optional["LookMLValidatorError"] = None
|
|
8679
|
+
generic_error: Optional["GenericError"] = None
|
|
8680
|
+
|
|
8681
|
+
def __init__(
|
|
8682
|
+
self,
|
|
8683
|
+
*,
|
|
8684
|
+
lookml_error: Optional["LookMLValidatorError"] = None,
|
|
8685
|
+
generic_error: Optional["GenericError"] = None
|
|
8686
|
+
):
|
|
8687
|
+
self.lookml_error = lookml_error
|
|
8688
|
+
self.generic_error = generic_error
|
|
8689
|
+
|
|
8690
|
+
|
|
8691
|
+
@attr.s(auto_attribs=True, init=False)
|
|
8692
|
+
class LookMLValidatorResult(model.Model):
|
|
8693
|
+
"""
|
|
8694
|
+
Attributes:
|
|
8695
|
+
name: Name of the validator (lookml)
|
|
8696
|
+
status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
8697
|
+
error_count: Total number of failed LookML validations
|
|
8698
|
+
errors: Details of the LookML that failed validation
|
|
8699
|
+
"""
|
|
8700
|
+
|
|
8701
|
+
name: Optional[str] = None
|
|
8702
|
+
status: Optional[str] = None
|
|
8703
|
+
error_count: Optional[int] = None
|
|
8704
|
+
errors: Optional[Sequence["LookMLValidatorErrorItem"]] = None
|
|
8705
|
+
|
|
8706
|
+
def __init__(
|
|
8707
|
+
self,
|
|
8708
|
+
*,
|
|
8709
|
+
name: Optional[str] = None,
|
|
8710
|
+
status: Optional[str] = None,
|
|
8711
|
+
error_count: Optional[int] = None,
|
|
8712
|
+
errors: Optional[Sequence["LookMLValidatorErrorItem"]] = None
|
|
8713
|
+
):
|
|
8714
|
+
self.name = name
|
|
8715
|
+
self.status = status
|
|
8716
|
+
self.error_count = error_count
|
|
8717
|
+
self.errors = errors
|
|
8718
|
+
|
|
8719
|
+
|
|
8197
8720
|
@attr.s(auto_attribs=True, init=False)
|
|
8198
8721
|
class LookModel(model.Model):
|
|
8199
8722
|
"""
|
|
@@ -9295,6 +9818,26 @@ class PasswordConfig(model.Model):
|
|
|
9295
9818
|
self.require_special = require_special
|
|
9296
9819
|
|
|
9297
9820
|
|
|
9821
|
+
class Period(enum.Enum):
|
|
9822
|
+
"""
|
|
9823
|
+
Specifies the time frame for the comparison. Valid values are: "year", "fiscal_year", "quarter", "fiscal_quarter", "month", "week", "date". (Enum defined in LookmlModelExploreFieldPeriodOverPeriodParams)
|
|
9824
|
+
|
|
9825
|
+
"""
|
|
9826
|
+
|
|
9827
|
+
year = "year"
|
|
9828
|
+
fiscal_year = "fiscal_year"
|
|
9829
|
+
quarter = "quarter"
|
|
9830
|
+
fiscal_quarter = "fiscal_quarter"
|
|
9831
|
+
month = "month"
|
|
9832
|
+
week = "week"
|
|
9833
|
+
date = "date"
|
|
9834
|
+
invalid_api_enum_value = "invalid_api_enum_value"
|
|
9835
|
+
|
|
9836
|
+
|
|
9837
|
+
# https://github.com/python/mypy/issues/2427
|
|
9838
|
+
Period.__new__ = model.safe_enum__new__ # type: ignore
|
|
9839
|
+
|
|
9840
|
+
|
|
9298
9841
|
@attr.s(auto_attribs=True, init=False)
|
|
9299
9842
|
class Permission(model.Model):
|
|
9300
9843
|
"""
|
|
@@ -11783,6 +12326,154 @@ class SqlQueryCreate(model.Model):
|
|
|
11783
12326
|
self.vis_config = vis_config
|
|
11784
12327
|
|
|
11785
12328
|
|
|
12329
|
+
@attr.s(auto_attribs=True, init=False)
|
|
12330
|
+
class SqlValidatorError(model.Model):
|
|
12331
|
+
"""
|
|
12332
|
+
Attributes:
|
|
12333
|
+
type: A URI reference that identifies the problem type
|
|
12334
|
+
title: Overview of the error
|
|
12335
|
+
detail: Detail of the error
|
|
12336
|
+
status: The HTTP status code for the problem
|
|
12337
|
+
instance: URI reference that identifies the specific occurrence of the problem
|
|
12338
|
+
model: LookML model that contains the Explore that failed SQL validation
|
|
12339
|
+
explore: LookML Explore that failed SQL validation
|
|
12340
|
+
message: Message returned by the SQL validation
|
|
12341
|
+
explore_url: URL to the Explore
|
|
12342
|
+
lookml_url: URL to the LookML that caused the error
|
|
12343
|
+
dimension: LookML dimension that caused the error
|
|
12344
|
+
line_number: Line of the error in the LookML file
|
|
12345
|
+
"""
|
|
12346
|
+
|
|
12347
|
+
type: Optional[str] = None
|
|
12348
|
+
title: Optional[str] = None
|
|
12349
|
+
detail: Optional[str] = None
|
|
12350
|
+
status: Optional[str] = None
|
|
12351
|
+
instance: Optional[str] = None
|
|
12352
|
+
model: Optional[str] = None
|
|
12353
|
+
explore: Optional[str] = None
|
|
12354
|
+
message: Optional[str] = None
|
|
12355
|
+
explore_url: Optional[str] = None
|
|
12356
|
+
lookml_url: Optional[str] = None
|
|
12357
|
+
dimension: Optional[str] = None
|
|
12358
|
+
line_number: Optional[str] = None
|
|
12359
|
+
|
|
12360
|
+
def __init__(
|
|
12361
|
+
self,
|
|
12362
|
+
*,
|
|
12363
|
+
type: Optional[str] = None,
|
|
12364
|
+
title: Optional[str] = None,
|
|
12365
|
+
detail: Optional[str] = None,
|
|
12366
|
+
status: Optional[str] = None,
|
|
12367
|
+
instance: Optional[str] = None,
|
|
12368
|
+
model: Optional[str] = None,
|
|
12369
|
+
explore: Optional[str] = None,
|
|
12370
|
+
message: Optional[str] = None,
|
|
12371
|
+
explore_url: Optional[str] = None,
|
|
12372
|
+
lookml_url: Optional[str] = None,
|
|
12373
|
+
dimension: Optional[str] = None,
|
|
12374
|
+
line_number: Optional[str] = None
|
|
12375
|
+
):
|
|
12376
|
+
self.type = type
|
|
12377
|
+
self.title = title
|
|
12378
|
+
self.detail = detail
|
|
12379
|
+
self.status = status
|
|
12380
|
+
self.instance = instance
|
|
12381
|
+
self.model = model
|
|
12382
|
+
self.explore = explore
|
|
12383
|
+
self.message = message
|
|
12384
|
+
self.explore_url = explore_url
|
|
12385
|
+
self.lookml_url = lookml_url
|
|
12386
|
+
self.dimension = dimension
|
|
12387
|
+
self.line_number = line_number
|
|
12388
|
+
|
|
12389
|
+
|
|
12390
|
+
@attr.s(auto_attribs=True, init=False)
|
|
12391
|
+
class SqlValidatorErrorItem(model.Model):
|
|
12392
|
+
"""
|
|
12393
|
+
Attributes:
|
|
12394
|
+
sql_error:
|
|
12395
|
+
generic_error:
|
|
12396
|
+
"""
|
|
12397
|
+
|
|
12398
|
+
sql_error: Optional["SqlValidatorError"] = None
|
|
12399
|
+
generic_error: Optional["GenericError"] = None
|
|
12400
|
+
|
|
12401
|
+
def __init__(
|
|
12402
|
+
self,
|
|
12403
|
+
*,
|
|
12404
|
+
sql_error: Optional["SqlValidatorError"] = None,
|
|
12405
|
+
generic_error: Optional["GenericError"] = None
|
|
12406
|
+
):
|
|
12407
|
+
self.sql_error = sql_error
|
|
12408
|
+
self.generic_error = generic_error
|
|
12409
|
+
|
|
12410
|
+
|
|
12411
|
+
@attr.s(auto_attribs=True, init=False)
|
|
12412
|
+
class SqlValidatorResult(model.Model):
|
|
12413
|
+
"""
|
|
12414
|
+
Attributes:
|
|
12415
|
+
name: Name of the validator (sql)
|
|
12416
|
+
incremental: Whether the validation was incremental
|
|
12417
|
+
status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
12418
|
+
result: The results of tested Explores
|
|
12419
|
+
"""
|
|
12420
|
+
|
|
12421
|
+
name: Optional[str] = None
|
|
12422
|
+
incremental: Optional[bool] = None
|
|
12423
|
+
status: Optional[str] = None
|
|
12424
|
+
result: Optional[Sequence["SqlValidatorTestedExplore"]] = None
|
|
12425
|
+
|
|
12426
|
+
def __init__(
|
|
12427
|
+
self,
|
|
12428
|
+
*,
|
|
12429
|
+
name: Optional[str] = None,
|
|
12430
|
+
incremental: Optional[bool] = None,
|
|
12431
|
+
status: Optional[str] = None,
|
|
12432
|
+
result: Optional[Sequence["SqlValidatorTestedExplore"]] = None
|
|
12433
|
+
):
|
|
12434
|
+
self.name = name
|
|
12435
|
+
self.incremental = incremental
|
|
12436
|
+
self.status = status
|
|
12437
|
+
self.result = result
|
|
12438
|
+
|
|
12439
|
+
|
|
12440
|
+
@attr.s(auto_attribs=True, init=False)
|
|
12441
|
+
class SqlValidatorTestedExplore(model.Model):
|
|
12442
|
+
"""
|
|
12443
|
+
Attributes:
|
|
12444
|
+
model: LookML model that was tested
|
|
12445
|
+
explore: LookML Explore that was tested
|
|
12446
|
+
status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running)
|
|
12447
|
+
skip_reason: Reason the validation was skipped
|
|
12448
|
+
error_count: Total number of failed validations
|
|
12449
|
+
errors: Details of the LookML that failed SQL validation
|
|
12450
|
+
"""
|
|
12451
|
+
|
|
12452
|
+
model: Optional[str] = None
|
|
12453
|
+
explore: Optional[str] = None
|
|
12454
|
+
status: Optional[str] = None
|
|
12455
|
+
skip_reason: Optional[str] = None
|
|
12456
|
+
error_count: Optional[int] = None
|
|
12457
|
+
errors: Optional[Sequence["SqlValidatorErrorItem"]] = None
|
|
12458
|
+
|
|
12459
|
+
def __init__(
|
|
12460
|
+
self,
|
|
12461
|
+
*,
|
|
12462
|
+
model: Optional[str] = None,
|
|
12463
|
+
explore: Optional[str] = None,
|
|
12464
|
+
status: Optional[str] = None,
|
|
12465
|
+
skip_reason: Optional[str] = None,
|
|
12466
|
+
error_count: Optional[int] = None,
|
|
12467
|
+
errors: Optional[Sequence["SqlValidatorErrorItem"]] = None
|
|
12468
|
+
):
|
|
12469
|
+
self.model = model
|
|
12470
|
+
self.explore = explore
|
|
12471
|
+
self.status = status
|
|
12472
|
+
self.skip_reason = skip_reason
|
|
12473
|
+
self.error_count = error_count
|
|
12474
|
+
self.errors = errors
|
|
12475
|
+
|
|
12476
|
+
|
|
11786
12477
|
@attr.s(auto_attribs=True, init=False)
|
|
11787
12478
|
class SshPublicKey(model.Model):
|
|
11788
12479
|
"""
|
looker_sdk/sdk/constants.py
CHANGED
looker_sdk/version.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
looker_sdk/__init__.py,sha256=0UOw2v-BP1bNoBIIm-BnyKUpGQB3Zx-JZRmpYyLiIuY,2589
|
|
2
|
-
looker_sdk/error.py,sha256=
|
|
2
|
+
looker_sdk/error.py,sha256=X1TcifswI_UGOTtM4-Fn_gRVunvbJbzfd_gUJbx6mV4,4957
|
|
3
3
|
looker_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
looker_sdk/version.py,sha256=
|
|
4
|
+
looker_sdk/version.py,sha256=VWKWa0Qtzlac02pyHfPTzvAnJBX1pUKijoIgTBJChyA,1156
|
|
5
5
|
looker_sdk/rtl/__init__.py,sha256=hgj6CO_Du2XcJ4bRYbhaVS3dvLxjCqPQDR8KwD9IPTQ,1132
|
|
6
6
|
looker_sdk/rtl/api_methods.py,sha256=J-dm7UMyJajsJDCB0JMpGUmp80I8oPMs7cggdIaCWng,8862
|
|
7
7
|
looker_sdk/rtl/api_settings.py,sha256=0QbmNhfgjBJNnr1CNEMxCHoiu908jT8amAtSAha1xS8,6953
|
|
@@ -14,10 +14,10 @@ looker_sdk/rtl/requests_transport.py,sha256=2lckuJyjeySAuAn7v-RA_xTjjWe53uCCLSWg
|
|
|
14
14
|
looker_sdk/rtl/serialize.py,sha256=pO2arIln2QmuEjTodsVmVrJixRjBSsUGKEcMTpxshNM,4447
|
|
15
15
|
looker_sdk/rtl/transport.py,sha256=zNCaGmmJBtF87iLS6xtSTwiyEXP0BDdMJafPn0_tIrk,3911
|
|
16
16
|
looker_sdk/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
looker_sdk/sdk/constants.py,sha256=
|
|
17
|
+
looker_sdk/sdk/constants.py,sha256=8Yk1-WNAU4zJIqumb3IkWqE-mck9ptUBeJ3OxLMGG6Y,1187
|
|
18
18
|
looker_sdk/sdk/api40/__init__.py,sha256=Dvx1t9vDBvgEl-p1eeP7ebEC6Q6wb6rASPi7nx3z7dg,18
|
|
19
|
-
looker_sdk/sdk/api40/methods.py,sha256=
|
|
20
|
-
looker_sdk/sdk/api40/models.py,sha256=
|
|
19
|
+
looker_sdk/sdk/api40/methods.py,sha256=3vK-tTmA-JA72QF6KZEFPsA2GIvqJlbvVxWgS9hKsKs,526390
|
|
20
|
+
looker_sdk/sdk/api40/models.py,sha256=pLYCJ0m8vWJ7Y1bNKGedE3MHgj6EAbgOMHsgfZwGFMo,682161
|
|
21
21
|
tests/integration/__init__.py,sha256=K4tvUu8CgFRwtDhDNixHKDDb8uubXgevQBq8JmZvf8Y,63
|
|
22
22
|
tests/integration/test_methods.py,sha256=GXeBAxKYLH45YsPDGduRxaoGKBNoxRX1Cxdo4a_2eW8,24977
|
|
23
23
|
tests/integration/test_netrc.py,sha256=XJAzCh853Q0P6ZY_Cq6CtRHAqlvjGkBItgvxJMQw4Sw,1595
|
|
@@ -29,8 +29,8 @@ tests/rtl/test_auth_token.py,sha256=Ep4u0ushHqKiIkGgw-XVn1lSzPeH6pVmDB2bw-MXNAo,
|
|
|
29
29
|
tests/rtl/test_requests_transport.py,sha256=mSsxudpAkKe-uSVOIzDrV0XCFlj_ACt6T1yzbUbuwG0,5442
|
|
30
30
|
tests/rtl/test_serialize.py,sha256=1SC8jigZFFL3mrU2oSTnc2nbDxXve224_r3GaxEeU90,25917
|
|
31
31
|
tests/rtl/test_transport.py,sha256=tI83LYOeuWEmkngXyRqMjW-pv-ipLPLj4t0hGD8zqL8,1555
|
|
32
|
-
looker_sdk-25.
|
|
33
|
-
looker_sdk-25.
|
|
34
|
-
looker_sdk-25.
|
|
35
|
-
looker_sdk-25.
|
|
36
|
-
looker_sdk-25.
|
|
32
|
+
looker_sdk-25.10.0.dist-info/LICENSE.txt,sha256=N4Rmmbuo5EryYSCXcvjuXL1ZXwyXanRzuGP-dJzwsoE,1094
|
|
33
|
+
looker_sdk-25.10.0.dist-info/METADATA,sha256=cUZVOH_EKbpEa3UZNsmb71c2KwOng9m6obsRleNw6ZI,7022
|
|
34
|
+
looker_sdk-25.10.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
35
|
+
looker_sdk-25.10.0.dist-info/top_level.txt,sha256=tDPNJRQM_A_Oncxlgxwvnzq7hZDWZaadt_nR8DmORTI,17
|
|
36
|
+
looker_sdk-25.10.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|