]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
✨ External links in docs with data file (#1701)
authorSebastián Ramírez <tiangolo@gmail.com>
Fri, 10 Jul 2020 12:31:44 +0000 (14:31 +0200)
committerGitHub <noreply@github.com>
Fri, 10 Jul 2020 12:31:44 +0000 (14:31 +0200)
* ➕ Add mkdocs-markdownextradata-plugin for docs

* 🔧 Update MkDocs config file(s) to include external data

* ✨ Add external links data file

* 📝 Use external data file in External Links

* ♻️ Update data files for langs

The cost is some duplication 😔, these files are updated by the script, but to be able to serve locally they have to be duplicated

* ✨ Update docs script to copy data files

* 🔥 Remove needed duplication of data files for live docs in translations

docs/en/data/external_links.yml [new file with mode: 0644]
docs/en/docs/external-links.md
docs/en/mkdocs.yml
docs/es/mkdocs.yml
docs/it/mkdocs.yml
docs/pt/mkdocs.yml
docs/ru/mkdocs.yml
docs/zh/mkdocs.yml
pyproject.toml
scripts/docs.py

diff --git a/docs/en/data/external_links.yml b/docs/en/data/external_links.yml
new file mode 100644 (file)
index 0000000..5ecbc67
--- /dev/null
@@ -0,0 +1,222 @@
+articles:
+  english:
+    - link: https://medium.com/@williamhayes/fastapi-starlette-debug-vs-prod-5f7561db3a59
+      title: FastAPI/Starlette debug vs prod
+      author_link: https://medium.com/@williamhayes
+      author: William Hayes
+    - link: https://medium.com/data-rebels/fastapi-google-as-an-external-authentication-provider-3a527672cf33
+      title: FastAPI — Google as an external authentication provider
+      author_link: https://medium.com/@nilsdebruin
+      author: Nils de Bruin
+    - link: https://medium.com/data-rebels/fastapi-how-to-add-basic-and-cookie-authentication-a45c85ef47d3
+      title: FastAPI — How to add basic and cookie authentication
+      author_link: https://medium.com/@nilsdebruin
+      author: Nils de Bruin
+    - link: https://dev.to/errietta/introduction-to-the-fastapi-python-framework-2n10
+      title: Introduction to the fastapi python framework
+      author_link: https://dev.to/errietta
+      author: Errieta Kostala
+    - link: http://nickc1.github.io/api,/scikit-learn/2019/01/10/scikit-fastapi.html
+      title: "FastAPI and Scikit-Learn: Easily Deploy Models"
+      author_link: http://nickc1.github.io/
+      author: Nick Cortale
+    - link: https://medium.com/data-rebels/fastapi-authentication-revisited-enabling-api-key-authentication-122dc5975680
+      title: "FastAPI authentication revisited: Enabling API key authentication"
+      author_link: https://medium.com/@nilsdebruin
+      author: Nils de Bruin
+    - link: https://medium.com/@nico.axtmann95/deploying-a-scikit-learn-model-with-onnx-und-fastapi-1af398268915
+      title: Deploying a scikit-learn model with ONNX and FastAPI
+      author_link: https://www.linkedin.com/in/nico-axtmann
+      author: Nico Axtmann
+    - link: https://geekflare.com/python-asynchronous-web-frameworks/
+      title: Top 5 Asynchronous Web Frameworks for Python
+      author_link: https://geekflare.com/author/ankush/
+      author: Ankush Thakur
+    - link: https://medium.com/@gntrm/jwt-authentication-with-fastapi-and-aws-cognito-1333f7f2729e
+      title: JWT Authentication with FastAPI and AWS Cognito
+      author_link: https://twitter.com/gntrm
+      author: Johannes Gontrum
+    - link: https://towardsdatascience.com/how-to-deploy-a-machine-learning-model-dc51200fe8cf
+      title: How to Deploy a Machine Learning Model
+      author_link: https://www.linkedin.com/in/mgrootendorst/
+      author: Maarten Grootendorst
+    - link: https://eng.uber.com/ludwig-v0-2/
+      title: "Uber: Ludwig v0.2 Adds New Features and Other Improvements to its Deep Learning Toolbox [including a FastAPI server]"
+      author_link: https://eng.uber.com
+      author: Uber Engineering
+    - link: https://gitlab.com/euri10/fastapi_cheatsheet
+      title: A FastAPI and Swagger UI visual cheatsheet
+      author_link: https://gitlab.com/euri10
+      author: "@euri10"
+    - link: https://medium.com/@mike.p.moritz/using-docker-compose-to-deploy-a-lightweight-python-rest-api-with-a-job-queue-37e6072a209b
+      title: Using Docker Compose to deploy a lightweight Python REST API with a job queue
+      author_link: https://medium.com/@mike.p.moritz
+      author: Mike Moritz
+    - link: https://robwagner.dev/tortoise-fastapi-setup/
+      title: Setting up Tortoise ORM with FastAPI
+      author_link: https://robwagner.dev/
+      author: Rob Wagner
+    - link: https://dev.to/dbanty/why-i-m-leaving-flask-3ki6
+      title: Why I'm Leaving Flask
+      author_link: https://dev.to/dbanty
+      author: Dylan Anthony
+    - link: https://medium.com/python-data/how-to-deploy-tensorflow-2-0-models-as-an-api-service-with-fastapi-docker-128b177e81f3
+      title: How To Deploy Tensorflow 2.0 Models As An API Service With FastAPI & Docker
+      author_link: https://medium.com/@bbrenyah
+      author: Bernard Brenyah
+    - link: https://testdriven.io/blog/fastapi-crud/
+      title: "TestDriven.io: Developing and Testing an Asynchronous API with FastAPI and Pytest"
+      author_link: https://testdriven.io/authors/herman
+      author: Michael Herman
+    - link: https://towardsdatascience.com/deploying-iris-classifications-with-fastapi-and-docker-7c9b83fdec3a
+      title: "Towards Data Science: Deploying Iris Classifications with FastAPI and Docker"
+      author_link: https://towardsdatascience.com/@mandygu
+      author: Mandy Gu
+    - link: https://medium.com/analytics-vidhya/deploy-machine-learning-models-with-keras-fastapi-redis-and-docker-4940df614ece
+      title: Deploy Machine Learning Models with Keras, FastAPI, Redis and Docker
+      author_link: https://medium.com/@shane.soh
+      author: Shane Soh
+    - link: https://medium.com/@arthur393/another-boilerplate-to-fastapi-azure-pipeline-ci-pytest-3c8d9a4be0bb
+      title: "Another Boilerplate to FastAPI: Azure Pipeline CI + Pytest"
+      author_link: https://twitter.com/arthurheinrique
+      author: Arthur Henrique
+    - link: https://iwpnd.pw/articles/2020-01/deploy-fastapi-to-aws-lambda
+      title: How to continuously deploy a FastAPI to AWS Lambda with AWS SAM
+      author_link: https://iwpnd.pw
+      author: Benjamin Ramser
+    - link: https://www.tutlinks.com/create-and-deploy-fastapi-app-to-heroku/
+      title: Create and Deploy FastAPI app to Heroku without using Docker
+      author_link: https://www.linkedin.com/in/navule/
+      author: Navule Pavan Kumar Rao
+    - link: https://iwpnd.pw/articles/2020-03/apache-kafka-fastapi-geostream
+      title: Apache Kafka producer and consumer with FastAPI and aiokafka
+      author_link: https://iwpnd.pw
+      author: Benjamin Ramser
+    - link: https://wuilly.com/2019/10/real-time-notifications-with-python-and-postgres/
+      title: Real-time Notifications with Python and Postgres
+      author_link: https://wuilly.com/
+      author: Guillermo Cruz
+    - link: https://dev.to/paurakhsharma/microservice-in-python-using-fastapi-24cc
+      title: Microservice in Python using FastAPI
+      author_link: https://twitter.com/PaurakhSharma
+      author: Paurakh Sharma Humagain
+    - link: https://dev.to/cuongld2/build-simple-api-service-with-python-fastapi-part-1-581o
+      title: Build simple API service with Python FastAPI — Part 1
+      author_link: https://dev.to/cuongld2
+      author: cuongld2
+    - link: https://paulsec.github.io/posts/fastapi_plus_zeit_serverless_fu/
+      title: FastAPI + Zeit.co = 🚀
+      author_link: https://twitter.com/PaulWebSec
+      author: Paul Sec
+    - link: https://dev.to/tiangolo/build-a-web-api-from-scratch-with-fastapi-the-workshop-2ehe
+      title: Build a web API from scratch with FastAPI - the workshop
+      author_link: https://twitter.com/tiangolo
+      author: Sebastián Ramírez (tiangolo)
+    - link: https://www.twilio.com/blog/build-secure-twilio-webhook-python-fastapi
+      title: Build a Secure Twilio Webhook with Python and FastAPI
+      author_link: https://www.twilio.com
+      author: Twilio
+    - link: https://www.stavros.io/posts/fastapi-with-django/
+      title: Using FastAPI with Django
+      author_link: https://twitter.com/Stavros
+      author: Stavros Korokithakis
+    - link: https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072
+      title: Introducing Dispatch
+      author_link: https://netflixtechblog.com/
+      author: Netflix
+    - link: https://davidefiocco.github.io/2020/06/27/streamlit-fastapi-ml-serving.html
+      title: Machine learning model serving in Python using FastAPI and streamlit
+      author_link: https://github.com/davidefiocco
+      author: Davide Fiocco
+  japanese:
+    - link: https://qiita.com/mtitg/items/47770e9a562dd150631d
+      title: FastAPI|DB接続してCRUDするPython製APIサーバーを構築
+      author_link: https://qiita.com/mtitg
+      author: "@mtitg"
+    - link: https://qiita.com/ryoryomaru/items/59958ed385b3571d50de
+      title: python製の最新APIフレームワーク FastAPI を触ってみた
+      author_link: https://qiita.com/ryoryomaru
+      author: "@ryoryomaru"
+    - link: https://qiita.com/angel_katayoku/items/0e1f5dbbe62efc612a78
+      title: FastAPIでCORSを回避
+      author_link: https://qiita.com/angel_katayoku
+      author: "@angel_katayoku"
+    - link: https://qiita.com/angel_katayoku/items/4fbc1a4e2b33fa2237d2
+      title: FastAPIをMySQLと接続してDockerで管理してみる
+      author_link: https://qiita.com/angel_katayoku
+      author: "@angel_katayoku"
+    - link: https://qiita.com/angel_katayoku/items/8a458a8952f50b73f420
+      title: FastAPIでPOSTされたJSONのレスポンスbodyを受け取る
+      author_link: https://qiita.com/angel_katayoku
+      author: "@angel_katayoku"
+    - link: https://qiita.com/hikarut/items/b178af2e2440c67c6ac4
+      title: フロントエンド開発者向けのDockerによるPython開発環境構築
+      author_link: https://qiita.com/hikarut
+      author: Hikaru Takahashi
+    - link: https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-environment
+      title: "【第1回】FastAPIチュートリアル: ToDoアプリを作ってみよう【環境構築編】"
+      author_link: https://rightcode.co.jp/author/jun
+      author: ライトコードメディア編集部
+    - link: https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-model-building
+      title: "【第2回】FastAPIチュートリアル: ToDoアプリを作ってみよう【モデル構築編】"
+      author_link: https://rightcode.co.jp/author/jun
+      author: ライトコードメディア編集部
+    - link: https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-authentication-user-registration
+      title: "【第3回】FastAPIチュートリアル: toDoアプリを作ってみよう【認証・ユーザ登録編】"
+      author_link: https://rightcode.co.jp/author/jun
+      author: ライトコードメディア編集部
+    - link: https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-admin-page-improvement
+      title: "【第4回】FastAPIチュートリアル: toDoアプリを作ってみよう【管理者ページ改良編】"
+      author_link: https://rightcode.co.jp/author/jun
+      author: ライトコードメディア編集部
+    - link: https://qiita.com/bee2/items/0ad260ab9835a2087dae
+      title: PythonのWeb frameworkのパフォーマンス比較 (Django, Flask, responder, FastAPI, japronto)
+      author_link: https://qiita.com/bee2
+      author: "@bee2"
+    - link: https://qiita.com/bee2/items/75d9c0d7ba20e7a4a0e9
+      title: "[FastAPI] Python製のASGI Web フレームワーク FastAPIに入門する"
+      author_link: https://qiita.com/bee2
+      author: "@bee2"
+  vietnamese:
+    - link: https://fullstackstation.com/fastapi-trien-khai-bang-docker/
+      title: "FASTAPI: TRIỂN KHAI BẰNG DOCKER"
+      author_link: https://fullstackstation.com/author/figonking/
+      author: Nguyễn Nhân
+  russian:
+    - link: https://habr.com/ru/post/454440/
+      title: "Мелкая питонячая радость #2: Starlette - Солидная примочка – FastAPI"
+      author_link: https://habr.com/ru/users/57uff3r/
+      author: Andrey Korchak
+    - link: https://habr.com/ru/post/478620/
+      title: Почему Вы должны попробовать FastAPI?
+      author_link: https://github.com/prostomarkeloff
+      author: prostomarkeloff
+  german:
+    - link: https://blog.codecentric.de/2019/08/inbetriebnahme-eines-scikit-learn-modells-mit-onnx-und-fastapi/
+      title: Inbetriebnahme eines scikit-learn-Modells mit ONNX und FastAPI
+      author_link: https://twitter.com/_nicoax
+      author: Nico Axtmann
+podcasts:
+  english:
+    - link: https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855
+      title: FastAPI on PythonBytes
+      author_link: https://pythonbytes.fm/
+      author: Python Bytes FM
+    - link: https://www.pythonpodcast.com/fastapi-web-application-framework-episode-259/
+      title: "Build The Next Generation Of Python Web Applications With FastAPI - Episode 259 - interview to Sebastían Ramírez (tiangolo)"
+      author_link: https://www.pythonpodcast.com/
+      author: Podcast.`__init__`
+talks:
+  english:
+    - link: https://www.youtube.com/watch?v=3DLwPcrE5mA
+      title: "PyCon UK 2019: FastAPI from the ground up"
+      author_link: https://twitter.com/chriswithers13
+      author: Chris Withers
+    - link: https://www.youtube.com/watch?v=z9K5pwb0rt8
+      title: "PyConBY 2020: Serve ML models easily with FastAPI"
+      author_link: https://twitter.com/tiangolo
+      author: "Sebastián Ramírez (tiangolo)"
+    - link: https://www.youtube.com/watch?v=PnpTY1f4k2U
+      title: "[VIRTUAL] Py.Amsterdam's flying Software Circus: Intro to FastAPI"
+      author_link: https://twitter.com/tiangolo
+      author: "Sebastián Ramírez (tiangolo)"
index e4ac156a4ccf9cb16cbd4881016f8c61db1f6fee..92c5272600b2e2f6be9542e2961756061d3326a8 100644 (file)
@@ -7,129 +7,72 @@ There are many posts, articles, tools, and projects, related to **FastAPI**.
 Here's an incomplete list of some of them.
 
 !!! tip
-    If you have an article, project, tool, or anything related to **FastAPI** that is not yet listed here, create a <a href="https://github.com/tiangolo/fastapi/edit/master/docs/en/docs/external-links.md" class="external-link" target="_blank">Pull Request adding it</a>.
+    If you have an article, project, tool, or anything related to **FastAPI** that is not yet listed here, create a <a href="https://github.com/tiangolo/fastapi/edit/master/docs/en/data/external-links.yml" class="external-link" target="_blank">Pull Request adding it</a>.
 
 ## Articles
 
 ### English
 
-* <a href="https://medium.com/@williamhayes/fastapi-starlette-debug-vs-prod-5f7561db3a59" class="external-link" target="_blank">FastAPI/Starlette debug vs prod</a> by <a href="https://medium.com/@williamhayes" class="external-link" target="_blank">William Hayes</a>.
+{% if external_links %}
+{% for article in external_links.articles.english %}
 
-* <a href="https://medium.com/data-rebels/fastapi-google-as-an-external-authentication-provider-3a527672cf33" class="external-link" target="_blank">FastAPI — Google as an external authentication provider</a> by <a href="https://medium.com/@nils_29588" class="external-link" target="_blank">Nils de Bruin</a>.
-
-* <a href="https://medium.com/data-rebels/fastapi-how-to-add-basic-and-cookie-authentication-a45c85ef47d3" class="external-link" target="_blank">FastAPI — How to add basic and cookie authentication</a> by <a href="https://medium.com/@nils_29588" class="external-link" target="_blank">Nils de Bruin</a>.
-
-* <a href="https://dev.to/errietta/introduction-to-the-fastapi-python-framework-2n10" class="external-link" target="_blank">Introduction to the fastapi python framework</a> by <a href="https://dev.to/errietta" class="external-link" target="_blank">Errieta Kostala</a>.
-
-* <a href="http://nickc1.github.io/api,/scikit-learn/2019/01/10/scikit-fastapi.html" class="external-link" target="_blank">FastAPI and Scikit-Learn: Easily Deploy Models</a> by <a href="http://nickc1.github.io/" class="external-link" target="_blank">Nick Cortale</a>.
-
-* <a href="https://medium.com/data-rebels/fastapi-authentication-revisited-enabling-api-key-authentication-122dc5975680" class="external-link" target="_blank">FastAPI authentication revisited: Enabling API key authentication</a> by <a href="https://medium.com/@nils_29588" class="external-link" target="_blank">Nils de Bruin</a>.
-
-* <a href="https://medium.com/@nico.axtmann95/deploying-a-scikit-learn-model-with-onnx-und-fastapi-1af398268915" class="external-link" target="_blank">Deploying a scikit-learn model with ONNX and FastAPI</a> by <a href="https://www.linkedin.com/in/nico-axtmann" class="external-link" target="_blank">Nico Axtmann</a>.
-
-* <a href="https://geekflare.com/python-asynchronous-web-frameworks/" class="external-link" target="_blank">Top 5 Asynchronous Web Frameworks for Python</a> by <a href="https://geekflare.com/author/ankush/" class="external-link" target="_blank">Ankush Thakur</a> on <a href="https://geekflare.com" class="external-link" target="_blank">GeekFlare</a>.
-
-* <a href="https://medium.com/@gntrm/jwt-authentication-with-fastapi-and-aws-cognito-1333f7f2729e" class="external-link" target="_blank">JWT Authentication with FastAPI and AWS Cognito</a> by <a href="https://twitter.com/gntrm" class="external-link" target="_blank">Johannes Gontrum</a>.
-
-* <a href="https://towardsdatascience.com/how-to-deploy-a-machine-learning-model-dc51200fe8cf" class="external-link" target="_blank">How to Deploy a Machine Learning Model</a> by <a href="https://www.linkedin.com/in/mgrootendorst/" class="external-link" target="_blank">Maarten Grootendorst</a> on <a href="https://towardsdatascience.com/" class="external-link" target="_blank">Towards Data Science</a>.
-
-* [Uber: Ludwig v0.2 Adds New Features and Other Improvements to its Deep Learning Toolbox [including a FastAPI server]](https://eng.uber.com/ludwig-v0-2/){.external-link target=_blank} on <a href="https://eng.uber.com" class="external-link" target="_blank">Uber Engineering</a>.
-
-* <a href="https://gitlab.com/euri10/fastapi_cheatsheet" class="external-link" target="_blank">A FastAPI and Swagger UI visual cheatsheet</a> by <a href="https://gitlab.com/euri10" class="external-link" target="_blank">@euri10</a>
-
-* <a href="https://medium.com/@mike.p.moritz/using-docker-compose-to-deploy-a-lightweight-python-rest-api-with-a-job-queue-37e6072a209b" class="external-link" target="_blank">Using Docker Compose to deploy a lightweight Python REST API with a job queue</a> by <a href="https://medium.com/@mike.p.moritz" class="external-link" target="_blank">Mike Moritz</a>.
-
-* <a href="https://robwagner.dev/tortoise-fastapi-setup/" class="external-link" target="_blank">Setting up Tortoise ORM with FastAPI</a> by <a href="https://robwagner.dev/" class="external-link" target="_blank">Rob Wagner</a>.
-
-* <a href="https://dev.to/dbanty/why-i-m-leaving-flask-3ki6" class="external-link" target="_blank">Why I'm Leaving Flask</a> by <a href="https://dev.to/dbanty" class="external-link" target="_blank">Dylan Anthony</a>.
-
-* <a href="https://medium.com/python-data/how-to-deploy-tensorflow-2-0-models-as-an-api-service-with-fastapi-docker-128b177e81f3" class="external-link" target="_blank">How To Deploy Tensorflow 2.0 Models As An API Service With FastAPI & Docker</a> by <a href="https://medium.com/@bbrenyah" class="external-link" target="_blank">Bernard Brenyah</a>.
-
-* <a href="https://testdriven.io/blog/fastapi-crud/" class="external-link" target="_blank">TestDriven.io: Developing and Testing an Asynchronous API with FastAPI and Pytest</a> by <a href="https://testdriven.io/authors/herman/" class="external-link" target="_blank">Michael Herman</a>.
-
-* <a href="https://towardsdatascience.com/deploying-iris-classifications-with-fastapi-and-docker-7c9b83fdec3a" class="external-link" target="_blank">Towards Data Science: Deploying Iris Classifications with FastAPI and Docker</a> by <a href="https://towardsdatascience.com/@mandygu" class="external-link" target="_blank">Mandy Gu</a>.
-
-* <a href="https://medium.com/analytics-vidhya/deploy-machine-learning-models-with-keras-fastapi-redis-and-docker-4940df614ece" class="external-link" target="_blank">Deploy Machine Learning Models with Keras, FastAPI, Redis and Docker</a> by <a href="https://medium.com/@shane.soh" class="external-link" target="_blank">Shane Soh</a>.
-
-* <a href="https://medium.com/@arthur393/another-boilerplate-to-fastapi-azure-pipeline-ci-pytest-3c8d9a4be0bb" class="external-link" target="_blank">Another Boilerplate to FastAPI: Azure Pipeline CI + Pytest</a> by <a href="https://twitter.com/arthurheinrique" class="external-link" target="_blank">Arthur Henrique</a>.
-
-* <a href="https://iwpnd.pw/articles/2020-01/deploy-fastapi-to-aws-lambda" class="external-link" target="_blank">How to continuously deploy a FastAPI to AWS Lambda with AWS SAM</a> by <a href="https://iwpnd.pw" class="external-link" target="_blank">Benjamin Ramser</a>.
-
-* <a href="https://www.tutlinks.com/create-and-deploy-fastapi-app-to-heroku/" class="external-link" target="_blank">Create and Deploy FastAPI app to Heroku without using Docker</a> by <a href="https://www.linkedin.com/in/navule/" class="external-link" target="_blank">Navule Pavan Kumar Rao</a>.
-
-* <a href="https://iwpnd.pw/articles/2020-03/apache-kafka-fastapi-geostream" class="external-link" target="_blank">Apache Kafka producer and consumer with FastAPI and aiokafka</a> by <a href="https://iwpnd.pw" class="external-link" target="_blank">Benjamin Ramser</a>.
-
-* <a href="https://wuilly.com/2019/10/real-time-notifications-with-python-and-postgres/" class="external-link" target="_blank">Real-time Notifications with Python and Postgres</a> by <a href="https://wuilly.com/" class="external-link" target="_blank">Guillermo Cruz</a>.
-
-* <a href="https://dev.to/paurakhsharma/microservice-in-python-using-fastapi-24cc" class="external-link" target="_blank">Microservice in Python using FastAPI</a> by <a href="https://twitter.com/PaurakhSharma" class="external-link" target="_blank">Paurakh Sharma Humagain</a>.
-
-* <a href="https://dev.to/cuongld2/build-simple-api-service-with-python-fastapi-part-1-581o" class="external-link" target="_blank">Build simple API service with Python FastAPI — Part 1</a> by <a href="https://dev.to/cuongld2" class="external-link" target="_blank">cuongld2</a>.
-
-* <a href="https://paulsec.github.io/posts/fastapi_plus_zeit_serverless_fu/" class="external-link" target="_blank">FastAPI + Zeit.co = 🚀
-</a> by <a href="https://twitter.com/PaulWebSec" class="external-link" target="_blank">Paul Sec</a>.
-
-* <a href="https://dev.to/tiangolo/build-a-web-api-from-scratch-with-fastapi-the-workshop-2ehe" class="external-link" target="_blank">Build a web API from scratch with FastAPI - the workshop</a> by <a href="https://twitter.com/tiangolo" class="external-link" target="_blank">Sebastián Ramírez (tiangolo)</a>.
-
-* <a href="https://www.twilio.com/blog/build-secure-twilio-webhook-python-fastapi" class="external-link" target="_blank">Build a Secure Twilio Webhook with Python and FastAPI</a> by <a href="https://www.twilio.com" class="external-link" target="_blank">Twilio</a>.
-
-* <a href="https://www.stavros.io/posts/fastapi-with-django/" class="external-link" target="_blank">Using FastAPI with Django</a> by <a href="https://twitter.com/Stavros" class="external-link" target="_blank">Stavros Korokithakis</a>.
-
-* <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" class="external-link" target="_blank">Introducing Dispatch</a> by <a href="https://netflixtechblog.com/" class="external-link" target="_blank">Netflix</a>.
-
-* <a href="https://davidefiocco.github.io/2020/06/27/streamlit-fastapi-ml-serving.html" class="external-link" target="_blank">Machine learning model serving in Python using FastAPI and streamlit</a> by <a href="https://github.com/davidefiocco" class="external-link" target="_blank">Davide Fiocco</a>.
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ### Japanese
 
-* <a href="https://qiita.com/mtitg/items/47770e9a562dd150631d" class="external-link" target="_blank">FastAPI|DB接続してCRUDするPython製APIサーバーを構築</a> by <a href="https://qiita.com/mtitg" class="external-link" target="_blank">@mtitg</a>.
-
-* <a href="https://qiita.com/ryoryomaru/items/59958ed385b3571d50de" class="external-link" target="_blank">python製の最新APIフレームワーク FastAPI を触ってみた</a> by <a href="https://qiita.com/ryoryomaru" class="external-link" target="_blank">@ryoryomaru</a>.
-
-* <a href="https://qiita.com/angel_katayoku/items/0e1f5dbbe62efc612a78" class="external-link" target="_blank">FastAPIでCORSを回避</a> by <a href="https://qiita.com/angel_katayoku" class="external-link" target="_blank">@angel_katayoku</a>.
-
-* <a href="https://qiita.com/angel_katayoku/items/4fbc1a4e2b33fa2237d2" class="external-link" target="_blank">FastAPIをMySQLと接続してDockerで管理してみる</a> by <a href="https://qiita.com/angel_katayoku" class="external-link" target="_blank">@angel_katayoku</a>.
+{% if external_links %}
+{% for article in external_links.articles.japanese %}
 
-* <a href="https://qiita.com/angel_katayoku/items/8a458a8952f50b73f420" class="external-link" target="_blank">FastAPIでPOSTされたJSONのレスポンスbodyを受け取る</a> by <a href="https://qiita.com/angel_katayoku" class="external-link" target="_blank">@angel_katayoku</a>.
-
-* <a href="https://qiita.com/hikarut/items/b178af2e2440c67c6ac4" class="external-link" target="_blank">フロントエンド開発者向けのDockerによるPython開発環境構築</a> by <a href="https://qiita.com/hikarut" class="external-link" target="_blank">Hikaru Takahashi</a>.
-
-* <a href="https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-environment" class="external-link" target="_blank">【第1回】FastAPIチュートリアル: ToDoアプリを作ってみよう【環境構築編】</a> by <a href="https://rightcode.co.jp/author/jun" class="external-link" target="_blank">ライトコードメディア編集部</a>
-
-* <a href="https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-model-building" class="external-link" target="_blank">【第2回】FastAPIチュートリアル: ToDoアプリを作ってみよう【モデル構築編】</a> by <a href="https://rightcode.co.jp/author/jun" class="external-link" target="_blank">ライトコードメディア編集部</a>
-
-* <a href="https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-authentication-user-registration" class="external-link" target="_blank">【第3回】FastAPIチュートリアル: toDoアプリを作ってみよう【認証・ユーザ登録編】</a> by <a href="https://rightcode.co.jp/author/jun" class="external-link" target="_blank">ライトコードメディア編集部</a>
-
-* <a href="https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-admin-page-improvement" class="external-link" target="_blank">【第4回】FastAPIチュートリアル: toDoアプリを作ってみよう【管理者ページ改良編】</a> by <a href="https://rightcode.co.jp/author/jun" class="external-link" target="_blank">ライトコードメディア編集部</a>
-
-* <a href="https://qiita.com/bee2/items/0ad260ab9835a2087dae" class="external-link" target="_blank">PythonのWeb frameworkのパフォーマンス比較 (Django, Flask, responder, FastAPI, japronto)</a> by <a href="https://qiita.com/bee2" class="external-link" target="_blank">@bee2</a>.
-
-* <a href="https://qiita.com/bee2/items/75d9c0d7ba20e7a4a0e9" class="external-link" target="_blank">[FastAPI] Python製のASGI Web フレームワーク FastAPIに入門する</a> by <a href="https://qiita.com/bee2" class="external-link" target="_blank">@bee2</a>.
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ### Vietnamese
 
-* <a href="https://fullstackstation.com/fastapi-trien-khai-bang-docker/" class="external-link" target="_blank">FASTAPI: TRIỂN KHAI BẰNG DOCKER</a> by <a href="https://fullstackstation.com/author/figonking/" class="external-link" target="_blank">Nguyễn Nhân</a>.
+{% if external_links %}
+{% for article in external_links.articles.vietnamese %}
+
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ### Russian
 
-* <a href="https://habr.com/ru/post/454440/" class="external-link" target="_blank">Мелкая питонячая радость #2: Starlette - Солидная примочка – FastAPI</a> by <a href="https://habr.com/ru/users/57uff3r/" class="external-link" target="_blank">Andrey Korchak</a>.
+{% if external_links %}
+{% for article in external_links.articles.russian %}
 
-* <a href="https://habr.com/ru/post/478620/" class="external-link" target="_blank">Почему Вы должны попробовать FastAPI?</a> by <a href="https://github.com/prostomarkeloff" class="external-link" target="_blank">prostomarkeloff</a>.
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ### German
 
-* <a href="https://blog.codecentric.de/2019/08/inbetriebnahme-eines-scikit-learn-modells-mit-onnx-und-fastapi/" class="external-link" target="_blank">Inbetriebnahme eines scikit-learn-Modells mit ONNX und FastAPI</a> by <a href="https://twitter.com/_nicoax" class="external-link" target="_blank">Nico Axtmann</a>.
+{% if external_links %}
+{% for article in external_links.articles.german %}
+
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ## Podcasts
 
-* <a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" class="external-link" target="_blank">FastAPI on PythonBytes</a> by <a href="https://pythonbytes.fm/" class="external-link" target="_blank">Python Bytes FM</a>.
-* <a href="https://www.pythonpodcast.com/fastapi-web-application-framework-episode-259/" class="external-link" target="_blank">Build The Next Generation Of Python Web Applications With FastAPI - Episode 259 - interview to Sebastían Ramírez (tiangolo)</a> by <a href="https://www.pythonpodcast.com/" class="external-link" target="_blank">Podcast.`__init__`</a>.
+{% if external_links %}
+{% for article in external_links.podcasts.english %}
 
-## Talks
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
-* <a href="https://www.youtube.com/watch?v=3DLwPcrE5mA" class="external-link" target="_blank">PyCon UK 2019: FastAPI from the ground up</a> by <a href="https://twitter.com/chriswithers13" class="external-link" target="_blank">Chris Withers</a>.
+## Talks
 
-* <a href="https://www.youtube.com/watch?v=z9K5pwb0rt8" class="external-link" target="_blank">PyConBY 2020: Serve ML models easily with FastAPI</a> by <a href="https://twitter.com/tiangolo" class="external-link" target="_blank">Sebastián Ramírez (tiangolo)</a>.
+{% if external_links %}
+{% for article in external_links.talks.english %}
 
-* <a href="https://www.youtube.com/watch?v=PnpTY1f4k2U" class="external-link" target="_blank">[VIRTUAL] Py.Amsterdam's flying Software Circus: Intro to FastAPI</a> by <a href="https://twitter.com/tiangolo" class="external-link" target="_blank">Sebastián Ramírez (tiangolo)</a>.
+* <a href="{{ article.link }}" class="external-link" target="_blank">{{ article.title }}</a> by <a href="{{ article.author_link }}" class="external-link" target="_blank">{{ article.author }}</a>.
+{% endfor %}
+{% endif %}
 
 ## Projects
 
index 62aa7dbe835b539969d8a064ed4380e8a68777ae..c1977529996e58f8de1b1cba5f302db12117fdb9 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index fe0e9a76755391037c7e21980a82d179d03e4aa0..7bd05d5dc2a546057dfeaa0847f64382300a9ed8 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index 0341f88a931aae75dc2b5af54c714e059f2090a9..ea0ce9e696846367abd1a75ea45fb6dd6073d7e2 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index 6c215b00d16156fb3e9337db438615cb02c755c2..96291e52066c59ef7866bb448ae530b15ca85cf4 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index d5035939715fa9c06b7e193f8722c0e623340e0e..a47755c9b6b7948d0fc7f539442ad25de080ab01 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index dbf5c86e41cc6001f5dd7e43b45f52edfc6e4121..78a11b7c669ea0acfdcc4b11c2d922dc4bfe0f79 100644 (file)
@@ -17,6 +17,9 @@ edit_uri: ''
 google_analytics:
 - UA-133183413-1
 - auto
+plugins:
+- markdownextradata:
+    data: data
 nav:
 - FastAPI: index.md
 - Languages:
index 604862a2a62e5c59eb751058d84779de338a349e..7af31e2e75466b11d5b46953f8f025a0aa50ed3d 100644 (file)
@@ -64,6 +64,7 @@ doc = [
     "mkdocs >=1.1.2,<2.0.0",
     "mkdocs-material >=5.4.0,<6.0.0",
     "markdown-include >=0.5.1,<0.6.0",
+    "mkdocs-markdownextradata-plugin >=0.1.7,<0.2.0",
     "typer >=0.3.0,<0.4.0",
     "typer-cli >=0.0.9,<0.0.10",
     "pyyaml >=5.3.1,<6.0.0"
index 33297dd8f7a81f9442ed0d1e99f5a01e51da97b1..aaf53bf64982e02d4f59f91002e35edb49c10b1c 100644 (file)
@@ -132,6 +132,7 @@ def build_lang(
         dist_path: Path = site_path / lang
     shutil.rmtree(build_lang_path, ignore_errors=True)
     shutil.copytree(lang_path, build_lang_path)
+    shutil.copytree(en_docs_path / "data", build_lang_path / "data")
     en_config_path: Path = en_lang_path / mkdocs_name
     en_config: dict = mkdocs.utils.yaml_load(en_config_path.read_text(encoding="utf-8"))
     nav = en_config["nav"]
@@ -211,6 +212,12 @@ def build_all():
     shutil.copyfile(en_index, "README.md")
 
 
+def update_single_lang(lang: str):
+    lang_path = docs_path / lang
+    typer.echo(f"Updating {lang_path.name}")
+    update_config(lang_path.name)
+
+
 @app.command()
 def update_languages(
     lang: str = typer.Argument(
@@ -226,11 +233,9 @@ def update_languages(
     if lang is None:
         for lang_path in get_lang_paths():
             if lang_path.is_dir():
-                typer.echo(f"Updating {lang_path.name}")
-                update_config(lang_path.name)
+                update_single_lang(lang_path.name)
     else:
-        typer.echo(f"Updating {lang}")
-        update_config(lang)
+        update_single_lang(lang)
 
 
 @app.command()