Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#26237 closed Bug (invalid)

uuid.UUID() generates 'invalid syntax' and 'badly formed' uuids — at Version 1

Reported by: Malik A. Rumi Owned by: nobody
Component: Uncategorized Version: 1.9
Severity: Normal Keywords: uuid
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Simon Charette)

Background: I've been struggling for about a week trying to use fixtures to load initial data into a website. See http://stackoverflow.com/questions/35463713/badly-formed-hexadecimal-uuid-string-error-in-django-fixture-json-uuid-conversi and https://groups.google.com/forum/#!topic/django-users/Q4zybgExDyY.

Once I did the test suggested to me on SO, it became clear that this was not a json issue. That test was as follows:

In [5]: e.uuid
Out[5]: UUID('61877565-5fe5-4175-9f2b-d24704df0b74')
In [6]: uuid.UUID(61877565-5fe5-4175-9f2b-d24704df0b74)
File "<ipython-input-6-56137f5f4eb6>", line 1
uuid.UUID(61877565-5fe5-4175-9f2b-d24704df0b74)
                                              ^
SyntaxError: invalid syntax  # It doesn't show here for some reason, but the caret is pointing to the 4th '5' in the 12th position, from left to right.

It did not matter if I copy pasted the uuid or retyped the whole thing by hand, I got the same error. If I quoted the uuid, I got a different error:

In [7]: uuid.UUID('61877565-5fe5-4175-9f2b-d24704df0b74')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-3b4d3e5bd156> in <module>()
----> 1 uuid.UUID('61877565-5fe5-4175-9f2b-d24704df0b74')

NameError: name 'uuid' is not defined

I am using Ubuntu 15.10, Django 1.9.1, Postgresql 9.4 and Python 2.7.10. I don't know if this a Python issue rather than a Django issue, but it can't, or shouldn't, be that Django/Python can't accept, recognize, or evaluate a uuid it generated seconds earlier.

Change History (1)

comment:1 by Simon Charette, 9 years ago

Description: modified (diff)
Resolution: invalid
Status: newclosed

Hi MalikRumi,

I'm afraid this has nothing to do with Django.

From what I can see the first exception occurred because you forgot to quote the string you attempted to pass to the uuid.UUID constructor. You can get a similar exception by simply pasting the expression 61877565-5fe5-4175-9f2b-d24704df0b74 in a Python shell.

The second exception occurred because you attempted to construct a uuid.UUID instance by referring to the uuid module which you has not imported in your shell global context. I guess you simply imported UUID from uuid (you did from uuid import UUID instead of import uuid).

I suppose you got confused because the representation of uuid.UUID objects (repr(uuid.UUID('61877565-5fe5-4175-9f2b-d24704df0b74'))), which is what your shell is displaying by default in Out[N]:, always include the uuid module prefix.

In the future please stick to the support channel (like the thread on django-users@) until you get a confirmation this is actually a bug as this tracker is not meant to be used as a support platform.

Note: See TracTickets for help on using tickets.
Back to Top