great-expectations-cloud 20240523.0.dev0__py3-none-any.whl → 20251124.0.dev1__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.
- great_expectations_cloud/agent/__init__.py +3 -0
- great_expectations_cloud/agent/actions/__init__.py +8 -5
- great_expectations_cloud/agent/actions/agent_action.py +21 -6
- great_expectations_cloud/agent/actions/draft_datasource_config_action.py +45 -24
- great_expectations_cloud/agent/actions/generate_data_quality_check_expectations_action.py +557 -0
- great_expectations_cloud/agent/actions/list_asset_names.py +65 -0
- great_expectations_cloud/agent/actions/run_checkpoint.py +74 -27
- great_expectations_cloud/agent/actions/run_metric_list_action.py +11 -5
- great_expectations_cloud/agent/actions/run_scheduled_checkpoint.py +67 -0
- great_expectations_cloud/agent/actions/run_window_checkpoint.py +66 -0
- great_expectations_cloud/agent/actions/utils.py +35 -0
- great_expectations_cloud/agent/agent.py +444 -101
- great_expectations_cloud/agent/cli.py +2 -2
- great_expectations_cloud/agent/config.py +19 -5
- great_expectations_cloud/agent/event_handler.py +49 -12
- great_expectations_cloud/agent/exceptions.py +9 -0
- great_expectations_cloud/agent/message_service/asyncio_rabbit_mq_client.py +80 -14
- great_expectations_cloud/agent/message_service/subscriber.py +8 -5
- great_expectations_cloud/agent/models.py +197 -20
- great_expectations_cloud/agent/utils.py +84 -0
- great_expectations_cloud/logging/logging_cfg.py +20 -4
- great_expectations_cloud/py.typed +0 -0
- {great_expectations_cloud-20240523.0.dev0.dist-info → great_expectations_cloud-20251124.0.dev1.dist-info}/METADATA +54 -46
- great_expectations_cloud-20251124.0.dev1.dist-info/RECORD +34 -0
- {great_expectations_cloud-20240523.0.dev0.dist-info → great_expectations_cloud-20251124.0.dev1.dist-info}/WHEEL +1 -1
- great_expectations_cloud/agent/actions/data_assistants/__init__.py +0 -8
- great_expectations_cloud/agent/actions/data_assistants/run_missingness_data_assistant.py +0 -45
- great_expectations_cloud/agent/actions/data_assistants/run_onboarding_data_assistant.py +0 -45
- great_expectations_cloud/agent/actions/data_assistants/utils.py +0 -123
- great_expectations_cloud/agent/actions/list_table_names.py +0 -76
- great_expectations_cloud-20240523.0.dev0.dist-info/RECORD +0 -32
- {great_expectations_cloud-20240523.0.dev0.dist-info → great_expectations_cloud-20251124.0.dev1.dist-info}/entry_points.txt +0 -0
- {great_expectations_cloud-20240523.0.dev0.dist-info → great_expectations_cloud-20251124.0.dev1.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
-
|
|
5
|
-
from typing_extensions import override
|
|
6
|
-
|
|
7
|
-
from great_expectations_cloud.agent.actions.agent_action import ActionResult, AgentAction
|
|
8
|
-
from great_expectations_cloud.agent.actions.data_assistants.utils import (
|
|
9
|
-
DataAssistantType,
|
|
10
|
-
build_action_result,
|
|
11
|
-
build_batch_request,
|
|
12
|
-
)
|
|
13
|
-
from great_expectations_cloud.agent.event_handler import register_event_action
|
|
14
|
-
from great_expectations_cloud.agent.models import RunMissingnessDataAssistantEvent
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from great_expectations.data_context import CloudDataContext
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class RunMissingnessDataAssistantAction(AgentAction[RunMissingnessDataAssistantEvent]):
|
|
21
|
-
def __init__(self, context: CloudDataContext):
|
|
22
|
-
super().__init__(context=context)
|
|
23
|
-
self._data_assistant = self._context.assistants.missingness
|
|
24
|
-
|
|
25
|
-
@override
|
|
26
|
-
def run(
|
|
27
|
-
self,
|
|
28
|
-
event: RunMissingnessDataAssistantEvent,
|
|
29
|
-
id: str,
|
|
30
|
-
) -> ActionResult:
|
|
31
|
-
batch_request = build_batch_request(context=self._context, event=event)
|
|
32
|
-
|
|
33
|
-
data_assistant_result = self._data_assistant.run(
|
|
34
|
-
batch_request=batch_request,
|
|
35
|
-
)
|
|
36
|
-
return build_action_result(
|
|
37
|
-
context=self._context,
|
|
38
|
-
data_assistant_name=DataAssistantType.MISSINGNESS,
|
|
39
|
-
event=event,
|
|
40
|
-
data_assistant_result=data_assistant_result,
|
|
41
|
-
id=id,
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
register_event_action("0", RunMissingnessDataAssistantEvent, RunMissingnessDataAssistantAction)
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
-
|
|
5
|
-
from typing_extensions import override
|
|
6
|
-
|
|
7
|
-
from great_expectations_cloud.agent.actions.agent_action import ActionResult, AgentAction
|
|
8
|
-
from great_expectations_cloud.agent.actions.data_assistants.utils import (
|
|
9
|
-
DataAssistantType,
|
|
10
|
-
build_action_result,
|
|
11
|
-
build_batch_request,
|
|
12
|
-
)
|
|
13
|
-
from great_expectations_cloud.agent.event_handler import register_event_action
|
|
14
|
-
from great_expectations_cloud.agent.models import RunOnboardingDataAssistantEvent
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from great_expectations.data_context import CloudDataContext
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class RunOnboardingDataAssistantAction(AgentAction[RunOnboardingDataAssistantEvent]):
|
|
21
|
-
def __init__(self, context: CloudDataContext):
|
|
22
|
-
super().__init__(context=context)
|
|
23
|
-
self._data_assistant = self._context.assistants.onboarding
|
|
24
|
-
|
|
25
|
-
@override
|
|
26
|
-
def run(
|
|
27
|
-
self,
|
|
28
|
-
event: RunOnboardingDataAssistantEvent,
|
|
29
|
-
id: str,
|
|
30
|
-
) -> ActionResult:
|
|
31
|
-
batch_request = build_batch_request(context=self._context, event=event)
|
|
32
|
-
|
|
33
|
-
data_assistant_result = self._data_assistant.run(
|
|
34
|
-
batch_request=batch_request,
|
|
35
|
-
)
|
|
36
|
-
return build_action_result(
|
|
37
|
-
context=self._context,
|
|
38
|
-
data_assistant_name=DataAssistantType.ONBOARDING,
|
|
39
|
-
event=event,
|
|
40
|
-
data_assistant_result=data_assistant_result,
|
|
41
|
-
id=id,
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
register_event_action("0", RunOnboardingDataAssistantEvent, RunOnboardingDataAssistantAction)
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import enum
|
|
4
|
-
from datetime import datetime
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
6
|
-
|
|
7
|
-
from great_expectations.datasource.fluent import Datasource as FluentDatasource
|
|
8
|
-
from great_expectations.exceptions import DataContextError
|
|
9
|
-
|
|
10
|
-
from great_expectations_cloud.agent.actions.agent_action import (
|
|
11
|
-
ActionResult,
|
|
12
|
-
)
|
|
13
|
-
from great_expectations_cloud.agent.models import (
|
|
14
|
-
CreatedResource,
|
|
15
|
-
RunDataAssistantEvent,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
if TYPE_CHECKING:
|
|
19
|
-
from great_expectations.core import ExpectationSuite
|
|
20
|
-
from great_expectations.core.batch import BatchRequest
|
|
21
|
-
from great_expectations.data_context.data_context import CloudDataContext
|
|
22
|
-
from great_expectations.rule_based_profiler.data_assistant_result.data_assistant_result import (
|
|
23
|
-
DataAssistantResult,
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class DataAssistantType(str, enum.Enum):
|
|
28
|
-
MISSINGNESS = "Missingness"
|
|
29
|
-
ONBOARDING = "Onboarding"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def build_batch_request(
|
|
33
|
-
context: CloudDataContext,
|
|
34
|
-
event: RunDataAssistantEvent,
|
|
35
|
-
) -> BatchRequest:
|
|
36
|
-
datasource = context.get_datasource(datasource_name=event.datasource_name)
|
|
37
|
-
if not isinstance(datasource, FluentDatasource):
|
|
38
|
-
raise TypeError( # noqa: TRY003 # one off error
|
|
39
|
-
"The RunDataAssistant Action can only be used with a fluent-style Data Source."
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
asset = datasource.get_asset(asset_name=event.data_asset_name)
|
|
43
|
-
try:
|
|
44
|
-
batch_request = asset.build_batch_request()
|
|
45
|
-
except ValueError as e:
|
|
46
|
-
raise ValueError( # noqa: TRY003 # one off error
|
|
47
|
-
"The RunDataAssistant Action for data assistant cannot be used with an "
|
|
48
|
-
"in-memory Data Asset."
|
|
49
|
-
) from e
|
|
50
|
-
|
|
51
|
-
return batch_request
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def build_action_result(
|
|
55
|
-
context: CloudDataContext,
|
|
56
|
-
data_assistant_name: DataAssistantType,
|
|
57
|
-
event: RunDataAssistantEvent,
|
|
58
|
-
data_assistant_result: DataAssistantResult,
|
|
59
|
-
id: str,
|
|
60
|
-
) -> ActionResult:
|
|
61
|
-
if event.expectation_suite_name is not None:
|
|
62
|
-
expectation_suite_name = event.expectation_suite_name
|
|
63
|
-
else:
|
|
64
|
-
expectation_suite_name = f"{event.data_asset_name} {data_assistant_name.value} Suite"
|
|
65
|
-
|
|
66
|
-
checkpoint_name = f"{event.data_asset_name} {data_assistant_name.value} Checkpoint"
|
|
67
|
-
|
|
68
|
-
# build tz aware timestamp
|
|
69
|
-
tz = datetime.now().astimezone().tzinfo
|
|
70
|
-
timestamp = datetime.now(tz=tz)
|
|
71
|
-
|
|
72
|
-
# ensure we have unique names for created resources
|
|
73
|
-
try:
|
|
74
|
-
context.get_expectation_suite(expectation_suite_name=expectation_suite_name)
|
|
75
|
-
# if that didn't error, this name exists, so we add the timestamp
|
|
76
|
-
expectation_suite_name = f"{expectation_suite_name} {timestamp}"
|
|
77
|
-
except DataContextError:
|
|
78
|
-
# resource is unique
|
|
79
|
-
pass
|
|
80
|
-
|
|
81
|
-
try:
|
|
82
|
-
context.get_checkpoint(name=checkpoint_name)
|
|
83
|
-
# if that didn't error, this name exists, so we add the timestamp
|
|
84
|
-
checkpoint_name = f"{checkpoint_name} {timestamp}"
|
|
85
|
-
except DataContextError:
|
|
86
|
-
# resource is unique
|
|
87
|
-
pass
|
|
88
|
-
|
|
89
|
-
expectation_suite: ExpectationSuite = data_assistant_result.get_expectation_suite(
|
|
90
|
-
expectation_suite_name=expectation_suite_name
|
|
91
|
-
)
|
|
92
|
-
context.add_expectation_suite(expectation_suite=expectation_suite)
|
|
93
|
-
|
|
94
|
-
checkpoint_config = {
|
|
95
|
-
"name": checkpoint_name,
|
|
96
|
-
"validations": [
|
|
97
|
-
{
|
|
98
|
-
"expectation_suite_name": expectation_suite_name,
|
|
99
|
-
"expectation_suite_ge_cloud_id": expectation_suite.ge_cloud_id,
|
|
100
|
-
"batch_request": {
|
|
101
|
-
"datasource_name": event.datasource_name,
|
|
102
|
-
"data_asset_name": event.data_asset_name,
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
],
|
|
106
|
-
"config_version": 1,
|
|
107
|
-
"class_name": "Checkpoint",
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
checkpoint = context.add_checkpoint(**checkpoint_config)
|
|
111
|
-
|
|
112
|
-
expectation_suite_id = expectation_suite.ge_cloud_id
|
|
113
|
-
checkpoint_id = checkpoint.ge_cloud_id
|
|
114
|
-
if expectation_suite_id is None or checkpoint_id is None:
|
|
115
|
-
raise ValueError("Cloud backed resources must have an ID.") # noqa: TRY003 # one off error
|
|
116
|
-
return ActionResult(
|
|
117
|
-
id=id,
|
|
118
|
-
type=event.type,
|
|
119
|
-
created_resources=[
|
|
120
|
-
CreatedResource(resource_id=expectation_suite_id, type="ExpectationSuite"),
|
|
121
|
-
CreatedResource(resource_id=checkpoint_id, type="Checkpoint"),
|
|
122
|
-
],
|
|
123
|
-
)
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
-
|
|
5
|
-
from great_expectations.compatibility import pydantic
|
|
6
|
-
from great_expectations.compatibility.sqlalchemy import inspect
|
|
7
|
-
from great_expectations.core.http import create_session
|
|
8
|
-
from great_expectations.datasource.fluent import SQLDatasource
|
|
9
|
-
from great_expectations.exceptions import GXCloudError
|
|
10
|
-
from typing_extensions import override
|
|
11
|
-
|
|
12
|
-
from great_expectations_cloud.agent.actions.agent_action import (
|
|
13
|
-
ActionResult,
|
|
14
|
-
AgentAction,
|
|
15
|
-
)
|
|
16
|
-
from great_expectations_cloud.agent.config import (
|
|
17
|
-
GxAgentEnvVars,
|
|
18
|
-
generate_config_validation_error_text,
|
|
19
|
-
)
|
|
20
|
-
from great_expectations_cloud.agent.event_handler import register_event_action
|
|
21
|
-
from great_expectations_cloud.agent.models import (
|
|
22
|
-
ListTableNamesEvent,
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
if TYPE_CHECKING:
|
|
26
|
-
from great_expectations.compatibility.sqlalchemy.engine import Inspector
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class ListTableNamesAction(AgentAction[ListTableNamesEvent]):
|
|
30
|
-
@override
|
|
31
|
-
def run(self, event: ListTableNamesEvent, id: str) -> ActionResult:
|
|
32
|
-
datasource_name: str = event.datasource_name
|
|
33
|
-
datasource = self._context.get_datasource(datasource_name=datasource_name)
|
|
34
|
-
if not isinstance(datasource, SQLDatasource):
|
|
35
|
-
raise TypeError( # noqa: TRY003 # one off error
|
|
36
|
-
f"This operation requires a SQL Data Source but got {type(datasource).__name__}."
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
inspector: Inspector = inspect(datasource.get_engine())
|
|
40
|
-
table_names: list[str] = inspector.get_table_names()
|
|
41
|
-
|
|
42
|
-
self._add_or_update_table_names_list(
|
|
43
|
-
datasource_id=str(datasource.id), table_names=table_names
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
return ActionResult(
|
|
47
|
-
id=id,
|
|
48
|
-
type=event.type,
|
|
49
|
-
created_resources=[],
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
def _add_or_update_table_names_list(self, datasource_id: str, table_names: list[str]) -> None:
|
|
53
|
-
try:
|
|
54
|
-
cloud_config = GxAgentEnvVars()
|
|
55
|
-
except pydantic.ValidationError as validation_err:
|
|
56
|
-
raise RuntimeError(
|
|
57
|
-
generate_config_validation_error_text(validation_err)
|
|
58
|
-
) from validation_err
|
|
59
|
-
|
|
60
|
-
session = create_session(access_token=cloud_config.gx_cloud_access_token)
|
|
61
|
-
response = session.patch(
|
|
62
|
-
url=f"{cloud_config.gx_cloud_base_url}/organizations/"
|
|
63
|
-
f"{cloud_config.gx_cloud_organization_id}/datasources/{datasource_id}",
|
|
64
|
-
json={"table_names": table_names},
|
|
65
|
-
)
|
|
66
|
-
if response.status_code != 204: # noqa: PLR2004
|
|
67
|
-
raise GXCloudError(
|
|
68
|
-
message=f"ListTableNamesAction encountered an error while connecting to GX Cloud. "
|
|
69
|
-
f"Unable to update "
|
|
70
|
-
f"table_names for Data Source with ID"
|
|
71
|
-
f"={datasource_id}.",
|
|
72
|
-
response=response,
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
register_event_action("0", ListTableNamesEvent, ListTableNamesAction)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
great_expectations_cloud/__init__.py,sha256=1mr5RDyA2N38eynvEfVbuYIbjFadeJfqZ-X9CrqYiVo,150
|
|
2
|
-
great_expectations_cloud/agent/__init__.py,sha256=et60Glanwmrnnj3I_gL7fQDIz-gWB3jgO6u8Ag8Klho,244
|
|
3
|
-
great_expectations_cloud/agent/actions/__init__.py,sha256=Sxiu30lGA-5CB9-WFbKTv4agJP_0hgqvUZBJZFkb8uo,733
|
|
4
|
-
great_expectations_cloud/agent/actions/agent_action.py,sha256=_Is2wPxYirSh6jRVZbo_hYPW3vy5hqsd-tMGgl3-o3U,763
|
|
5
|
-
great_expectations_cloud/agent/actions/data_assistants/__init__.py,sha256=yBfQEyYMBNTMjoMTvaTxuwz6WnOPUhHRUPLoHAINgc4,316
|
|
6
|
-
great_expectations_cloud/agent/actions/data_assistants/run_missingness_data_assistant.py,sha256=zOvGGcSnD9W9FcmhV6LEv3fI8YN31-43-FwaLM47b-I,1511
|
|
7
|
-
great_expectations_cloud/agent/actions/data_assistants/run_onboarding_data_assistant.py,sha256=IlRy8LwMhcllf42OznmL5XF6dUnRz7AnOQ5CHzzGRWc,1503
|
|
8
|
-
great_expectations_cloud/agent/actions/data_assistants/utils.py,sha256=gXOvAoJ_cPUeH8u9H30cPC8zAAfPBr_xICuyztvEuus,4279
|
|
9
|
-
great_expectations_cloud/agent/actions/draft_datasource_config_action.py,sha256=auYIglyrL6ja0Nags8uAOjrLfdtuxP_Rpp_9XIpkvjs,4171
|
|
10
|
-
great_expectations_cloud/agent/actions/list_table_names.py,sha256=1WiuT8IuRmqKYbF7IMGkXBm-VIAaWQgmpUw7UDfJ1So,2881
|
|
11
|
-
great_expectations_cloud/agent/actions/run_checkpoint.py,sha256=CTpD78XwSjj9sKC0yzvmd2t7N1s7kKx3Lp3m1ZERk4A,2041
|
|
12
|
-
great_expectations_cloud/agent/actions/run_metric_list_action.py,sha256=RSjEfESKjn2xKeOoLiWrm0Af6ghh0MWPiMwgu_2BmXY,2993
|
|
13
|
-
great_expectations_cloud/agent/actions/unknown.py,sha256=mtWw9tDZqGZSiUWj7PtIlLFJ1dM-7AHBX3SO16-u2EM,739
|
|
14
|
-
great_expectations_cloud/agent/agent.py,sha256=NOit0OSy4e-ELzeKYM01gnRrZTFFRnNIbwq7YzffzPo,17221
|
|
15
|
-
great_expectations_cloud/agent/agent_warnings.py,sha256=9-xl_AI2V9Py4o7KzFOQjG3lYx-vZ36fq4w2iiPNiUw,362
|
|
16
|
-
great_expectations_cloud/agent/cli.py,sha256=wdf8uhYM_gsQOgGTcu6irRKB8k5HmtB9-fSm1ym8XhM,2851
|
|
17
|
-
great_expectations_cloud/agent/config.py,sha256=bUypxGky-dzTsITtfWOzJjUSoSReKYdOa9e8UFNduIY,858
|
|
18
|
-
great_expectations_cloud/agent/constants.py,sha256=SAEtcOwI-SxZiZSVoCFfEC5oCtYdgmyUmK7for_zg_Q,246
|
|
19
|
-
great_expectations_cloud/agent/event_handler.py,sha256=_0sC_ooay_8dbNx9ddR9eUaGT_cc_QvED7omDfBtL3g,4632
|
|
20
|
-
great_expectations_cloud/agent/exceptions.py,sha256=Gl5QJp1dCjNwFxfWsKY2FShajMlrzkkqVW_1CrJbmGs,1360
|
|
21
|
-
great_expectations_cloud/agent/message_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
great_expectations_cloud/agent/message_service/asyncio_rabbit_mq_client.py,sha256=mAdXGXZ0nY1o4qCbZRU8CWwA06tRhlhU8-4PFHlOh6Q,9260
|
|
23
|
-
great_expectations_cloud/agent/message_service/subscriber.py,sha256=sCGwee3qmCU0h7dSUAyTUhNTICuP1gqZpr3udrio0VQ,5836
|
|
24
|
-
great_expectations_cloud/agent/models.py,sha256=UHOk2tySSlXSeWBycQ4AIQpbK8BbYlen6hpJ-vPwsdY,3562
|
|
25
|
-
great_expectations_cloud/agent/run.py,sha256=V33RLoB1PFmJ0h0RfHG4SB5lN_Za8tW2Dua6GUpN9yY,639
|
|
26
|
-
great_expectations_cloud/logging/README.md,sha256=vbwU689x8SkGjzoBYQzZOzAvh28fR0RCa1XY5WD-Dgs,1762
|
|
27
|
-
great_expectations_cloud/logging/logging_cfg.py,sha256=TYP4jCuCY4PbMbct7arUhhLEPNJdI0CAtYgPaS80Dlw,5918
|
|
28
|
-
great_expectations_cloud-20240523.0.dev0.dist-info/LICENSE,sha256=_JJnoX6N_OkrAwlCRizCwil0tIjDAy2TG3GiJ50sM6k,2084
|
|
29
|
-
great_expectations_cloud-20240523.0.dev0.dist-info/METADATA,sha256=JBWa_KazpmYPwRI1CIktwwKYwDKdOJsZJo924YKgXyA,11112
|
|
30
|
-
great_expectations_cloud-20240523.0.dev0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
31
|
-
great_expectations_cloud-20240523.0.dev0.dist-info/entry_points.txt,sha256=ofJgdeS2gSzxXLyCAjfNhIaN1wmSyR7EAMs5qhVaXE4,68
|
|
32
|
-
great_expectations_cloud-20240523.0.dev0.dist-info/RECORD,,
|
|
File without changes
|