Skip to main content

ByteSize: A Simple Library for Byte Size Operations

ByteSize takes the pain out of data-size conversions—efficiently handle metric/binary units, block alignment, and more, all from a single, Pythonic interface.

pixi-badge Ruff Built with Material for MkDocs codecov

GitHub last commit GitHub issues GitHub pull requests

GitHub contributors GitHub stars GitHub forks

GitHub release (latest by date)

ByteSize is a Python library that simplifies operations with file sizes, offering dynamic unit conversions, string parsing, formatting, and more.

Features

  • Parse human-readable size strings (e.g., "10MB", "1.5GiB") into raw bytes.
  • Convert between metric (e.g., MB) and binary units (e.g., MiB).
  • Arithmetic operations while preserving byte units.
  • Block-aligned size calculations.
  • User-friendly formatting with customizable precision.
  • No dependencies, lightweight, and easy to use.

Installation

Clone the repository and install the package:

pip install pybytesize

Quickstart Guide

Creating a ByteSize Object

Create a ByteSize object from integers or human-readable strings.

By default, string representation will find the most suitable (binary) unit.

>>> from bytesize import ByteSize

>>> size = ByteSize(1_048_576)       # From an integer bytes 
>>> print(size)
1.00 MiB

>>> size = ByteSize("1_073_741_824MB")    # From a string
>>> print(size)
1.00 PiB

Unit Conversion

Access size in different units dynamically.

>>> size1 = ByteSize(1_073_741_824)
>>> print(size1.MB)       # Metric:
1.073741824
>>> print(size1.MiB)      # Binary
1.00

Advanced Usage

Block Alignment

Calculate the apparent size with block alignment.

>>> size = ByteSize(123_456_789)
>>> aligned_size = size.apparent_size(4096)
>>> print(aligned_size.bytes) 
123457536

Arithmetic with Sizes

Perform addition, subtraction, multiplication, and division.

>>> size3 = ByteSize("1GB") + ByteSize("512MB")
>>> print(size3)  # '1.50 GiB'
1.50 GiB

>>> size4 = ByteSize("1TB") - ByteSize("500GB")
>>> print(size4)  # '0.50 TiB'
0.50 TiB

Formatting Sizes

Customize formatting for specific units or precision.

>>> size = ByteSize(123_456_789)
>>> print(f"{size:.2f:MB}")  # '123.46 MB'
123.46 MB
>>> print(f"{size:.2f:GiB}") # '0.11 GiB'
0.11 GiB

Metadata

Release files for pybytesize 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pybytesize 0.8.1
File Size Uploaded Provenance
pybytesize-0.8.1.tar.gz 10.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pybytesize 0.8.1
File Interpreter ABI Platform
pybytesize-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / pybytesize-0.8.1.tar.gz

Download URL pybytesize-0.8.1.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cc72178fc1a30aec86bba875a928e6d2fa4a5856a7d919f570280f1a03fe9e31
BLAKE2b-256 checksum
How to use checksums
12ac72eeab5ece596ad6c03215bcff8e3a2fbf4e317a8af4ad7661a4c6265bd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.8

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 Apr 1, 2025.

Transparency log

Release files / pybytesize-0.8.1-py3-none-any.whl

Download URL pybytesize-0.8.1-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae182fa37a8f9e70e9cc0557ed1ff611b28079dbad6311a8634e778bc80ee99f
BLAKE2b-256 checksum
How to use checksums
05e8108d641e8cc7f1a2bb8745132ba433569dfff6301cac77a0942e2f7f1ae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.8

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 Apr 1, 2025.

Transparency log

Security for pybytesize 0.8.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pybytesize-0.8.1.tar.gz

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 Apr 1, 2025.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files Full provenance

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