islpy 2025.2.1__cp312-cp312-musllinux_1_2_aarch64.whl → 2025.2.2__cp312-cp312-musllinux_1_2_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
islpy/__init__.py CHANGED
@@ -21,7 +21,7 @@ THE SOFTWARE.
21
21
  """
22
22
 
23
23
  from collections.abc import Collection, Sequence
24
- from typing import Literal, TypeAlias, TypeVar
24
+ from typing import Literal, TypeAlias, TypeVar, cast
25
25
 
26
26
  from islpy.version import VERSION, VERSION_TEXT
27
27
 
@@ -149,44 +149,34 @@ def _get_default_context() -> Context:
149
149
  return DEFAULT_CONTEXT
150
150
 
151
151
 
152
- def _back_to_basic(new_obj, old_obj):
153
- # Work around set_dim_id not being available for Basic{Set,Map}
154
- if isinstance(old_obj, BasicSet) and isinstance(new_obj, Set):
155
- bsets = new_obj.get_basic_sets()
152
+ def _set_dim_id(obj: AlignableT, dt: dim_type, idx: int, id: Id) -> AlignableT:
153
+ if isinstance(obj, BasicSet):
154
+ p, = obj.to_set().set_dim_id(dt, idx, id).get_basic_sets()
155
+ return cast("AlignableT", p)
156
+ elif isinstance(obj, BasicMap):
157
+ p, = obj.to_map().set_dim_id(dt, idx, id).get_basic_maps()
158
+ return cast("AlignableT", p)
156
159
 
157
- if len(bsets) == 0:
158
- bset = BasicSet.universe(new_obj.space).complement()
159
- else:
160
- bset, = bsets
161
-
162
- return bset
163
-
164
- if isinstance(old_obj, BasicMap) and isinstance(new_obj, Map):
165
- bmaps = new_obj.get_basic_maps()
166
-
167
- if len(bmaps) == 0:
168
- bmap = BasicMap.universe(new_obj.space).complement()
169
- else:
170
- bmap, = bmaps
171
-
172
- return bmap
173
-
174
- return new_obj
175
-
176
-
177
- def _set_dim_id(obj, dt, idx, id):
178
- return _back_to_basic(obj.set_dim_id(dt, idx, id), obj)
160
+ return cast("AlignableT", obj.set_dim_id(dt, idx, id))
179
161
 
180
162
 
181
163
  def _align_dim_type(
182
164
  template_dt: dim_type,
183
165
  obj: AlignableT,
184
- template: AlignableT,
166
+ template: Alignable,
185
167
  obj_bigger_ok: bool,
186
168
  obj_names: Collection[str],
187
169
  template_names: Collection[str],
188
170
  ) -> AlignableT:
189
171
 
172
+ # convert to a type that has get_dim_id
173
+ if isinstance(template, BasicSet):
174
+ template = template.to_set()
175
+ elif isinstance(template, BasicMap):
176
+ template = template.to_map()
177
+ elif isinstance(template, Aff):
178
+ template = template.to_pw_aff()
179
+
190
180
  # {{{ deal with Aff, PwAff
191
181
 
192
182
  # The technique below will not work for PwAff et al, because there is *only*
islpy/_isl.pyi CHANGED
@@ -2151,6 +2151,8 @@ class FixedBox:
2151
2151
  class Aff:
2152
2152
  def __init__(self, s: str, context: Context | None = None) -> None: ...
2153
2153
 
2154
+ def to_pw_aff(self) -> PwAff: ...
2155
+
2154
2156
  @staticmethod
2155
2157
  def zero_on_domain_space(space: Space) -> Aff: ...
2156
2158
 
@@ -4931,6 +4933,10 @@ class LocalSpace:
4931
4933
  class BasicSet:
4932
4934
  def __init__(self, s: str, context: Context | None = None) -> None: ...
4933
4935
 
4936
+ def __hash__(self) -> int: ...
4937
+
4938
+ def is_params(self) -> bool: ...
4939
+
4934
4940
  def n_dim(self) -> int: ...
4935
4941
 
4936
4942
  def n_param(self) -> int: ...
@@ -5311,8 +5317,6 @@ class BasicSet:
5311
5317
 
5312
5318
  def involves_locals(self) -> bool: ...
5313
5319
 
5314
- def is_params(self) -> bool: ...
5315
-
5316
5320
  @overload
5317
5321
  def is_strict_subset(self, set2: Set | BasicSet) -> bool: ...
5318
5322
 
@@ -5365,8 +5369,6 @@ class BasicSet:
5365
5369
 
5366
5370
  def plain_is_disjoint(self, set2: Set | BasicSet) -> bool: ...
5367
5371
 
5368
- def __hash__(self) -> int: ...
5369
-
5370
5372
  def n_basic_set(self) -> int: ...
5371
5373
 
5372
5374
  def foreach_basic_set(self, fn: Callable[[BasicSet], None]) -> None: ...
@@ -5504,6 +5506,8 @@ class BasicSet:
5504
5506
  class BasicMap:
5505
5507
  def __init__(self, s: str, context: Context | None = None) -> None: ...
5506
5508
 
5509
+ def __hash__(self) -> int: ...
5510
+
5507
5511
  def to_map(self) -> Map: ...
5508
5512
 
5509
5513
  def total_dim(self) -> int: ...
@@ -6108,8 +6112,6 @@ class BasicMap:
6108
6112
 
6109
6113
  def plain_is_equal(self, map2: Map | BasicMap) -> bool: ...
6110
6114
 
6111
- def __hash__(self) -> int: ...
6112
-
6113
6115
  def n_basic_map(self) -> int: ...
6114
6116
 
6115
6117
  def foreach_basic_map(self, fn: Callable[[BasicMap], None]) -> None: ...
islpy/_monkeypatch.py CHANGED
@@ -551,6 +551,8 @@ def obj_get_var_names(self: HasSpace, dimtype: _isl.dim_type) -> Sequence[str]:
551
551
 
552
552
 
553
553
  def pwaff_get_pieces(self: _isl.PwAff | _isl.Aff) -> list[tuple[_isl.Set, _isl.Aff]]:
554
+ if isinstance(self, _isl.Aff):
555
+ self = self.to_pw_aff()
554
556
  result: list[tuple[_isl.Set, _isl.Aff]] = []
555
557
 
556
558
  def append_tuple(s: _isl.Set, v: _isl.Aff):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: islpy
3
- Version: 2025.2.1
3
+ Version: 2025.2.2
4
4
  Summary: Wrapper around isl, an integer set library
5
5
  Author-Email: Andreas Kloeckner <inform@tiker.net>
6
6
  License-Expression: MIT
@@ -0,0 +1,9 @@
1
+ islpy/__init__.py,sha256=di9XuiCE0E17rYvJF2odx710bD4X07gsKGWDW6oSgH0,13021
2
+ islpy/_isl.cpython-312-aarch64-linux-musl.so,sha256=UDNRE-TofTBgR6dDOqrgYJAZNsmLEGUd7j2uZiEszXo,9380480
3
+ islpy/_isl.pyi,sha256=_QvIK3y21H8sud47dr3bBOfxkSONwZzxV1x09WIxtRQ,260121
4
+ islpy/_monkeypatch.py,sha256=J_EIwyHBinfCo_rBu1V9o1OzG9R3dE34lJ0XIMOJSQ4,31309
5
+ islpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ islpy/version.py,sha256=9KVEg7OX9uCaA6ElUMeiAh-zDrxsy3u2H6VQm_-LTUE,301
7
+ islpy-2025.2.2.dist-info/METADATA,sha256=Us2hmRlX7V2rNYGp3pg3ZEqYgbSbuzNYT7IIHd9dbT4,2966
8
+ islpy-2025.2.2.dist-info/WHEEL,sha256=vdDoSHsGSt7A_0xA1xz2bhxzT0tKzOSwFgDqzMPnQX4,118
9
+ islpy-2025.2.2.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- islpy/__init__.py,sha256=6In7YFiBLKNNVIGkpKMiB1H_-H2OQ5ovlqJ_Tz0nAvA,13073
2
- islpy/_isl.cpython-312-aarch64-linux-musl.so,sha256=zyIZjA5bI6aAXHCkaLmOjYPxSeGMwoOx-pEJXUlRT3g,9380480
3
- islpy/_isl.pyi,sha256=dAYJ9hZ0HrpMnUHdruE6cOvKU_Px2kZ7qr6YFDZ-Z-0,260082
4
- islpy/_monkeypatch.py,sha256=NrSQHBRxIVzSuYa2qR_oSnxRoJxVbu-l_Sv1AZcvE0Q,31242
5
- islpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- islpy/version.py,sha256=9KVEg7OX9uCaA6ElUMeiAh-zDrxsy3u2H6VQm_-LTUE,301
7
- islpy-2025.2.1.dist-info/METADATA,sha256=rKg9uyDgpaAp2mbvRv2YzFS9seQzhA1jjw75gcTmQvg,2966
8
- islpy-2025.2.1.dist-info/WHEEL,sha256=vdDoSHsGSt7A_0xA1xz2bhxzT0tKzOSwFgDqzMPnQX4,118
9
- islpy-2025.2.1.dist-info/RECORD,,