Source code for cryptoolz.utils

import os
import json

from typing import List, Dict, Union, Optional, Any

from pathlib import Path

from re import finditer


[docs]def process_pem_file( pem_encoded: List[str], context_chunks: List[Union[str, List[str]]] ) -> List[str]: results = [] for pem_text in pem_encoded: matches = [match for match in finditer(r"-+(BEGIN|END) [ A-Z]+-+", pem_text)] if len(matches) % 2 != 0: raise RuntimeError( f"{context_chunks[0]} :: FileDummy._lambda: File {context_chunks[1][pem_encoded.index(pem_text)]} has an odd number of begin and end lines!" ) for i in range(0, len(matches), 2): results.append(pem_text[matches[i].start() : matches[i + 1].end()]) return results
[docs]def process_naked_b64( b64_lines_block: List[str], context_chunks: List[Union[str, List[str]]] ) -> List[str]: results = [] for block in b64_lines_block: lines = block.split("=") for i in range(len(lines) - 1): results.append(lines[i].strip() + "=") return results
[docs]def match_value(cases: Dict[str, Any], value: Any) -> Any: if value in cases: cases = cases[value] else: raise ValueError("utils.match_value :: matched is None!") return cases
[docs]def match_values(cases: Dict[str, Any], *values: List[Any]) -> Any: for value in values: if value in cases: cases = cases[value] else: raise ValueError("utils.match_values :: matched is None!") return cases
[docs]def get_next_free_po(po: Path) -> Path: counter = 1 stem = po.stem while po.exists(): po = po.with_stem(f"{stem}{counter}") counter += 1 return po
ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) # cryptoolz root
[docs]def get_resource(filename: str) -> Any: with (Path(ROOT_DIR) / "resources" / filename).open(mode="r") as fo: return json.load(fo) raise RuntimeError("utils.get_resource: should have never reached this point!")