Skip to main content

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.

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)

Source distribution for newline-tools 0.1.2
File Size Uploaded
newline_tools-0.1.2.tar.gz 10.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for newline-tools 0.1.2
File Interpreter ABI Platform
newline_tools-0.1.2-py3-none-any.whl Python 3 none any Details

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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page