In my code I cannot understand why python is returning a None at the end. I have tried to close every statement with Exit however I am still getting the None. Here is the output I am getting:
[[6 4 5 3 2 8 7 1 9]
 [3 8 7 9 1 6 4 5 2]
 [2 9 1 4 5 7 6 3 8]
 [5 6 3 2 9 1 8 7 4]
 [9 7 8 6 4 5 1 2 3]
 [1 2 4 8 7 3 5 9 6]
 [7 3 9 5 6 4 2 8 1]
 [8 5 6 1 3 2 9 4 7]
 [4 1 2 7 8 9 3 6 5]]
None
Here is my current code, could I kindly ask some assistance to identify where I am missing it:
import numpy as np
import copy
def sudoku_solver(sudoku):
    start_sudoku = copy.deepcopy(sudoku)
    duplicates(sudoku)
    solution(start_sudoku, sudoku)
def duplicates(sudoku):
    for r in range(9):
        line = (sudoku[r, :])
        nonzeros = [x for x in line.flatten() if x != 0]
        if (len(nonzeros) == len(set(nonzeros))) == False:
            array = [[-1 for i in range(9)] for j in range(9)]
            return (np.array(array))
    return
def solution(start_sudoku, sudoku):
    for y in range(9): 
        for x in range(9): 
            if sudoku[y][x] == 0:
                for n in range(1, 10): 
                    if possible(y, x, n):
                        sudoku[y][x] = n
                        solution(start_sudoku, sudoku)
                        sudoku[y][x] = 0 
                return
    if np.array_equal(sudoku, start_sudoku):
        array = [[-1 for i in range(9)] for j in range(9)]
        return np.array(array)
    return sudoku
your_solution = sudoku_solver(sudoku)
print(your_solution)
 
     
     
    