{ "info": { "author": "Jeff Knupp", "author_email": "jeff@jeffknupp.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "sandman\n=======\n\n|Build Status|\n\n|Coverage Status|\n\n|Gitter chat|\n\n|Analytics|\n\n|PyPI|\n\nHomepage\n--------\n\nVisit the home of ``sandman`` on the web:\n`sandman.io `__\n\nDiscuss\n-------\n\nLooking for a place to ask questions about sandman? Check out the\nsandman-discuss and sandman-users forums!\n\nDocumentation\n-------------\n\n`Sandman documentation `__\n\n``sandman`` \"makes things REST\". Have an existing database you'd like to\nexpose via a REST API? Normally, you'd have to write a ton of\nboilerplate code for the ORM you're using, then integrate that into some\nweb framework.\n\nI don't want to write boilerplate.\n\nHere's what's required to create a RESTful API service from an existing\ndatabase using ``sandman``:\n\n.. code:: bash\n\n $ sandmanctl sqlite:////tmp/my_database.db\n\n*That's it.* ``sandman`` will then do the following:\n\n- connect to your database and introspect its contents\n- create and launch a REST API service\n- create an HTML admin interface\n- *open your browser to the admin interface*\n\nThat's right. Given a legacy database, ``sandman`` not only gives you a\nREST API, it gives you a beautiful admin page and *opens your browser to\nthe admin page*. It truly does everything for you.\n\nSupported Databases\n-------------------\n\n``sandman``, by default, supports connections to the same set of\ndatabases as `SQLAlchemy `__. As of this\nwriting, that includes:\n\n- MySQL (MariaDB)\n- PostgreSQL\n- SQLite\n- Oracle\n- Microsoft SQL Server\n- Firebird\n- Drizzle\n- Sybase\n- IBM DB2\n- SAP Sybase SQL Anywhere\n- MonetDB\n\nAuthentication\n--------------\n\nAs of version 0.9.3, ``sandman`` fully supports HTTP Basic\nAuthentication! See the documentation for more details.\n\nBehind the Scenes\n-----------------\n\n``sandmanctl`` is really just a simple wrapper around the following:\n\n.. code:: python\n\n from sandman import app\n\n app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///chinook'\n\n from sandman.model import activate\n\n activate()\n\n app.run()\n\n**You don't even need to tell ``sandman`` what tables your database\ncontains.** Just point ``sandman`` at your database and let it do all\nthe heavy lifting\n\nLet's start our new service and make a request. While we're at it, lets\nmake use of ``sandman``'s awesome filtering capability by specifying a\nfilter term:\n\n.. code:: zsh\n\n > python runserver.py &\n * Running on http://127.0.0.1:5000/\n\n > curl GET \"http://localhost:5000/artists?Name=AC/DC\"\n\n.. code:: json\n\n ...\n {\n \"resources\": [\n {\n \"ArtistId\": 1,\n \"Name\": \"AC/DC\",\n \"links\": [\n {\n \"rel\": \"self\",\n \"uri\": \"/artists/1\"\n }\n ]\n }\n ]\n }\n\nAll of that, including filtering/searching, is automagically available\nfrom those *five* measly lines of code.\n\nOh, that's not enough? You also want a Django-style admin interface\nbuilt automatically? Fine. You may have noticed that when you ran\n``runserver.py`` that a browser window popped up. Now's the time to go\ncheck that out. You'll find it's that Django-style admin interface\nyou've been bugging me about, looking something like this:\n\n.. figure:: http://sandman.io/static/img/admin_small.jpg\n :alt: admin interface awesomesauce screenshot\n\n admin interface awesomesauce screenshot\n\n--------------\n\n(If you want to disable the browser from opening automatically each time\n``sandman`` starts, call ``activate`` with ``browser=False``)\n\nIf you wanted to specify specific tables that ``sandman`` should make\navailable, how do you do that? With this little ditty:\n\n.. code:: python\n\n from sandman.model import register, Model\n\n class Artist(Model):\n __tablename__ = 'Artist'\n\n class Album(Model):\n __tablename__ = 'Album'\n\n class Playlist(Model):\n __tablename__ = 'Playlist'\n\n register((Artist, Album, Playlist))\n\nAnd if you wanted to add custom logic for an endpoint? Or change the\nendpoint name? Or change your top level json object name? Or add\nvalidation? All supported. Here's a \"fancy\" class definition:\n\n.. code:: python\n\n class Style(Model):\n \"\"\"Model mapped to the \"Genre\" table\n\n Has a custom endpoint (\"styles\" rather than the default, \"genres\").\n Only supports HTTP methods specified.\n Has a custom validator for the GET method.\n\n \"\"\"\n\n __tablename__ = 'Genre'\n __endpoint__ = 'styles'\n __methods__ = ('GET', 'DELETE')\n __top_level_json_name__ = 'Genres'\n\n @staticmethod\n def validate_GET(resource=None):\n \"\"\"Return False if the request should not be processed.\n\n :param resource: resource related to current request\n :type resource: :class:`sandman.model.Model` or None\n\n \"\"\"\n\n if isinstance(resource, list):\n return True\n elif resource and resource.GenreId == 1:\n return False\n return True\n\nWith ``sandman``, zero boilerplate code is required. In fact, using\n``sandmanctl``, **no code is required at all**. Your existing database\nstructure and schema is introspected and your database tables magically\nget a RESTful API and admin interface. For each table, ``sandman``\ncreates:\n\n- proper endpoints\n- support for a configurable set of HTTP verbs\n\n - GET\n - POST\n - PATCH\n - PUT\n - DELETE\n\n- responses with appropriate ``rel`` links automatically\n- foreign keys in your tables are represented by link\n- custom validation by simply defining ``validate_`` methods on\n your Model\n- explicitly list supported methods for a Model by setting the\n ``__methods__`` attribute\n- customize a Models endpoint by setting the ``__endpoint__`` method\n- essentially a HATEOAS-based service sitting in front of your database\n\n``sandman`` is under active development but should be usable in any\nenvironment due to one simple fact:\n\n**``sandman`` never alters your database unless you add or change a\nrecord yourself. It adds no extra tables to your existing database and\nrequires no changes to any of your existing tables. If you start\n``sandman``, use it to browse your database via cURL, then stop\n``sandman``, your database will be in exactly the same state as it was\nbefore you began.**\n\nInstallation\n~~~~~~~~~~~~\n\n``pip install sandman``\n\nExample Application\n~~~~~~~~~~~~~~~~~~~\n\nTake a look in the ``sandman/test`` directory. The application found\nthere makes use of the `Chinook `__\nsample SQL database.\n\nContact Me\n----------\n\nQuestions or comments about ``sandman``? Hit me up at\njeff@jeffknupp.com.\n\n|Bitdeli Badge|\n\nChangelog\n=========\n\nVersion 0.9.8\n-------------\n\n- Support for the ``wheel`` distribution format\n\nVersion 0.9.7\n-------------\n\n- Slightly better test coverage and documentation\n\nVersion 0.9.6\n-------------\n\n- Support for using existing declarative models alongside ``sandman``\n generated models\n\n - If you have an existing app and want to include sandman in it,\n simply pass your existing models in to the ``register()`` function\n along with any ``sanmdman`` generated classes. ``sandman`` will\n detect the existing models and augment them.\n\nVersion 0.9.5\n-------------\n\n- Fixes a critical bug where code used by the new ``etag`` decorators\n was accidentally not included. Thanks to @mietek for the PR.\n- Fixes an issue when showing the HTML representation of an empty\n collection.\n- Thanks to @mietek for reporting the issue.\n\nVersion 0.9.4\n-------------\n\n- Fixes a critical bug in the requirements portion of ``setup.py``,\n adding ``Flask-HTTPAuth``\n\nVersion 0.9.3\n-------------\n\n- Authentication supported!\n\n - Entire API and admin can be protected by HTTP Basic Auth. See the\n docs for more details.\n\n- ETAGs\n\n - Resources return the proper ETAG header and should reply with a\n 304 after the first request. This greatly improves the throughput\n and performance of the API.\n\nVersion 0.9.2\n-------------\n\n- The ``meta`` endpoint\n\n - All resources now have a ``//meta`` endpoint that\n describes the types of each of their fields (both in HTML and\n JSON)\n\n- The root endpoint\n\n - A \"root\" endpoint (``/``) has been created. It lists all resources\n registered in the application and includes URLs to their various\n endpoints. This allows a \"dumb\" client to navigate the API without\n knowing URLs beforehand.\n\nVersion 0.9.1\n-------------\n\n- Python 3 support!\n\n - ``sandman`` tests now pass for both 2.7 and 3.4! Python 3.4 is\n officially supported.\n\nVersion 0.8.1\n-------------\n\nNew Feature\n~~~~~~~~~~~\n\n- ``Link`` header now set to a resource's links\n\n - Links to related objects now user a proper ``rel`` value:\n ``related``\n - The link to the current resource still uses the ``self`` ``rel``\n value\n - Links are specified both in the header (as per RFC5988) and in the\n resource itself\n\n- Pagination added for JSON (and number of results per page being\n returned is fixed)\n- Nested JSON models no longer the default; hitting a URL with the\n argument \"expand\" will show one level of nested resources\n\n - This conforms more closely to REST principles while not\n sacrificing the functionality.\n\nVersion 0.7.8\n-------------\n\nBug Fixes\n~~~~~~~~~\n\n- Fix multiple references to same table error (fixes #59)\n\n.. |Build Status| image:: https://travis-ci.org/jeffknupp/sandman.png?branch=develop\n :target: https://travis-ci.org/jeffknupp/sandman\n.. |Coverage Status| image:: https://coveralls.io/repos/jeffknupp/sandman/badge.png?branch=develop\n :target: https://coveralls.io/r/jeffknupp/sandman?branch=develop\n.. |Gitter chat| image:: https://badges.gitter.im/jeffknupp/sandman.png\n :target: https://gitter.im/jeffknupp/sandman\n.. |Analytics| image:: https://ga-beacon.appspot.com/UA-12615441-7/sandman/home\n :target: https://github.com/jeffknupp/sandman\n.. |PyPI| image:: http://img.shields.io/pypi/dm/sandman.svg\n :target: http://img.shields.io/pypi/dm/sandman.svg\n.. |Bitdeli Badge| image:: https://d2weczhvl823v0.cloudfront.net/jeffknupp/sandman/trend.png\n :target: https://bitdeli.com/free", "description_content_type": null, "docs_url": "https://pythonhosted.org/sandman/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jeffknupp/sandman/", "keywords": null, "license": "Apache Software License", "maintainer": null, "maintainer_email": null, "name": "sandman", "package_url": "https://pypi.org/project/sandman/", "platform": "any", "project_url": "https://pypi.org/project/sandman/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/jeffknupp/sandman/" }, "release_url": "https://pypi.org/project/sandman/0.9.8/", "requires_dist": null, "requires_python": null, "summary": "Automated REST APIs for existing database-driven systems", "version": "0.9.8" }, "last_serial": 1159837, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "16bc326ab76108d0f57bbcf6901f9b35", "sha256": "11339103884e351bedf92f0d57a3a6ac32c0240b232bf1c528b95330d517f4a1" }, "downloads": -1, "filename": "sandman-0.0.0.tar.gz", "has_sig": false, "md5_digest": "16bc326ab76108d0f57bbcf6901f9b35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3548474, "upload_time": "2014-04-12T17:55:40", "url": "https://files.pythonhosted.org/packages/28/e1/6eef05c8be072444858dd68f918e645173223c8f6d96eac3b7042182be82/sandman-0.0.0.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "5568a21572d699911f6b79f84a17e456", "sha256": "4415adb076b4343dcffa2cf31edde710bbc6ecddccff0f90441baf102277df98" }, "downloads": -1, "filename": "sandman-0.1.tar.gz", "has_sig": false, "md5_digest": "5568a21572d699911f6b79f84a17e456", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4475, "upload_time": "2013-07-23T20:04:51", "url": "https://files.pythonhosted.org/packages/5c/78/5baf5dfb0146282be287f7a7b2b3b16bb7b57d78100276e56a08d96a4006/sandman-0.1.tar.gz" } ], "0.2.1": [], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7771ba82b5773ad4af4734440d63db53", "sha256": "e9ce4632c57b6f217a16bcbc62107b3ddc8ab39384df9058a089e74e64947b8c" }, "downloads": -1, "filename": "sandman-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7771ba82b5773ad4af4734440d63db53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6442, "upload_time": "2013-07-24T15:40:47", "url": "https://files.pythonhosted.org/packages/b2/f7/8e650d8576e495b08ea5a00183aea913062042000c4cb5f45e084e68bec7/sandman-0.2.2.tar.gz" } ], "0.2.2b": [ { "comment_text": "", "digests": { "md5": "c4af31e8f4b185a5f77c736d323385eb", "sha256": "4b851410d8f8e4d8fbb126ae2862b97075515439a13f087ffc3ee5cb1123167a" }, "downloads": -1, "filename": "sandman-0.2.2b.tar.gz", "has_sig": false, "md5_digest": "c4af31e8f4b185a5f77c736d323385eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6445, "upload_time": "2013-07-24T15:43:33", "url": "https://files.pythonhosted.org/packages/f3/fd/770c94e1389d32ecba9df64fb2ae248b15263a4088ff89f128444908a856/sandman-0.2.2b.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "fb96368b3629b4a66389c9640add3864", "sha256": "4f62d8227735dbcb656abcf1444c8054867f96d9bbae0167ef51536cdbe971b3" }, "downloads": -1, "filename": "sandman-0.2.3.tar.gz", "has_sig": false, "md5_digest": "fb96368b3629b4a66389c9640add3864", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8739, "upload_time": "2013-08-09T16:06:40", "url": "https://files.pythonhosted.org/packages/fa/39/60d1e91dd5688e7da69e21198000a4abdbb7afb88e8a93ab4e2c4ce66449/sandman-0.2.3.tar.gz" } ], "0.2.3.1": [ { "comment_text": "", "digests": { "md5": "b11b18842b27238f8635c16176f2953e", "sha256": "700d6962d47656a4160ea8216a125df2e96b5f2336963082852c838b44b76584" }, "downloads": -1, "filename": "sandman-0.2.3.1.tar.gz", "has_sig": false, "md5_digest": "b11b18842b27238f8635c16176f2953e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8737, "upload_time": "2013-08-09T16:14:33", "url": "https://files.pythonhosted.org/packages/c8/bd/eacacbe71d22ebae89237dd5b8d4524498e97add4e323eea3d068f66ded3/sandman-0.2.3.1.tar.gz" } ], "0.2.3.2": [ { "comment_text": "", "digests": { "md5": "72d976aacef52afeeb16c316dfdfe580", "sha256": "cbb018ca7e87432da1565aed92fa3faa7bc68a21801c1abbc2f7254194694140" }, "downloads": -1, "filename": "sandman-0.2.3.2.tar.gz", "has_sig": false, "md5_digest": "72d976aacef52afeeb16c316dfdfe580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9023, "upload_time": "2013-08-12T17:06:14", "url": "https://files.pythonhosted.org/packages/6a/76/7f7f645558a5a5721b2203770f37f8f7bb36a2f99a1f3a0588557a0a6dc6/sandman-0.2.3.2.tar.gz" } ], "0.2.3.4": [ { "comment_text": "", "digests": { "md5": "86c76cd4bf652766a1e0eb7be05f6cbb", "sha256": "366712868471c9bca0b977dd62b4e015c15148c6bcfb40623bf1965444e3b9f1" }, "downloads": -1, "filename": "sandman-0.2.3.4.tar.gz", "has_sig": false, "md5_digest": "86c76cd4bf652766a1e0eb7be05f6cbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9021, "upload_time": "2013-08-12T17:09:33", "url": "https://files.pythonhosted.org/packages/8b/60/59f853c64bd756e7d7d5480b73bb416dbfc108acc1d283a0927ade31b871/sandman-0.2.3.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4c7a6c35395e4b4021ba6ab975f3a83d", "sha256": "08b8dfd8be2f7431f83e053bfbb8107eae661bbf0136039ec1c6591dfd034a3c" }, "downloads": -1, "filename": "sandman-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4c7a6c35395e4b4021ba6ab975f3a83d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6443, "upload_time": "2013-08-16T19:58:44", "url": "https://files.pythonhosted.org/packages/44/a9/c7237cdd00fcb37c108fd7967fc0a89534236c08b061232b999bccd06f98/sandman-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "0e835bbe561d6d21d58a9b02b8ef2f08", "sha256": "8f0e0bf8ccaa01cd88dba46a1a9c53348f2a6283a45a35f3f40cad3f81b37989" }, "downloads": -1, "filename": "sandman-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0e835bbe561d6d21d58a9b02b8ef2f08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9142, "upload_time": "2013-08-21T11:02:49", "url": "https://files.pythonhosted.org/packages/0d/68/55058a350a22f182cbb872796b729f96b10f5f98fd1654cd9c9493f993e4/sandman-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "7d8a2a35a9587a548125ae359f082b6e", "sha256": "c56db336cab2b1df5c4be22ba6c76dc812fd22acf5c7cd547d5eb1306f64549c" }, "downloads": -1, "filename": "sandman-0.4.1.tar.gz", "has_sig": false, "md5_digest": "7d8a2a35a9587a548125ae359f082b6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11152, "upload_time": "2013-08-26T19:19:16", "url": "https://files.pythonhosted.org/packages/e9/9a/15abe1f10b824f055daa8dffa144ce92e67f8bef9f3bfdf4b1fb947f78a2/sandman-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "6708f2d385c56ac71a969e44cf2e15e5", "sha256": "755b7e80611d7e500c7d1319f730045dc614f6497174262b70107b7299d8a5bf" }, "downloads": -1, "filename": "sandman-0.5.tar.gz", "has_sig": false, "md5_digest": "6708f2d385c56ac71a969e44cf2e15e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14571, "upload_time": "2013-12-20T22:04:35", "url": "https://files.pythonhosted.org/packages/df/5b/f294b7a0549e8ed91334d1a0af53590a044eb9f98005bef30c19cf1c80ae/sandman-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "855d3333272d3e34e4ed7e4548f4950e", "sha256": "71047d0381284970b5a2349d8fa882eb533cd4f0bfc031130c1123936d8ece91" }, "downloads": -1, "filename": "sandman-0.6.tar.gz", "has_sig": false, "md5_digest": "855d3333272d3e34e4ed7e4548f4950e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10720, "upload_time": "2013-12-21T16:02:49", "url": "https://files.pythonhosted.org/packages/3d/aa/f1a50812fc17b42cbd3b6fba520fd45952892b3c5a8960c2b5f0c5cfc81e/sandman-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "6d23afdaeb3adc82a0225d4710fab9f5", "sha256": "7e3936d731490466d79dea7d146005b0bdf28bb852e2f953e0ad3ff5641523a3" }, "downloads": -1, "filename": "sandman-0.6.1.tar.gz", "has_sig": false, "md5_digest": "6d23afdaeb3adc82a0225d4710fab9f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10725, "upload_time": "2013-12-21T16:10:35", "url": "https://files.pythonhosted.org/packages/7b/5b/2c39ff7ca13b6caee09a4e61993dd8e85760bf847efc869beab98e85eb0d/sandman-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "2369b5d671236b6b1e7d752bd2b4249a", "sha256": "c53140cb7ad17df2999b4e44dd3e44bfbf874574d6fb6c57de0ebc0190b38ed6" }, "downloads": -1, "filename": "sandman-0.6.2.tar.gz", "has_sig": false, "md5_digest": "2369b5d671236b6b1e7d752bd2b4249a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13816, "upload_time": "2013-12-22T18:13:57", "url": "https://files.pythonhosted.org/packages/e9/2e/c780b02a4ee70fa47befc2a019eb96e7a799d2a426a51a845835cb0c22a8/sandman-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "614b62c2a7a5d0c0302c2e946ffdaf85", "sha256": "8bd89d011dcb16f38ab0716f4c2f4d045e0f34aa3cf18ee19d135bd703505dc7" }, "downloads": -1, "filename": "sandman-0.6.3.tar.gz", "has_sig": false, "md5_digest": "614b62c2a7a5d0c0302c2e946ffdaf85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13839, "upload_time": "2013-12-23T15:07:03", "url": "https://files.pythonhosted.org/packages/c5/af/3614269e2ac39091832b5b08f06e1bb491d3b98964fdf9a49b1606667881/sandman-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "e2c603bdc55449c2203bc353d1a02ef3", "sha256": "ba93d26f47da06344d8ddf320a89f7f40dbab0ee2d6f4addc567097eb6fe82a9" }, "downloads": -1, "filename": "sandman-0.6.4.tar.gz", "has_sig": false, "md5_digest": "e2c603bdc55449c2203bc353d1a02ef3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14291, "upload_time": "2013-12-23T15:21:30", "url": "https://files.pythonhosted.org/packages/ea/e7/673e2f7f8a9c2deea40fee7081369890b2f252fb3de796f026ecfa30f7ea/sandman-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "2e76652f5bb3df15ecf3fceca6ee09a6", "sha256": "c48778c51d66653086e7f8a1691ef667d91123a0252a6ec8b28b1c69f3186638" }, "downloads": -1, "filename": "sandman-0.6.5.tar.gz", "has_sig": false, "md5_digest": "2e76652f5bb3df15ecf3fceca6ee09a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14252, "upload_time": "2013-12-23T16:21:03", "url": "https://files.pythonhosted.org/packages/3d/ea/87db4ab26a4fe932e3a89bd78f71d7a488183cab5dba030f534fc81053e3/sandman-0.6.5.tar.gz" } ], "0.6.5a1": [ { "comment_text": "", "digests": { "md5": "4103e0bde54bd1bb3b6487a29f4a2f6f", "sha256": "4770f5b8a67d21a38e713819eb516c404c0589c6dc87916e3f48a10a031d6b29" }, "downloads": -1, "filename": "sandman-0.6.5a1.tar.gz", "has_sig": false, "md5_digest": "4103e0bde54bd1bb3b6487a29f4a2f6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14251, "upload_time": "2013-12-23T16:22:58", "url": "https://files.pythonhosted.org/packages/0c/39/b3cc42a3b8c3efd3a33b732906e53a0c648b57495db98704f079e307cea5/sandman-0.6.5a1.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "a6f190fcc53cccfd7167ba4b11d201b1", "sha256": "e753e7aab14c258f69bb70efbc34055b4ead9b14acd16b91461fbc035a2e5e18" }, "downloads": -1, "filename": "sandman-0.6.6.tar.gz", "has_sig": false, "md5_digest": "a6f190fcc53cccfd7167ba4b11d201b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14583, "upload_time": "2013-12-24T14:53:41", "url": "https://files.pythonhosted.org/packages/61/2a/8c8b6b480b4d57ebdeda2ba9ce5e51ed92bd9a63d1ac702fa93c17acd07f/sandman-0.6.6.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "441cf90a344eba9530d63a12a84248c4", "sha256": "3293c45b35d6ff10ef82638a80fb45150060206858c51e6aa3a50ed4e471dc35" }, "downloads": -1, "filename": "sandman-0.7.0.tar.gz", "has_sig": false, "md5_digest": "441cf90a344eba9530d63a12a84248c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15843, "upload_time": "2014-01-03T05:10:03", "url": "https://files.pythonhosted.org/packages/c4/e5/1f4d4696ea42eccfe536250c4ec3e2c7342440b08a49adb6eda265e10adc/sandman-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "30bfdde1100345d61ed3f5693412b06f", "sha256": "31b7db9e59d381b5735267f069ad664a5a7a1c38af491c62b26cedba9e38adb1" }, "downloads": -1, "filename": "sandman-0.7.1.tar.gz", "has_sig": false, "md5_digest": "30bfdde1100345d61ed3f5693412b06f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13821, "upload_time": "2014-01-03T19:53:23", "url": "https://files.pythonhosted.org/packages/aa/f0/f4dbaccfada6e703708d46716316eadeb02fd791b6263006fc03162ddd53/sandman-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "957fdd1cedf9ba833ae3aab29165eb16", "sha256": "b7a6774eb80f66f9b53eb37fae8fb30836e553d54f595190fb586bca7395c2f4" }, "downloads": -1, "filename": "sandman-0.7.2.tar.gz", "has_sig": false, "md5_digest": "957fdd1cedf9ba833ae3aab29165eb16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19001, "upload_time": "2014-01-07T14:30:44", "url": "https://files.pythonhosted.org/packages/0b/93/be928bbc9fec193bece49fdee1d721d65e656a11f1f9c3b857ab86afb3a4/sandman-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "314c870e7910d3c631659c0069053d13", "sha256": "6629ddea705eec9e55465e9d58033f7265d775dab4848c8816f02532784814f4" }, "downloads": -1, "filename": "sandman-0.7.3.tar.gz", "has_sig": false, "md5_digest": "314c870e7910d3c631659c0069053d13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19125, "upload_time": "2014-01-07T19:06:37", "url": "https://files.pythonhosted.org/packages/1f/42/84988adbd03710782fa9a3be3f7319406673621bcd6bc4359ed5e23300fc/sandman-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "4727ee539f75e07621d63f818e6de445", "sha256": "b925bc1526233c82730f0a15cfacf7fbca267c55a5f226791460711ac91598f1" }, "downloads": -1, "filename": "sandman-0.7.4.tar.gz", "has_sig": false, "md5_digest": "4727ee539f75e07621d63f818e6de445", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16219, "upload_time": "2014-01-09T20:56:56", "url": "https://files.pythonhosted.org/packages/62/4a/a59734ee81fd7e2a6c348bf065ae06dde662ea98d980f9a99d16ce9b9824/sandman-0.7.4.tar.gz" } ], "0.7.5": [ { "comment_text": "", "digests": { "md5": "3b70838973fcdb8afa68432422290edf", "sha256": "dcda0d8bf155ff14cf8d8ffb5270c7fa57e0baf99670dfc52d66ea855fd16407" }, "downloads": -1, "filename": "sandman-0.7.5.tar.gz", "has_sig": false, "md5_digest": "3b70838973fcdb8afa68432422290edf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16331, "upload_time": "2014-01-09T21:18:23", "url": "https://files.pythonhosted.org/packages/e1/a5/72d101b0b693a3bde77d2e4d5191a2f466f43685ec86e735ae6fc70cfcea/sandman-0.7.5.tar.gz" } ], "0.7.6": [ { "comment_text": "", "digests": { "md5": "e312eaa7d1032c6d6091f0459c9ae56c", "sha256": "bc6e647d556aa997244cef73bd91345370cfc90916b4746ba2c5dc6c3c6dd546" }, "downloads": -1, "filename": "sandman-0.7.6.tar.gz", "has_sig": false, "md5_digest": "e312eaa7d1032c6d6091f0459c9ae56c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16477, "upload_time": "2014-02-07T15:12:30", "url": "https://files.pythonhosted.org/packages/84/2a/0f89625e02d0f5b6076f75bacadac9b5a8208a26f5860add7f220155ee20/sandman-0.7.6.tar.gz" } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "f0b69517510843759079996617047e9c", "sha256": "bc0fe7d3a4caa40c34dcdf7f56f9d7041ffede44bfa23b5899b74d482a8f0a92" }, "downloads": -1, "filename": "sandman-0.7.7.tar.gz", "has_sig": false, "md5_digest": "f0b69517510843759079996617047e9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16921, "upload_time": "2014-03-19T15:23:04", "url": "https://files.pythonhosted.org/packages/c3/e6/040edf96301b094d4b73744ad6ed4fe58489123024e1a154a612b4ab98fc/sandman-0.7.7.tar.gz" } ], "0.7.7rc1": [ { "comment_text": "", "digests": { "md5": "8f29a97b794d411cb31e193ebbd740bc", "sha256": "670486710e08a04f60376081a473a0eaecde9c78910f1abc34b21c0fb2f1b140" }, "downloads": -1, "filename": "sandman-0.7.7rc1.tar.gz", "has_sig": false, "md5_digest": "8f29a97b794d411cb31e193ebbd740bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2430345, "upload_time": "2014-02-07T15:32:33", "url": "https://files.pythonhosted.org/packages/c2/6e/51bdcab638d6b5a19eb12a03ec57a1e207018b37076db9a7b5faf703d9de/sandman-0.7.7rc1.tar.gz" } ], "0.7.7rc2": [ { "comment_text": "", "digests": { "md5": "fefb23e94750f14a37f9bdc57f74e863", "sha256": "d90520967989115e352987daf768bb1717621fd6a3a66d7e5151afdbae04172c" }, "downloads": -1, "filename": "sandman-0.7.7rc2.tar.gz", "has_sig": false, "md5_digest": "fefb23e94750f14a37f9bdc57f74e863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3611040, "upload_time": "2014-02-07T15:35:36", "url": "https://files.pythonhosted.org/packages/8e/b6/95cdb1c997f071acbcd2c98a33241d353f912391da20e06411c2d6ce24e9/sandman-0.7.7rc2.tar.gz" } ], "0.7.7rc3": [ { "comment_text": "", "digests": { "md5": "69cc6ec46c32af8387e7676b9b975ec5", "sha256": "e9df37ebf0112b7d1a10abb83c1dca3d69ebb438d260c948419bdc2983250e3d" }, "downloads": -1, "filename": "sandman-0.7.7rc3.tar.gz", "has_sig": false, "md5_digest": "69cc6ec46c32af8387e7676b9b975ec5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3667811, "upload_time": "2014-02-07T16:16:44", "url": "https://files.pythonhosted.org/packages/b0/a4/34a81e25c10218e1675da2622aa648d9b56d9e952e999ade7f293d25c648/sandman-0.7.7rc3.tar.gz" } ], "0.7.8": [ { "comment_text": "", "digests": { "md5": "71b37636c3b055af216989b2d5259dbc", "sha256": "b60dfd8cc237d2e6d254479d03ff1290dfe99ec16526e4b96b3b6f64e3c15fdf" }, "downloads": -1, "filename": "sandman-0.7.8.tar.gz", "has_sig": false, "md5_digest": "71b37636c3b055af216989b2d5259dbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16847, "upload_time": "2014-03-27T20:07:04", "url": "https://files.pythonhosted.org/packages/96/21/d5b24b3f524151b4e2a8e19e05229f77b2bf0b8819a84f2dc9aaf6f4ed07/sandman-0.7.8.tar.gz" } ], "0.7.9": [ { "comment_text": "", "digests": { "md5": "d0d3a29c37ec9902c4d628b8b603d41c", "sha256": "fcd908180b9bba76c4d2f6f79662a0bc1dc62aeab93face3bb196a8ab6b84d5c" }, "downloads": -1, "filename": "sandman-0.7.9.tar.gz", "has_sig": false, "md5_digest": "d0d3a29c37ec9902c4d628b8b603d41c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17067, "upload_time": "2014-04-08T15:45:20", "url": "https://files.pythonhosted.org/packages/8e/9c/35e6bc7a587552ba2bf63ce38daaec5244e9b23848277443a6c1b4a3db15/sandman-0.7.9.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "aea6fbb6e88a2709f40e20d4f2a59ed9", "sha256": "ae966dd875b410b94ac3f2dae19abc731b2b4dd7dbece0bb59ffac488f806b27" }, "downloads": -1, "filename": "sandman-0.8.1.tar.gz", "has_sig": false, "md5_digest": "aea6fbb6e88a2709f40e20d4f2a59ed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3631759, "upload_time": "2014-04-10T18:42:49", "url": "https://files.pythonhosted.org/packages/37/26/ddbd8a735a7dec21bc914178924a1b90a37cc54015ace933b735a6fad344/sandman-0.8.1.tar.gz" } ], "0.8.1.2": [ { "comment_text": "", "digests": { "md5": "0f7f6f559e8e2fe24eaab42a7b31f704", "sha256": "37bcaa5b7642952d8b501eda810fb405d448d02825241184a8ecca89babe7bb6" }, "downloads": -1, "filename": "sandman-0.8.1.2.tar.gz", "has_sig": false, "md5_digest": "0f7f6f559e8e2fe24eaab42a7b31f704", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4170562, "upload_time": "2014-04-11T13:24:36", "url": "https://files.pythonhosted.org/packages/a1/3d/fa7ce96d0dfa820a4117c9f85d473863e24ce996b1f873db9e7475be5c94/sandman-0.8.1.2.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "0d443869531a736064f447448617d51e", "sha256": "5954a8d0db0b021ff21e457c979e14d05be11533525e2401f38e97bc3c2d5158" }, "downloads": -1, "filename": "sandman-0.9.1.tar.gz", "has_sig": false, "md5_digest": "0d443869531a736064f447448617d51e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3548510, "upload_time": "2014-04-12T17:57:44", "url": "https://files.pythonhosted.org/packages/af/de/9a26cbc535e5c59c62bd6f68d0736ca3757e62e01648ef3a302b2ac04b6e/sandman-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "3afa75457ccdae4c660d5e0b6f741100", "sha256": "aea61977e92fa86622a50cd3e927051a5830c42144c17e5083b0ae8879cbb0ed" }, "downloads": -1, "filename": "sandman-0.9.2.tar.gz", "has_sig": false, "md5_digest": "3afa75457ccdae4c660d5e0b6f741100", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3553492, "upload_time": "2014-04-13T20:49:27", "url": "https://files.pythonhosted.org/packages/5b/7e/cd0776bf27a9384465ff7ff2ef087ccafd384e3525f4d3da7c3389a08113/sandman-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "121950637c7cef839276656b7f9ba6f2", "sha256": "f9a7949c39b87c57b215d69d375a44640ec8ae5be0f42660e2af78d53a1037e6" }, "downloads": -1, "filename": "sandman-0.9.3.tar.gz", "has_sig": false, "md5_digest": "121950637c7cef839276656b7f9ba6f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3564717, "upload_time": "2014-04-18T12:04:09", "url": "https://files.pythonhosted.org/packages/32/85/fbcb8ba4411a83d2cb03d64ba52e11cfa81b7bccfd3876f847c91a49130f/sandman-0.9.3.tar.gz" } ], "0.9.3.1": [ { "comment_text": "", "digests": { "md5": "bec3de5802cdbbbbbbcf73dd2c804e8e", "sha256": "676f1692799f2484400d59bd50c600f94affa616fa953f5884def66ce6d28329" }, "downloads": -1, "filename": "sandman-0.9.3.1.tar.gz", "has_sig": false, "md5_digest": "bec3de5802cdbbbbbbcf73dd2c804e8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3564933, "upload_time": "2014-04-18T12:40:22", "url": "https://files.pythonhosted.org/packages/94/e8/7ce10d03665a5690bea0791b176c5e07bd0714642130966906dabeb455ad/sandman-0.9.3.1.tar.gz" } ], "0.9.3.2": [ { "comment_text": "", "digests": { "md5": "a7b14adc7cfbfb05a218b55c228bb543", "sha256": "48e248acd4c4eba96008ce94e4a5da84d74cf10b0c28274c44a6f47b43d06447" }, "downloads": -1, "filename": "sandman-0.9.3.2.tar.gz", "has_sig": false, "md5_digest": "a7b14adc7cfbfb05a218b55c228bb543", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3564978, "upload_time": "2014-04-21T20:03:05", "url": "https://files.pythonhosted.org/packages/6f/81/88181f52b832e498e339f3dbdc03c323a055438345fffc73a1cbdcf11577/sandman-0.9.3.2.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "1cf0a7051b666727db630b89ff4641c2", "sha256": "996c67c54f7e85d30af5b87b79b03e3c72fc32884e8bf1828683a469af1a3fc2" }, "downloads": -1, "filename": "sandman-0.9.4.tar.gz", "has_sig": false, "md5_digest": "1cf0a7051b666727db630b89ff4641c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3565242, "upload_time": "2014-04-21T20:25:35", "url": "https://files.pythonhosted.org/packages/8e/91/39152e4765f23c9a97eb400463dd9fc1af0ce5fab9287e77d073fb7cd8e8/sandman-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "9ee36f87c512e1d5a8155dd172b291e5", "sha256": "88acc9480a59301980ac291f464947ef42229e1f96368f9d84b621c3a5670e87" }, "downloads": -1, "filename": "sandman-0.9.5.tar.gz", "has_sig": false, "md5_digest": "9ee36f87c512e1d5a8155dd172b291e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20318, "upload_time": "2014-04-28T22:58:06", "url": "https://files.pythonhosted.org/packages/a3/d4/36dd0f749e282e341e66cbafb01b05378c787ae8b0df7450854c1dad6da9/sandman-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "f30d0eaf7de890a2036ffc0c59750109", "sha256": "2935f918cb3e58c8402dceee3e6eaa16785d5240e5a3c9a9534995388b618012" }, "downloads": -1, "filename": "sandman-0.9.6.tar.gz", "has_sig": false, "md5_digest": "f30d0eaf7de890a2036ffc0c59750109", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4239674, "upload_time": "2014-04-28T23:32:06", "url": "https://files.pythonhosted.org/packages/1c/ce/80a8d836b85af014003a91e243b02072f2a071f9afb94c0b9d5201dac5e6/sandman-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "3f045dbf0dcdd97bac50944e727acb14", "sha256": "cf7b2b6307ea56a93e2b9ab502298828babe11348a2733bd1dca6e501297d096" }, "downloads": -1, "filename": "sandman-0.9.7.tar.gz", "has_sig": false, "md5_digest": "3f045dbf0dcdd97bac50944e727acb14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20647, "upload_time": "2014-07-13T20:39:22", "url": "https://files.pythonhosted.org/packages/f2/bf/30a415993bdbc9859b7298eca4f3c6b2dc8b417241e193ac9505ac3722f2/sandman-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "2f49a113679f726e89dbdbb2d80c360a", "sha256": "aa9c4db77ef583d2376d33b3a8bad3500d5f62adbd903cdc96903e422fa88b50" }, "downloads": -1, "filename": "sandman-0.9.8-py2-none-any.whl", "has_sig": false, "md5_digest": "2f49a113679f726e89dbdbb2d80c360a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 225358, "upload_time": "2014-07-16T15:29:05", "url": "https://files.pythonhosted.org/packages/5b/47/701ce517efb1bf637ddd91268bfbd130d643e8afeb0e455c61aa6ec012fb/sandman-0.9.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19abe4922d415d10710b801814d4ab91", "sha256": "83507666077c0ba784b6e388d4eea3d565a6b684300322780c8cf90328026d57" }, "downloads": -1, "filename": "sandman-0.9.8.tar.gz", "has_sig": false, "md5_digest": "19abe4922d415d10710b801814d4ab91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20668, "upload_time": "2014-07-16T15:29:00", "url": "https://files.pythonhosted.org/packages/ee/bf/47fdf02558a743302fd5c96b8a4408976a86d64932621dacbf9bb41781e3/sandman-0.9.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2f49a113679f726e89dbdbb2d80c360a", "sha256": "aa9c4db77ef583d2376d33b3a8bad3500d5f62adbd903cdc96903e422fa88b50" }, "downloads": -1, "filename": "sandman-0.9.8-py2-none-any.whl", "has_sig": false, "md5_digest": "2f49a113679f726e89dbdbb2d80c360a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 225358, "upload_time": "2014-07-16T15:29:05", "url": "https://files.pythonhosted.org/packages/5b/47/701ce517efb1bf637ddd91268bfbd130d643e8afeb0e455c61aa6ec012fb/sandman-0.9.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19abe4922d415d10710b801814d4ab91", "sha256": "83507666077c0ba784b6e388d4eea3d565a6b684300322780c8cf90328026d57" }, "downloads": -1, "filename": "sandman-0.9.8.tar.gz", "has_sig": false, "md5_digest": "19abe4922d415d10710b801814d4ab91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20668, "upload_time": "2014-07-16T15:29:00", "url": "https://files.pythonhosted.org/packages/ee/bf/47fdf02558a743302fd5c96b8a4408976a86d64932621dacbf9bb41781e3/sandman-0.9.8.tar.gz" } ] }