The API by usefulness 
=====================

.. to help generate python ~/code/ubelt/dev/gen_api_for_docs.py --extra_modname=bioharn,watch --remove_zeros=False 

Perhaps the most useful way to learn this API is to sort by "usefulness".
I measure usefulness as the number of times I've used a particular function in
my own code (excluding ubelt itself).


================================================================================= ================
 Function name                                                                          Usefulness
================================================================================= ================
:func:`ubelt.repr2<ubelt.util_format.repr2>`                                                  2384
:func:`ubelt.Path<ubelt.util_path.Path>`                                                       624
:func:`ubelt.ProgIter<ubelt.progiter.ProgIter>`                                                539
:func:`ubelt.expandpath<ubelt.util_path.expandpath>`                                           419
:func:`ubelt.paragraph<ubelt.util_str.paragraph>`                                              358
:func:`ubelt.take<ubelt.util_list.take>`                                                       342
:func:`ubelt.cmd<ubelt.util_cmd.cmd>`                                                          283
:func:`ubelt.codeblock<ubelt.util_str.codeblock>`                                              273
:func:`ubelt.ensuredir<ubelt.util_path.ensuredir>`                                             252
:func:`ubelt.map_vals<ubelt.util_dict.map_vals>`                                               248
:func:`ubelt.odict<ubelt.util_dict.odict>`                                                     234
:func:`ubelt.ddict<ubelt.util_dict.ddict>`                                                     225
:func:`ubelt.flatten<ubelt.util_list.flatten>`                                                 218
:func:`ubelt.peek<ubelt.util_list.peek>`                                                       202
:func:`ubelt.ensure_app_cache_dir<ubelt.util_platform.ensure_app_cache_dir>`                   201
:func:`ubelt.NiceRepr<ubelt.util_mixins.NiceRepr>`                                             195
:func:`ubelt.group_items<ubelt.util_dict.group_items>`                                         192
:func:`ubelt.oset<ubelt.orderedset.oset>`                                                      182
:func:`ubelt.dzip<ubelt.util_dict.dzip>`                                                       169
:func:`ubelt.iterable<ubelt.util_list.iterable>`                                               159
:func:`ubelt.dict_isect<ubelt.util_dict.dict_isect>`                                           157
:func:`ubelt.NoParam<ubelt.util_const.NoParam>`                                                154
:func:`ubelt.hash_data<ubelt.util_hash.hash_data>`                                             141
:func:`ubelt.argflag<ubelt.util_arg.argflag>`                                                  136
:func:`ubelt.dict_diff<ubelt.util_dict.dict_diff>`                                             129
:func:`ubelt.Timer<ubelt.util_time.Timer>`                                                     125
:func:`ubelt.augpath<ubelt.util_path.augpath>`                                                 120
:func:`ubelt.dict_hist<ubelt.util_dict.dict_hist>`                                             115
:func:`ubelt.grabdata<ubelt.util_download.grabdata>`                                           114
:func:`ubelt.color_text<ubelt.util_colors.color_text>`                                         104
:func:`ubelt.identity<ubelt.util_func.identity>`                                               102
:func:`ubelt.delete<ubelt.util_io.delete>`                                                      99
:func:`ubelt.argval<ubelt.util_arg.argval>`                                                     93
:func:`ubelt.dict_union<ubelt.util_dict.dict_union>`                                            90
:func:`ubelt.memoize<ubelt.util_memoize.memoize>`                                               89
:func:`ubelt.compress<ubelt.util_list.compress>`                                                87
:func:`ubelt.allsame<ubelt.util_list.allsame>`                                                  81
:func:`ubelt.unique<ubelt.util_list.unique>`                                                    64
:func:`ubelt.named_product<ubelt.util_dict.named_product>`                                      61
:func:`ubelt.hzcat<ubelt.util_str.hzcat>`                                                       61
:func:`ubelt.invert_dict<ubelt.util_dict.invert_dict>`                                          61
:func:`ubelt.JobPool<ubelt.util_futures.JobPool>`                                               60
:func:`ubelt.timestamp<ubelt.util_time.timestamp>`                                              48
:func:`ubelt.dict_subset<ubelt.util_dict.dict_subset>`                                          46
:func:`ubelt.Cacher<ubelt.util_cache.Cacher>`                                                   44
:func:`ubelt.indent<ubelt.util_str.indent>`                                                     44
:func:`ubelt.argsort<ubelt.util_list.argsort>`                                                  43
:func:`ubelt.IndexableWalker<ubelt.util_indexable.IndexableWalker>`                             41
:func:`ubelt.writeto<ubelt.util_io.writeto>`                                                    41
:func:`ubelt.iter_window<ubelt.util_list.iter_window>`                                          40
:func:`ubelt.chunks<ubelt.util_list.chunks>`                                                    39
:func:`ubelt.hash_file<ubelt.util_hash.hash_file>`                                              38
:func:`ubelt.find_duplicates<ubelt.util_dict.find_duplicates>`                                  38
:func:`ubelt.map_keys<ubelt.util_dict.map_keys>`                                                36
:func:`ubelt.symlink<ubelt.util_links.symlink>`                                                 34
:func:`ubelt.sorted_vals<ubelt.util_dict.sorted_vals>`                                          33
:func:`ubelt.ensure_unicode<ubelt.util_str.ensure_unicode>`                                     32
:func:`ubelt.find_exe<ubelt.util_platform.find_exe>`                                            32
:func:`ubelt.memoize_property<ubelt.util_memoize.memoize_property>`                             31
:func:`ubelt.modname_to_modpath<ubelt.util_import.modname_to_modpath>`                          29
:func:`ubelt.WIN32<ubelt.util_platform.WIN32>`                                                  28
:func:`ubelt.CacheStamp<ubelt.util_cache.CacheStamp>`                                           27
:func:`ubelt.import_module_from_name<ubelt.util_import.import_module_from_name>`                25
:func:`ubelt.argmax<ubelt.util_list.argmax>`                                                    23
:func:`ubelt.highlight_code<ubelt.util_colors.highlight_code>`                                  23
:func:`ubelt.varied_values<ubelt.util_dict.varied_values>`                                      22
:func:`ubelt.readfrom<ubelt.util_io.readfrom>`                                                  22
:func:`ubelt.import_module_from_path<ubelt.util_import.import_module_from_path>`                21
:func:`ubelt.compatible<ubelt.util_func.compatible>`                                            20
:func:`ubelt.memoize_method<ubelt.util_memoize.memoize_method>`                                 20
:func:`ubelt.sorted_keys<ubelt.util_dict.sorted_keys>`                                          20
:func:`ubelt.Executor<ubelt.util_futures.Executor>`                                             19
:func:`ubelt.touch<ubelt.util_io.touch>`                                                        17
:func:`ubelt.get_app_cache_dir<ubelt.util_platform.get_app_cache_dir>`                          14
:func:`ubelt.AutoDict<ubelt.util_dict.AutoDict>`                                                13
:func:`ubelt.inject_method<ubelt.util_func.inject_method>`                                      13
:func:`ubelt.zopen<ubelt.util_zip.zopen>`                                                       11
:func:`ubelt.shrinkuser<ubelt.util_path.shrinkuser>`                                            11
:func:`ubelt.userhome<ubelt.util_path.userhome>`                                                 8
:func:`ubelt.schedule_deprecation<ubelt.util_deprecate.schedule_deprecation>`                    8
:func:`ubelt.LINUX<ubelt.util_platform.LINUX>`                                                   8
:func:`ubelt.split_modpath<ubelt.util_import.split_modpath>`                                     7
:func:`ubelt.modpath_to_modname<ubelt.util_import.modpath_to_modname>`                           7
:func:`ubelt.CaptureStdout<ubelt.util_stream.CaptureStdout>`                                     5
:func:`ubelt.DARWIN<ubelt.util_platform.DARWIN>`                                                 5
:func:`ubelt.argmin<ubelt.util_list.argmin>`                                                     4
:func:`ubelt.download<ubelt.util_download.download>`                                             3
:func:`ubelt.find_path<ubelt.util_platform.find_path>`                                           2
:func:`ubelt.AutoOrderedDict<ubelt.util_dict.AutoOrderedDict>`                                   2
:func:`ubelt.argunique<ubelt.util_list.argunique>`                                               1
:func:`ubelt.unique_flags<ubelt.util_list.unique_flags>`                                         1
:func:`ubelt.udict<ubelt.util_dict.udict>`                                                       0
:func:`ubelt.timeparse<ubelt.util_time.timeparse>`                                               0
:func:`ubelt.split_archive<ubelt.util_zip.split_archive>`                                        0
:func:`ubelt.sorted_values<ubelt.util_dict.sorted_values>`                                       0
:func:`ubelt.sdict<ubelt.util_dict.sdict>`                                                       0
:func:`ubelt.platform_data_dir<ubelt.util_platform.platform_data_dir>`                           0
:func:`ubelt.platform_config_dir<ubelt.util_platform.platform_config_dir>`                       0
:func:`ubelt.platform_cache_dir<ubelt.util_platform.platform_cache_dir>`                         0
:func:`ubelt.map_values<ubelt.util_dict.map_values>`                                             0
:func:`ubelt.indexable_allclose<ubelt.util_indexable.indexable_allclose>`                        0
:func:`ubelt.get_app_data_dir<ubelt.util_platform.get_app_data_dir>`                             0
:func:`ubelt.get_app_config_dir<ubelt.util_platform.get_app_config_dir>`                         0
:func:`ubelt.ensure_app_data_dir<ubelt.util_platform.ensure_app_data_dir>`                       0
:func:`ubelt.ensure_app_config_dir<ubelt.util_platform.ensure_app_config_dir>`                   0
:func:`ubelt.boolmask<ubelt.util_list.boolmask>`                                                 0
:func:`ubelt.UDict<ubelt.util_dict.UDict>`                                                       0
:func:`ubelt.TempDir<ubelt.util_path.TempDir>`                                                   0
:func:`ubelt.TeeStringIO<ubelt.util_stream.TeeStringIO>`                                         0
:func:`ubelt.SetDict<ubelt.util_dict.SetDict>`                                                   0
:func:`ubelt.POSIX<ubelt.util_platform.POSIX>`                                                   0
:func:`ubelt.OrderedSet<ubelt.orderedset.OrderedSet>`                                            0
:func:`ubelt.NO_COLOR<ubelt.util_colors.NO_COLOR>`                                               0
:func:`ubelt.FormatterExtensions<ubelt.util_format.FormatterExtensions>`                         0
:func:`ubelt.DownloadManager<ubelt.util_download_manager.DownloadManager>`                       0
:func:`ubelt.CaptureStream<ubelt.util_stream.CaptureStream>`                                     0
================================================================================= ================

.. code:: python

    usage stats = {
        'mean': 95.18104,
        'std': 240.17876,
        'min': 0.0,
        'max': 2384.0,
        'q_0.25': 2.75,
        'q_0.50': 31.5,
        'q_0.75': 106.5,
        'med': 31.5,
        'sum': 11041,
        'shape': (116,),
    }

:mod:`ubelt.orderedset`
-----------------------
:func:`<ubelt.OrderedSet><ubelt.orderedset.OrderedSet>`
:func:`<ubelt.oset><ubelt.orderedset.oset>`

:mod:`ubelt.progiter`
---------------------
:func:`<ubelt.ProgIter><ubelt.progiter.ProgIter>`

:mod:`ubelt.util_arg`
---------------------
:func:`<ubelt.argval><ubelt.util_arg.argval>`
:func:`<ubelt.argflag><ubelt.util_arg.argflag>`

:mod:`ubelt.util_cache`
-----------------------
:func:`<ubelt.Cacher><ubelt.util_cache.Cacher>`
:func:`<ubelt.CacheStamp><ubelt.util_cache.CacheStamp>`

:mod:`ubelt.util_cmd`
---------------------
:func:`<ubelt.cmd><ubelt.util_cmd.cmd>`

:mod:`ubelt.util_colors`
------------------------
:func:`<ubelt.NO_COLOR><ubelt.util_colors.NO_COLOR>`
:func:`<ubelt.highlight_code><ubelt.util_colors.highlight_code>`
:func:`<ubelt.color_text><ubelt.util_colors.color_text>`

:mod:`ubelt.util_const`
-----------------------
:func:`<ubelt.NoParam><ubelt.util_const.NoParam>`

:mod:`ubelt.util_deprecate`
---------------------------
:func:`<ubelt.schedule_deprecation><ubelt.util_deprecate.schedule_deprecation>`

:mod:`ubelt.util_dict`
----------------------
:func:`<ubelt.AutoDict><ubelt.util_dict.AutoDict>`
:func:`<ubelt.AutoOrderedDict><ubelt.util_dict.AutoOrderedDict>`
:func:`<ubelt.dzip><ubelt.util_dict.dzip>`
:func:`<ubelt.ddict><ubelt.util_dict.ddict>`
:func:`<ubelt.dict_hist><ubelt.util_dict.dict_hist>`
:func:`<ubelt.dict_subset><ubelt.util_dict.dict_subset>`
:func:`<ubelt.dict_union><ubelt.util_dict.dict_union>`
:func:`<ubelt.dict_isect><ubelt.util_dict.dict_isect>`
:func:`<ubelt.dict_diff><ubelt.util_dict.dict_diff>`
:func:`<ubelt.find_duplicates><ubelt.util_dict.find_duplicates>`
:func:`<ubelt.group_items><ubelt.util_dict.group_items>`
:func:`<ubelt.invert_dict><ubelt.util_dict.invert_dict>`
:func:`<ubelt.map_keys><ubelt.util_dict.map_keys>`
:func:`<ubelt.map_vals><ubelt.util_dict.map_vals>`
:func:`<ubelt.map_values><ubelt.util_dict.map_values>`
:func:`<ubelt.sorted_keys><ubelt.util_dict.sorted_keys>`
:func:`<ubelt.sorted_vals><ubelt.util_dict.sorted_vals>`
:func:`<ubelt.sorted_values><ubelt.util_dict.sorted_values>`
:func:`<ubelt.odict><ubelt.util_dict.odict>`
:func:`<ubelt.named_product><ubelt.util_dict.named_product>`
:func:`<ubelt.varied_values><ubelt.util_dict.varied_values>`
:func:`<ubelt.SetDict><ubelt.util_dict.SetDict>`
:func:`<ubelt.UDict><ubelt.util_dict.UDict>`
:func:`<ubelt.sdict><ubelt.util_dict.sdict>`
:func:`<ubelt.udict><ubelt.util_dict.udict>`

:mod:`ubelt.util_download`
--------------------------
:func:`<ubelt.download><ubelt.util_download.download>`
:func:`<ubelt.grabdata><ubelt.util_download.grabdata>`

:mod:`ubelt.util_download_manager`
----------------------------------
:func:`<ubelt.DownloadManager><ubelt.util_download_manager.DownloadManager>`

:mod:`ubelt.util_format`
------------------------
:func:`<ubelt.repr2><ubelt.util_format.repr2>`
:func:`<ubelt.FormatterExtensions><ubelt.util_format.FormatterExtensions>`

:mod:`ubelt.util_func`
----------------------
:func:`<ubelt.identity><ubelt.util_func.identity>`
:func:`<ubelt.inject_method><ubelt.util_func.inject_method>`
:func:`<ubelt.compatible><ubelt.util_func.compatible>`

:mod:`ubelt.util_futures`
-------------------------
:func:`<ubelt.Executor><ubelt.util_futures.Executor>`
:func:`<ubelt.JobPool><ubelt.util_futures.JobPool>`

:mod:`ubelt.util_hash`
----------------------
:func:`<ubelt.hash_data><ubelt.util_hash.hash_data>`
:func:`<ubelt.hash_file><ubelt.util_hash.hash_file>`

:mod:`ubelt.util_import`
------------------------
:func:`<ubelt.split_modpath><ubelt.util_import.split_modpath>`
:func:`<ubelt.modname_to_modpath><ubelt.util_import.modname_to_modpath>`
:func:`<ubelt.modpath_to_modname><ubelt.util_import.modpath_to_modname>`
:func:`<ubelt.import_module_from_name><ubelt.util_import.import_module_from_name>`
:func:`<ubelt.import_module_from_path><ubelt.util_import.import_module_from_path>`

:mod:`ubelt.util_indexable`
---------------------------
:func:`<ubelt.IndexableWalker><ubelt.util_indexable.IndexableWalker>`
:func:`<ubelt.indexable_allclose><ubelt.util_indexable.indexable_allclose>`

:mod:`ubelt.util_io`
--------------------
:func:`<ubelt.readfrom><ubelt.util_io.readfrom>`
:func:`<ubelt.writeto><ubelt.util_io.writeto>`
:func:`<ubelt.touch><ubelt.util_io.touch>`
:func:`<ubelt.delete><ubelt.util_io.delete>`

:mod:`ubelt.util_links`
-----------------------
:func:`<ubelt.symlink><ubelt.util_links.symlink>`

:mod:`ubelt.util_list`
----------------------
:func:`<ubelt.allsame><ubelt.util_list.allsame>`
:func:`<ubelt.argmax><ubelt.util_list.argmax>`
:func:`<ubelt.argmin><ubelt.util_list.argmin>`
:func:`<ubelt.argsort><ubelt.util_list.argsort>`
:func:`<ubelt.argunique><ubelt.util_list.argunique>`
:func:`<ubelt.boolmask><ubelt.util_list.boolmask>`
:func:`<ubelt.chunks><ubelt.util_list.chunks>`
:func:`<ubelt.compress><ubelt.util_list.compress>`
:func:`<ubelt.flatten><ubelt.util_list.flatten>`
:func:`<ubelt.iter_window><ubelt.util_list.iter_window>`
:func:`<ubelt.iterable><ubelt.util_list.iterable>`
:func:`<ubelt.peek><ubelt.util_list.peek>`
:func:`<ubelt.take><ubelt.util_list.take>`
:func:`<ubelt.unique><ubelt.util_list.unique>`
:func:`<ubelt.unique_flags><ubelt.util_list.unique_flags>`

:mod:`ubelt.util_memoize`
-------------------------
:func:`<ubelt.memoize><ubelt.util_memoize.memoize>`
:func:`<ubelt.memoize_method><ubelt.util_memoize.memoize_method>`
:func:`<ubelt.memoize_property><ubelt.util_memoize.memoize_property>`

:mod:`ubelt.util_mixins`
------------------------
:func:`<ubelt.NiceRepr><ubelt.util_mixins.NiceRepr>`

:mod:`ubelt.util_path`
----------------------
:func:`<ubelt.Path><ubelt.util_path.Path>`
:func:`<ubelt.TempDir><ubelt.util_path.TempDir>`
:func:`<ubelt.augpath><ubelt.util_path.augpath>`
:func:`<ubelt.shrinkuser><ubelt.util_path.shrinkuser>`
:func:`<ubelt.userhome><ubelt.util_path.userhome>`
:func:`<ubelt.ensuredir><ubelt.util_path.ensuredir>`
:func:`<ubelt.expandpath><ubelt.util_path.expandpath>`

:mod:`ubelt.util_platform`
--------------------------
:func:`<ubelt.WIN32><ubelt.util_platform.WIN32>`
:func:`<ubelt.LINUX><ubelt.util_platform.LINUX>`
:func:`<ubelt.DARWIN><ubelt.util_platform.DARWIN>`
:func:`<ubelt.POSIX><ubelt.util_platform.POSIX>`
:func:`<ubelt.find_exe><ubelt.util_platform.find_exe>`
:func:`<ubelt.find_path><ubelt.util_platform.find_path>`
:func:`<ubelt.ensure_app_cache_dir><ubelt.util_platform.ensure_app_cache_dir>`
:func:`<ubelt.ensure_app_config_dir><ubelt.util_platform.ensure_app_config_dir>`
:func:`<ubelt.ensure_app_data_dir><ubelt.util_platform.ensure_app_data_dir>`
:func:`<ubelt.get_app_cache_dir><ubelt.util_platform.get_app_cache_dir>`
:func:`<ubelt.get_app_config_dir><ubelt.util_platform.get_app_config_dir>`
:func:`<ubelt.get_app_data_dir><ubelt.util_platform.get_app_data_dir>`
:func:`<ubelt.platform_cache_dir><ubelt.util_platform.platform_cache_dir>`
:func:`<ubelt.platform_config_dir><ubelt.util_platform.platform_config_dir>`
:func:`<ubelt.platform_data_dir><ubelt.util_platform.platform_data_dir>`

:mod:`ubelt.util_str`
---------------------
:func:`<ubelt.indent><ubelt.util_str.indent>`
:func:`<ubelt.codeblock><ubelt.util_str.codeblock>`
:func:`<ubelt.paragraph><ubelt.util_str.paragraph>`
:func:`<ubelt.hzcat><ubelt.util_str.hzcat>`
:func:`<ubelt.ensure_unicode><ubelt.util_str.ensure_unicode>`

:mod:`ubelt.util_stream`
------------------------
:func:`<ubelt.TeeStringIO><ubelt.util_stream.TeeStringIO>`
:func:`<ubelt.CaptureStdout><ubelt.util_stream.CaptureStdout>`
:func:`<ubelt.CaptureStream><ubelt.util_stream.CaptureStream>`

:mod:`ubelt.util_time`
----------------------
:func:`<ubelt.timestamp><ubelt.util_time.timestamp>`
:func:`<ubelt.timeparse><ubelt.util_time.timeparse>`
:func:`<ubelt.Timer><ubelt.util_time.Timer>`

:mod:`ubelt.util_zip`
---------------------
:func:`<ubelt.zopen><ubelt.util_zip.zopen>`
:func:`<ubelt.split_archive><ubelt.util_zip.split_archive>`
