METADATA 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  1. Metadata-Version: 2.0
  2. Name: hyper
  3. Version: 0.7.0
  4. Summary: HTTP/2 Client for Python
  5. Home-page: http://hyper.rtfd.org
  6. Author: Cory Benfield
  7. Author-email: cory@lukasa.co.uk
  8. License: MIT License
  9. Platform: UNKNOWN
  10. Classifier: Development Status :: 3 - Alpha
  11. Classifier: Intended Audience :: Developers
  12. Classifier: License :: OSI Approved :: MIT License
  13. Classifier: Programming Language :: Python
  14. Classifier: Programming Language :: Python :: 2
  15. Classifier: Programming Language :: Python :: 2.7
  16. Classifier: Programming Language :: Python :: 3
  17. Classifier: Programming Language :: Python :: 3.4
  18. Classifier: Programming Language :: Python :: 3.5
  19. Classifier: Programming Language :: Python :: Implementation :: CPython
  20. Requires-Dist: h2 (<3.0,>=2.4)
  21. Requires-Dist: hyperframe (>=3.2,<4.0)
  22. Requires-Dist: cryptography (<1.0); platform_python_implementation == "PyPy" and python_full_version < "2.7.9"
  23. Requires-Dist: pyOpenSSL (>=0.15); python_full_version < "2.7.9"
  24. Requires-Dist: service-identity (>=14.0.0); python_full_version < "2.7.9"
  25. Provides-Extra: fast
  26. Requires-Dist: pycohttpparser; extra == 'fast'
  27. ===============================
  28. Hyper: HTTP/2 Client for Python
  29. ===============================
  30. .. image:: https://raw.github.com/Lukasa/hyper/development/docs/source/images/hyper.png
  31. .. image:: https://travis-ci.org/Lukasa/hyper.png?branch=master
  32. :target: https://travis-ci.org/Lukasa/hyper
  33. HTTP is changing under our feet. HTTP/1.1, our old friend, is being
  34. supplemented by the brand new HTTP/2 standard. HTTP/2 provides many benefits:
  35. improved speed, lower bandwidth usage, better connection management, and more.
  36. ``hyper`` provides these benefits to your Python code. How? Like this::
  37. from hyper import HTTPConnection
  38. conn = HTTPConnection('http2bin.org:443')
  39. conn.request('GET', '/get')
  40. resp = conn.get_response()
  41. print(resp.read())
  42. Simple.
  43. Caveat Emptor!
  44. ==============
  45. Please be warned: ``hyper`` is in a very early alpha. You *will* encounter bugs
  46. when using it. In addition, there are very many rough edges. With that said,
  47. please try it out in your applications: I need your feedback to fix the bugs
  48. and file down the rough edges.
  49. Versions
  50. ========
  51. ``hyper`` supports the final draft of the HTTP/2 specification: additionally,
  52. it provides support for drafts 14, 15, and 16 of the HTTP/2 specification. It
  53. also supports the final draft of the HPACK specification.
  54. Compatibility
  55. =============
  56. ``hyper`` is intended to be a drop-in replacement for ``http.client``, with a
  57. similar API. However, ``hyper`` intentionally does not name its classes the
  58. same way ``http.client`` does. This is because most servers do not support
  59. HTTP/2 at this time: I don't want you accidentally using ``hyper`` when you
  60. wanted ``http.client``.
  61. Documentation
  62. =============
  63. Looking to learn more? Documentation for ``hyper`` can be found on `Read the Docs`_.
  64. .. _Read the Docs: http://hyper.readthedocs.io/en/latest/
  65. Contributing
  66. ============
  67. ``hyper`` welcomes contributions from anyone! Unlike many other projects we are
  68. happy to accept cosmetic contributions and small contributions, in addition to
  69. large feature requests and changes.
  70. Before you contribute (either by opening an issue or filing a pull request),
  71. please `read the contribution guidelines`_.
  72. .. _read the contribution guidelines: http://hyper.readthedocs.org/en/development/contributing.html
  73. License
  74. =======
  75. ``hyper`` is made available under the MIT License. For more details, see the
  76. ``LICENSE`` file in the repository.
  77. Authors
  78. =======
  79. ``hyper`` is maintained by Cory Benfield, with contributions from others. For
  80. more details about the contributors, please see ``CONTRIBUTORS.rst``.
  81. Release History
  82. ===============
  83. v0.7.0 (2016-09-27)
  84. -------------------
  85. *Major Changes*
  86. - Added a ``ping`` method, allowing the user to use the HTTP/2 ``PING`` frame
  87. to check connection liveness before, instead of, or between issuing requests.
  88. *Bugfixes*
  89. - Don't send WINDOWUPDATE frames on closed streams.
  90. - Clean up the outstanding stream reads on stream close.
  91. - Ensured that connection state is always unconditionally reset on stream
  92. close, regardless of whether the connection has a socket object open or not.
  93. 0.6.2 (2016-06-13)
  94. ------------------
  95. *Bugfixes*
  96. - Fixed packaging error made in prior release.
  97. 0.6.1 (2016-06-13)
  98. ------------------
  99. *Bugfixes*
  100. - Tolerate errors when attempting to send a RST_STREAM frame.
  101. - Ensure that calls to ``fileno()`` on the compatibility ``SSLSocket`` object
  102. actually work correctly. Thanks to @benlast!
  103. - Improved some problems with thread-safety in the ``Stream`` class. Thanks to
  104. @fredthomsen!
  105. - Allowed for systems to use hyper without the bundled cert file being present.
  106. Thanks to @JasonGowthorpe!
  107. 0.6.0 (2016-05-06)
  108. ------------------
  109. *Major Changes*
  110. - The ``HTTP20Connection`` object is now thread-safe, so long as stream IDs are
  111. used on all method calls.
  112. - Replaced the HTTP/2 state machine logic entirely to use hyper-h2. This will
  113. dramatically change the behaviour of the library in many situations, mostly
  114. for the better. However, this is also likely to introduce new bugs, so please
  115. be cautious.
  116. *API Changes*
  117. - Allow non-dictionary headers in ``request``.
  118. - ``HTTP20Connection`` now has a ``force_proto`` keyword argument to allow the
  119. ``HTTP20Connection`` to ignore the NPN/ALPN result.
  120. - The ``--h2`` CLI flag now ignores the result of NPN/ALPN negotiation when
  121. hitting HTTPS URLs.
  122. - Added support for HTTPS client certificates.
  123. - Notifications about streams being reset is now delayed to fire when the
  124. stream in question is next accessed, rather than immediately.
  125. *Bugfixes*
  126. - Overriding HTTP/2 special headers no longer leads to ill-formed header blocks
  127. with special headers at the end.
  128. - Vastly improved IPv6 support.
  129. - Fix converting unicode bodies to bytestrings on Python 2.7.
  130. - Allow overriding the HTTP/2 pseudo-headers from the CLI.
  131. - Fixed problems with incorrectly generating the ``HTTP2-Settings`` header.
  132. - Improved handling of socket errors.
  133. 0.5.0 (2015-10-11)
  134. ------------------
  135. *Feature Enhancement*
  136. - Pay attention to max frame length changes from remote peers. Thanks to
  137. @jdecuyper!
  138. *Bugfixes*
  139. - Prevent hyper from emitting oversized frames. Thanks to @jdecuyper!
  140. - Prevent hyper from emitting RST_STREAM frames whenever it finishes consuming
  141. a stream.
  142. - Prevent hyper from emitting lots of RST_STREAM frames.
  143. - Hyper CLI tool now correctly uses TLS for any ``https``-schemed URL.
  144. - Hyper CLI tool no longer attempts to decode bytes, instead writing them
  145. straight to the terminal.
  146. - Added new ``--h2`` flag to the Hyper CLI tool, which allows straight HTTP/2
  147. in plaintext, rather than attempting to upgrade from HTTP/1.1.
  148. - Allow arguments and keyword arguments in abstract version of
  149. ``get_response``.
  150. *Software Updates*
  151. - Updated hyperframe to version 2.1.0
  152. 0.4.0 (2015-06-21)
  153. ------------------
  154. *New Features*
  155. - HTTP/1.1 and HTTP/2 abstraction layer. Don't specify what version you want to
  156. use, just automatically get the best version the server supports!
  157. - Support for upgrading plaintext HTTP/1.1 to plaintext HTTP/2, with thanks to
  158. @fredthomsen! (`Issue #28`_)
  159. - ``HTTP11Connection`` and ``HTTPConnection`` objects are now both context
  160. managers.
  161. - Added support for ALPN negotiation when using PyOpenSSL. (`Issue #31`_)
  162. - Added support for user-provided SSLContext objects, with thanks to
  163. @jdecuyper! (`Issue #8`_)
  164. - Better support for HTTP/2 error codes, with thanks to @jdecuyper!
  165. (`Issue #119`_)
  166. - More gracefully close connections, with thanks to @jdecuyper! (`Issue #15`_)
  167. *Structural Changes*
  168. - The framing and HPACK layers were stripped out into their own libraries.
  169. *Bugfixes*
  170. - Properly verify hostnames when using PyOpenSSL.
  171. .. _Issue #8: https://github.com/Lukasa/hyper/issues/8
  172. .. _Issue #15: https://github.com/Lukasa/hyper/issues/15
  173. .. _Issue #28: https://github.com/Lukasa/hyper/issues/28
  174. .. _Issue #31: https://github.com/Lukasa/hyper/issues/31
  175. .. _Issue #119: https://github.com/Lukasa/hyper/issues/119
  176. 0.3.1 (2015-04-03)
  177. ------------------
  178. *Bugfixes*
  179. - Fix blocking ``ImportError``. (`Issue #114`_)
  180. .. _Issue #114: https://github.com/Lukasa/hyper/issues/114
  181. 0.3.0 (2015-04-03)
  182. ------------------
  183. *New Features*
  184. - HTTP/1.1 support! See the documentation for more. (`Issue #75`_)
  185. - Implementation of a ``HTTPHeaderMap`` data structure that provides dictionary
  186. style lookups while retaining all the semantic information of HTTP headers.
  187. *Major Changes*
  188. - Various changes in the HTTP/2 APIs:
  189. - The ``getheader``, ``getheaders``, ``gettrailer``, and ``gettrailers``
  190. methods on the response object have been removed, replaced instead with
  191. simple ``.headers`` and ``.trailers`` properties that contain
  192. ``HTTPHeaderMap`` structures.
  193. - Headers and trailers are now bytestrings, rather than unicode strings.
  194. - An ``iter_chunked()`` method was added to response objects that allows
  195. iterating over data in units of individual data frames.
  196. - Changed the name of ``getresponse()`` to ``get_response()``, because
  197. ``getresponse()`` was a terrible name forced upon me by httplib.
  198. .. _Issue #75: https://github.com/Lukasa/hyper/issues/75
  199. 0.2.2 (2015-04-03)
  200. ------------------
  201. *Bugfixes*
  202. - Hyper now correctly handles 'never indexed' header fields. (`Issue #110`_)
  203. .. _Issue #110: https://github.com/Lukasa/hyper/issues/110
  204. 0.2.1 (2015-03-29)
  205. ------------------
  206. *New Features*
  207. - There is now a `hyper` command-line client that supports making HTTP/2
  208. requests directly from the command-line.
  209. *Major Changes*
  210. - Support for the final drafts of HTTP/2 and HPACK. Updated to offer the 'h2'
  211. ALPN token.
  212. *Minor Changes*
  213. - We not only remove the Connection header but all headers it refers to.
  214. 0.2.0 (2015-02-07)
  215. ------------------
  216. *Major Changes*
  217. - Python 2.7.9 is now fully supported.
  218. 0.1.2 (2015-02-07)
  219. ------------------
  220. *Minor Changes*
  221. - We now remove the ``Connection`` header if it's given to us, as that header
  222. is not valid in HTTP/2.
  223. *Bugfixes*
  224. - Adds workaround for HTTPie to make our responses look more like urllib3
  225. responses.
  226. 0.1.1 (2015-02-06)
  227. ------------------
  228. *Minor Changes*
  229. - Support for HTTP/2 draft 15, and 16. No drop of support for draft 14.
  230. - Updated bundled certificate file.
  231. *Bugfixes*
  232. - Fixed ``AttributeError`` being raised when a PING frame was received, thanks
  233. to @t2y. (`Issue #79`_)
  234. - Fixed bug where large frames could be incorrectly truncated by the buffered
  235. socket implementation, thanks to @t2y. (`Issue #80`_)
  236. .. _Issue #79: https://github.com/Lukasa/hyper/issues/79
  237. .. _Issue #80: https://github.com/Lukasa/hyper/issues/80
  238. 0.1.0 (2014-08-16)
  239. ------------------
  240. *Regressions and Known Bugs*
  241. - Support for Python 3.3 has been temporarily dropped due to features missing
  242. from the Python 3.3 ``ssl`` module. PyOpenSSL has been identified as a
  243. replacement, but until NPN support is merged it cannot be used. Python 3.3
  244. support *will* be re-added when a suitable release of PyOpenSSL is shipped.
  245. - Technically this release also includes support for PyPy and Python 2.7. That
  246. support is also blocked behind a suitable PyOpenSSL release.
  247. For more information on these regressions, please see `Issue #37`_.
  248. *Major Changes*
  249. - Support for HPACK draft 9.
  250. - Support for HTTP/2 draft 14.
  251. - Support for Sever Push, thanks to @alekstorm. (`Issue #40`_)
  252. - Use a buffered socket to avoid unnecessary syscalls. (`Issue #56`_)
  253. - If `nghttp2`_ is present, use its HPACK encoder for improved speed and
  254. compression efficiency. (`Issue #60`_)
  255. - Add ``HTTP20Response.gettrailer()`` and ``HTTP20Response.gettrailers()``,
  256. supporting downloading and examining HTTP trailers. (Discussed in part in
  257. `Issue #71`_.)
  258. *Bugfixes*
  259. - ``HTTP20Response`` objects are context managers. (`Issue #24`_)
  260. - Pluggable window managers are now correctly informed about the document size.
  261. (`Issue #26`_)
  262. - Header blocks can no longer be corrupted if read in a different order to the
  263. one in which they were sent. (`Issue #39`_)
  264. - Default window manager is now smarter about sending WINDOWUPDATE frames.
  265. (`Issue #41`_ and `Issue #52`_)
  266. - Fixed inverted window sizes. (`Issue #27`_)
  267. - Correct reply to PING frames. (`Issue #48`_)
  268. - Made the wheel universal, befitting a pure-Python package. (`Issue #46`_)
  269. - HPACK encoder correctly encodes header sets with duplicate headers.
  270. (`Issue #50`_)
  271. .. _Issue #24: https://github.com/Lukasa/hyper/issues/24
  272. .. _Issue #26: https://github.com/Lukasa/hyper/issues/26
  273. .. _Issue #27: https://github.com/Lukasa/hyper/issues/27
  274. .. _Issue #33: https://github.com/Lukasa/hyper/issues/33
  275. .. _Issue #37: https://github.com/Lukasa/hyper/issues/37
  276. .. _Issue #39: https://github.com/Lukasa/hyper/issues/39
  277. .. _Issue #40: https://github.com/Lukasa/hyper/issues/40
  278. .. _Issue #41: https://github.com/Lukasa/hyper/issues/41
  279. .. _Issue #46: https://github.com/Lukasa/hyper/issues/46
  280. .. _Issue #48: https://github.com/Lukasa/hyper/issues/48
  281. .. _Issue #50: https://github.com/Lukasa/hyper/issues/50
  282. .. _Issue #52: https://github.com/Lukasa/hyper/issues/52
  283. .. _Issue #56: https://github.com/Lukasa/hyper/issues/56
  284. .. _Issue #60: https://github.com/Lukasa/hyper/issues/60
  285. .. _Issue #71: https://github.com/Lukasa/hyper/issues/71
  286. .. _nghttp2: https://nghttp2.org/
  287. 0.0.4 (2014-03-08)
  288. ------------------
  289. - Add logic for pluggable objects to manage the flow-control window for both
  290. connections and streams.
  291. - Raise new ``HPACKDecodingError`` when we're unable to validly map a
  292. Huffman-encoded string.
  293. - Correctly respect the HPACK EOS character.
  294. 0.0.3 (2014-02-26)
  295. ------------------
  296. - Use bundled SSL certificates in addition to the OS ones, which have limited
  297. platform availability. (`Issue #9`_)
  298. - Connection objects reset to their basic state when they're closed, enabling
  299. them to be reused. Note that they may not be reused if exceptions are thrown
  300. when they're in use: you must open a new connection in that situation.
  301. - Connection objects are now context managers. (`Issue #13`_)
  302. - The ``HTTP20Adapter`` correctly reuses connections.
  303. - Stop sending WINDOWUPDATE frames with a zero-size window increment.
  304. - Provide basic functionality for gracelessly closing streams.
  305. - Exhausted streams are now disposed of. (`Issue #14`_)
  306. .. _Issue #9: https://github.com/Lukasa/hyper/issues/9
  307. .. _Issue #13: https://github.com/Lukasa/hyper/issues/13
  308. .. _Issue #14: https://github.com/Lukasa/hyper/issues/14
  309. 0.0.2 (2014-02-20)
  310. ------------------
  311. - Implemented logging. (`Issue #12`_)
  312. - Stopped HTTP/2.0 special headers appearing in the response headers.
  313. (`Issue #16`_)
  314. - `HTTP20Connection` objects are now context managers. (`Issue #13`_)
  315. - Response bodies are automatically decompressed. (`Issue #20`_)
  316. - Provide a requests transport adapter. (`Issue #19`_)
  317. - Fix the build status indicator. (`Issue #22`_)
  318. .. _Issue #12: https://github.com/Lukasa/hyper/issues/12
  319. .. _Issue #16: https://github.com/Lukasa/hyper/issues/16
  320. .. _Issue #13: https://github.com/Lukasa/hyper/issues/13
  321. .. _Issue #20: https://github.com/Lukasa/hyper/issues/20
  322. .. _Issue #19: https://github.com/Lukasa/hyper/issues/19
  323. .. _Issue #22: https://github.com/Lukasa/hyper/issues/22
  324. 0.0.1 (2014-02-11)
  325. ------------------
  326. - Initial Release
  327. - Support for HTTP/2.0 draft 09.
  328. - Support for HPACK draft 05.
  329. - Support for HTTP/2.0 flow control.
  330. - Verifies TLS certificates.
  331. - Support for streaming uploads.
  332. - Support for streaming downloads.