Metadata-Version: 2.4
Name: emp-utl
Version: 0.5.3
Summary: Reusable infrastructure and data utilities for the Enterprise Management Program (EMP)
Home-page: https://github.com/AbdoCherry/EMP_UTL-S
Author: AbdoCherry
License: MIT
Project-URL: Source, https://github.com/AbdoCherry/EMP_UTL-S
Project-URL: Tracker, https://github.com/AbdoCherry/EMP_UTL-S/issues
Keywords: emp,microservices,utility,mysql,mongodb,logging,configuration,kafka,dataframe,pandas
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: about-time==4.2.1
Requires-Dist: alive-progress==3.3.0
Requires-Dist: attrs==25.4.0
Requires-Dist: bcrypt==5.0.0
Requires-Dist: bleach==6.3.0
Requires-Dist: boltons==25.0.0
Requires-Dist: certifi==2026.1.4
Requires-Dist: charset-normalizer==3.4.4
Requires-Dist: config-client==1.5.0
Requires-Dist: confluent-kafka==2.13.0
Requires-Dist: countryinfo==1.0.1
Requires-Dist: dnspython==2.8.0
Requires-Dist: docutils==0.22.4
Requires-Dist: face==26.0.0
Requires-Dist: Faker==40.15.0
Requires-Dist: fastjsonschema==2.21.2
Requires-Dist: glom==25.12.0
Requires-Dist: graphemeu==0.7.2
Requires-Dist: id==1.6.1
Requires-Dist: idna==3.11
Requires-Dist: jaraco.classes==3.4.0
Requires-Dist: jaraco.context==6.1.0
Requires-Dist: jaraco.functools==4.4.0
Requires-Dist: jsonschema==4.26.0
Requires-Dist: jsonschema-specifications==2025.9.1
Requires-Dist: jupyter_core==5.9.1
Requires-Dist: jupytext==1.19.1
Requires-Dist: kaggle==2.1.2
Requires-Dist: kagglesdk==0.1.23
Requires-Dist: keyring==25.7.0
Requires-Dist: markdown-it-py==4.0.0
Requires-Dist: mdit-py-plugins==0.5.0
Requires-Dist: mdurl==0.1.2
Requires-Dist: more-itertools==10.8.0
Requires-Dist: mysql-connector-python==9.6.0
Requires-Dist: nbformat==5.10.4
Requires-Dist: nh3==0.3.3
Requires-Dist: numpy==2.4.2
Requires-Dist: packaging==26.0
Requires-Dist: pandas==3.0.1
Requires-Dist: platformdirs==4.9.6
Requires-Dist: protobuf==7.34.1
Requires-Dist: pyarrow==23.0.1
Requires-Dist: Pygments==2.19.2
Requires-Dist: pymongo==4.17.0
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-slugify==8.0.4
Requires-Dist: PyYAML==6.0.3
Requires-Dist: readme_renderer==44.0
Requires-Dist: referencing==0.37.0
Requires-Dist: requests==2.32.5
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rich==14.3.3
Requires-Dist: rpds-py==0.30.0
Requires-Dist: setuptools==82.0.0
Requires-Dist: six==1.17.0
Requires-Dist: text-unidecode==1.3
Requires-Dist: tqdm==4.67.3
Requires-Dist: traitlets==5.15.0
Requires-Dist: twine==6.2.0
Requires-Dist: Unidecode==1.4.0
Requires-Dist: urllib3==2.6.3
Requires-Dist: webencodings==0.5.1
Requires-Dist: wheel==0.46.3
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# 🧰 EMP – Utility Library (`emp-utl`)

Reusable infrastructure and data utilities for the Enterprise Management Program (EMP).

`emp-utl` provides production-ready helper modules used across EMP microservices, notebooks, and serverless workloads.

---

## 📦 Installation

```bash
pip3 install emp-utl
```

---

## ✨ Features

### 📝 Structured Logging

- Environment-aware logging
- Colored console output for DEV
- File logging for local environments
- Kafka-based centralized logging for INT/STG/PRD
- ELK-compatible JSON formatting

```python
from emp_utl import setup_logger

logger = setup_logger(
    service = 'Customer',
    module = 'Serverless'
)

logger.info(msg = 'Service initialized')
```

---

### ⚙️ Configuration Loader

- Spring Cloud Config Server integration
- Automatic OS environment fallback
- Nested configuration resolution

```python
from emp_utl import load_cnf

env_vars = load_cnf(
    service = 'utility-service',
    keys = ['DB_HOST', 'DB_PORT'],
    logger = logger
)
```

---

### 🗄️ MySQL Utilities

- Connection management
- SQL script execution
- Foreign key handling
- Bulk DataFrame insertion
- Schema orchestration

```python
from emp_utl import load_mysql
```

---

### 🍃 MongoDB Utilities

- Collection-based DataFrame loading
- Dynamic collection resolution
- Optional database reset
- Index creation support

```python
from emp_utl import load_mongo
```

---

### 📊 DataFrame Utilities

- Audit column generation
- Export helpers
- Faker integration
- Randomized enterprise data generation
- Banking & credential preparation

---

### 🔐 Security Utilities

- Bcrypt password encoding
- Credential generation helpers
- Reusable authentication preparation utilities

---

## 🧩 Package Structure

```text
emp_utl/
├── emp_logger
├── emp_config
├── emp_mysql
├── emp_mongo
├── emp_dataframe
├── emp_security
├── emp_core
```

---

## ✅ Quality Standards

- Modular architecture
- Environment-aware behavior
- CI/CD ready
- Structured logging
- Enterprise-oriented utilities
- Designed for reusable microservice integration

---

## 🚀 Current Version

```text
v0.5.0
```


# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-03-06

### Structured Logging

- Environment-aware structured logging via `setup_logger`
- JSON-formatted logs compatible with ELK Stack ingestion
- Local file logging for `dev` environment
- Kafka-based centralized logging for `int`, `stg`, and `prd` environments
- Custom Kafka logging handler with delivery reporting

### Configuration Loader

- Dynamic configuration loading via `load_cnf`
- Primary configuration source: Spring Cloud Config Server (CNF-S)
- Secure authentication using `EMP_CONFIG_USERNAME` and `EMP_ENCRYPT_KEY`
- Automatic fallback to local OS environment variables if CNF-S is unavailable
- Nested configuration key resolution support

### MySQL Utilities

- MySQL orchestration via `load_mysql`
- Automatic schema setup through SQL script execution
- Support for custom SQL `DELIMITER` parsing
- Foreign key management utilities (`disable_fk_check`, `enable_fk_check`)
- Bulk DataFrame insertion support
- Automatic placeholder normalization for NULL values
- Column-type-aware NULL restoration logic

### Testing & Quality

- Complete unit test coverage (100%)
- Comprehensive error handling and logging
- CI-ready architecture for GitHub Actions publishing

## [0.5.0] - 2026-05-07

### Logging Improvement

- Added colorized console logging for DEV environment
- Added reusable `ColorStreamHandler`
- Added centralized JSON formatter generation
- Improved environment-aware logger architecture

### Core Utility

- Added reusable datetime helper functions
- Added workday rounding utilities
- Added random datetime generation support
- Added text normalization helpers

### DataFrame Utilities

- Added reusable dataframe export helper
- Added audit column generation
- Added Faker integration helpers
- Added international phone number generation

### Banking Utilities

- Added country-based banking mapper generation
- Added realistic banking information generation
- Added reusable banking dataframe builders
- Added support for IBAN/BIC and BBAN/Routing structure

### Security Utilities

- Added reusable bcrypt password encoding
- Added credential dataframe generation
- Added reusable credential row builders

### MongoDB Utilities

- Added MongoDB dataframe loading support
- Added dynamic collection resolution
- Added automatic MongoDB index creation
- Added bulk document insertion helpers
  
### External Integration

- Added Kaggle dataset download integration
- Added automatic temporary file cleanup

### Project Structure

- Restructured Utility library into modular domains
- Introduced dedicated modules for:
  - logger
  - config
  - dataframe
  - security
  - mongodb
  - mysql
  - external integrations

## [0.5.1] - 2026-06-9

- Minor bug resolved on `src/emp_utl/__init__.py`

## [0.5.2] - 2026-06-9

- Debugging `load_mysql`: Dynamic MySQL Port

## [0.5.3] - 2026-06-10

- Minor enhancement of `src/emp_utl/__init__.py`
