猴子修补第三方库

时间:2019-07-15 17:28:54

标签: python debugging monkeypatching

我正在使用minio客户端并出现以下错误:

minio.error.InvalidEndpointError: InvalidEndpointError: message: Hostname does not meet URL standards.

这是由于minio.helpers:281函数is_valid_endpoint(endpoint)中的正则表达式不正确引起的

上游问题尚未解决,我想学习在导入Minio对象时如何用f = lambda: True对此进行修补。

from minio import Minio

# credentials['S3_ENDPOINT_URL'] = 'something.westeurope.azurecontainer.io'

minio_client = Minio(credentials['S3_ENDPOINT_URL'],
                     access_key=credentials['S3_ACCESS_KEY'],
                     secret_key=credentials['S3_SECRET_KEY'],
                     secure=USE_SSL)

有人可以启发我如何猴子修补吗?我只将其用于函数定义,而以前未用于类。

1 个答案:

答案 0 :(得分:0)

因此,对于猴子补丁,您只需替换该功能

首先定义一个始终返回true的函数:

def is_valid_replacer(endpoint):
    return True

然后只需替换功能

import minio
minio.helpers.is_valid_endpoint = is_valid_replacer
#### Your code here ####

如果我了解您,这应该可以解决。