python_toolbox icon indicating copy to clipboard operation
python_toolbox copied to clipboard

PermSpace: IndexError: pop from empty list

Open hunterhogan opened this issue 4 months ago • 0 comments

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: [email protected]
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: [email protected]
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: [email protected]
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: [email protected]
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.

hunterhogan avatar Oct 17 '25 10:10 hunterhogan