Skip to main content

A library of tiny little functions to make development that little bit easier.

Project description

diogi

Diog means to laze in Welsh. This package is to help me do less.

Most of the functions and decorators included in the diog package could be easily implemented with a single line of obscure python but then I would have to implement (and test) them again and again.

I'd rather not. I'm lazy.

Functions

always_a_list(obj: any) -> list with alias aal takes any object and if it isn't a list already, it wraps it up in one. It is also available as @always_a_list decorator.

default_if_none(obj: any, default: any) -> any: with alias din acts as a null coalescence.

first_or_default(lst: list, default: any=None) -> any: with alias fod returns the first element of a list if there is at least one element, or the default value.

get_if_exists(obj: any, key: str, default: any=None) -> any with alias gie. attempts to get a property of a dictionary or an attribute of an object, and if it doesn't exist or is None the default value is returned.

list_is_optional(obj: any) -> any with alias lio takes any object and if it is a list with a single element then it returns just the element, otherwise the list is returned. It is also available as @list_is_optional decorator.

list_without_nones(lst: list) -> list with alias lwn returns copy of the list without any None values. It is also available as @list_without_nones decorator.

none_if_empty(obj: any) -> any with alias nie returns copy of the object unless it is an empty list or an empty directory

append_if_not_none(obj: any, value: any, key: str) -> any with alias ainn

get_if_exists(obj: any, key: str) -> any with alias gie

set_if_not_none(obj: any, value: any, key: str) -> any with alias sinn

Conventions

to_data sometimes the object needs to be converted to a simpler data representation of dicts and lists. In those cases my objects implement a public method as_data(self). The diog.conventions.to_data(obj: any) takes an object or a list of object, and reduces the input to data.

To Publish

pipenv shell
pipenv install
python setup.py pytest
python setup.py bdist_wheel

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

diogi-0.1.0-py3.10.egg (7.3 kB view hashes)

Uploaded Source

Supported by

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