Add your description here
Project description
human errors
humans do make some errors, so we should show it to them, so that it can be fixed
usage:
json/orjson
from human_errors import json_dump
import orjson
try:
with open("config.json", "r") as file:
config = orjson.loads(file.read())
except orjson.JSONDecodeError as exc:
json_dump(exc, "config.json")
Output (error):
--> C:\Users\<user>\absolute\path\to\config.json:19:5
17 │ "path": "$DESKTOP"
18 │ }
╭╴19 │ {
│ │ ↑
│ 20 │ "name": "Pictures",
│ 21 │ "path": "$PICTURES"
╰────❯ unexpected character
tomllib (>=3.14) or toml
if you want to use tomllib, python >= 3.14 must be used so that the message and line + column numbers can be extracted.
from human_errors import toml_dump
import toml
try:
with open("pyproject.toml", "r") as file:
config = toml.loads(file.read())
except toml.TomlDecodeError as exc:
toml_dump(exc, "pyproject.toml")
Output (error):
--> C:\Users\<user>\path\to\pyproject.toml:9:26
7 │ { name = "<name>", email = "<email>" }
8 │ ]
╭╴ 9 │ requires-python = ">=3.12
│ │ ↑
│ 10 │ dependencies = [
│ 11 │ "rich>=14.2.0",
╰────❯ Unbalanced quotes
Base Renderer (Custom Errors)
For custom error handling or any file-based errors not covered by the built-in renderers:
from human_errors.base_renderer import dump
def validate_config(file_path: str):
with open(file_path, "r") as f:
for line_num, line in enumerate(f, start=1):
if "TODO" in line:
col = line.index("TODO") + 1
dump(
doc_path=file_path,
cause="TODO found in production config",
line_number=line_num,
column_number=col,
context=3,
extra=[
"Production configs should not contain TODO items",
"Please replace with actual values or remove this entry"
]
)
exit(1)
Output (error):
--> C:\Users\<user>\absolute\path\to\config.py:15:9
12 │ DATABASE_HOST = "localhost"
13 │ DATABASE_PORT = 5432
14 │
╭╴15 │ API_KEY = "TODO: add production key"
│ │ ↑
│ 16 │
│ 17 │ CACHE_ENABLED = True
│ 18 │ CACHE_TTL = 3600
╰─────❯ TODO found in production config
╭───────────────────────────────────────────────────────────╮
│ Production configs should not contain TODO items │
├───────────────────────────────────────────────────────────┤
│ Please replace with actual values or remove this entry │
╰───────────────────────────────────────────────────────────╯
more soon i guess
contributing
any extra data format must be in an extra, and also available in the all group
any contributions must pre-lint with ruff and ty
uv run ruff check --unsafe-fixes --fix
uv run ty check
adding support for pytest is also fine
( ̄︶ ̄)↗ give a star
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file human_errors-0.0.1.tar.gz.
File metadata
- Download URL: human_errors-0.0.1.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a68273437f5896b3ad7326a17006f4765984b131481a209715b894b20c9052c1
|
|
| MD5 |
bd076ccef0136d8d3bc4ae48fc96b319
|
|
| BLAKE2b-256 |
0868f484bec4cae6897842f3016b14e09d96aec1e12d4d63e751c3c14f79157a
|
File details
Details for the file human_errors-0.0.1-py3-none-any.whl.
File metadata
- Download URL: human_errors-0.0.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89f1da2fc7455e6b64a22c7f547a100dd03f86279ce0f320f80100dde9e64ade
|
|
| MD5 |
244f409e1395c5b957fe5e12fbfef6c0
|
|
| BLAKE2b-256 |
48516e4c44bca5c3c9d21e8e9755f47188ab127d0b78aab0cbcf81e02f108e5e
|