Data URI manipulation made easy.
This isn’t very robust, and will reject a number of valid data URIs. However, it meets the most useful case: a mimetype, a charset, and the base64 flag.
Installation
$ pip install python-datauri
Parsing
>>> from datauri import DataURI
>>> uri = DataURI('data:text/plain;charset=utf-8;base64,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu')
>>> uri.mimetype
'text/plain'
>>> uri.charset
'utf-8'
>>> uri.is_base64
True
>>> uri.data
b'The quick brown fox jumped over the lazy dog.'
Note that DataURI.data will always return bytes. Use DataURI.text to get a string.
Creating from a string
>>> from datauri import DataURI
>>> made = DataURI.make('text/plain', charset='us-ascii', base64=True, data='This is a message.')
>>> made
DataURI('data:text/plain;charset=us-ascii;base64,VGhpcyBpcyBhIG1lc3NhZ2Uu')
>>> made.data
b'This is a message.'
Creating from a file
This is really just a convenience method.
>>> from datauri import DataURI
>>> png_uri = DataURI.from_file('somefile.png')
>>> png_uri.mimetype
'image/png'
>>> png_uri.data
b'\x89PNG\r\n...'
Serializing
DataURI is a subclass of str, so you can just use str() to print it out:
>>> from datauri import DataURI
>>> png_uri = DataURI.from_file('somefile.png')
>>> str(png_uri)
'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIA...'
Pydantic Support
You can use DataURI as a type for Pydantic:
from datauri import DataURI
from pydantic import BaseModel
class ProfilePicture(BaseModel):
image_data: DataURI
License
This code is released under the Unlicense.
Credits
This is a repackaging of this Gist originally written by Zachary Voase.
Metadata
Release files for python-datauri 3.0.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 | |
|---|---|---|---|
| python_datauri-3.0.2.tar.gz | 9.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_datauri-3.0.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 15.5 kB
Release files / python_datauri-3.0.2.tar.gz
| Download URL | python_datauri-3.0.2.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d77c37f1f734fc035de424e643464990b2b840e9b8c7c1817c11fca19b71eeb7
|
|
BLAKE2b-256 checksum How to use checksums |
7c3b8a9a2ec12424a8617678d663fa70de43d917d3590416d3a2b9c7fc065d5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.5
|
Release files / python_datauri-3.0.2-py2.py3-none-any.whl
| Download URL | python_datauri-3.0.2-py2.py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b365690a1d7d1b7777009eb11a86bd069db4f194e50f4f871a47302f0587c144
|
|
BLAKE2b-256 checksum How to use checksums |
bcb63332df034d7f322506f2267517b051cd3605e129ecc7f9d46a6fbd540279
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.5
|