Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆


Subscribe to our mailing list

bravado

Bravado is a python client library for Swagger 2.0 services

Subscribe to updates I use bravado


Statistics on bravado

Number of watchers on Github 290
Number of open issues 57
Average time to close an issue 7 days
Main language Python
Average time to merge a PR 2 days
Open pull requests 8+
Closed pull requests 16+
Last commit over 1 year ago
Repo Created about 5 years ago
Repo Last Updated over 1 year ago
Size 1.47 MB
Organization / Authoryelp
Latest Releasev0.7.8
Contributors13
Page Updated
Do you use bravado? Leave a review!
View open issues (57)
View bravado activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating bravado for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

.. image:: https://img.shields.io/travis/Yelp/bravado.svg :target: https://travis-ci.org/Yelp/bravado?branch=master

.. image:: https://img.shields.io/coveralls/Yelp/bravado.svg :target: https://coveralls.io/r/Yelp/bravado

.. image:: https://img.shields.io/pypi/v/bravado.svg :target: https://pypi.python.org/pypi/bravado/ :alt: PyPi version

.. image:: https://img.shields.io/pypi/pyversions/bravado.svg :target: https://pypi.python.org/pypi/bravado/ :alt: Supported Python versions

Bravado

About

Bravado is a Yelp maintained fork of digium/swagger-py <https://github.com/digium/swagger-py/>__ for use with OpenAPI Specification version 2.0 <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md>__ (previously known as Swagger).

From the OpenAPI Specification project:

The goal of The OpenAPI Specification is to define a standard,
language-agnostic interface to REST APIs which allows both humans and
computers to discover and understand the capabilities of the service
without access to source code, documentation, or through network traffic
inspection.

Client libraries can automatically be generated from the OpenAPI specification, however Bravado aims to be a complete replacement for code generation (swagger-codegen <https://github.com/wordnik/swagger-codegen>__).

Example Usage

.. code-block:: Python

from bravado.client import SwaggerClient
client = SwaggerClient.from_url('http://petstore.swagger.io/v2/swagger.json')
pet = client.pet.getPetById(petId=42).result()

Example with Basic Authentication

.. code-block:: python

from bravado.requests_client import RequestsClient
from bravado.client import SwaggerClient

http_client = RequestsClient()
http_client.set_basic_auth(
    'api.yourhost.com',
    'username', 'password'
)
client = SwaggerClient.from_url(
    'http://petstore.swagger.io/v2/swagger.json',
    http_client=http_client,
)
pet = client.pet.getPetById(petId=42).result()

Example with Header Authentication

.. code-block:: python

from bravado.requests_client import RequestsClient
from bravado.client import SwaggerClient

http_client = RequestsClient()
http_client.set_api_key(
    'api.yourhost.com', 'token',
    param_name='api_key', param_in='header'
)
client = SwaggerClient.from_url(
    'http://petstore.swagger.io/v2/swagger.json',
    http_client=http_client,
)
pet = client.pet.getPetById(petId=42).result()

Example with Fido Client (Async Http Client)

.. code-block:: python

# Install bravado with fido extra (``pip install bravado[fido]``)
from bravado.fido_client import FidoClient
from bravado.client import SwaggerClient

http_client = FidoClient()
client = SwaggerClient.from_url(
    'http://petstore.swagger.io/v2/swagger.json',
    http_client=http_client,
)
pet = client.pet.getPetById(petId=42).result()

Documentation

More documentation is available at http://bravado.readthedocs.org

Installation

.. code-block:: bash

# To install bravado with Synchronous Http Client only.
$ pip install bravado

# To install bravado with Synchronous and Asynchronous Http Client (RequestsClient and FidoClient).
$ pip install bravado[fido]

Development

Code is documented using Sphinx <http://sphinx-doc.org/>__.

virtualenv <http://virtualenv.readthedocs.org/en/latest/virtualenv.html>__. is recommended to keep dependencies and libraries isolated.

Setup

.. code-block:: bash

# Run tests
tox

# Install git pre-commit hooks
tox -e pre-commit install

Contributing

  1. Fork it ( http://github.com/Yelp/bravado/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Add your modifications
  4. Add short summary of your modifications on CHANGELOG-MASTER.rst
  5. Commit your changes (git commit -m "Add some feature")
  6. Push to the branch (git push origin my-new-feature)
  7. Create new Pull Request

License

Copyright (c) 2013, Digium, Inc. All rights reserved. Copyright (c) 2014-2015, Yelp, Inc. All rights reserved.

Bravado is licensed with a BSD 3-Clause License <http://opensource.org/licenses/BSD-3-Clause>__.

bravado open issues Ask a question     (View All Issues)
  • almost 3 years Create request without swagger.json
  • almost 3 years Non 200 codes block getting http response
  • almost 3 years Bravado tries to parse xml response as JSON
  • almost 3 years AttributeError: 'Future' object has no attribute 'wait'
  • almost 3 years FidoClient errors with TypeError: 'NoneType' object is not iterable
  • almost 3 years Bravado client hangs a lot on HTTPS connections on _lib.SSL_read
  • almost 3 years SwaggerMappingError when trying to load spec with root path.
  • about 3 years How to change host in the swagger file?
  • about 3 years Should fido / twisted / requests be optional requirements?
  • about 3 years Gracefully reraise JSONDecodeError errors
  • about 3 years Make it super easy to wrap SwaggerClient to add new features
  • about 3 years documentation does not indicate how to pass global headers
  • about 3 years Rename SwaggerClient to BravadoClient?
  • over 3 years Question: handling of $ref:s to external .yaml files
  • over 3 years OAuth2 support
  • over 3 years Passing datetime as request body throws JSON serializable error.
  • over 3 years Handle patch requirements differently
  • almost 4 years Asynchronous client is not fork-safe
  • almost 4 years Expose api to get the service `title` from the client
  • about 4 years Add capacity to set a default timeout on the client
  • about 4 years Update bravado/swaggerpy doc with current examples
  • about 4 years swagger client should not be modified by a service call.
  • about 4 years bravado should be able to parse errors as json
  • about 4 years Using 'type': 'number' for request query parameters does not work in swaggerpy
  • over 4 years Make `RequestsClient` immutable.
  • over 4 years Make a way to switch between using a sync and an async http_client
  • over 4 years Support Operation class decorators
  • over 4 years AsynchronousHttpClient mutates the passed in `api_doc_request_headers` object
  • over 4 years Ensure that crochet/twisted is not initialized at import time
bravado open pull requests (View All Pulls)
  • throwing a timeout error when the underlying crochet impl raises timeout
  • fix required fields for header
  • Add basic authentication usage example.
  • Contribution guidelines and master changelog
  • Fix for issue 222
  • Api key header
  • Add twisted errors to list of Fido timeouts
  • Add HTTP proxy support
bravado questions on Stackoverflow (View All Questions)
  • How do you set a custom http client in Bravado?
bravado list of languages used
bravado latest release notes
v0.7.8 Fix UnicodeDecodeError when POST'ing binary files

When Resources/Operations are constructed from api-docs, all fields (e.g. 'method') are unicode. In python 2.7 httplib attempts string concatenation to construct POST bodies, which means that UnicodeDecodeErrors occur if one includes binary data as a parameter. Rather than change all api-doc fields to 'str', this branch casts only fields used in httplib.

v0.7.4 v0.7.4

Encode params to utf8.

v0.7.3 Log level debug for request logging

v0.7.3

Other projects in Python