Coverage for src / ocarina / custom_invariants / testing / workers.py: 62.50%

8 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-06-04 16:22 +0200

1"""Validation of workers amount.""" 

2 

3from typing import TYPE_CHECKING 

4 

5from ocarina.dsl.invariants.assertions import is_not_zero, is_positive 

6from ocarina.dsl.invariants.validate import FrameworkInvariantValidator 

7 

8if TYPE_CHECKING: 

9 from ocarina.dsl.invariants.internals.validation_chain import ( 

10 ValidationAssertBlock, 

11 ValidationStartBlock, 

12 ) 

13 

14 

15def _workers_amount_chain( 

16 chain: ValidationStartBlock[int], 

17 value: int, 

18) -> ValidationAssertBlock[int]: 

19 msg = f"Value Error: Number of workers must be at least 1 (got: {value})." 

20 return chain.assert_that(is_positive, msg=msg).assert_that(is_not_zero, msg=msg) 

21 

22 

23def validate_workers_amount( 

24 *, workers_amount: int, name: str 

25) -> ValidationAssertBlock[int]: 

26 """Validate that workers amount is at least 1.""" 

27 return FrameworkInvariantValidator.create( 

28 workers_amount, name, _workers_amount_chain 

29 )