Newline Tools
File processing utilities for working with massive datasets.
Installation
pip install newline-tools
CLI Usage
The newline command provides several subcommands:
newline <command> [options]
shuffle
Shuffle lines in a file:
newline shuffle <input_file> <output_file> [-b BUFFER_SIZE] [--progress] [--include_empty] [-r ROUNDS] [--seed SEED]
Options:
-b, --buffer_size: Buffer size in bytes (default: 1GB)--progress: Show progress bars during shuffling--include_empty: Include empty lines during shuffling (default: ignore empty lines)-r, --rounds: Number of shuffling rounds (default: 1)--seed: Seed for random number generator (for reproducibility)
dedupe
Remove duplicate lines:
newline dedupe <input_file> <output_file> [--progress] [--error_ratio ERROR_RATIO]
Options:
--progress: Show progress bar during deduplication--error_ratio: Error ratio for the Bloom filter (default: 1e-5)
split
Split a file into parts:
newline split <input_file> <output_prefix> (-n NUM_PARTS | -s SIZE | -p PROPORTIONS) [--progress]
Options:
-n, --num_parts: Number of parts to split into-s, --size: Size of each part (e.g., '100MB', '1GB')-p, --proportions: Split by proportions--progress: Show progress bar during splitting
Examples:
newline split input.txt output_prefix -n 5
newline split input.txt output_prefix -s 100MB
newline split input.txt output_prefix -p 0.3 0.3 0.4
sample
Sample lines from a file:
newline sample <input_file> <output_file> (-n NUM_LINES | -p PERCENTAGE) [--progress] [--seed SEED]
Options:
-n, --num_lines: Number of lines to sample-p, --percentage: Percentage of lines to sample--progress: Show progress bar during sampling--seed: Seed for random number generator (for reproducibility)
Python Usage
from newline_tools import Shuffle, Dedupe, Split, Sample
# Shuffle
shuffler = Shuffle('input.txt', buffer_size=2**24, progress=True, ignore_empty=True, rounds=2, seed=42)
shuffler.shuffle('output.txt')
# Dedupe
deduper = Dedupe('input.txt', progress=True)
deduper.dedupe('output.txt', error_ratio=1e-5)
# Split
splitter = Split('input.txt', progress=True)
splitter.split_by_parts('output_prefix', 5)
# or
splitter.split_by_size('output_prefix', '100MB')
# or
splitter.split_by_proportion('output_prefix', [0.3, 0.3, 0.4])
# Sample
sampler = Sample('input.txt', 'output.txt', sample_size=10000, progress=True, seed=42)
sampler.sample(method='reservoir') # or 'index'
License
Dedicated to the public domain (CC0). Use as you wish.
Metadata
Release files for newline-tools 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| newline_tools-0.1.2.tar.gz | 10.9 kB | Without provenance | Details for newline_tools-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| newline_tools-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for newline_tools-0.1.2-py3-none-any.whl |
Total release size: 23.4 kB
Release files / newline_tools-0.1.2.tar.gz
| Download URL | newline_tools-0.1.2.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f6904b245861fac1b58791301fb46f8a0a49b3e127d729f254d05168f38c492e
|
|
BLAKE2b-256 checksum How to use checksums |
a9ba287e03a048c7dfc090c33ceed0abd525a1c2377ba87ebcb36314873422da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / newline_tools-0.1.2-py3-none-any.whl
| Download URL | newline_tools-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56916a7e6c3ee5b7f5e4c8d95b63caebb5b1dd3605e357f63b0e697269ba0a8d
|
|
BLAKE2b-256 checksum How to use checksums |
6f6beb9ca19891642433ddd3444883287d2419c63676aff10f595725d115700a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Security for newline-tools 0.1.2
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.