From nobody Tue Jun 21 16:38:29 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 C1E1387BB7C; Tue, 21 Jun 2022 16:38:30 +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 4LSBzB1CPBz3GvY; Tue, 21 Jun 2022 16:38:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655829510; 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=1PJPeUhwqvIUq15HPXLfd95Clwv7pXmDSpt9GN4+Jt8=; b=VBy6ON9bIxuAwlB8k7bglLhGBQX6HO6Rfcdg4e24x/xDqYZcZV16VrfVUjrXCKxYKxVqdh T1inANYAg3yLz2856e9HD1/2rKlI6H4+nz/hAwRdIK4U/266xRDD70phxKmo3TzRCo9WuI /gqmd6ouBT159GlLRkLxwykc9EkTd7/8pRE6mBU4hfqH1/IunWSPSTWCFW0n7nsWIVfzTe 8oa4kThtuJ5FrZneTxJ5I8ZZcTGWeD0pX6j9AkDP+pfJ0x+wWGqZKTvXHrAs+DS/Cc8XBh d/YCf9+zwPTuYXVTqNeKRKYKf0uWZUE04jcPfcTFHPo3td9FzqGM1QmEHQWpbw== 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 8301A1561F; Tue, 21 Jun 2022 16:38:29 +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 25LGcTxi060817; Tue, 21 Jun 2022 16:38:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25LGcTSt060816; Tue, 21 Jun 2022 16:38:29 GMT (envelope-from git) Date: Tue, 21 Jun 2022 16:38:29 GMT Message-Id: <202206211638.25LGcTSt060816@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: 903442445d83 - main - www/py-requests-cache93: 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: 903442445d8396d4d0ea6a2c687df5799f256953 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655829510; 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=1PJPeUhwqvIUq15HPXLfd95Clwv7pXmDSpt9GN4+Jt8=; b=XgXKnhBSx94OobyXxxdlq+W7fHTrdJhUdisrRNW4jkRT4XNjTdsazeJEiUfm5KWuTHYGTO ktyC/Lch4qAMRiDGZnGJng3kouBEI8CkfoKtwm9YHGwhWLywiDeCDS88RnuSCfSnQeSXbV RMPiTteCfxv7q8Re0V70XcUYEFE2STWy3UkTiHkv81v/GLhuRrHBtQsPZaNPi6UluDJz7A 7hV1g9PT+4atNaZEbXoAE6Fx2BzI4lJgYiy+vJDe5viVgxdaqdq9OyMZtBAolyAlfNRNQF 1HnPpw9eNPUejHiIoJXjHFLqH9U15WhhsRqhDAlKpvIFFVQakuuPyAEcCFBYAA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655829510; a=rsa-sha256; cv=none; b=JHahAJLQjRoDRf2KicJo67RkuJEDm86vefObC4fiolYG0eYNGiMhJbO1qLwzRh4Nnt7TCt zFgJVcHSCNfX5jPpxBUFzqDg098a2gVlYuSLEzJEI9zTNWTyYpexoVY5DdueowPnn/NYyW IINYOfb6ei8+YR5+FqBAzOZV15l326IvWeCgoD7DxBhIE/k0Sd1/H8VY1ezNPUcaxE+2Yu TbJ/d1DxXbK9x2wEBWMdkYQkuLGPvs/lC3tyJTC9wRIAUMtJYiVLmGUxU4jiUk3PIoNzef cEHFuy9G5Hf60HLgGrlTjZTy8JerjYOKzvdicHpHbteW3wyA20UIQQQQdnpr4A== 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=903442445d8396d4d0ea6a2c687df5799f256953 commit 903442445d8396d4d0ea6a2c687df5799f256953 Author: Po-Chuan Hsieh AuthorDate: 2022-06-21 16:34:22 +0000 Commit: Po-Chuan Hsieh CommitDate: 2022-06-21 16:36:34 +0000 www/py-requests-cache93: Allow build with py-cattrs 22.1.0 Obtained from: https://github.com/requests-cache/requests-cache/commit/66550b5355f4a4f063b4b22c3139a2f941c91eb4 --- www/py-requests-cache93/Makefile | 2 +- www/py-requests-cache93/files/patch-cattrs | 186 +++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+), 1 deletion(-) diff --git a/www/py-requests-cache93/Makefile b/www/py-requests-cache93/Makefile index 33f06ea80c69..cc4bd10f93cc 100644 --- a/www/py-requests-cache93/Makefile +++ b/www/py-requests-cache93/Makefile @@ -13,7 +13,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-cache93/files/patch-cattrs b/www/py-requests-cache93/files/patch-cattrs new file mode 100644 index 000000000000..c94d37779c38 --- /dev/null +++ b/www/py-requests-cache93/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-02-23 03:10:56 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']