Skip to main content

Fast and flexible API framework based on Falcon and SQLAlchemy

Project description

pipeline statuscoverage reportCodacy BadgeCode style: blackPyPI - Downloads

Fast and flexible low-level API framework based on Falcon, Marshmallow and SQLAlchemy Core

API is close to OpenAPI 3.0 specification

Currently is under active development

Awokado Diagram

Changelog

You can find in: CHANGELOG.md

Installation

$ pip install awokado

Awokado uses dynaconf for loading it settings

You can find all available variables in settings.toml file

Filtering

syntax

resource_field_name[operator]=value

available operators

  • lte
  • eq
  • gte
  • ilike
  • in
  • empty
  • contains

examples

/v1/user/?username[ilike]=Andy it’s equal to SQL statement: SELECT * FROM users WHERE username ILIKE '%Andy%';

/v1/user/?id[in]=1,2,3,4 it’s equal to SQL statement: SELECT * FROM users WHERE id IN (1,2,3,4);

Sorting

syntax

sort=resource_field_name,-another_resource_field_name

use - for descending order

examples

/v1/user/?sort=name,-record_created

Includes

syntax

include=resource_relation_name

examples

/v1/author/?include=books

/v1/author/?include=books,stores

Limit \ Offset (pagination)

syntax

limit=integer&offset=integer

examples

/v1/user/?limit=10&offset=10

/v1/user/?offset=10

/v1/user/?limit=2000

Documentation

Awokado allows to generate documentation for a project using swagger(3rd version). To generate documentation you need to import generate_documentation function and call it with required parameters. Description of your project can be taken from template, in that case you need to provide path to the template as argument in template_absolute_path

function parameters

  • api - your falcon.API instance
  • api_host - IP address for your host
  • project_name - title for your documentation
  • output_dir - path, where swagger doc will be added
  • api_version default "1.0.0" - string with number of version of you project
  • template_absolute_path default None - absolute path to template with description of your project

examples

from awokado.documentation import generate_documentation
from dynaconf import settings
from api.routes import api

generate_documentation(
    api=api,
    api_host=settings.MY_HOST_FOR_DOCUMENTATION,
    api_version="2.0.0",
    project_name="API Documentation",
    template_absolute_path="Users/my_user/projects/my_project/template.tmpl",
    output_dir="my_project/documentation",
)

Contributing

Tests

To run tests locally you should create .secrets.toml file in the project root directory:

[default]
    DATABASE_PASSWORD='your_db_password_here'
    DATABASE_HOST='localhost'
    DATABASE_USER='your_db_username_here'
    DATABASE_PORT=5432 #DB port
    DATABASE_DB='test'

Install required packages:

$ pip install -r requirements/requirements-dev.txt

Then you can setup your database:

$ python -m tests.test_app.init_db

And run tests:

$ python -m unittest

Authors

Is being made with the help of

Alex Sidorov

Ksenia Malyavskaya

Pavel Danilyuk

Andrew Osenenko

Project details


Download files

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

Source Distribution

awokado-0.3b12.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awokado-0.3b12-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file awokado-0.3b12.tar.gz.

File metadata

  • Download URL: awokado-0.3b12.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.1

File hashes

Hashes for awokado-0.3b12.tar.gz
Algorithm Hash digest
SHA256 e8173ab1eeee952feb51fa0efc2d45e1a88c2aa1a4f109ea52531c1d8fe46475
MD5 cd3f29669f087debecb846e607adf756
BLAKE2b-256 8d62c04575c50e1cb28927ab6bc5433d31d4ce043c7a2b2991ef15fc64bbd5fe

See more details on using hashes here.

File details

Details for the file awokado-0.3b12-py3-none-any.whl.

File metadata

  • Download URL: awokado-0.3b12-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.1

File hashes

Hashes for awokado-0.3b12-py3-none-any.whl
Algorithm Hash digest
SHA256 518efcde1849335717235f31fdda86c006cefab7f3e36ca55c570a5ab9efaac1
MD5 56ad7d6e17e048575e32b667d78431a9
BLAKE2b-256 8ae6d97cad2ca448216dfdc8a44b82f1413de9e34e217770cfba94e6cabe6bf9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page