Convert memory size strings ('12 GB' etc.) to float
(size_str)
| 2734 | |
| 2735 | |
| 2736 | def _parse_size(size_str): |
| 2737 | """Convert memory size strings ('12 GB' etc.) to float""" |
| 2738 | suffixes = {'': 1, 'b': 1, |
| 2739 | 'k': 1000, 'm': 1000**2, 'g': 1000**3, 't': 1000**4, |
| 2740 | 'kb': 1000, 'mb': 1000**2, 'gb': 1000**3, 'tb': 1000**4, |
| 2741 | 'kib': 1024, 'mib': 1024**2, 'gib': 1024**3, 'tib': 1024**4} |
| 2742 | |
| 2743 | pipe_suffixes = "|".join(suffixes.keys()) |
| 2744 | |
| 2745 | size_re = re.compile(fr'^\s*(\d+|\d+\.\d+)\s*({pipe_suffixes})\s*$', re.I) |
| 2746 | |
| 2747 | m = size_re.match(size_str.lower()) |
| 2748 | if not m or m.group(2) not in suffixes: |
| 2749 | raise ValueError(f'value {size_str!r} not a valid size') |
| 2750 | return int(float(m.group(1)) * suffixes[m.group(2)]) |
| 2751 | |
| 2752 | |
| 2753 | def _get_mem_available(): |
no test coverage detected
searching dependent graphs…