Skip to content

Commit 2051ccc

Browse files
committed
-
1 parent 908d40a commit 2051ccc

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

source_py3/python_toolbox/combi/perm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ def number(self):
211211
def _perm_sequence(self):
212212
assert (0 <= self.number <
213213
self.just_dapplied_rapplied_perm_space.length)
214-
n_digits_pad = 0 if self.is_infinite else self.length
214+
n_digits_pad = 0 if self.is_infinite else \
215+
self.just_dapplied_rapplied_perm_space.sequence_length
215216
factoradic_number = math_tools.to_factoradic(
216217
self.number * math.factorial(
217218
self.just_dapplied_rapplied_perm_space.n_unused_elements),

source_py3/python_toolbox/combi/perm_space.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ def __repr__(self):
420420
)
421421

422422
def __getitem__(self, i):
423-
if isinstance(i, slice):
423+
if isinstance(i, (slice, sequence_tools.CanonicalSlice)):
424424
canonical_slice = sequence_tools.CanonicalSlice(
425425
i, self.length, offset=self.canonical_slice.start
426426
)
@@ -547,6 +547,13 @@ def index(self, perm):
547547
except sequence_tools.UnorderedIterableException:
548548
raise ValueError('An unordered iterable is never contained in a '
549549
'non-combination `PermSpace`.')
550+
if isinstance(perm, Perm) and perm.is_infinite:
551+
if self.is_infinite:
552+
assert self == infinite_pure_perm_space
553+
return perm.number
554+
else:
555+
raise ValueError
556+
550557
perm_set = set(perm)
551558
if not (perm_set <= set(self.sequence)):
552559
raise ValueError

source_py3/test_python_toolbox/test_combi/test_perm_space.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def test_dapplied_perm_space():
184184

185185
assert (0, 4, 2, 3, 1) in dapplied_perm_space
186186
assert (0, 4, 'ooga booga', 2, 3, 1) not in dapplied_perm_space
187-
assert infinite_pure_perm_space[7] not in rapplied_perm_space
187+
assert infinite_pure_perm_space[7] not in dapplied_perm_space
188188

189189
dapplied_perm = dapplied_perm_space[-1]
190190
assert dapplied_perm in dapplied_perm_space
@@ -264,8 +264,10 @@ def test_degreed_perm_space():
264264
assert funky_perm_space.domain == 'travels'
265265
assert funky_perm_space.canonical_slice.start == 2
266266

267-
assert funky_perm_space.undegreed.get_degreed(2)[0] not in funky_perm_space
268-
assert funky_perm_space.get_fixed({'t': 'i', 'v': 'g',}) == funky_perm_space
267+
assert funky_perm_space.unsliced.undegreed.get_degreed(2)[0] \
268+
not in funky_perm_space
269+
assert funky_perm_space.unsliced.get_fixed({'t': 'i', 'v': 'g',}) \
270+
[funky_perm_space.slice_] == funky_perm_space
269271

270272
for i, perm in enumerate(funky_perm_space):
271273
assert perm.is_dapplied
@@ -327,8 +329,8 @@ def test_degreed_perm_space():
327329

328330
assert pickle.loads(pickle.dumps(funky_perm_space)) == funky_perm_space
329331
assert funky_perm_space != \
330-
pickle.loads(pickle.dumps(funky_perm_space.unfixed)) == \
331-
funky_perm_space.unfixed
332+
pickle.loads(pickle.dumps(funky_perm_space.unsliced.unfixed)) == \
333+
funky_perm_space.unsliced.unfixed
332334

333335

334336

0 commit comments

Comments
 (0)