Skip to main content

A lightweight Python package for easy reading and writing of JSON, JSONL, and Pickle files.

Project description

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

You can install this package using pip:

pip install whywhytools

To use PyTorch functionalities, you will need to install it with the torch optional dependency:

pip install whywhytools[torch]

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whywhytools-0.9.1.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whywhytools-0.9.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file whywhytools-0.9.1.tar.gz.

File metadata

  • Download URL: whywhytools-0.9.1.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for whywhytools-0.9.1.tar.gz
Algorithm Hash digest
SHA256 9d054a072c0f2436f183689babd2e1725dd0f0a28708a8cb993ba61a3531ee9b
MD5 eee999779d6205714da0e6bbc08a0bca
BLAKE2b-256 94dffc30f64700337c34206bdf251c381170eb375cdae34505e4d5473c61cd61

See more details on using hashes here.

Provenance

The following attestation bundles were made for whywhytools-0.9.1.tar.gz:

Publisher: publish_to_pypi.yaml on whywhybug/whywhytools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file whywhytools-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: whywhytools-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for whywhytools-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ce2daa0e0b9bc7ba0ec029b821168b10770e03db84b9e61b5695b03c196ca059
MD5 a3cb3aecb9d4a86638d22c746b1cdb74
BLAKE2b-256 7dc297770cb46f89a3643403a0e05680244232075c22a13ce98d200f439f7605

See more details on using hashes here.

Provenance

The following attestation bundles were made for whywhytools-0.9.1-py3-none-any.whl:

Publisher: publish_to_pypi.yaml on whywhybug/whywhytools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page