Skip to main content

css_inline

build status pypi versions license codecov.io gitter

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

Use it to prepare HTML emails or to embed HTML into third-party web pages.

It turns this HTML:

<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 components from Mozilla's Servo project
  • 18x to 1115x faster than premailer, the fastest Python alternative (see Performance)
  • Inlines CSS from style and link tags
  • Removes style and link tags
  • Resolves external stylesheets (including local files)
  • Caches external stylesheets (opt-in)
  • Processes multiple documents in parallel
  • Works on Linux, Windows, macOS and in the browser via Pyodide
  • Supports HTML5 & CSS3
  • Tested on CPython 3.10, 3.11, 3.12, 3.13, 3.14 and PyPy 3.11.

Playground

Try css-inline in the WebAssembly-powered playground.

Installation

Install with pip:

pip install css_inline

The PyPI name is css-inline; pip accepts css_inline too. Import it as css_inline.

PyPI ships pre-compiled wheels for:

  • Linux (glibc and musl): x86_64, aarch64, armv7; glibc also i686
  • macOS: x86_64, arm64
  • Windows: x64, x86
  • PyPy 3.11: Linux x86_64 and aarch64, macOS x86_64

On other platforms, pip builds the package from source, which requires Rust 1.85 or newer.

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><head>
#
# </head>
# <body>
#     <h1 style="color: blue;">Big Text</h1>
#
# </body></html>

inline adds missing html, head and body tags, so the output is a complete HTML document.

To inline CSS into an HTML fragment, use inline_fragment(html, css). Both arguments are required; css holds the stylesheet to apply. The output stays a fragment: no <html>, <head> or <body> wrapper. Use inline for full documents:

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)
# <main>
# <h1 style="color: blue;">Hello</h1>
# <section>
# <p style="color: red;">who am i</p>
# </section>
# </main>

To inline many documents at once, use inline_many or inline_many_fragments. Both process inputs in parallel and return a list of strings in input order. inline_many_fragments pairs htmls[i] with css[i].

Warning: if the lists differ in length, inline_many_fragments silently drops the extra items from the longer list. CSSInliner has the same two methods.

import css_inline

css_inline.inline_many(["<...>", "<...>"])
css_inline.inline_many_fragments(["<p>a</p>", "<p>b</p>"], ["p { color: red; }", "p { color: blue; }"])

inline_many processes inputs in parallel on a Rust thread pool (Rayon), so you don't need multiprocessing. The speedup scales with the number of CPU cores.

Configuration

Pass options to the CSSInliner class:

import css_inline

inliner = css_inline.CSSInliner(keep_style_tags=True)
inliner.inline("...")
  • inline_style_tags. Inline CSS from style tags. Default: True
  • keep_style_tags. Keep style tags after inlining. Default: False
  • keep_link_tags. Keep link tags after inlining. Default: False
  • keep_at_rules. Keep at-rules (starting with @) after inlining. Default: False
  • minify_css. Remove trailing semicolons and spaces between properties and values. Default: False
  • base_url. Base URL for resolving relative URLs. Use the file:// scheme to load stylesheets from the filesystem. Default: None
  • load_remote_stylesheets. Load stylesheets from link tags, over the network or from file:// paths. Default: True
  • cache. Cache for external stylesheets, for example StylesheetCache(size=5). Default: None
  • extra_css. Extra CSS to inline. Default: None
  • preallocate_node_capacity. Advanced. Number of HTML nodes to preallocate during parsing. Set it to your expected node count to avoid reallocations. Default: 32
  • remove_inlined_selectors. Remove inlined selectors from <style> blocks. Default: False
  • apply_width_attributes. Add width HTML attributes from CSS width properties on supported elements (table, td, th, img). Default: False
  • apply_height_attributes. Add height HTML attributes from CSS height properties on supported elements (table, td, th, img). Default: False
  • resolve_css_variables. Replace var() references with the values of the custom properties they refer to and drop the --* declarations. Default: False

To skip CSS inlining for an HTML tag, add the data-css-inline="ignore" attribute:

<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 same attribute on a link or style tag makes the inliner skip that stylesheet:

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

To keep a style tag in the output, add data-css-inline="keep". Use it for @media queries in responsive emails. The tag stays even with keep_style_tags=False.

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

At-rules can't go into style attributes, so the inliner removes them by default. Set keep_at_rules=True to keep them, for example @media queries for responsive emails, in a style tag while inlining everything else. The tag stays even with keep_style_tags=False.

<head>
  <!-- With keep_at_rules=True, "color: blue" goes into <h1> and @media stays in <style> -->
  <style>h1 { color: blue; } @media (max-width: 600px) { h1 { font-size: 18px; } }</style>
</head>
<body>
  <h1>Big Text</h1>
</body>

minify_css=True removes trailing semicolons and spaces between properties and values in inlined styles.

<head>
  <!-- With minify_css=True, the <h1> will have `style="color:blue;font-weight:bold"` -->
  <style>h1 { color: blue; font-weight: bold; }</style>
</head>
<body>
  <h1>Big Text</h1>
</body>

To load stylesheets from the filesystem, use the file:// scheme. Standard URL parsing reads file://styles/email/ as host styles and path /email/. css-inline deviates from the standard here: for a file:// URL with a host, it drops the file:// prefix and treats styles/email/ as a path relative to the current directory. With either form, <link href="main.css"> resolves against the base, so keep the trailing slash: without it, main.css replaces the last segment (styles/main.css).

import css_inline

# Absolute directory: three slashes
inliner = css_inline.CSSInliner(base_url="file:///srv/app/styles/email/")
inliner.inline("...")

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

To avoid repeated network requests, cache external stylesheets:

import css_inline

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

size is the maximum number of stylesheets in the cache and must be greater than zero; otherwise StylesheetCache raises InlineError. When it is full, the least recently used entry is evicted. Caching is off by default.

Errors

Inlining raises css_inline.InlineError, a ValueError subclass, when a stylesheet fails to load (missing file, network error) or to parse. An invalid base_url raises a plain ValueError.

import css_inline

try:
    css_inline.inline('<link href="missing.css" rel="stylesheet">')
except css_inline.InlineError as exc:
    print(exc)  # Missing stylesheet file: missing.css

XHTML compatibility

css-inline outputs HTML5, so void tags stay unclosed (<hr>, not <hr/>). For XHTML output, re-serialize with 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 18x to 1115x faster than the next fastest Python inliner, premailer, on the inputs below:

Size css_inline 0.23.1 premailer 3.10.0 toronado 0.1.0 pynliner 0.8.0
Basic 230 B 4.10 µs 111.34 µs (27.15x) 633.87 µs (154.58x) 1.08 ms (263.88x)
Realistic-1 8.58 KB 71.52 µs 1.31 ms (18.26x) 14.30 ms (200.02x) 15.21 ms (212.69x)
Realistic-2 4.30 KB 40.38 µs 1.67 ms (41.33x) ERROR ERROR
GitHub page 1.81 MB 11.22 ms 12.51 s (1114.78x) ERROR ERROR

toronado and pynliner fail on Realistic-2 and the GitHub page because those inputs contain CSS they do not support: toronado raises ExpressionError: Pseudo-elements are not supported., pynliner raises Exception: No match was found. We're done or something is broken. inlinestyler 0.2.5 is not in the table: it crashes with current lxml ('CSSSelector' object has no attribute 'evaluate').

Inputs live in benchmarks/benchmarks.json: Basic is simple, Realistic-1 is big_email_1, Realistic-2 is big_email_2, GitHub page is big_page. Benchmark code: benches/bench.py (pytest-benchmark, mean time). Environment: rustc 1.99 (stable), Python 3.14.5, Ryzen 9 9950X.

Comparison with other libraries

Compared to other Python inliners, css-inline:

  • Supports more CSS features. For example, toronado and pynliner don't support pseudo-elements.
  • Has fewer configuration options than premailer.
  • Has no debug logs.
  • Supports only HTML5.

Further reading

How the library works internally:

License

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

Metadata

Release files for css-inline 0.23.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 css-inline 0.23.1
File Size Uploaded Provenance Actions
css_inline-0.23.1.tar.gz 115.6 kB Without provenance Details for css_inline-0.23.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for css-inline 0.23.1
File Actions
css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.24+ x86-64 Details for css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_x86_64.whl
css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.24+ ARM64 Details for css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
css_inline-0.23.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 macOS 10.12+ x86-64 Details for css_inline-0.23.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
css_inline-0.23.1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for css_inline-0.23.1-cp310-abi3-win_amd64.whl
css_inline-0.23.1-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details for css_inline-0.23.1-cp310-abi3-win32.whl
css_inline-0.23.1-cp310-abi3-pyemscripten_2026_0_wasm32.whl CPython 3.10 abi3 PyEmscripten 2026.0+ WebAssembly Details for css_inline-0.23.1-cp310-abi3-pyemscripten_2026_0_wasm32.whl
css_inline-0.23.1-cp310-abi3-pyemscripten_2025_0_wasm32.whl CPython 3.10 abi3 PyEmscripten 2025.0+ WebAssembly Details for css_inline-0.23.1-cp310-abi3-pyemscripten_2025_0_wasm32.whl
css_inline-0.23.1-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details for css_inline-0.23.1-cp310-abi3-musllinux_1_2_x86_64.whl
css_inline-0.23.1-cp310-abi3-musllinux_1_2_armv7l.whl CPython 3.10 abi3 Linux musl 1.2+ ARMv7l Details for css_inline-0.23.1-cp310-abi3-musllinux_1_2_armv7l.whl
css_inline-0.23.1-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details for css_inline-0.23.1-cp310-abi3-musllinux_1_2_aarch64.whl
css_inline-0.23.1-cp310-abi3-manylinux_2_24_armv7l.whl CPython 3.10 abi3 Linux glibc 2.24+ ARMv7l Details for css_inline-0.23.1-cp310-abi3-manylinux_2_24_armv7l.whl
css_inline-0.23.1-cp310-abi3-manylinux_2_24_aarch64.whl CPython 3.10 abi3 Linux glibc 2.24+ ARM64 Details for css_inline-0.23.1-cp310-abi3-manylinux_2_24_aarch64.whl
css_inline-0.23.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details for css_inline-0.23.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
css_inline-0.23.1-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl CPython 3.10 abi3 Linux glibc 2.12+ x86-32 Details for css_inline-0.23.1-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details for css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.whl
css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details for css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Total release size: 30.3 MB

Release files / css_inline-0.23.1.tar.gz

Download URL css_inline-0.23.1.tar.gz
Size 115.6 kB
Tags Source
SHA-256 checksum
How to use checksums
304520d89c99472e5e26ce95726b93c0730102f13b11627fcf2c106c47d78d1d
BLAKE2b-256 checksum
How to use checksums
4cc288f4a1c4d91231c041b555bea086f69e57d6df40785c05607ce6c5070a65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_x86_64.whl

Download URL css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_x86_64.whl
Size 2.0 MB
Tags Linux glibc 2.24+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
e05c7d690aecbbde3d68fe6680970aab0a63e199aa8938e297a4cc98f5a5a817
BLAKE2b-256 checksum
How to use checksums
3a8d7adff10294f143d7f4b86b98d2ca71f287cc997d892ae029a19cec51b2fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl

Download URL css_inline-0.23.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
Size 1.9 MB
Tags Linux glibc 2.24+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
ba337ed476fb6420513941aa5ab93ecbcd0c47076021b470f0ac0ba162f6a45e
BLAKE2b-256 checksum
How to use checksums
e79ac91d0cb1757ac52e80bf9c3867e864ea42c92f34ee963e9f3530b6fe8b69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl

Download URL css_inline-0.23.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags PyPy 3.11 PyPy 3.11 7.3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
cd5456b6a05563e01e0db70f96ac6f76ef26dbb05b6ab7768a68d1a4437bd46d
BLAKE2b-256 checksum
How to use checksums
56edbeb076d76e0bfe5c6d8b55d9aa91c36882cbd2d0aa1f106d83716ef06161
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-win_amd64.whl

Download URL css_inline-0.23.1-cp310-abi3-win_amd64.whl
Size 2.0 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
70ae6e68cc3eb9c8baee8cdbb570182be4e0f85893bbdb9b474542ff29c19614
BLAKE2b-256 checksum
How to use checksums
3cea0e91377ec90fa852c34f62b7f5343cafec917086965f9b1dd2d33541090d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-win32.whl

Download URL css_inline-0.23.1-cp310-abi3-win32.whl
Size 1.7 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
948230a9faaa700b037d66f41d6d8804d876d24ab8fc65a6ec06916b0d6cfbac
BLAKE2b-256 checksum
How to use checksums
618532eb35db567313aafe1a0be80a2ace63207b5ebec620225990d8856ff9ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-pyemscripten_2026_0_wasm32.whl

Download URL css_inline-0.23.1-cp310-abi3-pyemscripten_2026_0_wasm32.whl
Size 571.0 kB
Tags CPython 3.10 PyEmscripten 2026.0+ WebAssembly abi3
SHA-256 checksum
How to use checksums
eb9e214d774c3ec516fc8d90c55e647726bc9d8db3525fa61bb2ff1ff26e8cb5
BLAKE2b-256 checksum
How to use checksums
9422d252fbb5455f6323ecfc2e352d69dd54bf02fd796c1a68b4b9d023c7fb61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-pyemscripten_2025_0_wasm32.whl

Download URL css_inline-0.23.1-cp310-abi3-pyemscripten_2025_0_wasm32.whl
Size 578.9 kB
Tags CPython 3.10 PyEmscripten 2025.0+ WebAssembly abi3
SHA-256 checksum
How to use checksums
2a090c8fe07faf67ecbd205b6ea2fc13b57e9fa3cf4c5ff91ec8275732cce47d
BLAKE2b-256 checksum
How to use checksums
e60e4e66793009be0d4d32d22518d11bab78d3fdf642eca5572311d936094e7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL css_inline-0.23.1-cp310-abi3-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
bf0aa51a8e9512b5c9b2e38a9d8d4d6dcae0a0637713f63968d4329e0506b1db
BLAKE2b-256 checksum
How to use checksums
2b2efe77c3d374eab3efe1bd4dc5941e273575352cb56f58c60ad026a6e302c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-musllinux_1_2_armv7l.whl

Download URL css_inline-0.23.1-cp310-abi3-musllinux_1_2_armv7l.whl
Size 2.0 MB
Tags CPython 3.10 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
0cb7d765dbc9a8879484e051adf01bdbf81a6a960a5895cc673beab522e14f85
BLAKE2b-256 checksum
How to use checksums
fd66e4aee8b203f5249feefb822a45e1e6de3530c6b42b190b93ee4d8ee006c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL css_inline-0.23.1-cp310-abi3-musllinux_1_2_aarch64.whl
Size 2.1 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
75965a6cb80820be8f72744c27d9cb2b04b2ee4a1eea699c7676a0b0c46c31a2
BLAKE2b-256 checksum
How to use checksums
7bb068c2eb54a9c81a71f726ddd7cdd0f2baa7e7b1f7f418364df91c4afd662c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-manylinux_2_24_armv7l.whl

Download URL css_inline-0.23.1-cp310-abi3-manylinux_2_24_armv7l.whl
Size 1.8 MB
Tags CPython 3.10 Linux glibc 2.24+ ARMv7l abi3
SHA-256 checksum
How to use checksums
ae122afc67fb704923ae012d611ff7059ab8bff5752afefb71e9ff8ac7a9101c
BLAKE2b-256 checksum
How to use checksums
be1aa9b5927c2a62b0458625f4cad8a9d3b1d0f6774f77988d97cd8943da9ff9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-manylinux_2_24_aarch64.whl

Download URL css_inline-0.23.1-cp310-abi3-manylinux_2_24_aarch64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.24+ ARM64 abi3
SHA-256 checksum
How to use checksums
05ff7b078eaf94bf5ef8c71319ea9f2116c6fbb0eeba23e5ff08bf6a16dca9d4
BLAKE2b-256 checksum
How to use checksums
d4236bdc7678409aadea3eec7a4fd9ce7e7505d3c9756ee60baaa1115da0274d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL css_inline-0.23.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
708a5d718d91924e51e2d4f83167ea178fbc34ca025d48613c9940fd83c837d8
BLAKE2b-256 checksum
How to use checksums
ceb9b57247d3eec4ba6eea5f365bc1c3ebb1b525474d997986e5dcc84b71fe64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl

Download URL css_inline-0.23.1-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.12+ x86-32 abi3
SHA-256 checksum
How to use checksums
1931672f5f8f93d4925a39df49692a52560acf84030509bcb340c79188979f39
BLAKE2b-256 checksum
How to use checksums
28b6561fcdeac4c1cb335ea4baf42a47766a5d20a5c4d4c43a7c33440958791e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.whl

Download URL css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a4efe9f82af90f5e8fe929331a5114629cf9775e4497781cdc6d8a7fbf3d8e4c
BLAKE2b-256 checksum
How to use checksums
e3aea60de349e3a252d01df36e412f4b86278391527f7a4db95c790b0b8f1091
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL css_inline-0.23.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 3.7 MB
Tags CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a0cc459a2014a5ebe8dcdb23ade7929bf506106d73c5272a24269ff6e5424ca7
BLAKE2b-256 checksum
How to use checksums
30ded699155052d2c6725cab9752fbd1915d4b60b5ced47082158c83eda90d54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Security for css-inline 0.23.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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.23.1 This release

17 release files No 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