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.9.0.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.9.0-cp314-cp314t-win_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14tWindows ARM64

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

Uploaded CPython 3.14tWindows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp314-cp314t-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.15+ x86-64

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

Uploaded CPython 3.14Windows ARM64

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

Uploaded CPython 3.14Windows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp314-cp314-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp313-cp313-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp312-cp312-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp311-cp311-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows ARM64

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

Uploaded CPython 3.10Windows x86-64

playa_pdf-0.9.0-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.9.0-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.9.0-cp310-cp310-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

playa_pdf-0.9.0-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.9.0.tar.gz.

File metadata

  • Download URL: playa_pdf-0.9.0.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.9.0.tar.gz
Algorithm Hash digest
SHA256 720fb282ea26a5ab4a72843947943bb1775a14083390e5302731353357d38224
MD5 96598122c215b83c7501e4cde8e02ef7
BLAKE2b-256 6958d3bc00f5924f345ce21f07582ed45f4b4a1fbeb1ac69be06b3d76530e935

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 3d24bec2c47cc7fad71bd9704d2e9ab17744ac07372f3940cb1d0463358eb508
MD5 a27e6381b31e59b69ac60ade9433f921
BLAKE2b-256 97451cc23414f8ede8831e5429a87b832aea8c94a92c69667c91e1590482bc87

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 89d2df89ccd26a2752d5cfce51fd72a58dd1129d062681db3f6c4a78477ff655
MD5 1ea649706cee1c76ecda5cc15882337d
BLAKE2b-256 cc1e037bcb320028f5873b43804fa255d16edb1e58628392102643e10e2fa689

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44ae96eb314b0bcba31f107e85c281c8ad58929484c833d2e275c06e55ae67c3
MD5 ed725df0b7c2987c248ac66eea3c4a2a
BLAKE2b-256 5dbb9b112307eb40cdbad9cb6edb675ae87c5d90232a740a0079bc71c6446102

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b83f50534fcd74e0e2886026ae049360bc76577001f830be570d5f684143444c
MD5 8eced6047015574c05d74f7aa674bdf2
BLAKE2b-256 e97dc04723ea2d94b73ebdcf3ab059b9cadf916a6171b83122162e1eaaa589ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d84809ed856d60c8dc00021eda8ff4a8979857f8aa5326162392c6d3a2e96459
MD5 0d782150289bb3d258bbcffa3004fc9b
BLAKE2b-256 d897fecc444237b7cd4229d2d918c8eea42630f05c3bd4ba80faae03ffb33548

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bfda0311f5793a8e49f5d80df5f9de8d8ad65ee6101a938d27ac629f47e8f5c1
MD5 0f3106e4632cbb48e459f89e262f5b52
BLAKE2b-256 daebbae676a71843895bf3a7629094b4533c234bfea57fe16f59448df02add47

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 f81472203eccf8458dced1b0f448bb499f533d52db308b29af36006251b82515
MD5 d3a79b9bcd4bf1d26055243948f67cb7
BLAKE2b-256 eda4f42ca3301e34c41cb219c9da0beca87d04602823ec99539b61cc25846f29

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6a780d87cc3fe6089fd797947045f782459876a9955261d291ffe55b133ae2af
MD5 5d8bbeea2ae3d77db41b55235e9fe2ff
BLAKE2b-256 dcff2de301aea60e25dba548f78dd818b1e7750376993bc6670060333ba52771

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39f339ed0383dda85203e14034d9bc91ac459653636f882f85446f9137ee0876
MD5 bdac50e0e7157ea13c22280cc1979e3d
BLAKE2b-256 b637fe88af6ecb314632efc70b51f0948a9872084b2f7ba01818649472b64f40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aa6d47715fe8ab84298fc09d106b13098384693e45276f8d648c69c5d16fe568
MD5 4b5ae6dbd724bc111e43eab73f7cbce7
BLAKE2b-256 55a0ea3fce592d74a4fae7518f44c2ed9eb7718202a01a9064558cb62c5259a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc49a73d89d890d89879899ccfc39c030a3f29842a3e793ba2e8117fc8423b2f
MD5 bf4dcfe52cca5d137440433e4f461561
BLAKE2b-256 e621d24955784b1cbeaf01e339c0d05556e05fe94ded8ac16a8da92453469d27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e6c71ec964c47b885a4d5e819492887ddf9427d4e9c1b5e3729a2307b9c7ae62
MD5 2c35bdd29eb077f58d6451b144306f6e
BLAKE2b-256 d8a7c177c4687514b839825b9cc674c78d981bf13863e7ead3b3309a1c914d14

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 248409bb96712275dce87b816d5210236960bd94dd79f0e907e7ab7e26d735bc
MD5 4babc1e14f7595049b06401e7f54ac6c
BLAKE2b-256 732e46d1db1088656d29aa772ba75202b8d83b56b906c273b1a22c2883156f49

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5fb8f5a6c5b5e4d0e4b9750050d0aac34fe3589d5d790a9e01ab61f23915515c
MD5 e2fd8f8a0d5dd04fb2b58ad35b10863d
BLAKE2b-256 a87a355d01b4579f0fb1bcf4bd0beea6f2935c12b435df2818dd686ff3891ad6

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d334ca9f28aefce57e3b1cc6aa8ca599b7ccee7c1a158fbd51f1491a7b2e0ef0
MD5 58d4e0e217ac49c5c571e6221dbcabcd
BLAKE2b-256 00502502e0c812dc8218fc3a000eeeb4c26555cbf44e2e259c8465ca24e6894d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99170d51b75130c31c4cc20b32185f2427bf6bb98a1a71c0d7c05766bd8490db
MD5 959372faf8053c7b4a3e037253ec3715
BLAKE2b-256 e5257339ca34e0b51f93d127870a62ff389ecef39d48b141249394499460579f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa2f3416a09bbc43a51881c225cb04979f8e8c3e61751d424478c93b418e09d0
MD5 e88acda5239aa83c7ffaae15b6a2dca1
BLAKE2b-256 0d05b91ad5c2827e858b6c5f2ee19150f2d6fcc90a025e6212e38305ffc7b470

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 48e3d97a9cc269cad82e9249415a815f4abb99aa11e5dffc9a171c4258dbd14f
MD5 09c4fff72a3eea1d62f36fb8d5c283f0
BLAKE2b-256 d25f823069bcea15fb92634f625d0158899768caf3725318496441612edb6a36

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 395e56854cfe85296c5ccda8a2bd5a145ec7f7e7af364f8fb5934f4724c2e5bd
MD5 1a0b25845a65e5eb78ba9a801bfd00d7
BLAKE2b-256 730e7303d33a49cb1ec9794ae9b19423edd36bbb5486c29a224b7ddb215dc712

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b8efc50a694bf3dfb624b4cea191e47cd32a7d2d56bdbd7cbdb48583a49c870a
MD5 2b79d82073aed6542820b4efd61380d6
BLAKE2b-256 5d00d3ca6cbb52ecf3cb014eaa8e40467dff717dfdad0d10a47eba22f7b274d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 06e34e68288cd0d9953267981e4af8f675a6f817a6ce6f6cde15b06ddeeecd00
MD5 93b28f08feaa05b8811d000dd73b3c6a
BLAKE2b-256 abbedf785ad3f9db098b9025fd9506010376e7c77681a8eca27dc48e2b90ac93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fc2a1536c91b3cb0ce40e186440ee275a26200549e7f921a6b8cdb9ca608967b
MD5 bc98d3590313c74b4c2c290a436e1873
BLAKE2b-256 833857c7d6905748f5997e79b2e8ccbbc5832b4a1750977a60007ad4c7503836

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a029e86911b5f9b8a070751ad898754a2cdac5fcbf6d48958240f19f233a2f8
MD5 ad8b897bbd10444ca8df8983da2a406f
BLAKE2b-256 fd3fb31aeabd7acd65270cbcd8e2b1c341bdc0c185758ef7be455aee9e486614

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c7465637243e26fd1f71473a643147de96543533af00ebcf2a9747a8b357140f
MD5 4e369bca094a9b6a725d49f35a018cb7
BLAKE2b-256 ec00dcaaf7fbf3abe36adfd04b7d390f32a819776dbd4ab6d4912e9b53e21b58

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 8a9179e2ae9014a5ed2cceecf6ce2f6b77281c173217ad4d5dc89ede69886bf3
MD5 19b0221967d03b131fff40af70c585b8
BLAKE2b-256 8e27d7af588ce41e42326ddbc92c3988ee3edf0375ba68a5f7d9da1d57f320bd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e41fb9ca711c0fedaf37d50443a1d26d198c5c76c346d1eb37b6a9b5bad60c0b
MD5 10061c0068b5f86f0ff4d751404ec8ee
BLAKE2b-256 4f4ab7d9dc75512cd80b87e15b97dccb6a69e09caad5dd7307313e9df6735a60

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 517452d8b6783046800b4dbf4c16d96ed6ae16bef3f564682e5a9f459dc18d98
MD5 496060a4ffe169d8f7fa518a54dcd1d1
BLAKE2b-256 2ff7ff7242501e05a97495c304cabeed5fa50d82c013e0ed5df7d0d6488793e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae486484a6e40cb00d5b7725190850f04a520ceca5b94f668c2065a65703a349
MD5 40abd37cd763d1e30f3acf519ecd8b00
BLAKE2b-256 ececabecc3de1baabedb360c08013bd3875630e66a36360c0c3ed8f666a2b3a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5d81dec479c1b4372925a5eac208b2d39725ee973865067039200a690908ce2
MD5 a7da7d6115350bcfad5b7ce2d1f8904d
BLAKE2b-256 4287095323697c2d56e31d03bd48212c97c1e9f3788707086f03d7cbb5656539

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 062544154ba80d685c72ba36d4395fdece0574142d853148a2b8995caf05cb0e
MD5 3a0b5858bd4f8e63a866e6bac3ea32f0
BLAKE2b-256 3d60defd35e240ae6314a7b7deb447063b18fd0a887ab94a0c7ae9ddbe30adb3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 3a3fc12dcfd58aa6f02c2740a49871b753ae2291925dd79099016564691a3285
MD5 6ec37615d61b68300ad26e2a8785f3fa
BLAKE2b-256 551535974ae84461f1ce73a9b38945672a2bda90bd66585a05e5a56946cb2c68

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: playa_pdf-0.9.0-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.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e636d3f6a99a87c222d27e249c6e20c64334bad7192b7461abac6398a4728848
MD5 febf527c90fdb6f6b35c3e66c3571cf9
BLAKE2b-256 dada2ca7dda71383823abbdfbe0a146b0c969c983419e992d0db4273ff0a62e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for playa_pdf-0.9.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-0.9.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-0.9.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98494c58515dbafd50a862285cc716e3126a062ca4a46641c02ea634a33ca924
MD5 a7b06b626d7cad515a13a3fdd2ccfad3
BLAKE2b-256 7259dfe70712c96a4616ad5240ec229def2730dddc78727fd9485c281b0ea281

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bceb15df9dbc439398e826eea4bb9039f5c05936b01c2b529ab7901db4daa843
MD5 cb860a24091981f63cc980645b179ea9
BLAKE2b-256 7d5288517bf3e61e68a557aca4047993734d547aa153b2838508fe419a052ffb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb04cafeeaebf71c51e681473cfa4a0ce423338adb608314bfe5dae5233de1ca
MD5 21244e072c84d8491275308510635fd1
BLAKE2b-256 cf2570f8028bae50ae723a0ce2e99d9c29ed445fa9e9c0704737ab7a23abfe30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for playa_pdf-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e2914887cc628b30e0dd811adcce780e70910e351fa1e84d5a78e2220058b0b8
MD5 8b7d549797a5c131d5d200d18b33de19
BLAKE2b-256 1c4fd8682c0ea4c1f47fdb500066d4984b4b4ff34283245a4ea3664aec88aeb2

See more details on using hashes here.

Provenance

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