Coverage for install/scipp/core/util.py: 0%

17 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 Simon Heybrock 

4from typing import Dict 

5 

6from ..typing import VariableLikeType 

7from .cpp_classes import DataArray, Dataset, Variable 

8from .like import empty_like 

9 

10 

11def _copy_dict_for_overwrite(mapping: Dict[str, Variable]) -> Dict[str, Variable]: 

12 return {name: copy_for_overwrite(var) for name, var in mapping.items()} 

13 

14 

15def copy_for_overwrite(obj: VariableLikeType) -> VariableLikeType: 

16 """ 

17 Copy a Scipp object for overwriting. 

18 

19 Unlike :py:func:`scipp.empty_like` this does not preserve (and share) coord, 

20 mask, and attr values. Instead, those values are not initialized, just like the 

21 data values. 

22 """ 

23 if isinstance(obj, Variable): 

24 return empty_like(obj) 

25 if isinstance(obj, DataArray): 

26 return DataArray( 

27 copy_for_overwrite(obj.data), 

28 coords=_copy_dict_for_overwrite(obj.coords), 

29 masks=_copy_dict_for_overwrite(obj.masks), 

30 attrs=_copy_dict_for_overwrite(obj.attrs), 

31 ) 

32 ds = Dataset(coords=_copy_dict_for_overwrite(obj.coords)) 

33 for name, da in obj.items(): 

34 ds[name] = DataArray( 

35 copy_for_overwrite(da.data), 

36 masks=_copy_dict_for_overwrite(da.masks), 

37 attrs=_copy_dict_for_overwrite(da.attrs), 

38 ) 

39 return ds 

40 

41 

42class VisibleDeprecationWarning(UserWarning): 

43 """Visible deprecation warning. 

44 

45 By default, Python and in particular Jupyter will not show deprecation 

46 warnings, so this class can be used when a very visible warning is helpful. 

47 """ 

48 

49 

50VisibleDeprecationWarning.__module__ = 'scipp'