跳转到主要内容

在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 查看哈希值)

上传时间 Python 3

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面