whywhytools
whywhytools is a lightweight Python package for reading and writing JSON, JSON Lines (.jsonl), and Pickle files. It provides simple and intuitive APIs for handling these common data formats.
Installation
The package can be installed via pip:
pip install whywhytools
For extended functionalities, optional dependencies are available.
To install dependencies for specific features:
pip install "whywhytools[torch]"
pip install "whywhytools[safetensors]"
To install all optional dependencies simultaneously:
pip install "whywhytools[all]"
Quickstart
JSON Lines (.jsonl)
Handle .jsonl files, supporting read, write, and append operations.
Write JSONL File
from whywhytools import write_jsonl
data = [
{'id': 'data-1', 'text': 'hello world'},
{'id': 'data-2', 'text': 'whywhytools is awesome'}
]
# Write to file
write_jsonl(data, 'output.jsonl') # [INFO] save to output.jsonl
# If file exists
write_jsonl(data, 'output.jsonl') # [INFO] output.jsonl already exists.
# Force overwrite existing file
write_jsonl(data, 'output.jsonl', force=True) # [INFO] save to output.jsonl
# Silent mode (not print any message)
write_jsonl(data, 'output.jsonl', force=True, silent=True)
Append to JSONL File
from whywhytools import append_jsonl
new_data = [{'id': 'data-3', 'text': 'new line'}]
append_jsonl(new_data, 'output.jsonl')
Read JSONL File
from whywhytools import read_jsonl
data = read_jsonl('output.jsonl')
print(data)
# [{'id': 'data-1', 'text': 'hello world'}, {'id': 'data-2', 'text': 'whywhytools is awesome'}, {'id': 'data-3', 'text': 'new line'}]
JSON (.json)
Handle standard .json files.
Write JSON File
from whywhytools import write_json
data = {'project': 'whywhytools', 'version': '0.1.0'}
# Write to file
write_json(data, 'config.json')
Read JSON File
from whywhytools import read_json
config = read_json('config.json')
print(config)
Pickle (.pkl)
Handle Python's pickle serialization format.
Save Pickle File
from whywhytools import save_pickle
model_data = {'weights': [0.1, 0.5, 0.9], 'bias': 0.01}
save_pickle(model_data, 'model.pkl')
Load Pickle File
from whywhytools import load_pickle
data = load_pickle('model.pkl')
print(data)
Plain Text (.txt or general text files)
Handle plain text files, supporting direct string reading or line-by-line list loading, as well as write and append operations.
Write Text File
from whywhytools import write_file
lines = [
"First line of the text file.",
"Second line is here."
]
# Write a list of strings to a file
write_file(lines, "document.txt")
# Write a single string
write_file("Just one line here.", "single_doc.txt")
Append to Text File
from whywhytools import append_file
# Append single or multiple lines
append_file("This is a newly appended line.", "document.txt")
Read Text File
from whywhytools import read_file
# Read entire file as a single string
content = read_file("document.txt")
print(content)
# Read file line by line into a list
lines = read_file("document.txt", lines=True)
print(lines)
PyTorch (.pt or .pth)
Handle PyTorch files. Compared to the original torch.save and torch.load, whywhytools provides built-in path type checking, automatic parent directory creation, and safety guards like force argument to prevent accidental overwrites.
Save PyTorch File
import torch
from whywhytools import save_pt
model_data = {'weights': torch.tensor([0.1, 0.5, 0.9])}
save_pt(model_data, 'model.pt')
Load PyTorch File
from whywhytools import load_pt
data = load_pt('model.pt')
print(data)
# Load safely with weights_only=True
safe_data = load_pt('model.pt', weights_only=True)
License
MIT
Metadata
Release files for whywhytools 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| whywhytools-1.2.0.tar.gz | 74.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| whywhytools-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.7 kB
Release files / whywhytools-1.2.0.tar.gz
| Download URL | whywhytools-1.2.0.tar.gz |
|---|---|
| Size | 74.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1f3bd9b97734a7606db724582c0890a9385da95d783d1521e003bd4c79d317e6
|
|
BLAKE2b-256 checksum How to use checksums |
80e69eb7fc1d1fb267bb3d773a7a25e57fdb880c6df955108d826257511950df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.
Transparency logRelease files / whywhytools-1.2.0-py3-none-any.whl
| Download URL | whywhytools-1.2.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3dd61ff1d556d6c3de5ee50f6438739df443883fffc3270f818ff18bf1c7991
|
|
BLAKE2b-256 checksum How to use checksums |
17a759c4a003d41fb90c6b939954597410bca5b6dcf8d1ec57cb849b563161f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.
Transparency log