Skip to main content

Core data utility functions and objects

Project description

Core Data Utility

test codecov pypi version python support version size code style: black type check: mypy pre-commit

A core data utility package, this package implements the data utility functions and objects.

I was created this package base on sub-package namespace, ddeutil (This feature use for independent installation). This package able to extend with any sub-extension with this namespace. So, this namespace able to scale-out the requirement with folder level design. You can add any custom features and import it by import ddeutil.{extension}.

[!NOTE] This package provide the base utility functions and objects for any sub-namespace package.

:round_pushpin: Installation

pip install -U ddeutil

Python version supported:

Python Version Installation Support Fixed Bug
>=3.9,<3.14 pip install -U ddeutil :heavy_check_mark:

[!NOTE] If you want to install all optional dependencies for this package, you can use pip install -U ddeutil[all]. For optional dependencies that use on this package, it will list on below table;

Optional deps Module
ujson hash.checksum
python-dateutil dtutils.next_date_with_freq, dtutils.calc_data_freq
psutil threader.MonitorThread.

:dart: Features

This data package implements all of utility functions and objects that does not re-create again when the sub-namespace package want it because it is a basic utility but has a lot of using require.

Module Name Description Remark
base isinstance_check Return True if a data is instance of the respect instance.
import_string Import a dotted module path and return the attribute/class designated by the last name in the path. no coverage
lazy Lazy use import_string function that wrapped with partial function.
round_up Round up the number with decimals precision size.
remove_pad Remove zero padding of zero prefix string.
first Returns the first item in the iterable that satisfies the condition.
onlyone Get only one element from check list that exists in match list.
hasdot Return True value if dot searching exists in content data.
getdot Return the value if dot searching exists in content data.
setdot Set the value if dot searching exists in content data.
filter_dict Filter dict value with excluded and included collections.
random_str Random string from uppercase ASCII and number 0-9. no coverage
coalesce Coalesce function that is a just naming define function. no coverage
base.checker can_int Check an input value that can be integer type or not (but some value does not use int() to convert it such as 0.0 or 3.0)
is_int Check an input value that be integer type or not.
base.convert must_bool Return the boolean value that was converted from string, integer, or boolean value.
must_list Return the list value that was converted from string or list value.
str2any Convert an input string value to the real type of that object. Note that this convert function do not force or try-hard to convert type such as a boolean value should be 'True' or 'False' only.
str2args Convert an input string to args and kwargs values.
str2bool Convert an input string value to boolean (True or False).
str2dict Convert an input string value to dict.
str2int_float Convert an input string value to float.
str2list Convert an input string value to list.
base.hash checksum
freeze no coverage
freeze_args no coverage
hash_value
hash_str
base.merge merge_dict
merge_dict_value
merge_dict_value_list
merge_list
sum_values Sum all values in an input dict value with start and end index.
zip_equal
base.sorting ordered
sort_priority
base.splitter isplit
must_rsplit
must_split
decorator deepcopy Deep-copy any args and kwargs for func and method.
retry Retry decorator with sequential.
profile Profile the current memory and cpu usage while wrapped function running.
dtutils replace_date Replace datetime matrix that less than an input mode to origin value.
next_date Return the next date with specific unit mode.
closest_quarter Return closest quarter datetime of an input datetime.
last_dom Get the latest day of month that relate with an input datetime value.
last_doq Get the latest day of quarter that relate with an input datetime value.
next_date_freq Prepare datetime to next datetime with frequency value.
calc_date_freq Prepare datetime to calculate datetime with frequency value.
threader ThreadWithControl Threading object that can control maximum background agent and result after complete.
MonitorThread Monitoring threading object that log the current memory and cpu usage.

:beers: Usages

I will show some examples of function in this package. If you want to use complex or adjust some parameter, please see doc-string or real source code (I think it does not complex, and you can see how that function work).

OnlyOne

from ddeutil.core import onlyone

assert 'a' == onlyone(['a', 'b'], ['a', 'b', 'c'])
assert 'c' == onlyone(('a', 'b'), ['c', 'e', 'f'])
assert onlyone(['a', 'b'], ['c', 'e', 'f'], default=False) is None

Instance Check

from ddeutil.core import isinstance_check
from typing import Union, Optional, NoReturn, Any

assert isinstance_check("s", str)
assert isinstance_check(["s"], list[str])
assert isinstance_check(("s", "t"), tuple[str, ...])
assert not isinstance_check(("s", "t"), tuple[str])
assert isinstance_check({"s": 1, "d": "r"}, dict[str, Union[int, str]])
assert isinstance_check("s", Optional[str])
assert isinstance_check(1, Optional[Union[str, int]])
assert not isinstance_check("s", list[str])
assert isinstance_check([1, "2"], list[Union[str, int]])
assert not isinstance_check("s", NoReturn)
assert isinstance_check(None, NoReturn)
assert isinstance_check("A", Any)
assert isinstance_check([1, [1, 2, 3]], list[Union[list[int], int]])
assert not isinstance_check([1], Union[str, int])
assert isinstance_check((1, "foo", True), tuple[int, str, bool])

String to Any

from ddeutil.core import str2any

assert str2any('22') == 22
assert str2any("1245") == 1245
assert str2any('"string"') == "string"
assert str2any("[1, 2, 3]") == [1, 2, 3]
assert str2any('{"key": "value"}') == {"key": "value"}
assert str2any("1245.123") == 1245.123
assert str2any("True")
assert str2any("[1, 2") == "[1, 2"
assert str2any("1.232.1") == "1.232.1"

:speech_balloon: Contribute

I do not think this project will go around the world because it has specific propose, and you can create by your coding without this project dependency for long term solution. So, on this time, you can open the GitHub issue on this project:raised_hands: for fix bug or request new feature if you want it.

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

ddeutil-0.4.5.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

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

ddeutil-0.4.5-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file ddeutil-0.4.5.tar.gz.

File metadata

  • Download URL: ddeutil-0.4.5.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for ddeutil-0.4.5.tar.gz
Algorithm Hash digest
SHA256 37a5b928a53ac04b322c3d4acfbae4b5cb60b943f5f12a1cf11331f53f28156e
MD5 b4a92d0d9b1ce13a1cff3bb2e95b09a6
BLAKE2b-256 6cdecafd9778b3f0f8e7e8666e1d9a25d3d5ef6b00c836ec3bab4cb2cc7a0fab

See more details on using hashes here.

File details

Details for the file ddeutil-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: ddeutil-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for ddeutil-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 66f2fbccb9ff34005c1e95ce9be250c388afe16ffcb118abf1a7831ff3f951d2
MD5 c0dc2ebb990bb3f2a59d315fc087d3c9
BLAKE2b-256 44e304bc2f0249821f49daacfe2203df067964f1ba6a524400daccd474f8ee66

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