]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
12 months agotry pytest 8.3
Mike Bayer [Sun, 9 Feb 2025 23:30:11 +0000 (18:30 -0500)] 
try pytest 8.3

we've been pinned under 8.2 for unclear reasons (but likely
reasons).   see what 8.3 does.  current pypi release is 8.3.4

Change-Id: I601335f5604a37e07fd3bb0abb99160e055dd95c

12 months agoMerge "Deprecate objects param of flush" into main
Federico Caselli [Sat, 8 Feb 2025 10:56:46 +0000 (10:56 +0000)] 
Merge "Deprecate objects param of flush" into main

12 months agoDeprecate objects param of flush
Federico Caselli [Wed, 5 Feb 2025 21:38:08 +0000 (22:38 +0100)] 
Deprecate objects param of flush

The :paramref:`_orm.Session.flush.objects` parameter is now deprecated.

Fixes: #10816
Change-Id: I4a535e91aefa16774c2549ecec09113d6e669df4

12 months agodoc(reconecting_engine): fix re-raise after attempts (#12306)
Augustin Prolongeau [Thu, 6 Feb 2025 23:18:57 +0000 (00:18 +0100)] 
doc(reconecting_engine): fix re-raise after attempts (#12306)

* doc(reconecting_engine): fix re-raise after attempts

* move re-raise after connection invalidation/rollback, reword log message

12 months agocherry-pick changelog update for 2.0.39
Mike Bayer [Thu, 6 Feb 2025 20:10:27 +0000 (15:10 -0500)] 
cherry-pick changelog update for 2.0.39

12 months agocherry-pick changelog from 2.0.38
Mike Bayer [Thu, 6 Feb 2025 20:10:27 +0000 (15:10 -0500)] 
cherry-pick changelog from 2.0.38

12 months agothis is version 2.0.38
Mike Bayer [Thu, 6 Feb 2025 20:04:30 +0000 (15:04 -0500)] 
this is version 2.0.38

Change-Id: I784d0ba9e4afd9a7be6dac71cd04376dedbec211

12 months agochangelog edits
Mike Bayer [Thu, 6 Feb 2025 18:59:22 +0000 (13:59 -0500)] 
changelog edits

Change-Id: I61164f4af388d8f4f157ad6afe96ccbb668587a7

12 months agoMerge "remove None exception in IN" into main
Michael Bayer [Thu, 6 Feb 2025 15:14:43 +0000 (15:14 +0000)] 
Merge "remove None exception in IN" into main

12 months agoMerge "reorganize column collection init to be local" into main
Michael Bayer [Wed, 5 Feb 2025 20:56:25 +0000 (20:56 +0000)] 
Merge "reorganize column collection init to be local" into main

12 months agoMerge "Use AsyncAdaptedQueuePool in aiosqlite" into main
Michael Bayer [Wed, 5 Feb 2025 19:17:29 +0000 (19:17 +0000)] 
Merge "Use AsyncAdaptedQueuePool in aiosqlite" into main

12 months agoremove None exception in IN
Mike Bayer [Wed, 5 Feb 2025 13:37:04 +0000 (08:37 -0500)] 
remove None exception in IN

Fixed SQL composition bug which impacted caching where using a ``None``
value inside of an ``in_()`` expression would bypass the usual "expanded
bind parameter" logic used by the IN construct, which allows proper caching
to take place.

Fixes: #12314
References: #12312
Change-Id: I0d2fc4e15c73407379ba368dd4ee32660fc66259

12 months agoMerge "Added `merge_all` and `delete_all`" into main
Michael Bayer [Wed, 5 Feb 2025 19:05:44 +0000 (19:05 +0000)] 
Merge "Added `merge_all` and `delete_all`" into main

12 months agoreorganize column collection init to be local
Mike Bayer [Sat, 1 Feb 2025 19:39:57 +0000 (14:39 -0500)] 
reorganize column collection init to be local

Reorganized the internals by which the `.c` collection on a
:class:`.FromClause` gets generated so that it is resilient against the
collection being accessed in concurrent fashion.   An example is creating a
:class:`.Alias` or :class:`.Subquery` and accessing it as a module level
variable.  This impacts the Oracle dialect which uses such module-level
global alias objects but is of general use as well.

Fixes: #12302
Change-Id: I30cb07c286affce24e2d85e49f9df5b787438d86

12 months agoFix 'polymorphic' typo in a few places (#12307)
Martin Burchell [Mon, 3 Feb 2025 18:56:55 +0000 (18:56 +0000)] 
Fix 'polymorphic' typo in a few places (#12307)

12 months agoAdded `merge_all` and `delete_all`
Federico Caselli [Fri, 3 Jan 2025 20:42:48 +0000 (21:42 +0100)] 
Added `merge_all` and `delete_all`

Added the utility method :meth:`_orm.Session.merge_all` and
:meth:`_orm.Session.delete_all` that operate on a collection
of instances.

Fixes: #11776
Change-Id: Ifd70ba2850db7c5e7aee482799fd65c348c2899a

12 months agoMerge "Unable to use InstrumentedAttribute to value mappings in mysql/mariadb on_dupl...
Federico Caselli [Sat, 1 Feb 2025 20:50:04 +0000 (20:50 +0000)] 
Merge "Unable to use InstrumentedAttribute to value mappings in mysql/mariadb on_duplicate_key_update" into main

12 months agoUnable to use InstrumentedAttribute to value mappings in mysql/mariadb on_duplicate_k...
Mingyu Park [Sat, 1 Feb 2025 07:43:35 +0000 (02:43 -0500)] 
Unable to use InstrumentedAttribute to value mappings in mysql/mariadb on_duplicate_key_update

Fixes: #12117
Closes: #12296
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12296
Pull-request-sha: 32a09ebd18a6f97fdb23cc8a8e212342e6c26291

Change-Id: I72701f63b13105e5dc36e63ba2651da2673f1735

12 months agoUse AsyncAdaptedQueuePool in aiosqlite
Christophe Bornet [Fri, 31 Jan 2025 12:42:59 +0000 (07:42 -0500)] 
Use AsyncAdaptedQueuePool in aiosqlite

<!-- Provide a general summary of your proposed changes in the Title field above -->

### Description
Change default pool in `aiosqlite` from `NullPool` to `AsyncAdaptedQueuePool`.
This ensures consistency with pysqlite and least surprise when migrating from sync to async.
See discussion in https://github.com/sqlalchemy/sqlalchemy/discussions/12285
Non regression tested by existing tests.

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [ ] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [x] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #12291
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12291
Pull-request-sha: 5a0872b8d431a6937eaf05fb132578aed5723b6a

Change-Id: I96b4d0b5154b34cd26d3ad89774229b0f5d8686f

12 months agoRemoved the deprecated mypy plugin.
Federico Caselli [Thu, 30 Jan 2025 21:05:59 +0000 (22:05 +0100)] 
Removed the deprecated mypy plugin.

The plugin was non-functional with newer version of mypy and it's no
longer needed with modern SQLAlchemy declarative style.

Fixes: #12293
Change-Id: If4581ab58623f0a2992f4e33a6dcdae002c68dad

12 months agoMerge "Skip mypy plugin tests if incompatible or missing" into main
Federico Caselli [Thu, 30 Jan 2025 20:39:34 +0000 (20:39 +0000)] 
Merge "Skip mypy plugin tests if incompatible or missing" into main

12 months agoremove comma in docstring
Federico Caselli [Thu, 30 Jan 2025 20:34:00 +0000 (21:34 +0100)] 
remove comma in docstring

Change-Id: I135c06ddc16f905835b50cb8ea41f13a1ae2e0be

12 months agoFix typo python2 -> python in 2.0 major migration guide (#12250)
Martin Burchell [Thu, 30 Jan 2025 20:31:15 +0000 (20:31 +0000)] 
Fix typo python2 -> python in 2.0 major migration guide (#12250)

12 months agoSkip mypy plugin tests if incompatible or missing
Nils Philippsen [Thu, 30 Jan 2025 13:10:55 +0000 (08:10 -0500)] 
Skip mypy plugin tests if incompatible or missing

Fixes: #12287
<!-- Provide a general summary of your proposed changes in the Title field above -->

### Description
<!-- Describe your changes in detail -->

This skips Mypy plugin tests if mypy is missing or an unsupported version.

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [ ] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [x] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #12288
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12288
Pull-request-sha: 00e00f321d54da3e5d6112f61d5770e59e33bf82

Change-Id: I492a93d3c586425e2cf53304520164dc1487a667

12 months agosupport accept for chains of joineddispatchers
Mike Bayer [Wed, 29 Jan 2025 15:10:09 +0000 (10:10 -0500)] 
support accept for chains of joineddispatchers

Fixed issue where creating an :class:`.Engine` using multiple calls to
:meth:`.Engine.execution_options` where a subsequent call involved certain
options such as ``isolation_level`` would lead to an internal error
involving event registration.

Fixes: #12289
Change-Id: Iec5fbc0eb0c5a92dda1ea762872ae992ca816685

12 months agouse arm runnes on linux instead of emulation
Federico Caselli [Wed, 22 Jan 2025 20:00:41 +0000 (21:00 +0100)] 
use arm runnes on linux instead of emulation

Fixes: #12249
Change-Id: I4c56a10d09716aa5e1fc4a1688dbfdf7cfcfd2fb

12 months agodocument name normalize
Mike Bayer [Wed, 4 Dec 2024 14:22:14 +0000 (09:22 -0500)] 
document name normalize

Fixes: #10789
Change-Id: I795d92c900502e4b2fde7ab11e8adb9b03d5b782

12 months agoMerge "asyncpg: shield connection close in terminate to avoid connection leak" into...
Michael Bayer [Tue, 21 Jan 2025 00:35:03 +0000 (00:35 +0000)] 
Merge "asyncpg: shield connection close in terminate to avoid connection leak" into main

12 months agoset default iso to None for asyncpg pep-249 wrapper
Mike Bayer [Thu, 16 Jan 2025 17:14:02 +0000 (12:14 -0500)] 
set default iso to None for asyncpg pep-249 wrapper

Adjusted the asyncpg connection wrapper so that the asyncpg
``.transaction()`` call sends ``None`` for isolation_level if not otherwise
set in the SQLAlchemy dialect/wrapper, thereby allowing asyncpg to make use
of the server level setting for isolation_level in the absense of a
client-level setting. Previously, this behavior of asyncpg was blocked by a
hardcoded ``read_committed``.

Fixes: #12159
Change-Id: I2cd878a5059a8fefc9557a9b8e056fedaee2e9a4

12 months agoasyncpg: shield connection close in terminate to avoid connection leak
Federico Caselli [Fri, 17 Jan 2025 20:16:51 +0000 (21:16 +0100)] 
asyncpg: shield connection close in terminate to avoid connection leak

Added an additional ``shield()`` call within the connection terminate
process of the asyncpg driver, to mitigate an issue where terminate would
be prevented from completing under the anyio concurrency library.

Fixes #12077
Closes: #12076
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12076
Pull-request-sha: 6ae261ea7668f4c850874666efec6fef658b08c0

Change-Id: Iaec63d02b620201dc60ffdad76ba9d61d427cac1

13 months agoupdate logging_name doc
Mike Bayer [Mon, 13 Jan 2025 13:14:14 +0000 (08:14 -0500)] 
update logging_name doc

engine logging has not used hex-strings in a very long time

Change-Id: I77131e3eb2f72129fde1d9ab6dd4b4e40bc313c6

13 months agoMerge "Remove fallbacks from the previous typing change" into main
Federico Caselli [Sun, 12 Jan 2025 19:00:38 +0000 (19:00 +0000)] 
Merge "Remove fallbacks from the previous typing change" into main

13 months agoREADME.unittests: fixup for parallelized `pytest` example (#12242)
James Addison [Sat, 11 Jan 2025 22:03:56 +0000 (22:03 +0000)] 
README.unittests: fixup for parallelized `pytest` example (#12242)

13 months agofix linter warning
Federico Caselli [Sat, 11 Jan 2025 21:59:06 +0000 (22:59 +0100)] 
fix linter warning

Change-Id: I075cfff5c9aea58d29c2caf5fd7512faa4902ef4

13 months agoFix MovedIn20Warning docstring (#12237)
Juang, Yi-Lin [Fri, 10 Jan 2025 22:27:49 +0000 (15:27 -0700)] 
Fix MovedIn20Warning docstring (#12237)

Remove reference of RemovedIn20Warning

13 months agocherry-pick changelog update for 2.0.38
Mike Bayer [Thu, 9 Jan 2025 22:44:09 +0000 (17:44 -0500)] 
cherry-pick changelog update for 2.0.38

13 months agocherry-pick changelog from 2.0.37
Mike Bayer [Thu, 9 Jan 2025 22:44:09 +0000 (17:44 -0500)] 
cherry-pick changelog from 2.0.37

13 months agofix changelog typos
Mike Bayer [Thu, 9 Jan 2025 22:36:03 +0000 (17:36 -0500)] 
fix changelog typos

Change-Id: Ib1631c23fe8ad2d4aa4a537526faf970229af56d

13 months agoAsyncpg null query fix
CommanderKeynes [Tue, 7 Jan 2025 15:52:36 +0000 (10:52 -0500)] 
Asyncpg null query fix

Adjusted the asyncpg dialect so that an empty SQL string, which is valid
for PostgreSQL server, may be successfully processed at the dialect level,
such as when using :meth:`.Connection.exec_driver_sql`. Pull request
courtesy Andrew Jackson.

Closes: #12220
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12220
Pull-request-sha: 45c94febee66b567040b1fbfa3a93079a1314f09

Change-Id: I870df9e31f4a229939e76c702724c25073329282

13 months agoclose unclosed sqlite result
Mike Bayer [Fri, 3 Jan 2025 20:40:26 +0000 (15:40 -0500)] 
close unclosed sqlite result

this close is hoped to address failures that have been occurring
on github actions under python 3.13, although i am able to reproduce
the problem on other python versions as well when running
test/orm/test_events.py with the --random extension.

Change-Id: If0c4110815fd8625b39b2d74de26ac965401de14

13 months agoguard against KeyError on subclass removal
Mike Bayer [Fri, 3 Jan 2025 17:19:27 +0000 (12:19 -0500)] 
guard against KeyError on subclass removal

Fixed issue in event system which prevented an event listener from being
attached and detached from multiple class-like objects, namely the
:class:`.sessionmaker` or :class:`.scoped_session` targets that assign to
:class:`.Session` subclasses.

Fixes: #12216
Change-Id: I3d8969fe604adbc23add07a13741938c7f4fc8ca

13 months agoRemove fallbacks from the previous typing change
Federico Caselli [Tue, 19 Nov 2024 22:09:06 +0000 (23:09 +0100)] 
Remove fallbacks from the previous typing change

Removed 2.0 fallbacks from Iffc34fd42b9769f73ddb4331bd59b6b37391635d

Fixes: #11944
Fixes: #11955
Fixes: #11305
Change-Id: I358aa8ea9822d20525989f414447f7f5ecb68711

13 months agoMerge "edits and reorganization for union/pep695 typing docs" into main
Michael Bayer [Fri, 3 Jan 2025 16:14:03 +0000 (16:14 +0000)] 
Merge "edits and reorganization for union/pep695 typing docs" into main

13 months ago2025
Mike Bayer [Thu, 2 Jan 2025 21:37:27 +0000 (16:37 -0500)] 
2025

Change-Id: Ifb33b8df2f838851f329415fa70f494acb4ccde5

13 months agoedits and reorganization for union/pep695 typing docs
Mike Bayer [Fri, 27 Dec 2024 21:59:28 +0000 (16:59 -0500)] 
edits and reorganization for union/pep695 typing docs

also some new tests

References: #11944
References: #11955
References: #11305
Change-Id: Ifaf8ede52a57336fa3875e8d86c6e22b2b8a0e14

13 months agofurther fixes for _cleanup_mapped_str_annotation
Mike Bayer [Mon, 30 Dec 2024 18:17:29 +0000 (13:17 -0500)] 
further fixes for _cleanup_mapped_str_annotation

Fixed issues in type handling within the ``type_annotation_map`` feature
which prevented the use of unions, using either pep-604 or ``Union``
syntaxes under future annotations mode, which contained multiple generic
types as elements from being correctly resolvable.

also adds some further tests to assert that None added into the type
map for pep695, typing.NewType etc. sets up nullability on the column

Fixes: #12207
Change-Id: I4057694cf35868972db2942721049d79301b19c4

13 months agoMerge "General improvement on annotated declarative" into main
Michael Bayer [Fri, 27 Dec 2024 20:44:32 +0000 (20:44 +0000)] 
Merge "General improvement on annotated declarative" into main

13 months agobefore_mapper_configured event doc fixes (#12200)
Lele Gaifax [Thu, 26 Dec 2024 11:09:40 +0000 (12:09 +0100)] 
before_mapper_configured event doc fixes (#12200)

* Remove spurious word in before_mapper_configured event doc

* Fix reST markup in before_mapper_configured event doc

13 months agopin ubuntu 22 since 24 seems broken. Runners have 4 cores now
Federico Caselli [Tue, 24 Dec 2024 21:39:58 +0000 (22:39 +0100)] 
pin ubuntu 22 since 24 seems broken. Runners have 4 cores now

Change-Id: Ie62b072446e8052d5465cfe2c01b2ccb05482aba

13 months agofix lint job
Mike Bayer [Tue, 24 Dec 2024 20:15:36 +0000 (15:15 -0500)] 
fix lint job

Change-Id: Ib3d5230212eb56f8f0454bb51b23a64d93de1e43

13 months agofix typo on double doc
Federico Caselli [Mon, 23 Dec 2024 21:47:47 +0000 (22:47 +0100)] 
fix typo on double doc

Change-Id: Ia8cffddae5c5c14954d7fa6b2e11c2b78c6e5f59

13 months agodocument Oracle FLOAT/DOUBLE and binary variants
Mike Bayer [Mon, 23 Dec 2024 16:46:57 +0000 (11:46 -0500)] 
document Oracle FLOAT/DOUBLE and binary variants

Fixes: #9704
Change-Id: Id11722d32eeb2a8582348aa5846eefb19d7c83c7

13 months agoupdate for mypy 1.14
Mike Bayer [Fri, 20 Dec 2024 23:02:37 +0000 (18:02 -0500)] 
update for mypy 1.14

Change-Id: I7315c06314ed25c2c00f56b2883f97f4489e433c

13 months agofix SQLite on conflict tests
Mike Bayer [Thu, 19 Dec 2024 22:50:21 +0000 (17:50 -0500)] 
fix SQLite on conflict tests

in I4d66ec1473321616a1707da324a7dfe7a61ec94e we added new tests
in the sqlite suite but we forgot to extend from fixtures.TestBase,
so these tests did not get run at all.  repair tests

Change-Id: Iaec17a754e0ab1d4b43f063706b512ed335a7465

13 months agotyping fix: allow stmt.excluded for set_
Mike Bayer [Wed, 18 Dec 2024 22:19:56 +0000 (17:19 -0500)] 
typing fix: allow stmt.excluded for set_

Change-Id: I6f0af23fba8f5868282505438e6ca0a5af7e1bbe

13 months agoMerge "harden typing / coercion for on conflict/on duplicate key" into main
Michael Bayer [Wed, 18 Dec 2024 20:43:25 +0000 (20:43 +0000)] 
Merge "harden typing / coercion for on conflict/on duplicate key" into main

13 months agoharden typing / coercion for on conflict/on duplicate key
Mike Bayer [Wed, 18 Dec 2024 16:24:58 +0000 (11:24 -0500)] 
harden typing / coercion for on conflict/on duplicate key

in 2.1 we want these structures to be cacheable, so start
by cleaning up types and adding coercions to enforce those types.
these will be more locked down in 2.1 as we will need to move
bound parameter coercion outside of compilation, but here
do some small starts and introduce in 2.0.

in one interest of cachability, a "literal_binds" that found
its way into SQLite's compiler is replaced with "literal_execute",
the difference being that the latter is cacheable.   This literal
is apparently necessary to suit SQLite's query planner for
the "index criteria" portion of the on conflict clause that otherwise
can't work with a real bound parameter.

Change-Id: I4d66ec1473321616a1707da324a7dfe7a61ec94e

13 months agoMerge "Add missing `SmallInteger` column spec for `asyncpg`" into main
Michael Bayer [Wed, 18 Dec 2024 16:41:57 +0000 (16:41 +0000)] 
Merge "Add missing `SmallInteger` column spec for `asyncpg`" into main

14 months agoAdd missing `SmallInteger` column spec for `asyncpg`
FeeeeK [Sat, 14 Dec 2024 08:03:24 +0000 (03:03 -0500)] 
Add missing `SmallInteger` column spec for `asyncpg`

Adds missing column spec for `SmallInteger` in `asyncpg` driver

Fixes: #12170
Closes: #12171
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12171
Pull-request-sha: 82886d8521cb4e78822d685a864a9af438f6ea6b

Change-Id: I2cb15f066de756d4e3f21bcac6af2cf03bd25a1c

14 months agoMerge "Updated SQLAlchemy documentation in index.rst" into main
Michael Bayer [Tue, 17 Dec 2024 13:00:07 +0000 (13:00 +0000)] 
Merge "Updated SQLAlchemy documentation in index.rst" into main

14 months agoMerge "SQLite strict tables" into main
Michael Bayer [Mon, 16 Dec 2024 18:25:08 +0000 (18:25 +0000)] 
Merge "SQLite strict tables" into main

14 months agoharden HSTORE registration
Mike Bayer [Mon, 16 Dec 2024 15:58:01 +0000 (10:58 -0500)] 
harden HSTORE registration

* use the driver_connection when we register on the connection
* assert targets passed to register_hstore assert as boolean true;
  psycopg docs say "if None, register globally" but looking in the
  source it's actually registering globally if any false-evaluating
  object is passed.

Change-Id: Ie1fd7c96714b7fe76ef964501691fa48352be259

14 months agoadd delete limit to mysql; ensure int for update/delete limits
Pablo Nicolas Estevez [Mon, 9 Dec 2024 19:44:44 +0000 (14:44 -0500)] 
add delete limit to mysql; ensure int for update/delete limits

Added support for the ``LIMIT`` clause with ``DELETE`` for the MySQL and
MariaDB dialects, to complement the already present option for
``UPDATE``. The :meth:`.delete.with_dialect_options` method of the
`:func:`.delete` construct accepts parameters for ``mysql_limit`` and
``mariadb_limit``, allowing users to specify a limit on the number of rows
deleted. Pull request courtesy of Pablo Nicolás Estevez.

Added logic to ensure that the ``mysql_limit`` and ``mariadb_limit``
parameters of :meth:`.update.with_dialect_options` and
:meth:`.delete.with_dialect_options` when compiled to string will only
compile if the parameter is passed as an integer; a ``ValueError`` is
raised otherwise.

corrected mysql documentation for update/delete options which
must be specified using the ``with_dialect_options()`` method.

Fixes: #11764
Closes: #12146
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12146
Pull-request-sha: e34708374c67e016cda88919109fec5e6462eced

Change-Id: I8681ddabaa192b672c7a9b9981c4fe9e4bdc8d03

14 months agochore: update black
Federico Caselli [Thu, 12 Dec 2024 22:15:17 +0000 (23:15 +0100)] 
chore: update black

surprisingly no change was done to the code

Change-Id: I50af32fc2a172fa4aee52939fcec53d5b142ceed

14 months agoUpdated SQLAlchemy documentation in index.rst
hashAbhiBytes [Thu, 12 Dec 2024 21:17:39 +0000 (16:17 -0500)] 
Updated SQLAlchemy documentation in index.rst

Closes: #12132
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12132
Pull-request-sha: 4a11a6548d812b1f61739397a3ccaa331f76a494

Change-Id: Icc03f12470b288aabf9099c8c4e2220ce62efcf0

14 months agoAdded sqlalchemy-hsqldb to list of external dialects (#12175)
Jason Pebble [Thu, 12 Dec 2024 21:14:59 +0000 (21:14 +0000)] 
Added sqlalchemy-hsqldb to list of external dialects (#12175)

14 months agoBump pypa/cibuildwheel from 2.21.3 to 2.22.0 (#12129)
dependabot[bot] [Thu, 12 Dec 2024 21:14:35 +0000 (22:14 +0100)] 
Bump pypa/cibuildwheel from 2.21.3 to 2.22.0 (#12129)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.21.3 to 2.22.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.21.3...v2.22.0)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
14 months agoGeneral improvement on annotated declarative
Federico Caselli [Tue, 19 Nov 2024 22:12:51 +0000 (23:12 +0100)] 
General improvement on annotated declarative

Fix issue that resulted in inconsistent handing of unions
depending on how they were declared

Consistently support TypeAliasType. This has required a revision
of the implementation added in #11305 to have a consistent
behavior.

References: #11944
References: #11955
References: #11305
Change-Id: Iffc34fd42b9769f73ddb4331bd59b6b37391635d

14 months agoSQLite strict tables
Guilherme Martins Crocetti [Thu, 12 Dec 2024 20:11:27 +0000 (15:11 -0500)] 
SQLite strict tables

Added SQLite table option to enable ``STRICT`` tables.

Fixes #7398
Closes: #12124
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12124
Pull-request-sha: e77273d0ba5c09d120c2582e94b96b781ebecb90

Change-Id: I0ffe9f6fc2c27627f53a1bc1808077e74617658a

14 months agomodernize PG domain reflection test and skip for pg17.2
Mike Bayer [Thu, 12 Dec 2024 15:57:46 +0000 (10:57 -0500)] 
modernize PG domain reflection test and skip for pg17.2

Fixes: #12174
Change-Id: If4b1c29d7ee62b2858f1ef9d75fe1c4c41217706

14 months agofix test due to merge of 11370 with 5252
Mike Bayer [Wed, 11 Dec 2024 20:54:23 +0000 (15:54 -0500)] 
fix test due to merge of 11370 with 5252

Numeric and Float are split out in main so a type cant be both
at the same time.   Also there's no reason to do isinstance(Float)
and isintance(Numeric) even if they are in the same hierarchy.

Change-Id: I2263aaac264673a830b63689d39b6433b32c1d23

14 months agoMerge "dont match partial types in type_annotation_map" into main
Michael Bayer [Wed, 11 Dec 2024 19:49:41 +0000 (19:49 +0000)] 
Merge "dont match partial types in type_annotation_map" into main

14 months agodont match partial types in type_annotation_map
Frazer McLean [Thu, 3 Oct 2024 22:21:12 +0000 (18:21 -0400)] 
dont match partial types in type_annotation_map

Fixed issue regarding ``Union`` types that would be present in the
:paramref:`_orm.registry.type_annotation_map` of a :class:`_orm.registry`
or declarative base class, where a ``Mapped[]`` element that included one
of the subtypes present in that ``Union`` would be matched to that entry,
potentially ignoring other entries that matched exactly.   The correct
behavior now takes place such that an entry should only match in
``type_annotation_map`` exactly, as a ``Union`` type is a self-contained
type. For example, an attribute with ``Mapped[float]`` would previously
match to a ``type_annotation_map`` entry ``Union[float, Decimal]``; this
will no longer match and will now only match to an entry that states
``float``. Pull request courtesy Frazer McLean.

Fixes #11370
Closes: #11942
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11942
Pull-request-sha: 21a3d1971a04e117a557f6e6bac77bce9f6bb0a9

Change-Id: I3467be00f8fa8bd011dd4805a77a3b80ff74a215

14 months agoMerge "Separate Numeric and Float" into main
Michael Bayer [Mon, 9 Dec 2024 21:47:48 +0000 (21:47 +0000)] 
Merge "Separate Numeric and Float" into main

14 months agoMerge "Fixes: #11724 - PGDialect `get_multi_indexes` PGVecto.rs Bug" into main
Federico Caselli [Mon, 9 Dec 2024 20:00:17 +0000 (20:00 +0000)] 
Merge "Fixes: #11724 - PGDialect `get_multi_indexes` PGVecto.rs Bug" into main

14 months agoSeparate Numeric and Float
Mike Bayer [Mon, 13 Apr 2020 14:25:27 +0000 (10:25 -0400)] 
Separate Numeric and Float

the :class:`.Numeric` and :class:`.Float` SQL types have been separated out
so that :class:`.Float` no longer inherits from :class:`.Numeric`; instead,
they both extend from a common mixin :class:`.NumericCommon`.  This
corrects for some architectural shortcomings where numeric and float types
are typically separate, and establishes more consistency with
:class:`.Integer` also being a distinct type.   The change should not have
any end-user implications except for code that may be using
``isinstance()`` to test for the :class:`.Numeric` datatype; third party
dialects which rely upon specific implementation types for numeric and/or
float may also require adjustment to maintain compatibility.

Fixes: #5252
Change-Id: Iadc841340b3d97e3eb5f7e63f0a0cc3cb4e30f74

14 months agoensure db_opts are honored
Mike Bayer [Mon, 9 Dec 2024 17:36:56 +0000 (12:36 -0500)] 
ensure db_opts are honored

for provision.py that adds db_opts these need to be used in all cases
for testing_engine() that is using that same database driver

References: #12159
Change-Id: I15c46a375ab05ef94c9a7d19000a3d8641de43bf

14 months agoFixes: #11724 - PGDialect `get_multi_indexes` PGVecto.rs Bug
Nick Wilkinson [Fri, 6 Dec 2024 06:59:22 +0000 (01:59 -0500)] 
Fixes: #11724 - PGDialect `get_multi_indexes` PGVecto.rs Bug
When attempting to generate an auto-revision using Alembic, the `get_multi_indexes` method fails with the error:
```python
    dialect_options["postgresql_with"] = dict(
ValueError: dictionary update sequence element #0 has length 4; 2 is required
```

### Description

The cause of this error is that when creating a vector index in PGVecto.rs, the index is:
```sql
CREATE INDEX vector_embedding_idx ON public.vector_embeddings USING vectors (embedding vector_cos_ops) WITH (options='
                    [indexing.hnsw]
                    m = 16
                    ef_construction = 64
                ')
```

However, in PostgreSQL the index seems to be generated as:
```sql
CREATE INDEX vector_embedding_idx ON public.vector_embeddings USING hnsw (embedding vector_cos_ops) WITH (m='16', ef_construction='64');
```

To fix this, we need to modify:
```diff
if row["reloptions"]:
-    dialect_options["postgresql_with"] = dict([option.split("=") for option in row["reloptions"]])
+    dialect_options["postgresql_with"] = dict([option.split("=", 1) for option in row["reloptions"]])
```

For more details on this error and a reproducible example, refer to #11724

### Testing

I couldn't really think of an easy way to add the potential test suggested in the issue thread [here](https://github.com/sqlalchemy/sqlalchemy/issues/11724#issuecomment-2518501318). However, this code is already tested in [`test_get_multi_view_indexes`](https://github.com/sqlalchemy/sqlalchemy/blob/5ded16fae8abfc31d43430cb25757fb434c37ba2/test/dialect/postgresql/test_reflection.py#L378), so assuming that test still passes and nothing breaks I believe we should be fine.

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [ ] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [x] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

Closes: #12162
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12162
Pull-request-sha: 7d996fd92dd24a7d79bccab090d22bd76564dc76

Change-Id: Id6ad86133f3221eefcf0aa799c7f79a754e9c1bf

14 months agouse VARCHAR for CLOB outputtypehandler
Mike Bayer [Mon, 2 Dec 2024 23:59:19 +0000 (18:59 -0500)] 
use VARCHAR for CLOB outputtypehandler

Fixed issue in oracledb / cx_oracle dialects where output type handlers for
``CLOB`` were being routed to ``NVARCHAR`` rather than ``VARCHAR``, causing
a double conversion to take place.

Fixes: #12150
Change-Id: I9f55e9bc595997b873c831b0422f5af10dcc15ef

14 months agoMerge "update the format_docs_code to also work on python files" into main
Michael Bayer [Sun, 1 Dec 2024 18:58:33 +0000 (18:58 +0000)] 
Merge "update the format_docs_code to also work on python files" into main

14 months agoupdate the format_docs_code to also work on python files
Federico Caselli [Sat, 30 Nov 2024 18:50:38 +0000 (19:50 +0100)] 
update the format_docs_code to also work on python files

Change-Id: I0a6c9610b3fd85365ed4c2c199e3cad87ee64022

14 months agoremove private function from docs
Federico Caselli [Sat, 30 Nov 2024 19:42:50 +0000 (20:42 +0100)] 
remove private function from docs

Change-Id: I4c6ef551c8ecb3952faf3aadf6f4e383a2e446cd

14 months agoMerge "Added INET4 and INET6 types for MariaDB" into main
Michael Bayer [Thu, 21 Nov 2024 12:36:33 +0000 (12:36 +0000)] 
Merge "Added INET4 and INET6 types for MariaDB" into main

14 months agofix sphinx warning
Federico Caselli [Tue, 19 Nov 2024 18:30:13 +0000 (19:30 +0100)] 
fix sphinx warning

Change-Id: Ice428d026fe63e0e48bc544c96014e6c461b9717

14 months agoAdded INET4 and INET6 types for MariaDB
Adam Žurek [Fri, 15 Nov 2024 18:12:54 +0000 (13:12 -0500)] 
Added INET4 and INET6 types for MariaDB

Added sql types ``INET4`` and ``INET6`` in the MariaDB dialect.

Fixes: #10720
Closes: #12028
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12028
Pull-request-sha: 25f939076eda0a763bc33fb0455d45ef00002110

Change-Id: I2efa53420aa5566f61a19f228cb421116b2e2720

14 months agoMerge "Mention no_autoflush in warning" into main
Michael Bayer [Tue, 19 Nov 2024 13:40:26 +0000 (13:40 +0000)] 
Merge "Mention no_autoflush in warning" into main

14 months agoapply underscores to ORM class and def names
Mike Bayer [Mon, 18 Nov 2024 18:43:08 +0000 (13:43 -0500)] 
apply underscores to ORM class and def names

criteria used here is:

* The class or def should definitely not be used directly by
  a third party
* The class would never be the subject of an `isinstance()` check
* The class is not exposed as the type of a return value for a public
  function

A sweep through class and function names in the ORM renames many classes
and functions that have no intent of public visibility to be underscored.
This is to reduce ambiguity as to which APIs are intended to be targeted by
third party applications and extensions.  Third parties are encouraged to
propose new public APIs in Discussions to the extent they are needed to
replace those that have been clarified as private.

Fixes: #10497
Change-Id: I9900e759be8510e01bba2c25984b9f30dc1fa9c0

14 months agoMerge "apply quote to url.database portion" into main
Michael Bayer [Mon, 18 Nov 2024 17:53:51 +0000 (17:53 +0000)] 
Merge "apply quote to url.database portion" into main

14 months agoMerge "Support table function in oracle" into main
Michael Bayer [Mon, 18 Nov 2024 17:53:20 +0000 (17:53 +0000)] 
Merge "Support table function in oracle" into main

14 months agoMerge "Add Range.__contains__" into main
Michael Bayer [Mon, 18 Nov 2024 17:48:55 +0000 (17:48 +0000)] 
Merge "Add Range.__contains__" into main

14 months agoMerge "remove _implicit_subquery and all derived functions" into main
Michael Bayer [Mon, 18 Nov 2024 14:24:53 +0000 (14:24 +0000)] 
Merge "remove _implicit_subquery and all derived functions" into main

15 months agoremove _implicit_subquery and all derived functions
Mike Bayer [Sat, 16 Nov 2024 20:41:04 +0000 (15:41 -0500)] 
remove _implicit_subquery and all derived functions

The ``.c`` and ``.columns`` attributes on the :class:`.Select` and
:class:`.TextualSelect` constructs, which are not instances of
:class:`.FromClause`, have been removed completely, in addition to the
``.select()`` method as well as other codepaths which would implicitly
generate a subquery from a :class:`.Select` without the need to explicitly
call the :meth:`.Select.subquery` method.

In the case of ``.c`` and ``.columns``, these attributes were never useful
in practice and have caused a great deal of confusion, hence were
deprecated back in version 1.4, and have emitted warnings since that
version.   Accessing the columns that are specific to a :class:`.Select`
construct is done via the :attr:`.Select.selected_columns` attribute, which
was added in version 1.4 to suit the use case that users often expected
``.c`` to accomplish.  In the larger sense, implicit production of
subqueries works against SQLAlchemy's modern practice of making SQL
structure as explicit as possible.

Note that this is **not related** to the usual :attr:`.FromClause.c` and
:attr:`.FromClause.columns` attributes, common to objects such as
:class:`.Table` and :class:`.Subquery`,  which are unaffected by this
change.

Fixes: #10236
Change-Id: If241b8674ccacce7e860bfed25b5d266bfe1aca7

15 months agocorrect pep-593/pep-681 doc section
Mike Bayer [Sun, 17 Nov 2024 00:15:10 +0000 (19:15 -0500)] 
correct pep-593/pep-681 doc section

as of 73a273c90cda2369ec071435edd9c6dc5c1d31c4 and later
4c6429d068 we have decided that Annotated should not allow dataclass
arguments in mapped_column(), which emits a depreaction warning.

the docs in this section were never updated

Fixes: #12108
Change-Id: I6f301c4bac621d5ca1afb1b1dadf754ec929d179

15 months agoAdd Range.__contains__
Frazer McLean [Fri, 15 Nov 2024 18:07:00 +0000 (13:07 -0500)] 
Add Range.__contains__

<!-- Provide a general summary of your proposed changes in the Title field above -->

### Description
Fixes #12093

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [ ] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [x] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #12094
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12094
Pull-request-sha: 3f900e96b95c6dbd20ee6f5aa3f49dd6124ffba9

Change-Id: I4c3945eec6a931acd0a8c1682988c5f26e96a499

15 months agofix typo in test docs
Federico Caselli [Fri, 15 Nov 2024 17:57:54 +0000 (18:57 +0100)] 
fix typo in test docs

Change-Id: I6d7b8b75b96c0096ea9de8e462895c006dcb8f7c

15 months agoMerge "Update Oracle dialect doc, mostly to prefer python-oracledb" into main
Michael Bayer [Fri, 15 Nov 2024 13:18:49 +0000 (13:18 +0000)] 
Merge "Update Oracle dialect doc, mostly to prefer python-oracledb" into main

15 months agoapply quote to url.database portion
Mike Bayer [Wed, 13 Nov 2024 15:46:17 +0000 (10:46 -0500)] 
apply quote to url.database portion

Adjusted URL parsing and stringification to apply url quoting to the
"database" portion of the URL.  This allows a URL where the "database"
portion includes special characters such as question marks to be
accommodated.

Fixes: #11234
Change-Id: If868c96969b70f1090f0b474403d22fd3a2cc529

15 months agoSupport table function in oracle
Federico Caselli [Thu, 14 Nov 2024 19:27:35 +0000 (20:27 +0100)] 
Support table function in oracle

Fixed compilation of ``TABLE`` function when used in a from clause
in Oracle Database dialect.

Fixes: #12100
Change-Id: I862e5be9685611dc74338c37b7537505fc2194e5

15 months agoImprove oracle max id length again
Federico Caselli [Thu, 14 Nov 2024 18:55:32 +0000 (19:55 +0100)] 
Improve oracle max id length again

Adjust 90bf575b81c5396b364908547551b6592a333bf7 to handle the none case
Fix missing return

Fixes: #12032
Change-Id: I166efbde1a0cc88673ad3cdfbda70c737dcafcc8

15 months agoAdd YDB to external dialect list (#12088)
Oleg Ovcharuk [Thu, 14 Nov 2024 18:49:34 +0000 (21:49 +0300)] 
Add YDB to external dialect list (#12088)