Skip to main content

Python bindings for Adobe DNG SDK

Project description

PyDNG — Python bindings for the Adobe DNG SDK

中文版

This project provides fundamental Python bindings for the Adobe DNG SDK so you can read and write DNG (Digital Negative) files from Python.

Features

  • Read DNG files
  • Write DNG files
  • Extract metadata (EXIF, camera info, and more)
  • Access image data (Stage1 and Stage3)
  • Set image data from NumPy arrays
  • Read and write baseline exposure
  • Works naturally with NumPy

Repository layout

  • src/pydng/ — installable Python package (__init__.py, type stubs, py.typed).
  • bindings/ — C++ layer for the pybind11 extension (_native) and dng_validate:
    • include/ — headers (dng.h, utils.h, pch.h)
    • src/pydng_bindings.cpp, dng.cpp
    • main.cpp — entry point for the dng_validate utility.
  • extern/ — vendored SDKs and third-party code (DNG SDK, XMP, libjxl, pybind11, etc.).

CI packaging

On pushes and pull requests, GitHub Actions uses a two-stage pipeline:

  1. Stage 1: Build the core dng shared library for Linux and Windows.
  2. Stage 2: Use cibuildwheel to build Python wheels for all compatible versions (Python 3.8 to 3.12) using the pre-built core library.

This ensures efficient build times and broad compatibility.

Quick start

Install with pip (recommended)

The simplest approach is a one-step install:

# Install from the project root
pip install .

# Editable install (development)
pip install -e .

# Install from a Git repository
pip install git+https://github.com/yourusername/PyDNG.git

pip pulls in build dependencies and drives the CMake build for you.

Manual build

Use a manual CMake workflow if you need full control over configuration and compilation.

Requirements

  • CMake 3.15 or newer
  • Python 3.8 or newer (including development headers for the interpreter you build against)
  • A C++14-capable compiler (GCC 4.9 or newer on Linux, Clang 3.4 or newer on macOS, MSVC 2015 or newer on Windows)
  • pybind11 (via the extern/pybind11 git submodule, or fetched automatically if missing)

Standard build (Recommended)

To build everything (the core library and the Python extension) at once for your current Python environment:

pip install .

Advanced: Separated build

If you want to build the core library once and then build the bindings later (similar to the CI process):

1. Build the core library

mkdir build
cd build
cmake .. -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_DNG_VALIDATE=ON -DCMAKE_INSTALL_PREFIX=../install_dir
cmake --build . --target install --config Release

2. Build the Python bindings using the pre-built core

cd ..
# Point to the install_dir from the previous step
pip install . --config-settings=cmake.args="-DBUILD_DNG_LIBRARY=OFF -DPREBUILT_DNG_PATH=./install_dir"

Building dng_validate for C++ verification

To build the dng_validate command-line tool for verifying your C++ changes:

mkdir build
cd build
cmake .. -DBUILD_DNG_VALIDATE=ON -DBUILD_PYTHON_BINDINGS=OFF
cmake --build . --config Release --target dng_validate

The executable will be located in the build directory (or build/Release on Windows).

Usage

Basic example — read a DNG

import pydng
import numpy as np

# Load from path (raises RuntimeError on failure)
dng = pydng.Dng("input.dng", ignore_enhanced=False)

meta = dng.get_meta()
print(f"Camera: {meta.make} {meta.model}")
print(f"Image size: {meta.width} x {meta.height}")
print(f"ISO: {meta.iso}")
print(f"Exposure time: {meta.exposure_time} s")

data = dng.get_data(enhanced=False)
numpy_array = data.to_numpy()
print(f"Image shape: {numpy_array.shape}")

You can still use dng = pydng.Dng() followed by dng.read(path) if you prefer checking ErrorCode instead of exceptions.

Write a DNG

import pydng
import numpy as np

height, width, channels = 1000, 1500, 3
image_data = np.random.randint(0, 65535, size=(height, width, channels), dtype=np.uint16)

dng = pydng.Dng()

# 3 = ttShort (16-bit unsigned)
dng.set_data(image_data, 3, enhanced=False)

meta = pydng.DngMeta()
meta.make = "My Camera"
meta.model = "Example"
meta.width = width
meta.height = height
meta.iso = 100
meta.exposure_time = 1.0 / 60.0
meta.f_number = 2.8
meta.focal_length = 50.0

dng.set_meta(meta)

error_code = dng.write("output.dng")

API reference

Class Dng

Main entry point for reading and writing DNG files.

Constructor

  • Dng() — empty object; use read() to load a file.
  • Dng(path: str, ignore_enhanced: bool = False) — load path immediately; raises RuntimeError on failure (same behavior as read() returning a non-NONE code).

Methods

  • get_bayer_pattern() -> str
    For a 2×2 rectangular RGB CFA, returns "RGGB", "GRBG", "BGGR", or "GBRG" (row-major tile); otherwise "".

  • set_bayer_pattern(pattern: str) -> None
    Sets the 2×2 Bayer phase; pattern must be one of those four strings (case-insensitive). Requires a 3-plane RGB CFA (or uninitialized mosaic, which is initialized with SetRGB()).

  • read(path: str, ignore_enhanced: bool = False) -> ErrorCode
    Load a DNG from disk (return code; no exception on error).

  • write(path: str) -> ErrorCode
    Save a DNG to disk.

  • get_data(enhanced: bool = False) -> DngData
    Return image data. enhanced=True selects Stage3; False selects Stage1.

  • set_data(data: np.ndarray, pixel_type: int, enhanced: bool = False) -> None
    Set image data. data has shape (height, width, channels).
    pixel_type: numeric code (1 = ttByte, 3 = ttShort, 8 = ttSShort, 4 = ttLong).

  • get_meta() -> DngMeta
    Return metadata.

  • set_meta(meta: DngMeta) -> None
    Apply metadata.

  • get_baseline_exposure() -> float
    Baseline exposure value.

  • set_baseline_exposure(exposure: float) -> None
    Set baseline exposure.

  • get_white_balance() -> List[float]
    Get white balance neutral vector (e.g., [r, g, b] gains).

  • set_white_balance(wb: List[float]) -> None
    Set white balance neutral vector.

Class DngMeta

Metadata for a DNG file.

Fields

  • make, model: camera make and model
  • software: software string
  • artist, copyright: attribution and rights
  • width, height: image dimensions
  • raw_width, raw_height: raw dimensions
  • exposure_time: exposure in seconds
  • f_number: aperture
  • focal_length: focal length in mm
  • iso: sensitivity
  • focal_length_35mm: 35 mm equivalent focal length
  • date_time, date_time_original: timestamps
  • is_monochrome: monochrome flag
  • color_planes, color_space: color layout and space

Class DngData

Image buffer returned by get_data().

Fields

  • width, height, channels: layout
  • pixel_type: internal type code
  • top, left: active-area offset

Methods

  • to_numpy() -> np.ndarray
    Export as a NumPy array.

Constants — ErrorCode

  • NONE: success
  • READ_FILE: read failure
  • WRITE_FILE: write failure
  • BAD_FORMAT: invalid format
  • UNKNOWN: other error

Pixel type codes (see also PIXEL_TYPES.md):

  • 1 — ttByte (8-bit unsigned)
  • 3 — ttShort (16-bit unsigned)
  • 8 — ttSShort (16-bit signed)
  • 4 — ttLong (32-bit unsigned)

Examples

See the examples/ directory:

  • example_read_dng.py — load a DNG and print information
  • example_write_dng.py — build and write a DNG

Notes

  1. MemoryDngData lifetime is tied to the conversion to NumPy; do not try to manually free the underlying pointer.

  2. Pixel types — Choose pixel_type in set_data() so it matches the dtype and layout of your array.

  3. Layout — Image arrays are expected as (height, width, channels).

  4. Windows paths — Paths are handled with the appropriate wide-character APIs where required.

Troubleshooting

Import errors

  1. Confirm the extension module built successfully.
  2. Ensure the build output is on PYTHONPATH or installed into site-packages.
  3. On Windows, native dependencies (dng.dll and related) must be discoverable (same folder as the .pyd or on PATH).

Build failures

  1. Install the Python development package for your interpreter (headers and libs).
  2. Verify CMake finds the intended Python (Python3_ROOT, CMAKE_PREFIX_PATH, etc.).
  3. Confirm you have a working C++14 toolchain.

License

This project builds on the Adobe DNG SDK; use and redistribution must comply with the Adobe license terms that apply to the SDK and to this repository.

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

dngpy-0.1.1.tar.gz (77.8 MB view details)

Uploaded Source

Built Distributions

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

dngpy-0.1.1-cp313-cp313-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.13Windows x86-64

dngpy-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dngpy-0.1.1-cp312-cp312-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.12Windows x86-64

dngpy-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dngpy-0.1.1-cp311-cp311-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.11Windows x86-64

dngpy-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dngpy-0.1.1-cp310-cp310-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.10Windows x86-64

dngpy-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dngpy-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (9.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dngpy-0.1.1-cp39-cp39-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.9Windows x86-64

dngpy-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dngpy-0.1.1-cp38-cp38-win_amd64.whl (5.2 MB view details)

Uploaded CPython 3.8Windows x86-64

dngpy-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file dngpy-0.1.1.tar.gz.

File metadata

  • Download URL: dngpy-0.1.1.tar.gz
  • Upload date:
  • Size: 77.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dngpy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c87ca47a4acb81138c5347481f2555719e5c110367db5107ea31ac5d077d4e31
MD5 fa61d904daff9f8bddf0d1f41beb1b57
BLAKE2b-256 8c8662d919658845453759e136f536ffea77e19b587dc527e188a98857df6e33

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1.tar.gz:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dngpy-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2a293fb01865db732c2411a7190776d509565ef8a4152b4d805fe262899310a0
MD5 a29d1cd91a7a1dfb587a70e5f0392ffe
BLAKE2b-256 02eea3c5ff941f8907a9e8b14a776d013b27a6defeba612686fc31c382412253

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp313-cp313-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 001a126674f36f667d9c84d3c1a996dba1577c399fceae444636fa3fd1db9bb2
MD5 5c0afa0e870e761a7c095f285436d54c
BLAKE2b-256 d6d357e04216ef812a2950f59099a75e62cfbad53ef34776b32db0975e1a7ea5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dngpy-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 384b884ebcbdc3f74bd772fe05e657bc1f27c7892397b0016e5b84566e3b01b7
MD5 abaebccfc92e85e70551fc01fadb0519
BLAKE2b-256 eb767562953b7ab67733d46378bc6341cb943df4a325e6f19d4729d42e23181c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp312-cp312-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b46b821a8653f566e63b6d2ecf11a22bce106e39e7b495c946ed9046833995f5
MD5 0e69fab6ee2268d739996a0e69384491
BLAKE2b-256 a2d12ec6bb191e8dbda2a0df25d8c745165e8fd40148898e8d7ffa9ee3978a9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dngpy-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 31eaf1a48a9b0efcae91ae40c99f50ba37015069ff741c74fa6393d18b78131d
MD5 2f8c8f4323aa39364b6472e5bff365c1
BLAKE2b-256 019c2d525bde295b5b1e60c17bae4f6dc803ed10b290d9a740208a2d76c6f4be

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp311-cp311-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5fd5ca09cd7063f53c4c32280fbfc03f59251386349c990149c9cbb80f294a7d
MD5 72abdceb7783e0ffad7f3691c4767527
BLAKE2b-256 dc13041f4b3bb848c0717f43903c6d890d30b2a52536d21b8c0ed30ef2aef3f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dngpy-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 62d1afe8aba1aab630a25e158ba7e8ad5575876ccd7719fa3ab85eba0e01c007
MD5 58a506722a559db6d25cd2b60eb6d76e
BLAKE2b-256 ff58e76aeaca3971b031ef161e8ca783f26a33439302e46d80403f58febe3cf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp310-cp310-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 508d77227dcf5b2cd0f52c655de16fe3447148b7a62f94b70ac34013cc73e965
MD5 8c5444a2c0da7e2eafa12d9b72f8de88
BLAKE2b-256 8309cadc9db9d611923d53380a7301b568d773111d994b784a5083fc3a10f3ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a6267045d8b1f84a8f78e70092cff05cc913ce4a6e8fc5232016dfe2b38c88d
MD5 2c1057980e4cc0521148126d646d99aa
BLAKE2b-256 8cb17d05fd23cebfaab1ab0c1ac0bc7362dfb2e1932c1fdce4906a314c653144

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 5.2 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 dngpy-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2b506ccf3f0d6f7ad08035093014556486cd78fb6f8b53d0ad5f3ab01e29143b
MD5 2328a9d3c40292208370bf57339e59e4
BLAKE2b-256 5bd0c86650044de6b59043f10d40a9ab3daa5204636e203c1621a79d04d0865f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp39-cp39-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52d520fbd67bfc7651d00290555158e83ccd05f7e0e6f7f21e596b8450b57c21
MD5 cdd6e0ec76355a41c6d1a55d2a0fa832
BLAKE2b-256 7f0586b508a0bf7989a032dbf51a2d7ddc8e0da43e58880a2722c3a093cf5ea4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: dngpy-0.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 5.2 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 dngpy-0.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f4309c8c1b302640777c03cb00d49573aa7bfaf3b4514ff4b48a70069d475d71
MD5 db86e6db25a059ac4f9df2162626c25e
BLAKE2b-256 6cd72bcacff3731aa0ab379002c606fcef53ec0528799be7f0676ad7b78fb94d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp38-cp38-win_amd64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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

File details

Details for the file dngpy-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dngpy-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db7e9365549864b12e863c77bf928d3cbf7cfdea4eb3b28392b664f1a1615223
MD5 981e840037c1f7cb2b71a74a9967c44c
BLAKE2b-256 da92e3884009f9ef6420ba07f57f77d0cecc423dd291a7d3e99107dadae1d7ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for dngpy-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on Henry-GongZY/PyDNG

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