Package: d8s-utility
Democritus UtilityDemocritus functions[1]for working with utility functions.[1] Democritus functions aresimple, effective, modular, well-tested, and well-documentedPython functions.We used8s(pronounced "dee-eights") as an abbreviation fordemocritus(you can read more about thishere).Installationpip install d8s-utilityUsageYou import the library like:fromd8s_utilityimport*Once imported, you can use any of the functions listed below.Functionsdefcopy_first_arg(func):"""Decorator to make a copy of the first argument and pass into the func."""defhas_more_than_one_item(thing:Any)->bool:"""Return whether or not the given thing has a length of at least one."""defhas_one_or_more_items(thing:Any)->bool:"""Return whether or not the given thing has a length of at least one."""defhas_one_item(thing:Any)->bool:"""Return whether or not the given thing has a length of at least one."""defrequest_or_read(path):"""If the given path is a URL, request the URL and return the content; if the path exists read the file.Otherwise, just return the string and assume it is the input itself."""defrequest_or_read_first_arg(func):"""If the first arg is a url - request the URL. If it is a file path, try to read the file.If it is neither a URL nor file path, return the content of the first arg."""defis_sorted(iterable,*,descending:bool=False)->bool:"""Return whether or not the iterable is sorted."""deffirst_unsorted_value(iterable,*,descending:bool=False)->Any:"""Return the first unsorted value in the iterable."""deflast_unsorted_value(iterable,*,descending:bool=False)->Any:"""Return the last unsorted value in the iterable."""defunsorted_values(iterable,*,descending:bool=False)->Iterable[Any]:"""."""defsorted_values(iterable,*,descending:bool=False)->Iterable[Any]:"""."""defignore_errors(function,*args,**kwargs):"""."""defzip_if_same_length(*iterables,debug_failure:bool=False):"""Zip the given iterables if they are the same length.If they are not the same length, raise an assertion error."""defunique_items(iterable_a:Any,iterable_b:Any)->Dict[str,Set[Any]]:"""Find the values unique to iterable_a and iterable_b (relative to one another)."""defprettify(thing:Any,*args):"""."""defpretty_print(thing:Any,*args):"""."""defsubprocess_run(command,input_=None):"""Run the given command as if it were run in a command line."""defstringify_first_arg(func):"""Decorator to convert the first argument to a string."""defretry_if_no_result(wait_seconds=10):"""Decorator to call the given function and recall it if it returns nothing."""defmap_first_arg(func):"""If the first argument is a list or tuple, iterate through each item in the list and send it to the function."""defrepeat_concurrently(n:int=10):"""Repeat the decorated function concurrently n times."""defvalidate_keyword_arg_value(keyword:str,valid_keyword_values:Iterable[Any],fail_if_keyword_not_found:bool=True):"""Validate that the value for the given keyword is in the list of valid_keyword_values."""defvalidate_arg_value(arg_index:StrOrNumberType,valid_values:Iterable[Any]):"""Validate that the value of the argument at the given arg_index is in the list of valid_values."""defwait_and_retry_on_failure(wait_seconds=10):"""Try to call the given function.If there is an exception thrown by the function, wait for wait_seconds and try again."""Development👋  If you want to get involved in this project, we have some short, helpful guides below:contribute to this project 🥇test it 🧪lint it 🧹explore it 🔭If you have any questions or there is anything we did not cover, please raise an issue and we'll be happy to help.CreditsThis package was created withCookiecutterand Floyd Hightower'sPython project template.