Python URI-Template library
Python
Switch branches/tags
Nothing to show
Latest commit 504b9bd Aug 19, 2008 @jacobian jacobian Updated README.
Permalink
Failed to load latest commit information.
.hgtags Added tag release-1.0 for changeset 12ef4cff18ab Jan 29, 2008
LICENSE Initial revision. Jan 8, 2008
MANIFEST
MANIFEST.in Added missing files from last commit Jan 29, 2008
README
setup.py Added missing files from last commit Jan 29, 2008
uri.py

README

About
=====

A library for simple URI handling. It has no external dependancies, and works
with Python 2.3+.

Currently contains only an implementation of URI-Templates
(http://bitworking.org/projects/URI-Templates/) -- but see the TODO_ below.

Some bits are inspired by or based on:

    * Joe Gregorio's example implementation
      (http://code.google.com/p/uri-templates/)

    * Addressable (http://addressable.rubyforge.org/)

Examples
========

Simple usage::

    >>> import uri
    
    >>> args = {'foo': 'it worked'}
    >>> uri.expand_template("http://example.com/{foo}", args)
    'http://example.com/it%20worked'

    >>> args = {'a':'foo', 'b':'bar', 'a_b':'baz'}
    >>> uri.expand_template("http://example.org/{a}{b}/{a_b}", args)
    'http://example.org/foobar/baz'
    
You can also use keyword arguments for a more pythonic style::
    
    >>> uri.expand_template("http://example.org/?q={a}", a="foo")
    'http://example.org/?q=foo'

Contributing
============

I use GitHub; the canonical repository lives at
http://github.com/jacobian/uri/tree. Please feel free to send pull requests or
patches to <jacob@jacobian.org>

TODO
----

Over time, I'd like to add the following features to this library:

    * ``uri.extract(template, uri)``: extract a dict of info given a template
      and a URI.
      
    * ``uri.parse(uri)``: thin wrapper around ``urlparse.urlparse()`` that
      returns a class (so you can do e.g. ``some_uri.fragment`` or whathaveyou.)
      This URI class should have expand/extract methods.
      
    * Add methods/functions to do sane URI joining -- ``urlparse.urljoin`` 
      *never* does what I think it's going to do, especially when faced
      with relative URIs.