濒危 Flask 扩展拯救计划
The Endangered Flask Extension Rescue Plan
PyCon China 2023 上海 💊 2023/12/02
## 李辉 / Grey Li - https://greyli.com - Flask 维护者 - APIFlask 维护者 - 代码厨房社区管理员
# Flask ``` $ pip install Flask ``` ``` from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' ``` ``` $ flask run --debug ```
# Flask Extension ``` $ pip install flask-sqlalchemy ``` ``` from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) db = SQLAlchemy(app) ```
## 目录 - The Question - The Story - The Plan
The Question
## 如何拯救濒危 Flask 扩展?
## 如何拯救濒危 Flask 扩展?
## 如何拯救濒危 Flask 扩展?
## Hello AI
## Hello AI
## Hello AI
~~如何拯救濒危 Flask 扩展?~~ 1. 如何拯救一个被遗弃的开源项目? 2. 如何更新一个古老 Python 项目?
### 1. 如何拯救一个被遗弃的开源项目?
## 获得权限 - GitHub - PyPI
##
~~获得权限~~
## 赢得信任
### GitHub Actions for PyPI publish✨
https://docs.pypi.org/trusted-publishers/adding-a-publisher/
``` jobs: pypi-publish: name: upload release to PyPI runs-on: ubuntu-latest # Specifying a GitHub environment is optional, but strongly encouraged environment: release permissions: # IMPORTANT: this permission is mandatory for trusted publishing id-token: write steps: # retrieve your distributions here - name: Publish package distributions to PyPI uses: pypa/gh-action-pypi-publish@release/v1 ```
## Bus Factor
original image: https://medium.com/tech-tajawal/the-bus-factor-6ea1a3ede6bd
## 给维护者的建议 - 至少两个 GitHub 维护者 - 至少两个 PyPI 维护者 - 设置 GitHub Actions for PyPI publish - 设置 GitHub 账户继任者 - 捐赠项目给社区组织(比如 pallets-eco)
## 最后一招:Make a new one
### 2. 如何更新一个古老 Python 项目?
## nose ➡️ pytest
Example: https://github.com/miracle2k/flask-assets/pull/161
## Travis CI ➡️ GitHub Actions
Example: https://github.com/miracle2k/flask-assets/pull/162
## setup.py ➡️ pyproject.toml
https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
``` pip install build python -m build ```
## pyupgrade
https://github.com/asottile/pyupgrade
``` pip install pyupgrade pyupgrade --py36-plus app.py ```
The Story
# 2018
### Flask-Bootstrap 💊 Flask-Bootstrap ➡️ Bootstrap-Flask
# 2020
# 2023
### Flask-Mail 💊 Flask-Mail ➡️ Flask-Mailman
### Flask-Mailman💊
### Flask-Assets 💊
### Flask-DebugToolbar 💊
## 最终成果 - Flask-Bootstrap ➡️ Bootstrap-Flask🔅 - Flask-Mail ➡️ Flask-Mailman🔅 - Flask-DebugToolbar🔆 - Flask-Assets🔅
The Plan
### ✅ 在 PyCon China 2023 做一个演讲《濒危 Flask 扩展拯救计划》
### ✅ Flask Extension Status
https://github.com/greyli/flask-extension-status
### ✅ 代码厨房开源松
https://codekitchen.community/c/song
### ✅ 号召大家加入进来
### ⬜ 推广「GitHub Actions for PyPI publish」
### ⬜ 发布 Flask 扩展开发教程
### PyCon China 2024 见!
Email: withlihui@gmail.com 代码厨房: https://codekitchen.community