### Navigation

- index
- next |
- previous |
- Dugong 3.5 documentation »

# Introduction

The Python Dugong module provides an API for communicating with HTTP 1.1 servers. It is an alternative to the standard library’s `http.client` (formerly httplib) module. In contrast to `http.client`, Dugong:

- allows you to send multiple requests right after each other without having to read the responses first.
- supports waiting for 100-continue before sending the request body.
- raises an exception instead of silently delivering partial data if the connection is closed before all data has been received.
- raises one specific exception (`ConnectionClosed`) if the connection has been closed (while `http.client` connection may raise any of `BrokenPipeError`, `BadStatusLine`, `ConnectionAbortedError`, `ConnectionResetError`, `IncompleteRead` or simply return `''` on read)
- supports non-blocking, asynchronous operation and is compatible with the asyncio module.
- can in most cases distinguish between an unavailable DNS server and an unresolvable hostname.
- is not compatible with old HTTP 0.9 or 1.0 servers.

All request and response headers are represented as `str`, but must be encodable in latin1. Request and response body must be bytes-like objects or binary streams.

Dugong requires Python 3.3 or newer.

## Installation

As usual: download the tarball from PyPi, extract it, and run

    # python3 setup.py install [--user]

To run the self-tests, install py.test and run

    # py.test-3 test/

## Getting Help

The documentation can be read online and is also included in the doc/html directory of the dugong tarball.

Please report any bugs on the issue tracker. For discussion and questions, please subscribe to the dugong mailing list.

## Development Status

The Dugong API is not yet stable and may change from one release to the other.

### Navigation

- index
- next |
- previous |
- Dugong 3.5 documentation »