sqlalchemy-iris 0.17.1b2__tar.gz → 0.17.1b4__tar.gz

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 (91) hide show
  1. {sqlalchemy_iris-0.17.1b2/sqlalchemy_iris.egg-info → sqlalchemy_iris-0.17.1b4}/PKG-INFO +1 -1
  2. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/setup.cfg +2 -2
  3. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/base.py +3 -8
  4. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/intersystems/__init__.py +42 -34
  5. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/intersystems/dbapi.py +4 -0
  6. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/requirements.py +2 -2
  7. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4/sqlalchemy_iris.egg-info}/PKG-INFO +1 -1
  8. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris.egg-info/SOURCES.txt +0 -1
  9. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/tests/test_alembic.py +12 -8
  10. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/tests/test_suite.py +0 -1
  11. sqlalchemy_iris-0.17.1b2/sqlalchemy_iris/intersystems/cursor.py +0 -17
  12. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/LICENSE +0 -0
  13. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/README.md +0 -0
  14. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_BufferReader.py +0 -0
  15. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_BufferWriter.py +0 -0
  16. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_ConnectionInformation.py +0 -0
  17. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_ConnectionParameters.py +0 -0
  18. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_Constant.py +0 -0
  19. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_DBList.py +0 -0
  20. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_Device.py +0 -0
  21. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_GatewayContext.py +0 -0
  22. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_GatewayException.py +0 -0
  23. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_GatewayUtility.py +0 -0
  24. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRIS.py +0 -0
  25. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISConnection.py +0 -0
  26. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISEmbedded.py +0 -0
  27. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISGlobalNode.py +0 -0
  28. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISGlobalNodeView.py +0 -0
  29. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISIterator.py +0 -0
  30. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISList.py +0 -0
  31. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISNative.py +0 -0
  32. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISOREF.py +0 -0
  33. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISObject.py +0 -0
  34. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_IRISReference.py +0 -0
  35. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_InStream.py +0 -0
  36. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_LegacyIterator.py +0 -0
  37. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_ListItem.py +0 -0
  38. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_ListReader.py +0 -0
  39. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_ListWriter.py +0 -0
  40. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_LogFileStream.py +0 -0
  41. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_MessageHeader.py +0 -0
  42. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_OutStream.py +0 -0
  43. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_PrintStream.py +0 -0
  44. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_PythonGateway.py +0 -0
  45. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/_SharedMemorySocket.py +0 -0
  46. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/__init__.py +0 -0
  47. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/__main__.py +0 -0
  48. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_Column.py +0 -0
  49. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_DBAPI.py +0 -0
  50. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_Descriptor.py +0 -0
  51. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_IRISStream.py +0 -0
  52. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_Message.py +0 -0
  53. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_Parameter.py +0 -0
  54. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_ParameterCollection.py +0 -0
  55. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_ResultSetRow.py +0 -0
  56. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/_SQLType.py +0 -0
  57. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/__init__.py +0 -0
  58. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/preparser/_PreParser.py +0 -0
  59. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/preparser/_Scanner.py +0 -0
  60. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/preparser/_Token.py +0 -0
  61. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/preparser/_TokenList.py +0 -0
  62. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/dbapi/preparser/__init__.py +0 -0
  63. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_BusinessHost.py +0 -0
  64. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_BusinessOperation.py +0 -0
  65. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_BusinessProcess.py +0 -0
  66. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_BusinessService.py +0 -0
  67. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_Common.py +0 -0
  68. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_Director.py +0 -0
  69. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_IRISBusinessOperation.py +0 -0
  70. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_IRISBusinessService.py +0 -0
  71. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_IRISInboundAdapter.py +0 -0
  72. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_IRISOutboundAdapter.py +0 -0
  73. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_InboundAdapter.py +0 -0
  74. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_Message.py +0 -0
  75. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/_OutboundAdapter.py +0 -0
  76. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/intersystems_iris/pex/__init__.py +0 -0
  77. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/irisnative/_IRISNative.py +0 -0
  78. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/irisnative/__init__.py +0 -0
  79. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/setup.py +0 -0
  80. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/__init__.py +0 -0
  81. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/alembic.py +0 -0
  82. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/embedded.py +0 -0
  83. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/information_schema.py +0 -0
  84. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/iris.py +0 -0
  85. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/irisasync.py +0 -0
  86. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/provision.py +0 -0
  87. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris/types.py +0 -0
  88. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris.egg-info/dependency_links.txt +0 -0
  89. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris.egg-info/entry_points.txt +0 -0
  90. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris.egg-info/requires.txt +0 -0
  91. {sqlalchemy_iris-0.17.1b2 → sqlalchemy_iris-0.17.1b4}/sqlalchemy_iris.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sqlalchemy-iris
3
- Version: 0.17.1b2
3
+ Version: 0.17.1b4
4
4
  Summary: InterSystems IRIS for SQLAlchemy
5
5
  Home-page: https://github.com/caretdev/sqlalchemy-iris
6
6
  Maintainer: CaretDev
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = sqlalchemy-iris
3
- version = 0.17.1b2
3
+ version = 0.17.1b4
4
4
  description = InterSystems IRIS for SQLAlchemy
5
5
  long_description = file: README.md
6
6
  url = https://github.com/caretdev/sqlalchemy-iris
@@ -33,7 +33,7 @@ intersystems =
33
33
  intersystems-irispython==5.1.0
34
34
 
35
35
  [tool:pytest]
36
- addopts = --tb native -v -r fxX --maxfail=25 -p no:warnings
36
+ addopts = --tb native -v -r fxX -p no:warnings
37
37
 
38
38
  [db]
39
39
  default = iris://_SYSTEM:SYS@localhost:1972/USER
@@ -971,11 +971,9 @@ There are no access to %Dictionary, may be required for some advanced features,
971
971
 
972
972
  def _get_option(self, connection, option):
973
973
  with connection.cursor() as cursor:
974
- cursor.execute("SELECT %SYSTEM_SQL.Util_GetOption(?)", option)
974
+ cursor.execute("SELECT %SYSTEM_SQL.Util_GetOption(?)", (option, ))
975
975
  row = cursor.fetchone()
976
- if row:
977
- return row[0]
978
- return None
976
+ return row[0] if row else None
979
977
 
980
978
  def _set_option(self, connection, option, value):
981
979
  with connection.cursor() as cursor:
@@ -1091,10 +1089,7 @@ There are no access to %Dictionary, may be required for some advanced features,
1091
1089
  if query.endswith(";"):
1092
1090
  query = query[:-1]
1093
1091
  self._debug(query, params)
1094
- try:
1095
- cursor.execute(query, params)
1096
- except Exception as ex:
1097
- raise ex
1092
+ cursor.execute(query, params)
1098
1093
 
1099
1094
  def do_executemany(self, cursor, query, params, context=None):
1100
1095
  if query.endswith(";"):
@@ -1,12 +1,11 @@
1
1
  import re
2
- import pkg_resources
2
+ from typing import Any
3
3
  from ..base import IRISDialect
4
- from sqlalchemy import text, util
5
4
  from ..base import IRISExecutionContext
6
5
  from . import dbapi
7
- from .dbapi import connect, Cursor
8
- from .cursor import InterSystemsCursorFetchStrategy
6
+ from .dbapi import connect
9
7
  from .dbapi import IntegrityError, OperationalError, DatabaseError
8
+ from sqlalchemy.engine.cursor import CursorFetchStrategy
10
9
 
11
10
 
12
11
  def remap_exception(func):
@@ -20,7 +19,7 @@ def remap_exception(func):
20
19
  except RuntimeError as ex:
21
20
  # [SQLCODE: <-119>:...
22
21
  message = ex.args[0]
23
- if '<LIST ERROR>' in message:
22
+ if "<LIST ERROR>" in message:
24
23
  # just random error happens in the driver, try again
25
24
  continue
26
25
  sqlcode = re.findall(r"^\[SQLCODE: <(-\d+)>:", message)
@@ -28,27 +27,34 @@ def remap_exception(func):
28
27
  raise Exception(message)
29
28
  sqlcode = int(sqlcode[0])
30
29
  if abs(sqlcode) in [108, 119, 121, 122]:
31
- raise IntegrityError(message)
30
+ raise IntegrityError(sqlcode, message)
32
31
  if abs(sqlcode) in [1, 12]:
33
- raise OperationalError(message)
34
- raise DatabaseError(message)
32
+ raise OperationalError(sqlcode, message)
33
+ raise DatabaseError(sqlcode, message)
35
34
 
36
35
  return wrapper
37
36
 
38
37
 
38
+ class InterSystemsCursorFetchStrategy(CursorFetchStrategy):
39
+
40
+ def fetchone(
41
+ self,
42
+ result,
43
+ dbapi_cursor,
44
+ hard_close: bool = False,
45
+ ) -> Any:
46
+ row = dbapi_cursor.fetchone()
47
+ return tuple(row) if row else None
48
+
49
+
39
50
  class InterSystemsExecutionContext(IRISExecutionContext):
40
51
  cursor_fetch_strategy = InterSystemsCursorFetchStrategy()
41
52
 
42
- def create_cursor(self):
43
- cursor = self._dbapi_connection.cursor()
44
- cursor.sqlcode = 0
45
- return cursor
46
-
47
53
 
48
54
  class IRISDialect_intersystems(IRISDialect):
49
55
  driver = "intersystems"
50
56
 
51
- execution_ctx_cls = InterSystemsExecutionContext
57
+ # execution_ctx_cls = InterSystemsExecutionContext
52
58
 
53
59
  supports_statement_cache = True
54
60
 
@@ -62,6 +68,8 @@ class IRISDialect_intersystems(IRISDialect):
62
68
 
63
69
  logfile = None
64
70
 
71
+ server_version = None
72
+
65
73
  def __init__(self, logfile: str = None, **kwargs):
66
74
  self.logfile = logfile
67
75
  IRISDialect.__init__(self, **kwargs)
@@ -115,27 +123,25 @@ class IRISDialect_intersystems(IRISDialect):
115
123
 
116
124
  return ([], opts)
117
125
 
118
- def _get_server_version_info(self, connection):
119
- # get the wheel version from iris module
120
- try:
121
- return tuple(
122
- map(
123
- int,
124
- pkg_resources.get_distribution(
125
- "intersystems_irispython"
126
- ).version.split("."),
126
+ def on_connect(self):
127
+ super_ = super().on_connect()
128
+
129
+ def on_connect(conn):
130
+ if super_ is not None:
131
+ super_(conn)
132
+
133
+ server_version = dbapi.createIRIS(conn).classMethodValue(
134
+ "%SYSTEM.Version", "GetNumber"
135
+ )
136
+ server_version = server_version.split(".")
137
+ self.server_version = tuple(
138
+ [int("".join(filter(str.isdigit, v))) for v in server_version]
127
139
  )
128
- )
129
- except: # noqa
130
- return None
131
-
132
- def _get_option(self, connection, option):
133
- with connection.cursor() as cursor:
134
- cursor.execute("SELECT %SYSTEM_SQL.Util_GetOption(?)", (option,))
135
- row = cursor.fetchone()
136
- if row:
137
- return row[0]
138
- return None
140
+
141
+ return on_connect
142
+
143
+ def _get_server_version_info(self, connection):
144
+ return self.server_version
139
145
 
140
146
  def set_isolation_level(self, connection, level_str):
141
147
  if level_str == "AUTOCOMMIT":
@@ -147,6 +153,7 @@ class IRISDialect_intersystems(IRISDialect):
147
153
  with connection.cursor() as cursor:
148
154
  cursor.execute("SET TRANSACTION ISOLATION LEVEL " + level_str)
149
155
 
156
+ """
150
157
  @remap_exception
151
158
  def do_execute(self, cursor, query, params, context=None):
152
159
  if query.endswith(";"):
@@ -163,5 +170,6 @@ class IRISDialect_intersystems(IRISDialect):
163
170
  params = [param[0] if len(param) else None for param in params]
164
171
  cursor.executemany(query, params)
165
172
 
173
+ """
166
174
 
167
175
  dialect = IRISDialect_intersystems
@@ -15,6 +15,10 @@ def connect(*args, **kwargs):
15
15
  return iris.connect(*args, **kwargs)
16
16
 
17
17
 
18
+ def createIRIS(*args, **kwargs):
19
+ return iris.createIRIS(*args, **kwargs)
20
+
21
+
18
22
  # globals
19
23
  apilevel = "2.0"
20
24
  threadsafety = 0
@@ -960,8 +960,8 @@ class Requirements(SuiteRequirements, AlembicRequirements):
960
960
  literal string, e.g. via the TypeEngine.literal_processor() method.
961
961
 
962
962
  """
963
-
964
- return exclusions.open()
963
+ # works stable only on Community driver
964
+ return self.community_driver
965
965
 
966
966
  @property
967
967
  def datetime(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: sqlalchemy-iris
3
- Version: 0.17.1b2
3
+ Version: 0.17.1b4
4
4
  Summary: InterSystems IRIS for SQLAlchemy
5
5
  Home-page: https://github.com/caretdev/sqlalchemy-iris
6
6
  Maintainer: CaretDev
@@ -84,7 +84,6 @@ sqlalchemy_iris.egg-info/entry_points.txt
84
84
  sqlalchemy_iris.egg-info/requires.txt
85
85
  sqlalchemy_iris.egg-info/top_level.txt
86
86
  sqlalchemy_iris/intersystems/__init__.py
87
- sqlalchemy_iris/intersystems/cursor.py
88
87
  sqlalchemy_iris/intersystems/dbapi.py
89
88
  tests/test_alembic.py
90
89
  tests/test_suite.py
@@ -93,14 +93,18 @@ else:
93
93
  @classmethod
94
94
  def insert_data(cls, connection):
95
95
  connection.execute(
96
- text(
97
- """
98
- insert into tab (col) values
99
- ('some data 1'),
100
- ('some data 2'),
101
- ('some data 3')
102
- """
103
- )
96
+ cls.tables.tab.insert(),
97
+ [
98
+ {
99
+ "col": "some data 1",
100
+ },
101
+ {
102
+ "col": "some data 2",
103
+ },
104
+ {
105
+ "col": "some data 3",
106
+ },
107
+ ],
104
108
  )
105
109
 
106
110
  def test_str_to_blob(self, connection, ops_context):
@@ -22,7 +22,6 @@ from sqlalchemy_iris import INTEGER
22
22
  from sqlalchemy_iris import IRISListBuild
23
23
  from sqlalchemy_iris import IRISVector
24
24
  from sqlalchemy.exc import DatabaseError
25
- from sqlalchemy.testing.config import requirements
26
25
 
27
26
  import pytest
28
27
 
@@ -1,17 +0,0 @@
1
- from typing import Any
2
- from sqlalchemy import CursorResult
3
- from sqlalchemy.engine.cursor import CursorFetchStrategy
4
- from sqlalchemy.engine.interfaces import DBAPICursor
5
-
6
-
7
- class InterSystemsCursorFetchStrategy(CursorFetchStrategy):
8
-
9
- def fetchone(
10
- self,
11
- result: CursorResult[Any],
12
- dbapi_cursor: DBAPICursor,
13
- hard_close: bool = False,
14
- ) -> Any:
15
- row = dbapi_cursor.fetchone()
16
- return tuple(row) if row else None
17
-