Skip to content

PermSpace: IndexError: pop from empty list #8

@hunterhogan

Description

@hunterhogan

Example module

from python_toolbox.combi import PermSpace

chicken = PermSpace(range(1, 9), fixed_map={0: 1, 2: 3, 1: 2, 7: 6, 6: 7, 5: 4, 3: 5, 4: 8})

for permutation in chicken:
    print(permutation)
Python 3.13.8

(.venv) C:\apps\mapFolding>ver & py -VV & pip show python_toolbox

Microsoft Windows [Version 10.0.26100.6899]
Python 3.13.8 (tags/v3.13.8:a15ae61, Oct  7 2025, 12:34:25) [MSC v.1944 64 bit (AMD64)]
Name: python_toolbox
Version: 1.2.7
Summary: A collection of Python tools for various tasks
Home-page:
Author: Ram Rachum
Author-email: ram@rachum.com
License: MIT
Location: C:\apps\mapFolding\.venv\Lib\site-packages
Requires: setuptools
Required-by:

(.venv) C:\apps\mapFolding>C:\apps\mapFolding\.venv\Scripts\python.exe c:/apps/mapFolding/silky.py
Traceback (most recent call last):
  File "c:\apps\mapFolding\silky.py", line 6, in <module>
    for permutation in chicken:
                       ^^^^^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
                             ~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
                                 factoradic_digit in factoradic_number)
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
                   ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
IndexError: pop from empty list

Python 3.14.0

(.v314) C:\apps\mapFolding>ver & py -VV & pip show python_toolbox

Microsoft Windows [Version 10.0.26100.6899]
Python 3.14.0 (tags/v3.14.0:ebf955d, Oct  7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)]
Name: python_toolbox
Version: 1.2.7
Summary: A collection of Python tools for various tasks
Home-page: 
Author: Ram Rachum
Author-email: ram@rachum.com
License: MIT
Location: C:\apps\mapFolding\.v314\Lib\site-packages
Requires: setuptools
Required-by: 

(.v314) C:\apps\mapFolding>c:\apps\mapFolding\silky.py
Traceback (most recent call last):
  File "C:\apps\mapFolding\silky.py", line 6, in <module>
    for permutation in chicken:
                       ^^^^^^^
  File "c:\apps\mapFolding\.v314\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
                             ~~~~^^^
  File "c:\apps\mapFolding\.v314\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "c:\apps\mapFolding\.v314\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
             ^^^^^
  File "c:\apps\mapFolding\.v314\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
                   ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
IndexError: pop from empty list

Python 3.12.10

(.v312) C:\apps\mapFolding>ver & py -VV & pip show python_toolbox

Microsoft Windows [Version 10.0.26100.6899]
Python 3.12.10 (tags/v3.12.10:0cc8128, Apr  8 2025, 12:21:36) [MSC v.1943 64 bit (AMD64)]
Name: python_toolbox
Version: 1.2.7
Summary: A collection of Python tools for various tasks
Home-page:
Author: Ram Rachum
Author-email: ram@rachum.com
License: MIT
Location: C:\apps\mapFolding\.v312\Lib\site-packages
Requires: setuptools
Required-by:

(.v312) C:\apps\mapFolding>c:\apps\mapFolding\silky.py
Traceback (most recent call last):
  File "C:\apps\mapFolding\silky.py", line 6, in <module>
    for permutation in chicken:
                       ^^^^^^^
  File "c:\apps\mapFolding\.v312\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
                             ~~~~^^^
  File "c:\apps\mapFolding\.v312\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "c:\apps\mapFolding\.v312\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\apps\mapFolding\.v312\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IndexError: pop from empty list

Python 3.9.13

(.v309) C:\apps\mapFolding>ver & py -VV & pip show python_toolbox

Microsoft Windows [Version 10.0.26100.6899]
Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)]
Name: python_toolbox
Version: 1.2.7
Summary: A collection of Python tools for various tasks
Home-page:
Author: Ram Rachum
Author-email: ram@rachum.com
License: MIT
Location: c:\apps\mapfolding\.v309\lib\site-packages
Requires: setuptools
Required-by:

(.v309) C:\apps\mapFolding>c:\apps\mapFolding\silky.py
Traceback (most recent call last):
  File "C:\apps\mapFolding\silky.py", line 6, in <module>
    for permutation in chicken:
  File "c:\apps\mapFolding\.v309\lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
  File "c:\apps\mapFolding\.v309\lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
  File "c:\apps\mapFolding\.v309\lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
  File "c:\apps\mapFolding\.v309\lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
IndexError: pop from empty list

Another PermSpace: range(1, 10)

Details

<PermSpace: range(1, 10), fixed_map={0: 1, 2: 3, 1: 2, 8: 5, 6: 4, 7: 6 ... }>
{0: 1, 2: 3, 1: 2, 8: 5, 6: 4, 7: 6, 5: 7, 3: 8, 4: 9}
Traceback (most recent call last):
  File "c:\apps\mapFolding\easyRun\NOTcountingFolds.py", line 38, in <module>
    countTotal = NOTcountingFolds(oeisID, n, flow, CPUlimit)
  File "C:\apps\mapFolding\mapFolding\basecamp.py", line 235, in NOTcountingFolds
    countTotal = doTheNeedful(oeis_n)
  File "C:\apps\mapFolding\mapFolding\algorithms\A000136elimination_combi.py", line 265, in doTheNeedful
    groupsOfFolds: int = sum(map(count, listPermSpace))
                         ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\apps\mapFolding\mapFolding\algorithms\A000136elimination_combi.py", line 103, in count
    for folding in permutationSpace:
                   ^^^^^^^^^^^^^^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
                             ~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
                                 factoradic_digit in factoradic_number)
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
                   ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
IndexError: pop from empty list

range(1, 11)

Details

<PermSpace: range(1, 11), fixed_map={0: 1, 2: 3, 1: 2, 9: 5, 7: 4, 8: 7 ... }>
{0: 1, 2: 3, 1: 2, 9: 5, 7: 4, 8: 7, 6: 6, 5: 8, 3: 9, 4: 10}
Traceback (most recent call last):
  File "c:\apps\mapFolding\easyRun\NOTcountingFolds.py", line 38, in <module>
    countTotal = NOTcountingFolds(oeisID, n, flow, CPUlimit)
  File "C:\apps\mapFolding\mapFolding\basecamp.py", line 235, in NOTcountingFolds
    countTotal = doTheNeedful(oeis_n)
  File "C:\apps\mapFolding\mapFolding\algorithms\A000136elimination_combi.py", line 265, in doTheNeedful
    groupsOfFolds: int = sum(map(count, listPermSpace))
                         ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\apps\mapFolding\mapFolding\algorithms\A000136elimination_combi.py", line 103, in count
    for folding in permutationSpace:
                   ^^^^^^^^^^^^^^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 735, in <genexpr>
    __iter__ = lambda self: (self[i] for i in
                             ~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 679, in __getitem__
    free_values_perm = self._free_values_unsliced_perm_space[i]
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in __getitem__
    result = tuple(unused_numbers.pop(factoradic_digit) for
                                 factoradic_digit in factoradic_number)
  File "C:\apps\mapFolding\.venv\Lib\site-packages\python_toolbox\combi\perming\perm_space.py", line 720, in <genexpr>
    result = tuple(unused_numbers.pop(factoradic_digit) for
                   ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
IndexError: pop from empty list

Other PermSpace are fine

I've generated hundreds of PermSpace objects and most of them work well, of course. I don't know if the different examples and different Python versions will help you, but I made them just in case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions