Common utility functions for the kiarina namespace packages
Project description
kiarina-utils-common
Common utility functions for the kiarina namespace packages.
Installation
pip install kiarina-utils-common
Features
Dynamic Object Import
Import objects (classes, functions, constants) dynamically from import paths. Useful for plugin systems and dynamic loading scenarios.
from kiarina.utils.common import import_object
# Import a function
parse_fn = import_object("kiarina.utils.common:parse_config_string")
result = parse_fn("key:value")
# Import a class
MyClass = import_object("myapp.plugins:MyPlugin")
instance = MyClass()
# Import with type hints for better IDE support
from typing import Callable
parser: Callable = import_object("kiarina.utils.common:parse_config_string")
Configuration String Parser
Parse configuration strings into nested dictionaries with automatic type conversion.
from kiarina.utils.common import parse_config_string
# Basic usage
config = parse_config_string("cache.enabled:true,db.port:5432")
# Result: {"cache": {"enabled": True}, "db": {"port": 5432}}
# Flag support (no value)
config = parse_config_string("debug,verbose,cache.enabled:true")
# Result: {"debug": None, "verbose": None, "cache": {"enabled": True}}
# Array indices support
config = parse_config_string("items.0:first,items.1:second")
# Result: {"items": ["first", "second"]}
# Custom separators
config = parse_config_string(
"key1=val1;key2.sub=42",
separator=";",
key_value_separator="="
)
# Result: {"key1": "val1", "key2": {"sub": 42}}
Type Conversion
Values are automatically converted to appropriate types:
"true","True"→bool(True)"false","False"→bool(False)- Numeric strings (
"1","0","-5","3.14") →intorfloat - Other strings →
str
Nested Keys
Use dot notation for nested structures:
config = parse_config_string("database.host:localhost,database.port:5432")
# Result: {"database": {"host": "localhost", "port": 5432}}
Array Indices
Use numeric keys for array structures:
config = parse_config_string("users.0.name:Alice,users.0.age:30,users.1.name:Bob")
# Result: {"users": [{"name": "Alice", "age": 30}, {"name": "Bob"}]}
API Reference
import_object(import_path)
Import and return an object from an import path.
Parameters:
import_path(str): Import path in the format'module_name:object_name'- Example:
'kiarina.utils.common:parse_config_string'
- Example:
Returns:
- The imported object (class, function, or any other object)
Raises:
ValueError: If import_path format is invalidImportError: If the module cannot be importedAttributeError: If the object doesn't exist in the module
Examples:
# Import a function
parse_fn = import_object('kiarina.utils.common:parse_config_string')
result = parse_fn('key:value')
# Import a class
MyClass = import_object('myapp.plugins:MyPlugin')
instance = MyClass()
# Use with type hints
from typing import Callable
parser: Callable = import_object('kiarina.utils.common:parse_config_string')
parse_config_string(config_str, *, separator=",", key_value_separator=":", nested_separator=".")
Parse configuration string into nested dictionary.
Parameters:
config_str(str): Configuration string to parseseparator(str, optional): Item separator. Default:","key_value_separator(str, optional): Key-value separator. Default:":"nested_separator(str, optional): Nested key separator. Default:"."
Returns:
dict[str, Any]: Parsed configuration dictionary
Examples:
# Basic usage
parse_config_string("key1:value1,key2:value2")
# {"key1": "value1", "key2": "value2"}
# Nested keys
parse_config_string("cache.enabled:true,db.port:5432")
# {"cache": {"enabled": True}, "db": {"port": 5432}}
# Flags (no value)
parse_config_string("debug,verbose")
# {"debug": None, "verbose": None}
# Custom separators
parse_config_string("a=1;b=2", separator=";", key_value_separator="=")
# {"a": 1, "b": 2}
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
This is a personal project by kiarina. While issues and pull requests are welcome, please note that this is primarily developed for personal use.
Related Packages
- kiarina-utils-file: File operation utilities
- kiarina-llm: LLM-related utilities
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kiarina_utils_common-1.20.0.tar.gz.
File metadata
- Download URL: kiarina_utils_common-1.20.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20adee61de93bdf8a6c30532056ff9e078be0340cb78c84d4fa60b9dcc2243e7
|
|
| MD5 |
86d7c2d10fd689f32a42c7d38af904c7
|
|
| BLAKE2b-256 |
32cb8b6cf1b6ddfd30d3635d1e99f251a2cdb05ad8a104dad776214ff26038f5
|
File details
Details for the file kiarina_utils_common-1.20.0-py3-none-any.whl.
File metadata
- Download URL: kiarina_utils_common-1.20.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55613f69d2825cc8db2afd8dda0989fd5d60890836a2993c5d72aac431067ef6
|
|
| MD5 |
8218bdf2d1af449a2f07f8bdf520e4fe
|
|
| BLAKE2b-256 |
e0816b478ee97ac00647d2df1f775f9b56ab596c8d1e2b810ad385f3fae91805
|