Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
csst-pipeline
csst_common
Commits
a9ed279d
Commit
a9ed279d
authored
Oct 10, 2022
by
BO ZHANG
🏀
Browse files
added FileRecorder
parent
aaf0661e
Changes
4
Show whitespace changes
Inline
Side-by-side
csst_common/data_manager.py
View file @
a9ed279d
...
...
@@ -60,7 +60,7 @@ class CsstMsDataManager:
Examples
--------
>>> dm_mbi = CsstM
bi
DataManager(...)
>>> dm_mbi = CsstM
s
DataManager(...)
>>> # access L0 directory
>>> dm_mbi.dir_l0
>>> # access L1 directory
...
...
csst_common/file_recorder.py
0 → 100644
View file @
a9ed279d
from
collections
import
namedtuple
from
astropy
import
table
import
os
File
=
namedtuple
(
"FileRecord"
,
[
"filepath"
,
"db"
,
"comment"
,
"existence"
]
)
class
FileRecorder
(
list
):
"""
File Recorder, inherited from the built-in ``list``.
This recorder is used to record files generated by functional modules.
In principle, a CSST pipeline module should return a status (CsstStatus)
and a file recorder (``FileRecorder``) after it finishes data processing.
Methods
-------
add_record(filepath: str = "", db: bool = False, comment: str = "")
Add a file record, each record is a ``collections.namedtuple``.
Users should provide a file path ``filepath``, whether this file should be
written to database ``db``, a comment ``comment``.
An existence boolean will be attached to check if the file exists.
to_table()
Convert to ``astropy.table.Table``.
pprint(*args, **kwargs)
Use ``astropy.table.Table.pprint`` to print file records in table format.
pprint_all(*args, **kwargs)
Use ``astropy.table.Table.pprint_all`` to print file records in table format.
Examples
--------
>>> fr = FileRecorder()
>>> for i in range(3):
>>> fr.add_record("test{:03d}.txt".format(i), db=True, comment="Test file {:d}".format(i))
>>> fr.pprint_all()
<FileRecorder length=3>
filepath db comment existence
----------- ---- ----------- ---------
test000.txt True Test file 0 False
test001.txt True Test file 1 False
test002.txt True Test file 2 False
>>> fr.pprint_all()
<FileRecorder length=3>
filepath db comment existence
----------- ---- ----------- ---------
test000.txt True Test file 0 False
test001.txt True Test file 1 False
test002.txt True Test file 2 False
"""
def
__init__
(
self
):
super
(
FileRecorder
,
self
).
__init__
()
def
add_record
(
self
,
filepath
:
str
=
""
,
db
:
bool
=
False
,
comment
:
str
=
""
):
existence
=
os
.
path
.
exists
(
filepath
)
assert
isinstance
(
filepath
,
str
)
assert
isinstance
(
db
,
bool
)
assert
isinstance
(
comment
,
str
)
super
().
append
(
File
(
filepath
=
filepath
,
db
=
db
,
comment
=
comment
,
existence
=
existence
))
def
to_table
(
self
):
return
table
.
Table
([
_
.
_asdict
()
for
_
in
self
])
def
__repr__
(
self
):
return
self
.
to_table
().
__repr__
()
def
pprint
(
self
,
*
args
,
**
kwargs
):
return
self
.
to_table
().
pprint
(
*
args
,
**
kwargs
)
def
pprint_all
(
self
,
*
args
,
**
kwargs
):
print
(
"<FileRecorder length={}>"
.
format
(
len
(
self
)))
return
self
.
to_table
().
pprint_all
(
*
args
,
**
kwargs
)
csst_common/top_level_interface.py
View file @
a9ed279d
from
.data_manager
import
CsstMsDataManager
from
.logger
import
get_logger
from
.status
import
CsstStatus
from
.file_recorder
import
FileRecorder
__all__
=
[
"CsstMsDataManager"
,
"get_logger"
]
__all__
=
[
"CsstMsDataManager"
,
"get_logger"
,
"FileRecorder"
]
tests/test_file_recorder.py
0 → 100644
View file @
a9ed279d
"""
Identifier: KSC-SJ4-tests/test_data_manager.py
Name: test_data_manager.py
Description: data manager unit test
Author: Bo Zhang
Created: 2022-09-13
Modified-History:
2022-10-10, Bo Zhang, created
2022-10-10, Bo Zhang, added test for FileRecorder
"""
import
unittest
from
csst_common.file_recorder
import
FileRecorder
,
File
# deprecated in some days
class
TestCsstMbiDataManager
(
unittest
.
TestCase
):
def
setUp
(
self
)
->
None
:
self
.
fr
=
FileRecorder
()
def
test_add_record
(
self
):
self
.
fr
.
add_record
(
filepath
=
"test1"
,
db
=
False
,
comment
=
"the first test"
)
self
.
assertTrue
(
self
.
fr
[
0
]
==
File
(
"test1"
,
db
=
False
,
comment
=
"the first test"
,
existence
=
False
))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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