Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
MMCV
Commits
6e8d925e
"docs/zh_cn/git@developer.sourcefind.cn:OpenDAS/mmcv.git" did not exist on "834d5978dfbbb9e6797a4524e4de37f3d3de6cd6"
Commit
6e8d925e
authored
Oct 04, 2018
by
Kai Chen
Browse files
add a class decorator to register file handlers
parent
d796c13b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
6 deletions
+27
-6
mmcv/fileio/io.py
mmcv/fileio/io.py
+12
-1
tests/test_fileio.py
tests/test_fileio.py
+15
-5
No files found.
mmcv/fileio/io.py
View file @
6e8d925e
import
functools
from
.handlers
import
BaseFileHandler
,
JsonHandler
,
PickleHandler
,
YamlHandler
from
.handlers
import
BaseFileHandler
,
JsonHandler
,
PickleHandler
,
YamlHandler
from
..utils
import
is_str
,
is_list_of
from
..utils
import
is_str
,
is_list_of
...
@@ -76,7 +78,7 @@ def dump(obj, file=None, file_format=None, **kwargs):
...
@@ -76,7 +78,7 @@ def dump(obj, file=None, file_format=None, **kwargs):
raise
TypeError
(
'"file" must be a filename str or a file-object'
)
raise
TypeError
(
'"file" must be a filename str or a file-object'
)
def
register_handler
(
handler
,
file_formats
):
def
_
register_handler
(
handler
,
file_formats
):
"""Register a handler for some file extensions.
"""Register a handler for some file extensions.
Args:
Args:
...
@@ -94,3 +96,12 @@ def register_handler(handler, file_formats):
...
@@ -94,3 +96,12 @@ def register_handler(handler, file_formats):
raise
TypeError
(
'file_formats must be a str or a list of str'
)
raise
TypeError
(
'file_formats must be a str or a list of str'
)
for
ext
in
file_formats
:
for
ext
in
file_formats
:
file_handlers
[
ext
]
=
handler
file_handlers
[
ext
]
=
handler
def
register_handler
(
file_formats
,
**
kwargs
):
def
wrap
(
cls
):
_register_handler
(
cls
(
**
kwargs
),
file_formats
)
return
cls
return
wrap
tests/test_fileio.py
View file @
6e8d925e
...
@@ -83,7 +83,8 @@ def test_exception():
...
@@ -83,7 +83,8 @@ def test_exception():
def
test_register_handler
():
def
test_register_handler
():
class
TxtHandler
(
mmcv
.
BaseFileHandler
):
@
mmcv
.
register_handler
(
'txt'
)
class
TxtHandler1
(
mmcv
.
BaseFileHandler
):
def
load_from_fileobj
(
self
,
file
):
def
load_from_fileobj
(
self
,
file
):
return
file
.
read
()
return
file
.
read
()
...
@@ -94,9 +95,18 @@ def test_register_handler():
...
@@ -94,9 +95,18 @@ def test_register_handler():
def
dump_to_str
(
self
,
obj
,
**
kwargs
):
def
dump_to_str
(
self
,
obj
,
**
kwargs
):
return
str
(
obj
)
return
str
(
obj
)
txt_handler
=
TxtHandler
()
@
mmcv
.
register_handler
([
'txt1'
,
'txt2'
])
mmcv
.
register_handler
(
txt_handler
,
'txt'
)
class
TxtHandler2
(
mmcv
.
BaseFileHandler
):
mmcv
.
register_handler
(
txt_handler
,
[
'txt1'
,
'txt2'
])
def
load_from_fileobj
(
self
,
file
):
return
file
.
read
()
def
dump_to_fileobj
(
self
,
obj
,
file
):
file
.
write
(
'
\n
'
)
file
.
write
(
str
(
obj
))
def
dump_to_str
(
self
,
obj
,
**
kwargs
):
return
str
(
obj
)
content
=
mmcv
.
load
(
osp
.
join
(
osp
.
dirname
(
__file__
),
'data/filelist.txt'
))
content
=
mmcv
.
load
(
osp
.
join
(
osp
.
dirname
(
__file__
),
'data/filelist.txt'
))
assert
content
==
'1.jpg
\n
2.jpg
\n
3.jpg
\n
4.jpg
\n
5.jpg'
assert
content
==
'1.jpg
\n
2.jpg
\n
3.jpg
\n
4.jpg
\n
5.jpg'
...
@@ -105,7 +115,7 @@ def test_register_handler():
...
@@ -105,7 +115,7 @@ def test_register_handler():
with
open
(
tmp_filename
,
'r'
)
as
f
:
with
open
(
tmp_filename
,
'r'
)
as
f
:
written
=
f
.
read
()
written
=
f
.
read
()
os
.
remove
(
tmp_filename
)
os
.
remove
(
tmp_filename
)
assert
written
==
content
assert
written
==
'
\n
'
+
content
def
test_list_from_file
():
def
test_list_from_file
():
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment