| 260 | |
| 261 | @sizeof.register_lazy("xarray") |
| 262 | def register_xarray(): |
| 263 | import sys |
| 264 | |
| 265 | import xarray as xr |
| 266 | |
| 267 | XARRAY_VERSION = Version(xr.__version__) |
| 268 | XARRAY_GE_2024_02 = XARRAY_VERSION >= Version("2024.02.0") |
| 269 | |
| 270 | @sizeof.register(xr.core.utils.Frozen) |
| 271 | def xarray_sizeof_frozen(obj): |
| 272 | return sys.getsizeof(obj) + sizeof(obj.mapping) |
| 273 | |
| 274 | @sizeof.register(xr.DataArray) |
| 275 | @sizeof.register(xr.Variable) |
| 276 | def xarray_sizeof_da(obj): |
| 277 | return sys.getsizeof(obj) + sizeof(obj.data) |
| 278 | |
| 279 | @sizeof.register(xr.Dataset) |
| 280 | def xarray_sizeof_ds(obj): |
| 281 | return sys.getsizeof(obj) + sizeof(obj.variables) |
| 282 | |
| 283 | if XARRAY_GE_2024_02: |
| 284 | xarray_sizeof_da = sizeof.register(xr.NamedArray)(xarray_sizeof_da) |
| 285 | |
| 286 | @sizeof.register(xr.core.indexes.Indexes) |
| 287 | def xarray_sizeof_indexes(obj): |
| 288 | return ( |
| 289 | sys.getsizeof(obj) |
| 290 | + sizeof(obj._index_type) |
| 291 | + sizeof(obj._indexes) |
| 292 | + sizeof(obj._variables) |
| 293 | + sizeof(obj._dims) |
| 294 | ) |
| 295 | |
| 296 | @sizeof.register(xr.core.indexes.PandasIndex) |
| 297 | def xarray_sizeof_pd_index(obj): |
| 298 | return ( |
| 299 | sys.getsizeof(obj) |
| 300 | + sizeof(obj.index) |
| 301 | + sizeof(obj.dim) |
| 302 | + sizeof(obj.coord_dtype) |
| 303 | ) |
| 304 | |
| 305 | |
| 306 | def _register_entry_point_plugins(): |