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.2.tar.gz (60.2 kB view details)

Uploaded Source

Built Distributions

css_inline-0.14.2-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.2-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.2-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.2-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.2-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.2-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.2-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.2-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.2-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.2-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.2-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl (1.9 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

css_inline-0.14.2-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.2-cp37-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.7+ Windows x86-64

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

Uploaded CPython 3.7+ Windows x86

css_inline-0.14.2-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.2-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.2-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.2-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.2-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.2-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.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: css_inline-0.14.2.tar.gz
  • Upload date:
  • Size: 60.2 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.2.tar.gz
Algorithm Hash digest
SHA256 a9d068433c495f58407bfbf8a51558bab720b63099627baed352cdab580fd6a2
MD5 3b67f50dae754060b721fffe30e9bf31
BLAKE2b-256 e3ccd7d9ea50d7aab8d11e6fdc3054ce4d2f75d2bf42108b12c10e94f0d9d113

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 1928f23348748b797f4e55964e7f60c7a446d67a99df32a0e35111c9401abba1
MD5 fc7eac82b0a198e2c5b857ce61a75789
BLAKE2b-256 7c0d22ba59727eb15f8c4d3bfc87cd88fff13e1d49ad4f3b4a82a3c883f9da31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 a03783842f64d06290fa0084b94649cd0d23f0815e08e676866d113ab0ce31fa
MD5 f879266de1298af7a83d6008ac0355ba
BLAKE2b-256 14c455f0716a6cc4cffde53e2d1c26592ef999beb39f8b7ab7fccbf1be5b7605

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8c77eaf6dff55c54a2bc71e0c64dad76418021685518b0098ef1b6db6deeb741
MD5 6338f9d756e8d6ca6274550944455c64
BLAKE2b-256 8ff120da63ad7008a6cf2452109cbf302b76daac8f98b19f6e6b81dfddf37927

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 4fc27a86fb47fafd97de9f2d06ab3b85aac4f26f9633f8ad89dc5e08f900f58d
MD5 57aa42314cc7354e22f9e7f168a1030e
BLAKE2b-256 4798e2b2538b8a3b838be74c7ddc57ca354669aacbe257cf1325ab0d428e077b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 c3a82427333ad37a83aacee06a4d75126b27aa6798da6cdd183a0398af9d7f23
MD5 3b7bcfe2b2ca655e1c20701939ff8586
BLAKE2b-256 d8b1333eee111be6bf669d102e440cf549b88870c507ac573a5cc98de3c6aa68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d8d4ab59ee0a88936e74fb29ebde23cf0deeabfba7b4c455f28391c3aed7f5b7
MD5 1da03e2bd36abb07b227409ffef2049d
BLAKE2b-256 cc8388a94e46899e718f7afc1b13885fc97da953d97b5ad3ad919613fa092224

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 8dfea75bce3293856d282bbde0f725a564c3348e059325a52864ff80f27c03ca
MD5 caecce4494d24f40b1d6b69aec081681
BLAKE2b-256 f50bf82275679eaad03583ca461e6bf788ecd244545ab027201e2c049453e77b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 8790355ab0ae4468f9e89226cf85c67683b1a4d49185a76a57ab337462f59fb8
MD5 511b3cfefccb9b91dd2f60209978894e
BLAKE2b-256 744df7fc768bb0c79bd06a248575d7d15af9badb6f307f86a0c1efd73586f1d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c927c6ebb69eef312e784953f72630cd85c9e485dbbc656ecdacf42b131ccf25
MD5 4f77dea1fe2750973e2a95d7061c1f2f
BLAKE2b-256 9b2bb594eaec379dfb9f4768151ca6618ef1933781abba879370e6c10c405c7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 a67c4d9ff105a1a5fbb7469badb0f7f942cfefeb4fd63c0b273d726da3822db0
MD5 9e0b5188e29f860c5e1b550531159a2e
BLAKE2b-256 c8c8e935ed3a804aa7c432356f89466030d488674b89710a255d419f74b06778

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 91ef5e9199be318469433bc677289d8d1cc0e92cf946bce95a9b74c9ef692d6f
MD5 17db2f9cf09d7add4d6d1a78e96c0abf
BLAKE2b-256 65f8aa4d1992b25e54bb8085328a9d05ddb499647c63b188126df191bf19da11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1cbc0554daf5e52f370a5ed040c9aad600e882fc2b2887a6e068e9533273dbbd
MD5 9aedc61e395eb63c3aba664ef727a1a9
BLAKE2b-256 b139e81eeb44c2dbf27803539a2b02074415082802e75dfacf8998f2e183be3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 314619d6b65025e334a6d3e5d3a0e4c3e40dd8f2d8bc210094d8d84ffbce8731
MD5 1169f1384557a13912f1a1ed313b24ad
BLAKE2b-256 d08d1c3d605b1a901a00ff736cbb351ecad1a2ce72356966b3766399200c0fac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: css_inline-0.14.2-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.2-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 8a626fafde6fadf1ae8af7b35e01bc62f95588204b736d0471c5b96e93ea71c9
MD5 40eeef8c4917b48910b1eac443060cc1
BLAKE2b-256 6e662e8819c96074e71c001d2d80afa0c3ba3ab6a88d4d30ded807c556f06bee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 29be25a5ee501ea2a480ea2d99884255609e762133412061735c180cccd72e4d
MD5 b825cbde09548510dba04289560c0b11
BLAKE2b-256 a2f0709f0c5ebfc57a9c507e8233330d24636e78d3ce3ad83d8a51d0192dc8e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 acf11ec0f84d1adbf5f200117562097c8c41c6fb45b2b9fb8a38f155dbb6d3ce
MD5 eee9bf049146bd264d7cf3ef470bcad0
BLAKE2b-256 5501c4fa9079b4bfbe0d2e5b781324e2e8dd8a92276c5d352f870b14df82ad9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3fa751061dd6e8c2729e2da00d638a3f59f51b9b3a6bef656ea0eb667e22e813
MD5 3121d0809d762913e71d8989305abbc7
BLAKE2b-256 5ec7fd9fc5179bd94b38f9093218b97cc7f1b4cf781a6e18c2c94ce577b3f0e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-manylinux_2_24_armv7l.whl
Algorithm Hash digest
SHA256 e9afa918e8e1723b12a302b82a4d26edece4450609f5eb28caea37546e9bffd7
MD5 143936e0289e7a1392f8f91fef600ac9
BLAKE2b-256 847490ce4bc4e445a8923ee010eede489e9e2cc35b7bd9163b75b761d02a6531

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 aad19a49d6e920d76a94e740a3522283372fa1effd851005d414df89d988ab74
MD5 6cca82899af69d76cd06f6dfc3591a6a
BLAKE2b-256 fd726112e3d2791a0f2a403ff6a1ba0b68570530ec54bd146b116ffbef23ced4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99e12263608a6b55f734c4549fefc57072a9302ccd19a6aec3bba144c0e399b2
MD5 044cc2de72717e55dbfb7610526526e5
BLAKE2b-256 a9943ca47de070163dc1760b697087db363541bdb3f7d39d4d7bd2e974a48810

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 a125502e4a523cff30aa6670ec34a621d69d6eb7a520c71693a1ca18d796a4cc
MD5 4a9f87db5e3ca548b0557cf6d6b3519d
BLAKE2b-256 52dd887945aff74426bbbe7045fcb0fb8d0dc1447209b27f7c0c33ad53e72cc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for css_inline-0.14.2-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a046a8361da658808e31463b477916cc5ad1626b2fbc79f14a96ab2849b2efe1
MD5 6edf479a1d2feb3b6d0b76ca9f808ef9
BLAKE2b-256 0026bece23246f5a73aa6256b8b8fb9aa652ff7ae9028fde258e633d842943db

See more details on using hashes here.

File details

Details for the file css_inline-0.14.2-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.2-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 2e6ba66a4c48759c61679cfdd77962f842d4d69d3c1a3b1e6fdbd89fcd57ca6f
MD5 879f9d51da0dab7d904a8e426762933d
BLAKE2b-256 fc6e0063d4809ac517f8f884ca9808ff73994d1be57d9ba33ddacdbc2eab0ba2

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