This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Project Description

rest_toolkit is a Python package which provides a very convenient way to build REST servers. It is build on top of Pyramid, but you do not need to know much about Pyramid to use rest_toolkit.

Quick example

This is a minimal example which defines a Root resource with a GET view, and starts a simple HTTP server. If you run this example you can request http://localhost:8080/ and you will see a JSON response with a status message.

from rest_toolkit import quick_serve
from rest_toolkit import resource


@resource('/')
class Root(object):
    def __init__(self, request):
        pass


@Root.GET()
def show_root(root, request):
    return {'status': 'OK'}


if __name__ == '__main__':
    quick_serve()

Changelog

0.13 - August 18, 2016

  • Preserve response exceptions raised by resource constructors or views if they already have a JSON content type.
  • Modify default JSON validation error response format: use the field with the validation error as key in the response data.
  • Use a custom rest_toolkit.ext.jsonschema.JSONValidationError exception for JSON validation errors. This allows for easy customisation of validation error response by defining a view for JSONValidationError.

0.12 - June 1, 2016

  • Pass extra resource and controller arguments to the underlying add_view() calls. This allows using predicates for views.

0.11 - May 6, 2016

  • Allow update_from_dict to return a custom response, which will be used by the default PATCH and PUT views.

0.10 - May 4, 2016

  • Do not require any permssions for OPTIONS requests. This can badly break authentication, since OPTIONS will be called to check if auth-related headers may be send.
  • Do not register catch-all exception view if debugging is enabled.

0.9 - September 20, 2015

  • Default to not allowing primary key changes for SQLResource objects. This can be toggled with a new allow_primary_key_change variable on the resource class.
  • Correctly set Access-Control-Allow-Methods header for resources using default views.

0.8 - September 5, 2015

  • Correctly handle OPTIONS requests for controllers.
  • Do not require any permissions for the generic error view. This fixes any errors being converted to forbidden errors on sites with a default permission.

0.7 - March 12, 2015

  • Fix editing of SQL resource.
  • Update default views and validation extensions not to assume anything about the to_dict() return format.
  • If the rest_toolkit.debug is set, or the REST_TOOLKIT_DEBUG environment variable is set to true, or the pyramid’s debug-all flag is set the system error exception handler will add the exception traceback to the response under a new traceback key.
  • Add basic support for collection resources. These can handle POST requests to create child objects.

0.6 - November 4, 2014

  • Make sure controllers for resource whose path do not end in a slash are reachable. This fixes issue 12.
  • Fix mismatch between code and documentation: use request_method as parameter name for the controller decorator.

0.5 - October 24, 2014

  • Allow overriding the request method for controllers. This fixes issue 10.
  • Add read_permission, update_permission and delete_permission options to the resource decorator to set permissions for default views. This fixes issue 8.
  • Rely on fixtures provided by pyramid_sqlalchemy for our SQL-related tests.
  • Preserve headers when converting a HTTP response to JSON. This fixes issue 6.
  • The route name for a resource can now be configured with a route_name parameter for the resource decorator.

0.4.1 - July 18, 2014

  • Make sure all raised HTTP exceptions are converted to JSON responses.

0.4 - July 18, 2014

This releases focuses on improving the documentation and fixing problems in the SQL extension.

  • Fix several errors in the SQLResource defaults views.
  • Configuring the SQL extension is no longer necessary if you use pyramid_sqlalchemy to handle SQLAlchemy integration.
  • Travis is now setup to automatically run tests on CPython 2.7, CPython 3.3, CPython 3.4 and PyPy.
  • Fix Python 3 compatibility problem in the generic error view.
  • Drop explicit Python 2.6 support. The tests use too many set literals to make Python 2.6 worthwile.
  • Modify EditableResource to not inherit from ViewableResource. This makes the separation between editing and viewing explicit, and works around the inability of Python to handle the inheritance schemes where a base classes is used multiple times.
  • Remove the default value for replace in EditableResource.updat_from_dict(). This did not serve a useful purpose, and could be confusing.
  • Set self.request in SQLResource constructor.

0.3 - July 11, 2014

This release fixes several critical errors in the SQL extension:

  • Fix the invoction of the context query.
  • Return not-found error from SQLResource instead of an internal error when no SQL row could be found.
  • Do not enable default views for SQLResource automatically. This should be an explicit decision by the user.

0.2.2 - July 11, 2014

  • Fix several errors in SQL extension.

0.2.1 - July 10, 2014

  • Add a MANIFEST.in to the source distribution installable.

0.2 - July 9, 2014

  • Several demos showing how to use rest_toolkit with AngularJS have been added.
  • Support for default DELETE, GET, PATCH and PUT views has been added.
  • Various documentation fixes and improvements.

0.1 - Released 24 June, 2014

This is the first release.

Release History

Release History

0.13

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.12

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.11

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.10

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.9

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.8

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
rest_toolkit-0.13-py2.py3-none-any.whl (19.4 kB) Copy SHA256 Checksum SHA256 3.5 Wheel Aug 18, 2016
rest_toolkit-0.13.tar.gz (31.4 kB) Copy SHA256 Checksum SHA256 Source Aug 18, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting