The shape must match
When a function can return two different shapes, the caller has to guess. Keeping every return the same shape is what makes unpacking safe.
Named results
If the parts have names, returning a dict and reading by key beats unpacking by position. Position is fine for two parts, names are better for three or more.