Coverage for python/lsst/dax/apdb/scripts/metadata.py: 27%

25 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-11 03:30 -0700

1# This file is part of dax_apdb 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (https://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the GNU General Public License 

20# along with this program. If not, see <https://www.gnu.org/licenses/>. 

21 

22from __future__ import annotations 

23 

24__all__ = ["metadata_delete", "metadata_get", "metadata_set", "metadata_show"] 

25 

26import json 

27import sys 

28 

29from ..apdb import Apdb 

30 

31 

32def metadata_delete(config: str, key: str) -> None: 

33 """Delete metadata key. 

34 

35 Parameters 

36 ---------- 

37 config : `str` 

38 Path or URI of APDB configuration file. 

39 key : `str` 

40 Metadata key. 

41 """ 

42 apdb = Apdb.from_uri(config) 

43 apdb.metadata.delete(key) 

44 

45 

46def metadata_get(config: str, key: str) -> None: 

47 """Print value of the metadata item. 

48 

49 Parameters 

50 ---------- 

51 config : `str` 

52 Path or URI of APDB configuration file. 

53 key : `str` 

54 Metadata key. 

55 """ 

56 apdb = Apdb.from_uri(config) 

57 value = apdb.metadata.get(key) 

58 if value is None: 

59 raise KeyError(f"Metadata key {key!r} does not exist.") 

60 else: 

61 print(value) 

62 

63 

64def metadata_set(config: str, key: str, value: str, force: bool) -> None: 

65 """Add or update metadata item. 

66 

67 Parameters 

68 ---------- 

69 config : `str` 

70 Path or URI of APDB configuration file. 

71 key : `str` 

72 Metadata key. 

73 value : `str` 

74 Metadata value. 

75 force : `bool` 

76 Set to True to allow updates for existing keys. 

77 """ 

78 apdb = Apdb.from_uri(config) 

79 apdb.metadata.set(key, value, force=force) 

80 

81 

82def metadata_show(config: str, use_json: bool) -> None: 

83 """Show contents of APDB metadata table. 

84 

85 Parameters 

86 ---------- 

87 config : `str` 

88 Path or URI of APDB configuration file. 

89 use_json : `bool` 

90 If True dump in JSON format. 

91 """ 

92 apdb = Apdb.from_uri(config) 

93 if use_json: 

94 data = {key: value for key, value in apdb.metadata.items()} 

95 json.dump(data, sys.stdout, indent=2) 

96 print() 

97 else: 

98 for key, value in apdb.metadata.items(): 

99 print(f"{key}: {value}")