routr 0.7.2
URL routing made right
License: BSD
Keywords: routr routes routing webob

routr -- lightweight request routing for WebOb
==============================================

Just a small example::

  from routr import route, GET, POST
  from routr.schema import form, String

  def create_user(username=None):
    ...

  def get_user(id):
    ...

  routes = route("/users",
    route(POST, "/",          form(username=String), create_user),
    route(GET,  "/{id:int}",  get_user)
    )

Docs_ are hosted at excellent readthedocs project.

.. _docs: http://routr.readthedocs.org/


0.7.1
-----

* Fix Python 3 support for ``routr.utils.import_string`` shared function.

0.7.0
-----

* Initial Python 3.2 and 3.3 support. Also backport to Python 2.6.

0.6.2
-----

* Trace.annotation(name, default=None) method to retrieve annotation from
  routes.

0.6.1
-----

* routr.static.static accepts annotations
* routr.static.static returns Response subclass' object

0.6
---

* schema validation and doc generation moved to separate packages

0.5.1
-----

* fix bug with trace.args/kwargs updates

0.5
---

* use ``schemify`` for schema validation

* remove ``routr.schema`` completely

* remove ``routr.schema2`` -- ``qs`` and ``form`` guards are now can be imported directly
  from ``routr`` module

0.4.2
-----

* routr.schema2: opt now can provide default value

* routr.schema2: allow namedtuple-based schemas

0.4.1
-----

* HTTP methods constants now can be used to define routes

0.4
---

* allow setting custom class for URL matching -- use ``url_pattern_cls`` keyword
  argument for ``route`` directive

* lightweight schema validation package ``routr.schema2``

0.3.4
-----

* URL pattern type ``str`` now has ``re`` arg -- allows to validate string via
  regexp

0.3.3
-----

* fix url pattern matching for labels with numbers, like ``/{id1}``

0.3.2
-----

* ``routr.static.static`` routes now can be distinguished via ``static_view``
  annotation instead of view attribute (still here for backward compatibility)

0.3.1
-----

* fix ``routr.static`` behaviour

0.3
---

* get rid of ``Configuration``, now ``route`` is just a plain function -- this
  allows better composability w/o requirement to share configuration object
  between different parts of the app

* add ``routr.static`` for serving static files

* add ``routr.utils.positional_args`` for introspection of positional arguments
  of different types of objects and ``routr.utils.inject_args`` for injecting
  positional arguments based on introspection

0.2.1
-----

* bugfixes to DSL

0.2
---

* [not backward compatible] new DSL -- got rid of guards keyword argument which
  is too noisy

0.1.7
-----

* [bugfix] incorrect reversal of urls with more than one param

0.1.6
-----

* [bugfix] fix bug with RouteGuarded poped up in RouteGroup match

* add '_' to allowed args in URLPattern

0.1.5
-----

* introduced RequestParams.exception_factory which abstracts away
  HTTPBadRequest raise in case of invalid data being supplied

* [bugfix] RouteGuarded.response now installed correctly, previously it
  sometimes contained NoUrlMatched objects which are not responses

0.1.4
-----

* RequestParams.post_processor now also can be accumulated via addition

* fix bug in RequestParams which prevented Option wrap SchemaNode objects
  directly

0.1.3
-----

* fix broken 0.1.2 release by including CHANGES file in dist

0.1.2
-----

* trace factory made configurable via Configuration.trace attribute

* method and PATH_INFO extraction delegated to configuration, allows
  implementing routing for other request wrapper (werkzeug or django's request
  for example)

* routes now have access to configuration object via ``cfg`` attribute

0.1.1
-----

* allow guards return None (routing doesn't break on this and proceed with old
  trace)

* RequestParams now can accept colander.SchemaNode directly (allows to supply
  validators)

0.1
---

* initial release