simpleutil 1.0.0
A versatile Python utility library that offers a wide range of helper functions, classes, and modules to expedite development tasks and simplify common operations

# simpleutils.py - Python Utility Library
`simpleutils` is a versatile Python utility library that offers a wide range of helper functions, classes, and modules to expedite development tasks and simplify common operations. With `simpleutils`, you can streamline your Python projects and enhance productivity through a collection of useful functionalities.

## Installation
You can install ``simpleutils`` using pip:

`pip install simpleutils`
## Functionality and Usage
### File Handling Functions
`create_directory(directory_path)``
Create a directory if it does not exist.


```py
from simpleutils import create_directory

directory_path = '/path/to/directory'
create_directory(directory_path)
```
`delete_file(file_path)`
Delete a file if it exists.

```py
from simpleutils import delete_file

file_path = '/path/to/file.txt'
delete_file(file_path)
```
### Data Manipulation Tools
merge_dicts(*dicts)
Merge multiple dictionaries into a single dictionary.


```py
from simpleutils import merge_dicts

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = merge_dicts(dict1, dict2)
print(merged_dict)  # Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
```
### String Utilities
`capitalize_first_letter(input_string)`
Capitalize the first letter of a given string.

```py
from simpleutils import capitalize_first_letter

input_string = 'hello world'
capitalized_string = capitalize_first_letter(input_string)
print(capitalized_string)  # Output: 'Hello world'
```
`remove_whitespace(input_string)`
Remove leading and trailing whitespace from a string.

```py
from simpleutils import remove_whitespace

input_string = '   hello world   '
cleaned_string = remove_whitespace(input_string)
print(cleaned_string)  # Output: 'hello world'
```
### Date and Time Utilities
`get_formatted_datetime(format_str="%Y-%m-%d %H:%M:%S")`
Get the current date and time in a formatted string.

```py
from simpleutils import get_formatted_datetime

formatted_time = get_formatted_datetime("%Y-%m-%d")
print(formatted_time)  # Output: '2023-07-20'
```
### Logging Module
`log_error(message)`
Log an error message to the console or a file (if configured).

```py
import logging
from simpleutils import log_error

logging.basicConfig(filename='error.log', level=logging.ERROR)
try:
    # Some code that may raise an exception
    raise ValueError("Something went wrong!")
except Exception as e:
    log_error(str(e))
```
### Network Utilities
`download_file(url, save_path)`
Download a file from a given URL and save it to the specified path.

```py
from simpleutils import download_file

file_url = 'https://example.com/some_file.txt'
save_path = '/path/to/save/file.txt'
download_file(file_url, save_path)
```
`extract_zip(zip_file_path, extract_to)`
Extract files from a ZIP archive to the specified directory.

```py
from simpleutils import extract_zip

zip_file_path = '/path/to/archive.zip'
extract_to = '/path/to/extract'
extract_zip(zip_file_path, extract_to)
```
`extract_tar(tar_file_path, extract_to)`
Extract files from a TAR archive to the specified directory.

```py
from simpleutils import extract_tar

tar_file_path = '/path/to/archive.tar.gz'
extract_to = '/path/to/extract'
extract_tar(tar_file_path, extract_to)
```
`get_domain_from_url(url)`
Extract the domain name from a given URL.

```py
from simpleutils import get_domain_from_url

url = 'https://www.example.com/some/page.html'
domain = get_domain_from_url(url)
print(domain)  # Output: 'www.example.com'
```
## Other Utilities
`generate_random_string(length=10)`
Generate a random string of a specified length.

```py
from simpleutils import generate_random_string

random_str = generate_random_string(8)
print(random_str)  # Output: 'JwB45XzQ'
```
`is_prime(number)`
Check if a given number is a prime number.

```py
from simpleutils import is_prime

number = 17
if is_prime(number):
    print(f"{number} is a prime number.")
else:
    print(f"{number} is not a prime number.")
```
`load_json(file_path)`
Load JSON data from a file and return it as a Python dictionary.

```py
from simpleutils import load_json

file_path = '/path/to/data.json'
data = load_json(file_path)
print(data)  # Output: {'name': 'John Doe', 'age': 30, 'email': 'john@example.com'}
```
`calculate_average(numbers)`
Calculate the average of a list of numbers.
```py
from simpleutils import calculate_average

numbers = [12, 34, 56, 78, 90]
average = calculate_average(numbers)
print(average)  # Output: 54.
```
`calculate_median(numbers)`
Calculate the median of a list of numbers.
```py
from simpleutils import calculate_median

numbers = [12, 34, 56, 78, 90]
median = calculate_median(numbers)
print(median)  # Output: 56
```
`flatten_list(nested_list)`
Flatten a nested list into a single-dimensional list.

```
from simpleutils import flatten_list

nested_list = [[1, 2, 3], [4, [5, 6]], [7], 8]
flattened_list = flatten_list(nested_list)
print(flattened_list)  # Output: [1, 2, 3, 4, 5, 6, 7, 8]
```
`remove_duplicates(input_list)`
Remove duplicates from a list while preserving the order.
```py
from simpleutils import remove_duplicates

input_list = [1, 2, 2, 3, 4, 3, 5]
unique_list = remove_duplicates(input_list)
print(unique_list)  # Output: [1, 2, 3, 4, 5]
```
`is_valid_email(email)`
Check if a given string is a valid email address.

```py
from simpleutils import is_valid_email

email = 'john@example.com'
if is_valid_email(email):
    print(f"{email} is a valid email address.")
else:
    print(f"{email} is not a valid email address.")
```
`is_valid_url(url)`
Check if a given string is a valid URL.

```py
from simpleutils import is_valid_url

url = 'https://www.example.com'
if is_valid_url(url):
    print(f"{url} is a valid URL.")
else:
    print(f"{url} is not a valid URL.")
```
`is_valid_ipv4(ip)`
Check if a given string is a valid IPv4 address.

```py
from simpleutils import is_valid_ipv4

ip = '192.168.1.1'
if is_valid_ipv4(ip):
    print(f"{ip} is a valid IPv4 address.")
else:
    print(f"{ip} is not a valid IPv4 address.")
```
`read_config_file(config_file_path)`
Read a configuration file (e.g., .ini, .yaml) and return it as a dictionary.

```py
from simpleutils import read_config_file

config_file_path = '/path/to/config.ini'
config_data = read_config_file(config_file_path)
print(config_data)
```
`write_config_file(config_dict, file_path)`
Write a dictionary as a configuration file.

```py
from simpleutils import write_config_file

config_dict = {'Section1': {'key1': 'value1', 'key2': 'value2'}, 'Section2': {'key3': 'value3'}}
file_path = '/path/to/config.ini'
write_config_file(config_dict, file_path)
```
`generate_encryption_key()`
Generate a new encryption key.
```py
from simpleutils import generate_encryption_key

encryption_key = generate_encryption_key()
print(encryption_key)
```
`encrypt_string(text, key)`
Encrypt a string using a symmetric encryption algorithm.
```py
from simpleutils import encrypt_string

text = 'This is a secret message.'
key = b'some_random_key'
encrypted_text = encrypt_string(text, key)
print(encrypted_text)
```
`decrypt_string(encrypted_text, key)`
Decrypt an encrypted string using the same key.

```py
from simpleutils import decrypt_string

encrypted_text = b'encrypted_data_here'
key = b'some_random_key'
decrypted_text = decrypt_string(encrypted_text, key)
print(decrypted_text)
```
`convert_pdf_to_text(pdf_file_path)`
Convert a PDF file to plain text.

```py
from simpleutils import convert_pdf_to_text

pdf_file_path = '/path/to/sample.pdf'
pdf_text = convert_pdf_to_text(pdf_file_path)
print(pdf_text)
```
## Contributing
Contributions to `simpleutils` are welcome! If you find any bugs, have new ideas, or want to improve the existing functionality, please open an issue or submit a pull request.

## License
This project is licensed under the MIT License - see the LICENSE file for details.

The `simpleutils` library offers an extensive array of functions to simplify tasks and boost productivity in Python projects. The README.md provides detailed explanations and examples for each function, enabling users to grasp the functionalities swiftly and incorporate them seamlessly into their projects. Should you encounter any issues or have suggestions for improvements, do not hesitate to contribute or reach out to me!