|
|
| from iopath.common.file_io import HTTPURLHandler, OneDrivePathHandler, PathHandler
|
| from iopath.common.file_io import PathManager as PathManagerBase
|
|
|
| __all__ = ["PathManager", "PathHandler"]
|
|
|
|
|
| PathManager = PathManagerBase()
|
| """
|
| This is a detectron2 project-specific PathManager.
|
| We try to stay away from global PathManager in fvcore as it
|
| introduces potential conflicts among other libraries.
|
| """
|
|
|
|
|
| class Detectron2Handler(PathHandler):
|
| """
|
| Resolve anything that's hosted under detectron2's namespace.
|
| """
|
|
|
| PREFIX = "detectron2://"
|
| S3_DETECTRON2_PREFIX = "https://dl.fbaipublicfiles.com/detectron2/"
|
|
|
| def _get_supported_prefixes(self):
|
| return [self.PREFIX]
|
|
|
| def _get_local_path(self, path, **kwargs):
|
| name = path[len(self.PREFIX) :]
|
| return PathManager.get_local_path(self.S3_DETECTRON2_PREFIX + name, **kwargs)
|
|
|
| def _open(self, path, mode="r", **kwargs):
|
| return PathManager.open(
|
| self.S3_DETECTRON2_PREFIX + path[len(self.PREFIX) :], mode, **kwargs
|
| )
|
|
|
|
|
| PathManager.register_handler(HTTPURLHandler())
|
| PathManager.register_handler(OneDrivePathHandler())
|
| PathManager.register_handler(Detectron2Handler())
|
|
|