在Python项目中发现包和类。
项目描述
Deescovery
Deescovery 是一个Python包,用于在启动时查找和初始化Python项目的模块。
- 在Flask项目中查找和注册蓝图。
- 自动初始化Flask扩展。
- 查找所有SQLAlchemy模型以使alembic满意。
- 查找所有FastAPI端点。
- 收集所有Celery任务。
最初设计用于初始化Flask应用程序,但它足够通用,可以与任何微框架或没有框架一起使用。
微框架初始化问题
基于微框架的项目在规模较小时很干净。我见过的每个微框架代码库,在项目初始化时都有混乱。随着时间的推移,create_app()
被填满了临时的设置、函数内的导入和插件初始化。
例如,在官方Flask文档和Flask Mega-Tutorial中提出的“应用程序工厂模式”合法化了这种方法。
create_app()
的本质没有为 开闭原则 留出空间。我们每次添加新的插件、新的蓝图或新的包时都会更新此模块。
# myproject/__init__.py
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
login.init_app(app)
mail.init_app(app)
bootstrap.init_app(app)
moment.init_app(app)
babel.init_app(app)
from myproject.errors import bp as errors_bp
app.register_blueprint(errors_bp)
from myproject.auth import bp as auth_bp
app.register_blueprint(auth_bp, url_prefix='/auth')
return app
一个常见的Flask应用程序。代码基于Flask Mega-Tutorial。
使用 deescovery
,您可以缩短相同的代码,并从实现细节中删除依赖项。
# file: myproject/app.py
from flask import Flask
from deescovery import discover
from deescovery.flask import get_flask_rules
def create_app():
flask_app = Flask(__name__)
flask_app.config.from_object("myproject.config")
discover("myproject", get_flask_rules("myproject", flask_app))
return flask_app
阅读更多
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
deescovery-1.1.0.tar.gz (9.9 kB 查看哈希值)
构建分布
deescovery-1.1.0-py3-none-any.whl (9.0 kB 查看哈希值)