Skip to main content

Tests

httptools is a Python binding for the nodejs HTTP parser.

The package is available on PyPI: pip install httptools.

APIs

httptools contains two classes httptools.HttpRequestParser, httptools.HttpResponseParser (fulfilled through llhttp) and a function for parsing URLs httptools.parse_url (through http-parse for now). See unittests for examples.

class HttpRequestParser:

    def __init__(self, protocol):
        """HttpRequestParser

        protocol -- a Python object with the following methods
        (all optional):

          - on_message_begin()
          - on_url(url: bytes)
          - on_header(name: bytes, value: bytes)
          - on_headers_complete()
          - on_body(body: bytes)
          - on_message_complete()
          - on_chunk_header()
          - on_chunk_complete()
          - on_status(status: bytes)
        """

    def get_http_version(self) -> str:
        """Return an HTTP protocol version."""

    def should_keep_alive(self) -> bool:
        """Return ``True`` if keep-alive mode is preferred."""

    def should_upgrade(self) -> bool:
        """Return ``True`` if the parsed request is a valid Upgrade request.
	The method exposes a flag set just before on_headers_complete.
	Calling this method earlier will only yield `False`.
	"""

    def feed_data(self, data: bytes):
        """Feed data to the parser.

        Will eventually trigger callbacks on the ``protocol``
        object.

        On HTTP upgrade, this method will raise an
        ``HttpParserUpgrade`` exception, with its sole argument
        set to the offset of the non-HTTP data in ``data``.
        """

    def get_method(self) -> bytes:
        """Return HTTP request method (GET, HEAD, etc)"""


class HttpResponseParser:

    """Has all methods except ``get_method()`` that
    HttpRequestParser has."""

    def get_status_code(self) -> int:
        """Return the status code of the HTTP response"""


def parse_url(url: bytes):
    """Parse URL strings into a structured Python object.

    Returns an instance of ``httptools.URL`` class with the
    following attributes:

      - schema: bytes
      - host: bytes
      - port: int
      - path: bytes
      - query: bytes
      - fragment: bytes
      - userinfo: bytes
    """

Development

  1. Clone this repository with git clone --recursive git@github.com:MagicStack/httptools.git

  2. Create a virtual environment with Python 3.5: python3.5 -m venv envname

  3. Activate the environment with source envname/bin/activate

  4. Install Cython with pip install cython

  5. Run make and make test.

License

MIT.

Metadata

Release files for httptools 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for httptools 0.2.0
File Size Uploaded
httptools-0.2.0.tar.gz 169.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for httptools 0.2.0
File
httptools-0.2.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64 Details
httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.14+ x86-64 Details
httptools-0.2.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64 Details
httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.14+ x86-64 Details
httptools-0.2.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details
httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64 Details
httptools-0.2.0-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details
httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.14+ x86-64 Details
httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details
httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl CPython 3.5 CPython 3.5 pymalloc macOS 10.14+ x86-64 Details

Total release size: 3.2 MB

Release files / httptools-0.2.0.tar.gz

Download URL httptools-0.2.0.tar.gz
Size 169.3 kB
Tags Source
SHA-256 checksum
How to use checksums
94505026be56652d7a530ab03d89474dc6021019d6b8682281977163b3471ea0
BLAKE2b-256 checksum
How to use checksums
968208c5ee0191ea7f765e9a44cc66827c0ba35b896f72b4d31f9cd9d180b08f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp39-cp39-win_amd64.whl

Download URL httptools-0.2.0-cp39-cp39-win_amd64.whl
Size 141.3 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
200fc1cdf733a9ff554c0bb97a4047785cfaad9875307d6087001db3eb2b417f
BLAKE2b-256 checksum
How to use checksums
d4cbc15e64f204d748533c197434afa325e48766b7045de2e4b15af198ba2338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl

Download URL httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl
Size 343.2 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
fd3b8905e21431ad306eeaf56644a68fdd621bf8f3097eff54d0f6bdf7262065
BLAKE2b-256 checksum
How to use checksums
100a95cacee1b444993a1c2106b4fdb890ea3a648918f7cb8744a6cd1f9591db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl

Download URL httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl
Size 156.2 kB
Tags CPython 3.9 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
b08d00d889a118f68f37f3c43e359aab24ee29eb2e3fe96d64c6a2ba8b9d6557
BLAKE2b-256 checksum
How to use checksums
564724d1d1116ff514ecaf1f4e6f832856375df567d59191acb593ac8f818c48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp38-cp38-win_amd64.whl

Download URL httptools-0.2.0-cp38-cp38-win_amd64.whl
Size 141.2 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
cc9be041e428c10f8b6ab358c6b393648f9457094e1dcc11b4906026d43cd380
BLAKE2b-256 checksum
How to use checksums
2a4285763f28626b613b470442987eccd461f3308485b1d9c528499d683b2979
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl

Download URL httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl
Size 354.8 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
813871f961edea6cb2fe312f2d9b27d12a51ba92545380126f80d0de1917ea15
BLAKE2b-256 checksum
How to use checksums
b3e7b893f9e994732e8763d8f59913cb70faaa44f41df2fa15fa1624827d8f2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl

Download URL httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl
Size 155.5 kB
Tags CPython 3.8 macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
a289c27ccae399a70eacf32df9a44059ca2ba4ac444604b00a19a6c1f0809943
BLAKE2b-256 checksum
How to use checksums
03d15d617f1ca8d7839963db6c30e47f5c2276a99c44ee2c2535dcbe1ffcde4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp37-cp37m-win_amd64.whl

Download URL httptools-0.2.0-cp37-cp37m-win_amd64.whl
Size 139.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
d5682eeb10cca0606c4a8286a3391d4c3c5a36f0c448e71b8bd05be4e1694bfb
BLAKE2b-256 checksum
How to use checksums
415a89c0f669ae9a58e6855590a0f5c0af0f37a6bea57b51b0f79b6911c0dfcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl

Download URL httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl
Size 344.6 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
80ffa04fe8c8dfacf6e4cef8277347d35b0442c581f5814f3b0cf41b65c43c6e
BLAKE2b-256 checksum
How to use checksums
4c87ebb92639705924aac5ed6aa91bd4332b20d7180f3e94bd168742e7671025
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl

Download URL httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl
Size 154.1 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
01b392a166adcc8bc2f526a939a8aabf89fe079243e1543fd0e7dc1b58d737cb
BLAKE2b-256 checksum
How to use checksums
d20517556eb2088d280cd3fe78e52e334cf24d052cdb27102e87eee5233fef80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp36-cp36m-win_amd64.whl

Download URL httptools-0.2.0-cp36-cp36m-win_amd64.whl
Size 139.5 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
a7594f9a010cdf1e16a58b3bf26c9da39bbf663e3b8d46d39176999d71816658
BLAKE2b-256 checksum
How to use checksums
9489e88f473d8b9b0e60c9e3693fe16e4c8ef8aec67f4228e1a65e8dc6c2eb97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl

Download URL httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl
Size 343.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
3ab1f390d8867f74b3b5ee2a7ecc9b8d7f53750bd45714bf1cb72a953d7dfa77
BLAKE2b-256 checksum
How to use checksums
818fa8238a287d1bd3455e4297a358d4cdbd1da2bfb0ec3fbfb8a254119aa8e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl

Download URL httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl
Size 154.8 kB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
a23166e5ae2775709cf4f7ad4c2048755ebfb272767d244e1a96d55ac775cca7
BLAKE2b-256 checksum
How to use checksums
25d0092d6d1541a37885dbf11525ca9ad2a7082714511256801961d495b529c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl

Download URL httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl
Size 339.2 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
78d03dd39b09c99ec917d50189e6743adbfd18c15d5944392d2eabda688bf149
BLAKE2b-256 checksum
How to use checksums
aea50b450216fe120f2f92996e4c7632d8db65d1fdc574c98cfb7adb6148cc1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release files / httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl

Download URL httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl
Size 153.0 kB
Tags CPython 3.5 CPython 3.5 pymalloc macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
79dbc21f3612a78b28384e989b21872e2e3cf3968532601544696e4ed0007ce5
BLAKE2b-256 checksum
How to use checksums
8e4c4d22571b5f8eba7eff92c09e46b0d360f7813c3408bc68fcdbd60d1b6e6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

Release history Release notifications | RSS feed

0.8.0

50 release files

0.7.1

43 release files

0.6.4

43 release files

0.6.3

43 release files

0.6.2

43 release files

0.6.1

36 release files

0.5.0

41 release files

0.4.0

34 release files

0.3.0

24 release files

This release

0.2.0 This release

15 release files

0.1.2

15 release files

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page