Write a function that returns the same result as the built-in partition method for strings. Your function will take two arguments, both strings. The first argument will be the string to partition and the second argument will be the separator string. Split the string at the first occurrence of the separator, and return a 3-tuple containing the part before the separator, the separator itself, and the part after the separator. If the separator is not found, return a 3-tuple containing the string itself, followed by two empty strings. You CANNOT use the built-in partition, rpartition, split, and rsplit methods for strings.