You misunderstood the meaning of 'complete' method. It only means that the distance between two clusters of points, say {A, B} and {C, D}, is taken to be the maximum of pairwise distances AC, AD, BC, BD. This does not change the fact that hierarchical clustering combines nearby clusters, those with smallest distance from each other. There is no clustering method for "combine points if they are very far apart".
If you want large entries in your distance matrix (call it D) to mean "these are similar" then you have to transform D to invert the order relation between distances. In other words, the matrix you have measures similarity of objects and you need a measure of dissimilarity.
The simplest thing to do is to change the sign; linkage
does not actually require distances to be positive.
from scipy.cluster.hierarchy import linkage
from scipy.spatial.distance import squareform
linkage(-squareform(D), 'complete')
returns
array([[ 0., 1., -40., 2.],
[ 2., 4., -33., 3.],
[ 3., 5., -28., 4.]])
indicating linkage ((0-1)-2)-3.
If negative values are an issue, there are other transformations which don't produce negative numbers:
linkage(D.max() - squareform(D), 'complete')
or
linkage(squareform(D)**(-1), 'complete')
All these will return the same hierarchy as long as 'complete' is the method'.
Of course, now that you know that 'complete' is not necessarily the thing you need, you may want to consider other methods as well, and then the effect of transformation imposed on D may change the outcome. Do what makes sense in your context, considering what D actually represents.