Skip to main content

Parallel and LazY Analyzer for PDFs

Project description

Parallel and/or LAzY Analyzer for PDF 🏖️

TL;DR

You can read this document, or just go look at some notebooks to get an idea of what this package does.

About

There are already too many PDF libraries, unfortunately none of which does everything that everybody wants it to do, and we probably don't need another one. It is not recommended that you use this library for anything at all, but if you were going to use it for something, it might be one of these things, which you may currently be doing with pdfminer.six, for instance:

  1. Accessing the document catalog, page tree, structure tree, outline, content streams, cross-reference table, XObjects, fonts, images, annotations, and other low-level PDF metadata.
  2. Obtaining the absolute position and attributes of every character, line, path, and image in every page of a PDF.

Note that while PLAYA Ain't a LAYout Analyzer, it does in fact implement the layout analysis algorithm from pdfminer.six anyways. See the documentation for more information on how to migrate your code. You may be interested to know that PLAYA's implementation is also up to 10x faster (benchmarks), depending on how many CPUs you use.

All that said, the primary purpose of PLAYA is to provide a parallel, parallelizable, pure-Python and Pythonic (for its author's definition of the term), lazy interface to the internals of PDF files.

But, it does more than that! It also includes a command-line interface which can dump out various types of PDF data and metadata quickly. For instance, you might want to dump out all the PDF operators in all the content streams on all the pages:

playa --content-streams my-awesome-document.pdf

Or you could look at the document outline or logical structure tree:

playa --outline some-interesting-stuff.pdf
playa --structure tagged-pdf-wow.pdf

And, yes, it does extract text, or also text objects (with associated metadata):

playa --text fascinating-research-paper.pdf
playa --text-objects colorful-presentation.pdf

Or images, in JPEG and PNM (or sometimes TIFF) format (may not work for all images):

playa --images imagedir splashy-resume.pdf

Or fonts, in various esoteric formats (may not work for all fonts):

playa --fonts fontdir typographic-horror.pdf

If you just want to extract text from a PDF, there are better and/or faster tools and libraries out there, notably pypdfium2 and pypdf, among others. See these benchmarks for a comparison. Nonetheless, you will notice in this comparison that:

  • PLAYA (using 2 CPUs) is the fastest pure-Python PDF reader by far
  • PLAYA has no dependencies and no C++
  • PLAYA is MIT licensed

PLAYA is also very good at reading logical structure trees. On my town's 486-page zoning bylaw, extracting the entire tree with its text contents as JSON using playa --structure takes only 23 seconds, whereas pdfplumber --structure-text takes 69 seconds and pdfinfo -struct-text (which doesn't output JSON) takes 110 seconds.

I cannot stress this enough, text extraction is not the primary use case for PLAYA, because extracting text from PDFs is not fun, and I like fun. Do you like fun? Then read on.

Installation

Installing it should be really simple as long as you have Python 3.8 or newer:

pipx install playa-pdf

Yes it's not just "playa". Sorry about that. If you wish to read certain encrypted PDFs then you will need the crypto add-on:

pipx install playa-pdf[crypto]

Usage

Do you want to get stuff out of a PDF? You have come to the right place! Let's open up a PDF and see what's in it:

pdf = playa.open("my_awesome_document.pdf")
raw_byte_stream = pdf.buffer
a_bunch_of_tokens = list(pdf.tokens)
a_bunch_of_indirect_object_ids = list(pdf.keys())
a_bunch_of_indirect_objects = list(pdf.values())
a_bunch_of_pages = list(pdf.pages)

Yes, a Document is fundamentally a Mapping of object IDs to objects, which are represented to the extent possible by native Python objects. These may not be terribly useful to you, but you might find them interesting. Note that these are "indirect objects" where the actual object is accompanied by an object number and "generation number". If you wish to find all the objects in a PDF file, then you will need to iterate over the objects property:

for indobj in pdf.objects:
    objid, genno, obj = indobj

It is possible you will encounter multiple objects with the same objid due to the "incremental updates" feature of PDF. As expected, you can subscript the document to access indirect objects by number (this will return the object with most recent generation number):

a_particular_object = pdf[42]

Your PDF document probably has some pages. How many? What are their numbers/labels? They could be things like "xvi" (pronounced "gzvee"), 'a", or "42", for instance!

npages = len(pdf.pages)
page_numbers = [page.label for page in pdf.pages]

You can also subscript pages in various other ways, using a slice or an iterable of int, which will give you a new page list object that behaves similarly. Pages and page lists can refer back to their document (using weak reference magic to avoid memory leaks) with their doc property.

Some (by no means all) helpful metadata

A PDF often contains a "document outline" which is a sequence of trees representing the coarse-grained logical structure of the document, accessible via the outline property:

for entry in pdf.outline:
    entry.title, entry.destination, entry.action, entry.element
    for child in entry:
        child.title, child.destination, child.action, child.element
        ...

If you are lucky it has a "logical structure tree". The elements here might even be referenced from the outline above! (or, they might not... with PDF you never know).

for element in pdf.structure:
   for child in element:
       ...
sections = structure.find_all("Sect")
first_p = structure.find("P")

Now perhaps we want to look at a specific page. Okay! You can also look at its contents, more on that in a bit:

page = next(iter(pdf.pages)) # Fast and lazy way to get the first page
page = pdf.pages[0]          # they are numbered from 0
page = pdf.pages["xviii"]    # but you can get them by label (a string)
page = pdf.pages["42"]       # or "logical" page number (also a string)
print(f"Page {page.label} is {page.width} x {page.height}")

Since PDF is at heart a page-oriented, presentation format, many types of metadata are mostly accessible via the page objects. For instance you can access the fonts used in page with, obviously, the fonts property, or the annotations via the annotations property.

For example, annotations (internal or external links) are defined on pages (since their position would not make any sense otherwise). There are umpteen zillion kinds of annotations (PDF 1.7 sect 12.5.6) but they all have at least these attributes in common:

for annot in page.annotations:
    annot.subtype, annot.rect, annot.props

The set of possible entries in annotation dictionaries (PDF 1.7 sect 12.5.2) is vast and confusing and inconsistently implemented. You can access the raw annotation dictionary via props in the Annotation object.

If the document has logical structure, then the pages will also have a slightly different form of logical structure. You can use the find and find_all methods to get all of the enclosing structure elements of a given type (actually a role) for a page. So for instance if you wanted to get the text contents for all the cells in all the tables on a page, assuming the creator of said page was kind enough to check the "PDF/UA" box, you can do:

for table in page.structure.find_all("Table"):
    print(f"Table at {table.bbox}: {[x.text for x in table.contents]}")

Accessing content

What are these "contents" of which you speak, which were surely created by a Content Creator? Well, you can look at the stream of tokens or mysterious PDF objects:

for token in page.tokens:
    ...
for object in page.contents:
    ...

But that isn't very useful, so you can also access actual textual and graphical objects (if you wanted to, for instance, do layout analysis).

for item in page:
    ...

Because it is quite inefficient to expand, calculate, and copy every possible piece of information, PLAYA gives you some options here. Wherever possible this information can be computed lazily, but this involves some more work on the user's part.

Using multiple CPUs

You may be wondering, what does "Parallel and Lazy" really mean? PLAYA allows you to take advantage of multiple CPUs, which can greatly speed up some operations on large documents. This parallelism currently operates at the page level since this is the most logical way to split up a PDF. To enable it, pass the max_workers argument to playa.open with the number of cores you wish to use (you can also explicitly pass None to use the maximum):

with playa.open(path, max_workers=4) as pdf:
    ...

Now, you can apply a function across the pages of the PDF in parallel using the map method of pdf.pages, for example:

def get_page_size(page: Page) -> Tuple[int, int]:
    return page.width, page.height

page_sizes = pdf.pages.map(get_page_size)

You could also just do this for certain pages by subscripting pdf.pages (this can be a slice, an iterable of int, or a generator expression over int and/or str):

some_page_sizes = pdf.pages[2:5].map(get_page_size)

There are some limitations to this, because it uses multiprocessing. The function you pass to map must be serializable by pickle, which in practice means that an inner function or lambda generally doesn't work. You can get around this in a very Java-like way by passing a callable object that encapsulates the necessary state. If you wish to avoid traumatising readers of your code, then use functools.partial instead:

pdf.pages.map(partial(myfunc, arg1=value1, arg2=value2))

Also, any value returned by your function must also be serializable. There is a bit of magic that enables this to work for PDF objects containing indirect object references, so you should be able to, for instance, get the annotations from every page without any trouble. But if you have your own complex objects that you return you may encounter problems (or slowness).

An important note about coordinate spaces

Wait, what is this "absolute position" of which you speak, and which PLAYA gives you? It's important to understand that there is no definition of "device space" in the PDF standard, and I quote (PDF 1.7 sec 8.3.2.2):

A particular device’s coordinate system is called its device space. The origin of the device space on different devices can fall in different places on the output page; on displays, the origin can vary depending on the window system. Because the paper or other output medium moves through different printers and imagesetters in different directions, the axes of their device spaces may be oriented differently.

You may immediately think of CSS when you hear the phrase "absolute position" and this is exactly what PLAYA gives you as its default device space, specifically:

  • Units are default user space units (1/72 of an inch).
  • (0, 0) is the top-left corner of the page, as defined by its MediaBox after rotation is applied.
  • Coordinates increase from the top-left corner of the page towards the bottom-right corner.

However, for compatibility with pdfminer.six, you can also pass space="page" to playa.open. In this case, (0, 0) is the bottom-left corner of the page as defined by the MediaBox, after rotation, and coordinates increase from the bottom-left corner of the page towards the top-right, as they do in PDF user space.

If you don't care about absolute positioning, you can use space="default", which may be somewhat faster in the future (currently it isn't). In this case, no translation or rotation of the default user space is done (in other words any values of MediaBox or Rotate in the page dictionary are simply ignored).

In general, where the API provides you with coordinates, they are translated to the device space, unless indicated otherwise (for example, sometimes there is a rect property which gives the default user-space rectangle, and a bbox property which gives device space).

Lazy object API

Fundamentally you may just want to know what is where on the page, and PLAYA has you covered there (note that the bbox is normalized, and in the aforementioned interpretation of "device space"):

for obj in page:
    print(f"{obj.object_type} at {obj.bbox}")

    # With space="screen" (the default)
    left, top, right, bottom = obj.bbox
    print(f"  top left is {left, top}")
    print(f"  bottom right is {right, bottom}")

    # With space="page" or space="default"
    left, bottom, right, top = obj.bbox
    print(f"  bottom left is {left, bottom}")
    print(f"  top right is {right, top}")

Another important piece of information (which pdfminer.six does not really handle) is the relationship between layout and logical structure, done using marked content sections:

for obj in page:
    print(f"{obj.object_type} is in marked content section {obj.mcs.mcid}")
    print(f"    which is tag {obj.mcs.tag.name}")
    print(f"    with properties {obj.mcs.tag.props}")
    print(f"    in structure element {obj.parent}")

The mcid here is the same one referenced in elements of the structure tree as shown above (but remember that tag has nothing to do with the structure tree element, because Reasons). Logical structure elements can contain one or more marked content sections, and the parent element can be found using the parent property on content objects or the structure property on pages and Form XObjects, which contains them indexed by mcid.

A marked content section does not necessarily have a mcid or props, but it will always have a tag. Exceptionally, because marked content sections may (unfortunately) be nested, you can find the mcid of the nearest containing marked content section, if one exists, with the mcid property on objects.

PDF also has the concept of "marked content points". PLAYA suports these with objects of object_type == "tag". The tag name and properties are also accessible via the mcs attribute.

You may also wish to know the complete stack of enclosing marked content sections. This is accessible from the mcstack property. Note that though it's called a "stack", it's actually a tuple. This means that it is immutable, and you can check if it has changed from one object to the next using the is operator.

All content objects can also refer back to their containing Page from the page property. This uses weak reference magic in order to avoid causing memory leaks.

Form XObjects

A PDF page may also contain "Form XObjects" which are like tiny embedded PDF documents (they have nothing to do with fillable forms). Simply iterating over a Page will not expand these for you which may be a source of surprise, but you can recurse into them with the flatten method, or with the convenience properties paths, images, texts and glyphs. You can also identify them in iteration because they have object_type == "xobject". The layout objects inside are accessible by iteration, as with pages:

for obj in page:
    if obj.object_type == "xobject":
        for item in obj:
            ...

You can also iterate over them in the page context with page.xobjects (this will also find Form XObjects contained inside other Form XObjects, which is unfortunately a thing):

for xobj in page.xobjects:
    for item in xobj:
        ...

Exceptionally, these have a few more features than the ordinary ContentObject - you can look at their raw stream contents as well as the tokens, and you can also see raw, mysterious PDF objects with contents.

Graphics state

You may also wish to know what color an object is, and other aspects of what PDF refers to as the graphics state, which is accessible through obj.gstate. This is a mutable object, and since there are quite a few parameters in the graphics state, PLAYA does not create a copy of it for every object in the layout. If you wish to reuse these objects, you should call finalize on them, which will freeze the graphics state and any other necessary context, allowing the object to be stored and reused as long as the document exists:

for obj in page:
    print(f"{obj.object_type} at {obj.bbox} is:")
    print(f"    {obj.gstate.scolor} stroking color")
    print(f"    {obj.gstate.ncolor} non-stroking color")
    print(f"    {obj.gstate.dash} dashing style")
    object_of_interest = obj.finalize()
print("interesting object:", playa.asobj(obj))

You should thus be aware that storing content objects to a list, then iterating over that list, will give unpredictable and undefined results! Don't do this:

objs = list(page)  # DO NOT do this

Do this instead:

objs = [obj.finalize() for obj in page]  # DO this instead

Path Objects

Unlike pdfminer.six, PLAYA does not try to interpret paths (as rectangles or whatever) nor does it break them into "subpaths". You just get path segments (it does, however, do some basic normalization to remove redundant segments). You can look at the actual path segments in user space (fast):

for seg in path.raw_segments:
   print(f"segment: {seg}")

Or in PLAYA's "device space" (not so fast):

for seg in path.segments:
   print(f"segment: {seg}")

Text Objects

Since most PDFs consist primarily of text, obviously you may wish to know something about the actual text (or the ActualText, which you can sometimes find in obj.mcs.tag.props["ActualText"]). This is more difficult than it looks, as fundamentally PDF just positions arbitrarily numbered glyphs on a page, and the vast majority of PDFs embed their own fonts, using subsetting to include only the glyphs actually used.

Whereas pdfminer.six would break down text objects into their individual glyphs (which might or might not correspond to characters), this is not always what you want, and moreover it is computationally quite expensive. So PLAYA, by default, does not do this. If you don't need to know the actual bounding box of a text object, then don't access obj.bbox and it won't be computed. If you don't need to know the position of each glyph but simply want the Unicode characters, then just look at obj.chars.

It is also important to understand that obj.chars may or may not correspond to the actual text that a human will read on the page. To actually extract text from a PDF necessarily involves Heuristics or Machine Learning. PLAYA has some simple heuristics to do this, which will work better with tagged and accessible PDFs, but don't expect miracles.

This is because PDFs, especially ones produced by OCR, don't organize text objects in any meaningful fashion, so you will want to actually look at the glyphs. This becomes a matter of iterating over the item, giving you, well, more items, which are the individual glyphs:

for glyph in item:
    print("Glyph has CID {glyph.cid} and Unicode {glyph.text}")

Note that the actual positioning of the glyphs is only done once you actually look at their bbox property, so for instance, if you wish to ignore glyphs with glyph.gstate.render_mode == 3 (which means "invisible") or glyph.gstate.scolor.values == (1.0,) (which means "written in white ink") then you could do that.

For text extraction you really don't care about the bbox, but you probably do care about the origin of each glyph relative to its neighbours. For this reason PLAYA provides you with two convenience properties, origin. and displacement, which are considerably faster to compute than the bbox.

PLAYA doesn't guarantee that text objects come at you in anything other than the order they occur in the file (but it does guarantee that).

An important note about text objects

But wait! What do we mean by "Text Objects"? What is "text", anyway? While philosophers have debated this question for millennia, PDF has a somewhat more precise definition (PDF 1.7, sec 9.4.1):

A PDF text object consists of operators that may show text strings, move the text position, and set text state and certain other parameters ... A text object begins with the BT operator and ends with the ET operator ... specific categories of text-related operators may appear in a text object ...

Except that this is not entirely true! Many other operators may also appear in a text object (PDF 1.7, sec 8.2, table 9):

Text object: Allowed operators:

  • General graphics state
  • Color
  • Text state
  • Text-showing
  • Text-positioning
  • Marked-content

In other words, as usual:

Adobe is Spiderman

(above meme does not apply to PDF 2.0, where you, yes you, can help to eradicate the numerous inconsistencies, contradictions, and ambiguities of the previous standard)

In particular, we care a lot about marked content operators, because of the abovementioned ActualText property. For this reason a TextObject in PLAYA does not and will never correspond to a PDF text object as defined by the BT and ET operators. For the moment, every text-showing operator triggers a new TextObject. It is possible (though unlikely) that in the future, only changes in marked content or graphics state will do this.

Conclusion

As mentioned earlier, if you really just want to do text extraction, there's always pdfplumber, pymupdf, pypdfium2, pikepdf, pypdf, borb, etc, etc, etc.

Acknowledgement

This repository obviously includes code from pdfminer.six. Original license text is included in LICENSE. The license itself has not changed!

For the moment PLAYA is developed and maintained by David Huggins-Daines.

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

playa_pdf-1.1.0.tar.gz (8.6 MB view details)

Uploaded Source

Built Distributions

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

playa_pdf-1.1.0-cp314-cp314t-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.14tWindows x86-64

playa_pdf-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

playa_pdf-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

playa_pdf-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl (8.7 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

playa_pdf-1.1.0-cp314-cp314-win_amd64.whl (8.4 MB view details)

Uploaded CPython 3.14Windows x86-64

playa_pdf-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

playa_pdf-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp314-cp314-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

playa_pdf-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

playa_pdf-1.1.0-cp313-cp313-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.13Windows x86-64

playa_pdf-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

playa_pdf-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp313-cp313-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

playa_pdf-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

playa_pdf-1.1.0-cp312-cp312-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.12Windows x86-64

playa_pdf-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

playa_pdf-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

playa_pdf-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

playa_pdf-1.1.0-cp311-cp311-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.11Windows x86-64

playa_pdf-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

playa_pdf-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

playa_pdf-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

playa_pdf-1.1.0-cp310-cp310-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.10Windows x86-64

playa_pdf-1.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.2 MB view details)

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

playa_pdf-1.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (9.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

playa_pdf-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

playa_pdf-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file playa_pdf-1.1.0.tar.gz.

File metadata

  • Download URL: playa_pdf-1.1.0.tar.gz
  • Upload date:
  • Size: 8.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6414a0779fdcc96284588767738c2bd71ed3aa65a1a8fa647a4ab09dce4ff017
MD5 711b3d8fbfc82f6947908109c99442d1
BLAKE2b-256 afd29575801a5e41fdffbac0fc356a7aae462e11f58473b3e78070185a9e7ced

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0.tar.gz:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c52597802d86fdd61a71a6e7f8e4b48fae51cc5ae38fcc727a14b6d4c075f6bd
MD5 41d9a801eb0ab38efe21d29e667e5e74
BLAKE2b-256 80dc525b0f415c2dc9f23eaec6a858c41ead974f4debe0fce7c2874a5050dea3

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e548a7542036f89a622f1c11c2a9c40b8476090b04f3abc335a8dd20142060aa
MD5 7d0345eb791786339df82c049c8b2127
BLAKE2b-256 8e9f7f582cb7cadb5865ffff53f1710e49202436af7bf81fba74f3a9664e7302

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 88b7ebf95cd7d02459a26a5a941411258b323f3202e33c13dcc867ae730abc73
MD5 5aa4fdbd5ccac1b9881c5272d0c0e048
BLAKE2b-256 e2245da4532afe99a9c30f23d2366e919b0f6e5e36b624ab5b36354db59445d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 457edd5abb9fc43aadcdd812371705851906b1d532a077a6c04981546cda4260
MD5 b7576e3bde1de3d48f6b93c10cd831a5
BLAKE2b-256 dac10e39c952d689dc573f298e9aec7166996c8e0da1e2c78d4e6cb13ef5a4f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 581a31bdf1bc9961addbd252050d0e9ed38dd1ad223a56c205680e90f7b72575
MD5 4e435f3f489c303d1ace052355f5799a
BLAKE2b-256 232228dd08a117897deaa41a233a0d1544b4b104f6249e17ae79ba9f5a2083e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4cd365fd111b1cb2354a6f6ec8da47e9e5d70c5a768fbe9534eee5247c7cacd2
MD5 8b6bbb9c68ff5d38a3f0bd3bc0694a7a
BLAKE2b-256 54ef80b18e577fc4215b6e3382f8f1d804ea8c02f1f608960cd69701f396c109

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7afcd077ef47ea86455534ecdf692448ceb1af636d2a38583f8e203d252f2d85
MD5 e88442d214ce3aba165ec4c55b17ce7a
BLAKE2b-256 e7b3e88f78d860b5a5d1a45719266af96acefe2a99192227ad1ca0e57e59770b

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e43afdc20cde1b77a9b4cb5804d9499d8c6966f34f3348abd4cd0541c591fe83
MD5 b9065cd773a17682e56324f3dee343fc
BLAKE2b-256 b141814ac75b62d3fce17ce22f491d093e6d1ee4b813e81bee1763006a4d08b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8827714630de811c35fe79f97b9934b411567d3a3b869a3c0df8704fd0850efd
MD5 ea6f4e8cd28f4a2da6f30bc79cf9f2ee
BLAKE2b-256 48e20e4c84ec682304551676f7e3b7650eaf80cd8fb2c3017346a16267fd6336

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 50c5dcb8908c94127ccfde1af6490ecdec3ff2865447e36f178c1bdff77e3e8e
MD5 e26c0a099efac2cb32e88a0bf31bedeb
BLAKE2b-256 3caa861f2f855bdb174e21bbe82f924e686346b910cc73c69920bf9a0713c225

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a786292d382a768ee029ad3461b4ea92df04dea10879ee3f57a11c2388e89746
MD5 968852cbae10c64437e81ed2619d8c8f
BLAKE2b-256 0d072c1b93ead3d094fa9a5a60817618d815ff6876fc28c04eb7acbd735d5562

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 783b25ed0e5fa435e488ad11551c897d7c622b9ac8a1376ede6860c28eaf2c11
MD5 4b5fdc74883b0ed48091789d52278e35
BLAKE2b-256 eeda6f309f16802cf77883a18390d5e22571922128393cc1533e7d769cfd80e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8b6eed3179d42a5e2db99c33ff931ca89014c2af2d9104a787f6b9079dab4f71
MD5 0b980c8f1c3cc8abd494bb70351a421f
BLAKE2b-256 5b3cd36b2e43cfe7f0299da48639b13530cc1735a12da1da2140e1d7bc99f540

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95335f17b96437d55e8e192e9c13f085db9ca84eef608ac706f177d5ade19a23
MD5 b8d8b47fbf31c7c45fd0bd4a68f10328
BLAKE2b-256 bfa6afc951b706d034e8dbf91250c5c9d81ce12a4af1dfad1c54a2925928be3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c50a79c88e3ed52944f85a694f0d6b5867fbed5d4c9c4a3b84d876858608b854
MD5 3cc27991b7fd97bd48dbb631b549f096
BLAKE2b-256 02d5fb9b218f85cf84ec0941e26c5769578189036fcba328cc9eaa795db781eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 699799f656757aab1fdd923bbd0c4ae5438efa6458c943524a0b9a8e8f5e076b
MD5 c7adb54d1854384620482b8c1b598afe
BLAKE2b-256 619465088538e5c218fefb52244f0a23f670378a55baf57af7e86904929adc2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b27df269246e48946870817b3b7727fcc2e7cf12e605abb4df51efb0af12afee
MD5 19666ca2e90314738d56328d5d00a476
BLAKE2b-256 ba4156995025d8aabd741974a79edc8518b67db5a46ce33e7852ef7378d0fa90

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0ffa371cfa8e7b8b3f62eb8fa5cd85015095861a20d7d4943971dce7dd15461b
MD5 40530bc26edca4a9da3428715d92b13f
BLAKE2b-256 25287a4a4a0e898dfa45af62452ebe53ce449dac60d67c29cb6ad783e7098a7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ac45f8ac08f8ec17ac834a189772293bc9d52aadb51c3c5eb839fa1c7e79fcb
MD5 bdcf7fc802b388059473ff2c1f23e524
BLAKE2b-256 d229cc729b12de1f0ca02e19aed463e42f58836824f6fc5e493bd6c3562e59ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 56dbaccca34dfc0613bec658b67ed67fb0fb4efaf49aab86c60236bfd934ec89
MD5 7b67cbb5b64e861b680b597637c18043
BLAKE2b-256 23daab3528bd7496092bb011bd21a48f19496f07ea607660a720186d6e41c733

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 81c7a18284806e80168adff83e2b0cec54a5fa11a01bde189ddc4fd4a4d3c27c
MD5 2a7a7149516fbc82eb63dc04a007f112
BLAKE2b-256 e6b486971497407b7412bca4c267c86bd239f75e2e42059cb585fb434ec1a3cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 499b9e2830faa0e680139b6e0363118cd368e7ab75e31b846d129ce0408640e7
MD5 4e2b56a2eb0ce7bf774a7bd3fb9195d6
BLAKE2b-256 6f4db456af5206403392d288815c05ee4b86387d78036293bdd043e0afef16a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78ca09679d78126cac95232e82b51f978f0d3373f2519e09036d87b13fe11d50
MD5 0a3d6370e75113ef58910682d83e6622
BLAKE2b-256 eb2e5b0a7746c9ab3ecb230eff493fe86273993f4a9074660d98f4431a0847eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0266a682d6c23658481a7f1ad590c9da8c174f4c5a6eac8052827174cfa287bf
MD5 2e45f8435302264b091a11273f7528c8
BLAKE2b-256 f9ea1e0c2c66185dc0ae1bd09739add4f75cc70f9420028073d46008a8b75dc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 daf8774b97933ddf8fb9120204ff9db96c56c360dfdecc489be5cec3338d0b5c
MD5 79cb006030e145d344362e5f3b343978
BLAKE2b-256 8c5c64d09c1ac223e6aba6759769b6e2285f311e0eafb062f8f9ba42615e2fea

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-1.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8a06cb9e2abb0e45ba651379604c624b4f645548a68ff41e3395400f9d7c30f0
MD5 9ea9e8319bdd80084ddcc610474f488d
BLAKE2b-256 663f460454ac8fc4fcd5ba039e3d636cc15162027cafe42c0ef0c9213910a357

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a788356f0c6d2ac95261ddec44e57761faf4b9cfa47a589113547e716fff846f
MD5 4f5ce82f1e22531394793502959447d1
BLAKE2b-256 6f8b564c9e7bdcd48739bad61e3e45be7579777ba1d58559c1fa00c0cc065c16

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 55dd02fd50f1e58cc87680f88d56b46d0c6050dec9b2b9d5a6c6746b7a3705f9
MD5 0b0b24599445c533fc96865fa83e903e
BLAKE2b-256 1dae18267af116b91d2efaac25b813b67216147144470a550f49dfe9f2b0d1ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c5adb706ba91137fbe0fbb7204743e60c0e4affb24cbcc138fff50697609cdd
MD5 124f50b35a48fd4c1f5debc211533cc8
BLAKE2b-256 bb022a0af0040065c7c4cba5822362179d45da22845ad827d6b5fefa413f9088

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on dhdaines/playa

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

File details

Details for the file playa_pdf-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0f3e250b91f3ac5db60171a66b1f594b1a6582bf71c4e206d6c03a0f8122ced9
MD5 1e53a22eeba6664f62c98751fb855dee
BLAKE2b-256 453b6ab78b3c0ec8c2acd7a8693f1e863dcdbddcf0c10eb89c0ea3842ca8f596

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on dhdaines/playa

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

Supported by

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