Coverage for install/scipp/coords/coord.py: 22%

23 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-04-28 01:28 +0000

1# SPDX-License-Identifier: BSD-3-Clause 

2# Copyright (c) 2023 Scipp contributors (https://github.com/scipp) 

3# @author Jan-Lukas Wynen 

4 

5import dataclasses 

6from typing import Optional 

7 

8from ..core import Variable 

9 

10 

11@dataclasses.dataclass 

12class Coord: 

13 dense: Optional[Variable] # for dense variable or bin-coord 

14 event: Optional[Variable] 

15 aligned: bool 

16 usages: int = -1 # negative for unlimited usages 

17 

18 @property 

19 def has_dense(self) -> bool: 

20 return self.dense is not None 

21 

22 @property 

23 def has_event(self) -> bool: 

24 return self.event is not None 

25 

26 def use(self): 

27 if self.usages > 0: 

28 self.usages -= 1 

29 

30 @property 

31 def used_up(self) -> bool: 

32 return self.usages == 0 

33 

34 def has_dim(self, dim: str) -> bool: 

35 return dim in (self.dense.dims if self.has_dense else self.event.dims)