[orm] [performance] [bug] [regression] Adjusted the fix made in #10570, released in 2.0.23, where new
logic was added to reconcile possibly changing bound parameter values
across cache key generations used within the _orm.with_expression()
construct. The new logic changes the approach by which the new bound
parameter values are associated with the statement, avoiding the need to
deep-copy the statement which can result in a significant performance
penalty for very deep / complex SQL constructs. The new approach no longer
requires this deep-copy step.
[orm] [bug] [regression] Fixed regression caused by #9779 where using the "secondary" table
in a relationship and_() expression would fail to be aliased to match
how the "secondary" table normally renders within a
_sql.Select.join() expression, leading to an invalid query.
[engine] [usecase] Added new core execution option
_engine.Connection.execution_options.preserve_rowcount. When
set, the cursor.rowcount attribute from the DBAPI cursor will be
unconditionally memoized at statement execution time, so that whatever
value the DBAPI offers for any kind of statement will be available using
the _engine.CursorResult.rowcount attribute from the
_engine.CursorResult. This allows the rowcount to be accessed for
statments such as INSERT and SELECT, to the degree supported by the DBAPI
in use. The engine_insertmanyvalues also supports this option and
will ensure _engine.CursorResult.rowcount is correctly set for a
bulk INSERT of rows when set.
[asyncio] [bug] An error is raised if a QueuePool or other non-asyncio pool class
is passed to _asyncio.create_async_engine(). This engine only
accepts asyncio-compatible pool classes including
AsyncAdaptedQueuePool. Other pool classes such as
NullPool are compatible with both synchronous and asynchronous
Fixed a bug where comments where mistakenly removed along with redundant parentheses
(#4218)
Preview style
Move the hug_parens_with_braces_and_square_brackets feature to the unstable style
due to an outstanding crash and proposed formatting tweaks (#4198)
Fixed a bug where base expressions caused inconsistent formatting of ** in tenary
expression (#4154)
Checking for newline before adding one on docstring that is almost at the line limit
(#4185)
Remove redundant parentheses in case statement if guards (#4214).
Configuration
Fix issue where Black would ignore input files in the presence of symlinks (#4222)
Black now ignores pyproject.toml that is missing a tool.black section when
discovering project root and configuration. Since Black continues to use version
control as an indicator of project root, this is expected to primarily change behavior
for users in a monorepo setup (desirably). If you wish to preserve previous behavior,
simply add an empty [tool.black] to the previously discovered pyproject.toml
(#4204)
Output
Black will swallow any SyntaxWarnings or DeprecationWarnings produced by the ast
module when performing equivalence checks (#4189)
Integrations
Add a JSONSchema and provide a validate-pyproject entry-point (#4181)
24.1.1
Bugfix release to fix a bug that made Black unusable on certain file systems
with strict limits on path length.
Preview style
Consistently add trailing comma on typed parameters (#4164)
Configuration
Shorten the length of the name of the cache file to fix crashes on file systems that
do not support long paths (#4176)
Fixed a bug where comments where mistakenly removed along with redundant parentheses
(#4218)
Preview style
Move the hug_parens_with_braces_and_square_brackets feature to the unstable style
due to an outstanding crash and proposed formatting tweaks (#4198)
Fixed a bug where base expressions caused inconsistent formatting of ** in tenary
expression (#4154)
Checking for newline before adding one on docstring that is almost at the line limit
(#4185)
Remove redundant parentheses in case statement if guards (#4214).
Configuration
Fix issue where Black would ignore input files in the presence of symlinks (#4222)
Black now ignores pyproject.toml that is missing a tool.black section when
discovering project root and configuration. Since Black continues to use version
control as an indicator of project root, this is expected to primarily change behavior
for users in a monorepo setup (desirably). If you wish to preserve previous behavior,
simply add an empty [tool.black] to the previously discovered pyproject.toml
(#4204)
Output
Black will swallow any SyntaxWarnings or DeprecationWarnings produced by the ast
module when performing equivalence checks (#4189)
Integrations
Add a JSONSchema and provide a validate-pyproject entry-point (#4181)
24.1.1
Bugfix release to fix a bug that made Black unusable on certain file systems with strict
limits on path length.
Preview style
Consistently add trailing comma on typed parameters (#4164)
Configuration
Shorten the length of the name of the cache file to fix crashes on file systems that
do not support long paths (#4176)
We’ve just uploaded mypy 1.9 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:
python3 -m pip install -U mypy
You can read the full documentation for this release on Read the Docs.
Breaking Changes
Because the version of typeshed we use in mypy 1.9 doesn't support 3.7, neither does mypy 1.9. (Jared Hance, PR 16883)
We are planning to enable
local partial types (enabled via the
--local-partial-types flag) later this year by default. This change
was announced years ago, but now it's finally happening. This is a
major backward-incompatible change, so we'll probably include it as
part of the upcoming mypy 2.0 release. This makes daemon and
non-daemon mypy runs have the same behavior by default.
Local partial types can also be enabled in the mypy config file:
local_partial_types = True
We are looking at providing a tool to make it easier to migrate
projects to use --local-partial-types, but it's not yet clear whether
this is practical. The migration usually involves adding some
explicit type annotations to module-level and class-level variables.
Basic Support for Type Parameter Defaults (PEP 696)
This release contains new experimental support for type parameter
defaults (PEP 696). Please try it
out! This feature was contributed by Marc Mueller.
Since this feature will be officially introduced in the next Python
feature release (3.13), you will need to import TypeVar, ParamSpec
or TypeVarTuple from typing_extensions to use defaults for now.
This example adapted from the PEP defines a default for BotT:
from typing import Generic
from typing_extensions import TypeVar
* Do specifier matching correctly when the specifier contains an epoch number
and has more components than the version (:issue:`683`)
* Support the experimental ``--disable-gil`` builds in packaging.tags
(:issue:`727`)
* BREAKING: Make optional ``metadata.Metadata`` attributes default to ``None`` (:issue:`733`)
* Fix errors when trying to access the ``description_content_type``, ``keywords``,
and ``requires_python`` attributes on ``metadata.Metadata`` when those values
have not been provided (:issue:`733`)
* Fix a bug preventing the use of the built in ``ExceptionGroup`` on versions of
Python that support it (:issue:`725`)
- Fix bug that now means the number of parameters cam be as high as an unsigned 16 bit
integer will go.
Version 1.30.4, 2024-01-03
Add support for more range and multirange types.
Make the Connection.parameter_statuses property a dict rather than a dequeue.
Version 1.30.3, 2023-10-31
- Fix problem with PG date overflowing Python types. Now we return the ``str`` we got from the
server if we can't parse it.
Version 1.30.2, 2023-09-17
Bug fix where dollar-quoted string constants weren't supported.
Version 1.30.1, 2023-07-29
- There was a problem uploading the previous version (1.30.0) to PyPI because the
markup of the README.rst was invalid. There's now a step in the automated tests to
check for this.
Version 1.30.0, 2023-07-27
Remove support for Python 3.7
Add a sock keyword parameter for creating a connection from a pre-configured
socket.
This release is not a usual bug fix release -- it contains features and improvements, being a follow up
to 8.1.0, which has been yanked from PyPI.
:::
Features
#11475: Added the new consider_namespace_packages{.interpreted-text role="confval"} configuration option, defaulting to False.
If set to True, pytest will attempt to identify modules that are part of namespace packages when importing modules.
#11653: Added the new verbosity_test_cases{.interpreted-text role="confval"} configuration option for fine-grained control of test execution verbosity.
See Fine-grained verbosity <pytest.fine_grained_verbosity>{.interpreted-text role="ref"} for more details.
Improvements
#10865: pytest.warns{.interpreted-text role="func"} now validates that warnings.warn{.interpreted-text role="func"} was called with a [str]{.title-ref} or a [Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this causes an exception when warnings.filterwarnings{.interpreted-text role="func"} is used to filter those warnings (see [CPython #103577](python/cpython#103577) for a discussion).
While this can be considered a bug in CPython, we decided to put guards in pytest as the error message produced without this check in place is confusing.
#11311: When using --override-ini for paths in invocations without a configuration file defined, the current working directory is used
as the relative directory.
Previoulsy this would raise an AssertionError{.interpreted-text role="class"}.
#11475: --import-mode=importlib <import-mode-importlib>{.interpreted-text role="ref"} now tries to import modules using the standard import mechanism (but still without changing :pysys.path{.interpreted-text role="data"}), falling back to importing modules directly only if that fails.
This means that installed packages will be imported under their canonical name if possible first, for example app.core.models, instead of having the module name always be derived from their path (for example .env310.lib.site_packages.app.core.models).
#11801: Added the iter_parents() <_pytest.nodes.Node.iter_parents>{.interpreted-text role="func"} helper method on nodes.
It is similar to listchain <_pytest.nodes.Node.listchain>{.interpreted-text role="func"}, but goes from bottom to top, and returns an iterator, not a list.
#11850: Added support for sys.last_exc{.interpreted-text role="data"} for post-mortem debugging on Python>=3.12.
#11962: In case no other suitable candidates for configuration file are found, a pyproject.toml (even without a [tool.pytest.ini_options] table) will be considered as the configuration file and define the rootdir.
#11978: Add --log-file-mode option to the logging plugin, enabling appending to log-files. This option accepts either "w" or "a" and defaults to "w".
Previously, the mode was hard-coded to be "w" which truncates the file before logging.
Fix typing errors with recent versions of mypy #769
Prevent DeprecationWarning about internal use of asyncio.get_event_loop() from affecting test cases #757
Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see #706). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
Fix typing errors with recent versions of mypy #769
Prevent DeprecationWarning about internal use of asyncio.get_event_loop() from affecting test cases #757
Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see #706). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
Fix typing errors with recent versions of mypy #769
Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see #706). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
pytest-asyncio 0.23.4
0.23.4 (2024-01-28)
pytest-asyncio no longer imports additional, unrelated packages during test collection #729
Addresses further issues that caused an internal pytest error during test collection
pytest-asyncio no longer imports additional, unrelated packages during test collection #729
Addresses further issues that caused an internal pytest error during test collection
Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see #706). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
pytest-asyncio 0.23.4a1
0.23.4 (UNRELEASED)
pytest-asyncio no longer imports additional, unrelated packages during test collection #729
Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see #706). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
pytest-asyncio 0.23.4a0
... (truncated)
Commits
b22d84e [docs] Fixes the example showing how to run all tests in a session-scoped loop.
f1de446 Build(deps): Bump hypothesis in /dependencies/default
b60649a Build(deps): Bump urllib3 from 2.2.0 to 2.2.1 in /dependencies/docs
4baec47 Build(deps): Bump typing-extensions in /dependencies/default
d44e3ac Build(deps): Bump pytest from 8.0.0 to 8.0.2 in /dependencies/default
cefa62e Build(deps): Bump coverage from 7.4.1 to 7.4.3 in /dependencies/default
2908860 Build(deps): Bump hypothesis in /dependencies/default
20bd7d8 Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12
3aef605 [build] Update actions/upload-artifact and actions/download-artifact to v4.
4b1908d [fix] Prevent DeprecationWarning from bubbling to user code.
Bumps the all-dependencies group with 11 updates:
2.0.23
2.0.28
2.0.1701229837
2.0.1708907391
23.12.1
24.2.0
7.0.1
7.0.2
1.8.0
1.9.0
2023.4.22
2024.3.2
23.2
24.0
1.30.3
1.30.5
7.4.3
8.1.1
0.23.2
0.23.5.post1
3.0.0
3.1.1
Updates
sqlalchemy
from 2.0.23 to 2.0.28Release notes
Sourced from sqlalchemy's releases.
... (truncated)
Commits
Updates
sqlakeyset
from 2.0.1701229837 to 2.0.1708907391Commits
Updates
black
from 23.12.1 to 24.2.0Release notes
Sourced from black's releases.
... (truncated)
Changelog
Sourced from black's changelog.
... (truncated)
Commits
6fdf8a4
Prepare release 24.2.0 (#4226)8af4394
fix: Don't remove comments along with parens (#4218)35e9776
Bump pre-commit/action from 3.0.0 to 3.0.1 (#4225)23dfc5b
Fix ignoring input files for symlink reasons (#4222)a201003
Simplify check for symlinks that resolve outside root (#4221)dab37a6
Remove redundant parentheses incase
statementif
guards (#4214)32230e6
fix: bug where the doublestar operation had inconsistent formatting. (#4154)7edb50f
fix: additional newline added to docstring when the previous line length is l...3e80de3
Bump furo from 2023.9.10 to 2024.1.29 in /docs (#4211)a08b480
Bump pypa/cibuildwheel from 2.16.4 to 2.16.5 (#4212)Updates
importlib-metadata
from 7.0.1 to 7.0.2Changelog
Sourced from importlib-metadata's changelog.
Commits
913352a
Finalize26b22b8
Merge pull request #483 from Danyal-Faheem/add-types-for-untyped-methods9d4908e
🧎‍♀️ Genuflect to the types.fd3a0ab
Re-order imports for consistency.0ae1d24
Merge https://github.com/jaraco/skeleton55a55ea
Fix docs error due to duplicate explicit target name.79521e1
Moved example sources to the tests/data directory, avoiding build issues.9f2d682
đź‘ą Feed the hobgoblins (delint).b434f69
Use 'extend-select' to avoid disabling the default config. Ref jaraco/skeleto...d1c5444
Enable complexity check and pycodestyle warnings. Closes jaraco/skeleton#110.Updates
mypy
from 1.8.0 to 1.9.0Changelog
Sourced from mypy's changelog.
... (truncated)
Commits
5ff46f8
Remove +dev.155909a
[Release 1.9] Unsupport targetting 3.7. (#16883) (#16900)6615cab
[Release 1.9] Stubtest: ignore a new protocol dunder (#16895) (#16899)b956e6a
stubtest: Private parameters can be omitted (#16507)ede0b20
Bump ruff to 0.2.0 (#16870)7bdd61f
stubgen: Fix crash on star unpack of TypeVarTuple (#16869)8c2ef9d
Update hashes in sync-typeshed.py following recent typeshed sync0dd4b6f
Revert use ofParamSpec
forfunctools.wraps
dd12a2d
Revert typeshed ctypes changed132999
Revert sum literal integer change (#13961)Updates
nox
from 2023.4.22 to 2024.3.2Release notes
Sourced from nox's releases.
... (truncated)
Changelog
Sourced from nox's changelog.
... (truncated)
Commits
4c8e891
Release 2024.03.02 (#789)d862350
feat: venv backend fallback (#787)1c6af24
fix: warn user when first argument to session.run is a list (#786)d59e1ac
fix: rebuild env if making an incompatible change (#781)ff259ce
chore(deps): bump the actions group with 2 updates (#784)93bacbd
Allow configuringdefault_venv_backend
with an environment variable (#780)5a097cd
feat: support for reuse_venv option (#730)55e09cd
fix: always pull versions from metadata (#782)c248a76
chore: cleanup Ruff a bit (#783)1fe4437
feat: add a uv backend (#762)Updates
packaging
from 23.2 to 24.0Release notes
Sourced from packaging's releases.
Changelog
Sourced from packaging's changelog.
Commits
7a983f7
Bump for release4d85340
Add riscv64 as a supported manylinux architecture (#751)4dce761
Apply some ruff suggestions (#772)57a6a7f
Appply some bugbear suggestions (#761)7bcd6d8
Apply some refurb suggestions (#763)d0067e9
[StepSecurity] ci: Harden GitHub Actions (#1) (#758)eae70dd
feat: Create dependabot.yml (#757)241bb35
Update URLs (#764)7698237
Remove coverage ignore for non-existent file (#752)b271d2b
Replace PEP references with PUG links (#750)Updates
pg8000
from 1.30.3 to 1.30.5Changelog
Sourced from pg8000's changelog.
... (truncated)
Commits
bf16ea5
Prepare for new release4ef917e
Use unsigned 16 bit integer in protocol7d0cdde
Move sections from readme to a separate pagef6f416c
Prepare for new release8adb556
Add support for more range and multirange types796cd01
Make Connection.parameter_statuses a dicta93944e
Fix doctest for PostgreSQL 15+433e01f
Fix doctest problem with IDENTIFY_SYSTEM commanda2dc1e8
Fix copy tests for PostgreSQL 16c662f40
PostgreSQL versions: add 16, drop 11Updates
pytest
from 7.4.3 to 8.1.1Release notes
Sourced from pytest's releases.
... (truncated)
Commits
81653ee
Adjust changelog manually for 8.1.1e60b4b9
Prepare release version 8.1.115fbe57
[8.1.x] Revert legacy path removals (#12093)86c3aab
[8.1.x] Do not import duplicated modules with --importmode=importlib (#12077)5b82b0c
[8.1.x] Yank version 8.1.0 (#12076)0a53681
Merge pull request #12054 from pytest-dev/release-8.1.0b9a167f
Prepare release version 8.1.000043f7
Merge pull request #12038 from bluetech/fixtures-rm-arg2indexf4e1025
Merge pull request #12048 from bluetech/fixture-teardown-excgroup43492f5
Merge pull request #12051 from jakkdl/test_debugging_pythonbreakpointUpdates
pytest-asyncio
from 0.23.2 to 0.23.5.post1Release notes
Sourced from pytest-asyncio's releases.
... (truncated)
Commits
b22d84e
[docs] Fixes the example showing how to run all tests in a session-scoped loop.f1de446
Build(deps): Bump hypothesis in /dependencies/defaultb60649a
Build(deps): Bump urllib3 from 2.2.0 to 2.2.1 in /dependencies/docs4baec47
Build(deps): Bump typing-extensions in /dependencies/defaultd44e3ac
Build(deps): Bump pytest from 8.0.0 to 8.0.2 in /dependencies/defaultcefa62e
Build(deps): Bump coverage from 7.4.1 to 7.4.3 in /dependencies/default2908860
Build(deps): Bump hypothesis in /dependencies/default20bd7d8
Build(deps): Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.123aef605
[build] Update actions/upload-artifact and actions/download-artifact to v4.4b1908d
[fix] Prevent DeprecationWarning from bubbling to user code.Updates
pytest-mypy-plugins
from 3.0.0 to 3.1.1Release notes
Sourced from
codecov-commenter
commented
8 months ago
Codecov Report
Additional details and impacted files
```diff @@ Coverage Diff @@ ## main #136 +/- ## ======================================= Coverage 84.28% 84.28% ======================================= Files 15 15 Lines 1559 1559 Branches 256 256 ======================================= Hits 1314 1314 Misses 192 192 Partials 53 53 ```CodSpeed Performance Report
Merging #136 will not alter performance
Comparing
dependabot/pip/all-dependencies-746111a9ff
(5ace0e9) withmain
(ba0dceb)Summary
âś… 1
untouched benchmarksSuperseded by #138.