From b33d5c287530cd203c9c776e554fb353cab0599b Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Mon, 14 May 2018 16:50:45 -0500 Subject: [PATCH 01/33] Add Character and tests for Character --- pykit/Character.py | 22 ++++++++++++++++++++++ pykit/__init__.py | 3 ++- pykit/tests/test_command.py | 1 - 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 pykit/Character.py diff --git a/pykit/Character.py b/pykit/Character.py new file mode 100644 index 0000000..dad3205 --- /dev/null +++ b/pykit/Character.py @@ -0,0 +1,22 @@ +class Character: + """ + Object for IBM i Character. + """ + def __init__(self, length, value): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param value: + """ + self.length = length + self.value = value + self.payload = {"s":{"name":"char"}} + + def get_payload(self): + self.payload['s']['type'] = str(self.length) + 'a' + self.payload['s']['value'] = self.value + return self.payload diff --git a/pykit/__init__.py b/pykit/__init__.py index 24700aa..432ea60 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -1,2 +1,3 @@ __version__ = "0.2.0" -from .Command import Command \ No newline at end of file +from .Command import Command +from .Character import Character \ No newline at end of file diff --git a/pykit/tests/test_command.py b/pykit/tests/test_command.py index 59b89b7..fb74ea1 100644 --- a/pykit/tests/test_command.py +++ b/pykit/tests/test_command.py @@ -33,6 +33,5 @@ def test_execute_exec_command(self): self.assertTrue(response) - self.assertTrue(response) if __name__ == '__main__': unittest.main() From aea658bd3e8d9b90c41c4cd9220cee96493e3755 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Mon, 14 May 2018 16:51:31 -0500 Subject: [PATCH 02/33] Actually add tests for Character --- pykit/tests/test_character.py | 13 +++++++++++++ pykit/tests/test_http.py | 1 - 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 pykit/tests/test_character.py diff --git a/pykit/tests/test_character.py b/pykit/tests/test_character.py new file mode 100644 index 0000000..403ca1b --- /dev/null +++ b/pykit/tests/test_character.py @@ -0,0 +1,13 @@ +import unittest +import os +from pykit import Character + + +class TestCharacter(unittest.TestCase): + def test_character_payload(self): + char = Character(10, "Hello") + self.assertEqual(char.get_payload(), {"s":{"name":"char", "type":"10a", "value":"Hello"}}) + + +if __name__ == '__main__': + unittest.main() diff --git a/pykit/tests/test_http.py b/pykit/tests/test_http.py index 7cbd12c..8f2bdc3 100644 --- a/pykit/tests/test_http.py +++ b/pykit/tests/test_http.py @@ -23,6 +23,5 @@ def test_execute_payload(self): self.assertTrue(response) - self.assertTrue(response) if __name__ == '__main__': unittest.main() From 593571ca0027861715925d578e2df9b66c99450a Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Thu, 24 May 2018 17:45:20 -0500 Subject: [PATCH 03/33] Add tests for character --- pykit/Parameter.py | 0 pykit/Program.py | 25 +++++++++++++++++++++++++ pykit/__init__.py | 3 ++- pykit/tests/test_program.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 pykit/Parameter.py create mode 100644 pykit/Program.py create mode 100644 pykit/tests/test_program.py diff --git a/pykit/Parameter.py b/pykit/Parameter.py new file mode 100644 index 0000000..e69de29 diff --git a/pykit/Program.py b/pykit/Program.py new file mode 100644 index 0000000..5d46775 --- /dev/null +++ b/pykit/Program.py @@ -0,0 +1,25 @@ +class Program: + """ + Object for calling an IBM i Program. + """ + def __init__(self, name, library=''): + self.name = name + self.library = library + self.parameters = [] + self.payload = { + "pgm": [{"name": name, "lib": library}] + } + + def addParameter(self, parameter): + """ + + :param parameter: Parameter to be added + :return: + """ + self.parameters.append(parameter) + + def get_payload(self): + for p in self.parameters: + self.payload["pgm"].append(p.get_payload()) + + return self.payload diff --git a/pykit/__init__.py b/pykit/__init__.py index 432ea60..3e3ae6e 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -1,3 +1,4 @@ __version__ = "0.2.0" from .Command import Command -from .Character import Character \ No newline at end of file +from .Character import Character +from .Program import Program \ No newline at end of file diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py new file mode 100644 index 0000000..15d8603 --- /dev/null +++ b/pykit/tests/test_program.py @@ -0,0 +1,31 @@ +import unittest +import os +from pykit.transport.http import connect +from pykit import Character, Program + + +class TestCharacter(unittest.TestCase): + def setUp(self): + char = Character(128, "Hi there") + self.hello_prog = Program("HELLO", "DB2JSON") + self.hello_prog.addParameter(char) + + def test_hello_world(self): + self.assertEqual( + self.hello_prog.get_payload(), + {"pgm":[{"name":"HELLO", "lib":"DB2JSON"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} + ) + + def test_execute_hello_world(self): + connection = connect( + os.environ['PK_DB2SOCK_URL'], + db2sock_auth=( + os.environ['PK_DB2SOCK_USER'], os.environ['PK_DB2SOCK_PASS'])) + toolkit = connection.toolkit() + toolkit.add(self.hello_prog) + response = toolkit.execute() + self.assertEqual(response, {"script": [{"pgm": ["HELLO", "DB2JSON", {"char": "Hello World"}]}]}) + + +if __name__ == '__main__': + unittest.main() From b08e9ee64edfdb539a2ec128abee9fedd11863e8 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Wed, 6 Jun 2018 20:23:27 -0500 Subject: [PATCH 04/33] Fix the way Character is built --- pykit/Character.py | 9 +++++---- pykit/tests/test_character.py | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pykit/Character.py b/pykit/Character.py index dad3205..e2ab76c 100644 --- a/pykit/Character.py +++ b/pykit/Character.py @@ -2,7 +2,7 @@ class Character: """ Object for IBM i Character. """ - def __init__(self, length, value): + def __init__(self, name, length, value): """ How much error checking do we want here? Should we check that length is positive? @@ -14,9 +14,10 @@ def __init__(self, length, value): """ self.length = length self.value = value - self.payload = {"s":{"name":"char"}} + self.name = name + self.payload = {"name":name} def get_payload(self): - self.payload['s']['type'] = str(self.length) + 'a' - self.payload['s']['value'] = self.value + self.payload['type'] = str(self.length) + 'a' + self.payload['value'] = self.value return self.payload diff --git a/pykit/tests/test_character.py b/pykit/tests/test_character.py index 403ca1b..fd37e64 100644 --- a/pykit/tests/test_character.py +++ b/pykit/tests/test_character.py @@ -5,8 +5,8 @@ class TestCharacter(unittest.TestCase): def test_character_payload(self): - char = Character(10, "Hello") - self.assertEqual(char.get_payload(), {"s":{"name":"char", "type":"10a", "value":"Hello"}}) + char = Character('achar', 10, "Hello") + self.assertEqual(char.get_payload(), {"name":"achar", "type":"10a", "value":"Hello"}) if __name__ == '__main__': From 58141e3f3f7ac425e17b43bce5ee7adec34746d2 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Wed, 6 Jun 2018 20:24:07 -0500 Subject: [PATCH 05/33] Fix the way program parameters are built for multiple. --- pykit/Program.py | 10 +++++++--- pykit/tests/test_program.py | 24 +++++++++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/pykit/Program.py b/pykit/Program.py index 5d46775..ef8c1b3 100644 --- a/pykit/Program.py +++ b/pykit/Program.py @@ -10,7 +10,7 @@ def __init__(self, name, library=''): "pgm": [{"name": name, "lib": library}] } - def addParameter(self, parameter): + def add_parameter(self, parameter): """ :param parameter: Parameter to be added @@ -19,7 +19,11 @@ def addParameter(self, parameter): self.parameters.append(parameter) def get_payload(self): - for p in self.parameters: - self.payload["pgm"].append(p.get_payload()) + if len(self.parameters) is 1: + self.payload["pgm"].append({"s": self.parameters[0].get_payload()}) + else: + self.payload["pgm"].append({"s":[]}) + for p in self.parameters: + self.payload["pgm"][-1]["s"].append(p.get_payload()) return self.payload diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py index 15d8603..e278a1c 100644 --- a/pykit/tests/test_program.py +++ b/pykit/tests/test_program.py @@ -1,14 +1,14 @@ import unittest import os from pykit.transport.http import connect -from pykit import Character, Program +from pykit import Character, Program, Integer, Float class TestCharacter(unittest.TestCase): def setUp(self): - char = Character(128, "Hi there") + char = Character("char", 128, "Hi there") self.hello_prog = Program("HELLO", "DB2JSON") - self.hello_prog.addParameter(char) + self.hello_prog.add_parameter(char) def test_hello_world(self): self.assertEqual( @@ -16,6 +16,24 @@ def test_hello_world(self): {"pgm":[{"name":"HELLO", "lib":"DB2JSON"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} ) + # WIP + def test_rainbow(self): + int = Integer("aint8", 3, 1) + float = Float("afloat", 4, 2, 5.55) + char = Character("achar", 32, "A") + rainbow = Program("RAINBOW", "DB2JSON") + rainbow.add_parameter(int) + rainbow.add_parameter(float) + rainbow.add_parameter(char) + self.assertEqual( + rainbow.get_payload(), + {"pgm":[{"name":"RAINBOW", "lib":"DB2JSON"}, {"s": [ + {"name":"aint8", "type":"3i0", "value":1}, + {"name":"afloat", "type":"4f2", "value":5.55}, + {"name":"achar", "type":"32a", "value":"A"} + ]}]} + ) + def test_execute_hello_world(self): connection = connect( os.environ['PK_DB2SOCK_URL'], From 9b566cfcbc0fae922c1b8e73f2b618993ae413fe Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Wed, 6 Jun 2018 20:24:28 -0500 Subject: [PATCH 06/33] Add Integers and Floats --- pykit/Float.py | 25 +++++++++++++++++++++++++ pykit/Integer.py | 24 ++++++++++++++++++++++++ pykit/__init__.py | 2 ++ pykit/tests/test_float.py | 13 +++++++++++++ pykit/tests/test_integer.py | 17 +++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 pykit/Float.py create mode 100644 pykit/Integer.py create mode 100644 pykit/tests/test_float.py create mode 100644 pykit/tests/test_integer.py diff --git a/pykit/Float.py b/pykit/Float.py new file mode 100644 index 0000000..25d883e --- /dev/null +++ b/pykit/Float.py @@ -0,0 +1,25 @@ +class Float: + """ + Object for IBM i Float. + """ + def __init__(self, name, length, precision, value): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param precision: + :param value: + """ + self.length = length + self.precision = precision + self.value = value + self.name = str(name) + self.payload = {"name":self.name} + + def get_payload(self): + self.payload['type'] = str(self.length) + 'f' + str(self.precision) + self.payload['value'] = self.value + return self.payload diff --git a/pykit/Integer.py b/pykit/Integer.py new file mode 100644 index 0000000..d611921 --- /dev/null +++ b/pykit/Integer.py @@ -0,0 +1,24 @@ +class Integer: + """ + Object for IBM i Integer. + """ + def __init__(self, name, length, value, signed=True): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param value: + """ + self.length = length + self.value = value + self.name = str(name) + self.signed = signed + self.payload = {"name":self.name} + + def get_payload(self): + self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' + self.payload['value'] = self.value + return self.payload diff --git a/pykit/__init__.py b/pykit/__init__.py index 3e3ae6e..b5cd178 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -1,4 +1,6 @@ __version__ = "0.2.0" from .Command import Command +from .Integer import Integer +from .Float import Float from .Character import Character from .Program import Program \ No newline at end of file diff --git a/pykit/tests/test_float.py b/pykit/tests/test_float.py new file mode 100644 index 0000000..dbf6dc0 --- /dev/null +++ b/pykit/tests/test_float.py @@ -0,0 +1,13 @@ +import unittest +import os +from pykit import Float + + +class TestFloat(unittest.TestCase): + def test_float_payload(self): + new_float = Float('afloat', 4, 2, 5.55) + self.assertEqual(new_float.get_payload(), {"name":"afloat", "type":"4f2", "value":5.55}) + + +if __name__ == '__main__': + unittest.main() diff --git a/pykit/tests/test_integer.py b/pykit/tests/test_integer.py new file mode 100644 index 0000000..14c11ee --- /dev/null +++ b/pykit/tests/test_integer.py @@ -0,0 +1,17 @@ +import unittest +import os +from pykit import Integer + + +class TestInteger(unittest.TestCase): + def test_integer_payload(self): + new_int = Integer('aint8', 3, 1) + self.assertEqual(new_int.get_payload(), {"name":"aint8", "type":"3i0", "value":1}) + + def test_unsigned_integer_payload(self): + new_int = Integer('auint8', 3, 1, False) + self.assertEqual(new_int.get_payload(), {"name":"auint8", "type":"3u0", "value":1}) + + +if __name__ == '__main__': + unittest.main() From 5699a630eba1fbf7e04760d7523e4b55b52bc8f6 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Thu, 7 Jun 2018 12:16:49 -0500 Subject: [PATCH 07/33] Rename test classes --- pykit/tests/test_program.py | 2 +- pykit/tests/test_toolkit.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py index e278a1c..9df7f4e 100644 --- a/pykit/tests/test_program.py +++ b/pykit/tests/test_program.py @@ -4,7 +4,7 @@ from pykit import Character, Program, Integer, Float -class TestCharacter(unittest.TestCase): +class TestProgram(unittest.TestCase): def setUp(self): char = Character("char", 128, "Hi there") self.hello_prog = Program("HELLO", "DB2JSON") diff --git a/pykit/tests/test_toolkit.py b/pykit/tests/test_toolkit.py index ffed516..3896354 100644 --- a/pykit/tests/test_toolkit.py +++ b/pykit/tests/test_toolkit.py @@ -3,7 +3,7 @@ from pykit.transport.http import connect -class TestHttpConnection(unittest.TestCase): +class TestToolkit(unittest.TestCase): def setUp(self): self.connection = connect( os.environ['PK_DB2SOCK_URL'], From f009c39937827ffa0fcda634c1607caf2df7d666 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Thu, 19 Jul 2018 16:02:58 -0500 Subject: [PATCH 08/33] Clean up ServiceProgram test --- pykit/ServiceProgram.py | 29 ++++++++++++++++++++++++++ pykit/__init__.py | 3 ++- pykit/tests/test_service_program.py | 32 +++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 pykit/ServiceProgram.py create mode 100644 pykit/tests/test_service_program.py diff --git a/pykit/ServiceProgram.py b/pykit/ServiceProgram.py new file mode 100644 index 0000000..f453e8a --- /dev/null +++ b/pykit/ServiceProgram.py @@ -0,0 +1,29 @@ +class ServiceProgram: + """ + Object for calling an IBM i Program. + """ + def __init__(self, name, library='', function=''): + self.name = name + self.library = library + self.parameters = [] + self.payload = { + "pgm": [{"name": name, "lib": library, "func": function}] + } + + def add_parameter(self, parameter): + """ + + :param parameter: Parameter to be added + :return: + """ + self.parameters.append(parameter) + + def get_payload(self): + if len(self.parameters) is 1: + self.payload["pgm"].append({"s": self.parameters[0].get_payload()}) + else: + self.payload["pgm"].append({"s":[]}) + for p in self.parameters: + self.payload["pgm"][-1]["s"].append(p.get_payload()) + + return self.payload diff --git a/pykit/__init__.py b/pykit/__init__.py index b5cd178..f2e5621 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -3,4 +3,5 @@ from .Integer import Integer from .Float import Float from .Character import Character -from .Program import Program \ No newline at end of file +from .Program import Program +from .ServiceProgram import ServiceProgram \ No newline at end of file diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py new file mode 100644 index 0000000..1682af0 --- /dev/null +++ b/pykit/tests/test_service_program.py @@ -0,0 +1,32 @@ +import unittest +import os +from pykit.transport.http import connect +from pykit import Character, ServiceProgram, Integer, Float + + +class TestServiceProgram(unittest.TestCase): + def setUp(self): + char = Character("char", 128, "Hi there") + self.hello_prog = ServiceProgram("HELLOSRV", "DB2JSON", "HELLO") + self.hello_prog.add_parameter(char) + + def test_hello(self): + self.assertEqual( + self.hello_prog.get_payload(), + {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLO"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} + ) + + def test_execute_hello_world(self): + connection = connect( + os.environ['PK_DB2SOCK_URL'], + db2sock_auth=( + os.environ['PK_DB2SOCK_USER'], os.environ['PK_DB2SOCK_PASS'])) + toolkit = connection.toolkit() + toolkit.add(self.hello_prog) + response = toolkit.execute() + print(response) + self.assertEqual(response, {"script": [{"pgm": ["HELLOSRV", "DB2JSON", "HELLO", {"char": "Hello World"}]}]}) + + +if __name__ == '__main__': + unittest.main() From 4c4ba0fe026a45fffad1a01dbbae6c029c1b9984 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Thu, 19 Jul 2018 16:13:23 -0500 Subject: [PATCH 09/33] Remove print from test --- pykit/tests/test_service_program.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 1682af0..9f89504 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -24,7 +24,6 @@ def test_execute_hello_world(self): toolkit = connection.toolkit() toolkit.add(self.hello_prog) response = toolkit.execute() - print(response) self.assertEqual(response, {"script": [{"pgm": ["HELLOSRV", "DB2JSON", "HELLO", {"char": "Hello World"}]}]}) From d00313241714c0b1115d08bff28c871902fca668 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 16:03:26 -0700 Subject: [PATCH 10/33] Make service program extension of program, and add parameter parent class --- pykit/Character.py | 5 +++-- pykit/Float.py | 5 +++-- pykit/Integer.py | 6 ++++-- pykit/Parameter.py | 21 +++++++++++++++++++++ pykit/ServiceProgram.py | 21 ++++++++------------- pykit/tests/test_service_program.py | 9 +++++++++ 6 files changed, 48 insertions(+), 19 deletions(-) diff --git a/pykit/Character.py b/pykit/Character.py index e2ab76c..051c5b5 100644 --- a/pykit/Character.py +++ b/pykit/Character.py @@ -1,4 +1,5 @@ -class Character: +import Parameter +class Character(Parameter): """ Object for IBM i Character. """ @@ -19,5 +20,5 @@ def __init__(self, name, length, value): def get_payload(self): self.payload['type'] = str(self.length) + 'a' - self.payload['value'] = self.value + Parameter.get_payload(self); return self.payload diff --git a/pykit/Float.py b/pykit/Float.py index 25d883e..1b3c6aa 100644 --- a/pykit/Float.py +++ b/pykit/Float.py @@ -1,4 +1,5 @@ -class Float: +import Parameter +class Float(Parameter): """ Object for IBM i Float. """ @@ -21,5 +22,5 @@ def __init__(self, name, length, precision, value): def get_payload(self): self.payload['type'] = str(self.length) + 'f' + str(self.precision) - self.payload['value'] = self.value + Parameter.get_payload(self); return self.payload diff --git a/pykit/Integer.py b/pykit/Integer.py index d611921..b50ae0a 100644 --- a/pykit/Integer.py +++ b/pykit/Integer.py @@ -1,4 +1,5 @@ -class Integer: +import Parameter +class Integer(Parameter): """ Object for IBM i Integer. """ @@ -20,5 +21,6 @@ def __init__(self, name, length, value, signed=True): def get_payload(self): self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' - self.payload['value'] = self.value + Parameter.get_payload(self); + return self.payload diff --git a/pykit/Parameter.py b/pykit/Parameter.py index e69de29..6fdb687 100644 --- a/pykit/Parameter.py +++ b/pykit/Parameter.py @@ -0,0 +1,21 @@ +class Parameter: + """ + Object for IBM i Parameters. + """ + def __init__(self, name, value): + """ + :param name: + :param value: + """ + self.value = value + self.name = str(name) + self.isReturn = False + self.payload = {"name":self.name} + + + def get_payload(self): + self.payload['value'] = self.value + if self.isReturn: + self.payload['by'] = 'return' + + return self.payload \ No newline at end of file diff --git a/pykit/ServiceProgram.py b/pykit/ServiceProgram.py index f453e8a..dcf0a0f 100644 --- a/pykit/ServiceProgram.py +++ b/pykit/ServiceProgram.py @@ -1,4 +1,6 @@ -class ServiceProgram: +import Program + +class ServiceProgram(Program): """ Object for calling an IBM i Program. """ @@ -10,20 +12,13 @@ def __init__(self, name, library='', function=''): "pgm": [{"name": name, "lib": library, "func": function}] } - def add_parameter(self, parameter): + def add_return(self, parameter): """ - :param parameter: Parameter to be added + :param parameter: Return parameter to be added :return: """ + parameter.isReturn = True self.parameters.append(parameter) - - def get_payload(self): - if len(self.parameters) is 1: - self.payload["pgm"].append({"s": self.parameters[0].get_payload()}) - else: - self.payload["pgm"].append({"s":[]}) - for p in self.parameters: - self.payload["pgm"][-1]["s"].append(p.get_payload()) - - return self.payload + + \ No newline at end of file diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 9f89504..624c848 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -7,14 +7,23 @@ class TestServiceProgram(unittest.TestCase): def setUp(self): char = Character("char", 128, "Hi there") + char_return = Character("char", 128, "Hi back") self.hello_prog = ServiceProgram("HELLOSRV", "DB2JSON", "HELLO") self.hello_prog.add_parameter(char) + self.hello_prog_return = ServiceProgram("HELLOSRV", "DB2JSON", "HELLOAGAIN") + self.hello_prog_return.add_parameter(char) + self.hello_prog_return.add_return(char_return) + def test_hello(self): self.assertEqual( self.hello_prog.get_payload(), {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLO"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} ) + self.assertEqual( + self.hello_prog_return.get_payload(), + {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLOAGAIN"}, {"s":[{"name":"char", "type":"128a", "value":"Hi there"},{"name":"char", "type":"128a", "value":"Hi back", "by":"return"}]}]} + ) def test_execute_hello_world(self): connection = connect( From c690807223ac9c1c2208018f2bda1d5e5b0ec14c Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 16:44:47 -0700 Subject: [PATCH 11/33] Combine classes into module --- pykit/Character.py | 24 ----------- pykit/Float.py | 26 ------------ pykit/Integer.py | 26 ------------ pykit/Parameter.py | 21 ---------- pykit/types.py | 101 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 97 deletions(-) delete mode 100644 pykit/Character.py delete mode 100644 pykit/Float.py delete mode 100644 pykit/Integer.py delete mode 100644 pykit/Parameter.py create mode 100644 pykit/types.py diff --git a/pykit/Character.py b/pykit/Character.py deleted file mode 100644 index 051c5b5..0000000 --- a/pykit/Character.py +++ /dev/null @@ -1,24 +0,0 @@ -import Parameter -class Character(Parameter): - """ - Object for IBM i Character. - """ - def __init__(self, name, length, value): - """ - How much error checking do we want here? - Should we check that length is positive? - Should we check if value matches length? - Should we truncate the value to the length? - - :param length: - :param value: - """ - self.length = length - self.value = value - self.name = name - self.payload = {"name":name} - - def get_payload(self): - self.payload['type'] = str(self.length) + 'a' - Parameter.get_payload(self); - return self.payload diff --git a/pykit/Float.py b/pykit/Float.py deleted file mode 100644 index 1b3c6aa..0000000 --- a/pykit/Float.py +++ /dev/null @@ -1,26 +0,0 @@ -import Parameter -class Float(Parameter): - """ - Object for IBM i Float. - """ - def __init__(self, name, length, precision, value): - """ - How much error checking do we want here? - Should we check that length is positive? - Should we check if value matches length? - Should we truncate the value to the length? - - :param length: - :param precision: - :param value: - """ - self.length = length - self.precision = precision - self.value = value - self.name = str(name) - self.payload = {"name":self.name} - - def get_payload(self): - self.payload['type'] = str(self.length) + 'f' + str(self.precision) - Parameter.get_payload(self); - return self.payload diff --git a/pykit/Integer.py b/pykit/Integer.py deleted file mode 100644 index b50ae0a..0000000 --- a/pykit/Integer.py +++ /dev/null @@ -1,26 +0,0 @@ -import Parameter -class Integer(Parameter): - """ - Object for IBM i Integer. - """ - def __init__(self, name, length, value, signed=True): - """ - How much error checking do we want here? - Should we check that length is positive? - Should we check if value matches length? - Should we truncate the value to the length? - - :param length: - :param value: - """ - self.length = length - self.value = value - self.name = str(name) - self.signed = signed - self.payload = {"name":self.name} - - def get_payload(self): - self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' - Parameter.get_payload(self); - - return self.payload diff --git a/pykit/Parameter.py b/pykit/Parameter.py deleted file mode 100644 index 6fdb687..0000000 --- a/pykit/Parameter.py +++ /dev/null @@ -1,21 +0,0 @@ -class Parameter: - """ - Object for IBM i Parameters. - """ - def __init__(self, name, value): - """ - :param name: - :param value: - """ - self.value = value - self.name = str(name) - self.isReturn = False - self.payload = {"name":self.name} - - - def get_payload(self): - self.payload['value'] = self.value - if self.isReturn: - self.payload['by'] = 'return' - - return self.payload \ No newline at end of file diff --git a/pykit/types.py b/pykit/types.py new file mode 100644 index 0000000..edb9588 --- /dev/null +++ b/pykit/types.py @@ -0,0 +1,101 @@ +class Parameter: + """ + Object for IBM i Parameters. + """ + def __init__(self, name, value): + """ + :param name: + :param value: + """ + self.value = value + self.name = str(name) + self.isReturn = False + self.payload = {"name":self.name} + + + def get_payload(self): + self.payload['value'] = self.value + if self.isReturn: + self.payload['by'] = 'return' + + return self.payload + +class Float(Parameter): + """ + Object for IBM i Float. + """ + def __init__(self, name, length, precision, value): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param precision: + :param value: + """ + self.length = length + self.precision = precision + self.value = value + self.name = str(name) + self.payload = {"name":self.name} + + def get_payload(self): + self.payload['type'] = str(self.length) + 'f' + str(self.precision) + Parameter.get_payload(self); + return self.payload + + +class Integer(Parameter): + """ + Object for IBM i Integer. + """ + def __init__(self, name, length, value, signed=True): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param value: + """ + self.length = length + self.value = value + self.name = str(name) + self.signed = signed + self.payload = {"name":self.name} + + def get_payload(self): + self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' + Parameter.get_payload(self); + + return self.payload + + +class Character(Parameter): + """ + Object for IBM i Character. + """ + def __init__(self, name, length, value): + """ + How much error checking do we want here? + Should we check that length is positive? + Should we check if value matches length? + Should we truncate the value to the length? + + :param length: + :param value: + """ + self.length = length + self.value = value + self.name = name + self.payload = {"name":name} + + def get_payload(self): + self.payload['type'] = str(self.length) + 'a' + Parameter.get_payload(self); + return self.payload + + \ No newline at end of file From 7b2047a9e055cf2a0bbe51732abd351862759a7b Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 16:56:47 -0700 Subject: [PATCH 12/33] update unit tests for module change --- pykit/tests/test_character.py | 2 +- pykit/tests/test_float.py | 2 +- pykit/tests/test_integer.py | 2 +- pykit/tests/test_program.py | 2 +- pykit/tests/test_service_program.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pykit/tests/test_character.py b/pykit/tests/test_character.py index fd37e64..b0e244b 100644 --- a/pykit/tests/test_character.py +++ b/pykit/tests/test_character.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import Character +from pykit import types class TestCharacter(unittest.TestCase): diff --git a/pykit/tests/test_float.py b/pykit/tests/test_float.py index dbf6dc0..ed3cd7f 100644 --- a/pykit/tests/test_float.py +++ b/pykit/tests/test_float.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import Float +from pykit import types class TestFloat(unittest.TestCase): diff --git a/pykit/tests/test_integer.py b/pykit/tests/test_integer.py index 14c11ee..9cfdcd1 100644 --- a/pykit/tests/test_integer.py +++ b/pykit/tests/test_integer.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import Integer +from pykit import types class TestInteger(unittest.TestCase): diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py index 9df7f4e..5626d38 100644 --- a/pykit/tests/test_program.py +++ b/pykit/tests/test_program.py @@ -1,7 +1,7 @@ import unittest import os from pykit.transport.http import connect -from pykit import Character, Program, Integer, Float +from pykit import types class TestProgram(unittest.TestCase): diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 624c848..8304986 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -1,7 +1,7 @@ import unittest import os from pykit.transport.http import connect -from pykit import Character, ServiceProgram, Integer, Float +from pykit import types class TestServiceProgram(unittest.TestCase): From 8e5991ed0266416fc3d48cc2ff24321ad89981b6 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:05:02 -0700 Subject: [PATCH 13/33] updated init --- pykit/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pykit/__init__.py b/pykit/__init__.py index 707ff57..4aed5a5 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -1,7 +1,7 @@ __version__ = "0.2.0" -from .ClCommand import ClCommand -from .Integer import Integer -from .Float import Float -from .Character import Character +from .types import ClCommand +from .types import Integer +from .types import Float +from .types import Character from .Program import Program from .ServiceProgram import ServiceProgram From e519f3631e461f81583ddde623bebd0adc96eefd Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:06:08 -0700 Subject: [PATCH 14/33] oops --- pykit/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/__init__.py b/pykit/__init__.py index 4aed5a5..d124d68 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -1,5 +1,5 @@ __version__ = "0.2.0" -from .types import ClCommand +from .ClCommand import ClCommand from .types import Integer from .types import Float from .types import Character From 3b5782a14b15703db52a6dad9dfeace5b043e926 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:09:10 -0700 Subject: [PATCH 15/33] combine into program module --- pykit/ServiceProgram.py | 24 ------------------------ pykit/__init__.py | 4 ++-- pykit/{Program.py => program.py} | 24 ++++++++++++++++++++++++ pykit/tests/test_program.py | 2 +- pykit/tests/test_service_program.py | 2 +- 5 files changed, 28 insertions(+), 28 deletions(-) delete mode 100644 pykit/ServiceProgram.py rename pykit/{Program.py => program.py} (58%) diff --git a/pykit/ServiceProgram.py b/pykit/ServiceProgram.py deleted file mode 100644 index dcf0a0f..0000000 --- a/pykit/ServiceProgram.py +++ /dev/null @@ -1,24 +0,0 @@ -import Program - -class ServiceProgram(Program): - """ - Object for calling an IBM i Program. - """ - def __init__(self, name, library='', function=''): - self.name = name - self.library = library - self.parameters = [] - self.payload = { - "pgm": [{"name": name, "lib": library, "func": function}] - } - - def add_return(self, parameter): - """ - - :param parameter: Return parameter to be added - :return: - """ - parameter.isReturn = True - self.parameters.append(parameter) - - \ No newline at end of file diff --git a/pykit/__init__.py b/pykit/__init__.py index d124d68..8bb7b0c 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -3,5 +3,5 @@ from .types import Integer from .types import Float from .types import Character -from .Program import Program -from .ServiceProgram import ServiceProgram +from .program import Program +from .program import ServiceProgram diff --git a/pykit/Program.py b/pykit/program.py similarity index 58% rename from pykit/Program.py rename to pykit/program.py index ef8c1b3..585114e 100644 --- a/pykit/Program.py +++ b/pykit/program.py @@ -27,3 +27,27 @@ def get_payload(self): self.payload["pgm"][-1]["s"].append(p.get_payload()) return self.payload + + +class ServiceProgram(Program): + """ + Object for calling an IBM i Program. + """ + def __init__(self, name, library='', function=''): + self.name = name + self.library = library + self.parameters = [] + self.payload = { + "pgm": [{"name": name, "lib": library, "func": function}] + } + + def add_return(self, parameter): + """ + + :param parameter: Return parameter to be added + :return: + """ + parameter.isReturn = True + self.parameters.append(parameter) + + \ No newline at end of file diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py index 5626d38..ec61c59 100644 --- a/pykit/tests/test_program.py +++ b/pykit/tests/test_program.py @@ -1,7 +1,7 @@ import unittest import os from pykit.transport.http import connect -from pykit import types +from pykit import * class TestProgram(unittest.TestCase): diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 8304986..88c5599 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -1,7 +1,7 @@ import unittest import os from pykit.transport.http import connect -from pykit import types +from pykit import * class TestServiceProgram(unittest.TestCase): From 2c48f1d95a89da1efe6dae46ff4bfde1386f941c Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:11:16 -0700 Subject: [PATCH 16/33] add isreturn to types --- pykit/types.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pykit/types.py b/pykit/types.py index edb9588..6df5a55 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -39,6 +39,7 @@ def __init__(self, name, length, precision, value): self.precision = precision self.value = value self.name = str(name) + self.isReturn = False self.payload = {"name":self.name} def get_payload(self): @@ -65,6 +66,7 @@ def __init__(self, name, length, value, signed=True): self.value = value self.name = str(name) self.signed = signed + self.isReturn = False self.payload = {"name":self.name} def get_payload(self): @@ -91,6 +93,7 @@ def __init__(self, name, length, value): self.length = length self.value = value self.name = name + self.isReturn = False self.payload = {"name":name} def get_payload(self): From d7ae8627ece9b958c8002ab0ef72f50e1fc5d2c6 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:16:27 -0700 Subject: [PATCH 17/33] fix imports --- pykit/tests/test_character.py | 2 +- pykit/tests/test_float.py | 2 +- pykit/tests/test_integer.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pykit/tests/test_character.py b/pykit/tests/test_character.py index b0e244b..fd37e64 100644 --- a/pykit/tests/test_character.py +++ b/pykit/tests/test_character.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import types +from pykit import Character class TestCharacter(unittest.TestCase): diff --git a/pykit/tests/test_float.py b/pykit/tests/test_float.py index ed3cd7f..dbf6dc0 100644 --- a/pykit/tests/test_float.py +++ b/pykit/tests/test_float.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import types +from pykit import Float class TestFloat(unittest.TestCase): diff --git a/pykit/tests/test_integer.py b/pykit/tests/test_integer.py index 9cfdcd1..14c11ee 100644 --- a/pykit/tests/test_integer.py +++ b/pykit/tests/test_integer.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import types +from pykit import Integer class TestInteger(unittest.TestCase): From 15db89503cc83c3908651ad4aa10f430c58da63a Mon Sep 17 00:00:00 2001 From: jordiwes Date: Mon, 23 Jul 2018 17:33:40 -0700 Subject: [PATCH 18/33] add by value and first attempt at varying char --- pykit/types.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/pykit/types.py b/pykit/types.py index 6df5a55..d7802ff 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -17,6 +17,9 @@ def get_payload(self): self.payload['value'] = self.value if self.isReturn: self.payload['by'] = 'return' + + if self.byValue: + self.payload['by'] = 'val' return self.payload @@ -24,7 +27,7 @@ class Float(Parameter): """ Object for IBM i Float. """ - def __init__(self, name, length, precision, value): + def __init__(self, name, length, precision, value, byValue=False): """ How much error checking do we want here? Should we check that length is positive? @@ -52,7 +55,7 @@ class Integer(Parameter): """ Object for IBM i Integer. """ - def __init__(self, name, length, value, signed=True): + def __init__(self, name, length, value, signed=True, byValue=False): """ How much error checking do we want here? Should we check that length is positive? @@ -67,6 +70,7 @@ def __init__(self, name, length, value, signed=True): self.name = str(name) self.signed = signed self.isReturn = False + self.byValue = False self.payload = {"name":self.name} def get_payload(self): @@ -80,7 +84,7 @@ class Character(Parameter): """ Object for IBM i Character. """ - def __init__(self, name, length, value): + def __init__(self, name, length, value, byValue=False): """ How much error checking do we want here? Should we check that length is positive? @@ -101,4 +105,26 @@ def get_payload(self): Parameter.get_payload(self); return self.payload + +class Binary(Parameter): + """ + Object for IBM i Binary. + """ + def __init__(self, name, length, value, byValue=False): + """ + + :param length: + :param value: + """ + self.length = length + self.value = value + self.name = name + self.isReturn = False + self.payload = {"name":name} + + def get_payload(self): + self.payload['type'] = str(self.length) + 'b' + Parameter.get_payload(self); + return self.payload + \ No newline at end of file From c88f046953d47ed3bc59a5f9e0887d11e74e2499 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:19:05 -0700 Subject: [PATCH 19/33] add decimal tyoe, consolidate tests --- pykit/program.py | 10 +++++++ pykit/tests/test_character.py | 13 ---------- pykit/tests/test_float.py | 13 ---------- pykit/tests/test_integer.py | 17 ------------ pykit/tests/test_types.py | 49 +++++++++++++++++++++++++++++++++++ pykit/types.py | 49 ++++++++++++++++++++++++++++------- 6 files changed, 99 insertions(+), 52 deletions(-) delete mode 100644 pykit/tests/test_character.py delete mode 100644 pykit/tests/test_float.py delete mode 100644 pykit/tests/test_integer.py create mode 100644 pykit/tests/test_types.py diff --git a/pykit/program.py b/pykit/program.py index 585114e..ffb8851 100644 --- a/pykit/program.py +++ b/pykit/program.py @@ -18,6 +18,16 @@ def add_parameter(self, parameter): """ self.parameters.append(parameter) + def add_parameter_by_value(self, parameter): + """ + + :param parameter: Parameter to be added + :return: + """ + parameter.byValue = True + self.parameters.append(parameter) + + def get_payload(self): if len(self.parameters) is 1: self.payload["pgm"].append({"s": self.parameters[0].get_payload()}) diff --git a/pykit/tests/test_character.py b/pykit/tests/test_character.py deleted file mode 100644 index fd37e64..0000000 --- a/pykit/tests/test_character.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest -import os -from pykit import Character - - -class TestCharacter(unittest.TestCase): - def test_character_payload(self): - char = Character('achar', 10, "Hello") - self.assertEqual(char.get_payload(), {"name":"achar", "type":"10a", "value":"Hello"}) - - -if __name__ == '__main__': - unittest.main() diff --git a/pykit/tests/test_float.py b/pykit/tests/test_float.py deleted file mode 100644 index dbf6dc0..0000000 --- a/pykit/tests/test_float.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest -import os -from pykit import Float - - -class TestFloat(unittest.TestCase): - def test_float_payload(self): - new_float = Float('afloat', 4, 2, 5.55) - self.assertEqual(new_float.get_payload(), {"name":"afloat", "type":"4f2", "value":5.55}) - - -if __name__ == '__main__': - unittest.main() diff --git a/pykit/tests/test_integer.py b/pykit/tests/test_integer.py deleted file mode 100644 index 14c11ee..0000000 --- a/pykit/tests/test_integer.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest -import os -from pykit import Integer - - -class TestInteger(unittest.TestCase): - def test_integer_payload(self): - new_int = Integer('aint8', 3, 1) - self.assertEqual(new_int.get_payload(), {"name":"aint8", "type":"3i0", "value":1}) - - def test_unsigned_integer_payload(self): - new_int = Integer('auint8', 3, 1, False) - self.assertEqual(new_int.get_payload(), {"name":"auint8", "type":"3u0", "value":1}) - - -if __name__ == '__main__': - unittest.main() diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py new file mode 100644 index 0000000..86d6b5f --- /dev/null +++ b/pykit/tests/test_types.py @@ -0,0 +1,49 @@ +import unittest +import os +from pykit import Integer, Float, Character, Decimal, Binary + + +class TestInteger(unittest.TestCase): + def test_integer_payload(self): + new_int = Integer('aint8', 3, 1) + self.assertEqual(new_int.get_payload(), {"name":"aint8", "type":"3i0", "value":1}) + + def test_unsigned_integer_payload(self): + new_int = Integer('auint8', 3, 1, False) + self.assertEqual(new_int.get_payload(), {"name":"auint8", "type":"3u0", "value":1}) + + +class TestFloat(unittest.TestCase): + def test_float_payload(self): + new_float = Float('afloat', 4, 2, 5.55) + self.assertEqual(new_float.get_payload(), {"name":"afloat", "type":"4f2", "value":5.55}) + + +class TestCharacter(unittest.TestCase): + def test_character_payload(self): + char = Character('achar', 10, "Hello") + self.assertEqual(char.get_payload(), {"name":"achar", "type":"10a", "value":"Hello"}) + + def test_character_varying_payload(self): + char = Character('bchar', 100, "Bye", 2) + self.assertEqual(char.get_payload(), {"name":"bchar", "type":"10av2", "value":"Bye"}) + + +class TestDecimal(unittest.TestCase): + def test_decimal_payload(self): + dec = Decimal('adec', 10, 2, 850.2) + self.assertEqual(char.get_payload(), {"name":"adec", "type":"10p2", "value":850.2}) + + def test_signed_decimal_payload(self): + dec = Decimal('bdec', 9, 0, 800, True) + self.assertEqual(char.get_payload(), {"name":"bdec", "type":"9p0", "value":800}) + +class TestBinary(unittest.TestCase): + def test_binary_payload(self): + bin = Binary('abin', 2, 0000) + self.assertEqual(new_float.get_payload(), {"name":"abin", "type":"2b", "value":"0000"}) + + + +if __name__ == '__main__': + unittest.main() diff --git a/pykit/types.py b/pykit/types.py index d7802ff..561e481 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -10,14 +10,14 @@ def __init__(self, name, value): self.value = value self.name = str(name) self.isReturn = False + self.byValue = False self.payload = {"name":self.name} def get_payload(self): self.payload['value'] = self.value if self.isReturn: - self.payload['by'] = 'return' - + self.payload['by'] = 'return' if self.byValue: self.payload['by'] = 'val' @@ -27,7 +27,7 @@ class Float(Parameter): """ Object for IBM i Float. """ - def __init__(self, name, length, precision, value, byValue=False): + def __init__(self, name, length, precision, value): """ How much error checking do we want here? Should we check that length is positive? @@ -43,6 +43,7 @@ def __init__(self, name, length, precision, value, byValue=False): self.value = value self.name = str(name) self.isReturn = False + self.byValue = byValue self.payload = {"name":self.name} def get_payload(self): @@ -70,7 +71,7 @@ def __init__(self, name, length, value, signed=True, byValue=False): self.name = str(name) self.signed = signed self.isReturn = False - self.byValue = False + self.byValue = byValue self.payload = {"name":self.name} def get_payload(self): @@ -84,7 +85,33 @@ class Character(Parameter): """ Object for IBM i Character. """ - def __init__(self, name, length, value, byValue=False): + def __init__(self, name, length, value, varying=''): + """ + :param length: + :param value: + """ + self.length = length + self.value = value + self.name = name + self.isReturn = False + self.varying = varying + self.byValue = byValue + self.payload = {"name":name} + + def get_payload(self): + self.payload['type'] = str(self.length) + 'a' + if (self.varying > ''): + self.payload['type'] = self.payload['type'] + varying + 'v' + + Parameter.get_payload(self); + return self.payload + + +class Decimal(Parameter): + """ + Object for IBM i Decimal. + """ + def __init__(self, name, length, decimals, value, signed=False): """ How much error checking do we want here? Should we check that length is positive? @@ -96,13 +123,16 @@ def __init__(self, name, length, value, byValue=False): """ self.length = length self.value = value - self.name = name + self.name = str(name) + self.signed = signed + self.decimals = decimals self.isReturn = False - self.payload = {"name":name} + self.payload = {"name":self.name} def get_payload(self): - self.payload['type'] = str(self.length) + 'a' + self.payload['type'] = str(self.length) + ('s' if self.signed else 'p') + str(self.decimals) Parameter.get_payload(self); + return self.payload @@ -110,7 +140,7 @@ class Binary(Parameter): """ Object for IBM i Binary. """ - def __init__(self, name, length, value, byValue=False): + def __init__(self, name, length, value): """ :param length: @@ -120,6 +150,7 @@ def __init__(self, name, length, value, byValue=False): self.value = value self.name = name self.isReturn = False + self.byValue = byValue self.payload = {"name":name} def get_payload(self): From c100b786eeefe72469a6932a8eac2bf6d4ca8683 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:24:32 -0700 Subject: [PATCH 20/33] improt types --- pykit/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pykit/__init__.py b/pykit/__init__.py index 8bb7b0c..9193ddb 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -3,5 +3,7 @@ from .types import Integer from .types import Float from .types import Character +from .types import Decimal +from .types import Binary from .program import Program from .program import ServiceProgram From 12b8cec849c227040328611c4ec89406ee6bd83b Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:27:49 -0700 Subject: [PATCH 21/33] fix issues --- pykit/tests/test_types.py | 6 +++--- pykit/types.py | 6 +----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py index 86d6b5f..a89263b 100644 --- a/pykit/tests/test_types.py +++ b/pykit/tests/test_types.py @@ -32,16 +32,16 @@ def test_character_varying_payload(self): class TestDecimal(unittest.TestCase): def test_decimal_payload(self): dec = Decimal('adec', 10, 2, 850.2) - self.assertEqual(char.get_payload(), {"name":"adec", "type":"10p2", "value":850.2}) + self.assertEqual(dec.get_payload(), {"name":"adec", "type":"10p2", "value":850.2}) def test_signed_decimal_payload(self): dec = Decimal('bdec', 9, 0, 800, True) - self.assertEqual(char.get_payload(), {"name":"bdec", "type":"9p0", "value":800}) + self.assertEqual(dec.get_payload(), {"name":"bdec", "type":"9p0", "value":800}) class TestBinary(unittest.TestCase): def test_binary_payload(self): bin = Binary('abin', 2, 0000) - self.assertEqual(new_float.get_payload(), {"name":"abin", "type":"2b", "value":"0000"}) + self.assertEqual(bin.get_payload(), {"name":"abin", "type":"2b", "value":"0000"}) diff --git a/pykit/types.py b/pykit/types.py index 561e481..eceac22 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -43,7 +43,6 @@ def __init__(self, name, length, precision, value): self.value = value self.name = str(name) self.isReturn = False - self.byValue = byValue self.payload = {"name":self.name} def get_payload(self): @@ -56,7 +55,7 @@ class Integer(Parameter): """ Object for IBM i Integer. """ - def __init__(self, name, length, value, signed=True, byValue=False): + def __init__(self, name, length, value, signed=True): """ How much error checking do we want here? Should we check that length is positive? @@ -71,7 +70,6 @@ def __init__(self, name, length, value, signed=True, byValue=False): self.name = str(name) self.signed = signed self.isReturn = False - self.byValue = byValue self.payload = {"name":self.name} def get_payload(self): @@ -95,7 +93,6 @@ def __init__(self, name, length, value, varying=''): self.name = name self.isReturn = False self.varying = varying - self.byValue = byValue self.payload = {"name":name} def get_payload(self): @@ -150,7 +147,6 @@ def __init__(self, name, length, value): self.value = value self.name = name self.isReturn = False - self.byValue = byValue self.payload = {"name":name} def get_payload(self): From b2b99b88c3fdde4f0005893c8cc3b865ac360953 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:32:15 -0700 Subject: [PATCH 22/33] fix issues --- pykit/types.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pykit/types.py b/pykit/types.py index eceac22..fce1a7e 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -43,6 +43,7 @@ def __init__(self, name, length, precision, value): self.value = value self.name = str(name) self.isReturn = False + self.byValue = False self.payload = {"name":self.name} def get_payload(self): @@ -70,6 +71,7 @@ def __init__(self, name, length, value, signed=True): self.name = str(name) self.signed = signed self.isReturn = False + self.byValue = False self.payload = {"name":self.name} def get_payload(self): @@ -92,12 +94,13 @@ def __init__(self, name, length, value, varying=''): self.value = value self.name = name self.isReturn = False + self.byValue = False self.varying = varying self.payload = {"name":name} def get_payload(self): self.payload['type'] = str(self.length) + 'a' - if (self.varying > ''): + if self.varying: self.payload['type'] = self.payload['type'] + varying + 'v' Parameter.get_payload(self); @@ -124,6 +127,7 @@ def __init__(self, name, length, decimals, value, signed=False): self.signed = signed self.decimals = decimals self.isReturn = False + self.byValue = False self.payload = {"name":self.name} def get_payload(self): @@ -147,6 +151,7 @@ def __init__(self, name, length, value): self.value = value self.name = name self.isReturn = False + self.byValue = False self.payload = {"name":name} def get_payload(self): From a326c367d561796fc7da9cf821b86a7658827570 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:35:10 -0700 Subject: [PATCH 23/33] minor fixes for tests --- pykit/tests/test_types.py | 4 ++-- pykit/types.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py index a89263b..0a18279 100644 --- a/pykit/tests/test_types.py +++ b/pykit/tests/test_types.py @@ -36,11 +36,11 @@ def test_decimal_payload(self): def test_signed_decimal_payload(self): dec = Decimal('bdec', 9, 0, 800, True) - self.assertEqual(dec.get_payload(), {"name":"bdec", "type":"9p0", "value":800}) + self.assertEqual(dec.get_payload(), {"name":"bdec", "type":"9s0", "value":800}) class TestBinary(unittest.TestCase): def test_binary_payload(self): - bin = Binary('abin', 2, 0000) + bin = Binary('abin', 2, "0000") self.assertEqual(bin.get_payload(), {"name":"abin", "type":"2b", "value":"0000"}) diff --git a/pykit/types.py b/pykit/types.py index fce1a7e..a3f1801 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -101,7 +101,7 @@ def __init__(self, name, length, value, varying=''): def get_payload(self): self.payload['type'] = str(self.length) + 'a' if self.varying: - self.payload['type'] = self.payload['type'] + varying + 'v' + self.payload['type'] = self.payload['type'] + 'v' + self.varying Parameter.get_payload(self); return self.payload From d023d685746f53798ec8f0b726a68686b86f17aa Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:36:48 -0700 Subject: [PATCH 24/33] make varlen a string --- pykit/types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/types.py b/pykit/types.py index a3f1801..2004d70 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -101,7 +101,7 @@ def __init__(self, name, length, value, varying=''): def get_payload(self): self.payload['type'] = str(self.length) + 'a' if self.varying: - self.payload['type'] = self.payload['type'] + 'v' + self.varying + self.payload['type'] = self.payload['type'] + 'v' + str(self.varying) Parameter.get_payload(self); return self.payload From 4f8e0f4a490f25eafe02bcc8ae51757c44a3fa4e Mon Sep 17 00:00:00 2001 From: jordiwes Date: Tue, 24 Jul 2018 12:38:05 -0700 Subject: [PATCH 25/33] fix test --- pykit/tests/test_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py index 0a18279..061d27b 100644 --- a/pykit/tests/test_types.py +++ b/pykit/tests/test_types.py @@ -26,7 +26,7 @@ def test_character_payload(self): def test_character_varying_payload(self): char = Character('bchar', 100, "Bye", 2) - self.assertEqual(char.get_payload(), {"name":"bchar", "type":"10av2", "value":"Bye"}) + self.assertEqual(char.get_payload(), {"name":"bchar", "type":"100av2", "value":"Bye"}) class TestDecimal(unittest.TestCase): From 2574aa71b93b6fed3d2b04654339c63bbe04caff Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Tue, 24 Jul 2018 15:07:39 -0500 Subject: [PATCH 26/33] Fix line lengths --- pykit/tests/test_service_program.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 88c5599..9ba1bfe 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -18,11 +18,14 @@ def setUp(self): def test_hello(self): self.assertEqual( self.hello_prog.get_payload(), - {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLO"}, {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} + {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLO"}, + {"s":{"name":"char", "type":"128a", "value":"Hi there"}}]} ) self.assertEqual( self.hello_prog_return.get_payload(), - {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLOAGAIN"}, {"s":[{"name":"char", "type":"128a", "value":"Hi there"},{"name":"char", "type":"128a", "value":"Hi back", "by":"return"}]}]} + {"pgm":[{"name":"HELLOSRV", "lib":"DB2JSON", "func": "HELLOAGAIN"}, + {"s":[{"name":"char", "type":"128a", "value":"Hi there"}, + {"name":"char", "type":"128a", "value":"Hi back", "by":"return"}]}]} ) def test_execute_hello_world(self): From d8bd434d2e09ff643b6dcc21b8d1f8181b15994f Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Tue, 24 Jul 2018 15:07:51 -0500 Subject: [PATCH 27/33] Remove semicolons --- pykit/types.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pykit/types.py b/pykit/types.py index 2004d70..5b41a63 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -35,20 +35,16 @@ def __init__(self, name, length, precision, value): Should we truncate the value to the length? :param length: - :param precision: + :param precision:s :param value: """ + Parameter.__init__(self, name, value) self.length = length self.precision = precision - self.value = value - self.name = str(name) - self.isReturn = False - self.byValue = False - self.payload = {"name":self.name} def get_payload(self): self.payload['type'] = str(self.length) + 'f' + str(self.precision) - Parameter.get_payload(self); + Parameter.get_payload(self) return self.payload @@ -76,7 +72,7 @@ def __init__(self, name, length, value, signed=True): def get_payload(self): self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' - Parameter.get_payload(self); + Parameter.get_payload(self) return self.payload @@ -103,7 +99,7 @@ def get_payload(self): if self.varying: self.payload['type'] = self.payload['type'] + 'v' + str(self.varying) - Parameter.get_payload(self); + Parameter.get_payload(self) return self.payload @@ -132,7 +128,7 @@ def __init__(self, name, length, decimals, value, signed=False): def get_payload(self): self.payload['type'] = str(self.length) + ('s' if self.signed else 'p') + str(self.decimals) - Parameter.get_payload(self); + Parameter.get_payload(self) return self.payload @@ -156,7 +152,7 @@ def __init__(self, name, length, value): def get_payload(self): self.payload['type'] = str(self.length) + 'b' - Parameter.get_payload(self); + Parameter.get_payload(self) return self.payload \ No newline at end of file From 050abb98794e080a783e1aa4dd0a360c7eecfd86 Mon Sep 17 00:00:00 2001 From: Josh Hall Date: Tue, 24 Jul 2018 15:12:03 -0500 Subject: [PATCH 28/33] Change types to use super class __init__ --- pykit/types.py | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/pykit/types.py b/pykit/types.py index 5b41a63..ac9daff 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -62,13 +62,9 @@ def __init__(self, name, length, value, signed=True): :param length: :param value: """ + Parameter.__init__(self, name, value) self.length = length - self.value = value - self.name = str(name) self.signed = signed - self.isReturn = False - self.byValue = False - self.payload = {"name":self.name} def get_payload(self): self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' @@ -86,13 +82,9 @@ def __init__(self, name, length, value, varying=''): :param length: :param value: """ + Parameter.__init__(self, name, value) self.length = length - self.value = value - self.name = name - self.isReturn = False - self.byValue = False self.varying = varying - self.payload = {"name":name} def get_payload(self): self.payload['type'] = str(self.length) + 'a' @@ -117,14 +109,10 @@ def __init__(self, name, length, decimals, value, signed=False): :param length: :param value: """ + Parameter.__init__(self, name, value) self.length = length - self.value = value - self.name = str(name) self.signed = signed self.decimals = decimals - self.isReturn = False - self.byValue = False - self.payload = {"name":self.name} def get_payload(self): self.payload['type'] = str(self.length) + ('s' if self.signed else 'p') + str(self.decimals) @@ -143,12 +131,8 @@ def __init__(self, name, length, value): :param length: :param value: """ + Parameter.__init__(self, name, value) self.length = length - self.value = value - self.name = name - self.isReturn = False - self.byValue = False - self.payload = {"name":name} def get_payload(self): self.payload['type'] = str(self.length) + 'b' From 302688a0b2878dacd8cef3da6464a7d846fef081 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Thu, 26 Jul 2018 21:30:22 -0700 Subject: [PATCH 29/33] separate Types class and update everything else for this --- pykit/program.py | 18 --------- pykit/tests/test_program.py | 8 ++-- pykit/tests/test_service_program.py | 4 +- pykit/tests/test_types.py | 16 ++++---- pykit/types.py | 63 ++++++++++++++++++----------- 5 files changed, 53 insertions(+), 56 deletions(-) diff --git a/pykit/program.py b/pykit/program.py index ffb8851..a646c48 100644 --- a/pykit/program.py +++ b/pykit/program.py @@ -18,15 +18,6 @@ def add_parameter(self, parameter): """ self.parameters.append(parameter) - def add_parameter_by_value(self, parameter): - """ - - :param parameter: Parameter to be added - :return: - """ - parameter.byValue = True - self.parameters.append(parameter) - def get_payload(self): if len(self.parameters) is 1: @@ -50,14 +41,5 @@ def __init__(self, name, library='', function=''): self.payload = { "pgm": [{"name": name, "lib": library, "func": function}] } - - def add_return(self, parameter): - """ - - :param parameter: Return parameter to be added - :return: - """ - parameter.isReturn = True - self.parameters.append(parameter) \ No newline at end of file diff --git a/pykit/tests/test_program.py b/pykit/tests/test_program.py index ec61c59..ef77dff 100644 --- a/pykit/tests/test_program.py +++ b/pykit/tests/test_program.py @@ -6,7 +6,7 @@ class TestProgram(unittest.TestCase): def setUp(self): - char = Character("char", 128, "Hi there") + char = Parameter(Character("char", 128, "Hi there")) self.hello_prog = Program("HELLO", "DB2JSON") self.hello_prog.add_parameter(char) @@ -18,9 +18,9 @@ def test_hello_world(self): # WIP def test_rainbow(self): - int = Integer("aint8", 3, 1) - float = Float("afloat", 4, 2, 5.55) - char = Character("achar", 32, "A") + int = Parameter(Integer("aint8", 3, 1)) + float = Parameter(Float("afloat", 4, 2, 5.55)) + char = Parameter(Character("achar", 32, "A")) rainbow = Program("RAINBOW", "DB2JSON") rainbow.add_parameter(int) rainbow.add_parameter(float) diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index 9ba1bfe..a1a4571 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -6,8 +6,8 @@ class TestServiceProgram(unittest.TestCase): def setUp(self): - char = Character("char", 128, "Hi there") - char_return = Character("char", 128, "Hi back") + char = Parameter(Character("char", 128, "Hi there")) + char_return = Parameter(Character("char", 128, "Hi back"), direction='out', byValue=False, isReturn=True) self.hello_prog = ServiceProgram("HELLOSRV", "DB2JSON", "HELLO") self.hello_prog.add_parameter(char) self.hello_prog_return = ServiceProgram("HELLOSRV", "DB2JSON", "HELLOAGAIN") diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py index 061d27b..8c5ea4b 100644 --- a/pykit/tests/test_types.py +++ b/pykit/tests/test_types.py @@ -5,42 +5,42 @@ class TestInteger(unittest.TestCase): def test_integer_payload(self): - new_int = Integer('aint8', 3, 1) + new_int = Parameter(Integer('aint8', 3, 1)) self.assertEqual(new_int.get_payload(), {"name":"aint8", "type":"3i0", "value":1}) def test_unsigned_integer_payload(self): - new_int = Integer('auint8', 3, 1, False) + new_int = Parameter(Integer('auint8', 3, 1, False)) self.assertEqual(new_int.get_payload(), {"name":"auint8", "type":"3u0", "value":1}) class TestFloat(unittest.TestCase): def test_float_payload(self): - new_float = Float('afloat', 4, 2, 5.55) + new_float = Parameter(Float('afloat', 4, 2, 5.55)) self.assertEqual(new_float.get_payload(), {"name":"afloat", "type":"4f2", "value":5.55}) class TestCharacter(unittest.TestCase): def test_character_payload(self): - char = Character('achar', 10, "Hello") + char = Parameter(Character('achar', 10, "Hello")) self.assertEqual(char.get_payload(), {"name":"achar", "type":"10a", "value":"Hello"}) def test_character_varying_payload(self): - char = Character('bchar', 100, "Bye", 2) + char = Parameter(Character('bchar', 100, "Bye", 2)) self.assertEqual(char.get_payload(), {"name":"bchar", "type":"100av2", "value":"Bye"}) class TestDecimal(unittest.TestCase): def test_decimal_payload(self): - dec = Decimal('adec', 10, 2, 850.2) + dec = Parameter(Decimal('adec', 10, 2, 850.2)) self.assertEqual(dec.get_payload(), {"name":"adec", "type":"10p2", "value":850.2}) def test_signed_decimal_payload(self): - dec = Decimal('bdec', 9, 0, 800, True) + dec = Parameter(Decimal('bdec', 9, 0, 800, True)) self.assertEqual(dec.get_payload(), {"name":"bdec", "type":"9s0", "value":800}) class TestBinary(unittest.TestCase): def test_binary_payload(self): - bin = Binary('abin', 2, "0000") + bin = Parameter(Binary('abin', 2, "0000")) self.assertEqual(bin.get_payload(), {"name":"abin", "type":"2b", "value":"0000"}) diff --git a/pykit/types.py b/pykit/types.py index ac9daff..e68a45c 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -1,6 +1,28 @@ class Parameter: + def __init__(self, parameterType, direction='inout', byValue=False, isReturn=False): + """ + :param name: + :param value: + """ + self.parameterType = parameterType + self.direction = direction + self.isReturn = isReturn + self.byValue = False + self.payload = {"name":self.name} + + def get_payload(self): + self.payload = self.parameterType.get_payload() + if self.isReturn: + self.payload['by'] = 'return' + if self.byValue: + self.payload['by'] = 'val' + + return self.payload + + +class ParameterType: """ - Object for IBM i Parameters. + Object for IBM i ParameterTypes. """ def __init__(self, name, value): """ @@ -9,21 +31,14 @@ def __init__(self, name, value): """ self.value = value self.name = str(name) - self.isReturn = False - self.byValue = False self.payload = {"name":self.name} def get_payload(self): - self.payload['value'] = self.value - if self.isReturn: - self.payload['by'] = 'return' - if self.byValue: - self.payload['by'] = 'val' - + self.payload['value'] = self.value return self.payload -class Float(Parameter): +class Float(ParameterType): """ Object for IBM i Float. """ @@ -38,17 +53,17 @@ def __init__(self, name, length, precision, value): :param precision:s :param value: """ - Parameter.__init__(self, name, value) + ParameterType.__init__(self, name, value) self.length = length self.precision = precision def get_payload(self): self.payload['type'] = str(self.length) + 'f' + str(self.precision) - Parameter.get_payload(self) + ParameterType.get_payload(self) return self.payload -class Integer(Parameter): +class Integer(ParameterType): """ Object for IBM i Integer. """ @@ -62,18 +77,18 @@ def __init__(self, name, length, value, signed=True): :param length: :param value: """ - Parameter.__init__(self, name, value) + ParameterType.__init__(self, name, value) self.length = length self.signed = signed def get_payload(self): self.payload['type'] = str(self.length) + ('i' if self.signed else 'u') + '0' - Parameter.get_payload(self) + ParameterType.get_payload(self) return self.payload -class Character(Parameter): +class Character(ParameterType): """ Object for IBM i Character. """ @@ -82,7 +97,7 @@ def __init__(self, name, length, value, varying=''): :param length: :param value: """ - Parameter.__init__(self, name, value) + ParameterType.__init__(self, name, value) self.length = length self.varying = varying @@ -91,11 +106,11 @@ def get_payload(self): if self.varying: self.payload['type'] = self.payload['type'] + 'v' + str(self.varying) - Parameter.get_payload(self) + ParameterType.get_payload(self) return self.payload -class Decimal(Parameter): +class Decimal(ParameterType): """ Object for IBM i Decimal. """ @@ -109,19 +124,19 @@ def __init__(self, name, length, decimals, value, signed=False): :param length: :param value: """ - Parameter.__init__(self, name, value) + ParameterType.__init__(self, name, value) self.length = length self.signed = signed self.decimals = decimals def get_payload(self): self.payload['type'] = str(self.length) + ('s' if self.signed else 'p') + str(self.decimals) - Parameter.get_payload(self) + ParameterType.get_payload(self) return self.payload -class Binary(Parameter): +class Binary(ParameterType): """ Object for IBM i Binary. """ @@ -131,12 +146,12 @@ def __init__(self, name, length, value): :param length: :param value: """ - Parameter.__init__(self, name, value) + ParameterType.__init__(self, name, value) self.length = length def get_payload(self): self.payload['type'] = str(self.length) + 'b' - Parameter.get_payload(self) + ParameterType.get_payload(self) return self.payload \ No newline at end of file From 58ad5bbd397856763d348cfbd8740688053219e1 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Thu, 26 Jul 2018 21:35:00 -0700 Subject: [PATCH 30/33] import parameter --- pykit/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pykit/__init__.py b/pykit/__init__.py index 9193ddb..c6d82da 100644 --- a/pykit/__init__.py +++ b/pykit/__init__.py @@ -5,5 +5,6 @@ from .types import Character from .types import Decimal from .types import Binary +from .types import Parameter from .program import Program from .program import ServiceProgram From 9de5a1cf1e145552cbe11eaa1e4103167c7048ad Mon Sep 17 00:00:00 2001 From: jordiwes Date: Thu, 26 Jul 2018 21:35:43 -0700 Subject: [PATCH 31/33] import parameter --- pykit/tests/test_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/tests/test_types.py b/pykit/tests/test_types.py index 8c5ea4b..d1187d4 100644 --- a/pykit/tests/test_types.py +++ b/pykit/tests/test_types.py @@ -1,6 +1,6 @@ import unittest import os -from pykit import Integer, Float, Character, Decimal, Binary +from pykit import Integer, Float, Character, Decimal, Binary, Parameter class TestInteger(unittest.TestCase): From 9a95a4a52b48ee91bb56babf11b44c9195d7ccdd Mon Sep 17 00:00:00 2001 From: jordiwes Date: Thu, 26 Jul 2018 21:36:54 -0700 Subject: [PATCH 32/33] intialize payload --- pykit/types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/types.py b/pykit/types.py index e68a45c..d632e44 100644 --- a/pykit/types.py +++ b/pykit/types.py @@ -8,7 +8,7 @@ def __init__(self, parameterType, direction='inout', byValue=False, isReturn=Fal self.direction = direction self.isReturn = isReturn self.byValue = False - self.payload = {"name":self.name} + self.payload = {} def get_payload(self): self.payload = self.parameterType.get_payload() From 75a6bbb5ab931e846b6cf59c387bf5f596da5554 Mon Sep 17 00:00:00 2001 From: jordiwes Date: Thu, 26 Jul 2018 21:38:18 -0700 Subject: [PATCH 33/33] fix test --- pykit/tests/test_service_program.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pykit/tests/test_service_program.py b/pykit/tests/test_service_program.py index a1a4571..44ff200 100644 --- a/pykit/tests/test_service_program.py +++ b/pykit/tests/test_service_program.py @@ -12,7 +12,7 @@ def setUp(self): self.hello_prog.add_parameter(char) self.hello_prog_return = ServiceProgram("HELLOSRV", "DB2JSON", "HELLOAGAIN") self.hello_prog_return.add_parameter(char) - self.hello_prog_return.add_return(char_return) + self.hello_prog_return.add_parameter(char_return) def test_hello(self):