Source code for slingshot.types

# ruff: noqa: UP045
"""Types used throughout this SDK."""

from __future__ import annotations

from collections.abc import Mapping
from typing import Generic, Optional, TypeVar, Union

from typing_extensions import NotRequired, TypedDict

UNSET = ...
JSON_TYPE = Union[
    dict[str, "JSON_TYPE"],
    list["JSON_TYPE"],
    str,
    int,
    float,
    bool,
    None,
]


class AssignSettingsSchema(TypedDict):
    """Schema for assigning additional project settings in Slingshot."""

    sla_minutes: NotRequired[Optional[int]]
    fix_scaling_type: NotRequired[Optional[bool]]
    auto_apply_recs: NotRequired[Optional[bool]]
    optimize_instance_size: NotRequired[Optional[bool]]


[docs] class ProjectSchema(TypedDict): """Schema for a project in Slingshot.""" created_at: Optional[str] updated_at: Optional[str] id: Optional[str] name: Optional[str] app_id: Optional[str] cluster_path: Optional[str] job_id: Optional[str] workspace_id: Optional[str] creator_id: Optional[str] product_code: Optional[str] description: Optional[str] settings: Optional[ProjectSettingsSchema] metrics: Optional[ProjectMetricsSchema] creator: Optional[ProjectCreatorSchema] phase: Optional[str] product_name: Optional[str]
class ProjectSettingsSchema(TypedDict): """Schema for retrieving the project additional settings in Slingshot.""" sla_minutes: Optional[int] fix_scaling_type: Optional[bool] auto_apply_recs: Optional[bool] optimize_instance_size: Optional[bool] class ProjectMetricsSchema(TypedDict): """Schema for retrieving the project metrics in Slingshot.""" job_success_rate_percent: Optional[int] sla_met_percent: Optional[int] estimated_savings: Optional[int] class ProjectCreatorSchema(TypedDict): """Schema for retrieving the project creator in Slingshot.""" userId: Optional[str] auth0Id: Optional[str] tenantId: Optional[str] isTenantAdmin: Optional[bool] firstName: Optional[str] lastName: Optional[str] email: Optional[str] createdAt: Optional[str] updatedAt: Optional[str] isActive: Optional[bool] isRegistered: Optional[bool] class RecommendationDetailsSchema(TypedDict): """Schema for retrieving the details of recommendation to a project in Slingshot.""" created_at: Optional[str] updated_at: Optional[str] id: Optional[str] state: Optional[str] error: Optional[str] recommendation: Optional[RecommendationSchema] class RecommendationSchema(TypedDict): """Schema for the recommendation of a project in Slingshot.""" metrics: Optional[MetricsSchema] configuration: Optional[ConfigurationSchema] settings: Optional[SettingsSchema] class MetricsSchema(TypedDict): """Schema for the recommended metrics in Slingshot.""" spark_duration_minutes: Optional[int] spark_cost_requested_usd: Optional[int] class ConfigurationSchema(TypedDict): """Schema for the recommended configuration in Slingshot.""" enable_elastic_disk: Optional[bool] node_type_id: Optional[str] num_workers: Optional[int] autoscale: Optional[AutoscaleSchema] aws_attributes: Optional[AwsAttributesSchema] azure_attributes: Optional[AzureAttributesSchema] cluster_log_conf: Optional[ClusterLogConfSchema] default_tags: Optional[dict[str, str]] driver_node_type_id: Optional[str] spec: Optional[SpecSchema] class AutoscaleSchema(TypedDict): """Schema for the autoscale configuration in a recommendation.""" max_workers: Optional[int] min_workers: Optional[int] class AwsAttributesSchema(TypedDict): """Schema for the AWS attributes in a recommendation.""" availability: Optional[str] ebs_volume_count: Optional[int] ebs_volume_iops: Optional[int] ebs_volume_size: Optional[int] ebs_volume_throughput: Optional[int] ebs_volume_type: Optional[str] first_on_demand: Optional[int] spot_bid_price_percent: Optional[int] class AzureAttributesSchema(TypedDict): """Schema for the Azure attributes in a recommendation.""" availability: Optional[str] first_on_demand: Optional[int] spot_bid_max_price: Optional[int] class ClusterLogConfSchema(TypedDict): """Schema for the cluster log configuration in a recommendation.""" dbfs: Optional[DbfsLogConfSchema] s3: Optional[S3LogConfSchema] volumes: Optional[VolumesLogConfSchema] class DbfsLogConfSchema(TypedDict): """Schema for DBFS log configuration in a cluster log configuration.""" destination: Optional[str] class S3LogConfSchema(TypedDict): """Schema for S3 log configuration in a cluster log configuration.""" destination: Optional[str] canned_acl: Optional[str] enable_encryption: Optional[bool] encryption_type: Optional[str] endpoint: Optional[str] kms_key: Optional[str] region: Optional[str] class VolumesLogConfSchema(TypedDict): """Schema for volume log configuration in a cluster log configuration.""" destination: Optional[str] class SpecSchema(TypedDict): """Schema for the spec in a recommendation.""" enable_elastic_disk: Optional[bool] node_type_id: Optional[str] num_workers: Optional[int] driver_node_type_id: Optional[str] class SettingsSchema(TypedDict): """Schema for additional project settings in Slingshot.""" sla_minutes: Optional[int] fix_scaling_type: Optional[bool] auto_apply_recs: Optional[bool] optimize_instance_size: Optional[bool] QueryParams = Mapping[str, Union[str, list[str]]] T = TypeVar("T") class Page(TypedDict, Generic[T]): """A page of items from a paginated collection.""" page: int pages: int items: list[T]