guillotina


Nameguillotina JSON
Version 6.0.2 PyPI version JSON
download
home_pagehttps://github.com/plone/guillotina
Summaryasyncio REST API Resource database
upload_time2020-07-10 11:29:57
maintainer
docs_urlNone
authorRamon Navarro Bosch & Nathan Van Gheem
requires_python>=3.7.0
licenseBSD
keywords asyncio rest framework transactional asgi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Introduction
============

.. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat
   :target: http://guillotina.readthedocs.io/en/latest/

.. image:: https://travis-ci.org/plone/guillotina.svg?branch=master
   :target: https://travis-ci.org/plone/guillotina

.. image:: https://codecov.io/gh/plone/guillotina/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/plone/guillotina/branch/master
   :alt: Test Coverage

.. image:: https://img.shields.io/pypi/pyversions/guillotina.svg
   :target: https://pypi.python.org/pypi/guillotina/
   :alt: Python Versions

.. image:: https://img.shields.io/pypi/v/guillotina.svg
   :target: https://pypi.python.org/pypi/guillotina

.. image:: https://img.shields.io/pypi/l/guillotina.svg
   :target: https://pypi.python.org/pypi/guillotina/
   :alt: License

.. image:: https://badges.gitter.im/plone/guillotina.png
   :target: https://gitter.im/plone/guillotina
   :alt: Chat

.. image:: https://img.shields.io/docker/cloud/build/plone/guillotina
   :target: https://hub.docker.com/r/guillotina/guillotina
   :alt: Docker Cloud Build Status

Please `read the detailed docs <http://guillotina.readthedocs.io/en/latest/>`_


This is the working project of the next generation Guillotina server based on asyncio.


Dependencies
------------

* Python >= 3.7
* PostgreSQL >= 9.6


Quickstart
----------

We use pip

.. code-block:: shell

    pip install guillotina


Run PostgreSQL
--------------

If you don't have a PostgreSQL server to play with, you can run one with Docker.

Download and start the Docker container by running

.. code-block:: shell

    make run-postgres



Run the server
--------------

To run the server

.. code-block:: shell

    g


Then...

.. code-block:: shell

    curl http://localhost:8080


Or, better yet, use `Postman <https://www.getpostman.com/>`_ to start playing with API.

You can also navigate in your Guillotina server with its built-in web admin interface by visiting http://localhost:8080/+admin/.

Deploy on Heroku
----------------

Read more `Guillotina-Heroku <https://github.com/guillotinaweb/guillotina-heroku>`_.

.. image:: https://www.herokucdn.com/deploy/button.svg
   :target: https://www.heroku.com/deploy?template=https://github.com/guillotinaweb/guillotina-heroku

Getting started with development
--------------------------------

Using pip (requires Python > 3.7)

.. code-block:: shell

    git clone git@github.com:plone/guillotina.git
    cd guillotina
    python3.7 -m venv .
    ./bin/pip install -r requirements.txt
    ./bin/pip install -r contrib-requirements.txt
    ./bin/pip install -e '.[test]'
    ./bin/pre-commit install


Run tests
---------

We're using `pytest <https://docs.pytest.org/en/latest/>`_

.. code-block:: shell

    ./bin/pytest guillotina

and for test coverage

.. code-block:: shell

    ./bin/pytest --cov=guillotina guillotina/

With file watcher...

.. code-block:: shell

    ./bin/ptw guillotina --runner=./bin/py.test


To run tests with cockroach db

.. code-block:: shell

    USE_COCKROACH=true ./bin/pytest guillotina

Default
-------

Default root access can be done with AUTHORIZATION header : Basic root:root


Docker
------

You can also run Guillotina with Docker!


First, run PostgreSQL

.. code-block:: shell

    docker run --rm \
        -e POSTGRES_DB=guillotina \
        -e POSTGRES_USER=guillotina \
        -p 127.0.0.1:5432:5432 \
        --name postgres \
        postgres:9.6

Then, run Guillotina

.. code-block:: shell

    docker run --rm -it \
        --link=postgres -p 127.0.0.1:8080:8080 \
        plone/guillotina:latest \
        g -c '{"databases": [{"db": {"storage": "postgresql", "dsn": "postgres://guillotina:@postgres/guillotina"}}], "root_user": {"password": "root"}}'


This assumes you have a config.yaml in your current working directory


Chat
----

Join us to talk about Guillotina at https://gitter.im/plone/guillotina


CHANGELOG
=========

6.0.2 (2020-07-10)
------------------

- Set load_catalog=true in test settings
  [masipcat]


6.0.1 (2020-07-09)
------------------

- Also allow JWT sub claim for loginid
  [allusa]


6.0.0 (2020-06-17)
------------------

- Nothing changed yet.


6.0.0b6 (2020-06-17)
--------------------

- Undo datetime object renderization on
  guillotina_json_default. [lferran]

- Be able to define optional requestBody [lferran]

- Fix registry update, when type provided mismatch with the one specified
  by the schema return an error HTTP status code instead of throwing an
  exception.
  [pfreixes]


6.0.0b5 (2020-06-08)
--------------------

- Few fixes & improvements: [lferran]
  - Fix JSONField validation error
  - Add unit tests for middleware generate error response
  - Add path_qs to Request object
  - Add content_length to Request object
  - Fix datetime objects renderization

- Optimize json schema ref resolution to not make so copies of all json schema definition
  for every validator instance
  [vangheem]

- Fix json schema ref resolution for nested objects
  [vangheem]

- Catalog subscribers conditional loading
  [bloodbre]

- Allow arbitrary path parameter within the path parameters
  [dmanchon]


6.0.0b4 (2020-05-23)
--------------------

- Allow to delete elements with the same id at cockroach
  [bloodbare]

- Split blob and objects initialization statements
  [bloodbare]

- Allow to ovewrite object table name and blob table name
  [bloodbare]

- Bug fix: handle raw strings in json payload [lferran]

- swagger tags fixes [ableeb]

- Move from travis to github actions [lferran]


6.0.0b3 (2020-04-24)
--------------------

- Provide patch operations for json field
  [vangheem]

- Optimize extend operation for bucket list field
  [vangheem]

- `.` and `..` should be blocked as valid ids. The browser will auto translate them
  to what current dir and parent dir respectively which gives unexpected results.
  [vangheem]

- Change in ISecurityPolicy that might improve performance during traversal for views
  with permission guillotina.Public
  [masipcat]

- Fix Response object responding with 'default_content' when 'content' evaluates to False
  [masipcat]

- Change log level for conflict errors to warning and fix locating tid of conflict error
  [vangheem]

- Fix security policy not taking into account IInheritPermissionMap for principals
  [masipcat,bloodbare]


- Fix use of int32 sql interpolation when it should have been bigint for tid
  [vangheem]

- Restore task vars after usage of Content API
- Zope.interface 5.0.1 upgrade
  [bloodbare]


6.0.0b2 (2020-03-25)
--------------------

- Fix move(obj) fires IBeforeObjectMovedEvent after modifying the object
  [masipcat]

- Error handling: ValueDeserializationError editing registry value
  [vangheem]

- Handle db transaction closed while acquiring transaction lock
  [vangheem]

- Handle db transaction closed while acquiring lock
  [vangheem]

- Handle connection errors on file head requests
  [vangheem]

- Update README
  [psanlorenzo]


6.0.0b1 (2020-03-18)
--------------------

- Use orjson instead of json/ujson
  [masipcat]

- AsgiStreamReader.read() can return bytes or bytearray
  [masipcat]


6.0.0a16 (2020-03-12)
---------------------

- Changes in ICatalogUtility, DefaultSearchUtility and @search endpoints
  [masipcat]

- Update react-gmi v 0.4.0
  [jordic]

- Fix more antipatterns [lferran]

- Fix integer query param validation [lferran]


6.0.0a15 (2020-03-02)
---------------------

- Handle http.disconnect (and other types of messages) while reading the request body
  [masipcat]

- Be able to have async schema invariants
  [vangheem]

- Provide better validation for json schema field
  [vangheem]


6.0.0a14 (2020-02-26)
---------------------

- Change AttributeError to HTTPPreconditionFailed in FileManager
  [masipcat]

- Reverted "Replaced Response.content_{type,length} with Response.set_content_{type,length}".
  Using setter to avoid breaking `Response.content_{type,length} = ...`
  [masipcat]

- Handle error when "None" value provided for behavior data
  [vangheem]

- Handle connection reset errors on file download
  [vangheem]


6.0.0a13 (2020-02-20)
---------------------

- Changed error handling logic: Guillotina (asgi app) catches all errors and returns a
  response for the ones that implements the handler IErrorResponseException. Otherwise
  raises the exception and is handled by ErrorsMiddleware
  [masipcat]

- Add "endpoint" in scope to let sentry know the view associated to the request
  [masipcat]

- Request.read() can return bytes or bytesarray
  [masipcat]

- Replaced Response.content_{type,length} with Response.set_content_{type,length}
  [masipcat]

- Breaking API change: Search GET
  Search get responds a json with items and items_total like plone rest api
  [bloodbare]

- Breaking Internal API change: Search
  Catalog utility search is the public search operation that is parsed and query
  the internal implementation
  [bloodbare]

- Fixing WS bugs and redis unsubscription
  [bloodbare]

- Add `max_ops` property to `PatchField`, `BucketListField` and `BucketDictField`
  [vangheem]

- Add clear action to list, dict and annotation patch fields
  [vangheem]


6.0.0a12 (2020-02-18)
---------------------

- Fix validation authorization in case token is expired
  [bloodbare]

- Set content type to response in renderers
  [masipcat]

- Import aiohttp only when recaptcha is configured
  [masipcat]

- Some asyncpg settings do not work with storages
  [vangheem]

- Improve performance of bucket dict field
  [vangheem]


6.0.0a11 (2020-02-09)
---------------------

- Moving validation endpoint from traversal to query param
  [bloodbare]

- Small improvement in asgi.py
- Call IIDGenerator with apply_coro
  [masipcat]


6.0.0a10 (2020-02-07)
---------------------

- Moved the ASGI logic from ASGIResponse and ASGISimpleResponse to class Response
  [masipcat]

- Add mail from on email validation
  [bloodbare]

- Validate POST @sharing payload too [lferran]

- Fix asyncpg integration with connection leaks on timeout
  [vangheem]


6.0.0a9 (2020-02-04)
--------------------

- Implemented endpoint @delete for IAttachments and IMultiAttachments
  [masipcat]

- Adding session manager support with redis backend
  [bloodbare]

- Registration workflow with generic validation package on contrib
  [bloodbare]

- Reset password workflow with generic validation package on contrib
  [bloodbare]

- Be able to customize pg db in test fixtures
  [vangheem]

- More type annotations
  [vangheem]

- Add pg db constraint for annotation data
  [vangheem]

- Fix DummyCache.set type signature to be the same as base class
  [vangheem]

- Jinja template engine to render on executors
  [bloodbare]

- Recaptcha support for public endpoints
  [bloodbare]

6.0.0a8 (2020-01-24)
--------------------

- Alpha version of @guillotinaweb/react-gmi available at /+manage
  [jordic]

- Improvements in contrib.dbusers
  [masipcat]

- Execute _clean_request() after middlewares execution
  [masipcat]

- Correctly bubble http errors for file downloads
  [vangheem]

- Fix command 'create'
  [masipcat]

- Remove unused methods in Response
  [masipcat]

- Add missing dependencies in `setup.py`
  [masipcat]


6.0.0a7 (2020-01-17)
--------------------

- Better error handling on redis connection issues
  [vangheem]

- Run _update_from_pytest_markers() after configuring db settings
  [masipcat]

- Fix validating array params in query parameters [lferran]

- Add open api tests and fix ones that do not pass tests
  [vangheem]

- Fix bug in traversal introduced when added support for asgi middlewares
  [masipcat]

- Fix value_deserializer() when field.key_type._type is None
  [masipcat]

- Fix automatic type conversion on nested fields. Fixes #832
  [vangheem]



...

You are seeing a truncated changelog.

You can read the `changelog file <https://github.com/plone/guillotina/blob/master/CHANGELOG.rst>`_
for a complete list.




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/guillotina",
    "name": "guillotina",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7.0",
    "maintainer_email": "",
    "keywords": "asyncio,REST,Framework,transactional,asgi",
    "author": "Ramon Navarro Bosch & Nathan Van Gheem",
    "author_email": "ramon@plone.org",
    "download_url": "https://files.pythonhosted.org/packages/32/24/867888e133ca336f8dadc9e7955e76f3aaab7a550cab1008cc8976bd583b/guillotina-6.0.2.tar.gz",
    "platform": "",
    "description": "Introduction\n============\n\n.. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat\n   :target: http://guillotina.readthedocs.io/en/latest/\n\n.. image:: https://travis-ci.org/plone/guillotina.svg?branch=master\n   :target: https://travis-ci.org/plone/guillotina\n\n.. image:: https://codecov.io/gh/plone/guillotina/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/plone/guillotina/branch/master\n   :alt: Test Coverage\n\n.. image:: https://img.shields.io/pypi/pyversions/guillotina.svg\n   :target: https://pypi.python.org/pypi/guillotina/\n   :alt: Python Versions\n\n.. image:: https://img.shields.io/pypi/v/guillotina.svg\n   :target: https://pypi.python.org/pypi/guillotina\n\n.. image:: https://img.shields.io/pypi/l/guillotina.svg\n   :target: https://pypi.python.org/pypi/guillotina/\n   :alt: License\n\n.. image:: https://badges.gitter.im/plone/guillotina.png\n   :target: https://gitter.im/plone/guillotina\n   :alt: Chat\n\n.. image:: https://img.shields.io/docker/cloud/build/plone/guillotina\n   :target: https://hub.docker.com/r/guillotina/guillotina\n   :alt: Docker Cloud Build Status\n\nPlease `read the detailed docs <http://guillotina.readthedocs.io/en/latest/>`_\n\n\nThis is the working project of the next generation Guillotina server based on asyncio.\n\n\nDependencies\n------------\n\n* Python >= 3.7\n* PostgreSQL >= 9.6\n\n\nQuickstart\n----------\n\nWe use pip\n\n.. code-block:: shell\n\n    pip install guillotina\n\n\nRun PostgreSQL\n--------------\n\nIf you don't have a PostgreSQL server to play with, you can run one with Docker.\n\nDownload and start the Docker container by running\n\n.. code-block:: shell\n\n    make run-postgres\n\n\n\nRun the server\n--------------\n\nTo run the server\n\n.. code-block:: shell\n\n    g\n\n\nThen...\n\n.. code-block:: shell\n\n    curl http://localhost:8080\n\n\nOr, better yet, use `Postman <https://www.getpostman.com/>`_ to start playing with API.\n\nYou can also navigate in your Guillotina server with its built-in web admin interface by visiting http://localhost:8080/+admin/.\n\nDeploy on Heroku\n----------------\n\nRead more `Guillotina-Heroku <https://github.com/guillotinaweb/guillotina-heroku>`_.\n\n.. image:: https://www.herokucdn.com/deploy/button.svg\n   :target: https://www.heroku.com/deploy?template=https://github.com/guillotinaweb/guillotina-heroku\n\nGetting started with development\n--------------------------------\n\nUsing pip (requires Python > 3.7)\n\n.. code-block:: shell\n\n    git clone git@github.com:plone/guillotina.git\n    cd guillotina\n    python3.7 -m venv .\n    ./bin/pip install -r requirements.txt\n    ./bin/pip install -r contrib-requirements.txt\n    ./bin/pip install -e '.[test]'\n    ./bin/pre-commit install\n\n\nRun tests\n---------\n\nWe're using `pytest <https://docs.pytest.org/en/latest/>`_\n\n.. code-block:: shell\n\n    ./bin/pytest guillotina\n\nand for test coverage\n\n.. code-block:: shell\n\n    ./bin/pytest --cov=guillotina guillotina/\n\nWith file watcher...\n\n.. code-block:: shell\n\n    ./bin/ptw guillotina --runner=./bin/py.test\n\n\nTo run tests with cockroach db\n\n.. code-block:: shell\n\n    USE_COCKROACH=true ./bin/pytest guillotina\n\nDefault\n-------\n\nDefault root access can be done with AUTHORIZATION header : Basic root:root\n\n\nDocker\n------\n\nYou can also run Guillotina with Docker!\n\n\nFirst, run PostgreSQL\n\n.. code-block:: shell\n\n    docker run --rm \\\n        -e POSTGRES_DB=guillotina \\\n        -e POSTGRES_USER=guillotina \\\n        -p 127.0.0.1:5432:5432 \\\n        --name postgres \\\n        postgres:9.6\n\nThen, run Guillotina\n\n.. code-block:: shell\n\n    docker run --rm -it \\\n        --link=postgres -p 127.0.0.1:8080:8080 \\\n        plone/guillotina:latest \\\n        g -c '{\"databases\": [{\"db\": {\"storage\": \"postgresql\", \"dsn\": \"postgres://guillotina:@postgres/guillotina\"}}], \"root_user\": {\"password\": \"root\"}}'\n\n\nThis assumes you have a config.yaml in your current working directory\n\n\nChat\n----\n\nJoin us to talk about Guillotina at https://gitter.im/plone/guillotina\n\n\nCHANGELOG\n=========\n\n6.0.2 (2020-07-10)\n------------------\n\n- Set load_catalog=true in test settings\n  [masipcat]\n\n\n6.0.1 (2020-07-09)\n------------------\n\n- Also allow JWT sub claim for loginid\n  [allusa]\n\n\n6.0.0 (2020-06-17)\n------------------\n\n- Nothing changed yet.\n\n\n6.0.0b6 (2020-06-17)\n--------------------\n\n- Undo datetime object renderization on\n  guillotina_json_default. [lferran]\n\n- Be able to define optional requestBody [lferran]\n\n- Fix registry update, when type provided mismatch with the one specified\n  by the schema return an error HTTP status code instead of throwing an\n  exception.\n  [pfreixes]\n\n\n6.0.0b5 (2020-06-08)\n--------------------\n\n- Few fixes & improvements: [lferran]\n  - Fix JSONField validation error\n  - Add unit tests for middleware generate error response\n  - Add path_qs to Request object\n  - Add content_length to Request object\n  - Fix datetime objects renderization\n\n- Optimize json schema ref resolution to not make so copies of all json schema definition\n  for every validator instance\n  [vangheem]\n\n- Fix json schema ref resolution for nested objects\n  [vangheem]\n\n- Catalog subscribers conditional loading\n  [bloodbre]\n\n- Allow arbitrary path parameter within the path parameters\n  [dmanchon]\n\n\n6.0.0b4 (2020-05-23)\n--------------------\n\n- Allow to delete elements with the same id at cockroach\n  [bloodbare]\n\n- Split blob and objects initialization statements\n  [bloodbare]\n\n- Allow to ovewrite object table name and blob table name\n  [bloodbare]\n\n- Bug fix: handle raw strings in json payload [lferran]\n\n- swagger tags fixes [ableeb]\n\n- Move from travis to github actions [lferran]\n\n\n6.0.0b3 (2020-04-24)\n--------------------\n\n- Provide patch operations for json field\n  [vangheem]\n\n- Optimize extend operation for bucket list field\n  [vangheem]\n\n- `.` and `..` should be blocked as valid ids. The browser will auto translate them\n  to what current dir and parent dir respectively which gives unexpected results.\n  [vangheem]\n\n- Change in ISecurityPolicy that might improve performance during traversal for views\n  with permission guillotina.Public\n  [masipcat]\n\n- Fix Response object responding with 'default_content' when 'content' evaluates to False\n  [masipcat]\n\n- Change log level for conflict errors to warning and fix locating tid of conflict error\n  [vangheem]\n\n- Fix security policy not taking into account IInheritPermissionMap for principals\n  [masipcat,bloodbare]\n\n\n- Fix use of int32 sql interpolation when it should have been bigint for tid\n  [vangheem]\n\n- Restore task vars after usage of Content API\n- Zope.interface 5.0.1 upgrade\n  [bloodbare]\n\n\n6.0.0b2 (2020-03-25)\n--------------------\n\n- Fix move(obj) fires IBeforeObjectMovedEvent after modifying the object\n  [masipcat]\n\n- Error handling: ValueDeserializationError editing registry value\n  [vangheem]\n\n- Handle db transaction closed while acquiring transaction lock\n  [vangheem]\n\n- Handle db transaction closed while acquiring lock\n  [vangheem]\n\n- Handle connection errors on file head requests\n  [vangheem]\n\n- Update README\n  [psanlorenzo]\n\n\n6.0.0b1 (2020-03-18)\n--------------------\n\n- Use orjson instead of json/ujson\n  [masipcat]\n\n- AsgiStreamReader.read() can return bytes or bytearray\n  [masipcat]\n\n\n6.0.0a16 (2020-03-12)\n---------------------\n\n- Changes in ICatalogUtility, DefaultSearchUtility and @search endpoints\n  [masipcat]\n\n- Update react-gmi v 0.4.0\n  [jordic]\n\n- Fix more antipatterns [lferran]\n\n- Fix integer query param validation [lferran]\n\n\n6.0.0a15 (2020-03-02)\n---------------------\n\n- Handle http.disconnect (and other types of messages) while reading the request body\n  [masipcat]\n\n- Be able to have async schema invariants\n  [vangheem]\n\n- Provide better validation for json schema field\n  [vangheem]\n\n\n6.0.0a14 (2020-02-26)\n---------------------\n\n- Change AttributeError to HTTPPreconditionFailed in FileManager\n  [masipcat]\n\n- Reverted \"Replaced Response.content_{type,length} with Response.set_content_{type,length}\".\n  Using setter to avoid breaking `Response.content_{type,length} = ...`\n  [masipcat]\n\n- Handle error when \"None\" value provided for behavior data\n  [vangheem]\n\n- Handle connection reset errors on file download\n  [vangheem]\n\n\n6.0.0a13 (2020-02-20)\n---------------------\n\n- Changed error handling logic: Guillotina (asgi app) catches all errors and returns a\n  response for the ones that implements the handler IErrorResponseException. Otherwise\n  raises the exception and is handled by ErrorsMiddleware\n  [masipcat]\n\n- Add \"endpoint\" in scope to let sentry know the view associated to the request\n  [masipcat]\n\n- Request.read() can return bytes or bytesarray\n  [masipcat]\n\n- Replaced Response.content_{type,length} with Response.set_content_{type,length}\n  [masipcat]\n\n- Breaking API change: Search GET\n  Search get responds a json with items and items_total like plone rest api\n  [bloodbare]\n\n- Breaking Internal API change: Search\n  Catalog utility search is the public search operation that is parsed and query\n  the internal implementation\n  [bloodbare]\n\n- Fixing WS bugs and redis unsubscription\n  [bloodbare]\n\n- Add `max_ops` property to `PatchField`, `BucketListField` and `BucketDictField`\n  [vangheem]\n\n- Add clear action to list, dict and annotation patch fields\n  [vangheem]\n\n\n6.0.0a12 (2020-02-18)\n---------------------\n\n- Fix validation authorization in case token is expired\n  [bloodbare]\n\n- Set content type to response in renderers\n  [masipcat]\n\n- Import aiohttp only when recaptcha is configured\n  [masipcat]\n\n- Some asyncpg settings do not work with storages\n  [vangheem]\n\n- Improve performance of bucket dict field\n  [vangheem]\n\n\n6.0.0a11 (2020-02-09)\n---------------------\n\n- Moving validation endpoint from traversal to query param\n  [bloodbare]\n\n- Small improvement in asgi.py\n- Call IIDGenerator with apply_coro\n  [masipcat]\n\n\n6.0.0a10 (2020-02-07)\n---------------------\n\n- Moved the ASGI logic from ASGIResponse and ASGISimpleResponse to class Response\n  [masipcat]\n\n- Add mail from on email validation\n  [bloodbare]\n\n- Validate POST @sharing payload too [lferran]\n\n- Fix asyncpg integration with connection leaks on timeout\n  [vangheem]\n\n\n6.0.0a9 (2020-02-04)\n--------------------\n\n- Implemented endpoint @delete for IAttachments and IMultiAttachments\n  [masipcat]\n\n- Adding session manager support with redis backend\n  [bloodbare]\n\n- Registration workflow with generic validation package on contrib\n  [bloodbare]\n\n- Reset password workflow with generic validation package on contrib\n  [bloodbare]\n\n- Be able to customize pg db in test fixtures\n  [vangheem]\n\n- More type annotations\n  [vangheem]\n\n- Add pg db constraint for annotation data\n  [vangheem]\n\n- Fix DummyCache.set type signature to be the same as base class\n  [vangheem]\n\n- Jinja template engine to render on executors\n  [bloodbare]\n\n- Recaptcha support for public endpoints\n  [bloodbare]\n\n6.0.0a8 (2020-01-24)\n--------------------\n\n- Alpha version of @guillotinaweb/react-gmi available at /+manage\n  [jordic]\n\n- Improvements in contrib.dbusers\n  [masipcat]\n\n- Execute _clean_request() after middlewares execution\n  [masipcat]\n\n- Correctly bubble http errors for file downloads\n  [vangheem]\n\n- Fix command 'create'\n  [masipcat]\n\n- Remove unused methods in Response\n  [masipcat]\n\n- Add missing dependencies in `setup.py`\n  [masipcat]\n\n\n6.0.0a7 (2020-01-17)\n--------------------\n\n- Better error handling on redis connection issues\n  [vangheem]\n\n- Run _update_from_pytest_markers() after configuring db settings\n  [masipcat]\n\n- Fix validating array params in query parameters [lferran]\n\n- Add open api tests and fix ones that do not pass tests\n  [vangheem]\n\n- Fix bug in traversal introduced when added support for asgi middlewares\n  [masipcat]\n\n- Fix value_deserializer() when field.key_type._type is None\n  [masipcat]\n\n- Fix automatic type conversion on nested fields. Fixes #832\n  [vangheem]\n\n\n\n...\n\nYou are seeing a truncated changelog.\n\nYou can read the `changelog file <https://github.com/plone/guillotina/blob/master/CHANGELOG.rst>`_\nfor a complete list.\n\n\n\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "asyncio REST API Resource database",
    "version": "6.0.2",
    "split_keywords": [
        "asyncio",
        "rest",
        "framework",
        "transactional",
        "asgi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "12aa49c2b1c5efe03d1589aa49ac1a6a",
                "sha256": "e3c35a92ba4f0cab6aceaf4934baa58967f138c0b72763ec41c8fc7e0ddcb2af"
            },
            "downloads": -1,
            "filename": "guillotina-6.0.2-cp37-cp37m-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "12aa49c2b1c5efe03d1589aa49ac1a6a",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7.0",
            "size": 5873849,
            "upload_time": "2020-07-10T11:29:53",
            "upload_time_iso_8601": "2020-07-10T11:29:53.522945Z",
            "url": "https://files.pythonhosted.org/packages/cb/e6/40df86f15c133dd8e218d7b820707a92b5ed497768fe544a782f896d6764/guillotina-6.0.2-cp37-cp37m-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "352b011a65d64247f52dd68bf11e58bd",
                "sha256": "5e51d20464942efdf5b55e8fd67e8f3e4d4e9f1c3e5069b780977df90c57fe68"
            },
            "downloads": -1,
            "filename": "guillotina-6.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "352b011a65d64247f52dd68bf11e58bd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.0",
            "size": 6695887,
            "upload_time": "2020-07-10T11:29:57",
            "upload_time_iso_8601": "2020-07-10T11:29:57.802782Z",
            "url": "https://files.pythonhosted.org/packages/32/24/867888e133ca336f8dadc9e7955e76f3aaab7a550cab1008cc8976bd583b/guillotina-6.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-07-10 11:29:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": null,
    "github_project": "plone",
    "error": "Could not fetch GitHub repository",
    "lcname": "guillotina"
}
        
Elapsed time: 0.16374s