| | |
| | 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()) |
| |
|