Skip to main content

cutility

Common utilities for faster development

Table of Contents

Installation

You can install cutility using pip:

pip install --upgrade cutility

Usage

Utils

Measure Execution Time

from cutility.utils import get_exec_time

@get_exec_time
def foo():
    import time
    time.sleep(1)

foo()
# Output: Time taken to execute 'foo': 0:00:01.005044

Check Path Existence

from cutility.utils import check_path_exist

exists = check_path_exist("./data/temp.txt")
print(exists)  # Output: False

Load Environment Variables

from cutility.utils import load_env

ENV = load_env("./.env")
print(ENV)
print(os.getenv("DATA_ROOT"))
print(os.getenv("PROJECT_ROOT"))
print(os.getenv("CONFIG_PATH"))

Loggers

Simple Logger

from cutility.loggers import get_simple_logger

log = get_simple_logger()
log.i("Hello world of loggers")
# Output: [2023-12-17 02:21:03,847] - [INFO] : Hello world of loggers

IO

Read and Write Files

from cutility.io import readers, writers

# Read and write text files
text_content = readers.read_text("./data/example_r.txt")
writers.write_text(text_content, "./data/example_w.txt")

# Read and write JSON files
json_data = readers.read_json("./data/example_r.json")
writers.write_json(json_data, "./data/example_w.json")

# Read and write YAML files
yaml_data = readers.read_yaml("./data/example_r.yaml")
writers.write_yaml(yaml_data, "./data/example_w.yaml")

Dir Handler

from cutility import get_dir_handler

dirh = get_dir_handler(project_root="./", data_root="./data", verbose=True)
print(dirh.get_data_root())
print(dirh.get_project_root())

Cleaners

Generic Cleaner

from cutility.cleaners import GenericSimpleTextCleaner

gtc = GenericSimpleTextCleaner()
sample_text = """Check out this link: https://example.com. 😎 #Python @user1, sample@gmail.com 123-456-7908"""

cleaning_steps = [
    (gtc.replace_contacts, {"repl": " {{PHONE}} "}),
    (gtc.replace_emails, {"repl": " {{EMAIL}} "}),
    (gtc.clean_emojis, {}),
    (gtc.clean_hashtags, {}),
    (gtc.clean_web_links, {}),
]

cleaned_text = gtc.apply_text_cleaning_functions(sample_text, cleaning_steps)
print(cleaned_text)

Simple Text Cleaner

from cutility.cleaners import SimpleTextCleaner

cleaned_text = SimpleTextCleaner.clean_emojis("🌟 Sed euismod justo t semper justo. 😊")
print(cleaned_text)

PII Text Cleaner

from cutility.cleaners import PiiTextCleaner

text = "My contact number is +1(123) 456 7890 and my email is email@company.com"
cleaned_text = PiiTextCleaner.replace_emails(PiiTextCleaner.replace_contacts(text))
print(cleaned_text)

Path Manager

from cutility import PathManager, create_path_manager

pm = create_path_manager(project_root="./", data_root="./data", verbose=True)
print(pm.data_root)
print(pm.project_root)

# Load YAML configuration
config = pm.load_yaml_config("my_config")
print(config)

# Create directory structure
pm.create_directory_structure("./output", ["logs", "data", "results"])

Project Structure

./src
└── cutility
    ├── __init__.py
    ├── _version.py
    ├── cleaners
    │   ├── __init__.py
    │   ├── clean.py
    │   ├── pii_cleaner.py
    │   └── text_cleaner.py
    ├── dir_handler.py
    ├── io
    │   ├── __init__.py
    │   ├── readers
    │   └── writers
    ├── loggers
    │   ├── __init__.py
    │   └── _simple_logger.py
    └── utils
        ├── __init__.py
        ├── env_loader.py
        ├── exec_time.py
        └── path.py

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache 2.0 License.

Metadata

Release files for cutility 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cutility 1.0.1
File Size Uploaded
cutility-1.0.1.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cutility 1.0.1
File Interpreter ABI Platform
cutility-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 37.9 kB

Release files / cutility-1.0.1.tar.gz

Download URL cutility-1.0.1.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1e2112a538d2fe512dfb7e4c64cacfbb0f944f96557d84a583a8ec4fed23cde9
BLAKE2b-256 checksum
How to use checksums
ee8883f333552077e162301cd2857f48b6827f9cfaa86c189caead7b7dba49d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release files / cutility-1.0.1-py3-none-any.whl

Download URL cutility-1.0.1-py3-none-any.whl
Size 18.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3cda232f02ef3f3f3378ab808ab48d139b0a5185372cc74eb12f02a736bd44da
BLAKE2b-256 checksum
How to use checksums
328efec44829b0f7891b7308053d0f9090b6f3895d80bd9e3f4ddd6d9df750c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page