[BUG] Trino 连接器: 相对验证 CA 路径解析为 CWD,而不是稳定的根目录
错误
当在TrinoConnectionInfo.kwargs ' (例如核查:certs/ca-chain.pem ' )中为验证'SSL kwarg提供相对路径时,即通过建设-trino-connection kwargs'-适用-trino-sl-overrides'-trino.dbapi.connection()'-`请求 ' 。
请求 ' 图书馆解决了相对路径与os.getcwd ()'的对照。 这意味着CA捆绑只有在过程恰好从项目根开始时才会被找到. 如果应用程序是从不同的工作目录(例如作为另一个服务的子进程,从一个IDE,或一个CI transer)启动的,即使文件存在于预期的相对位置,但连接失败了证书出错.
何处
`wren/connector/trino.py' – QQapply trino sl overrides ()' 已经将弦值如‘'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
□ 预期行为
相对的核实'路径应在传递到trino.dbapi.connect()'之前解决到绝对路径,因此,不论该过程目前的工作目录如何,SSL的核查都是有效的。
□ 建议修正
在QQapply trino sl overrides中,在胁迫之后,用“路径”解决相对路径。 路径 :
从 pathlib 导入路径
def apply trino ssl overrides(连接 kwargs: dict) - > dict:
如果连接 kwargs 中的“ 验证” :
被强制= (帮助)
如果被胁迫不是无:
解决相对的 CA 路径,让他们不依赖 CWD
如果存在(强制,str)而不是路径(强制)。is absolute():
被胁迫=str(Path(被胁迫).resolve ())
连接 kwargs ["验证"]=被胁迫
# 其余功能不变或者,接受一个可选的root-path'参数来解决问题,这样可以让呼叫者锁定项目根,而不是依赖Path.resolve ()'(它仍然依赖于CWD)。
□再现.
[Python] 导入 Os os.chdir ("/tmp") # 任何不属于工程根的目录
来自 Wren 导入数据源, WrenEngine
有验证的配置 : "certs/my-ca.pem" (相对路径)
连接失败—— 请求寻找 /tmp/ certs/my- ca. pem
□ 环境
- 扳手0.14.0 (英语:
- Python 3.14 (英语).
- macOS / Linux (英语)内容来源: Canner/WrenAI