{ "info": { "author": "LAZR Developers", "author_email": "lazr-developers@lists.launchpad.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "..\n This file is part of lazr.restful.\n\n lazr.restful is free software: you can redistribute it and/or modify it\n under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, version 3 of the License.\n\n lazr.restful is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public\n License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with lazr.restful. If not, see .\n\n************\nlazr.restful\n************\n\nlazr.restful is a library for publishing Python objects through a\nRESTful web service. To tell lazr.restful which objects you want\nexposed and how, you annotate your existing Zope interfaces.\n\n\nThe WSGI example web service\n============================\n\nThe example web service in src/lazr/restful/example/wsgi/ is the best\nplace to start understanding lazr.restful. It's a very simple web\nservice that uses a subset of lazr.restful's features and can be run\nas a standalone WSGI application. An explanation of the code can be\nfound in src/lazr/restful/example/wsgi/README.txt\n\nThe full example web service\n============================\n\nTo understand all of lazr.restful, you should look at the web service\ndefined in src/lazr/restful/example/base/. It defines a simple\napplication serving information about cookbooks and recipes. The\ninterfaces (interfaces.py) are annotated with lazr.restful decorators\nthat say which fields and methods to publish from IRecipe, ICookbook,\nand so on. The implementations of those interfaces are in root.py.\n\nThe machinery of lazr.restful takes the decorators in interfaces.py,\nand generates an interface that maps incoming HTTP requests to\noperations on the actual objects defined in root.py. You don't have to\ndo any HTTP server programming to get it to work (though at the moment\nyou do have to know a fair amount about Zope).\n\nYou can test the example web service by running `bin/test`. The\ndoctests in src/lazr/restful/example/base/tests use a fake httplib2\nconnection to simulate HTTP requests to the web service. You can watch\nthe tests make GET, PUT, POST, PATCH, and DELETE requests to the web\nservice. Start with root.txt.\n\nOther code\n==========\n\nTwo other pieces of code might be of interest when you're starting\nout.\n\n* declarations.py contains all the Python\n decorators. docs/webservice-declarations.txt shows how to use them.\n\n* docs/webservice.txt shows an example of a webservice that creates\n Entry and Collection classes directly rather than generating them\n with the declarations. If you want to use lazr.restful without using\n zope.schema, this is the test to look at.\n\n\n=====================\nNEWS for lazr.restful\n=====================\n\n0.20.1 (2018-02-21)\n===================\n\nAdjust docstring rendering to avoid closing sys.stdout when running under\n\"zope.testrunner --subunit\" with docutils >= 0.8.\n\n0.20.0 (2017-06-29)\n===================\n\nFixed bug 1294543: contributes_to can now reference interfaces in other\nmodules and webservice:register directives.\n\nSwitch zope.interface, zope.component, and lazr.delegates users from class\nadvice to class decorators.\n\nRestrict find_exported_interfaces to names that would ordinarily be\nconsidered to be exported from a module.\n\n0.19.10 (2012-12-06)\n====================\n\nFixed bug 809863: WebServicePublicationMixin.getResouce() converts\nComponentLookupErrors to NotFound.\n\n0.19.9 (2012-10-23)\n===================\n\nFixed bug 924291: The FixedVocabularyFieldMarshaller will now correctly return\nthe entire vocabulary if the value passed in is None.\n\n0.19.8 (2012-10-02)\n===================\n\nFixed bug 1020439: The dict marshaller will now correctly unmarshall None.\n\n0.19.7 (2012-09-26)\n===================\n\nFixed bug 1056666: make named operations which result in a resource URL change\nissue a 301 response containing the new location.\n\n0.19.6 (2012-03-15)\n===================\n\nFixed bug 955668: make marshallers work correctly for collection fields\n(Set, List, Dict) where the key and/or value types have not been specified.\nIn such cases, the default marshaller is used for the collection elements.\n\n0.19.5 (2012-03-13)\n===================\n\nFixed bug 953587: add a dict marshaller so that exported method parameters\ncan be of type dict.\n\n0.19.4 (2011-10-11)\n===================\n\nFixed bug 871944: a successful write with an If-Match would sometimes\nreturn stale values.\n\n0.19.3 (2011-09-20)\n===================\n\nFixed bug 854695: exceptions with no __traceback__ attribute would cause an\nAttributeError\n\n0.19.2 (2011-09-08)\n===================\n\nFixed bug 842917: multiple values for ws.op in a request would generate a\nTypeError\n\n0.19.1 (2011-09-08)\n===================\n\nFixed bug 832136: original tracebacks were being obscured when exceptions are\nrereaised.\n\n0.19.0 (2011-07-27)\n===================\n\nA new decorator, @accessor_for, has been added to\nlazr.restful.declarations. This makes it possible to export a method\nwith bound variables as an accessor for an attribute.\n\n0.18.1 (2011-04-01)\n===================\n\nFixed minor test failures.\n\nThe object modification event will not be fired if a client sends an\nempty changeset via PATCH.\n\nThe webservice may define an adapter which is used, after an operation on a\nresource, to provide notifications consisting of namedtuples (level, message).\nAny notifications are json encoded and inserted into the response header using\nthe 'X-Lazr-Notification' key. They may then be used by the caller to provide\nextra information to the user about the completed request.\n\nThe webservice:json TALES function now returns JSON that will survive\nHTML escaping.\n\n0.18.0 (2011-03-23)\n===================\n\nIf the configuration variable `require_explicit_versions` is set,\nlazr.restful will not load up a web service unless every field, entry,\nand named operation explicitly states which version of the web service\nit first appears in.\n\n0.17.5 (2011-03-15)\n===================\n\nWhen a view is registered for an exception, but the view contains no\ninformation that's useful to lazr.restful, re-raise the exception\ninstead of trying to render the view.\n\n0.17.4 (2011-03-08)\n===================\n\nReverted the client cache representations to JSON-only. Call sites need to\nescape the JSON_PLUS_XHTML_TYPE representation which may require\nJSONEncoderForHTML or declaring the the script as CDATA.\n\n0.17.3 (2011-03-08)\n===================\n\nFixed a bug in exception handling when the associated response code is\nin the 4xx series.\n\n0.17.2 (2011-03-03)\n===================\n\nSeveral of the techniques for associating an exception with an HTTP\nresponse code were not working at all. Fixed them.\n\n0.17.1 (2011-02-23)\n===================\n\nAdd a new test to the testsuite.\n\n0.17.0 (2011-02-17)\n===================\n\nAdded the ability to get a combined JSON/HTML representation of an\nentry that has custom HTML representations for some of its fields.\n\n0.16.1 (2011-02-16)\n===================\n\nFixed a bug that prevented a write operation from being promoted to a\nmutator operation.\n\n0.16.0 (No official release)\n============================\n\nIf each entry in the web service corresponds to some object on a\nwebsite, and there's a way of converting a web service request into a\nwebsite request, the web service will now provide website links for\neach entry.\n\nYou can suppress the website link for a particular entry class by\npassing publish_web_link=False into export_as_webservice_entry().\n\nValidation errors for named operations will be properly sent to the\nclient even if they contain Unicode characters. (Launchpad bug 619180.)\n\n0.15.4 (2011-01-26)\n===================\n\nFixed inconsistent handling of custom HTML field renderings. An\nIFieldHTMLRenderer can now return either Unicode or UTF-8.\n\n0.15.3 (2011-01-21)\n===================\n\nlazr.restful will now complain if you try to export an IObject, as\nthis causes infinite recursion during field validation. We had code\nthat worked around the infinite recursion, but it wasn't reliable and\nwe've now removed it to simplify. Use IReference whenever you would\nuse IObject.\n\n\n0.15.2 (2011-01-20)\n===================\n\nlazr.restful gives a more helpful error message when a published\ninterface includes a reference to an unpublished interface. (Launchpad\nbug 539070)\n\nlazr.restful's tests now pass in Python 2.7. (Launchpad bug 691841)\n\n0.15.1 (2011-01-19)\n===================\n\nFixed a redirect bug when a web browser requests a representation\nother than JSON.\n\nRemoved overzealous error checking that was causing problems for\nbrowsers such as Chromium. (Launchpad bug 423149.)\n\n0.15.0 (2010-11-30)\n===================\n\nAdded an optimization to the WADL docstring handling that results in a 30%\ndecrease in WADL generation time for large files.\n\n0.14.1 (2010-10-24)\n===================\n\nFixed a unicode encoding bug that precluded reporting exceptions with\nnon-ASCII characters.\n\n0.14.0 (2010-10-05)\n===================\n\nRework ETag generation to be less conservative (an optimization).\n\n0.13.3 (2010-09-29)\n===================\n\nNamed operations that take URLs as arguments will now accept URLs\nrelative to the versioned service root. Previously they would only\naccept absolute URLs. PUT and PATCH requests will also accept relative\nURLs. This fixes bug 497602.\n\n0.13.2 (2010-09-27)\n===================\n\nAvoided an error when looking at a Location header that contains\ncharacters not valid in URIs. (An error will probably still happen,\nbut having it happen in lazr.restful was confusing people.)\n\n0.13.1 (2010-09-23)\n===================\n\nRemoved a Python 2.6-ism to restore compatibility with Python 2.5.\n\n0.13.0 (2010-09-06)\n===================\n\nAdd the ability to annotate an exception so the client will be given the\nexception message as the HTTP body of the response.\n\n0.12.1 (2010-09-02)\n===================\n\nMake WADL generation more deterministic.\n\n0.12.0 (2010-08-26)\n===================\n\nAdded the ability to take a read-write field and publish it as\nread-only through the web service.\n\n0.11.2 (2010-08-23)\n===================\n\nOptimized lazr.restful to send 'total_size' instead of\n'total_size_link' when 'total_size' is easy to calculate, possibly\nsaving the client from sending another HTTP request.\n\n0.11.1 (2010-08-13)\n===================\n\nFixed a bug that prevented first_version_with_total_size_link from\nworking properly in a multi-version environment.\n\n0.11.0 (2010-08-10)\n===================\n\nAdded an optimization to total_size so that it is fetched via a link when\npossible. The new configuration option first_version_with_total_size_link\nspecifies what version should be the first to expose the behavior. The default\nis for it to be enabled for all versions so set this option to preserve the\nearlier behavior for previously released web services.\n\n0.10.0 (2010-08-05)\n===================\n\nAdded the ability to mark interface A as a contributor to interface B so that\ninstead of publishing A separately we will add all of A's fields and\noperations to the published version of B. Objects implementing B must be\nadaptable into A for this to work, but lazr.restful will take care of doing\nthe actual adaptation before accessing fields/operations that are not directly\nprovided by an object.\n\n0.9.29 (2010-06-14)\n===================\n\nAdded invalidation code for the representation cache on events\ngenerated by lazr.restful itself. Made the cache more robust and fixed\na bug where it would totally redact a forbidden representation rather\nthan simply refuse to serve it. Made it possible for a cache to refuse\nto cache an object for any reason.\n\n0.9.28 (2010-06-03)\n===================\n\nSpecial note: This version adds a new configuration element,\n'enable_server_side_representation_cache'. This lets you turn the\nrepresentation cache on and off at runtime without unregistering the\ncache utility.\n\nFixed some test failures.\n\n0.9.27 (2010-06-01)\n====================\n\nAdded the ability to define a representation cache used to store the\nJSON representations of entry resources, rather than building them\nfrom scratch every time. Although the cache has hooks for\ninvalidation, lazr.restful will never invalidate any part of the cache\non its own. You need to hook lazr.restful's invalidation code into\nyour ORM or other data store.\n\n0.9.26 (2010-05-18)\n===================\n\nSpecial note: This version adds a new configuration element,\n'compensate_for_mod_compress_etag_modification'. If you are running\nlazr.restful behind an Apache server, setting this configuration\nelement will make mod_compress work properly with lazr.restful. This\nis not a permanent solution: a better solution will be available when\nApache bug 39727 is fixed.\n\nSpecial note: This version removes the configuration element\n'set_hop_to_hop_headers'. You can still define this element in your\nconfiguration, but it will have no effect.\n\nRemoved code that handles compression through hop-to-hop\nheaders. We've never encountered a real situation in which these\nheaders were useful. Compression can and should be handled by\nintermediaries such as mod_compress. (Unfortunately, mod_compress has\nits own problems, which this release tries to work around.)\n\n0.9.25 (2010-04-14)\n===================\n\nSpecial note: This version introduces a new configuration element,\n'caching_policy'. This element starts out simple but may become more\ncomplex in future versions. See the IWebServiceConfiguration interface\nfor more details.\n\nService root resources are now client-side cacheable for an amount of\ntime that depends on the server configuration and the version of the\nweb service requested. To get the full benefit, clients will need to\nupgrade to lazr.restfulclient 0.9.14.\n\nWhen a PATCH or PUT request changes multiple fields at once, the\nchanges are applied in a deterministic order designed to minimize\npossible conflicts.\n\n0.9.24 (2010-03-17)\n====================\n\nEntry resources will now accept conditional PATCH requests even if one\nof the resource's read-only fields has changed behind the scenes\nrecently.\n\n0.9.23 (2010-03-11)\n===================\n\nThere are two new attributes of the web service configuration,\n\"service_description\" and \"version_descriptions\". Both are optional,\nbut they're useful for giving your users an overview of your web\nservice and of the differences between versions.\n\n0.9.22 (2010-03-05)\n===================\n\nSpecial note: this version will break backwards compatibility in your\nweb service unless you take a special step. See\n\"last_version_with_named_mutator_operations\" below.\n\nRefactored the code that tags request objects with version\ninformation, so that tagging would happen consistently.\n\nBy default, mutator methods are no longer separately published as\nnamed operations. To maintain backwards compatibility (or if you just\nwant this feature back), put the name of the most recent version of\nyour web service in the \"last_version_with_mutator_named_operations\"\nfield of your IWebServiceConfiguration implementation.\n\n0.9.21 (2010-02-23)\n===================\n\nFixed a family of bugs that were treating a request originated by a\nweb browser as though it had been originated by a web service client.\n\n0.9.20 (2010-02-16)\n===================\n\nFixed a bug that broke multi-versioned named operations that take\nthe request user as a fixed argument.\n\n0.9.19 (2010-02-15)\n===================\n\nA few minor bugfixes to help with Launchpad integration.\n\n0.9.18 (2010-02-11)\n===================\n\nSpecial note: this version contains backwards-incompatible\nchanges. You *must* change your configuration object to get your code\nto work in this version! See \"active_versions\" below.\n\nAdded a versioning system for web services. Clients can now request\nany number of distinct versions as well as a floating \"trunk\" which is\nalways the most recent version. By using version-aware annotations,\ndevelopers can publish the same data model differently over time. See\nthe example web service in example/multiversion/ to see how the\nannotations work.\n\nThis release _replaces_ one of the fields in\nIWebServiceConfiguration. The string 'service_version_uri'_prefix has\nbecome the list 'active_versions'. The simplest way to deal with this is\nto just put your 'service_version_uri_prefix' into a list and call it\n'active_versions'. We recommend you also add a floating \"development\"\nversion to the end of 'active_versions', calling it something like\n\"devel\" or \"trunk\". This will give your users a permanent alias to\n\"the most recent version of the web service\".\n\n0.9.17 (2009-11-10)\n===================\n\nFixed a bug that raised an unhandled exception when a client tried to\nset a URL field to a non-string value.\n\n0.9.16 (2009-10-28)\n===================\n\nFixed a bug rendering the XHTML representation of exproted objects when they\ncontain non-ascii characters.\n\n0.9.15 (2009-10-21)\n===================\n\nCorrected a misspelling of the WADL media type.\n\n0.9.14 (2009-10-20)\n===================\n\nlazr.restful now runs without deprecation warnings on Python 2.6.\n\n0.9.13 (2009-10-19)\n===================\n\nFixed WADL template: HostedFile DELETE method should have an id of\nHostedFile-delete, not HostedFile-put.\n\n0.9.12 (2009-10-14)\n===================\n\nTransparent compression using Transfer-Encoding is now optional and\ndisabled by default for WSGI applications. (Real WSGI servers don't\nallow applications to set hop-by-hop headers like Transfer-Encoding.)\n\nThis release introduces a new field to IWebServiceConfiguration:\nset_hop_by_hop_headers. If you are rolling your own\nIWebServiceConfiguration implementation, rather than subclassing from\nBaseWebServiceConfiguration or one of its subclasses, you'll need to\nset a value for this. Basically: set it to False if your application\nis running in a WSGI server, and set it to True otherwise.\n\n0.9.11 (2009-10-12)\n===================\n\nFixed a minor import problem.\n\n0.9.10 (2009-10-07)\n===================\n\nlazr.restful runs under Python 2.4 once again.\n\n0.9.9 (2009-10-07)\n==================\n\nThe authentication-related WSGI middleware classes have been split\ninto a separate project, lazr.authentication.\n\nFixed a bug that prevented some incoming strings from being loaded by\nsimplejson.\n\n0.9.8 (2009-10-06)\n==================\n\nAdded WSGI middleware classes for protecting resources with HTTP Basic\nAuth or OAuth.\n\n0.9.7 (2009-09-24)\n==================\n\nFixed a bug that made it impossible to navigate to a field resource if\nthe field was a link to another object.\n\n0.9.6 (2009-09-16)\n==================\n\nSimplified most web service configuration with grok directives.\n\n0.9.5 (2009-08-26)\n==================\n\nAdded a function that generates a basic WSGI application, given a\nservice root class, a publication class, and a response class.\n\nAdded an AbsoluteURL implementation for the simple\nServiceRootResource.\n\nAdded an adapter from Django's Manager class to IFiniteSequence, so\nthat services that use Django can serve database objects as\ncollections without special code.\n\nAdded an AbsoluteURL implementation for objects that provide more than\none URL path for the generated URL.\n\nFor services that use Django, added an adapter from Django's\nObjectDoesNotExist to lazr.restful's NotFoundView.\n\nFixed some testing infrastructure in lazr.restful.testing.webservice.\n\nFix some critical packaging problems.\n\n0.9.4 (2009-08-17)\n==================\n\nFixed an import error in simple.py.\n\nRemoved a Python 2.6ism from example/wsgi/root.py.\n\n\n0.9.3 (2009-08-17)\n==================\n\nAdded a lazr.restful.frameworks.django module to help with publishing\nDjango model objects through lazr.restful web services.\n\nTraverseWithGet implementations now pass the request object into\nget().\n\nCreate a simplified IServiceRootResource implementation for web\nservices that don't register their top-level collections as Zope\nutilities.\n\nMake traversal work for entries whose canonical location is beneath\nanother entry.\n\nRaise a ValueError when numberic dates are passed to the\nDatetimeFieldMarshaller.\n\n\n0.9.2 (2009-08-05)\n==================\n\nAdded a second example webservice that works as a standalone WSGI\napplication.\n\nBug 400170; Stop hacking sys.path in setup.py.\n\nBug 387487; Allow a subordinate entry resource under a resource where there\nwould normally be a field. Navigation to support subordinate IObjects is\nadded to the publisher.\n\n\n0.9.1 (2009-07-13)\n==================\n\nDeclare multipart/form-data as the incoming media type for named\noperations that include binary fields.\n\n0.9 (2009-04-29)\n================\n\n- Initial public release", "description_content_type": null, "docs_url": null, "download_url": "https://launchpad.net/lazr.restful/+download", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://launchpad.net/lazr.restful", "keywords": "", "license": "LGPL v3", "maintainer": "", "maintainer_email": "", "name": "lazr.restful", "package_url": "https://pypi.org/project/lazr.restful/", "platform": "", "project_url": "https://pypi.org/project/lazr.restful/", "project_urls": { "Download": "https://launchpad.net/lazr.restful/+download", "Homepage": "https://launchpad.net/lazr.restful" }, "release_url": "https://pypi.org/project/lazr.restful/0.20.1/", "requires_dist": null, "requires_python": "", "summary": "Publish Python objects as RESTful resources over HTTP.", "version": "0.20.1" }, "last_serial": 3602476, "releases": { "0.11.0": [], "0.11.1": [], "0.11.2": [], "0.11.3": [], "0.12.0": [], "0.12.1": [], "0.13.0": [], "0.13.1": [], "0.13.2": [], "0.13.3": [], "0.14.0": [], "0.14.1": [], "0.15.0": [], "0.15.1": [], "0.15.2": [], "0.15.3": [], "0.15.4": [], "0.16.0": [], "0.16.1": [], "0.17.0": [], "0.17.1": [], "0.17.2": [], "0.17.3": [], "0.17.5": [], "0.18.0": [], "0.18.1": [], "0.19.1": [], "0.19.10": [], "0.19.2": [], "0.19.3": [], "0.19.4": [ { "comment_text": "", "digests": { "md5": "dd9a552f8f9b933fb776a9c0b17bfc8b", "sha256": "1ca61845163aa513f49d6c16b2d49562ebd44f22eaa652c69fcbce6f3d5011b1" }, "downloads": -1, "filename": "lazr.restful-0.19.4.tar.gz", "has_sig": false, "md5_digest": "dd9a552f8f9b933fb776a9c0b17bfc8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 268501, "upload_time": "2012-03-14T01:20:46", "url": "https://files.pythonhosted.org/packages/94/55/ad72f26a18436fa5e38836c340caf1c71c03251e1fd9f10004dceed9aa73/lazr.restful-0.19.4.tar.gz" } ], "0.19.5": [ { "comment_text": "", "digests": { "md5": "7292d4e58a9293e4c03523ace938acf4", "sha256": "7f29ced8d67cf6b7e60374a8da89b8f534c9ef651fb6a0b25580e1fd2d232af9" }, "downloads": -1, "filename": "lazr.restful-0.19.5.tar.gz", "has_sig": true, "md5_digest": "7292d4e58a9293e4c03523ace938acf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 261615, "upload_time": "2012-03-14T01:21:51", "url": "https://files.pythonhosted.org/packages/4f/fb/aa548f77b47ffaf8e7fa2fd9892c7e6e837aa17852fe5f42020fba4384a7/lazr.restful-0.19.5.tar.gz" } ], "0.19.6": [ { "comment_text": "", "digests": { "md5": "aadbadc135003d297cccdce47a33c00e", "sha256": "3dbf54975d53121d74791029eee9d3ca9f98d8294efd6b8b664aba362bd6f82e" }, "downloads": -1, "filename": "lazr.restful-0.19.6.tar.gz", "has_sig": true, "md5_digest": "aadbadc135003d297cccdce47a33c00e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 261933, "upload_time": "2012-03-15T04:35:00", "url": "https://files.pythonhosted.org/packages/e2/12/16f078599e10a37b9ab8e5abccd0c44f5338c398c2c65653312a8bc72fc6/lazr.restful-0.19.6.tar.gz" } ], "0.19.7": [ { "comment_text": "", "digests": { "md5": "8050c1532565f4d885a63bf017983064", "sha256": "2f690fdd71c9c885360e3643d51cd7dabedfe620491454f00250e245193a9960" }, "downloads": -1, "filename": "lazr.restful-0.19.7.tar.gz", "has_sig": true, "md5_digest": "8050c1532565f4d885a63bf017983064", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 262069, "upload_time": "2012-09-27T00:28:53", "url": "https://files.pythonhosted.org/packages/4e/fb/fc6ad0f9ae46965221d8a1a6a4ac213fb9563b55a7561e220d3efd8f95ef/lazr.restful-0.19.7.tar.gz" } ], "0.19.8": [ { "comment_text": "", "digests": { "md5": "8aebe3f658a0ba00cd924291371b1813", "sha256": "fcce96fc7188bd9065f65d6676336a16d6be5bb6beefe05526dd291bc261796c" }, "downloads": -1, "filename": "lazr.restful-0.19.8.tar.gz", "has_sig": false, "md5_digest": "8aebe3f658a0ba00cd924291371b1813", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 268592, "upload_time": "2012-10-02T01:19:42", "url": "https://files.pythonhosted.org/packages/71/a9/5106d22a04382f32e5082a408df7a798b12a08de426edc7b908d7f958627/lazr.restful-0.19.8.tar.gz" } ], "0.19.9": [ { "comment_text": "", "digests": { "md5": "82891bd0bd76abe54c8830ba8588201d", "sha256": "ba98bf516e46a111771844c8c09a8c391199ca2c62aa980a4eb698280674746f" }, "downloads": -1, "filename": "lazr.restful-0.19.9.tar.gz", "has_sig": false, "md5_digest": "82891bd0bd76abe54c8830ba8588201d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 268798, "upload_time": "2012-10-23T05:07:50", "url": "https://files.pythonhosted.org/packages/a1/30/e9999bbef621e4355a061f37bb5f67f4db6e301bff99b8b1840f1080794c/lazr.restful-0.19.9.tar.gz" } ], "0.20.0": [ { "comment_text": "", "digests": { "md5": "65e5bfec57848454c5eea9b92118d97e", "sha256": "235184d8235e566dff9600a978af327fc57639b742fd5159090cac018788e988" }, "downloads": -1, "filename": "lazr.restful-0.20.0.tar.gz", "has_sig": true, "md5_digest": "65e5bfec57848454c5eea9b92118d97e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 270764, "upload_time": "2017-06-29T00:38:25", "url": "https://files.pythonhosted.org/packages/23/b6/0ca9c4af6697ca23f1c3c5ac73818bfa60a1169775b13c70804b99fb9b20/lazr.restful-0.20.0.tar.gz" } ], "0.20.1": [ { "comment_text": "", "digests": { "md5": "9b09dd45d999d7cb13db255e323f2a07", "sha256": "0386643d7fb6e579899b9854f840d01cbeae21ea2496eb4b6d570525d72330ea" }, "downloads": -1, "filename": "lazr.restful-0.20.1.tar.gz", "has_sig": true, "md5_digest": "9b09dd45d999d7cb13db255e323f2a07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 270525, "upload_time": "2018-02-21T15:22:27", "url": "https://files.pythonhosted.org/packages/7e/d9/02e4411245f33d149cfda77853ba0625ff3e09f2208a0ae8ba9aaa08bd37/lazr.restful-0.20.1.tar.gz" } ], "0.9": [], "0.9.1": [], "0.9.10": [], "0.9.11": [], "0.9.12": [], "0.9.13": [], "0.9.14": [], "0.9.15": [], "0.9.16": [], "0.9.17": [], "0.9.18": [], "0.9.2": [], "0.9.20": [], "0.9.21": [], "0.9.22": [], "0.9.23": [], "0.9.24": [], "0.9.25": [], "0.9.26": [ { "comment_text": "", "digests": { "md5": "fd0c62625b70447cb23606547253b7f7", "sha256": "ec11fd370ea430241004158e3ee9fe5cc3d08de135989fed9e3d005425b89516" }, "downloads": -1, "filename": "lazr.restful-0.9.26.tar.gz", "has_sig": true, "md5_digest": "fd0c62625b70447cb23606547253b7f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 205273, "upload_time": "2010-06-09T21:30:53", "url": "https://files.pythonhosted.org/packages/8b/d1/89392855ceb28cae1013f7b87bf731bacc36bcda3ff0f13fc5bbf421df6d/lazr.restful-0.9.26.tar.gz" } ], "0.9.27": [ { "comment_text": "", "digests": { "md5": "c65db5f148bf43d025e7ca1042d94f8f", "sha256": "47325703fbc367d406b7aa095e7705e998a954a1387246217a5f6da0f452eb2c" }, "downloads": -1, "filename": "lazr.restful-0.9.27.tar.gz", "has_sig": true, "md5_digest": "c65db5f148bf43d025e7ca1042d94f8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 208110, "upload_time": "2010-06-09T21:30:34", "url": "https://files.pythonhosted.org/packages/03/13/65c52a45e30602431f4c9854e7a26e491e978d673587683b532ff0114465/lazr.restful-0.9.27.tar.gz" } ], "0.9.28": [ { "comment_text": "", "digests": { "md5": "ad153cf2b5894e757dbb1732c078fc00", "sha256": "2a8b7e11d9c97eba2d498909a2ba45e5bc469d66a8b12635f8e9b8e9506b71cc" }, "downloads": -1, "filename": "lazr.restful-0.9.28.tar.gz", "has_sig": true, "md5_digest": "ad153cf2b5894e757dbb1732c078fc00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 209216, "upload_time": "2010-06-09T21:30:23", "url": "https://files.pythonhosted.org/packages/94/2f/494afa75381e896619a6f2718da2ce1f175e51237f5dc855bdc84f16ec2d/lazr.restful-0.9.28.tar.gz" } ], "0.9.29": [], "0.9.3": [], "0.9.5": [], "0.9.6": [], "0.9.8": [], "0.9.9": [] }, "urls": [ { "comment_text": "", "digests": { "md5": "9b09dd45d999d7cb13db255e323f2a07", "sha256": "0386643d7fb6e579899b9854f840d01cbeae21ea2496eb4b6d570525d72330ea" }, "downloads": -1, "filename": "lazr.restful-0.20.1.tar.gz", "has_sig": true, "md5_digest": "9b09dd45d999d7cb13db255e323f2a07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 270525, "upload_time": "2018-02-21T15:22:27", "url": "https://files.pythonhosted.org/packages/7e/d9/02e4411245f33d149cfda77853ba0625ff3e09f2208a0ae8ba9aaa08bd37/lazr.restful-0.20.1.tar.gz" } ] }