You wrote:
partial+=[row]
...
partial = partial[0:current-1]
the first command modifies the list partial in place. The second one makes a copy and leaves the original array untouched.
You should write:
partial.append(row) # this is equivalent to: partial += [row]
...
partial.pop() # modifes list in place