THRIFT-5923: UUID python
Client: py
Patch: CJCombrink
This closes #3330
diff --git a/test/py/Makefile.am b/test/py/Makefile.am
index 078ba02..c471b92 100644
--- a/test/py/Makefile.am
+++ b/test/py/Makefile.am
@@ -77,56 +77,56 @@
gen-py/%/__init__.py: ../%.thrift $(THRIFT)
- test -f ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py ../v0.16/$(notdir $<) \
+ test -f ../$(notdir $<) \
+ && $(THRIFT) --gen py ../$(notdir $<) \
|| $(THRIFT) --gen py $<
gen-py-default/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-default || $(MKDIR_P) gen-py-default
- test -f ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py -out gen-py-default ../v0.16/$(notdir $<) \
+ test -f ../$(notdir $<) \
+ && $(THRIFT) --gen py -out gen-py-default ../$(notdir $<) \
|| $(THRIFT) --gen py -out gen-py-default $<
gen-py-slots/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-slots || $(MKDIR_P) gen-py-slots
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:slots -out gen-py-slots ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:slots -out gen-py-slots ../$(notdir $<) \
|| $(THRIFT) --gen py:slots -out gen-py-slots $<
gen-py-oldstyle/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-oldstyle || $(MKDIR_P) gen-py-oldstyle
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:old_style -out gen-py-oldstyle ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:old_style -out gen-py-oldstyle ../$(notdir $<) \
|| $(THRIFT) --gen py:old_style -out gen-py-oldstyle $<
gen-py-no_utf8strings/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-no_utf8strings || $(MKDIR_P) gen-py-no_utf8strings
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:no_utf8strings -out gen-py-no_utf8strings ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:no_utf8strings -out gen-py-no_utf8strings ../$(notdir $<) \
|| $(THRIFT) --gen py:no_utf8strings -out gen-py-no_utf8strings $<
gen-py-dynamic/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-dynamic || $(MKDIR_P) gen-py-dynamic
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:dynamic -out gen-py-dynamic ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:dynamic -out gen-py-dynamic ../$(notdir $<) \
|| $(THRIFT) --gen py:dynamic -out gen-py-dynamic $<
gen-py-dynamicslots/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-dynamicslots || $(MKDIR_P) gen-py-dynamicslots
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:dynamic,slots -out gen-py-dynamicslots ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:dynamic,slots -out gen-py-dynamicslots ../$(notdir $<) \
|| $(THRIFT) --gen py:dynamic,slots -out gen-py-dynamicslots $<
gen-py-enum/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-enum || $(MKDIR_P) gen-py-enum
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:enum -out gen-py-enum ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:enum -out gen-py-enum ../$(notdir $<) \
|| $(THRIFT) --gen py:enum -out gen-py-enum $<
gen-py-type_hints/%/__init__.py: ../%.thrift $(THRIFT)
test -d gen-py-type_hints || $(MKDIR_P) gen-py-type_hints
- test ../v0.16/$(notdir $<) \
- && $(THRIFT) --gen py:type_hints,enum -out gen-py-type_hints ../v0.16/$(notdir $<) \
+ test ../$(notdir $<) \
+ && $(THRIFT) --gen py:type_hints,enum -out gen-py-type_hints ../$(notdir $<) \
|| $(THRIFT) --gen py:type_hints,enum -out gen-py-type_hints $<
clean-local:
diff --git a/test/py/TestClient.py b/test/py/TestClient.py
index f608e4e..07b39a0 100755
--- a/test/py/TestClient.py
+++ b/test/py/TestClient.py
@@ -24,6 +24,7 @@
import sys
import time
import unittest
+import uuid
from optparse import OptionParser
from util import local_libpath
@@ -160,6 +161,13 @@
val = bytearray([i for i in range(0, 256)])
self.assertEqual(bytearray(self.client.testBinary(bytes(val))), val)
+ def testUuid(self):
+ print('testUuid')
+ val1 = uuid.UUID('00112233-4455-6677-8899-aabbccddeeff')
+ val2 = uuid.uuid4()
+ self.assertEqual(self.client.testUuid(val1), val1)
+ self.assertEqual(self.client.testUuid(val2), val2)
+
def testStruct(self):
print('testStruct')
x = Xtruct()
diff --git a/test/py/TestServer.py b/test/py/TestServer.py
index 0108c98..59a06ad 100755
--- a/test/py/TestServer.py
+++ b/test/py/TestServer.py
@@ -82,6 +82,11 @@
logging.info('testBinary()') # TODO: hex output
return thing
+ def testUuid(self, thing):
+ if self.options.verbose > 1:
+ logging.info('testUuid(%s)' % thing)
+ return thing
+
def testStruct(self, thing):
if self.options.verbose > 1:
logging.info('testStruct({%s, %s, %s, %s})' % (thing.string_thing, thing.byte_thing, thing.i32_thing, thing.i64_thing))
diff --git a/test/py/TestTypes.py b/test/py/TestTypes.py
index bb1bc35..0df87aa 100644
--- a/test/py/TestTypes.py
+++ b/test/py/TestTypes.py
@@ -20,6 +20,7 @@
from ThriftTest import ThriftTest
from ThriftTest.ThriftTest import Client
from ThriftTest.ttypes import Xtruct
+from uuid import UUID
import unittest
@@ -66,3 +67,6 @@
def test_set(self):
self.assertEqual(Client.testSet.__annotations__, {'return': set[int], 'thing': set[int]})
+
+ def test_uuid(self):
+ self.assertEqual(Client.testUuid.__annotations__, {'return': UUID, 'thing': UUID})
diff --git a/test/py/generate.cmake b/test/py/generate.cmake
index 7139802..b5170f0 100644
--- a/test/py/generate.cmake
+++ b/test/py/generate.cmake
@@ -7,23 +7,23 @@
endif()
endmacro(GENERATE)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py gen-py-default)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:slots gen-py-slots)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:old_style gen-py-oldstyle)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:no_utf8strings gen-py-no_utf8strings)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:dynamic gen-py-dynamic)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:dynamic,slots gen-py-dynamicslots)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:enum gen-py-enum)
-generate(${MY_PROJECT_DIR}/test/v0.16/ThriftTest.thrift py:type_hints,enum gen-py-type_hints)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py gen-py-default)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:slots gen-py-slots)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:old_style gen-py-oldstyle)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:no_utf8strings gen-py-no_utf8strings)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:dynamic gen-py-dynamic)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:dynamic,slots gen-py-dynamicslots)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:enum gen-py-enum)
+generate(${MY_PROJECT_DIR}/test/ThriftTest.thrift py:type_hints,enum gen-py-type_hints)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py gen-py-default)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:slots gen-py-slots)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:old_style gen-py-oldstyle)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:no_utf8strings gen-py-no_utf8strings)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:dynamic gen-py-dynamic)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:dynamic,slots gen-py-dynamicslots)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:enum gen-py-enum)
-generate(${MY_PROJECT_DIR}/test/v0.16/DebugProtoTest.thrift py:type_hints,enum gen-py-type_hints)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py gen-py-default)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:slots gen-py-slots)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:old_style gen-py-oldstyle)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:no_utf8strings gen-py-no_utf8strings)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:dynamic gen-py-dynamic)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:dynamic,slots gen-py-dynamicslots)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:enum gen-py-enum)
+generate(${MY_PROJECT_DIR}/test/DebugProtoTest.thrift py:type_hints,enum gen-py-type_hints)
generate(${MY_PROJECT_DIR}/test/DoubleConstantsTest.thrift py gen-py-default)
generate(${MY_PROJECT_DIR}/test/DoubleConstantsTest.thrift py:slots gen-py-slots)