summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * Improve ``oracledb`` thick mode flag.Federico Caselli2023-02-144-12/+27
| | | | | | | | | | | | | | | | Adjusted ``oracledb`` thick mode flag to make ``thick_mode=False`` not enable thick mode. Previously only ``None`` was accepted as off value. Fixes: #9295 Change-Id: I1a8397c19d065dfc2dda597e719922fc8d31acb1
* | Merge "Add ``Table.autoincrement_column``" into mainmike bayer2023-02-153-2/+32
|\ \
| * | Add ``Table.autoincrement_column``Federico Caselli2023-02-143-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | Added public property :attr:`_sql.Table.autoincrement_column` that returns the column identified as autoincrementing in the column. Fixes: #9277 Change-Id: If60d6f92e0df94f57d00ff6d89d285c61b02f5a4
* | | Merge "test dataclasses.KW_ONLY" into mainmike bayer2023-02-151-2/+20
|\ \ \
| * | | test dataclasses.KW_ONLYMike Bayer2023-02-141-2/+20
| | |/ | |/| | | | | | | | | | | | | | | | had no test support for this, seems to work. gets grabbed in annotations and applied correctly. Change-Id: I2cd7ad7b376f38f945d2007b316a1316271f9a0f
* | | fix typo in whatsnew (#9303)Andrei Pozolotin2023-02-141-1/+1
| | | | | | | | | see #9294
* | | fix typo "Annotation" -> "Annotated" and use typing_extensionsMike Bayer2023-02-141-2/+2
|/ / | | | | | | | | Fixes: #9305 Change-Id: I9f0ab24f609f6f557b5780209a85f0abe82b363e
* | fix documentation formattingFederico Caselli2023-02-131-1/+3
| | | | | | | | Change-Id: I3307e1844237b58486dcce334eab80689e116bb8
* | completely lift-and-copy and_ / or_ documentationMike Bayer2023-02-131-0/+108
| | | | | | | | | | | | | | | | Sphinx refuses to write the correct docstring for these without placing a completely literal string with no interpolation of any kind. Current site has blank for these. Change-Id: Ie19a0b89d05b45509708585e6efca1a35f30adb5
* | note column ordering change, indicate recipe to control orderingMike Bayer2023-02-132-0/+134
| | | | | | | | | | Change-Id: I520c18ac8c84923558e2042265943b6340700788 References: #9294
* | Fix docs for `case` expression to match new syntax (#9279)Abdulhaq Emhemmed2023-02-103-7/+7
| | | | | | | | | | | | | | | | | | * Fix docs for `case` expression to match new syntax Previously (before v1.4), the `whens` arg (when `value` is *not* used) used to be a list of conditions (a 2 item-tuple of condition + value). From v1.4, these are passed as positional args and the old syntax is not supported anymore. * Fix long lines
* | add requirement, restore test removed in ↵Federico Caselli2023-02-102-0/+3
|/ | | | | | eb0861e8e69f8ce702301c558e552e1aeb2e9eba Change-Id: I78c12a58eef59ff577a88880a8752151051fd939
* generalize adapt_on_names to expect non-named elementsMike Bayer2023-02-107-17/+130
| | | | | | | | | | | | | | | | | | | | The fix in #9217 opened up adapt_on_names to more kinds of expressions than it was prepared for; adjust that logic and also refine in the ORM where we are using it, as we dont need it (yet) for the DML RETURNING use case. Fixed regression introduced in version 2.0.2 due to :ticket:`9217` where using DML RETURNING statements, as well as :meth:`_sql.Select.from_statement` constructs as was "fixed" in :ticket:`9217`, in conjunction with ORM mapped classes that used expressions such as with :func:`_orm.column_property`, would lead to an internal error within Core where it would attempt to match the expression by name. The fix repairs the Core issue, and also adjusts the fix in :ticket:`9217` to not take effect for the DML RETURNING use case, where it adds unnecessary overhead. Fixes: #9273 Change-Id: Ie0344efb12ff7df48f21e71e62dc598c76a6a0de
* Version 2.0.4 placeholderMike Bayer2023-02-092-1/+5
|
* - 2.0.3rel_2_0_3Mike Bayer2023-02-094-19/+21
|
* apply self_group to all elements of multi-expressionMike Bayer2023-02-093-32/+99
| | | | | | | | | | | Fixed critical regression in SQL expression formulation in the 2.0 series due to :ticket:`7744` which improved support for SQL expressions that contained many elements against the same operator repeatedly; parenthesis grouping would be lost with expression elements beyond the first two elements. Fixes: #9271 Change-Id: Ib6ed5b71efe0f6816dab75bda622297fc89e3b49
* pin sphinx-copybutton and change configMike Bayer2023-02-092-1/+7
| | | | | | | | | | | | | | | | sphinx-copybutton introduced a new feature in 0.5.1 which includes a default configuration that breaks the regexp prompt matching scheme. set copybutton_exclude to not include ".gp" as that's the class where we exactly look for the prompts we are matching. While we're there, use this new feature to exclude our sql styles, even though this is not strictly necessary in our case. pin sphinx-copybutton at 0.5.1 to avoid future problems. Change-Id: I8eaeab13995c032b9ee3afd1f08dae5929009d45 References: https://github.com/executablebooks/sphinx-copybutton/issues/185
* add test for #9268Mike Bayer2023-02-081-0/+18
| | | | Change-Id: I3075472de51b9d0d429f7f6204093f3e481fc121
* typing: fix hybrid property setter (#9269)Mehdi ABAAKOUK2023-02-081-1/+1
| | | Fixes #9268
* Merge "Remove `typing.Self` workaround" into mainmike bayer2023-02-0829-706/+382
|\
| * Remove `typing.Self` workaroundYurii Karabas2023-02-0829-706/+382
| | | | | | | | | | | | | | | | | | | | | | | | Remove ``typing.Self`` workaround, now using :pep:`673` for most methods that return ``Self``. Pull request courtesy Yurii Karabas. Fixes: #9254 Closes: #9255 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/9255 Pull-request-sha: 2947df8ada79f5c3afe9c838e65993302199c2f7 Change-Id: Ic32015ad52e95a61f3913d43ea436aa9402804df
* | Merge "use Dict[], not dict[] in mypy test" into mainFederico Caselli2023-02-081-1/+2
|\ \ | |/ |/|
| * use Dict[], not dict[] in mypy testMike Bayer2023-02-071-1/+2
| | | | | | | | | | Fixes: #9253 Change-Id: I8a96fd165c5306566ab02aab25b30558530c9751
* | improve github test workflowsFederico Caselli2023-02-072-144/+34
|/ | | | Change-Id: Id0c8eb9c574c44365f6b8bca93b562dea5c8f9eb
* make this link optionalMike Bayer2023-02-071-2/+2
| | | | | | it's too much to require it Change-Id: I567ba7423a37924666aa821521fad7fe3764e506
* more editsMike Bayer2023-02-071-4/+4
| | | | | | looking good Change-Id: Ifa9a900ced376a75d43e5720567324fa0b3a6336
* issue template editsMike Bayer2023-02-071-30/+30
| | | | Change-Id: I8a19db15ac839968bc6f46bbc36dc16b757426ab
* another template editMike Bayer2023-02-071-5/+27
| | | | Change-Id: I611eefbb166ab10d05011f39df2b4531a1f59968
* issue template updatesMike Bayer2023-02-071-23/+42
| | | | | | forgive me, I'm just live editing, will test immediately Change-Id: I404edac799222aea615886c5e821d7433b8f2e7a
* Version 2.0.3 placeholderMike Bayer2023-02-062-1/+5
|
* - 2.0.2rel_2_0_2Mike Bayer2023-02-0614-217/+229
|
* Merge "do not return asyncio connections to the pool under gc" into mainmike bayer2023-02-065-122/+289
|\
| * do not return asyncio connections to the pool under gcMike Bayer2023-02-065-122/+289
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Repaired a regression caused by the fix for :ticket:`8419` which caused asyncpg connections to be reset (i.e. transaction ``rollback()`` called) and returned to the pool normally in the case that the connection were not explicitly returned to the connection pool and was instead being intercepted by Python garbage collection, which would fail if the garbage collection operation were being called outside of the asyncio event loop, leading to a large amount of stack trace activity dumped into logging and standard output. The correct behavior is restored, which is that all asyncio connections that are garbage collected due to not being explicitly returned to the connection pool are detached from the pool and discarded, along with a warning, rather than being returned the pool, as they cannot be reliably reset. In the case of asyncpg connections, the asyncpg-specific ``terminate()`` method will be used to end the connection more gracefully within this process as opposed to just dropping it. This change includes a small behavioral change that is hoped to be useful for debugging asyncio applications, where the warning that's emitted in the case of asyncio connections being unexpectedly garbage collected has been made slightly more aggressive by moving it outside of a ``try/except`` block and into a ``finally:`` block, where it will emit unconditionally regardless of whether the detach/termination operation succeeded or not. It will also have the effect that applications or test suites which promote Python warnings to exceptions will see this as a full exception raise, whereas previously it was not possible for this warning to actually propagate as an exception. Applications and test suites which need to tolerate this warning in the interim should adjust the Python warnings filter to allow these warnings to not raise. The behavior for traditional sync connections remains unchanged, that garbage collected connections continue to be returned to the pool normally without emitting a warning. This will likely be changed in a future major release to at least emit a similar warning as is emitted for asyncio drivers, as it is a usage error for pooled connections to be intercepted by garbage collection without being properly returned to the pool. Fixes: #9237 Change-Id: Ib35cfb2e628f2eb2da6d2b65674702556f55603a
* | Merge "add error code 1049 for mysql has_table" into mainFederico Caselli2023-02-064-1/+48
|\ \
| * | add error code 1049 for mysql has_tableMike Bayer2023-02-064-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed regression caused by issue :ticket:`9058` which adjusted the MySQL dialect's ``has_table()`` to again use "DESCRIBE", where the specific error code raised by MySQL version 8 when using a non-existent schema name was unexpected and failed to be interpreted as a boolean result. Fixed the SQLite dialect's ``has_table()`` function to correctly report False for queries that include a non-None schema name for a schema that doesn't exist; previously, a database error was raised. Fixes: #9251 Change-Id: I5ef9cf0887865c3c521d88bca0ba18954a108241
* | | changelog fixupMike Bayer2023-02-065-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | re-classify the large amount of recent issues involving declarative under "orm declarative" and reword one of the issue notes. Change-Id: Id3a861b235573bf048a9ee4d38faeaade8a9dbdd
* | | Merge "Dedicated bitwise operators" into mainmike bayer2023-02-0613-0/+340
|\ \ \
| * | | Dedicated bitwise operatorsjazzthief2023-02-0613-0/+340
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a full suite of new SQL bitwise operators, for performing database-side bitwise expressions on appropriate data values such as integers, bit-strings, and similar. Pull request courtesy Yegor Statkevich. Fixes: #8780 Closes: #9204 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/9204 Pull-request-sha: a4541772a6a784f9161ad78ef84d2ea7a62fa8de Change-Id: I4c70e80f9548dcc1b4e3dccd71bd59d51d3ed46e
* | | | Merge "use mysql 8 syntax for ON DUPLICATE KEY UPDATE" into mainmike bayer2023-02-063-17/+124
|\ \ \ \ | |_|/ / |/| | |
| * | | use mysql 8 syntax for ON DUPLICATE KEY UPDATECaspar Wylie2023-02-063-17/+124
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added support for MySQL 8's new ``AS <name> ON DUPLICATE KEY`` syntax when using :meth:`_mysql.Insert.on_duplicate_key_update`, which is required for newer versions of MySQL 8 as the previous syntax using ``VALUES()`` now emits a deprecation warning with those versions. Server version detection is employed to determine if traditional MariaDB / MySQL < 8 ``VALUES()`` syntax should be used, vs. the newer MySQL 8 required syntax. Pull request courtesy Caspar Wylie. Fixes: #8626 Closes: #9210 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/9210 Pull-request-sha: 1c8dfbf0b4c439d9ca2c194524c47eb7239ee3c5 Change-Id: I42c463837af06bc15b60c534159804193df07f02
* | | Merge "port history meta to 2.0" into mainmike bayer2023-02-0614-152/+495
|\ \ \
| * | | port history meta to 2.0Mike Bayer2023-02-0614-152/+495
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | first change: Reworked the :ref:`examples_versioned_history` to work with version 2.0, while at the same time improving the overall working of this example to use newer APIs, including a newly added hook :meth:`_orm.MapperEvents.after_mapper_constructed`. second change: Added new event hook :meth:`_orm.MapperEvents.after_mapper_constructed`, which supplies an event hook to take place right as the :class:`_orm.Mapper` object has been fully constructed, but before the :meth:`_orm.registry.configure` call has been called. This allows code that can create additional mappings and table structures based on the initial configuration of a :class:`_orm.Mapper`, which also integrates within Declarative configuration. Previously, when using Declarative, where the :class:`_orm.Mapper` object is created within the class creation process, there was no documented means of running code at this point. The change is to immediately benefit custom mapping schemes such as that of the :ref:`examples_versioned_history` example, which generate additional mappers and tables in response to the creation of mapped classes. third change: The infrequently used :attr:`_orm.Mapper.iterate_properties` attribute and :meth:`_orm.Mapper.get_property` method, which are primarily used internally, no longer implicitly invoke the :meth:`_orm.registry.configure` process. Public access to these methods is extremely rare and the only benefit to having :meth:`_orm.registry.configure` would have been allowing "backref" properties be present in these collections. In order to support the new :meth:`_orm.MapperEvents.after_mapper_constructed` event, iteration and access to the internal :class:`_orm.MapperProperty` objects is now possible without triggering an implicit configure of the mapper itself. The more-public facing route to iteration of all mapper attributes, the :attr:`_orm.Mapper.attrs` collection and similar, will still implicitly invoke the :meth:`_orm.registry.configure` step thus making backref attributes available. In all cases, the :meth:`_orm.registry.configure` is always available to be called directly. fourth change: Fixed obscure ORM inheritance issue caused by :ticket:`8705` where some scenarios of inheriting mappers that indicated groups of columns from the local table and the inheriting table together under a :func:`_orm.column_property` would nonetheless warn that properties of the same name were being combined implicitly. Fixes: #9220 Fixes: #9232 Change-Id: Id335b8e8071c8ea509c057c389df9dcd2059437d
* | | Merge "check for superclasses of user defined init" into mainmike bayer2023-02-063-3/+35
|\ \ \
| * | | check for superclasses of user defined initMike Bayer2023-02-063-3/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed regression caused by the fix for :ticket:`9171`, which itself was fixing a regression, involving the mechanics of ``__init__()`` on classes that extend from :class:`_orm.DeclarativeBase`. The change made it such that ``__init__()`` was applied to the user-defined base if there were no ``__init__()`` method directly on the class. This has been adjusted so that ``__init__()`` is applied only if no other class in the hierarchy of the user-defined base has an ``__init__()`` method. This again allows user-defined base classes based on :class:`_orm.DeclarativeBase` to include mixins that themselves include a custom ``__init__()`` method. Fixes: #9249 Change-Id: I78f32590ce9ffe245eccb4bd5bd7c884d4e015d5
* | | | Merge "use tox extras" into mainmike bayer2023-02-061-21/+22
|\ \ \ \ | |/ / / |/| | |
| * | | use tox extrasMike Bayer2023-02-031-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | per tox devs [1] it's better we use "extras" explcitly rather than putting our extras in deps [1] https://github.com/tox-dev/tox/issues/2898#issuecomment-1407921041 Change-Id: Ib57bc1277a462b270e243b1bb4cdb55a80449256
* | | | Merge "coerce elements in mapper.primary_key, process in __mapper_args__" ↵mike bayer2023-02-054-5/+324
|\ \ \ \ | | | | | | | | | | | | | | | into main
| * | | | coerce elements in mapper.primary_key, process in __mapper_args__Mike Bayer2023-02-054-6/+325
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Repaired ORM Declarative mappings to allow for the :paramref:`_orm.Mapper.primary_key` parameter to be specified within ``__mapper_args__`` when using :func:`_orm.mapped_column`. Despite this usage being directly in the 2.0 documentation, the :class:`_orm.Mapper` was not accepting the :func:`_orm.mapped_column` construct in this context. Ths feature was already working for the :paramref:`_orm.Mapper.version_id_col` and :paramref:`_orm.Mapper.polymorphic_on` parameters. As part of this change, the ``__mapper_args__`` attribute may be specified without using :func:`_orm.declared_attr` on a non-mapped mixin class, including a ``"primary_key"`` entry that refers to :class:`_schema.Column` or :func:`_orm.mapped_column` objects locally present on the mixin; Declarative will also translate these columns into the correct ones for a particular mapped class. This again was working already for the :paramref:`_orm.Mapper.version_id_col` and :paramref:`_orm.Mapper.polymorphic_on` parameters. Additionally, elements within ``"primary_key"`` may be indicated as string names of existing mapped properties. Fixes: #9240 Change-Id: Ie2000273289fa23e0af21ef9c6feb3962a8b848c
* | | | | update asyncio examples and add notes about writeonlyMike Bayer2023-02-053-54/+167
| | | | | | | | | | | | | | | | | | | | Change-Id: I1233eb1a860b915fb265ec8bf177f1a0471cdbd1
* | | | | Merge "Guard against wrong dataclass mapping" into mainFederico Caselli2023-02-053-0/+38
|\ \ \ \ \