git: b0f76cf31497 - main - devel/py-pendulum: Update to 3.0.0

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Wed, 19 Mar 2025 18:18:35 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=b0f76cf31497e4c0a768e1c67e943bbb06504b59

commit b0f76cf31497e4c0a768e1c67e943bbb06504b59
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2025-03-19 18:15:53 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2025-03-19 18:15:53 +0000

    devel/py-pendulum: Update to 3.0.0
    
    - Update WWW
    - Update version requirement of RUN_DEPENDS
    - Convert to USE_PYTHON=pep517
    - Remove PORTSCOUT
    - Update pkg-descr
    - Take maintainership
    
    Changes:        https://github.com/python-pendulum/pendulum/releases
                    https://pendulum.eustace.io/history/
---
 devel/py-pendulum/Makefile        | 29 +++++++-------
 devel/py-pendulum/Makefile.crates | 37 ++++++++++++++++++
 devel/py-pendulum/distinfo        | 80 +++++++++++++++++++++++++++++++++++++--
 devel/py-pendulum/pkg-descr       | 20 +++++++---
 4 files changed, 143 insertions(+), 23 deletions(-)

diff --git a/devel/py-pendulum/Makefile b/devel/py-pendulum/Makefile
index 252e9ffa2979..6c2f4a5edb45 100644
--- a/devel/py-pendulum/Makefile
+++ b/devel/py-pendulum/Makefile
@@ -1,28 +1,29 @@
 PORTNAME=	pendulum
-PORTVERSION=	2.1.1
-PORTREVISION=	3
+PORTVERSION=	3.0.0
 CATEGORIES=	devel python
 MASTER_SITES=	PYPI
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTFILES=	pendulum-${PORTVERSION}${EXTRACT_SUFX}
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	sunpoet@FreeBSD.org
 COMMENT=	Python package to ease datetimes manipulation
-WWW=		https://pendulum.eustace.io
+WWW=		https://pendulum.eustace.io/ \
+		https://pendulum.eustace.io/docs/ \
+		https://github.com/python-pendulum/pendulum
 
 LICENSE=	MIT
-LICENSE_FILE=	${WRKSRC}/LICENSE
 
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}maturin>=1.0<2.0:devel/py-maturin@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}python-dateutil>=2.6:devel/py-python-dateutil@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pytz>=2018.3:devel/py-pytz@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pytzdata>=2020.1:devel/py-pytzdata@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}time-machine>=2.6.0:devel/py-time-machine@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}tzdata>=2020.1:devel/py-tzdata@${PY_FLAVOR}
 
-USES=		python
-USE_PYTHON=	autoplist distutils
+USES=		cargo python:3.9+
+USE_PYTHON=	autoplist concurrent pep517
 
-PORTSCOUT=	skipv:2.1.2
-
-post-install:
-	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/pendulum/_extensions/_helpers*.so
-	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/pendulum/parsing/_iso8601*.so
+CARGO_BUILD=	no
+CARGO_CARGOLOCK=${WRKSRC}/rust/Cargo.lock
+CARGO_CARGOTOML=${WRKSRC}/rust/Cargo.toml
+CARGO_INSTALL=	no
 
 .include <bsd.port.mk>
diff --git a/devel/py-pendulum/Makefile.crates b/devel/py-pendulum/Makefile.crates
new file mode 100644
index 000000000000..58fccca3c271
--- /dev/null
+++ b/devel/py-pendulum/Makefile.crates
@@ -0,0 +1,37 @@
+CARGO_CRATES=	autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		cc-1.0.79 \
+		cfg-if-1.0.0 \
+		indoc-1.0.9 \
+		libc-0.2.139 \
+		libmimalloc-sys-0.1.35 \
+		lock_api-0.4.9 \
+		memoffset-0.9.0 \
+		mimalloc-0.1.39 \
+		once_cell-1.17.1 \
+		parking_lot-0.12.1 \
+		parking_lot_core-0.9.7 \
+		proc-macro2-1.0.51 \
+		pyo3-0.19.1 \
+		pyo3-build-config-0.19.1 \
+		pyo3-ffi-0.19.1 \
+		pyo3-macros-0.19.1 \
+		pyo3-macros-backend-0.19.1 \
+		python3-dll-a-0.2.9 \
+		quote-1.0.23 \
+		redox_syscall-0.2.16 \
+		scopeguard-1.1.0 \
+		smallvec-1.10.0 \
+		syn-1.0.109 \
+		target-lexicon-0.12.6 \
+		unicode-ident-1.0.6 \
+		unindent-0.1.11 \
+		windows-sys-0.45.0 \
+		windows-targets-0.42.1 \
+		windows_aarch64_gnullvm-0.42.1 \
+		windows_aarch64_msvc-0.42.1 \
+		windows_i686_gnu-0.42.1 \
+		windows_i686_msvc-0.42.1 \
+		windows_x86_64_gnu-0.42.1 \
+		windows_x86_64_gnullvm-0.42.1 \
+		windows_x86_64_msvc-0.42.1
diff --git a/devel/py-pendulum/distinfo b/devel/py-pendulum/distinfo
index 618d84ab8223..66b194b8edf6 100644
--- a/devel/py-pendulum/distinfo
+++ b/devel/py-pendulum/distinfo
@@ -1,3 +1,77 @@
-TIMESTAMP = 1594728548
-SHA256 (pendulum-2.1.1.tar.gz) = d97739a7a5d5fc64e98bab46b292ac9f15aee88b5d3851cd6037d011a7b18af0
-SIZE (pendulum-2.1.1.tar.gz) = 84012
+TIMESTAMP = 1742405456
+SHA256 (pendulum-3.0.0.tar.gz) = 5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e
+SIZE (pendulum-3.0.0.tar.gz) = 84524
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/cc-1.0.79.crate) = 50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f
+SIZE (rust/crates/cc-1.0.79.crate) = 62624
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/indoc-1.0.9.crate) = bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306
+SIZE (rust/crates/indoc-1.0.9.crate) = 13475
+SHA256 (rust/crates/libc-0.2.139.crate) = 201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79
+SIZE (rust/crates/libc-0.2.139.crate) = 638983
+SHA256 (rust/crates/libmimalloc-sys-0.1.35.crate) = 3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664
+SIZE (rust/crates/libmimalloc-sys-0.1.35.crate) = 184695
+SHA256 (rust/crates/lock_api-0.4.9.crate) = 435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df
+SIZE (rust/crates/lock_api-0.4.9.crate) = 25685
+SHA256 (rust/crates/memoffset-0.9.0.crate) = 5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c
+SIZE (rust/crates/memoffset-0.9.0.crate) = 9033
+SHA256 (rust/crates/mimalloc-0.1.39.crate) = fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c
+SIZE (rust/crates/mimalloc-0.1.39.crate) = 3727
+SHA256 (rust/crates/once_cell-1.17.1.crate) = b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3
+SIZE (rust/crates/once_cell-1.17.1.crate) = 32856
+SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
+SIZE (rust/crates/parking_lot-0.12.1.crate) = 40967
+SHA256 (rust/crates/parking_lot_core-0.9.7.crate) = 9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521
+SIZE (rust/crates/parking_lot_core-0.9.7.crate) = 32412
+SHA256 (rust/crates/proc-macro2-1.0.51.crate) = 5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6
+SIZE (rust/crates/proc-macro2-1.0.51.crate) = 41804
+SHA256 (rust/crates/pyo3-0.19.1.crate) = ffb88ae05f306b4bfcde40ac4a51dc0b05936a9207a4b75b798c7729c4258a59
+SIZE (rust/crates/pyo3-0.19.1.crate) = 418297
+SHA256 (rust/crates/pyo3-build-config-0.19.1.crate) = 554db24f0b3c180a9c0b1268f91287ab3f17c162e15b54caaae5a6b3773396b0
+SIZE (rust/crates/pyo3-build-config-0.19.1.crate) = 29205
+SHA256 (rust/crates/pyo3-ffi-0.19.1.crate) = 922ede8759e8600ad4da3195ae41259654b9c55da4f7eec84a0ccc7d067a70a4
+SIZE (rust/crates/pyo3-ffi-0.19.1.crate) = 64837
+SHA256 (rust/crates/pyo3-macros-0.19.1.crate) = 8a5caec6a1dd355964a841fcbeeb1b89fe4146c87295573f94228911af3cc5a2
+SIZE (rust/crates/pyo3-macros-0.19.1.crate) = 7173
+SHA256 (rust/crates/pyo3-macros-backend-0.19.1.crate) = e0b78ccbb160db1556cdb6fd96c50334c5d4ec44dc5e0a968d0a1208fa0efa8b
+SIZE (rust/crates/pyo3-macros-backend-0.19.1.crate) = 49916
+SHA256 (rust/crates/python3-dll-a-0.2.9.crate) = d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f
+SIZE (rust/crates/python3-dll-a-0.2.9.crate) = 66092
+SHA256 (rust/crates/quote-1.0.23.crate) = 8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b
+SIZE (rust/crates/quote-1.0.23.crate) = 28058
+SHA256 (rust/crates/redox_syscall-0.2.16.crate) = fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a
+SIZE (rust/crates/redox_syscall-0.2.16.crate) = 24012
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/smallvec-1.10.0.crate) = a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0
+SIZE (rust/crates/smallvec-1.10.0.crate) = 31564
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/target-lexicon-0.12.6.crate) = 8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5
+SIZE (rust/crates/target-lexicon-0.12.6.crate) = 24357
+SHA256 (rust/crates/unicode-ident-1.0.6.crate) = 84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc
+SIZE (rust/crates/unicode-ident-1.0.6.crate) = 42158
+SHA256 (rust/crates/unindent-0.1.11.crate) = e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c
+SIZE (rust/crates/unindent-0.1.11.crate) = 7700
+SHA256 (rust/crates/windows-sys-0.45.0.crate) = 75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0
+SIZE (rust/crates/windows-sys-0.45.0.crate) = 2568659
+SHA256 (rust/crates/windows-targets-0.42.1.crate) = 8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7
+SIZE (rust/crates/windows-targets-0.42.1.crate) = 5524
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.1.crate) = 8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.1.crate) = 362795
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.1.crate) = 4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7
+SIZE (rust/crates/windows_aarch64_msvc-0.42.1.crate) = 664655
+SHA256 (rust/crates/windows_i686_gnu-0.42.1.crate) = de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640
+SIZE (rust/crates/windows_i686_gnu-0.42.1.crate) = 733428
+SHA256 (rust/crates/windows_i686_msvc-0.42.1.crate) = bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605
+SIZE (rust/crates/windows_i686_msvc-0.42.1.crate) = 722583
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.1.crate) = c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45
+SIZE (rust/crates/windows_x86_64_gnu-0.42.1.crate) = 697614
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.1.crate) = 628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.1.crate) = 362788
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.1.crate) = 447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd
+SIZE (rust/crates/windows_x86_64_msvc-0.42.1.crate) = 664606
diff --git a/devel/py-pendulum/pkg-descr b/devel/py-pendulum/pkg-descr
index 113bf420e8f7..0082e0e45967 100644
--- a/devel/py-pendulum/pkg-descr
+++ b/devel/py-pendulum/pkg-descr
@@ -1,8 +1,16 @@
-Pendulum is a Python package to ease datetimes manipulation.
+Native datetime instances are enough for basic cases but when you face more
+complex use-cases they often show limitations and are not so intuitive to work
+with. Pendulum provides a cleaner and more easy to use API while still relying
+on the standard library. So it's still datetime but better.
 
-It provides classes that are drop-in replacements for the native ones (they
-inherit from them).
+Unlike other datetime libraries for Python, Pendulum is a drop-in replacement
+for the standard datetime class (it inherits from it), so, basically, you can
+replace all your datetime instances by DateTime instances in your code
+(exceptions exist for libraries that check the type of the objects by using the
+type function like sqlite3 or PyMySQL for instance).
 
-Special care has been taken to ensure timezones are handled correctly, and
-are based on the underlying tzinfo implementation. For example all
-comparisons are done in UTC or in the timezone of the datetime being used.
+It also removes the notion of naive datetimes: each Pendulum instance is
+timezone-aware and by default in UTC for ease of use.
+
+Pendulum also improves the standard timedelta class by providing more intuitive
+methods and properties.