|
1 | 1 | import numpy as np |
2 | 2 | from struct import pack, unpack_from |
3 | 3 |
|
| 4 | +NO_DEFAULT = object() |
| 5 | + |
4 | 6 |
|
5 | 7 | class SparseVector: |
6 | | - def __init__(self, value, dimensions=None, /): |
| 8 | + def __init__(self, value, dimensions=NO_DEFAULT, /): |
7 | 9 | if value.__class__.__module__ == 'scipy.sparse._arrays': |
8 | | - if dimensions is not None: |
| 10 | + if dimensions is not NO_DEFAULT: |
9 | 11 | raise ValueError('dimensions not allowed') |
10 | 12 |
|
11 | 13 | self._from_sparse(value) |
12 | 14 | elif isinstance(value, dict): |
| 15 | + if dimensions is NO_DEFAULT: |
| 16 | + raise ValueError('dimensions required') |
| 17 | + |
13 | 18 | self._from_dict(value, dimensions) |
14 | 19 | else: |
15 | | - if dimensions is not None: |
| 20 | + if dimensions is not NO_DEFAULT: |
16 | 21 | raise ValueError('dimensions not allowed') |
17 | 22 |
|
18 | 23 | self._from_dense(value) |
@@ -56,9 +61,6 @@ def to_binary(self): |
56 | 61 | return pack(f'>iii{nnz}i{nnz}f', self._dim, nnz, 0, *self._indices, *self._values) |
57 | 62 |
|
58 | 63 | def _from_dict(self, d, dim): |
59 | | - if dim is None: |
60 | | - raise ValueError('dimensions required') |
61 | | - |
62 | 64 | elements = [(i, v) for i, v in d.items() if v != 0] |
63 | 65 | elements.sort() |
64 | 66 |
|
|
0 commit comments