hatchet-sdk 1.12.0__py3-none-any.whl → 1.12.2__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.

Potentially problematic release.


This version of hatchet-sdk might be problematic. Click here for more details.

@@ -10,8 +10,12 @@ from hatchet_sdk.clients.rest.api.event_api import EventApi
10
10
  from hatchet_sdk.clients.rest.api.workflow_runs_api import WorkflowRunsApi
11
11
  from hatchet_sdk.clients.rest.api_client import ApiClient
12
12
  from hatchet_sdk.clients.rest.models.v1_event_list import V1EventList
13
+ from hatchet_sdk.clients.rest.models.v1_task_status import V1TaskStatus
13
14
  from hatchet_sdk.clients.rest.tenacity_utils import tenacity_retry
14
- from hatchet_sdk.clients.v1.api_client import BaseRestClient
15
+ from hatchet_sdk.clients.v1.api_client import (
16
+ BaseRestClient,
17
+ maybe_additional_metadata_to_kv,
18
+ )
15
19
  from hatchet_sdk.config import ClientConfig
16
20
  from hatchet_sdk.connection import new_conn
17
21
  from hatchet_sdk.contracts.events_pb2 import (
@@ -211,9 +215,24 @@ class EventClient(BaseRestClient):
211
215
  keys: list[str] | None = None,
212
216
  since: datetime.datetime | None = None,
213
217
  until: datetime.datetime | None = None,
218
+ workflow_ids: list[str] | None = None,
219
+ workflow_run_statuses: list[V1TaskStatus] | None = None,
220
+ event_ids: list[str] | None = None,
221
+ additional_metadata: JSONSerializableMapping | None = None,
222
+ scopes: list[str] | None = None,
214
223
  ) -> V1EventList:
215
224
  return await asyncio.to_thread(
216
- self.list, offset=offset, limit=limit, keys=keys, since=since, until=until
225
+ self.list,
226
+ offset=offset,
227
+ limit=limit,
228
+ keys=keys,
229
+ since=since,
230
+ until=until,
231
+ workflow_ids=workflow_ids,
232
+ workflow_run_statuses=workflow_run_statuses,
233
+ event_ids=event_ids,
234
+ additional_metadata=additional_metadata,
235
+ scopes=scopes,
217
236
  )
218
237
 
219
238
  def list(
@@ -223,6 +242,11 @@ class EventClient(BaseRestClient):
223
242
  keys: list[str] | None = None,
224
243
  since: datetime.datetime | None = None,
225
244
  until: datetime.datetime | None = None,
245
+ workflow_ids: list[str] | None = None,
246
+ workflow_run_statuses: list[V1TaskStatus] | None = None,
247
+ event_ids: list[str] | None = None,
248
+ additional_metadata: JSONSerializableMapping | None = None,
249
+ scopes: list[str] | None = None,
226
250
  ) -> V1EventList:
227
251
  with self.client() as client:
228
252
  return self._ea(client).v1_event_list(
@@ -232,4 +256,11 @@ class EventClient(BaseRestClient):
232
256
  keys=keys,
233
257
  since=since,
234
258
  until=until,
259
+ workflow_ids=workflow_ids,
260
+ workflow_run_statuses=workflow_run_statuses,
261
+ event_ids=event_ids,
262
+ additional_metadata=maybe_additional_metadata_to_kv(
263
+ additional_metadata
264
+ ),
265
+ scopes=scopes,
235
266
  )
@@ -237,6 +237,7 @@ from hatchet_sdk.clients.rest.models.v1_create_filter_request import (
237
237
  from hatchet_sdk.clients.rest.models.v1_dag_children import V1DagChildren
238
238
  from hatchet_sdk.clients.rest.models.v1_event import V1Event
239
239
  from hatchet_sdk.clients.rest.models.v1_event_list import V1EventList
240
+ from hatchet_sdk.clients.rest.models.v1_event_triggered_run import V1EventTriggeredRun
240
241
  from hatchet_sdk.clients.rest.models.v1_event_workflow_run_summary import (
241
242
  V1EventWorkflowRunSummary,
242
243
  )
@@ -39,6 +39,7 @@ from hatchet_sdk.clients.rest.models.event_update_cancel200_response import (
39
39
  from hatchet_sdk.clients.rest.models.events import Events
40
40
  from hatchet_sdk.clients.rest.models.replay_event_request import ReplayEventRequest
41
41
  from hatchet_sdk.clients.rest.models.v1_event_list import V1EventList
42
+ from hatchet_sdk.clients.rest.models.v1_task_status import V1TaskStatus
42
43
  from hatchet_sdk.clients.rest.models.workflow_run_status import WorkflowRunStatus
43
44
  from hatchet_sdk.clients.rest.rest import RESTResponseType
44
45
 
@@ -2549,6 +2550,269 @@ class EventApi:
2549
2550
  _request_auth=_request_auth,
2550
2551
  )
2551
2552
 
2553
+ @validate_call
2554
+ def v1_event_key_list(
2555
+ self,
2556
+ tenant: Annotated[
2557
+ str,
2558
+ Field(
2559
+ min_length=36, strict=True, max_length=36, description="The tenant id"
2560
+ ),
2561
+ ],
2562
+ _request_timeout: Union[
2563
+ None,
2564
+ Annotated[StrictFloat, Field(gt=0)],
2565
+ Tuple[
2566
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2567
+ ],
2568
+ ] = None,
2569
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2570
+ _content_type: Optional[StrictStr] = None,
2571
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2572
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2573
+ ) -> EventKeyList:
2574
+ """List event keys
2575
+
2576
+ Lists all event keys for a tenant.
2577
+
2578
+ :param tenant: The tenant id (required)
2579
+ :type tenant: str
2580
+ :param _request_timeout: timeout setting for this request. If one
2581
+ number provided, it will be total request
2582
+ timeout. It can also be a pair (tuple) of
2583
+ (connection, read) timeouts.
2584
+ :type _request_timeout: int, tuple(int, int), optional
2585
+ :param _request_auth: set to override the auth_settings for an a single
2586
+ request; this effectively ignores the
2587
+ authentication in the spec for a single request.
2588
+ :type _request_auth: dict, optional
2589
+ :param _content_type: force content-type for the request.
2590
+ :type _content_type: str, Optional
2591
+ :param _headers: set to override the headers for a single
2592
+ request; this effectively ignores the headers
2593
+ in the spec for a single request.
2594
+ :type _headers: dict, optional
2595
+ :param _host_index: set to override the host_index for a single
2596
+ request; this effectively ignores the host_index
2597
+ in the spec for a single request.
2598
+ :type _host_index: int, optional
2599
+ :return: Returns the result object.
2600
+ """ # noqa: E501
2601
+
2602
+ _param = self._v1_event_key_list_serialize(
2603
+ tenant=tenant,
2604
+ _request_auth=_request_auth,
2605
+ _content_type=_content_type,
2606
+ _headers=_headers,
2607
+ _host_index=_host_index,
2608
+ )
2609
+
2610
+ _response_types_map: Dict[str, Optional[str]] = {
2611
+ "200": "EventKeyList",
2612
+ "400": "APIErrors",
2613
+ "403": "APIErrors",
2614
+ }
2615
+ response_data = self.api_client.call_api(
2616
+ *_param, _request_timeout=_request_timeout
2617
+ )
2618
+ response_data.read()
2619
+ return self.api_client.response_deserialize(
2620
+ response_data=response_data,
2621
+ response_types_map=_response_types_map,
2622
+ ).data
2623
+
2624
+ @validate_call
2625
+ def v1_event_key_list_with_http_info(
2626
+ self,
2627
+ tenant: Annotated[
2628
+ str,
2629
+ Field(
2630
+ min_length=36, strict=True, max_length=36, description="The tenant id"
2631
+ ),
2632
+ ],
2633
+ _request_timeout: Union[
2634
+ None,
2635
+ Annotated[StrictFloat, Field(gt=0)],
2636
+ Tuple[
2637
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2638
+ ],
2639
+ ] = None,
2640
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2641
+ _content_type: Optional[StrictStr] = None,
2642
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2643
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2644
+ ) -> ApiResponse[EventKeyList]:
2645
+ """List event keys
2646
+
2647
+ Lists all event keys for a tenant.
2648
+
2649
+ :param tenant: The tenant id (required)
2650
+ :type tenant: str
2651
+ :param _request_timeout: timeout setting for this request. If one
2652
+ number provided, it will be total request
2653
+ timeout. It can also be a pair (tuple) of
2654
+ (connection, read) timeouts.
2655
+ :type _request_timeout: int, tuple(int, int), optional
2656
+ :param _request_auth: set to override the auth_settings for an a single
2657
+ request; this effectively ignores the
2658
+ authentication in the spec for a single request.
2659
+ :type _request_auth: dict, optional
2660
+ :param _content_type: force content-type for the request.
2661
+ :type _content_type: str, Optional
2662
+ :param _headers: set to override the headers for a single
2663
+ request; this effectively ignores the headers
2664
+ in the spec for a single request.
2665
+ :type _headers: dict, optional
2666
+ :param _host_index: set to override the host_index for a single
2667
+ request; this effectively ignores the host_index
2668
+ in the spec for a single request.
2669
+ :type _host_index: int, optional
2670
+ :return: Returns the result object.
2671
+ """ # noqa: E501
2672
+
2673
+ _param = self._v1_event_key_list_serialize(
2674
+ tenant=tenant,
2675
+ _request_auth=_request_auth,
2676
+ _content_type=_content_type,
2677
+ _headers=_headers,
2678
+ _host_index=_host_index,
2679
+ )
2680
+
2681
+ _response_types_map: Dict[str, Optional[str]] = {
2682
+ "200": "EventKeyList",
2683
+ "400": "APIErrors",
2684
+ "403": "APIErrors",
2685
+ }
2686
+ response_data = self.api_client.call_api(
2687
+ *_param, _request_timeout=_request_timeout
2688
+ )
2689
+ response_data.read()
2690
+ return self.api_client.response_deserialize(
2691
+ response_data=response_data,
2692
+ response_types_map=_response_types_map,
2693
+ )
2694
+
2695
+ @validate_call
2696
+ def v1_event_key_list_without_preload_content(
2697
+ self,
2698
+ tenant: Annotated[
2699
+ str,
2700
+ Field(
2701
+ min_length=36, strict=True, max_length=36, description="The tenant id"
2702
+ ),
2703
+ ],
2704
+ _request_timeout: Union[
2705
+ None,
2706
+ Annotated[StrictFloat, Field(gt=0)],
2707
+ Tuple[
2708
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2709
+ ],
2710
+ ] = None,
2711
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2712
+ _content_type: Optional[StrictStr] = None,
2713
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2714
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2715
+ ) -> RESTResponseType:
2716
+ """List event keys
2717
+
2718
+ Lists all event keys for a tenant.
2719
+
2720
+ :param tenant: The tenant id (required)
2721
+ :type tenant: str
2722
+ :param _request_timeout: timeout setting for this request. If one
2723
+ number provided, it will be total request
2724
+ timeout. It can also be a pair (tuple) of
2725
+ (connection, read) timeouts.
2726
+ :type _request_timeout: int, tuple(int, int), optional
2727
+ :param _request_auth: set to override the auth_settings for an a single
2728
+ request; this effectively ignores the
2729
+ authentication in the spec for a single request.
2730
+ :type _request_auth: dict, optional
2731
+ :param _content_type: force content-type for the request.
2732
+ :type _content_type: str, Optional
2733
+ :param _headers: set to override the headers for a single
2734
+ request; this effectively ignores the headers
2735
+ in the spec for a single request.
2736
+ :type _headers: dict, optional
2737
+ :param _host_index: set to override the host_index for a single
2738
+ request; this effectively ignores the host_index
2739
+ in the spec for a single request.
2740
+ :type _host_index: int, optional
2741
+ :return: Returns the result object.
2742
+ """ # noqa: E501
2743
+
2744
+ _param = self._v1_event_key_list_serialize(
2745
+ tenant=tenant,
2746
+ _request_auth=_request_auth,
2747
+ _content_type=_content_type,
2748
+ _headers=_headers,
2749
+ _host_index=_host_index,
2750
+ )
2751
+
2752
+ _response_types_map: Dict[str, Optional[str]] = {
2753
+ "200": "EventKeyList",
2754
+ "400": "APIErrors",
2755
+ "403": "APIErrors",
2756
+ }
2757
+ response_data = self.api_client.call_api(
2758
+ *_param, _request_timeout=_request_timeout
2759
+ )
2760
+ return response_data.response
2761
+
2762
+ def _v1_event_key_list_serialize(
2763
+ self,
2764
+ tenant,
2765
+ _request_auth,
2766
+ _content_type,
2767
+ _headers,
2768
+ _host_index,
2769
+ ) -> RequestSerialized:
2770
+
2771
+ _host = None
2772
+
2773
+ _collection_formats: Dict[str, str] = {}
2774
+
2775
+ _path_params: Dict[str, str] = {}
2776
+ _query_params: List[Tuple[str, str]] = []
2777
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2778
+ _form_params: List[Tuple[str, str]] = []
2779
+ _files: Dict[
2780
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2781
+ ] = {}
2782
+ _body_params: Optional[bytes] = None
2783
+
2784
+ # process the path parameters
2785
+ if tenant is not None:
2786
+ _path_params["tenant"] = tenant
2787
+ # process the query parameters
2788
+ # process the header parameters
2789
+ # process the form parameters
2790
+ # process the body parameter
2791
+
2792
+ # set the HTTP header `Accept`
2793
+ if "Accept" not in _header_params:
2794
+ _header_params["Accept"] = self.api_client.select_header_accept(
2795
+ ["application/json"]
2796
+ )
2797
+
2798
+ # authentication setting
2799
+ _auth_settings: List[str] = ["cookieAuth", "bearerAuth"]
2800
+
2801
+ return self.api_client.param_serialize(
2802
+ method="GET",
2803
+ resource_path="/api/v1/stable/tenants/{tenant}/events/keys",
2804
+ path_params=_path_params,
2805
+ query_params=_query_params,
2806
+ header_params=_header_params,
2807
+ body=_body_params,
2808
+ post_params=_form_params,
2809
+ files=_files,
2810
+ auth_settings=_auth_settings,
2811
+ collection_formats=_collection_formats,
2812
+ _host=_host,
2813
+ _request_auth=_request_auth,
2814
+ )
2815
+
2552
2816
  @validate_call
2553
2817
  def v1_event_list(
2554
2818
  self,
@@ -2575,6 +2839,34 @@ class EventApi:
2575
2839
  Optional[datetime],
2576
2840
  Field(description="Consider events that occurred before this time"),
2577
2841
  ] = None,
2842
+ workflow_ids: Annotated[
2843
+ Optional[
2844
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
2845
+ ],
2846
+ Field(
2847
+ description="Filter to events that are associated with a specific workflow run"
2848
+ ),
2849
+ ] = None,
2850
+ workflow_run_statuses: Annotated[
2851
+ Optional[List[V1TaskStatus]],
2852
+ Field(
2853
+ description="Filter to events that are associated with workflow runs matching a certain status"
2854
+ ),
2855
+ ] = None,
2856
+ event_ids: Annotated[
2857
+ Optional[
2858
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
2859
+ ],
2860
+ Field(description="Filter to specific events by their ids"),
2861
+ ] = None,
2862
+ additional_metadata: Annotated[
2863
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
2864
+ Field(description="Filter by additional metadata on the events"),
2865
+ ] = None,
2866
+ scopes: Annotated[
2867
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
2868
+ Field(description="The scopes to filter by"),
2869
+ ] = None,
2578
2870
  _request_timeout: Union[
2579
2871
  None,
2580
2872
  Annotated[StrictFloat, Field(gt=0)],
@@ -2603,6 +2895,16 @@ class EventApi:
2603
2895
  :type since: datetime
2604
2896
  :param until: Consider events that occurred before this time
2605
2897
  :type until: datetime
2898
+ :param workflow_ids: Filter to events that are associated with a specific workflow run
2899
+ :type workflow_ids: List[str]
2900
+ :param workflow_run_statuses: Filter to events that are associated with workflow runs matching a certain status
2901
+ :type workflow_run_statuses: List[V1TaskStatus]
2902
+ :param event_ids: Filter to specific events by their ids
2903
+ :type event_ids: List[str]
2904
+ :param additional_metadata: Filter by additional metadata on the events
2905
+ :type additional_metadata: List[str]
2906
+ :param scopes: The scopes to filter by
2907
+ :type scopes: List[str]
2606
2908
  :param _request_timeout: timeout setting for this request. If one
2607
2909
  number provided, it will be total request
2608
2910
  timeout. It can also be a pair (tuple) of
@@ -2632,6 +2934,11 @@ class EventApi:
2632
2934
  keys=keys,
2633
2935
  since=since,
2634
2936
  until=until,
2937
+ workflow_ids=workflow_ids,
2938
+ workflow_run_statuses=workflow_run_statuses,
2939
+ event_ids=event_ids,
2940
+ additional_metadata=additional_metadata,
2941
+ scopes=scopes,
2635
2942
  _request_auth=_request_auth,
2636
2943
  _content_type=_content_type,
2637
2944
  _headers=_headers,
@@ -2678,6 +2985,34 @@ class EventApi:
2678
2985
  Optional[datetime],
2679
2986
  Field(description="Consider events that occurred before this time"),
2680
2987
  ] = None,
2988
+ workflow_ids: Annotated[
2989
+ Optional[
2990
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
2991
+ ],
2992
+ Field(
2993
+ description="Filter to events that are associated with a specific workflow run"
2994
+ ),
2995
+ ] = None,
2996
+ workflow_run_statuses: Annotated[
2997
+ Optional[List[V1TaskStatus]],
2998
+ Field(
2999
+ description="Filter to events that are associated with workflow runs matching a certain status"
3000
+ ),
3001
+ ] = None,
3002
+ event_ids: Annotated[
3003
+ Optional[
3004
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
3005
+ ],
3006
+ Field(description="Filter to specific events by their ids"),
3007
+ ] = None,
3008
+ additional_metadata: Annotated[
3009
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
3010
+ Field(description="Filter by additional metadata on the events"),
3011
+ ] = None,
3012
+ scopes: Annotated[
3013
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
3014
+ Field(description="The scopes to filter by"),
3015
+ ] = None,
2681
3016
  _request_timeout: Union[
2682
3017
  None,
2683
3018
  Annotated[StrictFloat, Field(gt=0)],
@@ -2706,6 +3041,16 @@ class EventApi:
2706
3041
  :type since: datetime
2707
3042
  :param until: Consider events that occurred before this time
2708
3043
  :type until: datetime
3044
+ :param workflow_ids: Filter to events that are associated with a specific workflow run
3045
+ :type workflow_ids: List[str]
3046
+ :param workflow_run_statuses: Filter to events that are associated with workflow runs matching a certain status
3047
+ :type workflow_run_statuses: List[V1TaskStatus]
3048
+ :param event_ids: Filter to specific events by their ids
3049
+ :type event_ids: List[str]
3050
+ :param additional_metadata: Filter by additional metadata on the events
3051
+ :type additional_metadata: List[str]
3052
+ :param scopes: The scopes to filter by
3053
+ :type scopes: List[str]
2709
3054
  :param _request_timeout: timeout setting for this request. If one
2710
3055
  number provided, it will be total request
2711
3056
  timeout. It can also be a pair (tuple) of
@@ -2735,6 +3080,11 @@ class EventApi:
2735
3080
  keys=keys,
2736
3081
  since=since,
2737
3082
  until=until,
3083
+ workflow_ids=workflow_ids,
3084
+ workflow_run_statuses=workflow_run_statuses,
3085
+ event_ids=event_ids,
3086
+ additional_metadata=additional_metadata,
3087
+ scopes=scopes,
2738
3088
  _request_auth=_request_auth,
2739
3089
  _content_type=_content_type,
2740
3090
  _headers=_headers,
@@ -2781,6 +3131,34 @@ class EventApi:
2781
3131
  Optional[datetime],
2782
3132
  Field(description="Consider events that occurred before this time"),
2783
3133
  ] = None,
3134
+ workflow_ids: Annotated[
3135
+ Optional[
3136
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
3137
+ ],
3138
+ Field(
3139
+ description="Filter to events that are associated with a specific workflow run"
3140
+ ),
3141
+ ] = None,
3142
+ workflow_run_statuses: Annotated[
3143
+ Optional[List[V1TaskStatus]],
3144
+ Field(
3145
+ description="Filter to events that are associated with workflow runs matching a certain status"
3146
+ ),
3147
+ ] = None,
3148
+ event_ids: Annotated[
3149
+ Optional[
3150
+ List[Annotated[str, Field(min_length=36, strict=True, max_length=36)]]
3151
+ ],
3152
+ Field(description="Filter to specific events by their ids"),
3153
+ ] = None,
3154
+ additional_metadata: Annotated[
3155
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
3156
+ Field(description="Filter by additional metadata on the events"),
3157
+ ] = None,
3158
+ scopes: Annotated[
3159
+ Optional[List[Annotated[str, Field(min_length=1, strict=True)]]],
3160
+ Field(description="The scopes to filter by"),
3161
+ ] = None,
2784
3162
  _request_timeout: Union[
2785
3163
  None,
2786
3164
  Annotated[StrictFloat, Field(gt=0)],
@@ -2809,6 +3187,16 @@ class EventApi:
2809
3187
  :type since: datetime
2810
3188
  :param until: Consider events that occurred before this time
2811
3189
  :type until: datetime
3190
+ :param workflow_ids: Filter to events that are associated with a specific workflow run
3191
+ :type workflow_ids: List[str]
3192
+ :param workflow_run_statuses: Filter to events that are associated with workflow runs matching a certain status
3193
+ :type workflow_run_statuses: List[V1TaskStatus]
3194
+ :param event_ids: Filter to specific events by their ids
3195
+ :type event_ids: List[str]
3196
+ :param additional_metadata: Filter by additional metadata on the events
3197
+ :type additional_metadata: List[str]
3198
+ :param scopes: The scopes to filter by
3199
+ :type scopes: List[str]
2812
3200
  :param _request_timeout: timeout setting for this request. If one
2813
3201
  number provided, it will be total request
2814
3202
  timeout. It can also be a pair (tuple) of
@@ -2838,6 +3226,11 @@ class EventApi:
2838
3226
  keys=keys,
2839
3227
  since=since,
2840
3228
  until=until,
3229
+ workflow_ids=workflow_ids,
3230
+ workflow_run_statuses=workflow_run_statuses,
3231
+ event_ids=event_ids,
3232
+ additional_metadata=additional_metadata,
3233
+ scopes=scopes,
2841
3234
  _request_auth=_request_auth,
2842
3235
  _content_type=_content_type,
2843
3236
  _headers=_headers,
@@ -2862,6 +3255,11 @@ class EventApi:
2862
3255
  keys,
2863
3256
  since,
2864
3257
  until,
3258
+ workflow_ids,
3259
+ workflow_run_statuses,
3260
+ event_ids,
3261
+ additional_metadata,
3262
+ scopes,
2865
3263
  _request_auth,
2866
3264
  _content_type,
2867
3265
  _headers,
@@ -2872,6 +3270,11 @@ class EventApi:
2872
3270
 
2873
3271
  _collection_formats: Dict[str, str] = {
2874
3272
  "keys": "multi",
3273
+ "workflowIds": "multi",
3274
+ "workflowRunStatuses": "multi",
3275
+ "eventIds": "multi",
3276
+ "additionalMetadata": "multi",
3277
+ "scopes": "multi",
2875
3278
  }
2876
3279
 
2877
3280
  _path_params: Dict[str, str] = {}
@@ -2921,6 +3324,26 @@ class EventApi:
2921
3324
  else:
2922
3325
  _query_params.append(("until", until))
2923
3326
 
3327
+ if workflow_ids is not None:
3328
+
3329
+ _query_params.append(("workflowIds", workflow_ids))
3330
+
3331
+ if workflow_run_statuses is not None:
3332
+
3333
+ _query_params.append(("workflowRunStatuses", workflow_run_statuses))
3334
+
3335
+ if event_ids is not None:
3336
+
3337
+ _query_params.append(("eventIds", event_ids))
3338
+
3339
+ if additional_metadata is not None:
3340
+
3341
+ _query_params.append(("additionalMetadata", additional_metadata))
3342
+
3343
+ if scopes is not None:
3344
+
3345
+ _query_params.append(("scopes", scopes))
3346
+
2924
3347
  # process the header parameters
2925
3348
  # process the form parameters
2926
3349
  # process the body parameter
@@ -201,6 +201,7 @@ from hatchet_sdk.clients.rest.models.v1_create_filter_request import (
201
201
  from hatchet_sdk.clients.rest.models.v1_dag_children import V1DagChildren
202
202
  from hatchet_sdk.clients.rest.models.v1_event import V1Event
203
203
  from hatchet_sdk.clients.rest.models.v1_event_list import V1EventList
204
+ from hatchet_sdk.clients.rest.models.v1_event_triggered_run import V1EventTriggeredRun
204
205
  from hatchet_sdk.clients.rest.models.v1_event_workflow_run_summary import (
205
206
  V1EventWorkflowRunSummary,
206
207
  )
@@ -23,6 +23,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictStr
23
23
  from typing_extensions import Self
24
24
 
25
25
  from hatchet_sdk.clients.rest.models.tenant_ui_version import TenantUIVersion
26
+ from hatchet_sdk.clients.rest.models.tenant_version import TenantVersion
26
27
 
27
28
 
28
29
  class CreateTenantRequest(BaseModel):
@@ -37,7 +38,12 @@ class CreateTenantRequest(BaseModel):
37
38
  description="The UI version of the tenant. Defaults to V0.",
38
39
  alias="uiVersion",
39
40
  )
40
- __properties: ClassVar[List[str]] = ["name", "slug", "uiVersion"]
41
+ engine_version: Optional[TenantVersion] = Field(
42
+ default=None,
43
+ description="The engine version of the tenant. Defaults to V0.",
44
+ alias="engineVersion",
45
+ )
46
+ __properties: ClassVar[List[str]] = ["name", "slug", "uiVersion", "engineVersion"]
41
47
 
42
48
  model_config = ConfigDict(
43
49
  populate_by_name=True,
@@ -92,6 +98,7 @@ class CreateTenantRequest(BaseModel):
92
98
  "name": obj.get("name"),
93
99
  "slug": obj.get("slug"),
94
100
  "uiVersion": obj.get("uiVersion"),
101
+ "engineVersion": obj.get("engineVersion"),
95
102
  }
96
103
  )
97
104
  return _obj
@@ -17,6 +17,7 @@ from __future__ import annotations
17
17
  import json
18
18
  import pprint
19
19
  import re # noqa: F401
20
+ from datetime import datetime
20
21
  from typing import Any, ClassVar, Dict, List, Optional, Set
21
22
 
22
23
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
@@ -24,6 +25,7 @@ from typing_extensions import Self
24
25
 
25
26
  from hatchet_sdk.clients.rest.models.api_resource_meta import APIResourceMeta
26
27
  from hatchet_sdk.clients.rest.models.tenant import Tenant
28
+ from hatchet_sdk.clients.rest.models.v1_event_triggered_run import V1EventTriggeredRun
27
29
  from hatchet_sdk.clients.rest.models.v1_event_workflow_run_summary import (
28
30
  V1EventWorkflowRunSummary,
29
31
  )
@@ -51,6 +53,24 @@ class V1Event(BaseModel):
51
53
  description="Additional metadata for the event.",
52
54
  alias="additionalMetadata",
53
55
  )
56
+ payload: Optional[Dict[str, Any]] = Field(
57
+ default=None,
58
+ description="The payload of the event, which can be any JSON-serializable object.",
59
+ )
60
+ scope: Optional[StrictStr] = Field(
61
+ default=None,
62
+ description="The scope of the event, which can be used to filter or categorize events.",
63
+ )
64
+ seen_at: Optional[datetime] = Field(
65
+ default=None,
66
+ description="The timestamp when the event was seen.",
67
+ alias="seenAt",
68
+ )
69
+ triggered_runs: Optional[List[V1EventTriggeredRun]] = Field(
70
+ default=None,
71
+ description="The external IDs of the runs that were triggered by this event.",
72
+ alias="triggeredRuns",
73
+ )
54
74
  __properties: ClassVar[List[str]] = [
55
75
  "metadata",
56
76
  "key",
@@ -58,6 +78,10 @@ class V1Event(BaseModel):
58
78
  "tenantId",
59
79
  "workflowRunSummary",
60
80
  "additionalMetadata",
81
+ "payload",
82
+ "scope",
83
+ "seenAt",
84
+ "triggeredRuns",
61
85
  ]
62
86
 
63
87
  model_config = ConfigDict(
@@ -106,6 +130,13 @@ class V1Event(BaseModel):
106
130
  # override the default output from pydantic by calling `to_dict()` of workflow_run_summary
107
131
  if self.workflow_run_summary:
108
132
  _dict["workflowRunSummary"] = self.workflow_run_summary.to_dict()
133
+ # override the default output from pydantic by calling `to_dict()` of each item in triggered_runs (list)
134
+ _items = []
135
+ if self.triggered_runs:
136
+ for _item_triggered_runs in self.triggered_runs:
137
+ if _item_triggered_runs:
138
+ _items.append(_item_triggered_runs.to_dict())
139
+ _dict["triggeredRuns"] = _items
109
140
  return _dict
110
141
 
111
142
  @classmethod
@@ -137,6 +168,17 @@ class V1Event(BaseModel):
137
168
  else None
138
169
  ),
139
170
  "additionalMetadata": obj.get("additionalMetadata"),
171
+ "payload": obj.get("payload"),
172
+ "scope": obj.get("scope"),
173
+ "seenAt": obj.get("seenAt"),
174
+ "triggeredRuns": (
175
+ [
176
+ V1EventTriggeredRun.from_dict(_item)
177
+ for _item in obj["triggeredRuns"]
178
+ ]
179
+ if obj.get("triggeredRuns") is not None
180
+ else None
181
+ ),
140
182
  }
141
183
  )
142
184
  return _obj
@@ -0,0 +1,94 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hatchet API
5
+
6
+ The Hatchet API
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import pprint
19
+ import re # noqa: F401
20
+ from typing import Any, ClassVar, Dict, List, Optional, Set
21
+
22
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
23
+ from typing_extensions import Annotated, Self
24
+
25
+
26
+ class V1EventTriggeredRun(BaseModel):
27
+ """
28
+ V1EventTriggeredRun
29
+ """ # noqa: E501
30
+
31
+ workflow_run_id: Annotated[
32
+ str, Field(min_length=36, strict=True, max_length=36)
33
+ ] = Field(
34
+ description="The external ID of the triggered run.", alias="workflowRunId"
35
+ )
36
+ filter_id: Optional[StrictStr] = Field(
37
+ default=None,
38
+ description="The ID of the filter that triggered the run, if applicable.",
39
+ alias="filterId",
40
+ )
41
+ __properties: ClassVar[List[str]] = ["workflowRunId", "filterId"]
42
+
43
+ model_config = ConfigDict(
44
+ populate_by_name=True,
45
+ validate_assignment=True,
46
+ protected_namespaces=(),
47
+ )
48
+
49
+ def to_str(self) -> str:
50
+ """Returns the string representation of the model using alias"""
51
+ return pprint.pformat(self.model_dump(by_alias=True))
52
+
53
+ def to_json(self) -> str:
54
+ """Returns the JSON representation of the model using alias"""
55
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
56
+ return json.dumps(self.to_dict())
57
+
58
+ @classmethod
59
+ def from_json(cls, json_str: str) -> Optional[Self]:
60
+ """Create an instance of V1EventTriggeredRun from a JSON string"""
61
+ return cls.from_dict(json.loads(json_str))
62
+
63
+ def to_dict(self) -> Dict[str, Any]:
64
+ """Return the dictionary representation of the model using alias.
65
+
66
+ This has the following differences from calling pydantic's
67
+ `self.model_dump(by_alias=True)`:
68
+
69
+ * `None` is only added to the output dict for nullable fields that
70
+ were set at model initialization. Other fields with value `None`
71
+ are ignored.
72
+ """
73
+ excluded_fields: Set[str] = set([])
74
+
75
+ _dict = self.model_dump(
76
+ by_alias=True,
77
+ exclude=excluded_fields,
78
+ exclude_none=True,
79
+ )
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
+ """Create an instance of V1EventTriggeredRun from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return cls.model_validate(obj)
90
+
91
+ _obj = cls.model_validate(
92
+ {"workflowRunId": obj.get("workflowRunId"), "filterId": obj.get("filterId")}
93
+ )
94
+ return _obj
@@ -122,7 +122,7 @@ class Task(Generic[TWorkflowInput, R]):
122
122
  else:
123
123
  fn = cast(Callable[[TWorkflowInput, Context], R], self.fn)
124
124
  if is_sync_fn(fn):
125
- return fn(workflow_input, cast(Context, ctx))
125
+ return fn(workflow_input, ctx)
126
126
 
127
127
  raise TypeError(f"{self.name} is not a sync function. Use `acall` instead.")
128
128
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hatchet-sdk
3
- Version: 1.12.0
3
+ Version: 1.12.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Alexander Belanger
@@ -27,7 +27,7 @@ Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.28.0,<2.0.0) ; extra
27
27
  Requires-Dist: opentelemetry-instrumentation (>=0.49b0) ; extra == "otel"
28
28
  Requires-Dist: opentelemetry-sdk (>=1.28.0,<2.0.0) ; extra == "otel"
29
29
  Requires-Dist: prometheus-client (>=0.21.1,<0.22.0)
30
- Requires-Dist: protobuf (>=5.29.1,<6.0.0)
30
+ Requires-Dist: protobuf (>=5.29.5,<6.0.0)
31
31
  Requires-Dist: pydantic (>=2.6.3,<3.0.0)
32
32
  Requires-Dist: pydantic-settings (>=2.7.1,<3.0.0)
33
33
  Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
@@ -4,16 +4,16 @@ hatchet_sdk/clients/admin.py,sha256=B4fav9EYdsMbMqaH3GUEwL8sza1tQ3RORlwGXUb7qp0,
4
4
  hatchet_sdk/clients/dispatcher/action_listener.py,sha256=XUDXye-HW4V30DBgjd_dmq7e03AS9eBxUJi1VsvfSqE,13837
5
5
  hatchet_sdk/clients/dispatcher/dispatcher.py,sha256=LoxQEX5FS6v-qKRtOXoqsx3VlBUgFgTkbK58LU1eU3I,8176
6
6
  hatchet_sdk/clients/event_ts.py,sha256=MudFszIb9IcPKQYvBTzcatPkcWEy3nxbAtEQ0_NYxMg,2094
7
- hatchet_sdk/clients/events.py,sha256=AjNNoE_77AHqoH16vGn0-YG7f9WiowDUuI0NzB_Q7W8,7522
7
+ hatchet_sdk/clients/events.py,sha256=gqxNZphGFkIzMKyvmLWaaWmFglXR95ZiQxkS_F1rXTY,8740
8
8
  hatchet_sdk/clients/listeners/durable_event_listener.py,sha256=jpqnbZsuouWk3XaOIYL9apaGtVk65eKKq66eBP9klBs,4085
9
9
  hatchet_sdk/clients/listeners/pooled_listener.py,sha256=1rodfIeqmHRF-u-PB6cBJbOU8NrvToLTyGigJMydpGo,8496
10
10
  hatchet_sdk/clients/listeners/run_event_listener.py,sha256=rIjBLRF7d7FBoEq7RKbmbOA84lX_hHSU26trwnthqV8,10230
11
11
  hatchet_sdk/clients/listeners/workflow_listener.py,sha256=EhBZZnHiidDLvAc4r54Re_LJXVypinbgTE9qKBybxj8,2054
12
- hatchet_sdk/clients/rest/__init__.py,sha256=27meuy5OTYKQAd5ZST_CBtod20SsSvkcDpSRKaqlsJA,17379
12
+ hatchet_sdk/clients/rest/__init__.py,sha256=0bOD0KcR1mN8ZxEQuVBLJacaFehKKWGMinLeiVCi8dU,17466
13
13
  hatchet_sdk/clients/rest/api/__init__.py,sha256=Hha-Kw2hqeGf7j96pNzl3YlkHaD7HnEWGZCqvr18Vbk,1262
14
14
  hatchet_sdk/clients/rest/api/api_token_api.py,sha256=xzqMH_-wajBA0qLLs5Ta7tYg4FOLq0NjATyhZ1SV9jo,33433
15
15
  hatchet_sdk/clients/rest/api/default_api.py,sha256=Y0jEhatVpdIX_W2MCt_n40K6iKvVegDB70qxexkeZDI,88677
16
- hatchet_sdk/clients/rest/api/event_api.py,sha256=zUJXjB4OKT2tS6k0tKhOuUp9N9CCOaU7THI6DWXEa5Q,114856
16
+ hatchet_sdk/clients/rest/api/event_api.py,sha256=R7OsLTAodCpHX8ynX0zxJqr5gB19nlmlohK-jeZPDu8,132097
17
17
  hatchet_sdk/clients/rest/api/filter_api.py,sha256=JernNvf6tqv35p85bkgxIxpIkuY8y668XyZONoEQ8oU,62955
18
18
  hatchet_sdk/clients/rest/api/github_api.py,sha256=yoCCZ33r5rQYp9b2pp36TGzjq-zORSYX1LMp5Ibsll8,12059
19
19
  hatchet_sdk/clients/rest/api/healthcheck_api.py,sha256=fr8DOMqCMe4igJFeyi0C2ZmAMlghJszAl2SQJMnUzKc,18683
@@ -34,7 +34,7 @@ hatchet_sdk/clients/rest/api_client.py,sha256=25vNKzpKVhvrGrU8T2YBLbz0Y7K0pKZwiL
34
34
  hatchet_sdk/clients/rest/api_response.py,sha256=rSuCVGY-HE8X_WwteQP5wyANIuS-L5AmtZEUOwTicak,641
35
35
  hatchet_sdk/clients/rest/configuration.py,sha256=ijGxGorVe8OEikJruwJ0hPk1Rc0OAKOqeUrfcoEiYH8,19333
36
36
  hatchet_sdk/clients/rest/exceptions.py,sha256=5PTEjyGxLeGP8U_qqc79QzR-sN7SOhzBwknSUC-BU4c,6365
37
- hatchet_sdk/clients/rest/models/__init__.py,sha256=E1zAaEv3GkQtU80XBqEifUO_2GfSgXen56o3C5TlOdA,15737
37
+ hatchet_sdk/clients/rest/models/__init__.py,sha256=rKvfyD9B8tVISjMUxX-P2_wYOXGDdBdid5Af3-4x7h0,15824
38
38
  hatchet_sdk/clients/rest/models/accept_invite_request.py,sha256=_otOis3SuTHl0F_hhYD-rYqgyxCXRn83CK_eU9oMdn4,2427
39
39
  hatchet_sdk/clients/rest/models/api_error.py,sha256=KodK1_cc28CgYGvX1WhIhTN0pAAkgq8PJXReIrMnqBA,3068
40
40
  hatchet_sdk/clients/rest/models/api_errors.py,sha256=RNmnWn1GWlG9xTvpvrTmKq-Pr70x9mcJ4-dNFBemxa8,2917
@@ -57,7 +57,7 @@ hatchet_sdk/clients/rest/models/create_pull_request_from_step_run.py,sha256=YWYB
57
57
  hatchet_sdk/clients/rest/models/create_sns_integration_request.py,sha256=8xi59Xun0UGlNxJ7VuqHPAfqqH4takdtmZ673mK_6Og,2517
58
58
  hatchet_sdk/clients/rest/models/create_tenant_alert_email_group_request.py,sha256=MgMDiPtElEiiZU6boYVkOl9nSkvP9bnFjUIzByEn7WM,2488
59
59
  hatchet_sdk/clients/rest/models/create_tenant_invite_request.py,sha256=fVCrUaEcnKW8ekH4mPZpch1056i4tJVYHRyU9aDVuVE,2648
60
- hatchet_sdk/clients/rest/models/create_tenant_request.py,sha256=w3UzkUBjxdOlUbmF3DHGcvTCi079tXHrTfY0V-5LCUA,2898
60
+ hatchet_sdk/clients/rest/models/create_tenant_request.py,sha256=ZKDe4BNp5DqVTlc10Ud10BaIwUcGay0i2sPl6W4Iv9Y,3232
61
61
  hatchet_sdk/clients/rest/models/cron_workflows.py,sha256=mHYhFHC-0NcA_sosCnYCqRiTYMvSbQQZiRCMTO4kgYc,4310
62
62
  hatchet_sdk/clients/rest/models/cron_workflows_list.py,sha256=bLMycEajkleH0-8gGuqDAvZDparvQ4LRKa2sX3bxsG0,3495
63
63
  hatchet_sdk/clients/rest/models/cron_workflows_method.py,sha256=zq05HHTwhf-D2kmhbf40ihYCDBihAeEMQEbr7DrtaoM,679
@@ -154,8 +154,9 @@ hatchet_sdk/clients/rest/models/user_tenant_public.py,sha256=-P2vPanI-paZmj_0nm7
154
154
  hatchet_sdk/clients/rest/models/v1_cancel_task_request.py,sha256=U0QKLQ7E35sgGSZyi-n3C9omZneqHVBMYymfD5a189g,3178
155
155
  hatchet_sdk/clients/rest/models/v1_create_filter_request.py,sha256=2OCv0o9bhgIF20L-KOXTvePbVI_G6eXTunGTNHMYEwg,3117
156
156
  hatchet_sdk/clients/rest/models/v1_dag_children.py,sha256=Rk_mKqboHebga12JhnQbN3yhrLXKm_hqtCbTfAdJliU,3135
157
- hatchet_sdk/clients/rest/models/v1_event.py,sha256=S5VkTg-o2v8ACJi_u6n4rO53K_wR7uiMutLsKv1KWB8,4695
157
+ hatchet_sdk/clients/rest/models/v1_event.py,sha256=OvHE2pSuJZEtIRvV7y1kIL1M63_qz6UGsPCjT5Qz9Fk,6408
158
158
  hatchet_sdk/clients/rest/models/v1_event_list.py,sha256=miUX2fVgV_9dFHm6Kx3A09KSI8fRowbEwtfzImuTHfE,3447
159
+ hatchet_sdk/clients/rest/models/v1_event_triggered_run.py,sha256=JBi9i3_XBosPqG95yjL92YdNVc-Yxa92JRaIrhxkEcU,2828
159
160
  hatchet_sdk/clients/rest/models/v1_event_workflow_run_summary.py,sha256=X09QH2HU7a7TV4A7xH6P5LxekWlWR_NOsPv9-E3Ncy8,3089
160
161
  hatchet_sdk/clients/rest/models/v1_filter.py,sha256=XKP8VAKRt3Ks1dZmo0ggtba5zTjIMWXkZuMSwZhDOLI,3899
161
162
  hatchet_sdk/clients/rest/models/v1_filter_list.py,sha256=TFeTo77aAs-3yeCdgCWHn2NRgflP1vpxd1XiylnGp5E,3455
@@ -272,7 +273,7 @@ hatchet_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
272
273
  hatchet_sdk/rate_limit.py,sha256=TwbCuggiZaWpYuo4mjVLlE-z1OfQ2mRBiVvCSaG3lv4,3919
273
274
  hatchet_sdk/runnables/action.py,sha256=3B4VpiWIExiWE6kZBKP8EXXpRbkHrHt-L6hC6w8FZRo,4402
274
275
  hatchet_sdk/runnables/contextvars.py,sha256=3hXlW03FNg2sEq8_A7wMPf_c7FTNuZqg5U9n2S2_hgg,580
275
- hatchet_sdk/runnables/task.py,sha256=AOpULMr3hqxn4W58Lh9oEvsXn_7PPB_c_sIqHRfQn5Q,7063
276
+ hatchet_sdk/runnables/task.py,sha256=CuPcwmYwVHE-gMh_-qvi4ZV04cYPzUtoP8b3qEtD1Iw,7048
276
277
  hatchet_sdk/runnables/types.py,sha256=90JLuwEgRnPlaxS84DCpxjtPzIsN2KLtYQvFvoV_ZIU,4344
277
278
  hatchet_sdk/runnables/workflow.py,sha256=itJjwocsUMak_-b_pG3GGfTN3i57VWdKdrFyePyLsaU,48514
278
279
  hatchet_sdk/token.py,sha256=KjIiInwG5Kqd_FO4BSW1x_5Uc7PFbnzIVJqr50-ZldE,779
@@ -520,7 +521,7 @@ hatchet_sdk/worker/runner/runner.py,sha256=9Z3Ac6hRh5rjet7-BRtpcFARlhWvy6TNrdsdj
520
521
  hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=nHRPSiDBqzhObM7i2X7t03OupVFnE7kQBdR2Ckgg-2w,2709
521
522
  hatchet_sdk/worker/worker.py,sha256=SAucu3dg8lkKLbzb3noNWvClZ09lC5tuRcBkYZtIJ-0,16088
522
523
  hatchet_sdk/workflow_run.py,sha256=ZwH0HLFGFVXz6jbiqSv4w0Om2XuR52Tzzw6LH4y65jQ,2765
523
- hatchet_sdk-1.12.0.dist-info/METADATA,sha256=xNcz8LqA7q58RNPD0wc3srFJLdN4mQljSaIAP2n7-jI,3636
524
- hatchet_sdk-1.12.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
525
- hatchet_sdk-1.12.0.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
526
- hatchet_sdk-1.12.0.dist-info/RECORD,,
524
+ hatchet_sdk-1.12.2.dist-info/METADATA,sha256=_osYMPZOCw0sS6x8ktBU-fYeNsE0yAJfsuTHh5dcMX8,3636
525
+ hatchet_sdk-1.12.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
526
+ hatchet_sdk-1.12.2.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
527
+ hatchet_sdk-1.12.2.dist-info/RECORD,,