Metadata-Version: 2.3
Name: fun-things
Version: 1.0.0
Summary: 
Author: MisterNyan
Author-email: michael.edmund.wong@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Provides-Extra: adblock
Provides-Extra: all
Provides-Extra: aws
Provides-Extra: boolean
Provides-Extra: chalk
Provides-Extra: elasticsearch
Provides-Extra: fastapi
Provides-Extra: http
Provides-Extra: language
Provides-Extra: mongo
Provides-Extra: opentelemetry
Provides-Extra: pydantic
Provides-Extra: redis
Provides-Extra: tenacity
Requires-Dist: boolean.py ; extra == "boolean" or extra == "all"
Requires-Dist: boto3 ; extra == "aws" or extra == "all"
Requires-Dist: elasticsearch ; extra == "elasticsearch" or extra == "all"
Requires-Dist: fastapi ; extra == "fastapi" or extra == "all"
Requires-Dist: fastapi-healthz ; extra == "fastapi" or extra == "all"
Requires-Dist: google-re2 ; extra == "adblock" or extra == "all"
Requires-Dist: langdetect ; extra == "language" or extra == "all"
Requires-Dist: opentelemetry-api ; extra == "opentelemetry" or extra == "all"
Requires-Dist: opentelemetry-sdk ; extra == "opentelemetry" or extra == "all"
Requires-Dist: pycld2 ; extra == "language" or extra == "all"
Requires-Dist: pycountry ; extra == "language" or extra == "all"
Requires-Dist: pydantic ; extra == "pydantic" or extra == "all"
Requires-Dist: pymongo (>=4.9) ; extra == "mongo" or extra == "pydantic" or extra == "all"
Requires-Dist: python-abp ; extra == "adblock" or extra == "all"
Requires-Dist: redis (>=4.2) ; extra == "redis" or extra == "fastapi" or extra == "all"
Requires-Dist: requests ; extra == "http" or extra == "all"
Requires-Dist: simple-chalk ; extra == "chalk" or extra == "all"
Requires-Dist: tenacity ; extra == "mongo" or extra == "tenacity" or extra == "all"
Description-Content-Type: text/markdown

# Fun-Things

A Python utility package containing a collection of helpful functions and tools for everyday development tasks.

## Installation

```bash
pip install fun-things
```

## Features

Fun-Things provides a variety of utility modules:

-   **Asynchronous Tools**: Convert between sync/async functions and generators
-   **Retry Mechanisms**: Simple retry patterns for functions and API calls
-   **Middleware**: A middleware implementation for Python applications
-   **Lazy Loading**: Utilities for lazy evaluation of objects
-   **Network Tools**: Functions for network operations like ping
-   **Type Utilities**: Helper functions for working with Python types
-   **Categorizer**: Tools for categorizing data
-   **CLI Tools**: Command-line utilities for package management
-   **AdBlocker Filter Parser**: Parse and work with ad blocker filter rules
-   **Singleton Factory**: Implementation of the singleton pattern
-   **URL Utilities**: Tools for working with URLs
-   **Environment Tools**: Environment variable handling
-   **Boolean Query**: Tools for parsing and evaluating boolean queries
-   **Downloader**: Utilities for downloading files
-   **Generic JSON Encoder**: Custom JSON encoder for complex types
-   **Key Wrapper**: Utilities for key management
-   **Language Tools**: Language-related utilities
-   **Mathematical Tools**: Math-related functions
-   **Mutator**: Data mutation utilities
-   **Pydantic Extensions**: Helpers for working with Pydantic
-   **Singleton Hub**: Centralized singleton management
-   **Logger**: Enhanced logging capabilities
-   **FastAPI Utilities**: Helpers for FastAPI applications
-   **Proxy URI**: Tools for working with proxy URIs

## Usage

Import specific utilities

```python
from fun_things import lazy, undefined, merge_dict
from fun_things.retry import Retry, AsyncRetry
from fun_things.asynchronous import as_async, as_sync
```

Use the CLI

```sh
# After installation, the 'fun' command is available
$ fun freeze  # Freezes your dependencies
$ fun install  # Installation helper
```

## Requirements

-   Python 3.8 or higher

## Documentation

For more detailed usage information, see the docstrings in each module.

