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
« 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
6from ..typing import VariableLikeType
7from .cpp_classes import DataArray, Dataset, Variable
8from .like import empty_like
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()}
15def copy_for_overwrite(obj: VariableLikeType) -> VariableLikeType:
16 """
17 Copy a Scipp object for overwriting.
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
42class VisibleDeprecationWarning(UserWarning):
43 """Visible deprecation warning.
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 """
50VisibleDeprecationWarning.__module__ = 'scipp'