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

The Core Data utility package implements the data utility functions and objects that was created on sub-package namespace, ddeutil, design for independent installation.

I make 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 core data package will implement all of utility functions and objects that does not re-create again because it is basic code 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.
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.cache memorize Return a cachable function that keep all arguments and pass to string type for keeping it in the caching key.
property_memorize Return a property attribute for new-style classes that only calls its getter on the first access.
clear_cache Clear cache or the another word is delete caching attribute value that implement cache with target attribute property.
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
must_list
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 arguments 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
freeze_args
hash_all
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
deepcopy_args
timing
timing_open
debug
retry
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
calc_data_freq
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 usage example 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 do 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"

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.3.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

ddeutil-0.4.3-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ddeutil-0.4.3.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for ddeutil-0.4.3.tar.gz
Algorithm Hash digest
SHA256 76d85e50512f30134890bdaa52e2ead90c902dc7cc091dca457c00721a4f6cea
MD5 c1e46794d8795efca0078d8eaec067f0
BLAKE2b-256 85a2200d8b25b5581390f965be1a0018e9f31e3ae45b314657a1b8b71e628826

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ddeutil-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 26.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for ddeutil-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 560ef95ebd3bb6453ca996f202d38cf838e1ebd8706743528ba7f45edb07dea5
MD5 ec63064de5f1ad1a67615907f46ebf16
BLAKE2b-256 8c95c6da1c69b2a84765140a7fbeda54fb978c96aa430570fe272297dcd2b350

See more details on using hashes here.

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