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
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-03 06:58 +0000
1"""
2Utility functions for polystore.
3"""
5import re
6from typing import List
9def natural_sort(items: List[str]) -> List[str]:
10 """
11 Sort strings in natural/human order (e.g., 'file2' before 'file10').
13 Args:
14 items: List of strings to sort
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)]
23 return sorted(items, key=natural_key)
26def get_zmq_transport_url(port: int, transport_mode: str = "tcp") -> str:
27 """
28 Get ZeroMQ transport URL.
30 Args:
31 port: Port number
32 transport_mode: Transport mode ('tcp' or 'ipc')
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}")