From nobody Tue Jun 21 16:37:39 2022 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AD566879D74; Tue, 21 Jun 2022 16:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LSByD35SWz3GNr; Tue, 21 Jun 2022 16:37:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655829460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cI3d0w/spLbySaEv7VtfstP6nKELcJwj8AgbVM/GT7E=; b=m9p/RHEP6aEXTtI6F6iIyzVmoIIhteIBBCIgqtVHYFCqjMoQPfNm6BYCnDQyYdgnLEK2hC 6LT4Ch5xkvIEwDKWFFfTCsdd+pOPOLTn+2wWYTrZXoLrduCM+G/+NXZF614ovNmynLEYGE fmb4QyY1VrrDX7AOyFvxKqZY8T3SNtYAI6JF/e4eMRtJuMtGaipb66x7XQSPjNXqVtlkqb Wb5dwIjSXTntQUqySIaKUaTQlvDoTt/pn0wywKjREQ3nC84qxo3vs80M7i0cLNbonR/t0Q lJl2yR2/5GED2z4zqS2iRE72UzdTcx1654fKdbz6yMN/tXjhZIB82bmSGAAKhA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D659215691; Tue, 21 Jun 2022 16:37:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 25LGbdS2059734; Tue, 21 Jun 2022 16:37:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25LGbdNZ059733; Tue, 21 Jun 2022 16:37:39 GMT (envelope-from git) Date: Tue, 21 Jun 2022 16:37:39 GMT Message-Id: <202206211637.25LGbdNZ059733@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Po-Chuan Hsieh Subject: git: bee0130be51e - main - www/py-requests-cache: Allow build with py-cattrs 22.1.0 List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sunpoet X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bee0130be51eef2ce57f53c31d7d9552ae2a0257 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655829460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cI3d0w/spLbySaEv7VtfstP6nKELcJwj8AgbVM/GT7E=; b=vYVoVBU9Kkmq0HkkWDez9DOoazBXCaPfRg1ekOpso7cVM0m5ebNt82yMqr3AvrZfwd17Pi /x9G3CDFoGIb6+6mVPASt2o9lSKBqln1Tf4tluTd6W1iWFQorvqJU7LaDSZ01SDt7OlLfz Xj0qpOrG02d8CA1VW4SFbOHeG0WaKY+6ccPY9w5H7XJHlMHtsutVZeQrifxwA76SRzrkUZ WIwPSgYuTb9nibFr5qhd++w1J0Iu9JoQhKpSlBmU3K9AFAGRkiguFQBSNEIb6u1pI9ZowV oeAGz3Kq7xCNKkb94WeaaMZ7+niIetkXL4C8wZdKSCAVfkO6UUvppUd/6bmnhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655829460; a=rsa-sha256; cv=none; b=jlqoW5cwqb2Ev/g0dOxSFVdVBdoNITU6K+kTbzlpWCLo3Eoe5p5fXChqc2a+1klC5Eyu9s Brwlh2PdqmjClox9YfZfBna7WPKCD73i+WpSNr45lR01YRJ1LZGvIYCtFLDGj/5oUZRNBl CVNNun34xxxk3cy+zgQ8Fv33E9GwQX2xJUP7f5X/1cSkI++I59h6cmZhIhjQRhm7poRFQY 4n0dKCFUe19E+wAtTBltJwsFQcTHhuiPAv89/haJ5O4X0ap5pC3/eOI2TUsxW2qi+6vm3m v0Lp+4V/z9Gpa/rxMCsaS9aInbe4wNheZGz1nQ53u2hCRrKWk8Cb/Ds+GDqpNw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=bee0130be51eef2ce57f53c31d7d9552ae2a0257 commit bee0130be51eef2ce57f53c31d7d9552ae2a0257 Author: Po-Chuan Hsieh AuthorDate: 2022-06-21 16:33:25 +0000 Commit: Po-Chuan Hsieh CommitDate: 2022-06-21 16:36:24 +0000 www/py-requests-cache: Allow build with py-cattrs 22.1.0 Obtained from: https://github.com/requests-cache/requests-cache/commit/66550b5355f4a4f063b4b22c3139a2f941c91eb4 --- www/py-requests-cache/Makefile | 2 +- www/py-requests-cache/files/patch-cattrs | 186 +++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+), 1 deletion(-) diff --git a/www/py-requests-cache/Makefile b/www/py-requests-cache/Makefile index 18a5ccd42414..917ead1689ed 100644 --- a/www/py-requests-cache/Makefile +++ b/www/py-requests-cache/Makefile @@ -14,7 +14,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}appdirs>=1.4.4<2.0.0:devel/py-appdirs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}attrs>=21.2<22.0:devel/py-attrs@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}cattrs>=1.8<2.0:devel/py-cattrs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}cattrs>=1.8<22.2:devel/py-cattrs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}requests>=2.22<3.0:www/py-requests@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}url-normalize>=1.4<2.0:net/py-url-normalize@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}urllib3>=1.25.5,1<2.0.0,1:net/py-urllib3@${PY_FLAVOR} diff --git a/www/py-requests-cache/files/patch-cattrs b/www/py-requests-cache/files/patch-cattrs new file mode 100644 index 000000000000..7b551569bd72 --- /dev/null +++ b/www/py-requests-cache/files/patch-cattrs @@ -0,0 +1,186 @@ +Obtained from: https://github.com/requests-cache/requests-cache/commit/66550b5355f4a4f063b4b22c3139a2f941c91eb4 + +--- requests_cache/serializers/preconf.py.orig 2022-04-23 00:00:39 UTC ++++ requests_cache/serializers/preconf.py +@@ -1,9 +1,10 @@ ++# flake8: noqa: F841 + """The ``cattrs`` library includes a number of `pre-configured converters + `_ that perform some pre-serialization steps + required for specific serialization formats. + + This module wraps those converters as serializer :py:class:`.Stage` objects. These are then used as +-a stage in a :py:class:`.SerializerPipeline`, which runs after the base converter and before the ++stages in a :py:class:`.SerializerPipeline`, which runs after the base converter and before the + format's ``dumps()`` (or equivalent) method. + + For any optional libraries that aren't installed, the corresponding serializer will be a placeholder +@@ -13,70 +14,95 @@ class that raises an ``ImportError`` at initialization + :nosignatures: + """ + import pickle ++from datetime import timedelta ++from decimal import Decimal + from functools import partial ++from importlib import import_module + +-from cattr.preconf import bson as bson_preconf +-from cattr.preconf import json as json_preconf +-from cattr.preconf import msgpack, orjson, pyyaml, tomlkit, ujson ++from cattr import GenConverter + + from .._utils import get_placeholder_class + from .cattrs import CattrStage + from .pipeline import SerializerPipeline, Stage + +-base_stage = ( +- CattrStage() +-) #: Base stage for all serializer pipelines (or standalone dict serializer) +-dict_serializer = base_stage #: Partial serializer that unstructures responses into dicts +-bson_preconf_stage = CattrStage(bson_preconf.make_converter) #: Pre-serialization steps for BSON +-json_preconf_stage = CattrStage(json_preconf.make_converter) #: Pre-serialization steps for JSON +-msgpack_preconf_stage = CattrStage(msgpack.make_converter) #: Pre-serialization steps for msgpack +-orjson_preconf_stage = CattrStage(orjson.make_converter) #: Pre-serialization steps for orjson +-yaml_preconf_stage = CattrStage(pyyaml.make_converter) #: Pre-serialization steps for YAML +-toml_preconf_stage = CattrStage(tomlkit.make_converter) #: Pre-serialization steps for TOML +-ujson_preconf_stage = CattrStage(ujson.make_converter) #: Pre-serialization steps for ultrajson +-pickle_serializer = SerializerPipeline( +- [base_stage, pickle], is_binary=True +-) #: Complete pickle serializer ++ ++def make_stage(preconf_module: str, **kwargs): ++ """Create a preconf serializer stage from a module name, if dependencies are installed""" ++ try: ++ factory = import_module(preconf_module).make_converter ++ return CattrStage(factory, **kwargs) ++ except ImportError as e: ++ return get_placeholder_class(e) ++ ++ ++# Pre-serialization stages ++base_stage = CattrStage() #: Base stage for all serializer pipelines + utf8_encoder = Stage(dumps=str.encode, loads=lambda x: x.decode()) #: Encode to bytes ++bson_preconf_stage = make_stage('cattr.preconf.bson') #: Pre-serialization steps for BSON ++json_preconf_stage = make_stage('cattr.preconf.json') #: Pre-serialization steps for JSON ++msgpack_preconf_stage = make_stage('cattr.preconf.msgpack') #: Pre-serialization steps for msgpack ++orjson_preconf_stage = make_stage('cattr.preconf.orjson') #: Pre-serialization steps for orjson ++toml_preconf_stage = make_stage('cattr.preconf.tomlkit') #: Pre-serialization steps for TOML ++ujson_preconf_stage = make_stage('cattr.preconf.ujson') #: Pre-serialization steps for ultrajson ++yaml_preconf_stage = make_stage('cattr.preconf.pyyaml') #: Pre-serialization steps for YAML + ++# Basic serializers with no additional dependencies ++dict_serializer = SerializerPipeline( ++ [base_stage], is_binary=False ++) #: Partial serializer that unstructures responses into dicts ++pickle_serializer = SerializerPipeline( ++ [base_stage, Stage(pickle)], is_binary=True ++) #: Pickle serializer + + # Safe pickle serializer +-try: ++def signer_stage(secret_key=None, salt='requests-cache') -> Stage: ++ """Create a stage that uses ``itsdangerous`` to add a signature to responses on write, and ++ validate that signature with a secret key on read. Can be used in a ++ :py:class:`.SerializerPipeline` in combination with any other serialization steps. ++ """ + from itsdangerous import Signer + +- def signer_stage(secret_key=None, salt='requests-cache') -> Stage: +- """Create a stage that uses ``itsdangerous`` to add a signature to responses on write, and +- validate that signature with a secret key on read. Can be used in a +- :py:class:`.SerializerPipeline` in combination with any other serialization steps. +- """ +- return Stage(Signer(secret_key=secret_key, salt=salt), dumps='sign', loads='unsign') ++ return Stage( ++ Signer(secret_key=secret_key, salt=salt), ++ dumps='sign', ++ loads='unsign', ++ ) + +- def safe_pickle_serializer( +- secret_key=None, salt='requests-cache', **kwargs +- ) -> SerializerPipeline: +- """Create a serializer that uses ``pickle`` + ``itsdangerous`` to add a signature to +- responses on write, and validate that signature with a secret key on read. +- """ +- return SerializerPipeline( +- [base_stage, pickle, signer_stage(secret_key, salt)], is_binary=True +- ) + ++def safe_pickle_serializer(secret_key=None, salt='requests-cache', **kwargs) -> SerializerPipeline: ++ """Create a serializer that uses ``pickle`` + ``itsdangerous`` to add a signature to ++ responses on write, and validate that signature with a secret key on read. ++ """ ++ return SerializerPipeline( ++ [base_stage, Stage(pickle), signer_stage(secret_key, salt)], ++ is_binary=True, ++ ) ++ ++ ++try: ++ import itsdangerous # noqa: F401 + except ImportError as e: + signer_stage = get_placeholder_class(e) + safe_pickle_serializer = get_placeholder_class(e) + + + # BSON serializer +-try: ++def _get_bson_functions(): ++ """Handle different function names between pymongo's bson and standalone bson""" + try: +- from bson import decode as _bson_loads +- from bson import encode as _bson_dumps ++ import pymongo # noqa: F401 ++ ++ return {'dumps': 'encode', 'loads': 'decode'} + except ImportError: +- from bson import dumps as _bson_dumps +- from bson import loads as _bson_loads ++ return {'dumps': 'dumps', 'loads': 'loads'} + ++ ++try: ++ import bson ++ + bson_serializer = SerializerPipeline( +- [bson_preconf_stage, Stage(dumps=_bson_dumps, loads=_bson_loads)], is_binary=True ++ [bson_preconf_stage, Stage(bson, **_get_bson_functions())], ++ is_binary=True, + ) #: Complete BSON serializer; uses pymongo's ``bson`` if installed, otherwise standalone ``bson`` codec + except ImportError as e: + bson_serializer = get_placeholder_class(e) +@@ -94,7 +120,8 @@ except ImportError: + + _json_stage = Stage(dumps=partial(json.dumps, indent=2), loads=json.loads) + json_serializer = SerializerPipeline( +- [_json_preconf_stage, _json_stage], is_binary=False ++ [_json_preconf_stage, _json_stage], ++ is_binary=False, + ) #: Complete JSON serializer; uses ultrajson if available + + +@@ -102,11 +129,9 @@ json_serializer = SerializerPipeline( + try: + import yaml + ++ _yaml_stage = Stage(yaml, loads='safe_load', dumps='safe_dump') + yaml_serializer = SerializerPipeline( +- [ +- yaml_preconf_stage, +- Stage(yaml, loads='safe_load', dumps='safe_dump'), +- ], ++ [yaml_preconf_stage, _yaml_stage], + is_binary=False, + ) #: Complete YAML serializer + except ImportError as e: +--- setup.py.orig 1970-01-01 00:00:00 UTC ++++ setup.py +@@ -13,7 +13,7 @@ package_data = \ + install_requires = \ + ['appdirs>=1.4.4,<2.0.0', + 'attrs>=21.2,<22.0', +- 'cattrs>=1.8,<2.0', ++ 'cattrs>=1.8,<22.2', + 'requests>=2.22,<3.0', + 'url-normalize>=1.4,<2.0', + 'urllib3>=1.25.5,<2.0.0']