Skip to main content

High-performance library for inlining CSS into HTML 'style' attributes

Project description

css_inline

build status pypi versions license codecov.io gitter

css_inline is a high-performance library for inlining CSS into HTML 'style' attributes.

This library is designed for scenarios such as preparing HTML emails or embedding HTML into third-party web pages.

For instance, the library transforms HTML like this:

<html>
  <head>
    <style>h1 { color:blue; }</style>
  </head>
  <body>
    <h1>Big Text</h1>
  </body>
</html>

into:

<html>
  <head></head>
  <body>
    <h1 style="color:blue;">Big Text</h1>
  </body>
</html>
  • Uses reliable components from Mozilla's Servo project
  • 10-400x faster than alternatives
  • Inlines CSS from style and link tags
  • Removes style and link tags
  • Resolves external stylesheets (including local files)
  • Optionally caches external stylesheets
  • Can process multiple documents in parallel
  • Works on Linux, Windows, and macOS
  • Supports HTML5 & CSS3
  • Tested on CPython 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and PyPy 3.7, 3.8, 3.9, 3.10.

Playground

If you'd like to try css-inline, you can check the WebAssembly-powered playground to see the results instantly.

Installation

Install with pip:

pip install css_inline

Pre-compiled wheels are available for most popular platforms. If not available for your platform, a Rust compiler will be needed to build this package from source. Rust version 1.65 or higher is required.

Usage

import css_inline

HTML = """<html>
<head>
    <style>h1 { color:blue; }</style>
</head>
<body>
    <h1>Big Text</h1>
</body>
</html>"""

inlined = css_inline.inline(HTML)
# HTML becomes this:
#
# <html>
# <head>
#    <style>h1 { color:blue; }</style>
# </head>
# <body>
#     <h1 style="color:blue;">Big Text</h1>
# </body>
# </html>

Note that css-inline automatically adds missing html and body tags, so the output is a valid HTML document.

Alternatively, you can inline CSS into an HTML fragment, preserving the original structure:

FRAGMENT = """<main>
<h1>Hello</h1>
<section>
<p>who am i</p>
</section>
</main>"""

CSS = """
p {
    color: red;
}

h1 {
    color: blue;
}
"""

inlined = css_inline.inline_fragment(FRAGMENT, CSS)
# HTML becomes this:
# <main>
# <h1 style="color: blue;">Hello</h1>
# <section>
# <p style="color: red;">who am i</p>
# </section>
# </main>

When there is a need to inline multiple HTML documents simultaneously, css_inline offers inline_many and inline_many_fragments functions. This feature allows for concurrent processing of several inputs, significantly improving performance when dealing with a large number of documents.

import css_inline

css_inline.inline_many(["<...>", "<...>"])

Under the hood, inline_many, spawns threads at the Rust layer to handle the parallel processing of inputs. This results in faster execution times compared to employing parallel processing techniques at the Python level.

Note: To fully benefit from inline_many, you should run your application on a multicore machine.

Configuration

For configuration options use the CSSInliner class:

import css_inline

inliner = css_inline.CSSInliner(keep_style_tags=True)
inliner.inline("...")
  • inline_style_tags. Specifies whether to inline CSS from "style" tags. Default: True
  • keep_style_tags. Specifies whether to keep "style" tags after inlining. Default: False
  • keep_link_tags. Specifies whether to keep "link" tags after inlining. Default: False
  • base_url. The base URL used to resolve relative URLs. If you'd like to load stylesheets from your filesystem, use the file:// scheme. Default: None
  • load_remote_stylesheets. Specifies whether remote stylesheets should be loaded. Default: True
  • cache. Specifies caching options for external stylesheets (for example, StylesheetCache(size=5)). Default: None
  • extra_css. Extra CSS to be inlined. Default: None
  • preallocate_node_capacity. Advanced. Preallocates capacity for HTML nodes during parsing. This can improve performance when you have an estimate of the number of nodes in your HTML document. Default: 32

You can also skip CSS inlining for an HTML tag by adding the data-css-inline="ignore" attribute to it:

<head>
  <style>h1 { color:blue; }</style>
</head>
<body>
  <!-- The tag below won't receive additional styles -->
  <h1 data-css-inline="ignore">Big Text</h1>
</body>

The data-css-inline="ignore" attribute also allows you to skip link and style tags:

<head>
  <!-- Styles below are ignored -->
  <style data-css-inline="ignore">h1 { color:blue; }</style>
</head>
<body>
  <h1>Big Text</h1>
</body>

Alternatively, you may keep style from being removed by using the data-css-inline="keep" attribute. This is useful if you want to keep @media queries for responsive emails in separate style tags:

<head>
  <!-- Styles below are not removed -->
  <style data-css-inline="keep">h1 { color:blue; }</style>
</head>
<body>
  <h1>Big Text</h1>
</body>

Such tags will be kept in the resulting HTML even if the keep_style_tags option is set to false.

If you'd like to load stylesheets from your filesystem, use the file:// scheme:

import css_inline

# styles/email is relative to the current directory
inliner = css_inline.CSSInliner(base_url="file://styles/email/")
inliner.inline("...")

You can also cache external stylesheets to avoid excessive network requests:

import css_inline

inliner = css_inline.CSSInliner(
    cache=css_inline.StylesheetCache(size=5)
)
inliner.inline("...")

Caching is disabled by default.

XHTML compatibility

If you'd like to work around some XHTML compatibility issues like closing empty tags (<hr> vs. <hr/>), you can use the following snippet that involves lxml:

import css_inline
from lxml import html, etree

document = "..."  # Your HTML document
inlined = css_inline.inline(document)
tree = html.fromstring(inlined)
inlined = etree.tostring(tree).decode(encoding="utf-8")

Performance

css-inline is powered by efficient tooling from Mozilla's Servo project and significantly outperforms other Python alternatives in terms of speed. Most of the time it achieves over a 10x speed advantage compared to the next fastest alternative.

Here is the performance comparison:

Size css_inline 0.14.1 premailer 3.10.0 toronado 0.1.0 inlinestyler 0.2.5 pynliner 0.8.0
Basic 230 B 6.54 µs 127.62 µs (19.51x) 657.50 µs (100.52x) 1.02 ms (157.01x) 1.17ms (179.64x)
Realistic-1 8.58 KB 134.54 µs 1.40 ms (10.42x) 15.81 ms (117.54x) 26.37 ms (196.04x) 52.77 ms (392.29x)
Realistic-2 4.3 KB 82.37 µs 2.78 ms (33.80x) ERROR 17.71 ms (215.01x) ERROR
GitHub page 1.81 MB 223.85 ms 25.04 s (111.90x) ERROR ERROR ERROR

The "Basic" case was obtained by benchmarking the example from the Usage section. Note that the toronado, inlinestyler, and pynliner libraries both encountered errors when used to inline CSS in the last scenario.

The benchmarking code is available in the benches/bench.py file. The benchmarks were conducted using the stable rustc 1.78, Python 3.11.7 on M1 Max.

Comparison with other libraries

Besides performance, css-inline differs from other Python libraries for CSS inlining.

  • Generally supports more CSS features than other libraries (for example, toronado and pynliner do not support pseudo-elements);
  • It has fewer configuration options and is not as flexible as premailer;
  • Works on fewer platforms than LXML-based libraries (premailer, inlinestyler, toronado, and optionally pynliner);
  • Does not have debug logs yet;
  • Supports only HTML 5.

Further reading

If you want to know how this library was created & how it works internally, you could take a look at these articles:

License

This project is licensed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

css_inline-0.14.3.tar.gz (60.5 kB view details)

Uploaded Source

Built Distributions

css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

css_inline-0.14.3-cp37-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.7+ Windows x86-64

css_inline-0.14.3-cp37-abi3-win32.whl (1.4 MB view details)

Uploaded CPython 3.7+ Windows x86

css_inline-0.14.3-cp37-abi3-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.7+ musllinux: musl 1.2+ x86-64

css_inline-0.14.3-cp37-abi3-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.7+ musllinux: musl 1.2+ ARMv7l

css_inline-0.14.3-cp37-abi3-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.7+ musllinux: musl 1.2+ ARM64

css_inline-0.14.3-cp37-abi3-manylinux_2_24_armv7l.whl (1.8 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.24+ ARMv7l

css_inline-0.14.3-cp37-abi3-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.24+ ARM64

css_inline-0.14.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

css_inline-0.14.3-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (1.8 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.12+ i686

css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.7+ macOS 10.12+ x86-64

css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (3.5 MB view details)

Uploaded CPython 3.7+ macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64

File details

Details for the file css_inline-0.14.3.tar.gz.

File metadata

  • Download URL: css_inline-0.14.3.tar.gz
  • Upload date:
  • Size: 60.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for css_inline-0.14.3.tar.gz
Algorithm Hash digest
SHA256 6cc37e956d6c44ad2e0c230d0d111c7f61a47117bab179f6ab59f23bf33b1caa
MD5 299b36dcdad203e34508da46354c996e
BLAKE2b-256 2a1875d6ec563fa7a82e6979075bce6efe64e50e7a8c02c823e0623db10411d0

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 d68929e9c25c81fc6aafd6503e67ea055f9aeaa63c2fb52c679d688091b92ea0
MD5 460afc854dce1b06dbe622e953a1154c
BLAKE2b-256 21a1e9a2bd5749b375b229d8497d5601980b21ad5c9577d834dce711dd7eb65a

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 fab7e280327dd1b10b1ee62ee43a338ca45f7a3e104c7d52d93c4f187bcced55
MD5 e18206968220ddb4170b353e9f9c363a
BLAKE2b-256 5a50fe28358906acfe7f521c68b1fbf816ff2912f8db14cbe805d1478072454d

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e0444eebbf09bd40e6e6b880a82cd3a9828a0d185535f01f16d716bdc8322a74
MD5 01ac19031dbffbc791fed7b6dd8d4689
BLAKE2b-256 af52a6e2859bfacf7047b7ac23104741dd9161427b7f13608a385ecf018ccafb

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 c74eee416a0dd5d4ae318abf68c55b1fc43ba2449b4fb6a9dd2a13cc181e0b6a
MD5 accda4c84bcd77239dbef86754362a7e
BLAKE2b-256 45a8ebabf062f949e700c15e1cca8019c2c9fd0e1844846b3c8d54b56c65094b

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 8b3e9066bf83cbc033f9ec09721f32ea5abf7b7041f6182456855f43b74984ca
MD5 09b4e286d2d381f59a2a1da733764656
BLAKE2b-256 05a5a7480c6eae61dfc6ca5b9f5890e32887984e2b318f2d4cbe56becba7b9aa

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e3ef9f7a808b00e79c58db5c2942da50fc4ffb60f9457025ddaaa8f0df520f96
MD5 be6170107f746a7dcd0577b780bf7e48
BLAKE2b-256 abc99ea71107e23363065ac125e847787f1e72e6bfe1fb21133e864bbd2c25fe

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 d4a6808a6a2ea33c4ba3c19f5ff6f82cccebca9cda199eb9c4e234f6b98bac62
MD5 135fbf2876fb64b3d5ae07760b08ab8c
BLAKE2b-256 6112c5f92e0597c99f87f10c2042fecd99319d03d1811923452dd5a105b22085

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 ca865a4691830f3dbd86691192f6064cb25f7f05c91a9a824ea846076b3f3867
MD5 c809fbfce4fa3d6fa1fda840718956cf
BLAKE2b-256 0c243dbd299ef2e10fb851b65a89eb89614653958518b83bdd9275b0cdf7b2db

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 263e85d9e0d47702cce3eeaccef8ab34e24dc0697d27d950261ec69f368ab5b3
MD5 7ae7990b980bac21377762223d8256c0
BLAKE2b-256 cb4ced13471b23b535c508d223e4206d7f6cccb3da584023b5d2ecd9b2a1d50b

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 61460fc4b551fe551818100d1ecaf7c041adb7bb386edafe99c36b103fde99e7
MD5 eb7a68386cf3adb9111dc24a3de28813
BLAKE2b-256 dbf5c7fc7ccb984166dc766159e105261b784ee96cb85acd29683fd4140dc88e

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 9a1a446a9ccd84900a2c0e0811cd28aca5bb9d0e27ef4109cbf2948eb6a11379
MD5 a3302dc53da89dcb576e9954df4bb6fe
BLAKE2b-256 b56b6b0efc14258565b897b49e2d32de68e956437c7ece79d39a2a4aa7111e8f

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c1150308e5a5856b89fa6a62f584e3f6764c742be930347513f9128ee93b2bdf
MD5 9fae717eb555c9cd27193e9cde33254a
BLAKE2b-256 2e32730730ec7d9bfcdf3dce492be96db8daee4344a6bb42d9fd151cfff7499d

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7e3722d259e0b54bce323f4c7a73226237a3c067760b02d09ca5a25a7af1d678
MD5 c37ea6bc06af7b1841474effd5642b25
BLAKE2b-256 deee6998fe263633c044843b925d941ae31e45a8ecdc0457df87633e476ceda3

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-win32.whl.

File metadata

  • Download URL: css_inline-0.14.3-cp37-abi3-win32.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 05e0f299c9f7d5b2821363bcb196de4d7adf5c71c42a98eb102660a0f8f483ea
MD5 f9b070ca24559fc40a8b75ba239d716c
BLAKE2b-256 ca35958b013b4e943c9e7fdf106312912ac23cc80b20c777118c28dffd29ee84

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7300cccd424dd7fcffadc5c104d1ccb257e00e7086c64b7472663c4f9e67d504
MD5 c9e67c06445db24c814e4802836e7e1d
BLAKE2b-256 175f9a9ea23f75b1c937c1bca75b686ae2e76ba8fa7ddf3fbcf4c471fd596546

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ac5ff1a5d24213ef4f6a008452fd6965d68147ebd6081ca64929ea22e5a81e7f
MD5 1762ad83799271f9e4fcb774bf75ae32
BLAKE2b-256 a3cf66facc1eeeea8b873563492905fc3cab5e6e5bc62550c49b7b4d91a91430

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d6895b673439e0e40181ebd05cfce52ca3650f8aa56d0d378b169c1c1639407d
MD5 84d4ea1dde7a8f36ae4fa9f90fc55a3c
BLAKE2b-256 8186230ac6c423158204c62625f30bf076aacd3a63ae38927843f460edaa5379

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-manylinux_2_24_armv7l.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-manylinux_2_24_armv7l.whl
Algorithm Hash digest
SHA256 8f65695b5efac1089bacca252e975829939aa0e074ee4847d4dfe3f85add5d77
MD5 57379fb2002bd911e1d8584a815d5114
BLAKE2b-256 384107b4e200a3d418a81d9d3610e2fd7f84954ae964191807ae49ea4ff3c7a0

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 d255a4d4c3948e22ec741af88707e1371b54b63993cd52da54296a383373c60b
MD5 c95b16b0447315e4f89d9d06901750ae
BLAKE2b-256 079817af0c3f94366c6184295292d3683d9f776aa0f56a2016bc487034c40a1f

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 064afe93854e95636adf1e91483b82da6a9544d1ec1a6fe29694c718f755923a
MD5 5fd7825d49aa0a1619afdf1348c6a5aa
BLAKE2b-256 618cf60167d72c9a40d49e2ca82f65fd19e0b3d0aa3fe1fd92477f396f2eb48c

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 8a9a677817f4a4ec121df3ded7f85fb3af3102e7cde8e4875822090fc575113f
MD5 931f70d999e14ebb10bfebc600c535f3
BLAKE2b-256 a69c942866479e26f500cc5b483ac5570b24a1c990e4141c40c747657e320025

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1e567cdc3f0f9aba8117323b24ac4e122d311f0ef02a1138f478fd274f41e690
MD5 13a5b01bcb73b9109efd23bd6619cd30
BLAKE2b-256 4cbf3e751d9ca6f1fdce8de7802e0719031916cf6113821fcb1d488d4354e385

See more details on using hashes here.

File details

Details for the file css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for css_inline-0.14.3-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 591cb22a453815552bae0fb5f78d324e0b8dd0303987b3941e41922b7ba7cd7f
MD5 e32f4988c177dda59d2effed0f99d9f6
BLAKE2b-256 0cab3b2df2f99e4ec92260de7e19e67fec871b2643fcbf4f3d93fa0132037b4e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page