diff --git a/README.md b/README.md
index df5ce8d..ab87d9e 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,12 @@
-# smartutils
+# pyquicktools
-
-
-
-
-
-
+
+
+
+
+
**The Python utility toolbox you didn't know you needed — until now.**
@@ -15,7 +14,7 @@
**Perfect for GSoC, open-source contributors, backend engineers & interview projects**
- Built with **real-world backend failures** in mind — not toy examples.
+Built with **real-world backend failures** in mind — not toy examples.
[Installation](#-installation) • [Features](#-features) • [Quick Start](#-quick-start) • [Documentation](#-documentation) • [Contributing](#-contributing)
@@ -23,24 +22,24 @@
---
-## Why smartutils?
+## Why pyquicktools?
-Stop installing 5+ packages for basic Python tasks. **smartutils** combines the most-needed utilities into one lightweight, blazing-fast package:
+Stop installing 5+ packages for basic Python tasks. **pyquicktools** combines the most-needed utilities into one lightweight, blazing-fast package:
- **Auto-retry HTTP requests** with exponential backoff
+**Auto-retry HTTP requests** with exponential backoff
**Colorized debug printing** with file/line tracking
- **Async retry support** for `aiohttp`
+**Async retry support** for `aiohttp`
**Safe JSON parsing** that fixes common errors
**Minimal configuration** — works out of the box
-**Before smartutils:**
+**Before pyquicktools:**
```bash
pip install requests tenacity simplejson pprint colorama
```
-**After smartutils:**
+**After pyquicktools:**
```bash
-pip install smartutils
+pip install pyquicktools
```
---
@@ -48,7 +47,7 @@ pip install smartutils
## 📦 Installation
```bash
-pip install smartutils
+pip install pyquicktools
```
**Requirements:** Python 3.8+
@@ -62,7 +61,7 @@ pip install smartutils
Never lose data to flaky APIs again. Automatic retries with exponential backoff.
```python
-from smartutils import get, post
+from pyquicktools import get, post
# Auto-retry on failure (default: 3 retries)
response = get("https://api.example.com/data", retries=5, timeout=10)
@@ -90,7 +89,7 @@ response = post(
Say goodbye to boring `print()` statements. Get beautiful, informative debug output.
```python
-from smartutils import dprint
+from pyquicktools import dprint
user = {"name": "Suhani", "age": 22}
items = ["laptop", "phone", "charger"]
@@ -104,7 +103,7 @@ dprint(user, items)
```
**Features:**
-- **Color-coded** output (variables in cyan, values in green)
+- **Color-coded** output (variables in cyan, values in green)
- **Automatic file + line number** tracking
- **Named arguments** shown clearly
- **Minimal configuration** — just replace `print()` with `dprint()`
@@ -131,11 +130,11 @@ dprint(error_data, file=open("debug.log", "a"))
Supercharge your async code with automatic retries.
> ⚠️ **Note:** Async features require `aiohttp`.
-> Install with: `pip install smartutils aiohttp`
+> Install with: `pip install pyquicktools aiohttp`
```python
import asyncio
-from smartutils import async_get
+from pyquicktools import async_get
async def fetch_data():
# Auto-retry async requests
@@ -162,7 +161,7 @@ asyncio.run(fetch_data())
Parse JSON that's almost-but-not-quite valid. Fixes common errors automatically.
```python
-from smartutils import load_json
+from pyquicktools import load_json
# Handles trailing commas, comments, NaN, Infinity
data = load_json("""
@@ -180,7 +179,7 @@ print(data["age"]) # Output: 22 (int, not string!)
- Trailing commas in arrays/objects
- JavaScript-style comments (`//` and `/* */`)
- `NaN` and `Infinity` values
-- Optional smart typecasting for numeric strings
+- Optional smart typecasting for numeric strings
---
@@ -189,7 +188,7 @@ print(data["age"]) # Output: 22 (int, not string!)
### Example 1: Resilient API Calls
```python
-from smartutils import get, dprint
+from pyquicktools import get, dprint
try:
response = get(
@@ -209,7 +208,7 @@ except Exception as e:
```python
import asyncio
-from smartutils import async_get
+from pyquicktools import async_get
async def fetch_multiple():
urls = [
@@ -232,7 +231,7 @@ asyncio.run(fetch_multiple())
### Example 3: Parse Messy JSON
```python
-from smartutils import load_json
+from pyquicktools import load_json
# From API response with comments
messy_json = """
@@ -300,12 +299,12 @@ print(type(data["total"])) #
---
-## 🛠️ Advanced Usage
+## Advanced Usage
### Custom Retry Strategy
```python
-from smartutils import get
+from pyquicktools import get
response = get(
"https://api.example.com/data",
@@ -321,7 +320,7 @@ response = get(
### Logging with dprint
```python
-from smartutils import dprint
+from pyquicktools import dprint
# In production: disable colors for log files
with open("debug.log", "a") as log_file:
@@ -343,31 +342,31 @@ We love contributions! Here's how to get started:
### Development Setup
```bash
-git clone https://github.com/Suhani1234-5/smartutils.git
-cd smartutils
+git clone https://github.com/Suhani1234-5/pyquicktools.git
+cd pyquicktools
pip install -e ".[dev]"
pytest
```
---
-## License
+## License
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
---
-## Star History
+## Star History
-If you find this project useful, please consider giving it a ⭐ on [GitHub](https://github.com/suhani1234-5/smartutils)!
+If you find this project useful, please consider giving it a ⭐ on [GitHub](https://github.com/Suhani1234-5/pyquicktools)!
---
-## 📧 Contact
+## Contact
**Suhani Garg**
📧 suhanigarg59@gmail.com
- [GitHub](https://github.com/Suhani1234-5)
+[GitHub](https://github.com/Suhani1234-5)
---
@@ -375,6 +374,6 @@ If you find this project useful, please consider giving it a ⭐ on [GitHub](htt
**Made with ❤️ by Suhani Garg**
-[⬆ Back to Top](#-smartutils)
+[⬆ Back to Top](#-pyquicktools)
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index d7fe9ab..bc60538 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,9 +3,9 @@ requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
-name = "smartutils"
-version = "0.1.1"
-description = "Smart Python utilities: retry-safe HTTP, colorized debug prints, async retries, safe JSON"
+name = "pyquicktools"
+version = "0.1.0"
+description = "Smart Python utilities for HTTP retries, logging control, async retries, and diagnostics CLI"
readme = "README.md"
license = "MIT"
@@ -13,7 +13,7 @@ authors = [
{ name = "Suhani Garg", email = "suhanigarg59@gmail.com" }
]
-keywords = ["http", "retry", "debug", "async", "utilities"]
+keywords = ["python", "http", "retry", "requests", "cli", "utilities", "logging", "devtools"]
requires-python = ">=3.8"
dependencies = [
@@ -28,6 +28,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
+ "License :: OSI Approved :: MIT License",
]
[project.optional-dependencies]
@@ -36,6 +37,6 @@ async = [
]
[project.urls]
-Homepage = "https://github.com/Suhani1234-5/smartutils"
-Repository = "https://github.com/Suhani1234-5/smartutils"
-Issues = "https://github.com/Suhani1234-5/smartutils/issues"
+Homepage = "https://github.com/Suhani1234-5/pyquicktools"
+Repository = "https://github.com/Suhani1234-5/pyquicktools"
+Issues = "https://github.com/Suhani1234-5/pyquicktools/issues"
diff --git a/smartutils/.gitignore b/pyquicktools/.gitignore
similarity index 100%
rename from smartutils/.gitignore
rename to pyquicktools/.gitignore
diff --git a/smartutils/__init__.py b/pyquicktools/__init__.py
similarity index 100%
rename from smartutils/__init__.py
rename to pyquicktools/__init__.py
diff --git a/smartutils/__main__.py b/pyquicktools/__main__.py
similarity index 100%
rename from smartutils/__main__.py
rename to pyquicktools/__main__.py
diff --git a/smartutils/debug_print.py b/pyquicktools/debug_print.py
similarity index 97%
rename from smartutils/debug_print.py
rename to pyquicktools/debug_print.py
index 4099471..74f19d6 100644
--- a/smartutils/debug_print.py
+++ b/pyquicktools/debug_print.py
@@ -16,7 +16,7 @@ def dprint(*args, prefix="debug", show_location=True, color="cyan"):
"""
Debug print with variable names, values, color and source location
"""
- if os.getenv("SMARTUTILS_DEBUG", "1") != "1":
+ if os.getenv("PYQUICKTOOLS_DEBUG", "1") != "1":
return
frame = inspect.currentframe().f_back
diff --git a/smartutils/doctor.py b/pyquicktools/doctor.py
similarity index 80%
rename from smartutils/doctor.py
rename to pyquicktools/doctor.py
index 9aab6db..1b562c3 100644
--- a/smartutils/doctor.py
+++ b/pyquicktools/doctor.py
@@ -4,10 +4,10 @@ def run_doctor():
import platform
import requests
- print("🩺 smartutils doctor report\n")
+ print("🩺 pyquicktools doctor report\n")
print(f"✔ Python version: {platform.python_version()}")
- print(f"✔ SMARTUTILS_LOG: {'ON' if os.getenv('SMARTUTILS_LOG', '1') == '1' else 'OFF'}")
+ print(f"✔ PYQUICKTOOLS_LOG: {'ON' if os.getenv('PYQUICKTOOLS_LOG', '1') == '1' else 'OFF'}")
try:
import requests
diff --git a/smartutils/http_retry.py b/pyquicktools/http_retry.py
similarity index 96%
rename from smartutils/http_retry.py
rename to pyquicktools/http_retry.py
index 6e761a1..884ffc3 100644
--- a/smartutils/http_retry.py
+++ b/pyquicktools/http_retry.py
@@ -9,12 +9,12 @@
# ------------------ LOGGER ------------------
def _get_logger(log_file=None):
- if os.getenv("SMARTUTILS_LOG", "1") != "1":
- logger = logging.getLogger("smartutils.http")
+ if os.getenv("PYQUICKTOOLS_LOG", "1") != "1":
+ logger = logging.getLogger("pyquicktools.http")
logger.addHandler(logging.NullHandler())
return logger
- logger = logging.getLogger("smartutils.http")
+ logger = logging.getLogger("pyquicktools.http")
if logger.handlers:
return logger
diff --git a/smartutils/safe_json.py b/pyquicktools/safe_json.py
similarity index 100%
rename from smartutils/safe_json.py
rename to pyquicktools/safe_json.py
diff --git a/tests/__init__.py b/tests/__init__.py
index da26ef1..18e073a 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,6 +1,6 @@
-from smartutils import dprint
+from pyquicktools import dprint
name = "Suhani"
age = 20
-dprint(name, age)
+dprint(name, age)
\ No newline at end of file
diff --git a/tests/test_debug.py b/tests/test_debug.py
index cecae26..de1cad1 100644
--- a/tests/test_debug.py
+++ b/tests/test_debug.py
@@ -1,4 +1,4 @@
-from smartutils import dprint
+from pyquicktools import dprint
def test_dprint_runs():
diff --git a/tests/test_http.py b/tests/test_http.py
index 92479bf..6466a48 100644
--- a/tests/test_http.py
+++ b/tests/test_http.py
@@ -1,5 +1,5 @@
import pytest
-from smartutils import get
+from pyquicktools import get
def test_get_success():
@@ -10,4 +10,4 @@ def test_get_success():
def test_get_retry_fail():
with pytest.raises(Exception):
- get("https://httpstat.us/500", retries=1)
+ get("https://httpstat.us/500", retries=1)
\ No newline at end of file
diff --git a/tests/test_jsonsafe.py b/tests/test_jsonsafe.py
index a2a666a..b017245 100644
--- a/tests/test_jsonsafe.py
+++ b/tests/test_jsonsafe.py
@@ -1,4 +1,4 @@
-from smartutils import load_json
+from pyquicktools import load_json
def test_safe_json():