content: #
  # Copyright 2023 EA Authors.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #    https://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  #
  
  def splitext(p: str) -> Tuple[str, str]:
      """
      Split the extension from a pathname.
      Extension is everything from the last dot to the end, ignoring
      leading dots.  Returns "(root, ext)"; ext may be empty."""
      sep = "/"
      extsep = "."
  
      sepIndex = p.rfind(sep)
      dotIndex = p.rfind(extsep)
      if dotIndex > sepIndex:
          # skip all leading dots
          filenameIndex = sepIndex + 1
          while filenameIndex < dotIndex:
              if p[filenameIndex : filenameIndex + 1] != extsep:
                  return p[:dotIndex], p[dotIndex:]
              filenameIndex += 1
      return p, p[:0]
  