chalkpy 2.89.22__py3-none-any.whl → 2.95.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chalk/__init__.py +2 -1
- chalk/_gen/chalk/arrow/v1/arrow_pb2.py +7 -5
- chalk/_gen/chalk/arrow/v1/arrow_pb2.pyi +6 -0
- chalk/_gen/chalk/artifacts/v1/chart_pb2.py +36 -33
- chalk/_gen/chalk/artifacts/v1/chart_pb2.pyi +41 -1
- chalk/_gen/chalk/artifacts/v1/cron_query_pb2.py +8 -7
- chalk/_gen/chalk/artifacts/v1/cron_query_pb2.pyi +5 -0
- chalk/_gen/chalk/common/v1/offline_query_pb2.py +19 -13
- chalk/_gen/chalk/common/v1/offline_query_pb2.pyi +37 -0
- chalk/_gen/chalk/common/v1/online_query_pb2.py +54 -54
- chalk/_gen/chalk/common/v1/online_query_pb2.pyi +13 -1
- chalk/_gen/chalk/common/v1/script_task_pb2.py +13 -11
- chalk/_gen/chalk/common/v1/script_task_pb2.pyi +19 -1
- chalk/_gen/chalk/dataframe/__init__.py +0 -0
- chalk/_gen/chalk/dataframe/v1/__init__.py +0 -0
- chalk/_gen/chalk/dataframe/v1/dataframe_pb2.py +48 -0
- chalk/_gen/chalk/dataframe/v1/dataframe_pb2.pyi +123 -0
- chalk/_gen/chalk/dataframe/v1/dataframe_pb2_grpc.py +4 -0
- chalk/_gen/chalk/dataframe/v1/dataframe_pb2_grpc.pyi +4 -0
- chalk/_gen/chalk/graph/v1/graph_pb2.py +150 -149
- chalk/_gen/chalk/graph/v1/graph_pb2.pyi +25 -0
- chalk/_gen/chalk/graph/v1/sources_pb2.py +94 -84
- chalk/_gen/chalk/graph/v1/sources_pb2.pyi +56 -0
- chalk/_gen/chalk/kubernetes/v1/horizontalpodautoscaler_pb2.py +79 -0
- chalk/_gen/chalk/kubernetes/v1/horizontalpodautoscaler_pb2.pyi +377 -0
- chalk/_gen/chalk/kubernetes/v1/horizontalpodautoscaler_pb2_grpc.py +4 -0
- chalk/_gen/chalk/kubernetes/v1/horizontalpodautoscaler_pb2_grpc.pyi +4 -0
- chalk/_gen/chalk/kubernetes/v1/scaledobject_pb2.py +43 -7
- chalk/_gen/chalk/kubernetes/v1/scaledobject_pb2.pyi +252 -2
- chalk/_gen/chalk/protosql/v1/sql_service_pb2.py +54 -27
- chalk/_gen/chalk/protosql/v1/sql_service_pb2.pyi +131 -3
- chalk/_gen/chalk/protosql/v1/sql_service_pb2_grpc.py +45 -0
- chalk/_gen/chalk/protosql/v1/sql_service_pb2_grpc.pyi +14 -0
- chalk/_gen/chalk/python/v1/types_pb2.py +14 -14
- chalk/_gen/chalk/python/v1/types_pb2.pyi +8 -0
- chalk/_gen/chalk/server/v1/benchmark_pb2.py +76 -0
- chalk/_gen/chalk/server/v1/benchmark_pb2.pyi +156 -0
- chalk/_gen/chalk/server/v1/benchmark_pb2_grpc.py +258 -0
- chalk/_gen/chalk/server/v1/benchmark_pb2_grpc.pyi +84 -0
- chalk/_gen/chalk/server/v1/billing_pb2.py +40 -38
- chalk/_gen/chalk/server/v1/billing_pb2.pyi +17 -1
- chalk/_gen/chalk/server/v1/branches_pb2.py +45 -0
- chalk/_gen/chalk/server/v1/branches_pb2.pyi +80 -0
- chalk/_gen/chalk/server/v1/branches_pb2_grpc.pyi +36 -0
- chalk/_gen/chalk/server/v1/builder_pb2.py +372 -272
- chalk/_gen/chalk/server/v1/builder_pb2.pyi +479 -12
- chalk/_gen/chalk/server/v1/builder_pb2_grpc.py +360 -0
- chalk/_gen/chalk/server/v1/builder_pb2_grpc.pyi +96 -0
- chalk/_gen/chalk/server/v1/chart_pb2.py +10 -10
- chalk/_gen/chalk/server/v1/chart_pb2.pyi +18 -2
- chalk/_gen/chalk/server/v1/clickhouse_pb2.py +42 -0
- chalk/_gen/chalk/server/v1/clickhouse_pb2.pyi +17 -0
- chalk/_gen/chalk/server/v1/clickhouse_pb2_grpc.py +78 -0
- chalk/_gen/chalk/server/v1/clickhouse_pb2_grpc.pyi +38 -0
- chalk/_gen/chalk/server/v1/cloud_components_pb2.py +153 -107
- chalk/_gen/chalk/server/v1/cloud_components_pb2.pyi +146 -4
- chalk/_gen/chalk/server/v1/cloud_components_pb2_grpc.py +180 -0
- chalk/_gen/chalk/server/v1/cloud_components_pb2_grpc.pyi +48 -0
- chalk/_gen/chalk/server/v1/cloud_credentials_pb2.py +11 -3
- chalk/_gen/chalk/server/v1/cloud_credentials_pb2.pyi +20 -0
- chalk/_gen/chalk/server/v1/cloud_credentials_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/cloud_credentials_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/server/v1/dataplanejobqueue_pb2.py +59 -35
- chalk/_gen/chalk/server/v1/dataplanejobqueue_pb2.pyi +127 -1
- chalk/_gen/chalk/server/v1/dataplanejobqueue_pb2_grpc.py +135 -0
- chalk/_gen/chalk/server/v1/dataplanejobqueue_pb2_grpc.pyi +36 -0
- chalk/_gen/chalk/server/v1/dataplaneworkflows_pb2.py +90 -0
- chalk/_gen/chalk/server/v1/dataplaneworkflows_pb2.pyi +264 -0
- chalk/_gen/chalk/server/v1/dataplaneworkflows_pb2_grpc.py +170 -0
- chalk/_gen/chalk/server/v1/dataplaneworkflows_pb2_grpc.pyi +62 -0
- chalk/_gen/chalk/server/v1/datasets_pb2.py +36 -24
- chalk/_gen/chalk/server/v1/datasets_pb2.pyi +71 -2
- chalk/_gen/chalk/server/v1/datasets_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/datasets_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/server/v1/deploy_pb2.py +9 -3
- chalk/_gen/chalk/server/v1/deploy_pb2.pyi +12 -0
- chalk/_gen/chalk/server/v1/deploy_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/deploy_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/server/v1/deployment_pb2.py +20 -15
- chalk/_gen/chalk/server/v1/deployment_pb2.pyi +25 -0
- chalk/_gen/chalk/server/v1/environment_pb2.py +25 -15
- chalk/_gen/chalk/server/v1/environment_pb2.pyi +93 -1
- chalk/_gen/chalk/server/v1/eventbus_pb2.py +44 -0
- chalk/_gen/chalk/server/v1/eventbus_pb2.pyi +64 -0
- chalk/_gen/chalk/server/v1/eventbus_pb2_grpc.py +4 -0
- chalk/_gen/chalk/server/v1/eventbus_pb2_grpc.pyi +4 -0
- chalk/_gen/chalk/server/v1/files_pb2.py +65 -0
- chalk/_gen/chalk/server/v1/files_pb2.pyi +167 -0
- chalk/_gen/chalk/server/v1/files_pb2_grpc.py +4 -0
- chalk/_gen/chalk/server/v1/files_pb2_grpc.pyi +4 -0
- chalk/_gen/chalk/server/v1/graph_pb2.py +41 -3
- chalk/_gen/chalk/server/v1/graph_pb2.pyi +191 -0
- chalk/_gen/chalk/server/v1/graph_pb2_grpc.py +92 -0
- chalk/_gen/chalk/server/v1/graph_pb2_grpc.pyi +32 -0
- chalk/_gen/chalk/server/v1/incident_pb2.py +57 -0
- chalk/_gen/chalk/server/v1/incident_pb2.pyi +165 -0
- chalk/_gen/chalk/server/v1/incident_pb2_grpc.py +4 -0
- chalk/_gen/chalk/server/v1/incident_pb2_grpc.pyi +4 -0
- chalk/_gen/chalk/server/v1/indexing_job_pb2.py +44 -0
- chalk/_gen/chalk/server/v1/indexing_job_pb2.pyi +38 -0
- chalk/_gen/chalk/server/v1/indexing_job_pb2_grpc.py +78 -0
- chalk/_gen/chalk/server/v1/indexing_job_pb2_grpc.pyi +38 -0
- chalk/_gen/chalk/server/v1/integrations_pb2.py +11 -9
- chalk/_gen/chalk/server/v1/integrations_pb2.pyi +34 -2
- chalk/_gen/chalk/server/v1/kube_pb2.py +29 -19
- chalk/_gen/chalk/server/v1/kube_pb2.pyi +28 -0
- chalk/_gen/chalk/server/v1/kube_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/kube_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/server/v1/log_pb2.py +21 -3
- chalk/_gen/chalk/server/v1/log_pb2.pyi +68 -0
- chalk/_gen/chalk/server/v1/log_pb2_grpc.py +90 -0
- chalk/_gen/chalk/server/v1/log_pb2_grpc.pyi +24 -0
- chalk/_gen/chalk/server/v1/metadataplanejobqueue_pb2.py +73 -0
- chalk/_gen/chalk/server/v1/metadataplanejobqueue_pb2.pyi +212 -0
- chalk/_gen/chalk/server/v1/metadataplanejobqueue_pb2_grpc.py +217 -0
- chalk/_gen/chalk/server/v1/metadataplanejobqueue_pb2_grpc.pyi +74 -0
- chalk/_gen/chalk/server/v1/model_registry_pb2.py +10 -10
- chalk/_gen/chalk/server/v1/model_registry_pb2.pyi +4 -1
- chalk/_gen/chalk/server/v1/monitoring_pb2.py +84 -75
- chalk/_gen/chalk/server/v1/monitoring_pb2.pyi +1 -0
- chalk/_gen/chalk/server/v1/monitoring_pb2_grpc.py +136 -0
- chalk/_gen/chalk/server/v1/monitoring_pb2_grpc.pyi +38 -0
- chalk/_gen/chalk/server/v1/offline_queries_pb2.py +32 -10
- chalk/_gen/chalk/server/v1/offline_queries_pb2.pyi +73 -0
- chalk/_gen/chalk/server/v1/offline_queries_pb2_grpc.py +90 -0
- chalk/_gen/chalk/server/v1/offline_queries_pb2_grpc.pyi +24 -0
- chalk/_gen/chalk/server/v1/plandebug_pb2.py +53 -0
- chalk/_gen/chalk/server/v1/plandebug_pb2.pyi +86 -0
- chalk/_gen/chalk/server/v1/plandebug_pb2_grpc.py +168 -0
- chalk/_gen/chalk/server/v1/plandebug_pb2_grpc.pyi +60 -0
- chalk/_gen/chalk/server/v1/queries_pb2.py +76 -48
- chalk/_gen/chalk/server/v1/queries_pb2.pyi +155 -2
- chalk/_gen/chalk/server/v1/queries_pb2_grpc.py +180 -0
- chalk/_gen/chalk/server/v1/queries_pb2_grpc.pyi +48 -0
- chalk/_gen/chalk/server/v1/scheduled_query_pb2.py +4 -2
- chalk/_gen/chalk/server/v1/scheduled_query_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/scheduled_query_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/server/v1/scheduled_query_run_pb2.py +12 -6
- chalk/_gen/chalk/server/v1/scheduled_query_run_pb2.pyi +75 -2
- chalk/_gen/chalk/server/v1/scheduler_pb2.py +24 -12
- chalk/_gen/chalk/server/v1/scheduler_pb2.pyi +61 -1
- chalk/_gen/chalk/server/v1/scheduler_pb2_grpc.py +90 -0
- chalk/_gen/chalk/server/v1/scheduler_pb2_grpc.pyi +24 -0
- chalk/_gen/chalk/server/v1/script_tasks_pb2.py +26 -14
- chalk/_gen/chalk/server/v1/script_tasks_pb2.pyi +33 -3
- chalk/_gen/chalk/server/v1/script_tasks_pb2_grpc.py +90 -0
- chalk/_gen/chalk/server/v1/script_tasks_pb2_grpc.pyi +24 -0
- chalk/_gen/chalk/server/v1/sql_interface_pb2.py +75 -0
- chalk/_gen/chalk/server/v1/sql_interface_pb2.pyi +142 -0
- chalk/_gen/chalk/server/v1/sql_interface_pb2_grpc.py +349 -0
- chalk/_gen/chalk/server/v1/sql_interface_pb2_grpc.pyi +114 -0
- chalk/_gen/chalk/server/v1/sql_queries_pb2.py +48 -0
- chalk/_gen/chalk/server/v1/sql_queries_pb2.pyi +150 -0
- chalk/_gen/chalk/server/v1/sql_queries_pb2_grpc.py +123 -0
- chalk/_gen/chalk/server/v1/sql_queries_pb2_grpc.pyi +52 -0
- chalk/_gen/chalk/server/v1/team_pb2.py +156 -137
- chalk/_gen/chalk/server/v1/team_pb2.pyi +56 -10
- chalk/_gen/chalk/server/v1/team_pb2_grpc.py +90 -0
- chalk/_gen/chalk/server/v1/team_pb2_grpc.pyi +24 -0
- chalk/_gen/chalk/server/v1/topic_pb2.py +5 -3
- chalk/_gen/chalk/server/v1/topic_pb2.pyi +10 -1
- chalk/_gen/chalk/server/v1/trace_pb2.py +50 -28
- chalk/_gen/chalk/server/v1/trace_pb2.pyi +121 -0
- chalk/_gen/chalk/server/v1/trace_pb2_grpc.py +135 -0
- chalk/_gen/chalk/server/v1/trace_pb2_grpc.pyi +42 -0
- chalk/_gen/chalk/server/v1/webhook_pb2.py +9 -3
- chalk/_gen/chalk/server/v1/webhook_pb2.pyi +18 -0
- chalk/_gen/chalk/server/v1/webhook_pb2_grpc.py +45 -0
- chalk/_gen/chalk/server/v1/webhook_pb2_grpc.pyi +12 -0
- chalk/_gen/chalk/streaming/v1/debug_service_pb2.py +62 -0
- chalk/_gen/chalk/streaming/v1/debug_service_pb2.pyi +75 -0
- chalk/_gen/chalk/streaming/v1/debug_service_pb2_grpc.py +221 -0
- chalk/_gen/chalk/streaming/v1/debug_service_pb2_grpc.pyi +88 -0
- chalk/_gen/chalk/streaming/v1/simple_streaming_service_pb2.py +19 -7
- chalk/_gen/chalk/streaming/v1/simple_streaming_service_pb2.pyi +96 -3
- chalk/_gen/chalk/streaming/v1/simple_streaming_service_pb2_grpc.py +48 -0
- chalk/_gen/chalk/streaming/v1/simple_streaming_service_pb2_grpc.pyi +20 -0
- chalk/_gen/chalk/utils/v1/field_change_pb2.py +32 -0
- chalk/_gen/chalk/utils/v1/field_change_pb2.pyi +42 -0
- chalk/_gen/chalk/utils/v1/field_change_pb2_grpc.py +4 -0
- chalk/_gen/chalk/utils/v1/field_change_pb2_grpc.pyi +4 -0
- chalk/_lsp/error_builder.py +11 -0
- chalk/_monitoring/Chart.py +1 -3
- chalk/_version.py +1 -1
- chalk/cli.py +5 -10
- chalk/client/client.py +178 -64
- chalk/client/client_async.py +154 -0
- chalk/client/client_async_impl.py +22 -0
- chalk/client/client_grpc.py +738 -112
- chalk/client/client_impl.py +541 -136
- chalk/client/dataset.py +27 -6
- chalk/client/models.py +99 -2
- chalk/client/serialization/model_serialization.py +126 -10
- chalk/config/project_config.py +1 -1
- chalk/df/LazyFramePlaceholder.py +1154 -0
- chalk/df/ast_parser.py +2 -10
- chalk/features/_class_property.py +7 -0
- chalk/features/_embedding/embedding.py +1 -0
- chalk/features/_embedding/sentence_transformer.py +1 -1
- chalk/features/_encoding/converter.py +83 -2
- chalk/features/_encoding/pyarrow.py +20 -4
- chalk/features/_encoding/rich.py +1 -3
- chalk/features/_tensor.py +1 -2
- chalk/features/dataframe/_filters.py +14 -5
- chalk/features/dataframe/_impl.py +91 -36
- chalk/features/dataframe/_validation.py +11 -7
- chalk/features/feature_field.py +40 -30
- chalk/features/feature_set.py +1 -2
- chalk/features/feature_set_decorator.py +1 -0
- chalk/features/feature_wrapper.py +42 -3
- chalk/features/hooks.py +81 -12
- chalk/features/inference.py +65 -10
- chalk/features/resolver.py +338 -56
- chalk/features/tag.py +1 -3
- chalk/features/underscore_features.py +2 -1
- chalk/functions/__init__.py +456 -21
- chalk/functions/holidays.py +1 -3
- chalk/gitignore/gitignore_parser.py +5 -1
- chalk/importer.py +186 -74
- chalk/ml/__init__.py +6 -2
- chalk/ml/model_hooks.py +368 -51
- chalk/ml/model_reference.py +68 -10
- chalk/ml/model_version.py +34 -21
- chalk/ml/utils.py +143 -40
- chalk/operators/_utils.py +14 -3
- chalk/parsed/_proto/export.py +22 -0
- chalk/parsed/duplicate_input_gql.py +4 -0
- chalk/parsed/expressions.py +1 -3
- chalk/parsed/json_conversions.py +21 -14
- chalk/parsed/to_proto.py +16 -4
- chalk/parsed/user_types_to_json.py +31 -10
- chalk/parsed/validation_from_registries.py +182 -0
- chalk/queries/named_query.py +16 -6
- chalk/queries/scheduled_query.py +13 -1
- chalk/serialization/parsed_annotation.py +25 -12
- chalk/sql/__init__.py +221 -0
- chalk/sql/_internal/integrations/athena.py +6 -1
- chalk/sql/_internal/integrations/bigquery.py +22 -2
- chalk/sql/_internal/integrations/databricks.py +61 -18
- chalk/sql/_internal/integrations/mssql.py +281 -0
- chalk/sql/_internal/integrations/postgres.py +11 -3
- chalk/sql/_internal/integrations/redshift.py +4 -0
- chalk/sql/_internal/integrations/snowflake.py +11 -2
- chalk/sql/_internal/integrations/util.py +2 -1
- chalk/sql/_internal/sql_file_resolver.py +55 -10
- chalk/sql/_internal/sql_source.py +36 -2
- chalk/streams/__init__.py +1 -3
- chalk/streams/_kafka_source.py +5 -1
- chalk/streams/_windows.py +16 -4
- chalk/streams/types.py +1 -2
- chalk/utils/__init__.py +1 -3
- chalk/utils/_otel_version.py +13 -0
- chalk/utils/async_helpers.py +14 -5
- chalk/utils/df_utils.py +2 -2
- chalk/utils/duration.py +1 -3
- chalk/utils/job_log_display.py +538 -0
- chalk/utils/missing_dependency.py +5 -4
- chalk/utils/notebook.py +255 -2
- chalk/utils/pl_helpers.py +190 -37
- chalk/utils/pydanticutil/pydantic_compat.py +1 -2
- chalk/utils/storage_client.py +246 -0
- chalk/utils/threading.py +1 -3
- chalk/utils/tracing.py +194 -86
- {chalkpy-2.89.22.dist-info → chalkpy-2.95.3.dist-info}/METADATA +53 -21
- {chalkpy-2.89.22.dist-info → chalkpy-2.95.3.dist-info}/RECORD +268 -198
- {chalkpy-2.89.22.dist-info → chalkpy-2.95.3.dist-info}/WHEEL +0 -0
- {chalkpy-2.89.22.dist-info → chalkpy-2.95.3.dist-info}/entry_points.txt +0 -0
- {chalkpy-2.89.22.dist-info → chalkpy-2.95.3.dist-info}/top_level.txt +0 -0
chalk/client/client_async.py
CHANGED
|
@@ -9,11 +9,13 @@ from uuid import UUID
|
|
|
9
9
|
from chalk import DataFrame
|
|
10
10
|
from chalk.client.models import (
|
|
11
11
|
BulkOnlineQueryResponse,
|
|
12
|
+
BulkOnlineQueryResult,
|
|
12
13
|
FeatureReference,
|
|
13
14
|
FeatureStatisticsResponse,
|
|
14
15
|
OfflineQueryInputUri,
|
|
15
16
|
OnlineQuery,
|
|
16
17
|
OnlineQueryContext,
|
|
18
|
+
PlanQueryResponse,
|
|
17
19
|
ResourceRequests,
|
|
18
20
|
UploadFeaturesResponse,
|
|
19
21
|
WhoAmIResponse,
|
|
@@ -26,6 +28,7 @@ from chalk.prompts import Prompt
|
|
|
26
28
|
if TYPE_CHECKING:
|
|
27
29
|
import pandas as pd
|
|
28
30
|
import polars as pl
|
|
31
|
+
import pyarrow as pa
|
|
29
32
|
|
|
30
33
|
QueryInput = Mapping[FeatureReference, Any] | pd.DataFrame | pl.DataFrame | DataFrame | str
|
|
31
34
|
|
|
@@ -159,6 +162,7 @@ class AsyncChalkClient:
|
|
|
159
162
|
connect_timeout: Optional[float] = None,
|
|
160
163
|
headers: Mapping[str, str] | None = None,
|
|
161
164
|
query_context: Mapping[str, Union[str, int, float, bool, None]] | str | None = None,
|
|
165
|
+
trace: bool = False,
|
|
162
166
|
) -> OnlineQueryResult:
|
|
163
167
|
"""Compute features values using online resolvers.
|
|
164
168
|
See https://docs.chalk.ai/docs/query-basics for more information.
|
|
@@ -234,6 +238,10 @@ class AsyncChalkClient:
|
|
|
234
238
|
An immutable context that can be accessed from Python resolvers.
|
|
235
239
|
This context wraps a JSON-compatible dictionary or JSON string with type restrictions.
|
|
236
240
|
See https://docs.chalk.ai/api-docs#ChalkContext for more information.
|
|
241
|
+
trace
|
|
242
|
+
Force tracing on the query. Requests using `trace=True` will be slower
|
|
243
|
+
than requests using `trace=False`. Requires datadog tracing to be installed
|
|
244
|
+
for this to have any effect
|
|
237
245
|
|
|
238
246
|
Other Parameters
|
|
239
247
|
----------------
|
|
@@ -462,6 +470,147 @@ class AsyncChalkClient:
|
|
|
462
470
|
"""
|
|
463
471
|
...
|
|
464
472
|
|
|
473
|
+
async def plan_query(
|
|
474
|
+
self,
|
|
475
|
+
input: Sequence[FeatureReference],
|
|
476
|
+
output: Sequence[FeatureReference],
|
|
477
|
+
staleness: Mapping[FeatureReference, str] | None = None,
|
|
478
|
+
environment: EnvironmentId | None = None,
|
|
479
|
+
tags: list[str] | None = None,
|
|
480
|
+
preview_deployment_id: str | None = None,
|
|
481
|
+
branch: Union[BranchId, None] = ...,
|
|
482
|
+
query_name: str | None = None,
|
|
483
|
+
query_name_version: str | None = None,
|
|
484
|
+
meta: Mapping[str, str] | None = None,
|
|
485
|
+
store_plan_stages: bool = False,
|
|
486
|
+
explain: bool = False,
|
|
487
|
+
num_input_rows: Optional[int] = None,
|
|
488
|
+
headers: Mapping[str, str] | None = None,
|
|
489
|
+
) -> PlanQueryResponse:
|
|
490
|
+
"""Plan a query without executing it.
|
|
491
|
+
|
|
492
|
+
Parameters
|
|
493
|
+
----------
|
|
494
|
+
input
|
|
495
|
+
The features for which there are known values, mapped to those values.
|
|
496
|
+
For example, `{User.id: 1234}`. Features can also be expressed as snakecased strings,
|
|
497
|
+
e.g. `{"user.id": 1234}`
|
|
498
|
+
output
|
|
499
|
+
Outputs are the features that you'd like to compute from the inputs.
|
|
500
|
+
For example, `[User.age, User.name, User.email]`.
|
|
501
|
+
staleness
|
|
502
|
+
Maximum staleness overrides for any output features or intermediate features.
|
|
503
|
+
See https://docs.chalk.ai/docs/query-caching for more information.
|
|
504
|
+
environment
|
|
505
|
+
The environment under which to run the resolvers.
|
|
506
|
+
API tokens can be scoped to an environment.
|
|
507
|
+
If no environment is specified in the query,
|
|
508
|
+
but the token supports only a single environment,
|
|
509
|
+
then that environment will be taken as the scope
|
|
510
|
+
for executing the request.
|
|
511
|
+
tags
|
|
512
|
+
The tags used to scope the resolvers.
|
|
513
|
+
See https://docs.chalk.ai/docs/resolver-tags for more information.
|
|
514
|
+
branch
|
|
515
|
+
If specified, Chalk will route your request to the relevant branch.
|
|
516
|
+
preview_deployment_id
|
|
517
|
+
If specified, Chalk will route your request to the relevant preview deployment.
|
|
518
|
+
query_name
|
|
519
|
+
The semantic name for the query you're making, for example, `"loan_application_model"`.
|
|
520
|
+
Typically, each query that you make from your application should have a name.
|
|
521
|
+
Chalk will present metrics and dashboard functionality grouped by 'query_name'.
|
|
522
|
+
If your query name matches a `NamedQuery`, the query will automatically pull outputs
|
|
523
|
+
and options specified in the matching `NamedQuery`.
|
|
524
|
+
query_name_version
|
|
525
|
+
If `query_name` is specified, this specifies the version of the named query you're making.
|
|
526
|
+
This is only useful if you want your query to use a `NamedQuery` with a specific name and a
|
|
527
|
+
specific version. If a `query_name` has not been supplied, then this parameter is ignored.
|
|
528
|
+
meta
|
|
529
|
+
Arbitrary `key:value` pairs to associate with a query.
|
|
530
|
+
store_plan_stages
|
|
531
|
+
If true, the plan will store the intermediate values at each stage in the plan
|
|
532
|
+
explain
|
|
533
|
+
If true, the plan will emit additional output to assist with debugging.
|
|
534
|
+
num_input_rows:
|
|
535
|
+
The number of input rows that this plan will be run with. If unknown, specify `None`.
|
|
536
|
+
headers
|
|
537
|
+
Additional headers to provide with the request
|
|
538
|
+
|
|
539
|
+
Returns
|
|
540
|
+
-------
|
|
541
|
+
PlanQueryResponse
|
|
542
|
+
The query plan, including the resolver execution order and the
|
|
543
|
+
resolver execution plan for each resolver.
|
|
544
|
+
|
|
545
|
+
Examples
|
|
546
|
+
--------
|
|
547
|
+
>>> from chalk.client import AsyncChalkClient
|
|
548
|
+
>>> result = await AsyncChalkClient().plan_query(
|
|
549
|
+
... input=[User.id],
|
|
550
|
+
... output=[User.fico_score],
|
|
551
|
+
... staleness={User.fico_score: "10m"},
|
|
552
|
+
... )
|
|
553
|
+
>>> result.rendered_plan
|
|
554
|
+
>>> result.output_schema
|
|
555
|
+
"""
|
|
556
|
+
...
|
|
557
|
+
|
|
558
|
+
async def _run_serialized_query(
|
|
559
|
+
self,
|
|
560
|
+
serialized_plan_bytes: bytes,
|
|
561
|
+
input: Union[Mapping[FeatureReference, Sequence[Any]], pa.Table],
|
|
562
|
+
output: Sequence[FeatureReference] = (),
|
|
563
|
+
staleness: Mapping[FeatureReference, str] | None = None,
|
|
564
|
+
context: OnlineQueryContext | None = None,
|
|
565
|
+
query_name: str | None = None,
|
|
566
|
+
query_name_version: str | None = None,
|
|
567
|
+
correlation_id: str | None = None,
|
|
568
|
+
include_meta: bool = False,
|
|
569
|
+
explain: bool = False,
|
|
570
|
+
store_plan_stages: bool = False,
|
|
571
|
+
meta: Mapping[str, str] | None = None,
|
|
572
|
+
headers: Mapping[str, str] | None = None,
|
|
573
|
+
) -> BulkOnlineQueryResult:
|
|
574
|
+
"""Run a query using a pre-serialized plan.
|
|
575
|
+
|
|
576
|
+
This is a protected method for internal use and testing.
|
|
577
|
+
|
|
578
|
+
Parameters
|
|
579
|
+
----------
|
|
580
|
+
serialized_plan_bytes
|
|
581
|
+
The serialized BatchPlan protobuf bytes
|
|
582
|
+
input
|
|
583
|
+
The input data, either as a mapping of features to values or as a PyArrow table
|
|
584
|
+
output
|
|
585
|
+
The output features to compute
|
|
586
|
+
staleness
|
|
587
|
+
Maximum staleness overrides for features
|
|
588
|
+
context
|
|
589
|
+
Query context including environment and tags
|
|
590
|
+
query_name
|
|
591
|
+
The name of the query
|
|
592
|
+
query_name_version
|
|
593
|
+
The version of the query
|
|
594
|
+
correlation_id
|
|
595
|
+
Correlation ID for logging
|
|
596
|
+
include_meta
|
|
597
|
+
Whether to include metadata in the response
|
|
598
|
+
explain
|
|
599
|
+
Whether to include explain output
|
|
600
|
+
store_plan_stages
|
|
601
|
+
Whether to store plan stages
|
|
602
|
+
meta
|
|
603
|
+
Customer metadata tags
|
|
604
|
+
headers
|
|
605
|
+
Additional headers to provide with the request
|
|
606
|
+
|
|
607
|
+
Returns
|
|
608
|
+
-------
|
|
609
|
+
OnlineQueryResult
|
|
610
|
+
The query result
|
|
611
|
+
"""
|
|
612
|
+
...
|
|
613
|
+
|
|
465
614
|
async def offline_query(
|
|
466
615
|
self,
|
|
467
616
|
input: Union[QueryInput, OfflineQueryInputUri] | None = None,
|
|
@@ -497,6 +646,8 @@ class AsyncChalkClient:
|
|
|
497
646
|
max_retries: int | None = None,
|
|
498
647
|
query_name: str | None = None,
|
|
499
648
|
query_name_version: str | None = None,
|
|
649
|
+
*,
|
|
650
|
+
input_sql: str | None = None,
|
|
500
651
|
) -> Dataset:
|
|
501
652
|
"""Compute feature values from the offline store or by running offline/online resolvers.
|
|
502
653
|
See `Dataset` for more information.
|
|
@@ -511,6 +662,9 @@ class AsyncChalkClient:
|
|
|
511
662
|
an observation in line with the timestamp in `input_times`.
|
|
512
663
|
input_times
|
|
513
664
|
A list of the times of the observations from `input`.
|
|
665
|
+
input_sql
|
|
666
|
+
An alternative to `input`: a ChalkSQL query that returns values
|
|
667
|
+
to use as inputs.
|
|
514
668
|
output
|
|
515
669
|
The features that you'd like to sample, if they exist.
|
|
516
670
|
If an output feature was never computed for a sample (row) in
|
|
@@ -18,8 +18,10 @@ from chalk.client.client_impl import ChalkAPIClientImpl, OnlineQueryResponseImpl
|
|
|
18
18
|
from chalk.client.dataset import Dataset, DatasetImpl
|
|
19
19
|
from chalk.client.models import (
|
|
20
20
|
BulkOnlineQueryResponse,
|
|
21
|
+
BulkOnlineQueryResult,
|
|
21
22
|
ChalkError,
|
|
22
23
|
FeatureStatisticsResponse,
|
|
24
|
+
PlanQueryResponse,
|
|
23
25
|
UploadFeaturesResponse,
|
|
24
26
|
WhoAmIResponse,
|
|
25
27
|
)
|
|
@@ -142,6 +144,26 @@ class AsyncChalkClientImpl(AsyncChalkClient):
|
|
|
142
144
|
partial(self._client.query_bulk, *args, **kwargs),
|
|
143
145
|
)
|
|
144
146
|
|
|
147
|
+
async def plan_query(
|
|
148
|
+
self,
|
|
149
|
+
*args: Any,
|
|
150
|
+
**kwargs: Any,
|
|
151
|
+
) -> PlanQueryResponse:
|
|
152
|
+
return await self._current_loop().run_in_executor(
|
|
153
|
+
self._executor,
|
|
154
|
+
partial(self._client.plan_query, *args, **kwargs),
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
async def _run_serialized_query(
|
|
158
|
+
self,
|
|
159
|
+
*args: Any,
|
|
160
|
+
**kwargs: Any,
|
|
161
|
+
) -> BulkOnlineQueryResult:
|
|
162
|
+
return await self._current_loop().run_in_executor(
|
|
163
|
+
self._executor,
|
|
164
|
+
partial(self._client._run_serialized_query, *args, **kwargs), # pyright: ignore[reportPrivateUsage]
|
|
165
|
+
)
|
|
166
|
+
|
|
145
167
|
async def offline_query(
|
|
146
168
|
self,
|
|
147
169
|
*args: Any,
|