subtree updates
meta-raspberrypi: fde68b24f0..4c033eb074:
Harunobu Kurokawa (1):
rpi-cmdline, rpi-u-boot-src: Support USB boot
meta-arm: 0b61cc659a..4d22f982bc:
Debbie Martin (2):
arm-systemready: Add parted dependency and inherit testimage
ci: Add Arm SystemReady firmware and IR ACS builds
Harsimran Singh Tungal (3):
arm-bsp/documentation: corstone1000: fix the steps in the user guide and instructions
corstone1000:arm-bsp/optee: Update optee to v4.0
corstone1000:arm-bsp/tftf: Fix tftf tests on mps3
Jon Mason (5):
arm/trusted-firmware-a: move patch file to bbappend
arm/trusted-firmware-a: update to 2.10
arm/hafnium: update to v2.10
CI: rename meta-secure-core directory
arm/edk2: update to 202311
Ross Burton (1):
CI: switch back to master
poky: 028b6f6226..4675bbb757:
Adrian Freihofer (4):
cmake-qemu.bbclass: make it more usable
oe-selftest: add a cpp-example recipe
oeqa/core/decorator: add skip if not qemu-usermode
oe-selftest: add tests for C and C++ build tools
Alassane Yattara (22):
bitbake: toaster/test: bug-fix on tests/browser/test_all_builds_page
bitbake: toaster/test: from test_no_builds_message.py wait for the empty state div to appear
bitbake: toaster/test: delay driver action until elements to appear
bitbake: toaster/tests: Ensure to kill toaster process create for tests functional
bitbake: toaster/tests: Added functional/utils, contains useful methods using by functional tests
bitbake: toaster/tests: Refactorize tests/functional
bitbake: toaster/tests: Bug fixes, functional tests dependent on each other
bitbake: toaster/tests: Fixes warnings in autobuilder
bitbake: toaster/tests: bug-fix tests writing files into /tmp on the autobuilders
bitbake: toaster/test: fix Copyright
bitbake: toaster/tests: logging warning in console, trying to kill unavailable Runbuilds process
bitbake: toaster/tests: Removed all time.sleep occurrence
bitbake: toaster/tests: Bug-Fix testcase functional/test_project_page_tab_config.py
bitbake: toaster/tests: bug-fix element click intercepted in browser/test_layerdetails_page.py
bitbake: toaster/tests: Update tests/functional/functional_helpers test_functional_basic
bitbake: toaster/tests: Fixes functional tests warning on autobuilder
bitbake: toaster/tests: Bug-fix test_functional_basic, delay driver actions
bitbake: toaster/tests: bug-fix An element matching "#projectstable" should be visible
bitbake: toaster/tests: bug-fix An element matching "#lastest_builds" should be on the page
bitbake: toaster/tests: Skip to show more then 100 item in ToasterTable
bitbake: toaster/tests: Bug-fix "#project-created-notification" should be visible
bitbake: toaster/toastergui: Bug-fix verify given layer path only if import/add local layer
Alex Bennée (1):
qemurunner: more cleanups for output blocking
Alex Kiernan (17):
cargo: Rename MANIFEST_PATH -> CARGO_MANIFEST_PATH
cargo: Move CARGO_MANIFEST_PATH/CARGO_SRC_DIR to cargo_common
rust: cargo: Convert single-valued variables to weak defaults
cargo: Add CARGO_LOCK_PATH for path to Cargo.lock
rust: Upgrade 1.70.0 -> 1.71.0
rust: Upgrade 1.71.0 -> 1.71.1
sstate-cache-management: Rewrite in python
devtool: selftest: Fix test_devtool_modify_git_crates_subpath inequality
devtool: selftest: Fix test_devtool_modify_git_crates_subpath bbappend check
meta-selftest: hello-rs: Simple rust test recipe
devtool: selftest: Swap to hello-rs for crates testing
zvariant: Drop recipe
rust: Upgrade 1.71.1 -> 1.72.0
rust: Upgrade 1.72.0 -> 1.72.1
rust: Upgrade 1.72.1 -> 1.73.0
rust: Upgrade 1.73.0 -> 1.74.0
rust: Upgrade 1.74.0 -> 1.74.1
Alexander Kanavin (21):
selftest/sstatetest: print output from bitbake with actual newlines, not \n
selftest/sstatetests: do not delete custom $TMPDIRs under build-st when testing printdiff
sstatesig/find_siginfo: special-case gcc-source when looking in sstate caches
oeqa/selftest/sstatetests: re-work CDN tests, add local cache tests
gobject-introspection: depend on setuptools to obtain distutils module
libcap-ng-python: depend on setuptools to obtain distutils copy
dnf: remove obsolete python3-gpg dependency (provided by gpgme)
gpgme: disable python support (until upstream fixes 3.12 compatibility)
python3-setuptools-rust: remove distutils dependency
python3-babel: replace distutils with setuptools, as supported by upstream
python3-pip: remove distutils depedency
glib-2.0: replace distutils dependency with setuptools
python3-pytest-runner: remove distutils dependency
python3-numpy: distutils is no longer required
bitbake: bitbake/codeparser.py: address ast module deprecations in py 3.12
glibc-y2038-tests: do not run tests using 32 bit time APIs
bitbake: bitbake/runqueue: add debugging for find_siginfo() calls
bitbake: bitbake-diffsigs/runqueue: adapt to reworked find_siginfo()
bitbake: bitbake/runqueue: prioritize local stamps over sstate signatures in printdiff
sstatesig/find_siginfo: unify a disjointed API
lib/sstatesig/find_siginfo: raise an error instead of returning None when obtaining mtime
Alexander Lussier-Cullen (6):
bitbake: toaster: fix pytest build test execution and test discovery
bitbake: toaster: Add verbose printout for missing chrome(driver) dependencies
bitbake: bitbake: toaster: add functional testing toaster error details
bitbake: toaster/tests: Exit tests on chromedriver creation failure
bitbake: toaster/tests: fix functional tests setup and teardown
bitbake: toaster/tests: fix chrome argument syntax and wait for driver exit
Alexandre Belloni (1):
oeqa/selftest/recipetool: stop looking for md5sum
Anuj Mittal (9):
sqlite3: upgrade 3.44.0 -> 3.44.2
base-passwd: upgrade 3.6.2 -> 3.6.3
bluez5: upgrade 5.70 -> 5.71
glib-2.0: upgrade 2.78.1 -> 2.78.3
glib-networking: upgrade 2.76.1 -> 2.78.0
puzzles: upgrade to latest revision
stress-ng: upgrade 0.17.01 -> 0.17.03
libusb1: fix upstream version check
enchant2: upgrade 2.6.2 -> 2.6.4
Archana Polampalli (1):
bluez5: fix CVE-2023-45866
Bruce Ashfield (31):
linux-yocto/6.5: cfg: split runtime and symbol debug
linux-yocto/6.5: update to v6.5.11
linux-yocto/6.1: update to v6.1.62
linux-yocto-dev: bump to v6.7
linux-yocto/6.5: update to v6.5.12
linux-yocto/6.5: update to v6.5.13
linux-yocto/6.1: update to v6.1.65
linux-yocto/6.1: drop removed IMA option
linux-yocto/6.5: drop removed IMA option
linux-yocto-rt/6.1: update to -rt18
linux-yocto/6.1: update to v6.1.66
linux-yocto/6.1: update to v6.1.67
linux-yocto/6.5: fix AB-INT: QEMU kernel panic: No irq handler for vector
linux-yocto/6.1: update to v6.1.68
oeqa/runtime/parselogs: add qemux86 ACPI ignore for kernel v6.6+
linux-libc-headers: update to v6.6-lts
linux-yocto: introduce 6.6 reference kernel
linux-yocto/6.6: fix AB-INT: QEMU kernel panic: No irq handler for vector
linux-yocto-rt/6.6: fix CVE exclusion include
linux-yocto/6.6: update CVE exclusions
linux-yocto/6.6: update to v6.6.8
linux-yocto/6.1: update to v6.1.69
linux-yocto/6.5: drop 6.5 recipes
linux-yocto-rt/6.6: correct meta data branch
linux-yocto/6.6: update to v6.6.9
linux-yocto/6.6: update CVE exclusions
linux-yocto/6.1: update to v6.1.70
linux-yocto/6.1: update CVE exclusions
linux-yocto/6.6: ARM fix configuration audit warning
linux-yocto/6.6: arm: jitter entropy backport
poky/poky-tiny: make 6.6 the default kernel
Changqing Li (1):
man-pages: remove conflict pages
Chen Qi (1):
devtool: use straight print in check-upgrade-status output
Clay Chang (1):
devtool: deploy: provide max_process to strip_execs
Daniel Ammann (1):
base: Unpack .7z files with p7zip
Deepthi Hemraj (1):
autoconf: Add missing perl modules to RDEPENDS
Dhairya Nagodra (2):
cve-update-nvd2-native: faster requests with API keys
cve-update-nvd2-native: increase the delay between subsequent request failures
Eilís 'pidge' Ní Fhlannagáin (3):
useradd: Fix issues with useradd dependencies
useradd: Add testcase for bugzilla issue (currently disabled)
usergrouptests.py: Add test for switching between static-ids
Enrico Scholz (1):
tcp-wrappers: drop libnsl2 build dependency
Etienne Cordonnier (2):
gdb/systemd: enable minidebuginfo support conditionally
manuals: document minidebuginfo
Fabio Estevam (3):
libdrm: Upgrade to 2.4.119
kmscube: Upgrade to latest revision
bmap-tools: Upgrade to 3.7
Hongxu Jia (2):
socat: 1.7.4.4 -> 1.8.0.0
man-db: 2.11.2 -> 2.12.0
Jason Andryuk (3):
linux-firmware: Package iwlwifi .pnvm files
linux-firmware: Change bnx2 packaging
linux-firmware: Create bnx2x subpackage
Jeremy A. Puhlman (1):
create-spdx-2.2: combine spdx can try to write before dir creation
Jermain Horsman (2):
lib/bblayers/makesetup.py: Remove unused imports
lib/bblayers/buildconf.py: Remove unused imports/variables
Jose Quaresma (2):
go: update 1.20.10 -> 1.20.11
go: update 1.20.11 -> 1.20.12
Joshua Watt (11):
bitbake: bitbake-hashserv: Add description of permissions
bitbake.conf: Add runtimedir
rpcbind: Specify state directory under /run
libinput: Add packageconfig for tests
ipk: Switch to using zstd compression
lib/oe/path.py: Add relsymlink()
lib/packagedata.py: Fix broken symlinks for providers with a '/'
bitbake: contrib/vim: Syntax improvements
classes-global/sstate: Fix variable typo
lib/packagedata.py: Add API to iterate over rprovides
classes-global/insane: Look up all runtime providers for file-rdeps
Julien Stephan (19):
recipetool: create_buildsys_python.py: initialize metadata
recipetool: create: add trailing newlines
recipetool: create: add new optional process_url callback for plugins
recipetool: create_buildsys_python: add pypi support
oeqa/selftest/recipetool: remove spaces on empty lines
oeqa/selftest/recipetool/devtool: add test for pypi class
recipetool: appendsrcfile(s): add dry-run mode
recipeutils: bbappend_recipe: fix undefined variable
recipeutils: bbappend_recipe: fix docstring
recipeutils: bbappend_recipe: add a way to specify the name of the file to add
recipeutils: bbappend_recipe: remove old srcuri entry if parameters are different
recipetool: appendsrcfile(s): use params instead of extraline
recipeutils: bbappend_recipe: allow to patch the recipe itself
recipetool: appendsrcfile(s): add a mode to update the recipe itself
oeqa/selftest/recipetool: appendsrfile: add test for machine
oeqa/selftest/recipetool: appendsrc: add test for update mode
oeqa/selftest/recipetool: add back checksum checks on pypi tests
oeqa/selftest/recipetool: remove left over from development
oeqa/selftest/recipetool: fix metadata corruption on meta layer
Kevin Hao (2):
beaglebone-yocto: Remove the redundant kernel-devicetree
beaglebone-yocto: Remove the obsolete variables for uImage
Khem Raj (13):
tiff: Backport fixes for CVE-2023-6277
kmod: Fix build with latest musl
elfutils: Use own basename API implementation
util-linux: Fix build with latest musl
sysvinit: Include libgen.h for basename API
attr: Fix build with latest musl
opkg: Use own version of portable basename function
util-linux: Delete md-raid tests
gdb: Update to gdb 14.1 release
systemd: Fix build with latest musl
qemu: Fix build with latest musl
qemu: Add packageconfig knob to enable pipewire support
weston: Include libgen.h for basename
Lee Chee Yang (5):
migration-guides: reword fix in release-notes-4.3.1
migration-guides: add release notes for 4.0.15
perlcross: update to 1.5.2
perl: 5.38.0 -> 5.38.2
curl: update to 8.5.0
Lucas Stach (1):
mesa: upgrade 23.2.1 -> 23.3.1
Ludovic Jozeau (1):
image-live.bbclass: LIVE_ROOTFS_TYPE support compression
Lukas Funke (1):
selftest: wic: add test for zerorize option of empty plugin
Malte Schmidt (1):
wic: extend empty plugin with options to write zeros to partiton
Markus Volk (3):
gtk4: upgrade 4.12.3 -> 4.12.4
libadwaita: update 1.4.0 -> 1.4.2
appstream: Upgrade 0.16.3 -> 1.0.0
Marlon Rodriguez Garcia (5):
bitbake: toaster/tests: Update build test
bitbake: toaster: Added new feature to import eventlogs from command line into toaster using replay functionality
bitbake: toaster: remove test and update setup to avoid rebuilding image
bitbake: toaster: Commandline build import table improvements
bitbake: toaster: Added validation to stop import if there is a build in progress
Marta Rybczynska (1):
bitbake: toastergui: verify that an existing layer path is given
Massimiliano Minella (1):
zstd: fix LICENSE statement
Michael Opdenacker (8):
test-manual: text and formatting fixes
test-manual: resource updates
test-manual: use working example
test-manual: add links to python unittest
test-manual: explicit or fix file paths
test-manual: add or improve hyperlinks
dev-manual: runtime-testing: fix test module name
poky.conf: update SANITY_TESTED_DISTROS to match autobuilder
Mikko Rapeli (1):
runqemu: match .rootfs. in addition to -image- for rootfs
Ming Liu (1):
grub: fs/fat: Don't error when mtime is 0
Mingli Yu (2):
python3-license-expression: Fix the ptest failure
ptest-packagelists.inc: Add python3-license-expression
Pavel Zhukov (2):
bitbake: utils: Do not create directories with ${ in the name
oeqa/selftest/bbtests: Add test for unexpanded variables in the dirname
Peter Kjellerstedt (11):
oeqa/selftest/devtool: Correct git clone of local repository
oeqa/selftest/devtool: Avoid global Git hooks when amending a patch
oeqa/selftest/devtool: Make test_devtool_load_plugin more resilient
oeqa/selftest/recipetool: Make test_recipetool_load_plugin more resilient
lib/oe/recipeutils: Avoid wrapping any SRC_URI[sha*sum] variables
recipetool: create: Improve identification of licenses
recipetool: create: Only include the expected SRC_URI checksums
devtool: upgrade: Update all existing checksums for the SRC_URI
devtool: modify: Make --no-extract work again
devtool: modify: Handle recipes with a menuconfig task correctly
dev-manual: Discourage the use of SRC_URI[md5sum]
Peter Marko (1):
dtc: preserve version also from shallow git clones
Philip Balister (1):
sanity.bbclass: Check for additional native perl modules.
Renat Khalikov (1):
python3-maturin: Add missing space appending to CFLAGS
Richard Purdie (41):
bitbake: runqueue: Improve inter setscene task dependency handling
bitbake: bb/toaster: Fix assertEquals deprecation warnings
bitbake: toaster: Fix assertRegexpMatches deprecation warnings
bitbake: toastermain/settings: Avoid python filehandle closure warnings
bitbake: toastergui: Fix regex markup issues
bitbake: bitbake: Move to version 2.6.1 to mark runqueue changes
bitbake: toaster-eventreplay: Remove ordering assumptions
sanity.conf: Require bitbake 2.6.1 for recent runqueue change
sstate: Remove unneeded code from setscene_depvalid() related to useradd
oeqa/runtime/systemd: Ensure test runs only on systemd images
bitbake: toaster: Update to use qemux86-64 machine by default
bitbake: toaster/tests/builds: Add BB_HASHSERVE passthrough
pseudo: Update to pull in syncfs probe fix
useradd: Fix useradd do_populate_sysroot dependency bug
sstate: Fix dir ownership issues in SSTATE_DIR
oeqa/sstatetests: Disable gcc source printdiff test for now
build-appliance-image: Update to master head revision
bitbake: utils: Fix mkdir with PosixPath
bitbake: runqueue: Remove tie between rqexe and starts_worker
build-appliance-image: Update to master head revision
testimage: Exclude wtmp from target-dumper commands
qemurunner: Improve stdout logging handling
qemurunner: Improve handling of serial port output blocking
oeqa/selftest/overlayfs: Don't overwrite DISTRO_FEATURES
testimage: Drop target_dumper and most of monitor_dumper
oeqa/selftest/overlayfs: Fix whitespace
qemu: Clean up DEPENDS
qemu: Ensure pip and the python venv aren't used for meson
curl: Disable two intermittently failing tests
linux/cve-exclusion6.1: Update to latest kernel point release
lib/prservice: Improve lock handling robustness
oeqa/selftest/prservice: Improve test robustness
scripts: Drop shell sstate-cache-management
oeqa/selftest/sstatetests: Update sstate management script tests to python script
curl: Disable test 1091 due to intermittent failures
bitbake: lib/bb: Add workaround for libgcc issues with python 3.8 and 3.9
bitbake: bitbake: Post release version bump to 2.7.0
bitbake: siggen: Ensure version of siggen is verified
bitbake: bitbake: Version bump for find_siginfo chanages
sstatesig: Add version information for find_sigingfo
sanity: Require bitbake 2.7.1
Robert Berger (1):
uninative-tarball.xz - reproducibility fix
Robert Yang (5):
gettext: Upgrade 0.22.3 -> 0.22.4
nfs-utils: Upgrade 2.6.3 -> 2.6.4
archiver.bbclass: Improve work-shared checking
nfs-utils: Update Upstream-Status
archiver.bbclass: Drop tarfile module to improve performance
Ross Burton (23):
avahi: update URL for new project location
oeqa/runtime/parselogs: load ignores from disk
oeqa/runtime/parselogs: migrate ignores
meta-yocto-bsp/oeqa/parselogs: add BSP-specific ignores
linux-yocto: update CVE exclusions
genericx86: remove redundant assignments
images: remove redundant IMAGE_BASENAME assignments
insane: ensure more paths have the workdir removed
tcl: skip timing-dependent tests in run-ptest
qemurunner: remove unused import
go: set vendor in CVE_PRODUCT
runqemu: add qmp socket support
linux-yocto: update CVE exclusions
tcl: skip async and event tests in run-ptest
images: add core-image-initramfs-boot
machine/arch-armv9: remove crc and sve tunes, they are mandatory
python3: re-enable profile guided optimisation
openssl: mark assembler sections as call targets for PAC/BTI support on aarch64
nativesdk: ensure features don't get backfilled
nativesdk: don't unset MACHINE_FEATURES, let machine-sdk/ set it
conf/machine-sdk: declare qemu-usermode SDK_MACHINE_FEATURE
libseccomp: remove redundant PV assignment
oeqa/parselogs-ignores-qemuarmv5: add comments and organise
Saul Wold (1):
package.py: OEHasPackage: Add MLPREFIX to packagename
Shubham Kulkarni (1):
tzdata: Upgrade to 2023d
Simone Weiß (2):
manuals: brief-yoctoprojectqs: align variable order with default local.conf
patchtest: Add test for deprecated CVE_CHECK_IGNORE
Soumya Sambu (1):
ncurses: Fix - tty is hung after reset
Sundeep KOKKONDA (1):
rust: rustdoc reproducibility issue fix - disable PGO
Tim Orling (12):
python3-bcrypt: upgrade 4.0.1 -> 4.1.1
python3-pygments: upgrade 2.16.1 -> 2.17.2
recipetool: pypi: do not clobber SRC_URI checksums
python3-setuptools-rust: BBCLASSEXTEND + nativesdk
python3-maturin: add v1.4.0
python3-maturin: bzip2-sys reproduciblility
classes-recipe: add python_maturin.bbclass
recipetool: add python_maturin support
oe-selfest: add maturn runtime (testimage) test
oeqa: add simple 'maturin' SDK (testsdk) test case
oeqa: add "maturin develop" SDK test case
oeqa: add runtime 'maturin develop' test case
Tom Rini (1):
inetutils: Update to the 2.5 release
Trevor Gamblin (1):
scripts/runqemu: fix regex escape sequences
Victor Kamensky (5):
systemtap: upgrade 4.9 -> 5.0
systemtap: do not install uprobes and uprobes sources
systemtap-uprobes: removed as obsolete
systemtap: explicit handling debuginfod library dependency
systemtap: fix libdebuginfod auto detection logic
Vijay Anusuri (1):
avahi: backport CVE-2023-1981 & CVE's follow-up patches
Viswanath Kraleti (2):
image-uefi.conf: Add EFI_UKI_PATH variable
systemd-boot: Add recipe to compile native
Wang Mingyu (38):
kbd: upgrade 2.6.3 -> 2.6.4
libatomic-ops: upgrade 7.8.0 -> 7.8.2
libnl: upgrade 3.8.0 -> 3.9.0
libseccomp: upgrade 2.5.4 -> 2.5.5
libva-utils: upgrade 2.20.0 -> 2.20.1
dnf: upgrade 4.18.1 -> 4.18.2
gpgme: upgrade 1.23.1 -> 1.23.2
kea: upgrade 2.4.0 -> 2.4.1
opkg-utils: upgrade 0.6.2 -> 0.6.3
repo: upgrade 2.39 -> 2.40
sysstat: upgrade 12.7.4 -> 12.7.5
p11-kit: upgrade 0.25.2 -> 0.25.3
python3-babel: upgrade 2.13.1 -> 2.14.0
python3-dbusmock: upgrade 0.29.1 -> 0.30.0
python3-hatchling: upgrade 1.18.0 -> 1.20.0
python3-hypothesis: upgrade 6.90.0 -> 6.92.1
python3-importlib-metadata: upgrade 6.8.0 -> 7.0.0
python3-license-expression: upgrade 30.1.1 -> 30.2.0
python3-pathspec: upgrade 0.11.2 -> 0.12.1
python3-pip: upgrade 23.3.1 -> 23.3.2
python3-psutil: upgrade 5.9.6 -> 5.9.7
python3-pytest-runner: upgrade 6.0.0 -> 6.0.1
python3-trove-classifiers: upgrade 2023.11.22 -> 2023.11.29
python3-typing-extensions: upgrade 4.8.0 -> 4.9.0
python3-wcwidth: upgrade 0.2.11 -> 0.2.12
ttyrun: upgrade 2.29.0 -> 2.30.0
xwayland: upgrade 23.2.2 -> 23.2.3
diffoscope: upgrade 252 -> 253
iputils: upgrade 20221126 -> 20231222
gstreamer1.0: upgrade 1.22.7 -> 1.22.8
dhcpcd: upgrade 10.0.5 -> 10.0.6
fontconfig: upgrade 2.14.2 -> 2.15.0
python3-setuptools: upgrade 69.0.2 -> 69.0.3
python3-dbusmock: upgrade 0.30.0 -> 0.30.1
python3-hatchling: upgrade 1.20.0 -> 1.21.0
python3-importlib-metadata: upgrade 7.0.0 -> 7.0.1
python3-lxml: upgrade 4.9.3 -> 4.9.4
aspell: upgrade 0.60.8 -> 0.60.8.1
Yash Shinde (1):
rust: Disable rust oe-selftest
Yi Zhao (3):
json-glib: upgrade 1.6.6 -> 1.8.0
psplash: upgrade to latest revision
debianutils: upgrade 5.14 -> 5.15
Yoann Congal (2):
lib/oe/patch: handle creating patches for CRLF sources
strace: Disable bluetooth support by default
Zang Ruochen (2):
ell: upgrade 0.60 -> 0.61
musl: add typedefs for Elf64_Relr and Elf32_Relr
Zoltan Boszormenyi (1):
update_gtk_icon_cache: Fix for GTK4-only builds
venkata pyla (1):
wic: use E2FSPROGS_FAKE_TIME and hash_seed to generate reproducible ext4 images
meta-openembedded: 5ad7203f68..7d8115d550:
Alex Kiernan (7):
mdns: Fix HOMEPAGE URL
mbedtls: Upgrade 3.5.0 -> 3.5.1
c-ares: Upgrade 1.22.1 -> 1.24.0
mdns: Upgrade 2200.40.37.0.1 -> 2200.60.25.0.4
c-ares: Move to tarballs, add ptest and static support
thin-provisioning-tools: Upgrade 1.0.4 -> 1.0.9
bearssl: Upgrade to latest
Alexander Kanavin (29):
python3-pyinotify: remove as unmaintained
python3-supervisor: do not rely on smtpd module
python3-meld3: do not rely on smtpd module
python3-m2crypto: do not rely on smtpd module
python3-uinput: remove as unmaintained
python3-mcrypto: rely on setuptools for distutils copy
python3-joblib: do not rely in distutils
python3-web3: remove distutils dependency
python3-cppy: remove unused distutils dependency
python3-pyroute2: remove unused distutils dependency
python3-eventlet: backport a patch to remove distutils dependency
python3-unoconv: rely on setuptools to obtain distutils copy
python3-astroid: remove unneeded distutils dependency
python3-django: remove unneeded distutils dependency
python3-pillow: remove unneeded distutils dependency
python3-grpcio: update 1.56.2 -> 1.59.3
gstd: correctly delete files in do_install
libplist: fix python 3.12 compatibility
libcamera: skip until upstream resolves python 3.12 compatibility
nodejs: backport (partially) python 3.12 support
nodejs: backport (partially) python 3.12 support
polkit: remove long obsolete 0.119 version
mozjs-115: split the way-too-long PYTHONPATH line
polkit: update mozjs dependency 102 -> 115
mozjs-115: backport py 3.12 compatibility
mozjs-102: remove the recipe
gthumb: update 3.12.2 -> 3.12.4
flatpak: do not rely on executables from the host
bolt: package systemd units
Archana Polampalli (1):
cjson: upgrade 1.7.16 -> 1.7.17
Bruce Ashfield (1):
zfs: update to 2.2.2
Changqing Li (2):
postgresql: upgrade 15.4 -> 15.5
redis: upgrade 6.2.13 -> 6.2.14
Derek Straka (70):
python3-greenlet: update to version 3.0.2
python3-ujson: update to version 5.9.0
python3-termcolor: update to version 2.4.0
python3-cmake: update to version 3.28.0
python3-pint: upgrade to 0.23
python3-gnupg: update to 0.5.2
python3-pyzmq: update to 25.1.2
python3-tox: update to version 4.11.4
python3-olefile: update to version 0.47
python3-distlib: update to version 0.3.8
python3-colorlog: update to version 6.8.0
python3-pymongo: update version to 4.6.1
python3-bandit: update to version 1.7.6
python3-gmqtt: update to version 0.6.13
python3-portion: update to version 2.4.2
python3-prompt-toolkit: update to version 3.0.43
python3-asyncinotify: update to version 4.0.4
python3-bitstring: update to version 4.1.4
python3-ipython: update to version 8.18.1
nginx: update versions for both the stable branch and mainline
python3-portalocker: update to version 2.8.2
python3-astroid: update to version 3.0.2
python3-alembic: update to version 1.13.1
python3-pymisp: update to verion 2.4.182
python3-ninja: update to version 1.11.1.1
python3-coverage: update to version 7.3.4
python3-pdm: update to version 2.11.1
python3-paramiko: update to version 3.4.0
python3-zeroconf: update to version 0.131.0
python3-wtforms: update to version 3.1.1
python3-isort: update to version 5.13.2
python3-protobuf: update to version 4.25.1
python3-lazy-object-proxy: update to version 1.10.0
python3-cantools: update to version 39.4.0
python3-sentry-sdk: update to version 1.39.1
python3-xmlschema: update to version 2.5.1
python3-apiflask: update to version 2.1.0
python3-rapidjson: update to version 1.14
python3-bitarray: update to version 2.9.0
python3-pyfanotify: update to version 0.2.2
python3-eventlet: update to version 0.34.1
python3-flask-wtf: update to version 1.2.1
python3-grpcio: update to version 1.60.0
python3-grpcio-tools: update to version 1.60.0
python3-cmake: update to version 3.28.1
python3-flask-sqlalchemy: fix upstream uri check
python3-wtforms: fix upstream uri and version check
gyp: update to the latest commit
python3-ipython-genutils: fix upstream uri and version check
python3-flask: fix upstream uri and version check
python3-wpa-supplicant: fix upstream uri and version check
python3-uswid: update to version 0.4.7
python3-flask-wtf: fix upstream uri and version check
python3-gspread: update to version 5.12.3
python3-pytest-html: update to version 4.1.1
python3-setuptools-scm-git-archive: remove obsolete package
python3-pyroute2: update to version 0.7.10
python3-constantly: update to version 23.10.4
python3-mypy: update to version 1.8.0
python3-flask-jwt-extended: update to version 4.6.0
python3-greenlet: update to version 3.0.3
python3-web3: update to version 6.13.0
python3-parse: update to version 1.20.0
python3-kmod: add comment about update to version 0.9.2
python3-engineio: update to version 4.8.1
python3-sqlalchemy: update to version 2.0.24
python3-pdm-backend: update to version 2.1.8
python3-cantools: update to version 39.4.1
python3-argh: update to version 0.30.5
python3-dominate: update to version 2.9.1
Dmitry Baryshkov (2):
android-tools: remove two Debianisms
networkmanager: drop libnewt dependency
Frederic Martinsons (3):
crash: factorize recipe with inc file to prepare cross-canadian version
crash: add cross canadian version
crash: update to 8.0.4
Jan Vermaete (1):
netdata: added Python as rdepends
Jean-Marc BOUCHE (1):
terminus-font: build compressed archives with -n
Jose Quaresma (1):
ostree: Upgrade 2023.7 -> 2023.8
Joshua Watt (1):
redis: Create state directory in systemd service
Jörg Sommer (1):
i2cdev: New recipe with i2c tools
Kai Kang (1):
lvm2: 2.03.16 -> 2.03.22
Khem Raj (3):
Revert "nodejs: backport (partially) python 3.12 support"
Revert "libcamera: skip until upstream resolves python 3.12 compatibility"
libcamera: Fix build with python 3.12
Leon Anavi (11):
sip: Upgrade 6.7.12 -> 6.8.0
python3-expandvars: add recipe
python3-frozenlist: upgrade 1.4.0 -> 1.4.1
python3-yarl: upgrade 1.9.2 -> 1.9.4
python3-coverage: upgrade 7.3.2 -> 7.3.3
python3-cycler: upgrade 0.11.0 -> 0.12.1
python3-aiohue: upgrade 4.6.2 -> 4.7.0
python3-sdbus: upgrade 0.11.0 -> 0.11.1
python3-zeroconf: upgrade 0.128.4 -> 0.130.0
python3-dominate: upgrade 2.8.0 -> 2.9.0
python3-rlp: upgrade 3.0.0 -> 4.0.0
Marek Vasut (1):
faad2: Upgrade 2.10.0 -> 2.11.1
Markus Volk (3):
wireplumber: update 0.4.15 -> 0.4.17
tracker: dont inherit gsettings
gnome-software: update 45.1 -> 45.2
Martin Jansa (4):
monocypher: pass LIBDIR to fix installed-vs-shipped QA issue with multilib
rygel: fix build with gtk+3 PACKAGECONFIG disabled
rygel: add x11 to DISTRO_FEATURES
driverctl: fix installed-vs-shipped
Meenali Gupta (1):
nginx: upgrade 1.25.2 -> 1.25.3
Mingli Yu (2):
mariadb: Upgrade to 10.11.6
tk: Remove buildpath issue
Nathan BRIENT (1):
cyaml: new recipe
Niko Mauno (1):
pkcs11-provider: Add recipe
Ny Antra Ranaivoarison (1):
python3-click-spinner: backport patch that fixes deprecated methods
Patrick Wicki (1):
poco: upgrade 1.12.4 -> 1.12.5p2
Petr Chernikov (1):
abseil-cpp: remove -Dcmake_cxx_standard=14 flag from extra_oecmake
Robert Yang (1):
minifi-cpp: Fix do_configure error builder aarch64
Ross Burton (13):
Remove unused SRC_DISTRIBUTE_LICENSES
gspell: inherit gtk-doc
gspell: update DEPENDS, switch iso-codes for icu
librest: remove spurious build dependencies
librest: inherit gtk-doc
keybinder: use autotools-brokensep instead of setting B
keybinder: disable gtk-doc documentation
gtksourceview3: remove obsolete DEPENDS
libgsf: remove obsolete DEPENDS
evolution-data-server: remove obsolete intltool DEPENDS
php: remove lemon-native build dependency
lemon: upgrade to 3.44.2
renderdoc: no need to depend on vim-native
Samuli Piippo (1):
jasper: enable opengl only wih x11
Theodore A. Roth (1):
python3-flask-sqlalchemy: upgrade 2.5.1 -> 3.1.1
Thomas Perrot (2):
networkmanager: add missing modemmanager rdepends
networkmanager: fix some missing pkgconfig
Tim Orling (8):
python3-pydantic-core: add v2.14.5
python3-annotated-types: add v0.6.0
python3-pydantic: fix RDEPENDS
python3-dirty-equals: add v0.7.1
python3-pydantic-core: enable ptest
python3-cloudpickle: add v3.0.0
python3-pydantic: enable ptest
python3-yappi: upgrade 1.4.0 -> 1.6.0; fix ptests
Wang Mingyu (61):
python3-alembic: upgrade 1.12.1 -> 1.13.0
python3-ansi2html: upgrade 1.8.0 -> 1.9.1
python3-argcomplete: upgrade 3.1.6 -> 3.2.1
python3-dbus-fast: upgrade 2.15.0 -> 2.21.0
python3-django: upgrade 4.2.7 -> 5.0
python3-flask-restx: upgrade 1.2.0 -> 1.3.0
python3-google-api-core: upgrade 2.14.0 -> 2.15.0
python3-google-api-python-client: upgrade 2.108.0 -> 2.111.0
python3-googleapis-common-protos: upgrade 1.61.0 -> 1.62.0
python3-google-auth: upgrade 2.23.4 -> 2.25.2
python3-imageio: upgrade 2.33.0 -> 2.33.1
python3-isort: upgrade 5.12.0 -> 5.13.1
python3-path: upgrade 16.7.1 -> 16.9.0
python3-platformdirs: upgrade 4.0.0 -> 4.1.0
python3-pytest-asyncio: upgrade 0.22.0 -> 0.23.2
python3-sentry-sdk: upgrade 1.37.1 -> 1.39.0
python3-bitarray: upgrade 2.8.3 -> 2.8.5
python3-eth-keyfile: upgrade 0.6.1 -> 0.7.0
python3-eth-rlp: upgrade 0.3.0 -> 1.0.0
python3-fastnumbers: upgrade 5.0.1 -> 5.1.0
python3-pylint: upgrade 3.0.2 -> 3.0.3
python3-tornado: upgrade 6.3.3 -> 6.4
python3-traitlets: upgrade 5.13.0 -> 5.14.0
python3-types-setuptools: upgrade 68.2.0.2 -> 69.0.0.0
python3-virtualenv: upgrade 20.24.7 -> 20.25.0
python3-web3: upgrade 6.11.3 -> 6.12.0
python3-websocket-client: upgrade 1.6.4 -> 1.7.0
python3-zeroconf: upgrade 0.127.0 -> 0.128.4
ctags: upgrade 6.0.20231126.0 -> 6.0.20231210.0
gensio: upgrade 2.8.0 -> 2.8.2
hwdata: upgrade 0.376 -> 0.377
lvgl: upgrade 8.3.10 -> 8.3.11
gjs: upgrade 1.78.0 -> 1.78.1
ifenslave: upgrade 2.13 -> 2.14
libei: upgrade 1.1.0 -> 1.2.0
pkcs11-helper: upgrade 1.29.0 -> 1.30.0
strongswan: upgrade 5.9.12 -> 5.9.13
webkitgtk3: upgrade 2.42.2 -> 2.42.3
sip: upgrade 6.8.0 -> 6.8.1
paho-mqtt-cpp: upgrade 1.3.1 -> 1.3.2
dbus-cxx: upgrade 2.4.0 -> 2.5.0
exiftool: upgrade 12.70 -> 12.71
uftp: upgrade 5.0.2 -> 5.0.3
ctags: upgrade 6.0.20231210.0 -> 6.0.20231224.0
jasper: Fix install conflict when enable multilib.
jq: upgrade 1.7 -> 1.7.1
libmbim: upgrade 1.31.1 -> 1.31.2
libqmi: upgrade 1.34.0 -> 1.35.1
opencl-headers: upgrade 2023.04.17 -> 2023.12.14
valijson: upgrade 1.0.1 -> 1.0.2
python3-apispec: upgrade 6.3.0 -> 6.3.1
python3-asyncinotify: upgrade 4.0.4 -> 4.0.5
python3-bitarray: upgrade 2.9.0 -> 2.9.1
python3-cassandra-driver: upgrade 3.28.0 -> 3.29.0
python3-ipython: upgrade 8.18.1 -> 8.19.0
python3-pydantic: upgrade 2.5.2 -> 2.5.3
python3-regex: upgrade 2023.10.3 -> 2023.12.25
opencl-icd-loader: upgrade 2023.04.17 -> 2023.12.14
python3-distro: upgrade 1.8.0 -> 1.9.0
zchunk: upgrade 1.3.2 -> 1.4.0
python3-eventlet: upgrade 0.34.1 -> 0.34.2
William Lyu (1):
networkmanager: Improved SUMMARY and added DESCRIPTION
Xiangyu Chen (1):
layer.conf: add libbpf to NON_MULTILIB_RECIPES
Yi Zhao (2):
open-vm-tools: upgrade 12.1.5 -> 12.3.5
samba: upgrade 4.18.8 -> 4.18.9
Zoltán Böszörményi (2):
mutter: Make gnome-desktop and libcanberra dependencies optional
zenity: Upgrade to 4.0.0
alperak (29):
jasper: upgrade 2.0.33 -> 4.1.1
xcursorgen: upgrade 1.0.7 -> 1.0.8
xstdcmap: upgrade 1.0.4 -> 1.0.5
xlsclients: upgrade 1.1.4 -> 1.1.5
xlsatoms: upgrade 1.1.3 -> 1.1.4
xkbevd: upgrade 1.1.4 -> 1.1.5
xgamma: upgrade 1.0.6 -> 1.0.7
sessreg: upgrade 1.1.2 -> 1.1.3
xbitmaps: upgrade 1.1.2 -> 1.1.3
xcursor-themes: add recipe
xorg-docs: add recipe
xorg-sgml-doctools: update summary depends and inc file
xf86-video-ati: upgrade 19.1.0 -> 22.0.0
xf86-input-void: upgrade 1.4.1 -> 1.4.2
libxaw: upgrade 1.0.14 -> 1.0.15
xf86-video-mga: upgrade 2.0.0 -> 2.0.1
snappy: upgrade 1.1.9 -> 1.1.10
xsetroot: upgrade 1.1.2 -> 1.1.3
libbytesize: Removed unnecessary setting of B
libmxml: use autotools-brokensep instead of setting B
libsombok3: use autotools-brokensep instead of setting B
pgpool2: use autotools-brokensep instead of setting B
qpdf: upgrade 11.6.3 -> 11.6.4
cpprest: upgrade 2.10.18 -> 2.10.19
avro-c: upgrade 1.11.2 -> 1.11.3
dool: upgrade 1.1.0 -> 1.3.1
driverctl: upgrade 0.111 -> 0.115
hstr: upgrade 2.5.0 -> 3.1.0
libharu: upgrade 2.3.0 -> 2.4.4
meta-security: 070a1e82cc..b2e1511338:
Armin Kuster (6):
libgssglue: update to 0.8
python3-privacyidea: Update to 3.9.1
lynis: Update SRC_URI to improve updater
layers: Move READMEs to markdown format
arpwatch: adjust CONFIGURE params to allow to build again.
python3-pyinotify: fail2ban needs this module
Dawid Dabrowski (1):
libhoth recipe update
Erik Schilling (2):
dm-verity-img.bbclass: use bc-native
dm-verity-img.bbclass: remove IMAGE_NAME_SUFFIX
Mikko Rapeli (2):
tpm2-tss: support native builds
dm-verity-img.bbclass: add DM_VERITY_DEPLOY_DIR
Change-Id: I94d7f1ee5ff2da4555c05fbf63a1293ec8f249c2
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
deleted file mode 100644
index d1ac2c6..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From bfe579283e5fcab60172818bfe4e6e1d40c2bed0 Mon Sep 17 00:00:00 2001
-From: Kurt Kiefer <kurt.kiefer@arthrex.com>
-Date: Mon, 18 Oct 2021 11:21:14 -0700
-Subject: [PATCH] Fix for Python 3.10 compatibility
-
-The collections.abc module replaces collections for Python 3.10
-
-Signed-off-by: Kurt Kiefer <kurt.kiefer@arthrex.com>
----
-Upstream-Status: Pending
-
- pylib/gyp/common.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pylib/gyp/common.py b/pylib/gyp/common.py
-index b268d229..4f9cb0ec 100644
---- a/pylib/gyp/common.py
-+++ b/pylib/gyp/common.py
-@@ -4,7 +4,7 @@
-
- from __future__ import with_statement
-
--import collections
-+import collections.abc
- import errno
- import filecmp
- import os.path
-@@ -494,7 +494,7 @@ def uniquer(seq, idfun=None):
-
-
- # Based on http://code.activestate.com/recipes/576694/.
--class OrderedSet(collections.MutableSet):
-+class OrderedSet(collections.abc.MutableSet):
- def __init__(self, iterable=None):
- self.end = end = []
- end += [None, end, end] # sentinel node for doubly linked list
diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
index 38906de..0f94a44 100644
--- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
@@ -5,9 +5,8 @@
SECTION = "devel"
SRC_URI = "git://chromium.googlesource.com/external/gyp;protocol=https;branch=master \
- file://0001-Fix-for-Python-3.10-compatibility.patch \
"
-SRCREV = "caa60026e223fc501e8b337fd5086ece4028b1c6"
+SRCREV = "a03d7413becefc8d55c8aa3df58b55b9bd0e9052"
S = "${WORKDIR}/git"
PV = "0.1+git${SRCPV}"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
index e030ff4..11d5e63 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
@@ -28,7 +28,6 @@
${PYTHON_PN}-threading \
${PYTHON_PN}-unixadmin \
${PYTHON_PN}-xml \
- ${PYTHON_PN}-distutils \
"
CVE_PRODUCT = "django"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.6.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.7.0.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.6.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.7.0.bb
index b9256ca..84aace4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.6.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_4.7.0.bb
@@ -4,9 +4,9 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=dab31a1d28183826937f4b152143a33f"
-SRC_URI[sha256sum] = "069af6bb0a7d34d566538af57cc10fb691ee04f844204e4f67d95a57f0b91a46"
+SRC_URI[sha256sum] = "3ca727b463e55bbe7c69b67f5503ffcd7d213c9644c4e458e3556ee6ea33855b"
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
RDEPENDS:${PN} += " \
${PYTHON_PN}-aiohttp \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.13.1.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.12.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.13.1.bb
index 107546d..2a9ac2c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.12.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.13.1.bb
@@ -4,7 +4,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f"
+SRC_URI[sha256sum] = "4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595"
PYPI_PACKAGE = "alembic"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-annotated-types_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-annotated-types_0.6.0.bb
new file mode 100644
index 0000000..79cbb66
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-annotated-types_0.6.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Reusable constraint types to use with typing.Annotated"
+DESCRIPTION = ""
+HOMEPAGE = ""
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c6afb13fdc220497ee5cded1e717ed67"
+
+SRC_URI[sha256sum] = "563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"
+
+S = "${WORKDIR}/annotated_types-${PV}"
+PYPI_PACKAGE = "annotated_types"
+
+inherit pypi python_hatchling
+
+RDEPENDS:${PN} = "python3-typing-extensions"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.9.1.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.9.1.bb
index 8dcd7b0..e419fdc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.9.1.bb
@@ -5,13 +5,12 @@
PYPI_PACKAGE = "ansi2html"
-SRC_URI[sha256sum] = "38b82a298482a1fa2613f0f9c9beb3db72a8f832eeac58eb2e47bf32cd37f6d5"
+SRC_URI[sha256sum] = "5c6837a13ecc1903aab7a545353312049dfedfe5105362ad3a8d9d207871ec71"
inherit pypi python_setuptools_build_meta
DEPENDS += " \
${PYTHON_PN}-setuptools-scm-native \
- ${PYTHON_PN}-setuptools-scm-git-archive-native \
"
RDEPENDS:${PN} = " \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb
index 88afdda..5bffa22 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb
@@ -7,7 +7,7 @@
PYPI_PACKAGE = "APIFlask"
-SRC_URI[sha256sum] = "c1ab81640a1ab252888e2cc7ae556272a169b449c582abae309a8fe295f9337d"
+SRC_URI[sha256sum] = "e7616d902d446eb9e1c67d1d8a34691b437f9da4fe7a3b4d49c91ba88c85ee2a"
RDEPENDS:${PN} += "\
python3-flask \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.1.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.1.bb
index fcdcd7a..6b9f704 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-apispec_6.3.1.bb
@@ -5,6 +5,6 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "6cb08d92ce73ff0b3bf46cb2ea5c00d57289b0f279fb0256a3df468182ba5344"
+SRC_URI[sha256sum] = "b38e4479916d43f2b1e88ce15fc2fae93adf2e8d55cb59ec74ac66a827941483"
RDEPENDS:${PN} += "python3-packaging"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.1.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.1.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.1.bb
index 28dd9f9..e6b9af0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.1.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.1.bb
@@ -3,7 +3,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2ee41112a44fe7014dce33e26468ba93"
-SRC_URI[sha256sum] = "3b1f07d133332547a53c79437527c00be48cca3807b1d4ca5cab1b26313386a6"
+SRC_URI[sha256sum] = "437f67fb9b058da5a090df505ef9be0297c4883993f3f56cb186ff087778cfb4"
PYPI_PACKAGE = "argcomplete"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb
index 82cfa3b..78e6149 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb
@@ -15,7 +15,7 @@
file://README.rst;beginline=261;endline=275;md5=39ec83a704aed9f33618c5d04e478a08 \
"
-SRC_URI[sha256sum] = "9fca8e69c4dad4f8d2a7bdfbdd80b0754462b53510a03e1b5cf2b43a87e6e960"
+SRC_URI[sha256sum] = "b37dfd617a09d19a4a7bcaed0e060b288bc7ac8dfdc0facf886a49a25ff33728"
inherit pypi python_flit_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.2.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.2.bb
index db3ef43..23501ce 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.2.bb
@@ -4,7 +4,7 @@
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
-SRC_URI[sha256sum] = "86b0bb7d7da0be1a7c4aedb7974e391b32d4ed89e33de6ed6902b4b15c97577e"
+SRC_URI[sha256sum] = "4a61cf0a59097c7bb52689b0fd63717cd2a8a14dc9f1eee97b82d814881c8c91"
inherit pypi python_setuptools_build_meta
@@ -21,7 +21,6 @@
"
RDEPENDS:${PN}:class-target += "\
- ${PYTHON_PN}-distutils \
${PYTHON_PN}-lazy-object-proxy \
${PYTHON_PN}-logging \
${PYTHON_PN}-six \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.5.bb
similarity index 65%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.5.bb
index 08dc77b..a7820c5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_4.0.5.bb
@@ -1,9 +1,9 @@
SUMMARY = "A simple optionally-async python inotify library, focused on simplicity of use and operation, and leveraging modern Python features"
HOMEPAGE = "https://gitlab.com/Taywee/asyncinotify"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6ec941a1cd6616454970d03cb9c9e8f8"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f75d2927d3c1ed2414ef72048f5ad640"
-SRC_URI[sha256sum] = "bcac19425b1b418bbbc4d31193ea3c39e24343cd7ddff2074ae7b599f1a04829"
+SRC_URI[sha256sum] = "95840eec6804797f9e8ee6d65a9d2a1159e77c5395a468dcfa4f44338ed1f8b6"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.6.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.6.bb
index ede7f92..3cf927e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.6.bb
@@ -2,7 +2,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
-SRC_URI[sha256sum] = "bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"
+SRC_URI[sha256sum] = "72ce7bc9741374d96fb2f1c9a8960829885f1243ffde743de70a19cee353e8f3"
DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.8.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.8.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb
index acacdab..0d7107a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.8.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb
@@ -4,7 +4,7 @@
LICENSE = "PSF-2.0"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d"
-SRC_URI[sha256sum] = "e15587b2bdf18d32eb3ba25f5f5a51bedd0dc06b3112a4c53dab5e7753bc6588"
+SRC_URI[sha256sum] = "912efbeed6d8b155c8e8c37464f79d75b1de58936c0f29ffb599ce95af5563f2"
inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.4.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.4.bb
index 8831d84..6fc2cf4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstring_4.1.4.bb
@@ -3,7 +3,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=661f450e2c0aef39b4b15597333444a7"
-SRC_URI[sha256sum] = "1b47c84644a961ba8503db2bba8a5965ab53e81474becdf0a18383b5b5f3f795"
+SRC_URI[sha256sum] = "94f3f1c45383ebe8fd4a359424ffeb75c2f290760ae8fcac421b44f89ac85213"
PYPI_PACKAGE = "bitstring"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb
index 0b590d2..e26405d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb
@@ -3,12 +3,14 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
-SRC_URI[sha256sum] = "2c3d081922591bc1611c9f1ff52d6c8af1d03314f8c724cc114d856cc555cc28"
+SRC_URI[sha256sum] = "98c4d007a6d9803c6433c743c0240e73de930530f8255e1e21d2e20e8991a30b"
PYPI_PACKAGE = "cantools"
inherit pypi python_poetry_core
+DEPENDS += "python3-setuptools-scm-native"
+
RDEPENDS:${PN} += "\
${PYTHON_PN}-can \
${PYTHON_PN}-bitstruct \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.28.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.28.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb
index 468aa24..8ec87fa 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.28.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb
@@ -8,7 +8,7 @@
LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
SRCNAME = "cassandra-driver"
-SRC_URI[sha256sum] = "64ff130d19f994b80997c14343a8306be52a0e7ab92520a534eed944c88d70df"
+SRC_URI[sha256sum] = "0a34f9534356e5fd33af8cdda109d5e945b6335cb50399b267c46368c4e93c98"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner/0001-Update-Versioneer-to-0.22.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner/0001-Update-Versioneer-to-0.22.patch
new file mode 100644
index 0000000..4edb5da
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner/0001-Update-Versioneer-to-0.22.patch
@@ -0,0 +1,2489 @@
+From 739f9da6bf0d2d9f0de624aee2ec71c65f62c275 Mon Sep 17 00:00:00 2001
+From: Hugo van Kemenade <hugovk@users.noreply.github.com>
+Date: Tue, 10 May 2022 18:17:50 +0300
+Subject: [PATCH] Update Versioneer to 0.22
+
+Upstream-Status: Backport [https://github.com/click-contrib/click-spinner/commit/5622ab0a0b4296dc8f10863f268ed98dccf4b642]
+
+Signed-off-by: Ny Antra Ranaivoarison <nyantra.ranaivoarison@smile.fr>
+---
+ click_spinner/__init__.py | 5 +-
+ click_spinner/_version.py | 665 +++++++++++++++++++++-
+ versioneer.py | 1128 ++++++++++++++++++++++++-------------
+ 3 files changed, 1400 insertions(+), 398 deletions(-)
+
+diff --git a/click_spinner/__init__.py b/click_spinner/__init__.py
+index aeec089..8e9f4f9 100644
+--- a/click_spinner/__init__.py
++++ b/click_spinner/__init__.py
+@@ -77,6 +77,5 @@ def spinner(beep=False, disable=False, force=False, stream=sys.stdout):
+ return Spinner(beep, disable, force, stream)
+
+
+-from ._version import get_versions
+-__version__ = get_versions()['version']
+-del get_versions
++from . import _version
++__version__ = _version.get_versions()['version']
+diff --git a/click_spinner/_version.py b/click_spinner/_version.py
+index 5ae340e..d44565d 100644
+--- a/click_spinner/_version.py
++++ b/click_spinner/_version.py
+@@ -1,21 +1,658 @@
+
+-# This file was generated by 'versioneer.py' (0.16) from
+-# revision-control system data, or from the parent directory name of an
+-# unpacked source archive. Distribution tarballs contain a pre-generated copy
+-# of this file.
++# This file helps to compute a version number in source trees obtained from
++# git-archive tarball (such as those provided by githubs download-from-tag
++# feature). Distribution tarballs (built by setup.py sdist) and build
++# directories (produced by setup.py build) will contain a much shorter file
++# that just contains the computed version number.
+
+-import json
++# This file is released into the public domain. Generated by
++# versioneer-0.22 (https://github.com/python-versioneer/python-versioneer)
++
++"""Git implementation of _version.py."""
++
++import errno
++import os
++import re
++import subprocess
+ import sys
++from typing import Callable, Dict
++import functools
++
++
++def get_keywords():
++ """Get the keywords needed to look up the version information."""
++ # these strings will be replaced by git during git-archive.
++ # setup.py/versioneer.py will grep for the variable names, so they must
++ # each be defined on a line of their own. _version.py will just call
++ # get_keywords().
++ git_refnames = "$Format:%d$"
++ git_full = "$Format:%H$"
++ git_date = "$Format:%ci$"
++ keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
++ return keywords
++
++
++class VersioneerConfig:
++ """Container for Versioneer configuration parameters."""
++
++
++def get_config():
++ """Create, populate and return the VersioneerConfig() object."""
++ # these strings are filled in when 'setup.py versioneer' creates
++ # _version.py
++ cfg = VersioneerConfig()
++ cfg.VCS = "git"
++ cfg.style = "pep440"
++ cfg.tag_prefix = "v"
++ cfg.parentdir_prefix = "click-spinner-"
++ cfg.versionfile_source = "click_spinner/_version.py"
++ cfg.verbose = False
++ return cfg
++
++
++class NotThisMethod(Exception):
++ """Exception raised if a method is not valid for the current scenario."""
++
++
++LONG_VERSION_PY: Dict[str, str] = {}
++HANDLERS: Dict[str, Dict[str, Callable]] = {}
++
++
++def register_vcs_handler(vcs, method): # decorator
++ """Create decorator to mark a method as the handler of a VCS."""
++ def decorate(f):
++ """Store f in HANDLERS[vcs][method]."""
++ if vcs not in HANDLERS:
++ HANDLERS[vcs] = {}
++ HANDLERS[vcs][method] = f
++ return f
++ return decorate
++
++
++def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
++ env=None):
++ """Call the given command(s)."""
++ assert isinstance(commands, list)
++ process = None
++
++ popen_kwargs = {}
++ if sys.platform == "win32":
++ # This hides the console window if pythonw.exe is used
++ startupinfo = subprocess.STARTUPINFO()
++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
++ popen_kwargs["startupinfo"] = startupinfo
++
++ for command in commands:
++ try:
++ dispcmd = str([command] + args)
++ # remember shell=False, so use git.cmd on windows, not just git
++ process = subprocess.Popen([command] + args, cwd=cwd, env=env,
++ stdout=subprocess.PIPE,
++ stderr=(subprocess.PIPE if hide_stderr
++ else None), **popen_kwargs)
++ break
++ except OSError:
++ e = sys.exc_info()[1]
++ if e.errno == errno.ENOENT:
++ continue
++ if verbose:
++ print("unable to run %s" % dispcmd)
++ print(e)
++ return None, None
++ else:
++ if verbose:
++ print("unable to find command, tried %s" % (commands,))
++ return None, None
++ stdout = process.communicate()[0].strip().decode()
++ if process.returncode != 0:
++ if verbose:
++ print("unable to run %s (error)" % dispcmd)
++ print("stdout was %s" % stdout)
++ return None, process.returncode
++ return stdout, process.returncode
++
++
++def versions_from_parentdir(parentdir_prefix, root, verbose):
++ """Try to determine the version from the parent directory name.
++
++ Source tarballs conventionally unpack into a directory that includes both
++ the project name and a version string. We will also support searching up
++ two directory levels for an appropriately named parent directory
++ """
++ rootdirs = []
++
++ for _ in range(3):
++ dirname = os.path.basename(root)
++ if dirname.startswith(parentdir_prefix):
++ return {"version": dirname[len(parentdir_prefix):],
++ "full-revisionid": None,
++ "dirty": False, "error": None, "date": None}
++ rootdirs.append(root)
++ root = os.path.dirname(root) # up a level
++
++ if verbose:
++ print("Tried directories %s but none started with prefix %s" %
++ (str(rootdirs), parentdir_prefix))
++ raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
++
++
++@register_vcs_handler("git", "get_keywords")
++def git_get_keywords(versionfile_abs):
++ """Extract version information from the given file."""
++ # the code embedded in _version.py can just fetch the value of these
++ # keywords. When used from setup.py, we don't want to import _version.py,
++ # so we do it with a regexp instead. This function is not used from
++ # _version.py.
++ keywords = {}
++ try:
++ with open(versionfile_abs, "r") as fobj:
++ for line in fobj:
++ if line.strip().startswith("git_refnames ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["refnames"] = mo.group(1)
++ if line.strip().startswith("git_full ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["full"] = mo.group(1)
++ if line.strip().startswith("git_date ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["date"] = mo.group(1)
++ except OSError:
++ pass
++ return keywords
++
++
++@register_vcs_handler("git", "keywords")
++def git_versions_from_keywords(keywords, tag_prefix, verbose):
++ """Get version information from git keywords."""
++ if "refnames" not in keywords:
++ raise NotThisMethod("Short version file found")
++ date = keywords.get("date")
++ if date is not None:
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++
++ # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
++ # datestamp. However we prefer "%ci" (which expands to an "ISO-8601
++ # -like" string, which we must then edit to make compliant), because
++ # it's been around since git-1.5.3, and it's too difficult to
++ # discover which version we're using, or to work around using an
++ # older one.
++ date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
++ refnames = keywords["refnames"].strip()
++ if refnames.startswith("$Format"):
++ if verbose:
++ print("keywords are unexpanded, not using")
++ raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
++ refs = {r.strip() for r in refnames.strip("()").split(",")}
++ # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
++ # just "foo-1.0". If we see a "tag: " prefix, prefer those.
++ TAG = "tag: "
++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
++ if not tags:
++ # Either we're using git < 1.8.3, or there really are no tags. We use
++ # a heuristic: assume all version tags have a digit. The old git %d
++ # expansion behaves like git log --decorate=short and strips out the
++ # refs/heads/ and refs/tags/ prefixes that would let us distinguish
++ # between branches and tags. By ignoring refnames without digits, we
++ # filter out many common branch names like "release" and
++ # "stabilization", as well as "HEAD" and "master".
++ tags = {r for r in refs if re.search(r'\d', r)}
++ if verbose:
++ print("discarding '%s', no digits" % ",".join(refs - tags))
++ if verbose:
++ print("likely tags: %s" % ",".join(sorted(tags)))
++ for ref in sorted(tags):
++ # sorting will prefer e.g. "2.0" over "2.0rc1"
++ if ref.startswith(tag_prefix):
++ r = ref[len(tag_prefix):]
++ # Filter out refs that exactly match prefix or that don't start
++ # with a number once the prefix is stripped (mostly a concern
++ # when prefix is '')
++ if not re.match(r'\d', r):
++ continue
++ if verbose:
++ print("picking %s" % r)
++ return {"version": r,
++ "full-revisionid": keywords["full"].strip(),
++ "dirty": False, "error": None,
++ "date": date}
++ # no suitable tags, so version is "0+unknown", but full hex is still there
++ if verbose:
++ print("no suitable tags, using unknown + full revision id")
++ return {"version": "0+unknown",
++ "full-revisionid": keywords["full"].strip(),
++ "dirty": False, "error": "no suitable tags", "date": None}
++
++
++@register_vcs_handler("git", "pieces_from_vcs")
++def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
++ """Get version from 'git describe' in the root of the source tree.
++
++ This only gets called if the git-archive 'subst' keywords were *not*
++ expanded, and _version.py hasn't already been rewritten with a short
++ version string, meaning we're inside a checked out source tree.
++ """
++ GITS = ["git"]
++ if sys.platform == "win32":
++ GITS = ["git.cmd", "git.exe"]
++
++ # GIT_DIR can interfere with correct operation of Versioneer.
++ # It may be intended to be passed to the Versioneer-versioned project,
++ # but that should not change where we get our version from.
++ env = os.environ.copy()
++ env.pop("GIT_DIR", None)
++ runner = functools.partial(runner, env=env)
++
++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
++ hide_stderr=True)
++ if rc != 0:
++ if verbose:
++ print("Directory %s not under git control" % root)
++ raise NotThisMethod("'git rev-parse --git-dir' returned error")
++
++ MATCH_ARGS = ["--match", "%s*" % tag_prefix] if tag_prefix else []
++
++ # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
++ # if there isn't one, this yields HEX[-dirty] (no NUM)
++ describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
++ "--always", "--long", *MATCH_ARGS],
++ cwd=root)
++ # --long was added in git-1.5.5
++ if describe_out is None:
++ raise NotThisMethod("'git describe' failed")
++ describe_out = describe_out.strip()
++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
++ if full_out is None:
++ raise NotThisMethod("'git rev-parse' failed")
++ full_out = full_out.strip()
++
++ pieces = {}
++ pieces["long"] = full_out
++ pieces["short"] = full_out[:7] # maybe improved later
++ pieces["error"] = None
++
++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
++ cwd=root)
++ # --abbrev-ref was added in git-1.6.3
++ if rc != 0 or branch_name is None:
++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
++ branch_name = branch_name.strip()
++
++ if branch_name == "HEAD":
++ # If we aren't exactly on a branch, pick a branch which represents
++ # the current commit. If all else fails, we are on a branchless
++ # commit.
++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
++ # --contains was added in git-1.5.4
++ if rc != 0 or branches is None:
++ raise NotThisMethod("'git branch --contains' returned error")
++ branches = branches.split("\n")
++
++ # Remove the first line if we're running detached
++ if "(" in branches[0]:
++ branches.pop(0)
++
++ # Strip off the leading "* " from the list of branches.
++ branches = [branch[2:] for branch in branches]
++ if "master" in branches:
++ branch_name = "master"
++ elif not branches:
++ branch_name = None
++ else:
++ # Pick the first branch that is returned. Good or bad.
++ branch_name = branches[0]
++
++ pieces["branch"] = branch_name
++
++ # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
++ # TAG might have hyphens.
++ git_describe = describe_out
++
++ # look for -dirty suffix
++ dirty = git_describe.endswith("-dirty")
++ pieces["dirty"] = dirty
++ if dirty:
++ git_describe = git_describe[:git_describe.rindex("-dirty")]
++
++ # now we have TAG-NUM-gHEX or HEX
++
++ if "-" in git_describe:
++ # TAG-NUM-gHEX
++ mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
++ if not mo:
++ # unparsable. Maybe git-describe is misbehaving?
++ pieces["error"] = ("unable to parse git-describe output: '%s'"
++ % describe_out)
++ return pieces
++
++ # tag
++ full_tag = mo.group(1)
++ if not full_tag.startswith(tag_prefix):
++ if verbose:
++ fmt = "tag '%s' doesn't start with prefix '%s'"
++ print(fmt % (full_tag, tag_prefix))
++ pieces["error"] = ("tag '%s' doesn't start with prefix '%s'"
++ % (full_tag, tag_prefix))
++ return pieces
++ pieces["closest-tag"] = full_tag[len(tag_prefix):]
++
++ # distance: number of commits since tag
++ pieces["distance"] = int(mo.group(2))
++
++ # commit: short hex revision ID
++ pieces["short"] = mo.group(3)
++
++ else:
++ # HEX: no tags
++ pieces["closest-tag"] = None
++ count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
++ pieces["distance"] = int(count_out) # total number of commits
+
+-version_json = '''
+-{
+- "dirty": false,
+- "error": null,
+- "full-revisionid": "7cadb31e3e257c64a47a67255547f0a746e1a465",
+- "version": "0.1.10"
+-}
+-''' # END VERSION_JSON
++ # commit date: see ISO-8601 comment in git_versions_from_keywords()
++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++ pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
++
++ return pieces
++
++
++def plus_or_dot(pieces):
++ """Return a + if we don't already have one, else return a ."""
++ if "+" in pieces.get("closest-tag", ""):
++ return "."
++ return "+"
++
++
++def render_pep440(pieces):
++ """Build up version string, with post-release "local version identifier".
++
++ Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
++ get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
++
++ Exceptions:
++ 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += plus_or_dot(pieces)
++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0+untagged.%d.g%s" % (pieces["distance"],
++ pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
++def render_pep440_branch(pieces):
++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
++
++ The ".dev0" means not master branch. Note that .dev0 sorts backwards
++ (a feature branch will appear "older" than the master branch).
++
++ Exceptions:
++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0"
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+untagged.%d.g%s" % (pieces["distance"],
++ pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
++def pep440_split_post(ver):
++ """Split pep440 version string at the post-release segment.
++
++ Returns the release segments before the post-release and the
++ post-release version number (or -1 if no post-release segment is present).
++ """
++ vc = str.split(ver, ".post")
++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
++
++
++def render_pep440_pre(pieces):
++ """TAG[.postN.devDISTANCE] -- No -dirty.
++
++ Exceptions:
++ 1: no tags. 0.post0.devDISTANCE
++ """
++ if pieces["closest-tag"]:
++ if pieces["distance"]:
++ # update the post release segment
++ tag_version, post_version = pep440_split_post(pieces["closest-tag"])
++ rendered = tag_version
++ if post_version is not None:
++ rendered += ".post%d.dev%d" % (post_version+1, pieces["distance"])
++ else:
++ rendered += ".post0.dev%d" % (pieces["distance"])
++ else:
++ # no commits, use the tag as the version
++ rendered = pieces["closest-tag"]
++ else:
++ # exception #1
++ rendered = "0.post0.dev%d" % pieces["distance"]
++ return rendered
++
++
++def render_pep440_post(pieces):
++ """TAG[.postDISTANCE[.dev0]+gHEX] .
++
++ The ".dev0" means dirty. Note that .dev0 sorts backwards
++ (a dirty tree will appear "older" than the corresponding clean one),
++ but you shouldn't be releasing software with -dirty anyways.
++
++ Exceptions:
++ 1: no tags. 0.postDISTANCE[.dev0]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += ".post%d" % pieces["distance"]
++ if pieces["dirty"]:
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "g%s" % pieces["short"]
++ else:
++ # exception #1
++ rendered = "0.post%d" % pieces["distance"]
++ if pieces["dirty"]:
++ rendered += ".dev0"
++ rendered += "+g%s" % pieces["short"]
++ return rendered
++
++
++def render_pep440_post_branch(pieces):
++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
++
++ The ".dev0" means not master branch.
++
++ Exceptions:
++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += ".post%d" % pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "g%s" % pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0.post%d" % pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+g%s" % pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
++def render_pep440_old(pieces):
++ """TAG[.postDISTANCE[.dev0]] .
++
++ The ".dev0" means dirty.
++
++ Exceptions:
++ 1: no tags. 0.postDISTANCE[.dev0]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += ".post%d" % pieces["distance"]
++ if pieces["dirty"]:
++ rendered += ".dev0"
++ else:
++ # exception #1
++ rendered = "0.post%d" % pieces["distance"]
++ if pieces["dirty"]:
++ rendered += ".dev0"
++ return rendered
++
++
++def render_git_describe(pieces):
++ """TAG[-DISTANCE-gHEX][-dirty].
++
++ Like 'git describe --tags --dirty --always'.
++
++ Exceptions:
++ 1: no tags. HEX[-dirty] (note: no 'g' prefix)
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"]:
++ rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
++ else:
++ # exception #1
++ rendered = pieces["short"]
++ if pieces["dirty"]:
++ rendered += "-dirty"
++ return rendered
++
++
++def render_git_describe_long(pieces):
++ """TAG-DISTANCE-gHEX[-dirty].
++
++ Like 'git describe --tags --dirty --always -long'.
++ The distance/hash is unconditional.
++
++ Exceptions:
++ 1: no tags. HEX[-dirty] (note: no 'g' prefix)
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
++ else:
++ # exception #1
++ rendered = pieces["short"]
++ if pieces["dirty"]:
++ rendered += "-dirty"
++ return rendered
++
++
++def render(pieces, style):
++ """Render the given version pieces into the requested style."""
++ if pieces["error"]:
++ return {"version": "unknown",
++ "full-revisionid": pieces.get("long"),
++ "dirty": None,
++ "error": pieces["error"],
++ "date": None}
++
++ if not style or style == "default":
++ style = "pep440" # the default
++
++ if style == "pep440":
++ rendered = render_pep440(pieces)
++ elif style == "pep440-branch":
++ rendered = render_pep440_branch(pieces)
++ elif style == "pep440-pre":
++ rendered = render_pep440_pre(pieces)
++ elif style == "pep440-post":
++ rendered = render_pep440_post(pieces)
++ elif style == "pep440-post-branch":
++ rendered = render_pep440_post_branch(pieces)
++ elif style == "pep440-old":
++ rendered = render_pep440_old(pieces)
++ elif style == "git-describe":
++ rendered = render_git_describe(pieces)
++ elif style == "git-describe-long":
++ rendered = render_git_describe_long(pieces)
++ else:
++ raise ValueError("unknown style '%s'" % style)
++
++ return {"version": rendered, "full-revisionid": pieces["long"],
++ "dirty": pieces["dirty"], "error": None,
++ "date": pieces.get("date")}
+
+
+ def get_versions():
+- return json.loads(version_json)
++ """Get version information or return default if unable to do so."""
++ # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
++ # __file__, we can work backwards from there to the root. Some
++ # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which
++ # case we can only use expanded keywords.
++
++ cfg = get_config()
++ verbose = cfg.verbose
++
++ try:
++ return git_versions_from_keywords(get_keywords(), cfg.tag_prefix,
++ verbose)
++ except NotThisMethod:
++ pass
++
++ try:
++ root = os.path.realpath(__file__)
++ # versionfile_source is the relative path from the top of the source
++ # tree (where the .git directory might live) to this file. Invert
++ # this to find the root from __file__.
++ for _ in cfg.versionfile_source.split('/'):
++ root = os.path.dirname(root)
++ except NameError:
++ return {"version": "0+unknown", "full-revisionid": None,
++ "dirty": None,
++ "error": "unable to find root of source tree",
++ "date": None}
++
++ try:
++ pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
++ return render(pieces, cfg.style)
++ except NotThisMethod:
++ pass
++
++ try:
++ if cfg.parentdir_prefix:
++ return versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
++ except NotThisMethod:
++ pass
++
++ return {"version": "0+unknown", "full-revisionid": None,
++ "dirty": None,
++ "error": "unable to compute version", "date": None}
+diff --git a/versioneer.py b/versioneer.py
+index 7ed2a21..a142bf5 100644
+--- a/versioneer.py
++++ b/versioneer.py
+@@ -1,5 +1,5 @@
+
+-# Version: 0.16
++# Version: 0.22
+
+ """The Versioneer - like a rocketeer, but for versions.
+
+@@ -7,18 +7,14 @@ The Versioneer
+ ==============
+
+ * like a rocketeer, but for versions!
+-* https://github.com/warner/python-versioneer
++* https://github.com/python-versioneer/python-versioneer
+ * Brian Warner
+ * License: Public Domain
+-* Compatible With: python2.6, 2.7, 3.3, 3.4, 3.5, and pypy
+-* [![Latest Version]
+-(https://pypip.in/version/versioneer/badge.svg?style=flat)
+-](https://pypi.python.org/pypi/versioneer/)
+-* [![Build Status]
+-(https://travis-ci.org/warner/python-versioneer.png?branch=master)
+-](https://travis-ci.org/warner/python-versioneer)
+-
+-This is a tool for managing a recorded version number in distutils-based
++* Compatible with: Python 3.6, 3.7, 3.8, 3.9, 3.10 and pypy3
++* [![Latest Version][pypi-image]][pypi-url]
++* [![Build Status][travis-image]][travis-url]
++
++This is a tool for managing a recorded version number in distutils/setuptools-based
+ python projects. The goal is to remove the tedious and error-prone "update
+ the embedded version string" step from your release process. Making a new
+ release should be as easy as recording a new tag in your version-control
+@@ -27,9 +23,10 @@ system, and maybe making new tarballs.
+
+ ## Quick Install
+
+-* `pip install versioneer` to somewhere to your $PATH
+-* add a `[versioneer]` section to your setup.cfg (see below)
++* `pip install versioneer` to somewhere in your $PATH
++* add a `[versioneer]` section to your setup.cfg (see [Install](INSTALL.md))
+ * run `versioneer install` in your source tree, commit the results
++* Verify version information with `python setup.py version`
+
+ ## Version Identifiers
+
+@@ -61,7 +58,7 @@ version 1.3). Many VCS systems can report a description that captures this,
+ for example `git describe --tags --dirty --always` reports things like
+ "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the
+ 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has
+-uncommitted changes.
++uncommitted changes).
+
+ The version identifier is used for multiple purposes:
+
+@@ -88,127 +85,7 @@ the generated version data.
+
+ ## Installation
+
+-First, decide on values for the following configuration variables:
+-
+-* `VCS`: the version control system you use. Currently accepts "git".
+-
+-* `style`: the style of version string to be produced. See "Styles" below for
+- details. Defaults to "pep440", which looks like
+- `TAG[+DISTANCE.gSHORTHASH[.dirty]]`.
+-
+-* `versionfile_source`:
+-
+- A project-relative pathname into which the generated version strings should
+- be written. This is usually a `_version.py` next to your project's main
+- `__init__.py` file, so it can be imported at runtime. If your project uses
+- `src/myproject/__init__.py`, this should be `src/myproject/_version.py`.
+- This file should be checked in to your VCS as usual: the copy created below
+- by `setup.py setup_versioneer` will include code that parses expanded VCS
+- keywords in generated tarballs. The 'build' and 'sdist' commands will
+- replace it with a copy that has just the calculated version string.
+-
+- This must be set even if your project does not have any modules (and will
+- therefore never import `_version.py`), since "setup.py sdist" -based trees
+- still need somewhere to record the pre-calculated version strings. Anywhere
+- in the source tree should do. If there is a `__init__.py` next to your
+- `_version.py`, the `setup.py setup_versioneer` command (described below)
+- will append some `__version__`-setting assignments, if they aren't already
+- present.
+-
+-* `versionfile_build`:
+-
+- Like `versionfile_source`, but relative to the build directory instead of
+- the source directory. These will differ when your setup.py uses
+- 'package_dir='. If you have `package_dir={'myproject': 'src/myproject'}`,
+- then you will probably have `versionfile_build='myproject/_version.py'` and
+- `versionfile_source='src/myproject/_version.py'`.
+-
+- If this is set to None, then `setup.py build` will not attempt to rewrite
+- any `_version.py` in the built tree. If your project does not have any
+- libraries (e.g. if it only builds a script), then you should use
+- `versionfile_build = None`. To actually use the computed version string,
+- your `setup.py` will need to override `distutils.command.build_scripts`
+- with a subclass that explicitly inserts a copy of
+- `versioneer.get_version()` into your script file. See
+- `test/demoapp-script-only/setup.py` for an example.
+-
+-* `tag_prefix`:
+-
+- a string, like 'PROJECTNAME-', which appears at the start of all VCS tags.
+- If your tags look like 'myproject-1.2.0', then you should use
+- tag_prefix='myproject-'. If you use unprefixed tags like '1.2.0', this
+- should be an empty string, using either `tag_prefix=` or `tag_prefix=''`.
+-
+-* `parentdir_prefix`:
+-
+- a optional string, frequently the same as tag_prefix, which appears at the
+- start of all unpacked tarball filenames. If your tarball unpacks into
+- 'myproject-1.2.0', this should be 'myproject-'. To disable this feature,
+- just omit the field from your `setup.cfg`.
+-
+-This tool provides one script, named `versioneer`. That script has one mode,
+-"install", which writes a copy of `versioneer.py` into the current directory
+-and runs `versioneer.py setup` to finish the installation.
+-
+-To versioneer-enable your project:
+-
+-* 1: Modify your `setup.cfg`, adding a section named `[versioneer]` and
+- populating it with the configuration values you decided earlier (note that
+- the option names are not case-sensitive):
+-
+- ````
+- [versioneer]
+- VCS = git
+- style = pep440
+- versionfile_source = src/myproject/_version.py
+- versionfile_build = myproject/_version.py
+- tag_prefix =
+- parentdir_prefix = myproject-
+- ````
+-
+-* 2: Run `versioneer install`. This will do the following:
+-
+- * copy `versioneer.py` into the top of your source tree
+- * create `_version.py` in the right place (`versionfile_source`)
+- * modify your `__init__.py` (if one exists next to `_version.py`) to define
+- `__version__` (by calling a function from `_version.py`)
+- * modify your `MANIFEST.in` to include both `versioneer.py` and the
+- generated `_version.py` in sdist tarballs
+-
+- `versioneer install` will complain about any problems it finds with your
+- `setup.py` or `setup.cfg`. Run it multiple times until you have fixed all
+- the problems.
+-
+-* 3: add a `import versioneer` to your setup.py, and add the following
+- arguments to the setup() call:
+-
+- version=versioneer.get_version(),
+- cmdclass=versioneer.get_cmdclass(),
+-
+-* 4: commit these changes to your VCS. To make sure you won't forget,
+- `versioneer install` will mark everything it touched for addition using
+- `git add`. Don't forget to add `setup.py` and `setup.cfg` too.
+-
+-## Post-Installation Usage
+-
+-Once established, all uses of your tree from a VCS checkout should get the
+-current version string. All generated tarballs should include an embedded
+-version string (so users who unpack them will not need a VCS tool installed).
+-
+-If you distribute your project through PyPI, then the release process should
+-boil down to two steps:
+-
+-* 1: git tag 1.0
+-* 2: python setup.py register sdist upload
+-
+-If you distribute it through github (i.e. users use github to generate
+-tarballs with `git archive`), the process is:
+-
+-* 1: git tag 1.0
+-* 2: git push; git push --tags
+-
+-Versioneer will report "0+untagged.NUMCOMMITS.gHASH" until your tree has at
+-least one tag in its history.
++See [INSTALL.md](./INSTALL.md) for detailed installation instructions.
+
+ ## Version-String Flavors
+
+@@ -229,6 +106,10 @@ information:
+ * `['full-revisionid']`: detailed revision identifier. For Git, this is the
+ full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac".
+
++* `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the
++ commit date in ISO 8601 format. This will be None if the date is not
++ available.
++
+ * `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that
+ this is only accurate if run in a VCS checkout, otherwise it is likely to
+ be False or None
+@@ -267,8 +148,8 @@ that this commit is two revisions ("+2") beyond the "0.11" tag. For released
+ software (exactly equal to a known tag), the identifier will only contain the
+ stripped tag, e.g. "0.11".
+
+-Other styles are available. See details.md in the Versioneer source tree for
+-descriptions.
++Other styles are available. See [details.md](details.md) in the Versioneer
++source tree for descriptions.
+
+ ## Debugging
+
+@@ -278,51 +159,83 @@ version`, which will run the version-lookup code in a verbose mode, and will
+ display the full contents of `get_versions()` (including the `error` string,
+ which may help identify what went wrong).
+
+-## Updating Versioneer
++## Known Limitations
+
+-To upgrade your project to a new release of Versioneer, do the following:
++Some situations are known to cause problems for Versioneer. This details the
++most significant ones. More can be found on Github
++[issues page](https://github.com/python-versioneer/python-versioneer/issues).
+
+-* install the new Versioneer (`pip install -U versioneer` or equivalent)
+-* edit `setup.cfg`, if necessary, to include any new configuration settings
+- indicated by the release notes
+-* re-run `versioneer install` in your source tree, to replace
+- `SRC/_version.py`
+-* commit any changed files
++### Subprojects
++
++Versioneer has limited support for source trees in which `setup.py` is not in
++the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are
++two common reasons why `setup.py` might not be in the root:
++
++* Source trees which contain multiple subprojects, such as
++ [Buildbot](https://github.com/buildbot/buildbot), which contains both
++ "master" and "slave" subprojects, each with their own `setup.py`,
++ `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI
++ distributions (and upload multiple independently-installable tarballs).
++* Source trees whose main purpose is to contain a C library, but which also
++ provide bindings to Python (and perhaps other languages) in subdirectories.
++
++Versioneer will look for `.git` in parent directories, and most operations
++should get the right version string. However `pip` and `setuptools` have bugs
++and implementation details which frequently cause `pip install .` from a
++subproject directory to fail to find a correct version string (so it usually
++defaults to `0+unknown`).
+
+-### Upgrading to 0.16
++`pip install --editable .` should work correctly. `setup.py install` might
++work too.
+
+-Nothing special.
++Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in
++some later version.
+
+-### Upgrading to 0.15
++[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking
++this issue. The discussion in
++[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the
++issue from the Versioneer side in more detail.
++[pip PR#3176](https://github.com/pypa/pip/pull/3176) and
++[pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve
++pip to let Versioneer work correctly.
+
+-Starting with this version, Versioneer is configured with a `[versioneer]`
+-section in your `setup.cfg` file. Earlier versions required the `setup.py` to
+-set attributes on the `versioneer` module immediately after import. The new
+-version will refuse to run (raising an exception during import) until you
+-have provided the necessary `setup.cfg` section.
++Versioneer-0.16 and earlier only looked for a `.git` directory next to the
++`setup.cfg`, so subprojects were completely unsupported with those releases.
+
+-In addition, the Versioneer package provides an executable named
+-`versioneer`, and the installation process is driven by running `versioneer
+-install`. In 0.14 and earlier, the executable was named
+-`versioneer-installer` and was run without an argument.
++### Editable installs with setuptools <= 18.5
+
+-### Upgrading to 0.14
++`setup.py develop` and `pip install --editable .` allow you to install a
++project into a virtualenv once, then continue editing the source code (and
++test) without re-installing after every change.
+
+-0.14 changes the format of the version string. 0.13 and earlier used
+-hyphen-separated strings like "0.11-2-g1076c97-dirty". 0.14 and beyond use a
+-plus-separated "local version" section strings, with dot-separated
+-components, like "0.11+2.g1076c97". PEP440-strict tools did not like the old
+-format, but should be ok with the new one.
++"Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a
++convenient way to specify executable scripts that should be installed along
++with the python package.
+
+-### Upgrading from 0.11 to 0.12
++These both work as expected when using modern setuptools. When using
++setuptools-18.5 or earlier, however, certain operations will cause
++`pkg_resources.DistributionNotFound` errors when running the entrypoint
++script, which must be resolved by re-installing the package. This happens
++when the install happens with one version, then the egg_info data is
++regenerated while a different version is checked out. Many setup.py commands
++cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into
++a different virtualenv), so this can be surprising.
+
+-Nothing special.
++[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes
++this one, but upgrading to a newer version of setuptools should probably
++resolve it.
+
+-### Upgrading from 0.10 to 0.11
+
+-You must add a `versioneer.VCS = "git"` to your `setup.py` before re-running
+-`setup.py setup_versioneer`. This will enable the use of additional
+-version-control systems (SVN, etc) in the future.
++## Updating Versioneer
++
++To upgrade your project to a new release of Versioneer, do the following:
++
++* install the new Versioneer (`pip install -U versioneer` or equivalent)
++* edit `setup.cfg`, if necessary, to include any new configuration settings
++ indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details.
++* re-run `versioneer install` in your source tree, to replace
++ `SRC/_version.py`
++* commit any changed files
+
+ ## Future Directions
+
+@@ -337,6 +250,14 @@ installation by editing setup.py . Alternatively, it might go the other
+ direction and include code from all supported VCS systems, reducing the
+ number of intermediate scripts.
+
++## Similar projects
++
++* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time
++ dependency
++* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of
++ versioneer
++* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools
++ plugin
+
+ ## License
+
+@@ -346,19 +267,28 @@ Specifically, both are released under the Creative Commons "Public Domain
+ Dedication" license (CC0-1.0), as described in
+ https://creativecommons.org/publicdomain/zero/1.0/ .
+
++[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg
++[pypi-url]: https://pypi.python.org/pypi/versioneer/
++[travis-image]:
++https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg
++[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer
++
+ """
++# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring
++# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements
++# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error
++# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with
++# pylint:disable=attribute-defined-outside-init,too-many-arguments
+
+-from __future__ import print_function
+-try:
+- import configparser
+-except ImportError:
+- import ConfigParser as configparser
++import configparser
+ import errno
+ import json
+ import os
+ import re
+ import subprocess
+ import sys
++from typing import Callable, Dict
++import functools
+
+
+ class VersioneerConfig:
+@@ -393,10 +323,12 @@ def get_root():
+ # module-import table will cache the first one. So we can't use
+ # os.path.dirname(__file__), as that will find whichever
+ # versioneer.py was first imported, even in later projects.
+- me = os.path.realpath(os.path.abspath(__file__))
+- if os.path.splitext(me)[0] != os.path.splitext(versioneer_py)[0]:
++ my_path = os.path.realpath(os.path.abspath(__file__))
++ me_dir = os.path.normcase(os.path.splitext(my_path)[0])
++ vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0])
++ if me_dir != vsr_dir:
+ print("Warning: build in %s is using versioneer.py from %s"
+- % (os.path.dirname(me), versioneer_py))
++ % (os.path.dirname(my_path), versioneer_py))
+ except NameError:
+ pass
+ return root
+@@ -404,85 +336,94 @@ def get_root():
+
+ def get_config_from_root(root):
+ """Read the project setup.cfg file to determine Versioneer config."""
+- # This might raise EnvironmentError (if setup.cfg is missing), or
++ # This might raise OSError (if setup.cfg is missing), or
+ # configparser.NoSectionError (if it lacks a [versioneer] section), or
+ # configparser.NoOptionError (if it lacks "VCS="). See the docstring at
+ # the top of versioneer.py for instructions on writing your setup.cfg .
+ setup_cfg = os.path.join(root, "setup.cfg")
+- parser = configparser.SafeConfigParser()
+- with open(setup_cfg, "r") as f:
+- parser.readfp(f)
++ parser = configparser.ConfigParser()
++ with open(setup_cfg, "r") as cfg_file:
++ parser.read_file(cfg_file)
+ VCS = parser.get("versioneer", "VCS") # mandatory
+
+- def get(parser, name):
+- if parser.has_option("versioneer", name):
+- return parser.get("versioneer", name)
+- return None
++ # Dict-like interface for non-mandatory entries
++ section = parser["versioneer"]
++
+ cfg = VersioneerConfig()
+ cfg.VCS = VCS
+- cfg.style = get(parser, "style") or ""
+- cfg.versionfile_source = get(parser, "versionfile_source")
+- cfg.versionfile_build = get(parser, "versionfile_build")
+- cfg.tag_prefix = get(parser, "tag_prefix")
++ cfg.style = section.get("style", "")
++ cfg.versionfile_source = section.get("versionfile_source")
++ cfg.versionfile_build = section.get("versionfile_build")
++ cfg.tag_prefix = section.get("tag_prefix")
+ if cfg.tag_prefix in ("''", '""'):
+ cfg.tag_prefix = ""
+- cfg.parentdir_prefix = get(parser, "parentdir_prefix")
+- cfg.verbose = get(parser, "verbose")
++ cfg.parentdir_prefix = section.get("parentdir_prefix")
++ cfg.verbose = section.get("verbose")
+ return cfg
+
+
+ class NotThisMethod(Exception):
+ """Exception raised if a method is not valid for the current scenario."""
+
++
+ # these dictionaries contain VCS-specific tools
+-LONG_VERSION_PY = {}
+-HANDLERS = {}
++LONG_VERSION_PY: Dict[str, str] = {}
++HANDLERS: Dict[str, Dict[str, Callable]] = {}
+
+
+ def register_vcs_handler(vcs, method): # decorator
+- """Decorator to mark a method as the handler for a particular VCS."""
++ """Create decorator to mark a method as the handler of a VCS."""
+ def decorate(f):
+ """Store f in HANDLERS[vcs][method]."""
+- if vcs not in HANDLERS:
+- HANDLERS[vcs] = {}
+- HANDLERS[vcs][method] = f
++ HANDLERS.setdefault(vcs, {})[method] = f
+ return f
+ return decorate
+
+
+-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False):
++def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
++ env=None):
+ """Call the given command(s)."""
+ assert isinstance(commands, list)
+- p = None
+- for c in commands:
++ process = None
++
++ popen_kwargs = {}
++ if sys.platform == "win32":
++ # This hides the console window if pythonw.exe is used
++ startupinfo = subprocess.STARTUPINFO()
++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
++ popen_kwargs["startupinfo"] = startupinfo
++
++ for command in commands:
+ try:
+- dispcmd = str([c] + args)
++ dispcmd = str([command] + args)
+ # remember shell=False, so use git.cmd on windows, not just git
+- p = subprocess.Popen([c] + args, cwd=cwd, stdout=subprocess.PIPE,
+- stderr=(subprocess.PIPE if hide_stderr
+- else None))
++ process = subprocess.Popen([command] + args, cwd=cwd, env=env,
++ stdout=subprocess.PIPE,
++ stderr=(subprocess.PIPE if hide_stderr
++ else None), **popen_kwargs)
+ break
+- except EnvironmentError:
++ except OSError:
+ e = sys.exc_info()[1]
+ if e.errno == errno.ENOENT:
+ continue
+ if verbose:
+ print("unable to run %s" % dispcmd)
+ print(e)
+- return None
++ return None, None
+ else:
+ if verbose:
+ print("unable to find command, tried %s" % (commands,))
+- return None
+- stdout = p.communicate()[0].strip()
+- if sys.version_info[0] >= 3:
+- stdout = stdout.decode()
+- if p.returncode != 0:
++ return None, None
++ stdout = process.communicate()[0].strip().decode()
++ if process.returncode != 0:
+ if verbose:
+ print("unable to run %s (error)" % dispcmd)
+- return None
+- return stdout
+-LONG_VERSION_PY['git'] = '''
++ print("stdout was %s" % stdout)
++ return None, process.returncode
++ return stdout, process.returncode
++
++
++LONG_VERSION_PY['git'] = r'''
+ # This file helps to compute a version number in source trees obtained from
+ # git-archive tarball (such as those provided by githubs download-from-tag
+ # feature). Distribution tarballs (built by setup.py sdist) and build
+@@ -490,7 +431,7 @@ LONG_VERSION_PY['git'] = '''
+ # that just contains the computed version number.
+
+ # This file is released into the public domain. Generated by
+-# versioneer-0.16 (https://github.com/warner/python-versioneer)
++# versioneer-0.22 (https://github.com/python-versioneer/python-versioneer)
+
+ """Git implementation of _version.py."""
+
+@@ -499,6 +440,8 @@ import os
+ import re
+ import subprocess
+ import sys
++from typing import Callable, Dict
++import functools
+
+
+ def get_keywords():
+@@ -509,7 +452,8 @@ def get_keywords():
+ # get_keywords().
+ git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s"
+ git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s"
+- keywords = {"refnames": git_refnames, "full": git_full}
++ git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s"
++ keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
+ return keywords
+
+
+@@ -535,12 +479,12 @@ class NotThisMethod(Exception):
+ """Exception raised if a method is not valid for the current scenario."""
+
+
+-LONG_VERSION_PY = {}
+-HANDLERS = {}
++LONG_VERSION_PY: Dict[str, str] = {}
++HANDLERS: Dict[str, Dict[str, Callable]] = {}
+
+
+ def register_vcs_handler(vcs, method): # decorator
+- """Decorator to mark a method as the handler for a particular VCS."""
++ """Create decorator to mark a method as the handler of a VCS."""
+ def decorate(f):
+ """Store f in HANDLERS[vcs][method]."""
+ if vcs not in HANDLERS:
+@@ -550,55 +494,71 @@ def register_vcs_handler(vcs, method): # decorator
+ return decorate
+
+
+-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False):
++def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
++ env=None):
+ """Call the given command(s)."""
+ assert isinstance(commands, list)
+- p = None
+- for c in commands:
++ process = None
++
++ popen_kwargs = {}
++ if sys.platform == "win32":
++ # This hides the console window if pythonw.exe is used
++ startupinfo = subprocess.STARTUPINFO()
++ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
++ popen_kwargs["startupinfo"] = startupinfo
++
++ for command in commands:
+ try:
+- dispcmd = str([c] + args)
++ dispcmd = str([command] + args)
+ # remember shell=False, so use git.cmd on windows, not just git
+- p = subprocess.Popen([c] + args, cwd=cwd, stdout=subprocess.PIPE,
+- stderr=(subprocess.PIPE if hide_stderr
+- else None))
++ process = subprocess.Popen([command] + args, cwd=cwd, env=env,
++ stdout=subprocess.PIPE,
++ stderr=(subprocess.PIPE if hide_stderr
++ else None), **popen_kwargs)
+ break
+- except EnvironmentError:
++ except OSError:
+ e = sys.exc_info()[1]
+ if e.errno == errno.ENOENT:
+ continue
+ if verbose:
+ print("unable to run %%s" %% dispcmd)
+ print(e)
+- return None
++ return None, None
+ else:
+ if verbose:
+ print("unable to find command, tried %%s" %% (commands,))
+- return None
+- stdout = p.communicate()[0].strip()
+- if sys.version_info[0] >= 3:
+- stdout = stdout.decode()
+- if p.returncode != 0:
++ return None, None
++ stdout = process.communicate()[0].strip().decode()
++ if process.returncode != 0:
+ if verbose:
+ print("unable to run %%s (error)" %% dispcmd)
+- return None
+- return stdout
++ print("stdout was %%s" %% stdout)
++ return None, process.returncode
++ return stdout, process.returncode
+
+
+ def versions_from_parentdir(parentdir_prefix, root, verbose):
+ """Try to determine the version from the parent directory name.
+
+- Source tarballs conventionally unpack into a directory that includes
+- both the project name and a version string.
++ Source tarballs conventionally unpack into a directory that includes both
++ the project name and a version string. We will also support searching up
++ two directory levels for an appropriately named parent directory
+ """
+- dirname = os.path.basename(root)
+- if not dirname.startswith(parentdir_prefix):
+- if verbose:
+- print("guessing rootdir is '%%s', but '%%s' doesn't start with "
+- "prefix '%%s'" %% (root, dirname, parentdir_prefix))
+- raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
+- return {"version": dirname[len(parentdir_prefix):],
+- "full-revisionid": None,
+- "dirty": False, "error": None}
++ rootdirs = []
++
++ for _ in range(3):
++ dirname = os.path.basename(root)
++ if dirname.startswith(parentdir_prefix):
++ return {"version": dirname[len(parentdir_prefix):],
++ "full-revisionid": None,
++ "dirty": False, "error": None, "date": None}
++ rootdirs.append(root)
++ root = os.path.dirname(root) # up a level
++
++ if verbose:
++ print("Tried directories %%s but none started with prefix %%s" %%
++ (str(rootdirs), parentdir_prefix))
++ raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
+
+
+ @register_vcs_handler("git", "get_keywords")
+@@ -610,18 +570,21 @@ def git_get_keywords(versionfile_abs):
+ # _version.py.
+ keywords = {}
+ try:
+- f = open(versionfile_abs, "r")
+- for line in f.readlines():
+- if line.strip().startswith("git_refnames ="):
+- mo = re.search(r'=\s*"(.*)"', line)
+- if mo:
+- keywords["refnames"] = mo.group(1)
+- if line.strip().startswith("git_full ="):
+- mo = re.search(r'=\s*"(.*)"', line)
+- if mo:
+- keywords["full"] = mo.group(1)
+- f.close()
+- except EnvironmentError:
++ with open(versionfile_abs, "r") as fobj:
++ for line in fobj:
++ if line.strip().startswith("git_refnames ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["refnames"] = mo.group(1)
++ if line.strip().startswith("git_full ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["full"] = mo.group(1)
++ if line.strip().startswith("git_date ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["date"] = mo.group(1)
++ except OSError:
+ pass
+ return keywords
+
+@@ -629,18 +592,31 @@ def git_get_keywords(versionfile_abs):
+ @register_vcs_handler("git", "keywords")
+ def git_versions_from_keywords(keywords, tag_prefix, verbose):
+ """Get version information from git keywords."""
+- if not keywords:
+- raise NotThisMethod("no keywords at all, weird")
++ if "refnames" not in keywords:
++ raise NotThisMethod("Short version file found")
++ date = keywords.get("date")
++ if date is not None:
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++
++ # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant
++ # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601
++ # -like" string, which we must then edit to make compliant), because
++ # it's been around since git-1.5.3, and it's too difficult to
++ # discover which version we're using, or to work around using an
++ # older one.
++ date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
+ refnames = keywords["refnames"].strip()
+ if refnames.startswith("$Format"):
+ if verbose:
+ print("keywords are unexpanded, not using")
+ raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
+- refs = set([r.strip() for r in refnames.strip("()").split(",")])
++ refs = {r.strip() for r in refnames.strip("()").split(",")}
+ # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
+ # just "foo-1.0". If we see a "tag: " prefix, prefer those.
+ TAG = "tag: "
+- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)])
++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
+ if not tags:
+ # Either we're using git < 1.8.3, or there really are no tags. We use
+ # a heuristic: assume all version tags have a digit. The old git %%d
+@@ -649,56 +625,72 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
+ # between branches and tags. By ignoring refnames without digits, we
+ # filter out many common branch names like "release" and
+ # "stabilization", as well as "HEAD" and "master".
+- tags = set([r for r in refs if re.search(r'\d', r)])
++ tags = {r for r in refs if re.search(r'\d', r)}
+ if verbose:
+- print("discarding '%%s', no digits" %% ",".join(refs-tags))
++ print("discarding '%%s', no digits" %% ",".join(refs - tags))
+ if verbose:
+ print("likely tags: %%s" %% ",".join(sorted(tags)))
+ for ref in sorted(tags):
+ # sorting will prefer e.g. "2.0" over "2.0rc1"
+ if ref.startswith(tag_prefix):
+ r = ref[len(tag_prefix):]
++ # Filter out refs that exactly match prefix or that don't start
++ # with a number once the prefix is stripped (mostly a concern
++ # when prefix is '')
++ if not re.match(r'\d', r):
++ continue
+ if verbose:
+ print("picking %%s" %% r)
+ return {"version": r,
+ "full-revisionid": keywords["full"].strip(),
+- "dirty": False, "error": None
+- }
++ "dirty": False, "error": None,
++ "date": date}
+ # no suitable tags, so version is "0+unknown", but full hex is still there
+ if verbose:
+ print("no suitable tags, using unknown + full revision id")
+ return {"version": "0+unknown",
+ "full-revisionid": keywords["full"].strip(),
+- "dirty": False, "error": "no suitable tags"}
++ "dirty": False, "error": "no suitable tags", "date": None}
+
+
+ @register_vcs_handler("git", "pieces_from_vcs")
+-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
++def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
+ """Get version from 'git describe' in the root of the source tree.
+
+ This only gets called if the git-archive 'subst' keywords were *not*
+ expanded, and _version.py hasn't already been rewritten with a short
+ version string, meaning we're inside a checked out source tree.
+ """
+- if not os.path.exists(os.path.join(root, ".git")):
+- if verbose:
+- print("no .git in %%s" %% root)
+- raise NotThisMethod("no .git directory")
+-
+ GITS = ["git"]
+ if sys.platform == "win32":
+ GITS = ["git.cmd", "git.exe"]
++
++ # GIT_DIR can interfere with correct operation of Versioneer.
++ # It may be intended to be passed to the Versioneer-versioned project,
++ # but that should not change where we get our version from.
++ env = os.environ.copy()
++ env.pop("GIT_DIR", None)
++ runner = functools.partial(runner, env=env)
++
++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
++ hide_stderr=True)
++ if rc != 0:
++ if verbose:
++ print("Directory %%s not under git control" %% root)
++ raise NotThisMethod("'git rev-parse --git-dir' returned error")
++
++ MATCH_ARGS = ["--match", "%%s*" %% tag_prefix] if tag_prefix else []
++
+ # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
+ # if there isn't one, this yields HEX[-dirty] (no NUM)
+- describe_out = run_command(GITS, ["describe", "--tags", "--dirty",
+- "--always", "--long",
+- "--match", "%%s*" %% tag_prefix],
+- cwd=root)
++ describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
++ "--always", "--long", *MATCH_ARGS],
++ cwd=root)
+ # --long was added in git-1.5.5
+ if describe_out is None:
+ raise NotThisMethod("'git describe' failed")
+ describe_out = describe_out.strip()
+- full_out = run_command(GITS, ["rev-parse", "HEAD"], cwd=root)
++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
+ if full_out is None:
+ raise NotThisMethod("'git rev-parse' failed")
+ full_out = full_out.strip()
+@@ -708,6 +700,39 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ pieces["short"] = full_out[:7] # maybe improved later
+ pieces["error"] = None
+
++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
++ cwd=root)
++ # --abbrev-ref was added in git-1.6.3
++ if rc != 0 or branch_name is None:
++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
++ branch_name = branch_name.strip()
++
++ if branch_name == "HEAD":
++ # If we aren't exactly on a branch, pick a branch which represents
++ # the current commit. If all else fails, we are on a branchless
++ # commit.
++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
++ # --contains was added in git-1.5.4
++ if rc != 0 or branches is None:
++ raise NotThisMethod("'git branch --contains' returned error")
++ branches = branches.split("\n")
++
++ # Remove the first line if we're running detached
++ if "(" in branches[0]:
++ branches.pop(0)
++
++ # Strip off the leading "* " from the list of branches.
++ branches = [branch[2:] for branch in branches]
++ if "master" in branches:
++ branch_name = "master"
++ elif not branches:
++ branch_name = None
++ else:
++ # Pick the first branch that is returned. Good or bad.
++ branch_name = branches[0]
++
++ pieces["branch"] = branch_name
++
+ # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
+ # TAG might have hyphens.
+ git_describe = describe_out
+@@ -724,7 +749,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ # TAG-NUM-gHEX
+ mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
+ if not mo:
+- # unparseable. Maybe git-describe is misbehaving?
++ # unparsable. Maybe git-describe is misbehaving?
+ pieces["error"] = ("unable to parse git-describe output: '%%s'"
+ %% describe_out)
+ return pieces
+@@ -749,10 +774,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ else:
+ # HEX: no tags
+ pieces["closest-tag"] = None
+- count_out = run_command(GITS, ["rev-list", "HEAD", "--count"],
+- cwd=root)
++ count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
+ pieces["distance"] = int(count_out) # total number of commits
+
++ # commit date: see ISO-8601 comment in git_versions_from_keywords()
++ date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip()
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++ pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
++
+ return pieces
+
+
+@@ -788,19 +819,67 @@ def render_pep440(pieces):
+ return rendered
+
+
+-def render_pep440_pre(pieces):
+- """TAG[.post.devDISTANCE] -- No -dirty.
++def render_pep440_branch(pieces):
++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
++
++ The ".dev0" means not master branch. Note that .dev0 sorts backwards
++ (a feature branch will appear "older" than the master branch).
+
+ Exceptions:
+- 1: no tags. 0.post.devDISTANCE
++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
+ """
+ if pieces["closest-tag"]:
+ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0"
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+untagged.%%d.g%%s" %% (pieces["distance"],
++ pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
++def pep440_split_post(ver):
++ """Split pep440 version string at the post-release segment.
++
++ Returns the release segments before the post-release and the
++ post-release version number (or -1 if no post-release segment is present).
++ """
++ vc = str.split(ver, ".post")
++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
++
++
++def render_pep440_pre(pieces):
++ """TAG[.postN.devDISTANCE] -- No -dirty.
++
++ Exceptions:
++ 1: no tags. 0.post0.devDISTANCE
++ """
++ if pieces["closest-tag"]:
+ if pieces["distance"]:
+- rendered += ".post.dev%%d" %% pieces["distance"]
++ # update the post release segment
++ tag_version, post_version = pep440_split_post(pieces["closest-tag"])
++ rendered = tag_version
++ if post_version is not None:
++ rendered += ".post%%d.dev%%d" %% (post_version+1, pieces["distance"])
++ else:
++ rendered += ".post0.dev%%d" %% (pieces["distance"])
++ else:
++ # no commits, use the tag as the version
++ rendered = pieces["closest-tag"]
+ else:
+ # exception #1
+- rendered = "0.post.dev%%d" %% pieces["distance"]
++ rendered = "0.post0.dev%%d" %% pieces["distance"]
+ return rendered
+
+
+@@ -831,12 +910,41 @@ def render_pep440_post(pieces):
+ return rendered
+
+
++def render_pep440_post_branch(pieces):
++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
++
++ The ".dev0" means not master branch.
++
++ Exceptions:
++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += ".post%%d" %% pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "g%%s" %% pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0.post%%d" %% pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+g%%s" %% pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
+ def render_pep440_old(pieces):
+ """TAG[.postDISTANCE[.dev0]] .
+
+ The ".dev0" means dirty.
+
+- Eexceptions:
++ Exceptions:
+ 1: no tags. 0.postDISTANCE[.dev0]
+ """
+ if pieces["closest-tag"]:
+@@ -899,17 +1007,22 @@ def render(pieces, style):
+ return {"version": "unknown",
+ "full-revisionid": pieces.get("long"),
+ "dirty": None,
+- "error": pieces["error"]}
++ "error": pieces["error"],
++ "date": None}
+
+ if not style or style == "default":
+ style = "pep440" # the default
+
+ if style == "pep440":
+ rendered = render_pep440(pieces)
++ elif style == "pep440-branch":
++ rendered = render_pep440_branch(pieces)
+ elif style == "pep440-pre":
+ rendered = render_pep440_pre(pieces)
+ elif style == "pep440-post":
+ rendered = render_pep440_post(pieces)
++ elif style == "pep440-post-branch":
++ rendered = render_pep440_post_branch(pieces)
+ elif style == "pep440-old":
+ rendered = render_pep440_old(pieces)
+ elif style == "git-describe":
+@@ -920,7 +1033,8 @@ def render(pieces, style):
+ raise ValueError("unknown style '%%s'" %% style)
+
+ return {"version": rendered, "full-revisionid": pieces["long"],
+- "dirty": pieces["dirty"], "error": None}
++ "dirty": pieces["dirty"], "error": None,
++ "date": pieces.get("date")}
+
+
+ def get_versions():
+@@ -944,12 +1058,13 @@ def get_versions():
+ # versionfile_source is the relative path from the top of the source
+ # tree (where the .git directory might live) to this file. Invert
+ # this to find the root from __file__.
+- for i in cfg.versionfile_source.split('/'):
++ for _ in cfg.versionfile_source.split('/'):
+ root = os.path.dirname(root)
+ except NameError:
+ return {"version": "0+unknown", "full-revisionid": None,
+ "dirty": None,
+- "error": "unable to find root of source tree"}
++ "error": "unable to find root of source tree",
++ "date": None}
+
+ try:
+ pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
+@@ -965,7 +1080,7 @@ def get_versions():
+
+ return {"version": "0+unknown", "full-revisionid": None,
+ "dirty": None,
+- "error": "unable to compute version"}
++ "error": "unable to compute version", "date": None}
+ '''
+
+
+@@ -978,18 +1093,21 @@ def git_get_keywords(versionfile_abs):
+ # _version.py.
+ keywords = {}
+ try:
+- f = open(versionfile_abs, "r")
+- for line in f.readlines():
+- if line.strip().startswith("git_refnames ="):
+- mo = re.search(r'=\s*"(.*)"', line)
+- if mo:
+- keywords["refnames"] = mo.group(1)
+- if line.strip().startswith("git_full ="):
+- mo = re.search(r'=\s*"(.*)"', line)
+- if mo:
+- keywords["full"] = mo.group(1)
+- f.close()
+- except EnvironmentError:
++ with open(versionfile_abs, "r") as fobj:
++ for line in fobj:
++ if line.strip().startswith("git_refnames ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["refnames"] = mo.group(1)
++ if line.strip().startswith("git_full ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["full"] = mo.group(1)
++ if line.strip().startswith("git_date ="):
++ mo = re.search(r'=\s*"(.*)"', line)
++ if mo:
++ keywords["date"] = mo.group(1)
++ except OSError:
+ pass
+ return keywords
+
+@@ -997,18 +1115,31 @@ def git_get_keywords(versionfile_abs):
+ @register_vcs_handler("git", "keywords")
+ def git_versions_from_keywords(keywords, tag_prefix, verbose):
+ """Get version information from git keywords."""
+- if not keywords:
+- raise NotThisMethod("no keywords at all, weird")
++ if "refnames" not in keywords:
++ raise NotThisMethod("Short version file found")
++ date = keywords.get("date")
++ if date is not None:
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++
++ # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
++ # datestamp. However we prefer "%ci" (which expands to an "ISO-8601
++ # -like" string, which we must then edit to make compliant), because
++ # it's been around since git-1.5.3, and it's too difficult to
++ # discover which version we're using, or to work around using an
++ # older one.
++ date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
+ refnames = keywords["refnames"].strip()
+ if refnames.startswith("$Format"):
+ if verbose:
+ print("keywords are unexpanded, not using")
+ raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
+- refs = set([r.strip() for r in refnames.strip("()").split(",")])
++ refs = {r.strip() for r in refnames.strip("()").split(",")}
+ # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
+ # just "foo-1.0". If we see a "tag: " prefix, prefer those.
+ TAG = "tag: "
+- tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)])
++ tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
+ if not tags:
+ # Either we're using git < 1.8.3, or there really are no tags. We use
+ # a heuristic: assume all version tags have a digit. The old git %d
+@@ -1017,56 +1148,72 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
+ # between branches and tags. By ignoring refnames without digits, we
+ # filter out many common branch names like "release" and
+ # "stabilization", as well as "HEAD" and "master".
+- tags = set([r for r in refs if re.search(r'\d', r)])
++ tags = {r for r in refs if re.search(r'\d', r)}
+ if verbose:
+- print("discarding '%s', no digits" % ",".join(refs-tags))
++ print("discarding '%s', no digits" % ",".join(refs - tags))
+ if verbose:
+ print("likely tags: %s" % ",".join(sorted(tags)))
+ for ref in sorted(tags):
+ # sorting will prefer e.g. "2.0" over "2.0rc1"
+ if ref.startswith(tag_prefix):
+ r = ref[len(tag_prefix):]
++ # Filter out refs that exactly match prefix or that don't start
++ # with a number once the prefix is stripped (mostly a concern
++ # when prefix is '')
++ if not re.match(r'\d', r):
++ continue
+ if verbose:
+ print("picking %s" % r)
+ return {"version": r,
+ "full-revisionid": keywords["full"].strip(),
+- "dirty": False, "error": None
+- }
++ "dirty": False, "error": None,
++ "date": date}
+ # no suitable tags, so version is "0+unknown", but full hex is still there
+ if verbose:
+ print("no suitable tags, using unknown + full revision id")
+ return {"version": "0+unknown",
+ "full-revisionid": keywords["full"].strip(),
+- "dirty": False, "error": "no suitable tags"}
++ "dirty": False, "error": "no suitable tags", "date": None}
+
+
+ @register_vcs_handler("git", "pieces_from_vcs")
+-def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
++def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
+ """Get version from 'git describe' in the root of the source tree.
+
+ This only gets called if the git-archive 'subst' keywords were *not*
+ expanded, and _version.py hasn't already been rewritten with a short
+ version string, meaning we're inside a checked out source tree.
+ """
+- if not os.path.exists(os.path.join(root, ".git")):
+- if verbose:
+- print("no .git in %s" % root)
+- raise NotThisMethod("no .git directory")
+-
+ GITS = ["git"]
+ if sys.platform == "win32":
+ GITS = ["git.cmd", "git.exe"]
++
++ # GIT_DIR can interfere with correct operation of Versioneer.
++ # It may be intended to be passed to the Versioneer-versioned project,
++ # but that should not change where we get our version from.
++ env = os.environ.copy()
++ env.pop("GIT_DIR", None)
++ runner = functools.partial(runner, env=env)
++
++ _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
++ hide_stderr=True)
++ if rc != 0:
++ if verbose:
++ print("Directory %s not under git control" % root)
++ raise NotThisMethod("'git rev-parse --git-dir' returned error")
++
++ MATCH_ARGS = ["--match", "%s*" % tag_prefix] if tag_prefix else []
++
+ # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
+ # if there isn't one, this yields HEX[-dirty] (no NUM)
+- describe_out = run_command(GITS, ["describe", "--tags", "--dirty",
+- "--always", "--long",
+- "--match", "%s*" % tag_prefix],
+- cwd=root)
++ describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
++ "--always", "--long", *MATCH_ARGS],
++ cwd=root)
+ # --long was added in git-1.5.5
+ if describe_out is None:
+ raise NotThisMethod("'git describe' failed")
+ describe_out = describe_out.strip()
+- full_out = run_command(GITS, ["rev-parse", "HEAD"], cwd=root)
++ full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
+ if full_out is None:
+ raise NotThisMethod("'git rev-parse' failed")
+ full_out = full_out.strip()
+@@ -1076,6 +1223,39 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ pieces["short"] = full_out[:7] # maybe improved later
+ pieces["error"] = None
+
++ branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
++ cwd=root)
++ # --abbrev-ref was added in git-1.6.3
++ if rc != 0 or branch_name is None:
++ raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
++ branch_name = branch_name.strip()
++
++ if branch_name == "HEAD":
++ # If we aren't exactly on a branch, pick a branch which represents
++ # the current commit. If all else fails, we are on a branchless
++ # commit.
++ branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
++ # --contains was added in git-1.5.4
++ if rc != 0 or branches is None:
++ raise NotThisMethod("'git branch --contains' returned error")
++ branches = branches.split("\n")
++
++ # Remove the first line if we're running detached
++ if "(" in branches[0]:
++ branches.pop(0)
++
++ # Strip off the leading "* " from the list of branches.
++ branches = [branch[2:] for branch in branches]
++ if "master" in branches:
++ branch_name = "master"
++ elif not branches:
++ branch_name = None
++ else:
++ # Pick the first branch that is returned. Good or bad.
++ branch_name = branches[0]
++
++ pieces["branch"] = branch_name
++
+ # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
+ # TAG might have hyphens.
+ git_describe = describe_out
+@@ -1092,7 +1272,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ # TAG-NUM-gHEX
+ mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
+ if not mo:
+- # unparseable. Maybe git-describe is misbehaving?
++ # unparsable. Maybe git-describe is misbehaving?
+ pieces["error"] = ("unable to parse git-describe output: '%s'"
+ % describe_out)
+ return pieces
+@@ -1117,10 +1297,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
+ else:
+ # HEX: no tags
+ pieces["closest-tag"] = None
+- count_out = run_command(GITS, ["rev-list", "HEAD", "--count"],
+- cwd=root)
++ count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
+ pieces["distance"] = int(count_out) # total number of commits
+
++ # commit date: see ISO-8601 comment in git_versions_from_keywords()
++ date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
++ # Use only the last line. Previous lines may contain GPG signature
++ # information.
++ date = date.splitlines()[-1]
++ pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
++
+ return pieces
+
+
+@@ -1128,7 +1314,7 @@ def do_vcs_install(manifest_in, versionfile_source, ipy):
+ """Git-specific installation logic for Versioneer.
+
+ For Git, this means creating/changing .gitattributes to mark _version.py
+- for export-time keyword substitution.
++ for export-subst keyword substitution.
+ """
+ GITS = ["git"]
+ if sys.platform == "win32":
+@@ -1137,27 +1323,26 @@ def do_vcs_install(manifest_in, versionfile_source, ipy):
+ if ipy:
+ files.append(ipy)
+ try:
+- me = __file__
+- if me.endswith(".pyc") or me.endswith(".pyo"):
+- me = os.path.splitext(me)[0] + ".py"
+- versioneer_file = os.path.relpath(me)
++ my_path = __file__
++ if my_path.endswith(".pyc") or my_path.endswith(".pyo"):
++ my_path = os.path.splitext(my_path)[0] + ".py"
++ versioneer_file = os.path.relpath(my_path)
+ except NameError:
+ versioneer_file = "versioneer.py"
+ files.append(versioneer_file)
+ present = False
+ try:
+- f = open(".gitattributes", "r")
+- for line in f.readlines():
+- if line.strip().startswith(versionfile_source):
+- if "export-subst" in line.strip().split()[1:]:
+- present = True
+- f.close()
+- except EnvironmentError:
++ with open(".gitattributes", "r") as fobj:
++ for line in fobj:
++ if line.strip().startswith(versionfile_source):
++ if "export-subst" in line.strip().split()[1:]:
++ present = True
++ break
++ except OSError:
+ pass
+ if not present:
+- f = open(".gitattributes", "a+")
+- f.write("%s export-subst\n" % versionfile_source)
+- f.close()
++ with open(".gitattributes", "a+") as fobj:
++ fobj.write(f"{versionfile_source} export-subst\n")
+ files.append(".gitattributes")
+ run_command(GITS, ["add", "--"] + files)
+
+@@ -1165,27 +1350,34 @@ def do_vcs_install(manifest_in, versionfile_source, ipy):
+ def versions_from_parentdir(parentdir_prefix, root, verbose):
+ """Try to determine the version from the parent directory name.
+
+- Source tarballs conventionally unpack into a directory that includes
+- both the project name and a version string.
++ Source tarballs conventionally unpack into a directory that includes both
++ the project name and a version string. We will also support searching up
++ two directory levels for an appropriately named parent directory
+ """
+- dirname = os.path.basename(root)
+- if not dirname.startswith(parentdir_prefix):
+- if verbose:
+- print("guessing rootdir is '%s', but '%s' doesn't start with "
+- "prefix '%s'" % (root, dirname, parentdir_prefix))
+- raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
+- return {"version": dirname[len(parentdir_prefix):],
+- "full-revisionid": None,
+- "dirty": False, "error": None}
++ rootdirs = []
++
++ for _ in range(3):
++ dirname = os.path.basename(root)
++ if dirname.startswith(parentdir_prefix):
++ return {"version": dirname[len(parentdir_prefix):],
++ "full-revisionid": None,
++ "dirty": False, "error": None, "date": None}
++ rootdirs.append(root)
++ root = os.path.dirname(root) # up a level
++
++ if verbose:
++ print("Tried directories %s but none started with prefix %s" %
++ (str(rootdirs), parentdir_prefix))
++ raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
++
+
+ SHORT_VERSION_PY = """
+-# This file was generated by 'versioneer.py' (0.16) from
++# This file was generated by 'versioneer.py' (0.22) from
+ # revision-control system data, or from the parent directory name of an
+ # unpacked source archive. Distribution tarballs contain a pre-generated copy
+ # of this file.
+
+ import json
+-import sys
+
+ version_json = '''
+ %s
+@@ -1202,10 +1394,13 @@ def versions_from_file(filename):
+ try:
+ with open(filename) as f:
+ contents = f.read()
+- except EnvironmentError:
++ except OSError:
+ raise NotThisMethod("unable to read _version.py")
+ mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON",
+ contents, re.M | re.S)
++ if not mo:
++ mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON",
++ contents, re.M | re.S)
+ if not mo:
+ raise NotThisMethod("no version_json in _version.py")
+ return json.loads(mo.group(1))
+@@ -1254,19 +1449,67 @@ def render_pep440(pieces):
+ return rendered
+
+
+-def render_pep440_pre(pieces):
+- """TAG[.post.devDISTANCE] -- No -dirty.
++def render_pep440_branch(pieces):
++ """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
++
++ The ".dev0" means not master branch. Note that .dev0 sorts backwards
++ (a feature branch will appear "older" than the master branch).
+
+ Exceptions:
+- 1: no tags. 0.post.devDISTANCE
++ 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
+ """
+ if pieces["closest-tag"]:
+ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0"
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+untagged.%d.g%s" % (pieces["distance"],
++ pieces["short"])
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
++def pep440_split_post(ver):
++ """Split pep440 version string at the post-release segment.
++
++ Returns the release segments before the post-release and the
++ post-release version number (or -1 if no post-release segment is present).
++ """
++ vc = str.split(ver, ".post")
++ return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
++
++
++def render_pep440_pre(pieces):
++ """TAG[.postN.devDISTANCE] -- No -dirty.
++
++ Exceptions:
++ 1: no tags. 0.post0.devDISTANCE
++ """
++ if pieces["closest-tag"]:
+ if pieces["distance"]:
+- rendered += ".post.dev%d" % pieces["distance"]
++ # update the post release segment
++ tag_version, post_version = pep440_split_post(pieces["closest-tag"])
++ rendered = tag_version
++ if post_version is not None:
++ rendered += ".post%d.dev%d" % (post_version+1, pieces["distance"])
++ else:
++ rendered += ".post0.dev%d" % (pieces["distance"])
++ else:
++ # no commits, use the tag as the version
++ rendered = pieces["closest-tag"]
+ else:
+ # exception #1
+- rendered = "0.post.dev%d" % pieces["distance"]
++ rendered = "0.post0.dev%d" % pieces["distance"]
+ return rendered
+
+
+@@ -1297,12 +1540,41 @@ def render_pep440_post(pieces):
+ return rendered
+
+
++def render_pep440_post_branch(pieces):
++ """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
++
++ The ".dev0" means not master branch.
++
++ Exceptions:
++ 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
++ """
++ if pieces["closest-tag"]:
++ rendered = pieces["closest-tag"]
++ if pieces["distance"] or pieces["dirty"]:
++ rendered += ".post%d" % pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += plus_or_dot(pieces)
++ rendered += "g%s" % pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ else:
++ # exception #1
++ rendered = "0.post%d" % pieces["distance"]
++ if pieces["branch"] != "master":
++ rendered += ".dev0"
++ rendered += "+g%s" % pieces["short"]
++ if pieces["dirty"]:
++ rendered += ".dirty"
++ return rendered
++
++
+ def render_pep440_old(pieces):
+ """TAG[.postDISTANCE[.dev0]] .
+
+ The ".dev0" means dirty.
+
+- Eexceptions:
++ Exceptions:
+ 1: no tags. 0.postDISTANCE[.dev0]
+ """
+ if pieces["closest-tag"]:
+@@ -1365,17 +1637,22 @@ def render(pieces, style):
+ return {"version": "unknown",
+ "full-revisionid": pieces.get("long"),
+ "dirty": None,
+- "error": pieces["error"]}
++ "error": pieces["error"],
++ "date": None}
+
+ if not style or style == "default":
+ style = "pep440" # the default
+
+ if style == "pep440":
+ rendered = render_pep440(pieces)
++ elif style == "pep440-branch":
++ rendered = render_pep440_branch(pieces)
+ elif style == "pep440-pre":
+ rendered = render_pep440_pre(pieces)
+ elif style == "pep440-post":
+ rendered = render_pep440_post(pieces)
++ elif style == "pep440-post-branch":
++ rendered = render_pep440_post_branch(pieces)
+ elif style == "pep440-old":
+ rendered = render_pep440_old(pieces)
+ elif style == "git-describe":
+@@ -1386,7 +1663,8 @@ def render(pieces, style):
+ raise ValueError("unknown style '%s'" % style)
+
+ return {"version": rendered, "full-revisionid": pieces["long"],
+- "dirty": pieces["dirty"], "error": None}
++ "dirty": pieces["dirty"], "error": None,
++ "date": pieces.get("date")}
+
+
+ class VersioneerBadRootError(Exception):
+@@ -1465,7 +1743,8 @@ def get_versions(verbose=False):
+ print("unable to compute version")
+
+ return {"version": "0+unknown", "full-revisionid": None,
+- "dirty": None, "error": "unable to compute version"}
++ "dirty": None, "error": "unable to compute version",
++ "date": None}
+
+
+ def get_version():
+@@ -1473,8 +1752,12 @@ def get_version():
+ return get_versions()["version"]
+
+
+-def get_cmdclass():
+- """Get the custom setuptools/distutils subclasses used by Versioneer."""
++def get_cmdclass(cmdclass=None):
++ """Get the custom setuptools/distutils subclasses used by Versioneer.
++
++ If the package uses a different cmdclass (e.g. one from numpy), it
++ should be provide as an argument.
++ """
+ if "versioneer" in sys.modules:
+ del sys.modules["versioneer"]
+ # this fixes the "python setup.py develop" case (also 'install' and
+@@ -1488,12 +1771,15 @@ def get_cmdclass():
+ # parent is protected against the child's "import versioneer". By
+ # removing ourselves from sys.modules here, before the child build
+ # happens, we protect the child from the parent's versioneer too.
+- # Also see https://github.com/warner/python-versioneer/issues/52
++ # Also see https://github.com/python-versioneer/python-versioneer/issues/52
+
+- cmds = {}
++ cmds = {} if cmdclass is None else cmdclass.copy()
+
+ # we add "version" to both distutils and setuptools
+- from distutils.core import Command
++ try:
++ from setuptools import Command
++ except ImportError:
++ from distutils.core import Command
+
+ class cmd_version(Command):
+ description = "report generated version string"
+@@ -1511,6 +1797,7 @@ def get_cmdclass():
+ print("Version: %s" % vers["version"])
+ print(" full-revisionid: %s" % vers.get("full-revisionid"))
+ print(" dirty: %s" % vers.get("dirty"))
++ print(" date: %s" % vers.get("date"))
+ if vers["error"]:
+ print(" error: %s" % vers["error"])
+ cmds["version"] = cmd_version
+@@ -1524,9 +1811,16 @@ def get_cmdclass():
+ # setuptools/bdist_egg -> distutils/install_lib -> build_py
+ # setuptools/install -> bdist_egg ->..
+ # setuptools/develop -> ?
++ # pip install:
++ # copies source tree to a tempdir before running egg_info/etc
++ # if .git isn't copied too, 'git describe' will fail
++ # then does setup.py bdist_wheel, or sometimes setup.py install
++ # setup.py egg_info -> ?
+
+ # we override different "build_py" commands for both environments
+- if "setuptools" in sys.modules:
++ if 'build_py' in cmds:
++ _build_py = cmds['build_py']
++ elif "setuptools" in sys.modules:
+ from setuptools.command.build_py import build_py as _build_py
+ else:
+ from distutils.command.build_py import build_py as _build_py
+@@ -1546,8 +1840,41 @@ def get_cmdclass():
+ write_to_version_file(target_versionfile, versions)
+ cmds["build_py"] = cmd_build_py
+
++ if 'build_ext' in cmds:
++ _build_ext = cmds['build_ext']
++ elif "setuptools" in sys.modules:
++ from setuptools.command.build_ext import build_ext as _build_ext
++ else:
++ from distutils.command.build_ext import build_ext as _build_ext
++
++ class cmd_build_ext(_build_ext):
++ def run(self):
++ root = get_root()
++ cfg = get_config_from_root(root)
++ versions = get_versions()
++ _build_ext.run(self)
++ if self.inplace:
++ # build_ext --inplace will only build extensions in
++ # build/lib<..> dir with no _version.py to write to.
++ # As in place builds will already have a _version.py
++ # in the module dir, we do not need to write one.
++ return
++ # now locate _version.py in the new build/ directory and replace
++ # it with an updated value
++ target_versionfile = os.path.join(self.build_lib,
++ cfg.versionfile_build)
++ print("UPDATING %s" % target_versionfile)
++ write_to_version_file(target_versionfile, versions)
++ cmds["build_ext"] = cmd_build_ext
++
+ if "cx_Freeze" in sys.modules: # cx_freeze enabled?
+ from cx_Freeze.dist import build_exe as _build_exe
++ # nczeczulin reports that py2exe won't like the pep440-style string
++ # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g.
++ # setup(console=[{
++ # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION
++ # "product_version": versioneer.get_version(),
++ # ...
+
+ class cmd_build_exe(_build_exe):
+ def run(self):
+@@ -1572,8 +1899,35 @@ def get_cmdclass():
+ cmds["build_exe"] = cmd_build_exe
+ del cmds["build_py"]
+
++ if 'py2exe' in sys.modules: # py2exe enabled?
++ from py2exe.distutils_buildexe import py2exe as _py2exe
++
++ class cmd_py2exe(_py2exe):
++ def run(self):
++ root = get_root()
++ cfg = get_config_from_root(root)
++ versions = get_versions()
++ target_versionfile = cfg.versionfile_source
++ print("UPDATING %s" % target_versionfile)
++ write_to_version_file(target_versionfile, versions)
++
++ _py2exe.run(self)
++ os.unlink(target_versionfile)
++ with open(cfg.versionfile_source, "w") as f:
++ LONG = LONG_VERSION_PY[cfg.VCS]
++ f.write(LONG %
++ {"DOLLAR": "$",
++ "STYLE": cfg.style,
++ "TAG_PREFIX": cfg.tag_prefix,
++ "PARENTDIR_PREFIX": cfg.parentdir_prefix,
++ "VERSIONFILE_SOURCE": cfg.versionfile_source,
++ })
++ cmds["py2exe"] = cmd_py2exe
++
+ # we override different "sdist" commands for both environments
+- if "setuptools" in sys.modules:
++ if 'sdist' in cmds:
++ _sdist = cmds['sdist']
++ elif "setuptools" in sys.modules:
+ from setuptools.command.sdist import sdist as _sdist
+ else:
+ from distutils.command.sdist import sdist as _sdist
+@@ -1640,21 +1994,26 @@ SAMPLE_CONFIG = """
+
+ """
+
+-INIT_PY_SNIPPET = """
++OLD_SNIPPET = """
+ from ._version import get_versions
+ __version__ = get_versions()['version']
+ del get_versions
+ """
+
++INIT_PY_SNIPPET = """
++from . import {0}
++__version__ = {0}.get_versions()['version']
++"""
++
+
+ def do_setup():
+- """Main VCS-independent setup function for installing Versioneer."""
++ """Do main VCS-independent setup function for installing Versioneer."""
+ root = get_root()
+ try:
+ cfg = get_config_from_root(root)
+- except (EnvironmentError, configparser.NoSectionError,
++ except (OSError, configparser.NoSectionError,
+ configparser.NoOptionError) as e:
+- if isinstance(e, (EnvironmentError, configparser.NoSectionError)):
++ if isinstance(e, (OSError, configparser.NoSectionError)):
+ print("Adding sample versioneer config to setup.cfg",
+ file=sys.stderr)
+ with open(os.path.join(root, "setup.cfg"), "a") as f:
+@@ -1678,12 +2037,18 @@ def do_setup():
+ try:
+ with open(ipy, "r") as f:
+ old = f.read()
+- except EnvironmentError:
++ except OSError:
+ old = ""
+- if INIT_PY_SNIPPET not in old:
++ module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0]
++ snippet = INIT_PY_SNIPPET.format(module)
++ if OLD_SNIPPET in old:
++ print(" replacing boilerplate in %s" % ipy)
++ with open(ipy, "w") as f:
++ f.write(old.replace(OLD_SNIPPET, snippet))
++ elif snippet not in old:
+ print(" appending to %s" % ipy)
+ with open(ipy, "a") as f:
+- f.write(INIT_PY_SNIPPET)
++ f.write(snippet)
+ else:
+ print(" %s unmodified" % ipy)
+ else:
+@@ -1702,7 +2067,7 @@ def do_setup():
+ if line.startswith("include "):
+ for include in line.split()[1:]:
+ simple_includes.add(include)
+- except EnvironmentError:
++ except OSError:
+ pass
+ # That doesn't cover everything MANIFEST.in can do
+ # (http://docs.python.org/2/distutils/sourcedist.html#commands), so
+@@ -1723,7 +2088,7 @@ def do_setup():
+ print(" versionfile_source already in MANIFEST.in")
+
+ # Make VCS-specific changes. For git, this means creating/changing
+- # .gitattributes to mark _version.py for export-time keyword
++ # .gitattributes to mark _version.py for export-subst keyword
+ # substitution.
+ do_vcs_install(manifest_in, cfg.versionfile_source, ipy)
+ return 0
+@@ -1765,6 +2130,7 @@ def scan_setup_py():
+ errors += 1
+ return errors
+
++
+ if __name__ == "__main__":
+ cmd = sys.argv[1]
+ if cmd == "setup":
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb
index bd1136f..b3e1328 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb
@@ -3,6 +3,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+SRC_URI += "file://0001-Update-Versioneer-to-0.22.patch"
SRC_URI[md5sum] = "ab68ed404401421819c81cc6c0677a87"
SRC_URI[sha256sum] = "87eacf9d7298973a25d7615ef57d4782aebf913a532bba4b28a37e366e975daf"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cloudpickle_3.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cloudpickle_3.0.0.bb
new file mode 100644
index 0000000..25c3795
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cloudpickle_3.0.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Pickler class to extend the standard pickle.Pickler functionality"
+DESCRIPTION = "cloudpickle makes it possible to serialize Python constructs \
+not supported by the default pickle module from the Python standard library.\
+\
+cloudpickle is especially useful for cluster computing where Python code is \
+shipped over the network to execute on remote hosts, possibly close to the \
+data."
+HOMEPAGE = "https://github.com/cloudpipe/cloudpickle"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE.cloudpickle;md5=b4d59aa5e2cc777722aac17841237931"
+
+inherit pypi python_flit_core
+
+SRC_URI += "https://raw.githubusercontent.com/cloudpipe/cloudpickle/v${PV}/LICENSE;downloadfilename=LICENSE.cloudpickle;name=license"
+
+SRC_URI[sha256sum] = "996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"
+SRC_URI[license.sha256sum] = "3029ea34173e9fdc233ad315dc6b100bd1ea71f529b1c1af97664a272fdc55f5"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.27.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.28.1.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.27.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.28.1.bb
index b613fd3..a6a7b6c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.27.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.28.1.bb
@@ -11,7 +11,7 @@
PYPI_ARCHIVE_NAME_PREFIX = "pypi-"
inherit pypi python_setuptools_build_meta
-SRC_URI[sha256sum] = "9f4a7c7be2a25de5901f045618f41b833ea6c0f647115201d38e4fdf7e2815bc"
+SRC_URI[sha256sum] = "0d4051d101d151d8387156c463aa45c8cd0e164f870e0ac0c8c91d3ff08528e1"
SRC_URI += " \
file://CMakeLists.txt \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.8.0.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.7.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.8.0.bb
index 69f4be1..6aefef6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.7.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.8.0.bb
@@ -7,6 +7,6 @@
PYPI_PACKAGE = "colorlog"
-SRC_URI[sha256sum] = "bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5"
+SRC_URI[sha256sum] = "fbb6fdf9d5685f2517f388fb29bb27d54e8654dd31f58bc2a3b217e967a95ca6"
RDEPENDS:${PN} += "python3-logging"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
deleted file mode 100644
index 7f9b032..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Symbolic constants in Python"
-HOMEPAGE = "https://github.com/twisted/constantly"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e393e4ddd223e3a74982efa784f89fd7"
-
-SRC_URI[md5sum] = "f0762f083d83039758e53f8cf0086eef"
-SRC_URI[sha256sum] = "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-json"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_23.10.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_23.10.4.bb
new file mode 100644
index 0000000..cb6ca0a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_23.10.4.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Symbolic constants in Python"
+HOMEPAGE = "https://github.com/twisted/constantly"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e393e4ddd223e3a74982efa784f89fd7"
+
+SRC_URI[sha256sum] = "aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd"
+
+inherit pypi python_poetry_core
+
+DEPENDS += "${PYTHON_PN}-versioneer-native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-json"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb
index 12496b0..42bc9fc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb
@@ -3,7 +3,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
-SRC_URI[sha256sum] = "be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"
+SRC_URI[sha256sum] = "020d56d2da5bc22a0e00a5b0d54597ee91ad72446fa4cf1b97c35022f6b6dbf0"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.1.bb
index 270f749..7817401 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.1.bb
@@ -5,7 +5,7 @@
SRC_URI[sha256sum] = "83b43bf17b1085ac15c5debdb42154f138b928234b21447358981f69d0d6fe1b"
-RDEPENDS:${PN} += "python3-setuptools python3-distutils"
+RDEPENDS:${PN} += "python3-setuptools"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.12.1.bb
similarity index 68%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.11.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.12.1.bb
index 59492e8..574083b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.12.1.bb
@@ -3,9 +3,9 @@
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=7713fe42cd766b15c710e19392bfa811"
-SRC_URI[sha256sum] = "9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"
+SRC_URI[sha256sum] = "88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
RDEPENDS:${PN} += "\
python3-core \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.21.0.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.15.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.21.0.bb
index b3cb377..5698ae9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.15.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-fast_2.21.0.bb
@@ -3,7 +3,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=729e372b5ea0168438e4fd4a00a04947"
-SRC_URI[sha256sum] = "c98c7dfc3c589d6a5ded3427addfef1f9199525422f976e10d70a5c10558f5bf"
+SRC_URI[sha256sum] = "f582f6f16791ced6067dab325fae444edf7ce0704315b90c2a473090636a6fe0"
PYPI_PACKAGE = "dbus_fast"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dirty-equals_0.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dirty-equals_0.7.1.bb
new file mode 100644
index 0000000..ea9303b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dirty-equals_0.7.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Doing dirty (but extremely useful) things with equals."
+DESCRIPTION = "dirty-equals is a python library that (mis)uses the \
+__eq__ method to make python code (generally unit tests) more \
+declarative and therefore easier to read and write.\
+\
+dirty-equals can be used in whatever context you like, but it comes \
+into its own when writing unit tests for applications where you're \
+commonly checking the response to API calls and the contents of a database."
+HOMEPAGE = "https://github.com/samuelcolvin/dirty-equals"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c"
+
+SRC_URI[sha256sum] = "a580513f3285e93656a770a04e428f8bfc513848877bf278282dbfbb907fdbb4"
+
+S = "${WORKDIR}/dirty_equals-${PV}"
+
+inherit pypi python_hatchling
+
+PYPI_PACKAGE = "dirty_equals"
+
+RDEPENDS:${PN} += "python3-pytz"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.8.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.8.bb
index 1d9d53e..41a6647 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-distlib_0.3.8.bb
@@ -6,7 +6,7 @@
LICENSE = "PSF-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f6a11430d5cd6e2cd3832ee94f22ddfc"
-SRC_URI[sha256sum] = "9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"
+SRC_URI[sha256sum] = "1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"
BBCLASSEXTEND = "native nativesdk"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.9.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.9.0.bb
index f7616e4..a342432 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.9.0.bb
@@ -5,7 +5,7 @@
PYPI_PACKAGE = "distro"
-SRC_URI[sha256sum] = "02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8"
+SRC_URI[sha256sum] = "2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.7.bb
deleted file mode 100644
index 100db9b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.7.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-django.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41"
-
-RDEPENDS:${PN} += "\
- ${PYTHON_PN}-sqlparse \
- ${PYTHON_PN}-asgiref \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.bb
new file mode 100644
index 0000000..bad4245
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.bb
@@ -0,0 +1,9 @@
+require python-django.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "7d29e14dfbc19cb6a95a4bd669edbde11f5d4c6a71fdaa42c2d40b6846e807f7"
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-sqlparse \
+ ${PYTHON_PN}-asgiref \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate/fix-ptests.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate/fix-ptests.patch
deleted file mode 100644
index 81211d4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate/fix-ptests.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Fixes test failures on musl
-
-Fixes errors
-ptestresult.python3-dominate.tests/test_dom_tag.py::test___get_thread_context
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-diff --git a/tests/test_dom_tag.py b/tests/test_dom_tag.py
-index 43ffecb..1126e54 100644
---- a/tests/test_dom_tag.py
-+++ b/tests/test_dom_tag.py
-@@ -18,6 +18,7 @@ def test___get_thread_context(monkeypatch):
- monkeypatch.setattr(sut, 'threading', threading)
-
- assert sut._get_thread_context() in [
-+ 1692341442, # Python >= 3.9, 32-bit
- -6805948436281256182, # Python >= 3.9
- 3713141171098444831, # Python < 3.9
- ]
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.9.1.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.9.1.bb
index 6b0489e..3bd9d87 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.9.1.bb
@@ -2,13 +2,12 @@
LICENSE = "LGPL-3.0-only"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
-SRC_URI[sha256sum] = "4c90c3befaf88e612b71f4b39af7bcbef8977acfa855cec957225a8fbf504007"
+SRC_URI[sha256sum] = "558284687d9b8aae1904e3d6051ad132dd4a8c0cf551b37ea4e7e42a31d19dc4"
-inherit pypi setuptools3 ptest
+inherit pypi ptest python_setuptools_build_meta
SRC_URI += " \
file://run-ptest \
- file://fix-ptests.patch \
"
RDEPENDS:${PN}-ptest += " \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.1.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.1.bb
index 1cc79f1..f88a3ac 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.8.1.bb
@@ -17,4 +17,4 @@
python3-asyncio \
"
-SRC_URI[sha256sum] = "2a32585d8fecd0118264fe0c39788670456ca9aa466d7c026d995cfff68af164"
+SRC_URI[sha256sum] = "fadc39c66348f96476d8dc2d7aaee7ea0a39d96e333217f5321300677b980121"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.7.0.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.6.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.7.0.bb
index 55ab1a7..2afc288 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.6.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-keyfile_0.7.0.bb
@@ -2,9 +2,9 @@
HOMEPAGE = "https://github.com/ethereum/eth-keyfile"
SECTION = "devel/python"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2beaef1b1764f4d6b46084c885b4bcad"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6749008d847c14b9718949c2e24d5c0a"
-SRC_URI[sha256sum] = "471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c"
+SRC_URI[sha256sum] = "6bdb8110c3a50439deb68a04c93c9d5ddd5402353bfae1bf4cfca1d6dff14fcf"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.0.bb
similarity index 62%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_0.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.0.bb
index d19a657..5cd0d05 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_0.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.0.bb
@@ -2,9 +2,9 @@
HOMEPAGE = "https://github.com/ethereum/eth-rlp"
SECTION = "devel/python"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=287820ad3553117aa2f92bf84c219324"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7bdfe69b1ffbde073ca6e96f5c53f7"
-SRC_URI[sha256sum] = "f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6"
+SRC_URI[sha256sum] = "a988d713a36452e7c6da71186798343f687eaf3aeb7f99266750dd9e1f754c7b"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.33.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.34.2.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.33.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.34.2.bb
index c125666..86524da 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.33.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.34.2.bb
@@ -4,13 +4,12 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=56472ad6de4caf50e05332a34b66e778"
-SRC_URI[sha256sum] = "722803e7eadff295347539da363d68ae155b8b26ae6a634474d0a920be73cfda"
+SRC_URI[sha256sum] = "2115c7c6742e6893bf1347f82915572f8895c911cb5abaad4d3596a7daa847cc"
inherit pypi setuptools3
RDEPENDS:${PN} += " \
${PYTHON_PN}-dnspython \
${PYTHON_PN}-six \
- ${PYTHON_PN}-distutils \
${PYTHON_PN}-greenlet \
"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-expandvars_0.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-expandvars_0.12.0.bb
new file mode 100644
index 0000000..6183c31
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-expandvars_0.12.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Expand system variables Unix style"
+HOMEPAGE = "https://github.com/sayanarijit/expandvars"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8b2e744064bd184728ac09dbfb52aaf4"
+
+SRC_URI[sha256sum] = "7d1adfa55728cf4b5d812ece3d087703faea953e0c0a1a78415de9df5024d844"
+
+inherit pypi python_hatchling python_setuptools_build_meta
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.0.1.bb
deleted file mode 100644
index 7494c45..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "Super-fast and clean conversions to numbers."
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=58db8ac9e152dd9b700f4d39ff40a31a"
-
-PYPI_PACKAGE = "fastnumbers"
-
-SRC_URI[sha256sum] = "9e4fd92cdf263a8e0865af19c40ae9df45a9bc0eb5e22fefea871140e7e0262f"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.1.0.bb
new file mode 100644
index 0000000..01aa8b3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastnumbers_5.1.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Super-fast and clean conversions to numbers."
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32431d1b650010945da4e078011c8fa"
+
+PYPI_PACKAGE = "fastnumbers"
+
+SRC_URI[sha256sum] = "e092d33f8b95c3171a2fb34e579efe0c54b0290dd7f96ffaa2762437601d90a7"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.6.0.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.5.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.6.0.bb
index d5438f1..cc07c92 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.5.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt-extended_4.6.0.bb
@@ -7,7 +7,7 @@
PYPI_PACKAGE = "Flask-JWT-Extended"
-SRC_URI[sha256sum] = "061ef3d25ed5743babe4964ab38f36d870e6d2fd8a126bab5d77ddef8a01932b"
+SRC_URI[sha256sum] = "9215d05a9413d3855764bcd67035e75819d23af2fafb6b55197eb5a3313fdfb2"
RDEPENDS:${PN} += "\
python3-werkzeug \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.3.0.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.2.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.3.0.bb
index 573c2db..9c2a1e9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restx_1.3.0.bb
@@ -2,7 +2,7 @@
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c96dd911c6d9e32868b6bc667a38a3e2"
-SRC_URI[sha256sum] = "9a5338b108c57fbed1d24d5d53fe98442b2be7ffa2ff3291305af7a613ce6fc0"
+SRC_URI[sha256sum] = "4f3d3fa7b6191fcc715b18c201a12cd875176f92ba4acc61626ccfd571ee1728"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.5.1.bb
deleted file mode 100644
index 3aa6303..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.5.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Adds SQLAlchemy support to your Flask application."
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
-
-SRC_URI[sha256sum] = "2bda44b43e7cacb15d4e05ff3cc1f8bc97936cc464623424102bfc2c35e95912"
-
-PYPI_PACKAGE = "Flask-SQLAlchemy"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = "${PYTHON_PN}-sqlalchemy ${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_3.1.1.bb
new file mode 100644
index 0000000..56f63bf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_3.1.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Adds SQLAlchemy support to your Flask application."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[sha256sum] = "e4b68bb881802dda1a7d878b2fc84c06d1ee57fb40b874d3dc97dabfa36b8312"
+
+PYPI_PACKAGE = "flask_sqlalchemy"
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/Flask-SQLAlchemy"
+UPSTREAM_CHECK_REGEX = "/Flask-SQLAlchemy/(?P<pver>(\d+[\.\-_]*)+)"
+
+inherit pypi python_setuptools_build_meta
+
+RDEPENDS:${PN} = "${PYTHON_PN}-sqlalchemy ${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.1.1.bb
deleted file mode 100644
index ec47fca..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.1.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Simple integration of Flask and WTForms."
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=d98d089889e14b227732d45dac3aacc4"
-
-SRC_URI[sha256sum] = "41c4244e9ae626d63bed42ae4785b90667b885b1535d5a4095e1f63060d12aa9"
-
-PYPI_PACKAGE = "Flask-WTF"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = "\
- ${PYTHON_PN}-flask \
- ${PYTHON_PN}-itsdangerous \
- ${PYTHON_PN}-json \
- ${PYTHON_PN}-wtforms \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.2.1.bb
new file mode 100644
index 0000000..973bb57
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_1.2.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Simple integration of Flask and WTForms."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=d98d089889e14b227732d45dac3aacc4"
+
+SRC_URI[sha256sum] = "8bb269eb9bb46b87e7c8233d7e7debdf1f8b74bf90cc1789988c29b37a97b695"
+
+PYPI_PACKAGE = "flask_wtf"
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/Flask-WTF"
+UPSTREAM_CHECK_REGEX = "/Flask-WTF/(?P<pver>(\d+[\.\-_]*)+)"
+
+inherit pypi python_hatchling
+
+RDEPENDS:${PN} = "\
+ ${PYTHON_PN}-flask \
+ ${PYTHON_PN}-itsdangerous \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-wtforms \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb
index c8c8d87..99a61f1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb
@@ -8,6 +8,9 @@
SRC_URI[sha256sum] = "09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/Flask"
+UPSTREAM_CHECK_REGEX = "/Flask/(?P<pver>(\d+[\.\-_]*)+)"
+
inherit pypi python_setuptools_build_meta
CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.1.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.1.bb
index 340b0e3..1ce5c84 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.4.1.bb
@@ -3,9 +3,13 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=cf056e8e7a0a5477451af18b7b5aa98c"
-SRC_URI[sha256sum] = "09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"
+SRC_URI[sha256sum] = "c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"
inherit pypi python_setuptools_build_meta
-BBCLASSEXTEND = "native nativesdk"
+DEPENDS += " \
+ ${PYTHON_PN}-expandvars-native \
+ ${PYTHON_PN}-cython-native \
+"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.13.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.12.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.13.bb
index c06e94e..101bfb9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.12.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.13.bb
@@ -3,7 +3,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=903f1792621a3b35ee546da75d139177"
-SRC_URI[sha256sum] = "7df03792343089ae62dc7cd6f8be356861c4fc68768cefa22f3d8de5e7e5be48"
+SRC_URI[sha256sum] = "b4623d3e32ba266e96c04b0871bb057d05414371c1d279550648b390e6ba7577"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.2.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.2.bb
index 7510625..b69e2c4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.5.2.bb
@@ -4,7 +4,7 @@
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dabe659eadd6d97325b1582e41cfc11"
PYPI_PACKAGE = "python-gnupg"
-SRC_URI[sha256sum] = "5674bad4e93876c0b0d3197e314d7f942d39018bf31e2b833f6788a6813c3fb8"
+SRC_URI[sha256sum] = "01d8013931c9fa3f45824bbea7054c03d6e11f258a72e7e086e168dbcb91854c"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.14.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.15.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.14.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.15.0.bb
index b620e55..7ce2ad7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.14.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.15.0.bb
@@ -5,7 +5,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "5368a4502b793d9bbf812a5912e13e4e69f9bd87f6efb508460c43f5bbd1ce41"
+SRC_URI[sha256sum] = "abc978a72658f14a2df1e5e12532effe40f94f868f6e23d95133bd6abcca35ca"
RDEPENDS:${PN} += "\
${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.108.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.108.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb
index f8ccc9a..8961351 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.108.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb
@@ -4,7 +4,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-SRC_URI[sha256sum] = "6396efca83185fb205c0abdbc1c2ee57b40475578c6af37f6d0e30a639aade99"
+SRC_URI[sha256sum] = "3a45a53c031478d1c82c7162dd25c9a965247bca6bd438af0838a9d9b8219405"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.23.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.23.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb
index c7bf285..2f52761 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.23.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb
@@ -5,7 +5,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3"
+SRC_URI[sha256sum] = "42f707937feb4f5e5a39e6c4f343a17300a459aaf03141457ba505812841cc40"
RDEPENDS:${PN} += "\
${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.61.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.61.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb
index 171bc67..1536ba5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.61.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb
@@ -5,7 +5,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b"
+SRC_URI[sha256sum] = "83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"
RDEPENDS:${PN} += "\
${PYTHON_PN}-grpcio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.3.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.3.bb
index 523c2b6..abd6c49 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_3.0.3.bb
@@ -4,6 +4,6 @@
LIC_FILES_CHKSUM = "file://LICENSE;md5=e95668d68e4329085c7ab3535e6a7aee \
file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
-SRC_URI[sha256sum] = "816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"
+SRC_URI[sha256sum] = "43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-direct_mmap-Use-off_t-on-linux.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-direct_mmap-Use-off_t-on-linux.patch
deleted file mode 100644
index 9b3e5d4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-direct_mmap-Use-off_t-on-linux.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 45fdade6c0415ec5af3f9312e6311a4ccc682a7b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 28 Dec 2022 18:24:21 -0800
-Subject: [PATCH] direct_mmap: Use off_t on linux
-
-off64_t is not provided without defining _LARGEFILE64_SOURCE on musl
-this define is not defined automatically like glibc where it gets
-defined when _GNU_SOURCE is defined. Using off_t makes it portable
-across musl/glibc and for using 64bit off_t on glibc 32bit systems
--D_FILE_OFFSET_BITS=64 can be defined during build via CXXFLAGS
-
-Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/1349]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- absl/base/internal/direct_mmap.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/third_party/abseil-cpp/absl/base/internal/direct_mmap.h
-+++ b/third_party/abseil-cpp/absl/base/internal/direct_mmap.h
-@@ -72,7 +72,7 @@ namespace base_internal {
- // Platform specific logic extracted from
- // https://chromium.googlesource.com/linux-syscall-support/+/master/linux_syscall_support.h
- inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
-- off64_t offset) noexcept {
-+ off_t offset) noexcept {
- #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
- defined(__m68k__) || defined(__sh__) || \
- (defined(__hppa__) && !defined(__LP64__)) || \
-@@ -102,7 +102,7 @@ inline void* DirectMmap(void* start, siz
- #else
- return reinterpret_cast<void*>(
- syscall(SYS_mmap2, start, length, prot, flags, fd,
-- static_cast<off_t>(offset / pagesize)));
-+ offset / pagesize));
- #endif
- #elif defined(__s390x__)
- // On s390x, mmap() arguments are passed in memory.
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-protobuf-Disable-musttail-attribute-on-mips.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-protobuf-Disable-musttail-attribute-on-mips.patch
index 8c70b2b..67505d0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-protobuf-Disable-musttail-attribute-on-mips.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-protobuf-Disable-musttail-attribute-on-mips.patch
@@ -14,11 +14,11 @@
--- a/third_party/protobuf/src/google/protobuf/port_def.inc
+++ b/third_party/protobuf/src/google/protobuf/port_def.inc
-@@ -338,6 +338,7 @@ static_assert(PROTOBUF_ABSL_MIN(20230125
+@@ -298,6 +298,7 @@
#error PROTOBUF_TAILCALL was previously defined
#endif
- #if __has_cpp_attribute(clang::musttail) && !defined(__arm__) && \
-+ !defined(__mips__) && \
+ #if ABSL_HAVE_CPP_ATTRIBUTE(clang::musttail) && !defined(__arm__) && \
++ !defined(__mips__) && \
!defined(_ARCH_PPC) && !defined(__wasm__) && \
- !(defined(_MSC_VER) && defined(_M_IX86)) && !defined(__i386__) && \
- !(defined(__NDK_MAJOR__) && __NDK_MAJOR <= 24)
+ !(defined(_MSC_VER) && defined(_M_IX86)) && !defined(__i386__)
+ // Compilation fails on ARM32: b/195943306
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
index 4aa11bd..07276c1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
@@ -30,29 +30,30 @@
index cc53e79..be3bc78 100644
--- a/setup.py
+++ b/setup.py
-@@ -87,8 +87,11 @@ def check_linker_need_libatomic():
- """Test if linker on system needs libatomic."""
- code_test = (b'#include <atomic>\n' +
- b'int main() { return std::atomic<int64_t>{}; }')
-- cxx = os.environ.get('CXX', 'c++')
-- cpp_test = subprocess.Popen([cxx, '-x', 'c++', '-std=c++14', '-'],
+@@ -88,9 +88,11 @@
+ b"#include <atomic>\n"
+ + b"int main() { return std::atomic<int64_t>{}; }"
+ )
+- cxx = os.environ.get("CXX", "c++")
+- cpp_test = subprocess.Popen(
+- [cxx, "-x", "c++", "-std=c++14", "-"],
+ cxx, cxx_args = os.environ.get('CXX').split(' ', 1) or 'c++'
+ if not cxx_args:
+ cxx_args = "-g"
+
+ cpp_test = subprocess.Popen([cxx, cxx_args, '-x', 'c++', '-std=c++14', '-'],
- stdin=PIPE,
- stdout=PIPE,
- stderr=PIPE)
-@@ -98,7 +101,7 @@ def check_linker_need_libatomic():
+ stdin=PIPE,
+ stdout=PIPE,
+ stderr=PIPE,
+@@ -101,7 +103,7 @@
# Double-check to see if -latomic actually can solve the problem.
# https://github.com/grpc/grpc/issues/22491
cpp_test = subprocess.Popen(
-- [cxx, '-x', 'c++', '-std=c++14', '-', '-latomic'],
+- [cxx, "-x", "c++", "-std=c++14", "-", "-latomic"],
+ [cxx, cxx_args, '-x', 'c++', '-std=c++14', '-', '-latomic'],
stdin=PIPE,
stdout=PIPE,
- stderr=PIPE)
+ stderr=PIPE,
--
2.25.1
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.56.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.0.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.56.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.0.bb
index 8fbe1fa..8e5c7d4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.56.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.0.bb
@@ -11,9 +11,8 @@
SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch \
file://0001-protobuf-Disable-musttail-attribute-on-mips.patch \
- file://0001-direct_mmap-Use-off_t-on-linux.patch \
"
-SRC_URI[sha256sum] = "39f5877cea514b3da9f2683dfb3ffb45ef47b05f4ff39c287d7d61c5057f48b8"
+SRC_URI[sha256sum] = "ed30499340228d733ff69fcf4a66590ed7921f94eb5a2bf692258b1280b9dac7"
RDEPENDS:${PN} = "${PYTHON_PN}-grpcio"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Include-missing-cstdint-header.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Include-missing-cstdint-header.patch
index f970cf3..5cd94de 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Include-missing-cstdint-header.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Include-missing-cstdint-header.patch
@@ -1,4 +1,4 @@
-From 752e30eebe5b91c323bafcbea8d450dd5683701a Mon Sep 17 00:00:00 2001
+From 252aa78526287fe033c5656cd166e551fa5daa88 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 30 Jan 2023 10:31:10 -0800
Subject: [PATCH] Include missing <cstdint> header
@@ -11,6 +11,7 @@
Upstream-Status: Submitted [https://code-review.googlesource.com/c/re2/+/60970]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
third_party/re2/util/pcre.h | 1 +
1 file changed, 1 insertion(+)
@@ -27,6 +28,3 @@
#ifdef USEPCRE
#include <pcre.h>
---
-2.39.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-direct_mmap-Use-off_t-on-linux.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-direct_mmap-Use-off_t-on-linux.patch
deleted file mode 100644
index 49df528..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-direct_mmap-Use-off_t-on-linux.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 45fdade6c0415ec5af3f9312e6311a4ccc682a7b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 28 Dec 2022 18:24:21 -0800
-Subject: [PATCH] direct_mmap: Use off_t on linux
-
-off64_t is not provided without defining _LARGEFILE64_SOURCE on musl
-this define is not defined automatically like glibc where it gets
-defined when _GNU_SOURCE is defined. Using off_t makes it portable
-across musl/glibc and for using 64bit off_t on glibc 32bit systems
--D_FILE_OFFSET_BITS=64 can be defined during build via CXXFLAGS
-
-Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/1349]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- absl/base/internal/direct_mmap.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
-index 815b8d23..fdf88f0b 100644
---- a/absl/base/internal/direct_mmap.h
-+++ b/absl/base/internal/direct_mmap.h
-@@ -72,7 +72,7 @@ namespace base_internal {
- // Platform specific logic extracted from
- // https://chromium.googlesource.com/linux-syscall-support/+/master/linux_syscall_support.h
- inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
-- off64_t offset) noexcept {
-+ off_t offset) noexcept {
- #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
- defined(__m68k__) || defined(__sh__) || \
- (defined(__hppa__) && !defined(__LP64__)) || \
-@@ -102,7 +102,7 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
- #else
- return reinterpret_cast<void*>(
- syscall(SYS_mmap2, start, length, prot, flags, fd,
-- static_cast<off_t>(offset / pagesize)));
-+ offset / pagesize));
- #endif
- #elif defined(__s390x__)
- // On s390x, mmap() arguments are passed in memory.
---
-2.39.0
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
deleted file mode 100644
index 13911dd..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From de10fbc2386dcac3ab810c49b6977b2ee01bf426 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 17 Feb 2021 13:30:23 -0800
-Subject: [PATCH] setup.py: Do not mix C and C++ compiler options
-
-EXTRA_ENV_COMPILE_ARGS is used both with CC and CXX
-so using -std=c++11 or -std=gnu99 together will cause
-build time errors espcially with clang
-
-Keep '-std=c++11' to fix native build error
-with old gcc (such as gcc 5.4.0 on ubuntu 16.04), for clang
-we will remove them through GRPC_PYTHON_CFLAGS at do_compile
-in bb recipe.
-
-While export CC="gcc ", cc_args is None, it will
-cause subprocess.Popen always return 1. On centos 8, if you don't
-install package libatomic, there will be a native build error
-`cannot find /usr/lib64/libatomic.so.1.2.0'.
-
-Add no harm '-g' to cc_args if cc_args is empty.
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
----
- setup.py | 11 +++++++----
- src/python/grpcio/commands.py | 5 ++++-
- 2 files changed, 11 insertions(+), 5 deletions(-)
-
---- a/setup.py
-+++ b/setup.py
-@@ -206,8 +206,11 @@ def check_linker_need_libatomic():
- """Test if linker on system needs libatomic."""
- code_test = (b'#include <atomic>\n' +
- b'int main() { return std::atomic<int64_t>{}; }')
-- cxx = shlex.split(os.environ.get('CXX', 'c++'))
-- cpp_test = subprocess.Popen(cxx + ['-x', 'c++', '-std=c++14', '-'],
-+ cxx, cxx_args = os.environ.get('CXX').split(' ', 1) or 'c++'
-+ if not cxx_args:
-+ cxx_args = "-g"
-+
-+ cpp_test = subprocess.Popen([cxx, cxx_args, '-x', 'c++', '-std=c++14', '-'],
- stdin=PIPE,
- stdout=PIPE,
- stderr=PIPE)
-@@ -216,8 +219,8 @@ def check_linker_need_libatomic():
- return False
- # Double-check to see if -latomic actually can solve the problem.
- # https://github.com/grpc/grpc/issues/22491
-- cpp_test = subprocess.Popen(cxx +
-- ['-x', 'c++', '-std=c++14', '-', '-latomic'],
-+ cpp_test = subprocess.Popen(
-+ [cxx, cxx_args, '-x', 'c++', '-std=c++14', '-', '-latomic'],
- stdin=PIPE,
- stdout=PIPE,
- stderr=PIPE)
---- a/src/python/grpcio/commands.py
-+++ b/src/python/grpcio/commands.py
-@@ -228,8 +228,10 @@ class BuildExt(build_ext.build_ext):
- """
- try:
- # TODO(lidiz) Remove the generated a.out for success tests.
-- cc = os.environ.get('CC', 'cc')
-- cc_test = subprocess.Popen([cc, '-x', 'c', '-std=c++14', '-'],
-+ cc_test, cc_args = os.environ.get('CC').split(' ', 1) or 'gcc'
-+ if not cc_args:
-+ cc_args = "-g"
-+ cc_test = subprocess.Popen([cc_test, cc_args, '-x', 'c', '-std=c++14', '-'],
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
index 918c6c8..a5e7670 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
@@ -1,4 +1,4 @@
-From 4432b9a296c9c287dfe281b4d464dfd03e4eb721 Mon Sep 17 00:00:00 2001
+From 6ede7d01b18a4d9eeaccd25f5c1ab9985cb65307 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 12 Feb 2023 21:25:04 -0800
Subject: [PATCH] zlib: Include unistd.h for open/close C APIs
@@ -6,6 +6,7 @@
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
third_party/zlib/gzguts.h | 1 +
1 file changed, 1 insertion(+)
@@ -22,6 +23,3 @@
#include "zlib.h"
#ifdef STDC
# include <string.h>
---
-2.39.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
index 4100cf6..4bb60b6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
@@ -1,4 +1,7 @@
-An all-in-one patch that fixes several issues:
+From 9cec6297effa9fab6f0c71e342046daceecd7d4d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 13 Mar 2021 10:26:25 -0800
+Subject: [PATCH] An all-in-one patch that fixes several issues:
1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
2) powerpc stacktrace implementation only works on glibc (disabled on musl)
@@ -7,19 +10,21 @@
Sourced from void linux
+Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Xu Huan <xuhuan.fnst@fujitsu.com>
----
-Upstream-Status: Pending
- absl/base/internal/unscaledcycleclock.cc | 4 ++--
- absl/base/internal/unscaledcycleclock.h | 3 ++-
- absl/debugging/internal/examine_stack.cc | 8 +++++++-
- absl/debugging/internal/stacktrace_config.h | 2 +-
+---
+ .../abseil-cpp/absl/base/internal/unscaledcycleclock.cc | 4 ++--
+ .../absl/base/internal/unscaledcycleclock_config.h | 3 ++-
+ .../abseil-cpp/absl/debugging/internal/examine_stack.cc | 8 +++++++-
+ .../absl/debugging/internal/stacktrace_config.h | 2 +-
4 files changed, 12 insertions(+), 5 deletions(-)
---- a/absl/base/internal/unscaledcycleclock.cc
-+++ b/absl/base/internal/unscaledcycleclock.cc
+diff --git a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
+index b1c396c..d62bfd6 100644
+--- a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
++++ b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
@@ -20,7 +20,7 @@
#include <intrin.h>
#endif
@@ -38,8 +43,24 @@
int64_t UnscaledCycleClock::Now() {
#ifdef __GLIBC__
---- a/absl/debugging/internal/examine_stack.cc
-+++ b/absl/debugging/internal/examine_stack.cc
+diff --git a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h
+index 24b324a..5e232c1 100644
+--- a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h
++++ b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h
+@@ -21,7 +21,8 @@
+
+ // The following platforms have an implementation of a hardware counter.
+ #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
+- defined(__powerpc__) || defined(__ppc__) || defined(__riscv) || \
++ ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
++ defined(__riscv) || \
+ defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC))
+ #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
+ #else
+diff --git a/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc b/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
+index 5786322..72c7c46 100644
+--- a/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
++++ b/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
@@ -33,6 +33,10 @@
#include <csignal>
#include <cstdio>
@@ -51,7 +72,7 @@
#include "absl/base/attributes.h"
#include "absl/base/internal/raw_logging.h"
#include "absl/base/macros.h"
-@@ -174,8 +178,10 @@ void* GetProgramCounter(void* const vuc)
+@@ -174,8 +178,10 @@ void* GetProgramCounter(void* const vuc) {
return reinterpret_cast<void*>(context->uc_mcontext.pc);
#elif defined(__powerpc64__)
return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
@@ -63,8 +84,10 @@
#elif defined(__riscv)
return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
#elif defined(__s390__) && !defined(__s390x__)
---- a/absl/debugging/internal/stacktrace_config.h
-+++ b/absl/debugging/internal/stacktrace_config.h
+diff --git a/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h b/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
+index 3929b1b..23d5e50 100644
+--- a/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
++++ b/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
@@ -60,7 +60,7 @@
#elif defined(__i386__) || defined(__x86_64__)
#define ABSL_STACKTRACE_INL_HEADER \
@@ -74,15 +97,3 @@
#define ABSL_STACKTRACE_INL_HEADER \
"absl/debugging/internal/stacktrace_powerpc-inl.inc"
#elif defined(__aarch64__)
---- a/absl/base/internal/unscaledcycleclock_config.h
-+++ b/absl/base/internal/unscaledcycleclock_config.h
-@@ -21,7 +21,8 @@
-
- // The following platforms have an implementation of a hardware counter.
- #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
-- defined(__powerpc__) || defined(__ppc__) || defined(__riscv) || \
-+ ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-+ defined(__riscv) || \
- defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC))
- #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
- #else
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/mips_bigendian.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/mips_bigendian.patch
deleted file mode 100644
index 088ce33..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/mips_bigendian.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
---- a/third_party/boringssl-with-bazel/src/include/openssl/base.h
-+++ b/third_party/boringssl-with-bazel/src/include/openssl/base.h
-@@ -102,10 +102,10 @@ extern "C" {
- #elif (defined(__PPC__) || defined(__powerpc__))
- #define OPENSSL_32_BIT
- #define OPENSSL_PPC
--#elif defined(__MIPSEL__) && !defined(__LP64__)
-+#elif defined(__mips__) && !defined(__LP64__)
- #define OPENSSL_32_BIT
- #define OPENSSL_MIPS
--#elif defined(__MIPSEL__) && defined(__LP64__)
-+#elif defined(__mips__) && defined(__LP64__)
- #define OPENSSL_64_BIT
- #define OPENSSL_MIPS64
- #elif defined(__riscv) && __SIZEOF_POINTER__ == 8
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch
deleted file mode 100644
index 5dacc68..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Let boringSSL compile on ppc32 bit
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/third_party/boringssl-with-bazel/src/include/openssl/base.h
-+++ b/third_party/boringssl-with-bazel/src/include/openssl/base.h
-@@ -96,6 +96,9 @@ extern "C" {
- #elif defined(__ARMEL__) || defined(_M_ARM)
- #define OPENSSL_32_BIT
- #define OPENSSL_ARM
-+#elif (defined(__PPC__) || defined(__powerpc__))
-+#define OPENSSL_32_BIT
-+#define OPENSSL_PPC
- #elif defined(__MIPSEL__) && !defined(__LP64__)
- #define OPENSSL_32_BIT
- #define OPENSSL_MIPS
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.56.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.0.bb
similarity index 63%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.56.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.0.bb
index c34391d..77b4198 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.56.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.0.bb
@@ -6,15 +6,11 @@
DEPENDS += "${PYTHON_PN}-protobuf"
-SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
-SRC_URI:append:class-target = " file://ppc-boringssl-support.patch \
- file://mips_bigendian.patch \
- file://0001-Include-missing-cstdint-header.patch \
- file://abseil-ppc-fixes.patch;patchdir=third_party/abseil-cpp \
- file://0001-direct_mmap-Use-off_t-on-linux.patch;patchdir=third_party/abseil-cpp \
- file://0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch \
-"
-SRC_URI[sha256sum] = "0ff789ae7d8ddd76d2ac02e7d13bfef6fc4928ac01e1dcaa182be51b6bcc0aaa"
+SRC_URI += "file://0001-Include-missing-cstdint-header.patch \
+ file://abseil-ppc-fixes.patch \
+ file://0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch \
+ "
+SRC_URI[sha256sum] = "2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"
RDEPENDS:${PN} = "${PYTHON_PN}-protobuf \
${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.1.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.1.bb
index f627575..32b4472 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.33.1.bb
@@ -5,7 +5,7 @@
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=24cb9a367a9e641b459a01c4d15256ba"
-SRC_URI[sha256sum] = "39999d05eb500089e60be467dd7d618f56e142229b44c3961c2b420eeb538d7e"
+SRC_URI[sha256sum] = "78722d40b137bd98f5ec7312119f8aea9ad2049f76f434748eb306b6937cc1ce"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython-genutils_0.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython-genutils_0.2.0.bb
index 8725150..3261d80 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython-genutils_0.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython-genutils_0.2.0.bb
@@ -5,6 +5,9 @@
PYPI_PACKAGE = "ipython_genutils"
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ipython_genutils"
+UPSTREAM_CHECK_REGEX = "/ipython_genutils/(?P<pver>(\d+[\.\-_]*)+)"
+
SRC_URI[md5sum] = "5a4f9781f78466da0ea1a648f3e1f79f"
SRC_URI[sha256sum] = "eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.18.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.19.0.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.18.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.19.0.bb
index aaeb720..87474e4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.18.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.19.0.bb
@@ -5,7 +5,7 @@
PYPI_PACKAGE = "ipython"
-SRC_URI[sha256sum] = "4feb61210160f75e229ce932dbf8b719bff37af123c0b985fd038b14233daa16"
+SRC_URI[sha256sum] = "ac4da4ecf0042fb4e0ce57c60430c2db3c719fa8bdf92f8631d6bd8a5785d1f0"
RDEPENDS:${PN} = "\
${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.13.2.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.12.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.13.2.bb
index d111393..60d4418 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.12.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.13.2.bb
@@ -4,7 +4,7 @@
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=8227180126797a0148f94f483f3e1489"
-SRC_URI[sha256sum] = "8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"
+SRC_URI[sha256sum] = "48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"
inherit pypi python_poetry_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.3.2.bb
index fe1e68c..d68b40e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.3.2.bb
@@ -8,7 +8,6 @@
RDEPENDS:${PN} += " \
python3-asyncio \
- python3-distutils \
python3-json \
python3-multiprocessing \
python3-pprint \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb
index 2ec4d47..52e1cf6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb
@@ -6,6 +6,7 @@
inherit pypi setuptools3
+RECIPE_NO_UPDATE_REASON = "Version 0.9.2 is broken when using latest build machinery for C extensions"
SRC_URI[sha256sum] = "f3bf829059bf88eca22f4f549e17aa316cdaa14302bf2ba49ddeee60cea109ff"
DEPENDS += " \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.10.0.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.9.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.10.0.bb
index 74c5e9b..9232a5a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.10.0.bb
@@ -6,6 +6,6 @@
DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-pip-native"
-SRC_URI[sha256sum] = "659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"
+SRC_URI[sha256sum] = "78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.40.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.40.1.bb
index a55ded3..062a63a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.40.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.40.1.bb
@@ -19,12 +19,11 @@
DEPENDS += "openssl swig-native"
RDEPENDS:${PN} += "\
${PYTHON_PN}-datetime \
- ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-setuptools \
${PYTHON_PN}-logging \
${PYTHON_PN}-netclient \
${PYTHON_PN}-netserver \
${PYTHON_PN}-numbers \
- ${PYTHON_PN}-smtpd \
${PYTHON_PN}-xmlrpc \
"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_2.0.1.bb
index 1be3fa5..7ebf9f1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_2.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_2.0.1.bb
@@ -15,6 +15,5 @@
RDEPENDS:${PN} += " \
python3-cgitb \
- python3-smtpd \
python3-xml \
"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.7.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb
index 90301f3..2e6c7cc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.7.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb
@@ -5,7 +5,7 @@
inherit pypi python_setuptools_build_meta
-SRC_URI[sha256sum] = "fcb6d9afb1b6208b4c712af0dafdc650f518836065df0d4fb1d800f5d6773db2"
+SRC_URI[sha256sum] = "6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"
BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja/no-scikit-build.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja/no-scikit-build.patch
index 276fb50..b7d191e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja/no-scikit-build.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja/no-scikit-build.patch
@@ -8,11 +8,11 @@
index b895c20..577b642 100644
--- a/pyproject.toml
+++ b/pyproject.toml
-@@ -1,7 +1,6 @@
- [build-system]
+@@ -2,7 +2,6 @@
requires = [
- "setuptools>=42",
-- "scikit-build>=0.12",
+ "setuptools >=42",
+ "setuptools-scm[toml]",
+- "scikit-build",
]
build-backend = "setuptools.build_meta"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.1.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.1.bb
index 3b9077f..a9e0ed2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ninja_1.11.1.1.bb
@@ -6,11 +6,13 @@
PYPI_ARCHIVE_NAME_PREFIX = "pypi-"
inherit pypi python_setuptools_build_meta
-SRC_URI[sha256sum] = "c833a47d39b2d1eee3f9ca886fa1581efd5be6068b82734ac229961ee8748f90"
+SRC_URI[sha256sum] = "9d793b08dd857e38d0b6ffe9e6b7145d7c485a42dcfea04905ca0cdb6017cc3c"
SRC_URI += "file://no-scikit-build.patch \
file://run-ninja-from-path.patch"
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
do_install:append () {
rm -rf ${D}${bindir}
}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.46.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.47.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.46.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.47.bb
index e29f30f..2db0ada 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.46.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-olefile_0.47.bb
@@ -1,9 +1,9 @@
SUMMARY = "Python package to parse, read and write Microsoft OLE2 files"
HOMEPAGE = "https://github.com/decalage2/olefile"
LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e21a06208415d5eb2001555d37851362"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f18814bd70fd28e11a4545145dcb3822"
-SRC_URI[sha256sum] = "133b031eaf8fd2c9399b78b8bc5b8fcbe4c31e85295749bb17a87cba8f3c3964"
+SRC_URI[sha256sum] = "599383381a0bf3dfbd932ca0ca6515acd174ed48870cbf7fee123d698c192c1c"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.4.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.4.0.bb
index da87e51..0d32d36 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_3.4.0.bb
@@ -3,7 +3,7 @@
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5"
-SRC_URI[sha256sum] = "6a3777a961ac86dbef375c5f5b8d50014a1a96d0fd7f054a43bc880134b0ff77"
+SRC_URI[sha256sum] = "aac08f26a31dc4dffd92821527d1682d99d52f9ef6851968114a8728f3c274d3"
PYPI_PACKAGE = "paramiko"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.19.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.19.1.bb
deleted file mode 100644
index 9dc7f79..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.19.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Parse strings using a specification based on the Python format() syntax"
-HOMEPAGE = "https://github.com/r1chardj0n3s/parse"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8ab458ad281b60e6f1b39b3feafbfc05"
-
-SRC_URI[sha256sum] = "cc3a47236ff05da377617ddefa867b7ba983819c664e1afe46249e5b469be464"
-
-SRC_URI += " \
- git://github.com/r1chardj0n3s/parse.git;branch=master;protocol=https \
- file://run-ptest \
-"
-
-SRCREV ?= "72776522285d516032faa0f80c4ee6a8964075e8"
-
-S = "${WORKDIR}/git"
-
-inherit python_setuptools_build_meta ptest
-
-RDEPENDS:${PN} += "\
- python3-datetime \
- python3-logging \
- python3-numbers \
-"
-
-RDEPENDS:${PN}-ptest += " \
- python3-pytest \
-"
-
-do_install_ptest() {
- cp -f ${S}/test_parse.py ${D}${PTEST_PATH}/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.20.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.20.0.bb
new file mode 100644
index 0000000..3ca6fbb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.20.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Parse strings using a specification based on the Python format() syntax"
+HOMEPAGE = "https://github.com/r1chardj0n3s/parse"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8ab458ad281b60e6f1b39b3feafbfc05"
+
+SRC_URI[sha256sum] = "bd28bae37714b45d5894d77160a16e2be36b64a3b618c81168b3684676aa498b"
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+inherit pypi python_setuptools_build_meta ptest
+
+RDEPENDS:${PN} += "\
+ python3-datetime \
+ python3-logging \
+ python3-numbers \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ python3-pytest \
+"
+
+do_install_ptest() {
+ cp -f ${S}/tests/test*.py ${D}${PTEST_PATH}/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.9.0.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.7.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.9.0.bb
index d9576ed..19bf11b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.7.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.9.0.bb
@@ -2,7 +2,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f"
-SRC_URI[sha256sum] = "2b477f5887033f3cbea1cfd8553ee6a6a498eb2540a19f4aa082822aadcea30a"
+SRC_URI[sha256sum] = "dfd31c2af60e8889a13538bef302ade7adacdb5351836be22638e2349ddd5d7b"
SRC_URI += "\
file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.8.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.8.bb
index 679ecb0..f1f5072 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm-backend_2.1.8.bb
@@ -4,7 +4,7 @@
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4a564297b3c5b629a528b92fd8ff61ea"
-SRC_URI[sha256sum] = "d3b50ab6374557c1edc348135e0da5decef228ddf8c973a58e40f437cf3595ba"
+SRC_URI[sha256sum] = "2487dfbd13f69d80fb4e6a08006a3ee68272833970813047dc5fcfacdfdc0151"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.10.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.10.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb
index fffefb3..5ff6ffc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.10.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb
@@ -4,7 +4,7 @@
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
-SRC_URI[sha256sum] = "6dfd9d4cb59043edecb2d0b47d208e55d89d333ba7197deb05cca2dfbc7a4bfb"
+SRC_URI[sha256sum] = "b10bc4e5394856f1639ddc9bc754d9c26323ec5b828a135c6ed35f935b054b83"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
index 322c90e..f895b1d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
@@ -39,7 +39,6 @@
jpeg-tools \
libwebp \
${PYTHON_PN}-core \
- ${PYTHON_PN}-distutils \
${PYTHON_PN}-image \
${PYTHON_PN}-mmap \
${PYTHON_PN}-pytest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.22.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.23.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.22.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.23.bb
index 0eed33f..82709ea 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.22.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.23.bb
@@ -10,7 +10,7 @@
inherit pypi ptest python_setuptools_build_meta
-SRC_URI[sha256sum] = "2d139f6abbcf3016cad7d3cec05707fe908ac4f99cf59aedfd6ee667b7a64433"
+SRC_URI[sha256sum] = "e1509b91606dbc52527c600a4ef74ffac12fff70688aff20e9072409346ec9b4"
DEPENDS += "python3-setuptools-scm-native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.1.0.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.1.0.bb
index 5a33be4..b4fb935 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-platformdirs_4.1.0.bb
@@ -7,7 +7,7 @@
file://run-ptest \
"
-SRC_URI[sha256sum] = "cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"
+SRC_URI[sha256sum] = "906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"
inherit pypi python_hatchling ptest
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.2.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.2.bb
index a340ba7..b4bbfc6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.4.2.bb
@@ -7,7 +7,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "9dcbf1808898f440aed304a5e9f0742a2859eca3b0ac7f1f58e50502852a8ef9"
+SRC_URI[sha256sum] = "5289b40d98959b16b3f6927781678935d3df1b7c14947f5d7778e5e04dd9a065"
RDEPENDS:${PN} = "\
${PYTHON_PN}-sortedcontainers \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.41.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.43.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.41.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.43.bb
index aa19116..9f7802b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.41.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.43.bb
@@ -3,7 +3,7 @@
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
-SRC_URI[sha256sum] = "941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"
+SRC_URI[sha256sum] = "3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf/0001-message.c-Cast-uintptr_t-types-to-upb_MessageDef.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf/0001-message.c-Cast-uintptr_t-types-to-upb_MessageDef.patch
deleted file mode 100644
index 89315e3..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf/0001-message.c-Cast-uintptr_t-types-to-upb_MessageDef.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 8ce4b50b210d3c0f8de40156d4ba7827bfe16b21 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 16 Aug 2023 17:36:19 -0700
-Subject: [PATCH] message.c: Cast uintptr_t types to upb_MessageDef
-
-This fixes build with clang
-
-python/message.c:1238:49: error: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned long') to parameter of type 'const upb_MessageDef *' (aka 'const struct upb_MessageDef *') [-Wint-conversion]
- 1238 | upb_MessageDef_MiniTable(other->def),
- | ^~~~~~~~~~
-/mnt/b/yoe/master/build/tmp/work/cortexa72-cortexa53-crypto-yoe-linux/python3-protobuf/4.24.0/protobuf-4.24.0/upb/reflection/message_def.h:138:69: note: passing argument to parameter 'm' here
- 138 | const upb_MiniTable* upb_MessageDef_MiniTable(const upb_MessageDef* m);
- | ^
-python/message.c:1609:69: error: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned long') to parameter of type 'const upb_MessageDef *' (aka 'const struct upb_MessageDef *') [-Wint-conversion]
- 1609 | upb_Message_DeepClone(self->ptr.msg, upb_MessageDef_MiniTable(self->def),
- | ^~~~~~~~~
-/mnt/b/yoe/master/build/tmp/work/cortexa72-cortexa53-crypto-yoe-linux/python3-protobuf/4.24.0/protobuf-4.24.0/upb/reflection/message_def.h:138:69: note: passing argument to parameter 'm' here
- 138 | const upb_MiniTable* upb_MessageDef_MiniTable(const upb_MessageDef* m);
- | ^
-python/message.c:1611:44: error: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned long') to parameter of type 'const upb_MessageDef *' (aka 'const struct upb_MessageDef *') [-Wint-conversion]
- 1611 | PyObject* ret = PyUpb_Message_Get(clone, self->def, arena);
- | ^~~~~~~~~
-
-Upstream-Status: Submitted [https://github.com/protocolbuffers/upb/pull/1492]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- python/message.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/python/message.c b/python/message.c
-index a01ce16..c418b84 100644
---- a/python/message.c
-+++ b/python/message.c
-@@ -1235,7 +1235,7 @@ static PyObject* PyUpb_Message_CopyFrom(PyObject* _self, PyObject* arg) {
- Py_DECREF(tmp);
-
- upb_Message_DeepCopy(self->ptr.msg, other->ptr.msg,
-- upb_MessageDef_MiniTable(other->def),
-+ upb_MessageDef_MiniTable((const upb_MessageDef*)other->def),
- PyUpb_Arena_Get(self->arena));
- PyUpb_Message_SyncSubobjs(self);
-
-@@ -1606,9 +1606,9 @@ PyObject* DeepCopy(PyObject* _self, PyObject* arg) {
-
- PyObject* arena = PyUpb_Arena_New();
- upb_Message* clone =
-- upb_Message_DeepClone(self->ptr.msg, upb_MessageDef_MiniTable(self->def),
-+ upb_Message_DeepClone(self->ptr.msg, upb_MessageDef_MiniTable((const upb_MessageDef*)self->def),
- PyUpb_Arena_Get(arena));
-- PyObject* ret = PyUpb_Message_Get(clone, self->def, arena);
-+ PyObject* ret = PyUpb_Message_Get(clone, (const upb_MessageDef*)self->def, arena);
- Py_DECREF(arena);
-
- return ret;
---
-2.41.0
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.24.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.25.1.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.24.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.25.1.bb
index 4b530c3..3c770e4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.24.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_4.25.1.bb
@@ -6,8 +6,7 @@
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=53dbfa56f61b90215a9f8f0d527c043d"
inherit pypi setuptools3
-SRC_URI += "file://0001-message.c-Cast-uintptr_t-types-to-upb_MessageDef.patch"
-SRC_URI[sha256sum] = "5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"
+SRC_URI[sha256sum] = "57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2"
# http://errors.yoctoproject.org/Errors/Details/184715/
# Can't find required file: ../src/google/protobuf/descriptor.proto
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core-crates.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core-crates.inc
new file mode 100644
index 0000000..932cfc8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core-crates.inc
@@ -0,0 +1,166 @@
+# Autogenerated with 'bitbake -c update_crates python3-pydantic-core'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/ahash/0.8.6 \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/base64/0.21.5 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/enum_dispatch/0.3.12 \
+ crate://crates.io/equivalent/1.0.1 \
+ crate://crates.io/form_urlencoded/1.2.0 \
+ crate://crates.io/getrandom/0.2.10 \
+ crate://crates.io/hashbrown/0.14.0 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/idna/0.4.0 \
+ crate://crates.io/indexmap/2.0.0 \
+ crate://crates.io/indoc/2.0.4 \
+ crate://crates.io/itoa/1.0.8 \
+ crate://crates.io/jiter/0.0.4 \
+ crate://crates.io/lexical-core/0.8.5 \
+ crate://crates.io/lexical-parse-float/0.8.5 \
+ crate://crates.io/lexical-parse-integer/0.8.6 \
+ crate://crates.io/lexical-util/0.8.5 \
+ crate://crates.io/lexical-write-float/0.8.5 \
+ crate://crates.io/lexical-write-integer/0.8.5 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/lock_api/0.4.10 \
+ crate://crates.io/memchr/2.6.3 \
+ crate://crates.io/memoffset/0.9.0 \
+ crate://crates.io/num-bigint/0.4.4 \
+ crate://crates.io/num-integer/0.1.45 \
+ crate://crates.io/num-traits/0.2.16 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/parking_lot/0.12.1 \
+ crate://crates.io/parking_lot_core/0.9.8 \
+ crate://crates.io/percent-encoding/2.3.0 \
+ crate://crates.io/proc-macro2/1.0.69 \
+ crate://crates.io/pyo3/0.20.0 \
+ crate://crates.io/pyo3-build-config/0.20.0 \
+ crate://crates.io/pyo3-ffi/0.20.0 \
+ crate://crates.io/pyo3-macros/0.20.0 \
+ crate://crates.io/pyo3-macros-backend/0.20.0 \
+ crate://crates.io/python3-dll-a/0.2.9 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/regex/1.10.2 \
+ crate://crates.io/regex-automata/0.4.3 \
+ crate://crates.io/regex-syntax/0.8.2 \
+ crate://crates.io/rustversion/1.0.13 \
+ crate://crates.io/ryu/1.0.14 \
+ crate://crates.io/scopeguard/1.1.0 \
+ crate://crates.io/serde/1.0.190 \
+ crate://crates.io/serde_derive/1.0.190 \
+ crate://crates.io/serde_json/1.0.108 \
+ crate://crates.io/smallvec/1.11.1 \
+ crate://crates.io/speedate/0.13.0 \
+ crate://crates.io/static_assertions/1.1.0 \
+ crate://crates.io/strum/0.25.0 \
+ crate://crates.io/strum_macros/0.25.3 \
+ crate://crates.io/syn/2.0.38 \
+ crate://crates.io/target-lexicon/0.12.9 \
+ crate://crates.io/tinyvec/1.6.0 \
+ crate://crates.io/tinyvec_macros/0.1.1 \
+ crate://crates.io/unicode-bidi/0.3.13 \
+ crate://crates.io/unicode-ident/1.0.10 \
+ crate://crates.io/unicode-normalization/0.1.22 \
+ crate://crates.io/unindent/0.2.3 \
+ crate://crates.io/url/2.4.1 \
+ crate://crates.io/uuid/1.5.0 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+ crate://crates.io/zerocopy/0.7.20 \
+ crate://crates.io/zerocopy-derive/0.7.20 \
+"
+
+SRC_URI[ahash-0.8.6.sha256sum] = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[enum_dispatch-0.3.12.sha256sum] = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e"
+SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+SRC_URI[form_urlencoded-1.2.0.sha256sum] = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+SRC_URI[getrandom-0.2.10.sha256sum] = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+SRC_URI[hashbrown-0.14.0.sha256sum] = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[idna-0.4.0.sha256sum] = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+SRC_URI[indexmap-2.0.0.sha256sum] = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+SRC_URI[itoa-1.0.8.sha256sum] = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
+SRC_URI[jiter-0.0.4.sha256sum] = "b27d419c535bf7b50ad355278b1159cbf0cc8d507ea003d625b17bf0375720b8"
+SRC_URI[lexical-core-0.8.5.sha256sum] = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
+SRC_URI[lexical-parse-float-0.8.5.sha256sum] = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
+SRC_URI[lexical-parse-integer-0.8.6.sha256sum] = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
+SRC_URI[lexical-util-0.8.5.sha256sum] = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
+SRC_URI[lexical-write-float-0.8.5.sha256sum] = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
+SRC_URI[lexical-write-integer-0.8.5.sha256sum] = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[lock_api-0.4.10.sha256sum] = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+SRC_URI[memchr-2.6.3.sha256sum] = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
+SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+SRC_URI[num-bigint-0.4.4.sha256sum] = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-traits-0.2.16.sha256sum] = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.8.sha256sum] = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+SRC_URI[percent-encoding-2.3.0.sha256sum] = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+SRC_URI[proc-macro2-1.0.69.sha256sum] = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+SRC_URI[pyo3-0.20.0.sha256sum] = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b"
+SRC_URI[pyo3-build-config-0.20.0.sha256sum] = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5"
+SRC_URI[pyo3-ffi-0.20.0.sha256sum] = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b"
+SRC_URI[pyo3-macros-0.20.0.sha256sum] = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b"
+SRC_URI[pyo3-macros-backend-0.20.0.sha256sum] = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424"
+SRC_URI[python3-dll-a-0.2.9.sha256sum] = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+SRC_URI[rustversion-1.0.13.sha256sum] = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"
+SRC_URI[ryu-1.0.14.sha256sum] = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[serde-1.0.190.sha256sum] = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"
+SRC_URI[serde_derive-1.0.190.sha256sum] = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"
+SRC_URI[serde_json-1.0.108.sha256sum] = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+SRC_URI[smallvec-1.11.1.sha256sum] = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+SRC_URI[speedate-0.13.0.sha256sum] = "242f76c50fd18cbf098607090ade73a08d39cfd84ea835f3796a2c855223b19b"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strum-0.25.0.sha256sum] = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
+SRC_URI[strum_macros-0.25.3.sha256sum] = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
+SRC_URI[syn-2.0.38.sha256sum] = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+SRC_URI[target-lexicon-0.12.9.sha256sum] = "df8e77cb757a61f51b947ec4a7e3646efd825b73561db1c232a8ccb639e611a0"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.10.sha256sum] = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+SRC_URI[url-2.4.1.sha256sum] = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+SRC_URI[uuid-1.5.0.sha256sum] = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+SRC_URI[zerocopy-0.7.20.sha256sum] = "dd66a62464e3ffd4e37bd09950c2b9dd6c4f8767380fabba0d523f9a775bc85a"
+SRC_URI[zerocopy-derive-0.7.20.sha256sum] = "255c4596d41e6916ced49cfafea18727b24d67878fa180ddfd69b9df34fd1726"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb
new file mode 100644
index 0000000..01f180c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Provides the core functionality for pydantic validation and serialization."
+DESCRIPTION = "This package provides the core functionality for \
+pydantic validation and serialization.\
+\
+Pydantic-core is currently around 17x faster than pydantic V1."
+HOMEPAGE = "https://github.com/pydantic/pydantic-core"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c"
+
+SRC_URI[sha256sum] = "6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"
+
+DEPENDS = "python3-maturin-native python3-typing-extensions"
+
+require ${BPN}-crates.inc
+
+inherit pypi cargo-update-recipe-crates python_maturin
+
+S = "${WORKDIR}/pydantic_core-${PV}"
+
+PYPI_ARCHIVE_NAME = "pydantic_core-${PV}.${PYPI_PACKAGE_EXT}"
+
+RDEPENDS:${PN} += "python3-typing-extensions"
+
+INSANE_SKIP:${PN} = "already-stripped"
+
+inherit ptest
+SRC_URI += "file://run-ptest"
+RDEPENDS:${PN}-ptest += "\
+ python3-dirty-equals \
+ python3-hypothesis \
+ python3-pytest \
+ python3-pytest-mock \
+ python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+ cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
+ rm -rf ${D}${PTEST_PATH}/tests/benchmarks
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.2.bb
deleted file mode 100644
index 3750d49..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Data validation and settings management using Python type hinting"
-HOMEPAGE = "https://github.com/samuelcolvin/pydantic"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=09280955509d1c4ca14bae02f21d49a6"
-
-inherit pypi python_hatchling
-
-SRC_URI[sha256sum] = "ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd"
-
-DEPENDS += "python3-hatch-fancy-pypi-readme-native"
-
-RDEPENDS:${PN} += "\
- python3-core \
- python3-datetime \
- python3-image \
- python3-io \
- python3-json \
- python3-logging \
- python3-netclient \
- python3-numbers \
- python3-profile \
- python3-typing-extensions \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.3.bb
new file mode 100644
index 0000000..21341d2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.5.3.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Data validation using Python type hinting"
+DESCRIPTION = "Data validation and settings management using Python \
+type hints.\
+\
+Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. \
+Define how data should be in pure, canonical Python 3.7+; validate it with \
+Pydantic."
+HOMEPAGE = "https://github.com/samuelcolvin/pydantic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=09280955509d1c4ca14bae02f21d49a6"
+
+inherit pypi python_hatchling
+
+SRC_URI[sha256sum] = "b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"
+
+DEPENDS += "python3-hatch-fancy-pypi-readme-native"
+
+RDEPENDS:${PN} += "\
+ python3-annotated-types \
+ python3-core \
+ python3-datetime \
+ python3-image \
+ python3-io \
+ python3-json \
+ python3-logging \
+ python3-netclient \
+ python3-numbers \
+ python3-profile \
+ python3-pydantic-core \
+ python3-typing-extensions \
+"
+
+inherit ptest
+SRC_URI += "file://run-ptest"
+RDEPENDS:${PN}-ptest += "\
+ python3-cloudpickle \
+ python3-dirty-equals \
+ python3-pytest \
+ python3-pytest-mock \
+ python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+ cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
+ # Requires 'ruff' (python3-ruff) which we cannot build
+ # until we have Rust 1.71+ in oe-core
+ rm -f ${D}${PTEST_PATH}/tests/test_docs.py
+ # We are not trying to support mypy
+ rm -f ${D}${PTEST_PATH}/tests/test_mypy.py
+ # We are not trying to run benchmarks
+ rm -rf ${D}${PTEST_PATH}/tests/benchmarks
+}
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify/0001-ext-define-FNM_EXTMATCH-if-not-already-defined.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify/0001-ext-define-FNM_EXTMATCH-if-not-already-defined.patch
index 2fa3cb0..4c279bb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify/0001-ext-define-FNM_EXTMATCH-if-not-already-defined.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify/0001-ext-define-FNM_EXTMATCH-if-not-already-defined.patch
@@ -1,19 +1,20 @@
-From 9e7894b97ae7afe43a9901b774de5aef401549ac Mon Sep 17 00:00:00 2001
+From 87f1bf7d1e0ca2a841706d1c41d14382f11264db Mon Sep 17 00:00:00 2001
From: Bartosz Golaszewski <brgl@bgdev.pl>
Date: Thu, 28 Apr 2022 16:32:06 +0200
Subject: [PATCH] ext: define FNM_EXTMATCH if not already defined
On musl this constant is not defined. Define it locally if not present.
-Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
----
Upstream-Status: Inappropriate
+Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
+
+---
src/ext.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/ext.c b/src/ext.c
-index e0bbe21..7d979d3 100644
+index fb33de1..fa01a81 100644
--- a/src/ext.c
+++ b/src/ext.c
@@ -19,6 +19,9 @@
@@ -24,8 +25,5 @@
+#define FNM_EXTMATCH 0
+#endif
- PyDoc_STRVAR(ext__doc__,
- "Wrapper for fanotify.\n"
---
-2.34.1
-
+ #define FUNUSED __attribute__((unused))
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.2.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.2.bb
index c9fd071..292ceab 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfanotify_0.2.2.bb
@@ -5,7 +5,7 @@
LIC_FILES_CHKSUM = "file://LICENSE;md5=636a36c9df04efcfacf839b8866d9a37"
SRC_URI += "file://0001-ext-define-FNM_EXTMATCH-if-not-already-defined.patch"
-SRC_URI[sha256sum] = "fd62dccdf3c17ca117e3279f0cbc65c639e53c9dec8a459d44ed6a35c1a18e60"
+SRC_URI[sha256sum] = "90219aa9f8b78fa732f24aa7b21c7bb6ac97a6eb47f1763c899b8194e23af1df"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
deleted file mode 100644
index 8dd5e15..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Python pyinotify: Linux filesystem events monitoring"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ab173cade7965b411528464589a08382"
-
-RDEPENDS:${PN} += "\
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-fcntl \
- ${PYTHON_PN}-io \
- ${PYTHON_PN}-logging \
- ${PYTHON_PN}-misc \
- ${PYTHON_PN}-shell \
- ${PYTHON_PN}-smtpd \
- ${PYTHON_PN}-threading \
-"
-
-SRC_URI[md5sum] = "8e580fa1ff3971f94a6f81672b76c406"
-SRC_URI[sha256sum] = "9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
similarity index 96%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
index 8af74b7..09ab1f2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
@@ -6,7 +6,7 @@
SRC_URI += "git://github.com/pylint-dev/pylint;branch=maintenance/3.0.x;protocol=https \
file://run-ptest \
"
-SRCREV = "efee9618894795cc8847727108522aa79431ee25"
+SRCREV = "1a5ffc1f447b77071ffe18a9c6836c09147ee2ed"
inherit python_setuptools_build_meta ptest
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.179.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.179.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb
index 69c7742..12bf624 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.179.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb
@@ -3,11 +3,9 @@
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
-SRC_URI = "git://github.com/MISP/PyMISP.git;protocol=https;branch=main"
-SRCREV = "cc6391233c01362a1b4b483c4ea8e67f306e3459"
-S = "${WORKDIR}/git"
+SRC_URI[sha256sum] = "888e848494e04148c8ff5887f04154a2b40f3065c53d93f9cec65f7ca7171362"
-inherit python_poetry_core
+inherit python_poetry_core pypi
PIP_INSTALL_PACKAGE = "pymisp"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.1.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.1.bb
index 18e29a1..2704637 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.6.1.bb
@@ -8,7 +8,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-SRC_URI[sha256sum] = "fb1c56d891f9e34303c451998ef62ba52659648bb0d75b03c5e4ac223a3342c2"
+SRC_URI[sha256sum] = "31dab1f3e1d0cdd57e8df01b645f52d43cc1b653ed3afd535d2891f4fc4f9712"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.10.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.9.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.10.bb
index baf3cf8..6b340a1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.9.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.7.10.bb
@@ -4,13 +4,12 @@
file://LICENSE.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://LICENSE.Apache-2.0;md5=34281e312165f843a2b7d1f114fe65ce"
-SRC_URI[sha256sum] = "b69d82f140b0774317d7ba40f6c5fa1d755098ba3f3eb619982d16e750dc631a"
+SRC_URI[sha256sum] = "cc2f90aad1517cb0b301041f678cc8d3c3427c26e53f15c78c93c67928d89a02"
inherit setuptools3 pypi ptest
RDEPENDS:${PN} += " \
python3-ctypes \
- python3-distutils \
python3-io \
python3-json \
python3-fcntl \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.22.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.22.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb
index 8fa77ac..a00778c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.22.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb
@@ -3,7 +3,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=136e4f49dbf29942c572a3a8f6e88a77"
-SRC_URI[sha256sum] = "01da1bf94ff0b969cc8d760104f7c1011903d0d658bdaef0bbae769660a7fbc4"
+SRC_URI[sha256sum] = "c16052382554c7b22d48782ab3438d5b10f8cf7a4bdcae7f0f67f097d95beecc"
inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.2.0.bb
deleted file mode 100644
index 713a84b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.2.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "pytest plugin for generating html reports from test results"
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d425c8f3157dbf212db2ec53d9e5132"
-
-SRC_URI[sha256sum] = "c4e2f4bb0bffc437f51ad2174a8a3e71df81bbc2f6894604e604af18fbe687c3"
-
-PYPI_PACKAGE = "pytest-html"
-
-inherit pypi python_setuptools_build_meta
-
-DEPENDS += "python3-setuptools-scm-git-archive-native"
-
-RDEPENDS:${PN} += " \
- ${PYTHON_PN}-pytest \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_4.1.1.bb
new file mode 100644
index 0000000..b9023df
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_4.1.1.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "pytest plugin for generating html reports from test results"
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d425c8f3157dbf212db2ec53d9e5132"
+
+SRC_URI[sha256sum] = "70a01e8ae5800f4a074b56a4cb1025c8f4f9b038bba5fe31e3c98eb996686f07"
+
+PYPI_PACKAGE = "pytest_html"
+
+inherit pypi python_hatchling
+
+DEPENDS += "\
+ ${PYTHON_PN}-hatch-vcs-native \
+"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-pytest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.2.bb
similarity index 94%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.2.bb
index 504ef7a..658dbe6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_25.1.2.bb
@@ -13,7 +13,7 @@
file://club-rpath-out.patch \
file://run-ptest \
"
-SRC_URI[sha256sum] = "259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"
+SRC_URI[sha256sum] = "93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"
inherit pypi pkgconfig python_setuptools_build_meta ptest
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.14.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.13.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.14.bb
index 1623f72..8b76397 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.13.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-rapidjson_1.14.bb
@@ -4,13 +4,12 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4daf3929156304df67003c33274a98bd"
-SRC_URI = "git://github.com/python-rapidjson/python-rapidjson.git;protocol=https;branch=master"
-SRCREV = "a87053d9b97750afddb504da05bd1cd9f4b94654"
-
-S = "${WORKDIR}/git"
+SRC_URI[sha256sum] = "26806f0a658c34b48d2951d8d3f846ca9deb93a34e664ef436db632a188b6779"
# Inheriting ptest provides functionality for packaging and installing runtime tests for this recipe
-inherit setuptools3 ptest
+inherit setuptools3 pypi ptest
+
+PYPI_PACKAGE = "python-rapidjson"
SETUPTOOLS_BUILD_ARGS += " --rj-include-dir=${RECIPE_SYSROOT}${includedir}"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.10.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.12.25.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.10.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.12.25.bb
index c26d55f..d7ac616 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.10.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.12.25.bb
@@ -5,7 +5,7 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"
+SRC_URI[sha256sum] = "29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"
RDEPENDS:${PN} += " \
python3-stringold \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp/0001-setup-don-t-use-setuptools-markdown.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp/0001-setup-don-t-use-setuptools-markdown.patch
deleted file mode 100644
index 0ab012a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp/0001-setup-don-t-use-setuptools-markdown.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5a2db801c6520be296cee9cba0e0e4ffac68430c Mon Sep 17 00:00:00 2001
-From: Bartosz Golaszewski <brgl@bgdev.pl>
-Date: Wed, 11 May 2022 15:11:19 +0200
-Subject: [PATCH] setup: don't use setuptools-markdown
-
-This project is deprecated and irrelevant for the functionality of
-pyrlp. We don't support it in meta-python so just drop it from the
-dependencies.
-
-Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
----
-Upstream-Status: Pending
-
- setup.py | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 1055fb1..55fca24 100755
---- a/setup.py
-+++ b/setup.py
-@@ -46,13 +46,11 @@ setup(
- # *IMPORTANT*: Don't manually change the version here. See README for more.
- version='3.0.0',
- description="A package for Recursive Length Prefix encoding and decoding",
-- long_description_markdown_filename='README.md',
- author="jnnk",
- author_email='jnnknnj@gmail.com',
- url='https://github.com/ethereum/pyrlp',
- packages=find_packages(exclude=["tests", "tests.*"]),
- include_package_data=True,
-- setup_requires=['setuptools-markdown'],
- install_requires=[
- "eth-utils>=2.0.0,<3",
- ],
---
-2.34.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_3.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_4.0.0.bb
similarity index 60%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_3.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_4.0.0.bb
index e747ae3..49efd09 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_3.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-rlp_4.0.0.bb
@@ -4,11 +4,13 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=00854fa80a84236706b11f47f23e61e7"
-SRC_URI[sha256sum] = "63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8"
-SRC_URI += "file://0001-setup-don-t-use-setuptools-markdown.patch"
+SRC_URI[sha256sum] = "61a5541f86e4684ab145cb849a5929d2ced8222930a570b3941cf4af16b72a78"
inherit pypi setuptools3
DEPENDS += "python3-pip-native"
-RDEPENDS:${PN} += "python3-eth-utils"
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-eth-utils \
+ ${PYTHON_PN}-typing-extensions \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.1.bb
similarity index 64%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.1.bb
index 6abdad0..6372d34 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdbus_0.11.1.bb
@@ -3,9 +3,15 @@
LICENSE = "LGPL-2.1-or-later"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e77986dc8e2ee22d44a7c863e96852ae"
-SRC_URI[sha256sum] = "f86fbadae54fea6441ec2f27dc29daf085269d66c5d9df1a4fbc9474a24b91d0"
+SRC_URI[sha256sum] = "adb97718ce996bb308520682c50b1a13e606d65a6edb1c1967a15d2e570cb3b7"
REQUIRED_DISTRO_FEATURES = "systemd"
DEPENDS += "systemd"
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-asyncio \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-core \
+"
+
inherit pypi setuptools3 features_check pkgconfig
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.37.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.39.1.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.37.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.39.1.bb
index 868a7e2..9f42132 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.37.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.39.1.bb
@@ -15,7 +15,7 @@
${PYTHON_PN}-datetime \
"
-SRC_URI[sha256sum] = "7cd324dd2877fdc861f75cba4242bce23a58272a6fea581fcb218bb718bd9cc5"
+SRC_URI[sha256sum] = "320a55cdf9da9097a0bead239c35b7e61f53660ef9878861824fd6d9b2eaf3b5"
PYPI_PACKAGE = "sentry-sdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm-git-archive_1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm-git-archive_1.1.bb
deleted file mode 100644
index 2068871..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm-git-archive_1.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "setuptools_scm plugin for git archives"
-HOMEPAGE = "https://pypi.org/project/setuptools-scm-git-archive/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=838c366f69b72c5df05c96dff79b35f2"
-
-SRC_URI[sha256sum] = "6026f61089b73fa1b5ee737e95314f41cb512609b393530385ed281d0b46c062"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "setuptools_scm_git_archive"
-PYPI_SRC_URI = "https://files.pythonhosted.org/packages/7e/2c/0c15b29a1b5940250bfdc4a4f53272e35cd7cf8a34159291b6b4ec9eb291/${PYPI_ARCHIVE_NAME}"
-
-DEPENDS += "python3-setuptools-scm-native"
-RDEPENDS:${PN} += "python3-setuptools-scm"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.23.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb
index ce216b0..91ab762 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.23.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb
@@ -4,7 +4,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b707d50badb798e1d897f2c8f649382d"
-SRC_URI[sha256sum] = "c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69"
+SRC_URI[sha256sum] = "6db97656fd3fe3f7e5b077f12fa6adb5feb6e0b567a3e99f47ecf5f7ea0a09e3"
PYPI_PACKAGE = "SQLAlchemy"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.2.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.2.5.bb
index 53f8011..06b08e7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.2.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.2.5.bb
@@ -17,7 +17,6 @@
python3-xmlrpc \
python3-resource \
python3-setuptools \
- python3-smtpd \
"
SRC_URI += "file://supervisord.conf \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.4.0.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.4.0.bb
index bbaefc7..212a293 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_2.4.0.bb
@@ -6,7 +6,7 @@
inherit pypi python_setuptools_build_meta
-SRC_URI[sha256sum] = "b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a"
+SRC_URI[sha256sum] = "aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"
DEPENDS += " \
${PYTHON_PN}-toml-native \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.4.bb
similarity index 92%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.3.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.4.bb
index c587422..e3d0209 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.3.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.4.bb
@@ -6,7 +6,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI[sha256sum] = "e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"
+SRC_URI[sha256sum] = "72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.4.bb
similarity index 92%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.4.bb
index be42c4b..62c15a7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.11.4.bb
@@ -6,7 +6,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=11610a9d8fd95649cf8159be12b98cb7"
-SRC_URI[sha256sum] = "5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951"
+SRC_URI[sha256sum] = "73a7240778fabf305aeb05ab8ea26e575e042ab5a18d71d0ed13e343a51d6ce1"
BBCLASSEXTEND = "native nativesdk"
inherit pypi python_hatchling
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.13.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb
index c16c1ef..19ea011 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.13.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb
@@ -3,7 +3,7 @@
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=13bed0ee6f46a6f6dbf1f9f9572f250a"
-SRC_URI[sha256sum] = "9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"
+SRC_URI[sha256sum] = "fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"
inherit pypi python_hatchling
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_68.2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_69.0.0.0.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_68.2.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_69.0.0.0.bb
index 4042ab5..2fc1895 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_68.2.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-setuptools_69.0.0.0.bb
@@ -5,6 +5,6 @@
inherit pypi setuptools3
-SRC_URI[sha256sum] = "09efc380ad5c7f78e30bca1546f706469568cf26084cfab73ecf83dea1d28446"
+SRC_URI[sha256sum] = "b0a06219f628c6527b2f8ce770a4f47550e00d3e8c3ad83e2dc31bc6e6eda95d"
BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-Deal-with-64bit-time_t-default-on-32bit-architecture.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-Deal-with-64bit-time_t-default-on-32bit-architecture.patch
deleted file mode 100644
index 4095fc9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-Deal-with-64bit-time_t-default-on-32bit-architecture.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 69adf9e32f5b11e15c0cbe17f9331c77fed65bf8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 28 May 2022 15:50:50 -0700
-Subject: [PATCH] Deal with 64bit time_t default on 32bit architectures
-
-Deal with Y2K38 concerns related to Linux input events on more recent
-kernels and libcs on 32-bit systems
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libsuinput/src/suinput.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/libsuinput/src/suinput.c b/libsuinput/src/suinput.c
-index 8d5fb71..13ff16a 100644
---- a/libsuinput/src/suinput.c
-+++ b/libsuinput/src/suinput.c
-@@ -45,11 +45,20 @@ int suinput_emit(int uinput_fd, uint16_t ev_type, uint16_t ev_code,
- struct input_event event;
-
- memset(&event, 0, sizeof(event));
-- gettimeofday(&event.time, 0);
- event.type = ev_type;
- event.code = ev_code;
- event.value = ev_value;
-
-+/* attempt to deal with 64-bit time keeping on recent 32-bit systems */
-+#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64))
-+ gettimeofday(&event.time, 0);
-+#else
-+ struct timeval now;
-+ memset(&now, 0, sizeof(now));
-+ gettimeofday(&now, 0);
-+ event.input_event_sec = now.tv_sec;
-+ event.input_event_usec = now.tv_usec;
-+#endif
- return suinput_write_event(uinput_fd, &event);
- }
-
---
-2.36.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-setup-use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-setup-use-setuptools-instead-of-distutils.patch
deleted file mode 100644
index b2e1b9c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput/0001-setup-use-setuptools-instead-of-distutils.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 7a4dde83a9584adb42c7f810d882b1fbf5767e2c Mon Sep 17 00:00:00 2001
-From: Bartosz Golaszewski <brgl@bgdev.pl>
-Date: Tue, 24 May 2022 21:43:35 +0200
-Subject: [PATCH] setup: use setuptools instead of distutils
-
-The latter is deprecated, use setuptools instead.
-
-Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
----
-Upstream-Status: Pending
-
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 3fa3343..4900b8b 100644
---- a/setup.py
-+++ b/setup.py
-@@ -3,7 +3,7 @@
- import errno
- import subprocess
-
--from distutils.core import setup, Extension
-+from setuptools import setup, Extension
-
- libudev_so = "libudev.so.1"
-
---
-2.34.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput_0.11.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput_0.11.2.bb
deleted file mode 100644
index ef46653..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-uinput_0.11.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Python interface to Linux uinput kernel module."
-HOMEPAGE = "https://pypi.org/project/python-uinput/"
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
-
-SRC_URI += "file://0001-setup-use-setuptools-instead-of-distutils.patch \
- file://0001-Deal-with-64bit-time_t-default-on-32bit-architecture.patch \
-"
-SRC_URI[sha256sum] = "99392b676c77b5795b86b7d75274db33fe754fd1e06fb3d58b167c797dc47f0c"
-
-PYPI_PACKAGE = "python-uinput"
-
-inherit pypi setuptools3
-
-DEPENDS += "udev"
-RDEPENDS:${PN} += " \
- python3-ctypes \
- python3-distutils \
-"
-RRECOMMENDS:${PN} += "kernel-module-uinput"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.9.0.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.9.0.bb
index 9486435..8de9b03 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_5.9.0.bb
@@ -4,7 +4,7 @@
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e0039a83d8a99726b5418f0b03302d0a"
-SRC_URI[sha256sum] = "78e318def4ade898a461b3d92a79f9441e7e0e4d2ad5419abed4336d702c7425"
+SRC_URI[sha256sum] = "89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532"
inherit pypi ptest setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-unoconv_0.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-unoconv_0.9.0.bb
index 3c944b4..be1dab4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-unoconv_0.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-unoconv_0.9.0.bb
@@ -11,7 +11,7 @@
PYPI_PACKAGE="unoconv"
RDEPENDS:${PN} += "\
- ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-setuptools \
${PYTHON_PN}-core \
${PYTHON_PN}-shell \
"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_git.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_0.4.7.bb
similarity index 70%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_git.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_0.4.7.bb
index 40adc34..4499edb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_git.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-uswid_0.4.7.bb
@@ -2,6 +2,11 @@
HOMEPAGE = "https://github.com/hughsie/python-uswid"
SECTION = "devel/python"
LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=40d2542b8c43a3ec2b7f5da31a697b88"
+
+SRC_URI[sha256sum] = "de15c2421bedaa5f54606558700c1f628f07d73da49ec69d1888214ac52c49e6"
+
+inherit setuptools3 python3native pypi
DEPENDS += " python3-cbor2 python3-lxml python3-pefile"
RDEPENDS:${PN} += " \
@@ -10,12 +15,5 @@
python3-lxml \
python3-netclient \
"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=40d2542b8c43a3ec2b7f5da31a697b88"
-
-SRC_URI = "git://github.com/hughsie/python-uswid.git;branch=main;protocol=https"
-SRCREV = "3223034abef88ae29cf79fdc7fe11ec7e21e11ff"
-S = "${WORKDIR}/git"
-
-inherit setuptools3 python3native
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.24.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.25.0.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.24.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.25.0.bb
index a4e5607..0a9ba59 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.24.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-virtualenv_20.25.0.bb
@@ -6,7 +6,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=0ce089158cf60a8ab6abb452b6405538"
-SRC_URI[sha256sum] = "69050ffb42419c91f6c1284a7b24e0475d793447e35929b488bf6a0aade39353"
+SRC_URI[sha256sum] = "bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"
BBCLASSEXTEND = "native nativesdk"
inherit pypi python_hatchling
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.11.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.13.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.11.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.13.0.bb
index 2c7aca9..0f0682f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.11.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.13.0.bb
@@ -4,13 +4,12 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=373fede350846fdffd23648fba504635"
-SRC_URI[sha256sum] = "f9bec9d2339bf649fe25293435a5c897a4b035aa96d6c33670ed467acf59dbe7"
+SRC_URI[sha256sum] = "769ab3cfffea69c6b495c63a1aecdb522651c0304260fc25467a886d0be622e2"
inherit pypi setuptools3
RDEPENDS:${PN} += " \
python3-aiohttp \
- python3-distutils \
python3-eth-account \
python3-idna \
python3-jsonschema \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.7.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.6.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.7.0.bb
index 961cdb9..b202d68 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.6.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.7.0.bb
@@ -7,7 +7,7 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=6eae3bb7247ccb2c3a087ea8de759c01"
-SRC_URI[sha256sum] = "b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df"
+SRC_URI[sha256sum] = "10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wpa-supplicant_0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wpa-supplicant_0.2.bb
index 5ac7786..b9c62ce 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-wpa-supplicant_0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wpa-supplicant_0.2.bb
@@ -10,6 +10,8 @@
SRC_URI += "file://0001-cli-drop-the-second-argument-from-click.argument-dec.patch"
PYPI_PACKAGE = "wpa_supplicant"
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/wpa_supplicant"
+UPSTREAM_CHECK_REGEX = "/wpa_supplicant/(?P<pver>(\d+[\.\-_]*)+)"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.0.1.bb
deleted file mode 100644
index 36a0191..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "A flexible forms validation and rendering library for python web development."
-HOMEPAGE = "https://pypi.python.org/pypi/WTForms"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=53dbfa56f61b90215a9f8f0d527c043d"
-
-SRC_URI[sha256sum] = "6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc"
-
-PYPI_PACKAGE = "WTForms"
-
-inherit pypi setuptools3
-
-DEPENDS += "\
- ${PYTHON_PN}-pip-native \
- ${PYTHON_PN}-babel-native \
- "
-
-RDEPENDS:${PN} += "\
- ${PYTHON_PN}-netserver \
- ${PYTHON_PN}-numbers \
- ${PYTHON_PN}-markupsafe \
- "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb
new file mode 100644
index 0000000..b57c311
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "A flexible forms validation and rendering library for python web development."
+HOMEPAGE = "https://pypi.python.org/pypi/WTForms"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=17ed54aa95f4a6cd0d7a4747d14b64d0"
+
+SRC_URI[sha256sum] = "5e51df8af9a60f6beead75efa10975e97768825a82146a65c7cbf5b915990620"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/WTForms"
+UPSTREAM_CHECK_REGEX = "/WTForms/(?P<pver>(\d+[\.\-_]*)+)"
+
+inherit pypi python_hatchling
+
+DEPENDS += "\
+ ${PYTHON_PN}-pip-native \
+ ${PYTHON_PN}-babel-native \
+ "
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-markupsafe \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.5.1.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.5.1.bb
index 9be7cb5..19fae91 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_2.5.1.bb
@@ -3,7 +3,7 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=0ab20f8e337bea2e6874f372edfd12c0"
-SRC_URI[sha256sum] = "2eb426c5710833a05610c22c8766713a1b87e9405e3eca0b7c658375bf7ec810"
+SRC_URI[sha256sum] = "4f7497de6c8b6dc2c28ad7b9ed6e21d186f4afe248a5bea4f54eedab4da44083"
PYPI_PACKAGE = "xmlschema"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-test_functionality-convert-line-endings-to-Unix.patch
similarity index 96%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-test_functionality-convert-line-endings-to-Unix.patch
index 476db4b..70d4607 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-test_functionality-convert-line-endings-to-Unix.patch
@@ -1,44 +1,23 @@
-From 0dedc1c573ddc4e87475eb03c64555cd54a72e92 Mon Sep 17 00:00:00 2001
-From: Trevor Gamblin <trevor.gamblin@windriver.com>
-Date: Mon, 7 Jun 2021 09:40:20 -0400
-Subject: [PATCH] Fix imports for tests
+From 0136ca731cba8b056b3f2ff0e7df3953b94f1e87 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 24 Dec 2023 09:41:57 -0800
+Subject: [PATCH 1/2] test_functionality: convert line endings to Unix
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+Convert the Windows line endings with dos2unix to be like the
+other files in tests/*
+
+Upstream-Status: Submitted [https://github.com/sumerc/yappi/pull/164]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
-Upstream-Status: Pending
+ tests/test_functionality.py | 3822 +++++++++++++++++------------------
+ 1 file changed, 1911 insertions(+), 1911 deletions(-)
- tests/test_asyncio.py | 2 +-
- tests/test_asyncio_context_vars.py | 2 +-
- tests/test_functionality.py | 2 +-
- tests/test_hooks.py | 2 +-
- tests/test_tags.py | 2 +-
- 5 files changed, 6 insertions(+), 6 deletions(-)
-
---- a/tests/test_asyncio.py
-+++ b/tests/test_asyncio.py
-@@ -2,7 +2,7 @@ import unittest
- import yappi
- import asyncio
- import threading
--from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
-+from .utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
-
-
- async def async_sleep(sec):
---- a/tests/test_asyncio_context_vars.py
-+++ b/tests/test_asyncio_context_vars.py
-@@ -5,7 +5,7 @@ import contextvars
- import functools
- import time
- import os
--import utils
-+import tests.utils as utils
- import yappi
-
- async_context_id = contextvars.ContextVar('async_context_id')
+diff --git a/tests/test_functionality.py b/tests/test_functionality.py
+index 0e99c47..38bbe67 100644
--- a/tests/test_functionality.py
+++ b/tests/test_functionality.py
-@@ -1,1916 +1,1916 @@
+@@ -1,1911 +1,1911 @@
-import os
-import sys
-import time
@@ -47,7 +26,7 @@
-import yappi
-import _yappi
-import utils
--import multiprocessing # added to fix http://bugs.python.org/issue15881 for > Py2.6
+-import multiprocessing
-import subprocess
-
-_counter = 0
@@ -318,10 +297,10 @@
- def test_profile_decorator(self):
-
- def aggregate(func, stats):
-- fname = "tests/%s.profile" % (func.__name__)
+- fname = f"tests/{func.__name__}.profile"
- try:
- stats.add(fname)
-- except IOError:
+- except OSError:
- pass
- stats.save(fname)
- raise Exception("messing around")
@@ -1232,7 +1211,7 @@
- # TODO: I put dummy() to fix below, remove the comments after a while.
- self.assertTrue( # FIX: I see this fails sometimes?
- tsm is not None,
-- 'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(tstats))))
+- f"Could not find \"_MainThread\". Found: {', '.join(utils.get_stat_names(tstats))}")
-
- def test_ctx_stats(self):
- from threading import Thread
@@ -1312,7 +1291,7 @@
- # TODO: I put dummy() to fix below, remove the comments after a while.
- self.assertTrue( # FIX: I see this fails sometimes
- tsmain is not None,
-- 'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(stats))))
+- f"Could not find \"_MainThread\". Found: {', '.join(utils.get_stat_names(stats))}")
- self.assertTrue(1.0 > tst2.ttot >= 0.5)
- self.assertTrue(1.0 > tst1.ttot >= 0.5)
-
@@ -1369,7 +1348,7 @@
- ts = []
- for i in (0.01, 0.05, 0.1):
- t = threading.Thread(target=burn_cpu, args=(i, ))
-- t.name = "burn_cpu-%s" % str(i)
+- t.name = f"burn_cpu-{str(i)}"
- t.start()
- ts.append(t)
- for t in ts:
@@ -1396,10 +1375,7 @@
- def test_producer_consumer_with_queues(self):
- # we currently just stress yappi, no functionality test is done here.
- yappi.start()
-- if utils.is_py3x():
-- from queue import Queue
-- else:
-- from Queue import Queue
+- from queue import Queue
- from threading import Thread
- WORKER_THREAD_COUNT = 50
- WORK_ITEM_COUNT = 2000
@@ -1458,7 +1434,6 @@
- fsh = utils.find_stat_by_name(stats, "handler")
- self.assertTrue(fsh is not None)
-
-- @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
- def test_concurrent_futures(self):
- yappi.start()
- from concurrent.futures import ThreadPoolExecutor
@@ -1468,7 +1443,6 @@
- time.sleep(1.0)
- yappi.stop()
-
-- @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
- def test_barrier(self):
- yappi.start()
- b = threading.Barrier(2, timeout=1)
@@ -1962,8 +1936,8 @@
+import unittest
+import yappi
+import _yappi
-+import tests.utils as utils
-+import multiprocessing # added to fix http://bugs.python.org/issue15881 for > Py2.6
++import utils
++import multiprocessing
+import subprocess
+
+_counter = 0
@@ -2234,10 +2208,10 @@
+ def test_profile_decorator(self):
+
+ def aggregate(func, stats):
-+ fname = "tests/%s.profile" % (func.__name__)
++ fname = f"tests/{func.__name__}.profile"
+ try:
+ stats.add(fname)
-+ except IOError:
++ except OSError:
+ pass
+ stats.save(fname)
+ raise Exception("messing around")
@@ -3007,8 +2981,8 @@
+
+ def test_issue_32(self):
+ '''
-+ Start yappi from different thread and we get Internal Error(15) as
-+ the current_ctx_id() called while enumerating the threads in start()
++ Start yappi from different thread and we get Internal Error(15) as
++ the current_ctx_id() called while enumerating the threads in start()
+ and as it does not swap to the enumerated ThreadState* the THreadState_GetDict()
+ returns wrong object and thus sets an invalid id for the _ctx structure.
+
@@ -3148,7 +3122,7 @@
+ # TODO: I put dummy() to fix below, remove the comments after a while.
+ self.assertTrue( # FIX: I see this fails sometimes?
+ tsm is not None,
-+ 'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(tstats))))
++ f"Could not find \"_MainThread\". Found: {', '.join(utils.get_stat_names(tstats))}")
+
+ def test_ctx_stats(self):
+ from threading import Thread
@@ -3228,7 +3202,7 @@
+ # TODO: I put dummy() to fix below, remove the comments after a while.
+ self.assertTrue( # FIX: I see this fails sometimes
+ tsmain is not None,
-+ 'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(stats))))
++ f"Could not find \"_MainThread\". Found: {', '.join(utils.get_stat_names(stats))}")
+ self.assertTrue(1.0 > tst2.ttot >= 0.5)
+ self.assertTrue(1.0 > tst1.ttot >= 0.5)
+
@@ -3285,7 +3259,7 @@
+ ts = []
+ for i in (0.01, 0.05, 0.1):
+ t = threading.Thread(target=burn_cpu, args=(i, ))
-+ t.name = "burn_cpu-%s" % str(i)
++ t.name = f"burn_cpu-{str(i)}"
+ t.start()
+ ts.append(t)
+ for t in ts:
@@ -3312,10 +3286,7 @@
+ def test_producer_consumer_with_queues(self):
+ # we currently just stress yappi, no functionality test is done here.
+ yappi.start()
-+ if utils.is_py3x():
-+ from queue import Queue
-+ else:
-+ from Queue import Queue
++ from queue import Queue
+ from threading import Thread
+ WORKER_THREAD_COUNT = 50
+ WORK_ITEM_COUNT = 2000
@@ -3374,7 +3345,6 @@
+ fsh = utils.find_stat_by_name(stats, "handler")
+ self.assertTrue(fsh is not None)
+
-+ @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
+ def test_concurrent_futures(self):
+ yappi.start()
+ from concurrent.futures import ThreadPoolExecutor
@@ -3384,7 +3354,6 @@
+ time.sleep(1.0)
+ yappi.stop()
+
-+ @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
+ def test_barrier(self):
+ yappi.start()
+ b = threading.Barrier(2, timeout=1)
@@ -3871,25 +3840,6 @@
+ # import sys;sys.argv = ['', 'BasicUsage.test_run_as_script']
+ # import sys;sys.argv = ['', 'MultithreadedScenarios.test_subsequent_profile']
+ unittest.main()
---- a/tests/test_hooks.py
-+++ b/tests/test_hooks.py
-@@ -5,7 +5,7 @@ import unittest
- import time
-
- import yappi
--import utils
-+import tests.utils as utils
-
-
- def a():
---- a/tests/test_tags.py
-+++ b/tests/test_tags.py
-@@ -2,7 +2,7 @@ import unittest
- import yappi
- import threading
- import time
--from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
-+from .utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
-
-
- class MultiThreadTests(YappiUnitTestCase):
+--
+2.34.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-Fix-import-of-tests.utils-to-enable-pytest.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-Fix-import-of-tests.utils-to-enable-pytest.patch
new file mode 100644
index 0000000..96dd024
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-Fix-import-of-tests.utils-to-enable-pytest.patch
@@ -0,0 +1,101 @@
+From 28eac38566327091221aabbc164ea8e433c66e7e Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 24 Dec 2023 09:27:50 -0800
+Subject: [PATCH 2/2] Fix import of tests.utils to enable pytest
+
+Running the test cases with pytest leads to importlib errors
+because the "utils" module cannot be found.
+
+Upstream-Status: Submitted [https://github.com/sumerc/yappi/pull/164]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ tests/test_asyncio.py | 2 +-
+ tests/test_asyncio_context_vars.py | 2 +-
+ tests/test_functionality.py | 2 +-
+ tests/test_gevent.py | 2 +-
+ tests/test_hooks.py | 2 +-
+ tests/test_tags.py | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/tests/test_asyncio.py b/tests/test_asyncio.py
+index 8e9e631..bb36f4a 100644
+--- a/tests/test_asyncio.py
++++ b/tests/test_asyncio.py
+@@ -2,7 +2,7 @@ import unittest
+ import yappi
+ import asyncio
+ import threading
+-from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
++from tests.utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
+
+
+ async def async_sleep(sec):
+diff --git a/tests/test_asyncio_context_vars.py b/tests/test_asyncio_context_vars.py
+index 5bd750c..9a253c0 100644
+--- a/tests/test_asyncio_context_vars.py
++++ b/tests/test_asyncio_context_vars.py
+@@ -5,7 +5,7 @@ import contextvars
+ import functools
+ import time
+ import os
+-import utils
++import tests.utils as utils
+ import yappi
+
+ async_context_id = contextvars.ContextVar('async_context_id')
+diff --git a/tests/test_functionality.py b/tests/test_functionality.py
+index 38bbe67..8098f17 100644
+--- a/tests/test_functionality.py
++++ b/tests/test_functionality.py
+@@ -5,7 +5,7 @@ import threading
+ import unittest
+ import yappi
+ import _yappi
+-import utils
++import tests.utils as utils
+ import multiprocessing
+ import subprocess
+
+diff --git a/tests/test_gevent.py b/tests/test_gevent.py
+index ed9e6ae..502af5f 100644
+--- a/tests/test_gevent.py
++++ b/tests/test_gevent.py
+@@ -2,7 +2,7 @@ import unittest
+ import _yappi
+ import yappi
+ import threading
+-from utils import (
++from tests.utils import (
+ YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io, burn_io_gevent
+ )
+
+diff --git a/tests/test_hooks.py b/tests/test_hooks.py
+index 297c643..8c387fc 100644
+--- a/tests/test_hooks.py
++++ b/tests/test_hooks.py
+@@ -5,7 +5,7 @@ import unittest
+ import time
+
+ import yappi
+-import utils
++import tests.utils as utils
+
+
+ def a():
+diff --git a/tests/test_tags.py b/tests/test_tags.py
+index b0b531d..b5a4016 100644
+--- a/tests/test_tags.py
++++ b/tests/test_tags.py
+@@ -2,7 +2,7 @@ import unittest
+ import yappi
+ import threading
+ import time
+-from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
++from tests.utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
+
+
+ class MultiThreadTests(YappiUnitTestCase):
+--
+2.34.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-add-3.11-to-the-setup.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-add-3.11-to-the-setup.patch
deleted file mode 100644
index d40bd2b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0002-add-3.11-to-the-setup.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 38afdacf526410f970afc58e147c7377c6c7112c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?S=C3=BCmer=20Cip?= <sumer.cip@platform.sh>
-Date: Fri, 25 Nov 2022 15:58:03 +0300
-Subject: [PATCH 2/2] add 3.11 to the setup
-
----
-Upstream-Status: Pending
-
- setup.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/setup.py b/setup.py
-index d006787..96e2a66 100644
---- a/setup.py
-+++ b/setup.py
-@@ -56,6 +56,7 @@ CLASSIFIERS = [
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: 3.9',
- 'Programming Language :: Python :: 3.10',
-+ 'Programming Language :: Python :: 3.11',
- 'Programming Language :: Python :: Implementation :: CPython',
- 'Operating System :: OS Independent',
- 'Topic :: Software Development :: Libraries',
---
-2.30.2
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest
index 3385d68..8d2017d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest
@@ -1,3 +1,3 @@
#!/bin/sh
-pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.4.0.bb
deleted file mode 100644
index 71e74e8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.4.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Yet Another Python Profiler"
-HOMEPAGE = "https://github.com/sumerc/yappi"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=71c208c9a4fd864385eb69ad4caa3bee"
-
-SRC_URI[sha256sum] = "504b5d8fc7433736cb5e257991d2e7f2946019174f1faec7b2fe947881a17fc0"
-
-SRC_URI += " \
- file://run-ptest \
- file://0001-Fix-imports-for-ptests.patch \
- file://0002-add-3.11-to-the-setup.patch \
-"
-
-inherit pypi setuptools3 ptest
-
-RDEPENDS:${PN} += "\
- ${PYTHON_PN}-datetime \
- ${PYTHON_PN}-pickle \
- ${PYTHON_PN}-threading \
-"
-
-RDEPENDS:${PN}-ptest += " \
- ${PYTHON_PN}-gevent \
- ${PYTHON_PN}-multiprocessing \
- ${PYTHON_PN}-pytest \
- ${PYTHON_PN}-profile \
- ${PYTHON_PN}-zopeinterface \
-"
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/tests
- cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
- cp -f ${S}/yappi/yappi.py ${D}/${PTEST_PATH}/
-}
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.6.0.bb
new file mode 100644
index 0000000..4349cab
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.6.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Yet Another Python Profiler"
+HOMEPAGE = "https://github.com/sumerc/yappi"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=71c208c9a4fd864385eb69ad4caa3bee"
+
+SRC_URI[sha256sum] = "a9aaf72009d8c03067294151ee0470ac7a6dfa7b33baab40b198d6c1ef00430a"
+
+SRC_URI += " \
+ file://run-ptest \
+ file://0001-test_functionality-convert-line-endings-to-Unix.patch \
+ file://0002-Fix-import-of-tests.utils-to-enable-pytest.patch \
+"
+
+inherit pypi python_setuptools_build_meta ptest
+
+RDEPENDS:${PN} += "\
+ python3-datetime \
+ python3-pickle \
+ python3-threading \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ python3-gevent \
+ python3-multiprocessing \
+ python3-pytest \
+ python3-profile \
+ python3-unittest-automake-output \
+ python3-zopeinterface \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests ${D}${PTEST_PATH}
+ cp -f ${S}/run_tests.py ${D}${PTEST_PATH}
+}
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.4.bb
similarity index 70%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.4.bb
index 6370002..d9fe4c0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.9.4.bb
@@ -3,13 +3,18 @@
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI[sha256sum] = "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
+SRC_URI[sha256sum] = "566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"
SRC_URI += "file://run-ptest"
PYPI_PACKAGE = "yarl"
-inherit pypi ptest setuptools3
+inherit pypi ptest python_setuptools_build_meta
+
+DEPENDS += " \
+ ${PYTHON_PN}-expandvars-native \
+ ${PYTHON_PN}-cython-native \
+"
RDEPENDS:${PN} = "\
${PYTHON_PN}-multidict \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.127.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.131.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.127.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.131.0.bb
index 45df13e..1963d89 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.127.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.131.0.bb
@@ -3,7 +3,7 @@
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=6517bdc8f2416f27ab725d4702f7aac3"
-SRC_URI[sha256sum] = "1ec001989666be7f76630d6bb8b07fb3928d655fa79a1484674a776778c9a1b3"
+SRC_URI[sha256sum] = "90c431e99192a044a5e0217afd7ca0ca9824af93190332e6f7baf4da5375f331"
inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.10.0.bb
deleted file mode 100644
index 3918ed3..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.10.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Google Spreadsheets Python API"
-HOMEPAGE = "https://github.com/burnash/gspread"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9488e21983675fa56dc05af558b83e2f"
-
-SRC_URI = "https://files.pythonhosted.org/packages/b4/4f/033ebf34778745061b67b104ef212ed5b05fa65a530f345f88c4355fdcc3/gspread-5.10.0.tar.gz"
-SRC_URI[sha256sum] = "2b6bba6dc111580170346a9bcd1893e0e8c52f67a9e537caec7b7a1e27c14435"
-
-S = "${WORKDIR}/gspread-${PV}"
-
-RDEPENDS:${PN} = "python3-requests"
-
-inherit python_poetry_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.12.3.bb b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.12.3.bb
new file mode 100644
index 0000000..932cf22
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_5.12.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Google Spreadsheets Python API"
+HOMEPAGE = "https://github.com/burnash/gspread"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9488e21983675fa56dc05af558b83e2f"
+
+SRC_URI[sha256sum] = "298ebab76e6ed6a998eabc81545ec58f5610f44e2ddb4858b539a0634093f8ce"
+
+S = "${WORKDIR}/gspread-${PV}"
+
+RDEPENDS:${PN} = "python3-requests"
+
+inherit pypi python_poetry_core