text: #
  # -------------------------------------------------------------------------
  #   Copyright (c) 2015-2017 AT&T Intellectual Property
  #
  #   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
  #
  #       http://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.
  #
  # -------------------------------------------------------------------------
  #
  
  from uuid import UUID
  
  import six
  
  
  def validate_uuid4(uuid_string):
      """Validate that a UUID string is in fact a valid uuid4.
  
      Happily, the uuid module does the actual checking for us.
      It is vital that the 'version' kwarg be passed
      to the UUID() call, otherwise any 32-character
      hex string is considered valid.
      """
  
      if not isinstance(uuid_string, six.string_types):
          return False
  
      try:
          val = UUID(uuid_string.translate(None, '-'), version=4)
      except ValueError:
          # If it's a value error, then the string
          # is not a valid hex code for a UUID.
          return False
  
      # If the uuid_string is a valid hex code,
      # but an invalid uuid4, the UUID.__init__ will convert it to a
      # valid uuid4. This is bad for validation purposes.
      return val.hex == uuid_string
  