|
1 | 1 | # -*- coding: utf-8 -*- |
2 | 2 | from __future__ import absolute_import, print_function, division |
3 | | -from collections import Mapping |
| 3 | +from collections import MutableMapping |
4 | 4 |
|
5 | 5 |
|
6 | 6 | import numpy as np |
|
18 | 18 | from zarr.meta import decode_group_metadata |
19 | 19 |
|
20 | 20 |
|
21 | | -class Group(Mapping): |
| 21 | +class Group(MutableMapping): |
22 | 22 | """Instantiate a group from an initialized store. |
23 | 23 |
|
24 | 24 | Parameters |
@@ -304,7 +304,7 @@ def __getitem__(self, item): |
304 | 304 | raise KeyError(item) |
305 | 305 |
|
306 | 306 | def __setitem__(self, item, value): |
307 | | - raise TypeError('item assignment not supported') |
| 307 | + self.array(item, value, overwrite=True) |
308 | 308 |
|
309 | 309 | def __delitem__(self, item): |
310 | 310 | return self._write_op(self._delitem_nosync, item) |
@@ -508,10 +508,7 @@ def require_groups(self, *names): |
508 | 508 | """Convenience method to require multiple groups in a single call.""" |
509 | 509 | return tuple(self.require_group(name) for name in names) |
510 | 510 |
|
511 | | - def create_dataset(self, name, data=None, shape=None, chunks=None, |
512 | | - dtype=None, compressor='default', fill_value=0, |
513 | | - order='C', synchronizer=None, filters=None, |
514 | | - overwrite=False, cache_metadata=True, **kwargs): |
| 511 | + def create_dataset(self, name, **kwargs): |
515 | 512 | """Create an array. |
516 | 513 |
|
517 | 514 | Parameters |
@@ -564,43 +561,23 @@ def create_dataset(self, name, data=None, shape=None, chunks=None, |
564 | 561 |
|
565 | 562 | """ # flake8: noqa |
566 | 563 |
|
567 | | - return self._write_op(self._create_dataset_nosync, name, data=data, |
568 | | - shape=shape, chunks=chunks, dtype=dtype, |
569 | | - compressor=compressor, fill_value=fill_value, |
570 | | - order=order, synchronizer=synchronizer, |
571 | | - filters=filters, overwrite=overwrite, |
572 | | - cache_metadata=cache_metadata, **kwargs) |
| 564 | + return self._write_op(self._create_dataset_nosync, name, **kwargs) |
573 | 565 |
|
574 | | - def _create_dataset_nosync(self, name, data=None, shape=None, chunks=None, |
575 | | - dtype=None, compressor='default', |
576 | | - fill_value=0, order='C', synchronizer=None, |
577 | | - filters=None, overwrite=False, |
578 | | - cache_metadata=True, **kwargs): |
| 566 | + def _create_dataset_nosync(self, name, data=None, **kwargs): |
579 | 567 |
|
580 | 568 | path = self._item_path(name) |
581 | 569 |
|
582 | 570 | # determine synchronizer |
583 | | - if synchronizer is None: |
584 | | - synchronizer = self._synchronizer |
| 571 | + kwargs.setdefault('synchronizer', self._synchronizer) |
585 | 572 |
|
586 | 573 | # create array |
587 | | - if data is not None: |
588 | | - a = array(data, chunks=chunks, dtype=dtype, |
589 | | - compressor=compressor, fill_value=fill_value, |
590 | | - order=order, synchronizer=synchronizer, |
591 | | - store=self._store, path=path, |
592 | | - chunk_store=self._chunk_store, filters=filters, |
593 | | - overwrite=overwrite, cache_metadata=cache_metadata, |
594 | | - **kwargs) |
| 574 | + if data is None: |
| 575 | + a = create(store=self._store, path=path, |
| 576 | + chunk_store=self._chunk_store, **kwargs) |
595 | 577 |
|
596 | 578 | else: |
597 | | - a = create(shape=shape, chunks=chunks, dtype=dtype, |
598 | | - compressor=compressor, fill_value=fill_value, |
599 | | - order=order, synchronizer=synchronizer, |
600 | | - store=self._store, path=path, |
601 | | - chunk_store=self._chunk_store, filters=filters, |
602 | | - overwrite=overwrite, cache_metadata=cache_metadata, |
603 | | - **kwargs) |
| 579 | + a = array(data, store=self._store, path=path, |
| 580 | + chunk_store=self._chunk_store, **kwargs) |
604 | 581 |
|
605 | 582 | return a |
606 | 583 |
|
|
0 commit comments