{ "info": { "author": "Kiran Jonnalagadda", "author_email": "kiran@hasgeek.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "Coaster: common patterns for Flask apps\n=======================================\n\n|docs| |travis| |coveralls|\n\nCoaster contains functions and db models for recurring patterns in Flask\napps. Documentation at http://coaster.readthedocs.org/\n\nCoaster is compatible with Python versions 2.7 and 3.6. Earlier 3.x versions\nare not supported due to obsolete SQLite drivers missing some functionality.\nIf you need to use an earlier 3.x version (3.3-3.5) and don't use SQLite, you\nmay still be in luck.\n\n\nRun tests\n---------\n\nTesting requires SQLite and PostgreSQL for the ``coaster.sqlalchemy`` module.\nCreate a test database in PostgreSQL::\n\n $ createuser `whoami`\n $ createdb -O `whoami` coaster_test\n\nTesting also requires additional dependencies. Install them with::\n\n $ pip install -r test_requirements.txt\n\nOn Python 2.7, an additional package is required, to replace the obsolete\nSQLite driver shipped with 2.7::\n\n $ pip install PySqlite\n\nTo run a single test::\n\n $ nosetests tests. \n $ # Example: nosetests tests.test_render_with\n\nTo run all tests in one go::\n\n $ ./runtests.sh\n\nSome tests are in the form of doctests within each function, and only\naccessible by running all tests via ``runtests.sh``.\n\n\n.. |docs| image:: https://readthedocs.org/projects/coaster/badge/?version=latest\n :target: http://coaster.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation status\n\n.. |travis| image:: https://secure.travis-ci.org/hasgeek/coaster.svg?branch=master\n :target: https://travis-ci.org/hasgeek/coaster\n :alt: Build status\n\n.. |coveralls| image:: https://coveralls.io/repos/hasgeek/coaster/badge.svg\n :target: https://coveralls.io/r/hasgeek/coaster\n :alt: Coverage status\n\n\n0.6.0\n-----\n\n* Removed deprecated ``coaster.app.configure``\n* ``coaster.app.init_app`` now takes an optional environment, reading from the\n ``FLASK_ENV`` environment variable and defaulting to ``DEVELOPMENT``. This\n reverses the change introduced in version 0.3.2\n* ``coaster.manage`` no longer accepts environment or calls ``init_for``.\n Apps must do this themselves\n* ``coaster.manage`` now exposes Alembic migrations via Flask-Migrate instead\n of Flask-Alembic\n* When using UUID primary keys in ``IdMixin``, a UUID is automatically\n generated the first time the ``id`` column is accessed, without the need\n to commit to the database\n* The underlying implementaiton, ``auto_init_default``, is also available\n for use on other models\n* The ``url_id`` property is now part of ``IdMixin`` and supports SQL queries\n as well. This makes it compatible with the support for ``url_name`` in\n ``load_models``\n* New: ``shortuuid`` module exposed via the ``utils`` module, with ``suuid``,\n ``suuid2uuid`` and ``uuid2suuid`` functions\n* ``buid`` reverts to using UUID4 instead of UUID1mc\n* The deprecated ``newid`` alias for ``buid`` has now been removed\n* New: ``UuidMixin`` that adds a UUID secondary key and complements ``IdMixin``\n* ``BaseIdNameMixin`` now implements ``url_id_name`` (previously ``url_name``)\n as a hybrid property and has an additional ``url_name_suuid`` property.\n ``BaseScopedIdNameMixin`` has an upgraded ``url_id_name`` as well\n* ``load_models`` no longer hardcodes for ``url_name``, instead accepting an\n optional ``urlcheck`` list parameter\n* Added Python 3.6 compatibility\n* Removed the unused ``nullstr`` and renamed ``nullunicode`` to ``nullstr``\n* New: ``add_primary_relationship`` to define a primary child on parent models\n* Added ``NoIdMixin`` that is BaseMixin minus the id column\n* New: ``require_one_of`` util for functions that require any one of many\n parameters\n\n0.5.2\n-----\n\n* Removed ``add_and_commit`` and associated tests\n* ``failsafe_add`` now takes filters optionally, failing silently in case of\n error\n* Added Slack error logging and better throttling for Slack and SMS\n* New util: ``isoweek_datetime`` for week-based datetimes in reports\n* New util: ``midnight_to_utc`` for midnight in any timezone converted to UTC\n\n0.5.1\n-----\n\n* New util: ``uuid1mc`` generates a UUID1 with a random multicast MAC id\n* New util: ``uuid1mc_from_datetime`` generates a UUID1 with a specific\n timestamp\n* IdMixin now supports UUID primary keys\n* Deprecated ``add_and_commit`` in favour of ``failsafe_add``\n* New utils: ``uuid2buid`` and ``buid2uuid``\n* Removed ``timestamp_columns`` (was deprecated in 0.4.3)\n* Replaced ``py-bcrypt`` dependency with ``bcrypt``\n* ``buid`` now uses UUID1 with random multicast MAC addresses instead of UUID4\n* New util: ``unicode_http_header`` converts ASCII HTTP header strings to\n Unicode\n* Error traceback in ``coaster.logging`` now includes request context and\n session cookie\n* New: ``func.utcnow`` for reliable UTC timestamps generated in the database\n* TimestampMixin now uses ``func.utcnow`` to move datetime generation\n server-side\n\n0.5.0\n-----\n\n* ``Base(Scoped)?(Id)?NameMixin`` now disallows blank names by default. Bumped\n version number since this is a non-breaking incompatible change\n* ``JsonDict`` now uses ``JSONB`` on PostgreSQL 9.4\n* New ``CoordinatesMixin`` adds latitude and longitude columns\n* Rudimentary NLP methods\n* ``LabeledEnum`` now has ``keys()`` and ``values()`` methods as well\n* Move the query class to ``IdMixin`` and ``TimestampMixin`` as they are used\n independently of BaseMixin\n* ``LabeledEnum`` now takes an ``__order__`` specification\n* New ``word_count`` util returns word count for HTML documents\n* New ``for_tsquery`` formats text queries to PostgreSQL to_tsquery parameters\n* New ``get`` and ``upsert`` methods in ``Base(Scoped)NameMixin``\n* ``render_with`` no longer enables JSON handler by default; now gracefully\n handles ``*/*`` requests\n* ``manage.py``'s shell now allows additional context to be made available in\n ``locals()``\n* ``coaster.db`` now provides a custom SQLAlchemy session with additional\n helper methods, starting with one: ``add_and_commit``, which rolls back if\n the commit fails\n* Removed ``one_or_none`` in favor of SQLAlchemy's implementation of the same\n in 1.0.9\n* New ``is_url_for`` decorator in UrlForMixin\n\n0.4.3\n-----\n\n* Initial work on Fluentd logging\n* New util: ``base_domain_matches`` compares if two domains have the same base\n domain\n* ``utils.make_name`` now returns ASCII slugs instead of Unicode slugs\n* New: ``domain_namespace_match`` function\n* ``coaster.gfm.markdown`` now supports optional HTML markup\n* Deprecated ``sqlalchemy.timestamp_columns``, introducing\n ``make_timestamp_columns``\n* ``sorted_timezones`` now includes both country name and timezone name\n* Base query now has a ``notempty()`` method that is more efficient than\n ``bool(count())``\n* New util: ``deobfuscate_email`` deobfuscates common email obfuscation\n patterns\n\n0.4.2\n-----\n\n* ``NameTitle`` namedtuple and support in ``LabeledEnum`` for\n ``(value, name, title)``\n* Provide UglifyJS minifier to webassets via the UglipyJS wrapper\n* ``BaseScopedNameMixin``'s ``make_title`` now uses ``short_title`` as source\n\n0.4.1\n-----\n\n* ``views.get_next_url`` now considers subdomains as non-external\n* ``sqlalchemy.BaseMixin`` now provides a new query class with ``one_or_none``\n* Coaster now requires all dependencies used by submodules. They are no longer\n optional\n* LabeledEnums now have a ``get()`` method to emulate dictionaries\n\n0.4.0\n-----\n\n* Moved utility functions into ``coaster.utils``\n* Bugfix: make ``get_email_domain`` somewhat more reliable\n* Switched to using ``coaster.db`` in tests\n* New: ``MarkdownColumn`` composite column for Markdown content\n* Changed: ``JsonDict`` column will use PostgreSQL's native JSON type if\n the server is PostgreSQL >= 9.2\n* ``TimestampMixin`` now uses ``datetime.utcnow`` instead of ``func.now``\n because the ``now()`` function in PostgreSQL returns local time with\n timezone, not UTC time, and discards the timezone component if the column\n doesn't store them. This made timestamps local, not in UTC unless the server\n was also in UTC\n* Database tests are now run against both SQLite3 and PostgreSQL\n* Bugfix: ``PermissionMixin`` was mutating inherited permissions\n* Bugfix: ``render_with`` no longer attempts to render pre-rendered responses\n* ``utils.make_name`` now takes caller-specified counter numbers\n* ``sqlalchemy.BaseNameMixin`` and ``BaseScopedNameMixin.make_name`` now take a\n reserved names list\n* New: ``utils.nullint``, ``nullstr`` and ``nullunicode`` for returning\n ``int(v)``, ``str(v)`` and ``unicode(v)`` if ``v`` isn't false\n\n0.3.13\n------\n\n* ``short_title`` method in ``BaseScopedNameMixin``\n* ``assets.require`` now raises ``AssetNotFound`` on missing assets\n* New: ``coaster.db.db`` is an instance of Flask-SQLAlchemy\n\n0.3.12\n------\n\n* Bugfix: Support single-char usernames\n* New feature: Labeled enumerations\n* Enhancement: ``load_models`` allows choice of permissions and takes\n additional permissions\n* Rewrote ``requestargs`` view decorator for efficiency and ease of use\n* New ``render_with`` view decorator\n* New gfm module for GitHub Flavoured Markdown\n* ``load_models`` now supports \"redirect\" models\n* Logging now looks for ``MAIL_DEFAULT_SENDER`` before ``DEFAULT_MAIL_SENDER``\n* Compatibility with Flask 0.10 for SandboxedFlask\n\n0.3.11\n------\n\n* Bugfix: ``PermissionMixin.permissions()`` now checks if parent is not None\n\n0.3.10\n------\n\n* New ``sorted_timezones`` function\n\n0.3.9\n-----\n\n* New module for asset management, with testcases and documentation.\n* ``coaster.logging.configure`` is now ``init_app`` in keeping with convention\n\n0.3.8\n-----\n\n* Updated documentation\n* New SQLAlchemy column types and helpers\n* Use SQL expressions to set ``url_id`` in scoped id classes\n\n0.3.7\n-----\n\n* Don't use ``declared_attr`` for the ``id``, ``created_at`` and ``updated_at``\n columns\n* Rename ``newid`` to ``buid`` but retain old name for compatibility\n* New ``requestargs`` view wrapper to make working with ``request.args``\n easier\n\n0.3.6\n-----\n\n* New ``SandboxedFlask`` in ``coaster.app`` that uses Jinja's\n ``SandboxedEnvironment``\n\n0.3.5\n-----\n\n* ``load_models`` now caches data to ``flask.g``\n* SQLAlchemy models now use ``declared_attr`` for all columns to work around a\n column duplication bug with joined table inheritance in SQLAlchemy < 0.8\n* Misc fixes\n\n0.3.4\n-----\n\n* ``get_next_url`` now takes a default parameter. Pass ``default=None`` to\n return ``None`` if no suitable next URL can be found\n* ``get_next_url`` no longer looks in the session by default. Pass\n ``session=True`` to look in the session. This was added since popping\n ``next`` from session modifies the session, which shouldn't happen in a\n ``get`` function\n* ``load_models`` accepts ``g.`` notation for parameters to indicate\n that the parameter should be available as ``g.``. The view function\n will get called with just ```` as usual\n* If the view requires permissions, ``load_models`` caches available\n* permissions as ``g.permissions``\n\n0.3.3\n-----\n\n* ``coaster.views.get_next_url`` now looks in the session for the next URL\n\n0.3.2\n-----\n\n* New ``coaster.app.init_app`` function moves away from passing configuration\n status in environment variables\n\n0.3.0\n-----\n\n* SQLAlchemy models now have a ``permissions`` method that ``load_models``\n looks up\n\n0.2.2\n-----\n\n* Added logging module\n\n0.1\n---\n\n* First version\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hasgeek/coaster", "keywords": "coaster", "license": "", "maintainer": "", "maintainer_email": "", "name": "coaster", "package_url": "https://pypi.org/project/coaster/", "platform": "", "project_url": "https://pypi.org/project/coaster/", "project_urls": { "Homepage": "https://github.com/hasgeek/coaster" }, "release_url": "https://pypi.org/project/coaster/0.6.0/", "requires_dist": null, "requires_python": "", "summary": "Coaster for Flask", "version": "0.6.0" }, "last_serial": 3131382, "releases": { "0.2.7a": [ { "comment_text": "", "digests": { "md5": "626102f70a083100f9e4a4f220f6ab94", "sha256": "77565255f166961c1ef6e656c62d448fd6066514049ea3145703ca74c8147f2f" }, "downloads": -1, "filename": "coaster-0.2.7a.tar.gz", "has_sig": false, "md5_digest": "626102f70a083100f9e4a4f220f6ab94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12779, "upload_time": "2012-07-06T12:49:12", "url": "https://files.pythonhosted.org/packages/89/2d/c28ba7ed8aa59b4cab29708f84e3c674232ee9def37d6b002cd65962180a/coaster-0.2.7a.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "16060298e876504d97fe3500428a5a72", "sha256": "4b36c22f59e1a4bf2696cc070a7ea85c509ca05b7208d3abd5c9782e7ddfde60" }, "downloads": -1, "filename": "coaster-0.3.0.tar.gz", "has_sig": false, "md5_digest": "16060298e876504d97fe3500428a5a72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13662, "upload_time": "2012-07-17T13:19:01", "url": "https://files.pythonhosted.org/packages/cc/24/e446d807927be2cb08a7f5d6141f628a72869f70bc177d78f6bbb1233fea/coaster-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "407dd0f5f7e7c832f7fe547ceb75311b", "sha256": "9e0ee1b2c29b31fd8912bf0294627a8f9b15604a2fd64a2ca5df3e190ea8086a" }, "downloads": -1, "filename": "coaster-0.3.1.tar.gz", "has_sig": false, "md5_digest": "407dd0f5f7e7c832f7fe547ceb75311b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19437, "upload_time": "2012-07-23T01:01:53", "url": "https://files.pythonhosted.org/packages/22/71/e3a1aec599036da460310ca7cb0999766bc69f9bb8ad200f2fb4e0144865/coaster-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "fe0385be24762a157481c3131687ddef", "sha256": "1b28bf65dcdc84cb1655c0a2707a64983eacb81e8c9e36acb65987f02d6c298e" }, "downloads": -1, "filename": "coaster-0.3.10.tar.gz", "has_sig": false, "md5_digest": "fe0385be24762a157481c3131687ddef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 197778, "upload_time": "2013-04-01T19:48:10", "url": "https://files.pythonhosted.org/packages/ad/4c/0fb66caf5e1b5704bf84cf2ca9c8ee671dce80dc02aa56bb706aa908c336/coaster-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "ea933935a5942bf9cd5116738b2c0faa", "sha256": "d8c33cf4d6b01f09b5f2492d5771c0f492bb572eddd223a2f70c59da87a98081" }, "downloads": -1, "filename": "coaster-0.3.11.tar.gz", "has_sig": false, "md5_digest": "ea933935a5942bf9cd5116738b2c0faa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 197904, "upload_time": "2013-04-08T09:24:02", "url": "https://files.pythonhosted.org/packages/0d/29/dec51a53a836ea1e051fa4e41fdbefcb0bd865c595ee4665949a794c4d7c/coaster-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "b43c983b7bb2bda612e8ee8aaeb71c8d", "sha256": "b7840babb91fbd3962ed9af86ad6720d0f9eb750bbda86dc677854449f087065" }, "downloads": -1, "filename": "coaster-0.3.12.tar.gz", "has_sig": false, "md5_digest": "b43c983b7bb2bda612e8ee8aaeb71c8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 481435, "upload_time": "2013-06-14T05:44:06", "url": "https://files.pythonhosted.org/packages/7d/e6/f1851831bc89cbd0ee782f2886411df7ba6408227cb728144a02356d62fe/coaster-0.3.12.tar.gz" } ], "0.3.13": [ { "comment_text": "", "digests": { "md5": "89b63fea753b58c7cf8def53c45dfad6", "sha256": "ceed18aad5a2e079db87d04fa7886ccebd138c9d2a66f72c7894d582e1be761b" }, "downloads": -1, "filename": "coaster-0.3.13.tar.gz", "has_sig": false, "md5_digest": "89b63fea753b58c7cf8def53c45dfad6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 488960, "upload_time": "2013-07-27T13:15:53", "url": "https://files.pythonhosted.org/packages/0e/f2/bc9b7ff02a4ce541637e791a692a731a501b1629d40ac51dd2ecaede2866/coaster-0.3.13.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "63d65fe17779b743b203aaaf71b0b66d", "sha256": "5e68fc0614b39a706932cf6b7cc66806709d4d37195721c3ef07c4819b079a59" }, "downloads": -1, "filename": "coaster-0.3.3.tar.gz", "has_sig": false, "md5_digest": "63d65fe17779b743b203aaaf71b0b66d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18699, "upload_time": "2012-08-13T21:50:41", "url": "https://files.pythonhosted.org/packages/25/db/ef480634afdff4ab24fc39579c624984e9d2a5249c28589f3200b33f03c8/coaster-0.3.3.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "21b5d92f0b61f47da2851f97a82e0f8c", "sha256": "6d6a5ad072a0f5ad1420865bd9371598645ca9978cc4bc8d42bc50f3cb37b619" }, "downloads": -1, "filename": "coaster-0.3.5.tar.gz", "has_sig": false, "md5_digest": "21b5d92f0b61f47da2851f97a82e0f8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19363, "upload_time": "2012-09-14T16:41:20", "url": "https://files.pythonhosted.org/packages/2f/27/3b8abffe7f6a781fb6d6505fdf37d5f5e67b19c99d0ee031ed4e5da5e8ef/coaster-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "1f6fffffa94e22409e7f7e42786b1541", "sha256": "c3fd9742a01c6c56fbacb3b0e83b4df09d77be29f7754ba6b201795db81a10d3" }, "downloads": -1, "filename": "coaster-0.3.6.tar.gz", "has_sig": false, "md5_digest": "1f6fffffa94e22409e7f7e42786b1541", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20072, "upload_time": "2012-10-01T14:48:01", "url": "https://files.pythonhosted.org/packages/22/44/402d0532da8c708c81b1dcbaa1f58c1377bbc95a485d3d9c28b6f2397fcc/coaster-0.3.6.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "2e2b9fd321019ea557d859d4f9a55a76", "sha256": "66b66c7a75efbf12f414a4bcc99aa186036386ba83bb81bdba085cf5157f86cb" }, "downloads": -1, "filename": "coaster-0.3.8.tar.gz", "has_sig": false, "md5_digest": "2e2b9fd321019ea557d859d4f9a55a76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 436795, "upload_time": "2013-01-22T03:53:44", "url": "https://files.pythonhosted.org/packages/4b/70/c9938e5352995d56130c359104b952cf281a35b851ac653677b2569fc5f0/coaster-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "53ff6df4561a3f2533688ac20fbb7e85", "sha256": "4ab94a6a8f76e391e583c64c65f53768cecb279c3901aec21709dc2f84c6e164" }, "downloads": -1, "filename": "coaster-0.3.9.tar.gz", "has_sig": false, "md5_digest": "53ff6df4561a3f2533688ac20fbb7e85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 451162, "upload_time": "2013-03-08T15:11:40", "url": "https://files.pythonhosted.org/packages/2f/74/574ccc157d26f8e5969a3df4516f0a620ab75dd072b6b22a16fe03a0001e/coaster-0.3.9.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "de559d0d97abbc8a352ccc9bc4d6efdd", "sha256": "04c0dbe0dc036b000bdc16fba2207849581fdffe171b51924a11535a0eb035fa" }, "downloads": -1, "filename": "coaster-0.4.0.tar.gz", "has_sig": false, "md5_digest": "de559d0d97abbc8a352ccc9bc4d6efdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 505312, "upload_time": "2013-12-30T11:00:49", "url": "https://files.pythonhosted.org/packages/be/65/277e014bc12cf6e8f3840d86d4304bb83663f0faac2d5f32402c4633641f/coaster-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "943f567b44734dd855f973188051438d", "sha256": "81f7261d2e06be034bce45f6ae9ada72d0f01bce78f9afdfbbcadf7fd8cc2ac0" }, "downloads": -1, "filename": "coaster-0.4.1.tar.gz", "has_sig": false, "md5_digest": "943f567b44734dd855f973188051438d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506074, "upload_time": "2014-03-08T16:54:39", "url": "https://files.pythonhosted.org/packages/c0/e1/a12b56c898328876d4ce6b94f449d3f4875064c3528222b265725c400fff/coaster-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "bd9688a606e0ce6aab3b48c704def0b3", "sha256": "686a3831261ad89c7ce1d4b4014aef826fba41c53de423492c06788f9c600baa" }, "downloads": -1, "filename": "coaster-0.4.2.tar.gz", "has_sig": false, "md5_digest": "bd9688a606e0ce6aab3b48c704def0b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 507311, "upload_time": "2014-06-10T17:03:05", "url": "https://files.pythonhosted.org/packages/90/ab/c3a595ece3d81665724a4db3eb6e78b4d9a53905865e71cdc72bb0a8cc3d/coaster-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "b807fbc3b26f7e6f9893e76491b2787e", "sha256": "48d74e9480698adcc059b517a5c27187b240e26459d77919aed727913eefba8c" }, "downloads": -1, "filename": "coaster-0.4.3.tar.gz", "has_sig": false, "md5_digest": "b807fbc3b26f7e6f9893e76491b2787e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289996, "upload_time": "2014-11-27T10:04:08", "url": "https://files.pythonhosted.org/packages/b5/92/0505c1e5acd9ab0355b266f58513fb10c14044f3fcd440212074cfa98662/coaster-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "3a128cff3326988011c155abfa168a14", "sha256": "84b6e84b9fb94e9aeba1496cb8210ba814fbb53133aa667077fac587d0cae697" }, "downloads": -1, "filename": "coaster-0.5.0.tar.gz", "has_sig": false, "md5_digest": "3a128cff3326988011c155abfa168a14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 833097, "upload_time": "2015-12-12T09:47:46", "url": "https://files.pythonhosted.org/packages/e8/fc/3f2929e0b9a0e6e18412c33f23a0b8b1e720100ebeb7dc645450779510d9/coaster-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0a82b8852986d9b1e1c5d161c3394927", "sha256": "7988b3cd608fdbb0ef6afd7d76359f228a2be90f78736528db7aa249b2138b33" }, "downloads": -1, "filename": "coaster-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0a82b8852986d9b1e1c5d161c3394927", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 837618, "upload_time": "2016-04-01T10:08:19", "url": "https://files.pythonhosted.org/packages/bf/f6/d1924a3d28a60bd0cac246d26bbc6f78e1093d8a0f112e29fb10957f3f2e/coaster-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "dd91c5f6cc4aec57733021b5ed462201", "sha256": "67702b833f45e34f9502cada459daafd819127bf8ccbd3603dab442562570a41" }, "downloads": -1, "filename": "coaster-0.5.2.tar.gz", "has_sig": false, "md5_digest": "dd91c5f6cc4aec57733021b5ed462201", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 839066, "upload_time": "2017-05-04T06:37:49", "url": "https://files.pythonhosted.org/packages/6d/9f/dbd54744bf328bdfdde892a16c704e2316c810072bc20004deb0a65a8b3d/coaster-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "d193049b56596fe067990fe2b503b4df", "sha256": "a4ff671daddfd8351a793c7b68f29b298d96fb4a9cb275fa7de46dbf52ddd7fd" }, "downloads": -1, "filename": "coaster-0.6.0.tar.gz", "has_sig": false, "md5_digest": "d193049b56596fe067990fe2b503b4df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82778, "upload_time": "2017-08-29T08:33:59", "url": "https://files.pythonhosted.org/packages/c0/e4/00551f46068992c073fae7151e08dea921e1832a174e0595ad565fc01bc6/coaster-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d193049b56596fe067990fe2b503b4df", "sha256": "a4ff671daddfd8351a793c7b68f29b298d96fb4a9cb275fa7de46dbf52ddd7fd" }, "downloads": -1, "filename": "coaster-0.6.0.tar.gz", "has_sig": false, "md5_digest": "d193049b56596fe067990fe2b503b4df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82778, "upload_time": "2017-08-29T08:33:59", "url": "https://files.pythonhosted.org/packages/c0/e4/00551f46068992c073fae7151e08dea921e1832a174e0595ad565fc01bc6/coaster-0.6.0.tar.gz" } ] }