#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 , 10 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.UUIDconstructor. You can get a similar exception by simply pasting the expression61877565-5fe5-4175-9f2b-d24704df0b74in a Python shell.The second exception occurred because you attempted to construct a
uuid.UUIDinstance by referring to theuuidmodule which you has not imported in your shell global context. I guess you simply importedUUIDfromuuid(you didfrom uuid import UUIDinstead ofimport uuid).I suppose you got confused because the representation of
uuid.UUIDobjects (repr(uuid.UUID('61877565-5fe5-4175-9f2b-d24704df0b74'))), which is what your shell is displaying by default inOut[N]:, always include theuuidmodule 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.