Metadata-Version: 2.4
Name: py_simple_wrap
Version: 0.9.0
Summary: A package to make complex python functionality simple
Author-email: Sara Czasak <sara.p.czasak.m@gmail.com>
Maintainer-email: Sara Czasak <sara.p.czasak.m@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/sara-czasak/py-simple-wrap
Project-URL: Repository, https://github.com/sara-czasak/py-simple-wrap
Project-URL: Bug Tracker, https://github.com/sara-czasak/py-simple-wrap/issues
Project-URL: Documentation, https://sara-czasak.github.io/py-simple-wrap/docs/
Project-URL: Quickstart, https://github.com/sara-czasak/py-simple-wrap/blob/main/QUICKSTART.md
Keywords: python,beginner-friendly,wrapper,education,utilities,helper-functions,simple-api,easy-to-use,automation,beginner,learning,students
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Education
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.md
Provides-Extra: base
Provides-Extra: ai
Requires-Dist: pydantic>=2.0.0; extra == "ai"
Requires-Dist: certifi>=2026.10.19; extra == "ai"
Requires-Dist: langchain-core>=0.2.0; extra == "ai"
Requires-Dist: langchain-openai>=0.1.0; extra == "ai"
Requires-Dist: langchain-ollama>=0.1.0; extra == "ai"
Requires-Dist: langchain-anthropic>=0.1.0; extra == "ai"
Requires-Dist: langchain-google-genai>=1.0.0; extra == "ai"
Requires-Dist: langchain-mistralai>=0.1.0; extra == "ai"
Provides-Extra: game
Requires-Dist: pygame-ce>=2.5.0; extra == "game"
Provides-Extra: viz
Requires-Dist: matplotlib>=3.0.0; extra == "viz"
Provides-Extra: images
Requires-Dist: Pillow>=13.0.0; extra == "images"
Requires-Dist: qrcode>=7.4.0; extra == "images"
Provides-Extra: web
Requires-Dist: requests>=2.25.0; extra == "web"
Requires-Dist: beautifulsoup4>=4.9.0; extra == "web"
Requires-Dist: certifi>=2026.10.19; extra == "web"
Provides-Extra: config
Requires-Dist: GitPython>=3.1.0; extra == "config"
Provides-Extra: json
Requires-Dist: python-benedict>=0.38.0; extra == "json"
Provides-Extra: terminal
Requires-Dist: rich>=13.0.0; extra == "terminal"
Provides-Extra: all
Requires-Dist: py_simple_wrap[ai,config,game,images,json,terminal,viz,web]; extra == "all"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Provides-Extra: docs
Requires-Dist: mkdocs; extra == "docs"
Requires-Dist: mkdocs-material; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin; extra == "docs"
Requires-Dist: mkdocstrings; extra == "docs"
Requires-Dist: mkdocstrings-python; extra == "docs"
Dynamic: license-file

<div align="center" markdown="1">

⚡[Quickstart](QUICKSTART.md) · 📦[Modules](MODULES.md) · 🆘[Support](SUPPORT.md) · 🚀[Contributing](CONTRIBUTING.md) · 🌟[Contributors](CONTRIBUTORS.md) · 📜[Changelog](CHANGELOG.md) · 🔒[Security](SECURITY.md) · 🌱[Code of Conduct](CODE_OF_CONDUCT.md) · ⚖️[License](LICENSE.md)

</div>
<br>

<!-- docs-site-start -->

<div align="center" markdown="1">
<img src="https://raw.githubusercontent.com/sara-czasak/py-simple-wrap/main/docs/assets/logo.jpg" alt="py-simple-wrap logo" width="150" height="150" style="border-radius: 50%; object-fit: cover;">
 
<h1 id="py-simple-wrap" style="margin-top: 0;">py-simple-wrap</h1>

**Making Python feel like plain English.**
 
[![PyPI](https://img.shields.io/pypi/v/py-simple-wrap?style=flat-square&logo=pypi&logoColor=white&color=3775A9)](https://pypi.org/project/py-simple-wrap/)
[![Tests](https://img.shields.io/github/actions/workflow/status/sara-czasak/py-simple-wrap/tests.yml?style=flat-square&logo=github&label=tests)](https://github.com/sara-czasak/py-simple-wrap/actions/workflows/tests.yml)
[![Security: SkillsLLM](https://skillsllm.com/security-check/badge.svg?owner=sara-czasak&repo=py-simple-wrap)](https://skillsllm.com/security-check/ClrqG49aEoiZ)
[![Contributors](https://img.shields.io/badge/contributors-93-orange?style=flat-square)](CONTRIBUTORS.md)
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/py-simple-wrap?period=total&units=NONE&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/py-simple-wrap)
[![License](https://img.shields.io/badge/license-MIT-yellow?style=flat-square)](LICENSE.md)
[![Discord](https://img.shields.io/discord/1533803449895092245?style=flat-square&logo=discord&logoColor=white&label=discord&color=5865F2)](https://discord.gg/f9PUGNaVZ)
 
</div>
<br>
py-simple-wrap is a beginner-friendly Python toolbox — simple, intuitive functions for common tasks, so you can build something fun before the syntax gets in the way.
 
<div align="center" markdown="1">
<br>

## Modules at a glance

|                                                                                                                                                            |                                                                                                                                                                 |                                                                                                                                                            |                                                                                                                                                     |                                                                                                                                                           |                                                                                                                                                         |                                                                                                                                                                 |                                                                                                                                                                |                                                                                                                                                               |                                                                                                                                                                          |
|:-----------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [📂 ![Files](https://img.shields.io/badge/Files-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_file_manager/) | [🕰️ ![Dates](https://img.shields.io/badge/Dates-E0692A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_date_formatter/)   | [🔢 ![Numbers](https://img.shields.io/badge/Numbers-C98C1B?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_numbers/)  | [📋 ![Lists](https://img.shields.io/badge/Lists-2FA84F?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_lists/) | [🔤 ![Strings](https://img.shields.io/badge/Strings-2FA84F?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_strings/) | [✂️ ![Text](https://img.shields.io/badge/Text-2FA84F?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_text/)        | [🔄 ![Converter](https://img.shields.io/badge/Converter-C98C1B?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_converter/) | [✅ ![Validator](https://img.shields.io/badge/Validator-2FA84F?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_validator/) | [🌐 ![Web](https://img.shields.io/badge/Web-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_web/)                 | [🎨 ![Colors](https://img.shields.io/badge/Colors-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_colors/)                   |
| [🔄 ![Flow](https://img.shields.io/badge/Flow-E0692A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_flow/)           | [📄 ![JSON](https://img.shields.io/badge/JSON-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_json/)                | [🔍 ![Regex](https://img.shields.io/badge/Regex-2FA84F?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_regex/)        | [⚡ ![Async](https://img.shields.io/badge/Async-E0692A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_async/)  | [🔑 ![Dict](https://img.shields.io/badge/Dict-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_dict/)          | [🖼️ ![Images](https://img.shields.io/badge/Images-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_images/) | [🧮 ![Math](https://img.shields.io/badge/Math-C98C1B?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_math/)                | [📊 ![Stats](https://img.shields.io/badge/Stats-C98C1B?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_stats/)            | [📑 ![CSV](https://img.shields.io/badge/CSV-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_csv/)                 | [📈 ![Data viz](https://img.shields.io/badge/Data%20viz-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_data_visualization/) |
| [🎮 ![Game](https://img.shields.io/badge/Game-E0507A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_game/)           | [🎲 ![Generator](https://img.shields.io/badge/Generator-E0507A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_generator/) | [🗜️ ![Archive](https://img.shields.io/badge/Archive-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_archive/) | [❔ ![SQL](https://img.shields.io/badge/SQL-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_sql/)        | [🔀 ![Random](https://img.shields.io/badge/Random-E0507A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_random/)    | [⚙️ ![Config](https://img.shields.io/badge/Config-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_config/)  | [🤖 ![AI](https://img.shields.io/badge/AI-A0522D?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_ai/)                      | [🪵 ![Logging](https://img.shields.io/badge/Logging-E0692A?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_logging/)      | [🖥️ ![Terminal](https://img.shields.io/badge/Terminal-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_terminal/) | [🔤 ![Base64](https://img.shields.io/badge/Base64-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_base64/)                   |
| [📦 ![Bytes](https://img.shields.io/badge/Bytes-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_bytes/)        | [🔗 ![URL](https://img.shields.io/badge/URL-9B59D0?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_url/)                   | [💵 ![Money](https://img.shields.io/badge/Money-C98C1B?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_money/)        | [#️⃣ ![Hash](https://img.shields.io/badge/Hash-4C8BF5?style=flat-square)](https://sara-czasak.github.io/py-simple-wrap/docs/reference/easy_hash/)   |                                                                                                                                                           |                                                                                                                                                         |                                                                                                                                                                 |                                                                                                                                                                |                                                                                                                                                               |                                                                                                                                                                          |

### Legend:

|                 |                      |                   |                        |                  |                     |       |
|-----------------|----------------------|-------------------|------------------------|------------------|---------------------|-------|
| 🟦 Files & data | 🟩 Text & validation | 🟨 Numbers & math | 🟧 Time & control flow | 🟪 Web & visuals | 🟥 Fun & generators | 🟫 AI |

## Documentation

### [**HOME PAGE**](https://sara-czasak.github.io/py-simple-wrap/index)

| <div style="width:200px">📦 **[Module reference](https://sara-czasak.github.io/py-simple-wrap/modules/)**</div>                | <div style="width:200px">📃 **[Docs](https://sara-czasak.github.io/py-simple-wrap/docs/)**</div>                       | <div style="width:200px">🤝 **[Contributor hub](https://sara-czasak.github.io/py-simple-wrap/docs/contributor-hub/)**</div>                                                                                                 | <div style="width:200px">🗺️ **[Contributors quest](https://sara-czasak.github.io/py-simple-wrap/quest/)**</div>                                                                                                                                 |
|:-------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| More detailed overview of all modules, links to documentation and tutorials, in other words everything you need to get started | Here you will find everything you need! From references through module tutorials all the way to contributor tutorials! | templates for contributors. This project is meant to help everyone learn and grow, including beginner contributors. The goal is to try to help everyone succeed on there journey with py-simple-wrap and python as a whole. | This is a gamified hub for contributors. You can participate in challenges, earn achievements, join a guild (or two). Search through open issues faster and check your progress in the leaderboard. This is meant to make contributing more fun! |
 

</div>

---
<div align="center" markdown="1">

## py-simple-wrap *collaborators*

<table>
  <tr>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/atiqur-rahman-pro">
        <img src="https://github.com/atiqur-rahman-pro.png" width="100px;" alt="atiqur rahman"/><br />
        <sub><b>atiqur rahman</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/Cid-oe">
        <img src="https://github.com/Cid-oe.png" width="100px;" alt="Cid-oe"/><br />
        <sub><b>Cid-oe</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/SemTiOne">
        <img src="https://github.com/SemTiOne.png" width="100px;" alt="Dane Parin"/><br />
        <sub><b>Dane Parin</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/dave123981">
        <img src="https://github.com/dave123981.png" width="100px;" alt="David King"/><br />
        <sub><b>David King</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/gaoharimran29-glitch">
        <img src="https://github.com/gaoharimran29-glitch.png" width="100px;" alt="Gaohar Imran"/><br />
        <sub><b>Gaohar Imran</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/ghostfix-pm">
        <img src="https://github.com/ghostfix-pm.png" width="100px;" alt="ghostfix-pm"/><br />
        <sub><b>ghostfix-pm</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/jagjitkaur0000">
        <img src="https://github.com/jagjitkaur0000.png" width="100px;" alt="jagjitkaur0000"/><br />
        <sub><b>jagjitkaur0000</b></sub>
      </a>
    </td>
  </tr>
  <tr>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/sara-czasak">
        <img src="https://github.com/sara-czasak.png" width="100px;" alt="Sara Czasak"/><br />
        <sub><b>Sara Czasak</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="8.6%">
      <a href="https://github.com/Pratham2511">
        <img src="https://github.com/Pratham2511.png" width="100px;" alt="Pratham Pansare"/><br />
        <sub><b>Pratham Pansare</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="8.6%">
      <a href="https://github.com/Utkarsh3725">
        <img src="https://github.com/Utkarsh3725.png" width="100px;" alt="Utkarsh Arya"/><br />
        <sub><b>Utkarsh Arya</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/VidyavathiGK">
        <img src="https://github.com/VidyavathiGK.png" width="100px;" alt="Vidyavathi GK"/><br />
        <sub><b>Vidyavathi GK</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/Onion0121">
        <img src="https://github.com/Onion0121.png" width="100px;" alt="Yassin Azzouzi"/><br />
        <sub><b>Yassin Azzouzi</b></sub>
      </a>
    </td>
    <td align="center" valign="top" width="14.28%">
      <a href="https://github.com/Ymax27">
        <img src="https://github.com/Ymax27.png" width="100px;" alt="Ymax27"/><br />
        <sub><b>Ymax27</b></sub>
      </a>
    </td>
  </tr>
</table>

</div>
<br>

### 🐍 Python Compatibility

**py-simple-wrap v0.9.0+ requires Python 3.11 or newer.**

Supported versions: **Python 3.11, 3.12, 3.13, and 3.14.**

⚠️ **Python 3.10 support has been discontinued** due to security vulnerabilities affecting Pillow, a dependency used by the image utilities.

If you're using Python 3.10, please upgrade to a supported version before installing v0.9.0 or later.

For more details, see our [Security Policy](SECURITY.md).

<br>

```bash
pip install py-simple-wrap
```

This installs the lightweight core; a few modules need extra packages — see [Installation](QUICKSTART.md#installation) in the Quickstart for the full list.
 
```python
from py_simple import make_blank_file, miles_to_km, is_valid_email

make_blank_file("notes.txt")
print(miles_to_km(26.2))  # 42.16...
print(is_valid_email("hello@example.com"))  # True
```
 
> Full walkthrough in [QUICKSTART.md](QUICKSTART.md), or browse the **[documentation site](https://sara-czasak.github.io/py-simple-wrap/docs/)**.
 
<br>

## 😰 → 😎 See the difference
 
**The traditional way**
```python
import requests
from bs4 import BeautifulSoup

try:
    response = requests.get("https://github.com", timeout=10)
    response.raise_for_status()
    page = BeautifulSoup(response.content, "html.parser")
    title = page.title.string
except Exception as e:
    print("The site is down or address is invalid.")
```
 
**The py-simple-wrap way**

> Needs the `[web]` extra: `pip install py-simple-wrap[web]`

```python
from py_simple import get_page_title
 
print(get_page_title("https://github.com"))
```
 
<br>

## 🧩 Project tutorials

Want to see modules working together? Check out the [project-based tutorials](docs/tutorial/) — small, fun builds that combine 2+ modules into something you'd actually want to make.

## 📣 Share what you build

Made something with py-simple-wrap? Post about it and tag **#py-simple-wrap**. I'd love to see it!

## ⭐ If py-simple-wrap made something easier for you
 
Consider giving it a **star** — it helps other beginners find it. And if there's a function you wish existed, **fork it** and add it; this project grew because other people did exactly that.

## 📢 Got 2 minutes? Help shape what's next

Whether you've used one function or ten, your feedback decides what
gets built next. **[Take the 2-minute survey →](https://docs.google.com/forms/d/e/1FAIpQLSd3P4QCW9s-4izQlklN6q7kDGMlrgYe1I19ae6lAee5Mjbs5A/viewform?usp=header)**


<div align="center" markdown="1">

**[Contributing](CONTRIBUTING.md) · [Changelog](CHANGELOG.md) · [License](LICENSE.md)**
 
<sub>Built for beginners, grown by 80+ contributors ✨</sub>
 
</div>
