@@ -298,6 +298,7 @@ async def start_workflow(
298
298
run_timeout : Optional [timedelta ] = None ,
299
299
task_timeout : Optional [timedelta ] = None ,
300
300
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
301
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
301
302
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
302
303
cron_schedule : str = "" ,
303
304
memo : Optional [Mapping [str , Any ]] = None ,
@@ -328,6 +329,7 @@ async def start_workflow(
328
329
run_timeout : Optional [timedelta ] = None ,
329
330
task_timeout : Optional [timedelta ] = None ,
330
331
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
332
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
331
333
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
332
334
cron_schedule : str = "" ,
333
335
memo : Optional [Mapping [str , Any ]] = None ,
@@ -360,6 +362,7 @@ async def start_workflow(
360
362
run_timeout : Optional [timedelta ] = None ,
361
363
task_timeout : Optional [timedelta ] = None ,
362
364
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
365
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
363
366
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
364
367
cron_schedule : str = "" ,
365
368
memo : Optional [Mapping [str , Any ]] = None ,
@@ -392,6 +395,7 @@ async def start_workflow(
392
395
run_timeout : Optional [timedelta ] = None ,
393
396
task_timeout : Optional [timedelta ] = None ,
394
397
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
398
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
395
399
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
396
400
cron_schedule : str = "" ,
397
401
memo : Optional [Mapping [str , Any ]] = None ,
@@ -422,6 +426,7 @@ async def start_workflow(
422
426
run_timeout : Optional [timedelta ] = None ,
423
427
task_timeout : Optional [timedelta ] = None ,
424
428
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
429
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
425
430
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
426
431
cron_schedule : str = "" ,
427
432
memo : Optional [Mapping [str , Any ]] = None ,
@@ -455,6 +460,10 @@ async def start_workflow(
455
460
run_timeout: Timeout of a single workflow run.
456
461
task_timeout: Timeout of a single workflow task.
457
462
id_reuse_policy: How already-existing IDs are treated.
463
+ id_conflict_policy: How already-running workflows of the same ID are
464
+ treated. Default is unspecified which effectively means fail the
465
+ start attempt. This cannot be set if ``id_reuse_policy`` is set
466
+ to terminate if running.
458
467
retry_policy: Retry policy for the workflow.
459
468
cron_schedule: See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/
460
469
memo: Memo for the workflow.
@@ -510,6 +519,7 @@ async def start_workflow(
510
519
run_timeout = run_timeout ,
511
520
task_timeout = task_timeout ,
512
521
id_reuse_policy = id_reuse_policy ,
522
+ id_conflict_policy = id_conflict_policy ,
513
523
retry_policy = retry_policy ,
514
524
cron_schedule = cron_schedule ,
515
525
memo = memo ,
@@ -537,6 +547,7 @@ async def execute_workflow(
537
547
run_timeout : Optional [timedelta ] = None ,
538
548
task_timeout : Optional [timedelta ] = None ,
539
549
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
550
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
540
551
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
541
552
cron_schedule : str = "" ,
542
553
memo : Optional [Mapping [str , Any ]] = None ,
@@ -567,6 +578,7 @@ async def execute_workflow(
567
578
run_timeout : Optional [timedelta ] = None ,
568
579
task_timeout : Optional [timedelta ] = None ,
569
580
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
581
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
570
582
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
571
583
cron_schedule : str = "" ,
572
584
memo : Optional [Mapping [str , Any ]] = None ,
@@ -599,6 +611,7 @@ async def execute_workflow(
599
611
run_timeout : Optional [timedelta ] = None ,
600
612
task_timeout : Optional [timedelta ] = None ,
601
613
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
614
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
602
615
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
603
616
cron_schedule : str = "" ,
604
617
memo : Optional [Mapping [str , Any ]] = None ,
@@ -631,6 +644,7 @@ async def execute_workflow(
631
644
run_timeout : Optional [timedelta ] = None ,
632
645
task_timeout : Optional [timedelta ] = None ,
633
646
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
647
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
634
648
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
635
649
cron_schedule : str = "" ,
636
650
memo : Optional [Mapping [str , Any ]] = None ,
@@ -661,6 +675,7 @@ async def execute_workflow(
661
675
run_timeout : Optional [timedelta ] = None ,
662
676
task_timeout : Optional [timedelta ] = None ,
663
677
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy = temporalio .common .WorkflowIDReusePolicy .ALLOW_DUPLICATE ,
678
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy = temporalio .common .WorkflowIDConflictPolicy .UNSPECIFIED ,
664
679
retry_policy : Optional [temporalio .common .RetryPolicy ] = None ,
665
680
cron_schedule : str = "" ,
666
681
memo : Optional [Mapping [str , Any ]] = None ,
@@ -696,6 +711,7 @@ async def execute_workflow(
696
711
run_timeout = run_timeout ,
697
712
task_timeout = task_timeout ,
698
713
id_reuse_policy = id_reuse_policy ,
714
+ id_conflict_policy = id_conflict_policy ,
699
715
retry_policy = retry_policy ,
700
716
cron_schedule = cron_schedule ,
701
717
memo = memo ,
@@ -4487,6 +4503,7 @@ class StartWorkflowInput:
4487
4503
run_timeout : Optional [timedelta ]
4488
4504
task_timeout : Optional [timedelta ]
4489
4505
id_reuse_policy : temporalio .common .WorkflowIDReusePolicy
4506
+ id_conflict_policy : temporalio .common .WorkflowIDConflictPolicy
4490
4507
retry_policy : Optional [temporalio .common .RetryPolicy ]
4491
4508
cron_schedule : str
4492
4509
memo : Optional [Mapping [str , Any ]]
@@ -5008,6 +5025,10 @@ async def start_workflow(
5008
5025
"temporalio.api.enums.v1.WorkflowIdReusePolicy.ValueType" ,
5009
5026
int (input .id_reuse_policy ),
5010
5027
)
5028
+ req .workflow_id_conflict_policy = cast (
5029
+ "temporalio.api.enums.v1.WorkflowIdConflictPolicy.ValueType" ,
5030
+ int (input .id_conflict_policy ),
5031
+ )
5011
5032
if input .retry_policy is not None :
5012
5033
input .retry_policy .apply_to_proto (req .retry_policy )
5013
5034
req .cron_schedule = input .cron_schedule
0 commit comments