Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bhch/async-stripe
async-stripe is an asynchronous wrapper around Stripe's official python library.
https://github.com/bhch/async-stripe
async asyncio python stripe
Last synced: 15 days ago
JSON representation
async-stripe is an asynchronous wrapper around Stripe's official python library.
- Host: GitHub
- URL: https://github.com/bhch/async-stripe
- Owner: bhch
- License: bsd-3-clause
- Created: 2021-05-29T08:38:44.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-12-03T12:09:11.000Z (about 1 year ago)
- Last Synced: 2024-10-19T10:25:07.703Z (3 months ago)
- Topics: async, asyncio, python, stripe
- Language: Python
- Homepage: https://pypi.org/project/async-stripe/
- Size: 478 KB
- Stars: 37
- Watchers: 2
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.stripe.txt
Awesome Lists containing this project
README
# async-stripe
[![Build Status](https://github.com/bhch/async-stripe/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/bhch/async-stripe/actions/workflows/ci.yml)
An asynchronous wrapper around Stripe's official python library.
## How it works
async-stripe monkey-patches the stripe library and replaces the synchronous
http request methods with asynchronous methods.Monkey-patching allows us to avoid a complete rewrite and keep the usage api
similar to the official library.This **doesn't use threads**, but **actual async coroutines** and
[non-blocking http client][1] to make requests. Hence, the performance is much
better than other wrapper libraries which use threading.## Install
Install requires Python 3.6 or newer.
```sh
$ pip install async-stripe
```## Usage
The usage api is similar to Stripe's official library:
```python
from async_stripe import stripestripe.api_key = ''
payment_intent = await stripe.PaymentIntent.create(amount=1000, currency='usd')
print(payment_intent.id)
```---
**/!\ Note:** Since this library monkey-patches the actual `stripe` library,
you should avoid using the two in the same process.Once you import `async_stripe`, the official `stripe` library gets patched with
async methods and the original synchronous api won't be available.---
## Configuration
Please see [`stripe-python`'s README][5] file for configuring logging and other things.
#### Unsupported configurations:
`async-stripe` aims to be a drop-in async replacement for `stripe`. However,
there are a few things which are not yet supported:- Custom http client: Currently, it's not possible to configure a
custom http client and Tornado's [`AsyncHTTPClient`][1] will be used by default.
- Proxy: Connecting to api via a proxy is not supported yet.## Development and Testing
When adding new features and monkey-patches, please add relevant tests and
ensure that all the tests also pass.In most cases, you shouldn't need to write the tests yourself: you can just
copy-paste the tests form the original stripe library and change the synchronous
methods to asynchronous methods.For testing, first, [install and run the `stripe-mock` api server][2].
Next, install `pytest`, `pytest-mock` and `pytest-asyncio` python packages in
your virtualenv.Finally, run the tests like this:
```sh
$ pytest tests# or run a specific test
$ pytest tests/api_resources/test_customer.py
$ pytest tests/api_resources/test_customer.py::TestCustomer
```## License
A lot of the code (especially tests) are copied with slight modifications from
Stripe's official library. That code is licensed under
[MIT License][3].Rest of the original code is licensed under [BSD-3-Clause License][4].
[1]: https://www.tornadoweb.org/en/stable/httpclient.html#tornado.httpclient.AsyncHTTPClient
[2]: https://github.com/stripe/stripe-mock
[3]: LICENSE.stripe.txt
[4]: LICENSE.txt
[5]: https://github.com/stripe/stripe-python/blob/master/README.md