semvec/pypi-packages huggingface dataset:
http 0.02
HTTP library for Python
License: MIT

http a HTTP library for Python
==============================

http is heavily inspired by the `HTTP::Message <https://metacpan.org/module/HTTP::Message>`__ distribution.

Synopsis
--------

    >>> from http import Request
    >>> request = Request('GET', 'http://pypi.python.org')
    >>> print request.method
    GET

Components
----------

http provides a few components to build HTTP messages:

- Headers: a class to manipulates HTTP headers
- Request: a class to encapsulate a HTTP request
- Response: a class to encapsulate a HTTP response
- Date: a class to convert date to and from ISO 8601 
- Url: a class to manipulate url

Headers
~~~~~~~

    >>> from http import Headers
    >>> h = Headers()
    >>> h.add('Content-Type', 'application/json')

Request
~~~~~~~

    >>> from http import Request
    >>> r = Request('GET', 'htttp://lumberjaph.net')

Response
~~~~~~~~

    >>> from http import Response
    >>> r = Response(200)

Links
-----

- `Documentation <http://readthedocs.org/docs/http/en/latest/>`__.
- `Repository <git://github.com/franckcuny/http.git>`__.

How to get?
-----------

Install with "pip" command:

    $ pip install http

or check out development version:

    $ git clone git://github.com/franckcuny/http.git
django-ipyfield 0.1.6
IPy.IP instances with BigInt storage for django models
License: MIT
Keywords: ip,models,django

.. -*- restructuredtext -*-

django-ipyfield
===============

``ipyfield`` provides a model field for 
`django <https://www.djangoproject.com>`_
that allows the storage of an ip address as a "pretend" ``PositiveBigInt``
(currently ``varchar(39)`` until I can figure out how to get an unsigned 64bit
integer column across all supported DBs)
on the db side by using `IPy <http://pypi.python.org/pypi/IPy/>`_ to handle
conversion to an ``IPy.IP`` instance (or ``None``) on the python side. 

Wut?
----

In its way, it gives us a way to store both **ipv4** and **ipv6** consistently
without having to throw them in long charfields. Also, it gives us an easy way
to validate data as it comes in, while giving us access to additional meta
information (basically everything that makes 
`IPy <http://pypi.python.org/pypi/IPy/>`_ so awesome).


Installation
------------

Add this to your django project by installing with ``pip``: ::
    
    pip install django-ipyfield

or with ``easy_install``: ::

    easy_install django-ipyfield



Usage
-----

In your models, do something like the following: ::
    
    from django.db import models
    from ipyfield.models import IPyField

    class MyModel(models.Model):

        # the regular params should work well enough here
        ipaddr = IPyField()
        # ... and so on


From here, any assignments to ``obj.ipaddr`` can be considered a constructor
argument to a new ``IPy.IP`` instance. Anything ``IP()`` can use to make a new
object can be used.

When making queries, I added one extra piece of syntactical sugar. For 
``__in`` (range) lookups, you can pass a **CIDR** notation address range, for 
example: ::
    
    MyModel.objects.filter(ipaddr__in='10.0.0.0/24')

Currently you need to use this form of notation supported for this kind of 
query. For now, if you need to use a ``prefix-netmask`` style notation, pass it 
to ``IPy.IP`` yourself and use the resulting instance as your filter parameter.


TODOs
-----

* figure out how to build an appropriately sized integer field across all DBs.

Changelog
---------

0.1.6
    Added support for ``gt``, ``gte``, ``lt``, and ``lte`` lookups.
0.1.5
    Added south support.

0.1.4
    IPy.IP instance raises exception when compared to a non-IP instance. This
    becomes an issue when you get into ModelForm validation (didn't come up when
    only using the ORM) with regards to empty/null values. Fixed by subclassing
    (wrapping) IPy.IP.
0.1.3
    Basic field functionality in place.