diff options
Diffstat (limited to 'raphodo/utilities.py')
-rw-r--r-- | raphodo/utilities.py | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/raphodo/utilities.py b/raphodo/utilities.py index c98f46c..a70fb56 100644 --- a/raphodo/utilities.py +++ b/raphodo/utilities.py @@ -41,7 +41,6 @@ import ctypes import signal import pkg_resources - import arrow import psutil @@ -166,7 +165,9 @@ def stdchannel_redirected(stdchannel, dest_filename): def show_errors(): yield -suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] +# Translators: these values are file size suffixes like B representing bytes, KB representing +# kilobytes, etc. +suffixes = [_('B'), _('KB'), _('MB'), _('GB'), _('TB'), _('PB'), _('EB'), _('ZB'), _('YB')] def format_size_for_user(size_in_bytes: int, zero_string: str='', @@ -179,6 +180,8 @@ def format_size_for_user(size_in_bytes: int, :param size: size in bytes :param zero_string: string to use if size == 0 + >>> locale.setlocale(locale.LC_ALL, ('en_US', 'utf-8')) + 'en_US.UTF-8' >>> format_size_for_user(0) '' >>> format_size_for_user(1) @@ -441,6 +444,7 @@ def first_and_last(iterable): for end in iterable: pass return start, end + def runs(iterable): r""" identify adjacent elements in pre-sorted data @@ -645,6 +649,7 @@ def remove_last_char_from_list_str(items: List[str]) -> List[str]: items = items[:-1] return items + def platform_c_maxint() -> int: """ See http://stackoverflow.com/questions/13795758/what-is-sys-maxint-in-python-3 @@ -653,6 +658,7 @@ def platform_c_maxint() -> int: """ return 2 ** (struct.Struct('i').size * 8 - 1) - 1 + def commonprefix(*paths) -> str: """ Python 3.4 compatible. @@ -662,6 +668,7 @@ def commonprefix(*paths) -> str: return os.path.dirname(os.path.commonprefix(paths)) + def _recursive_identify_depth(*paths, depth) -> int: basenames = [os.path.basename(path) for path in paths] if len(basenames) != len(set(basenames)): @@ -673,12 +680,14 @@ def _recursive_identify_depth(*paths, depth) -> int: depth = max(depth, _recursive_identify_depth(*chopped, depth=depth + 1)) return depth + def _collect_duplicates(basenames, paths): duplicates = defaultdict(list) for basename, path in zip(basenames, paths): duplicates[basename].append(path) return {basename: paths for basename, paths in duplicates.items() if len(paths) > 1} + def make_path_end_snippets_unique(*paths) -> List[str]: r""" Make list of path ends unique given possible common path endings. @@ -747,6 +756,7 @@ def make_path_end_snippets_unique(*paths) -> List[str]: have_logged_os_release = False + def log_os_release() -> None: """ Log the entired contents of /etc/os-release, but only if @@ -804,3 +814,22 @@ def remove_topmost_directory_from_path(path: str) -> str: if os.sep not in path: return path return path[path[1:].find(os.sep) + 1:] + + +def arrow_locale() -> str: + """ + Test if locale is suitable for use with Arrow. + :return: Return user locale if it works with Arrow, else Arrow default ('en_us') + """ + + default = 'en_us' + try: + lang = locale.getdefaultlocale()[0] + except Exception: + return default + + try: + arrow.locales.get_locale(lang) + return lang + except (ValueError, AttributeError): + return default |