Coverage for src/polystore/utils.py: 58%

12 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-03 06:58 +0000

1""" 

2Utility functions for polystore. 

3""" 

4 

5import re 

6from typing import List 

7 

8 

9def natural_sort(items: List[str]) -> List[str]: 

10 """ 

11 Sort strings in natural/human order (e.g., 'file2' before 'file10'). 

12 

13 Args: 

14 items: List of strings to sort 

15 

16 Returns: 

17 Sorted list of strings 

18 """ 

19 def natural_key(text: str): 

20 """Generate sort key for natural sorting.""" 

21 return [int(c) if c.isdigit() else c.lower() for c in re.split(r'(\d+)', text)] 

22 

23 return sorted(items, key=natural_key) 

24 

25 

26def get_zmq_transport_url(port: int, transport_mode: str = "tcp") -> str: 

27 """ 

28 Get ZeroMQ transport URL. 

29 

30 Args: 

31 port: Port number 

32 transport_mode: Transport mode ('tcp' or 'ipc') 

33 

34 Returns: 

35 ZeroMQ transport URL 

36 """ 

37 if transport_mode == "tcp": 

38 return f"tcp://127.0.0.1:{port}" 

39 elif transport_mode == "ipc": 

40 return f"ipc:///tmp/polystore_{port}.ipc" 

41 else: 

42 raise ValueError(f"Unknown transport mode: {transport_mode}")