Loading pkgs/development/python-modules/pgpy/default.nix +18 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ buildPythonPackage, setuptools, pyasn1, fetchpatch, cryptography, pytestCheckHook, }: Loading @@ -15,7 +16,7 @@ buildPythonPackage rec { disabled = pythonOlder "3.6"; format = "pyproject"; pyproject = true; src = fetchFromGitHub { owner = "SecurityInnovation"; Loading @@ -24,24 +25,35 @@ buildPythonPackage rec { hash = "sha256-47YiHNxmjyCOYHHUV3Zyhs3Att9HZtCXYfbN34ooTxU="; }; nativeBuildInputs = [ setuptools ]; build-system = [ setuptools ]; propagatedBuildInputs = [ dependencies = [ pyasn1 cryptography ]; patches = [ # https://github.com/SecurityInnovation/PGPy/issues/462 ./pr-443.patch ]; postPatch = '' # https://github.com/SecurityInnovation/PGPy/issues/472 substituteInPlace tests/test_10_exceptions.py \ --replace-fail ", 512" ", 1024" # We need longer test key because pgp deprecated length=512 ''; nativeCheckInputs = [ pytestCheckHook ]; meta = with lib; { meta = { homepage = "https://github.com/SecurityInnovation/PGPy"; description = "Pretty Good Privacy for Python"; longDescription = '' PGPy is a Python library for implementing Pretty Good Privacy into Python programs, conforming to the OpenPGP specification per RFC 4880. ''; license = licenses.bsd3; maintainers = with maintainers; [ license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ eadwu dotlambda ]; Loading pkgs/development/python-modules/pgpy/pr-443.patch 0 → 100644 +45 −0 Original line number Diff line number Diff line From 221a1f15a42f3ef76ccafcddf66b7c4ade391bff Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor <dkg@fifthhorseman.net> Date: Sat, 11 Feb 2023 12:17:00 -0500 Subject: [PATCH] drop use of imghdr imghdr is deprecated and will be removed in python 3.13 (see https://peps.python.org/pep-0594/#imghdr) The relevant code in imghdr is just: ``` def test_jpeg(h, f): """JPEG data with JFIF or Exif markers; and raw JPEG""" if h[6:10] in (b'JFIF', b'Exif'): return 'jpeg' elif h[:4] == b'\xff\xd8\xff\xdb': return 'jpeg' ``` So we transplant it directly --- pgpy/constants.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pgpy/constants.py b/pgpy/constants.py index 28a4561a..983916d4 100644 --- a/pgpy/constants.py +++ b/pgpy/constants.py @@ -2,7 +2,6 @@ """ import bz2 import hashlib -import imghdr import os import zlib import warnings @@ -429,8 +428,7 @@ class ImageEncoding(IntEnum): @classmethod def encodingof(cls, imagebytes): - type = imghdr.what(None, h=imagebytes) - if type == 'jpeg': + if imagebytes[6:10] in (b'JFIF', b'Exif') or imagebytes[:4] == b'\xff\xd8\xff\xdb': return ImageEncoding.JPEG return ImageEncoding.Unknown # pragma: no cover Loading
pkgs/development/python-modules/pgpy/default.nix +18 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ buildPythonPackage, setuptools, pyasn1, fetchpatch, cryptography, pytestCheckHook, }: Loading @@ -15,7 +16,7 @@ buildPythonPackage rec { disabled = pythonOlder "3.6"; format = "pyproject"; pyproject = true; src = fetchFromGitHub { owner = "SecurityInnovation"; Loading @@ -24,24 +25,35 @@ buildPythonPackage rec { hash = "sha256-47YiHNxmjyCOYHHUV3Zyhs3Att9HZtCXYfbN34ooTxU="; }; nativeBuildInputs = [ setuptools ]; build-system = [ setuptools ]; propagatedBuildInputs = [ dependencies = [ pyasn1 cryptography ]; patches = [ # https://github.com/SecurityInnovation/PGPy/issues/462 ./pr-443.patch ]; postPatch = '' # https://github.com/SecurityInnovation/PGPy/issues/472 substituteInPlace tests/test_10_exceptions.py \ --replace-fail ", 512" ", 1024" # We need longer test key because pgp deprecated length=512 ''; nativeCheckInputs = [ pytestCheckHook ]; meta = with lib; { meta = { homepage = "https://github.com/SecurityInnovation/PGPy"; description = "Pretty Good Privacy for Python"; longDescription = '' PGPy is a Python library for implementing Pretty Good Privacy into Python programs, conforming to the OpenPGP specification per RFC 4880. ''; license = licenses.bsd3; maintainers = with maintainers; [ license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ eadwu dotlambda ]; Loading
pkgs/development/python-modules/pgpy/pr-443.patch 0 → 100644 +45 −0 Original line number Diff line number Diff line From 221a1f15a42f3ef76ccafcddf66b7c4ade391bff Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor <dkg@fifthhorseman.net> Date: Sat, 11 Feb 2023 12:17:00 -0500 Subject: [PATCH] drop use of imghdr imghdr is deprecated and will be removed in python 3.13 (see https://peps.python.org/pep-0594/#imghdr) The relevant code in imghdr is just: ``` def test_jpeg(h, f): """JPEG data with JFIF or Exif markers; and raw JPEG""" if h[6:10] in (b'JFIF', b'Exif'): return 'jpeg' elif h[:4] == b'\xff\xd8\xff\xdb': return 'jpeg' ``` So we transplant it directly --- pgpy/constants.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pgpy/constants.py b/pgpy/constants.py index 28a4561a..983916d4 100644 --- a/pgpy/constants.py +++ b/pgpy/constants.py @@ -2,7 +2,6 @@ """ import bz2 import hashlib -import imghdr import os import zlib import warnings @@ -429,8 +428,7 @@ class ImageEncoding(IntEnum): @classmethod def encodingof(cls, imagebytes): - type = imghdr.what(None, h=imagebytes) - if type == 'jpeg': + if imagebytes[6:10] in (b'JFIF', b'Exif') or imagebytes[:4] == b'\xff\xd8\xff\xdb': return ImageEncoding.JPEG return ImageEncoding.Unknown # pragma: no cover