lockss-pybasic 0.1.0.dev8__py3-none-any.whl → 0.1.0.dev9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,4 +32,4 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
32
  POSSIBILITY OF SUCH DAMAGE.
33
33
  '''.strip()
34
34
 
35
- __version__ = '0.1.0-dev8'
35
+ __version__ = '0.1.0-dev9'
lockss/pybasic/cliutil.py CHANGED
@@ -116,10 +116,17 @@ class BaseCli(Generic[ModelT], ABC):
116
116
  pass
117
117
 
118
118
 
119
- def exactly_one(values: Dict[str, Any], *names: List[str]):
119
+ def exactly_one(values: Dict[str, Any], *names: str):
120
120
  if (length := len([values[name] for name in names if values[name]])) != 1:
121
121
  raise ValueError(f'exactly one of {', '.join([option_name(name) for name in names])} is required, got {length}')
122
122
  return values
123
123
 
124
+
125
+ def one_or_more(values: Dict[str, Any], *names: str):
126
+ if len([values[name] for name in names if values[name]]) == 0:
127
+ raise ValueError(f'one or more of {', '.join([option_name(name) for name in names])} is required')
128
+ return values
129
+
130
+
124
131
  def option_name(name: str):
125
132
  return f'{('-' if len(name) == 1 else '--')}{name.replace('_', '-')}'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lockss-pybasic
3
- Version: 0.1.0.dev8
3
+ Version: 0.1.0.dev9
4
4
  Summary: Basic Python utilities
5
5
  License: BSD-3-Clause
6
6
  Author: Thib Guicherd-Callin
@@ -0,0 +1,8 @@
1
+ lockss/pybasic/__init__.py,sha256=MaAel7-TVFO5zN84IImEk6K4Ui0UWpVu6PjXC1r9KqI,1645
2
+ lockss/pybasic/cliutil.py,sha256=sj8AYvnmPBIwQP_n3s_AEIesMO7qjDZpzlIwbEECTeU,4199
3
+ lockss/pybasic/errorutil.py,sha256=8MdEaIpbzotsEzTN4hW8_VPEZcVfoti1C-Fueord7JU,1746
4
+ lockss/pybasic/fileutil.py,sha256=FVKP7CXjtC69G9-wJ_3javZt1FO3NCc21o-6w6QNL-Y,2199
5
+ lockss_pybasic-0.1.0.dev9.dist-info/LICENSE,sha256=O9ONND4uDxY_jucI4jZDf2liAk05ScEJaYu-Al7EOdQ,1506
6
+ lockss_pybasic-0.1.0.dev9.dist-info/METADATA,sha256=ERWe_nI3HkmgafUmZT3GOMw0E0yiw6r3_uLTpYWj7Fc,695
7
+ lockss_pybasic-0.1.0.dev9.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
8
+ lockss_pybasic-0.1.0.dev9.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- lockss/pybasic/__init__.py,sha256=S_imeto8t47j8ETAJvdZ2Jl1WMSmdVlzt-0pDzD1SVg,1645
2
- lockss/pybasic/cliutil.py,sha256=z85gaLAn4M4Y3uBQGrJDgvDEmJ51V2M5JP1CzRLExSc,3956
3
- lockss/pybasic/errorutil.py,sha256=8MdEaIpbzotsEzTN4hW8_VPEZcVfoti1C-Fueord7JU,1746
4
- lockss/pybasic/fileutil.py,sha256=FVKP7CXjtC69G9-wJ_3javZt1FO3NCc21o-6w6QNL-Y,2199
5
- lockss_pybasic-0.1.0.dev8.dist-info/LICENSE,sha256=O9ONND4uDxY_jucI4jZDf2liAk05ScEJaYu-Al7EOdQ,1506
6
- lockss_pybasic-0.1.0.dev8.dist-info/METADATA,sha256=23jhPGwyNi4I4OLRc-AggJp0Uq7Rj01FjvI4PP9TYPE,695
7
- lockss_pybasic-0.1.0.dev8.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
8
- lockss_pybasic-0.1.0.dev8.dist-info/RECORD,,