We can start out with a negative number, so this should work.

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        max_so_far = nums[0] 
        curr = 0
 
        for num in nums:
            if curr < 0:
                curr = 0
 
            curr += num
            max_so_far = max(max_so_far, curr)
 
        return max_so_far