From d5a92536ec4867c211247f5d4d1addd4be7444a0 Mon Sep 17 00:00:00 2001 From: Grey Li Date: Mon, 27 Nov 2023 18:14:37 +0800 Subject: [PATCH] Add more extensions --- .github/workflows/flask-apispec.yml | 33 ++++++++++++++++++ .github/workflows/flask-assets.yml | 33 ++++++++++++++++++ .github/workflows/flask-babel.yml | 33 ++++++++++++++++++ .github/workflows/flask-caching.yml | 33 ++++++++++++++++++ .github/workflows/flask-cors.yml | 33 ++++++++++++++++++ .github/workflows/flask-marshmallow.yml | 33 ++++++++++++++++++ .github/workflows/flask-migrate.yml | 33 ++++++++++++++++++ .github/workflows/flask-moment.yml | 33 ++++++++++++++++++ .github/workflows/flask-rebar.yml | 33 ++++++++++++++++++ .github/workflows/flask-restful.yml | 33 ++++++++++++++++++ .github/workflows/flask-restx.yml | 33 ++++++++++++++++++ .github/workflows/flask-socketio.yml | 33 ++++++++++++++++++ .github/workflows/flask-testing.yml | 33 ++++++++++++++++++ .github/workflows/flask-whooshee.yml | 33 ++++++++++++++++++ .github/workflows/flask-wtf.yml | 33 ++++++++++++++++++ README.md | 19 ++++++++-- extensions.yml | 46 ++++++++++++++++++++++++- 17 files changed, 557 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/flask-apispec.yml create mode 100644 .github/workflows/flask-assets.yml create mode 100644 .github/workflows/flask-babel.yml create mode 100644 .github/workflows/flask-caching.yml create mode 100644 .github/workflows/flask-cors.yml create mode 100644 .github/workflows/flask-marshmallow.yml create mode 100644 .github/workflows/flask-migrate.yml create mode 100644 .github/workflows/flask-moment.yml create mode 100644 .github/workflows/flask-rebar.yml create mode 100644 .github/workflows/flask-restful.yml create mode 100644 .github/workflows/flask-restx.yml create mode 100644 .github/workflows/flask-socketio.yml create mode 100644 .github/workflows/flask-testing.yml create mode 100644 .github/workflows/flask-whooshee.yml create mode 100644 .github/workflows/flask-wtf.yml diff --git a/.github/workflows/flask-apispec.yml b/.github/workflows/flask-apispec.yml new file mode 100644 index 0000000..9e5618f --- /dev/null +++ b/.github/workflows/flask-apispec.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-apispec flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_apispec import use_kwargs, marshal_with" diff --git a/.github/workflows/flask-assets.yml b/.github/workflows/flask-assets.yml new file mode 100644 index 0000000..3ffe885 --- /dev/null +++ b/.github/workflows/flask-assets.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-assets flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_assets import Environment; Environment(app)" diff --git a/.github/workflows/flask-babel.yml b/.github/workflows/flask-babel.yml new file mode 100644 index 0000000..10bd5cd --- /dev/null +++ b/.github/workflows/flask-babel.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-babel flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_babel import Babel; Babel(app)" diff --git a/.github/workflows/flask-caching.yml b/.github/workflows/flask-caching.yml new file mode 100644 index 0000000..37859d5 --- /dev/null +++ b/.github/workflows/flask-caching.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-caching flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_caching import Cache; Cache(app)" diff --git a/.github/workflows/flask-cors.yml b/.github/workflows/flask-cors.yml new file mode 100644 index 0000000..bdabfbd --- /dev/null +++ b/.github/workflows/flask-cors.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-cors flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_cors import CORS; CORS(app)" diff --git a/.github/workflows/flask-marshmallow.yml b/.github/workflows/flask-marshmallow.yml new file mode 100644 index 0000000..de45879 --- /dev/null +++ b/.github/workflows/flask-marshmallow.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-marshmallow flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_marshmallow import Marshmallow; Marshmallow(app)" diff --git a/.github/workflows/flask-migrate.yml b/.github/workflows/flask-migrate.yml new file mode 100644 index 0000000..3b212d8 --- /dev/null +++ b/.github/workflows/flask-migrate.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-migrate flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_migrate import Migrate; Migrate(app, db)" diff --git a/.github/workflows/flask-moment.yml b/.github/workflows/flask-moment.yml new file mode 100644 index 0000000..0e5f6ff --- /dev/null +++ b/.github/workflows/flask-moment.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-moment flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_moment import Moment; Moment(app)" diff --git a/.github/workflows/flask-rebar.yml b/.github/workflows/flask-rebar.yml new file mode 100644 index 0000000..3688983 --- /dev/null +++ b/.github/workflows/flask-rebar.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-rebar flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_rebar import Rebar; Rebar()" diff --git a/.github/workflows/flask-restful.yml b/.github/workflows/flask-restful.yml new file mode 100644 index 0000000..7fabe04 --- /dev/null +++ b/.github/workflows/flask-restful.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-restful flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_restful import Api; api = Api(app)" diff --git a/.github/workflows/flask-restx.yml b/.github/workflows/flask-restx.yml new file mode 100644 index 0000000..e915290 --- /dev/null +++ b/.github/workflows/flask-restx.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-restx flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_restx import Api; api = Api(app)" diff --git a/.github/workflows/flask-socketio.yml b/.github/workflows/flask-socketio.yml new file mode 100644 index 0000000..71cfb41 --- /dev/null +++ b/.github/workflows/flask-socketio.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-socketio flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_socketio import SocketIO; SocketIO(app)" diff --git a/.github/workflows/flask-testing.yml b/.github/workflows/flask-testing.yml new file mode 100644 index 0000000..8b652a0 --- /dev/null +++ b/.github/workflows/flask-testing.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-testing flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_testing import TestCase; TestCase()" diff --git a/.github/workflows/flask-whooshee.yml b/.github/workflows/flask-whooshee.yml new file mode 100644 index 0000000..f1b9b73 --- /dev/null +++ b/.github/workflows/flask-whooshee.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-whooshee flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_whooshee import Whooshee; Whooshee(app)" diff --git a/.github/workflows/flask-wtf.yml b/.github/workflows/flask-wtf.yml new file mode 100644 index 0000000..ba4db5c --- /dev/null +++ b/.github/workflows/flask-wtf.yml @@ -0,0 +1,33 @@ + +name: build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + python-versions: ['3.12'] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-versions }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flask-wtf flask + + - name: Test initialization + run: + python -c "from flask import Flask; app = Flask(__name__); from flask_wtf import FlaskForm, CSRFProtect; CSRFProtect(app)" diff --git a/README.md b/README.md index 1b5762c..10b5109 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,28 @@ Want to help a Flask extension? Check the [What can I do to help?](#what-can-i-d -| Extension Repository | Latest version | Downloads | Build with latest Flask | -| -------------------- | --------------- | ---------- | ----------------------- | +| Extension Repository | Latest version | Downloads | Build with latest Flask (3.x) | +| -------------------- | --------------- | ---------- | ----------------------------- | | [helloflask/bootstrap-flask](https://github.com/helloflask/bootstrap-flask) | ![PyPI - Version](https://img.shields.io/pypi/v/bootstrap-flask) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/bootstrap-flask?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/bootstrap-flask.yml/badge.svg) | +| [jmcarp/flask-apispec](https://github.com/jmcarp/flask-apispec) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-apispec) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-apispec?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-apispec.yml/badge.svg) | +| [miracle2k/flask-assets](https://github.com/miracle2k/flask-assets) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-assets) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-assets?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-assets.yml/badge.svg) | +| [python-babel/flask-babel](https://github.com/python-babel/flask-babel) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-babel) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-babel?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-babel.yml/badge.svg) | +| [pallets-eco/flask-caching](https://github.com/pallets-eco/flask-caching) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-caching) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-caching?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-caching.yml/badge.svg) | | [helloflask/flask-ckeditor](https://github.com/helloflask/flask-ckeditor) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-ckeditor) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-ckeditor?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-ckeditor.yml/badge.svg) | +| [corydolphin/flask-cors](https://github.com/corydolphin/flask-cors) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-cors) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-cors?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-cors.yml/badge.svg) | | [pallets-eco/flask-debugtoolbar](https://github.com/pallets-eco/flask-debugtoolbar) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-debugtoolbar) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-debugtoolbar?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-debugtoolbar.yml/badge.svg) | | [maxcountryman/flask-login](https://github.com/maxcountryman/flask-login) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-login) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-login?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-login.yml/badge.svg) | | [waynerv/flask-mailman](https://github.com/waynerv/flask-mailman) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-mailman) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-mailman?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-mailman.yml/badge.svg) | +| [marshmallow-code/flask-marshmallow](https://github.com/marshmallow-code/flask-marshmallow) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-marshmallow) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-marshmallow?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-marshmallow.yml/badge.svg) | +| [miguelgrinberg/flask-migrate](https://github.com/miguelgrinberg/flask-migrate) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-migrate) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-migrate?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-migrate.yml/badge.svg) | +| [miguelgrinberg/flask-moment](https://github.com/miguelgrinberg/flask-moment) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-moment) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-moment?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-moment.yml/badge.svg) | +| [plangrid/flask-rebar](https://github.com/plangrid/flask-rebar) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-rebar) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-rebar?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-rebar.yml/badge.svg) | +| [flask-restful/flask-restful](https://github.com/flask-restful/flask-restful) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-restful) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-restful?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-restful.yml/badge.svg) | +| [python-restx/flask-restx](https://github.com/python-restx/flask-restx) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-restx) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-restx?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-restx.yml/badge.svg) | +| [miguelgrinberg/Flask-SocketIO](https://github.com/miguelgrinberg/Flask-SocketIO) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-socketio) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-socketio?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-socketio.yml/badge.svg) | +| [jarus/flask-testing](https://github.com/jarus/flask-testing) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-testing) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-testing?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-testing.yml/badge.svg) | +| [fedora-copr/flask-whooshee](https://github.com/fedora-copr/flask-whooshee) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-whooshee) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-whooshee?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-whooshee.yml/badge.svg) | +| [flask-wtf/flask-wtf](https://github.com/flask-wtf/flask-wtf) | ![PyPI - Version](https://img.shields.io/pypi/v/flask-wtf) | ![PyPI - Downloads](https://img.shields.io/pypi/dm/flask-wtf?color=darkgrey) | ![build](https://github.com/greyli/flask-extension-status/actions/workflows/flask-wtf.yml/badge.svg) | diff --git a/extensions.yml b/extensions.yml index 48c8931..bc3f727 100644 --- a/extensions.yml +++ b/extensions.yml @@ -1,5 +1,4 @@ -# sort by name alphabetically bootstrap-flask: repo: helloflask/bootstrap-flask init_string: 'from flask_bootstrap import Bootstrap5; Bootstrap5(app)' @@ -15,3 +14,48 @@ flask-login: flask-mailman: repo: waynerv/flask-mailman init_string: 'from flask_mailman import Mail; Mail(app)' +flask-testing: + repo: jarus/flask-testing + init_string: 'from flask_testing import TestCase; TestCase()' +flask-restful: + repo: flask-restful/flask-restful + init_string: 'from flask_restful import Api; api = Api(app)' +flask-restx: + repo: python-restx/flask-restx + init_string: 'from flask_restx import Api; api = Api(app)' +flask-wtf: + repo: flask-wtf/flask-wtf + init_string: 'from flask_wtf import FlaskForm, CSRFProtect; CSRFProtect(app)' +flask-migrate: + repo: miguelgrinberg/flask-migrate + init_string: 'from flask_migrate import Migrate; Migrate(app, db)' +flask-assets: + repo: miracle2k/flask-assets + init_string: 'from flask_assets import Environment; Environment(app)' +flask-babel: + repo: python-babel/flask-babel + init_string: 'from flask_babel import Babel; Babel(app)' +flask-cors: + repo: corydolphin/flask-cors + init_string: 'from flask_cors import CORS; CORS(app)' +flask-caching: + repo: pallets-eco/flask-caching + init_string: 'from flask_caching import Cache; Cache(app)' +flask-moment: + repo: miguelgrinberg/flask-moment + init_string: 'from flask_moment import Moment; Moment(app)' +flask-socketio: + repo: miguelgrinberg/Flask-SocketIO + init_string: 'from flask_socketio import SocketIO; SocketIO(app)' +flask-whooshee: + repo: fedora-copr/flask-whooshee + init_string: 'from flask_whooshee import Whooshee; Whooshee(app)' +flask-apispec: + repo: jmcarp/flask-apispec + init_string: 'from flask_apispec import use_kwargs, marshal_with' +flask-marshmallow: + repo: marshmallow-code/flask-marshmallow + init_string: 'from flask_marshmallow import Marshmallow; Marshmallow(app)' +flask-rebar: + repo: plangrid/flask-rebar + init_string: 'from flask_rebar import Rebar; Rebar()'