singlestoredb 1.16.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. singlestoredb/__init__.py +75 -0
  2. singlestoredb/ai/__init__.py +2 -0
  3. singlestoredb/ai/chat.py +139 -0
  4. singlestoredb/ai/embeddings.py +128 -0
  5. singlestoredb/alchemy/__init__.py +90 -0
  6. singlestoredb/apps/__init__.py +3 -0
  7. singlestoredb/apps/_cloud_functions.py +90 -0
  8. singlestoredb/apps/_config.py +72 -0
  9. singlestoredb/apps/_connection_info.py +18 -0
  10. singlestoredb/apps/_dashboards.py +47 -0
  11. singlestoredb/apps/_process.py +32 -0
  12. singlestoredb/apps/_python_udfs.py +100 -0
  13. singlestoredb/apps/_stdout_supress.py +30 -0
  14. singlestoredb/apps/_uvicorn_util.py +36 -0
  15. singlestoredb/auth.py +245 -0
  16. singlestoredb/config.py +484 -0
  17. singlestoredb/connection.py +1487 -0
  18. singlestoredb/converters.py +950 -0
  19. singlestoredb/docstring/__init__.py +33 -0
  20. singlestoredb/docstring/attrdoc.py +126 -0
  21. singlestoredb/docstring/common.py +230 -0
  22. singlestoredb/docstring/epydoc.py +267 -0
  23. singlestoredb/docstring/google.py +412 -0
  24. singlestoredb/docstring/numpydoc.py +562 -0
  25. singlestoredb/docstring/parser.py +100 -0
  26. singlestoredb/docstring/py.typed +1 -0
  27. singlestoredb/docstring/rest.py +256 -0
  28. singlestoredb/docstring/tests/__init__.py +1 -0
  29. singlestoredb/docstring/tests/_pydoctor.py +21 -0
  30. singlestoredb/docstring/tests/test_epydoc.py +729 -0
  31. singlestoredb/docstring/tests/test_google.py +1007 -0
  32. singlestoredb/docstring/tests/test_numpydoc.py +1100 -0
  33. singlestoredb/docstring/tests/test_parse_from_object.py +109 -0
  34. singlestoredb/docstring/tests/test_parser.py +248 -0
  35. singlestoredb/docstring/tests/test_rest.py +547 -0
  36. singlestoredb/docstring/tests/test_util.py +70 -0
  37. singlestoredb/docstring/util.py +141 -0
  38. singlestoredb/exceptions.py +120 -0
  39. singlestoredb/functions/__init__.py +16 -0
  40. singlestoredb/functions/decorator.py +201 -0
  41. singlestoredb/functions/dtypes.py +1793 -0
  42. singlestoredb/functions/ext/__init__.py +1 -0
  43. singlestoredb/functions/ext/arrow.py +375 -0
  44. singlestoredb/functions/ext/asgi.py +2133 -0
  45. singlestoredb/functions/ext/json.py +420 -0
  46. singlestoredb/functions/ext/mmap.py +413 -0
  47. singlestoredb/functions/ext/rowdat_1.py +724 -0
  48. singlestoredb/functions/ext/timer.py +89 -0
  49. singlestoredb/functions/ext/utils.py +218 -0
  50. singlestoredb/functions/signature.py +1578 -0
  51. singlestoredb/functions/typing/__init__.py +41 -0
  52. singlestoredb/functions/typing/numpy.py +20 -0
  53. singlestoredb/functions/typing/pandas.py +2 -0
  54. singlestoredb/functions/typing/polars.py +2 -0
  55. singlestoredb/functions/typing/pyarrow.py +2 -0
  56. singlestoredb/functions/utils.py +421 -0
  57. singlestoredb/fusion/__init__.py +11 -0
  58. singlestoredb/fusion/graphql.py +213 -0
  59. singlestoredb/fusion/handler.py +916 -0
  60. singlestoredb/fusion/handlers/__init__.py +0 -0
  61. singlestoredb/fusion/handlers/export.py +525 -0
  62. singlestoredb/fusion/handlers/files.py +690 -0
  63. singlestoredb/fusion/handlers/job.py +660 -0
  64. singlestoredb/fusion/handlers/models.py +250 -0
  65. singlestoredb/fusion/handlers/stage.py +502 -0
  66. singlestoredb/fusion/handlers/utils.py +324 -0
  67. singlestoredb/fusion/handlers/workspace.py +956 -0
  68. singlestoredb/fusion/registry.py +249 -0
  69. singlestoredb/fusion/result.py +399 -0
  70. singlestoredb/http/__init__.py +27 -0
  71. singlestoredb/http/connection.py +1267 -0
  72. singlestoredb/magics/__init__.py +34 -0
  73. singlestoredb/magics/run_personal.py +137 -0
  74. singlestoredb/magics/run_shared.py +134 -0
  75. singlestoredb/management/__init__.py +9 -0
  76. singlestoredb/management/billing_usage.py +148 -0
  77. singlestoredb/management/cluster.py +462 -0
  78. singlestoredb/management/export.py +295 -0
  79. singlestoredb/management/files.py +1102 -0
  80. singlestoredb/management/inference_api.py +105 -0
  81. singlestoredb/management/job.py +887 -0
  82. singlestoredb/management/manager.py +373 -0
  83. singlestoredb/management/organization.py +226 -0
  84. singlestoredb/management/region.py +169 -0
  85. singlestoredb/management/utils.py +423 -0
  86. singlestoredb/management/workspace.py +1927 -0
  87. singlestoredb/mysql/__init__.py +177 -0
  88. singlestoredb/mysql/_auth.py +298 -0
  89. singlestoredb/mysql/charset.py +214 -0
  90. singlestoredb/mysql/connection.py +2032 -0
  91. singlestoredb/mysql/constants/CLIENT.py +38 -0
  92. singlestoredb/mysql/constants/COMMAND.py +32 -0
  93. singlestoredb/mysql/constants/CR.py +78 -0
  94. singlestoredb/mysql/constants/ER.py +474 -0
  95. singlestoredb/mysql/constants/EXTENDED_TYPE.py +3 -0
  96. singlestoredb/mysql/constants/FIELD_TYPE.py +48 -0
  97. singlestoredb/mysql/constants/FLAG.py +15 -0
  98. singlestoredb/mysql/constants/SERVER_STATUS.py +10 -0
  99. singlestoredb/mysql/constants/VECTOR_TYPE.py +6 -0
  100. singlestoredb/mysql/constants/__init__.py +0 -0
  101. singlestoredb/mysql/converters.py +271 -0
  102. singlestoredb/mysql/cursors.py +896 -0
  103. singlestoredb/mysql/err.py +92 -0
  104. singlestoredb/mysql/optionfile.py +20 -0
  105. singlestoredb/mysql/protocol.py +450 -0
  106. singlestoredb/mysql/tests/__init__.py +19 -0
  107. singlestoredb/mysql/tests/base.py +126 -0
  108. singlestoredb/mysql/tests/conftest.py +37 -0
  109. singlestoredb/mysql/tests/test_DictCursor.py +132 -0
  110. singlestoredb/mysql/tests/test_SSCursor.py +141 -0
  111. singlestoredb/mysql/tests/test_basic.py +452 -0
  112. singlestoredb/mysql/tests/test_connection.py +851 -0
  113. singlestoredb/mysql/tests/test_converters.py +58 -0
  114. singlestoredb/mysql/tests/test_cursor.py +141 -0
  115. singlestoredb/mysql/tests/test_err.py +16 -0
  116. singlestoredb/mysql/tests/test_issues.py +514 -0
  117. singlestoredb/mysql/tests/test_load_local.py +75 -0
  118. singlestoredb/mysql/tests/test_nextset.py +88 -0
  119. singlestoredb/mysql/tests/test_optionfile.py +27 -0
  120. singlestoredb/mysql/tests/thirdparty/__init__.py +6 -0
  121. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +9 -0
  122. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +323 -0
  123. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +865 -0
  124. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +110 -0
  125. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +224 -0
  126. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +101 -0
  127. singlestoredb/mysql/times.py +23 -0
  128. singlestoredb/notebook/__init__.py +16 -0
  129. singlestoredb/notebook/_objects.py +213 -0
  130. singlestoredb/notebook/_portal.py +352 -0
  131. singlestoredb/py.typed +0 -0
  132. singlestoredb/pytest.py +352 -0
  133. singlestoredb/server/__init__.py +0 -0
  134. singlestoredb/server/docker.py +452 -0
  135. singlestoredb/server/free_tier.py +267 -0
  136. singlestoredb/tests/__init__.py +0 -0
  137. singlestoredb/tests/alltypes.sql +307 -0
  138. singlestoredb/tests/alltypes_no_nulls.sql +208 -0
  139. singlestoredb/tests/empty.sql +0 -0
  140. singlestoredb/tests/ext_funcs/__init__.py +702 -0
  141. singlestoredb/tests/local_infile.csv +3 -0
  142. singlestoredb/tests/test.ipynb +18 -0
  143. singlestoredb/tests/test.sql +680 -0
  144. singlestoredb/tests/test2.ipynb +18 -0
  145. singlestoredb/tests/test2.sql +1 -0
  146. singlestoredb/tests/test_basics.py +1332 -0
  147. singlestoredb/tests/test_config.py +318 -0
  148. singlestoredb/tests/test_connection.py +3103 -0
  149. singlestoredb/tests/test_dbapi.py +27 -0
  150. singlestoredb/tests/test_exceptions.py +45 -0
  151. singlestoredb/tests/test_ext_func.py +1472 -0
  152. singlestoredb/tests/test_ext_func_data.py +1101 -0
  153. singlestoredb/tests/test_fusion.py +1527 -0
  154. singlestoredb/tests/test_http.py +288 -0
  155. singlestoredb/tests/test_management.py +1599 -0
  156. singlestoredb/tests/test_plugin.py +33 -0
  157. singlestoredb/tests/test_results.py +171 -0
  158. singlestoredb/tests/test_types.py +132 -0
  159. singlestoredb/tests/test_udf.py +737 -0
  160. singlestoredb/tests/test_udf_returns.py +459 -0
  161. singlestoredb/tests/test_vectorstore.py +51 -0
  162. singlestoredb/tests/test_xdict.py +333 -0
  163. singlestoredb/tests/utils.py +141 -0
  164. singlestoredb/types.py +373 -0
  165. singlestoredb/utils/__init__.py +0 -0
  166. singlestoredb/utils/config.py +950 -0
  167. singlestoredb/utils/convert_rows.py +69 -0
  168. singlestoredb/utils/debug.py +13 -0
  169. singlestoredb/utils/dtypes.py +205 -0
  170. singlestoredb/utils/events.py +65 -0
  171. singlestoredb/utils/mogrify.py +151 -0
  172. singlestoredb/utils/results.py +585 -0
  173. singlestoredb/utils/xdict.py +425 -0
  174. singlestoredb/vectorstore.py +192 -0
  175. singlestoredb/warnings.py +5 -0
  176. singlestoredb-1.16.1.dist-info/METADATA +165 -0
  177. singlestoredb-1.16.1.dist-info/RECORD +183 -0
  178. singlestoredb-1.16.1.dist-info/WHEEL +5 -0
  179. singlestoredb-1.16.1.dist-info/entry_points.txt +2 -0
  180. singlestoredb-1.16.1.dist-info/licenses/LICENSE +201 -0
  181. singlestoredb-1.16.1.dist-info/top_level.txt +3 -0
  182. sqlx/__init__.py +4 -0
  183. sqlx/magic.py +113 -0
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env python
2
+ # type: ignore
3
+ """SingleStoreDB Pytest Plugin testing
4
+
5
+ Each of these tests performs the same simple operation which
6
+ would fail if any other test had been run on the same database.
7
+ """
8
+ from singlestoredb.connection import Cursor
9
+
10
+ # pytest_plugins = ('singlestoredb.pytest',)
11
+
12
+ CREATE_TABLE_STATEMENT = 'create table test_dict (a text)'
13
+
14
+
15
+ def test_tempdb1(singlestoredb_tempdb: Cursor):
16
+ # alias the fixture
17
+ cursor = singlestoredb_tempdb
18
+
19
+ cursor.execute(CREATE_TABLE_STATEMENT)
20
+
21
+
22
+ def test_tempdb2(singlestoredb_tempdb: Cursor):
23
+ # alias the fixture
24
+ cursor = singlestoredb_tempdb
25
+
26
+ cursor.execute(CREATE_TABLE_STATEMENT)
27
+
28
+
29
+ def test_tempdb3(singlestoredb_tempdb: Cursor):
30
+ # alias the fixture
31
+ cursor = singlestoredb_tempdb
32
+
33
+ cursor.execute(CREATE_TABLE_STATEMENT)
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env python
2
+ # type: ignore
3
+ """Test SingleStoreDB results."""
4
+ import os
5
+ import unittest
6
+
7
+ import pandas as pd
8
+
9
+ import singlestoredb as s2
10
+ from singlestoredb.tests import utils
11
+ # import traceback
12
+
13
+
14
+ class TestResults(unittest.TestCase):
15
+
16
+ dbname: str = ''
17
+ dbexisted: bool = False
18
+
19
+ @classmethod
20
+ def setUpClass(cls):
21
+ sql_file = os.path.join(os.path.dirname(__file__), 'test.sql')
22
+ cls.dbname, cls.dbexisted = utils.load_sql(sql_file)
23
+
24
+ @classmethod
25
+ def tearDownClass(cls):
26
+ if not cls.dbexisted:
27
+ utils.drop_database(cls.dbname)
28
+
29
+ def setUp(self):
30
+ self.conn = s2.connect(database=type(self).dbname)
31
+ self.cur = self.conn.cursor()
32
+
33
+ def tearDown(self):
34
+ try:
35
+ if self.cur is not None:
36
+ self.cur.close()
37
+ except Exception:
38
+ # traceback.print_exc()
39
+ pass
40
+
41
+ try:
42
+ if self.conn is not None:
43
+ self.conn.close()
44
+ except Exception:
45
+ # traceback.print_exc()
46
+ pass
47
+
48
+ def test_tuples(self):
49
+ with s2.options(('results.type', 'tuples')):
50
+ with s2.connect(database=type(self).dbname) as conn:
51
+ with conn.cursor() as cur:
52
+ cur.execute('select * from data')
53
+ out = cur.fetchone()
54
+ assert type(out) is tuple, type(out)
55
+ assert len(out) == 3, len(out)
56
+ cur.fetchall()
57
+
58
+ cur.execute('select * from data')
59
+ out = cur.fetchall()
60
+ assert len(out) == 5, len(out)
61
+ assert len(out[0]) == 3, len(out[0])
62
+ assert type(out[0]) is tuple, type(out[0])
63
+ assert sorted(out) == sorted([
64
+ ('a', 'antelopes', 2),
65
+ ('b', 'bears', 2),
66
+ ('c', 'cats', 5),
67
+ ('d', 'dogs', 4),
68
+ ('e', 'elephants', 0),
69
+ ]), out
70
+
71
+ out = cur.fetchall()
72
+ assert len(out) == 0, len(out)
73
+
74
+ def test_namedtuples(self):
75
+ with s2.options(('results.type', 'namedtuples')):
76
+ with s2.connect(database=type(self).dbname) as conn:
77
+ with conn.cursor() as cur:
78
+ cur.execute('select * from data')
79
+ out = cur.fetchone()
80
+ assert isinstance(out, tuple), type(out)
81
+ assert len(out) == 3, len(out)
82
+ assert type(out).__name__ == 'Row', type(out).__name__
83
+ assert hasattr(out, 'id')
84
+ assert hasattr(out, 'name')
85
+ assert hasattr(out, 'value')
86
+ cur.fetchall()
87
+
88
+ cur.execute('select * from data')
89
+ out = cur.fetchall()
90
+ assert len(out) == 5, len(out)
91
+ assert len(out[0]) == 3, len(out[0])
92
+ assert isinstance(out[0], tuple), type(out[0])
93
+ assert type(out[0]).__name__ == 'Row', type(out[0]).__name__
94
+ assert hasattr(out[0], 'id')
95
+ assert hasattr(out[0], 'name')
96
+ assert hasattr(out[0], 'value')
97
+ assert sorted(out) == sorted([
98
+ ('a', 'antelopes', 2),
99
+ ('b', 'bears', 2),
100
+ ('c', 'cats', 5),
101
+ ('d', 'dogs', 4),
102
+ ('e', 'elephants', 0),
103
+ ]), out
104
+
105
+ out = cur.fetchall()
106
+ assert len(out) == 0, len(out)
107
+
108
+ def test_dict(self):
109
+ with s2.options(('results.type', 'dicts')):
110
+ with s2.connect(database=type(self).dbname) as conn:
111
+ with conn.cursor() as cur:
112
+ cur.execute('select * from data')
113
+ out = cur.fetchone()
114
+ assert type(out) is dict, type(out)
115
+ assert len(out) == 3, len(out)
116
+ cur.fetchall()
117
+
118
+ cur.execute('select * from data')
119
+ out = cur.fetchall()
120
+ assert type(out[0]) is dict, type(out[0])
121
+ assert len(out) == 5, len(out)
122
+ assert len(out[0]) == 3, len(out[0])
123
+ assert sorted(out, key=lambda x: x['id']) == sorted(
124
+ [
125
+ dict(id='a', name='antelopes', value=2),
126
+ dict(id='b', name='bears', value=2),
127
+ dict(id='c', name='cats', value=5),
128
+ dict(id='d', name='dogs', value=4),
129
+ dict(id='e', name='elephants', value=0),
130
+ ], key=lambda x: x['id'],
131
+ )
132
+
133
+ out = cur.fetchall()
134
+ assert len(out) == 0, len(out)
135
+
136
+ def _test_dataframe(self):
137
+ with s2.options(('results.type', 'dataframe')):
138
+ with s2.connect(database=type(self).dbname) as conn:
139
+ with conn.cursor() as cur:
140
+ cur.execute('select * from data')
141
+ out = cur.fetchone()
142
+ assert type(out) is pd.DataFrame, type(out)
143
+ assert len(out) == 1, len(out)
144
+ cur.fetchall()
145
+
146
+ cur.execute('select * from data')
147
+ out = cur.fetchall()
148
+ assert type(out) is pd.DataFrame, type(out)
149
+ assert len(out) == 5, len(out)
150
+ out = out.sort_values('id').reset_index(drop=True)
151
+ exp = pd.DataFrame(
152
+ data=[
153
+ ('a', 'antelopes', 2),
154
+ ('b', 'bears', 2),
155
+ ('c', 'cats', 5),
156
+ ('d', 'dogs', 4),
157
+ ('e', 'elephants', 0),
158
+ ], columns=['id', 'name', 'value'],
159
+ ).sort_values('id').reset_index(drop=True)
160
+ assert list(out.columns) == list(exp.columns), list(out.columns)
161
+ assert [list(x) for x in list(out.values)] == \
162
+ [list(x) for x in list(exp.values)], \
163
+ [list(x) for x in list(out.values)]
164
+
165
+ out = cur.fetchall()
166
+ assert len(out) == 0, len(out)
167
+
168
+
169
+ if __name__ == '__main__':
170
+ import nose2
171
+ nose2.main()
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env python
2
+ # type: ignore
3
+ """Test SingleStoreDB data types."""
4
+ import datetime
5
+ import unittest
6
+
7
+ import singlestoredb.types as st
8
+
9
+
10
+ class TestTypes(unittest.TestCase):
11
+
12
+ def test_date_from_ticks(self):
13
+ dt = st.DateFromTicks(9999)
14
+ ts = datetime.date.fromtimestamp(9999)
15
+ assert dt == ts
16
+
17
+ def test_time_from_ticks(self):
18
+ tm = st.TimeFromTicks(9999)
19
+ ts = datetime.datetime.fromtimestamp(9999)
20
+ ts = datetime.time(hour=ts.hour, minute=ts.minute, second=ts.second)
21
+ assert tm == ts
22
+
23
+ def test_timestamp_from_ticks(self):
24
+ tm = st.TimestampFromTicks(9999)
25
+ ts = datetime.datetime.fromtimestamp(9999)
26
+ assert tm == ts
27
+
28
+ def test_dbapitype_eq(self):
29
+ ct = st.ColumnType
30
+
31
+ assert st.STRING == ct.CHAR
32
+ assert st.STRING == 'CHAR'
33
+ assert st.STRING == 254
34
+ assert st.STRING == ct.VARCHAR
35
+ assert st.STRING == 'VARCHAR'
36
+ assert st.STRING == 15
37
+ assert st.STRING == ct.VARSTRING
38
+ assert st.STRING == 'VARSTRING'
39
+ assert st.STRING == 253
40
+ assert st.STRING == ct.STRING
41
+ assert st.STRING == 'STRING'
42
+ assert st.STRING != 'BINARY'
43
+ assert st.STRING != 'VARBINARY'
44
+
45
+ # Because MySQL uses the same type code for strings and binary
46
+ # we can't tell the difference between these.
47
+ # assert st.STRING != ct.BINARY
48
+
49
+ assert st.BINARY == ct.BINARY
50
+ assert st.BINARY == ct.VARBINARY
51
+
52
+ assert st.NUMBER == ct.DECIMAL
53
+ assert st.NUMBER == ct.TINY
54
+ assert st.NUMBER == ct.LONG
55
+ assert st.NUMBER == ct.FLOAT
56
+ assert st.NUMBER == ct.DOUBLE
57
+ assert st.NUMBER != ct.STRING
58
+ assert st.NUMBER != ct.BINARY
59
+
60
+ assert st.DATETIME == ct.DATETIME
61
+ assert st.DATETIME != ct.YEAR
62
+ assert st.DATETIME != ct.DATE
63
+ assert st.DATETIME != ct.TIME
64
+
65
+ assert st.ROWID != ct.LONG
66
+ assert st.ROWID != ct.STRING
67
+ assert st.ROWID != ct.BINARY
68
+
69
+ def test_str(self):
70
+ out = str(st.NUMBER)
71
+ assert 'BIGINT' in out
72
+ assert 'BIT' in out
73
+ assert 'BOOL' in out
74
+ assert 'DECIMAL' in out
75
+ assert 'LONG' in out
76
+ assert '246' in out
77
+
78
+ def test_repr(self):
79
+ assert str(st.NUMBER) == repr(st.NUMBER)
80
+
81
+ def test_name(self):
82
+ ct = st.ColumnType
83
+ assert ct.DEC.name == 'DECIMAL', ct.DEC.name
84
+ assert ct.BOOL.name == 'TINY', ct.BOOL.name
85
+ assert ct.BIT.name == 'BIT', ct.BIT.name
86
+ assert ct.LONGBLOB.name == 'LONGBLOB', ct.LONGBLOB.name
87
+ assert ct.LONGTEXT.name == 'LONGTEXT', ct.LONGTEXT.name
88
+
89
+ def test_code(self):
90
+ ct = st.ColumnType
91
+ assert ct.DEC.code == 0, ct.DEC.code
92
+ assert ct.BOOL.code == 1, ct.BOOL.code
93
+ assert ct.BIT.code == 16, ct.BIT.code
94
+ assert ct.LONGBLOB.code == 251, ct.LONGBLOB.code
95
+ assert ct.LONGTEXT.code == 251, ct.LONGTEXT.code
96
+
97
+ def test_get_code(self):
98
+ ct = st.ColumnType
99
+ assert ct.get_code('DECIMAL') == 0, ct.get_code('DECIMAL')
100
+ assert ct.get_code('TINY') == 1, ct.get_code('TINY')
101
+ assert ct.get_code('BIT') == 16, ct.get_code('BIT')
102
+ assert ct.get_code('LONGBLOB') == 251, ct.get_code('LONGBLOB')
103
+ assert ct.get_code('LONGTEXT') == 251, ct.get_code('LONGTEXT')
104
+
105
+ assert ct.get_code(0) == 0, ct.get_code(0)
106
+ assert ct.get_code(1) == 1, ct.get_code(1)
107
+ assert ct.get_code(16) == 16, ct.get_code(16)
108
+
109
+ assert ct.get_code(int) == 8, ct.get_code(int)
110
+ assert ct.get_code(float) == 5, ct.get_code(float)
111
+ assert ct.get_code(str) == 15, ct.get_code(str)
112
+
113
+ def test_get_name(self):
114
+ ct = st.ColumnType
115
+ assert ct.get_name(0) == 'DECIMAL', ct.get_name(0)
116
+ assert ct.get_name(1) == 'TINY', ct.get_name(1)
117
+ assert ct.get_name(16) == 'BIT', ct.get_name(16)
118
+ assert ct.get_name(251) == 'LONGBLOB', ct.get_name(251)
119
+ assert ct.get_name(251) == 'LONGBLOB', ct.get_name(251)
120
+
121
+ assert ct.get_name('dec') == 'DECIMAL', ct.get_name('dec')
122
+ assert ct.get_name('bool') == 'TINY', ct.get_name('bool')
123
+ assert ct.get_name('bigint') == 'BIGINT', ct.get_name('bigint')
124
+
125
+ assert ct.get_name(int) == 'BIGINT', ct.get_name(int)
126
+ assert ct.get_name(float) == 'DOUBLE', ct.get_name(float)
127
+ assert ct.get_name(str) == 'VARBINARY', ct.get_name(str)
128
+
129
+
130
+ if __name__ == '__main__':
131
+ import nose2
132
+ nose2.main()