Introduction
============

PushBaby is a simple APNS library using gevent. PushBaby aims to
do the hard bits of APNS for you and no more. It handles:

 * Packing APNS messages into the binary payload format
 * Establishing and reestablishing SSL connections
 * Receiving and propagating errors to your application, asynchronously
 * Encoding pushes to JSON using efficient encoding
 * Truncating messages to fit APNS
 * Retrying pushes on nonfatal errors

PushBaby takes APNS payloads as dictionaries: it does not attempt to
construct them for you.

PushBaby does not load balance over multiple connections, although
this is something that would be considered in the future.

If you use PushBaby, remember that the rest of your application
must be gevent compatible, or you'll find PushBaby won't do
important things like receive errors.


Introduction
============

PushBaby is a simple APNS library using gevent. PushBaby aims to
do the hard bits of APNS for you and no more. It handles:

 * Packing APNS messages into the binary payload format
 * Establishing and reestablishing SSL connections
 * Receiving and propagating errors to your application, asynchronously
 * Encoding pushes to JSON using efficient encoding
 * Truncating messages to fit APNS
 * Retrying pushes on nonfatal errors

PushBaby takes APNS payloads as dictionaries: it does not attempt to
construct them for you.

PushBaby does not load balance over multiple connections, although
this is something that would be considered in the future.

If you use PushBaby, remember that the rest of your application
must be gevent compatible, or you'll find PushBaby won't do
important things like receive errors.

Why PushBaby?
=============
There are many alternative APNS libraries for Python, for example:

applepushnotification
  https://github.com/martinkou/applepushnotification
  Similar, gevent-based library. Unmaintained.
apns
  https://github.com/djacobs/PyAPNs
  Uses pure python threads but will not always feed back errors if pushes can't
  be sent to the gateway.
pyapns
  https://github.com/samuraisam/pyapns/tree/master
  A full-featured XML-RPC HTTP-to-APNS server.
apns-clerk
  https://bitbucket.org/aleksihoffman/apns-clerk
  Fork of apns-client. Waits for error responses but means all calls to send a
  push block synchronously for some time.
APNSWrapper / HypnoAPNSWrapper
  https://code.google.com/p/apns-python-wrapper/
  Unmaintained. Uses openssl s_client.
apns-client
  https://bitbucket.org/sardarnl/apns-client
  Unmaintained

Add notes on the other preexisting Python APNS libraries.
Add notes on the other preexisting Python APNS libraries.
