Skip to content

Instantly share code, notes, and snippets.

@ShawnMilo
Created December 3, 2013 20:55
Show Gist options
  • Select an option

  • Save ShawnMilo/7777304 to your computer and use it in GitHub Desktop.

Select an option

Save ShawnMilo/7777304 to your computer and use it in GitHub Desktop.

Revisions

  1. ShawnMilo created this gist Dec 3, 2013.
    40 changes: 40 additions & 0 deletions validate_uuid4.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    from uuid import UUID

    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.
    """

    try:
    val = UUID(uuid_string, 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

    if __name__ == '__main__':

    # Valid uuid, generated by uuid4():
    x = '89eb35868a8247a4a911758a62601cf7'
    print validate_uuid4(x)

    # Same as above, except for the 17th charecter
    # which is a valid hex string, but not a valid uuid4.
    x = '89eb35868a8247a4c911758a62601cf7'
    print validate_uuid4(x)