Skip to main content

A library of tiny little functions to help do more while doing less.

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.

Development

This repository uses uv for environment and dependency management.

Install the project and development dependencies:

uv sync --group dev

Run the test suite:

uv run pytest

Build the source distribution and wheel:

uv build

To Publish

uv sync --group dev
uv run pytest
uv build

Project details


Download files

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

Source Distribution

diogi-0.1.2.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

diogi-0.1.2-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file diogi-0.1.2.tar.gz.

File metadata

  • Download URL: diogi-0.1.2.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for diogi-0.1.2.tar.gz
Algorithm Hash digest
SHA256 859600e101231e03d6d256e037a225c0ffccda3cea9ace4322f712cd59da2caa
MD5 d9ebfd82001b749e2f5c6f156ae6f602
BLAKE2b-256 d8bb68504c6bc442807164c465985b351329598dcb35c1558d8935e0a03d1bef

See more details on using hashes here.

Provenance

The following attestation bundles were made for diogi-0.1.2.tar.gz:

Publisher: build.yml on michalporeba/diogi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diogi-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: diogi-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for diogi-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 12aa722699c8b0a250adcdd94d9d7bd4bf2f5b90935f668fafceddd77deef327
MD5 27d36515c71670eb78612a445c453493
BLAKE2b-256 8b01bdb11dc957c4fc3569304537a15e36a14f68985bcb385969be638603e101

See more details on using hashes here.

Provenance

The following attestation bundles were made for diogi-0.1.2-py3-none-any.whl:

Publisher: build.yml on michalporeba/diogi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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