def test_utils_py_0(): for b in (False, 'False', 'OfF', 'no'): assert not base.is_true(b) for b in (True, 'TruE', 'ON', 'yes'): assert base.is_true(b) assert base.enum_to_str(Extent.UNION) == 'UNION' assert base.enum_to_str('UNION') == 'UNION' filename = Path('abc') / Path('def') / Path('a.txt') assert base.is_path_like(Path(filename)) assert base.is_path_like(str(filename)) assert not base.is_path_like(None) assert not base.is_path_like([filename]) assert base.get_suffix(filename) == '.txt' assert base.get_extension(filename) == 'txt' for idx, b in enumerate((0x23, 0xc1, 0xab, 0x00)): byte = base.get_byte(0xab_c1_23, idx) assert byte == b assert base.path_join(filename, 'a', 'b') == str(filename / 'a' / 'b') assert base.num(42) == 42 assert base.num('42') == 42 assert isinstance(base.num('42'), int) assert base.num(42.0) == 42.0 assert base.num('42.0') == 42.0 assert isinstance(base.num('42.0'), float) assert base.num('42.') == 42.0 assert isinstance(base.num('42.'), float) assert base.num(42.5) == 42.5 assert base.num('42.5') == 42.5 assert base.num_or_none('') is None assert base.num_or_none(None) is None assert base.num_or_none('1a') is None assert base.num_or_none('42') == 42 assert base.num_or_none('42.0') == 42.0
def get_creation_options(creation_options: CreationOptions = None, driver: str = 'GTiff', sparse_ok: bool = None, tiled: bool = None, block_size: Optional[int] = None, big_tiff: Optional[str] = None, comp: str = None): creation_options = dict(creation_options or dict()) driver = driver.lower() if comp is None: comp = creation_options.get("COMPRESS", "DEFLATE") creation_options["BIGTIFF"] = get_bigtiff_creation_option_value(big_tiff) creation_options["COMPRESS"] = comp if sparse_ok is None: sparse_ok = creation_options.get("SPARSE_OK", True) sparse_ok = is_true(sparse_ok) creation_options["SPARSE_OK"] = str(sparse_ok) if tiled is None: tiled = creation_options.get("TILED", True) tiled = is_true(tiled) creation_options["TILED"] = str(tiled) if tiled and block_size is not None: if driver == 'gtiff': creation_options["BLOCKXSIZE"] = block_size creation_options["BLOCKYSIZE"] = block_size elif driver == 'cog': creation_options["BLOCKSIZE"] = block_size creation_options_list = [] for k, v in creation_options.items(): creation_options_list.append("{}={}".format(k, v)) return creation_options_list
def get_bigtiff_creation_option_value(big_tiff: OptionalBoolStr): return "IF_SAFER" if big_tiff is None \ else big_tiff if bool(big_tiff) and isinstance(big_tiff, str) \ else str(is_true(big_tiff))