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.0-cp314-cp314-win_amd64.whl (8.9 MB view details)

Uploaded CPython 3.14Windows x86-64

photoshopapi-0.9.0-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.0-cp314-cp314-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

photoshopapi-0.9.0-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.0-cp313-cp313-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

photoshopapi-0.9.0-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.0-cp312-cp312-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

photoshopapi-0.9.0-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.0-cp311-cp311-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

photoshopapi-0.9.0-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.0-cp310-cp310-macosx_15_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

photoshopapi-0.9.0-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.0-cp38-cp38-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.8Windows x86-64

photoshopapi-0.9.0-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.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 37002a73217dd820cf0cfc215445d7fc91fd6fa4fb4ac786ce3030575cd935c0
MD5 7ee9bd95912613db4437377e73404cc8
BLAKE2b-256 9022eaa424d06791887eba39053f047969d5948d09676adbb7f09af8db2a6174

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 03385ac8ee3005d73f5d735be6d89076b30fcc71476d6fe600571cf93ec732c7
MD5 c9e0f43c9299162fc45a490ff5bc25ed
BLAKE2b-256 40f9bbf2f9e26208bb355c622be8ee3910e8e2bea04495886ac5d935c463b55c

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1713b2e86cd67523ff4d438b6c01977cf03eddbdbdb8145874fd32ecf6256be9
MD5 1582ac28bcf29c5e3960860bf929057b
BLAKE2b-256 e563f86db6453c2308bfe677aad6b476fa7907b33299ea07eb25227d8b4315c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 71f91431fc30ae5ba20eae448768bf3800b9562f1166f83593a3d374fd5b2a58
MD5 f479fef13c8962467802798c56844119
BLAKE2b-256 cf65f95ebe09a5abe353eaccf0d8228081992f440040ea23fb4449d24d52e57f

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cdee27ae7627982df3baa28ecb7a12d7bfaee04c6670d9860dcc6c7235ce888a
MD5 fd1b08e581475929ea6912b973d5a419
BLAKE2b-256 84de7c781199ce59a195542d0c3e1f9b92bfd96071fe05e8d5eea09d00f645a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 199bb3f5e967918200a1dacc31a5ab12bf20cf16ad5b53d3735944160c1823f6
MD5 f13f16cf99394cfaee221362c4508ecb
BLAKE2b-256 39e6016abc432be80a5b5f0d69b29424fd33ea981e6b1ed09f7f3ee8cffeba8e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 63b090c5c8c3bcae1204b8c540bbf7af3a39832d0d368364da1eaa1f2479f2af
MD5 3e9076229c1280987a855ca3c77c0138
BLAKE2b-256 52c74c5fcf4d9d9d3cbbb9a034d22065e18c502c7e66cef3327957d43855ac3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c995fb8b8e3ab3f498c1e03d591bae72466c8159d7eb52d0666d0e9b2d0c27c7
MD5 bf20ea096269e1bf7ac71ff7761b72e5
BLAKE2b-256 91cc069ed191fd94ccf86a350eb21bdca680dea4bd4c854816d39bc139ac6256

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2e016067fe959ec219e0d09827913db97b10f76e2f82a4e55cfdd743d6a2af08
MD5 a3896142393b404fb7176069cab8a2e3
BLAKE2b-256 832b030ba14787b4a54963ab26cff6fe0a30197e9504859c678d5c343dbc4626

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5e7893499fb99d3608733501e4591118b580f7870170b118f4882ef39845e8be
MD5 02786f0a9c69c87f2975143299dcfafb
BLAKE2b-256 2fc88ae3e11001aebec32ad75b2dd437e23c4b92d7d6d5f4f689e24245d52a43

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d2d8a38014d170a84b38585cff2440117bc96cc74e22a6d6d2b4090188616e7c
MD5 ee58e22d6ccdc3a18863d96ae294d99a
BLAKE2b-256 1038fe1bb17f5047b7dec9a0b20b9ceae34d22e58d01a40c27b637fa3017e7c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2fd2eabe886086b071f5c28c4dd99d155f5ad895c9a0fea04f7e8cf61e587c80
MD5 3186691392ae80296d8fbc7b532c68f9
BLAKE2b-256 484c3be68de7426d412b3269f3fa2356a6d2bbad97ee7eb35bb29bda28c41027

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 36aad66c358f302048e7117571440e094d688370e1965f23f7f2f6978ca8e04e
MD5 b24a1ff1729a3791b9dca88950e14846
BLAKE2b-256 637f9c269fee4733ed5165b5307880c5fac4908d4e0ceeea0dd2ab5c3fcf7fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2c9d717ff14740a0dbc088d10f44cbbb0289e65df22e46417e855d759522e9fc
MD5 be8ce2c877f72abda602c7924541eff7
BLAKE2b-256 ebb4b7dad172afe43ecde1f7121b3b615c3823ac6c9c8beabd2aa56c6fc0da20

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3ea7f26120d3bfdfe729e53906790679adcfee2c6d621bc610900262f4053c17
MD5 093b535dc88c4c38f45faa1e65a867fd
BLAKE2b-256 a979c51b14696adb5bcecb8d24ede5b7a41e727ab099b246e5829c075b116853

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: photoshopapi-0.9.0-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.7

File hashes

Hashes for photoshopapi-0.9.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 97c377c254c00003427625770f5b3b261be52a3b2be8162b8c83e85638246ccb
MD5 10a8185ca1009b033e7838c176448261
BLAKE2b-256 4d3825e0649feab82a68dd786ab466f1c86b3c83ef22e618af1f078e059f7ed5

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 52bbcb72e04720a0d80f304f4466f90d92ac23f744cd5af7bbabbbe3db7c420e
MD5 f94cafa543ef5fb5597e4b45e122567a
BLAKE2b-256 381a6100e286e560096f89768fdea98fa32f8ec4cbc89401704336b213caada5

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: photoshopapi-0.9.0-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.7

File hashes

Hashes for photoshopapi-0.9.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 653f69baadafa3b411707da15809dc1030103567b0024a178dc4f58efeadcffb
MD5 6076aca3324b9b93ba238c924d426ec3
BLAKE2b-256 47d172313f33869e8cf27328ab06bfe93bdcdbfc230a55aaf8af0e76b81bfba9

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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.0-cp38-cp38-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for photoshopapi-0.9.0-cp38-cp38-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 412bc4859f3e478bc8ea8135cb17f00ed03515d108b4e3fb679980ce2739f178
MD5 9984376105d6a331d5c8103caa36bcc5
BLAKE2b-256 986bd2d20247d50ca4ed21f4061370d599e9a230250a94ad2e05c3998e6f5c50

See more details on using hashes here.

Provenance

The following attestation bundles were made for photoshopapi-0.9.0-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