From 7c17ca04054188358b4e11f63c7e34b60940d52b Mon Sep 17 00:00:00 2001 From: matthias plasser Date: Thu, 20 Feb 2025 10:41:35 +0100 Subject: [PATCH] fix ResourceWarning: unclosed file when using telemetry (#8884) --- haystack/telemetry/_environment.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/haystack/telemetry/_environment.py b/haystack/telemetry/_environment.py index bbb024a00..5f01ba795 100644 --- a/haystack/telemetry/_environment.py +++ b/haystack/telemetry/_environment.py @@ -16,6 +16,11 @@ logger = logging.getLogger(__name__) _IS_DOCKER_CACHE = None +def _str_in_any_line_of_file(s: str, path: str) -> bool: + with open(path) as f: + return any(s in line for line in f) + + def _in_podman() -> bool: """ Check if the code is running in a Podman container. @@ -41,7 +46,7 @@ def _has_docker_cgroup_v1() -> bool: This only works with cgroups v1. """ path = "/proc/self/cgroup" # 'self' should be always symlinked to the actual PID - return os.path.isfile(path) and any("docker" in line for line in open(path)) + return os.path.isfile(path) and _str_in_any_line_of_file("docker", path) def _has_docker_cgroup_v2() -> bool: @@ -51,7 +56,7 @@ def _has_docker_cgroup_v2() -> bool: inspired from: https://github.com/jenkinsci/docker-workflow-plugin/blob/master/src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java """ path = "/proc/self/mountinfo" # 'self' should be always symlinked to the actual PID - return os.path.isfile(path) and any("/docker/containers/" in line for line in open(path)) + return os.path.isfile(path) and _str_in_any_line_of_file("/docker/containers/", path) def _is_containerized() -> Optional[bool]: