Skip to main content

A performant read/write parser of Photoshop Files (*.psd and *.psb)

Project description

PhotoshopAPI

ko-fi

CPP Version PyPI - Version PyPi - Downloads Documentation Status CI Status Test Status Python Wheels

[!NOTE] The PhotoshopAPI is still in early development status which means it is subject to change and will likely include bugs. If you find any please report them to the issues page

About

PhotoshopAPI is a C++20 Library with Python bindings for reading and writing of Photoshop Files (*.psd and *.psb) based on previous works from psd_sdk, pytoshop and psd-tools. As well as the official Photoshop File Format Specification, where applicable. The library is continuously tested for correctness in its core functionality. If you do find a bug please submit an issue to the github page.

The motivation to create another library despite all the other works present is that there isn't a library which has layer editing as a first class citizen while also supporting all bit-depths known to Photoshop (8-bits, 16-bits, 32-bits). This Library aims to create an abstraction between the raw binary file format and the structure that the user interfaces against to provide a more intuitive approach to the editing of Photoshop Files.

Why should you care?

Photoshop itself is unfortunately often slow to read/write files and the built-in tools for automatically/programmatically modifying files suffer this same issue. On top of this, due to the extensive history of the Photoshop File Format, Photoshop files written out by Photoshop itself are often unnecessarily bloated to add backwards compatibility or cross-software compatibility.

The PhotoshopAPI tries to address these issue by allowing the user to read/write/modify Photoshop Files without ever having to enter Photoshop itself which additionally means, no license is required. It is roughly 5-10x faster in reads and 20x faster in writes than photoshop while producing files that are consistently 20-50% lower in size (see the benchmarks section on readthedocs for details). The cost of parsing is paid up front either on read or on write so modifying the layer structure itself is almost instantaneous (except for adding new layers).

Features

Supported:

  • Read and write of *.psd and *.psb files
  • Creating and modifying simple and complex nested layer structures
  • Editable text layers (create, style, and inspect runs)
  • Smart Objects (replacing, warping, extracting)
  • Pixel Masks
  • Modifying layer attributes (name, blend mode etc.)
  • Setting the Display ICC Profile
  • 8-, 16- and 32-bit files
  • RGB, CMYK and Grayscale color modes
  • All compression modes known to Photoshop

Planned:

  • Support for Adjustment Layers
  • Support for Vector Masks
  • Indexed, Duotone Color Modes

Not Supported:

  • Files written by the PhotoshopAPI do not contain a valid merged image in order to save size meaning they will not behave properly when opened in third party apps requiring these (such as Lightroom)
  • Lab and Multichannel Color Modes

Python

The PhotoshopAPI comes with Python bindings which can be installed using

$ py -m pip install PhotoshopAPI

alternatively the wheels can be downloaded from the Releases page. For examples on how to use the python bindings please refer to the Python Bindings section on Readthedocs or check out the PhotoshopExamples/ directory on the github page which includes examples for Python as well as C++.

For an even quicker way of getting started check out the Quickstart section!

Documentation

The full documentation with benchmarks, build instructions and code reference is hosted on the PhotoshopAPI readthedocs page.

Requirements

This goes over requirements for usage, for development requirements please visit the docs.

  • A CPU with AVX2 support (this is most CPUs after 2014) will greatly increase performance, if we detect this to not be there we disable this optimization
  • A 64-bit system
  • C++ Library: Linux, Windows or MacOS
  • Python Library1: Linux, Windows, MacOS

The python bindings support python >=3.7 (except for ARM-based MacOS machines which raise this to >=3.10)

1 Currently Linux is supported only as manylinux build and has some features disabled such as timestamps on logging.

Performance

The PhotoshopAPI is built with performance as one of its foremost concerns. Using it should enable you to optimize your pipeline rather than slow it down. It runs fully multithreaded with SIMD instructions to leverage all the computing power your computer can afford.

As the feature set increases this will keep being one of the key requirements. For detailed benchmarks please visit the docs

Below you can find some of the benchmarks comparing the PhotoshopAPI ('PSAPI') against Photoshop in read/write performance

8-bit

Quickstart

The primary struct to familiarize yourself with when using the PhotoshopAPI is the LayeredFile as well as all its Layer derivatives (such as ImageLayer and GroupLayer), all of these are template structs for each of the available bit depths.

To get a feel of what is possible with the API as well as how to use it please refer to PhotoshopExample/ directory. To familiarize yourself with the main concepts, as well as recommended workflows check out the docs or the examples.

If more fine grained control over the binary structure is necessary, one can modify the PhotoshopFile which is what is parsed by the API internally. Do keep in mind that this requires a deep understanding of how the Photoshop File Format works.

Below is a minimal example to get started with opening a PhotoshopFile, removing some layer, and writing the file back out to disk:

C++

using namespace NAMESPACE_PSAPI;

// Initialize some constants that we will need throughout the program
const static uint32_t width = 64u;
const static uint32_t height = 64u;

// Create an 8-bit LayeredFile as our starting point, 8- 16- and 32-bit are fully supported
LayeredFile<bpp8_t> document = { Enum::ColorMode::RGB, width, height };
// Create our individual channels to add to our image layer. Keep in mind that all these 3 channels need to 
// be specified for RGB mode
std::unordered_map <Enum::ChannelID, std::vector<bpp8_t>> channelMap;
channelMap[Enum::ChannelID::Red] = std::vector<bpp8_t>(width * height, 255u);
channelMap[Enum::ChannelID::Green] = std::vector<bpp8_t>(width * height, 0u);
channelMap[Enum::ChannelID::Blue] = std::vector<bpp8_t>(width * height, 0u);

ImageLayer<bpp8_t>::Params layerParams = {};
layerParams.name = "Layer Red";
layerParams.width = width;
layerParams.height = height;

auto layer = std::make_shared<ImageLayer<bpp8_t>>(std::move(channelMap), layerParams);
document.add_layer(layer);

// It is perfectly legal to modify a layers properties even after it was added to the document as attributes
// are only finalized on export
layer->opacity(.5f);

// Convert to PhotoshopFile and write to disk. Note that from this point onwards 
// our LayeredFile instance is no longer usable
LayeredFile<bpp8_t>::write(std::move(document), "WriteSimpleFile.psd");

The same code for reading and writing can also be used to for example LayeredFile::move_layer_ or LayeredFile::add_layer as well as extracting any image data

Python

import os
import numpy as np
import photoshopapi as psapi

# Initialize some constants that we will need throughout the program
width = 64
height = 64
color_mode = psapi.enum.ColorMode.rgb

# Generate our LayeredFile instance
document = psapi.LayeredFile_8bit(color_mode, width, height)

img_data = np.zeros((3, height, width), np.uint8)
img_data[0] = 255
# When creating an image layer the width and height parameter are required if its not a zero sized layer
img_layer = psapi.ImageLayer_8bit(img_data, "Layer Red", width=width, height=height)
document.add_layer(img_layer)

# Similar to the C++ version we can adjust parameters of the layer after it has been added to the document
# as long as it happens before we write to disk
img_layer.opacity = .5

document.write(os.path.join(os.path.dirname(__file__), "WriteSimpleFile.psd"))

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

photoshopapi-0.9.1-cp314-cp314-win_amd64.whl (8.9 MB view details)

Uploaded CPython 3.14Windows x86-64

photoshopapi-0.9.1-cp314-cp314-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp314-cp314-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

photoshopapi-0.9.1-cp313-cp313-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.13Windows x86-64

photoshopapi-0.9.1-cp313-cp313-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp313-cp313-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

photoshopapi-0.9.1-cp312-cp312-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.12Windows x86-64

photoshopapi-0.9.1-cp312-cp312-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp312-cp312-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

photoshopapi-0.9.1-cp311-cp311-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.11Windows x86-64

photoshopapi-0.9.1-cp311-cp311-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp311-cp311-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

photoshopapi-0.9.1-cp310-cp310-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.10Windows x86-64

photoshopapi-0.9.1-cp310-cp310-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp310-cp310-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

photoshopapi-0.9.1-cp39-cp39-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.9Windows x86-64

photoshopapi-0.9.1-cp39-cp39-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

photoshopapi-0.9.1-cp38-cp38-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.8Windows x86-64

photoshopapi-0.9.1-cp38-cp38-manylinux_2_34_x86_64.whl (13.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.34+ x86-64

File details

Details for the file photoshopapi-0.9.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 76699aac285c56c519e6f3e3f0ddd9772a69ed734386a01a25edb2e969971ea5
MD5 7da2203d065d5891e85a0faabf5d7235
BLAKE2b-256 d878e14a76ac634da0e0dcbd749e3c25ffc1457e5f73cfb05a2d4f150a8e8798

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp314-cp314-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 99364bad823ab0a9002d575d5b97af29ff1f282f907f663773304e5116263dd8
MD5 83afe2b8e089e631051549fe0cb13c63
BLAKE2b-256 4c937cd74645141c5382a7a97bac1642d382cc641b7bf68d5de6f01a12734056

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 17649a53d65e6f6d3d0ed805b48a6f8db8b4d89e879f5a38cc27a12ca5908d26
MD5 84afdca5f52e640e6123a7383d098659
BLAKE2b-256 4b5ea1bf1760cdefb8e0ca035509552815a5a02b2561b20cd316225bb2b7a939

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp314-cp314-macosx_15_0_arm64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f0158aed121fd630ce5cc88b37069e0a6a7963731dab0d18a6356f469db7aa38
MD5 5fe5a6343405d5e009da777294e28e77
BLAKE2b-256 81f3ead30d140cb2df0228a367f974a7de97106b8a64200379a6f29c7114c41f

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp313-cp313-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a586a0ff51c658d1fb1996d7dac979ba25ac9e091d480656fb55f60121abccda
MD5 0bc72392d74f54ac3d0ad3f9dc2f56c9
BLAKE2b-256 982dee852c294745284ed0f58d68c0ebe653f0535853e1b07f1d3d69f7689ad7

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5d1338086efed04c6acc7fcd9a086821d673b87ea0311134717516a206712f0a
MD5 15022cd9a56cb3e31f8dcf6c98b733bd
BLAKE2b-256 703ffd62d98ab20bd491e9527626f190bb01b573758b477e0522b064e8a65994

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cad71451fc7ffd7515a1c82e97aa64bda533757717b57fc2bfad1a5cb644c091
MD5 d9846a1271377415a6ee0b2a4f752d76
BLAKE2b-256 0b076c85e1b96ee2a2a2ed2b26670e8983f076e0ac68e9f53c3e02ace89c5a9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 dc6a503f5f22879380f46b8b772e2cec84a226a104cf2f3f8c205fafe32dad53
MD5 d568472d7f46db6759771b54c53e8afc
BLAKE2b-256 c23eb1a36eb4db79b47cb9498c1156cb888d3d1c07979f15a72b3e763e176ee2

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3330db4bca6ac83ce7323ada310501b68e3a05f05b62df205895bf1210f06eae
MD5 edea4085d0ee915836ae9aae31a7f4c8
BLAKE2b-256 e608a3ede7dd020686981c0c3b119a62ee787ad3dcb93b85763243b3762e7562

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d448951bc7ba0ef887ead051a95813c424ae280859b58eb86bda42917cf76c44
MD5 b6e30030b7e5d0f0a52558d9acb64c90
BLAKE2b-256 9a6dc274a2f0a9e366877bc857260640b9bd6558c7f761c756e287229943f78c

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 96b2ce8a1540d6987429fc5837e8b4be287e4cc9abdc3e63ceaf2110213e5e66
MD5 98cddcaf636029f9d771d9ffe7a164ff
BLAKE2b-256 2e233539ead9f276d9d667cf37e83937d58f8cd6ac1a1defad672dcdbc72a036

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9414c4719849d7c076a76f38630e778cb9395e5d172bfa2d031efb0153934d90
MD5 5cd67b41761df076dde5e14efd3590b2
BLAKE2b-256 5171e8fe76d1203064347917147b6d8749e6d060f340f338a70022ffdba5c7ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c609c262511a7c45a9fb6a29d79898efbc767f6874172cd87306c430d2665fc9
MD5 143836747e096056d31bb5a2a101ec6d
BLAKE2b-256 7c528319c7e587e64b87ba703b17ed5ad9bfa03dbf0a592dc0ed692b4c978919

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f345c519dd9b6fc9d99c93d5021a8f75f6a5b3d1886a6e051f4894389a3180d4
MD5 f285e9054ba6379130f1902b3f4e12df
BLAKE2b-256 8119531a57a81c1717eb0196acbde2d7e4ea22eaec04ac8cabbc8f7a42d9cd82

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b2038abf2577810593bceb9196f2dae67f0a81dbaa0231d92bb6936c1fd7c9cc
MD5 f8e39888c67221fafacabcdd76d9e6a2
BLAKE2b-256 114826cd150bd3cbc206271849d633a51eb11a7073f5d7e886b694a2dde461dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: photoshopapi-0.9.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 8.7 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for photoshopapi-0.9.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3be148606d1b8afc3898506b1a1a2f8f233bc1644b79904ceed1fc2b26718d42
MD5 6cc8f5ef3f0dba8a38bec7f1960b38b0
BLAKE2b-256 96b9dbbdaa152acbf22fd26f77b8094a0e16efc4d027c779195114ec0b78816a

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp39-cp39-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a3c261493a846402133d5faacfc481b575c14dd86ce456d4ce70b81f7d93ae84
MD5 c418e4b5b3504dd3d6d17d978a628e47
BLAKE2b-256 2269bbb45f689ce6f2164bff12ae1fa869f5c415050a6815a4775fd401f08693

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp39-cp39-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: photoshopapi-0.9.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 8.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for photoshopapi-0.9.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 19c6980fbbecc3a25cb2b28e4ec1dd717f36a8ab12352ef2ee2e08c1fb32a503
MD5 fdeea81ec80a362ee1d6d9f157273371
BLAKE2b-256 597609d53c95d207c6cb0d9d402a5155866047f74f9f18ca61e1939425e3e193

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp38-cp38-win_amd64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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

File details

Details for the file photoshopapi-0.9.1-cp38-cp38-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.1-cp38-cp38-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6ea8d2ac24a1cb3d69b77e626d9cabcf5beada5fc40ea6d2594123815874af0d
MD5 820d943cceed424c94ff1e26840560ba
BLAKE2b-256 51cb6bc261e6204ff7c461f03d057ee841ffdbb6207317c0842aabad528e9a49

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.1-cp38-cp38-manylinux_2_34_x86_64.whl:

Publisher: build-wheels.yml on EmilDohne/PhotoshopAPI

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