Upgrade to release 3.18.3:
- Restore order_by_precedence from 3.18.1 to fix broken return
value
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 45.1.0:
- When parsing DBC, make sure there are no unused VAL_ and
SIG_VALTYPE_ entries
- sym: write a leading 0 for multiplexer ids that start with A-F
- message: index signals by multiplexer when creating codecs
- message: copy message bits with list() in the overlap check
- plot: read candump -l lines annotated by cantools decode
- DBC: don't fail the load when VFrameFormat has no default
- try to fix the pypy test
- database: do not refresh messages twice when loading a database
- plot: accept decoded choice names from cantools decode
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 7.2.4:
- Restore autospec calls to @cachedmethod decorated methods.
- Improve branch coverage of unit tests.
- Minor type stub improvements.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 8.7:
Breaking changes:
- Jinja2 environment for HTML report is now created with
undefined=StrictUndefined to raise an error if a variable is not
defined in the template.
- Links to lines in HTML reports now use L<line> instead of a
l<line>.
- Rename config key txt-metric (string) to txt-metrics (list of
strings in TOML and multiple entries in gcovr.config). Remove the
deprecated aliases -b, --txt-branches and --branches.
- Adjust column width of total count in text reports.
New features and notable changes:
- Improve HTML report:
- Improve wrapping of the counter in the default theme.
- Replace meter with div elements in the default theme (like in
GitHub themes).
- Add jinja2 rendering for CSS files.
- Add new HTML themes boost.green and boost.blue.
- Show excluded lines, branches, ... in the summary only if there
are any.
- Remove the branches summary and columns if there are no
branches in the report, e.g all branches are excluded by
patterns or comments.
- Replace default theme with github theme which is the new
default one. If the prefix github. isn't used a warning is
printed which will turn into an error in a the next version.
- Add compare mode for JSON, text and HTML reports.
- Stub missing line coverage for branches in LLVM source based code
coverage format.
- Add support for TOML files with --config
- Add --fail-under-condition-or-decision with
--fail-under-condition and --fail-under-decision as synonyms,
change the key for the configuration file.
- Add support for multiple metrics in one text report and add
support for condition coverage.
- Warn if a option is used which has no effect when processing
tracefiles.
- Add options to restrict where GCOV is executed to prevent
generating temporary files in arbitrary directories. Write
protected files are now skipped by default.
Bug fixes and small improvements:
- Fix runtime problem introduced with 8.4.
- Fix boost HTML details and simple output.
- Fix boost HTML support for Conditions, Decisions and Calls
optional stats.
- Add excluded metrics to boost HTML template.
- Fix alignment in summary header of HTML single page report.
- Fix link to lines in HTML single page report.
- Preserve coverage for procedures declared in Fortran modules.
- Fix missing branches and conditions for uncovered lines in HTML
report.
- Fix KeyError when merging tracefiles in which only some report a
function position.
Documentation:
- Add section about gcov options which should not be used to FAQ.
- Add separate option groups for each format.
Internal changes:
- Add CSS and JS files to all folders where a HTML reference file
is present.
- Refactor internal data model from a flat list to a tree which
matches the folder structure of the source files. Also add a
properties element which is cleared after each report format to
store meta data for the report generation and update the dicts in
the HTML report to use it.
- Activate sorting of includes for ruff.
- Add gcc-16, clang-21 and clang-22 to the test suite.
- Use different python versions for testing in docker depending on
Ubuntu version.
- Activate most checks of ruff.
- Update CI runner images.
- Always use GCOVR fixture in tests.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Switch SRC_URI to enable tests and upgrade to release 2026.9.0:
- ia:// filesystem for files in Internet Archive items: an
HTTPFileSystem reading from archive.org/download with credentials
from ia configure's ia.ini
- Allow instance-local memory stores with global_store=False while
preserving normal instance caching and the default shared store
- Add an adaptive readahead cache
- Implement created and modified for SFTPFileSystem
- Allow filesystem implementations to assign protocol per instance
- Delegate sizes and cat_ranges from DirFileSystem to the wrapped
filesystem
- Delegate invalidate_cache, ukey and checksum from DirFileSystem
to the wrapped filesystem
- Support negative offsets in TarFileSystem.cat_file
- Mirror readinto from the PyArrow stream onto ArrowFile
- Allow simplecache files to be removed by age using their
modification times
- HTTP: retry transient failures (408/425/429/5xx, dropped
connections, timeouts, truncated range bodies, a 416 inside the
file) of cat_file, HTTPFile block reads and the size lookup
behind open, controlled by the new retries, retry_wait,
retry_statuses and retry_exceptions options
Fixes:
- Compute HadoopFileSystem.fsid from its configured host and port
instead of accessing attributes no longer exposed by PyArrow
- Normalize dot path components in TarFileSystem listings and
lookups, while preserving original archive names for reading
- Make merge_offset_ranges O(n log n) and keep merged blocks within
max_block, replacing the quadratic nested-range filter
- Fix transactions with compressed files
- Make MemoryFileSystem.rm raise FileNotFoundError for a path that
does not exist, as rm_file and the other filesystems do, so
deleting a missing key from a memory-backed mapper raises
KeyError
- Create missing ZIP archives in append mode without truncating
existing archives
- Close cached readers when exiting an open_files context
- Avoid mutating live BlockCache and BackgroundBlockCache instances
when pickling
- End the transaction even when a commit or discard raises, so the
filesystem is not left in transaction mode and deferred temporary
files are cleaned up
- Honor a caller-owned output file in get_file
- Preserve existing files when checking FSMap write access
- Normalize ZIP paths in pipe_file and find
- Reject get destinations that resolve above the target
- Pass maxdepth through in AsyncFileSystem._rm
- Do not let isfile swallow BaseException
- Keep reference filesystem get destinations inside the target
- Return relative names from DirFileSystem.glob and find
- Raise FileNotFoundError for missing ZIP and TAR members
- Stop collapsing three-character drive-relative paths to the drive
root
- Use / as the only glob separator on every platform
- Distinguish omitted and None defaults in FSMap.pop
- Forward an Arrow file's flush and closed state to its stream
- Keep reference filesystem cat_file offsets inside the referenced
part
- Raise FileNotFoundError from archive ls for a missing path
- Download uncached files in simplecache.cat_ranges
- Fix tail on simplecache and filecache
- Get whole-file reference sizes asynchronously in
ReferenceFileSystem._info
- Report the target size for links in TarFileSystem
- Keep the async generator returned by AsyncFileSystemWrapper._walk
- Join the default output filename with / in _expand_paths
- Make names relative in DirFileSystem.walk(detail=True)
- Ignore a leading slash in TarFileSystem paths
- Fix cat_ranges on whole-file caches
- Normalize paths in AsyncFileSystemWrapper like the wrapped
filesystem
- The SFTP host key policy is configurable with the new
host_key_policy argument of SFTPFileSystem, which accepts
"auto_add" (default, unchanged behaviour), "warning" or "reject",
or any paramiko.MissingHostKeyPolicy
Other:
- Use trusted publishing for releases and trigger the release
workflow on tags
- Remove the stale async wrapper documentation warning
- Add Zarr to the test_downstream extra so the Xarray/Zarr test
runs again
- Clarify that rm handles directories
- Fix grammar in features.rst
- Patch HAS_CPYTHON_API where _fast_slice reads it in tests
- Percent-decode the username and password parsed from URLs in
infer_storage_options so that backends (ftp, sftp, smb, ...)
receive the real credentials rather than their URL-encoded form;
a password whose bare % produces bytes that are not valid UTF-8
(for example pass%ab) is left untouched so that pre-existing URLs
with unescaped % continue to work
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.2.4:
- Keep GitHub Release notes free of extra blank lines while
retaining the PyPI and version comparison links.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 40.43.0:
- Add es_CO bank provider
- Add es_CO internet provider
Extend RDEPENDS with the missing runtime dependency python3-stdnum.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for python-stdnum, a Python module to handle
standardized numbers and codes. The changelog for release 2.2
includes:
- Add modules for the following number formats:
VÖEN (Vergi ödəyicisinin eyniləşdirmə nömrəsi, Azerbaijan
tax number)
Belgian OGM-VCS
Leitweg-ID, a buyer reference or routing identifier for
electronic invoices
European Excise Number
n° d'accise (French number to identify taxpayers of excise
taxes)
RCS (French trade registration number for commercial companies)
NUIT (Número Único de Identificação Tributaria, Mozambique tax
number)
NINEA (Numéro d'Identification Nationale des Entreprises et
Associations, Senegal tax number)
- Fix handling of decimals in Application Identifiers
- Update list of valid Chinese counties
- Mark more Romanian CNP county codes as valid
- Support Latvian personal codes issued after 2017
- Provide aliases for Estonian numbers
- Add validation of country code in BIC
- Add function to convert a French VAT number into a SIREN
- Add a function to format a French SIREN
- Add extra validation of Belgian VAT numbers
- Add support for nace revision 2.1
- Support the new Romanian ONRC format
- Support new format for Brazilian CNPJ
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for zeep, a Python SOAP client. The changelog for
release 4.3.3 includes:
- Wire up the forbid_external setting (previously defined but unused
since the move off defusedxml in 4.0). When enabled it refuses to
transitively fetch http/https resources via xsd:import,
xsd:include, wsdl:import or lxml entity resolution, raising
zeep.exceptions.ExternalReferenceForbidden. The user-supplied
entry-point WSDL/schema URL is still loaded. The default remains
False to preserve existing behaviour; enable when loading WSDLs
from untrusted sources to mitigate SSRF via attacker-controlled
import targets.
- Internal tooling only: migrate dependency/build management to uv
and replace isort/flake8/black with ruff. No runtime changes.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add recipe for isodate, an ISO 8601 date/time/duration parser and
formatter. The changelog for release 0.7.2:
- Drop end of life python versions
- Don't match garbage characters at the end of parsed strings
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.4.4:
compat:
- Fixed a missing import.
markers:
- Enforce compatible-release bounds in environment markers.
metadata:
- Add an urls property to expose project and home URLs.
scripts:
- Raise the correct exception when a launcher can't be written.
- Detect shell-script Python executables in ScriptMaker shebangs.
util:
- Improve performance of export entry search to take linear time.
- Use tarfile.data_filter rather than tarfile.tar_filter in
unarchive() when extraction filters are available, matching the
Python 3.14 default. Path and link containment checks now use
os.path.realpath and no longer fail with IndexError for members
such as . or ./.
- unarchive() now resolves member paths through symlinks seen
earlier in the same archive, so a chain of individually
harmless-looking links cannot be used to write outside the
destination on Pythons without extraction filters.
version:
- Improve NormalizedVersion by addressing correctness and
performance gaps found by comparison with packaging.
- Improve SemanticVersion by comparing numeric prerelease
identifiers, including those longer than 8 digits.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.6.4:
- Clarify the executable paths accepted by try_first_with in the
standalone usage example.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for vermin to concurrently detect the minimum Python
versions needed to run code.
Release notes for version 1.9.2:
- Fix incorrect version requirement of __lazy_modules__
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.10.1:
- Fix packaging
From release 0.10.0:
- Support CSS Notes
Extend RDEPENDS with the missing runtime dependency
python3-webencodings.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.12.3:
- Fix unaligned buffer handling on sparc64
- Preserve bitarray subtypes in operation return type hints
- Fix Hashable detection on Windows
- Add workflow to build and test on SPARC64, RISC-V and NetBSD 11
(amd64) (all successful)
- Add documentation for [platform support](platforms.rst)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.3.0:
Overview:
This release primarily fixes a number of subtle bugs related to piping
cmd2 command output to shell commands. It also removes the experimental
tag from the @with_annotated decorator feature.
Details:
- Stabilized features
- @with_annotated is no longer experimental. It was introduced
as an experimental feature in 4.0.0 and is now a fully
supported way to define a command's arguments, alongside
@with_argparser. This covers the decorator and its supporting
API in cmd2.annotated, including Argument, Option, Group, and
ArgumentBlock. Annotated Argument Processing.
- Bug Fixes
- On POSIX, piping a command's output to an interactive program
such as less (help -v | less) now runs that program as the
terminal's foreground job, as a shell pipeline does. It had
run in a separate session that never received the terminal,
so Ctrl-Z and fg did not suspend and resume it together with
cmd2. The program now owns the terminal as it starts, so a
pager can set its terminal modes, and Ctrl-C and Ctrl-Z reach
the whole pipeline. Pipes started from a worker thread, or
whose output does not go to the terminal, such as one nested
in a command whose own output is piped, still run in their
own session
- A shell command piped to an interactive program, such as
shell git log | less, now joins the pipeline's job, so both
processes receive Ctrl-C and Ctrl-Z
- On Windows, fixed piped output appearing garbled in console
programs such as more (help -v | more), a regression in
4.2.4. Pipes are written as UTF-8, but console programs
decode their input with the console's code page. While a pipe
or the pager runs, cmd2 now sets the console to UTF-8 (code
page 65001, as chcp 65001 does) and restores its code pages
afterward, so console programs and UTF-8 tools such as rg
both read the output correctly
- When copying a command's output to the clipboard (help >)
fails, later commands' output is no longer written to the
temporary file that held it
- When a pipe's process cannot be started, for instance because
no more processes can be created or $SHELL names a program
that cannot run, both ends of the pipe are now closed rather
than left open
- When a pipe's process exits before the command runs, what it
wrote, such as the shell's "command not found", is no longer
lost when cmd2 captures the output, as in a pyscript
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.4.0:
- Supports Python 3.15, including the free-threaded CPython 3.15
build, with tests and wheels for Linux, macOS, and Windows.
- Publishes Windows ARM64 wheels, and builds Linux aarch64 wheels
on native arm64 runners instead of under QEMU emulation.
- Tests every supported Python version on arm64 Linux and Windows
in addition to x86-64.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 45.0.0:
- deprecate the diagnostic functionality
- lint: keep the linter green with ruff 0.17
- plot: read the candump lines that logreader reads
- kcd: declare senders and receivers that are not in the node list
- sym: write line breaks in comments as spaces
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.0.236:
- Use signed values for the AICS gain setting fields
- Fix record offsets when parsing a list of PAC records
- serial: add an option to resynchronize with the controller on open
- Reject public keys that are not on the curve in the builtin ECDH
- gatt: enforce value size and queue limits on server long writes
- usb: support Bluetooth controllers that are not interface 0 of a
composite device
- Disconnect LE credit-based channels on invalid SDU lengths
- smp: save pairing keys to keystore before draining connection
- Stop calling the deprecated Host.send_command_sync()
- Fix - remove BIG Sync handles on BigSync.terminate to prevent
resync failures
- ci: pin GitHub Actions to commit SHAs to resolve zizmor issues
- remove support for python 3.10 and add 3.15
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 26.10.1:
Highlights:
This release fixes a security issue in Black's bundled GitHub
Action. Repositories that use the action are encouraged to update
to the latest version of Black immediately. This update is received
automatically when using psf/black@stable, and is independent of
the version of Black installed by the action.
When the GitHub Action reads version specifiers from
tool.black.required-version, it now only accepts released versions
of Black, as it already did for black requirements in dependency
lists. Other values, such as URL references, are now rejected. This
issue has been registered as GHSA-cg8m-r9f2-5wm2; a CVE identifier
is pending.
Stable style:
- Fix a long Jupyter notebook assignment magic (for example x = !ls
-la) being wrapped in parentheses, which IPython can no longer
run; such cells are now left unchanged
- Keep repeated lines outside the selected --line-ranges unchanged
- Fix --line-ranges formatting lines that follow a statement when
formatting joins or re-indents that statement
- Fix --line-ranges crashing with an internal error when an
unselected statement has a # fmt: skip comment on the last line
before a closing bracket
- Prevent moving an encoding declaration (for example # -*- coding:
latin-1 -*-) onto the first two lines of a file
- Fix adding an extra trailing blank line inside a multi-line
module docstring when its last line is near the line length limit
Preview style:
- Do not split short expressions on delimiters (such as binary
operators, comparisons, or comprehensions) inside brackets when
preceded by a standalone comment
- Fix the unstable string_processing feature removing
backslash-newline sequences from raw strings, which changed their
value
- Avoid adding unnecessary parentheses around unbreakable
right-hand side expressions in assignments (such as annotated
assignments or subscript targets)
- Parenthesize expressions with parameter comments when they exceed
the line length under --preview
- Fix wrap_long_dict_values_in_parens dropping the parentheses
around a right-hand side that contains a dictionary, leaving a
line over the length limit
- Fix the unstable string_processing feature adding a space after *
or in a PEP 695 type parameter (* Ts = ...) when it splits a
string in the parameter's default
- Avoid unnecessary line splits of trailers (such as
indexing/subscripts) when an earlier bracket split exceeds the
line length only due to a trailing comment
Configuration:
- Add --cache-dir to configure the cache directory from the command
line
- Don't cache a file as formatted after formatting or checking it
with --line-ranges, which made a later full black --check pass
and black skip the unformatted lines
- Respect a .gitignore that starts with a UTF-8 byte order mark.
The mark became part of the first pattern, so that pattern never
matched and Black formatted files that git ignores
Performance:
- Avoid quadratic runtime when splitting very long lines with many
trailing bracket pairs (such as consecutive subscripts)
Integrations:
- Fix the GitHub Action crashing on dependency-group includes when
use_pyproject is enabled
- When the GitHub Action reads version specifiers from
tool.black.required-version, it now only accepts released
versions of Black, as it already did for black requirements in
dependency lists. Other values, such as URL references, are now
rejected.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 26.10.1:
General
- Load the vendored FlatBuffers runtime only when a FlatBuffers
message is first built or parsed, instead of on every import
autobahn. The runtime imports numpy whenever numpy is installed,
so up to 26.7.1 every process importing autobahn also loaded numpy,
including WebSocket-only users such as Django Channels applications
served by Daphne. Every autobahn import now needs about 13-17 MB
less memory on CPython and 18-24 MB less on PyPy, and none loads
numpy. A new documentation page (docs/memory-footprint.rst, just
memory-footprint) shows the import memory footprint per release on
CPython and PyPy.
Wheels
- Publish native Windows ARM64 (win_arm64) wheels with NVX for
CPython 3.11-3.14, built on GitHub’s windows-11-arm runners (PyPy
publishes no Windows ARM64 interpreter); thanks to @ndabas.
cryptography currently publishes no win_arm64 wheel, so the build
compiles it against an OpenSSL from vcpkg.
- Build cryptography against an OpenSSL from vcpkg on Windows x86_64
too: cryptography 50.0.2 publishes its Windows PyPy wheels for PyPy
8 (pp80) only, and the pypy311 wheel build uses PyPy 7.3 (pp73), so
pip builds it from source there.
WebSocket
- Make all four per-message compression extensions
(permessage-deflate, -bzip2, -brotli, -snappy) enforce the
decompression budget the same way: decompression stops near the
remaining maxMessagePayloadSize budget instead of decompressing a
whole frame first, and “over budget” as well as “budget already
used up” raise PayloadExceededError. brotli now bounds its output
with Decompressor.process(output_buffer_limit=...), snappy is
decompressed one framing chunk at a time, and deflate no longer
lets one octet through once the budget is used up.
- Add autobahn.exception.PayloadCorruptError: every compression
extension now raises it for input it cannot decompress (corrupt,
truncated, or not the extension’s format), instead of the library’s
own exception (zlib.error, OSError, brotli.error, …), and snappy no
longer accepts such input silently. The protocol fails the
connection with close code 1007 (invalid frame payload data), the
same for every extension and on both Twisted and asyncio.
- Fix permessage-brotli failing on the second message of a connection
when context takeover was negotiated (the default): the compressor
and decompressor were reused after their brotli stream had
finished. Each message is now a new brotli stream, which is the
wire format brotli used for the first message already, and for no
context takeover.
- Fix an asyncio WebSocket connection being left open, but no longer
serviced, when an exception escaped the processing of received
data: the connection is now dropped, as on Twisted.
- Add a documentation page on WebSocket compression
(docs/websocket/compression.rst): for each of the four extensions,
which Python package and which compression library (and bundled
version) it uses on CPython and on PyPy, plus context takeover,
decompression limits and the handling of invalid data. The old,
unpublished page under docs/work/ did not cover permessage-brotli
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.15.1:
- Implemented a compatibility fix for supporting direct access of
anyio.* submodules from the main package even when those
submodules were not directly imported first.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.20.0:
usecase:
- [usecase] [batch] Added a warning for the case where an unnamed
CHECK constraint on a reflected table is omitted from a batch
"recreate" operation. An unnamed CHECK constraint can't be
reliably carried over in a batch recreate as it may refer to
columns that are being dropped or changed. This omission was
previously a silent operation. The presence of any
~sqlalchemy.schema.CheckConstraint in
Operations.batch_alter_table.table_args is taken to indicate that
the case has been accommodated, and no warning is emitted.
- [usecase] [autogenerate] Autogenerate now renders a warning
comment above any rendered Operations.drop_constraint() directive
for which the constraint name is None, as is the case when a
constraint that has no name in the model is dropped, most
typically within the downgrade() function of a migration that
adds an unnamed constraint. A warning is also emitted on the
console when the migration script is generated. The directive
requires a non-None name in order to be able to emit a "DROP
CONSTRAINT" command.
bug:
- [bug] [batch] Fixed bug in batch mode where adding a column with
a type that generates its own CHECK constraint, such as
~sqlalchemy.types.Boolean or ~sqlalchemy.types.Enum with
~sqlalchemy.types.Boolean.create_constraint set to True, would
emit the constraint twice when the table was recreated, once
under the name generated by the naming convention in use and once
under the name given to the type. The constraint is now emitted
once, using the same name that would be used outside of batch
mode.
- [bug] [batch] Fixed bug in batch mode where a CHECK constraint
generated by a type such as ~sqlalchemy.types.Boolean or
~sqlalchemy.types.Enum would lose the name established for it by
the naming convention in use when the table was recreated, as the
constraint was regenerated against the temporary table used for
the recreate operation. The naming convention is now resolved
against the name of the table being replaced.
As part of this change, a type that generates a CHECK constraint
but has no name of its own, used in conjunction with a naming
convention that includes the %(constraint_name)s token, now emits a
warning, as the convention has no name to interpolate; the
constraint continues to be emitted without a name. As noted at
batch_check_constraints, these datatypes should be given a name in
order to participate fully in batch mode.
- [bug] [batch] Fixed bug in batch mode where the
Operations.batch_alter_table.naming_convention parameter would
re-generate the names of constraints that already had a name when
reflected, in the case where the convention included the
%(constraint_name)s token, leading to a name that included the
convention's own prefix twice. The convention is now applied
only to those constraints that are reflected without a name,
which is the use case the parameter is documented for.
- [bug] [mysql] Fixed bug where autogenerate with
EnvironmentContext.configure.compare_server_default would report
a persistent server default change for Float, Numeric and other
decimal columns on MySQL. MySQL reports a literal server default
for such a column either in quoted form, e.g. '1', or, when the
value is fractional, as a parenthesized expression, e.g. (2.5);
neither form was accommodated for columns other than those of
Integer affinity, so that a default such as server_default="1" on
a sqlalchemy.Float column would never compare as equal to the
reflected value.
- [bug] [mysql] Fixed bug where autogenerate with
EnvironmentContext.configure.compare_server_default would report
a persistent server default change for an expression server
default such as (rand()). MySQL reports such a default with the
surrounding parenthesis included whereas MariaDB reports it
without them, so that the parenthesis are now disregarded when
comparing.
misc:
- [change] [general] Support for SQLAlchemy 1.4 is dropped as of
Alembic 1.20.0; SQLAlchemy 2.0.0 is now the minimum required
version. SQLAlchemy 1.4 has no support for Python 3.13 and above,
and the version-conditional code paths it required throughout
Alembic have been removed in favor of the SQLAlchemy 2.0 API.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.5.1:
- A LazyObjectProxy created with an interface argument that declared
a path-like type, such as os.PathLike or pathlib.Path, did not
define the __fspath__() special method on the class it generated.
Because os.fspath() looks up __fspath__() on the type of the
object, passing such a proxy to os.fspath(), the builtin open()
or other standard library functions accepting paths raised
TypeError before the factory callable had been invoked to create
the wrapped object. The __fspath__() special method is now added
when the declared interface provides it, in the same way as is
already done for the other special methods looked up on the type,
so the first path conversion triggers creation of the wrapped
object and succeeds. With thanks to Muneeb Sheikh.
- A callback passed to wrapt.WeakFunctionProxy which was callable
but evaluated as false, such as an event emitter object which
reports its number of subscribers via __len__() and is empty when
first created, was passed the underlying weak reference object
instead of the proxy when the wrapped function expired. Where the
wrapped function was a bound method, such a callback could also
be called twice, once each when the instance and the function
expired. Only None is now treated as meaning no callback was
supplied, which mirrors the behaviour of weakref.ref() and
weakref.proxy() in the standard library, so these callbacks now
receive the proxy and are called only once, as for any other
callback. With thanks to Huanyi Xie.
- A wrapt.AdapterFactory instance passed as the adapter argument
to wrapt.decorator was ignored, and so never called, if the
instance evaluated as false, such as when the factory class
defined __bool__() or __len__(). The decorated function then
retained its original signature instead of that produced by the
factory. Whether an adapter factory was supplied is now
determined by type before the truth value of the adapter is
considered, so such factories are always called. As a consequence
of this change a factory can now also return None, or any other
false value, to indicate that no adapter should be used for a
particular function, where previously this failed with an obscure
error. With thanks to Luochenchen.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
posix_ipc decides at build time whether it needs librt and whether
message queues are available by compiling small probe programs in
build_support/discover_system_info.py. Its does_build_succeed() splices
the linker option into the compiler argv verbatim, so when no extra
library is wanted the compiler is called with a literal empty argument:
$CC -Wall -o foo foo.c '' -lpthread
GNU ld treats '' as an input file and fails ("cannot find : No such
file or directory"); lld ignores it. With the gcc toolchain every probe
without -lrt therefore fails, the prober wrongly decides librt is
required, and on a C library without a usable librt message queue
support is dropped - which is how posix_ipc.MessageQueue went missing
(issue #916). The result depends on the linker rather than on what the
C library provides.
The previous LDFLAGS += "-lrt" workaround only papered over this, and
is itself libc specific: it forces linking librt even where mq_* live
in libc (glibc >= 2.34, musl).
Fix the prober to split linker_options with shlex, like it already does
for CC, so an empty value adds no argument, and drop the forced -lrt so
the probes decide per C library.
Verified on qemux86-64 for glibc and musl, each with the clang and gcc
toolchains: src/system_info.h defines MESSAGE_QUEUE_SUPPORT_EXISTS,
SEM_GETVALUE_EXISTS and SEM_TIMEDWAIT_EXISTS, and the extension module
imports all mq_* from libc with no librt NEEDED entry.
Fixes: https://github.com/openembedded/meta-openembedded/issues/916
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
arrow/parser.py imports zoneinfo, falling back to backports.zoneinfo
which is not available either, so importing arrow fails on target:
ModuleNotFoundError: No module named 'zoneinfo'
Seen in python3-construct ptests.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The plugin imports modules from the datetime, json, misc, netclient,
numbers, profile and statistics python3 packages, so ptests of recipes
using it fail on images that don't pull those in otherwise.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
parse 1.22.2 made {:f} also accept nan/inf, which changed the generated
regex. Update the copied parse test expectation to match.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The live resolver tests use the system resolver configuration. When the
network is configured by the kernel ip= parameter and nothing in userspace
writes /etc/resolv.conf, the nameserver is only available in /proc/net/pnp
and the tests fail with "no nameservers". Seed resolv.conf from it when
it has no nameserver entry.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Alex Kiernan (2):
VarlinkTransport: stop reading after a failed peek
VarlinkTransport: treat a failed read as a lost connection
Colin Watson (1):
types: return NotImplemented from __eq__ for type errors
Helmut Grohne (37):
varlinkmethod: allow overriding the return type
reduce contents of the main import and avoid star imports
CI: tune certification socket timeout
CI: fixup certification timeout change
document that it is uploaded to PyPI
docs/structure.rst: finish truncated paragraph on file descriptors
pyproject.toml: document development packages
VarlinkTransport: send correct data on partial send
validate_interface: fix acceptance of garbage at end
create_unix_server: actually make the socket non-inheritable
docs: adapt documentation to pause_reading/resume_reading rename
__init__.py: improve language of initial __doc__ string
GenericVarlinkErrorReply: provide a __str__ method
connect_unix_varlink: fix resource leak in error path
VarlinkTransport: delay eof_received call
VarlinkTransport: remember the readable handler function
VarlinkTransport: turn a magic number into a class attribute
expand ci coverage to Python 3.15
VarlinkTransport: fix association of messages and file descriptors
correctly determine whether typing.override exists
fix result type of wrapped varlinkmethod
github: allow manually scheduling workflows
test_protocol.py: fix missing import
VarlinkTransport: tighten assertion
test_protocol.py: close the transport, not the connections
VarlinkTransport: harden resume_reading against concurrent closing
TransportTests.test_send_socket: avoid exceptions in callbacks
VarlinkClientProtocol.call: avoid failing future with no consumers
test_certification.py: delete unused import
test_protocol.py: delete unused import again
tests: add StrictAsyncioTestCase helper class and use it
tests: another type hint improvement
test_conversion.py: increase precsion of two type annotations
varlinkmethod: clarify that the type annotation must signal generators
add a HACKING.md file clarifying development processes
add the justfile promised in HACKING.md
upload to pypi as version 0.3.3
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
aiohttp 3.14.4 requires yarl >= 1.25.1 and imports query_to_pairs,
which 1.24.5 does not have, so importing aiohttp.web fails with:
ImportError: cannot import name 'query_to_pairs' from 'yarl'
AI-Generated: Claude Opus 5.5 (Claude Code)
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.5.0:
- Added with_doc, a decorator for overriding the docstring that
help(), pydoc and other introspection tools see for a wrapped
callable without mutating the wrapped function itself. It is the
companion of with_signature. The docstring can be supplied
directly, or as a factory callable that derives it from the
wrapped function at decoration time. When stacked above
with_signature the factory sees the overridden signature and can
embed it in the docstring. Assigning to __doc__ on the resulting
wrapper replaces the override, and deleting it restores
delegation to the wrapped function. Previously the only option
was to assign to __doc__ on a wrapper, which writes through to
the wrapped function since __doc__ on every proxy delegates to
the wrapped object, and so changed what was reported for the
wrapped function everywhere. The override is handled for instance
methods, class methods and static methods, and propagates through
outer wrapt decorators stacked on top. See the "Docstring
Override" section of Bundled Decorators for details.
- with_signature now accepts a doc argument for overriding the
docstring at the same time as the signature, and the factory
callable may return a tuple of (signature_or_prototype,
docstring) so that a single factory can derive both from the
wrapped function in one pass. When doc is supplied, the docstring
from the tuple is ignored. When neither is given, __doc__
continues to delegate to the wrapped function as before,
including for assignment and deletion.
- A class derived from wrapt.BaseObjectProxy may now define __doc__
as a property, or other descriptor, in its class body, and that
is used for instances of the class in place of the default
delegation of __doc__ to the wrapped object. This works with both
the pure Python implementation and the C extension, and the
descriptor is inherited by further derived classes. Previously
the pure Python metaclass overwrote such a descriptor with the
default delegating property, and the C extension forwarded
__doc__ to the wrapped object before consulting the type, so it
was never used. Only __doc__ is affected, with __module__ always
delegating to the wrapped object. This is the mechanism with_doc
relies on.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>