#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 )
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 , 9 years ago
Description: | modified (diff) |
---|---|
Resolution: | → invalid |
Status: | new → closed |
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 expression61877565-5fe5-4175-9f2b-d24704df0b74
in a Python shell.The second exception occurred because you attempted to construct a
uuid.UUID
instance by referring to theuuid
module which you has not imported in your shell global context. I guess you simply importedUUID
fromuuid
(you didfrom uuid import UUID
instead ofimport 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 inOut[N]:
, always include theuuid
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.