This addresses python 3.13 issues.
License-Update: added bsd-2-clause to LICENSE.txt
Drop 0001-sip-Fix-build-with-gcc-14.patch as already fixed upstream.
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This addresses python 3.13 issues.
Use build_meta instead of classic setuptools.
Drop all setup.py patches as no longer necessary.
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Not mentioned anywhere in source tree, and no longer
available with python 3.13.
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
It's not mentioned anywhere in source code, and
python 3.13 has removed it.
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Improved performance of calling :py:meth:~yarl.URL.build
- Improved performance of all :class:~yarl.URL methods that create
new :class:~yarl.URL objects
- Improved performance of :class:~yarl.URL methods that modify the network
location
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Fix uefi parse of ASUS bios CAP files
- fix: Update CompressionTypes typedefs
- ci: Update OS runners to use latest
- Fixed a crash while handling non-UTF-8 encoded partition entry names in ME region
- Sync LZMA library with UEFITool
- skip unprocessed guid defined sections
- Use gzip instead of zlib for Qualcomm decompression
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- update psutil.Process.parent() return type
- per psutil.Process.parent()'s docstring, it may return None.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Removed Python 3.7 support
- Make loads raise TypeError not AttributeError on bad input types that do not
have the replace attribute. Improve error message when bytes is received.
- Type annotate load input as typing.IO[bytes] (previously typing.BinaryIO).
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
=========
- Add strike attribute
- Generate and upload attestations to PyPI
- Drop support for Python 3.8
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Fixed
=====
- Allow use of request.url_for when only "app" scope is available
- Fix internal type hints to support python-multipart==0.0.12
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
License-Update: Copyright year updated to 2024.
Changelog:
===========
- Fix a sandbox escape via generators and _frame methods.
- Supporting dictionary comprehensions
- A custom exception rather than KeyError when names not found
- Dropping support for old python versions - if you need pre 3.9, then you can use an older version
- Various cleanups & tidying warnings, deprecation warnings etc.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Build wheels for Python 3.13
- Deprecate support for Python version before 3.9 and stop building wheels for them
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Refactor operations to fully work on AArch64.
- Fix the max_mem_rss measurement
- Allow setting the amount of warmup values in Runner
- Add hooks for calling arbitrary code around each benchmark
- Use KiB and MiB as units instead of kB and MB.
- Fix Spelling Error
- Make hooks work in bench_command subprocesses
- Fix deprecated method in bench_time_func example
- Separate subprocess writing/parsing into their own functions
- Fix "std dev" link
- Implement --timeout when running benchmarks
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fixed a bug where pymongo.results.UpdateResult.did_upsert would raise a TypeError.
- Fixed Binary BSON subtype (9) support on big-endian operating systems (such as zSeries).
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changes
~~~~~~~
- misp_instance_version_master now uses the 2.5 branch.
- Make mypy happy.
- Only include the changelog in the sdist package.
- [data] describeTypes.json updated.
- Openioc.py is not a script, but had exec bit.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Build wheels for Python 2.7 again
- Update github actions and add Python 3.13
- Fix or remove several old broken links
- Remove broken link to Meeus's book
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Make it possible to log heartbeat ping pong
- Move HeartbeatController to a separate module
- Simplify socket timeout
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Support installing free-threaded Python interpreters with the t suffix.
- use_uv fails to lock when there are non-ascii characters in pyproject.toml on
Windows.
- Fix the pre_install and post_install signals receiving an exhausted generator,
instead of a list of packages.
- Create backup file with random filename to avoid conflicts.
- Fix the logic error in the uv format marker matching.
- pdm lock --check on a lockfile generated with older PDM version has a 0 exit
code when there's a change in pyproject.toml.
- Fixed Bash Completion suggestion so it doesn't require root privileges
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- ignore jinja CVE
- Remove passing exception as args to super in APIError
- better handler API error parsing.
- Add test on receiving an invalid JSON in the APIError exception handler.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fix documentation build issue.
- If a internal generated function is excluded the lines, if present, are
excluded as well.
- Fix exclusion of internal functions.
- Only print info on the first undefined block number in data model.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog
=========
- preload script wrappers on Windows to assist with a pip issue
- Remove duplicated newline in shebang of windows launcher
- Add handling for cross-compilation environments
- Do not use the absolute path to cache wheel extensions
- Support mounting wheels that use extensions without an EXTENSIONS file
- Add support for wheel compatibility with the limited API
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Test fixes for Python 3.13
- Drop Python 3.7
- Bump cibuildwheel in CI
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Dropped support for Python 3.8 and PyPy 3.8.
- Fix: a final wildcard match/case clause assigning to a name (case _ as
value) was incorrectly marked as a missing branch.
- Fewer things are considered branches now. Lambdas, comprehensions, and
generator expressions are no longer marked as missing branches if they
don't complete execution.
- Fix: the HTML report didn't properly show multi-line f-strings that end with a
backslash continuation. This is now fixed
- Fix: the LCOV report now has correct line numbers and better branch
descriptions for BRDA records. There are other changes to lcov also, including
a new configuration option :ref:`line_checksums <config_lcov_line_checksums>`
to control whether line checksums are included in the lcov report.
The default is false. To keep checksums set it to true.
- Fixed the docs for multi-line regex exclusions, closing issue 1863.
- Fixed a potential crash in the C tracer
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
Modify the default version to be an empty string
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
* add official Python 3.13 support
* update cibuildwheel to 2.21.3
* minor simplifications
* fix some typos
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fixed error messages from :py:class:~aiohttp.resolver.AsyncResolver being
swallowed
- Added :exc:aiohttp.ClientConnectorDNSError for differentiating DNS resolution
errors from other connector errors
- Simplified DNS resolution throttling code to reduce chance of race conditions
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Do not overwerite implicit dependencies, otherwise
ptests stop depending upon the correcpoding python module
resulting in runtime failures
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Do not overwerite implicit dependencies, otherwise
ptests stop depending upon the correcpoding python module
resulting in runtime failures
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- Tested on qemux86-64.
- The PyPi package name defaults to PN without the python3- prefix, so there is no need to set PYPI_PACKAGE as pint, it is by default.
- xfailed tests are known failures upstream.
Ptest result:
=============
qemux86-64:
Testsuite summary
TOTAL: 2784
PASS: 2094
SKIP: 676
XFAIL: 12
FAIL: 0
XPASS: 2
ERROR: 0
DURATION: 1611
END: /usr/lib/python3-pint/ptest
2024-10-11T14:34
STOP: ptest-runner
TOTAL: 1 FAIL: 0
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 8.6.0:
- Fix the handling of invalid JSON bodies in the bottle parser to
support bottle versions >=0.13
- MultiDictProxy now inherits from MutableMapping rather than
Mapping
Switch inherit from setuptools3 to python_flit_core.
License-Update: Update years
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 2.7.0:
- dns.query.https() and dns.asyncquery.https() now support HTTP/3
and the http_version parameter may be used to specify which
version to use.
- If the cryptography module is installed, then dnspython will now
create deterministic ECDSA signatures by default. Cryptography,
if installed, must be at least version 43. Thanks to Jakob
Schlyter for adding the feature.
- The RESINFO and WALLET RdataTypes are now supported.
- The COOKIE and Report-Channel EDNS0 options are now supported.
- All supported RdataTypes can now be imported at a single time
rather than lazily on first use by calling
dns.rdata.load_all_types().
- The SVCB and HTTPS records now support the ohttp parameter.
- xfr() and inbound_xfr() now share a common implementation.
- Tokens are now supported for QUIC and HTTP/3.
- dns.message.from_wire() now saves the input wire format in the
Message's "wire" attribute. Likewise,
dns.message.Message.to_wire() now records the generated wire
format in that attribute.
- The dns.message.Message object now has a get_options() helper to
retrieve EDNS0 options of a specified type, and an
extended_errors() helper to retrieve the list of EDE options in a
message (if any).
- dns.message.make_response() now has a copy mode which controls
how sections are copied. By default, a copy mode appropriate for
the opcode is used. This is currently
dns.message.CopyMode.QUESTION for all opcodes.
- If an IP address is used as the hostname in a URL, the https
query code now passes the sni_hostname to httpx as this is
required to get httpx to validate the certificate and check for
an IP subject alternative name.
- The minimum supported aioquic version is now 1.0.0.
- The minimum supported Python version is now 3.9.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 13.9.2:
- Fixed Table columns not highlighting when added by add_row
- Fixed an issue with Segment.split_cells reported in Textual
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- Fixed return type for Redis Set commands to be Set instead of List
- Fixed bug with partial Hiredis availability
- Fixed bug with async pipeline and cluster fails with some commands
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Add recipe for release 0.2.0:
- Fixed loading the C-extensions on Python 3.8
- Improved typing for the :func:`propcache.api.under_cached_property`
decorator
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
The project has a proper pyproject.toml which declares the setuptools.build.meta PEP-517 backend.
Fix:
WARNING: python3-reedsolo-2.1.0b1-r0 do_check_backend: QA Issue: inherits setuptools3 but has pyproject.toml with setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- The project has a proper pyproject.toml which declares the setuptools.build.meta PEP-517 backend.
- Unnecessary dependencies dropped.
Fix:
WARNING: python3-pastedeploy-3.1.0-r0 do_check_backend: QA Issue: inherits setuptools3 but has pyproject.toml with setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Fix:
WARNING: python3-spidev-3.6-r0 do_check_backend: QA Issue: inherits setuptools3 but has pyproject.toml with setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- The project has a proper pyproject.toml which declares the setuptools.build.meta PEP-517 backend.
- The PyPi package name (defaults to PN without the python3- prefix), so there is no need to set PYPI_PACKAGE as inflate64, it is by default.
- Added missing dependency python3-setuptools-scm-native.
Fix:
WARNING: python3-inflate64-1.0.0-r0 do_check_backend: QA Issue: inherits setuptools3 but has pyproject.toml with setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- The project has a proper pyproject.toml which declares the setuptools.build.meta PEP-517 backend.
- The PyPi package name (defaults to PN without the python3- prefix), so there is no need to set PYPI_PACKAGE as alembic, it is by default.
WARNING: python3-alembic-1.13.3-r0 do_check_backend: QA Issue: inherits setuptools3 but has pyproject.toml with setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: alperak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 2.2.1:
- Bug fix: use C int instead of C char for some internal code
- Bug fix: add xmpz.bit_count method
Drop 0001-src-fix-python-3.12-builds.patch because a similar
change has been implemented upstream and the patch is not needed.
The project has a proper pyproject.toml which declares the
setuptools.build.meta PEP-517 backend.
Fixes:
WARNING: python3-gmpy2-2.2.1-r0 do_check_backend: QA Issue:
inherits setuptools3 but has pyproject.toml with
setuptools.build_meta, use the correct class [pep517-backend]
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 3.10.9:
- Fixed proxy headers being used in the ConnectionKey hash when a
proxy was not being used
- Widened the type of the trace_request_ctx parameter of
:meth:`ClientSession.request()
- Fixed failure to try next host after single-host connection
timeout
- Improved performance of resolving hosts with Python 3.12+
- Reduced memory required for timer objects created during the
client request lifecycle
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 1.0.0:
- Test fixes for changes in recent upstream Python
- Drop Python 3.7
- Test against Python 3.13
- Update docs
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to version 3.7.3:
- 100% test coverage of framers
- Framer, final touches
- Readme file renamed
- Remove old framers
- frameProcessIncomingPacket removed
- Cleanup framers (reduce old_framers)
- Run CI on PR targeted at wait_next_api
- Sync client, allow unknown recv msg size
- integrate old rtu framer in new framer
- Update README.rst
- Client.close should not allow reconnect=
- Remove async client.idle_time()
- Client doc, add common methods (base)
- Reset receive buffer with send()
- Remove unused protocol_id from pdu
- CI run on demand on non-protected branches
- Server listener and client connections have is_server set
- Reopen listener in server if disconnected
- Regroup test
- Improve docs around sync clients and reconnection
- transport 100% test coverage (again)
- Update actions to new node.js
- Bump 3rd party
- Documentation on_connect_callback
- Fixes the unexpected implementation of the
ModbusSerialClient.connected property
- Forward error responses instead of timing out
- Add stacklevel=2 to logging functions
- Fix encoding & decoding of ReadFileRecordResponse
- Improvements for example/contib/solar
- Update solar.py
- Remove double conversion in int
- fixed type hints for write_register and write_registers
- Remove _header from framers
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 1.14.0:
- Switched to using the :mod:`propcache <propcache.api>` package
for property caching
- Started testing with Hypothesis
- Improved performance of :py:meth:`~yarl.URL.is_default_port` when
no explicit port is set
- Improved performance of converting :class:`~yarl.URL` to a string
when no explicit port is set
- Improved performance of the :py:meth:`~yarl.URL.origin` method
- Improved performance of encoding hosts
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to release 3.3.5:
- Control setting local nodes outside of the supposed local's
constructor
- Fix Python 3.13 compatibility re: collections.abc
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to version 5.3.0:
- reno: Update master for unmaintained/zed
- Remove old excludes
- Update master for stable/2024.1
- reno: Update master for unmaintained/xena
- reno: Update master for unmaintained/wallaby
- reno: Update master for unmaintained/victoria
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
python3-pyyaml-include already supports native and nativesdk builds.
Starting from version 2.0, fsspec was introduced as a dependency for
pyyaml-include.
This commit adds support for native and nativesdk builds in the fsspec recipe.
Signed-off-by: Peng Zhang <peng.zhang1.cn@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Starting from version 2.0, fsspec was introduced in pyyaml-include,
allowing the inclusion of files from various sources such as HTTP,
SFTP, and S3. As a result, pyyaml-include now depends on fsspec for
both local and remote file inclusion, making it a required runtime
dependency.
Signed-off-by: Peng Zhang <peng.zhang1.cn@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to version 4.11.0:
- Add natural_list
- filesize: support the ronna and quetta prefixes
- Update French translations for numbers
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to version 8.0:
- Changes related to added support of gcov JSON intermediate format
- Detect suspicious counter values in gcov output
- Add --html-single-page to create a single page report (static or
with Javascript)
- Upload standalone applications as release artifacts
- Add support for gcov JSON intermediate format
- Add Exclusion markers to exclude a while function
- Change sort order in JSON output files
- Add source exclusion markers to exclude source branch from target
line
- Implement consistent sorting of files with no lines, or one line
with zero coverage
- Use replacement value of 0 for function call count NAN %
- Fix erroneous deprecation warning
- Fix display filename in HTML report
- Fix bundle of standalone executable with Python 3.12
- Fix merging of function coverage data
- Fix inefficient regular expression
- Fix missing output of gcov if execution fails
- Move tests to directory in the root
- Add MacOs to the GitHub test workflow
- Remove test exclusions for MacOs and adapt tests and reference
data
- Link correct documentation version in copyright header
- Move tag creation before publish the distribution because tag
from pipeline doesn't trigger additional runs
- Fix scrubber for date in HTML test data
- Add test with Python 3.12
- Add gcc-14 to the test suite
- Skip coverage upload if executed in a fork
- Only execute pipeline if pushed on main and add button to execute
workflow manual
- Check spelling in test pipeline
- Merge the test and deploy workflow to a single CI workflow
- Add Codacy to CI workflow for tracking coverage and code quality
- Add bandit to the linters
- Remove Codecov upload from pipeline
- Add test with bazel tests
License-Update: Adapt to new format, remains BSD 3-Clause License
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upgrade to version 6.1.0:
- Covered the unreachable code path in
multidict._multidict_base._abc_itemsview_register() with typing
- Added support for Python 3.13
- Removed Python 3.7 support
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
-Added :attr:~yarl.URL.path_safe to be able to fetch the path without %2F and %25 decoded
-Restore decoding %2F (/) in URL.path
-Improved performance of processing paths
-Added :attr:~yarl.URL.host_subcomponent which returns the :rfc:3986#section-3.2.2 host subcomponent
-Started rejecting ASCII hostnames with invalid characters. For host strings that
-look like authority strings, the exception message includes advice on what to do instead
-Fixed IPv6 addresses missing brackets when the :class:~yarl.URL was converted to a string
-Improved performance of calling :py:meth:~yarl.URL.build with authority
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Fix other failing URL normalization tests
- Avoid the use of sys.version_info for checking results, better to extend the check to more values.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Handle matrices of zero columns correctly in the Matrix constructor.
- NumPy numbers can be used with clebsch_gordan.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Client-side caching
- Timeseries insertion filters for close samples
- Enhanced classes string representation
- Partial clean up of Python 3.7 compatibility
- Handle RESP3 sets as Python lists
- Prevent async ClusterPipeline instances from becoming "false-y"
- Add hostname field to _parse_node_line
- Delete the first-defined (and thus "duplicate") Script class
- Catch a known DeprecationWarning when calling .close()
- Add missed redismod at test_commands.py
- Update README.md - mentioning redis 7.4 support
- Update PyPy 3.8 to 3.10 in CI
- Updated commands from docker-compose to docker compose
- Added version restrictions for pytest-asyncio
- Documentation examples
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Improve performance, especially in data with many CR-LF
- Handle invalid CRLF in header name
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Added support for MongoDB 8.0 and Python 3.13.
- A new asynchronous API 19 with full asyncio support.
- Added support for In-Use Encryption range queries with MongoDB 8.0.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- Typing improvements:
* Add '@overload' to 'contrib.regular_languages.compiler.Variables.get'.
* Use 'Sequence' instead of 'list' for 'words' argument in completers.
- Improve 'ModalCursorShapeConfig':
* Display an "underscore" cursor in Vi's "replace single" mode, like
"replace" mode.
* Display an "beam" cursor in Emacs (insert) mode.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
License-Update: Update license file so it is recognized by GH
Changelog:
==========
- The combine method of an IntervalDict accepts a missing parameter to fill
values for non-overlapping keys
- A recipe to combine more than two IntervalDict
- Drop official support for Python 3.7.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Prevent bad task serialization in schedule from causing a batch of tasks to be lost
- Ensure we catch ResultTimeout which may occur when used with Sentinel
- Remove junk SQS implementation I was testing out.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fix#117: Add WKD (Web Key Directory) support for auto-locating keys. Thanks to Myzel394 for the patch.
- Fix#237: Ensure local variable is initialized even when an exception occurs.
- Fix#239: Remove logging of decryption result.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- further skip BufferedRandomType if does not exist
- remove stray import of dbm in objects
- Add UnpicklingError import for dill.load_session() to fix#648
- Bump idna from 3.4 to 3.7 in /docs
- Bump jinja2 from 3.1.3 to 3.1.4 in /docs
- Bump requests from 2.31.0 to 2.32.0 in /docs
- Bump tornado from 6.3.3 to 6.4.1 in /docs
- update docs requirements to rtfd 10.27.0
- Bump certifi from 2024.2.2 to 2024.7.4 in /docs
- fix fencepost error when getting source inside decorator in interpreter (fixes#603)
- type check for Integral, bool by value
- diff USE_NUMPY imports numpy.ma
- adjust testing to account for frame.f_locals as a proxy in 3.13
- better handle import strings of numpy scalars
- handle a ThreadHandleType
- more extensive testing for dill.source
- add formal support for python 3.13
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
License-Update: Drop extra '2014' in LICENSE file.
Changelog:
===========
- Address CVE-2023-26112 ReDoS
- Drop Python 2 support and compatibility code
- Extra 2014
- setup.py: fix license tag
- Update minimum python to 3.7 everywhere, and add 3.12
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Enable cache via env variable and improve cache key
- Add test and type annotations for LongNamesConverter
- monitor: case insensitive filtering
- fix ruff linter errors
- Skip dumping KCD version if unset
- Update ruff config
- fix errors raised by recent versions of ruff
- Fix bug in DBC short names conversion
- monitor: fix crash while decoding message with bad length
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Bump docker/build-push-action from 5.4.0 to 6.0.0
- Suggested small refactors in assignments
- Performance improvement in blacklist function
- Add test for usage of FTP_TLS
- New check: B113: TrojanSource - Bidirectional control characters
- Bump docker/build-push-action from 6.0.0 to 6.1.0
- feat(plugins): add support for httpx in B113
- Nit: remove unused variable
- Add recent releases to version choice in bug report
- Bump docker/build-push-action from 6.1.0 to 6.2.0
- Bump docker/build-push-action from 6.2.0 to 6.3.0
- Bump docker/setup-buildx-action from 3.3.0 to 3.4.0
- Bump docker/setup-buildx-action from 3.4.0 to 3.5.0
- Bump docker/login-action from 3.2.0 to 3.3.0
- Bump docker/build-push-action from 6.3.0 to 6.5.0
- Bump docker/setup-buildx-action from 3.5.0 to 3.6.1
- Bump docker/build-push-action from 6.5.0 to 6.6.1
- Bump sigstore/cosign-installer from 3.5.0 to 3.6.0
- Bump docker/build-push-action from 6.6.1 to 6.7.0
- Use consistent file naming of docs
- Pytorch Load / Save Plugin
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fix regression with f-string inference.
- Fix bug with manager.clear_cache() not fully clearing cache
- Fix a crash from inferring empty format specs.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Dropped support for Python 3.8
- Fixed 100% CPU use on asyncio while waiting for an exiting task group to
finish while said task group is within a cancelled cancel scope
- Fixed cancel scopes on asyncio not propagating CancelledError on exit when
the enclosing cancel scope has been effectively cancelled
- Fixed asyncio task groups not yielding control to the event loop at exit if
there were no child tasks to wait on
- Fixed inconsistent task uncancellation with asyncio cancel scopes belonging
to a task group when said task group has child tasks running
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Render if_exists and if_not_exists parameters in CreateTableOp, CreateIndexOp,
DropTableOp and DropIndexOp in an autogenerate context.
- Enhance version_locations parsing to handle paths containing newlines.
- Added support for Operations.create_table.if_not_exists and
Operations.drop_table.if_exists, adding similar functionality to render
IF [NOT] EXISTS for table operations in a similar way as with indexes.
- The pin for setuptools<69.3 in pyproject.toml has been removed.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Copy staggered from standard lib for python 3.12+
- Avoid passing loop to staggered.staggered_race
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This is needed for fixing
Failed ptests:
{'python3-sqlparse': ['tests/test_cli.py:test_encoding_stdout[encoding_gbk.sql-gbk]',
'tests/test_cli.py:test_encoding_output_file[encoding_gbk.sql-gbk]',
'tests/test_cli.py:test_encoding_stdin[encoding_gbk.sql-gbk]']}
Signed-off-by: Khem Raj <raj.khem@gmail.com>
- Switch to fetching from pypi
- Use automake format for pytests
- Fix ptests, by adding missing runtime deps
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Allowed scheme replacement for relative URLs if the scheme does not require a host
- Allowed empty host for URL schemes other than the special schemes listed in the WHATWG URL spec
- Loosened restriction on integers as query string values to allow classes that implement __int__
- Improved performance of normalizing paths
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fix failing URL normalization tests
- Disable protocols checking with elementpath v4.5.0
- Extended ModelVisitor to make it usable as an helper class for generating content
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Added support for Python 3.13
- Fixed infinite loop when appending Text to same instance
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
License-Update: Copyright year updated to 2024.
Changelog:
Updated to Unicode 16.0
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Bump changelog.
- Bump deps, version.
- Only include the changelog in the sdist package.
- [data] describeTypes.json updated.
- Openioc.py is not a script, but had exec bit.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Fix readme download target
- Split build and publish for release
- Use upstream setup-uv with uv python
- Bump astral-sh/setup-uv from 2 to 3
- [pre-commit.ci] pre-commit autoupdate
- don't include outdated changelog in docs
- Fix multi-path returned from _path methods on MacOS
- Use uv as installer
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
Add support for AES-GCM encryption ciphers (128 and 256 bit variants).
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Adds support for Python 3.13.
- Greatly reduce the chances for crashes during interpreter shutdown.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
* [fix] os.read/write waits until file descriptor is ready.
* [fix] Upgrade RLocks as last thing we do
* [security] drop header keys with underscores
* [doc] Various doc updates
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Fix and clean node trees iteration methods
- Fix missing raw string for '[^rn]'
- Full and more specific type annotations
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Drop the patch to disable strip instead set the env variable.
set UJSON_BUILD_NO_STRIP=1 and get rid of one pending patch
Signed-off-by: Khem Raj <raj.khem@gmail.com>
CVE-2024-45230: Potential denial-of-service vulnerability in
django.utils.html.urlize()
urlize and urlizetrunc were subject to a potential denial-of-service attack
via very large inputs with a specific sequence of characters.
CVE-2024-45231: Potential user email enumeration via response status on
password reset
Due to unhandled email sending failures, the
django.contrib.auth.forms.PasswordResetForm class allowed remote attackers to
enumerate user emails by issuing password reset requests and observing the
outcomes.
To mitigate this risk, exceptions occurring during password reset email
sending are now handled and logged using the django.contrib.auth logger.
CVE-2024-41989: Memory exhaustion in django.utils.numberformat.floatformat()
The floatformat template filter is subject to significant memory consumption
when given a string representation of a number in scientific notation with
a large exponent.
CVE-2024-41990: Potential denial-of-service in django.utils.html.urlize()
The urlize() and urlizetrunc() template filters are subject to a potential
denial-of-service attack via very large inputs with a specific sequence of
characters.
CVE-2024-41991: Potential denial-of-service vulnerability in
django.utils.html.urlize() and AdminURLFieldWidget
The urlize and urlizetrunc template filters, and the AdminURLFieldWidget widget,
are subject to a potential denial-of-service attack via certain inputs with
a very large number of Unicode characters.
CVE-2024-42005: Potential SQL injection in QuerySet.values() and values_list()
QuerySet.values() and values_list() methods on models with a JSONField are
subject to SQL injection in column aliases via a crafted JSON object key as
a passed *arg.
CVE-2024-38875: Potential denial-of-service in django.utils.html.urlize()
urlize() and urlizetrunc() were subject to a potential denial-of-service
attack via certain inputs with a very large number of brackets.
CVE-2024-39329: Username enumeration through timing difference for users with
unusable passwords
The django.contrib.auth.backends.ModelBackend.authenticate() method allowed
remote attackers to enumerate users via a timing attack involving login
requests for users with unusable passwords.
CVE-2024-39330: Potential directory-traversal in
django.core.files.storage.Storage.save()
Derived classes of the django.core.files.storage.Storage base class which
override generate_filename() without replicating the file path validations
existing in the parent class, allowed for potential directory-traversal via
certain inputs when calling save().
Built-in Storage sub-classes were not affected by this vulnerability.
CVE-2024-39614: Potential denial-of-service in
django.utils.translation.get_supported_language_variant()
get_supported_language_variant() was subject to a potential denial-of-service
attack when used with very long strings containing specific characters.
To mitigate this vulnerability, the language code provided to
get_supported_language_variant() is now parsed up to a maximum length of
500 characters.
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
CVE-2024-45230: Potential denial-of-service vulnerability in
django.utils.html.urlize()
urlize and urlizetrunc were subject to a potential denial-of-service attack
via very large inputs with a specific sequence of characters.
CVE-2024-45231: Potential user email enumeration via response status on
password reset
Due to unhandled email sending failures, the
django.contrib.auth.forms.PasswordResetForm class allowed remote attackers to
enumerate user emails by issuing password reset requests and observing the
outcomes.
To mitigate this risk, exceptions occurring during password reset email
sending are now handled and logged using the django.contrib.auth logger.
CVE-2024-41989: Memory exhaustion in django.utils.numberformat.floatformat()
The floatformat template filter is subject to significant memory consumption
when given a string representation of a number in scientific notation with
a large exponent.
CVE-2024-41990: Potential denial-of-service in django.utils.html.urlize()
The urlize() and urlizetrunc() template filters are subject to a potential
denial-of-service attack via very large inputs with a specific sequence of
characters.
CVE-2024-41991: Potential denial-of-service vulnerability in
django.utils.html.urlize() and AdminURLFieldWidget
The urlize and urlizetrunc template filters, and the AdminURLFieldWidget widget,
are subject to a potential denial-of-service attack via certain inputs with
a very large number of Unicode characters.
CVE-2024-42005: Potential SQL injection in QuerySet.values() and values_list()
QuerySet.values() and values_list() methods on models with a JSONField are
subject to SQL injection in column aliases via a crafted JSON object key as
a passed *arg.
CVE-2024-38875: Potential denial-of-service in django.utils.html.urlize()
urlize() and urlizetrunc() were subject to a potential denial-of-service
attack via certain inputs with a very large number of brackets.
CVE-2024-39329: Username enumeration through timing difference for users with
unusable passwords
The django.contrib.auth.backends.ModelBackend.authenticate() method allowed
remote attackers to enumerate users via a timing attack involving login
requests for users with unusable passwords.
CVE-2024-39330: Potential directory-traversal in
django.core.files.storage.Storage.save()
Derived classes of the django.core.files.storage.Storage base class which
override generate_filename() without replicating the file path validations
existing in the parent class, allowed for potential directory-traversal via
certain inputs when calling save().
Built-in Storage sub-classes were not affected by this vulnerability.
CVE-2024-39614: Potential denial-of-service in
django.utils.translation.get_supported_language_variant()
get_supported_language_variant() was subject to a potential denial-of-service
attack when used with very long strings containing specific characters.
To mitigate this vulnerability, the language code provided to
get_supported_language_variant() is now parsed up to a maximum length of
500 characters.
Fixed a crash in Django 4.2 when validating email max line lengths with content
decoded using the surrogateescape error handling scheme (#35361)
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
============
- Improve performance when IP addresses change frequently
- Improve helpfulness of ServiceInfo.request assertions
- Improve performance of ip address caching
- Enable building of arm64 macOS builds
- Add classifier for python 3.13
- Python 3.13 support
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Fixed joining a path when the existing path was empty
- Added :meth:URL.without_query_params() <yarl.URL.without_query_params> method,
to drop some parameters from query string
- The previously protected types _SimpleQuery, _QueryVariable, and _Query are
now available for use externally as SimpleQuery, QueryVariable, and Query
- Replaced all :class:~typing.Optional with :class:~typing.Union
- Significantly improved performance of parsing the network location
- Added internal types to the cache to prevent future refactoring errors
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Enable OS specific Mypy checks
- [watchmedo] Fix tricks argument type of schedule_tricks()
- [kqueue] Fix TypeError: kqueue.control() only accepts positional parameters
- Drop support for Python 3.8
- [core] Enforced usage of proper keyword-arguments
- [core] Renamed the BaseObserverSubclassCallable class to ObserverType
- [inotify] Renamed the inotify_event_struct class to InotifyEventStruct
- [inotify] Renamed the UnsupportedLibc exception to UnsupportedLibcError
- [inotify] Removed the InotifyConstants.IN_CLOSE constant
- [watchmedo] Renamed the LogLevelException exception to LogLevelError
- [watchmedo] Renamed the WatchdogShutdown exception to WatchdogShutdownError
- [windows] Renamed the FILE_NOTIFY_INFORMATION class to FileNotifyInformation
- [windows] Removed the unused WATCHDOG_TRAVERSE_MOVED_DIR_DELAY constant
- [core] Enable disallow_untyped_calls Mypy rule
- [core] Enable disallow_untyped_defs Mypy rule
- [core] Improve typing references for events
- [inotify] Add support for IN_CLOSE_NOWRITE events.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- Support for setuptools 74
- iOS and Android support
- Fix for distutils change
- Remove test directives
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
Fixed
--------
- Fixed Table rendering of box elements so "footer" elements truly appear at bottom of table, "mid" elements in main table body.
- Fixed styles in Panel when Text objects are used for title
- Fix pretty repr for collections.deque
- Thread used in progress.track will exit if an exception occurs in a generator
- Progress track thread is now a daemon thread
- Fixed cached hash preservation upon clearing meta and links
- Fixed overriding the background_color of Syntax not including padding
- Fixed pretty printing of dataclasses with a default repr in Python 3.13
- Fixed selective enabling of highlighting when disabled in the Console
- Fixed BrokenPipeError writing an error message
- Fixed superfluous space above Markdown tables
- Fixed issue with record and capture interaction
- Fixed control codes breaking in append_tokens
- Fixed exception pretty printing a dataclass with missing fields
Changed
----------
- RichHandler errors and warnings will now use different colors (red and yellow)
- Removed the empty line printed in jupyter while using Progress
- Running tests in environment with FORCE_COLOR or NO_COLOR environment variables
- ansi decoder will now strip problematic private escape sequences (like \x1b7)
- Tree's ASCII_GUIDES and TREE_GUIDES constants promoted to class attributes
Added
---------
- Adds a case_sensitive parameter to prompt.Prompt. This determines if the
- response is treated as case-sensitive. Defaults to True.
- Added Console.on_broken_pipe
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
=========
- Speed up Hatch installation
- Test with Python 3.13
- Test with latest PyPy
- Use include-hidden-files: true to upload coverage artifacts
- Ensure PlatformDirs is valid superclass type for mypy AND not an abstract class for other checkers
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- UPDATE: parse_type/parse.py
- Copy structured test suite to "tests/parse_tests/"
- Copy structured test suite to "tests/parse_tests_with_parse_type"
- REMOVE: tests/test_parse.py
- README: Fix compact display of BADGES (was using multi-line)
- CI: Add support for Python 3.12
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
===========
- fix the build infrastructure
- drop support for Python 3.7
- add support for Python 3.13
- update linking strategy on Windows when building wheels
License-Update: Copyright year updated to 1.4.7
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- autocall was beeing call getitem
- Only copy files in startup dir if we just created it.
- Fix some tests on Python 3.13 RC1
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- Reintroduced supposedly-private URLTypes shortcut.
- Support for zstd content decoding using the python zstandard package is added.
Installable using httpx[zstd].
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
=============
- Test Python 3.13
- Add 3.13 to CI
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Changelog:
==========
- add 3.13 to setup.cfg classifiers
- test: optimized test preformance by moving deadcode check to the end (#89)
- Catch exception if node is in unexpected statement (#84)
- Merge pull request #80 from alexmojaki/3.13
- doc: review changes
- fix: removed unused verification
- fix: handle __firstlineno__
- refactor: review changes
- test: skip module tests for now
- test(3.13): added sample_results
- fix: skip files with raise an recursion error in 3.13, because the recursion limit has no effect
- fix: allow to LOAD_FAST variables for TypeVars
- test: fixed tests for 3.13.0b1
- test(3.13): handle optimization of not not x
- fix(3.13): a type variable can also have nonlocal variables
- fix(3.13): COMPARE_OP maps always to ast.Compare
- fix(3.13): a async function can also have nonlocal variables
- fix(3.13): a lambda can also have nonlocal variables
- fix(3.13): handle CALL_KW like method calls which are only located by the end position
- fix(3.13): loading of __class__ is mapped to the last element of the class
- fix(3.13): handle STORE_FAST_STORE_FAST and similar instructions as known issues
- fix(3.13): fixed typing errors
- build(3.13): added 3.13 to ci workflow
- fix(3.13): added new rules to the verification
- fix(3.13): show_caches is deprecated
- fix: backward compatibility fix for changed source positions in 3.12.5 (#82) (#83)
- Add many_calls tests to EXECUTING_SLOW_TESTS (#78)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Fix:
=======
- Ensure build uses cython3
- Add missing cython version pin to the build system
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>