SQLAlchemy 2.0.24__py3-none-any.whl → 2.0.26__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 (267) hide show
  1. {SQLAlchemy-2.0.24.dist-info → SQLAlchemy-2.0.26.dist-info}/LICENSE +1 -1
  2. {SQLAlchemy-2.0.24.dist-info → SQLAlchemy-2.0.26.dist-info}/METADATA +2 -2
  3. SQLAlchemy-2.0.26.dist-info/RECORD +268 -0
  4. sqlalchemy/__init__.py +2 -2
  5. sqlalchemy/connectors/__init__.py +1 -1
  6. sqlalchemy/connectors/aioodbc.py +1 -14
  7. sqlalchemy/connectors/asyncio.py +5 -6
  8. sqlalchemy/connectors/pyodbc.py +6 -4
  9. sqlalchemy/cyextension/__init__.py +1 -1
  10. sqlalchemy/cyextension/collections.pyx +1 -1
  11. sqlalchemy/cyextension/immutabledict.pxd +1 -1
  12. sqlalchemy/cyextension/immutabledict.pyx +1 -1
  13. sqlalchemy/cyextension/processors.pyx +1 -1
  14. sqlalchemy/cyextension/resultproxy.pyx +1 -1
  15. sqlalchemy/cyextension/util.pyx +1 -1
  16. sqlalchemy/dialects/__init__.py +1 -1
  17. sqlalchemy/dialects/_typing.py +1 -1
  18. sqlalchemy/dialects/mssql/__init__.py +1 -1
  19. sqlalchemy/dialects/mssql/aioodbc.py +1 -1
  20. sqlalchemy/dialects/mssql/base.py +25 -35
  21. sqlalchemy/dialects/mssql/information_schema.py +2 -1
  22. sqlalchemy/dialects/mssql/json.py +1 -1
  23. sqlalchemy/dialects/mssql/provision.py +1 -1
  24. sqlalchemy/dialects/mssql/pymssql.py +1 -1
  25. sqlalchemy/dialects/mssql/pyodbc.py +1 -2
  26. sqlalchemy/dialects/mysql/__init__.py +1 -1
  27. sqlalchemy/dialects/mysql/aiomysql.py +9 -2
  28. sqlalchemy/dialects/mysql/asyncmy.py +9 -2
  29. sqlalchemy/dialects/mysql/base.py +21 -17
  30. sqlalchemy/dialects/mysql/cymysql.py +1 -1
  31. sqlalchemy/dialects/mysql/dml.py +1 -1
  32. sqlalchemy/dialects/mysql/enumerated.py +1 -1
  33. sqlalchemy/dialects/mysql/expression.py +1 -1
  34. sqlalchemy/dialects/mysql/json.py +1 -1
  35. sqlalchemy/dialects/mysql/mariadb.py +1 -1
  36. sqlalchemy/dialects/mysql/mariadbconnector.py +1 -1
  37. sqlalchemy/dialects/mysql/mysqlconnector.py +1 -1
  38. sqlalchemy/dialects/mysql/mysqldb.py +1 -1
  39. sqlalchemy/dialects/mysql/provision.py +1 -1
  40. sqlalchemy/dialects/mysql/pymysql.py +1 -1
  41. sqlalchemy/dialects/mysql/pyodbc.py +1 -1
  42. sqlalchemy/dialects/mysql/reflection.py +7 -2
  43. sqlalchemy/dialects/mysql/reserved_words.py +1 -1
  44. sqlalchemy/dialects/mysql/types.py +1 -1
  45. sqlalchemy/dialects/oracle/__init__.py +6 -2
  46. sqlalchemy/dialects/oracle/base.py +26 -18
  47. sqlalchemy/dialects/oracle/cx_oracle.py +16 -9
  48. sqlalchemy/dialects/oracle/dictionary.py +1 -1
  49. sqlalchemy/dialects/oracle/oracledb.py +205 -4
  50. sqlalchemy/dialects/oracle/provision.py +1 -1
  51. sqlalchemy/dialects/oracle/types.py +1 -1
  52. sqlalchemy/dialects/postgresql/__init__.py +5 -1
  53. sqlalchemy/dialects/postgresql/_psycopg_common.py +1 -1
  54. sqlalchemy/dialects/postgresql/array.py +7 -9
  55. sqlalchemy/dialects/postgresql/asyncpg.py +9 -17
  56. sqlalchemy/dialects/postgresql/base.py +79 -49
  57. sqlalchemy/dialects/postgresql/dml.py +4 -4
  58. sqlalchemy/dialects/postgresql/ext.py +1 -1
  59. sqlalchemy/dialects/postgresql/hstore.py +1 -1
  60. sqlalchemy/dialects/postgresql/json.py +1 -1
  61. sqlalchemy/dialects/postgresql/named_types.py +1 -2
  62. sqlalchemy/dialects/postgresql/operators.py +1 -1
  63. sqlalchemy/dialects/postgresql/pg8000.py +5 -7
  64. sqlalchemy/dialects/postgresql/pg_catalog.py +1 -1
  65. sqlalchemy/dialects/postgresql/provision.py +1 -1
  66. sqlalchemy/dialects/postgresql/psycopg.py +11 -8
  67. sqlalchemy/dialects/postgresql/psycopg2.py +2 -2
  68. sqlalchemy/dialects/postgresql/psycopg2cffi.py +1 -1
  69. sqlalchemy/dialects/postgresql/ranges.py +130 -48
  70. sqlalchemy/dialects/postgresql/types.py +6 -16
  71. sqlalchemy/dialects/sqlite/__init__.py +1 -1
  72. sqlalchemy/dialects/sqlite/aiosqlite.py +1 -1
  73. sqlalchemy/dialects/sqlite/base.py +4 -4
  74. sqlalchemy/dialects/sqlite/dml.py +4 -4
  75. sqlalchemy/dialects/sqlite/json.py +1 -1
  76. sqlalchemy/dialects/sqlite/provision.py +1 -1
  77. sqlalchemy/dialects/sqlite/pysqlcipher.py +1 -1
  78. sqlalchemy/dialects/sqlite/pysqlite.py +1 -1
  79. sqlalchemy/engine/__init__.py +1 -1
  80. sqlalchemy/engine/_py_processors.py +1 -1
  81. sqlalchemy/engine/_py_row.py +1 -1
  82. sqlalchemy/engine/_py_util.py +1 -1
  83. sqlalchemy/engine/base.py +31 -42
  84. sqlalchemy/engine/characteristics.py +1 -1
  85. sqlalchemy/engine/create.py +5 -9
  86. sqlalchemy/engine/cursor.py +19 -19
  87. sqlalchemy/engine/default.py +37 -21
  88. sqlalchemy/engine/events.py +1 -1
  89. sqlalchemy/engine/interfaces.py +20 -35
  90. sqlalchemy/engine/mock.py +1 -1
  91. sqlalchemy/engine/processors.py +1 -1
  92. sqlalchemy/engine/reflection.py +1 -1
  93. sqlalchemy/engine/result.py +33 -56
  94. sqlalchemy/engine/row.py +5 -9
  95. sqlalchemy/engine/strategies.py +1 -1
  96. sqlalchemy/engine/url.py +8 -5
  97. sqlalchemy/engine/util.py +1 -1
  98. sqlalchemy/event/__init__.py +1 -1
  99. sqlalchemy/event/api.py +1 -1
  100. sqlalchemy/event/attr.py +22 -8
  101. sqlalchemy/event/base.py +7 -10
  102. sqlalchemy/event/legacy.py +7 -7
  103. sqlalchemy/event/registry.py +4 -4
  104. sqlalchemy/events.py +1 -1
  105. sqlalchemy/exc.py +4 -7
  106. sqlalchemy/ext/__init__.py +1 -1
  107. sqlalchemy/ext/associationproxy.py +46 -69
  108. sqlalchemy/ext/asyncio/__init__.py +1 -1
  109. sqlalchemy/ext/asyncio/base.py +5 -9
  110. sqlalchemy/ext/asyncio/engine.py +23 -34
  111. sqlalchemy/ext/asyncio/exc.py +1 -1
  112. sqlalchemy/ext/asyncio/result.py +20 -35
  113. sqlalchemy/ext/asyncio/scoping.py +12 -23
  114. sqlalchemy/ext/asyncio/session.py +14 -27
  115. sqlalchemy/ext/automap.py +11 -17
  116. sqlalchemy/ext/baked.py +1 -1
  117. sqlalchemy/ext/compiler.py +1 -1
  118. sqlalchemy/ext/declarative/__init__.py +1 -1
  119. sqlalchemy/ext/declarative/extensions.py +1 -1
  120. sqlalchemy/ext/horizontal_shard.py +3 -5
  121. sqlalchemy/ext/hybrid.py +25 -35
  122. sqlalchemy/ext/indexable.py +1 -1
  123. sqlalchemy/ext/instrumentation.py +14 -16
  124. sqlalchemy/ext/mutable.py +7 -13
  125. sqlalchemy/ext/mypy/__init__.py +1 -1
  126. sqlalchemy/ext/mypy/apply.py +9 -7
  127. sqlalchemy/ext/mypy/decl_class.py +4 -4
  128. sqlalchemy/ext/mypy/infer.py +1 -1
  129. sqlalchemy/ext/mypy/names.py +1 -1
  130. sqlalchemy/ext/mypy/plugin.py +1 -1
  131. sqlalchemy/ext/mypy/util.py +8 -8
  132. sqlalchemy/ext/orderinglist.py +1 -1
  133. sqlalchemy/ext/serializer.py +1 -1
  134. sqlalchemy/future/__init__.py +1 -1
  135. sqlalchemy/future/engine.py +1 -1
  136. sqlalchemy/inspection.py +12 -19
  137. sqlalchemy/log.py +3 -5
  138. sqlalchemy/orm/__init__.py +1 -1
  139. sqlalchemy/orm/_orm_constructors.py +12 -27
  140. sqlalchemy/orm/_typing.py +16 -22
  141. sqlalchemy/orm/attributes.py +12 -19
  142. sqlalchemy/orm/base.py +34 -59
  143. sqlalchemy/orm/bulk_persistence.py +27 -27
  144. sqlalchemy/orm/clsregistry.py +5 -7
  145. sqlalchemy/orm/collections.py +13 -14
  146. sqlalchemy/orm/context.py +38 -29
  147. sqlalchemy/orm/decl_api.py +27 -40
  148. sqlalchemy/orm/decl_base.py +10 -13
  149. sqlalchemy/orm/dependency.py +6 -4
  150. sqlalchemy/orm/descriptor_props.py +7 -7
  151. sqlalchemy/orm/dynamic.py +2 -3
  152. sqlalchemy/orm/evaluator.py +1 -1
  153. sqlalchemy/orm/events.py +10 -6
  154. sqlalchemy/orm/exc.py +1 -1
  155. sqlalchemy/orm/identity.py +1 -1
  156. sqlalchemy/orm/instrumentation.py +3 -5
  157. sqlalchemy/orm/interfaces.py +5 -6
  158. sqlalchemy/orm/loading.py +16 -14
  159. sqlalchemy/orm/mapped_collection.py +2 -4
  160. sqlalchemy/orm/mapper.py +14 -10
  161. sqlalchemy/orm/path_registry.py +12 -23
  162. sqlalchemy/orm/persistence.py +55 -29
  163. sqlalchemy/orm/properties.py +7 -6
  164. sqlalchemy/orm/query.py +24 -45
  165. sqlalchemy/orm/relationships.py +29 -27
  166. sqlalchemy/orm/scoping.py +22 -40
  167. sqlalchemy/orm/session.py +42 -60
  168. sqlalchemy/orm/state.py +3 -5
  169. sqlalchemy/orm/state_changes.py +1 -1
  170. sqlalchemy/orm/strategies.py +18 -12
  171. sqlalchemy/orm/strategy_options.py +17 -17
  172. sqlalchemy/orm/sync.py +1 -1
  173. sqlalchemy/orm/unitofwork.py +1 -1
  174. sqlalchemy/orm/util.py +19 -21
  175. sqlalchemy/orm/writeonly.py +4 -7
  176. sqlalchemy/pool/__init__.py +1 -1
  177. sqlalchemy/pool/base.py +13 -19
  178. sqlalchemy/pool/events.py +2 -2
  179. sqlalchemy/pool/impl.py +7 -12
  180. sqlalchemy/schema.py +1 -1
  181. sqlalchemy/sql/__init__.py +1 -1
  182. sqlalchemy/sql/_dml_constructors.py +1 -1
  183. sqlalchemy/sql/_elements_constructors.py +3 -7
  184. sqlalchemy/sql/_orm_types.py +1 -1
  185. sqlalchemy/sql/_py_util.py +1 -1
  186. sqlalchemy/sql/_selectable_constructors.py +16 -23
  187. sqlalchemy/sql/_typing.py +46 -63
  188. sqlalchemy/sql/annotation.py +20 -29
  189. sqlalchemy/sql/base.py +18 -35
  190. sqlalchemy/sql/cache_key.py +47 -32
  191. sqlalchemy/sql/coercions.py +26 -41
  192. sqlalchemy/sql/compiler.py +124 -91
  193. sqlalchemy/sql/crud.py +19 -21
  194. sqlalchemy/sql/ddl.py +8 -7
  195. sqlalchemy/sql/default_comparator.py +13 -10
  196. sqlalchemy/sql/dml.py +74 -92
  197. sqlalchemy/sql/elements.py +181 -268
  198. sqlalchemy/sql/events.py +1 -1
  199. sqlalchemy/sql/expression.py +1 -1
  200. sqlalchemy/sql/functions.py +142 -136
  201. sqlalchemy/sql/lambdas.py +14 -15
  202. sqlalchemy/sql/naming.py +1 -1
  203. sqlalchemy/sql/operators.py +40 -67
  204. sqlalchemy/sql/roles.py +3 -5
  205. sqlalchemy/sql/schema.py +58 -65
  206. sqlalchemy/sql/selectable.py +60 -81
  207. sqlalchemy/sql/sqltypes.py +68 -114
  208. sqlalchemy/sql/traversals.py +14 -13
  209. sqlalchemy/sql/type_api.py +37 -40
  210. sqlalchemy/sql/util.py +17 -30
  211. sqlalchemy/sql/visitors.py +29 -45
  212. sqlalchemy/testing/__init__.py +1 -1
  213. sqlalchemy/testing/assertions.py +1 -1
  214. sqlalchemy/testing/assertsql.py +4 -4
  215. sqlalchemy/testing/asyncio.py +1 -1
  216. sqlalchemy/testing/config.py +12 -9
  217. sqlalchemy/testing/engines.py +3 -5
  218. sqlalchemy/testing/entities.py +1 -1
  219. sqlalchemy/testing/exclusions.py +7 -7
  220. sqlalchemy/testing/fixtures/__init__.py +1 -1
  221. sqlalchemy/testing/fixtures/base.py +1 -1
  222. sqlalchemy/testing/fixtures/mypy.py +11 -7
  223. sqlalchemy/testing/fixtures/orm.py +1 -1
  224. sqlalchemy/testing/fixtures/sql.py +1 -1
  225. sqlalchemy/testing/pickleable.py +1 -1
  226. sqlalchemy/testing/plugin/__init__.py +1 -1
  227. sqlalchemy/testing/plugin/bootstrap.py +1 -1
  228. sqlalchemy/testing/plugin/plugin_base.py +2 -2
  229. sqlalchemy/testing/plugin/pytestplugin.py +4 -4
  230. sqlalchemy/testing/profiling.py +1 -1
  231. sqlalchemy/testing/provision.py +5 -2
  232. sqlalchemy/testing/requirements.py +7 -1
  233. sqlalchemy/testing/schema.py +1 -1
  234. sqlalchemy/testing/suite/__init__.py +1 -1
  235. sqlalchemy/testing/suite/test_cte.py +1 -1
  236. sqlalchemy/testing/suite/test_ddl.py +1 -1
  237. sqlalchemy/testing/suite/test_deprecations.py +1 -1
  238. sqlalchemy/testing/suite/test_dialect.py +1 -1
  239. sqlalchemy/testing/suite/test_insert.py +17 -7
  240. sqlalchemy/testing/suite/test_reflection.py +4 -4
  241. sqlalchemy/testing/suite/test_results.py +1 -1
  242. sqlalchemy/testing/suite/test_rowcount.py +2 -2
  243. sqlalchemy/testing/suite/test_select.py +1 -1
  244. sqlalchemy/testing/suite/test_sequence.py +1 -1
  245. sqlalchemy/testing/suite/test_types.py +1 -1
  246. sqlalchemy/testing/suite/test_unicode_ddl.py +1 -1
  247. sqlalchemy/testing/suite/test_update_delete.py +11 -7
  248. sqlalchemy/testing/util.py +1 -1
  249. sqlalchemy/testing/warnings.py +1 -1
  250. sqlalchemy/types.py +1 -1
  251. sqlalchemy/util/__init__.py +1 -1
  252. sqlalchemy/util/_collections.py +7 -13
  253. sqlalchemy/util/_concurrency_py3k.py +4 -7
  254. sqlalchemy/util/_has_cy.py +1 -1
  255. sqlalchemy/util/_py_collections.py +3 -5
  256. sqlalchemy/util/compat.py +1 -1
  257. sqlalchemy/util/concurrency.py +1 -1
  258. sqlalchemy/util/deprecations.py +1 -1
  259. sqlalchemy/util/langhelpers.py +10 -18
  260. sqlalchemy/util/preloaded.py +1 -1
  261. sqlalchemy/util/queue.py +3 -5
  262. sqlalchemy/util/tool_support.py +1 -1
  263. sqlalchemy/util/topological.py +1 -1
  264. sqlalchemy/util/typing.py +38 -39
  265. SQLAlchemy-2.0.24.dist-info/RECORD +0 -268
  266. {SQLAlchemy-2.0.24.dist-info → SQLAlchemy-2.0.26.dist-info}/WHEEL +0 -0
  267. {SQLAlchemy-2.0.24.dist-info → SQLAlchemy-2.0.26.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Copyright 2005-2023 SQLAlchemy authors and contributors <see AUTHORS file>.
1
+ Copyright 2005-2024 SQLAlchemy authors and contributors <see AUTHORS file>.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of
4
4
  this software and associated documentation files (the "Software"), to deal in
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SQLAlchemy
3
- Version: 2.0.24
3
+ Version: 2.0.26
4
4
  Summary: Database Abstraction Library
5
5
  Home-page: https://www.sqlalchemy.org
6
6
  Author: Mike Bayer
@@ -26,7 +26,7 @@ Classifier: Topic :: Database :: Front-Ends
26
26
  Requires-Python: >=3.7
27
27
  Description-Content-Type: text/x-rst
28
28
  License-File: LICENSE
29
- Requires-Dist: typing-extensions >=4.2.0
29
+ Requires-Dist: typing-extensions >=4.6.0
30
30
  Requires-Dist: greenlet !=0.4.17 ; platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32")))))
31
31
  Requires-Dist: importlib-metadata ; python_version < "3.8"
32
32
  Provides-Extra: aiomysql
@@ -0,0 +1,268 @@
1
+ sqlalchemy/__init__.py,sha256=2eUX5Ae7-QzQjRFXoUCplgLHBcotaZCa0aFzxJdAQcY,13033
2
+ sqlalchemy/events.py,sha256=k-ZD38aSPD29LYhED7CBqttp5MDVVx_YSaWC2-cu9ec,525
3
+ sqlalchemy/exc.py,sha256=M_8-O1hd8i6gbyx-TapV400p_Lxq2QqTGMXUAO-YgCc,23976
4
+ sqlalchemy/inspection.py,sha256=MF-LE358wZDUEl1IH8-Uwt2HI65EsQpQW5o5udHkZwA,5063
5
+ sqlalchemy/log.py,sha256=8x9UR3nj0uFm6or6bQF-JWb4fYv2zOeQjG_w-0wOJFA,8607
6
+ sqlalchemy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ sqlalchemy/schema.py,sha256=dKiWmgHYjcKQ4TiiD6vD0UMmIsD8u0Fsor1M9AAeGUs,3194
8
+ sqlalchemy/types.py,sha256=cQFM-hFRmaf1GErun1qqgEs6QxufvzMuwKqj9tuMPpE,3168
9
+ sqlalchemy/connectors/__init__.py,sha256=PzXPqZqi3BzEnrs1eW0DcsR4lyknAzhhN9rWcQ97hb4,476
10
+ sqlalchemy/connectors/aioodbc.py,sha256=GSTiNMO9h0qjPxgqaxDwWZ8HvhWMFNVR6MJQnN1oc40,5288
11
+ sqlalchemy/connectors/asyncio.py,sha256=6s4hDYfuMjJ9KbJ4s7bF1fp5DmcgV77ozgZ5-bwZ0wc,5955
12
+ sqlalchemy/connectors/pyodbc.py,sha256=t7AjyxIOnaWg3CrlUEpBs4Y5l0HFdNt3P_cSSKhbi0Y,8501
13
+ sqlalchemy/cyextension/__init__.py,sha256=GzhhN8cjMnDTE0qerlUlpbrNmFPHQWCZ4Gk74OAxl04,244
14
+ sqlalchemy/cyextension/collections.pyx,sha256=L7DZ3DGKpgw2MT2ZZRRxCnrcyE5pU1NAFowWgAzQPEc,12571
15
+ sqlalchemy/cyextension/immutabledict.pxd,sha256=3x3-rXG5eRQ7bBnktZ-OJ9-6ft8zToPmTDOd92iXpB0,291
16
+ sqlalchemy/cyextension/immutabledict.pyx,sha256=KfDTYbTfebstE8xuqAtuXsHNAK0_b5q_ymUiinUe_xs,3535
17
+ sqlalchemy/cyextension/processors.pyx,sha256=R1rHsGLEaGeBq5VeCydjClzYlivERIJ9B-XLOJlf2MQ,1792
18
+ sqlalchemy/cyextension/resultproxy.pyx,sha256=eWLdyBXiBy_CLQrF5ScfWJm7X0NeelscSXedtj1zv9Q,2725
19
+ sqlalchemy/cyextension/util.pyx,sha256=B85orxa9LddLuQEaDoVSq1XmAXIbLKxrxpvuB8ogV_o,2530
20
+ sqlalchemy/dialects/__init__.py,sha256=Kos9Gf5JZg1Vg6GWaCqEbD6e0r1jCwCmcnJIfcxDdcY,1770
21
+ sqlalchemy/dialects/_typing.py,sha256=hyv0nKucX2gI8ispB1IsvaUgrEPn9zEcq9hS7kfstEw,888
22
+ sqlalchemy/dialects/type_migration_guidelines.txt,sha256=-uHNdmYFGB7bzUNT6i8M5nb4j6j9YUKAtW4lcBZqsMg,8239
23
+ sqlalchemy/dialects/mssql/__init__.py,sha256=r5t8wFRNtBQoiUWh0WfIEWzXZW6f3D0uDt6NZTW_7Cc,1880
24
+ sqlalchemy/dialects/mssql/aioodbc.py,sha256=UQd9ecSMIML713TDnLAviuBVJle7P7i1FtqGZZePk2Y,2022
25
+ sqlalchemy/dialects/mssql/base.py,sha256=2Tx9sC5bOd0JbweaMaqnjGOgESur7ZaaN1S66KMTwHk,133298
26
+ sqlalchemy/dialects/mssql/information_schema.py,sha256=HswjDc6y0mPXCf_x6VyylHlBdBa4PSY6Evxmmlch700,8084
27
+ sqlalchemy/dialects/mssql/json.py,sha256=evUACW2O62TAPq8B7QIPagz7jfc664ql9ms68JqiYzg,4816
28
+ sqlalchemy/dialects/mssql/provision.py,sha256=RTVbgYLFAHzEnpVQDJroU8ji_10MqBTiZfyP9_-QNT4,5362
29
+ sqlalchemy/dialects/mssql/pymssql.py,sha256=eZRLz7HGt3SdoZUjFBmA9BS43N7AhIASw7VPBPEJuG0,4038
30
+ sqlalchemy/dialects/mssql/pyodbc.py,sha256=vwM-vBlmRwrqxOc73P0sFOrBSwn24wzc5IkEOpalbXQ,27056
31
+ sqlalchemy/dialects/mysql/__init__.py,sha256=bxbi4hkysUK2OOVvr1F49akUj1cky27kKb07tgFzI9U,2153
32
+ sqlalchemy/dialects/mysql/aiomysql.py,sha256=67JrSUD1BmN88k_ASk6GvrttZFQiFjDY0wBiwdllxMk,9964
33
+ sqlalchemy/dialects/mysql/asyncmy.py,sha256=CGILIRKf_2Ut9Ng2yBlmdg62laL-ockEm6GMuN7xlKE,10033
34
+ sqlalchemy/dialects/mysql/base.py,sha256=KA7tvRxKUw0KwHwMth2rz-NWV0xMkVbYvPoBM9wrAFw,120850
35
+ sqlalchemy/dialects/mysql/cymysql.py,sha256=eXT1ry0w_qRxjiO24M980c-8PZ9qSsbhqBHntjEiKB0,2300
36
+ sqlalchemy/dialects/mysql/dml.py,sha256=HXJMAvimJsqvhj3UZO4vW_6LkF5RqaKbHvklAjor7yU,7645
37
+ sqlalchemy/dialects/mysql/enumerated.py,sha256=ipEPPQqoXfFwcywNdcLlZCEzHBtnitHRah1Gn6nItcg,8448
38
+ sqlalchemy/dialects/mysql/expression.py,sha256=lsmQCHKwfPezUnt27d2kR6ohk4IRFCA64KBS16kx5dc,4097
39
+ sqlalchemy/dialects/mysql/json.py,sha256=l6MEZ0qp8FgiRrIQvOMhyEJq0q6OqiEnvDTx5Cbt9uQ,2269
40
+ sqlalchemy/dialects/mysql/mariadb.py,sha256=kTfBLioLKk4JFFst4TY_iWqPtnvvQXFHknLfm89H2N8,853
41
+ sqlalchemy/dialects/mysql/mariadbconnector.py,sha256=VVRwKLb6GzDmitOM4wLNvmZw6RdhnIwkLl7IZfAmUy8,8734
42
+ sqlalchemy/dialects/mysql/mysqlconnector.py,sha256=qiQdfLPze3QHuASAZ9iqRzD0hDW8FbKoQnfAEQCF7tM,5675
43
+ sqlalchemy/dialects/mysql/mysqldb.py,sha256=9x_JiY4hj4tykG1ckuEGPyH4jCtsh4fgBhNukVnjUos,9658
44
+ sqlalchemy/dialects/mysql/provision.py,sha256=4oGkClQ8jC3YLPF54sB4kCjFc8HRTwf5zl5zftAAXGo,3474
45
+ sqlalchemy/dialects/mysql/pymysql.py,sha256=GUnSHd2M2uKjmN46Hheymtm26g7phEgwYOXrX0zLY8M,4083
46
+ sqlalchemy/dialects/mysql/pyodbc.py,sha256=072crI4qVyPhajYvHnsfFeSrNjLFVPIjBQKo5uyz5yk,4297
47
+ sqlalchemy/dialects/mysql/reflection.py,sha256=XXM8AGpaRTqDvuObg89Bzn_4h2ETG03viYBpWZJM3vc,22822
48
+ sqlalchemy/dialects/mysql/reserved_words.py,sha256=Dm7FINIAkrKLoXmdu26SpE6V8LDCGyp734nmHV2tMd0,9154
49
+ sqlalchemy/dialects/mysql/types.py,sha256=aPzx7hqqZ21aGwByEC-yWZUl6OpMvkbxwTqdN3OUGGI,24267
50
+ sqlalchemy/dialects/oracle/__init__.py,sha256=p4-2gw7TT0bX_MoJXTGD4i8WHctYsK9kCRbkpzykBrc,1493
51
+ sqlalchemy/dialects/oracle/base.py,sha256=-7b5iubFPxJyDRoLXlxj8rk8eBRN2_IdZlB2zzzrrbw,118246
52
+ sqlalchemy/dialects/oracle/cx_oracle.py,sha256=t5yH4svVz7xoDSITF958blgZ01hbCUEWUKrAXwiCiAE,55566
53
+ sqlalchemy/dialects/oracle/dictionary.py,sha256=7WMrbPkqo8ZdGjaEZyQr-5f2pajSOF1OTGb8P97z8-g,19519
54
+ sqlalchemy/dialects/oracle/oracledb.py,sha256=UFcZwrrk0pWfAp_SKJZ1B5rIQHtNhOvuu73_JaSnTbI,9487
55
+ sqlalchemy/dialects/oracle/provision.py,sha256=O9ZpF4OG6Cx4mMzLRfZwhs8dZjrJETWR402n9c7726A,8304
56
+ sqlalchemy/dialects/oracle/types.py,sha256=QK3hJvWzKnnCe3oD3rItwEEIwcoBze8qGg7VFOvVlIk,8231
57
+ sqlalchemy/dialects/postgresql/__init__.py,sha256=kwgzMhtZKDHD12HMGo5MtdKCnDdy6wLezDGZPOEoU3Q,3895
58
+ sqlalchemy/dialects/postgresql/_psycopg_common.py,sha256=7TudtgsPiSB8O5kX8W8KxcNYR8t5h_UHb86b_ChL0P8,5696
59
+ sqlalchemy/dialects/postgresql/array.py,sha256=9dJ_1WjWSBX1-MGDZtJACJ38vtRO3da7d4UId79WsnQ,13713
60
+ sqlalchemy/dialects/postgresql/asyncpg.py,sha256=9KXQ5QKtWCbHfChYTG7O9qI9mgYt6W2p1LXYGTx-Oyw,40112
61
+ sqlalchemy/dialects/postgresql/base.py,sha256=ogY8rcQvT9jjYdtStxZ_nhTl8LmhB_zeJyhZIaUyMLk,176486
62
+ sqlalchemy/dialects/postgresql/dml.py,sha256=Pc69Le6qzmUHHb1FT5zeUSD31dWm6SBgdCAGW89cs3s,11212
63
+ sqlalchemy/dialects/postgresql/ext.py,sha256=1bZ--iNh2O9ym7l2gXZX48yP3yMO4dqb9RpYro2Mj2Q,16262
64
+ sqlalchemy/dialects/postgresql/hstore.py,sha256=otAx-RTDfpi_tcXkMuQV0JOIXtYgevgnsikLKKOkI6U,11541
65
+ sqlalchemy/dialects/postgresql/json.py,sha256=-ffnp85fQBOyt0Bjb7XAupmOxloUdzFZZgixUG3Wj5w,11212
66
+ sqlalchemy/dialects/postgresql/named_types.py,sha256=SFhs9_l108errKNuAMPl761RQ2imTO9PbUAnSv-WtRg,17100
67
+ sqlalchemy/dialects/postgresql/operators.py,sha256=NsAaWun_tL3d_be0fs9YL6T4LPKK6crnmFxxIJHgyeY,2808
68
+ sqlalchemy/dialects/postgresql/pg8000.py,sha256=3yoekiWSF-xnaWMqG76XrYPMqerg-42TdmfsW_ivK9E,18640
69
+ sqlalchemy/dialects/postgresql/pg_catalog.py,sha256=nAKavWTE_4cqxiDKDTdo-ivkCxxRIlzD5GO9Wl1yrG4,8884
70
+ sqlalchemy/dialects/postgresql/provision.py,sha256=yqyx-aDFO9l2YcL9f4T5HBP_Lnt5dHsMjpuXUG8mi7A,5762
71
+ sqlalchemy/dialects/postgresql/psycopg.py,sha256=TF53axr1EkTBAZD85JCq6wA7XTcJTzXueSz26txDbgc,22364
72
+ sqlalchemy/dialects/postgresql/psycopg2.py,sha256=gAP3poHDUxEB6iut6sxe9PhBiOrV_iIMvnP0NUlC-Rw,31607
73
+ sqlalchemy/dialects/postgresql/psycopg2cffi.py,sha256=M7wAYSL6Pvt-4nbfacAHGyyw4XMKJ_bQZ1tc1pBtIdg,1756
74
+ sqlalchemy/dialects/postgresql/ranges.py,sha256=6CgV7qkxEMJ9AQsiibo_XBLJYzGh-2ZxpG83sRaesVY,32949
75
+ sqlalchemy/dialects/postgresql/types.py,sha256=Jfxqw9JaKNOq29JRWBublywgb3lLMyzx8YZI7CXpS2s,7300
76
+ sqlalchemy/dialects/sqlite/__init__.py,sha256=lp9DIggNn349M-7IYhUA8et8--e8FRExWD2V_r1LJk4,1182
77
+ sqlalchemy/dialects/sqlite/aiosqlite.py,sha256=OMvxP2eWyqk5beF-sHhzxRmjzO4VCQp55q7NH2XPVTE,12305
78
+ sqlalchemy/dialects/sqlite/base.py,sha256=lUtigjn7NdPBq831zQsLcBwdwRJqdgKM_tUaDrMElOE,96794
79
+ sqlalchemy/dialects/sqlite/dml.py,sha256=9GE55WvwoktKy2fHeT-Wbc9xPHgsbh5oBfd_fckMH5Q,8443
80
+ sqlalchemy/dialects/sqlite/json.py,sha256=Eoplbb_4dYlfrtmQaI8Xddd2suAIHA-IdbDQYM-LIhs,2777
81
+ sqlalchemy/dialects/sqlite/provision.py,sha256=UCpmwxf4IWlrpb2eLHGbPTpCFVbdI_KAh2mKtjiLYao,5632
82
+ sqlalchemy/dialects/sqlite/pysqlcipher.py,sha256=OL2S_05DK9kllZj6DOz7QtEl7jI7syxjW6woS725ii4,5356
83
+ sqlalchemy/dialects/sqlite/pysqlite.py,sha256=TAOqsHIjhbUZOF_Qk7UooiekkVZNhYJNduxlGQjokeA,27900
84
+ sqlalchemy/engine/__init__.py,sha256=Stb2oV6l8w65JvqEo6J4qtKoApcmOpXy3AAxQud4C1o,2818
85
+ sqlalchemy/engine/_py_processors.py,sha256=j9i_lcYYQOYJMcsDerPxI0sVFBIlX5sqoYMdMJlgWPI,3744
86
+ sqlalchemy/engine/_py_row.py,sha256=wSqoUFzLOJ1f89kgDb6sJm9LUrF5LMFpXPcK1vUsKcs,3787
87
+ sqlalchemy/engine/_py_util.py,sha256=f2DI3AN1kv6EplelowesCVpwS8hSXNufRkZoQmJtSH8,2484
88
+ sqlalchemy/engine/base.py,sha256=NGD1iokXsJBw_6sBOpX4STo_05fQFd52qUl1YiJZsdU,122038
89
+ sqlalchemy/engine/characteristics.py,sha256=Qbvt4CPrggJ3GfxHl0hOAxopjnCQy-W_pjtwLIe-Q1g,2590
90
+ sqlalchemy/engine/create.py,sha256=5Me7rgLvmZVJM6QzoH8aBHz0lIratA2vXN8cW6kUgdY,32872
91
+ sqlalchemy/engine/cursor.py,sha256=jSjpGM5DiwX1pwEHGx3wyqgHrgj8rwU5ZpVvMv5GaJs,74443
92
+ sqlalchemy/engine/default.py,sha256=VSqSm-juosz-5WqZPWjgDQf8Fra27M-YsrVVcs7RwPU,84672
93
+ sqlalchemy/engine/events.py,sha256=c0unNFFiHzTAvkUtXoJaxzMFMDwurBkHiiUhuN8qluc,37381
94
+ sqlalchemy/engine/interfaces.py,sha256=gktNzgLjNK-KrYMU__Lk0h85SXQI8LCjDakkuLxagNE,112688
95
+ sqlalchemy/engine/mock.py,sha256=yvpxgFmRw5G4QsHeF-ZwQGHKES-HqQOucTxFtN1uzdk,4179
96
+ sqlalchemy/engine/processors.py,sha256=XyfINKbo-2fjN-mW55YybvFyQMOil50_kVqsunahkNs,2379
97
+ sqlalchemy/engine/reflection.py,sha256=FlT5kPpKm7Lah50GNt5XcnlJWojTL3LD_x0SoCF9kfY,75127
98
+ sqlalchemy/engine/result.py,sha256=j6BI4Wj2bziQNQG5OlG_Cm4KcNWY9AoYvTXVlJUU-D8,77603
99
+ sqlalchemy/engine/row.py,sha256=9AAQo9zYDL88GcZ3bjcQTwMT-YIcuGTSMAyTfmBJ_yM,12032
100
+ sqlalchemy/engine/strategies.py,sha256=DqFSWaXJPL-29Omot9O0aOcuGL8KmCGyOvnPGDkAJoE,442
101
+ sqlalchemy/engine/url.py,sha256=8eWkUaIUyDExOcJ2D4xJXRcn4OY1GQJ3Q2duSX6UGAg,30784
102
+ sqlalchemy/engine/util.py,sha256=hkEql1t19WHl6uzR55-F-Fs_VMCJ7p02KKQVNUDSXTk,5667
103
+ sqlalchemy/event/__init__.py,sha256=KBrp622xojnC3FFquxa2JsMamwAbfkvzfv6Op0NKiYc,997
104
+ sqlalchemy/event/api.py,sha256=BUTAZjSlzvq4Hn2v2pihP_P1yo3lvCVDczK8lV_XJ80,8227
105
+ sqlalchemy/event/attr.py,sha256=X8QeHGK4ioSYht1vkhc11f606_mq_t91jMNIT314ubs,20751
106
+ sqlalchemy/event/base.py,sha256=3n9FmUkcXYHHyGzfpjKDsrIUVCNST_hq4zOtrNm0_a4,14954
107
+ sqlalchemy/event/legacy.py,sha256=teMPs00fO-4g8a_z2omcVKkYce5wj_1uvJO2n2MIeuo,8227
108
+ sqlalchemy/event/registry.py,sha256=nfTSSyhjZZXc5wseWB4sXn-YibSc0LKX8mg17XlWmAo,10835
109
+ sqlalchemy/ext/__init__.py,sha256=S1fGKAbycnQDV01gs-JWGaFQ9GCD4QHwKcU2wnugg_o,322
110
+ sqlalchemy/ext/associationproxy.py,sha256=5O5ANHARO8jytvqBQmOu-QjNVE4Hh3tfYquqKAj5ajs,65771
111
+ sqlalchemy/ext/automap.py,sha256=hBlKAfZn2fgAAQh7vh4f2kClbb5ryOgV59tzVHEObQM,61389
112
+ sqlalchemy/ext/baked.py,sha256=H6T1il7GY84BhzPFj49UECSpZh_eBuiHomA-QIsYOYQ,17807
113
+ sqlalchemy/ext/compiler.py,sha256=ONPoxoKD2yUS9R2-oOhmPsA7efm-Bs0BXo7HE1dGlsU,20391
114
+ sqlalchemy/ext/horizontal_shard.py,sha256=wuwAPnHymln0unSBnyx-cpX0AfESKSsypaSQTYCvzDk,16750
115
+ sqlalchemy/ext/hybrid.py,sha256=LXph2NOtBQj6rZMi5ar-WCxkY7qaFp-o-UFIvCy-ep0,52432
116
+ sqlalchemy/ext/indexable.py,sha256=UkTelbydKCdKelzbv3HWFFavoET9WocKaGRPGEOVfN8,11032
117
+ sqlalchemy/ext/instrumentation.py,sha256=sg8ghDjdHSODFXh_jAmpgemnNX1rxCeeXEG3-PMdrNk,15707
118
+ sqlalchemy/ext/mutable.py,sha256=L5ZkHBGYhMaqO75Xtyrk2DBR44RDk0g6Rz2HzHH0F8Q,37355
119
+ sqlalchemy/ext/orderinglist.py,sha256=TGYbsGH72wEZcFNQDYDsZg9OSPuzf__P8YX8_2HtYUo,14384
120
+ sqlalchemy/ext/serializer.py,sha256=YemanWdeMVUDweHCnQc-iMO6mVVXNo2qQ5NK0Eb2_Es,6178
121
+ sqlalchemy/ext/asyncio/__init__.py,sha256=1OqSxEyIUn7RWLGyO12F-jAUIvk1I6DXlVy80-Gvkds,1317
122
+ sqlalchemy/ext/asyncio/base.py,sha256=fl7wxZD9KjgFiCtG3WXrYjHEvanamcsodCqq9pH9lOk,8905
123
+ sqlalchemy/ext/asyncio/engine.py,sha256=vQRdpBnGuyzyG48ZssDZvFlcS6Y6ZXUYI0GEOQqdDxk,47941
124
+ sqlalchemy/ext/asyncio/exc.py,sha256=8sII7VMXzs2TrhizhFQMzSfcroRtiesq8o3UwLfXSgQ,639
125
+ sqlalchemy/ext/asyncio/result.py,sha256=ID2eh-NHW-lnNFTxbKhje8fr-tnsucUsiw_jcpGcSPc,30409
126
+ sqlalchemy/ext/asyncio/scoping.py,sha256=BmE1UbFV_C4BXB4WngJc523DeMH-nTchNb8ORiSPYfE,52597
127
+ sqlalchemy/ext/asyncio/session.py,sha256=Zhkrwwc4rqZJntUpzbgruQNgpuOwaRmjrBQb8ol19z0,62894
128
+ sqlalchemy/ext/declarative/__init__.py,sha256=20psLdFQbbOWfpdXHZ0CTY6I1k4UqXvKemNVu1LvPOI,1818
129
+ sqlalchemy/ext/declarative/extensions.py,sha256=uCjN1GisQt54AjqYnKYzJdUjnGd2pZBW47WWdPlS7FE,19547
130
+ sqlalchemy/ext/mypy/__init__.py,sha256=0WebDIZmqBD0OTq5JLtd_PmfF9JGxe4d4Qv3Ml3PKUg,241
131
+ sqlalchemy/ext/mypy/apply.py,sha256=Aek_-XA1eXihT4attxhfE43yBKtCgsxBSb--qgZKUqc,10550
132
+ sqlalchemy/ext/mypy/decl_class.py,sha256=1vVJRII2apnLTUbc5HkJS6Z2GueaUv_eKvhbqh7Wik4,17384
133
+ sqlalchemy/ext/mypy/infer.py,sha256=KVnmLFEVS33Al8pUKI7MJbJQu3KeveBUMl78EluBORw,19369
134
+ sqlalchemy/ext/mypy/names.py,sha256=IQ16GLZFqKxfYxIZxkbTurBqOUYbUV-64V_DSRns1tc,10630
135
+ sqlalchemy/ext/mypy/plugin.py,sha256=74ML8LI9xar0V86oCxnPFv5FQGEEfUzK64vOay4BKFs,9750
136
+ sqlalchemy/ext/mypy/util.py,sha256=1zuDQG8ezmF-XhJmAQU_lcBHiD--sL-lq20clg8t4lE,9448
137
+ sqlalchemy/future/__init__.py,sha256=q2mw-gxk_xoxJLEvRoyMha3vO1xSRHrslcExOHZwmPA,512
138
+ sqlalchemy/future/engine.py,sha256=AgIw6vMsef8W6tynOTkxsjd6o_OQDwGjLdbpoMD8ue8,495
139
+ sqlalchemy/orm/__init__.py,sha256=ZYys5nL3RFUDCMOLFDBrRI52F6er3S1U1OY9TeORuKs,8463
140
+ sqlalchemy/orm/_orm_constructors.py,sha256=VWY_MotbcQlECGx2uwEu3IcRkZ4RgLM_ufPad3IA9ZM,99354
141
+ sqlalchemy/orm/_typing.py,sha256=DVBfpHmDVK4x1zxaGJPY2GoTrAsyR6uexv20Lzf1afc,4973
142
+ sqlalchemy/orm/attributes.py,sha256=-IGg2RFjOPwAEr-boohvlZfitz7OtaXz1v8-7uG8ekw,92520
143
+ sqlalchemy/orm/base.py,sha256=HhuarpRU-BpKSHE1LeeBaG8CpdkwwLrvTkUVRK-ofjg,27424
144
+ sqlalchemy/orm/bulk_persistence.py,sha256=SSSR0Omv8A8BzpsOdSo4x75XICoqGpO1sUkyEWUVGso,70022
145
+ sqlalchemy/orm/clsregistry.py,sha256=29LyYiuj0qbebOpgW6DbBPNB2ikTweFQar1byCst7I0,17958
146
+ sqlalchemy/orm/collections.py,sha256=jpMsJGVixmrW9kfT8wevm9kpatKRqyDLcqWd7CjKPxE,52179
147
+ sqlalchemy/orm/context.py,sha256=Wjx0d1Rkxd-wsX1mP2V2_4VbOxdNY6S_HijdXJ-TtKg,112001
148
+ sqlalchemy/orm/decl_api.py,sha256=0gCZWM2sOXb_4OzUXfevVUisZWOUrErQTAHyaSQQL5k,63674
149
+ sqlalchemy/orm/decl_base.py,sha256=Tq6I3Jm3bkM01mmoiHfdFXLE94YDk1ik2u2dXL1RxLc,81601
150
+ sqlalchemy/orm/dependency.py,sha256=hgjksUWhgbmgHK5GdJdiDCBgDAIGQXIrY-Tj79tbL2k,47631
151
+ sqlalchemy/orm/descriptor_props.py,sha256=pKtpP7H1LB_YuHRVrEYpfFZybEnUUdPwQXxduYFe2hA,37180
152
+ sqlalchemy/orm/dynamic.py,sha256=jksBDCOsm6EBMVParcNGuMeaAv12hX4IzouKspC-HPA,9786
153
+ sqlalchemy/orm/evaluator.py,sha256=q292K5vdpP69G7Z9y1RqI5GFAk2diUPwnsXE8De_Wgw,11925
154
+ sqlalchemy/orm/events.py,sha256=_Ttun_bCSGgvsfg-VzAeEcsGpacf8p4c5z12JkSQkjM,127697
155
+ sqlalchemy/orm/exc.py,sha256=w7MZkJMGGlu5J6jOFSmi9XXzc02ctnTv34jrEWpI-eM,7356
156
+ sqlalchemy/orm/identity.py,sha256=jHdCxCpCyda_8mFOfGmN_Pr0XZdKiU-2hFZshlNxbHs,9249
157
+ sqlalchemy/orm/instrumentation.py,sha256=M-kZmkUvHUxtf-0mCA8RIM5QmMH1hWlYR_pKMwaidjA,24321
158
+ sqlalchemy/orm/interfaces.py,sha256=1yyppjMHcP5NPXjxfOlSeFNmc-3_T_o2upeF3KFZtc0,48378
159
+ sqlalchemy/orm/loading.py,sha256=JN2zLnPjNnk7K9DERbyerxESCXin7m7X1XP0gfdWLOE,57537
160
+ sqlalchemy/orm/mapped_collection.py,sha256=3cneB1dfPTLrsTvKoo9_oCY2xtq4UAHfe5WSXPyqIS4,19690
161
+ sqlalchemy/orm/mapper.py,sha256=8SVHr7tO-DDNpNGi68usc7PLQ7mTwzkZNEJu1aMb6dQ,171059
162
+ sqlalchemy/orm/path_registry.py,sha256=bIXllBRevK7Ic5irajYnZgl2iazJ0rKNRkhXJSlfxjY,25850
163
+ sqlalchemy/orm/persistence.py,sha256=dzyB2JOXNwQgaCbN8kh0sEz00WFePr48qf8NWVCUZH8,61701
164
+ sqlalchemy/orm/properties.py,sha256=81I-PIF7f7bB0qdH4BCYMWzCzRpe57yUiEIPv2tzBoA,29127
165
+ sqlalchemy/orm/query.py,sha256=UVNWn_Rq4a8agh5UUWNeu0DJQtPceCWVpXx1-uW7A4E,117555
166
+ sqlalchemy/orm/relationships.py,sha256=DqD3WBKpeVQ59ldh6eCxar_sIToA3tc2-bJPtp3zfpM,127709
167
+ sqlalchemy/orm/scoping.py,sha256=gFYywLeMmd5qjFdVPzeuCX727mTaChrCv8aqn4wPke0,78677
168
+ sqlalchemy/orm/session.py,sha256=yiKyoJBARQj4I1ZBjsIxc6ecCpt2Upjvlxruo2A5HRc,193181
169
+ sqlalchemy/orm/state.py,sha256=mW2f1hMSNeTJ89foutOE1EqLLD6DZkrSeO-pgagZweg,37520
170
+ sqlalchemy/orm/state_changes.py,sha256=qKYg7NxwrDkuUY3EPygAztym6oAVUFcP2wXn7QD3Mz4,6815
171
+ sqlalchemy/orm/strategies.py,sha256=OtmMtWpCDk4ZiaM_ipzGn80sPOi6Opwj3Co4lUHpd_w,114206
172
+ sqlalchemy/orm/strategy_options.py,sha256=RbFl-79Lrh8XIVUnZFmQ5GVvR586SG_szs3prw5DZLQ,84204
173
+ sqlalchemy/orm/sync.py,sha256=g7iZfSge1HgxMk9SKRgUgtHEbpbZ1kP_CBqOIdTOXqc,5779
174
+ sqlalchemy/orm/unitofwork.py,sha256=fiVaqcymbDDHRa1NjS90N9Z466nd5pkJOEi1dHO6QLY,27033
175
+ sqlalchemy/orm/util.py,sha256=MSLKAWZNw3FzFTH094xpfrhoA2Ov5pJQinK_dU_M0zo,80351
176
+ sqlalchemy/orm/writeonly.py,sha256=SYu2sAaHZONk2pW4PmtE871LG-O0P_bjidvKzY1H_zI,22305
177
+ sqlalchemy/pool/__init__.py,sha256=qiDdq4r4FFAoDrK6ncugF_i6usi_X1LeJt-CuBHey0s,1804
178
+ sqlalchemy/pool/base.py,sha256=WF4az4ZKuzQGuKeSJeyexaYjmWZUvYdC6KIi8zTGodw,52236
179
+ sqlalchemy/pool/events.py,sha256=xGjkIUZl490ZDtCHqnQF9ZCwe2Jv93eGXmnQxftB11E,13147
180
+ sqlalchemy/pool/impl.py,sha256=2k2YMY9AepEoqGD_ClP_sUodSoa6atkt3GLPPWI49i4,17717
181
+ sqlalchemy/sql/__init__.py,sha256=UNa9EUiYWoPayf-FzNcwVgQvpsBdInPZfpJesAStN9o,5820
182
+ sqlalchemy/sql/_dml_constructors.py,sha256=YdBJex0MCVACv4q2nl_ii3uhxzwU6aDB8zAsratX5UQ,3867
183
+ sqlalchemy/sql/_elements_constructors.py,sha256=rrxq5Nzyo7GbLaGxb8VRZxko2nW0z7SYEli8ArfMIXI,62550
184
+ sqlalchemy/sql/_orm_types.py,sha256=T-vjcry4C1y0GToFKVxQCnmly_-Zsq4IO4SHN6bvUF4,625
185
+ sqlalchemy/sql/_py_util.py,sha256=hiM9ePbRSGs60bAMxPFuJCIC_p9SQ1VzqXGiPchiYwE,2173
186
+ sqlalchemy/sql/_selectable_constructors.py,sha256=wjE6HrLm9cR7bxvZXT8sFLUqT6t_J9G1XyQCnYmBDl0,18780
187
+ sqlalchemy/sql/_typing.py,sha256=Z3tBzapYRP0sKL7IwqnzPE9b8Bbq9vQtc4iV9tvxDoU,12494
188
+ sqlalchemy/sql/annotation.py,sha256=aqbbVz9kfbCT3_66CZ9GEirVN197Cukoqt8rq48FgkQ,18245
189
+ sqlalchemy/sql/base.py,sha256=2MVQnIL0b8xuzp1Fcv0NAye6h_OcgYpsUgLB4sy8Ahk,73756
190
+ sqlalchemy/sql/cache_key.py,sha256=sJhAA-2jovIteeIU7mw9hSL1liPP9Ez89CZZJFC3h6E,33548
191
+ sqlalchemy/sql/coercions.py,sha256=1xzN_9U5BCJGgokdc5iYj5o2cMAfEEZkr1Oa9Q-JYj8,40493
192
+ sqlalchemy/sql/compiler.py,sha256=aDD100xmz8WpBq8oe7PJ5ar8lk9emd54gEE5K2Hr76g,271187
193
+ sqlalchemy/sql/crud.py,sha256=g9xcol2KRGjZi1qsb2-bVz8zgVy_53gfMtJcnNO2vyQ,56521
194
+ sqlalchemy/sql/ddl.py,sha256=CIqMilCKfuQnF0lrZsQdTxgrbXqcTauKr0Ojzj77PFQ,45602
195
+ sqlalchemy/sql/default_comparator.py,sha256=utXWsZVGEjflhFfCT4ywa6RnhORc1Rryo87Hga71Rps,16707
196
+ sqlalchemy/sql/dml.py,sha256=pn0Lm1ofC5qVZzwGWFW73lPCiNba8OsTeemurJgwRyg,65614
197
+ sqlalchemy/sql/elements.py,sha256=kGRUilpx-rr6TTZgZpC5b71OnxxmCgDJRF2fYjDtxh8,172025
198
+ sqlalchemy/sql/events.py,sha256=iC_Q1Htm1Aobt5tOYxWfHHqNpoytrULORmUKcusH_-E,18290
199
+ sqlalchemy/sql/expression.py,sha256=VMX-dLpsZYnVRJpYNDozDUgaj7iQ0HuewUKVefD57PE,7586
200
+ sqlalchemy/sql/functions.py,sha256=MjXK0IVv45Y4n96_TMDZGJ7fwAhGHPRbFP8hOJgaplQ,63689
201
+ sqlalchemy/sql/lambdas.py,sha256=6P__bsWsFnrD7M18FPiBXI0L0OdWZOEV25FAijT4bwo,49289
202
+ sqlalchemy/sql/naming.py,sha256=ZHs1qSV3ou8TYmZ92uvU3sfdklUQlIz4uhe330n05SU,6858
203
+ sqlalchemy/sql/operators.py,sha256=r4oQp4h5zTMFFOpiFNV56joIK-QIjJCobatsmaZ-724,75935
204
+ sqlalchemy/sql/roles.py,sha256=pOsVn_OZD7mF2gJByHf24Rjopt0_Hu3dUCEOK5t4KS8,7662
205
+ sqlalchemy/sql/schema.py,sha256=WOIBaDVdg-zahrP95CPYgY4--3OQN56DH6xm28JDF-Y,228262
206
+ sqlalchemy/sql/selectable.py,sha256=7lxe79hZvnHyzHe1DobodI1lZ1eo8quSLZ6phw10Zj4,232848
207
+ sqlalchemy/sql/sqltypes.py,sha256=UV46KTkgxSin48oPckPOqk3Gx0tZT1l60qXwk7SbKlo,127101
208
+ sqlalchemy/sql/traversals.py,sha256=NFgJrVJzInO3HrnG90CklxrDXhFydZohPs2vRJkh3Bo,33589
209
+ sqlalchemy/sql/type_api.py,sha256=5DzdVquCJomFfpfMyLYbCb66PWxjxbSRdjh6UYB1Yv4,83841
210
+ sqlalchemy/sql/util.py,sha256=qGHQF-tPCj-m1FBerzT7weCanGcXU7dK5m-W7NHio-4,48077
211
+ sqlalchemy/sql/visitors.py,sha256=71wdVvhhZL4nJvVwFAs6ssaW-qZgNRSmKjpAcOzF_TA,36317
212
+ sqlalchemy/testing/__init__.py,sha256=VsrEHrORpAF5n7Vfl43YQgABh6EP1xBx_gHxs7pSXeE,3126
213
+ sqlalchemy/testing/assertions.py,sha256=gL0rA7CCZJbcVgvWOPV91tTZTRwQc1_Ta0-ykBn83Ew,31439
214
+ sqlalchemy/testing/assertsql.py,sha256=IgQG7l94WaiRP8nTbilJh1ZHZl125g7GPq-S5kmQZN0,16817
215
+ sqlalchemy/testing/asyncio.py,sha256=fkdRz-E37d5OrQKw5hdjmglOTJyXGnJzaJpvNXOBLxg,3728
216
+ sqlalchemy/testing/config.py,sha256=AqyH1qub_gDqX0BvlL-JBQe7N-t2wo8655FtwblUNOY,12090
217
+ sqlalchemy/testing/engines.py,sha256=UnH-8--3zLlYz4IbbCPwC375Za_DC61Spz-oKulbs9Q,13347
218
+ sqlalchemy/testing/entities.py,sha256=IphFegPKbff3Un47jY6bi7_MQXy6qkx_50jX2tHZJR4,3354
219
+ sqlalchemy/testing/exclusions.py,sha256=T8B01hmm8WVs-EKcUOQRzabahPqblWJfOidi6bHJ6GA,12460
220
+ sqlalchemy/testing/pickleable.py,sha256=U9mIqk-zaxq9Xfy7HErP7UrKgTov-A3QFnhZh-NiOjI,2833
221
+ sqlalchemy/testing/profiling.py,sha256=PbuPhRFbauFilUONeY3tV_Y_5lBkD7iCa8VVyH2Sk9Y,10148
222
+ sqlalchemy/testing/provision.py,sha256=zXsw2D2Xpmw_chmYLsE1GXQqKQ-so3V8xU_joTcKan0,14619
223
+ sqlalchemy/testing/requirements.py,sha256=N9pSj7z2wVMkBif-DQfPVa_cl9k6p9g_J5FY1OsWtrY,51817
224
+ sqlalchemy/testing/schema.py,sha256=lr4GkGrGwagaHMuSGzWdzkMaj3HnS7dgfLLWfxt__-U,6513
225
+ sqlalchemy/testing/util.py,sha256=BFiSp3CEX95Dr-vv4l_7ZRu5vjZi9hjjnp-JKNfuS5E,14080
226
+ sqlalchemy/testing/warnings.py,sha256=fJ-QJUY2zY2PPxZJKv9medW-BKKbCNbA4Ns_V3YwFXM,1546
227
+ sqlalchemy/testing/fixtures/__init__.py,sha256=dMClrIoxqlYIFpk2ia4RZpkbfxsS_3EBigr9QsPJ66g,1198
228
+ sqlalchemy/testing/fixtures/base.py,sha256=9r_J2ksiTzClpUxW0TczICHrWR7Ny8PV8IsBz6TsGFI,12256
229
+ sqlalchemy/testing/fixtures/mypy.py,sha256=gdxiwNFIzDlNGSOdvM3gbwDceVCC9t8oM5kKbwyhGBk,11973
230
+ sqlalchemy/testing/fixtures/orm.py,sha256=8EFbnaBbXX_Bf4FcCzBUaAHgyVpsLGBHX16SGLqE3Fg,6095
231
+ sqlalchemy/testing/fixtures/sql.py,sha256=MFOuYBUyPIpHJzjRCHL9vU-IT4bD6LXGGMvsp0v1FY8,15704
232
+ sqlalchemy/testing/plugin/__init__.py,sha256=79F--BIY_NTBzVRIlJGgAY5LNJJ3cD19XvrAo4X0W9A,247
233
+ sqlalchemy/testing/plugin/bootstrap.py,sha256=oYScMbEW4pCnWlPEAq1insFruCXFQeEVBwo__i4McpU,1685
234
+ sqlalchemy/testing/plugin/plugin_base.py,sha256=BgNzWNEmgpK4CwhyblQQKnH-7FDKVi_Uul5vw8fFjBU,21578
235
+ sqlalchemy/testing/plugin/pytestplugin.py,sha256=Jtj073ArTcAmetv81sHmrUhlH0SblcSK4wyN8S4hmvo,27554
236
+ sqlalchemy/testing/suite/__init__.py,sha256=Y5DRNG0Yl1u3ypt9zVF0Z9suPZeuO_UQGLl-wRgvTjU,722
237
+ sqlalchemy/testing/suite/test_cte.py,sha256=6zBC3W2OwX1Xs-HedzchcKN2S7EaLNkgkvV_JSZ_Pq0,6451
238
+ sqlalchemy/testing/suite/test_ddl.py,sha256=1Npkf0C_4UNxphthAGjG078n0vPEgnSIHpDu5MfokxQ,12031
239
+ sqlalchemy/testing/suite/test_deprecations.py,sha256=BcJxZTcjYqeOAENVElCg3hVvU6fkGEW3KGBMfnW8bng,5337
240
+ sqlalchemy/testing/suite/test_dialect.py,sha256=EH4ZQWbnGdtjmx5amZtTyhYmrkXJCvW1SQoLahoE7uk,22923
241
+ sqlalchemy/testing/suite/test_insert.py,sha256=9azifj6-OCD7s8h_tAO1uPw100ibQv8YoKc_VA3hn3c,18824
242
+ sqlalchemy/testing/suite/test_reflection.py,sha256=tJSbJFg5fw0sSUv3I_FPmhN7rWWeJtq3YyxmylWJUlM,106466
243
+ sqlalchemy/testing/suite/test_results.py,sha256=NQ23m8FDVd0ub751jN4PswGoAhk5nrqvjHvpYULZXnc,15937
244
+ sqlalchemy/testing/suite/test_rowcount.py,sha256=3KDTlRgjpQ1OVfp__1cv8Hvq4CsDKzmrhJQ_WIJWoJg,7900
245
+ sqlalchemy/testing/suite/test_select.py,sha256=FvMFYQW9IJpDWGYZiJk46is6YrtmdSghBdTjZCG8T0Y,58574
246
+ sqlalchemy/testing/suite/test_sequence.py,sha256=66bCoy4xo99GBSaX6Hxb88foANAykLGRz1YEKbvpfuA,9923
247
+ sqlalchemy/testing/suite/test_types.py,sha256=rFmTOg6XuMch9L2-XthfLJRCTTwpZbMfrNss2g09gmc,65677
248
+ sqlalchemy/testing/suite/test_unicode_ddl.py,sha256=c3_eIxLyORuSOhNDP0jWKxPyUf3SwMFpdalxtquwqlM,6141
249
+ sqlalchemy/testing/suite/test_update_delete.py,sha256=yTiM2unnfOK9rK8ZkqeTTU_MkT-RsKFLmdYliniZfAY,3994
250
+ sqlalchemy/util/__init__.py,sha256=B3bedg-LSQEscwqgmYYU-VENUX8_zAE3q9vb7tkfJNY,8277
251
+ sqlalchemy/util/_collections.py,sha256=NE9dGJo8UNXIMbY3l3k8AO9BdPW04DlKTYraKCinchI,20063
252
+ sqlalchemy/util/_concurrency_py3k.py,sha256=v8VVoBfFvFHe4j8mMkVLfdUrTbV897p8RWGAm73Ue9U,8574
253
+ sqlalchemy/util/_has_cy.py,sha256=wCQmeSjT3jaH_oxfCEtGk-1g0gbSpt5MCK5UcWdMWqk,1247
254
+ sqlalchemy/util/_py_collections.py,sha256=U6L5AoyLdgSv7cdqB4xxQbw1rpeJjyOZVXffgxgga8I,16714
255
+ sqlalchemy/util/compat.py,sha256=R6bpBydldtbr6h7oJePihQxFb7jKiI-YDsK465MSOzk,8714
256
+ sqlalchemy/util/concurrency.py,sha256=mhwHm0utriD14DRqxTBWgIW7QuwdSEiLgLiJdUjiR3w,2427
257
+ sqlalchemy/util/deprecations.py,sha256=YBwvvYhSB8LhasIZRKvg_-WNoVhPUcaYI1ZrnjDn868,11971
258
+ sqlalchemy/util/langhelpers.py,sha256=khoFN05HjHiWY9ddeehCYxYG2u8LDzuiIKLOGLSAihU,64905
259
+ sqlalchemy/util/preloaded.py,sha256=az7NmLJLsqs0mtM9uBkIu10-841RYDq8wOyqJ7xXvqE,5904
260
+ sqlalchemy/util/queue.py,sha256=CaeSEaYZ57YwtmLdNdOIjT5PK_LCuwMFiO0mpp39ybM,10185
261
+ sqlalchemy/util/tool_support.py,sha256=9braZyidaiNrZVsWtGmkSmus50-byhuYrlAqvhjcmnA,6135
262
+ sqlalchemy/util/topological.py,sha256=N3M3Le7KzGHCmqPGg0ZBqixTDGwmFLhOZvBtc4rHL_g,3458
263
+ sqlalchemy/util/typing.py,sha256=FqH6WjV3p-8rz68YaXktpiZrPu3kmug2-gktJxBQSnI,16641
264
+ SQLAlchemy-2.0.26.dist-info/LICENSE,sha256=PA9Zq4h9BB3mpOUv_j6e212VIt6Qn66abNettue-MpM,1100
265
+ SQLAlchemy-2.0.26.dist-info/METADATA,sha256=KOZNxFs155oKbnsjEj_FSoBzqKn9fihXA13ZCZR90j8,9602
266
+ SQLAlchemy-2.0.26.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
267
+ SQLAlchemy-2.0.26.dist-info/top_level.txt,sha256=rp-ZgB7D8G11ivXON5VGPjupT1voYmWqkciDt5Uaw_Q,11
268
+ SQLAlchemy-2.0.26.dist-info/RECORD,,
sqlalchemy/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # __init__.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -269,7 +269,7 @@ from .types import Uuid as Uuid
269
269
  from .types import VARBINARY as VARBINARY
270
270
  from .types import VARCHAR as VARCHAR
271
271
 
272
- __version__ = "2.0.24"
272
+ __version__ = "2.0.26"
273
273
 
274
274
 
275
275
  def __go(lcls: Any) -> None:
@@ -1,5 +1,5 @@
1
1
  # connectors/__init__.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # connectors/aioodbc.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -170,18 +170,5 @@ class aiodbcConnector(PyODBCConnector):
170
170
  else:
171
171
  return pool.AsyncAdaptedQueuePool
172
172
 
173
- def _do_isolation_level(self, connection, autocommit, isolation_level):
174
- connection.set_autocommit(autocommit)
175
- connection.set_isolation_level(isolation_level)
176
-
177
- def _do_autocommit(self, connection, value):
178
- connection.set_autocommit(value)
179
-
180
- def set_readonly(self, connection, value):
181
- connection.set_read_only(value)
182
-
183
- def set_deferrable(self, connection, value):
184
- connection.set_deferrable(value)
185
-
186
173
  def get_driver_connection(self, connection):
187
174
  return connection._connection
@@ -1,5 +1,5 @@
1
1
  # connectors/asyncio.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -35,10 +35,13 @@ class AsyncAdapt_dbapi_cursor:
35
35
  self.await_ = adapt_connection.await_
36
36
 
37
37
  cursor = self._connection.cursor()
38
+ self._cursor = self._aenter_cursor(cursor)
38
39
 
39
- self._cursor = self.await_(cursor.__aenter__())
40
40
  self._rows = collections.deque()
41
41
 
42
+ def _aenter_cursor(self, cursor):
43
+ return self.await_(cursor.__aenter__())
44
+
42
45
  @property
43
46
  def description(self):
44
47
  return self._cursor.description
@@ -77,10 +80,6 @@ class AsyncAdapt_dbapi_cursor:
77
80
  result = await self._cursor.execute(operation, parameters or ())
78
81
 
79
82
  if self._cursor.description and not self.server_side:
80
- # aioodbc has a "fake" async result, so we have to pull it out
81
- # of that here since our default result is not async.
82
- # we could just as easily grab "_rows" here and be done with it
83
- # but this is safer.
84
83
  self._rows = collections.deque(await self._cursor.fetchall())
85
84
  return result
86
85
 
@@ -1,5 +1,5 @@
1
1
  # connectors/pyodbc.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -217,9 +217,11 @@ class PyODBCConnector(Connector):
217
217
 
218
218
  cursor.setinputsizes(
219
219
  [
220
- (dbtype, None, None)
221
- if not isinstance(dbtype, tuple)
222
- else dbtype
220
+ (
221
+ (dbtype, None, None)
222
+ if not isinstance(dbtype, tuple)
223
+ else dbtype
224
+ )
223
225
  for key, dbtype, sqltype in list_of_tuples
224
226
  ]
225
227
  )
@@ -1,5 +1,5 @@
1
1
  # cyextension/__init__.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/collections.pyx
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/immutabledict.pxd
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/immutabledict.pyx
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/processors.pyx
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/resultproxy.pyx
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # cyextension/util.pyx
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/__init__.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/_typing.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/__init__.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/aioodbc.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/base.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1426,7 +1426,6 @@ class ROWVERSION(TIMESTAMP):
1426
1426
 
1427
1427
 
1428
1428
  class NTEXT(sqltypes.UnicodeText):
1429
-
1430
1429
  """MSSQL NTEXT type, for variable-length unicode text up to 2^30
1431
1430
  characters."""
1432
1431
 
@@ -1557,36 +1556,26 @@ class MSUUid(sqltypes.Uuid):
1557
1556
  return process
1558
1557
 
1559
1558
  def _sentinel_value_resolver(self, dialect):
1560
- """Return a callable that will receive the uuid object or string
1561
- as it is normally passed to the DB in the parameter set, after
1562
- bind_processor() is called. Convert this value to match
1563
- what it would be as coming back from an INSERT..OUTPUT inserted.
1564
-
1565
- for the UUID type, there are four varieties of settings so here
1566
- we seek to convert to the string or UUID representation that comes
1567
- back from the driver.
1559
+ if not self.native_uuid:
1560
+ # dealing entirely with strings going in and out of
1561
+ # CHAR(32)
1562
+ return None
1568
1563
 
1569
- """
1570
- character_based_uuid = (
1571
- not dialect.supports_native_uuid or not self.native_uuid
1572
- )
1564
+ # true if we expect the returned UUID values to be strings
1565
+ # pymssql sends UUID objects back, pyodbc sends strings,
1566
+ # however pyodbc converts them to uppercase coming back, so
1567
+ # need special logic here
1568
+ character_based_uuid = not dialect.supports_native_uuid
1573
1569
 
1574
1570
  if character_based_uuid:
1575
- if self.native_uuid:
1576
- # for pyodbc, uuid.uuid() objects are accepted for incoming
1577
- # data, as well as strings. but the driver will always return
1578
- # uppercase strings in result sets.
1579
- def process(value):
1580
- return str(value).upper()
1581
-
1582
- else:
1583
-
1584
- def process(value):
1585
- return str(value)
1571
+ # we sent UUID objects in all cases, see bind_processor()
1572
+ def process(uuid_value):
1573
+ return str(uuid_value).upper()
1586
1574
 
1587
1575
  return process
1576
+ elif not self.as_uuid:
1577
+ return _python_UUID
1588
1578
  else:
1589
- # for pymssql, we get uuid.uuid() objects back.
1590
1579
  return None
1591
1580
 
1592
1581
 
@@ -1596,12 +1585,12 @@ class UNIQUEIDENTIFIER(sqltypes.Uuid[sqltypes._UUID_RETURN]):
1596
1585
  @overload
1597
1586
  def __init__(
1598
1587
  self: UNIQUEIDENTIFIER[_python_UUID], as_uuid: Literal[True] = ...
1599
- ):
1600
- ...
1588
+ ): ...
1601
1589
 
1602
1590
  @overload
1603
- def __init__(self: UNIQUEIDENTIFIER[str], as_uuid: Literal[False] = ...):
1604
- ...
1591
+ def __init__(
1592
+ self: UNIQUEIDENTIFIER[str], as_uuid: Literal[False] = ...
1593
+ ): ...
1605
1594
 
1606
1595
  def __init__(self, as_uuid: bool = True):
1607
1596
  """Construct a :class:`_mssql.UNIQUEIDENTIFIER` type.
@@ -2483,10 +2472,12 @@ class MSSQLCompiler(compiler.SQLCompiler):
2483
2472
  type_expression = "ELSE CAST(JSON_VALUE(%s, %s) AS %s)" % (
2484
2473
  self.process(binary.left, **kw),
2485
2474
  self.process(binary.right, **kw),
2486
- "FLOAT"
2487
- if isinstance(binary.type, sqltypes.Float)
2488
- else "NUMERIC(%s, %s)"
2489
- % (binary.type.precision, binary.type.scale),
2475
+ (
2476
+ "FLOAT"
2477
+ if isinstance(binary.type, sqltypes.Float)
2478
+ else "NUMERIC(%s, %s)"
2479
+ % (binary.type.precision, binary.type.scale)
2480
+ ),
2490
2481
  )
2491
2482
  elif binary.type._type_affinity is sqltypes.Boolean:
2492
2483
  # the NULL handling is particularly weird with boolean, so
@@ -2522,7 +2513,6 @@ class MSSQLCompiler(compiler.SQLCompiler):
2522
2513
 
2523
2514
 
2524
2515
  class MSSQLStrictCompiler(MSSQLCompiler):
2525
-
2526
2516
  """A subclass of MSSQLCompiler which disables the usage of bind
2527
2517
  parameters where not allowed natively by MS-SQL.
2528
2518
 
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/information_schema.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -207,6 +207,7 @@ class NumericSqlVariant(TypeDecorator):
207
207
  int 1 is returned as "\x01\x00\x00\x00". On python 3 it returns the
208
208
  correct value as string.
209
209
  """
210
+
210
211
  impl = Unicode
211
212
  cache_ok = True
212
213
 
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/json.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under
@@ -1,5 +1,5 @@
1
1
  # dialects/mssql/provision.py
2
- # Copyright (C) 2005-2023 the SQLAlchemy authors and contributors
2
+ # Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
3
3
  # <see AUTHORS file>
4
4
  #
5
5
  # This module is part of SQLAlchemy and is released under