Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 May 2019 12:43:15 +0000 (UTC)
From:      Kubilay Kocak <koobs@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r501865 - in head/www/py-hyper: . files
Message-ID:  <201905171243.x4HChF9I020563@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: koobs
Date: Fri May 17 12:43:14 2019
New Revision: 501865
URL: https://svnweb.freebsd.org/changeset/ports/501865

Log:
  wwww/py-hyper: Update to 0.8.0.dev0 (g20171217)
  
  Latest PyPI released (0.7.0) fails several tests that have been resolved
  in branch:development but not yet released.
  
    - Add patches to make hyper work with h2 > 3.0 [1]
  
  Changelog:
  
    https://github.com/Lukasa/hyper/blob/development/HISTORY.rst
  
  [1] https://github.com/Lukasa/hyper/pull/402

Added:
  head/www/py-hyper/files/patch-hyper_http20_connection.py   (contents, props changed)
  head/www/py-hyper/files/patch-test_test__hyper.py   (contents, props changed)
Deleted:
  head/www/py-hyper/files/files-server.py
Modified:
  head/www/py-hyper/Makefile
  head/www/py-hyper/distinfo
  head/www/py-hyper/files/patch-setup.py

Modified: head/www/py-hyper/Makefile
==============================================================================
--- head/www/py-hyper/Makefile	Fri May 17 12:42:32 2019	(r501864)
+++ head/www/py-hyper/Makefile	Fri May 17 12:43:14 2019	(r501865)
@@ -2,9 +2,8 @@
 # $FreeBSD$
 
 PORTNAME=	hyper
-PORTVERSION=	0.5.0
+DISTVERSION=	0.8.0.g20171217
 CATEGORIES=	www python
-MASTER_SITES=	CHEESESHOP
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 
 MAINTAINER=	koobs@FreeBSD.org
@@ -13,22 +12,33 @@ COMMENT=	HTTP/2 Client for Python
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}h2>=2.4:www/py-h2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hyperframe>=3.2:www/py-hyperframe@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}brotlipy>=0.7.0:archivers/py-brotlipy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}rfc3986>=1.1.0,<2.0:www/py-rfc3986@${PY_FLAVOR}
 TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pytest>0:devel/py-pytest@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR}
+		${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hpack>0:www/py-hpack@${PY_FLAVOR}
 
 USES=		python
-USE_PYTHON=	autoplist distutils
+USE_GITHUB=	yes
+USE_PYTHON=	autoplist concurrent distutils
 
+GH_ACCOUNT=	Lukasa
+GH_TAGNAME=	18b629b
+
 NO_ARCH=	yes
 
-post-extract:
-	@${MKDIR} ${WRKSRC}/test/certs/
-	@${CP} ${FILESDIR}/files-server.py ${WRKSRC}/test/server.py
-	@${CP} ${FILESDIR}/files-server.key ${WRKSRC}/test/certs/server.key
-	@${CP} ${FILESDIR}/files-server.crt ${WRKSRC}/test/certs/server.crt
+py27_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}enum34>=1.0.4,<2:devel/py-enum34@${PY_FLAVOR}
 
 do-test:
-	@cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test --pytest-args "-k 'not test_integration'"
+	@cd ${WRKSRC} && ${PYTHON_CMD} -m pytest -v -rs -k 'not test_HTTPConnection_with_custom_context' test
 
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_VER} < 3.0
+TEST_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}futures>0:devel/py-futures@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>

Modified: head/www/py-hyper/distinfo
==============================================================================
--- head/www/py-hyper/distinfo	Fri May 17 12:42:32 2019	(r501864)
+++ head/www/py-hyper/distinfo	Fri May 17 12:43:14 2019	(r501865)
@@ -1,2 +1,3 @@
-SHA256 (hyper-0.5.0.tar.gz) = 034b6ad6d0ba2dafa948e5d893337ffa376ececa5725f7cc59f9319a11b0b3f3
-SIZE (hyper-0.5.0.tar.gz) = 255589
+TIMESTAMP = 1558088018
+SHA256 (Lukasa-hyper-0.8.0.g20171217-18b629b_GH0.tar.gz) = 2a3f656de9d6824ea3f70c8f3ca9857794e225e647698f5df9b20b33e2694a6e
+SIZE (Lukasa-hyper-0.8.0.g20171217-18b629b_GH0.tar.gz) = 402869

Added: head/www/py-hyper/files/patch-hyper_http20_connection.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/py-hyper/files/patch-hyper_http20_connection.py	Fri May 17 12:43:14 2019	(r501865)
@@ -0,0 +1,32 @@
+# HTTP20Connection: Fix use of ENABLE_PUSH
+# https://github.com/Lukasa/hyper/pull/402
+
+--- hyper/http20/connection.py.orig	2019-05-17 10:15:20 UTC
++++ hyper/http20/connection.py
+@@ -7,7 +7,7 @@ Objects that build hyper's connection-level HTTP/2 abs
+ """
+ import h2.connection
+ import h2.events
+-import h2.settings
++from h2.settings import SettingCodes
+ 
+ from ..compat import ssl
+ from ..tls import wrap_socket, H2_NPN_PROTOCOLS, H2C_PROTOCOL
+@@ -403,7 +403,7 @@ class HTTP20Connection(object):
+         with self._conn as conn:
+             conn.initiate_upgrade_connection()
+             conn.update_settings(
+-                {h2.settings.ENABLE_PUSH: int(self._enable_push)}
++                {SettingCodes.ENABLE_PUSH: int(self._enable_push)}
+             )
+         self._send_outstanding_data()
+ 
+@@ -424,7 +424,7 @@ class HTTP20Connection(object):
+         with self._conn as conn:
+             conn.initiate_connection()
+             conn.update_settings(
+-                {h2.settings.ENABLE_PUSH: int(self._enable_push)}
++                {SettingCodes.ENABLE_PUSH: int(self._enable_push)}
+             )
+         self._send_outstanding_data()
+ 

Modified: head/www/py-hyper/files/patch-setup.py
==============================================================================
--- head/www/py-hyper/files/patch-setup.py	Fri May 17 12:42:32 2019	(r501864)
+++ head/www/py-hyper/files/patch-setup.py	Fri May 17 12:43:14 2019	(r501865)
@@ -1,44 +1,11 @@
---- setup.py.orig	2015-10-28 10:21:14 UTC
+--- setup.py.orig	2019-05-17 11:59:54 UTC
 +++ setup.py
-@@ -7,6 +7,7 @@ import sys
- 
- try:
-     from setuptools import setup
-+    from setuptools.command.test import test as TestCommand
- except ImportError:
-     from distutils.core import setup
- 
-@@ -48,6 +49,24 @@ def resolve_install_requires():
-         return deps
-     return []
- 
-+class PyTest(TestCommand):
-+    user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")]
-+
-+    def initialize_options(self):
-+        TestCommand.initialize_options(self)
-+        self.pytest_args = []
-+
-+    def finalize_options(self):
-+        TestCommand.finalize_options(self)
-+        self.test_args = []
-+        self.test_suite = True
-+
-+    def run_tests(self):
-+        #import here, cause outside the eggs aren't loaded
-+        import pytest
-+        errno = pytest.main(self.pytest_args)
-+        sys.exit(errno)
-+
- packages = [
-     'hyper',
-     'hyper.http20',
-@@ -90,5 +109,7 @@ setup(
-     },
-     extras_require={
-         'fast': ['pycohttpparser'],
--    }
-+    },
-+    tests_require=['pytest'],
-+    cmdclass = {'test': PyTest},
- )
+@@ -77,7 +77,7 @@ setup(
+         'Programming Language :: Python :: Implementation :: CPython',
+     ],
+     install_requires=[
+-        'h2>=2.4,<3.0,!=2.5.0', 'hyperframe>=3.2,<4.0', 'rfc3986>=1.1.0,<2.0', 'brotlipy>=0.7.0,<1.0'
++        'h2>=2.4,!=2.5.0', 'hyperframe>=3.2', 'rfc3986>=1.1.0,<2.0', 'brotlipy>=0.7.0,<1.0'
+     ],
+     tests_require=['pytest', 'requests', 'mock'],
+     cmdclass={'test': PyTest},

Added: head/www/py-hyper/files/patch-test_test__hyper.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/py-hyper/files/patch-test_test__hyper.py	Fri May 17 12:43:14 2019	(r501865)
@@ -0,0 +1,35 @@
+# Fix use of h2.settings -> h2.settings.SettingCodes.* Based on:
+# HTTP20Connection: Fix use of ENABLE_PUSH
+# https://github.com/Lukasa/hyper/pull/402
+
+# Fix hpack import (hpack_compat is gone now)
+# https://github.com/python-hyper/hpack/pull/60
+
+--- test/test_hyper.py.orig	2019-05-17 10:17:07 UTC
++++ test/test_hyper.py
+@@ -1,14 +1,13 @@
+ # -*- coding: utf-8 -*-
+-import h2.settings
+-
+ from h2.frame_buffer import FrameBuffer
+ from h2.connection import ConnectionState
++from h2.settings import SettingCodes
+ from hyperframe.frame import (
+     Frame, DataFrame, RstStreamFrame, SettingsFrame, PushPromiseFrame,
+     WindowUpdateFrame, HeadersFrame, ContinuationFrame, GoAwayFrame,
+     PingFrame, FRAME_MAX_ALLOWED_LEN
+ )
+-from hpack.hpack_compat import Encoder
++from hpack import Encoder
+ from hyper.common.connection import HTTPConnection
+ from hyper.http20.connection import HTTP20Connection
+ from hyper.http20.response import HTTP20Response, HTTP20Push
+@@ -766,7 +765,7 @@ class TestHyperConnection(object):
+         # the default max frame size (16,384 bytes). That will, on the third
+         # frame, trigger the processing to increment the flow control window,
+         # which should then not happen.
+-        f = SettingsFrame(0, settings={h2.settings.INITIAL_WINDOW_SIZE: 100})
++        f = SettingsFrame(0, settings={SettingCodes.INITIAL_WINDOW_SIZE: 100})
+ 
+         c = HTTP20Connection('www.google.com')
+         c._sock = DummySocket()



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905171243.x4HChF9I020563>