Skip to main content

Frostwork

Fast HTML extraction for Python and Rust, without a DOM.

Frostwork compiles a set of CSS or XPath selectors, scans an HTML response once, and emits only the requested values. It does not build a document tree, so working memory tracks parser state and pending matches rather than the whole page. Supported results are continuously checked against lxml; the exact coverage and known differences — in both directions — are listed in the compatibility contract.

~14× faster than Parsel (what Scrapy uses) and ~8× faster than lxml at the median on the measured production-selector corpus, and ~7× faster than selectolax/lexbor on the workload both can express. Often much faster on large, selector-rich product and listing pages, where each of them must traverse a DOM per field.

Because Frostwork never builds that DOM, working memory stays essentially constant as page size grows for a fixed-output schema; it scales with parser state and returned values instead of the page tree. Results depend on page shape, selector count and output volume; BENCHMARKS.md has the full methodology and performance boundaries.

Frostwork deliberately supports a focused subset of CSS and XPath. Python fails before scanning when a selector is unsupported; strict=False opts into an empty column instead. Unsupported selectors never fall back to another parser or produce guessed results. If an application needs arbitrary DOM access, use lxml — Frostwork is for schemas known in advance.

Install

Frostwork requires Python ≥ 3.10. Install the core package, or include the web-poet integration:

pip install frostwork
pip install "frostwork[webpoet]"

Published wheels contain the Rust extension, so installing from PyPI does not need a Rust toolchain. Building an editable checkout does; see the Python development guide.

Extracting values

The primitive API takes the response body and all selectors together, and answers them in one scan:

from frostwork import extract

html = b"<h1>Widget</h1><span class=price>$9</span><a href=/p/1>buy</a>"
title, price, link = extract(html, [
    "h1::text",
    ".price::text",
    "a::attr(href)",
])

assert title == ["Widget"]
assert price == ["$9"]
assert link == ["/p/1"]

extract(..., encoding="windows-1252") accepts the charset label a Scrapy response supplies; without one, Frostwork checks the BOM and <meta> declarations before defaulting to UTF-8. frostwork.Page adds names and per-field cardinality for applications that do not use web-poet.

The same engine is a Rust library — frostwork::extract(html, &queries, None), with Page/Plan for named fields and compile-once reuse. See the runnable example.

Scrapy and web-poet

A page object declares its selectors; Frostwork fills every field from one scan of the response:

from frostwork.webpoet import FrostPage, field

class ProductPage(FrostPage):
    name = field("h1::text")
    price = field(".price::text")
    images = field("img::attr(src)", all=True)
    specs = field(".spec ::text", join=" ")
    brand = field("//meta[@itemprop='brand']/@content")

to_item() returns a dict here. Add Returns[YourItem] for a typed item, as shown in the Python guide.

Install scrapy-poet and enable it in settings.py with ADDONS = {"scrapy_poet.Addon": 300} (Scrapy ≥ 2.10; see scrapy-poet's setup guide for older versions). It then builds the page object from the callback's annotation:

import scrapy

class ProductSpider(scrapy.Spider):
    name = "products"
    start_urls = ["https://example.com/catalogue/"]

    def parse(self, response):
        for href in response.css("a.product::attr(href)").getall():
            yield response.follow(href, callback=self.parse_product)

    async def parse_product(self, response, page: ProductPage):
        yield await page.to_item()

Requests with callback=None — including those created from start_urls — do not reliably receive dependencies in parse. Use an explicitly assigned callback for injected page objects. Outside Scrapy, construct the page directly: item = await ProductPage(response=http_response).to_item().

This repository does not pin or test a Scrapy/Twisted matrix; use scrapy-poet's documentation for setup details. Frostwork does gate the injection boundary: every shipped page base is injectable and can be planned as a callback dependency. Field processors, groups, response types and schema auditing are covered in the Python guide.

How it differs from lxml

Frostwork is not a subset of lxml, and not a superset — the set difference runs both ways, and both halves are proven by the same gates.

What it does not answer. Supported CSS is tags, IDs, classes, attribute operators, descendant/child/sibling combinators, :not(), :is()/:where(), subject :has(), :contains(), and structural positions such as :nth-child()/:last-of-type; supported XPath is downward paths, attribute and text predicates, unions, positional predicates, following-sibling::, ancestor::, parent:: and top-level normalize-space(); values are text, attributes, descendant attributes, joined text and raw outer HTML. Anything that cannot be answered without retaining more tree state stays unsupported, and reverse positions and :has() have placement restrictions. An unsupported selector never falls back and never guesses — check() reports the verdict before a scrape, and frostwork-audit --scan myproject/spiders/ classifies selector literals in existing code without importing it.

What it answers and lxml does not. A dozen constructs run here and refuse, truncate or mis-decode there:

  • Valid CSS cssselect rejectsdiv:has([data-x]), div:has(a, img), p:not(.a, .b), [type=submit i]. Parsel raises SelectorSyntaxError; Frostwork matches them with the semantics the spec defines.
  • Values libxml2 drops — names longer than its 100-byte buffer, and everything after a </html>, which real pages put before the content that matters (one crawled page keeps 14 of its 17 KB there).
  • Encoding, the widest gap — and the one place the browser, not lxml, is the standard. parsel.Selector(body=…) never sniffs <meta charset>; frostwork.detect_encoding does, at any depth and past the <body> and unsupported-label cut-offs where w3lib gives up. It reads a UTF-16 body, which lxml's HTML parser cannot parse at all, and decodes with the WHATWG indexes browsers use — where Python's legacy codecs return U+FFFD for 457 euc-jp and 192 big5 sequences of ordinary prose. The rule is never diverge from the browser: a price is right when it matches what the site shows a person, so where Frostwork's text differs from Scrapy's on an oddly-encoded page, Frostwork is the one agreeing with the browser. Every such difference is tabulated with its reason.
  • A schema verdict before the scrape, and one pass for the whole schema — a page object of single-valued fields stops scanning once every field has a value, which a tree parser cannot do.

Three of those return extra values, the one direction that can surprise a port. The compatibility contract lists supported, divergent, beyond and unsupported forms with examples, the gate behind each, and the migration caveats.

Build, test, benchmark

make bootstrap     # create .venv and install the pinned Python test toolchain
make ci            # Rust, Python, lxml differential, encoding, and fuzz gates
make bench         # benchmark matrix against Parsel
make soak          # multi-seed differential and fuzz soak

make help lists the individual targets. TESTING.md explains what each gate proves and what remains outside it.

More

License

Apache-2.0. See LICENSE.

Download files

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

Source Distribution

frostwork-0.1.3.tar.gz (618.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

frostwork-0.1.3-cp310-abi3-win_arm64.whl (521.6 kB view details)

Uploaded CPython 3.10+Windows ARM64

frostwork-0.1.3-cp310-abi3-win_amd64.whl (539.9 kB view details)

Uploaded CPython 3.10+Windows x86-64

frostwork-0.1.3-cp310-abi3-win32.whl (510.6 kB view details)

Uploaded CPython 3.10+Windows x86

frostwork-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl (882.9 kB view details)

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

frostwork-0.1.3-cp310-abi3-musllinux_1_2_riscv64.whl (835.0 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ riscv64

frostwork-0.1.3-cp310-abi3-musllinux_1_2_ppc64le.whl (848.6 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ppc64le

frostwork-0.1.3-cp310-abi3-musllinux_1_2_armv7l.whl (935.1 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

frostwork-0.1.3-cp310-abi3-musllinux_1_2_aarch64.whl (845.3 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

frostwork-0.1.3-cp310-abi3-manylinux_2_31_riscv64.whl (660.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

frostwork-0.1.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (660.6 kB view details)

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

frostwork-0.1.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (716.2 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

frostwork-0.1.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (657.1 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

frostwork-0.1.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (665.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

frostwork-0.1.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl (676.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.5+ i686

frostwork-0.1.3-cp310-abi3-macosx_11_0_arm64.whl (618.2 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

frostwork-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl (631.8 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file frostwork-0.1.3.tar.gz.

File metadata

  • Download URL: frostwork-0.1.3.tar.gz
  • Upload date:
  • Size: 618.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for frostwork-0.1.3.tar.gz
Algorithm Hash digest
SHA256 9d17b182eed8e0415892083e76976cb325e5d314fc8ab65218169e3fa5cef04f
MD5 a64c2d26419cdf16970e940c1402e491
BLAKE2b-256 ee8f35c8bab4a0efb1e133bd2e95d3bea3e57866ff9717fba0c5ebefcdf36c0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3.tar.gz:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: frostwork-0.1.3-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 521.6 kB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 1673052a5565fadb487f93aaed0adb73eeb13027e0fc4ca3dce80af8f13adf7f
MD5 a428c53ac0ff2d6af10b8377b9365ff4
BLAKE2b-256 9bb99eb011bf06a4f5dc91d0bb36a4029869c6e92a82659b899df98e52b03a6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-win_arm64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: frostwork-0.1.3-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 539.9 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d6d40234cbbde3a42bb1078c178abb90decfb872ad691ef08b5b6705780b527a
MD5 718a3b562f3e5a4da2917d2425d32ee6
BLAKE2b-256 80b65c34f2d629ad263eac7607d9e05a26754f0fc97befbe56909d05a7b8d26c

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-win_amd64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-win32.whl.

File metadata

  • Download URL: frostwork-0.1.3-cp310-abi3-win32.whl
  • Upload date:
  • Size: 510.6 kB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 ffb25589550e0dc5c31872c72fe261ac5817eab81c39449a30f39f017f4116ee
MD5 e3d4721ab231b2601805d3a0ef9f1414
BLAKE2b-256 087cbe4d60807088ee0e21d3f8f661aa2ba175c779a2545a7da7eae034172626

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-win32.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7d8cd1f662e2c6047a19b42c8d5e00a4664b5792b0aeb64b177d01968302e4f
MD5 5e2bed84a19f3dff75817ec475d640ea
BLAKE2b-256 ec0b549986e6423ff404cc942139d943ea878cae645e2d612f510c1b265128cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 15ee37b82ac73bcacbb45586cc60e88ed32479d190f58304924ec1cab3ffa9b5
MD5 4cf6a04a3dccfe7db28c328658356937
BLAKE2b-256 b7c1ed32205525b353561c362c0911268e95a8ef703a09e55bf8871debff1cbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-musllinux_1_2_riscv64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 2b5ce12237a17ea934a3e0bc21799b51a6994f1c4369562166f2d2e820d098d3
MD5 4f368e3f5862135a64af0f8cae938ee9
BLAKE2b-256 a9bf205b8641a9852f0afe890f5921eadae0cd50b36421a27643a60652c6afb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-musllinux_1_2_ppc64le.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 147c1ccea35eb1848560308230121b7f7d0180cd7788849ed6a3677bdd5ea79a
MD5 260025ead5463790577ec82e3e422c06
BLAKE2b-256 59b5e93e945ab03ebde8fc23c75835253fe1536b455be90a6e44cb5f46968fc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-musllinux_1_2_armv7l.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9470f188436874bcaec7b5527d1ba846c897e08cfa96e1ea11eda121ef072185
MD5 16ee08dc66c279b9cc9f144524150d57
BLAKE2b-256 29fbf19497cdcce0914cb9df79fcdfef655ca56b3014877bd138061b52079af8

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 4ab665c6a171c169b3b72962f2a1cb1492583e07f1486e09fcf8e7459988c199
MD5 33989ed2d3599a571ac18d91b121b89a
BLAKE2b-256 a6d166c4b6af3695e09c2e2fbfe337c0caeedf084df1e5182061beee29e7b89b

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_31_riscv64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4e7adc055613d0dd19b9073eadbf30ac2dd3d04cfb88440fb86abdb5c9a5cccd
MD5 7dea50ab7d944a510c5d9d0f6694df53
BLAKE2b-256 a1e14d5eb261d5ab2baac371c5e8f91dfbc3c5fb1f886ed1aea9f791e58fedd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c5f826f52736d31b5e1fb03f7da5792e19872cebcb9d6e84456ccbf24c77c07b
MD5 f89380dd739f40bdf48ca0960dea5489
BLAKE2b-256 cf4fc5454f10e6544cf733f726fccd70efe54fd4d14cb4abd9787626294816ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9764452adc7654d6a99f78104e0bd036b5a1c48c96f8448affe12c0d6d14955b
MD5 6ef012b5e34677a55725c052c4e84e5d
BLAKE2b-256 39ef78ed44ed6af0262aece64a35b27930c4546def62924932eb1a31203e37a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2baa51e1e6336d72e4144216cad785d959d8f53b96de7153b1255912a9b5d13a
MD5 e2be4bbc754c99764eb729beb9638b77
BLAKE2b-256 fbe4c23bc8b8aa71502bfb1d27ce86c588fed87a7791e932710db12ae6056570

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 c4531dc6199ce8e1db7e42faeac352431cd1f10667b754a8ef9f4556ad93f824
MD5 a73c3c936fef5c040434ed096e6db776
BLAKE2b-256 207c49870a14bd01256c98e2041b843bf184cad519fff2cd35cdbd9c52fe2da9

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8591f5697c7a899d91214e6ab3182c6f7ae0157b2d55cae630165f8e5db1f24
MD5 f67d232e2c2f631e5481f8b0870827d9
BLAKE2b-256 c43d47ab65c4a7cc2cb74bde34649bae1b012da452c3dc0c45b6a1e74213243f

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frostwork-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for frostwork-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6a417e950161d942d067e7c44274e65bf31b0b4b8d2b81eb28450305f282275a
MD5 72424ad0f6a4d9761b8b4a52224a2152
BLAKE2b-256 45e6c1fbaff3a4e051ea10dbec30810a9f6b33ad52f222d6010eabe5fd87a080

See more details on using hashes here.

Provenance

The following attestation bundles were made for frostwork-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: publish.yml on scrapy/frostwork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.4

17 files

This release

0.1.3 This release

17 files

0.1.0

17 files

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