扩展 OBBject 功能
OpenBB 提供了一些基本方法来与 OBBject
结果属性中常见的数据结构进行交互。
如果您正在处理自定义数据或添加新端点,您可能希望拥有自己的数据交互方法,OpenBB 平台提供了扩展 OBBject 类的方法。
扩展架构的设计类似于 Pandas 的扩展和访问器,并通过 Poetry 依赖管理包的插件系统实现。
本页面将介绍为 OBBject 类开发简单扩展的步骤。
文件夹结构
example
├── README.md
├── openbb_example
│ └── __init__.py
├── poetry.lock
└── pyproject.toml
编写扩展
在此示例中,扩展代码都位于 __init__.py
中。
首先,我们创建一个 Extension
类实例来告诉 openbb-core
我们的扩展名称以及在 obb.user.credentials
中需要的任何必需凭据。
只有当此扩展使用的数据或服务需要授权时,才需要凭据。 它也可以是数据库连接,或需要传递给扩展的任何其他信息。
from openbb_core.app.model.extension import Extension
ext = Extension(name="example", credentials=["some_api_key"])
然后我们定义扩展的功能。装饰器 @ext.obbject_accessor
在执行命令时返回的每个 OBBject
中注册一个访问器。这个访问器只是一个命名空间,将包含装饰类中定义的方法。
在此示例中,我们只是添加一个打招呼的方法:
@ext.obbject_accessor
class Example:
def __init__(self, obbject):
self._obbject = obbject
def hello(self):
api_key = self._obbject._user_settings.credentials.some_api_key.get_secret_value()
print(f"Hello, this is my credential: {api_key}!")
入口点
pyproject.toml
文件将指定常规的设置和依赖信息。此外,我们需要包含以下块:
[tool.poetry.plugins."openbb_obbject_extension"]
example = "openbb_example:ext"
有了这个文件,我们可以通过在扩展文件夹中运行 poetry install
来安装扩展。
使用扩展
现在扩展已安装并构建,我们可以使用它了!因为我们正在扩展 OBBject
,这将在任何函数上可用:
>>> from openbb import obb
>>> obb.user.credentials.some_api_key = "test"
>>> obbject = obb.equity.price.historical("AAPL")
>>> obbject.example.hello()
Hello, this is my credential: test!
在此示例中,我们添加了 obbject.example 作为扩展,可以直接从我们的 OBBject 使用 .hello() 功能。