Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
The missing Python utility to read and write compressed JSONs.
The library is loosely based on the compress_pickle library.
As usual, just download it using pip:
pip install compress_json
The compression modes, detected automatically by the file name, are gzip, bz2, and lzma (or xz), with the notable exception of zip which seems difficult to integrate into the JSON pipeline.
The library is extremely easy to use:
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(D, "filepath.json.gz") # for a gzip file
compress_json.dump(D, "filepath.json.bz") # for a bz2 file
compress_json.dump(D, "filepath.json.lzma") # for a lzma file
compress_json.dump(D, "filepath.json.xz") # for a lzma file
D1 = compress_json.load("filepath.json.gz") # for loading a gzip file
D2 = compress_json.load("filepath.json.bz") # for loading a bz2 file
D3 = compress_json.load("filepath.json.lzma") # for loading a lzma file
D3 = compress_json.load("filepath.json.xz") # for loading a lzma file
If it happens that you have to load or dump a JSON object with a custom extension, you can specify the compression mode by passing the compression
parameter to the load
and dump
methods:
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(D, "filepath.custom_extension1", compression="gzip") # for a gzip file
compress_json.dump(D, "filepath.custom_extension2", compression="bz2") # for a bz2 file
compress_json.dump(D, "filepath.custom_extension3", compression="lzma") # for a lzma file
D1 = compress_json.load("filepath.custom_extension1", compression="gzip") # for loading a gzip file
D2 = compress_json.load("filepath.custom_extension2", compression="bz2") # for loading a bz2 file
D3 = compress_json.load("filepath.custom_extension3", compression="lzma") # for loading a lzma file
assert D == D1 == D2 == D3
The library makes available, other than the usual load
and dump
from the JSON library, the methods local_load
and local_dump
, which let you load and dump files in the same directory as wherever you are calling them, by using the call stack.
This can be useful, especially when loading files within packages.
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.local_dump(D, "filepath.json.gz") # for a gzip file
compress_json.local_dump(D, "filepath.json.bz") # for a bz2 file
compress_json.local_dump(D, "filepath.json.lzma") # for a lzma file
D1 = compress_json.local_load("filepath.json.gz") # for loading a gzip file
D2 = compress_json.local_load("filepath.json.bz") # for loading a bz2 file
D3 = compress_json.local_load("filepath.json.lzma") # for loading a lzma file
assert D == D1 == D2 == D3
Sometimes you need to load a compressed JSON file a LOT of times, and you may want to put this document in a cache or something of the sort. Fortunately, we already provide this option for you:
import compress_json
# The first time you load the file, it will be cached in RAM
D1 = compress_json.load(
"filepath.json.gz",
use_cache=True
)
# The second time you load the file, it will be loaded from the cache
D2 = compress_json.local_load(
"filepath.json.gz",
use_cache=True
)
assert D1 == D2
You can pass parameters to either the chosen compression mode or the JSON library.
With the json_kwargs
parameter, you can specify any of the kwargs that should be forwarded to the JSON library method, which you can obtain for your Python version by running help(json.dump)
and help(json.load)
, depending on whether you are dumping or loading the JSON object.
Similarly, with the compression_kwargs
parameter, you can specify any parameter that has to be forwarded to the compression library that you intend to use, whether that is lzma
, gzip
, or bz2
, and as per JSON will depend on which version you have installed.
Whether you are dumping or loading a compressed JSON object, you can get the list of parameters you have available to forward to the compression method by running help(lzma.open)
, help(gzip.open)
, or help(bz2.open)
, respectively.
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(
D, "filepath.json.gz",
compression_kwargs={
"compresslevel": 9 # The kwargs for gzip
},
json_kwargs={
"indent": 4 # The kwargs for json
}
)
D4 = compress_json.load(
"filepath.json.gz",
compression_kwargs={
"compresslevel": 9 # The kwargs for gzip
},
json_kwargs={} # The kwargs for json
)
assert D == D4
The library is released under the MIT license.
FAQs
The missing Python utility to read and write large compressed JSONs.
We found that compress-json demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.