From 41a49d350e45a0e2ce1879eb379bcf8337567827 Mon Sep 17 00:00:00 2001 From: Christopher Field Date: Sat, 16 Aug 2025 12:50:50 -0400 Subject: [PATCH 1/5] Change to use importlib_resources See --- detectron2/model_zoo/model_zoo.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/detectron2/model_zoo/model_zoo.py b/detectron2/model_zoo/model_zoo.py index 4e80ffd48f..3d82035f78 100644 --- a/detectron2/model_zoo/model_zoo.py +++ b/detectron2/model_zoo/model_zoo.py @@ -1,12 +1,13 @@ # Copyright (c) Facebook, Inc. and its affiliates. + +import importlib_resources import os -from typing import Optional -import pkg_resources import torch from detectron2.checkpoint import DetectionCheckpointer from detectron2.config import CfgNode, LazyConfig, get_cfg, instantiate from detectron2.modeling import build_model +from typing import Optional class _ModelZooUrls: @@ -136,8 +137,8 @@ def get_config_file(config_path): Returns: str: the real path to the config file. """ - cfg_file = pkg_resources.resource_filename( - "detectron2.model_zoo", os.path.join("configs", config_path) + cfg_file = importlib_resources.as_file( + importlib_resources.files("detectron2.model_zoo") / os.path.join("configs", config_path) ) if not os.path.exists(cfg_file): raise RuntimeError("{} not available in Model Zoo!".format(config_path)) From 6f2c666d453615364b7180308ae75ea23f6ce05c Mon Sep 17 00:00:00 2001 From: Christopher Field Date: Sat, 16 Aug 2025 12:51:46 -0400 Subject: [PATCH 2/5] Add environment to ignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 9953d9b49b..c1abaf794a 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,8 @@ model_ts*.txt .idea .vscode _darcs +.venv +.envrc # project dirs /detectron2/model_zoo/configs From cf4855742cf7a60f258111a6bf644ccce6660165 Mon Sep 17 00:00:00 2001 From: Christopher Field Date: Sat, 16 Aug 2025 12:52:29 -0400 Subject: [PATCH 3/5] Change to importlib_resources --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f127d7ba05..62ebded5e5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,7 +6,7 @@ known_standard_library=numpy,setuptools,mock skip=./datasets,docs skip_glob=*/__init__.py,**/configs/**,**/tests/config/** known_myself=detectron2 -known_third_party=fvcore,matplotlib,cv2,torch,torchvision,PIL,pycocotools,yacs,termcolor,cityscapesscripts,tabulate,tqdm,scipy,lvis,psutil,pkg_resources,caffe2,onnx,panopticapi,black,isort,av,iopath,omegaconf,hydra,yaml,pydoc,submitit,cloudpickle,packaging,timm,pandas,fairscale,pytorch3d,pytorch_lightning +known_third_party=fvcore,matplotlib,cv2,torch,torchvision,PIL,pycocotools,yacs,termcolor,cityscapesscripts,tabulate,tqdm,scipy,lvis,psutil,importlib_resources,caffe2,onnx,panopticapi,black,isort,av,iopath,omegaconf,hydra,yaml,pydoc,submitit,cloudpickle,packaging,timm,pandas,fairscale,pytorch3d,pytorch_lightning no_lines_before=STDLIB,THIRDPARTY sections=FUTURE,STDLIB,THIRDPARTY,myself,FIRSTPARTY,LOCALFOLDER default_section=FIRSTPARTY From 4a57278210995159cda69bef9fcfba8f3a505f0d Mon Sep 17 00:00:00 2001 From: Christopher Field Date: Sat, 16 Aug 2025 12:55:45 -0400 Subject: [PATCH 4/5] Fix import --- detectron2/model_zoo/model_zoo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detectron2/model_zoo/model_zoo.py b/detectron2/model_zoo/model_zoo.py index 3d82035f78..9e9578a728 100644 --- a/detectron2/model_zoo/model_zoo.py +++ b/detectron2/model_zoo/model_zoo.py @@ -1,12 +1,12 @@ # Copyright (c) Facebook, Inc. and its affiliates. -import importlib_resources import os import torch from detectron2.checkpoint import DetectionCheckpointer from detectron2.config import CfgNode, LazyConfig, get_cfg, instantiate from detectron2.modeling import build_model +from importlib import resources as importlib_resources from typing import Optional From dde20405c97ab71d9f14c2c585cb3834d548ea39 Mon Sep 17 00:00:00 2001 From: Christopher Field Date: Sat, 16 Aug 2025 13:01:30 -0400 Subject: [PATCH 5/5] Fix context usage --- detectron2/model_zoo/model_zoo.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/detectron2/model_zoo/model_zoo.py b/detectron2/model_zoo/model_zoo.py index 9e9578a728..28db8d692e 100644 --- a/detectron2/model_zoo/model_zoo.py +++ b/detectron2/model_zoo/model_zoo.py @@ -1,8 +1,10 @@ # Copyright (c) Facebook, Inc. and its affiliates. +import atexit import os import torch +from contextlib import ExitStack from detectron2.checkpoint import DetectionCheckpointer from detectron2.config import CfgNode, LazyConfig, get_cfg, instantiate from detectron2.modeling import build_model @@ -137,9 +139,10 @@ def get_config_file(config_path): Returns: str: the real path to the config file. """ - cfg_file = importlib_resources.as_file( - importlib_resources.files("detectron2.model_zoo") / os.path.join("configs", config_path) - ) + file_manager = ExitStack() + atexit.register(file_manager.close) + ref = importlib_resources.files("detectron2.model_zoo") / os.path.join("configs", config_path) + cfg_file = file_manager.enter_context(importlib_resources.as_file(ref)) if not os.path.exists(cfg_file): raise RuntimeError("{} not available in Model Zoo!".format(config_path)) return cfg_file