Tools package
The Tools
class has various small utility functions:
def fn_to_try():
raise ValueError("")
from pocketutils.full import *
Tools.git_description(".").tag # the tag, or None
Tools.ms_to_minsec(7512000) # "02:05:12"
Tools.fix_greek("beta,eta and Gamma") # "β,η and Γ"
Tools.pretty_function(lambda s: 55) # "<λ(1)>"
Tools.pretty_function(list) # "<list>"
Tools.strip_paired_brackets("(ab[cd)") # "ab[cd"
Tools.iceilopt(None), Tools.iceilopt(5.3) # None, 6
Tools.succeeds(fn_to_try) # True or False
Tools.or_null(fn_to_try) # None if it failed
Tools.only([1]), Tools.only([1, 2]) # 1, MultipleMatchesError
Tools.is_probable_null(np.nan) # True
Tools.read_properties_file("abc.properties") # returns a dict
important_info = (
Tools.get_env_info()
) # a dict of info like memory usage, cpu, host name, etc.
Chars
contains useful Unicode characters that are annoying to type,
plus some related functions:
from pocketutils.full import *
print(Chars.hairspace) # hair space
print(Chars.range(1, 2)) # "1–2" (with en dash)
Tools
actually subclasses from several Tools-like classes. You can
import only the ones you want instead:
from pocketutils.tools.path_tools import PathTools
print(PathTools.sanitize_path("ABC|xyz")) # logs a warning & returns "ABC_xyz"
print(PathTools.sanitize_path("COM1")) # complains!! illegal path on Windows.
from pocketutils.tools.console_tools import ConsoleTools
if ConsoleTools.prompt_yes_no("Delete?"):
# Takes 10s, writing Deleting my_dir.......... Done.
ConsoleTools.slow_delete("my_dir", wait=10)