Skip to main content

miscellaneous python utilities

Project description

PyPI PyPI - Downloads docs

Checks Checks Coverage

GitHub commits GitHub commit activity GitHub closed pull requests code size, bytes

muutils, stylized as "$\mu$utils" or "μutils", is a collection of miscellaneous python utilities, meant to be small and with no dependencies outside of standard python.

installation

PyPi: muutils

pip install muutils

Note that for using mlutils, tensor_utils, nbutils.configure_notebook, or the array serialization features of json_serialize, you will need to install with optional array dependencies:

pip install muutils[array]

documentation

hosted html docs: https://miv.name/muutils

modules

statcounter

an extension of collections.Counter that provides "smart" computation of stats (mean, variance, median, other percentiles) from the counter object without using Counter.elements()

dictmagic

has utilities for working with dictionaries, like:

  • converting dotlist-dictionaries to nested dictionaries and back:
    >>> dotlist_to_nested_dict({'a.b.c': 1, 'a.b.d': 2, 'a.e': 3})
    {'a': {'b': {'c': 1, 'd': 2}, 'e': 3}}
    >>> nested_dict_to_dotlist({'a': {'b': {'c': 1, 'd': 2}, 'e': 3}})
    {'a.b.c': 1, 'a.b.d': 2, 'a.e': 3}
    
  • DefaulterDict which works like a defaultdict but can generate the default value based on the key
  • condense_tensor_dict takes a dict of dotlist-tensors and gives a more human-readable summary:
    >>> model = MyGPT()
    >>> print(condense_tensor_dict(model.named_parameters(), 'yaml'))
    
    embed:
        W_E: (50257, 768)
    pos_embed:
        W_pos: (1024, 768)
    blocks:
      '[0-11]':
        attn:
        	'[W_Q, W_K, W_V]': (12, 768, 64)
        W_O: (12, 64, 768)
        	'[b_Q, b_K, b_V]': (12, 64)
        b_O: (768,)
    <...>
    

kappa

Anonymous gettitem, so you can do things like

>>> k = Kappa(lambda x: x**2)
>>> k[2]
4

sysinfo

utility for getting a bunch of system information. useful for logging.

misc:

contains a few utilities: - stable_hash() uses hashlib.sha256 to compute a hash of an object that is stable across runs of python - list_join and list_split which behave like str.join and str.split but for lists - sanitize_fname and dict_to_filename for simplifying the creation of unique filename - shorten_numerical_to_str() and str_to_numeric turns numbers like 123456789 into "123M" and back - freeze, which prevents an object from being modified. Also see gelidum

nbutils

contains utilities for working with jupyter notebooks, such as:

  • quickly converting notebooks to python scripts (and running those scripts) for testing in CI
  • configuring notebooks, to make it easier to switch between figure output formats, locations, and more
  • shorthand for displaying mermaid diagrams and TeX

json_serialize

a tool for serializing and loading arbitrary python objects into json. plays nicely with ZANJ

tensor_utils

contains minor utilities for working with pytorch tensors and numpy arrays, mostly for making type conversions easier

group_equiv

groups elements from a sequence according to a given equivalence relation, without assuming that the equivalence relation obeys the transitive property

jsonlines

an extremely simple utility for reading/writing jsonl files

ZANJ

is a human-readable and simple format for ML models, datasets, and arbitrary objects. It's build around having a zip file with json and npy files, and has been spun off into its own project.

There are a couple work-in-progress utilities in _wip that aren't ready for anything, but nothing in this repo is suitable for production. Use at your own risk!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muutils-0.8.12.tar.gz (3.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

muutils-0.8.12-py3-none-any.whl (129.1 kB view details)

Uploaded Python 3

File details

Details for the file muutils-0.8.12.tar.gz.

File metadata

  • Download URL: muutils-0.8.12.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for muutils-0.8.12.tar.gz
Algorithm Hash digest
SHA256 ffc0d2c5b0e3bbf4c442dd810880aec7d9f95995e7677e14dc72f0a5ef12b993
MD5 f0e2169311d5df2b17bb61ac5730ba86
BLAKE2b-256 0cc8556e999e5e5662ca2d74aa486962b2e7a955e58723af6cadca293be0bd37

See more details on using hashes here.

File details

Details for the file muutils-0.8.12-py3-none-any.whl.

File metadata

  • Download URL: muutils-0.8.12-py3-none-any.whl
  • Upload date:
  • Size: 129.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for muutils-0.8.12-py3-none-any.whl
Algorithm Hash digest
SHA256 19ecc6f2cab6e162d6f84f6f0d96377dc387a0e7105334c0b6d8eb90934eaeea
MD5 b03b488e1db845dc1fc38de5b9d5a101
BLAKE2b-256 0a65d6e07cbff0caf10b2c77fad77e9138973c689dbe50c5ecb3b96764630276

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page