git: 3c1618d8e39e - main - devel/py-cloudpathlib: Add py-cloudpathlib 0.17.0

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Wed, 21 Feb 2024 15:17:03 UTC
The branch main has been updated by sunpoet:

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

commit 3c1618d8e39e3304130e9b3d7fe9115312db8434
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2024-02-21 14:12:45 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2024-02-21 15:06:04 +0000

    devel/py-cloudpathlib: Add py-cloudpathlib 0.17.0
    
    cloudpathlib is a Python library with classes that mimic pathlib.Path's
    interface for URIs from different cloud storage services.
    
    Why use cloudpathlib?
    - Familiar: If you know how to interact with Path, you know how to interact with
      CloudPath. All of the cloud-relevant Path methods are implemented.
    - Supported clouds: AWS S3, Google Cloud Storage, and Azure Blob Storage are
      implemented. FTP is on the way.
    - Extensible: The base classes do most of the work generically, so implementing
      two small classes MyPath and MyClient is all you need to add support for a new
      cloud storage service.
    - Read/write support: Reading just works. Using the write_text, write_bytes or
      .open('w') methods will all upload your changes to cloud storage without any
      additional file management as a developer.
    - Seamless caching: Files are downloaded locally only when necessary. You can
      also easily pass a persistent cache folder so that across processes and
      sessions you only re-download what is necessary.
    - Tested: Comprehensive test suite and code coverage.
    - Testability: Local filesystem implementations that can be used to easily mock
      cloud storage in your unit tests.
---
 devel/Makefile                  |  1 +
 devel/py-cloudpathlib/Makefile  | 35 +++++++++++++++++++++++++++++++++++
 devel/py-cloudpathlib/distinfo  |  3 +++
 devel/py-cloudpathlib/pkg-descr | 20 ++++++++++++++++++++
 4 files changed, 59 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index df85c22a2fc8..645d50f5bb51 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4501,6 +4501,7 @@
     SUBDIR += py-clikit
     SUBDIR += py-clint
     SUBDIR += py-clldutils
+    SUBDIR += py-cloudpathlib
     SUBDIR += py-cloudpickle
     SUBDIR += py-cluster
     SUBDIR += py-cmd2
diff --git a/devel/py-cloudpathlib/Makefile b/devel/py-cloudpathlib/Makefile
new file mode 100644
index 000000000000..7ff093726299
--- /dev/null
+++ b/devel/py-cloudpathlib/Makefile
@@ -0,0 +1,35 @@
+PORTNAME=	cloudpathlib
+PORTVERSION=	0.17.0
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	sunpoet@FreeBSD.org
+COMMENT=	pathlib-style classes for cloud storage services
+WWW=		https://cloudpathlib.drivendata.org/stable/ \
+		https://github.com/drivendataorg/cloudpathlib
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}flit-core>=3.2<4.0:devel/py-flit-core@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent pep517
+
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=	GS S3
+GS_DESC=	Google Cloud Storage support
+S3_DESC=	Amazon S3 support
+
+GS_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}google-cloud-storage>=0:www/py-google-cloud-storage@${PY_FLAVOR}
+S3_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}boto3>=0:www/py-boto3@${PY_FLAVOR}
+
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 31100
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}typing-extensions>=4:devel/py-typing-extensions@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/devel/py-cloudpathlib/distinfo b/devel/py-cloudpathlib/distinfo
new file mode 100644
index 000000000000..9353ae6abc91
--- /dev/null
+++ b/devel/py-cloudpathlib/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1708448814
+SHA256 (cloudpathlib-0.17.0.tar.gz) = 097c94926d0e8b76df61fec12ba1b725728c6a77071ca7e6565be93fb4496ff9
+SIZE (cloudpathlib-0.17.0.tar.gz) = 38045
diff --git a/devel/py-cloudpathlib/pkg-descr b/devel/py-cloudpathlib/pkg-descr
new file mode 100644
index 000000000000..9b00dd815ce9
--- /dev/null
+++ b/devel/py-cloudpathlib/pkg-descr
@@ -0,0 +1,20 @@
+cloudpathlib is a Python library with classes that mimic pathlib.Path's
+interface for URIs from different cloud storage services.
+
+Why use cloudpathlib?
+- Familiar: If you know how to interact with Path, you know how to interact with
+  CloudPath. All of the cloud-relevant Path methods are implemented.
+- Supported clouds: AWS S3, Google Cloud Storage, and Azure Blob Storage are
+  implemented. FTP is on the way.
+- Extensible: The base classes do most of the work generically, so implementing
+  two small classes MyPath and MyClient is all you need to add support for a new
+  cloud storage service.
+- Read/write support: Reading just works. Using the write_text, write_bytes or
+  .open('w') methods will all upload your changes to cloud storage without any
+  additional file management as a developer.
+- Seamless caching: Files are downloaded locally only when necessary. You can
+  also easily pass a persistent cache folder so that across processes and
+  sessions you only re-download what is necessary.
+- Tested: Comprehensive test suite and code coverage.
+- Testability: Local filesystem implementations that can be used to easily mock
+  cloud storage in your unit tests.