svn commit: r501865 - in head/www/py-hyper: . files
Kubilay Kocak
koobs at FreeBSD.org
Fri May 17 12:43:16 UTC 2019
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 at 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()
More information about the svn-ports-all
mailing list