@@ -514,14 +514,7 @@ def _workflow_event_to_nexus_link(
514
514
workflow_id = urllib .parse .quote (workflow_event .workflow_id )
515
515
run_id = urllib .parse .quote (workflow_event .run_id )
516
516
path = f"/namespaces/{ namespace } /workflows/{ workflow_id } /{ run_id } /history"
517
- query_params = urllib .parse .urlencode (
518
- {
519
- "eventType" : temporalio .api .enums .v1 .EventType .Name (
520
- workflow_event .event_ref .event_type
521
- ),
522
- "referenceType" : "EventReference" ,
523
- }
524
- )
517
+ query_params = _query_params_from_event_reference (workflow_event .event_ref )
525
518
return nexusrpc .Link (
526
519
url = urllib .parse .urlunparse ((scheme , "" , path , "" , query_params , "" )),
527
520
type = workflow_event .DESCRIPTOR .full_name ,
@@ -555,6 +548,19 @@ def _nexus_link_to_workflow_event(
555
548
)
556
549
557
550
551
+ def _query_params_from_event_reference (
552
+ event_ref : temporalio .api .common .v1 .Link .WorkflowEvent .EventReference ,
553
+ ) -> str :
554
+ event_type_name = temporalio .api .enums .v1 .EventType .Name (event_ref .event_type )
555
+ if event_type_name .startswith ("EVENT_TYPE_" ):
556
+ event_type_name = _constant_case_to_pascal_case (
557
+ event_type_name .removeprefix ("EVENT_TYPE_" )
558
+ )
559
+ return urllib .parse .urlencode (
560
+ {"eventType" : event_type_name , "referenceType" : "EventReference" }
561
+ )
562
+
563
+
558
564
def _event_reference_from_query_params (
559
565
raw_query_params : str ,
560
566
) -> temporalio .api .common .v1 .Link .WorkflowEvent .EventReference :
@@ -596,6 +602,16 @@ def _event_reference_from_query_params(
596
602
)
597
603
598
604
605
+ def _constant_case_to_pascal_case (s : str ) -> str :
606
+ """
607
+ Convert a CONSTANT_CASE string to PascalCase.
608
+
609
+ >>> _constant_case_to_pascal_case("NEXUS_OPERATION_SCHEDULED")
610
+ "NexusOperationScheduled"
611
+ """
612
+ return re .sub (r"(\b|_)([a-z])" , lambda m : m .groups ()[1 ].upper (), s .lower ())
613
+
614
+
599
615
def _pascal_case_to_constant_case (s : str ) -> str :
600
616
"""
601
617
Convert a PascalCase string to CONSTANT_CASE.
0 commit comments