]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fix typos (#13047)
authorFardin Alizadeh <fardinalizadeh3007@gmail.com>
Fri, 19 Dec 2025 20:24:23 +0000 (23:54 +0330)
committerGitHub <noreply@github.com>
Fri, 19 Dec 2025 20:24:23 +0000 (21:24 +0100)
* fix typos

* fix typos

* fix typos

---------

Co-authored-by: fardyn <fa.alizadeh@pm.me>
63 files changed:
doc/build/changelog/changelog_05.rst
doc/build/changelog/changelog_07.rst
doc/build/changelog/changelog_12.rst
doc/build/changelog/changelog_14.rst
doc/build/changelog/changelog_20.rst
doc/build/changelog/migration_06.rst
doc/build/changelog/migration_07.rst
doc/build/changelog/migration_09.rst
doc/build/changelog/migration_10.rst
doc/build/changelog/migration_11.rst
doc/build/changelog/migration_13.rst
doc/build/changelog/migration_21.rst
doc/build/changelog/whatsnew_20.rst
doc/build/core/connections.rst
doc/build/core/pooling.rst
doc/build/errors.rst
doc/build/orm/dataclasses.rst
doc/build/orm/declarative_tables.rst
doc/build/orm/extensions/asyncio.rst
doc/build/orm/extensions/baked.rst
doc/build/orm/session_events.rst
doc/build/orm/versioning.rst
examples/versioned_history/history_meta.py
lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/dialects/mysql/base.py
lib/sqlalchemy/dialects/oracle/base.py
lib/sqlalchemy/dialects/oracle/provision.py
lib/sqlalchemy/dialects/postgresql/base.py
lib/sqlalchemy/dialects/sqlite/pysqlite.py
lib/sqlalchemy/ext/asyncio/engine.py
lib/sqlalchemy/ext/hybrid.py
lib/sqlalchemy/orm/_orm_constructors.py
lib/sqlalchemy/orm/bulk_persistence.py
lib/sqlalchemy/orm/query.py
lib/sqlalchemy/orm/scoping.py
lib/sqlalchemy/orm/session.py
lib/sqlalchemy/orm/state_changes.py
lib/sqlalchemy/orm/strategies.py
lib/sqlalchemy/orm/strategy_options.py
lib/sqlalchemy/sql/_elements_constructors.py
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/crud.py
lib/sqlalchemy/sql/elements.py
lib/sqlalchemy/sql/lambdas.py
lib/sqlalchemy/sql/selectable.py
pyproject.toml
test/dialect/mssql/test_compiler.py
test/dialect/postgresql/test_types.py
test/engine/test_transaction.py
test/ext/asyncio/test_engine.py
test/ext/test_mutable.py
test/orm/declarative/test_dc_transforms.py
test/orm/declarative/test_dc_transforms_future_anno_sync.py
test/orm/dml/test_bulk_statements.py
test/orm/dml/test_orm_upd_del_basic.py
test/orm/test_dynamic.py
test/orm/test_session_state_change.py
test/sql/test_insert.py
test/sql/test_insert_exec.py
test/sql/test_resultset.py
test/sql/test_types.py
test/typing/plain_files/orm/relationship.py
tox.ini

index c0125f7dee463df04d3ca7682e15ebc82a7048a3..9ae9470c62fe31647b6853f7075f994909a7749f 100644 (file)
         :tags: postgresql
         :tickets: 1327
 
-      Refection of unknown PG types won't crash when those
+      Reflection of unknown PG types won't crash when those
       types are specified within a domain.
 
     .. change::
         :tags: general
         :tickets: 
 
-      global "propigate"->"propagate" change.
+      global "propagate"->"propagate" change.
 
     .. change::
         :tags: orm
         :tags: general
         :tickets: 
 
-      global "propigate"->"propagate" change.
+      global "propagate"->"propagate" change.
 
     .. change::
         :tags: orm
index 300985f02155036d139f1216e7f0717215ab07a6..02e0147076a76d84db83dd103d057bba436d210e 100644 (file)
       There's probably no real-world
       performance hit here; select() objects are
       almost always made ad-hoc, and systems that
-      wish to optimize the re-use of a select()
+      wish to optimize the reuse of a select()
       would be using the "compiled_cache" feature.
       A hit which would occur when calling select.bind
       has been reduced, but the vast majority
index a0187bc8571a726741190cc3c22bb0b0aa8fca0d..4453260d56dc04019e04a4f343d288142c0a8fbb 100644 (file)
     .. change::
         :tags: feature, orm
 
-        Added new argument :paramref:`.attributes.set_attribute.inititator`
+        Added new argument :paramref:`.attributes.set_attribute.initiator`
         to the :func:`.attributes.set_attribute` function, allowing an
         event token received from a listener function to be propagated
         to subsequent set events.
index 5cdb6ec7b467121054dc6c6012d00497f8ccd97e..0f18ece0b6b45890fee85bc8f92ea0a94259d7a4 100644 (file)
@@ -5045,7 +5045,7 @@ This document details individual issue-level changes made throughout
         Fixed issue where using a :class:`_sql.Select` as a subquery in an ORM
         context would modify the :class:`_sql.Select` in place to disable
         eagerloads on that object, which would then cause that same
-        :class:`_sql.Select` to not eagerload if it were then re-used in a
+        :class:`_sql.Select` to not eagerload if it were then reused in a
         top-level execution context.
 
 
@@ -5380,7 +5380,7 @@ This document details individual issue-level changes made throughout
         :tags: usecase, orm
         :tickets: 6267
 
-        Established support for :func:`_orm.synoynm` in conjunction with
+        Established support for :func:`_orm.synonym` in conjunction with
         hybrid property, assocaitionproxy is set up completely, including that
         synonyms can be established linking to these constructs which work
         fully.   This is a behavior that was semi-explicitly disallowed previously,
index a091b0e7439947a4b44e5f5b9c375d4b1405d84e..4b1296d5f515191801f14c9598b484bd5d0dfb6f 100644 (file)
         Fixed issue in history_meta example where the "version" column in the
         versioned table needs to default to the most recent version number in the
         history table on INSERT, to suit the use case of a table where rows are
-        deleted, and can then be replaced by new rows that re-use the same primary
+        deleted, and can then be replaced by new rows that reuse the same primary
         key identity.  This fix adds an additional SELECT query per INSERT in the
         main table, which may be inefficient; for cases where primary keys are not
-        re-used, the default function may be omitted.  Patch courtesy  Philipp H.
+        reused, the default function may be omitted.  Patch courtesy  Philipp H.
         v. Loewenfeld.
 
     .. change::
index 320f34009afb577562971a634ece9a7213a3821d..a8fd5f573c7d41afdf1aa52c1e19b001252b402a 100644 (file)
@@ -825,7 +825,7 @@ few changes there:
   subclasses NUMERIC, FLOAT, DECIMAL don't generate any
   length or scale unless specified.   This also continues to
   include the controversial ``String`` and ``VARCHAR`` types
-  (although MySQL dialect will pre-emptively raise when
+  (although MySQL dialect will preemptively raise when
   asked to render VARCHAR with no length).   No defaults are
   assumed, and if they are used in a CREATE TABLE statement,
   an error will be raised if the underlying database does
index 4f1c98be1a8ece9c0aabd785edcff2ad71878776..4fae00d50080afec7cc4c67385a111acc68f59a0 100644 (file)
@@ -163,7 +163,7 @@ scenarios. Highlights of this release include:
   ``cursor.execute``   for a large bulk insert of joined-
   table objects can be cut in half, allowing   native DBAPI
   optimizations to take place for those statements passed
-  to ``cursor.executemany()`` (such as re-using a prepared
+  to ``cursor.executemany()`` (such as reusing a prepared
   statement).
 
 * The codepath invoked when accessing a many-to-one
@@ -199,7 +199,7 @@ scenarios. Highlights of this release include:
 * The collection of "bind processors" for a particular
   ``Compiled`` instance of   a statement is also cached on
   the ``Compiled`` object, taking further   advantage of the
-  "compiled cache" used by the flush process to re-use the
+  "compiled cache" used by the flush process to reuse the
   same   compiled form of INSERT, UPDATE, DELETE statements.
 
 A demonstration of callcount reduction including a sample
index 61cd9a3a30773d69edb18407a9ed1145c9ac0002..835b0f43eec79a2463e5111af0cf6116339c8abd 100644 (file)
@@ -1892,7 +1892,7 @@ Firebird ``fdb`` and ``kinterbasdb`` set ``retaining=False`` by default
 Both the ``fdb`` and ``kinterbasdb`` DBAPIs support a flag ``retaining=True``
 which can be passed to the ``commit()`` and ``rollback()`` methods of its
 connection.  The documented rationale for this flag is so that the DBAPI
-can re-use internal transaction state for subsequent transactions, for the
+can reuse internal transaction state for subsequent transactions, for the
 purposes of improving performance.   However, newer documentation refers
 to analyses of Firebird's "garbage collection" which expresses that this flag
 can have a negative effect on the database's ability to process cleanup
index 1e61b3085713578211debfcc59b5d5dce8f1a180..2e975253a2746be38b0f7395d9136efe78f37daf 100644 (file)
@@ -2117,7 +2117,7 @@ for additional positions:
     [SQL: u'INSERT INTO my_table (id, data) VALUES (?, ?), (?, ?), (?, ?)']
     [parameters: (1, 'd1', 'd2', 'd3')]
 
-And with a "named" dialect, the same value for "id" would be re-used in
+And with a "named" dialect, the same value for "id" would be reused in
 each row (hence this change is backwards-incompatible with a system that
 relied on this):
 
index 15ef6fcd0c71128097c31d6a81bddab990966048..03a0d1202d4ccce3b42861d3201562fa0b3d0c88 100644 (file)
@@ -1115,7 +1115,7 @@ Note that upon invalidation, the immediate DBAPI connection used by
 being used subsequent to the exception raise, will use a new
 DBAPI connection for subsequent operations upon next use; however, the state of
 any transaction in progress is lost and the appropriate ``.rollback()`` method
-must be called if applicable before this re-use can proceed.
+must be called if applicable before this reuse can proceed.
 
 In order to identify this change, it was straightforward to demonstrate a pymysql or
 mysqlclient / MySQL-Python connection moving into a corrupted state when
index a86e5bc089ae60bf9cb74730422613bba8ade2db..529dee5cecbb84a06839065244502335eec90de0 100644 (file)
@@ -468,7 +468,7 @@ descriptor would raise an error.  Additionally, it would  assume that the first
 class to be seen by ``__get__()`` would be  the only parent class it needed to
 know about.  This is despite the fact that if a particular class has inheriting
 subclasses, the association proxy is really working on behalf of more than one
-parent class even though it was not explicitly re-used.  While even with this
+parent class even though it was not explicitly reused.  While even with this
 shortcoming, the association proxy would still get pretty far with its current
 behavior, it still leaves shortcomings in some cases as well as the complex
 problem of determining the best "owner" class.
@@ -1326,7 +1326,7 @@ built-in ``Queue`` class in order to store database connections waiting
 to be used.   The ``Queue`` features first-in-first-out behavior, which is
 intended to provide a round-robin use of the database connections that are
 persistently in the pool.   However, a potential downside of this is that
-when the utilization of the pool is low, the re-use of each connection in series
+when the utilization of the pool is low, the reuse of each connection in series
 means that a server-side timeout strategy that attempts to reduce unused
 connections is prevented from shutting down these connections.   To suit
 this use case, a new flag :paramref:`_sa.create_engine.pool_use_lifo` is added
index 78abbd4ceea97464222b10f453c045dc011b0402..7c2261a38ea66630208e42597ae336e399bea8d5 100644 (file)
@@ -369,7 +369,7 @@ when dealing with ORM-enabled :func:`_dml.insert` or :func:`_dml.update`::
 
 Additionally, a new helper :func:`_sql.from_dml_column` is added, which may be
 used with the :meth:`.hybrid_property.update_expression` hook to indicate
-re-use of a column expression from elsewhere in the UPDATE statement's SET
+reuse of a column expression from elsewhere in the UPDATE statement's SET
 clause::
 
     from sqlalchemy import from_dml_column
@@ -1211,7 +1211,7 @@ Examples to summarize the change are as follows::
     # omit the driver portion, will use the psycopg dialect
     engine = create_engine("postgresql://user:pass@host/dbname")
 
-    # indicate the psycopg driver/dialect explcitly (preferred)
+    # indicate the psycopg driver/dialect explicitly (preferred)
     engine = create_engine("postgresql+psycopg://user:pass@host/dbname")
 
     # use the legacy psycopg2 driver/dialect
@@ -1542,7 +1542,7 @@ Examples to summarize the change are as follows::
     # omit the driver portion, will use the oracledb dialect
     engine = create_engine("oracle://user:pass@host/dbname")
 
-    # indicate the oracledb driver/dialect explcitly (preferred)
+    # indicate the oracledb driver/dialect explicitly (preferred)
     engine = create_engine("oracle+oracledb://user:pass@host/dbname")
 
     # use the legacy cx_oracle driver/dialect
index f7c2b74f0311e4ce0fb0da463e5fb822454c0945..8603fcb3039544508ae8e4ae8a05900a81c6a487 100644 (file)
@@ -682,7 +682,7 @@ example below adds additional ``Annotated`` types in addition to our
 Above, columns that are mapped with ``Mapped[str50]``, ``Mapped[intpk]``,
 or ``Mapped[user_fk]`` draw from both the
 :paramref:`_orm.registry.type_annotation_map` as well as the
-``Annotated`` construct directly in order to re-use pre-established typing
+``Annotated`` construct directly in order to reuse pre-established typing
 and column configurations.
 
 Optional step - turn mapped classes into dataclasses_
index 13cdbdcf7828271b55278ffd147dba0c343e84e1..6b634ab3bbf4d840e8b995b5120f30c42c48f3d8 100644 (file)
@@ -69,7 +69,7 @@ When the :class:`_engine.Connection` is closed at the end of the ``with:`` block
 referenced DBAPI connection is :term:`released` to the connection pool.   From
 the perspective of the database itself, the connection pool will not actually
 "close" the connection assuming the pool has room to store this connection  for
-the next use.  When the connection is returned to the pool for re-use, the
+the next use.  When the connection is returned to the pool for reuse, the
 pooling mechanism issues a ``rollback()`` call on the DBAPI connection so that
 any transactional state or locks are removed (this is known as
 :ref:`pool_reset_on_return`), and the connection is ready for its next use.
@@ -1264,7 +1264,7 @@ strings that are safe to reuse for many statement invocations, given
 a particular cache key that is keyed to that SQL string.  This means
 that any literal values in a statement, such as the LIMIT/OFFSET values for
 a SELECT, can not be hardcoded in the dialect's compilation scheme, as
-the compiled string will not be re-usable.   SQLAlchemy supports rendered
+the compiled string will not be reusable.   SQLAlchemy supports rendered
 bound parameters using the :meth:`_sql.BindParameter.render_literal_execute`
 method which can be applied to the existing ``Select._limit_clause`` and
 ``Select._offset_clause`` attributes by a custom compiler, which
index 6b75ea9fcd5f79d1cd1ed57afb943f5fd30b9b15..991287ea3039620c98e753dfc38a83b297cddc97 100644 (file)
@@ -6,7 +6,7 @@ Connection Pooling
 .. module:: sqlalchemy.pool
 
 A connection pool is a standard technique used to maintain
-long running connections in memory for efficient re-use,
+long running connections in memory for efficient reuse,
 as well as to provide
 management for the total number of connections an application
 might use simultaneously.
index 122c2fb2c74e0163294b1144be438771b0044041..c7240bfcc706f4639afd66fddef7b198f22bf0cd 100644 (file)
@@ -65,7 +65,7 @@ familiar with.
   does not necessarily establish a new connection to the database at the
   moment the connection object is acquired; it instead consults the
   connection pool for a connection, which will often retrieve an existing
-  connection from the pool to be re-used.  If no connections are available,
+  connection from the pool to be reused.  If no connections are available,
   the pool will create a new database connection, but only if the
   pool has not surpassed a configured capacity.
 
index 88560f9e2052ea90971d4d1e1f8cf267ffb69943..ec2dbec2c9c0f97c75bef0f07045b1e26ea35422 100644 (file)
@@ -306,7 +306,7 @@ Integration with Annotated
 
 The approach introduced at :ref:`orm_declarative_mapped_column_pep593`
 illustrates how to use :pep:`593` ``Annotated`` objects to package whole
-:func:`_orm.mapped_column` constructs for re-use.  While ``Annotated`` objects
+:func:`_orm.mapped_column` constructs for reuse.  While ``Annotated`` objects
 can be combined with the use of dataclasses, **dataclass-specific keyword
 arguments unfortunately cannot be used within the Annotated construct**.  This
 includes :pep:`681`-specific arguments ``init``, ``default``, ``repr``, and
@@ -572,7 +572,7 @@ In the example below, the ``User``
 class is declared using ``id``, ``name`` and ``password_hash`` as mapped features,
 but makes use of init-only ``password`` and ``repeat_password`` fields to
 represent the user creation process (note: to run this example, replace
-the function ``your_crypt_function_here()`` with a third party crypt
+the function ``your_hash_function_here()`` with a third party hash
 function, such as `bcrypt <https://pypi.org/project/bcrypt/>`_ or
 `argon2-cffi <https://pypi.org/project/argon2-cffi/>`_)::
 
@@ -603,7 +603,7 @@ function, such as `bcrypt <https://pypi.org/project/bcrypt/>`_ or
             if password != repeat_password:
                 raise ValueError("passwords do not match")
 
-            self.password_hash = your_crypt_function_here(password)
+            self.password_hash = your_hash_function_here(password)
 
 The above object is created with parameters ``password`` and
 ``repeat_password``, which are consumed up front so that the ``password_hash``
@@ -611,7 +611,7 @@ variable may be generated::
 
     >>> u1 = User(name="some_user", password="xyz", repeat_password="xyz")
     >>> u1.password_hash
-    '$6$9ppc... (example crypted string....)'
+    '$6$9ppc... (example hashed string....)'
 
 .. versionchanged:: 2.0.0rc1  When using :meth:`_orm.registry.mapped_as_dataclass`
    or :class:`.MappedAsDataclass`, fields that do not include the
index 3ecb67c4fe2bcd686a6151ceca1ad93aaf14da8e..9064a4da695ac73012cd8f1bfd1afff3af840e42 100644 (file)
@@ -1085,7 +1085,7 @@ key style that is common to all mapped classes.   There also may be
 common column configurations such as timestamps with defaults and other fields of
 pre-established sizes and configurations.   We can compose these configurations
 into :func:`_orm.mapped_column` instances that we then bundle directly into
-instances of ``Annotated``, which are then re-used in any number of class
+instances of ``Annotated``, which are then reused in any number of class
 declarations.  Declarative will unpack an ``Annotated`` object
 when provided in this manner, skipping over any other directives that don't
 apply to SQLAlchemy and searching only for SQLAlchemy ORM constructs.
index 31d22487010721dbe7a49d1aa4e0e510a7f662e7..6985c4c34cb24bbc8fd1cd3c2cb92bddf1a93a8d 100644 (file)
@@ -980,7 +980,7 @@ default pool implementation.
 
 If an :class:`_asyncio.AsyncEngine` is be passed from one event loop to another,
 the method :meth:`_asyncio.AsyncEngine.dispose()` should be called before it's
-re-used on a new event loop. Failing to do so may lead to a ``RuntimeError``
+reused on a new event loop. Failing to do so may lead to a ``RuntimeError``
 along the lines of
 ``Task <Task pending ...> got Future attached to a different loop``
 
index 8e718ec98ca6dde0a433b4ab88349664d166df28..107424e25766ff9afc63dfd543e84efe9274c23e 100644 (file)
@@ -176,7 +176,7 @@ Rationale
 The "lambda" approach above is a superset of what would be a more
 traditional "parameterized" approach.   Suppose we wished to build
 a simple system where we build a :class:`~.query.Query` just once, then
-store it in a dictionary for re-use.   This is possible right now by
+store it in a dictionary for reuse.   This is possible right now by
 just building up the query, and removing its :class:`.Session` by calling
 ``my_cached_query = query.with_session(None)``::
 
@@ -193,7 +193,7 @@ just building up the query, and removing its :class:`.Session` by calling
         return query.params(id=id_argument).all()
 
 The above approach gets us a very minimal performance benefit.
-By re-using a :class:`~.query.Query`, we save on the Python work within
+By reusing a :class:`~.query.Query`, we save on the Python work within
 the ``session.query(Model)`` constructor as well as calling upon
 ``filter(Model.id == bindparam('id'))``, which will skip for us the building
 up of the Core expression as well as sending it to :meth:`_query.Query.filter`.
index 8ab2842bae9efff472933907b2a96d648ba70eff..4c192b9b7bda2df17b1e5e3d38d92648a3f5e33b 100644 (file)
@@ -235,7 +235,7 @@ Above, a custom execution option is passed to
 :meth:`_sql.Select.execution_options` in order to establish a "cache key" that
 will then be intercepted by the :meth:`_orm.SessionEvents.do_orm_execute` hook.  This
 cache key is then matched to a :class:`_engine.FrozenResult` object that may be
-present in the cache, and if present, the object is re-used.  The recipe makes
+present in the cache, and if present, the object is reused.  The recipe makes
 use of the :meth:`_engine.Result.freeze` method to "freeze" a
 :class:`_engine.Result` object, which above will contain ORM results, such that
 it can be stored in a cache and used multiple times. In order to return a live
index 9c08acef682918a304315d29eeefb930b94730d4..941a2fcca48ed8168df0746fcd25229bdfe50dbc 100644 (file)
@@ -21,9 +21,9 @@ the value held in memory matches the database value.
 
 The purpose of this feature is to detect when two concurrent transactions
 are modifying the same row at roughly the same time, or alternatively to provide
-a guard against the usage of a "stale" row in a system that might be re-using
+a guard against the usage of a "stale" row in a system that might be reusing
 data from a previous transaction without refreshing (e.g. if one sets ``expire_on_commit=False``
-with a :class:`.Session`, it is possible to re-use the data from a previous
+with a :class:`.Session`, it is possible to reuse the data from a previous
 transaction).
 
 .. topic:: Concurrent transaction updates
index 88fb16a0049548932d7b73ede956cfba92bed473..ab6e3583dd6a4a2836c4d1738fc97cf9939c9d3a 100644 (file)
@@ -179,7 +179,7 @@ def _history_mapper(local_mapper):
                 "version",
                 Integer,
                 # if rows are not being deleted from the main table with
-                # subsequent re-use of primary key, this default can be
+                # subsequent reuse of primary key, this default can be
                 # "1" instead of running a query per INSERT
                 default=default_version_from_history,
                 nullable=False,
index 94f265ebed1d0f45d5161a9c7455da20e6742b4f..b618564ef5a597dcea7394857264adfc0d33ccd4 100644 (file)
@@ -2037,14 +2037,14 @@ class MSSQLCompiler(compiler.SQLCompiler):
 
     def visit_aggregate_strings_func(self, fn, **kw):
         cl = list(fn.clauses)
-        expr, delimeter = cl[0:2]
+        expr, delimiter = cl[0:2]
 
         literal_exec = dict(kw)
         literal_exec["literal_execute"] = True
 
         return (
             f"string_agg({expr._compiler_dispatch(self, **kw)}, "
-            f"{delimeter._compiler_dispatch(self, **literal_exec)})"
+            f"{delimiter._compiler_dispatch(self, **literal_exec)})"
         )
 
     def visit_pow_func(self, fn, **kw):
index 129c6e36ff0c2a83cb69c3002f44c7af5c689829..c47705b7301427ad24bb7c648e2820e6770bfe91 100644 (file)
@@ -1363,7 +1363,7 @@ class MySQLCompiler(compiler.SQLCompiler):
         order_by = getattr(fn.clauses, "aggregate_order_by", None)
 
         cl = list(fn.clauses)
-        expr, delimeter = cl[0:2]
+        expr, delimiter = cl[0:2]
 
         literal_exec = dict(kw)
         literal_exec["literal_execute"] = True
@@ -1373,13 +1373,13 @@ class MySQLCompiler(compiler.SQLCompiler):
                 f"group_concat({expr._compiler_dispatch(self, **kw)} "
                 f"ORDER BY {order_by._compiler_dispatch(self, **kw)} "
                 f"SEPARATOR "
-                f"{delimeter._compiler_dispatch(self, **literal_exec)})"
+                f"{delimiter._compiler_dispatch(self, **literal_exec)})"
             )
         else:
             return (
                 f"group_concat({expr._compiler_dispatch(self, **kw)} "
                 f"SEPARATOR "
-                f"{delimeter._compiler_dispatch(self, **literal_exec)})"
+                f"{delimiter._compiler_dispatch(self, **literal_exec)})"
             )
 
     def visit_sequence(self, sequence: sa_schema.Sequence, **kw: Any) -> str:
index bbcde831a1e2652667862c5e579bdc33e5bb2c57..63a8d45cc54e601d5768a419a73abe6fdd1cee47 100644 (file)
@@ -2687,7 +2687,7 @@ class OracleDialect(default.DefaultDialect):
             and ObjectKind.TABLE in kind
             and ObjectKind.MATERIALIZED_VIEW not in kind
         ):
-            # cant use EXCEPT ALL / MINUS here because we don't have an
+            # can't use EXCEPT ALL / MINUS here because we don't have an
             # excludable row vs. the query above
             # outerjoin + where null works better on oracle 21 but 11 does
             # not like it at all. this is the next best thing
index 997ca3b589e778d1b6026061fd9bc273f78ed333..9b17674c6d3b3167d977018be664f48a54aba0ae 100644 (file)
@@ -211,7 +211,7 @@ def _oracle_post_configure_engine(url, engine, follower_ident):
         # https://github.com/oracle/python-cx_Oracle/issues/519
         # TODO: oracledb claims to have this feature built in somehow,
         # see if that's in use and/or if it needs to be enabled
-        # (or if this doesnt even apply to the newer oracle's we're using)
+        # (or if this doesn't even apply to the newer oracle's we're using)
         try:
             sc = dbapi_connection.stmtcachesize
         except:
index 80bc93a3d2ac2846a15406b02af0c4afbb387f9b..edd726fa382e1bf4799489e2ec2f9289ef9e8cd2 100644 (file)
@@ -4455,7 +4455,7 @@ class PGDialect(default.DefaultDialect):
             if isinstance(coltype, DOMAIN):
                 if not default:
                     # domain can override the default value but
-                    # cant set it to None
+                    # can't set it to None
                     if coltype.default is not None:
                         default = coltype.default
 
index 116c89e8b6617ff62ee19bf00ae5e6c72dc1ee9e..0d629e2d7e21a33d5685d6f9a4a6b3336ff24f9b 100644 (file)
@@ -255,7 +255,7 @@ parameter::
 
 It's been observed that the :class:`.NullPool` implementation incurs an
 extremely small performance overhead for repeated checkouts due to the lack of
-connection re-use implemented by :class:`.QueuePool`.  However, it still
+connection reuse implemented by :class:`.QueuePool`.  However, it still
 may be beneficial to use this class if the application is experiencing
 issues with files being locked.
 
index dfc727a30208b89af3873da5187a5545b7ecf268..69b194db2dcbd4e68cd8e6b51692e704d5d9b3ca 100644 (file)
@@ -581,7 +581,7 @@ class AsyncConnection(  # type:ignore[misc]
         """
         if not self.dialect.supports_server_side_cursors:
             raise exc.InvalidRequestError(
-                "Cant use `stream` or `stream_scalars` with the current "
+                "Can't use `stream` or `stream_scalars` with the current "
                 "dialect since it does not support server side cursors."
             )
 
index 84fe41114d902e30da2464cca4c1a0be8f680791..850348b4570f31fa441818b4142a8770043f592b 100644 (file)
@@ -253,7 +253,7 @@ is not available to SQLAlchemy under :pep:`484` compliance.
 
 In order to produce a reasonable syntax while remaining typing compliant,
 the :attr:`.hybrid_property.inplace` decorator allows the same
-decorator to be re-used with different method names, while still producing
+decorator to be reused with different method names, while still producing
 a single decorator under one name::
 
     # correct use which is also accepted by pep-484 tooling
@@ -1563,7 +1563,7 @@ class hybrid_property(interfaces.InspectionAttrInfo, ORMDescriptor[_T]):
         """Return the inplace mutator for this :class:`.hybrid_property`.
 
         This is to allow in-place mutation of the hybrid, allowing the first
-        hybrid method of a certain name to be re-used in order to add
+        hybrid method of a certain name to be reused in order to add
         more methods without having to name those methods the same, e.g.::
 
             class Interval(Base):
index f2f99eac55c7cbb9736da07b349a3d4e50ecad70..ac5ddefc95bd38da7b2d33db5690951843b16ba5 100644 (file)
@@ -2350,7 +2350,7 @@ def clear_mappers() -> None:
     are never discarded independently of their class.  If a mapped class
     itself is garbage collected, its mapper is automatically disposed of as
     well. As such, :func:`.clear_mappers` is only for usage in test suites
-    that re-use the same classes with different mappings, which is itself an
+    that reuse the same classes with different mappings, which is itself an
     extremely rare use case - the only such use case is in fact SQLAlchemy's
     own test suite, and possibly the test suites of other ORM extension
     libraries which intend to test various combinations of mapper construction
index a608f9a8eaf5a32791e4fa573632a7de709671c0..2397b00fca50fdf0719eb37fcb43334d9a34665b 100644 (file)
@@ -1236,7 +1236,7 @@ class _BulkORMInsert(_ORMDMLState, InsertDMLState):
             # for ORM object loading, like ORMContext, we have to disable
             # result set adapt_to_context, because we will be generating a
             # new statement with specific columns that's cached inside of
-            # an ORMFromStatementCompileState, which we will re-use for
+            # an ORMFromStatementCompileState, which we will reuse for
             # each result.
             if not execution_options:
                 execution_options = context._orm_load_exec_options
index e07d7fc778f5f1ad0676f75998773380b74fbc2e..5d341d85950d39e5753ca2bc4ff98f700df8a021 100644 (file)
@@ -2901,7 +2901,7 @@ class Query(
         try:
             yield from result  # type: ignore
         except GeneratorExit:
-            # issue #8710 - direct iteration is not re-usable after
+            # issue #8710 - direct iteration is not reusable after
             # an iterable block is broken, so close the result
             result._soft_close()
             raise
index f610948ef6d1e1f06e4c9e6fbe623dd450f5178c..149b3b9132886a5b9ae712677252f4fe4b7e0a09 100644 (file)
@@ -557,7 +557,7 @@ class scoped_session(Generic[_S]):
             :meth:`_orm.Session.close` and :meth:`_orm.Session.reset`.
 
             :meth:`_orm.Session.close` - a similar method will additionally
-            prevent re-use of the Session when the parameter
+            prevent reuse of the Session when the parameter
             :paramref:`_orm.Session.close_resets_only` is set to ``False``.
 
         """  # noqa: E501
index 1f1333c3d78fdbcbf789b2345e91473771264b52..9119a9f212feec1564647b0c827b8bbf6ec026c2 100644 (file)
@@ -1735,7 +1735,7 @@ class Session(_SessionClassMethods, EventTarget):
 
         :param close_resets_only: Defaults to ``True``. Determines if
           the session should reset itself after calling ``.close()``
-          or should pass in a no longer usable state, disabling re-use.
+          or should pass in a no longer usable state, disabling reuse.
 
           .. versionadded:: 2.0.22 added flag ``close_resets_only``.
             A future SQLAlchemy version may change the default value of
@@ -2579,7 +2579,7 @@ class Session(_SessionClassMethods, EventTarget):
             :meth:`_orm.Session.close` and :meth:`_orm.Session.reset`.
 
             :meth:`_orm.Session.close` - a similar method will additionally
-            prevent re-use of the Session when the parameter
+            prevent reuse of the Session when the parameter
             :paramref:`_orm.Session.close_resets_only` is set to ``False``.
         """
         self._close_impl(invalidate=False, is_reset=True)
index 4581a6a006eb84bfc4b5193a1fa068aab2b4c213..1a9bdf2fb103ec5c2b749a0bb0d6ae4d38fb5fca 100644 (file)
@@ -125,7 +125,7 @@ class _StateChange:
                     )
                 else:
                     raise sa_exc.IllegalStateChangeError(
-                        f"Cant run operation '{fn.__name__}()' here; "
+                        f"Can't run operation '{fn.__name__}()' here; "
                         f"will move to state {moves_to!r} where we are "
                         f"expecting {next_state!r}",
                         code="isce",
index e636ef7dd518d96d28b3703d07c9bab11e709189..a529c4196f3b8e24b8d64fcd6dad96022e7bff2a 100644 (file)
@@ -1752,7 +1752,7 @@ class _SubqueryLoader(_PostLoader):
         loadopt,
     ):
         # note that because the subqueryload object
-        # does not re-use the cached query, instead always making
+        # does not reuse the cached query, instead always making
         # use of the current invoked query, while we have two queries
         # here (orig and context.query), they are both non-cached
         # queries and we can transfer the options as is without
index 96d2024e52ca8b9507a6eee8e9a22d60f7bf68da..83f02cbb68744e9e2e2f87bb09761a41569403d3 100644 (file)
@@ -1245,7 +1245,7 @@ class Load(_AbstractLoad):
             )
 
         elif path_is_property(self.path):
-            # re-use the lookup which will raise a nicely formatted
+            # reuse the lookup which will raise a nicely formatted
             # LoaderStrategyException
             if strategy:
                 self.path.prop._strategy_lookup(self.path.prop, strategy[0])
index 354db4e90335b98487ff5bc04581732e5d1e5623..c4c2cfacc46f89c6438790ed8825cea95252465d 100644 (file)
@@ -504,7 +504,7 @@ def from_dml_column(column: _OnlyColumnArgument[_T]) -> DMLTargetCopy[_T]:
         )
 
     The :func:`_sql.from_dml_column` construct allows automatic copying
-    of an expression assigned to a different column to be re-used::
+    of an expression assigned to a different column to be reused::
 
         >>> stmt = t.insert().values(x=func.foobar(3), y=from_dml_column(t.c.x) + 5)
         >>> print(stmt)
index 67a28b6601f6b7feacd62186398bce58d1636aaa..53030dcf9ec6e3a0190459275cca9f47d0ad2dbf 100644 (file)
@@ -3051,9 +3051,9 @@ class SQLCompiler(Compiled):
         literal_exec["literal_execute"] = True
 
         # break up the function into its components so we can apply
-        # literal_execute to the second argument (the delimeter)
+        # literal_execute to the second argument (the delimiter)
         cl = list(fn.clauses)
-        expr, delimeter = cl[0:2]
+        expr, delimiter = cl[0:2]
         if (
             order_by is not None
             and self.dialect.aggregate_order_by_style
@@ -3061,13 +3061,13 @@ class SQLCompiler(Compiled):
         ):
             return (
                 f"{use_function_name}({expr._compiler_dispatch(self, **kw)}, "
-                f"{delimeter._compiler_dispatch(self, **literal_exec)} "
+                f"{delimiter._compiler_dispatch(self, **literal_exec)} "
                 f"ORDER BY {order_by._compiler_dispatch(self, **kw)})"
             )
         else:
             return (
                 f"{use_function_name}({expr._compiler_dispatch(self, **kw)}, "
-                f"{delimeter._compiler_dispatch(self, **literal_exec)})"
+                f"{delimiter._compiler_dispatch(self, **literal_exec)})"
             )
 
     def visit_extract(self, extract, **kwargs):
@@ -6084,7 +6084,7 @@ class SQLCompiler(Compiled):
         # likely the least amount of callcounts, though looks clumsy
         if self.positional and visiting_cte is None:
             # if we are inside a CTE, don't count parameters
-            # here since they wont be for insertmanyvalues. keep
+            # here since they won't be for insertmanyvalues. keep
             # visited_bindparam at None so no counting happens.
             # see #9173
             visited_bindparam = []
index 3d44b5c5f7e0175ff2bc8dcfd86432c02a0513b7..a87b930cbe09772ed8b731de19b51ba3f84942da 100644 (file)
@@ -1685,7 +1685,7 @@ def _get_returning_modifiers(compiler, stmt, compile_state, toplevel):
     implicit_returning = (
         # statement itself can veto it
         need_pks
-        # the dialect can veto it if it just doesnt support RETURNING
+        # the dialect can veto it if it just doesn't support RETURNING
         # with INSERT
         and dialect.insert_returning
         # user-defined implicit_returning on Table can veto it
@@ -1697,7 +1697,7 @@ def _get_returning_modifiers(compiler, stmt, compile_state, toplevel):
         and (
             # since we support MariaDB and SQLite which also support lastrowid,
             # decide if we should use lastrowid or RETURNING.  for insert
-            # that didnt call return_defaults() and has just one set of
+            # that didn't call return_defaults() and has just one set of
             # parameters, we can use lastrowid.   this is more "traditional"
             # and a lot of weird use cases are supported by it.
             # SQLite lastrowid times 3x faster than returning,
index a43981152fb6e5df9383e3efaf1375d168f1f478..88ad1cb728d7a128f0d130c796375d487bcf0fde 100644 (file)
@@ -2644,7 +2644,7 @@ class TextClause(AbstractTextClause, inspection.Inspectable["TextClause"]):
 
         The :meth:`_expression.TextClause.bindparams`
         method can be called repeatedly,
-        where it will re-use existing :class:`.BindParameter` objects to add
+        where it will reuse existing :class:`.BindParameter` objects to add
         new information.  For example, we can call
         :meth:`_expression.TextClause.bindparams`
         first with typing information, and a
index 02fcd34131ea664608f77366f10745a553c4193b..da07cbce14a0989fc33d9cc33839d614a89c3f61 100644 (file)
@@ -1202,7 +1202,7 @@ class AnalyzedFunction:
         """Run the tracker-generated expression through coercion rules.
 
         After the user-defined lambda has been invoked to produce a statement
-        for re-use, run it through coercion rules to both check that it's the
+        for reuse, run it through coercion rules to both check that it's the
         correct type of object and also to coerce it to its useful form.
 
         """
index e1bf22856ca61918ab4177c0663c9969d6bebde2..8ac353dad95faa64b595c25bf1478f92cd4f08f5 100644 (file)
@@ -2019,7 +2019,7 @@ class TableValuedAlias(LateralFromClause, Alias):
         """  # noqa: E501
 
         # note: don't use the @_generative system here, keep a reference
-        # to the original object.  otherwise you can have re-use of the
+        # to the original object.  otherwise you can have reuse of the
         # python id() of the original which can cause name conflicts if
         # a new anon-name grabs the same identifier as the local anon-name
         # (just saw it happen on CI)
index 9da9ea25c0713224e7b86aeaae01b7297e4eb4f5..4676b346b85ba7ea001702c234fdc083c8c9fba6 100644 (file)
@@ -360,6 +360,6 @@ build = "*"
 archs = ["arm64"]
 
 # On an Linux Intel runner with qemu installed, build Intel and ARM wheels
-# NOTE: this is overriden in the pipeline using the CIBW_ARCHS_LINUX env variable to speed up the build
+# NOTE: this is overridden in the pipeline using the CIBW_ARCHS_LINUX env variable to speed up the build
 [tool.cibuildwheel.linux]
 archs = ["x86_64", "aarch64"]
index f8d9d548862643907d3782c8a862632f4dbc9854..62ef92bb89c7dcae4b2d54cdf89d77f757e4db51 100644 (file)
@@ -530,7 +530,7 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
         crit = q.c.myid == table1.c.myid
 
         if style.plain:
-            # the "plain" style of fetch doesnt use TOP right now, so
+            # the "plain" style of fetch doesn't use TOP right now, so
             # there's an order_by implicit in the row_number part of it
             self.assert_compile(
                 select("*").where(crit),
index d374a72e170baa5fa2294d36d61b47921a3d57a1..62966247c5aa6cb4c815340505a9db59238a37ad 100644 (file)
@@ -779,7 +779,7 @@ class NamedTypeTest(
 
     def test_enum_doesnt_construct_ENUM(self):
         """in 2.0 we made ENUM name required.   check that Enum adapt to
-        ENUM doesnt call this constructor."""
+        ENUM doesn't call this constructor."""
 
         e1 = Enum("x", "y")
         eq_(e1.name, None)
index d5c6094a0406267bb440850c11dfc659cb805498..948ce6a1782b618f032b87c8429487af939fbbe6 100644 (file)
@@ -1148,7 +1148,7 @@ class AutoRollbackTest(fixtures.TestBase):
 class IsolationLevelTest(fixtures.TestBase):
     """see also sqlalchemy/testing/suite/test_dialect.py::IsolationLevelTest
 
-    this suite has sparse_backend so wont take place
+    this suite has sparse_backend so won't take place
     for every dbdriver under a nox run.   the suite test should cover
     that end of it
 
index 7d965854cb492cf827cfb623dc8b1e4cbd185e8e..ba31a6aa749d44aace3c21c61c9e81e1a08ab290 100644 (file)
@@ -893,7 +893,7 @@ class AsyncEngineTest(EngineFixture):
             async with async_engine.connect() as c:
                 with expect_raises_message(
                     exc.InvalidRequestError,
-                    "Cant use `stream` or `stream_scalars` with the current "
+                    "Can't use `stream` or `stream_scalars` with the current "
                     "dialect since it does not support server side cursors.",
                 ):
                     if method == "stream":
index e83550aecd078f459d457a17e7690acc38dcaf65..c72f182f8fc5ccc0a33b262417d06f077915a1a0 100644 (file)
@@ -269,7 +269,7 @@ class MiscTest(fixtures.TestBase):
 
         decl_base.registry.configure()
 
-        # the event hook itself doesnt do anything for repeated calls
+        # the event hook itself doesn't do anything for repeated calls
         # already, so there's really nothing else to assert other than there's
         # only one "set" event listener
 
index 6bb07dec0d59d5f680c8a40c6e7021d9071fea98..1b485857d6ccdd7c3f906073b5260732a421cd3e 100644 (file)
@@ -593,7 +593,7 @@ class DCTransformsTest(AssertsCompiledSQL, fixtures.TestBase):
         class B(A):
             b_data: Mapped[str] = mapped_column(default="bd")
 
-        # ensure we didnt break dataclasses contract of removing Field
+        # ensure we didn't break dataclasses contract of removing Field
         # issue #8880
         eq_(A.__dict__["some_field"], 5)
         assert "ctrl_one" not in A.__dict__
index 5f7da5e5b73eec948a628a994b6206ffa9502b09..851a950115b26e7ad98a4eb5e11f8b6fe465f2a7 100644 (file)
@@ -606,7 +606,7 @@ class DCTransformsTest(AssertsCompiledSQL, fixtures.TestBase):
         class B(A):
             b_data: Mapped[str] = mapped_column(default="bd")
 
-        # ensure we didnt break dataclasses contract of removing Field
+        # ensure we didn't break dataclasses contract of removing Field
         # issue #8880
         eq_(A.__dict__["some_field"], 5)
         assert "ctrl_one" not in A.__dict__
index d9dbda2399500c6967c533d291b8cddefb616c6e..ba247046043bc4bb40ca220b16058f7007249754 100644 (file)
@@ -2772,7 +2772,7 @@ class DMLCompileScenariosTest(testing.AssertsCompiledSQL, fixtures.TestBase):
         # e.g. insert(A).  In the update() case, the WHERE clause can also
         # pull in the ORM entity, which is how we found the issue here, but
         # for INSERT there's no current method that does this; returning()
-        # could do this in theory but currently doesnt.  So for now, cheat,
+        # could do this in theory but currently doesn't.  So for now, cheat,
         # and pretend there's some conversion that's going to propagate
         # from an ORM expression
         coercions.expect(
index 34c0465cf76c16716d574bddf06d527a64a65055..9c9608db39e77987f19003b9f43d62e0a63f0cd8 100644 (file)
@@ -484,7 +484,7 @@ class UpdateDeleteTest(fixtures.MappedTest):
     ):
         """test #5664.
 
-        approach is revised in SQLAlchemy 2.0 to not pre-emptively
+        approach is revised in SQLAlchemy 2.0 to not preemptively
         unexpire the involved attributes
 
         """
index 9661c22421108cd00383c319ccd5315d507e0c8c..7871dcacf0c0e8de804d19db581326a516948c51 100644 (file)
@@ -1667,7 +1667,7 @@ class WriteOnlyBulkTest(
         u1 = User(name="x")
         sess.add(u1)
 
-        # ha ha!  u1 is not persistent yet.  autoflush wont happen
+        # ha ha!  u1 is not persistent yet.  autoflush won't happen
         # until sess.scalars() actually runs.  statement has to be
         # created with a pending parameter, not actual parameter
         assert inspect(u1).pending
@@ -1738,7 +1738,7 @@ class WriteOnlyBulkTest(
         )
         sess.add(u1)
 
-        # ha ha!  u1 is not persistent yet.  autoflush wont happen
+        # ha ha!  u1 is not persistent yet.  autoflush won't happen
         # until sess.scalars() actually runs.  statement has to be
         # created with a pending parameter, not actual parameter
         assert inspect(u1).pending
@@ -1831,7 +1831,7 @@ class WriteOnlyBulkTest(
         )
         sess.add(u1)
 
-        # ha ha!  u1 is not persistent yet.  autoflush wont happen
+        # ha ha!  u1 is not persistent yet.  autoflush won't happen
         # until sess.scalars() actually runs.  statement has to be
         # created with a pending parameter, not actual parameter
         assert inspect(u1).pending
index e2635abc229517d1d5fec156db782537421fce5a..d4794b021a09268ae8222baa6f6d5c12cfd7f7a9 100644 (file)
@@ -201,7 +201,7 @@ class StateMachineTest(fixtures.TestBase):
         eq_(m._state, _NO_CHANGE)
         with expect_raises_message(
             sa_exc.IllegalStateChangeError,
-            r"Cant run operation '_inner_move_to_c\(\)' here; will move "
+            r"Can't run operation '_inner_move_to_c\(\)' here; will move "
             r"to state <StateTestChange.c: 3> where we are "
             "expecting <StateTestChange.b: 2>",
         ):
index eccb9d8ea217c35a96995f147b3850c042bf9aec..9e00cbebaaf13a0962847cf3881d19ae722d4fde 100644 (file)
@@ -1405,7 +1405,7 @@ class InsertImplicitReturningTest(
                 )
             params = None
         elif paramtype == "params":
-            # for params, compiler doesnt have the value available to look
+            # for params, compiler doesn't have the value available to look
             # at.  we assume non-NULL
             stmt = t.insert()
             if insert_null_still_autoincrements:
index d9476aec40e0fa4de66c85d9a7645f21b9c711d5..e362a011b9c025b3f30dc534e52d866892f83cd3 100644 (file)
@@ -1102,7 +1102,7 @@ class InsertManyValuesTest(fixtures.RemovesEvents, fixtures.TablesTest):
         multiple parameter sets, i.e. "INSERT INTO table (anycol) VALUES
         (DEFAULT) (DEFAULT) (DEFAULT) ... RETURNING col"
 
-        if the database doesnt support this (like SQLite, mssql), it
+        if the database doesn't support this (like SQLite, mssql), it
         actually runs the statement that many times on the cursor.
         This is much less efficient, but is still more efficient than
         how it worked previously where we'd run the statement that many
index 189850c7ae0bc23dfc48b891909fdfbb24dc0040..f5dbf2b46ce552eaa8c0b7c08ad9f6b12ff85332 100644 (file)
@@ -2856,7 +2856,7 @@ class KeyTargetingTest(fixtures.TablesTest):
         This copies the _keymap from one to the other in terms of the
         selected columns of a target selectable.
 
-        This is used by the statement caching process to re-use the
+        This is used by the statement caching process to reuse the
         CursorResultMetadata from the cached statement against the same
         statement sent separately.
 
index 709d586d2ee627278eec8674c2942a6cadfcef34..44792d135ae7bfbdcefa1fe47232692f377da0dd 100644 (file)
@@ -2401,7 +2401,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest):
             ),
         )
 
-        # the base String() didnt create a constraint or even do any
+        # the base String() didn't create a constraint or even do any
         # events.  But Column looked for SchemaType in _variant_mapping
         # and found our type anyway.
         eq_(
index f818791970f7923bb1af437d9f854386132047bd..737297fac01d34b4be5d1c1ec6a1ef7130fcc45b 100644 (file)
@@ -50,7 +50,7 @@ class User(Base):
     name: Mapped[str] = mapped_column()
     group_id = mapped_column(ForeignKey("group.id"))
 
-    # this currently doesnt generate an error.  not sure how to get the
+    # this currently doesn't generate an error.  not sure how to get the
     # overloads to hit this one, nor am i sure i really want to do that
     # anyway
     name_this_works_atm: Mapped[str] = mapped_column(nullable=True)
diff --git a/tox.ini b/tox.ini
index f95e81ecc69904c49dc42a7385702aed684220e2..925c60aea7f27eda904a0203078f7c99309aa8e3 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -8,7 +8,7 @@ extras=
      sqlite: aiosqlite
      sqlite_file: aiosqlite
 
-     # asyncpg doesnt build on free threading backends
+     # asyncpg doesn't build on free threading backends
      py{38,39,310,311,312,313,314}-postgresql: postgresql_asyncpg
 
      mysql: asyncmy