Skip to main content

Parallel and LazY Analyzer for PDFs

Project description

Parallel and/or LAzY Analyzer for PDF 🏖️

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 15-50% faster, 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_objects = list(pdf)

The raw PDF tokens and objects are probably not 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:

for objid, genno, obj in pdf:
    ...
# or also
for obj in pdf:
    obj.objid, obj.genno, obj.obj

Also, these will only be the top-level objects and not those found inside object streams (the streams are themselves indirect objects). You can iterate over all indirect objects including object streams using the objects property:

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

In this case it is possible you will encounter multiple objects with the same objid due to the "incremental updates" feature of PDF. Currently, iterating over the objects in a particular stream is possible, but complicated.

You can also 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 pdf.pages in various other ways, using a slice or an iterable of int, which will give you a page list object that behaves similarly to pdf.pages. Pages and page lists can refer back to their document (using weak reference magic to avoid memory leaks) with the 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.

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 = 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, but you can always access them by their names (as defined in the PDF standard) via annot.props.

If the document has logical structure, then the pages will also have a slightly different form of logical structure. You can use the same 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 dests or annots 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 (yes, capitalized, like that) and PLAYA does not do either of those things.

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-0.8.1.tar.gz (7.9 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-0.8.1-cp314-cp314t-win_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14tWindows ARM64

playa_pdf-0.8.1-cp314-cp314t-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.14tWindows x86-64

playa_pdf-0.8.1-cp314-cp314t-win32.whl (7.8 MB view details)

Uploaded CPython 3.14tWindows x86

playa_pdf-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.2 MB view details)

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

playa_pdf-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.2 MB view details)

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

playa_pdf-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

playa_pdf-0.8.1-cp314-cp314t-macosx_10_15_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

playa_pdf-0.8.1-cp314-cp314-win_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14Windows ARM64

playa_pdf-0.8.1-cp314-cp314-win_amd64.whl (7.8 MB view details)

Uploaded CPython 3.14Windows x86-64

playa_pdf-0.8.1-cp314-cp314-win32.whl (7.8 MB view details)

Uploaded CPython 3.14Windows x86

playa_pdf-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp314-cp314-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

playa_pdf-0.8.1-cp314-cp314-macosx_10_15_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

playa_pdf-0.8.1-cp313-cp313-win_arm64.whl (7.6 MB view details)

Uploaded CPython 3.13Windows ARM64

playa_pdf-0.8.1-cp313-cp313-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.13Windows x86-64

playa_pdf-0.8.1-cp313-cp313-win32.whl (7.6 MB view details)

Uploaded CPython 3.13Windows x86

playa_pdf-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp313-cp313-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

playa_pdf-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

playa_pdf-0.8.1-cp312-cp312-win_arm64.whl (7.6 MB view details)

Uploaded CPython 3.12Windows ARM64

playa_pdf-0.8.1-cp312-cp312-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.12Windows x86-64

playa_pdf-0.8.1-cp312-cp312-win32.whl (7.6 MB view details)

Uploaded CPython 3.12Windows x86

playa_pdf-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp312-cp312-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

playa_pdf-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

playa_pdf-0.8.1-cp311-cp311-win_arm64.whl (7.6 MB view details)

Uploaded CPython 3.11Windows ARM64

playa_pdf-0.8.1-cp311-cp311-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.11Windows x86-64

playa_pdf-0.8.1-cp311-cp311-win32.whl (7.6 MB view details)

Uploaded CPython 3.11Windows x86

playa_pdf-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp311-cp311-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

playa_pdf-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

playa_pdf-0.8.1-cp310-cp310-win_arm64.whl (7.6 MB view details)

Uploaded CPython 3.10Windows ARM64

playa_pdf-0.8.1-cp310-cp310-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.10Windows x86-64

playa_pdf-0.8.1-cp310-cp310-win32.whl (7.6 MB view details)

Uploaded CPython 3.10Windows x86

playa_pdf-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (8.1 MB view details)

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

playa_pdf-0.8.1-cp310-cp310-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

playa_pdf-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1.tar.gz
Algorithm Hash digest
SHA256 4bcc6782ddf1c78891379d37ef6a462f745f4f9e43524275c23d80bf681f60f0
MD5 d5b969ad98895f2d5a690d429b8519c7
BLAKE2b-256 13c5679241ed416e61f2154f9120b285771e7d1e6b6dc415a524c95133833e5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1.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-0.8.1-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 cee0f78767b7cd8466fabd3b8b43a3637e44cefe1ccd2fa454057834a56fc0b2
MD5 229c5b9fcac9c4ca4951a9660a4c3a0e
BLAKE2b-256 2fe8d7afe96b2d582d35869d05b2084173f453dac3af604c6e5e1c6ec827bdf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp314-cp314t-win_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-0.8.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 7.9 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-0.8.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 75964350620d9a918712e07540de9c6c76981011a1a0c425a7201ac8cbfd1606
MD5 d52494cbaba5b2db924422bbe7ed2d97
BLAKE2b-256 c155cd3065f34f4a6a5e2757902ab77bcc29793a2d4cd3829e39558728b192dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314t-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 51a7dff5be3adcb1bfa28ee3b21421a26660fa2a7cae65817e8e94d3bdca6613
MD5 22d7c2f42fc5397c0b014a117997e4a1
BLAKE2b-256 90581a05ccb67ce06bf6cf1ea935835fe4021e1fc5c98861e62cfe6515822299

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp314-cp314t-win32.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-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39d9b99961c42d62a025bd81dabc1d5d43650f37ff9d68e8344b541f8b1533b1
MD5 064c505482199382571a9be893b19cb6
BLAKE2b-256 763a727275f53771f2634ba51e7f6e645a262b68f14c3cf0176186969285d6ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 981817ccad62bc97594807f03ead65a0685f60582807059612c1e9727eb9abb9
MD5 5dab17b1c8f0e54ca734aab74bd1fcb4
BLAKE2b-256 f60c2588999b40175a4c97eb52004ceb83d7a7b54c828fdb33e3a81ce589adaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e02be783accf989f747eadbbe14c5dd2cbdbbcfe0986dfd32be59fa4c2b7dde9
MD5 20b4ad109fd483f6903b9008393a5211
BLAKE2b-256 41eb96d5f68db1bb9d68f32e6c7ea890eeec0c312958e914c438adccb22a0953

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 37c48b4c011b1bbaebf42f60be214e39cfdaa748f51cb898bd78941109e9f390
MD5 15d10d05d02eb374bf8eeab0b3cfa7db
BLAKE2b-256 36d406faaad63c927d8af52b814747be757d29f09e6c6049a76a6a8bfa001d7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 901a0e61b63a7a1b73570deefd8bb4ed4d7a20e913c16c078c372053a70ecb3c
MD5 7d99935d20002431cb5605860dd2158a
BLAKE2b-256 6ea9340d48354a1d2c1150e3b7cc10207e10159256d8756ad982bd75bee0e07e

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp314-cp314-win_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-0.8.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 7.8 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-0.8.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7aabd805111f973cc88856cfbc14614aa9738986cb571a8316d6ba4bc3cadddd
MD5 5edfdda4d9a9299cda6988d3f1cb5120
BLAKE2b-256 5fa9a63efed44dac19d78b663dafe5c88c23f8e2e7c896881ea2dd2fb3a835ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 81c4cc4371d4a962d5c19a9dff1e7214c62499355e9355a9a0e31fa28fbe0f2f
MD5 9e1b338572b9e11a41db6fb823821e35
BLAKE2b-256 ca0c815cc7cb02a549efcc0fbfc7cadb4989de33681a4ce4ba4419ae373c0e81

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp314-cp314-win32.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-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fc04cee18c322ea347a9be7d293d0372a22fcbb3f06d89d365587d084ed8b20
MD5 5f03dc9ab41c580e70f392f8ee90adf6
BLAKE2b-256 e5328a1d0509f155f9cdf910a2e2fd36b4dbee513704579f808aa0b08bb95de4

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b22f5bf4d3de9aa41e2a610e582288606b602b297ed3fff2e294f5db920710c2
MD5 017585541b539e3cb7cd027144f04102
BLAKE2b-256 a4ca62724d70096573fab8c7e2991a329d2025287e68a7d41f8c6fa2598c749d

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34d0b841eef1b772ebb82f779f225450d21912bdef531360e89137420ad2fd7f
MD5 cf84e670b2bf1d443249cfefd94371ec
BLAKE2b-256 3690700ab2761812d687ad706d377fb043e578ae7064e6c3e14ba01a5a773b38

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9204d7519999c79907c5f6834962f0693f03ea8974fe45bf7d7d22118f0c53b9
MD5 c1c4e0ee9c8eb93a59bd4937e8136a71
BLAKE2b-256 310af24b4d5d1506979a8b795bdc48dde92144d87abad2bd1c8ef14afa8300f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 9b971184eaa8bccdc6f406090470a4388f20acdc4ae679368e0eb51b588db4f6
MD5 310239af6fab17c0398eeb6e0c719bd9
BLAKE2b-256 427c5c12a2971d46d1cb87d7d070327ac718894d26a32cefcc66930ef31ff2df

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp313-cp313-win_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-0.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.6 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-0.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b234beade623e9dcd868b811eb956e4df16834cb1bf3ade9ca15b924466b52e7
MD5 9f8a586436a957094e75c05370ec89ea
BLAKE2b-256 ebe8fc8b378f550984ec3dc1ea0c3df5fba88a2dc82efb3a5674c2fd8d3d8faf

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp313-cp313-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 7dbf5646af3725b658aef107475c84c9bea87d79d1146a3d722a7c52dbb722ce
MD5 e94015950641d2affa1bffdbc09a6298
BLAKE2b-256 f576a4443a6abf7becbac1ccdb3b7114ccaaef6eb8c0d405f25c48128685adb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp313-cp313-win32.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-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5645f3e1cae34f10c96066376809b7273dc3656a82b93071285e66bf9d89b19f
MD5 f49e69b4aeb1443119b72100647ac500
BLAKE2b-256 2af3757ba61e685fc46c554da89c0c49b83d391389b7cf83a0d333154cff3d19

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 183f92b9104d20ea374bddce7cc6242bb9b964fb0814195d1c37daae59d336dd
MD5 aa6f2c6e4644474ffba945fc9d1fed0e
BLAKE2b-256 9db2c29d7e78b907e2794bc1724611d7192a63eec0d16b978530e7d9943a57cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5c9b6bee20e99d48a2b495c8deaaec5e9d753b9e8ebd6bf5c584c0869b221e0
MD5 0b7c4419b63edaab492815f27eeb756f
BLAKE2b-256 ff302073e442c1f5e4462059a65693a6d0abe79eed542f65d4525bd1a5017014

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 32c86bd41a8d337df55051fafb9b0e95f806e2e539b1e3ce8300dfbd4fbc5c10
MD5 b811c850a88cddea2951592f5c0daf21
BLAKE2b-256 301e628a3aee01345bf39e0020c686dc048d3e32766a47dd454ad85d282ba696

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 9f868166d01bff69c1af2dbcc8fc9a113c461f3b30046afc5a456ea096a4ba1e
MD5 a9fcc5ffa3104d434002d8d2ffe71b37
BLAKE2b-256 74c94b7872d38c066332101b2171b304bbb10b78110d10cf9500d31c4cef07a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp312-cp312-win_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-0.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.6 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-0.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 02db9776f851e4f3449c3d9865d4a53e7869ec7a614504f94dbfc19d553a51f0
MD5 0e305970cbab6eb95a38b4c38087a635
BLAKE2b-256 6d210402617e5ff21a2d6fa09c0ebf56cc7d08228d4db3397acca6ca83e26d02

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp312-cp312-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 cf426e6e523e009ee2df69bb779e1e91450b99a243d1471149c80415478a0a2e
MD5 20303a019513ab2f778ff1558426b5ee
BLAKE2b-256 5da2a56c6efad2f6685dba7cd73edd9555b0c89b74a9182e3b82f71a7fe74923

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp312-cp312-win32.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-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 970f9d3da156aa792ae0c1ae6edfac12246fe36991fe6e5ef8e7dcb9e82e1abf
MD5 8bb6fdc870b751cd413d259ae8eb4a3d
BLAKE2b-256 8d2ed02062aadf7e8a774879a055726c207f1b3e93d890cbe362e71dc3b0f34b

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b9d22e45a6932032d3413b6645119fd4270fccdf24ae581f19270d03839de1e
MD5 c26cf7a831a528816c2bdd15339abf8a
BLAKE2b-256 1592c4d0aa250dde52a59b61696f1cdd964dfd0af0455ca92e94ca8585683905

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d663053ef54bd659525a469b453cb661ad952603fa9d216336d1d541372dfa4a
MD5 aeb3d6a22e25171d449c188a09481139
BLAKE2b-256 7958cfaca60e20e8d74cc13d1af54fc4c531a3b768f0431416aad1cdcfd70104

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8c8c5128fa07c36f9e882802777fedfc171e4a08d44df84f6e41f0c2128cef5c
MD5 45f60a91cb731b11ede3460bbb59f41d
BLAKE2b-256 2403b68a6e2c11162f292dfc340ec855ca18128e052f956073e077bc507f2000

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 fa76f76e8141a6cee4c9cecf9f9dbba5f51926aeacb7d1daff5146d0c309844b
MD5 17d4ab3edf332697106a6690ee227a4b
BLAKE2b-256 138999ffec60b2d7ce8ecb88241a6f1bdbcd43faf0a13bd70050f33e968db366

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp311-cp311-win_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-0.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.6 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-0.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0a2ce4e253cf5f25a901c6ef6e65224e6739178953b1ac0396d18255cb734273
MD5 cc88c9b9a82695f33bc3313b1da160d4
BLAKE2b-256 87cd50776352c72a8909bda401c20b9edf5ffba20f54bb2d59f199c3a0bdfa66

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp311-cp311-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 784d1a5bf0b14e0e29f72d1ae45db5bfbb21f1fa4d22c7a2589c5337594bcf9d
MD5 407ee234afe22f36f025a13d70c6647c
BLAKE2b-256 6ab08d6cc886387e2c805a4411e85ff2100afd6f99d87cf0c5e25b7bf45ff6ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp311-cp311-win32.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-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97dfe28b8f8a10eee47e74a74f93816cdbebfbeeda025acb243725dd6dc038cc
MD5 846eb8aed7b4448399961efe6a049ee5
BLAKE2b-256 8d8d6cb044dc08c26830e600797f8ca8ffe400834bc28a7c3a9c76250d076cde

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6c005238345b80b5888bccad634118cff39b4cc6306f803b394990987a418dc8
MD5 0ff46a8db1df2ff6b4f4f7eedf7fe3e9
BLAKE2b-256 d331aac6be0fb382e54df8eac6f4d42967ec8dbe00445357a3d4dbff9dab6b3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7468785bbaf25c2321f41a8a54714d1feb4d48535ab0e7a1b5aeb8ad66e0dec8
MD5 ec5454d59faadf9072be045d7d3eece8
BLAKE2b-256 ef5d32cf63f6f9cdbe22376f1b422d2614db0b8bf2b5ad49c8be3cd86e3ad6e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23b99c1c6f2f6509dd57702ac349272252681d868f9d0c46ed1f9ad56d5ccd4d
MD5 37c667be5a1d6b564b536b1de89d88db
BLAKE2b-256 3245792607f4965415cd3e97953853e65af242c973a86f4a12c62a037290e456

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 00ff17995ef114a6e902def2cc8e8639855e7a4867163727d68d14ea8a28ae2b
MD5 283efab61a17d400e7f92b367398f079
BLAKE2b-256 f1dc13c5f6cf0852bf28b6422045b69d42cfe8199e8fd78578a17381dd12867f

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp310-cp310-win_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-0.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: playa_pdf-0.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 7.6 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-0.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 98cd34d62eea608ac1dfc5f1e8877c000bdbd46ed64d3b96d16daf1eff80672d
MD5 909ed1337a3353c39b73344543884462
BLAKE2b-256 5936bd8126a9c7f59bdcd30c4d3cf2c72a3750cd11ca9127fa53e68048f97fb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp310-cp310-win32.whl.

File metadata

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

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 7ce4d4d5ccca40359eeaf17cb4ce8bd627acad9a33ff395efd9fa5f670dbd450
MD5 102606ddf1ee88eb81d69869c78ebf50
BLAKE2b-256 eb0e71279c1157e4fc88eb15b0032e15fd8a1ef853003067814ae83e976c865a

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-cp310-cp310-win32.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-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f6ddc92322ce69b5564089ab9d269de19ea0ec1c849d0a28a8ef1a239d1e4da5
MD5 3cace26ad341c9d8fbb2d8eb3d359556
BLAKE2b-256 c5020dd37377e034bb820349a4bf08a9b2b15e2334bd7d09a4a58a4208cf37b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 45800f3983a030bf75e446e7520df7aa08988a3b6ad8360e97816fd7064f8398
MD5 77fdc0913c4e394c892ad853e3cf3517
BLAKE2b-256 df3ac709c55622208ce3f127c51a742ef464610a4ef8c7d9c739f407485fc4ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8874290d9b09d5e0ce167c70cf1bc9a02104be5d7b76eee4cd5265b32a8853e
MD5 a61540dddafb130a4873511d701fa3df
BLAKE2b-256 6db7b09b1fc133bee764d89565f3eb7e1b2fbf2ea6874676634efd241e551e4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for playa_pdf-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 939bb28c416dfc0ba98f2cbec33c1c0ae00166f1f90d2aee2b6c992790160e9a
MD5 f3f0fc6451bfb947183767d56209d08c
BLAKE2b-256 a123f3a2f5d86b1e6de6830944a1b2fcf95bed915d7f72131872d4bcaf644d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.8.1-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