Metadata-Version: 2.4 Name: pybase64 Version: 1.4.2 Summary: Fast Base64 encoding/decoding Home-page: https://github.com/mayeut/pybase64 Author: Matthieu Darbois License: BSD-2-Clause Project-URL: Source, https://github.com/mayeut/pybase64 Project-URL: Tracker, https://github.com/mayeut/pybase64/issues Project-URL: Documentation, https://pybase64.readthedocs.io/en/stable Keywords: base64 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Utilities Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: C Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Requires-Python: >=3.8 Description-Content-Type: text/x-rst License-File: LICENSE Dynamic: author Dynamic: classifier Dynamic: description Dynamic: description-content-type Dynamic: home-page Dynamic: keywords Dynamic: license Dynamic: license-file Dynamic: project-url Dynamic: requires-python Dynamic: summary .. SETUP VARIABLES .. |license-status| image:: https://img.shields.io/badge/license-BSD%202--Clause-blue.svg :target: https://github.com/mayeut/pybase64/blob/master/LICENSE .. |pypi-status| image:: https://img.shields.io/pypi/v/pybase64.svg :target: https://pypi.python.org/pypi/pybase64 .. |python-versions| image:: https://img.shields.io/pypi/pyversions/pybase64.svg .. |rtd-status| image:: https://readthedocs.org/projects/pybase64/badge/?version=stable :target: http://pybase64.readthedocs.io/en/stable/?badge=stable :alt: Documentation Status .. |gha-status| image:: https://github.com/mayeut/pybase64/workflows/Build%20and%20upload%20to%20PyPI/badge.svg :target: https://github.com/mayeut/pybase64/actions?query=workflow%3A%22Build+and+upload+to+PyPI%22 .. |codecov-status| image:: https://codecov.io/gh/mayeut/pybase64/branch/master/graph/badge.svg :target: https://codecov.io/gh/mayeut/pybase64/branch/master .. END OF SETUP Fast Base64 implementation ========================== |license-status| |pypi-status| |python-versions| |rtd-status| |gha-status| |codecov-status| This project is a wrapper on `libbase64 `_. It aims to provide a fast base64 implementation for base64 encoding/decoding. Installation ============ .. code:: pip install pybase64 Usage ===== ``pybase64`` uses the same API as Python base64 "modern interface" (introduced in Python 2.4) for an easy integration. To get the fastest decoding, it is recommended to use the ``pybase64.b64decode`` and ``validate=True`` when possible. .. code:: python import pybase64 print(pybase64.b64encode(b'>>>foo???', altchars='_:')) # b'Pj4_Zm9vPz8:' print(pybase64.b64decode(b'Pj4_Zm9vPz8:', altchars='_:', validate=True)) # b'>>>foo???' # Standard encoding helpers print(pybase64.standard_b64encode(b'>>>foo???')) # b'Pj4+Zm9vPz8/' print(pybase64.standard_b64decode(b'Pj4+Zm9vPz8/')) # b'>>>foo???' # URL safe encoding helpers print(pybase64.urlsafe_b64encode(b'>>>foo???')) # b'Pj4-Zm9vPz8_' print(pybase64.urlsafe_b64decode(b'Pj4-Zm9vPz8_')) # b'>>>foo???' .. begin cli A command-line tool is also provided. It has encode, decode and benchmark subcommands. .. code:: usage: pybase64 [-h] [-V] {benchmark,encode,decode} ... pybase64 command-line tool. positional arguments: {benchmark,encode,decode} tool help benchmark -h for usage encode -h for usage decode -h for usage optional arguments: -h, --help show this help message and exit -V, --version show program's version number and exit .. end cli Full documentation on `Read the Docs `_. Benchmark ========= .. begin benchmark Running Python 3.7.2, Apple LLVM version 10.0.0 (clang-1000.11.45.5), Mac OS X 10.14.2 on an Intel Core i7-4870HQ @ 2.50GHz .. code:: pybase64 0.5.0 (C extension active - AVX2) bench: altchars=None, validate=False pybase64._pybase64.encodebytes: 1734.776 MB/s (13,271,472 bytes -> 17,928,129 bytes) pybase64._pybase64.b64encode: 4039.539 MB/s (13,271,472 bytes -> 17,695,296 bytes) pybase64._pybase64.b64decode: 1854.423 MB/s (17,695,296 bytes -> 13,271,472 bytes) base64.encodebytes: 78.352 MB/s (13,271,472 bytes -> 17,928,129 bytes) base64.b64encode: 539.840 MB/s (13,271,472 bytes -> 17,695,296 bytes) base64.b64decode: 287.826 MB/s (17,695,296 bytes -> 13,271,472 bytes) bench: altchars=None, validate=True pybase64._pybase64.b64encode: 4156.607 MB/s (13,271,472 bytes -> 17,695,296 bytes) pybase64._pybase64.b64decode: 4107.997 MB/s (17,695,296 bytes -> 13,271,472 bytes) base64.b64encode: 559.342 MB/s (13,271,472 bytes -> 17,695,296 bytes) base64.b64decode: 143.674 MB/s (17,695,296 bytes -> 13,271,472 bytes) bench: altchars=b'-_', validate=False pybase64._pybase64.b64encode: 2786.776 MB/s (13,271,472 bytes -> 17,695,296 bytes) pybase64._pybase64.b64decode: 1124.136 MB/s (17,695,296 bytes -> 13,271,472 bytes) base64.b64encode: 322.427 MB/s (13,271,472 bytes -> 17,695,296 bytes) base64.b64decode: 205.195 MB/s (17,695,296 bytes -> 13,271,472 bytes) bench: altchars=b'-_', validate=True pybase64._pybase64.b64encode: 2806.271 MB/s (13,271,472 bytes -> 17,695,296 bytes) pybase64._pybase64.b64decode: 2740.456 MB/s (17,695,296 bytes -> 13,271,472 bytes) base64.b64encode: 314.709 MB/s (13,271,472 bytes -> 17,695,296 bytes) base64.b64decode: 121.803 MB/s (17,695,296 bytes -> 13,271,472 bytes) .. end benchmark .. begin changelog Changelog ========= 1.4.2 ----- - Update base64 library (Windows ARM64 Neon support) - Publish Python 3.14 wheels - Publish Linux riscv64 wheels - Publish Android wheels - Publish iOS wheels - Publish GraalPy wheels 1.4.1 ----- - Publish PyPy 3.11 wheels - Publish armv7l wheels 1.4.0 ----- - Publish python 3.13 wheels - Add support for free-threaded builds - Add MSYS2 support for C-extension - Better logging on base64 build failure when C-extension build is optional - Drop python 3.6 & 3.7 support 1.3.2 ----- - Update base64 library - PyPy: fix wrong outcome with non C-contiguous buffer 1.3.1 ----- - Add missing py.typed marker 1.3.0 ----- - Update base64 library - Add AVX512-VBMI implementation - Rework extension build to remove adherence on distutils - Publish python 3.12 wheels - Documentation now uses furo theme 1.2.3 ----- - Update base64 library - Publish python 3.11 wheels 1.2.2 ----- - Update base64 library - Fix C extension build on musl distros - Publish musllinux wheels 1.2.1 ----- - Publish PyPy 3.8 (pypy38_pp73) wheels 1.2.0 ----- - Release the GIL - Publish CPython 3.10 wheels - Drop python 3.5 support 1.1.4 ----- - Add macOS arm64 wheel 1.1.3 ----- - GitHub Actions: fix build on tag 1.1.2 ----- - Add PyPy wheels - Add aarch64, ppc64le & s390x manylinux wheels 1.1.1 ----- - Move CI from TravisCI/AppVeyor to GitHub Actions - Fix publication of Linux/macOS wheels 1.1.0 ----- - Add b64encode_as_string, same as b64encode but returns a str object instead of a bytes object - Add b64decode_as_bytearray, same as b64decode but returns a bytarray object instead of a bytes object - Speed-Up decoding from UCS1 strings 1.0.2 ----- - Update base64 library - Publish python 3.9 wheels 1.0.1 ----- - Publish python 3.8 wheels 1.0.0 ----- - Drop python 3.4 support - Drop python 2.7 support 0.5.0 ----- - Publish python 3.7 wheels - Drop python 3.3 support 0.4.0 ----- - Speed-up decoding when validate==False 0.3.1 ----- - Fix deployment issues 0.3.0 ----- - Add encodebytes function 0.2.1 ----- - Fixed invalid results on Windows 0.2.0 ----- - Added documentation - Added subcommands to the main script: * help * version * encode * decode * benchmark 0.1.2 ----- - Updated base64 native library 0.1.1 ----- - Fixed deployment issues 0.1.0 ----- - First public release .. end changelog