[Feature][T106]ZXW P56U09 code

Only Configure: Yes
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I3cbd8b420271eb20c2b40ebe5c78f83059cd42f3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pamela_0.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pamela_0.3.0.bb
new file mode 100644
index 0000000..b6bee0c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pamela_0.3.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Pamela: yet another Python wrapper for PAM"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=bfb663f37eb99232bc8ccfa4ea8f1202"
+
+SRC_URI[md5sum] = "de6516118d51eb5fc97017f3b6d5c68b"
+SRC_URI[sha256sum] = "1e198446a6cdd87704aa0def7621d62e7c20b0e6068e2788b9a866a8355e5d6b"
+
+PYPI_PACKAGE = "pamela"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "libpam"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "pam"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb
new file mode 100644
index 0000000..798daeb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Python interface for Remember The Milk API"
+AUTHOR = "Sridhar Ratnakumar / srid"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a53cbc7cb75660694e138ba973c148df"
+
+PYPI_PACKAGE_EXT = "tar.bz2"
+
+SRC_URI[md5sum] = "7c87da94656b620dfe532ca63d642eb8"
+SRC_URI[sha256sum] = "b2d701b25ad3f9a1542057f3eb492c5c1d7dbe2b8d1e8f763043dcc14ee1d933"
+
+inherit pypi setuptools3
+
+PACKAGES =+ "${PN}-tests ${PN}-samples"
+
+FILES_${PN}-samples += " \
+    ${PYTHON_SITEPACKAGES_DIR}/rtm/samples \
+"
+
+FILES_${PN}-tests += " \
+    ${PYTHON_SITEPACKAGES_DIR}/rtm/tests \
+"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+"
+
+RDEPENDS_${PN}-samples += " \
+    ${PN} \
+"
+
+RDEPENDS_${PN}-tests += " \
+    ${PN} \
+    ${PYTHON_PN}-unittest \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
new file mode 100644
index 0000000..3260e92
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
@@ -0,0 +1,40 @@
+DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
+It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
+and the messy, low-level world of C."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
+PYPI_PACKAGE = "Cython"
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "6e2f139e30bb08d68366f9370d87964c"
+SRC_URI[sha256sum] = "e4d6bb8703d0319eb04b7319b12ea41580df44fd84d83ccda13ea463c6801414"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pyparsing \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-xml \
+"
+
+RDEPENDS_${PN}_class-nativesdk += "\
+    nativesdk-${PYTHON_PN}-misc \
+    nativesdk-${PYTHON_PN}-netserver \
+    nativesdk-${PYTHON_PN}-pkgutil \
+    nativesdk-${PYTHON_PN}-pyparsing \
+    nativesdk-${PYTHON_PN}-setuptools \
+    nativesdk-${PYTHON_PN}-shell \
+    nativesdk-${PYTHON_PN}-xml \
+"
+
+do_install_append() {
+	# Make sure we use /usr/bin/env python
+	for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
+		sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT
+	done
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch
new file mode 100644
index 0000000..dbb8407
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch
@@ -0,0 +1,31 @@
+From 0981eee9f0198c2045dc0eaa78a005d06fc7bfe4 Mon Sep 17 00:00:00 2001
+From: Carlos Eduardo Moreira dos Santos <cems@cemshost.com.br>
+Date: Tue, 28 Mar 2017 18:23:44 -0300
+Subject: [PATCH] Workaround for issue 2 [1]
+
+[1] https://pagure.io/python-daemon/issue/2
+---
+ version.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/version.py b/version.py
+index d58422a377ee..293e2d64c2b7 100644
+--- a/version.py
++++ b/version.py
+@@ -648,9 +648,10 @@ class ChangelogAwareDistribution(distutils.dist.Distribution, object):
+ 
+     @lru_cache(maxsize=128)
+     def get_version_info(self):
+-        changelog_path = get_changelog_path(self)
+-        version_info = generate_version_info_from_changelog(changelog_path)
+-        return version_info
++        return {
++            'version': '2.1.2',
++            'maintainer': 'Ben Finney'
++        }
+ 
+     def get_version(self):
+         version_info = self.get_version_info()
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
new file mode 100644
index 0000000..e70e963
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
@@ -0,0 +1,25 @@
+SUMMARY = "Extensions to the standard Python datetime module"
+DESCRIPTION = "The dateutil module provides powerful extensions to the datetime module available in the Python standard library."
+HOMEPAGE = "https://dateutil.readthedocs.org"
+LICENSE = "BSD-3-Clause & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3155c7bdc71f66e02678411d2abf996"
+
+SRC_URI[md5sum] = "f2a1d4b680b297b367a974664ca3a4f6"
+SRC_URI[sha256sum] = "73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"
+
+PYPI_PACKAGE = "python-dateutil"
+inherit pypi
+
+PACKAGES =+ "${PN}-zoneinfo"
+FILES_${PN}-zoneinfo = "${libdir}/${PYTHON_DIR}/site-packages/dateutil/zoneinfo"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-stringold \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
new file mode 100644
index 0000000..3faee39
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Python decorator utilities"
+DESCRIPTION = "\
+The aim of the decorator module it to simplify the usage of decorators \
+for the average programmer, and to popularize decorators by showing \
+various non-trivial examples. Of course, as all techniques, decorators \
+can be abused and you should not try to solve every problem with a \
+decorator, just because you can."
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=be2fd2007972bf96c08af3293d728b22"
+
+SRC_URI[md5sum] = "d83c624cce93e6bdfab144821b526e1d"
+SRC_URI[sha256sum] = "e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-stringold \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc
new file mode 100644
index 0000000..e4f03b9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Migrations for Django"
+DESCRIPTION = "South is an intelligent database migrations library for the Django web framework. It is database-independent and DVCS-friendly, as well as a whole host of other features."
+HOMEPAGE = "http://south.aeracode.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=17;endline=18;md5=2155d8ae21e7c23101d5febac696b27e"
+
+SRC_URI[md5sum] = "c76a9758b2011bc3b6c39f881bba2f66"
+SRC_URI[sha256sum] = "d360bd31898f9df59f6faa786551065bba45b35e7ee3c39b381b4fbfef7392f4"
+
+PYPI_PACKAGE = "South"
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-django \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
new file mode 100644
index 0000000..c02b3fa
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
@@ -0,0 +1,34 @@
+SUMMARY = "A high-level Python Web framework"
+HOMEPAGE = "http://www.djangoproject.com/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
+
+PYPI_PACKAGE = "Django"
+inherit pypi
+
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
+
+FILES_${PN} += "${datadir}/django"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unixadmin \
+    ${PYTHON_PN}-xml \
+    ${PYTHON_PN}-distutils \
+"
+
+CVE_PRODUCT = "django"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-djangorestframework.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-djangorestframework.inc
new file mode 100644
index 0000000..8551a83
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-djangorestframework.inc
@@ -0,0 +1,16 @@
+SUMMARY =  "djangorestframework"
+DESCRIPTION = "pip3 install djangorestframework"
+HOMEPAGE = "https://pypi.python.org/pypi/djangorestframework"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=7879a5a716147a784f7e524c9cf103c1"
+
+SRC_URI[md5sum] = "0d481bf8dbb87bb927b46798edc1a9bd"
+SRC_URI[sha256sum] = "607865b0bb1598b153793892101d881466bd5a991de12bd6229abb18b1c86136"
+PYPI_PACKAGE = "djangorestframework"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-django \
+"
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc
new file mode 100644
index 0000000..84502af
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "DNS toolkit for Python"
+HOMEPAGE = "http://www.dnspython.org/"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5af50906b5929837f667dfe31052bd34"
+
+SRC_URI[md5sum] = "bc9ca3b3a82164667d5730ec6d5248a2"
+SRC_URI[sha256sum] = "36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01"
+
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-threading \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc
new file mode 100644
index 0000000..734ce2b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Programmatically open and editor, capture the result"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "0e52648a4a6e7c89e3be44e9456530b4"
+SRC_URI[sha256sum] = "51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"
+
+PYPI_PACKAGE = "python-editor"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc
new file mode 100644
index 0000000..965f420
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Engine.IO server"
+HOMEPAGE = "https://github.com/miguelgrinberg/python-engineio/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
+
+inherit pypi
+
+PYPI_PACKAGE = "python-engineio"
+
+SRC_URI[md5sum] = "e6ea8b3f2f32eeeb02014c46092f2adb"
+SRC_URI[sha256sum] = "2481732d93646998f7372ef0ecf003af7817b82720b881db173c3d50b4887916"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
new file mode 100644
index 0000000..5f5426a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
@@ -0,0 +1,25 @@
+SUMMARY = "Python evdev lib"
+HOMEPAGE = "https://github.com/gvalkov/python-evdev"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=18debddbb3f52c661a129724a883a8e2"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-evdev:"
+
+SRC_URI = "${PYPI_SRC_URI}"
+
+SRC_URI[md5sum] = "05f9e900d6e11e1674475d2dd2668f0d"
+SRC_URI[sha256sum] = "b1c649b4fed7252711011da235782b2c260b32e004058d62473471e5cd30634d"
+
+do_compile_prepend() {
+    rm -rf ${S}/evdev/ecodes.c
+}
+
+DISTUTILS_BUILD_ARGS = "build_ecodes --evdev-headers ${STAGING_DIR_TARGET}/usr/include/linux/input.h:${STAGING_DIR_TARGET}/usr/include/linux/input-event-codes.h"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-stringold \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc
new file mode 100644
index 0000000..c415b35
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Python bindings for Fast Artificial Neural Networks 2.2.0 (FANN >= 2.2.0)"
+SECTION = "devel/python"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c73b943dc75f6f65e007c56ac6515c8f"
+
+SRC_URI[md5sum] = "0b85b418018746d63ed66b55465697a9"
+SRC_URI[sha256sum] = "cdca0a65ad48e08320672affe38c3dd4ea15e27821e5e1db9fa2b34299bdd41e"
+
+DEPENDS += "swig-native libfann"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
new file mode 100644
index 0000000..6ddcaa9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "A Python library for generating news feeds in RSS and Atom formats"
+HOMEPAGE = "http://code.google.com/p/feedformatter/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=258e3f39e2383fbd011035d04311008d"
+SRCREV = "7391193c83e10420b5a2d8ef846d23fc368c6d85"
+
+SRC_URI = "git://github.com/marianoguerra/feedformatter.git"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-xml \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc
new file mode 100644
index 0000000..0e507f3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "i18n and l10n support for Flask based on babel and pytz"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51917f3e8e858f5ae295a7d0e2eb3cc9"
+
+SRC_URI[md5sum] = "fcf2f360ff279d3133e40974804efd72"
+SRC_URI[sha256sum] = "316ad183e42003f3922957fa643d0a1e8e34a0f0301a88c3a8f605bc37ba5c86"
+
+PYPI_PACKAGE = "Flask-Babel"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-speaklater \
+    ${PYTHON_PN}-babel \
+    ${PYTHON_PN}-flask \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc
new file mode 100644
index 0000000..0723b97
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "An extension that includes Bootstrap in your project, without any boilerplate code."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=a03749709f06118a17349deb5a210619"
+
+SRC_URI[md5sum] = "e40d50f5c5b6438c1c6200a6f2871f81"
+SRC_URI[sha256sum] = "cb08ed940183f6343a64e465e83b3a3f13c53e1baabb8d72b5da4545ef123ac8"
+
+PYPI_PACKAGE = "Flask-Bootstrap"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-dominate \
+    ${PYTHON_PN}-flask \
+    ${PYTHON_PN}-visitor \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
new file mode 100644
index 0000000..59eb64f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
@@ -0,0 +1,14 @@
+SUMMARY = "User session management for Flask"
+DESCRIPTION = "Flask-Login provides user session management for Flask. \
+It handles the common tasks of logging in, logging out, and remembering \
+your users’ sessions over extended periods of time."
+HOMEPAGE = " https://github.com/maxcountryman/flask-login"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8aa87a1cd9fa41d969ad32cfdac2c596"
+
+SRC_URI[md5sum] = "25b34c74bd509792f291c16e184225df"
+SRC_URI[sha256sum] = "c815c1ac7b3e35e2081685e389a665f2c74d7e077cb93cecabaea352da4752ec"
+
+PYPI_PACKAGE = "Flask-Login"
+
+RDEPENDS_${PN}_class-target = "${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc
new file mode 100644
index 0000000..0df276d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Flask extension for sending email"
+DESCRIPTION = "A Flask extension for sending email"
+HOMEPAGE = " https://github.com/rduplain/flask-email"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5b16dfa6d3f275ace5985bb92949f770"
+
+SRC_URI[md5sum] = "04b35a42a44ec7aa724ec8ce55e2e08e"
+SRC_URI[sha256sum] = "22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41"
+
+PYPI_PACKAGE = "Flask-Mail"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc
new file mode 100644
index 0000000..5202f8b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "SQLAlchemy database migrations for Flask applications using Alembic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85"
+
+SRC_URI[md5sum] = "bedeb0366740fda6912fea683be11968"
+SRC_URI[sha256sum] = "a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502"
+
+PYPI_PACKAGE = "Flask-Migrate"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask-sqlalchemy \
+    ${PYTHON_PN}-alembic \
+    ${PYTHON_PN}-flask \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc
new file mode 100644
index 0000000..932ccdf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Easily create navigation for Flask applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=2729ee82259d601d90d28b0574d12416"
+
+SRC_URI[md5sum] = "4d51cfd06d58f8d0fe85775a6696c0e5"
+SRC_URI[sha256sum] = "44e40b755380a1e68ab521a2f9174de259a2c94ddcdaabf36b3aca2e110a33f4"
+
+PYPI_PACKAGE = "flask-nav"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-blinker \
+    ${PYTHON_PN}-flask \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
new file mode 100644
index 0000000..5fc35c1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
@@ -0,0 +1,15 @@
+SUMMARY = "PyMongo support for Flask applications"
+DESCRIPTION = "PyMongo support for Flask applications."
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://flask_pymongo/wrappers.py;beginline=1;endline=24;md5=424c4e1047d28e01b4e4634a069c019d"
+
+SRC_URI[md5sum] = "94df71e6800b1d7915cc91a74b70f959"
+SRC_URI[sha256sum] = "620eb02dc8808a5fcb90f26cab6cba9d6bf497b15032ae3ca99df80366e33314"
+
+PYPI_PACKAGE = "Flask-PyMongo"
+
+DEPENDS = "${PYTHON_PN}-vcversioner ${PYTHON_PN}-vcversioner-native"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pymongo ${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc
new file mode 100644
index 0000000..dcbcd0d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Simple framework for creating REST APIs"
+DESCRIPTION = "\
+Flask-RESTful is an extension for Flask that adds support for quickly building \
+REST APIs"
+HOMEPAGE = "https://github.com/flask-restful/flask-restful"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=685bb55ed99a366bb431995f5eef2783"
+
+SRC_URI[md5sum] = "a7217ef1159be38af5faf61aa09aabef"
+SRC_URI[sha256sum] = "f8240ec12349afe8df1db168ea7c336c4e5b0271a36982bff7394f93275f2ca9"
+
+inherit pypi
+
+PYPI_PACKAGE = "Flask-RESTful"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc
new file mode 100644
index 0000000..f48af8b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Scripting support for flask"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e686048adb69341fc8a08caeda528b41"
+
+SRC_URI[md5sum] = "3fbd91fe13cebedfb2431331f6eabb68"
+SRC_URI[sha256sum] = "6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65"
+
+PYPI_PACKAGE = "Flask-Script"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sijax.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sijax.inc
new file mode 100644
index 0000000..ff4e70a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sijax.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "An extension for the Flask microframework that adds Sijax support."
+HOMEPAGE = "https://github.com/spantaleev/flask-sijax"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=266adc7b911b7c84b837bf77196e1ba6"
+
+PYPI_PACKAGE = "Flask-Sijax"
+RDEPENDS_${PN} = "${PYTHON_PN}-sijax"
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-socketio.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-socketio.inc
new file mode 100644
index 0000000..8d778d4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-socketio.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Socket.IO integration for Flask applications"
+HOMEPAGE = "https://github.com/miguelgrinberg/Flask-SocketIO/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=38cc21254909604298ce763a6e4440a0"
+
+inherit pypi
+
+PYPI_PACKAGE = "Flask-SocketIO"
+
+SRC_URI[md5sum] = "b23222fb7dd2f0676d78bbe24153fd80"
+SRC_URI[sha256sum] = "2172dff1e42415ba480cee02c30c2fc833671ff326f1598ee3d69aa02cf768ec"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask \
+    ${PYTHON_PN}-socketio \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc
new file mode 100644
index 0000000..86ba9dd
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Adds SQLAlchemy support to your Flask application."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[md5sum] = "1f5781cf3e1a2b1aabda47a5b20d2073"
+SRC_URI[sha256sum] = "6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d"
+
+PYPI_PACKAGE = "Flask-SQLAlchemy"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-sqlalchemy ${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc
new file mode 100644
index 0000000..cd7ac1a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Flexible and efficient upload handling for Flask"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=b712ac634b39469660c9bdfb8d03421c"
+
+SRC_URI[md5sum] = "e5eee34aa92b64a4d22847672b3858a1"
+SRC_URI[sha256sum] = "53ecbd6033667d50ae02b63adebbaa33c7fc56c09e5293025810cf9d841ecb02"
+
+PYPI_PACKAGE = "Flask-Uploads"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc
new file mode 100644
index 0000000..adef32c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Customizable user account management for Flask"
+DESCRIPTION = "Customizable User Account Management for Flask; Register \
+Confirm email, Login, Change username, Change password, Forgot Password \
+and more."
+HOMEPAGE = " https://github.com/lingthio/Flask-User"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=97de97cd9d6e23c88129d884588ce71a"
+
+SRC_URI[md5sum] = "f7965e66ca139c8436896da07e66c21f"
+SRC_URI[sha256sum] = "601abcc0343dfbae0c56273d98362d5cdc266ac84d20b3f65a212e4a2c83b302"
+
+PYPI_PACKAGE = "Flask-User"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask \
+    ${PYTHON_PN}-flask-login \
+    ${PYTHON_PN}-flask-mail \
+    ${PYTHON_PN}-babel"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc
new file mode 100644
index 0000000..8636711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Simple integration of Flask and WTForms."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3ca6bb31670492f791e6a9f2fb9f8a80"
+
+SRC_URI[md5sum] = "586f50f233926cade42e3d744aca3e8f"
+SRC_URI[sha256sum] = "5d14d55cfd35f613d99ee7cba0fc3fbbe63ba02f544d349158c14ca15561cc36"
+
+PYPI_PACKAGE = "Flask-WTF"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-flask \
+    ${PYTHON_PN}-itsdangerous \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-wtforms \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc
new file mode 100644
index 0000000..48ff714
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "XStatic support for flask"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=659968f6ebd4b70b6c3190d20b4a924c"
+
+SRC_URI[md5sum] = "2f56023e1444c8bd1fec41afe93de743"
+SRC_URI[sha256sum] = "226ea8e97065a9488b59bfe5c94af4c6e2ea70a25052e301fb231a1381490133"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-flask-xstatic:"
+SRC_URI += "file://remove-pip-requires.patch"
+
+PYPI_PACKAGE = "Flask-XStatic"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask \
+    ${PYTHON_PN}-xstatic \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch
new file mode 100644
index 0000000..a2d620a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch
@@ -0,0 +1,7 @@
+--- Flask-XStatic-0.0.1/setup.py.orig	2015-01-30 08:01:56.000000000 -0800
++++ Flask-XStatic-0.0.1/setup.py	2017-04-17 21:40:32.570181626 -0700
+@@ -1,4 +1,3 @@
+-from pip.req import parse_requirements
+ import setuptools
+ 
+ with open('README.rst') as f:
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
new file mode 100644
index 0000000..1263383
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
@@ -0,0 +1,16 @@
+SUMMARY = "A microframework based on Werkzeug, Jinja2 and good intentions"
+DESCRIPTION = "\
+Flask is a microframework for Python based on Werkzeug, Jinja 2 and good \
+intentions. And before you ask: It’s BSD licensed!"
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[md5sum] = "0e3ed44ece1c489ed835d1b7047e349c"
+SRC_URI[sha256sum] = "13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52"
+
+CLEANBROKEN = "1"
+
+PYPI_PACKAGE = "Flask"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-werkzeug ${PYTHON_PN}-jinja2 ${PYTHON_PN}-itsdangerous ${PYTHON_PN}-click"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-future.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-future.inc
new file mode 100644
index 0000000..c0a2b39
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-future.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Clean single-source support for Python 3 and 2"
+HOMEPAGE = "https://python-future.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a253924061f8ecc41ad7a2ba1560e8e7"
+
+SRC_URI[md5sum] = "e4579c836b9c025872efe230f6270349"
+SRC_URI[sha256sum] = "b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"
+
+PYPI_PACKAGE_HASH = "99abde815842bc6e97d5a7806ad51236630da14ca2f3b1fce94c0bb94d3d"
+
+inherit pypi
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc
new file mode 100644
index 0000000..bc89d10
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc
@@ -0,0 +1,35 @@
+SUMMARY = "A coroutine-based Python networking library"
+DESCRIPTION = "gevent is a coroutine-based Python networking library that uses greenlet to provide \
+a high-level synchronous API on top of the libevent event loop."
+HOMEPAGE = "http://www.gevent.org"
+LICENSE = "MIT & Python-2.0 & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4de99aac27b470c29c6c309e0c279b65 \
+                    file://NOTICE;md5=18108df3583462cafd457f024b9b09b5 \
+                    file://deps/libev/LICENSE;md5=d6ad416afd040c90698edcdf1cbee347 \
+                    "
+DEPENDS += "libevent"
+DEPENDS += "${PYTHON_PN}-greenlet"
+RDEPENDS_${PN} = "${PYTHON_PN}-greenlet \
+		  ${PYTHON_PN}-mime \
+		  ${PYTHON_PN}-pprint \
+		 "
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-gevent:"
+
+SRC_URI_append = " \
+    file://libev-conf.patch;patch=1;pnum=1 \
+    file://0002-setup.py-do-not-query-for-include-dir.patch \
+"
+
+SRC_URI[md5sum] = "6b9dd98917061803d9158e5258b8f412"
+SRC_URI[sha256sum] = "1eb7fa3b9bd9174dfe9c3b59b7a09b768ecd496debfc4976a9530a3e15c990d1"
+
+# The python-gevent has no autoreconf ability
+# and the logic for detecting a cross compile is flawed
+# so always force a cross compile
+do_configure_append() {
+	sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/deps/libev/configure
+	sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/deps/c-ares/configure
+}
+
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch
new file mode 100644
index 0000000..7536b71
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch
@@ -0,0 +1,26 @@
+From a53ed6b2f967a5f95e69d51cad3f8c120d7df65b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 7 Feb 2019 15:21:15 +0100
+Subject: [PATCH] setup.py: do not query for include dir
+
+As this will return the native python directory erroneously.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 86d6c5a..5d22291 100755
+--- a/setup.py
++++ b/setup.py
+@@ -52,7 +52,7 @@ from _setupares import ARES
+ # Get access to the greenlet header file.
+ # The sysconfig dir is not enough if we're in a virtualenv
+ # See https://github.com/pypa/pip/issues/4610
+-include_dirs = [sysconfig.get_path("include")]
++include_dirs = []
+ venv_include_dir = os.path.join(sys.prefix, 'include', 'site',
+                                 'python' + sysconfig.get_python_version())
+ venv_include_dir = os.path.abspath(venv_include_dir)
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch
new file mode 100644
index 0000000..79c1867
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch
@@ -0,0 +1,26 @@
+From 2294734ef9d5e2efb05820e9759a1635799bdea9 Mon Sep 17 00:00:00 2001
+From: Andrej Rode <andrej.rode@ettus.com>
+Date: Mon, 10 Apr 2017 19:25:18 -0700
+Subject: [PATCH] libev: make configure crosscompile compatible
+
+Signed-off-by: Andrej Rode <andrej.rode@ettus.com>
+---
+ deps/libev/configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/deps/libev/configure b/deps/libev/configure
+index 743817e..96c2366 100755
+--- a/deps/libev/configure
++++ b/deps/libev/configure
+@@ -2208,7 +2208,7 @@ fi
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_link='$CC -static -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+-- 
+2.10.2
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc
new file mode 100644
index 0000000..c7c656c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Python lightweight in-process concurrent programming"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=03143d7a1a9f5d8a0fee825f24ca9c36 \
+                    file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
+
+SRC_URI[md5sum] = "10fa304f673fc18b28fa6d8c6658cb80"
+SRC_URI[sha256sum] = "9416443e219356e3c31f1f918a91badf2e37acf297e2fa13d24d1cc2380f8fbc"
+
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc
new file mode 100644
index 0000000..6675f90
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "Google gRPC tools"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+
+DEPENDS_append = " ${PYTHON_PN}-grpcio"
+RDEPENDS_${PN} = "${PYTHON_PN}-grpcio"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
+
+inherit pypi
+
+SRC_URI[md5sum] = "b2fabfb54c7824c1e49a02de2aa6628e"
+SRC_URI[sha256sum] = "4ce5aa660d7884f23aac1eafa93b97a4c3e2b512edff871e91fdb6ee86ebd5ea"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc
new file mode 100644
index 0000000..678dcef
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Convert HTML to Markdown-formatted text"
+HOMEPAGE = "https://github.com/Alir3z4/html2text"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI[md5sum] = "21aad7ec95b70606024b783c8253899c"
+SRC_URI[sha256sum] = "f516b9c10284174e2a974d86f91cab02b3cf983a17752075da751af0e895ef5e"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc
new file mode 100644
index 0000000..a8e0fb4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc
@@ -0,0 +1,17 @@
+SUMMARY = "HTML parser based on the WHATWG HTML specifcation"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ba5ada9e6fead1fdc32f43c9f10ba7c"
+
+SRC_URI[md5sum] = "942a0688d6bdf20d087c9805c40182ad"
+SRC_URI[sha256sum] = "66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-lxml \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-webencodings \
+    ${PYTHON_PN}-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanfriendly.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanfriendly.inc
new file mode 100644
index 0000000..94f7f8b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanfriendly.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Human friendly output for text interfaces using Python"
+HOMEPAGE = "https://humanfriendly.readthedocs.io/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=690da298a43805797a4fa7bbe180b3c6"
+
+PYPI_PACKAGE = "humanfriendly"
+
+SRC_URI[md5sum] = "9573f9f37a5454d8205cfd1b9b8db9d2"
+SRC_URI[sha256sum] = "33ee8ceb63f1db61cce8b5c800c531e1a61023ac5488ccde2ba574a85be00a85"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-stringold \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc
new file mode 100644
index 0000000..17a3449
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Python humanize utilities"
+HOMEPAGE = "http://github.com/jmoiron/humanize"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=d2eff82fc25dd07c919a02465884f02e"
+
+SRC_URI[md5sum] = "e8473d9dc1b220911cac2edd53b1d973"
+SRC_URI[sha256sum] = "a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc
new file mode 100644
index 0000000..653170c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "A featureful, correct URL for Python"
+HOMEPAGE = "https://github.com/python-hyper/hyperlink"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3893d4ed05dcc823f8ed685a9ea19bcb"
+
+SRC_URI[sha256sum] = "4288e34705da077fada1111a24a0aa08bb1e76699c9ce49876af722441845654"
+SRC_URI[md5sum] = "4772fb4d87c26a1ab22a6161424e3cba"
+
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-stringold ${PYTHON_PN}-netclient ${PYTHON_PN}-idna"
+
+PACKAGES =. "${PN}-test "
+
+FILES_${PN}-test += " \
+        ${PYTHON_SITEPACKAGES_DIR}/hyperlinkt/test \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna-ssl.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna-ssl.inc
new file mode 100644
index 0000000..e74bbd7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna-ssl.inc
@@ -0,0 +1,10 @@
+SUMMARY = "Patch ssl.match_hostname for Unicode(idna) domains support"
+HOMEPAGE = "https://github.com/aio-libs/idna-ssl"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a61b9c5aec8796b64a6bf15d42605073"
+
+SRC_URI[md5sum] = "dd44ec53bac36e68446766fd8d3835bd"
+SRC_URI[sha256sum] = "a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c"
+
+PYPI_PACKAGE = "idna-ssl"
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc
new file mode 100644
index 0000000..13b0cdb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Internationalised Domain Names in Applications"
+HOMEPAGE = "https://github.com/kjd/idna"
+LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=782775b32f96098512e283fb5d4546cd"
+
+SRC_URI[md5sum] = "2e9ae0b4a0b26d1747c6127cdb060bc1"
+SRC_URI[sha256sum] = "c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"
+
+RDEPENDS_${PN}_class-target = "\
+    ${PYTHON_PN}-codecs \
+"
+
+# Remove bundled egg-info
+do_compile_prepend() {
+    rm -rf ${S}/idna.egg-info
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
new file mode 100644
index 0000000..2575306
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
@@ -0,0 +1,55 @@
+From 07d4f095a9e22ae676a8d68073101131e65012dc Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Tue, 15 Nov 2011 13:16:54 +0100
+Subject: [PATCH] python imaging setup.py: force paths for zlib, freetype and jpeg and don't add host paths
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ setup.py |   14 +++-----------
+ 1 files changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 5d4d53a..b1a22ec 100644
+--- a/setup.py
++++ b/setup.py
+@@ -34,10 +34,10 @@ def libinclude(root):
+ # TIFF_ROOT = libinclude("/opt/tiff")
+ 
+ TCL_ROOT = None
+-JPEG_ROOT = None
+-ZLIB_ROOT = None
++JPEG_ROOT = os.environ['STAGING_LIBDIR']
++ZLIB_ROOT = os.environ['STAGING_LIBDIR']
+ TIFF_ROOT = None
+-FREETYPE_ROOT = None
++FREETYPE_ROOT =  os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
+ LCMS_ROOT = None
+ 
+ # FIXME: add mechanism to explicitly *disable* the use of a library
+@@ -147,7 +147,6 @@ class pil_build_ext(build_ext):
+             add_directory(library_dirs, "/opt/local/lib")
+             add_directory(include_dirs, "/opt/local/include")
+ 
+-        add_directory(library_dirs, "/usr/local/lib")
+         # FIXME: check /opt/stuff directories here?
+ 
+         prefix = sysconfig.get_config_var("prefix")
+@@ -207,13 +206,6 @@ class pil_build_ext(build_ext):
+             if os.path.isfile(os.path.join(tcl_dir, "tk.h")):
+                 add_directory(include_dirs, tcl_dir)
+ 
+-        # standard locations
+-        add_directory(library_dirs, "/usr/local/lib")
+-        add_directory(include_dirs, "/usr/local/include")
+-
+-        add_directory(library_dirs, "/usr/lib")
+-        add_directory(include_dirs, "/usr/include")
+-
+         #
+         # insert new dirs *before* default libs, to avoid conflicts
+         # between Python PYD stub libs and real libraries
+-- 
+1.7.2.5
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
new file mode 100644
index 0000000..4960ed4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
@@ -0,0 +1,65 @@
+At least lcms wasn't deterministicly detected from sysroot.
+
+This will allow to export LCMS_ENABLED=False when lcms isn't in PACKAGECONFIG.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff -uNr Imaging-1.1.7.orig/setup.py Imaging-1.1.7/setup.py
+--- Imaging-1.1.7.orig/setup.py	2013-07-22 10:17:02.081457075 +0200
++++ Imaging-1.1.7/setup.py	2013-07-22 13:10:09.029707492 +0200
+@@ -39,6 +39,12 @@
+ TIFF_ROOT = None
+ FREETYPE_ROOT =  os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
+ LCMS_ROOT = None
++TCL_ENABLED = os.getenv('TCL_ENABLED', "True")
++JPEG_ENABLED = os.getenv('JPEG_ENABLED', "True")
++ZLIB_ENABLED = os.getenv('ZLIB_ENABLED', "True")
++TIFF_ENABLED = os.getenv('TIFF_ENABLED', "True")
++FREETYPE_ENABLED = os.getenv('FREETYPE_ENABLED', "True")
++LCMS_ENABLED = os.getenv('LCMS_ENABLED', "True")
+ 
+ # FIXME: add mechanism to explicitly *disable* the use of a library
+ 
+@@ -220,22 +226,22 @@
+             zlib = jpeg = tiff = freetype = tcl = tk = lcms = None
+         feature = feature()
+ 
+-        if find_include_file(self, "zlib.h"):
++        if ZLIB_ENABLED == 'True' and find_include_file(self, "zlib.h"):
+             if find_library_file(self, "z"):
+                 feature.zlib = "z"
+             elif sys.platform == "win32" and find_library_file(self, "zlib"):
+                 feature.zlib = "zlib" # alternative name
+ 
+-        if find_include_file(self, "jpeglib.h"):
++        if JPEG_ENABLED == 'True' and find_include_file(self, "jpeglib.h"):
+             if find_library_file(self, "jpeg"):
+                 feature.jpeg = "jpeg"
+             elif sys.platform == "win32" and find_library_file(self, "libjpeg"):
+                 feature.jpeg = "libjpeg" # alternative name
+ 
+-        if find_library_file(self, "tiff"):
++        if TIFF_ENABLED == 'True' and find_library_file(self, "tiff"):
+             feature.tiff = "tiff"
+ 
+-        if find_library_file(self, "freetype"):
++        if FREETYPE_ENABLED == 'True' and find_library_file(self, "freetype"):
+             # look for freetype2 include files
+             freetype_version = 0
+             for dir in self.compiler.include_dirs:
+@@ -256,11 +262,11 @@
+                 if dir:
+                     add_directory(self.compiler.include_dirs, dir, 0)
+ 
+-        if find_include_file(self, "lcms.h"):
++        if LCMS_ENABLED == 'True' and find_include_file(self, "lcms.h"):
+             if find_library_file(self, "lcms"):
+                 feature.lcms = "lcms"
+ 
+-        if _tkinter and find_include_file(self, "tk.h"):
++        if TCL_ENABLED == 'True' and _tkinter and find_include_file(self, "tk.h"):
+             # the library names may vary somewhat (e.g. tcl84 or tcl8.4)
+             version = TCL_VERSION[0] + TCL_VERSION[2]
+             if find_library_file(self, "tcl" + version):
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
new file mode 100644
index 0000000..9ecc63a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From c6040f618d8f2706a7b46d1cdf37d1a587f9701f Mon Sep 17 00:00:00 2001
+From: Andrew Stromnov <stromnov@gmail.com>
+Date: Thu, 28 Nov 2013 16:58:43 +0400
+Subject: [PATCH] fix compiling with FreeType 2.5.1
+
+---
+ _imagingft.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/_imagingft.c b/_imagingft.c
+index 47d50bd..f19555b 100644
+--- a/_imagingft.c
++++ b/_imagingft.c
+@@ -59,7 +59,11 @@ struct {
+     const char* message;
+ } ft_errors[] =
+ 
++#if defined(USE_FREETYPE_2_1)
++#include FT_ERRORS_H
++#else
+ #include <freetype/fterrors.h>
++#endif
+ 
+ /* -------------------------------------------------------------------- */
+ /* font objects */
+-- 
+1.8.5.1
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch
new file mode 100644
index 0000000..b01136f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch
@@ -0,0 +1,38 @@
+python-imaging: CVE-2016-2533
+
+the patch comes from:
+https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-2533
+https://github.com/python-pillow/Pillow/commit/ae453aa18b66af54e7ff716f4ccb33adca60afd4#diff-8ff6909c159597e22288ad818938fd6b
+
+PCD decoder overruns the shuffle buffer, Fixes #568
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+---
+ libImaging/PcdDecode.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libImaging/PcdDecode.c b/libImaging/PcdDecode.c
+index b6898e3..c02d005 100644
+--- a/libImaging/PcdDecode.c
++++ b/libImaging/PcdDecode.c
+@@ -47,7 +47,7 @@ ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes)
+ 	    out[0] = ptr[x];
+ 	    out[1] = ptr[(x+4*state->xsize)/2];
+ 	    out[2] = ptr[(x+5*state->xsize)/2];
+-	    out += 4;
++	    out += 3;
+ 	}
+ 
+ 	state->shuffle((UINT8*) im->image[state->y],
+@@ -62,7 +62,7 @@ ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes)
+ 	    out[0] = ptr[x+state->xsize];
+ 	    out[1] = ptr[(x+4*state->xsize)/2];
+ 	    out[2] = ptr[(x+5*state->xsize)/2];
+-	    out += 4;
++	    out += 3;
+ 	}
+ 
+ 	state->shuffle((UINT8*) im->image[state->y],
+-- 
+1.7.9.5
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch
new file mode 100644
index 0000000..028a51a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch
@@ -0,0 +1,25 @@
+Avoid getting host sysroot paths in the library paths to fix issue like:
+
+| /home/andrei/work/yocto/build-rpi-master/tmp/sysroots/x86_64-linux/usr/lib/libz.so: file not recognized: File format not recognized
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+
+Index: Imaging-1.1.7/setup.py
+===================================================================
+--- Imaging-1.1.7.orig/setup.py
++++ Imaging-1.1.7/setup.py
+@@ -155,11 +155,6 @@ class pil_build_ext(build_ext):
+ 
+         # FIXME: check /opt/stuff directories here?
+ 
+-        prefix = sysconfig.get_config_var("prefix")
+-        if prefix:
+-            add_directory(library_dirs, os.path.join(prefix, "lib"))
+-            add_directory(include_dirs, os.path.join(prefix, "include"))
+-
+         #
+         # locate tkinter libraries
+ 
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-importlib-metadata.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-importlib-metadata.inc
new file mode 100644
index 0000000..b6165dc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-importlib-metadata.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "Read metadata from Python packages"
+HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
+
+SRC_URI = "https://files.pythonhosted.org/packages/d7/cd/3b1dffa46b19dac269d586b9d45090588a8bd7a5741602a369d45e1bdf65/importlib_metadata-1.5.2.tar.gz"
+S = "${WORKDIR}/importlib_metadata-${PV}"
+SRC_URI[md5sum] = "35a85a81c7d86605f4f49397f4e7e39c"
+SRC_URI[sha256sum] = "dfc83688553a91a786c6c91eeb5f3b1d31f24d71877bbd94ecbf5484e57690a2"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+RDEPENDS_${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc
new file mode 100644
index 0000000..ef5e903
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "Incremental is a small library that versions your Python projects"
+HOMEPAGE = "https://github.com/twisted/incremental"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6ca9b07f08e2c72d48c74d363d1e0e15"
+
+SRC_URI[md5sum] = "602746e0d438e075a5a9e0678140bba2"
+SRC_URI[sha256sum] = "7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-twisted \
+    ${PYTHON_PN}-click \
+"
+
+# -native is needed to build python[3]-twisted, however, we need to take steps to
+# prevent a circular dependency. The build apparently does not use the part of
+# python-incremental which uses python-twisted, so this hack is OK.
+RDEPENDS_${PYTHON_PN}-incremental-native_remove = "${PYTHON_PN}-twisted-native"
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-inflection.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-inflection.inc
new file mode 100644
index 0000000..556b268
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-inflection.inc
@@ -0,0 +1,14 @@
+SUMMARY = "A port of Ruby on Rails' inflection to Python."
+HOMEPAGE = "https://pypi.org/project/inflection"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=de7833d9c2ce0052a4073928c76a13d7"
+
+SRC_URI[md5sum] = "7941165e9f148e0520023941c0886b40"
+SRC_URI[sha256sum] = "18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca"
+
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pytest"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc
new file mode 100644
index 0000000..4489aa5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Interval arithmetic for Python"
+HOMEPAGE = "https://github.com/AlexandreDecan/python-intervals"
+SECTION = "devel/python"
+
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
+
+PYPI_PACKAGE := "python-intervals"
+
+inherit pypi
+
+SRC_URI[md5sum] = "8955317ff4e42590c90ba6247b1caaed"
+SRC_URI[sha256sum] = "0d26746eaed0be78a61dd289bb7a10721b08770bb3e807614835f490d514f2a5"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ipy.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ipy.inc
new file mode 100644
index 0000000..46b2fad
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ipy.inc
@@ -0,0 +1,19 @@
+SUMMARY = "IPy - class and tools for handling of IPv4 and IPv6 addresses and networks"
+DESCRIPTION = "IPy is a Python module for handling IPv4 and IPv6 Addresses and Networks \
+in a fashion similar to perl's Net::IP and friends. The IP class allows \
+a comfortable parsing and handling for most notations in use for IPv4 \
+and IPv6 Addresses and Networks."
+SECTION = "devel/python"
+HOMEPAGE = "https://github.com/autocracy/python-ipy"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=848d24919845901b4f48bae5f13252e6"
+
+SRC_URI[md5sum] = "1a90c68174234672241a7e60c7ea0fb9"
+SRC_URI[sha256sum] = "2f2bf658a858d43868d8a4352b3889cf78c66e2ce678b300dcf518c9149ba621"
+
+inherit pypi
+
+PYPI_PACKAGE = "IPy"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc
new file mode 100644
index 0000000..a70843e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Simple module to parse ISO 8601 dates"
+HOMEPAGE = "http://pyiso8601.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844"
+
+SRC_URI[md5sum] = "4de940f691c5ea759fb254384c8ddcf6"
+SRC_URI[sha256sum] = "49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-numbers \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isodate.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isodate.inc
new file mode 100644
index 0000000..8c12891
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isodate.inc
@@ -0,0 +1,14 @@
+SUMMARY = "ISO 8601 date/time parser"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+SRC_URI[md5sum] = "0e1203fce27ce65e2d01c5f21c4d428f"
+SRC_URI[sha256sum] = "2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc
new file mode 100644
index 0000000..324d4cf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc
@@ -0,0 +1,17 @@
+SUMMARY = "A Python utility / library to sort Python imports."
+HOMEPAGE = "https://pypi.python.org/pypi/isort"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "05d66f2eb7ce2c2d702e86bac24bf9e4"
+SRC_URI[sha256sum] = "54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
new file mode 100644
index 0000000..241786a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Various helpers to pass trusted data to untrusted environments and back."
+HOMEPAGE = "http://github.com/mitsuhiko/itsdangerous"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=370799bf709a1e4a6a369fa089ac73a6"
+
+SRC_URI[md5sum] = "9b7f5afa7f1e3acfb7786eeca3d99307"
+SRC_URI[sha256sum] = "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-simplejson \
+    ${PYTHON_PN}-netclient \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc
new file mode 100644
index 0000000..e667057
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Module for serializing and de-serializing Java objects."
+DESCRIPTION = "python-javaobj is a python library that provides functions\
+ for reading and writing (writing is WIP currently) Java objects serialized\
+ or will be deserialized by ObjectOutputStream. This form of object\
+ representation is a standard data interchange format in Java world."
+HOMEPAGE = "https://github.com/tcalmant/python-javaobj"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=15;endline=27;md5=af9ce26ac2de1b7436eb08c9308b4a1e"
+
+SRC_URI[md5sum] = "352fe0df9336b8699ad0799ef152da6b"
+SRC_URI[sha256sum] = "18c44cfaa214813784a823432b4ab9829c9626b2b00072011627b4008b0067cd"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc
new file mode 100644
index 0000000..e23f96b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc
@@ -0,0 +1,12 @@
+SUMMARY  = "Appling JSON patches in Python 2.6+ and 3.x"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-patch"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi
+
+SRC_URI[md5sum] = "fcc546892414bef2f7f89f0e2a618a9e"
+SRC_URI[sha256sum] = "ddc0f7628b8bfdd62e3cbfbc24ca6671b0b6265b50d186c2cf3659dc0f78fd6a"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-json ${PYTHON_PN}-jsonpointer ${PYTHON_PN}-netclient ${PYTHON_PN}-stringold"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
new file mode 100644
index 0000000..3e41b70
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
@@ -0,0 +1,27 @@
+SUMMARY = "Resolve JSON Pointers in Python"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi ptest
+
+SRC_URI[md5sum] = "741b98d0e693b08b5e44e0a9da5a7bb7"
+SRC_URI[sha256sum] = "c192ba86648e05fdae4f08a17ec25180a9aef5008d973407b581798a83975362"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/tests.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
new file mode 100644
index 0000000..8135b0f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
@@ -0,0 +1,48 @@
+SUMMARY = "An implementation of JSON Schema validation for Python"
+HOMEPAGE = "https://github.com/Julian/jsonschema"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \
+                    file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af"
+DEPENDS += "${PYTHON_PN}-vcversioner-native ${PYTHON_PN}-setuptools-scm-native"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-jsonschema:"
+
+SRC_URI[md5sum] = "f1a0b5011f05a02a8dee1070cd10a26d"
+SRC_URI[sha256sum] = "c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"
+
+PACKAGECONFIG ??= "format"
+PACKAGECONFIG[format] = ",,,\
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-jsonpointer \
+    ${PYTHON_PN}-webcolors \
+    ${PYTHON_PN}-rfc3987 \
+    ${PYTHON_PN}-strict-rfc3339 \
+"
+PACKAGECONFIG[nongpl] = ",,,\
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-jsonpointer \
+    ${PYTHON_PN}-webcolors \
+    ${PYTHON_PN}-rfc3986-validator \
+    ${PYTHON_PN}-rfc3339-validator \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-importlib-metadata \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-pyrsistent \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-unittest \
+    ${PYTHON_PN}-setuptools-scm \
+    ${PYTHON_PN}-zipp \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-kconfiglib.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-kconfiglib.inc
new file mode 100644
index 0000000..3dc4961
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-kconfiglib.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "Kconfiglib is a Kconfig implementation in Python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=712177a72a3937909543eda3ad1bfb7c"
+
+SRC_URI[md5sum] = "4ad68618824d4bad1d1de1d7eb838bba"
+SRC_URI[sha256sum] = "bed2cc2216f538eca4255a83a4588d8823563cdd50114f86cf1a2674e602c93c"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc
new file mode 100644
index 0000000..bbbd66c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc
@@ -0,0 +1,12 @@
+SUMMARY = "A fast and thorough lazy object proxy"
+HOMEPAGE = "https://python-lazy-object-proxy.readthedocs.io/"
+LICENSE = "BSD-2-Clause"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9c5c2c74370826468065c5702b8a1fcf"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+SRC_URI[md5sum] = "5c64c06affcd2a7c6ddc848af4280cca"
+SRC_URI[sha256sum] = "f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"
+
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc
new file mode 100644
index 0000000..add2581
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc
@@ -0,0 +1,29 @@
+SUMMARY = "Utility library to parse, compare, simplify and normalize license expressions"
+HOMEPAGE = "https://github.com/nexB/license-expression"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa"
+
+SRC_URI[md5sum] = "81477f779099f55071c6a7b88a29bb01"
+SRC_URI[sha256sum] = "8aaa455c5b97c4f2174090178b19792b2a1c620e80591aafd4e0a99b713f9e8d"
+
+inherit pypi ptest
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-booleanpy \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lrparsing.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lrparsing.inc
new file mode 100644
index 0000000..d125151
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lrparsing.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Python LR parsing library"
+SECTION = "devel/python"
+LICENSE = "AGPL-3.0"
+LIC_FILES_CHKSUM = "file://agpl-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788"
+
+HOMEPAGE = "http://lrparsing.sourceforge.net/"
+BUGTRACKER = "https://sourceforge.net/p/lrparsing/tickets/"
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/lrparsing/files/"
+UPSTREAM_CHECK_REGEX = "lrparsing-(?P<pver>\d+(\.\d+)+)"
+SRC_URI = "${SOURCEFORGE_MIRROR}/lrparsing/lrparsing-${PV}.tar.gz"
+SRC_URI[md5sum] = "34357d69bce87654d792cd8f02d148b2"
+SRC_URI[sha256sum] = "b45afda44001dc5ba632934f74c043d40cce653f1a7526cfbcb68f6be055b8d7"
+
+S = "${WORKDIR}/lrparsing-${PV}"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
new file mode 100644
index 0000000..05b5eae
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
@@ -0,0 +1,50 @@
+SUMMARY = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+DESCRIPTION = "lxml is a Pythonic, mature binding for the libxml2 and \
+libxslt libraries. It provides safe and convenient access to these \
+libraries using the ElementTree API. It extends the ElementTree API \
+significantly to offer support for XPath, RelaxNG, XML Schema, XSLT, \
+C14N and much more."
+HOMEPAGE = "http://codespeak.net/lxml"
+SECTION = "devel/python"
+LICENSE = "BSD & GPLv2 & MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
+                    file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \
+                    file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \
+                    file://doc/licenses/GPL.txt;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/lxml/isoschematron/resources/rng/iso-schematron.rng;beginline=2;endline=7;md5=fc85684a8dd5fa272c086bceb0d99e10 \
+                    file://src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl;beginline=2;endline=24;md5=cc86b7b2bbc678e13f58ea403eb9929b \
+                    file://src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl;beginline=2;endline=7;md5=5b03236d293dc3784205542b409d2f53 \
+                    "
+
+DEPENDS += "libxml2 libxslt"
+
+SRC_URI[md5sum] = "f088e452ed45b030b6f84269f1e84d11"
+SRC_URI[sha256sum] = "8620ce80f50d023d414183bf90cc2576c2837b88e00bea3f33ad2630133bbb60"
+
+DISTUTILS_BUILD_ARGS += " \
+                     --with-xslt-config='pkg-config libxslt' \
+                     --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+                     --with-xslt-config='pkg-config libxslt' \
+                     --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+inherit pypi
+
+# {standard input}: Assembler messages:
+# {standard input}:1488805: Error: branch out of range
+DEBUG_OPTIMIZATION_remove_mips = " -Og"
+DEBUG_OPTIMIZATION_append_mips = " -O"
+BUILD_OPTIMIZATION_remove_mips = " -Og"
+BUILD_OPTIMIZATION_append_mips = " -O"
+
+DEBUG_OPTIMIZATION_remove_mipsel = " -Og"
+DEBUG_OPTIMIZATION_append_mipsel = " -O"
+BUILD_OPTIMIZATION_remove_mipsel = " -Og"
+BUILD_OPTIMIZATION_append_mipsel = " -O"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "libxml2 libxslt ${PYTHON_PN}-compression"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc
new file mode 100644
index 0000000..81c8164
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc
@@ -0,0 +1,64 @@
+SUMMARY = "A Python crypto and SSL toolkit"
+HOMEPAGE = "https://gitlab.com/m2crypto/m2crypto"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b0e1f0b7d0ce8a62c18b1287b991800e"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-m2crypto:"
+
+SRC_URI += "file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch \
+            file://cross-compile-platform.patch \
+            file://m2crypto-0.26.4-gcc_macros.patch \
+           "
+SRC_URI[md5sum] = "7fce3cbf85eb84a669682892b935746b"
+SRC_URI[sha256sum] = "a1b2751cdadc6afac3df8a5799676b7b7c67a6ad144bb62d38563062e7cd3fc6"
+
+PYPI_PACKAGE = "M2Crypto"
+inherit pypi siteinfo
+
+DEPENDS += "openssl swig-native"
+RDEPENDS_${PN} += "\
+  ${PYTHON_PN}-datetime \
+  ${PYTHON_PN}-distutils \
+  ${PYTHON_PN}-logging \
+  ${PYTHON_PN}-netclient \
+  ${PYTHON_PN}-netserver \
+  ${PYTHON_PN}-numbers \
+  ${PYTHON_PN}-smtpd \
+  ${PYTHON_PN}-typing \
+  ${PYTHON_PN}-xmlrpc \
+"
+
+DISTUTILS_BUILD_ARGS += "build_ext --openssl=${STAGING_EXECPREFIXDIR} -I${STAGING_INCDIR}"
+DISTUTILS_INSTALL_ARGS += "build_ext --openssl=${STAGING_EXECPREFIXDIR}"
+
+SWIG_FEATURES_x86 = "-D__i386__"
+SWIG_FEATURES_x32 = "-D__ILP32__"
+SWIG_FEATURES ?= "-D__${HOST_ARCH}__"
+export SWIG_FEATURES
+
+# Get around a problem with swig, but only if the
+# multilib header file exists.
+#
+do_configure_prepend() {
+    ${CPP} -dM - < /dev/null | grep -v '__\(STDC\|REGISTER_PREFIX\|GNUC\|STDC_HOSTED\)__' \
+    | sed 's/^\(#define \([^ ]*\) .*\)$/#undef \2\n\1/' > ${S}/SWIG/gcc_macros.h
+
+    if [ "${SITEINFO_BITS}" = "64" ];then
+        bit="64"
+    else
+        bit="32"
+    fi
+
+    if [ -e ${STAGING_INCDIR}/openssl/opensslconf-${bit}.h ] ;then
+        for i in SWIG/_ec.i SWIG/_evp.i; do
+            sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "${S}/$i"
+        done
+    elif [ -e ${STAGING_INCDIR}/openssl/opensslconf-n${bit}.h ] ;then
+        for i in SWIG/_ec.i SWIG/_evp.i; do
+            sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "${S}/$i"
+        done
+    fi
+}
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
new file mode 100644
index 0000000..b339d93
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
@@ -0,0 +1,35 @@
+From dfb83a41aaeae326e9b6f02b233af375bc7b8815 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 29 Mar 2013 15:17:17 +0100
+Subject: [PATCH] setup.py: link in sysroot, not in host directories
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-status: Unknown
+---
+ setup.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: M2Crypto-0.30.1/setup.py
+===================================================================
+--- M2Crypto-0.30.1.orig/setup.py
++++ M2Crypto-0.30.1/setup.py
+@@ -130,6 +130,7 @@ class _M2CryptoBuildExt(build_ext.build_
+         self.set_undefined_options('build', ('bundledlls', 'bundledlls'))
+ 
+         self.libraries = ['ssl', 'crypto']
++        self.openssl = os.environ.get( "STAGING_DIR" )
+         if sys.platform == 'win32':
+             self.libraries = ['ssleay32', 'libeay32']
+             if self.openssl and openssl_version(self.openssl, 0x10100000, True):
+@@ -150,8 +151,8 @@ class _M2CryptoBuildExt(build_ext.build_
+ 
+         if self.openssl is not None:
+             log.debug('self.openssl = %s', self.openssl)
+-            openssl_library_dir = os.path.join(self.openssl, 'lib')
+-            openssl_include_dir = os.path.join(self.openssl, 'include')
++            openssl_library_dir = os.environ.get( "STAGING_LIBDIR" )
++            openssl_include_dir = os.environ.get( "STAGING_INCDIR" )
+ 
+             self.library_dirs.append(openssl_library_dir)
+             self.include_dirs.append(openssl_include_dir)
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch
new file mode 100644
index 0000000..4b64f46
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch
@@ -0,0 +1,33 @@
+Do not compute platform, this does not work in cross compile environment
+since it pokes at the system for getting architecture values
+
+Upstream-Status: Inappropriate
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: M2Crypto-0.30.1/setup.py
+===================================================================
+--- M2Crypto-0.30.1.orig/setup.py
++++ M2Crypto-0.30.1/setup.py
+@@ -160,22 +160,6 @@ class _M2CryptoBuildExt(build_ext.build_
+             log.debug('self.include_dirs = %s', self.include_dirs)
+             log.debug('self.library_dirs = %s', self.library_dirs)
+ 
+-        if platform.system() == "Linux":
+-            # For RedHat-based distros, the '-D__{arch}__' option for
+-            # Swig needs to be normalized, particularly on i386.
+-            mach = platform.machine().lower()
+-            if mach in ('i386', 'i486', 'i586', 'i686'):
+-                arch = '__i386__'
+-            elif mach in ('ppc64', 'powerpc64', 'ppc64le', 'ppc64el'):
+-                arch = '__powerpc64__'
+-            elif mach in ('ppc', 'powerpc'):
+-                arch = '__powerpc__'
+-            else:
+-                arch = '__%s__' % mach
+-            self.swig_opts.append('-D%s' % arch)
+-            if mach in ('ppc64le', 'ppc64el'):
+-                self.swig_opts.append('-D_CALL_ELF=2')
+-
+         self.swig_opts.extend(['-I%s' % i for i in self.include_dirs])
+ 
+         # Some Linux distributor has added the following line in
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch
new file mode 100644
index 0000000..7f6dd29
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch
@@ -0,0 +1,35 @@
+Imported from Fedora
+
+Index: M2Crypto-0.30.1/SWIG/_m2crypto.i
+===================================================================
+--- M2Crypto-0.30.1.orig/SWIG/_m2crypto.i
++++ M2Crypto-0.30.1/SWIG/_m2crypto.i
+@@ -8,6 +8,11 @@
+  *
+  */
+ 
++%import "gcc_macros.h"
++
++%ignore WCHAR_MAX;
++%ignore WCHAR_MIN;
++
+ %module(threads=1) m2crypto
+ /* We really don't need threadblock (PyGILState_Ensure() etc.) anywhere.
+    Disable threadallow as well, only enable it for operations likely to
+@@ -15,11 +20,6 @@
+ %nothreadblock;
+ %nothreadallow;
+ 
+-#if SWIG_VERSION >= 0x030000
+-#define __WCHAR_MAX__ __WCHAR_MAX
+-#define __WCHAR_MIN__ __WCHAR_MIN
+-#endif
+-
+ %{
+ #ifdef _WIN32
+ #define _WINSOCKAPI_
+@@ -95,4 +95,3 @@ static PyObject *x509_store_verify_cb_fu
+ %constant int encrypt = 1;
+ %constant int decrypt = 0;
+ #endif
+-  
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc
new file mode 100644
index 0000000..abcbb88
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc
@@ -0,0 +1,21 @@
+SUMMARY = "A super-fast templating language that borrows the best ideas from the existing templating languages"
+HOMEPAGE = "http://www.makotemplates.org/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=df7e6c7c82990acf0228a55e00d29bc9"
+
+PYPI_PACKAGE = "Mako"
+
+inherit pypi
+
+SRC_URI[md5sum] = "6c3f2da0b74af529a4c4a537d0848bf2"
+SRC_URI[sha256sum] = "a36919599a9b7dc5d86a7a8988f23a9a3a3d083070023bab23d64f7f1d1e0a4b"
+
+RDEPENDS_${PN} = " \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
new file mode 100644
index 0000000..4808762
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python"
+HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b"
+SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"
+
+PYPI_PACKAGE = "MarkupSafe"
+inherit pypi ptest
+
+RDEPENDS_${PN} += "${PYTHON_PN}-stringold"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch
new file mode 100644
index 0000000..941bed3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch
@@ -0,0 +1,33 @@
+From 3484bdfa7adbaebcf8bb8e7d4820f64b12717932 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 29 Jul 2016 15:37:18 +0800
+Subject: [PATCH] python-mccabe: remove unnecessary setup_requires
+ pytest-runner
+
+* Remove setup_requires pytest-runner as the
+  setup_requires pytest-runner actually is not
+  used for pytest which only in do_compile phase
+  via setup.py build
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index e59903d..bf2aaba 100644
+--- a/setup.py
++++ b/setup.py
+@@ -33,7 +33,6 @@ setup(
+     license='Expat license',
+     py_modules=['mccabe'],
+     zip_safe=False,
+-    setup_requires=['pytest-runner'],
+     tests_require=['pytest'],
+     entry_points={
+         'flake8.extension': [
+-- 
+2.8.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-meld3.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-meld3.inc
new file mode 100644
index 0000000..558e436
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-meld3.inc
@@ -0,0 +1,15 @@
+SUMMARY = "meld3 templating system used by Supervisor"
+DESCRIPTION = "\
+meld3 is an HTML/XML templating system for Python which keeps \
+template markup and dynamic rendering logic separate from one \
+another.  See http://www.entrian.com/PyMeld for a treatise on the \
+benefits of this pattern."
+HOMEPAGE = "https://github.com/supervisor/meld3"
+LICENSE = "BSD-4-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9e7581cef5645475fcefebdc15ed7abf"
+
+SRC_URI[md5sum] = "3ccc78cd79cffd63a751ad7684c02c91"
+SRC_URI[sha256sum] = "f7b754a0fde7a4429b2ebe49409db240b5699385a572501bb0d5627d299f9558"
+
+PYPI_PACKAGE = "meld3"
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-more-itertools.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-more-itertools.inc
new file mode 100644
index 0000000..0b684c1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-more-itertools.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "More routines for operating on iterables, beyond itertools"
+HOMEPAGE = "https://github.com/erikrose/more-itertools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc
new file mode 100644
index 0000000..bca58f7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL"
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://MANIFEST.in;md5=ce22c0cd986d2de3f7073cd6b5523ae0"
+
+SRC_URI[md5sum] = "b0fc8ea38f87d2c1ab1ed79a95c078f9"
+SRC_URI[sha256sum] = "d72faed0376ab039736c2ba12e30695e2788c4aa569c9c3e3d72131de2592210"
+
+PYPI_PACKAGE = "ndg_httpsclient"
+
+DEPENDS += " \
+    ${PYTHON_PN}-pyopenssl \
+    ${PYTHON_PN}-pyasn1 \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-pyopenssl \
+    ${PYTHON_PN}-pyasn1 \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc
new file mode 100644
index 0000000..bea9be6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc
@@ -0,0 +1,13 @@
+SUMMARY = "A network address manipulation library for Python."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6345d695ffe3776f68a56fe7962db44"
+
+SRC_URI[md5sum] = "51019ef59c93f3979bcb37d3b8527e07"
+SRC_URI[sha256sum] = "38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-xml \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netifaces.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netifaces.inc
new file mode 100644
index 0000000..daccc4f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-netifaces.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Portable network interface information for Python"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a53cbc7cb75660694e138ba973c148df"
+
+SRC_URI[md5sum] = "de92cc322b4f56047c073f802ad77860"
+SRC_URI[sha256sum] = "2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3"
+
+inherit pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-networkx.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-networkx.inc
new file mode 100644
index 0000000..4bca636
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-networkx.inc
@@ -0,0 +1,8 @@
+DESCRIPTION = "Python package for creating and manipulating graphs and networks"
+LICENSE = "BSD-3-Clause"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+                   ${PYTHON_PN}-decorator \
+                   "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch
new file mode 100644
index 0000000..81ed744
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch
@@ -0,0 +1,30 @@
+From 322e781c67d7a78fc2cfc3d377f50b825fc64abb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 2 Jun 2017 20:21:01 -0700
+Subject: [PATCH] it tries to define this function differently than it is
+ defined in sys/time.h.
+
+Use the definition from system
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Packages/RNG/Src/ranf.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/Packages/RNG/Src/ranf.c b/Packages/RNG/Src/ranf.c
+index 5ca7dc5..e669fa8 100644
+--- a/Packages/RNG/Src/ranf.c
++++ b/Packages/RNG/Src/ranf.c
+@@ -149,9 +149,6 @@ void Mixranf(int *s,u32 s48[2])
+ #else
+ 	struct timeval tv;
+ 	struct timezone tz;
+-#if !defined(__sgi)
+-	int gettimeofday(struct timeval *, struct timezone *);
+-#endif
+ 
+ 	(void)gettimeofday(&tv,&tz);
+ 	s48[0] = (u32)tv.tv_sec;
+-- 
+2.13.0
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc
new file mode 100644
index 0000000..fea0714
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc
@@ -0,0 +1,25 @@
+SUMMARY = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+HOMEPAGE = "https://github.com/idan/oauthlib"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ba9ce41463615e082609806255bce1b"
+
+SRC_URI = "https://pypi.python.org/packages/a5/8a/212e9b47fb54be109f3ff0684165bb38c51117f34e175c379fce5c7df754/oauthlib-${PV}.tar.gz"
+SRC_URI[md5sum] = "277a9a966cc8c72e492b4eeb41332445"
+SRC_URI[sha256sum] = "ce57b501e906ff4f614e71c36a3ab9eacbb96d35c24d1970d2539bbc3ec70ce1"
+
+S = "${WORKDIR}/oauthlib-${PV}"
+
+# The following configs & dependencies are from setuptools extras_require.
+# These dependencies are optional, hence can be controlled via PACKAGECONFIG.
+# The upstream names may not correspond exactly to bitbake package names.
+#
+# Uncomment this line to enable all the optional features.
+#PACKAGECONFIG ?= "test signedtoken signals rsa"
+PACKAGECONFIG[test] = ",,,${PYTHON_PN}-blinker ${PYTHON_PN}-cryptography ${PYTHON_PN}-nose ${PYTHON_PN}-pyjwt"
+PACKAGECONFIG[signedtoken] = ",,,${PYTHON_PN}-cryptography ${PYTHON_PN}-pyjwt"
+PACKAGECONFIG[signals] = ",,,${PYTHON_PN}-blinker"
+PACKAGECONFIG[rsa] = ",,,${PYTHON_PN}-cryptography"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-core ${PYTHON_PN}-crypt ${PYTHON_PN}-datetime ${PYTHON_PN}-json ${PYTHON_PN}-logging ${PYTHON_PN}-math ${PYTHON_PN}-netclient ${PYTHON_PN}-unittest"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-packaging.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-packaging.inc
new file mode 100644
index 0000000..418483f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-packaging.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Core utilities for Python packages"
+HOMEPAGE = "https://github.com/pypa/packaging"
+LICENSE = "Apache-2.0 & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91"
+
+SRC_URI[md5sum] = "19e0d1f82a9007b448650ccfeffd0a26"
+SRC_URI[sha256sum] = "3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+RDEPENDS_${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-pyparsing"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type.inc
new file mode 100644
index 0000000..147ea64
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type.inc
@@ -0,0 +1,25 @@
+SUMMARY = "Simplifies building parse types based on the parse module"
+HOMEPAGE = "https://github.com/jenisys/parse_type"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d07323820cca0f1d192cbbf8a0516f95"
+
+SRC_URI[md5sum] = "b5fa59e45965d1b2896023742df2e707"
+SRC_URI[sha256sum] = "f596bdc75d3dd93036fbfe3d04127da9f6df0c26c36e01e76da85adef4336b3c"
+
+PYPI_PACKAGE = "parse_type"
+inherit pypi ptest
+
+RDEPENDS_${PN} += "${PYTHON_PN}-parse"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc
new file mode 100644
index 0000000..ecfd671
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc
@@ -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://parse.py;beginline=1325;endline=1345;md5=3d987b2e73881bbce768a80f9cdd23d9"
+
+SRC_URI[md5sum] = "a5aa82b2b8b4d733d227e3c99d7d01b4"
+SRC_URI[sha256sum] = "a6d4e2c2f1fbde6717d28084a191a052950f758c0cbd83805357e6575c2b95c0"
+
+inherit pypi ptest
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-logging \
+    "
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/test_parse.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
new file mode 100644
index 0000000..9cf0280
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
@@ -0,0 +1,19 @@
+SUMMARY = "comprehensive password hashing framework supporting over 30 schemes"
+DESCRIPTION = "\
+Passlib is a password hashing library for Python 2 & 3, which provides cross-platform \
+implementations of over 30 password hashing algorithms, as well as a framework for \
+managing existing password hashes. It’s designed to be useful for a wide range of \
+tasks, from verifying a hash found in /etc/shadow, to providing full-strength password \
+hashing for multi-user applications."
+HOMEPAGE = "https://bitbucket.org/ecollins/passlib"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=44fd7dcd5d42b48d6dea59ac643a0179"
+
+SRC_URI[md5sum] = "b908529cfd4c33057c244324c692eae7"
+SRC_URI[sha256sum] = "8d666cef936198bc2ab47ee9b0410c94adf2ba798e5a84bf220be079ae7ab6a8"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pathlib2.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pathlib2.inc
new file mode 100644
index 0000000..d69d527
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pathlib2.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Object-oriented filesystem paths"
+HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=042856c23a3e903b33bf361ea1cbe29a"
+
+SRC_URI[md5sum] = "f2bd0a363eb0f8fa0556f35c1d9e66fb"
+SRC_URI[sha256sum] = "6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-periphery.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-periphery.inc
new file mode 100644
index 0000000..0171f63
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-periphery.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "A pure Python 2/3 library for peripheral I/O (GPIO, LED, PWM, SPI, I2C, MMIO, Serial) in Linux."
+HOMEPAGE = "http://pythonhosted.org/python-periphery/"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=1ecf5c2354c22fb5bfd53eefb8f9e65b"
+
+PYPI_PACKAGE = "python-periphery"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-mmap"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
new file mode 100644
index 0000000..c6230b2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
@@ -0,0 +1,23 @@
+SUMMARY = "A Pure Python Expect like Module for Python"
+HOMEPAGE = "http://pexpect.readthedocs.org/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c7a725251880af8c6a148181665385b"
+
+SRC_URI += "file://0001-FSM.py-change-shebang-from-python-to-python3.patch"
+
+SRC_URI[md5sum] = "153eb25184249d6a85fde9acf4804085"
+SRC_URI[sha256sum] = "fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-terminal \
+    ${PYTHON_PN}-resource \
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-ptyprocess \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pika.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pika.inc
new file mode 100644
index 0000000..bde154f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pika.inc
@@ -0,0 +1,22 @@
+SUMMARY = "Pika is a RabbitMQ (AMQP 0-9-1) client library for Python."
+DESCRIPTION = " \
+Pika is a pure-Python implementation of the AMQP 0-9-1 protocol \
+including RabbitMQ’s extensions. \
+"
+SECTION = "devel/python"
+HOMEPAGE = "https://pika.readthedocs.io"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=535836bf0a5de515a7bfee026075701d"
+
+SRC_URI[md5sum] = "6002400cdd33bf85ec8680ece72910d4"
+SRC_URI[sha256sum] = "9fa76ba4b65034b878b2b8de90ff8660a59d925b087c5bb88f8fdbb4b64a1dbf"
+
+inherit pypi
+
+PYPI_PACKAGE = "pika"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-tornado \
+    ${PYTHON_PN}-twisted \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc
new file mode 100644
index 0000000..d022c41
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc
@@ -0,0 +1,35 @@
+DESCRIPTION = "Interval arithmetic for Python"
+HOMEPAGE = "https://github.com/AlexandreDecan/python-intervals"
+SECTION = "devel/python"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bccf824202692270a1e0829a62e3f47b"
+
+PYPI_PACKAGE := "Pint"
+
+inherit pypi ptest
+
+SRC_URI[md5sum] = "3a8f29c2a30efd35af4b5c5a224ef965"
+SRC_URI[sha256sum] = "308f1070500e102f83b6adfca6db53debfce2ffc5d3cbe3f6c367da359b5cf4d"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-packaging \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/testsuite
+	cp -rf ${S}/pint/testsuite/* ${D}${PTEST_PATH}/testsuite/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
new file mode 100644
index 0000000..1198d5f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
@@ -0,0 +1,27 @@
+SUMMARY = "Plugin and hook calling mechanisms for python"
+HOMEPAGE = "https://github.com/pytest-dev/pluggy"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
+
+SRC_URI[md5sum] = "7f610e28b8b34487336b585a3dfb803d"
+SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+RDEPENDS_${PN} += "${PYTHON_PN}-importlib-metadata \
+                   ${PYTHON_PN}-more-itertools \
+"
+
+inherit pypi ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/testing
+	cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc
new file mode 100644
index 0000000..149fe05
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Python Lex and Yacc"
+DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python"
+HOMEPAGE = "https://pypi.python.org/pypi/ply"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c"
+
+SRC_URI[md5sum] = "6465f602e656455affcd7c5734c638f8"
+SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc
new file mode 100644
index 0000000..1f8f66a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc
@@ -0,0 +1,9 @@
+SUMMARY = "This package provides a python interface to CMU Sphinxbase and Pocketsphinx libraries created with SWIG and Setuptools."
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=826ebda787eb48e78aec2624f9faba72"
+
+SRC_URI[md5sum] = "c0f2bfd54bc4c438c3bb64825f57d575"
+SRC_URI[sha256sum] = "2cc493ed48c1301e0d2e69b137dc646c2f8caca190ef4bce61836eac96d1796f"
+
+DEPENDS += "swig-native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc
new file mode 100644
index 0000000..58f1961
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc
@@ -0,0 +1,9 @@
+SUMMARY = "A library for stubbing in Python"
+HOMEPAGE = "https://github.com/alex/pretend"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
+
+SRC_URI[md5sum] = "ad53883ede48aeac7ae584f0de0240e8"
+SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable.inc
new file mode 100644
index 0000000..c77a491
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable.inc
@@ -0,0 +1,43 @@
+SUMMARY = "Python library for displaying tabular data in a ASCII table format"
+HOMEPAGE = "http://code.google.com/p/prettytable"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e73500ffa52de5071cff65990055282"
+
+SRC_URI[md5sum] = "0c1361104caff8b09f220748f9d69899"
+SRC_URI[sha256sum] = "a53da3b43d7a5c229b5e3ca2892ef982c46b7923b51e98f0db49956531211c4f"
+
+SRCNAME = "prettytable"
+
+SRC_URI = "https://pypi.python.org/packages/source/P/PrettyTable/${SRCNAME}-${PV}.zip"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+do_install_append() {
+    perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "*.txt" -o -name "PKG-INFO"`
+    for f in $perm_files; do
+        chmod 644 "${f}"
+    done
+}
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/PrettyTable/"
+UPSTREAM_CHECK_REGEX = "/PrettyTable/(?P<pver>(\d+[\.\-_]*)+)"
+
+BBCLASSEXTEND = "native nativesdk"
+inherit ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN} += " \
+	${PYTHON_PN}-math \
+	${PYTHON_PN}-html \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/prettytable_test.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc
new file mode 100644
index 0000000..d59ba2c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Easy progress reporting for Python"
+HOMEPAGE = "http://github.com/verigak/progress/"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aef5566ac4fede9815eccf124c281317"
+
+SRC_URI[md5sum] = "408df0e3db0ad4b74f19f6beec814ae4"
+SRC_URI[sha256sum] = "69ecedd1d1bbe71bf6313d88d1e6c4d2957b7f1d4f71312c211257f7dae64372"
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-math \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc
new file mode 100644
index 0000000..91aa7bb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
+
+SRC_URI[md5sum] = "5016c523e603cd7119644fbc0f00ce53"
+SRC_URI[sha256sum] = "f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db"
+
+PYPI_PACKAGE = "prompt_toolkit"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-terminal \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-wcwidth \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
new file mode 100644
index 0000000..5716894
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
@@ -0,0 +1,32 @@
+DESCRIPTION = "Protocol Buffers"
+HOMEPAGE = "https://developers.google.com/protocol-buffers/"
+SECTION = "devel/python"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=19e8f490f9526b1de84f8d949cfcfd4e"
+
+inherit pypi
+
+SRC_URI[md5sum] = "eeda7dea65fc94e560fc9a8180eb1872"
+SRC_URI[sha256sum] = "c77c974d1dadf246d789f6dad1c24426137c9091e930dbf50e0a29c1fcf00b1f"
+
+# http://errors.yoctoproject.org/Errors/Details/184715/
+# Can't find required file: ../src/google/protobuf/descriptor.proto
+CLEANBROKEN = "1"
+
+UPSTREAM_CHECK_REGEX = "protobuf/(?P<pver>\d+(\.\d+)+)/"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-unittest \
+"
+
+# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools)
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
new file mode 100644
index 0000000..dfb33e8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
@@ -0,0 +1,22 @@
+SUMMARY = "A cross-platform process and system utilities module for Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e35fd9f271d19d5f742f20a9d1f8bb8b"
+
+SRC_URI[md5sum] = "ed7b0f11ed214bcabbe76b7cf52f3ae3"
+SRC_URI[sha256sum] = "685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests += " \
+    ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
+"
+
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc
new file mode 100644
index 0000000..a6dc21c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc
@@ -0,0 +1,41 @@
+SUMMARY = "Run a subprocess in a pseudo terminal"
+HOMEPAGE = "http://ptyprocess.readthedocs.io/en/latest/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cfdcd51fa7d5808da4e74346ee394490"
+
+SRCNAME = "ptyprocess"
+
+SRC_URI[md5sum] = "37402d69f3b50913d4d483587bffad8f"
+SRC_URI[sha256sum] = "923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ptyprocess"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-terminal \
+    ${PYTHON_PN}-resource \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+	${PYTHON_PN}-fcntl \
+	${PYTHON_PN}-terminal \
+	${PYTHON_PN}-resource \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc
new file mode 100644
index 0000000..d150409
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1a3b161aa0fcec32a0c8907a2219ad9d"
+
+SRC_URI[md5sum] = "b46f69561bc85fc52e698b2440ca251e"
+SRC_URI[sha256sum] = "84e8f8da544d7f4bd96479ce4a237600077984d9be1d7f16c1d9a492ecf50085"
+
+DEPENDS += "alsa-lib"
+
+RDEPENDS_${PN} += "libasound"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc
new file mode 100644
index 0000000..ce97919
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc
@@ -0,0 +1,29 @@
+SUMMARY = "A collection of ASN.1-based protocols modules."
+DESCRIPTION = "A collection of ASN.1 modules expressed in form of pyasn1\
+ classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various\
+ data structures (X.509, PKCS etc.)."
+HOMEPAGE = "https://github.com/etingof/pyasn1-modules"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a14482d15c2249de3b6f0e8a47e021fd"
+
+SRC_URI[md5sum] = "18c77d56abeef631d94f95ff2d652859"
+SRC_URI[sha256sum] = "0c35a52e00b672f832e5846826f1fb7507907f7d52fba6faa9e3c4cbe874fe4b"
+
+inherit pypi ptest
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pyasn1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
new file mode 100644
index 0000000..d955764
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
@@ -0,0 +1,31 @@
+SUMMARY = "Python library implementing ASN.1 types."
+HOMEPAGE = "http://pyasn1.sourceforge.net/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=a14482d15c2249de3b6f0e8a47e021fd"
+
+SRC_URI[md5sum] = "dffae4ff9f997a83324b3f33fe62be54"
+SRC_URI[sha256sum] = "aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc
new file mode 100644
index 0000000..0d3ddb1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc
@@ -0,0 +1,13 @@
+SUMMARY = "PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README;md5=288793c2b9b05bd67abbd2a8f5d144f7"
+
+PYPI_PACKAGE = "PyAudio"
+
+SRC_URI[md5sum] = "7e4c88139284033f67b4336c74eda3b8"
+SRC_URI[sha256sum] = "93bfde30e0b64e63a46f2fd77e85c41fd51182a4a3413d9edfaf9ffaa26efb74"
+
+DEPENDS += "portaudio-v19"
+
+RDEPENDS_${PN} += "portaudio-v19"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc
new file mode 100644
index 0000000..d1d53e1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc
@@ -0,0 +1,7 @@
+SUMMARY = "Seamless operability between C++11 and Python"
+HOMEPAGE = "https://github.com/wjakob/pybind11"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=beb87117af69fd10fbf9fb14c22a2e62"
+
+SRC_URI[md5sum] = "23fdca8191b16ce3e7f38fb9e4252b2d"
+SRC_URI[sha256sum] = "72e6def53fb491f7f4e92692029d2e7bb5a0783314f20d80222735ff10a75758"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc
new file mode 100644
index 0000000..232cdb7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "Cryptographic modules for Python."
+HOMEPAGE = "http://www.pycrypto.org/"
+LICENSE = "PSFv2"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=35f354d199e8cb7667b059a23578e63d"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-pycrypto:"
+
+DEPENDS += " gmp"
+
+inherit pypi autotools-brokensep
+
+SRC_URI += "file://cross-compiling.patch \
+            file://CVE-2013-7459.patch \
+           "
+
+SRC_URI[md5sum] = "55a61a054aa66812daf5161a0d5d7eda"
+SRC_URI[sha256sum] = "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"
+
+do_compile[noexec] = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch
new file mode 100644
index 0000000..9006c5c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch
@@ -0,0 +1,98 @@
+From 8dbe0dc3eea5c689d4f76b37b93fe216cf1f00d4 Mon Sep 17 00:00:00 2001
+From: Legrandin <helderijs@gmail.com>
+Date: Sun, 22 Dec 2013 22:24:46 +0100
+Subject: [PATCH] Throw exception when IV is used with ECB or CTR
+
+The IV parameter is currently ignored when initializing
+a cipher in ECB or CTR mode.
+
+For CTR mode, it is confusing: it takes some time to see
+that a different parameter is needed (the counter).
+
+For ECB mode, it is outright dangerous.
+
+This patch forces an exception to be raised.
+
+Upstream-Status: Backport
+[https://github.com/dlitz/pycrypto/commit/8dbe0dc3eea5c689d4f76b37b93fe216cf1f00d4]
+
+CVE: CVE-2013-7459
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ lib/Crypto/SelfTest/Cipher/common.py | 31 +++++++++++++++++++++++--------
+ src/block_template.c                 | 11 +++++++++++
+ 2 files changed, 34 insertions(+), 8 deletions(-)
+
+diff --git a/lib/Crypto/SelfTest/Cipher/common.py b/lib/Crypto/SelfTest/Cipher/common.py
+index 8bebed9..91ec743 100644
+--- a/lib/Crypto/SelfTest/Cipher/common.py
++++ b/lib/Crypto/SelfTest/Cipher/common.py
+@@ -239,19 +239,34 @@ class RoundtripTest(unittest.TestCase):
+         return """%s .decrypt() output of .encrypt() should not be garbled""" % (self.module_name,)
+ 
+     def runTest(self):
+-        for mode in (self.module.MODE_ECB, self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB, self.module.MODE_OPENPGP):
++
++        ## ECB mode
++        mode = self.module.MODE_ECB
++        encryption_cipher = self.module.new(a2b_hex(self.key), mode)
++        ciphertext = encryption_cipher.encrypt(self.plaintext)
++        decryption_cipher = self.module.new(a2b_hex(self.key), mode)
++        decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
++        self.assertEqual(self.plaintext, decrypted_plaintext)
++
++        ## OPENPGP mode
++        mode = self.module.MODE_OPENPGP
++        encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
++        eiv_ciphertext = encryption_cipher.encrypt(self.plaintext)
++        eiv = eiv_ciphertext[:self.module.block_size+2]
++        ciphertext = eiv_ciphertext[self.module.block_size+2:]
++        decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
++        decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
++        self.assertEqual(self.plaintext, decrypted_plaintext)
++
++        ## All other non-AEAD modes (but CTR)
++        for mode in (self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB):
+             encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+             ciphertext = encryption_cipher.encrypt(self.plaintext)
+-            
+-            if mode != self.module.MODE_OPENPGP:
+-                decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+-            else:
+-                eiv = ciphertext[:self.module.block_size+2]
+-                ciphertext = ciphertext[self.module.block_size+2:]
+-                decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
++            decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+             decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
+             self.assertEqual(self.plaintext, decrypted_plaintext)
+ 
++
+ class PGPTest(unittest.TestCase):
+     def __init__(self, module, params):
+         unittest.TestCase.__init__(self)
+diff --git a/src/block_template.c b/src/block_template.c
+index c36b316..8746948 100644
+--- a/src/block_template.c
++++ b/src/block_template.c
+@@ -170,6 +170,17 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
+ 				"Key cannot be the null string");
+ 		return NULL;
+ 	}
++	if (IVlen != 0 && mode == MODE_ECB)
++	{
++		PyErr_Format(PyExc_ValueError, "ECB mode does not use IV");
++		return NULL;
++	}
++	if (IVlen != 0 && mode == MODE_CTR)
++	{
++		PyErr_Format(PyExc_ValueError,
++			"CTR mode needs counter parameter, not IV");
++		return NULL;
++	}
+ 	if (IVlen != BLOCK_SIZE && mode != MODE_ECB && mode != MODE_CTR)
+ 	{
+ 		PyErr_Format(PyExc_ValueError,
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch
new file mode 100644
index 0000000..712f3e8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch
@@ -0,0 +1,23 @@
+Index: pycrypto-2.6/setup.py
+===================================================================
+--- pycrypto-2.6.orig/setup.py
++++ pycrypto-2.6/setup.py
+@@ -271,7 +271,8 @@ class PCTBuildConfigure(Command):
+         if not os.path.exists("config.status"):
+             if os.system("chmod 0755 configure") != 0:
+                 raise RuntimeError("chmod error")
+-            cmd = "sh configure"    # we use "sh" here so that it'll work on mingw32 with standard python.org binaries
++            host = os.environ.get("HOST_SYS")
++            cmd = "ac_cv_func_malloc_0_nonnull=yes sh configure --host " + host   # we use "sh" here so that it'll work on mingw32 with standard python.org binaries
+             if self.verbose < 1:
+                 cmd += " -q"
+             if os.system(cmd) != 0:
+@@ -370,7 +371,7 @@ kw = {'name':"pycrypto",
+       'ext_modules': plat_ext + [
+             # _fastmath (uses GNU mp library)
+             Extension("Crypto.PublicKey._fastmath",
+-                      include_dirs=['src/','/usr/include/'],
++                      include_dirs=['src/'],
+                       libraries=['gmp'],
+                       sources=["src/_fastmath.c"]),
+ 
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch
new file mode 100644
index 0000000..1f31cb8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch
@@ -0,0 +1,90 @@
+From ed44474c11f577c1644910964a917a4cf701bb0f Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Tue, 26 Jan 2016 14:24:26 -0500
+Subject: [PATCH] reflect 2.1 reporting for key imports
+
+GnuPG 2.1 changes how it reports key imports.  These changes should
+make the pygpgme test suite compatible with GnuPG 2.1.
+
+See also:
+https://lists.gnupg.org/pipermail/gnupg-devel/2016-January/030718.html
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/test_import.py | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/tests/test_import.py b/tests/test_import.py
+index 10eb816..597eb47 100644
+--- a/tests/test_import.py
++++ b/tests/test_import.py
+@@ -55,7 +55,7 @@ class ImportTestCase(GpgHomeTestCase):
+         ctx = gpgme.Context()
+         with self.keyfile('key1.sec') as fp:
+             result = ctx.import_(fp)
+-        self.assertEqual(result.considered, 1)
++        self.assertEqual(result.considered, 3)
+         self.assertEqual(result.no_user_id, 0)
+         self.assertEqual(result.imported, 1)
+         self.assertEqual(result.imported_rsa, 0)
+@@ -64,18 +64,18 @@ class ImportTestCase(GpgHomeTestCase):
+         self.assertEqual(result.new_sub_keys, 0)
+         self.assertEqual(result.new_signatures, 0)
+         self.assertEqual(result.new_revocations, 0)
+-        self.assertEqual(result.secret_read, 1)
+-        self.assertEqual(result.secret_imported, 1)
++        self.assertEqual(result.secret_read, 3)
++        self.assertEqual(result.secret_imported, 2)
+         self.assertEqual(result.secret_unchanged, 0)
+         self.assertEqual(result.skipped_new_keys, 0)
+         self.assertEqual(result.not_imported, 0)
+         self.assertEqual(len(result.imports), 2)
+         self.assertEqual(result.imports[0],
+                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+-                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
++                          None, gpgme.IMPORT_NEW))
+         self.assertEqual(result.imports[1],
+                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+-                          None, gpgme.IMPORT_NEW))
++                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+         # can we get the public key?
+         key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
+         # can we get the secret key?
+@@ -102,17 +102,17 @@ class ImportTestCase(GpgHomeTestCase):
+         fp = BytesIO(b'\n'.join(keys))
+         ctx = gpgme.Context()
+         result = ctx.import_(fp)
+-        self.assertEqual(result.considered, 3)
++        self.assertEqual(result.considered, 5)
+         self.assertEqual(result.no_user_id, 0)
+         self.assertEqual(result.imported, 2)
+-        self.assertEqual(result.imported_rsa, 1)
++        self.assertEqual(result.imported_rsa, 0)
+         self.assertEqual(result.unchanged, 0)
+         self.assertEqual(result.new_user_ids, 0)
+         self.assertEqual(result.new_sub_keys, 0)
+         self.assertEqual(result.new_signatures, 1)
+         self.assertEqual(result.new_revocations, 0)
+-        self.assertEqual(result.secret_read, 1)
+-        self.assertEqual(result.secret_imported, 1)
++        self.assertEqual(result.secret_read, 3)
++        self.assertEqual(result.secret_imported, 2)
+         self.assertEqual(result.secret_unchanged, 0)
+         self.assertEqual(result.skipped_new_keys, 0)
+         self.assertEqual(result.not_imported, 0)
+@@ -122,10 +122,10 @@ class ImportTestCase(GpgHomeTestCase):
+                           None, gpgme.IMPORT_NEW))
+         self.assertEqual(result.imports[1],
+                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+-                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
++                          None, gpgme.IMPORT_SIG))
+         self.assertEqual(result.imports[2],
+                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+-                          None, gpgme.IMPORT_SIG))
++                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+         self.assertEqual(result.imports[3],
+                          ('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F',
+                           None, gpgme.IMPORT_NEW))
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch
new file mode 100644
index 0000000..c18cf3f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch
@@ -0,0 +1,52 @@
+From ba0dc8273e4f83bcd2d43baa5910aae34b93048c Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 1 Feb 2016 19:25:12 -0500
+Subject: [PATCH] passphrase_cb is deprecated
+
+https://bugs.gnupg.org/gnupg/issue767 indicates that
+gpgme_set_passphrase_cb is a deprecated corner of the API and that
+developers using gpgme should really rely on the gpg-agent to handle
+this stuff.  This should actually simplify things for most
+installations -- just strip out all passphrase handling from your
+application entirely, relying on gpg to figure out how to find the
+agent, and relying on the agent figuring out how to prompt the user
+(if necessary).
+
+However, if a developer really wants to use the passphrase callback
+approach, they'll have to use loopback pinentry.  This sets up the
+test suite to be able to make those tests.
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/util.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/tests/util.py b/tests/util.py
+index cd803c2..86892ca 100644
+--- a/tests/util.py
++++ b/tests/util.py
+@@ -28,7 +28,9 @@ keydir = os.path.join(os.path.dirname(__file__), 'keys')
+ 
+ class GpgHomeTestCase(unittest.TestCase):
+ 
+-    gpg_conf_contents = ''
++    gpg_conf_contents = 'pinentry-mode loopback'
++    gpg_agent_conf_contents = 'allow-loopback-pinentry'
++
+     import_keys = []
+ 
+     def keyfile(self, key):
+@@ -41,6 +43,10 @@ class GpgHomeTestCase(unittest.TestCase):
+         fp.write(self.gpg_conf_contents.encode('UTF-8'))
+         fp.close()
+ 
++        fp = open(os.path.join(self._gpghome, 'gpg-agent.conf'), 'wb')
++        fp.write(self.gpg_agent_conf_contents.encode('UTF-8'))
++        fp.close()
++
+         # import requested keys into the keyring
+         ctx = gpgme.Context()
+         for key in self.import_keys:
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch
new file mode 100644
index 0000000..6acb68b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch
@@ -0,0 +1,30 @@
+From 579b5930e15de8855bf63b3c20b6c3aaf894c3eb Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 1 Feb 2016 19:27:59 -0500
+Subject: [PATCH] handle generic error when no passphrase callback present
+
+apparently gpg 2.1 returns ERR_GENERAL right now if the pinentry was
+in loopback mode and no passphrase callback was supplied.  Earlier
+versions supplied ERR_BAD_PASSPHRASE.
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/test_passphrase.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_passphrase.py b/tests/test_passphrase.py
+index 0a235e9..35b3c59 100644
+--- a/tests/test_passphrase.py
++++ b/tests/test_passphrase.py
+@@ -41,7 +41,7 @@ class PassphraseTestCase(GpgHomeTestCase):
+             new_sigs = ctx.sign(plaintext, signature, gpgme.SIG_MODE_CLEAR)
+         except gpgme.GpgmeError as exc:
+             self.assertEqual(exc.args[0], gpgme.ERR_SOURCE_GPGME)
+-            self.assertEqual(exc.args[1], gpgme.ERR_BAD_PASSPHRASE)
++            self.assertEqual(exc.args[1], gpgme.ERR_GENERAL)
+         else:
+             self.fail('gpgme.GpgmeError not raised')
+ 
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
new file mode 100644
index 0000000..ce2abb6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+GPG_AGENT_INFO= python test_all.py -v 2>&1 | sed -e '/\.\.\. ok/ s/^/PASS: /g' -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
new file mode 100644
index 0000000..c58c328
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Pending
+
+Index: Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+===================================================================
+--- Pyrex-0.9.8.4.orig/Pyrex/Distutils/extension.py
++++ Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+@@ -15,7 +15,7 @@ except ImportError:
+     warnings = None
+ 
+ class Extension(_Extension.Extension):
+-    _Extension.Extension.__doc__ + \
++    _Extension.Extension.__doc__ or "" + \
+     """pyrex_include_dirs : [string]
+         list of directories to search for Pyrex header files (.pxd) (in
+         Unix form for portability)
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
new file mode 100644
index 0000000..936f165
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index d243eaa..98099bc 100755
+--- a/setup.py
++++ b/setup.py
+@@ -192,8 +192,6 @@ def _add_rpath(settings, path):
+     """
+     if sys.platform == 'darwin':
+         settings['extra_link_args'].extend(['-Wl,-rpath','-Wl,%s' % path])
+-    else:
+-        settings['runtime_library_dirs'].append(path)
+ 
+ def settings_from_prefix(prefix=None, bundle_libzmq_dylib=False):
+     """load appropriate library/include settings from ZMQ prefix"""
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3339-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3339-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
new file mode 100644
index 0000000..ce8ca0b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3339-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
@@ -0,0 +1,32 @@
+From 2de281fdca88f223ace1eb6428a77b9903c69264 Mon Sep 17 00:00:00 2001
+From: Nicola Lunghi <nicola.lunghi@jci.com>
+Date: Thu, 14 Nov 2019 11:58:28 +0000
+Subject: [PATCH] setup.py: move pytest-runner to test_requirements
+
+This fixes an issue with yocto build.
+pytest-runner is only needed when running tests.
+
+Upstream-Status: Pending
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 9a50767..e3b1c6e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -12,9 +12,9 @@ requirements = [
+     'six',
+ ]
+ 
+-setup_requirements = ['pytest-runner', ]
++setup_requirements = []
+ 
+-test_requirements = ['pytest>=3', ]
++test_requirements = ['pytest>=3', 'pytest-runner']
+ 
+ setup(
+     author="Nicolas Aimetti",
+-- 
+2.20.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
new file mode 100644
index 0000000..8a64687
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
@@ -0,0 +1,32 @@
+From 3531ff73631a0d59234eb4713e7b3a7f5ea57bbb Mon Sep 17 00:00:00 2001
+From: Nicola Lunghi <nicola.lunghi@jci.com>
+Date: Thu, 14 Nov 2019 12:17:51 +0000
+Subject: [PATCH] setup.py: move pytest-runner to test_requirements
+
+This fixes an issue with yocto build.
+pytest-runner is only needed when running tests.
+
+Upstream-Status: Pending
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 53ebea7..ebb0de2 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,9 +10,9 @@ with open('README.md') as readme_file:
+ 
+ requirements = []
+ 
+-setup_requirements = ['pytest-runner', ]
++setup_requirements = []
+ 
+-test_requirements = ['pytest>=3', ]
++test_requirements = ['pytest>=3', 'pytest-runner']
+ 
+ setup(
+     author="Nicolas Aimetti",
+-- 
+2.20.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc
new file mode 100644
index 0000000..b14f825
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc
@@ -0,0 +1,20 @@
+SUMMARY = "Python interface for libsystemd"
+HOMEPAGE = "https://github.com/systemd/python-systemd"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fbd65380cdd255951079008b364516c"
+
+PYPI_PACKAGE = "systemd-python"
+DEPENDS += "systemd (<=234)"
+RDEPENDS_${PN} += "systemd ${PYTHON_PN}-syslog ${PYTHON_PN}-logging"
+REQUIRED_DISTRO_FEATURES = "systemd"
+inherit pypi features_check
+
+SRC_URI[md5sum] = "5071ea5bcb976186e92a3f5e75df221d"
+SRC_URI[sha256sum] = "fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7"
+
+# allow for common patches for python- and python3-systemd
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-systemd:"
+
+SRC_URI += "file://endian.patch"
+
+SRC_URI_append_libc-musl = " file://0001-Provide-implementation-of-strndupa-for-musl.patch"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch
new file mode 100644
index 0000000..d7085a8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch
@@ -0,0 +1,42 @@
+From 8b639f9faf6199e47b9eae0698d01a22917b6abe Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@linux.intel.com>
+Date: Fri, 29 Dec 2017 09:17:17 -0800
+Subject: [PATCH] Provide implementation of strndupa for musl
+
+Reuse the approach from oe-core:
+/meta/recipes-core/systemd/systemd/0002-src-basic-missing.h-check-for-missing-strndupa.patch
+
+Original patch author: Emil Renner Berthing <systemd@esmil.dk>
+
+Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com
+---
+Upstream-Status: Pending
+
+ systemd/util.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/systemd/util.c b/systemd/util.c
+index e02c825..277e611 100644
+--- a/systemd/util.c
++++ b/systemd/util.c
+@@ -34,6 +34,17 @@
+ 
+ #include "util.h"
+ 
++#if !HAVE_DECL_STRNDUPA
++#define strndupa(s, n) \
++  ({ \
++    const char *__old = (s); \
++    size_t __len = strnlen(__old, (n)); \
++    char *__new = (char *)alloca(__len + 1); \
++    __new[__len] = '\0'; \
++    (char *)memcpy(__new, __old, __len); \
++  })
++#endif
++
+ int safe_atou(const char *s, unsigned *ret_u) {
+         char *x = NULL;
+         unsigned long l;
+-- 
+2.13.6
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/endian.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/endian.patch
new file mode 100644
index 0000000..e09aea7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/endian.patch
@@ -0,0 +1,14 @@
+Include endian.h for missing definitions of htobe16
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/systemd/util.c
++++ b/systemd/util.c
+@@ -28,6 +28,7 @@
+ #include <stdbool.h>
+ #include <assert.h>
+ #include <errno.h>
++#include <endian.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <net/if.h>
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
new file mode 100644
index 0000000..7cb6193
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
@@ -0,0 +1,25 @@
+SUMMARY  = "Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed."
+DESCRIPTION = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. \
+By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long \
+polling, WebSockets, and other applications that require a long-lived connection to each user."
+HOMEPAGE = "http://www.tornadoweb.org/en/stable/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "cab4b11480f6d032e46465586192d343"
+SRC_URI[sha256sum] = "c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-numbers ${PYTHON_PN}-email \
+                   ${PYTHON_PN}-pkgutil ${PYTHON_PN}-html ${PYTHON_PN}-json ${PYTHON_PN}-certifi ${PYTHON_PN}-threading \
+                   ${PYTHON_PN}-ctypes"
+
+RDEPENDS_${PN}-test += "${PN} ${PYTHON_PN}-unittest"
+
+PACKAGES =+ "\
+    ${PN}-test \
+"
+
+FILES_${PN}-test = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/*/test \
+    ${libdir}/${PYTHON_DIR}/site-packages/*/testing.py* \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
new file mode 100644
index 0000000..7537baf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
@@ -0,0 +1,266 @@
+DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
+Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols                   \
+(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+HOMEPAGE = "http://www.twistedmatrix.com"
+
+#twisted/topfiles/NEWS:655: - Relicensed: Now under the MIT license, rather than LGPL.
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1743f12d8b8f5aec625c0569a058f0a6"
+
+# allow for common patches for python- and python3-twisted
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-twisted:"
+
+SRC_URI += "file://0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch"
+
+SRC_URI[sha256sum] = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d"
+SRC_URI[md5sum] = "f2d70f7a66ecdf54152310164cceadfe"
+
+PYPI_PACKAGE = "Twisted"
+PYPI_PACKAGE_EXT = "tar.bz2"
+
+do_install_append() {
+    # remove some useless files before packaging
+    find ${D} \( -name "*.bat" -o -name "*.c" -o -name "*.h" \) -exec rm -f {} \;
+}
+
+PACKAGES += "\
+    ${PN}-zsh \
+    ${PN}-test \
+    ${PN}-protocols \
+    ${PN}-conch \
+    ${PN}-mail \
+    ${PN}-names \
+    ${PN}-news \
+    ${PN}-runner \
+    ${PN}-web \
+    ${PN}-words \
+    ${PN}-flow \
+    ${PN}-pair \
+    ${PN}-core \
+"
+
+PACKAGES =+ "\
+    ${PN}-bin \
+"
+
+DEPENDS += " \
+    ${PYTHON_PN}-incremental-native \
+"
+
+RDEPENDS_${PN} = "\
+    ${PN}-bin \
+    ${PN}-core \
+    ${PN}-conch \
+    ${PN}-mail \
+    ${PN}-names \
+    ${PN}-pair \
+    ${PN}-protocols \
+    ${PN}-runner \
+    ${PN}-web \
+    ${PN}-words \
+    ${PN}-zsh \
+"
+
+RDEPENDS_${PN}-core = "${PYTHON_PN}-appdirs \
+                       ${PYTHON_PN}-automat \
+                       ${PYTHON_PN}-constantly \
+                       ${PYTHON_PN}-core \ 
+                       ${PYTHON_PN}-debugger \
+                       ${PYTHON_PN}-hyperlink \
+                       ${PYTHON_PN}-incremental \
+                       ${PYTHON_PN}-pyhamcrest \
+                       ${PYTHON_PN}-pyserial \
+                       ${PYTHON_PN}-unixadmin \
+                       ${PYTHON_PN}-zopeinterface \
+"
+RDEPENDS_${PN}-test = "${PN}"
+RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols ${PYTHON_PN}-bcrypt ${PYTHON_PN}-cryptography ${PYTHON_PN}-pyasn1 ${PYTHON_PN}-pickle"
+RDEPENDS_${PN}-mail = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-names = "${PN}-core"
+RDEPENDS_${PN}-news = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-runner = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-web += "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-words += "${PN}-core"
+RDEPENDS_${PN}-flow += "${PN}-core"
+RDEPENDS_${PN}-pair += "${PN}-core"
+RDEPENDS_${PN}-dbg = "${PN}"
+
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = ""
+
+FILES_${PN}-test = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/test \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/haproxy/test/ \
+"
+
+FILES_${PN}-protocols = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/*.py* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/gps/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/mice/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/haproxy \
+"
+
+FILES_${PN}-zsh = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zsh \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/twisted-completion.zsh \
+"
+
+FILES_${PN}-conch = " \
+    ${bindir}/ckeygen \
+    ${bindir}/tkconch \
+    ${bindir}/conch \
+    ${bindir}/conchftp \
+    ${bindir}/cftp \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_conch.py* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/conch  \
+"
+
+FILES_${PN}-core = " \
+${bindir}/manhole \
+${bindir}/mktap \
+${bindir}/twistd \
+${bindir}/tap2deb \
+${bindir}/tap2rpm \
+${bindir}/tapconvert \
+${bindir}/tkmktap \
+${bindir}/trial \
+${bindir}/easy_install* \
+${bindir}/pyhtmlizer \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/*.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/notestplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/testplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_ftp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_inet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_manhole.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_portforward.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_socks.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_telnet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_trial.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/dropin.cache \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/application \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/cred \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/enterprise \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/internet \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/persisted \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/timeoutqueue.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/filepath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dxprofile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/plugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/htmlizer.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dispatch.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/hook.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadpool.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/otp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/usage.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/roots.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/versions.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/urlpath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/util.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/components.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/logfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/runtime.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/reflect.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/context.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadable.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/rebuild.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/failure.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/lockfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/formmethod.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/finalize.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/win32.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dist.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/shortcut.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zipstream.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/release.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/syslog.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/log.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/compat.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/procutils.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/text.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_twisted_zsh_stub \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/scripts/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/tap/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/trial/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_version.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/copyright.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/im.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/topfiles \
+${libdir}/${PYTHON_DIR}/site-packages/Twisted*egg-info \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/logger/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_threads/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/positioning/ \
+"
+
+FILES_${PN}-mail = " \
+${bindir}/mailmail \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_mail.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/mail \
+"
+
+FILES_${PN}-names = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_names.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/names \
+"
+
+FILES_${PN}-news = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_news.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/news \
+"
+
+FILES_${PN}-runner = " \
+${libdir}/site-packages/twisted/runner/portmap.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/runner\
+"
+
+FILES_${PN}-web = " \
+${bindir}/websetroot \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_web.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/web\
+"
+
+FILES_${PN}-words = " \
+${bindir}/im \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_words.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/words\
+"
+
+FILES_${PN}-flow = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_flow.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/flow \"
+
+FILES_${PN}-pair = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_pair.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/pair \
+"
+
+FILES_${PN}-dbg += " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/.debug \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/.debug \
+"
+
+FILES_${PN}-doc += " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_pydoctortemplates/ \
+"
+
+RDEPENDS_${PN}-src = "${PN}"
+FILES_${PN}-src = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*.py \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/*.py \
+"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch
new file mode 100644
index 0000000..39fc7d4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch
@@ -0,0 +1,38 @@
+From 754f21282ad2775db8ff501d40bbc497faeb17ba Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Tue, 17 Dec 2019 15:09:22 -0500
+Subject: [PATCH] fix MemoryReactor import in test_runner to be from
+ twisted.internet.testing
+
+Upstream-Status: Backport [https://github.com/twisted/twisted/commit/754f21282ad2775db8ff501d40bbc497faeb17ba]
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+---
+ src/twisted/application/newsfragments/9746.misc    | 1 +
+ src/twisted/application/runner/test/test_runner.py | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+ create mode 100644 src/twisted/application/newsfragments/9746.misc
+
+diff --git a/src/twisted/application/newsfragments/9746.misc b/src/twisted/application/newsfragments/9746.misc
+new file mode 100644
+index 000000000..8b1378917
+--- /dev/null
++++ b/src/twisted/application/newsfragments/9746.misc
+@@ -0,0 +1 @@
++
+diff --git a/src/twisted/application/runner/test/test_runner.py b/src/twisted/application/runner/test/test_runner.py
+index 9abc3449a..cce495b12 100644
+--- a/src/twisted/application/runner/test/test_runner.py
++++ b/src/twisted/application/runner/test/test_runner.py
+@@ -15,7 +15,7 @@ from twisted.logger import (
+     LogLevel, LogPublisher, LogBeginner,
+     FileLogObserver, FilteringLogObserver, LogLevelFilterPredicate,
+ )
+-from twisted.test.proto_helpers import MemoryReactor
++from twisted.internet.testing import MemoryReactor
+ 
+ from ...runner import _runner
+ from .._exit import ExitStatus
+-- 
+2.24.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.7.0.bb
new file mode 100644
index 0000000..c65a6d7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.7.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Abseil Python Common Libraries"
+HOMEPAGE = "https://github.com/abseil/abseil-py"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "git://github.com/abseil/abseil-py.git"
+SRCREV ?= "e3ce504183c57fc4eca52fe84732c11cda99d131"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_2.2.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_2.2.3.bb
new file mode 100644
index 0000000..16d2a88
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_2.2.3.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Advanced Enumerations library"
+HOMEPAGE = "https://pypi.org/project/aenum/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://aenum/LICENSE;md5=c6a85477543f8b8591b9c1f82abebbe9"
+
+SRC_URI[md5sum] = "026786dbb37c15c2c8dc91fbf5828e97"
+SRC_URI[sha256sum] = "a4334cabf47c167d44ab5a6198837b80deec5d5bad1b5cf70c966c3a330260e8"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.4.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.4.0.bb
new file mode 100644
index 0000000..b21cade
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.4.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "File support for asyncio"
+DESCRIPTION = "Asynchronous local file IO library for asyncio and Python"
+HOMEPAGE = "https://github.com/aio-libs/aiohttp"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "cb33cf96c371fbd56fc27ab0bd81bd61"
+SRC_URI[sha256sum] = "021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee"
+
+PYPI_PACKAGE = "aiofiles"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.6.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.6.2.bb
new file mode 100644
index 0000000..24eb021
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.6.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Async http client/server framework"
+DESCRIPTION = "Asynchronous HTTP client/server framework for asyncio and Python"
+HOMEPAGE = "https://github.com/aio-libs/aiohttp"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cf056e8e7a0a5477451af18b7b5aa98c"
+
+SRC_URI[md5sum] = "ca40144c199a09fc1a141960cf6295f0"
+SRC_URI[sha256sum] = "259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326"
+
+PYPI_PACKAGE = "aiohttp"
+inherit setuptools3 pypi
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-async-timeout \
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-chardet \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-idna-ssl \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-multidict \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-yarl \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.2.bb
new file mode 100644
index 0000000..2263060
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.2.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A database migration tool for SQLAlchemy"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bd64aba1b968c2bfbc2b525a181ce85c"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "1d67bdbd3abd33f0319afcd29bc59686"
+SRC_URI[sha256sum] = "035ab00497217628bf5d0be82d664d8713ab13d37b630084da8e1f98facf4dbf"
+
+PYPI_PACKAGE = "alembic"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-editor \
+    ${PYTHON_PN}-mako \
+    ${PYTHON_PN}-sqlalchemy \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.5.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.5.2.bb
new file mode 100644
index 0000000..8e586ea
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.5.2.bb
@@ -0,0 +1,13 @@
+DESCRPTION = "ansi2html - Convert text with ANSI color codes to HTML or to LaTeX"
+HOMEPAGE = "https://github.com/ralphbean/ansi2html"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3000208d539ec061b899bce1d9ce9404"
+LICENSE = "GPLv3"
+
+PYPI_PACKAGE = "ansi2html"
+
+SRC_URI[md5sum] = "52d6085ad1c5970082ea5305a26af981"
+SRC_URI[sha256sum] = "96ae85ae7b26b7da674d87de2870ba4d1964bca733ae4614587080b6358c3ba9"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "${PYTHON_PN}-six"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
new file mode 100644
index 0000000..91c6672
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Wraps the best available JSON implementation available in a common interface"
+DESCRIPTION = "Anyjson loads whichever is the fastest JSON module installed and  \
+provides a uniform API regardless of which JSON implementation is used."
+HOMEPAGE = "https://bitbucket.org/runeh/anyjson"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=989aa97e73c912a83a3c873fa11deb08"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "2ea28d6ec311aeeebaf993cb3008b27c"
+SRC_URI[sha256sum] = "37812d863c9ad3e35c0734c42e0bf0320ce8c3bed82cd20ad54cb34d158157ba"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-simplejson"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs/run-ptest
new file mode 100644
index 0000000..5287f3e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest | sed -e 's/\[100%\]//g' | sed -e 's/\.\.F/: FAIL/g' | sed -e 's/\.\.\./: PASS/g'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.4.bb
new file mode 100644
index 0000000..eef5c02
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.4.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A small Python module for determining appropriate + platform-specific dirs, e.g. a user data dir."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=31625363c45eb0c67c630a2f73e438e4"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+SRC_URI[md5sum] = "d6bca12613174185dd9abc8a29f4f012"
+SRC_URI[sha256sum] = "7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-apply-defaults_0.1.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-apply-defaults_0.1.4.bb
new file mode 100644
index 0000000..8d23678
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-apply-defaults_0.1.4.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Apply values to optional params"
+HOMEPAGE = "https://github.com/bcb/apply_defaults"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c89120516900f96f4c60d35fdc4c3f15"
+
+PYPI_PACKAGE = "apply_defaults"
+
+SRC_URI[md5sum] = "719abb133f4b46283ebd940fcdf30a78"
+SRC_URI[sha256sum] = "1ce26326a61d8773d38a9726a345c6525a91a6120d7333af79ad792dacb6246c"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-core"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.9.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.9.2.bb
new file mode 100644
index 0000000..802a5b2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.9.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Arpeggio is a recursive descent parser with memoization based on PEG grammars (aka Packrat parser)"
+HOMEPAGE = "https://pypi.org/project/Arpeggio/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=33b8d1ba459a2fa4d801acfd1d1b7ceb"
+
+SRC_URI[md5sum] = "39667a626217c670bc634444be6e904a"
+SRC_URI[sha256sum] = "948ce06163a48a72c97f4fe79ad3d1c1330b6fec4f22ece182fb60ef60bd022b"
+
+PYPI_PACKAGE = "Arpeggio"
+inherit pypi setuptools3
+
+# setup.py of Arpeggio needs this.
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.3.0.bb
new file mode 100644
index 0000000..0d38da9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.3.0.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "A fast, pure Python library for parsing and serializing ASN.1 structures"
+HOMEPAGE = "https://github.com/wbond/asn1crypto"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7439e38f5e04ff62fae436184786b7ca"
+
+PYPI_PACKAGE = "asn1crypto"
+
+SRC_URI[md5sum] = "daad112940181917e3ff169b47b9bd9a"
+SRC_URI[sha256sum] = "5a215cb8dc12f892244e3a113fe05397ee23c5c4ca7a69cd6e69811755efc42d"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
new file mode 100644
index 0000000..125a023
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Easy manipulation of Python source via the AST."
+HOMEPAGE = "https://github.com/berkerpeksag/astor"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=561205fdabc3ec52cae2d30815b8ade7"
+
+SRC_URI = "git://github.com/berkerpeksag/astor.git "
+SRCREV ?= "c7553c79f9222e20783fe9bd8a553f932e918072"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.3.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.3.3.bb
new file mode 100644
index 0000000..dc1ce0e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.3.3.bb
@@ -0,0 +1,33 @@
+SUMMARY = "An abstract syntax tree for Python with inference support."
+HOMEPAGE = "https://pypi.python.org/pypi/astroid"
+SECTION = "devel/python"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI[md5sum] = "5f3d73d82d1753b59bb49a6bc6046dee"
+SRC_URI[sha256sum] = "71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests += " \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
+"
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-distutils \
+    ${PYTHON_PN}-lazy-object-proxy \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-wrapt \
+    ${PYTHON_PN}-setuptools \
+"
+
+RDEPENDS_${PN}-tests_class-target += "\
+    ${PYTHON_PN}-unittest \
+    ${PYTHON_PN}-xml \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_3.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_3.0.1.bb
new file mode 100644
index 0000000..22dffe6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_3.0.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "asyncio-compatible timeout context manager"
+DESCRIPTION = "\
+The context manager is useful in cases when you want to apply \
+timeout logic around block of code or in cases when asyncio.wait_for() \
+is not suitable. Also it's much faster than asyncio.wait_for() because \
+timeout doesn't create a new task."
+HOMEPAGE = "https://github.com/aio-libs/async-timeout"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+SRC_URI[md5sum] = "305c4fa529f2485c403d0dbe14390175"
+SRC_URI[sha256sum] = "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"
+
+PYPI_PACKAGE = "async-timeout"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-atomicwrites_1.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-atomicwrites_1.3.0.bb
new file mode 100644
index 0000000..e43bf08
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-atomicwrites_1.3.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Powerful Python library for atomic file writes"
+HOMEPAGE = "https://github.com/untitaker/python-atomicwrites"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4"
+
+SRC_URI[md5sum] = "ce11f780a4ce0fce8a55d64494a88178"
+SRC_URI[sha256sum] = "75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "${PYTHON_PN}-misc"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb
new file mode 100644
index 0000000..22c5218
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Simple decorator to set attributes of target function or class in a DRY way"
+HOMEPAGE = "https://github.com/denis-ryzhkov/attr"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=59805a0285f4d2b6abdedae73db4f5c1"
+
+SRC_URI[md5sum] = "68b9a503991241fb2df28488686b0e1e"
+SRC_URI[sha256sum] = "9091548058d17f132596e61fa7518e504f76b9a4c61ca7d86e1f96dbf7d4775d"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_19.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_19.3.0.bb
new file mode 100644
index 0000000..7ff8049
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_19.3.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Classes Without Boilerplate"
+HOMEPAGE = "http://www.attrs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff"
+
+SRC_URI[sha256sum] = "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
+SRC_URI[md5sum] = "5b2db50fcc31be34d32798183c9bd062"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-ctypes \
+"
+RDEPENDS_${PN}_class-nativesdk += " \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-ctypes \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat/0001-setup.py-remove-the-dependency-on-m2r.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat/0001-setup.py-remove-the-dependency-on-m2r.patch
new file mode 100644
index 0000000..c29b659
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat/0001-setup.py-remove-the-dependency-on-m2r.patch
@@ -0,0 +1,50 @@
+From 33b70266930c9093712173c4e0c419815b55e313 Mon Sep 17 00:00:00 2001
+From: Derek Straka <derek@asterius.io>
+Date: Fri, 22 Dec 2017 09:07:00 -0500
+Subject: [PATCH] setup.py: remove the dependency on m2r
+
+The dependency on m2r is removed here as it only provides the
+long_description value that is optional.  This item is just the
+text that would be present on PyPi, so it doesn't provide much
+value in this case
+
+Upstream-Status: Inappropriate (OE specific)
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+
+---
+ setup.py | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index d360c64..7b4180a 100644
+--- a/setup.py
++++ b/setup.py
+@@ -4,14 +4,6 @@ Setup file for automat
+ 
+ from setuptools import setup, find_packages
+ 
+-try:
+-    from m2r import parse_from_file
+-    long_description = parse_from_file('README.md')
+-except(IOError, ImportError):
+-    print("\n\n!!! m2r not found, long_description is bad, don't upload this to PyPI !!!\n\n")
+-    import io
+-    long_description = io.open('README.md', encoding="utf-8").read()
+-
+ setup(
+     name='Automat',
+     use_scm_version=True,
+@@ -19,12 +11,10 @@ setup(
+     description="""
+     Self-service finite-state machines for the programmer on the go.
+     """.strip(),
+-    long_description=long_description,
+     packages=find_packages(exclude=[]),
+     package_dir={'automat': 'automat'},
+     setup_requires=[
+         'setuptools-scm',
+-        'm2r',
+     ],
+     install_requires=[
+         "attrs>=16.1.0",
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.8.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.8.0.bb
new file mode 100644
index 0000000..f8981bc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.8.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Self-service finite-state machines for the programmer on the go"
+HOMEPAGE = "https://github.com/glyph/Automat"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4ad213bcca81688e94593e5f60c87477"
+
+SRC_URI[md5sum] = "47e980a48201a1dabe37fa11f0187013"
+SRC_URI[sha256sum] = "269a09dfb063a3b078983f4976d83f0a0d3e6e7aaf8e27d8df1095e09dc4a484"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+SRC_URI_append = " \
+    file://0001-setup.py-remove-the-dependency-on-m2r.patch \
+"
+
+PYPI_PACKAGE = "Automat"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+   ${PYTHON_PN}-attrs \
+   ${PYTHON_PN}-six \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.8.bb
new file mode 100644
index 0000000..f763067
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.8.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "SDK for connecting to AWS IoT using Python."
+HOMEPAGE = "https://github.com/aws/aws-iot-device-sdk-python"
+LICENSE = "Apache-2.0 & (EPL-1.0 | EDL-1.0)"
+LICENSE_${PN}-examples = "Apache-2.0"
+LIC_FILES_CHKSUM = "\
+    file://LICENSE.txt;md5=9ac49901b833e769c7d6f21e8dbd7b30 \
+    file://AWSIoTPythonSDK/core/protocol/paho/client.py;endline=14;md5=5a3c8a1a4bb71bd934f450ecff972ad9 \
+"
+
+SRC_URI[md5sum] = "d05596f02774ea39517765c5dced874a"
+SRC_URI[sha256sum] = "bcd68cb7fdb044dbd5e5d3a02c311b25717c0376168e7c992982130f19c51b03"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "AWSIoTPythonSDK"
+
+do_install_append() {
+        install -d -m0755 ${D}${datadir}/${BPN}/examples
+        cp --preserve=mode,timestamps -R ${S}/samples/* ${D}${datadir}/${BPN}/examples
+        # this requires the full blown AWS Python SDK
+        rm -r ${D}${datadir}/${BPN}/examples/basicPubSub
+}
+
+PACKAGES =+ "${PN}-examples"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-threading \
+"
+RDEPENDS_${PN}-examples += "${PN}"
+
+FILES_${PN}-examples = "${datadir}/${BPN}/examples"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.8.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.8.0.bb
new file mode 100644
index 0000000..c69098b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.8.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "A collection of tools for internationalizing Python applications"
+HOMEPAGE = "http://babel.edgewall.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=942469df9305abb1c59e95f778310384"
+
+SRC_URI[md5sum] = "6fad9772e75421969ddb41975483abdf"
+SRC_URI[sha256sum] = "1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"
+
+PYPI_PACKAGE = "Babel"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-distutils \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.1.bb
new file mode 100644
index 0000000..c95a759
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Backport of functools.lru_cache from Python 3.3"
+HOMEPAGE = "https://github.com/jaraco/backports.functools_lru_cache"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a33f38bbf47d48c70fe0d40e5f77498e"
+
+PYPI_PACKAGE = "backports.functools_lru_cache"
+
+SRC_URI[md5sum] = "103000b21a8e683647e2ce41929f2a9d"
+SRC_URI[sha256sum] = "8fde5f188da2d593bd5bc0be98d9abc46c95bb8a9dde93429570192ee6cc2d4a"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-threading \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb
new file mode 100644
index 0000000..fa28861
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Security oriented static analyser for python code."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
+
+SRC_URI[md5sum] = "c6a6772d7afa0af8828b3384e73b7085"
+SRC_URI[sha256sum] = "41e75315853507aa145d62a78a2a6c5e3240fe14ee7c601459d0df9418196065"
+
+DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
+
+inherit setuptools3 pypi
+
+RDEPENDS_${PN} += "python3-modules python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.7.bb
new file mode 100644
index 0000000..0f2d31f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.7.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Modern password hashing for your software and your servers."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c"
+
+DEPENDS += "${PYTHON_PN}-cffi-native"
+
+SRC_URI[md5sum] = "5d6f93b575ce52470af37a8e7dce76fe"
+SRC_URI[sha256sum] = "0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-cffi \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-six \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.2.bb
new file mode 100644
index 0000000..63fbd09
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.2.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Screen-scraping library"
+HOMEPAGE = " https://www.crummy.com/software/BeautifulSoup/bs4"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=f2d38d8a40bf73fd4b3d16ca2e5882d1"
+
+SRC_URI[md5sum] = "5dbdb56c009e4632bae7bed1b385804b"
+SRC_URI[sha256sum] = "05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-html5lib \
+    ${PYTHON_PN}-lxml \
+    ${PYTHON_PN}-soupsieve \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb
new file mode 100644
index 0000000..a28e527
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A behavior-driven development framework, Python style"
+HOMEPAGE = "https://github.com/behave/behave"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d950439e8ea6ed233e4288f5e1a49c06"
+
+SRC_URI[md5sum] = "3f05c859a1c45f5ed33e925817ad887d"
+SRC_URI[sha256sum] = "b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-parse-type \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-six \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.2.1.bb
new file mode 100644
index 0000000..2bf2937
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.2.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A high-level Python efficient arrays of booleans -- C extension"
+HOMEPAGE = "https://github.com/ilanschnell/bitarray"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=dc301a25ebe210dcc53b0a2d5a038eae"
+
+SRC_URI[md5sum] = "a46bf869f6adf34f5b0dc82b469793b7"
+SRC_URI[sha256sum] = "2ed675f460bb0d3d66fd8042a6f1f0d36cf213e52e72a745283ddb245da7b9cf"
+
+inherit setuptools3 pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb
new file mode 100644
index 0000000..e2f76c3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Fast, simple object-to-object and broadcast signaling."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=946d7e89af6f7733aeaebed5635d2682"
+
+SRC_URI[md5sum] = "8b3722381f83c2813c52de3016b68d33"
+SRC_URI[sha256sum] = "471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb
new file mode 100644
index 0000000..ebf7ba4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL"
+HOMEPAGE = "https://github.com/bastikr/boolean.py"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e319747a5eb94cddf646037c01ddba47"
+
+SRC_URI[md5sum] = "1189d115a38f84f5df743014926a9159"
+SRC_URI[sha256sum] = "bd19b412435611ecc712603d0fd7d0e280e24698e7a6e3d5f610473870c5dd1e"
+
+PYPI_PACKAGE = "boolean.py"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachecontrol_0.12.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachecontrol_0.12.6.bb
new file mode 100644
index 0000000..7c45ed3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachecontrol_0.12.6.bb
@@ -0,0 +1,29 @@
+SUMMARY = "httplib2 caching for requests"
+HOMEPAGE = "https://pypi.org/project/CacheControl/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=6dc7e1b428eda03d850209fdbd6c71f1"
+
+# On PyPi, this is "CacheControl", rather than "cachecontrol", so we need to
+# override PYPI_PACKAGE so fetch succeeds.
+PYPI_PACKAGE = "CacheControl"
+
+SRC_URI[md5sum] = "5890b797f9b48b2b4cd1448cca89e396"
+SRC_URI[sha256sum] = "be9aa45477a134aee56c8fac518627e1154df063e85f67d4f83ce0ccc23688e8"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-crypt \
+    python3-datetime \
+    python3-email \
+    python3-lockfile \
+    python3-json \
+    python3-logging \
+    python3-msgpack \
+    python3-netclient \
+    python3-pickle \
+    python3-requests \
+    python3-urllib3 \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.1.0.bb
new file mode 100644
index 0000000..7411a74
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Extensible memoizing collections and decorators"
+HOMEPAGE = "https://github.com/tkem/cachetools"
+DESCRIPTION = "This module provides various memoizing \
+collections and decorators, including variants of the \
+Python 3 Standard Library @lru_cache function decorator."
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2d1e1bf0ccb26126a230c51f997ce362"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "4468da43443115a00c02c126cf601ae0"
+SRC_URI[sha256sum] = "1d057645db16ca7fe1f3bd953558897603d6f0b9c51ed9d11eb4d071ec4e2aab"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.2.bb
new file mode 100644
index 0000000..698eaf5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Controller Area Network (CAN) interface module for Python"
+SECTION = "devel/python"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[md5sum] = "b724553a330478270267380b4888a18e"
+SRC_URI[sha256sum] = "5fefb5c1e7e7f07faefc02c6eac79f9b58376f007048a04d8e7f325d48ec6b2e"
+
+PYPI_PACKAGE="python-can"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-aenum \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-sqlite3 \
+    ${PYTHON_PN}-wrapt \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.14.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.14.0.bb
new file mode 100644
index 0000000..768e557
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.14.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "DataStax Python Driver for Apache Cassandra"
+DESCRIPTION = "A modern, feature-rich and highly-tunable Python client \
+library for Apache Cassandra (1.2+) and DataStax Enterprise (3.1+) using \
+exclusively Cassandra's binary protocol and Cassandra Query Language v3."
+HOMEPAGE = "https://github.com/datastax/python-driver"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+SRCNAME = "cassandra-driver"
+
+SRC_URI[md5sum] = "c5bed026bf48c821424c1f6296193908"
+SRC_URI[sha256sum] = "b65218e2582277f5b77d1436e420db8616f63e3437a9e839cdcd7172d760e861"
+
+DISTUTILS_BUILD_ARGS += " \
+    --no-libev \
+"
+DISTUTILS_INSTALL_ARGS += " \
+    --no-libev \
+"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-cython \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-six \
+    libevent \
+"
+
+DEPENDS += "\
+    ${PYTHON_PN}-cython \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.11.28.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.11.28.bb
new file mode 100644
index 0000000..c9e945f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.11.28.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python package for providing Mozilla's CA Bundle."
+DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
+Python code. This is useful for verifying HTTP requests, for example.  This is the same CA Bundle \
+which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
+HOMEPAGE = " http://certifi.io/"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f77f61d14ee6feac4228d3ebd26cc1f1"
+
+SRC_URI[md5sum] = "4d5229c4d9f0a4a79106f9e2c2cfd381"
+SRC_URI[sha256sum] = "25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.0.bb
new file mode 100644
index 0000000..53c8ee2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Foreign Function Interface for Python calling C code"
+HOMEPAGE = "http://cffi.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
+DEPENDS += "libffi ${PYTHON_PN}-pycparser"
+
+SRC_URI[md5sum] = "74845f8d2b7b583dd9a3574f402edf39"
+SRC_URI[sha256sum] = "2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target = " \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-pycparser \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb
new file mode 100644
index 0000000..80785b8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Universal encoding detector for Python 2 and 3"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "7dd1ba7f9c77e32351b0a0cfacf4055c"
+SRC_URI[sha256sum] = "84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
+
+# setup.py of chardet needs this.
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+inherit pypi setuptools3
+
+PACKAGES =+ "${PN}-cli"
+FILES_${PN}-cli += " \
+    ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \
+"
+
+RDEPENDS_${PN}-cli = "${PN} "
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-logging \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.4.bb
new file mode 100644
index 0000000..05882d0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python template engine and code generation tool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=15e13a4ed0e5880e3e55ec88b0921181"
+
+PYPI_PACKAGE = "Cheetah3"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "python3-pickle python3-pprint"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "8c0ac643263ffc3454fb321342284d0a"
+SRC_URI[sha256sum] = "caabb9c22961a3413ac85cd1e5525ec9ca80daeba6555f4f60802b6c256e252b"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-click_7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-click_7.0.bb
new file mode 100644
index 0000000..cfa3e0f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-click_7.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A simple wrapper around optparse for powerful command line utilities."
+DESCRIPTION = "\
+Click is a Python package for creating beautiful command line interfaces \
+in a composable way with as little code as necessary. It's the "Command \
+Line Interface Creation Kit". It's highly configurable but comes with \
+sensible defaults out of the box."
+HOMEPAGE = "http://click.pocoo.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=c13ed890b210a882c1778216694c98c7"
+
+SRC_URI[md5sum] = "7f53d50f7b7373ebc7963f9ff697450a"
+SRC_URI[sha256sum] = "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
+
+PYPI_PACKAGE = "Click"
+inherit pypi setuptools3
+
+UPSTREAM_CHECK_REGEX = "click/(?P<pver>\d+(\.\d+)+)/"
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-threading \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.23.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.23.bb
new file mode 100644
index 0000000..803ca4a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.23.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Extra features for standard library's cmd module"
+HOMEPAGE = "http://packages.python.org/cmd2/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9791cd24ca7d1807388ccd55cd066def"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+SRC_URI[md5sum] = "6db66a06210d5f1edb44693b887ed62b"
+SRC_URI[sha256sum] = "8ad12ef3cc46d03073c545b6e80a3f84a5921f6653073a60e7d9a7ff3b352c9e"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-colorama \
+    ${PYTHON_PN}-pyperclip \
+    ${PYTHON_PN}-wcwidth \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorama_0.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorama_0.4.3.bb
new file mode 100644
index 0000000..7a3f533
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorama_0.4.3.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Cross-platform colored terminal text."
+HOMEPAGE = "https://github.com/tartley/colorama"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b4936429a56a652b84c5c01280dcaa26"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "02daee502863d24112a8c05a5d69a612"
+SRC_URI[sha256sum] = "e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_10.0.bb
new file mode 100644
index 0000000..88fac87
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_10.0.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Colored terminal output for Python's logging module"
+HOMEPAGE = "https://coloredlogs.readthedocs.io"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=690da298a43805797a4fa7bbe180b3c6"
+
+SRC_URI[md5sum] = "0a186966a1955fff8cf9489373e691d9"
+SRC_URI[sha256sum] = "b869a2dda3fa88154b9dd850e27828d8755bfab5a838a1c97fbc850c6e377c36"
+
+inherit pypi setuptools3
+
+do_compile_prepend() {
+    sed -ie "s/find_pth_directory(),/'',/g" ${S}/setup.py
+}
+
+do_install_append() {
+    rm -rf ${D}${datadir}
+}
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-humanfriendly \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_4.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_4.1.0.bb
new file mode 100644
index 0000000..ea4c575
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_4.1.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "A colored formatter for the python logging module"
+HOMEPAGE = "https://github.com/borntyping/python-colorlog"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.md;md5=05592f7a5b83bfc756f62dbd70a9b9b5"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "colorlog"
+
+SRC_URI[md5sum] = "25f79b76421132e2a9e08da15e4e0a73"
+SRC_URI[sha256sum] = "30aaef5ab2a1873dec5da38fd6ba568fa761c9fa10b40241027fa3edea47f3d2"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_0.15.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_0.15.1.bb
new file mode 100644
index 0000000..0797898
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_0.15.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables."
+HOMEPAGE = "https://github.com/bw2/ConfigArgParse"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=da746463714cc35999ed9a42339f2943"
+
+SRC_URI[md5sum] = "aba15b7973b7a70bea86fd69289f8fe3"
+SRC_URI[sha256sum] = "baaf0fd2c1c108d007f402dab5481ac5f12d77d034825bf5a27f8224757bd0ac"
+
+PYPI_PACKAGE = "ConfigArgParse"
+
+inherit pypi setuptools3
+
+PACKAGECONFIG ?= "yaml"
+PACKAGECONFIG[yaml] = ",,,${PYTHON_PN}-pyyaml"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_4.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_4.0.2.bb
new file mode 100644
index 0000000..1966609
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_4.0.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "This module provides the ConfigParser class which implements a basic configuration language which provides a structure similar to what's found in Microsoft Windows INI files."
+SECTION = "devel/python"
+HOMEPAGE = "https://docs.python.org/3/library/configparser.html"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=10;endline=10;md5=23f9ad5cad3d8cc0336e2a5d8a87e1fa"
+
+SRC_URI[md5sum] = "35926cc4b9133f1f9ca70a1fd2fdf237"
+SRC_URI[sha256sum] = "c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.28.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.28.bb
new file mode 100644
index 0000000..2d9ec07
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.28.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A Python library for building configuration shells"
+DESCRIPTION = "configshell-fb is a Python library that provides a framework for \
+building simple but nice CLI-based applications. This runs with Python 2 and \
+2to3 is run by setup.py to run on Python 3."
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1dece7821bf3fd70fe1309eaa37d52a2"
+
+SRC_URI = "git://github.com/open-iscsi/configshell-fb.git;protocol=https;branch=master"
+SRCREV = "da8f0cef114e7343a7ae96ff1db7c8c574f819be"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "python3-modules python3-fcntl python3-six"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
new file mode 100644
index 0000000..ad24f6d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
@@ -0,0 +1,11 @@
+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/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_0.6.0.bb
new file mode 100644
index 0000000..6074efa
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_0.6.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Backports and enhancements for the contextlib module"
+HOMEPAGE = "http://contextlib2.readthedocs.org/"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=43d1c7827e8fad6454b553caf0e1d734"
+
+SRC_URI[md5sum] = "d03a631073b40073b5c41364ad8f5979"
+SRC_URI[sha256sum] = "7197aa736777caac513dbd800944c209a49765bf1979b12b037dce0277077ed3"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.0.2.bb
new file mode 100644
index 0000000..9407278
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.0.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Code coverage measurement for Python"
+HOMEPAGE = "https://coverage.readthedocs.io"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[md5sum] = "876be562bc78deac6fc2a06ee4a6d551"
+SRC_URI[sha256sum] = "b251c7092cbb6d789d62dc9c9e7c4fb448c9138b51285c36aeb72462cad3600e"
+
+inherit pypi setuptools3
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb
new file mode 100644
index 0000000..14a344f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A Python module for generating objects that compute the Cyclic Redundancy Check."
+HOMEPAGE = "https://pypi.org/project/crcmod"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a19291627cad2d1dfbfcf3c9fb85c2"
+
+SRC_URI[md5sum] = "2d5b92117d958dcead94f9e17f54cd32"
+SRC_URI[sha256sum] = "dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-unittest"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.8.bb
new file mode 100644
index 0000000..948aab9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.8.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Test vectors for the cryptography package."
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
+
+SRC_URI[md5sum] = "a744ed29bb9ef56b3a50317fea3b218e"
+SRC_URI[sha256sum] = "6cd32174c56a3eca72f64af43c1daacaae758cfa5ff9d280dfcf818fa11ef116"
+
+PYPI_PACKAGE = "cryptography_vectors"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-cryptography \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
new file mode 100644
index 0000000..0ba239c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
@@ -0,0 +1,2 @@
+#!/bin/sh
+py.test
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.8.bb
new file mode 100644
index 0000000..c75dabb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.8.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Provides cryptographic recipes and primitives to python developers"
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=097f805837700cfac572ac274cd38124"
+
+LDSHARED += "-pthread"
+
+SRC_URI[md5sum] = "77730058b556c6d9838679a94c6229ce"
+SRC_URI[sha256sum] = "3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-cffi \
+    ${PYTHON_PN}-cffi-native \
+    ${PYTHON_PN}-asn1crypto \
+    ${PYTHON_PN}-six \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-cffi \
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-asn1crypto \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-six \
+"
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-cffi \
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-asn1crypto \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-threading \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PN} \
+    ${PYTHON_PN}-cryptography-vectors \
+    ${PYTHON_PN}-iso8601 \
+    ${PYTHON_PN}-pretend \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-pytz \
+"
+
+inherit ptest
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    install -d ${D}${PTEST_PATH}/tests/hazmat
+    cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
+}
+
+FILES_${PN}-dbg += " \
+    ${libdir}/${PYTHON_PN}2.7/site-packages/${SRCNAME}/hazmat/bindings/.debug \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.10.0.bb
new file mode 100644
index 0000000..cd21be8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cycler_0.10.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Composable style cycles"
+HOMEPAGE = "http://github.com/matplotlib/cycler"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7713fe42cd766b15c710e19392bfa811"
+
+SRC_URI[md5sum] = "4cb42917ac5007d1cdff6cccfe2d016b"
+SRC_URI[sha256sum] = "cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-core \
+    python3-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.29.14.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.29.14.bb
new file mode 100644
index 0000000..2ce6bdb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.29.14.bb
@@ -0,0 +1,18 @@
+inherit setuptools3
+require python-cython.inc
+
+RDEPENDS_${PN} += "\
+    python3-setuptools \
+"
+
+# running build_ext a second time during install fails, because Python
+# would then attempt to import cythonized modules built for the target
+# architecture.
+DISTUTILS_INSTALL_ARGS += "--skip-build"
+
+do_install_append() {
+    # rename scripts that would conflict with the Python 2 build of Cython
+    mv ${D}${bindir}/cython ${D}${bindir}/cython3
+    mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
+    mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb
new file mode 100644
index 0000000..1d2baf5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-dateutil.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.2.bb
new file mode 100644
index 0000000..2784013
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.2.bb
@@ -0,0 +1,13 @@
+SUMMARY = "A zero-dependency DBus library for Python with asyncio support"
+HOMEPAGE = "https://github.com/acrisci/python-dbus-next"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=b32e18a71bcdd072bce21f204629a104"
+
+SRC_URI[md5sum] = "df838d695284dd1775860f9691a8663f"
+SRC_URI[sha256sum] = "a567d845ceed5feac48dda7faeb9ff2571f9a434a3c32b9b363f763e82368762"
+
+PYPI_PACKAGE = "dbus_next"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
new file mode 100644
index 0000000..c4d8178
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
@@ -0,0 +1,52 @@
+From c4436fd42f2936e5fb0f95434d06e45aa9959ca0 Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:18:33 +0200
+Subject: [PATCH] Add functionality to add own objects to internal object
+
+ list
+
+In some case the tests might want to create dynamically dbus objects which extended
+functionality from own class definitions within templates. In such cases we need to
+register those objects with the internal object manager of dbusmock.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+
+---
+ dbusmock/__init__.py   | 4 ++--
+ dbusmock/mockobject.py | 8 ++++++++
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/dbusmock/__init__.py b/dbusmock/__init__.py
+index 8a482ab..3d5d71a 100644
+--- a/dbusmock/__init__.py
++++ b/dbusmock/__init__.py
+@@ -14,8 +14,8 @@ __license__ = 'LGPL 3+'
+ __version__ = '0.16.7'
+ 
+ from dbusmock.mockobject import (DBusMockObject, MOCK_IFACE,
+-                                 OBJECT_MANAGER_IFACE, get_object, get_objects)
++                                 OBJECT_MANAGER_IFACE, get_object, get_objects, add_object)
+ from dbusmock.testcase import DBusTestCase
+ 
+ __all__ = ['DBusMockObject', 'MOCK_IFACE', 'OBJECT_MANAGER_IFACE',
+-           'DBusTestCase', 'get_object', 'get_objects']
++           'DBusTestCase', 'get_object', 'get_objects', 'add_object']
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index 586dbad..e4f130f 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -688,6 +688,14 @@ dbus.service._method_lookup = _dbusmock_method_lookup
+ # Helper API for templates
+ #
+ 
++def add_object(path, obj):
++    if path in objects:
++        raise dbus.exceptions.DBusException(
++                'org.freedesktop.DBus.Mock.NameError',
++                'object %s already exists' % path)
++
++    objects[path] = obj
++
+ 
+ def get_objects():
+     '''Return all existing object paths'''
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
new file mode 100644
index 0000000..06ab1f0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
@@ -0,0 +1,27 @@
+From 03bd5cb77c54033857810bb17562859eefa41221 Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:20:33 +0200
+Subject: [PATCH] Add possibility to import templates from packages
+
+Does not have any unit tests yet.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+
+---
+ dbusmock/mockobject.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index e4f130f..389df70 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -46,6 +46,9 @@ def load_module(name):
+             exec(f.read(), mod.__dict__, mod.__dict__)
+         return mod
+ 
++    if '.' in name:
++        return importlib.import_module(name)
++
+     return importlib.import_module('dbusmock.templates.' + name)
+ 
+ 
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock_0.16.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock_0.16.7.bb
new file mode 100644
index 0000000..cd760ab
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbusmock_0.16.7.bb
@@ -0,0 +1,25 @@
+# Copyright (c) 2014 LG Electronics, Inc.
+
+SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+AUTHOR = "Martin Pitt <martin.pitt@ubuntu.com>"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[md5sum] = "80f8caa838fad96483a8751e11d384f9"
+SRC_URI[sha256sum] = "2d2ea892fa4633c3ec6ac1e912120ec493047a5c6522849b7d1c95ad755bce75"
+
+SRC_URI += " \
+    file://0001-Add-functionality-to-add-own-objects-to-internal-obj.patch \
+    file://0002-Add-possibility-to-import-templates-from-packages.patch \
+"
+
+PYPI_PACKAGE = "python-dbusmock"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-dbus \
+    ${PYTHON_PN}-pygobject \
+    ${PYTHON_PN}-xml \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.2.1.bb
new file mode 100644
index 0000000..ac4b8c2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.2.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "language bindings for libdbus, for Python 3.5 or later"
+HOMEPAGE = "https://github.com/ldo/dbussy"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+SRC_URI = "git://github.com/ldo/dbussy.git"
+
+SRCREV = "d0ec0223f3797e1612d835e71694a1083881149f"
+
+S = "${WORKDIR}/git"
+
+inherit distutils3
+
+RDEPENDS_${PN} += "\
+    python3-asyncio \
+    python3-core \
+    python3-ctypes \
+    python3-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.4.2.bb
new file mode 100644
index 0000000..844cbdc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.4.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-decorator.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.6.0.bb
new file mode 100644
index 0000000..d041d0e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.6.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "XML bomb protection for Python stdlib modules"
+DESCRIPTION = "Python package with modified subclasses of all stdlib XML \
+parsers that prevent any potentially malicious operation."
+
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=056fea6a4b395a24d0d278bf5c80249e"
+
+SRC_URI[md5sum] = "a59741f675c4cba649de40a99f732897"
+SRC_URI[sha256sum] = "f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.5.0.bb
new file mode 100644
index 0000000..aaaee0d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-distro_1.5.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Distro is an OS platform information API"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+PYPI_PACKAGE = "distro"
+
+SRC_URI[md5sum] = "0ed68b4064709bdaaf6cce69780ddc51"
+SRC_URI[sha256sum] = "0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb
new file mode 100644
index 0000000..1051911
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb
@@ -0,0 +1,2 @@
+require python-django-south.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.7.bb
new file mode 100644
index 0000000..e56453a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.7.bb
@@ -0,0 +1,9 @@
+require python-django.inc
+inherit setuptools3
+
+SRC_URI[md5sum] = "b0833024aac4c8240467e4dc91a12e9b"
+SRC_URI[sha256sum] = "16040e1288c6c9f68c6da2fe75ebde83c0a158f6f5d54f4c5177b0c1478c5b86"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-sqlparse \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.9.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.9.0.bb
new file mode 100644
index 0000000..9ed6d17
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.9.0.bb
@@ -0,0 +1,2 @@
+require python-djangorestframework.inc
+inherit setuptools3
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.16.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.16.0.bb
new file mode 100644
index 0000000..ce4dfdc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.16.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-dnspython.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.1.bb
new file mode 100644
index 0000000..dd8c596
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API."
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
+
+SRC_URI[md5sum] = "35eeb6b5587c8c9a51cd22c83e07ac49"
+SRC_URI[sha256sum] = "9b05481605ea8c0afd0a98c0156a9fb78d9c406368d66b3e6fedf36920fb9d78"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-threading \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dt-schema_git.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dt-schema_git.bb
new file mode 100644
index 0000000..06a9012
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-dt-schema_git.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Tooling for devicetree validation using YAML and jsonschema"
+AUTHOR = "Rob Herring"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=2;endline=3;md5=c795d4924c5f739424fa8d9b569c6659"
+
+inherit setuptools3
+
+SRC_URI = "git://github.com/robherring/dt-schema.git"
+SRCREV = "5009e47c1c76e48871f5988e08dad61f3c91196b"
+PV = "0.1+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "python3-jsonschema python3-ruamel-yaml"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb
new file mode 100644
index 0000000..8ad2b86
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-editor.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.12.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.12.1.bb
new file mode 100644
index 0000000..028d110
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.12.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-engineio.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-et-xmlfile_1.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-et-xmlfile_1.0.1.bb
new file mode 100644
index 0000000..cfff150
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-et-xmlfile_1.0.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "et_xmlfile is a low memory library for creating large XML files"
+DESCRIPTION = "It is based upon the xmlfile module from lxml with the aim of allowing code \
+to be developed that will work with both libraries. It was developed initially for \
+the openpyxl project but is now a standalone module."
+
+HOMEPAGE = "https://bitbucket.org/openpyxl/et_xmlfile/src/default/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=b3d89cae66f26c3a0799be8a96f3178b"
+
+SRC_URI[md5sum] = "f47940fd9d556375420b2e276476cfaf"
+SRC_URI[sha256sum] = "614d9722d572f6246302c4491846d2c393c199cfa4edc9af593437691683335b"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell"
+
+inherit setuptools3
+PYPI_PACKAGE ?= "et_xmlfile"
+PYPI_SRC_URI ?= "https://files.pythonhosted.org/packages/source/e/et_xmlfile/et_xmlfile-1.0.1.tar.gz"
+SECTION = "devel/python"
+SRC_URI += "${PYPI_SRC_URI}"
+S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_1.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_1.3.0.bb
new file mode 100644
index 0000000..d87bf2f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_1.3.0.bb
@@ -0,0 +1,3 @@
+inherit pypi setuptools3
+require python-evdev.inc
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch
new file mode 100644
index 0000000..cbc838f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch
@@ -0,0 +1,28 @@
+From 85307f592c7cb87af162cca4b121b874108b7754 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 2 Apr 2019 11:25:15 -0700
+Subject: [PATCH] setup.py: Don't hardcode swig and fann2 binary locations
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ setup.py | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 37af7c7..8e416f2 100755
+--- a/setup.py
++++ b/setup.py
+@@ -81,11 +81,8 @@ def find_swig():
+ 
+ def build_swig():
+     '''Run SWIG with specified parameters'''
+-    print("Looking for FANN libs...")
+-    find_fann()
+-    print("running SWIG...")
+     swig_bin = find_swig()
+-    swig_cmd = [swig_bin, '-c++', '-python', 'fann2/fann2.i']
++    swig_cmd = ['swig', '-c++', '-python', 'fann2/fann2.i']
+     subprocess.Popen(swig_cmd).wait()
+ 
+ if "sdist" not in sys.argv:
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
new file mode 100644
index 0000000..a04c961
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
@@ -0,0 +1,4 @@
+require python-fann2.inc
+inherit pypi setuptools3
+
+SRC_URI += " file://0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.15.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.15.bb
new file mode 100644
index 0000000..8786a14
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.15.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A python package that provides useful locks."
+HOMEPAGE = "https://github.com/harlowja/fasteners"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4476c4be31402271e101d9a4a3430d52"
+
+SRC_URI[md5sum] = "440f8ab461c8fed941355860d8669556"
+SRC_URI[sha256sum] = "3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
new file mode 100644
index 0000000..95a5405
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-feedformatter.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.12.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.12.2.bb
new file mode 100644
index 0000000..104e7c2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.12.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-babel.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb
new file mode 100644
index 0000000..877c754
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-bootstrap.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jsonpify_1.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jsonpify_1.5.0.bb
new file mode 100644
index 0000000..5d7e9b5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jsonpify_1.5.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "A Flask extension adding a decorator for JSONP support"
+HOMEPAGE = "https://github.com/CoryDolphin/flask-jsonpify"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.rst;md5=bd59445a234a0c8250b39178d42e3148"
+
+PYPI_PACKAGE = "Flask-Jsonpify"
+
+SRC_URI[md5sum] = "8a10e37942c43d93d107644a3fe77d98"
+SRC_URI[sha256sum] = "8ac4c732aa5b11d9f6c2de58065d3b669f139518ca8f529bce943817e2fedbfb"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt_0.3.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt_0.3.2.bb
new file mode 100644
index 0000000..779a2e2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-jwt_0.3.2.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "JWT token authentication for Flask apps"
+HOMEPAGE = "https://github.com/mattupstate/flask-jwt"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ff00db41c47ec84b4567a8b3c246a959"
+
+PYPI_PACKAGE = "Flask-JWT"
+
+SRC_URI[md5sum] = "878ad79a12afa70ad38a12d5ffd2dc1e"
+SRC_URI[sha256sum] = "49c0672fbde0f1cd3374bd834918d28956e3c521c7e00089cdc5380d323bd0ad"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pyjwt ${PYTHON_PN}-flask"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb
new file mode 100644
index 0000000..2d23fe1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-login.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb
new file mode 100644
index 0000000..0b963be
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-mail.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb
new file mode 100644
index 0000000..c98cbfd
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-migrate.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb
new file mode 100644
index 0000000..d251152
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-nav.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb
new file mode 100644
index 0000000..2102554
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-pymongo.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb
new file mode 100644
index 0000000..6bff59a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-flask-restful.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
new file mode 100644
index 0000000..9f88519
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-script.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sijax_0.4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sijax_0.4.1.bb
new file mode 100644
index 0000000..e9a65c4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sijax_0.4.1.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools3
+require python-flask-sijax.inc
+
+SRC_URI[sha256sum] = "fb2bf2d4f75408185102195055d75549fee8d9c9e954dca2427186925cdc429f"
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb
new file mode 100644
index 0000000..ffc4aa7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-flask-socketio.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb
new file mode 100644
index 0000000..07f45bc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-sqlalchemy.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb
new file mode 100644
index 0000000..758c2ac
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-uploads.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb
new file mode 100644
index 0000000..251017f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-user.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb
new file mode 100644
index 0000000..52362a8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-wtf.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb
new file mode 100644
index 0000000..5412bef
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-xstatic.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb
new file mode 100644
index 0000000..cd43990
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-future_0.18.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-future_0.18.2.bb
new file mode 100644
index 0000000..f059186
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-future_0.18.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-future.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.2.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.2.2.bb
new file mode 100644
index 0000000..6e08a19
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.2.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A generic AST to represent Python2 and Python3's Abstract Syntax Tree(AST)."
+HOMEPAGE = "https://github.com/serge-sans-paille/gast"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a3ad9b6802e713fc5e307e1230f1ea90"
+
+SRC_URI = "git://github.com/serge-sans-paille/gast.git"
+SRCREV ?= "ed82e2a507505c6b18eb665d3738b6c0602da5e7"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-geojson_2.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-geojson_2.5.0.bb
new file mode 100644
index 0000000..7c3c23b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-geojson_2.5.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python bindings and utilities for GeoJSON"
+HOMEPAGE = "https://pypi.org/project/geojson/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=f48972abe5cddee79e301574742ed745"
+
+SRC_URI[md5sum] = "14753ed28678828b1de73f68b04e2324"
+SRC_URI[sha256sum] = "6e4bb7ace4226a45d9c8c8b1348b3fc43540658359f93c3f7e03efa9f15f658a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-simplejson python3-math"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb
new file mode 100644
index 0000000..df688e4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb
@@ -0,0 +1,2 @@
+require python-gevent.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.5.bb
new file mode 100644
index 0000000..379c767
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.5.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Client for MQTT protocol"
+HOMEPAGE = "https://github.com/wialon/gmqtt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=903f1792621a3b35ee546da75d139177"
+
+SRC_URI[md5sum] = "9388ec09b6536c4e68c5ac5c31de3dc9"
+SRC_URI[sha256sum] = "c12b2d7d5a90f3304b7291b1d9d21df47e228dfb4ff990e965008fdd1a55ce60"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-asyncio \
+    python3-core \
+    python3-datetime \
+    python3-json \
+    python3-logging \
+    python3-netclient \
+    python3-typing \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.7.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.7.11.bb
new file mode 100644
index 0000000..25e3b9c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.7.11.bb
@@ -0,0 +1,9 @@
+SUMMARY = "The Google API Client for Python is a client library for accessing the Plus, Moderator, and many other Google APIs."
+HOMEPAGE = "https://github.com/googleapis/google-api-python-client"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94023d14f6b58272fd885e4e3f2f08b3"
+
+SRC_URI[md5sum] = "6e28e8caf2e4d55ed5b7c48a538a61c9"
+SRC_URI[sha256sum] = "a8a88174f66d92aed7ebbd73744c2c319b4b1ce828e565f9ec721352d2e2fb8c"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.15.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.15.bb
new file mode 100644
index 0000000..1aedf7f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.15.bb
@@ -0,0 +1,2 @@
+inherit distutils3
+require python-greenlet.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb
new file mode 100644
index 0000000..2da1a4d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-grpcio-tools.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch
new file mode 100644
index 0000000..920fc11
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch
@@ -0,0 +1,65 @@
+From 04e28fdda03b545a0f7b446a784ec2fa7249cbb8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 29 Apr 2020 15:37:40 -0700
+Subject: [PATCH] Fix build on riscv32
+
+Define __NR_mmap in terms of __NR_mmap2 and __NR_futex interms of
+__NR_futex_time64 for rv32, since there calls dont exist for rv32
+
+Also recognise rv32 as a new 32bit platform
+
+Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/675]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/base/internal/direct_mmap.h        | 5 +++++
+ absl/base/internal/spinlock_linux.inc   | 4 ++++
+ absl/synchronization/internal/waiter.cc | 4 ++++
+ 3 files changed, 13 insertions(+)
+
+--- a/third_party/abseil-cpp/absl/base/internal/direct_mmap.h
++++ b/third_party/abseil-cpp/absl/base/internal/direct_mmap.h
+@@ -26,6 +26,10 @@
+ 
+ #ifdef __linux__
+ 
++#if !defined(__NR_mmap) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_mmap __NR_mmap2
++#endif
++
+ #include <sys/types.h>
+ #ifdef __BIONIC__
+ #include <sys/syscall.h>
+@@ -72,6 +76,7 @@ inline void* DirectMmap(void* start, siz
+ #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
+     (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) ||                   \
+     (defined(__PPC__) && !defined(__PPC64__)) ||                             \
++    (defined(__riscv) && __riscv_xlen == 32)  ||                             \
+     (defined(__s390__) && !defined(__s390x__))
+   // On these architectures, implement mmap with mmap2.
+   static int pagesize = 0;
+--- a/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc
++++ b/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc
+@@ -14,6 +14,10 @@
+ //
+ // This file is a Linux-specific part of spinlock_wait.cc
+ 
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #include <linux/futex.h>
+ #include <sys/syscall.h>
+ #include <unistd.h>
+--- a/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc
++++ b/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc
+@@ -24,6 +24,10 @@
+ #include <unistd.h>
+ #endif
+ 
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #ifdef __linux__
+ #include <linux/futex.h>
+ #include <sys/syscall.h>
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
new file mode 100644
index 0000000..bff50a0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
@@ -0,0 +1,74 @@
+From 2ef8a85933f3ac36b289979ff9edd49dd12d0d16 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 4 Aug 2017 09:04:07 -0700
+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
+
+error: invalid argument '-std=gnu99' not allowed with 'C++'
+
+gcc7 ( defaults are -std=gnu11 and -std=gnu++14 )
+ as well clang default to these standards mode or newer
+anyway
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+1. Keep '-std=c++11' and '-std=gnu99' 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.
+
+2. 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: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py                      | 6 +++++-
+ src/python/grpcio/commands.py | 5 ++++-
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index e950057..1b68221 100644
+--- a/setup.py
++++ b/setup.py
+@@ -144,9 +144,13 @@ ENABLE_DOCUMENTATION_BUILD = os.environ.get(
+ 
+ def check_linker_need_libatomic():
+   """Test if linker on system needs libatomic."""
++  compiler, cc_args = os.environ.get('CC').split(' ', 1) or 'gcc'
++  if not cc_args:
++      cc_args = "-g"
++
+   code_test = (b'#include <atomic>\n' +
+                b'int main() { return std::atomic<int64_t>{}; }')
+-  cc_test = subprocess.Popen(['cc', '-x', 'c++', '-std=c++11', '-'],
++  cc_test = subprocess.Popen([compiler, cc_args, '-x', 'c++', '-std=c++11', '-'],
+                              stdin=PIPE,
+                              stdout=PIPE,
+                              stderr=PIPE)
+diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
+index 064dda9..a75d8b9 100644
+--- a/src/python/grpcio/commands.py
++++ b/src/python/grpcio/commands.py
+@@ -216,7 +216,10 @@ class BuildExt(build_ext.build_ext):
+             when invoked in C mode. GCC is okay with this, while clang is not.
+             """
+             # TODO(lidiz) Remove the generated a.out for success tests.
+-            cc_test = subprocess.Popen(['cc', '-x', 'c', '-std=c++11', '-'],
++            compiler, cc_args = os.environ.get('CC').split(' ', 1) or 'gcc'
++            if not cc_args:
++                cc_args = "-g"
++            cc_test = subprocess.Popen([compiler, cc_args, '-x', 'c', '-std=c++11', '-'],
+                                        stdin=subprocess.PIPE,
+                                        stdout=subprocess.PIPE,
+                                        stderr=subprocess.PIPE)
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch
new file mode 100644
index 0000000..8ac2aef
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch
@@ -0,0 +1,17 @@
+Let boringSSL compile on ppc32 bit
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/third_party/boringssl/include/openssl/base.h
++++ b/third_party/boringssl/include/openssl/base.h
+@@ -99,6 +99,9 @@ extern "C" {
+ #elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN)
+ #define OPENSSL_64_BIT
+ #define OPENSSL_PPC64LE
++#elif (defined(__PPC__) || defined(__powerpc__))
++#define OPENSSL_32_BIT
++#define OPENSSL_PPC
+ #elif defined(__mips__) && !defined(__LP64__)
+ #define OPENSSL_32_BIT
+ #define OPENSSL_MIPS
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch
new file mode 100644
index 0000000..8c9ffa2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch
@@ -0,0 +1,21 @@
+Add RISC-V 64bit support
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/third_party/boringssl/include/openssl/base.h
++++ b/third_party/boringssl/include/openssl/base.h
+@@ -108,6 +108,14 @@ extern "C" {
+ #elif defined(__mips__) && defined(__LP64__)
+ #define OPENSSL_64_BIT
+ #define OPENSSL_MIPS64
++#elif defined(__riscv)
++# if (__riscv_xlen == 64)
++#  define OPENSSL_64_BIT
++#  define OPENSSL_RISCV64
++# elif(__riscv_xlen == 32)
++#  define OPENSSL_32_BIT
++#  define OPENSSL_RISCV32
++# endif
+ #elif defined(__pnacl__)
+ #define OPENSSL_32_BIT
+ #define OPENSSL_PNACL
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb
new file mode 100644
index 0000000..129bb35
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Google gRPC"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+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://riscv64_support.patch \
+                                file://0001-Fix-build-on-riscv32.patch \
+"
+SRC_URI[md5sum] = "ccaf4e7eb4f031d926fb80035d193b98"
+SRC_URI[sha256sum] = "a899725d34769a498ecd3be154021c4368dd22bdc69473f6ec46779696f626c4"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-protobuf \
+                  ${PYTHON_PN}-setuptools \
+                  ${PYTHON_PN}-six \
+"
+
+inherit setuptools3
+inherit pypi
+
+export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
+
+do_compile_prepend_toolchain-clang() {
+    export GRPC_PYTHON_CFLAGS='-fvisibility=hidden -fno-wrapv -fno-exceptions'
+}
+
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CCACHE_DISABLE = "1"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gunicorn_20.0.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gunicorn_20.0.4.bb
new file mode 100644
index 0000000..5bd8d51
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-gunicorn_20.0.4.bb
@@ -0,0 +1,11 @@
+SUMMARY = "WSGI HTTP Server for UNIX"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f75f3fb94cdeab1d607e2adaa6077752"
+
+SRC_URI[md5sum] = "543669fcbb5739ee2af77184c5e571a1"
+SRC_URI[sha256sum] = "1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-setuptools ${PYTHON_PN}-fcntl"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-cross-compiling-support.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-cross-compiling-support.patch
new file mode 100644
index 0000000..ff50c85
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-cross-compiling-support.patch
@@ -0,0 +1,46 @@
+From 7e3b1745c1fef34683a0610381dd3308ad4d1ba9 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 29 Jan 2019 17:08:32 +0800
+Subject: [PATCH] cross compiling support
+
+Remove useless dirs
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup_build.py     | 4 ----
+ setup_configure.py | 2 +-
+ 2 files changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/setup_build.py b/setup_build.py
+index 85b321a..2c78e92 100644
+--- a/setup_build.py
++++ b/setup_build.py
+@@ -53,10 +53,6 @@ if sys.platform.startswith('win'):
+         ('_HDF5USEDLL_', None),
+         ('H5_BUILT_AS_DYNAMIC_LIB', None)
+     ])
+-else:
+-    FALLBACK_PATHS['include_dirs'].extend(['/opt/local/include', '/usr/local/include'])
+-    FALLBACK_PATHS['library_dirs'].extend(['/opt/local/lib', '/usr/local/lib'])
+-
+ 
+ class h5py_build_ext(build_ext):
+ 
+diff --git a/setup_configure.py b/setup_configure.py
+index a2de76a..197f2da 100644
+--- a/setup_configure.py
++++ b/setup_configure.py
+@@ -208,7 +208,7 @@ def autodetect_version(hdf5_dir=None):
+     else:
+         regexp = re.compile(r'^libhdf5.so')
+ 
+-    libdirs = ['/usr/local/lib', '/opt/local/lib']
++    libdirs = []
+     try:
+         if pkgconfig.exists("hdf5"):
+             libdirs.extend(pkgconfig.parse("hdf5")['library_dirs'])
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_2.9.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_2.9.0.bb
new file mode 100644
index 0000000..7822e46
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_2.9.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Provides both a high- and low-level interface to the HDF5 library from Python. "
+HOMEPAGE = "https://www.h5py.org/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=107;endline=107;md5=795ecad0d261c998cc526c84a822dff6"
+
+SRC_URI = "git://github.com/h5py/h5py.git \
+           file://0001-cross-compiling-support.patch \
+          "
+SRCREV ?= "8d96a14c3508de1bde77aec5db302e478dc5dbc4"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+
+DEPENDS = "python3-pkgconfig-native \
+           python3-cython-native \
+           python3-numpy-native \
+           python3-six-native \
+           python3 \
+           hdf5 \
+          "
+
+RDEPENDS_${PN} = "python3-numpy \
+                  python3-six \
+                 "
+
+export HDF5_VERSION="1.8.19"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.2.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.2.0.bb
new file mode 100644
index 0000000..fc2cc7d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.2.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Calculate the distance between 2 points on Earth"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI[md5sum] = "6b1badeb63aac6214c978d07a4ecd171"
+SRC_URI[sha256sum] = "b710aaf32c442a6d04aa89678be55e3f6c11f9752fc01c216e89b13120b36269"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-numpy"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb
new file mode 100644
index 0000000..9cb5b01
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-html2text.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb
new file mode 100644
index 0000000..6bd8b49
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-html5lib.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.17.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.17.3.bb
new file mode 100644
index 0000000..57047c9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.17.3.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A comprehensive HTTP client library, httplib2 supports many features left out of other HTTP libraries."
+HOMEPAGE = "https://github.com/httplib2/httplib2"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=4edb3f072a9d815734530f608039a167"
+
+SRC_URI[md5sum] = "5730490cfe83350477b54b0a8a190c8a"
+SRC_URI[sha256sum] = "39dd15a333f67bfb70798faa9de8a6e99c819da6ad82b77f9a259a5c7b1225a2"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_4.18.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_4.18.bb
new file mode 100644
index 0000000..2ca5fe3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_4.18.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-humanfriendly.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb
new file mode 100644
index 0000000..04464ac
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-humanize.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_19.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_19.0.0.bb
new file mode 100644
index 0000000..70813bf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_19.0.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-hyperlink.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna-ssl_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna-ssl_1.1.0.bb
new file mode 100644
index 0000000..3643fcf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna-ssl_1.1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-idna-ssl.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.8.bb
new file mode 100644
index 0000000..a08ca71
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-idna.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.6.0.bb
new file mode 100644
index 0000000..8fe4b98
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.6.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python library that provides an easy interface to read and \
+write a wide range of image data, including animated images, video, \
+volumetric data, and scientific formats."
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d8b7fdd0dff0fd18f35c05365d3d7bf7"
+
+SRC_URI = "git://github.com/imageio/imageio.git;protocol=https"
+SRCREV = "0b161649b3ee108f80bd99466aeab2e65cf82cd8"
+S = "${WORKDIR}/git"
+
+inherit setuptools3
+
+RDEPENDS_${PN} = "python3-numpy python3-pillow"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-importlib-metadata_1.5.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-importlib-metadata_1.5.2.bb
new file mode 100644
index 0000000..8a971da
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-importlib-metadata_1.5.2.bb
@@ -0,0 +1,5 @@
+inherit pypi setuptools3
+require python-importlib-metadata.inc
+
+RDEPENDS_${PN}_append_class-target = " python3-misc"
+RDEPENDS_${PN}_append_class-nativesdk = " python3-misc"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb
new file mode 100644
index 0000000..0f04df4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-incremental.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.3.1.bb
new file mode 100644
index 0000000..cc36a02
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-inflection.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb
new file mode 100644
index 0000000..8cbe109
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-intervals.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipaddress_1.0.23.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipaddress_1.0.23.bb
new file mode 100644
index 0000000..796213f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipaddress_1.0.23.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2."
+HOMEPAGE = "https://github.com/phihag/ipaddress"
+LICENSE = "Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7f538584cc3407bf76042def7168548a"
+
+SRC_URI[md5sum] = "aaee67a8026782af1831148beb0d9060"
+SRC_URI[sha256sum] = "b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.00.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.00.bb
new file mode 100644
index 0000000..ea6a105
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.00.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-ipy.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb
new file mode 100644
index 0000000..23fc4eb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Self-contained ISO 3166-1 country definitions"
+HOMEPAGE = "https://pypi.org/project/iso3166/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5e2f4edc7e7408a82e4a1d05f229b695"
+
+SRC_URI[md5sum] = "53c313c7ae8721e40ddd5e7a01bbcb7e"
+SRC_URI[sha256sum] = "b1e58dbcf50fbb2c9c418ec7a6057f0cdb30b8f822ac852f72e71ba769dae8c5"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-numbers"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb
new file mode 100644
index 0000000..4a332b5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-iso8601.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isodate_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isodate_0.6.0.bb
new file mode 100644
index 0000000..0e79ae9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isodate_0.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-isodate.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.21.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.21.bb
new file mode 100644
index 0000000..755b3e2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.21.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-isort.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_1.1.0.bb
new file mode 100644
index 0000000..a71c20f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_1.1.0.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools3
+require python-itsdangerous.inc
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-compression \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.4.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.4.0.1.bb
new file mode 100644
index 0000000..0ec23ba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.4.0.1.bb
@@ -0,0 +1,2 @@
+require python-javaobj-py3.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal_1.4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal_1.4.1.bb
new file mode 100644
index 0000000..46deeae
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jdcal_1.4.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "This module contains functions for converting between Julian dates and calendar dates"
+DESCRIPTION = "A function for converting Gregorian calendar dates to Julian dates, \
+and another function for converting Julian calendar dates to Julian dates are defined. \
+Two functions for the reverse calculations are also defined."
+
+HOMEPAGE = "https://github.com/phn/jdcal"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=bd236e1f590973467a427bb354be0f46"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[md5sum] = "e05bdb60fa80f25bc60e73e0c6b7c5dc"
+SRC_URI[sha256sum] = "472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/test_jdcal.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.11.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.11.2.bb
new file mode 100644
index 0000000..681acf8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.11.2.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+SRC_URI[sha256sum] = "89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"
+
+PYPI_PACKAGE = "Jinja2"
+
+CLEANBROKEN = "1"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+	${PYTHON_PN}-unixadmin \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-markupsafe \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers\
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin/run-ptest
new file mode 100644
index 0000000..cbcfffd
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+python3 test.py
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb
new file mode 100644
index 0000000..9b7a824
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "JavaScript minifier."
+HOMEPAGE = "https://github.com/tikitu/jsmin/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3a3301ce2ad647e172f4a1016c67324d"
+
+inherit setuptools3 pypi ptest
+SRC_URI[md5sum] = "00e7a3179a4591aab2ee707b3214e2fd"
+SRC_URI[sha256sum] = "b6df99b2cd1c75d9d342e4335b535789b8da9107ec748212706ef7bbe5c2553b"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/jsmin/test.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.25.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.25.bb
new file mode 100644
index 0000000..73efcee
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.25.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-jsonpatch.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer/run-ptest
new file mode 100644
index 0000000..51e609f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+python3 tests.py
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb
new file mode 100644
index 0000000..8d0a09b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-jsonpointer.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb
new file mode 100644
index 0000000..e23720c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Library to process JSON-RPC requests"
+HOMEPAGE = "https://github.com/bcb/jsonrpcserver"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c89120516900f96f4c60d35fdc4c3f15"
+
+SRC_URI[md5sum] = "fd4091bc19eb18579c15b97af70714eb"
+SRC_URI[sha256sum] = "73db55d1cf245ebdfb96ca05c4cce01c51b61be845a2a981f539ea1e6a4e0c4a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-apply-defaults \
+    python3-asyncio \
+    python3-core \
+    python3-json \
+    python3-jsonschema \
+    python3-logging \
+    python3-netclient \
+    python3-pkgutil \
+    python3-typing \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.2.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.2.0.bb
new file mode 100644
index 0000000..9269907
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.2.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-jsonschema.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kconfiglib_14.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kconfiglib_14.1.0.bb
new file mode 100644
index 0000000..ab0944f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kconfiglib_14.1.0.bb
@@ -0,0 +1,2 @@
+require python-kconfiglib.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
new file mode 100644
index 0000000..4293a63
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Reference implementations of popular deep learning models"
+HOMEPAGE = "https://github.com/keras-team/keras-applications"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=366e2fd3c9714f162d3663b6f97cfe41"
+
+SRC_URI = "git://github.com/keras-team/keras-applications.git"
+SRCREV ?= "3b180cb10eda683dda7913ecee2e6487288d292d"
+
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS_${PN} = "python3-numpy \
+                  python3-h5py \
+                 "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-preprocessing_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-preprocessing_1.1.0.bb
new file mode 100644
index 0000000..eacb340
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-preprocessing_1.1.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Easy data preprocessing and data augmentation for deep learning models"
+HOMEPAGE = "https://github.com/keras-team/keras-preprocessing"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1744b320500cc2e3112964d00cce7aa4"
+
+SRC_URI = "git://github.com/keras-team/keras-preprocessing.git"
+SRCREV ?= "ff90696c0416b74344b91df097b228e694339b88"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.1.0.bb
new file mode 100644
index 0000000..a108302
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A fast implementation of the Cassowary constraint solver"
+HOMEPAGE = "https://github.com/nucleic/kiwi"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://setup.py;endline=7;md5=1c177d169db050341d3b890c69fb80e3"
+
+SRC_URI[md5sum] = "fc8a614367f7ba0d34a02fd08c535afc"
+SRC_URI[sha256sum] = "53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-core \
+    python3-setuptools \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb
new file mode 100644
index 0000000..eb42fe9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "langtable is used to guess reasonable defaults for locale,\
+keyboard, territory"
+HOMEPAGE = "https://github.com/mike-fabian/langtable/"
+LICENSE = "GPLv3+"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "35687ca957b746f153a6872139462b1443f8cad1"
+PV = "0.0.38+git${SRCPV}"
+SRC_URI = "git://github.com/mike-fabian/langtable.git;branch=master \
+"
+
+inherit setuptools3 python3native
+
+DISTUTILS_INSTALL_ARGS += " \
+    --install-data=${datadir}/langtable"
+
+FILES_${PN} += "${datadir}/*"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-doctest \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-xml \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.4.3.bb
new file mode 100644
index 0000000..150e12f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.4.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-lazy-object-proxy.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb
new file mode 100644
index 0000000..10a702c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-license-expression.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lockfile_0.12.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lockfile_0.12.2.bb
new file mode 100644
index 0000000..30b1297
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lockfile_0.12.2.bb
@@ -0,0 +1,17 @@
+# This recipe is originally from meta-openstack:
+# https://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python-lockfile_0.12.2.bb
+
+SUMMARY = "Platform-independent file locking module"
+HOMEPAGE = "https://pypi.org/project/lockfile/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2340dffbbfea534b58f1349984eeef72"
+
+SRC_URI[md5sum] = "a6a1a82957a23afdf44cfdd039b65ff9"
+SRC_URI[sha256sum] = "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"
+
+inherit pypi setuptools3
+
+DEPENDS += "python3-distutils-extra-native python3-pbr-native"
+RDEPENDS_${PN} += "python3-sqlite3"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb
new file mode 100644
index 0000000..21a80cd
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-lrparsing.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.12.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.12.0.bb
new file mode 100644
index 0000000..cdb1ac8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.12.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A component library to support SBC display drivers"
+DESCRIPTION = "A component library to support SBC display drivers"
+HOMEPAGE = "https://github.com/rm-hull/luma.core"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=eda804060ba2312e41fe96b6fa334fd7"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "4378edb99cd12540b4e4a588969567ee"
+SRC_URI[sha256sum] = "864a427de78bcc16758f4f4402a9e61f31cc8857bfae9aba8041159aaec3a491"
+
+CLEANBROKEN = "1"
+
+PYPI_PACKAGE = "luma.core"
+
+RDEPENDS_${PN} += " \
+	${PYTHON_PN}-pillow \
+	${PYTHON_PN}-threading \
+	${PYTHON_PN}-smbus2 \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.4.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.4.0.bb
new file mode 100644
index 0000000..ee3b00e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.4.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A small library to drive an OLED device"
+DESCRIPTION = "\
+A small library to drive an OLED device with either SSD1306 , SSD1309, SSD1322, \
+SSD1325, SSD1327, SSD1331, SSD1351 or SH1106 chipset"
+HOMEPAGE = "https://github.com/rm-hull/luma.oled"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=c328c862c3335ad464e1c9a3ba574249"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "2944155b2242b9d2ddeb6e139c6083b8"
+SRC_URI[sha256sum] = "2ea2b535e7e2f056a51a8c54ad78aa1f00d5699fc439c01bc7c2902823889552"
+
+CLEANBROKEN = "1"
+
+PYPI_PACKAGE = "luma.oled"
+
+RDEPENDS_${PN} += " \
+	${PYTHON_PN}-luma-core \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.5.0.bb
new file mode 100644
index 0000000..b95d7ba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.5.0.bb
@@ -0,0 +1,3 @@
+inherit setuptools3
+require python-lxml.inc
+CLEANBROKEN = "1"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.30.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.30.1.bb
new file mode 100644
index 0000000..4d63d4b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.30.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-m2crypto.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markdown_3.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markdown_3.0.1.bb
new file mode 100644
index 0000000..cdfe549
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markdown_3.0.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A Python implementation of John Gruber's Markdown."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=745aaad0c69c60039e638bff9ffc59ed"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "Markdown"
+PYPI_SRC_URI = "https://files.pythonhosted.org/packages/3c/52/7bae9e99a7a4be6af4a713fe9b692777e6468d28991c54c273dfb6ec9fb2/Markdown-${PV}.tar.gz"
+SRC_URI[md5sum] = "72219f46ca440b657bf227500731bdf1"
+SRC_URI[sha256sum] = "d02e0f9b04c500cde6637c11ad7c72671f359b87b9fe924b2383649d8841db7c"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-logging ${PYTHON_PN}-setuptools"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.1.1.bb
new file mode 100644
index 0000000..765e3c9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.1.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-markupsafe.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.2.1.bb
new file mode 100644
index 0000000..f6d8c53
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.2.1.bb
@@ -0,0 +1,37 @@
+SUMMARY = "matplotlib: plotting with Python"
+DESCRIPTION = "\
+Matplotlib is a Python 2D plotting library which produces \
+publication-quality figures in a variety of hardcopy formats \
+and interactive environments across platforms."
+HOMEPAGE = "https://github.com/matplotlib/matplotlib"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "\
+    file://setup.py;beginline=250;endline=250;md5=2a114620e4e6843aa7568d5902501753 \
+    file://LICENSE/LICENSE;md5=afec61498aa5f0c45936687da9a53d74 \
+"
+DEPENDS = "\
+    freetype \
+    libpng \
+    python3-numpy-native \
+    python3-dateutil-native \
+    python3-pytz-native \
+"
+
+SRC_URI[md5sum] = "6c018a644a88120886cc7211f7c826f0"
+SRC_URI[sha256sum] = "ffe2f9cdcea1086fc414e82f42271ecf1976700b8edd16ca9d376189c6d93aee"
+
+inherit pypi setuptools3 pkgconfig
+
+RDEPENDS_${PN} = "\
+    freetype \
+    libpng \
+    python3-numpy \
+    python3-pyparsing \
+    python3-cycler \
+    python3-dateutil \
+    python3-kiwisolver \
+    python3-pytz \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_1.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_1.0.2.bb
new file mode 100644
index 0000000..f695916
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-meld3_1.0.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-meld3.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.5.bb
new file mode 100644
index 0000000..94b9052
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.5.bb
@@ -0,0 +1,9 @@
+SUMMARY = "This module provides a monotonic() function which returns the value (in fractional seconds) of a clock which never goes backwards."
+HOMEPAGE = "https://github.com/atdt/monotonic"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "9f81cb0e5966479754453dea2b6822f4"
+SRC_URI[sha256sum] = "23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.2.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.2.0.bb
new file mode 100644
index 0000000..c3b34d3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.2.0.bb
@@ -0,0 +1,5 @@
+inherit pypi setuptools3
+require python-more-itertools.inc
+
+SRC_URI[md5sum] = "55e7e0a5eabc5a57bc8353c65c6f9965"
+SRC_URI[sha256sum] = "b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-mpmath_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-mpmath_1.1.0.bb
new file mode 100644
index 0000000..7879a85
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-mpmath_1.1.0.bb
@@ -0,0 +1,16 @@
+# This recipe is adapted from one in meta-jupyter:
+# https://github.com/Xilinx/meta-jupyter/blob/master/recipes-python/python3-mpmath_0.19.bb
+
+SUMMARY = "Python library for arbitrary-precision floating-point arithmetic"
+HOMEPAGE = "https://pypi.org/project/mpmath/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=efe9feb00df0b763941f2b1bbac7c402"
+
+SRC_URI[md5sum] = "acb1cdddf38e16084628065b174ddbfe"
+SRC_URI[sha256sum] = "fc17abe05fbab3382b61a123c398508183406fa132e0223874578e20946499f6"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-image"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.6.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.6.2.bb
new file mode 100644
index 0000000..6d7e7a0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.6.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "MessagePack (de)serializer"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751"
+
+PYPI_PACKAGE = "msgpack"
+inherit pypi setuptools3 ptest
+
+SRC_URI[md5sum] = "ba46fdee995565f40e332bd7eea882f1"
+SRC_URI[sha256sum] = "ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830"
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-io \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.13.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.13.bb
new file mode 100644
index 0000000..3f2aaf4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.13.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A tool to help with creating, uploading, and upgrading Mycroft skills on the skills repo."
+HOMEPAGE = "https://github.com/MycroftAI/mycroft-skills-kit"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.md;md5=2f90e43663eddf1c33087419fbb35e28"
+
+SRC_URI[md5sum] = "11d9fc865ef627efe68f25fc113974e8"
+SRC_URI[sha256sum] = "55be86ff2cd0087016759f2b15b40861cda2a8d8a8d0c669fdacdf32a77a10da"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-git"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.3.bb
new file mode 100644
index 0000000..24e1ccb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Mycroft Skill Manager, in python!"
+HOMEPAGE = "https://github.com/MycroftAI/mycroft-skills-manager"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa"
+
+SRC_URI[md5sum] = "d5f580c58389b337f5577cb92f36e788"
+SRC_URI[sha256sum] = "c201785997f3b766ec376a89bbb3367889ac542183ca26733ffe002bb94917b4"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    python3-pako \
+    python3-monotonic \
+    python3-appdirs \
+"
+
+do_install_append() {
+    # Stop this from being installed
+    rm -rf ${D}/usr/share
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_4.7.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_4.7.4.bb
new file mode 100644
index 0000000..0636972
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_4.7.4.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Multidicts are useful for working with HTTP headers, URL query args etc."
+HOMEPAGE = "https://github.com/aio-libs/multidict/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e74c98abe0de8f798ca609137f9cef4a"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[md5sum] = "22b46f759cf2cc3ca1d2c9f82cc9bb79"
+SRC_URI[sha256sum] = "d7d428488c67b09b26928950a395e41cc72bb9c3d5abfe9f0521940ee4f796d4"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
new file mode 100644
index 0000000..65a8c81
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools3 update-alternatives
+require python-ndg-httpsclient.inc
+
+ALTERNATIVE_${PN} = "ndg_httpclient"
+ALTERNATIVE_LINK_NAME[ndg_httpclient] = "${bindir}/ndg_httpclient"
+ALTERNATIVE_PRIORITY = "30"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb
new file mode 100644
index 0000000..30416a4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb
@@ -0,0 +1,2 @@
+require python-netaddr.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netifaces_0.10.9.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netifaces_0.10.9.bb
new file mode 100644
index 0000000..69d5c67
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-netifaces_0.10.9.bb
@@ -0,0 +1,2 @@
+require python-netifaces.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.4.bb
new file mode 100644
index 0000000..efa82e2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.4.bb
@@ -0,0 +1,8 @@
+require python-networkx.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b68290ee1026b204170a23bbdb27a4fd"
+
+SRC_URI[md5sum] = "63e3fdc9d3a46bcabc776acc5ea5fe48"
+SRC_URI[sha256sum] = "f8f4ff0b6f96e4f9b16af6b84622597b5334bf9cae8cf9b2e42e7985d5c95c64"
+
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.1.bb
new file mode 100644
index 0000000..8038484
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "python-nmap is a python library which helps in using nmap port scanner"
+HOMEPAGE = "https://www.nmmapper.com/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+DEPENDS += "${PYTHON_PN}-wheel-native"
+
+PYPI_PACKAGE = "python3-nmap"
+
+SRC_URI[md5sum] = "64a382c870e14b53f2f52b7455996321"
+SRC_URI[sha256sum] = "9b64c5956789f4cac9e8ea2e0de6763dea1cecde1a20ae50a4b4dc5ab0ab6e42"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "nmap ${PYTHON_PN}-requests"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb
new file mode 100644
index 0000000..ce2618b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This module offers a simple interface to query NTP servers from Python."
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://ntplib.py;beginline=1;endline=23;md5=afa07338a9595257e94c205c3e72224d"
+
+SRCNAME = "ntplib"
+SRC_URI[md5sum] = "c7cc8e9b09f40c84819859d70b7784ca"
+SRC_URI[sha256sum] = "c4621b64d50be9461d9bd9a71ba0b4af06fbbf818bbd483752d95c1a4e273ede"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools3 python3native pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-datetime ${PYTHON_PN}-io"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb
new file mode 100644
index 0000000..da13b55
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-oauthlib.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb
new file mode 100644
index 0000000..8f17068
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "A python module for handling realtime sensor data from OBD-II vehicle ports"HOMEPAGE = "https://github.com/brendan-w/python-OBD"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://README.md;md5=58ba896fa086c96ad23317cebfeab277"
+
+SRC_URI[md5sum] = "305efcb6c650db7b9583532355ebeb7c"
+SRC_URI[sha256sum] = "8b81ea5896157b6e861af12e173c10b001cb6cca6ebb04db2c01d326812ad77b"
+
+inherit setuptools3 pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pyserial ${PYTHON_PN}-pint ${PYTHON_PN}-setuptools ${PYTHON_PN}-packaging"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.3.bb
new file mode 100644
index 0000000..018c4ab
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.3.bb
@@ -0,0 +1,15 @@
+SUMMARY = "openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files"
+DESCRIPTION = "It was born from lack of existing library to read/write natively \
+from Python the Office Open XML format. All kudos to the PHPExcel team as openpyxl \
+was initially based on PHPExcel."
+
+HOMEPAGE = "http://www.python-excel.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=a6e506457afab4a25ecbaeb4bc3ed623"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "9583cea56b9d4441d96eb63a8a5c92a4"
+SRC_URI[sha256sum] = "547a9fc6aafcf44abe358b89ed4438d077e9d92e4f182c87e2dc294186dc4b64"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell ${PYTHON_PN}-jdcal ${PYTHON_PN}-et-xmlfile"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set/run-ptest
new file mode 100644
index 0000000..f7b9d09
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest test.py
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_3.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_3.1.1.bb
new file mode 100644
index 0000000..bf362da
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_3.1.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A MutableSet that remembers its order, so that every entry has an index."
+HOMEPAGE = "http://github.com/LuminosoInsight/ordered-set"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://MIT-LICENSE;md5=2b36be0d99854aa2ae292a800a7c1d4e"
+
+SRC_URI[md5sum] = "6e12312c8dc4c90fe840e86e8a352644"
+SRC_URI[sha256sum] = "a7bfa858748c73b096e43db14eb23e2bc714a503f990c89fac8fab9b0ee79724"
+
+inherit pypi setuptools3 ptest
+
+DEPENDS += "python3-pytest-runner-native"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/test.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-packaging_20.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-packaging_20.3.bb
new file mode 100644
index 0000000..aa20fb2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-packaging_20.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-packaging.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padaos_0.1.10.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padaos_0.1.10.bb
new file mode 100644
index 0000000..f506a78
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padaos_0.1.10.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A rigid, lightweight, dead-simple intent parser"
+HOMEPAGE = "https://github.com/MycroftAI/padaos"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.md;md5=b51c3e8e53a7cd95c13c5aab6cbc8e67"
+
+SRC_URI[md5sum] = "dbf852015ef87a6694549779fb475b52"
+SRC_URI[sha256sum] = "2ac05fcbc826873c574568aa5ce09945d6ea987bee10399e766eb8f7c6356d72"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padatious_0.4.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padatious_0.4.7.bb
new file mode 100644
index 0000000..4abe7c7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-padatious_0.4.7.bb
@@ -0,0 +1,9 @@
+SUMMARY = "An efficient and agile neural network intent parser. Padatious is a core component of Mycroft AI."
+HOMEPAGE = "https://github.com/MycroftAI/padatious"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.md;md5=77baec496a458dd0e0fc4ca64cd305bc"
+
+SRC_URI[md5sum] = "1f53967a1633baa8fd48f11139808a33"
+SRC_URI[sha256sum] = "3c235942ff4151a3c36536fd776bd8a6d4d57c97046723d2fa80a89b34faac1f"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.0.bb
new file mode 100644
index 0000000..cc6f4dc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "MQTT version 3.1/3.1.1 client library"
+LICENSE = "EPL-1.0 | EDL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=eb48c6ee2cb9f5b8b9fe75e6f817bdfc \
+                    file://epl-v10;md5=8d383c379e91d20ba18a52c3e7d3a979 \
+                    file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
+"
+SRCNAME = "paho-mqtt"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "45e80d9b8066a8d0ba1ecfffe271bd3d"
+SRC_URI[sha256sum] = "e3d286198baaea195c8b3bc221941d25a3ab0e1507fc1779bdb7473806394be4"
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-threading \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.2.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.2.3.bb
new file mode 100644
index 0000000..21c48fc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.2.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "The universal package manager library"
+HOMEPAGE = "https://github.com/MycroftAI/pako"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa"
+
+SRC_URI[md5sum] = "8eb7077075091c50e4b8a9f939607277"
+SRC_URI[sha256sum] = "6be55fd8c5a2a6f02974f37438c1c47a3d9e764ce81c9d0a1a8c9a1815a59778"
+
+inherit pypi setuptools3
+
+do_install_append() {
+    rm -rf ${D}/usr/share
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.0.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.0.5.bb
new file mode 100644
index 0000000..d8db4ce
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.0.5.bb
@@ -0,0 +1,23 @@
+SUMMARY  = "pandas library for high-performance data analysis tools"
+DESCRIPTION = "pandas is an open source, BSD-licensed library providing \
+high-performance, easy-to-use data structures and data analysis tools for \
+the Python programming language."
+HOMEPAGE = "http://pandas.pydata.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ee0470f2de336c370a71c2f8d5e81c11"
+
+SRC_URI[md5sum] = "5183db713194e6fbc96c45f30a0d1311"
+SRC_URI[sha256sum] = "69c5d920a0b2a9838e677f78f4dde506b95ea8e4d30da25859db6469ded84fa8"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-numpy-native ${PYTHON_PN}-cython-native \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-numpy \
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-pytz \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parallax_1.0.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parallax_1.0.6.bb
new file mode 100644
index 0000000..40876d3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parallax_1.0.6.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Execute commands and copy files over SSH to multiple machines at once."
+HOMEPAGE = "https://github.com/krig/parallax/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=52c67ffa6102f288a0347f8c5802fd18"
+
+SRC_URI[md5sum] = "e312397b083426af84db7076dc2a28d7"
+SRC_URI[sha256sum] = "c16703202ff67aed4740c0727df304abe9f3e7851e653533b24de21b338d9081"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-fcntl ${PYTHON_PN}-threading ${PYTHON_PN}-unixadmin"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.4.2.bb
new file mode 100644
index 0000000..91d9ce2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.4.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-parse-type.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse/run-ptest
new file mode 100644
index 0000000..40c2847
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse/run-ptest
@@ -0,0 +1,2 @@
+#!/bin/sh
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.15.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.15.0.bb
new file mode 100644
index 0000000..b124254
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.15.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-parse.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.2.bb
new file mode 100644
index 0000000..18180a0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-passlib.inc
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pathlib2_2.3.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pathlib2_2.3.5.bb
new file mode 100644
index 0000000..66f71e5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pathlib2_2.3.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pathlib2.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-periphery_2.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-periphery_2.0.1.bb
new file mode 100644
index 0000000..e994427
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-periphery_2.0.1.bb
@@ -0,0 +1,5 @@
+inherit pypi setuptools3
+require python-periphery.inc
+
+SRC_URI[md5sum] = "1d958f02575d4a19734ee2dd92336157"
+SRC_URI[sha256sum] = "5da4d5f40ff8974cf6c724587baa674d7e0593f07b6f6ee896104f11c1be18ec"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-petact_0.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-petact_0.1.2.bb
new file mode 100644
index 0000000..58cd05e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-petact_0.1.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Petact is a library used for installing and updating compressed tar files"
+HOMEPAGE = "https://github.com/matthewscholefield/petact"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.md;md5=c8533d4ba77519398cdae0173db799a1"
+
+SRC_URI[md5sum] = "47e9a6abc91b4022953e4007ddae9e68"
+SRC_URI[sha256sum] = "5dcb0d44f86a601e41a2def9770993cd0ea45c76d37eb3f35e3dd61aa50350e6"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect/0001-FSM.py-change-shebang-from-python-to-python3.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect/0001-FSM.py-change-shebang-from-python-to-python3.patch
new file mode 100644
index 0000000..bee772d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect/0001-FSM.py-change-shebang-from-python-to-python3.patch
@@ -0,0 +1,25 @@
+From 35462d7b778eea32fd0cc0bbc79d6e6f53d942b4 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 23 Apr 2020 08:01:42 +0000
+Subject: [PATCH] FSM.py: change shebang from python to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ pexpect/FSM.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pexpect/FSM.py b/pexpect/FSM.py
+index 46b392e..4e77654 100644
+--- a/pexpect/FSM.py
++++ b/pexpect/FSM.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ 
+ '''This module implements a Finite State Machine (FSM). In addition to state
+ this FSM also maintains a user defined "memory". So this FSM can be used as a
+-- 
+2.24.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.8.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.8.0.bb
new file mode 100644
index 0000000..cf39233
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.8.0.bb
@@ -0,0 +1,2 @@
+require python-pexpect.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.5.bb
new file mode 100644
index 0000000..ef19478
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.5.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Pidfile featuring stale detection and file-locking, can also \
+be used as context-manager or decorator"
+HOMEPAGE = "https://github.com/trbs/pid/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=83d53cbd3105063f20305bc313464e29"
+
+SRC_URI[md5sum] = "ad352ee1dc28b9746a15451c0c53e9d7"
+SRC_URI[sha256sum] = "96eb7dba326b88f5164bc1afdc986c7793e0d32d7f62366256a3903c7b0614ef"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-fcntl ${PYTHON_PN}-logging ${PYTHON_PN}-io"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pika_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pika_1.1.0.bb
new file mode 100644
index 0000000..a151588
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pika_1.1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pika.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch
new file mode 100644
index 0000000..35aee42
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch
@@ -0,0 +1,37 @@
+From 862a981ce462cd83a99e3db9faeeda1f8c64983f Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 18 Mar 2019 23:23:55 -0400
+Subject: [PATCH] explicitly set compile options
+
+OE does not support to install egg package, so
+explicitly set build_ext options for oe-core's
+`setup.py install'
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+---
+ setup.cfg | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/setup.cfg b/setup.cfg
+index 1c6ebc84..1ccc3d69 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -13,3 +13,15 @@ multi_line_output = 3
+ 
+ [tool:pytest]
+ addopts = -rs
++
++[build_ext]
++disable-platform-guessing = 1
++enable-zlib = 1
++enable-jpeg = 1
++enable-tiff = 1
++enable-freetype = 1
++enable-lcms = 1
++enable-jpeg2000 = 1
++disable-webp = 1
++disable-webpmux = 1
++disable-imagequant = 1
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-support-cross-compiling.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-support-cross-compiling.patch
new file mode 100644
index 0000000..6de19ad
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-support-cross-compiling.patch
@@ -0,0 +1,61 @@
+From ae7c8d0336381dd4c10e809e9c8926f9deeafeb8 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 14 Mar 2019 03:48:10 -0400
+Subject: [PATCH] support cross compiling
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py | 13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 5ceae344..07863340 100755
+--- a/setup.py
++++ b/setup.py
+@@ -105,7 +105,7 @@ _LIB_IMAGING = (
+     "codec_fd",
+ )
+ 
+-DEBUG = False
++DEBUG = True
+ 
+ 
+ class DependencyException(Exception):
+@@ -396,21 +396,16 @@ class pil_build_ext(build_ext):
+                     _add_directory(library_dirs, match.group(1))
+ 
+         # include, rpath, if set as environment variables:
+-        for k in ("C_INCLUDE_PATH", "CPATH", "INCLUDE"):
++        for k in ('C_INCLUDE_PATH', 'CPATH', 'INCLUDE', 'STAGING_INCDIR'):
+             if k in os.environ:
+                 for d in os.environ[k].split(os.path.pathsep):
+                     _add_directory(include_dirs, d)
+ 
+-        for k in ("LD_RUN_PATH", "LIBRARY_PATH", "LIB"):
++        for k in ('LD_RUN_PATH', 'LIBRARY_PATH', 'LIB', 'STAGING_LIBDIR'):
+             if k in os.environ:
+                 for d in os.environ[k].split(os.path.pathsep):
+                     _add_directory(library_dirs, d)
+ 
+-        prefix = sysconfig.get_config_var("prefix")
+-        if prefix:
+-            _add_directory(library_dirs, os.path.join(prefix, "lib"))
+-            _add_directory(include_dirs, os.path.join(prefix, "include"))
+-
+         #
+         # add platform directories
+ 
+@@ -469,8 +464,6 @@ class pil_build_ext(build_ext):
+             or sys.platform.startswith("gnu")
+             or sys.platform.startswith("freebsd")
+         ):
+-            for dirname in _find_library_dirs_ldconfig():
+-                _add_directory(library_dirs, dirname)
+             if sys.platform.startswith("linux") and os.environ.get(
+                 "ANDROID_ROOT", None
+             ):
+-- 
+2.20.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_6.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_6.2.1.bb
new file mode 100644
index 0000000..a383a3f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_6.2.1.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Python Imaging Library (Fork). Pillow is the friendly PIL fork by Alex \
+Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and \
+Contributors."
+HOMEPAGE = "https://pillow.readthedocs.io"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=55c0f320370091249c1755c0d2b48e89"
+
+SRC_URI = "git://github.com/python-pillow/Pillow.git;branch=6.2.x \
+           file://0001-support-cross-compiling.patch \
+           file://0001-explicitly-set-compile-options.patch \
+"
+SRCREV ?= "6e0f07bbe38def22d36ee176b2efd9ea74b453a6"
+
+
+inherit setuptools3
+
+DEPENDS += " \
+    zlib \
+    jpeg \
+    tiff \
+    freetype \
+    lcms \
+    openjpeg \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-numbers \
+"
+
+CVE_PRODUCT = "pillow"
+
+S = "${WORKDIR}/git"
+
+RPROVIDES_${PN} += "python3-imaging"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint/run-ptest
new file mode 100644
index 0000000..5cec711
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.11.bb
new file mode 100644
index 0000000..f793ac4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.11.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pint.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.4.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.4.0.bb
new file mode 100644
index 0000000..fc7a47a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.4.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Python module to interface with the pkg-config command line too"
+HOMEPAGE = "http://github.com/matze/pkgconfig"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=faa7f82be8f220bff6156be4790344fc"
+
+SRC_URI = "git://github.com/matze/pkgconfig.git"
+SRCREV ?= "8af0102346847e8873af8e76ab3f34ba9da806e2"
+
+RDEPENDS_${PN} = "pkgconfig \
+                 ${PYTHON_PN}-shell \
+                 "
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.1.bb
new file mode 100644
index 0000000..941e8e3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pluggy.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
new file mode 100644
index 0000000..72410ba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
@@ -0,0 +1,2 @@
+require python-ply.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb
new file mode 100644
index 0000000..2275d1b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb
@@ -0,0 +1,2 @@
+require python-pocketsphinx.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline_1.4.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline_1.4.0.bb
new file mode 100644
index 0000000..d81ee54
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-polyline_1.4.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A Python implementation of Google's Encoded Polyline Algorithm Format"
+HOMEPAGE = "https://pypi.org/project/polyline/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0fbd13500cabd06dd751ba6b2be304c6"
+
+SRC_URI[md5sum] = "b97c57378605c4a856c437569f95a0cb"
+SRC_URI[sha256sum] = "7c7f89d09a09c7b6161bdbfb4fd304b186fc7a2060fa4f31cb3f61c646a5c074"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS_${PN} += "python3-six"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch
new file mode 100644
index 0000000..775ae1b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch
@@ -0,0 +1,61 @@
+From 9a16800738547d117284354bbcad7dd77d9d0344 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 21 Apr 2016 03:05:57 -0400
+Subject: [PATCH] support cross-complication
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py | 35 -----------------------------------
+ 1 file changed, 35 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 658d1a5..e8be7eb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -13,41 +13,6 @@ import sys
+ # - Need gcc
+ # - Need C headers
+ # - Need libcap headers
+-if not sys.platform.startswith('linux'):
+-    sys.stderr.write("This module only works on linux\n")
+-    sys.exit(1)
+-
+-kvers = os.uname()[2]
+-if kvers < '2.6.18' and not os.environ.get("PRCTL_SKIP_KERNEL_CHECK",False):
+-    sys.stderr.write("This module requires linux 2.6.18 or newer\n")
+-    sys.exit(1)
+-
+-if sys.version_info[:2] < (2,4):
+-    sys.stderr.write("This module requires python 2.4 or newer\n")
+-    sys.exit(1)
+-
+-exit = False
+-try:
+-    subprocess.call(['gcc','-v'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-except:
+-    sys.stderr.write("You need to install gcc to build this module\n")
+-    sys.exit(1)
+-
+-sp = subprocess.Popen(['cpp'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-sp.communicate('#include <sys/prctl.h>\n'.encode())
+-if sp.returncode:
+-    sys.stderr.write("You need to install libc development headers to build this module\n")
+-    exit = True
+-
+-sp = subprocess.Popen(['cpp'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-sp.communicate('#include <sys/capability.h>\n'.encode())
+-if sp.returncode:
+-    sys.stderr.write("You need to install libcap development headers to build this module\n")
+-    exit = True
+-
+-if exit:
+-    sys.exit(1)
+-
+ _prctl = Extension("_prctl",
+                    sources = ['_prctlmodule.c'],
+                    depends = ['securebits.h'],
+-- 
+2.8.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.7.bb
new file mode 100644
index 0000000..54620a0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.7.bb
@@ -0,0 +1,22 @@
+SUMMARY  = "Control process attributes through prctl"
+DESCRIPTION = "The linux prctl function allows you to control specific characteristics of a \
+process' behaviour. Usage of the function is fairly messy though, due to \
+limitations in C and linux. This module provides a nice non-messy python(ic) \
+interface."
+SECTION = "devel/python"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=23ff9f50449d4bd0e513df16e4d9755f"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "57cd0a7cad76e8f8792eea22ee5b5d17bae0a90f"
+PV = "1.7+git${SRCPV}"
+
+SRC_URI = "git://github.com/seveas/python-prctl;branch=master \
+           file://0001-support-cross-complication.patch \
+"
+inherit setuptools3 python3native
+
+DEPENDS += "libcap"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner_0.3.1.bb
new file mode 100644
index 0000000..6155b79
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-precise-runner_0.3.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A lightweight, simple-to-use, RNN wake word listener."
+HOMEPAGE = "https://github.com/MycroftAI/mycroft-precise"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.md;md5=2ad29e930f3107d52d2a55728bf62116"
+
+SRC_URI[md5sum] = "a2434be110444192e804f4dada0ccecf"
+SRC_URI[sha256sum] = "1a464209fb4bf0a3f5d5a428310cb2a70487a01a6bc3a960d1dda90af896b80d"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
new file mode 100644
index 0000000..9c5d8a8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pretend.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_0.7.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_0.7.2.bb
new file mode 100644
index 0000000..5445f10
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_0.7.2.bb
@@ -0,0 +1,3 @@
+inherit setuptools3
+require python-prettytable.inc
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.5.bb
new file mode 100644
index 0000000..45e2642
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-progress.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_2.0.10.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_2.0.10.bb
new file mode 100644
index 0000000..0e99917
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_2.0.10.bb
@@ -0,0 +1,7 @@
+inherit pypi setuptools3
+require python-prompt-toolkit.inc
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-shell \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.11.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.11.3.bb
new file mode 100644
index 0000000..30ea34e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.11.3.bb
@@ -0,0 +1,10 @@
+inherit setuptools3
+require python-protobuf.inc
+
+DEPENDS += "protobuf"
+DISTUTILS_BUILD_ARGS += "--cpp_implementation"
+DISTUTILS_INSTALL_ARGS += "--cpp_implementation"
+
+do_compile_prepend_class-native () {
+    export KOKORO_BUILD_NUMBER="1"
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.7.0.bb
new file mode 100644
index 0000000..c1969ea
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.7.0.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools3
+require python-psutil.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-netclient"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess/run-ptest
new file mode 100644
index 0000000..15c3f62
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.6.0.bb
new file mode 100644
index 0000000..bdcd0e2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.6.0.bb
@@ -0,0 +1,2 @@
+require python-ptyprocess.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_20.2.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_20.2.4.bb
new file mode 100644
index 0000000..f0db968
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_20.2.4.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python (3.x and 2.x) high-level interface and ctypes-based bindings for PulseAudio (libpulse), mostly focused on mixer-like controls and introspection-related operations (as opposed to e.g. submitting sound samples to play, player-like client)."
+HOMEPAGE = "https://github.com/mk-fg/python-pulse-control"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f1d10048469ff90123263eb5e214061d"
+
+SRC_URI[md5sum] = "07d7a5fddc49f5da22634464aa008003"
+SRC_URI[sha256sum] = "fca9ed501bef2efd551b35773fd24bba36bbd21bc448f402cf8ee13c12423c19"
+
+RDEPENDS_${PN} += "pulseaudio"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.1.bb
new file mode 100644
index 0000000..ff66aea
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
+HOMEPAGE = "http://py.readthedocs.io/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[md5sum] = "42c67de84b07ac9cc867b8b70843a45b"
+SRC_URI[sha256sum] = "5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-netclient"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb
new file mode 100644
index 0000000..b7da1a4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb
@@ -0,0 +1,2 @@
+require python-pyalsaaudio.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.7.bb
new file mode 100644
index 0000000..3b1186f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.7.bb
@@ -0,0 +1,2 @@
+require python-pyasn1-modules.inc
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
new file mode 100644
index 0000000..a5e2a71
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pyasn1.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb
new file mode 100644
index 0000000..3bdb86b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Python bindings for DBus AT-SPI2 accessibility"
+DESCRIPTION = "AT-SPI2 is a protocol over DBus, toolkit widgets use to provide content to screen readers such as Orca"
+SECTION = "devel/python"
+HOMEPAGE = "https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=db29218e6ba3794c56df7d4987dc7e4d \
+                    file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "python3-dbus-native glib-2.0 dbus-glib libxml2 atk gtk+ python3-pygobject"
+
+SRC_URI = "git://github.com/GNOME/pyatspi2.git;protocol=https;branch=mainline"
+SRCREV = "cc99d68db66174f4499b9b325bc788393b972edd"
+S = "${WORKDIR}/git" 
+
+# Same restriction as gtk+
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+inherit pkgconfig autotools python3native
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/pyatspi/*"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb
new file mode 100644
index 0000000..abb01bf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb
@@ -0,0 +1,2 @@
+require python-pyaudio.inc
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.4.3.bb
new file mode 100644
index 0000000..355e284
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.4.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pybind11.inc
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb
new file mode 100644
index 0000000..26902e1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Bluetooth Python extension module"
+HOMEPAGE = "http://karulis.github.io/pybluez/"
+SECTION = "devel/python"
+
+DEPENDS = "bluez5"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543"
+
+SRC_URI[md5sum] = "49dab9d5a8f0b798c8125c7f649be3cd"
+SRC_URI[sha256sum] = "4ce006716a54d9d18e8186a3f1c8b12a8e6befecffe8fd5828a291fb694ce49d"
+
+PYPI_PACKAGE = "PyBluez"
+PYPI_PACKAGE_EXT = "zip"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    bluez5 \
+    ${PYTHON_PN}-fcntl \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_4.2.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_4.2.3.bb
new file mode 100644
index 0000000..f561753
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_4.2.3.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Library for Python 3.6+ to communicate with the Google Chromecast."
+HOMEPAGE = "https://github.com/balloob/pychromecast"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
+
+SRC_URI[md5sum] = "56632e0d94f2648a29d89affddddaaec"
+SRC_URI[sha256sum] = "d7b7b35254203ab4617389061bee25b0fa67c6628c48bd6a75ccfefef74f1edb"
+
+PYPI_PACKAGE = "PyChromecast"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.5.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.5.0.bb
new file mode 100644
index 0000000..7f00ab6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.5.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Python style guide checker (formly called pep8)"
+HOMEPAGE = "https://pypi.org/project/pycodestyle"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=01831ddbaf398471da3cc87f5037e822"
+
+SRC_URI[md5sum] = "40e7a76f364a18f531aaba11a4476e21"
+SRC_URI[sha256sum] = "e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.20.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.20.bb
new file mode 100644
index 0000000..2a5f414
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.20.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Parser of the C language, written in pure Python"
+HOMEPAGE = "https://github.com/eliben/pycparser"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86f1cedb4e6410a88ce8e30b91079169"
+
+SRC_URI[md5sum] = "b8f88de737db8c346ee8d31c07c7a25a"
+SRC_URI[sha256sum] = "2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-ply \
+    ${PYTHON_PN}-pprint \
+    cpp \
+    cpp-symlinks \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto/0001-Replace-time.clock-with-time.process_time.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto/0001-Replace-time.clock-with-time.process_time.patch
new file mode 100644
index 0000000..282fdd3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto/0001-Replace-time.clock-with-time.process_time.patch
@@ -0,0 +1,34 @@
+From 1d90727ff2368012d6e2f91b1a3198f626495b7f Mon Sep 17 00:00:00 2001
+From: Ming Liu <liu.ming50@gmail.com>
+Date: Sat, 25 Jan 2020 14:36:16 +0100
+Subject: [PATCH] Replace time.clock() with time.process_time()
+
+The use of time.clock() is deprecated in python 3.8, change to use
+time.process_time().
+
+Reference:
+https://docs.python.org/3.3/library/time.html#time.clock
+
+Upstream-Status: Pending
+
+Signed-off-by: Ming Liu <liu.ming50@gmail.com>
+---
+ lib/Crypto/Random/_UserFriendlyRNG.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/Crypto/Random/_UserFriendlyRNG.py b/lib/Crypto/Random/_UserFriendlyRNG.py
+index 957e006..d2a0259 100644
+--- a/lib/Crypto/Random/_UserFriendlyRNG.py
++++ b/lib/Crypto/Random/_UserFriendlyRNG.py
+@@ -74,7 +74,7 @@ class _EntropyCollector(object):
+         self._time_es.feed(struct.pack("@I", int(2**30 * (t - floor(t)))))
+ 
+         # Add the fractional part of time.clock()
+-        t = time.clock()
++        t = time.process_time()
+         self._clock_es.feed(struct.pack("@I", int(2**30 * (t - floor(t)))))
+ 
+ 
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb
new file mode 100644
index 0000000..a20eafe
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb
@@ -0,0 +1,11 @@
+inherit distutils3
+require python-pycrypto.inc
+
+SRC_URI += "file://0001-Replace-time.clock-with-time.process_time.patch"
+
+# We explicitly call distutils_do_install, since we want it to run, but
+# *don't* want the autotools install to run, since this package doesn't
+# provide a "make install" target.
+do_install() {
+       distutils3_do_install
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.5.bb
new file mode 100644
index 0000000..5a1c179
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A Python Interface To The cURL library"
+DESCRIPTION = "\
+PycURL is a Python interface to libcurl, the multiprotocol file \
+transfer library. Similarly to the urllib Python module, PycURL can \
+be used to fetch objects identified by a URL from a Python program \
+"
+SECTION = "devel/python"
+HOMEPAGE = "http://pycurl.io/"
+
+LICENSE = "LGPLv2 | MIT"
+LIC_FILES_CHKSUM = "file://COPYING-LGPL;md5=4fbd65380cdd255951079008b364516c \
+                    file://COPYING-MIT;md5=60872a112595004233b769b6cbfd65b6 \
+                    "
+
+SRC_URI[md5sum] = "0b387d4609ed20c88baede8579a4d425"
+SRC_URI[sha256sum] = "ec7dd291545842295b7b56c12c90ffad2976cc7070c98d7b1517b7b6cd5994b3"
+
+inherit pypi setuptools3
+
+DEPENDS = "\
+    curl \
+    ${PYTHON_PN}\
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-Support-asynchronous-calls-58.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-Support-asynchronous-calls-58.patch
new file mode 100644
index 0000000..c5cb9a8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-Support-asynchronous-calls-58.patch
@@ -0,0 +1,93 @@
+From 39a7d79ee6c548902fbac8b95c934af7e4c69260 Mon Sep 17 00:00:00 2001
+From: Vendula Poncova <vponcova@redhat.com>
+Date: Thu, 2 Aug 2018 15:30:45 +0800
+Subject: [PATCH 1/2] Support asynchronous calls (#58)
+
+Added support for asynchronous calls of methods. A method is called
+synchronously unless its callback parameter is specified. A callback
+is a function f(*args, returned=None, error=None), where args is
+callback_args specified in the method call, returned is a return
+value of the method and error is an exception raised by the method.
+
+Example of an asynchronous call:
+
+def func(x, y, returned=None, error=None):
+  pass
+
+proxy.Method(a, b, callback=func, callback_args=(x, y))
+
+Upstream-Status: Cherry-pick [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pydbus/proxy_method.py | 44 ++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 38 insertions(+), 6 deletions(-)
+
+diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py
+index 8798edd..4ea4304 100644
+--- a/pydbus/proxy_method.py
++++ b/pydbus/proxy_method.py
+@@ -65,15 +65,34 @@ class ProxyMethod(object):
+ 
+ 		# Python 2 sux
+ 		for kwarg in kwargs:
+-			if kwarg not in ("timeout",):
++			if kwarg not in ("timeout", "callback", "callback_args"):
+ 				raise TypeError(self.__qualname__ + " got an unexpected keyword argument '{}'".format(kwarg))
+ 		timeout = kwargs.get("timeout", None)
++		callback = kwargs.get("callback", None)
++		callback_args = kwargs.get("callback_args", tuple())
++
++		call_args = (
++			instance._bus_name,
++			instance._path,
++			self._iface_name,
++			self.__name__,
++			GLib.Variant(self._sinargs, args),
++			GLib.VariantType.new(self._soutargs),
++			0,
++			timeout_to_glib(timeout),
++			None
++		)
++
++		if callback:
++			call_args += (self._finish_async_call, (callback, callback_args))
++			instance._bus.con.call(*call_args)
++			return None
++		else:
++			ret = instance._bus.con.call_sync(*call_args)
++			return self._unpack_return(ret)
+ 
+-		ret = instance._bus.con.call_sync(
+-			instance._bus_name, instance._path,
+-			self._iface_name, self.__name__, GLib.Variant(self._sinargs, args), GLib.VariantType.new(self._soutargs),
+-			0, timeout_to_glib(timeout), None).unpack()
+-
++	def _unpack_return(self, values):
++		ret = values.unpack()
+ 		if len(self._outargs) == 0:
+ 			return None
+ 		elif len(self._outargs) == 1:
+@@ -81,6 +100,19 @@ class ProxyMethod(object):
+ 		else:
+ 			return ret
+ 
++	def _finish_async_call(self, source, result, user_data):
++		error = None
++		return_args = None
++
++		try:
++			ret = source.call_finish(result)
++			return_args = self._unpack_return(ret)
++		except Exception as err:
++			error = err
++
++		callback, callback_args = user_data
++		callback(*callback_args, returned=return_args, error=error)
++
+ 	def __get__(self, instance, owner):
+ 		if instance is None:
+ 			return self
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-transformation-between-D-Bus-errors-and-exce.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-transformation-between-D-Bus-errors-and-exce.patch
new file mode 100644
index 0000000..f5c0390
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-transformation-between-D-Bus-errors-and-exce.patch
@@ -0,0 +1,203 @@
+From 69968dec867053e38de0b91d76ac41d5a5735e36 Mon Sep 17 00:00:00 2001
+From: Vendula Poncova <vponcova@redhat.com>
+Date: Thu, 2 Aug 2018 15:31:56 +0800
+Subject: [PATCH 2/2] Support transformation between D-Bus errors and
+ exceptions.
+
+Exceptions can be registered with decorators, raised in a remote
+method and recreated after return from the remote call.
+
+Upstream-Status: Cherry-pick [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pydbus/error.py        | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ pydbus/proxy_method.py | 18 ++++++++--
+ pydbus/registration.py | 16 ++++++---
+ 3 files changed, 123 insertions(+), 8 deletions(-)
+ create mode 100644 pydbus/error.py
+
+diff --git a/pydbus/error.py b/pydbus/error.py
+new file mode 100644
+index 0000000..aaa3510
+--- /dev/null
++++ b/pydbus/error.py
+@@ -0,0 +1,97 @@
++from gi.repository import GLib, Gio
++
++
++def register_error(name, domain, code):
++	"""Register and map decorated exception class to a DBus error."""
++	def decorated(cls):
++		error_registration.register_error(cls, name, domain, code)
++		return cls
++
++	return decorated
++
++
++def map_error(error_name):
++	"""Map decorated exception class to a DBus error."""
++	def decorated(cls):
++		error_registration.map_error(cls, error_name)
++		return cls
++
++	return decorated
++
++
++def map_by_default(cls):
++	"""Map decorated exception class to all unknown DBus errors."""
++	error_registration.map_by_default(cls)
++	return cls
++
++
++class ErrorRegistration(object):
++	"""Class for mapping exceptions to DBus errors."""
++
++	_default = None
++	_map = dict()
++	_reversed_map = dict()
++
++	def map_by_default(self, exception_cls):
++		"""Set the exception class as a default."""
++		self._default = exception_cls
++
++	def map_error(self, exception_cls, name):
++		"""Map the exception class to a DBus name."""
++		self._map[name] = exception_cls
++		self._reversed_map[exception_cls] = name
++
++	def register_error(self, exception_cls, name, domain, code):
++		"""Map and register the exception class to a DBus name."""
++		self.map_error(exception_cls, name)
++		return Gio.DBusError.register_error(domain, code, name)
++
++	def is_registered_exception(self, obj):
++		"""Is the exception registered?"""
++		return obj.__class__ in self._reversed_map
++
++	def get_dbus_name(self, obj):
++		"""Get the DBus name of the exception."""
++		return self._reversed_map.get(obj.__class__)
++
++	def get_exception_class(self, name):
++		"""Get the exception class mapped to the DBus name."""
++		return self._map.get(name, self._default)
++
++	def transform_message(self, name, message):
++		"""Transform the message of the exception."""
++		prefix = "{}:{}: ".format("GDBus.Error", name)
++
++		if message.startswith(prefix):
++			return message[len(prefix):]
++
++		return message
++
++	def transform_exception(self, e):
++		"""Transform the remote error to the exception."""
++		if not isinstance(e, GLib.Error):
++			return e
++
++		if not Gio.DBusError.is_remote_error(e):
++			return e
++
++		# Get DBus name of the error.
++		name = Gio.DBusError.get_remote_error(e)
++		# Get the exception class.
++		exception_cls = self.get_exception_class(name)
++
++		# Return the original exception.
++		if not exception_cls:
++			return e
++
++		# Return new exception.
++		message = self.transform_message(name, e.message)
++		exception = exception_cls(message)
++		exception.dbus_name = name
++		exception.dbus_domain = e.domain
++		exception.dbus_code = e.code
++		return exception
++
++
++# Default error registration.
++error_registration = ErrorRegistration()
+diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py
+index 4ea4304..e9496f5 100644
+--- a/pydbus/proxy_method.py
++++ b/pydbus/proxy_method.py
+@@ -2,6 +2,7 @@ from gi.repository import GLib
+ from .generic import bound_method
+ from .identifier import filter_identifier
+ from .timeout import timeout_to_glib
++from .error import error_registration
+ 
+ try:
+ 	from inspect import Signature, Parameter
+@@ -87,9 +88,20 @@ class ProxyMethod(object):
+ 			call_args += (self._finish_async_call, (callback, callback_args))
+ 			instance._bus.con.call(*call_args)
+ 			return None
++
+ 		else:
+-			ret = instance._bus.con.call_sync(*call_args)
+-			return self._unpack_return(ret)
++			result = None
++			error = None
++
++			try:
++				result = instance._bus.con.call_sync(*call_args)
++			except Exception as e:
++				error = error_registration.transform_exception(e)
++
++			if error:
++				raise error
++
++			return self._unpack_return(result)
+ 
+ 	def _unpack_return(self, values):
+ 		ret = values.unpack()
+@@ -108,7 +120,7 @@ class ProxyMethod(object):
+ 			ret = source.call_finish(result)
+ 			return_args = self._unpack_return(ret)
+ 		except Exception as err:
+-			error = err
++			error = error_registration.transform_exception(err)
+ 
+ 		callback, callback_args = user_data
+ 		callback(*callback_args, returned=return_args, error=error)
+diff --git a/pydbus/registration.py b/pydbus/registration.py
+index f531539..1d2cbcb 100644
+--- a/pydbus/registration.py
++++ b/pydbus/registration.py
+@@ -5,6 +5,7 @@ from . import generic
+ from .exitable import ExitableWithAliases
+ from functools import partial
+ from .method_call_context import MethodCallContext
++from .error import error_registration
+ import logging
+ 
+ try:
+@@ -91,11 +92,16 @@ class ObjectWrapper(ExitableWithAliases("unwrap")):
+ 			logger = logging.getLogger(__name__)
+ 			logger.exception("Exception while handling %s.%s()", interface_name, method_name)
+ 
+-			#TODO Think of a better way to translate Python exception types to DBus error types.
+-			e_type = type(e).__name__
+-			if not "." in e_type:
+-				e_type = "unknown." + e_type
+-			invocation.return_dbus_error(e_type, str(e))
++			if error_registration.is_registered_exception(e):
++				name = error_registration.get_dbus_name(e)
++				invocation.return_dbus_error(name, str(e))
++			else:
++				logger.info("name is not registered")
++				e_type = type(e).__name__
++				if not "." in e_type:
++					e_type = "unknown." + e_type
++
++				invocation.return_dbus_error(e_type, str(e))
+ 
+ 	def Get(self, interface_name, property_name):
+ 		type = self.readable_properties[interface_name + "." + property_name]
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
new file mode 100644
index 0000000..807e7b2
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Pythonic DBus library"
+HOMEPAGE = "https://pypi.python.org/pypi/pydbus/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a916467b91076e631dd8edb7424769c7"
+
+SRC_URI += "file://0001-Support-asynchronous-calls-58.patch \
+            file://0002-Support-transformation-between-D-Bus-errors-and-exce.patch \
+"
+
+SRC_URI[md5sum] = "c6abd44862322679bd4e907bebc3e0d0"
+SRC_URI[sha256sum] = "4207162eff54223822c185da06c1ba8a34137a9602f3da5a528eedf3f78d0f2c"
+
+inherit pypi setuptools3
+
+S = "${WORKDIR}/pydbus-${PV}"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pygobject \
+                  ${PYTHON_PN}-io \
+                  ${PYTHON_PN}-logging"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.19.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.19.bb
new file mode 100644
index 0000000..ea3c018
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.19.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python expectaton library"
+DESCRIPTION = "Minimal but very flexible implementation of the expect pattern"
+SECTION = "devel/python"
+HOMEPAGE = " https://bitbucket.org/dwt/pyexpect"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://README.md;md5=500b884e9dcd5f677a53cbbee8ace939"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "dc744289858001925c75d21e26f1260f"
+SRC_URI[sha256sum] = "bff4654b113dac6c2231e486e11dcb23281ddc0742a5404467303fe7638829ef"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.1.0.bb
new file mode 100644
index 0000000..c6e95eb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.1.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "A Python interface for the Firmata protocol"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=84ddcef430b7c44caa22b2ff4b37a3df"
+PYPI_PACKAGE = "pyFirmata"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-pyserial \
+"
+
+SRC_URI[md5sum] = "159673cfb56c72ceafc30fe91eedd847"
+SRC_URI[sha256sum] = "cc180d1b30c85a2bbca62c15fef1b871db048cdcfa80959968356d97bd3ff08e"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.1.1.bb
new file mode 100644
index 0000000..c138822
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.1.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "passive checker of Python programs"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=5127315117a8561a1504343d59620647"
+
+SRC_URI[md5sum] = "a0f71a15724e553c46e03ba5ed56703c"
+SRC_URI[sha256sum] = "d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-prettytable \
+    ${PYTHON_PN}-cmd2 \
+    ${PYTHON_PN}-pyparsing"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_1.9.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_1.9.0.bb
new file mode 100644
index 0000000..ee96a07
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_1.9.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Hamcrest framework for matcher objects"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f6df1318c6071dd1707f5e3b6c11f24f"
+
+PYPI_PACKAGE = "PyHamcrest"
+
+SRC_URI[md5sum] = "8b833a3fa30197455df79424f30c8c3f"
+SRC_URI[sha256sum] = "8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-six"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb
new file mode 100644
index 0000000..3022d08
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Pyiface is a package that exposes the network interfaces of the operating system in a easy to use and transparent way"
+SECTION = "devel/python"
+HOMEPAGE = "https://pypi.python.org/pypi/pyiface/"
+LICENSE = "GPLv3+"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fe869ee987a340198fb0d54c55c47f1"
+
+SRC_URI[md5sum] = "b066aa984656742738127c9c75436ab4"
+SRC_URI[sha256sum] = "e231e5735d329c5b2d4fc8854f069fdaa5436d3ef91ed64ee49e41e3f5e8a3f5"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
new file mode 100644
index 0000000..049c3c3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Python pyinotify: Linux filesystem events monitoring"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ab173cade7965b411528464589a08382"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-io \
+    ${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/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_19.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_19.0.0.bb
new file mode 100644
index 0000000..ee2f307
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_19.0.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Pure-Python Java Keystore (JKS) library"
+DESCRIPTION = "PyJKS enables Python projects to load and manipulate\
+ Java KeyStore (JKS) data without a JVM dependency. PyJKS supports JKS,\
+ JCEKS, BKS and UBER (BouncyCastle) keystores."
+HOMEPAGE = "http://github.com/kurtbrose/pyjks"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9694d6cc724caf7f7386be88a4a81958"
+
+SRC_URI[md5sum] = "b6e8f3b91be355d15e3ba99de2cccf9b"
+SRC_URI[sha256sum] = "9ce5b40289bcdffcd6a8e7118b333ba8ba2ec4c9ebc5e324885cc8a69767011a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-javaobj-py3 \
+    ${PYTHON_PN}-pyasn1 \
+    ${PYTHON_PN}-pyasn1-modules \
+    ${PYTHON_PN}-pycryptodome \
+    ${PYTHON_PN}-twofish\
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.7.1.bb
new file mode 100644
index 0000000..d2f7be4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.7.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "JSON Web Token implementation in Python"
+DESCRIPTION = "A Python implementation of JSON Web Token draft 32.\
+ Original implementation was written by https://github.com/progrium"
+HOMEPAGE = "http://github.com/jpadilla/pyjwt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68626705a7b513ca8d5f44a3e200ed0c"
+
+SRC_URI[md5sum] = "a4712f980c008696e13e09504120b2a0"
+SRC_URI[sha256sum] = "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"
+
+PYPI_PACKAGE = "PyJWT"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "${PYTHON_PN}-cryptography"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify/0001-rule.py-fix-missing-comma.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify/0001-rule.py-fix-missing-comma.patch
new file mode 100644
index 0000000..689355e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify/0001-rule.py-fix-missing-comma.patch
@@ -0,0 +1,34 @@
+From f96b76efb810d7d559254d0ec58de628e09f525a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Mart=C3=AD=20Bol=C3=ADvar?= <marti.f.bolivar@gmail.com>
+Date: Mon, 13 Jan 2020 08:42:05 -0800
+Subject: [PATCH] rule.py: fix missing comma
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+A line in the defined_keywords list is missing a comma. Add it.
+
+Signed-off-by: Martí Bolívar <marti.f.bolivar@gmail.com>
+
+Upstream-Status: Backport [https://github.com/Grokzen/pykwalify.git]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pykwalify/rule.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pykwalify/rule.py b/pykwalify/rule.py
+index 7ac2c9e..f044b69 100644
+--- a/pykwalify/rule.py
++++ b/pykwalify/rule.py
+@@ -340,7 +340,7 @@ class Rule(object):
+             ('matching', 'matching'),
+             ('matching_rule', 'matching_rule'),
+             ('name', 'name'),
+-            ('nullable', 'nullable')
++            ('nullable', 'nullable'),
+             ('parent', 'parent'),
+             ('pattern', 'pattern'),
+             ('pattern_regexp', 'pattern_regexp'),
+-- 
+2.18.2
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify_1.7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify_1.7.0.bb
new file mode 100644
index 0000000..9251ecc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pykwalify_1.7.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "YAML/JSON validation library"
+DESCRIPTION = "pykwalify is a schema validator for YAML and JSON"
+HOMEPAGE = "https://pypi.org/project/pykwalify/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a72ea5159364a2cd7f45c6dcbee37872"
+
+SRC_URI[md5sum] = "58357f1d0f77de976e73dbd3660af75b"
+SRC_URI[sha256sum] = "7e8b39c5a3a10bc176682b3bd9a7422c39ca247482df198b402e8015defcceb2"
+
+SRC_URI += "file://0001-rule.py-fix-missing-comma.patch"
+
+PYPI_PACKAGE = "pykwalify"
+
+inherit setuptools3 pypi
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-pyyaml \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
new file mode 100644
index 0000000..7a873a1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
@@ -0,0 +1,38 @@
+SUMMARY="Pylint is a Python source code analyzer"
+HOMEPAGE= "http://www.pylint.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+
+SRC_URI[md5sum] = "2eb5f3cb8fe567eaf5420dd415012202"
+SRC_URI[sha256sum] = "c77311859e0c2d7932095f30d2b1bfdc4b6fe111f534450ba727a52eae330ef2"
+
+inherit pypi setuptools3 python3-dir
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+do_install_append(){
+    rm ${D}${bindir}/pylint
+    cat >> ${D}${bindir}/pylint <<EOF
+#!/usr/bin/env ${PYTHON_PN}
+from pylint import run_pylint
+run_pylint()
+EOF
+    chmod 755 ${D}${bindir}/pylint
+    sed -i -e 's:^#!/usr/bin/python:#!/usr/bin/env\ ${PYTHON_PN}:g' ${D}/${PYTHON_SITEPACKAGES_DIR}/pylint/test/data/ascript
+}
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests+= " \
+    ${PYTHON_SITEPACKAGES_DIR}/pylint/test/ \
+    ${PYTHON_SITEPACKAGES_DIR}/pylint/testutils.py \
+"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-astroid \
+                   ${PYTHON_PN}-isort \
+                   ${PYTHON_PN}-numbers \
+                   ${PYTHON_PN}-shell \
+                   ${PYTHON_PN}-json \
+                   ${PYTHON_PN}-pkgutil \
+                   ${PYTHON_PN}-difflib \
+                   ${PYTHON_PN}-netserver \
+                  "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylyrics_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylyrics_1.1.0.bb
new file mode 100644
index 0000000..207751c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pylyrics_1.1.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Pythonic Implementation of lyrics.wikia.com"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=14;endline=14;md5=95d480cd6f8471abaeae21bd0ed277ba"
+
+SRC_URI[md5sum] = "1f3c997edeba149a8fb2b861cbad89c3"
+SRC_URI[sha256sum] = "c5f36e8ef0ed3b487a9242ce34c19f9684e418a5bbffd5d367dc1d1604b4cd0b"
+
+PYPI_PACKAGE = "PyLyrics"
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi setuptools3
\ No newline at end of file
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.122.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.122.bb
new file mode 100644
index 0000000..bf2da00
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.122.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Python API for MISP"
+HOMEPAGE = "https://github.com/MISP/PyMISP"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
+
+SRC_URI[md5sum] = "ef41185d4c2753dc2c1a9ab937e3614a"
+SRC_URI[sha256sum] = "ecdc362b4bb5dd500a5f0b9e795b35ed75037de64f8dcf39c24d029e7657ad7f"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-jsonschema \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-six \
+"
+
+# Fixes: python3-pymisp requires /bin/bash, but no
+# providers found in RDEPENDS_python3-pymisp? [file-rdep
+RDEPENDS_${PN} += "bash"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.10.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.10.1.bb
new file mode 100644
index 0000000..f69ca53
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.10.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Python driver for MongoDB <http://www.mongodb.org>"
+DESCRIPTION = "\
+The PyMongo distribution contains tools for interacting with MongoDB \
+database from Python. The bson package is an implementation of the BSON \
+format for Python. The pymongo package is a native Python driver for \
+MongoDB. The gridfs package is a gridfs implementation on top of pymongo."
+HOMEPAGE = "http://github.com/mongodb/mongo-python-driver"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI[md5sum] = "e31b9c0190c9eaf1f792d0277b2a8ebe"
+SRC_URI[sha256sum] = "993257f6ca3cde55332af1f62af3e04ca89ce63c08b56a387cdd46136c72f2fa"
+
+inherit pypi setuptools3
+
+PACKAGES =+ "${PYTHON_PN}-bson"
+
+FILES_${PYTHON_PN}-bson = "${PYTHON_SITEPACKAGES_DIR}/bson/*"
+
+RDEPENDS_${PYTHON_PN}-bson += " \
+     ${PYTHON_PN}-datetime \
+     ${PYTHON_PN}-json \
+     ${PYTHON_PN}-netclient \
+     ${PYTHON_PN}-numbers \
+     ${PYTHON_PN}-threading \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-bson \
+    ${PYTHON_PN}-pprint \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.9.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.9.3.bb
new file mode 100644
index 0000000..6a64ccb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.9.3.bb
@@ -0,0 +1,17 @@
+SUMMARY = "A pure-Python MySQL client library"
+DESCRIPTION = " \
+  This package contains a pure-Python MySQL client library, based on PEP 249 \
+  Most public APIs are compatible with mysqlclient and MySQLdb. \
+  "
+SECTION = "devel/python"
+HOMEPAGE = "https://pymysql.readthedocs.io"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=528175c84163bb800d23ad835c7fa0fc"
+
+SRC_URI[md5sum] = "e5d9183cc0a775ac29f9e0365cca6556"
+SRC_URI[sha256sum] = "d8c059dcd81dedb85a9f034d5e22dcb4442c0b201908bede99e306d65ea7c8e7"
+
+PYPI_PACKAGE = "PyMySQL"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-cryptography"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
new file mode 100644
index 0000000..c80a166
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Linux network configuration library for Python"
+DESCRIPTION = "This library contains Python bindings to ioctl calls"
+SECTION = "devel/python"
+HOMEPAGE = "http://github.com/rlisagor/pynetlinux"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=74e1861736ee959824fe7542323c12e9"
+
+SRC_URI[md5sum] = "3336e5d4a478acca4e35bf3125b4f883"
+SRC_URI[sha256sum] = "4ad08298c9f5ba15a11cddc639ba8778cabdfc402b51066d9e0a325e5a5b391c"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.1.0.bb
new file mode 100644
index 0000000..da783ea
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.1.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Simple Python wrapper around the OpenSSL library"
+HOMEPAGE = "https://pyopenssl.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS += "openssl ${PYTHON_PN}-cryptography"
+
+SRC_URI[md5sum] = "d9804fedbd1eb0c7d9243397b1fbf972"
+SRC_URI[sha256sum] = "9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507"
+
+PYPI_PACKAGE = "pyOpenSSL"
+inherit pypi setuptools3
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
+
+RDEPENDS_${PN}_class-target = " \
+    ${PYTHON_PN}-cryptography \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-threading \
+"
+RDEPENDS_${PN}-tests = "${PN}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.6.bb
new file mode 100644
index 0000000..a6ec1cb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.6.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
+
+SRC_URI[md5sum] = "29733ea8cbee0291aad121c69c6e51a1"
+SRC_URI[sha256sum] = "4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.7.0.bb
new file mode 100644
index 0000000..52d109a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.7.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "A cross-platform clipboard module for Python. (only handles plain text for now)"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=a428356ada7737b416ec4b63dc65d581"
+
+SRC_URI[md5sum] = "6bbb8598579cc3ee50554b4c59d0cfae"
+SRC_URI[sha256sum] = "979325468ccf682104d5dcaf753f869868100631301d3e72f47babdea5700d1c"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-ctypes \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.7.1.bb
new file mode 100644
index 0000000..081e904
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.7.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A toolkit to write, run and analyze benchmarks"
+DESCRIPTION = " \
+The Python pyperf module is a toolkit to write, run and analyze benchmarks. \
+Features: \
+    * Simple API to run reliable benchmarks \
+    * Automatically calibrate a benchmark for a time budget. \
+    * Spawn multiple worker processes. \
+    * Compute the mean and standard deviation. \
+    * Detect if a benchmark result seems unstable. \
+    * JSON format to store benchmark results. \
+    * Support multiple units: seconds, bytes and integer. \
+"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=78bc2e6e87c8c61272937b879e6dc2f8"
+
+SRC_URI[md5sum] = "d9e894dc843bb7f0abff109931a29895"
+SRC_URI[sha256sum] = "c37690e810116a83a244dfeec47885e2f0475b4c450313904be3bc2cdaf6d50a"
+
+DEPENDS += "${PYTHON_PN}-six-native"
+
+PYPI_PACKAGE = "pyperf"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-misc"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2/run-ptest
new file mode 100644
index 0000000..ea429ba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2/run-ptest
@@ -0,0 +1,4 @@
+#!/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/SKIPPED/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}}'
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.12.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.12.bb
new file mode 100644
index 0000000..440f899
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.12.bb
@@ -0,0 +1,37 @@
+SUMMARY = "A pure Python netlink and Linux network configuration library"
+LICENSE = "GPLv2 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL.v2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://LICENSE.Apache.v2;md5=34281e312165f843a2b7d1f114fe65ce"
+
+SRC_URI[md5sum] = "4370e9a5875486a1223705ea9b001eff"
+SRC_URI[sha256sum] = "0157801c5496177856c3296b590065e691b041a3adde6fb8ffad2a8d05013ed3"
+
+inherit setuptools3 pypi ptest
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-distutils \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-unixadmin \
+"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+	${PYTHON_PN}-fcntl \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.15.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.15.7.bb
new file mode 100644
index 0000000..53251aa
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.15.7.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Persistent/Immutable/Functional data structures for Python"
+HOMEPAGE = "https://github.com/tobgu/pyrsistent"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE.mit;md5=ca574f2891cf528b3e7a2ee570337e7c"
+
+SRC_URI[md5sum] = "da9486d00ef5b213f40d5cf3c5bca82d"
+SRC_URI[sha256sum] = "cdc7b5e3ed77bed61270a47d35434a30617b9becdf2478af76ad2c6ade307280"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_3.2.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_3.2.3.bb
new file mode 100644
index 0000000..dbd222f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_3.2.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python project template generator with batteries included"
+DESCRIPTION = "PyScaffold package helps to setup a new Python project. \
+After installation, it provides a new command [putup], which could be \
+used to create template Projects."
+
+HOMEPAGE = "https://github.com/pyscaffold/pyscaffold"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "PyScaffold"
+
+SRC_URI[md5sum] = "6769d2a26a9d1f3038944b8fbfe728ff"
+SRC_URI[sha256sum] = "96c3e7f5529df0b5b351e879a141e1e5c9f26211f30d493c23d8c09d9d610a6f"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial/run-ptest
new file mode 100644
index 0000000..e301963
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial/run-ptest
@@ -0,0 +1,4 @@
+#!/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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb
new file mode 100644
index 0000000..d65c9a8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Serial Port Support for Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d476d94926db6e0008a5b3860d1f5c0d"
+
+SRC_URI[md5sum] = "ed6183b15519a0ae96675e9c3330c69b"
+SRC_URI[sha256sum] = "6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627"
+
+inherit pypi setuptools3 ptest
+
+do_install_append() {
+    rm -f ${D}${bindir}/miniterm.py
+    rmdir ${D}${bindir}
+}
+
+PACKAGES =+ "${PN}-java ${PN}-osx ${PN}-win32 ${PN}-tools"
+
+FILES_${PN}-java = " \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/*java* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*java* \
+"
+
+FILES_${PN}-osx = " \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/*osx* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/*osx* \
+"
+
+FILES_${PN}-win32 = " \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/*serialcli* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*serialcli* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/*win32* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*win32* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/miniterm* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/miniterm* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/*windows* \
+    ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/*windows* \
+"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb
new file mode 100644
index 0000000..d0db8a0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "A Python SOCKS client module"
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1d457bcffb9661b45f799d4efee72f16"
+
+SRC_URI[md5sum] = "89b1a6865c61bae67a32417517612ee6"
+SRC_URI[sha256sum] = "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"
+
+PYPI_PACKAGE = "PySocks"
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
new file mode 100644
index 0000000..feb4986
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python implementation of Mustache"
+HOMEPAGE = "https://github.com/defunkt/pystache"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eb4417802c56384aac71b34505528a60"
+
+SRC_URI[md5sum] = "485885e67a0f6411d5252e69b20a35ca"
+SRC_URI[sha256sum] = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-netserver \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb
new file mode 100644
index 0000000..66f026c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python bindings for interacting with systemd over DBus"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI[md5sum] = "f493c3e54457e49fe3c160274b863bac"
+SRC_URI[sha256sum] = "f5dc49d02995ab96335d9e94f9fe036673d89b8cc9907e7a0ac83c06665f2430"
+
+DEPENDS = "systemd"
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+inherit pypi setuptools3 features_check
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.10.0.bb
new file mode 100644
index 0000000..a7e963b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.10.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "pytest-asyncio is an Apache2 licensed library, written in Python, for testing asyncio code with pytest"
+HOMEPAGE = "https://github.com/pytest-dev/pytest-asyncio"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=ae62268d207c73b615fbefddaf91a881"
+
+SRC_URI[md5sum] = "247a7ec32f24a185341327c42a0f85bf"
+SRC_URI[sha256sum] = "9fac5100fd716cbecf6ef89233e8590a4ad61d729d1732e0a96b84182df1daaf"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-pytest-native"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2019.1.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2019.1.8.bb
new file mode 100644
index 0000000..b3aced4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2019.1.8.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This plugin does not provide any helpers to pytest, it does, however, provide a helpers namespace in pytest which enables you to register helper functions in your conftest.py to be used within your tests without having to import them."
+HOMEPAGE = "https://github.com/saltstack/pytest-helpers-namespace"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=cc99508c43d9d14fd51c7fac622ffd23"
+
+SRC_URI[md5sum] = "04ec1d8750f9b154e782a47cf8b30736"
+SRC_URI[sha256sum] = "4eff23a19f92410c0166f6dffbfa8901d3e14a80e97d70cd08428b6d597771ce"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-pytest \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_1.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_1.6.bb
new file mode 100644
index 0000000..8ace29e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_1.6.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "pytest plugin for generating html reports from test results"
+HOMEPAGE = "https://github.com/pytest-dev/pytest-html"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://../pytest-html.LICENSE;md5=5d425c8f3157dbf212db2ec53d9e5132"
+
+# Per README.rst the license statement is fetched from
+# https://raw.githubusercontent.com/davehunt/pytest-html/master/LICENSE
+SRC_URI += "https://raw.githubusercontent.com/davehunt/pytest-html/master/LICENSE;name=license;downloadfilename=pytest-html.LICENSE"
+
+PYPI_PACKAGE = "pytest-html"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "ac956864a9b3392203dacd287ae450f0"
+SRC_URI[sha256sum] = "a359de04273239587bd1a15b29b2266daeaf56b7a13f8224bc4fb3ae0ba72c3f"
+SRC_URI[license.md5sum] = "5d425c8f3157dbf212db2ec53d9e5132"
+SRC_URI[license.sha256sum] = "2bfdca60adf803108d4c7f009000bea76ad00e621e163197881b0eaae91b530e"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pytest"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.8.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.8.0.bb
new file mode 100644
index 0000000..807b0ce
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.8.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "pytest-metadata is a plugin that allowed for accessing pytest metadata"
+HOMEPAGE = "https://github.com/pytest-dev/pytest-metadata"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d425c8f3157dbf212db2ec53d9e5132"
+
+PYPI_PACKAGE = "pytest-metadata"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "95674c2390b58e0138cabac5101d1908"
+SRC_URI[sha256sum] = "2071a59285de40d7541fde1eb9f1ddea1c9db165882df82781367471238b66ba"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pytest"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.2.bb
new file mode 100644
index 0000000..d00cd48
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Invoke py.test as distutils command with dependency resolution"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a33f38bbf47d48c70fe0d40e5f77498e"
+
+SRC_URI[md5sum] = "e5f66b8e8e87f62c59631c35c919d321"
+SRC_URI[sha256sum] = "96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-py ${PYTHON_PN}-setuptools ${PYTHON_PN}-debugger ${PYTHON_PN}-json \
+                  ${PYTHON_PN}-io"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-tempdir_2019.10.12.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-tempdir_2019.10.12.bb
new file mode 100644
index 0000000..7a48fd5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-tempdir_2019.10.12.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Adds support for a predictable and repeatable temporary directory."
+HOMEPAGE = "https://github.com/saltstack/pytest-tempdir"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=9872c3a37cc9baf79a464cd168282be5"
+
+SRC_URI[md5sum] = "79b997d418fb85c2529ab50cd4333689"
+SRC_URI[sha256sum] = "e7d91813a9aa991db87dacdef8cfd3f1657632d731d56d06238c5ffb63ab36d8"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-pytest \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.3.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.3.4.bb
new file mode 100644
index 0000000..a359969
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.3.4.bb
@@ -0,0 +1,13 @@
+SUMMARY = "py.test plugin to abort hanging tests"
+HOMEPAGE = "https://github.com/pytest-dev/pytest-timeout/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d8048cd156eda3df2e7f111b0ae9ceff"
+
+PYPI_PACKAGE = "pytest-timeout"
+
+SRC_URI[md5sum] = "1594762ae77ed7c6c2727aa8b4aa8bfb"
+SRC_URI[sha256sum] = "80faa19cd245a42b87a51699d640c00d937c02b749052bfca6bae8bdbe12c48e"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pytest"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
new file mode 100644
index 0000000..c29fb12
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
@@ -0,0 +1,36 @@
+From ff784f4803ab33f5e3389e40d038d52d1e211843 Mon Sep 17 00:00:00 2001
+From: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
+Date: Wed, 28 Aug 2019 16:12:27 +0900
+Subject: [PATCH] [PATCH] setup.py: remove the setup_requires for
+ setuptools-scm
+
+The setup_requires argument forces the download of the egg file for setuptools-scm
+during the do_compile phase.  This download is incompatible with the typical fetch
+and mirror structure.  The only usage of scm is the generation of the _version.py
+file and in the release tarball it is already correctly created
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+
+Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index adbafb5..75fdd09 100644
+--- a/setup.py
++++ b/setup.py
+@@ -19,7 +19,7 @@ INSTALL_REQUIRES = [
+ def main():
+     setup(
+         use_scm_version={"write_to": "src/_pytest/_version.py"},
+-        setup_requires=["setuptools-scm", "setuptools>=40.0"],
++        setup_requires=["setuptools>=40.0"],
+         package_dir={"": "src"},
+         extras_require={
+             "testing": [
+-- 
+2.17.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.3.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.3.5.bb
new file mode 100644
index 0000000..8dad13a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.3.5.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Simple powerful testing with python"
+HOMEPAGE = "http://pytest.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
+
+SRC_URI[md5sum] = "d5ef453f723be46d93e0795f3be86c88"
+SRC_URI[sha256sum] = "0d5fe9189a148acc3c3eb2ac8e1ac0742cb7618c084f3d228baaec0c254b318d"
+
+SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch "
+
+inherit update-alternatives pypi setuptools3
+
+RDEPENDS_${PN}_class-target += " \
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-doctest \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-pluggy \
+    ${PYTHON_PN}-py \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-atomicwrites \
+    ${PYTHON_PN}-importlib-metadata \
+    ${PYTHON_PN}-pathlib2 \
+    ${PYTHON_PN}-wcwidth \
+    ${PYTHON_PN}-more-itertools \
+    ${PYTHON_PN}-packaging \
+"
+
+ALTERNATIVE_${PN} += "py.test pytest"
+
+NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
+ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
+
+ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
+ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.7110.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.7110.bb
new file mode 100644
index 0000000..be63fed
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.7110.bb
@@ -0,0 +1,9 @@
+SUMMARY = "This module provides ctypes-based bindings for the native libvlc API of the VLC video player."
+HOMEPAGE = "wiki.videolan.org/PythonBinding"
+LICENSE = "LGPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI[md5sum] = "e128abf7115d6513582bd460c0e74485"
+SRC_URI[sha256sum] = "821bca0dbe08fbff97a65e56ff2318ad7d499330876579c39f01f3fb38c7b679"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml_0.1.21.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml_0.1.21.bb
new file mode 100644
index 0000000..1533a89
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytoml_0.1.21.bb
@@ -0,0 +1,30 @@
+SUMMARY = "A TOML-0.4.0 parser/writer for Python"
+HOMEPAGE = "https://pypi.python.org/pypi/pytoml/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cfff423699bdaef24331933ac4f56078"
+
+SRC_URI[md5sum] = "e59dd36a559dd2a876e4c149c69e947b"
+SRC_URI[sha256sum] = "8eecf7c8d0adcff3b375b09fe403407aa9b645c499e5ab8cac670ac4a35f61e7"
+
+inherit pypi setuptools3 ptest
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-stringold \
+    "
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2019.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2019.3.bb
new file mode 100644
index 0000000..c28a014
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2019.3.bb
@@ -0,0 +1,36 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = "http://pythonhosted.org/pytz"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4878a915709225bceab739bdc2a18e8d"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[md5sum] = "c3d84a465fc56a4edd52cca8873ac0df"
+SRC_URI[sha256sum] = "b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-doctest \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/pytz
+	install -d ${D}${PTEST_PATH}/pytz/tests
+	cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
+	cp -f ${S}/README.txt ${D}${PTEST_PATH}/
+
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb
new file mode 100644
index 0000000..49a3628
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A libudev binding"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "cf4d9db7d772622144ca1be6b5d9353b"
+SRC_URI[sha256sum] = "094b7a100150114748aaa3b70663485dd360457a709bfaaafe5a977371033f2b"
+
+inherit pypi setuptools3
+
+do_configure_prepend() {
+    sed -i "/import pyudev/d" ${S}/setup.py
+    sed -i "s/str(pyudev.__version__)/'${PV}'/g" ${S}/setup.py
+}
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-fcntl \
+    libudev \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb
new file mode 100644
index 0000000..44c24f4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb
@@ -0,0 +1,12 @@
+SUMMARY = "PyUSB provides USB access on the Python language"
+HOMEPAGE = "http://pyusb.sourceforge.net/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51691ed11cc2c7ae93e383f60ed49b0f"
+DEPENDS += "libusb1"
+
+SRC_URI[md5sum] = "862b56452c64948c787ad8ef9498590b"
+SRC_URI[sha256sum] = "4e9b72cc4a4205ca64fbf1f3fff39a335512166c151ad103e55c8223ac147362"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.3.1.bb
new file mode 100644
index 0000000..8cf9093
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.3.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python support for YAML"
+DEPENDS += "libyaml ${PYTHON_PN}-cython-native"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7bbd28caa69f81f5cd5f48647236663d"
+
+PYPI_PACKAGE = "PyYAML"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-netclient \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_17.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_17.1.0.bb
new file mode 100644
index 0000000..2369f06
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_17.1.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Pyzmq provides Zero message queue access for the Python language"
+HOMEPAGE = "http://zeromq.org/bindings:python"
+LICENSE = "BSD & LGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=11c65680f637c3df7f58bbc8d133e96e \
+                    file://COPYING.LESSER;md5=12c592fa0bcfff3fb0977b066e9cb69e"
+DEPENDS = "zeromq"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-pyzmq:"
+
+SRC_URI += "file://club-rpath-out.patch"
+SRC_URI[md5sum] = "aecdfc328193fbd81f6dc23228319943"
+SRC_URI[sha256sum] = "2199f753a230e26aec5238b0518b036780708a4c887d4944519681a920b9dee4"
+
+inherit pypi pkgconfig setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-multiprocessing"
+
+FILES_${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/zmq/backend/cython/.debug"
+
+do_compile_prepend() {
+    echo [global] > ${S}/setup.cfg
+    echo zmq_prefix = ${STAGING_DIR_HOST} >> ${S}/setup.cfg
+    echo have_sys_un_h = True >> ${S}/setup.cfg
+    echo skip_check_zmq = True >> ${S}/setup.cfg
+    echo libzmq_extension = False >> ${S}/setup.cfg
+    echo no_libzmq_extension = True >> ${S}/setup.cfg
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-raven_6.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-raven_6.10.0.bb
new file mode 100644
index 0000000..b0d19c3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-raven_6.10.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Raven is the legacy Python client for Sentry (getsentry.com)"
+DESCRIPTION = "\
+Raven is the official legacy Python client for Sentry, officially \
+supports Python 2.6–2.7 & 3.3–3.7, and runs on PyPy and Google App Engine."
+HOMEPAGE = "https://github.com/getsentry/raven-python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b9a4414e08f0571d55184531cefc131b"
+
+SRC_URI[md5sum] = "3676f31dadfa61526444dd0245c78a38"
+SRC_URI[sha256sum] = "3fa6de6efa2493a7c827472e984ce9b020797d0da16f1db67197bcc23c8fae54"
+
+PYPI_PACKAGE = "raven"
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rdflib_4.2.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rdflib_4.2.2.bb
new file mode 100644
index 0000000..f7e7f63
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rdflib_4.2.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "RDFLib is a pure Python package for working with RDF"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68c1a3bb687bd63b8e5552f3ea249840"
+
+SRC_URI[md5sum] = "534fe35b13c5857d53fa1ac5a41eca67"
+SRC_URI[sha256sum] = "da1df14552555c5c7715d8ce71c08f404c988c58a1ecd38552d0da4fc261280d"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-isodate \
+    ${PYTHON_PN}-pyparsing \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb
new file mode 100644
index 0000000..7a9cc3f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python client for Redis key-value store"
+DESCRIPTION = "The Python interface to the Redis key-value store."
+HOMEPAGE = "http://github.com/andymccurdy/redis-py"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
+
+SRC_URI[md5sum] = "048348d8cfe0b5d0bba2f4d835005c3b"
+SRC_URI[sha256sum] = "a22ca993cea2962dbb588f9f30d0015ac4afcc45bee27d3978c0dbe9e97c6c0f"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-cryptography \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2020.1.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2020.1.8.bb
new file mode 100644
index 0000000..6bdc039
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2020.1.8.bb
@@ -0,0 +1,12 @@
+SUMMARY = ""
+HOMEPAGE = "http://pythonhosted.org/regex"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=3d9edb84b293ab5a9ed5bcaf1b769ab6"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "73abc3d7e902e94b4281fd2652f5a94f"
+SRC_URI[sha256sum] = "d0f424328f9822b0323b3b6f2e4b9c90960b24743d220763c7f07071e0778351"
+
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.3.bb
new file mode 100644
index 0000000..0407779
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "File transport adapter for Requests"
+HOMEPAGE = "http://github.com/dashea/requests-file"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9cc728d6087e43796227b0a31422de6b"
+
+SRC_URI[md5sum] = "470711c9b7e0de1057f7b72a58b7ab51"
+SRC_URI[sha256sum] = "8f04aa6201bacda0567e7ac7f677f1499b0fc76b22140c54bc06edf1ba92e2fa"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    python3-requests \
+"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb
new file mode 100644
index 0000000..3f99ed6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "FTP Transport Adapter for Requests"
+HOMEPAGE = "http://github.com/Lukasa/requests-ftp"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6683a23c9968b97709441dc884d46df6"
+
+SRC_URI[md5sum] = "1a52ad1219e696b5abd5449d1ccc0294"
+SRC_URI[sha256sum] = "7504ceb5cba8a5c0135ed738596820a78c5f2be92d79b29f96ba99b183d8057a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    python3-requests \
+"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-futures_0.9.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-futures_0.9.5.bb
new file mode 100644
index 0000000..b94929d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-futures_0.9.5.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Small add-on for the python requests http library. Makes use of python 3.2’s concurrent.futures or the backport for prior versions of python."
+HOMEPAGE = "https://github.com/ross/requests-futures"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1e50798d0afe0e1f87594c6619a2fa5"
+
+SRC_URI[md5sum] = "e20dc6f063c70888a7f8225e349b6682"
+SRC_URI[sha256sum] = "33aa8a3b7892850701707d7e094b1e1ce7c4f7a36ff2a1dcc2da4e01a1a00f7e"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    python3-requests \
+"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.0.bb
new file mode 100644
index 0000000..fd48cd3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.0.bb
@@ -0,0 +1,9 @@
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=22d117a849df10d047ed9b792838e863"
+
+SRC_URI[md5sum] = "1ebcd55f1b1b9281940b4bc33010e2ba"
+SRC_URI[sha256sum] = "b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-requests"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.23.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.23.0.bb
new file mode 100644
index 0000000..9f3fb7d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.23.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Python HTTP for Humans."
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=19b6be66ed463d93fa88c29f7860bcd7"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-requests:"
+
+SRC_URI[md5sum] = "abfdc28db1065bbd0bc32592ac9d27a6"
+SRC_URI[sha256sum] = "b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-ndg-httpsclient \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-pyasn1 \
+    ${PYTHON_PN}-pyopenssl \
+    ${PYTHON_PN}-pysocks \
+    ${PYTHON_PN}-urllib3 \
+    ${PYTHON_PN}-chardet \
+    ${PYTHON_PN}-idna \
+"
+
+CVE_PRODUCT = "requests"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3339-validator_0.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3339-validator_0.1.1.bb
new file mode 100644
index 0000000..1f5d91d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3339-validator_0.1.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "A pure python RFC3339 validator"
+HOMEPAGE = "https://github.com/naimetti/rfc3339-validator"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-rfc3339-validator:"
+
+SRC_URI[md5sum] = "9d8899041d83f98180bddd8b62ee7e99"
+SRC_URI[sha256sum] = "20a600d01fbb1f793cbb6f4ec4ebb2104f4c9e80d74d5f78350b63ecc6cccd08"
+
+PYPI_PACKAGE = "rfc3339_validator"
+
+inherit pypi setuptools3
+
+SRC_URI_append = " \
+    file://0001-setup.py-move-pytest-runner-to-test_requirements.patch \
+"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
new file mode 100644
index 0000000..ed668fb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Pure python rfc3986 validator"
+HOMEPAGE = "https://github.com/naimetti/rfc3986-validator"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-rfc3986-validator:"
+
+SRC_URI[md5sum] = "47f7657b790aaf6011a1ab3d86c6be95"
+SRC_URI[sha256sum] = "3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"
+
+PYPI_PACKAGE = "rfc3986_validator"
+
+inherit pypi setuptools3
+
+SRC_URI_append = " \
+    file://0001-setup.py-move-pytest-runner-to-test_requirements.patch \
+"
+
+RDEPENDS_${PN} += "\
+    python3-core \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.8.bb
new file mode 100644
index 0000000..80e2aa5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.8.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=9;md5=2b723edf67b2f3088bc5e339b1ceda2d"
+
+SRC_URI[md5sum] = "b6c4028acdc788a9ba697e1c1d6b896c"
+SRC_URI[sha256sum] = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary/e31d5fdf2ea00ac6349e64580a20816783064dd4.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary/e31d5fdf2ea00ac6349e64580a20816783064dd4.patch
new file mode 100644
index 0000000..21e97fd
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary/e31d5fdf2ea00ac6349e64580a20816783064dd4.patch
@@ -0,0 +1,45 @@
+From e31d5fdf2ea00ac6349e64580a20816783064dd4 Mon Sep 17 00:00:00 2001
+From: Hideki Takeoka <hideki.takeoka@smartfrog.com>
+Date: Sun, 25 Aug 2019 19:25:00 +0200
+Subject: [PATCH] Update setup.py for python3.7+ support
+
+---
+ setup.py                     | 9 +++++----
+ src/SerialLibrary/version.py | 3 +++
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 4c34705..70bb1af 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,6 +1,5 @@
+ #!/usr/bin/env python
+ 
+-from imp import load_source
+ from os.path import abspath, dirname, join
+ from sys import platform
+ 
+@@ -18,9 +17,11 @@
+ 
+ 
+ CURDIR = dirname(abspath(__file__))
+-VERSION = load_source(
+-    'version', 'version',
+-    open(join(CURDIR, 'src', 'SerialLibrary', 'version.py'))).VERSION
++
++with open(join(CURDIR, 'src', 'SerialLibrary', 'version.py')) as f:
++    exec(f.read())
++    VERSION = get_version()
++
+ README = open(join(CURDIR, 'README.rst')).read()
+ CLASSIFIERS = '\n'.join(
+     map(' :: '.join, [
+diff --git a/src/SerialLibrary/version.py b/src/SerialLibrary/version.py
+index 6ce65c4..19831bc 100644
+--- a/src/SerialLibrary/version.py
++++ b/src/SerialLibrary/version.py
+@@ -1 +1,4 @@
+ VERSION = (0, 3, 1)
++
++def get_version():
++    return VERSION;
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary_0.3.1.bb
new file mode 100644
index 0000000..b6de42f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework-seriallibrary_0.3.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Robot Framework test library for serial connection"
+HOMEPAGE = "https://github.com/whosaysni/robotframework-seriallibrary"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
+
+SRC_URI[md5sum] = "b7c9565d54c30df7cd3f3c0e29adffa3"
+SRC_URI[sha256sum] = "256ad60fc0b7df4be44d82c302f5ed8fad4935cda99e4b45942e3c88179d1e19"
+
+PYPI_PACKAGE = "robotframework-seriallibrary"
+
+inherit pypi setuptools3
+
+SRC_URI += "file://e31d5fdf2ea00ac6349e64580a20816783064dd4.patch"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-pyserial \
+    ${PYTHON_PN}-robotframework \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.4.bb
new file mode 100644
index 0000000..0628f92
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.4.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A Python generic test automation framework"
+DESCRIPTION = "Generic open source test atomation framework for acceptance\
+testing and acceptance test-driven development (ATDD). It has easy-to-use\
+tabular test data syntax and it utilizes the keyword-driven testing approach.\
+Its testing capabilities can be extended by test libraries implemented either\
+with Python or Java, and users can create new higher-level keywords from\
+existing ones using the same syntax that is used for creating test cases."
+HOMEPAGE = "http://robotframework.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "ee753415645ff4831ff0d366a0467fe7"
+SRC_URI[sha256sum] = "ab94257cbd848dfca7148e092d233a12853cc7e840ce8231af9cbb5e7f51aa47"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-xml \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-docutils \
+    ${PYTHON_PN}-ctypes \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.5.bb
new file mode 100644
index 0000000..ba09564
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.5.bb
@@ -0,0 +1,16 @@
+SUMMARY = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order."
+AUTHOR = "Anthon van der Neut"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=caf8bd842440b537c044e131785a4666"
+
+PYPI_PACKAGE = "ruamel.yaml"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "7d5a5b0a7621a1247b081cc8e4978354"
+SRC_URI[sha256sum] = "412a6f5cfdc0525dee6a27c08f5415c7fd832a7afcb7a0ed7319628aed23d408"
+
+do_install_prepend() {
+    export RUAMEL_NO_PIP_INSTALL_CHECK=1
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.25.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.25.bb
new file mode 100644
index 0000000..f785a2f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.25.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Packet crafting/sending/sniffing, PCAP processing tool,\
+based on scapy with python3 compatibility"
+SECTION = "devel/python"
+HOMEPAGE = "https://github.com/phaethon/scapy"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=a4282d4d80227fa599a99e77fdd95e71"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "scapy-python3"
+
+SRC_URI[md5sum] = "c9003d39def73c028cb8c71bcbb42629"
+SRC_URI[sha256sum] = "2ae1b3bd9759844e830a6cc3ba11c3f25b08433a8ee3e7eddc08224905e5ef2b"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
new file mode 100644
index 0000000..d535e43
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
@@ -0,0 +1,26 @@
+From d8db473ce9346cd6254c90e13ac45b3bbde494c4 Mon Sep 17 00:00:00 2001
+From: Derek Straka <derek@asterius.io>
+Date: Sun, 11 Mar 2018 19:55:38 -0400
+Subject: [PATCH] py-scrypt: remove the hard coded include paths
+
+Upstream-Status: Pending
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index e36adc4..2ebfbf1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -24,7 +24,6 @@ if sys.platform.startswith('linux'):
+                      ('HAVE_SYS_SYSINFO_H', '1'),
+                      ('_FILE_OFFSET_BITS', '64')]
+     libraries = ['crypto', 'rt']
+-    includes = ['/usr/local/include', '/usr/include']
+     CFLAGS.append('-O2')
+ elif sys.platform.startswith('win32'):
+     define_macros = [('inline', '__inline')]
+-- 
+2.7.4
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb
new file mode 100644
index 0000000..7588fc5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Bindings for the scrypt key derivation function library"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=168ff75417f75a83e63c8875292d44dc"
+HOMEPAGE="https://bitbucket.org/mhallin/py-scrypt/overview"
+
+SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
+
+SRC_URI[md5sum] = "ae8e3263aa31b040c1f9c7f1e1843a56"
+SRC_URI[sha256sum] = "f8239b2d47fa1d40bc27efd231dc7083695d10c1c2ac51a99380360741e0362d"
+
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
new file mode 100644
index 0000000..221a8c8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
@@ -0,0 +1,18 @@
+HOMEPAGE = "https://github.com/bb4242/sdnotify"
+SUMMARY = "A pure Python implementation of systemd's service notification protocol (sd_notify)"
+
+DESCRIPTION = "\
+  sdnotify is a pure Python implementation of the systemd sd_notify protocol. \
+  This protocol can be used to inform systemd about service start-up completion, \
+  watchdog events, and other service status changes. \
+  Thus, this package can be used to write system services in Python that play nicely with systemd. \
+  "
+
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cc572ccc4b18a4b7d13be5d01bc8213e"
+
+SRC_URI[md5sum] = "749ddca1c70be1697fecc443fb1fdb16"
+SRC_URI[sha256sum] = "73977fc746b36cc41184dd43c3fe81323e7b8b06c2bb0826c4f59a20c56bb9f1"
+
+inherit setuptools3 pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-semver_2.8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-semver_2.8.1.bb
new file mode 100644
index 0000000..a469b23
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-semver_2.8.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python module for Semantic Versioning"
+HOMEPAGE = "https://github.com/k-bx/python-semver"
+BUGTRACKER = "https://github.com/k-bx/python-semver/issues"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+SRC_URI[md5sum] = "dc579ba9d0bb2137bad5324d4bdb7e40"
+SRC_URI[sha256sum] = "5b09010a66d9a3837211bb7ae5a20d10ba88f8cb49e92cb139a69ef90d5060d8"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.14.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.14.0.bb
new file mode 100644
index 0000000..894e1f9
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.14.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "The new Python SDK for Sentry.io"
+DESCRIPTION = "This is the next line of the Python SDK \
+for Sentry, intended to replace the raven package on PyPI."
+HOMEPAGE = "https://github.com/getsentry/sentry-python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0c79f8d3c91fc847350efd28bfe0a341"
+
+SRC_URI[md5sum] = "2d5cc43c8a178134b739c77439d1f26b"
+SRC_URI[sha256sum] = "8e2d38dc58dc992280487e553ec3d97a424e4d179f4fad802ef3b08f64ccf4d8"
+
+PYPI_PACKAGE = "sentry-sdk"
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent/run-ptest
@@ -0,0 +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/SKIPPED/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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.28.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.28.bb
new file mode 100644
index 0000000..af2d4aa
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.28.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Serialization based on ast.literal_eval"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=5cd70632b6cdb96df9ddaf6a4ce619e6"
+
+SRC_URI[md5sum] = "15ef8b67c76a6d19bac9c16731a1e62a"
+SRC_URI[sha256sum] = "f306336ca09aa38e526f3b03cab58eb7e45af09981267233167bcf3bfd6436ab"
+
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-pytz \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+"    
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_3.3.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_3.3.3.bb
new file mode 100644
index 0000000..a1fc383
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_3.3.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "the blessed package to manage your versions by scm tags"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "50b2199082fe808d032ec1710c9d7415"
+SRC_URI[sha256sum] = "bd25e1fb5e4d603dcf490f1fde40fb4c595b357795674c3e5cb7f6217ab39ea5"
+
+PYPI_PACKAGE = "setuptools_scm"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-py \
+    ${PYTHON_PN}-setuptools \
+"
+RDEPENDS_${PN}_class-native = "\
+    ${PYTHON_PN}-setuptools-native \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.12.14.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.12.14.bb
new file mode 100644
index 0000000..b785873
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.12.14.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Python subprocess replacement"
+HOMEPAGE = "https://github.com/amoffat/sh"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5317094292296f03405f59ae5f6544b6"
+
+SRC_URI[md5sum] = "a8351aef25d25f707c17e0a7a6280251"
+SRC_URI[sha256sum] = "b52bf5833ed01c7b5c5fb73a7f71b3d98d48e9b9b8764236237bdc7ecae850fc"
+
+PYPI_PACKAGE = "sh"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-resource \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-terminal \
+    ${PYTHON_PN}-tests \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unixadmin \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sijax_0.3.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sijax_0.3.2.bb
new file mode 100644
index 0000000..9a28fc5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sijax_0.3.2.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "An easy to use AJAX library for Python based on jQuery.ajax"
+HOMEPAGE = "https://github.com/spantaleev/sijax-python"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=16e213d75641a392478df50cf0841903"
+
+SRC_URI[sha256sum] = "11b062f4a8b2aad95c87e7c09e5daf5a6b0d0f08abf9efe5f91a0075c6be7c0d"
+
+PYPI_PACKAGE = "Sijax"
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb
new file mode 100644
index 0000000..1cacf9a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A simple, safe single expression evaluator library"
+HOMEPAGE = "https://pypi.org/project/simpleeval/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=dc9277482effe59b734b004cbcc1fee7"
+
+SRC_URI[md5sum] = "f175fc12d408487ca26fa3905e0a6691"
+SRC_URI[sha256sum] = "692055488c2864637f6c2edb5fa48175978a2a07318009e7cf03c9790ca17bea"
+
+inherit pypi setuptools3 ptest
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/test_simpleeval.py ${D}${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.17.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.17.0.bb
new file mode 100644
index 0000000..b76ae52
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.17.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/simplejson"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c6338d7abd321c0b50a2a547e441c52e"
+
+SRC_URI[md5sum] = "8a5ed75c367b90fedc3d685742e2a1c7"
+SRC_URI[sha256sum] = "2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+"
+
+PACKAGES =+ "${PN}-tests"
+RDEPENDS_${PN}-tests = "${PN} ${PYTHON_PN}-unittest"
+FILES_${PN}-tests+= " \
+    ${PYTHON_SITEPACKAGES_DIR}/simplejson/tests \
+    ${PYTHON_SITEPACKAGES_DIR}/simplejson/tool.py* \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
new file mode 100644
index 0000000..23099f3
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Convenience functions for dbus services in Python 2.x"
+HOMEPAGE = "https://github.com/nphilipp/python-slip"
+DESCRIPTION = "\
+The Simple Library for Python 2.x packages contain miscellaneous code for \
+convenience, extension and workaround purposes. \
+\
+This package provides slip.dbus.service.Object, which is a dbus.service.Object \
+derivative that ends itself after a certain time without being used and/or if \
+there are no clients anymore on the message bus, as well as convenience \
+functions and decorators for integrating a dbus service with PolicyKit."
+
+SECTION = "devel/python"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
+SRCNAME = "python-slip"
+
+SRC_URI = "https://github.com/nphilipp/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "28ae5f93853466c44ec96706ba2a1eb4"
+SRC_URI[sha256sum] = "c726c086f0dd93a0ac7a0176f383a12af91b6657b78a301e3f5b25d9f8d4d10b"
+
+do_compile_prepend() {
+    sed -e 's/@VERSION@/${PV}/g' ${S}/setup.py.in > ${S}/setup.py
+}
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-six \
+"
+# http://errors.yoctoproject.org/Errors/Details/184713/
+# python-native/python: can't open file 'setup.py': [Errno 2] No such file or directory
+CLEANBROKEN = "1"
+
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus2_0.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus2_0.3.0.bb
new file mode 100644
index 0000000..7a61927
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus2_0.3.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Drop-in replacement for smbus-cffi/smbus-python in pure Python"
+DESCRIPTION = "smbus2 is a drop-in replacement for smbus-cffi/smbus-python in pure Python"
+HOMEPAGE = "https://github.com/kplindegaard/smbus2"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "d5ed5acc889b4770a84cc932853ed20a"
+SRC_URI[sha256sum] = "210e66eebe4d0b1fe836b3ec2751841942e1c4918c0b429b20a0e20a222228b4"
+
+CLEANBROKEN = "1"
+
+PYPI_PACKAGE = "smbus2"
+
+RDEPENDS_${PN} += "\
+        ${PYTHON_PN}-ctypes \
+        ${PYTHON_PN}-fcntl \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.1.bb
new file mode 100644
index 0000000..1be7739
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Set of i2c tools for linux - Python module"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://smbusmodule.c;beginline=1;endline=18;md5=46e424fb045901ab25e0f92c28c80055"
+PR = "r1"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/i2c-tools-${PV}.tar.gz "
+SRC_URI[md5sum] = "3536237a6b51fb10caacdc3b8a496237"
+SRC_URI[sha256sum] = "ef8f77afc70e7dbfd1171bfeae87a8a7f10074829370ce8d9ccd585a014e0073"
+
+DEPENDS += "i2c-tools"
+
+S = "${WORKDIR}/i2c-tools-${PV}/py-smbus/"
+inherit distutils3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_4.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_4.5.1.bb
new file mode 100644
index 0000000..54ecbba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_4.5.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Socket.IO server"
+HOMEPAGE = "https://github.com/miguelgrinberg/python-socketio/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "python-socketio"
+
+SRC_URI[md5sum] = "3dbd0a2ebcf34632f67327b665cbb951"
+SRC_URI[sha256sum] = "149b98c33f8c3d09273fb4ebeb83781e4dc9411b56b27d9f058bec1bd1ed74b7"
+
+PACKAGECONFIG ?= "asyncio_client client"
+PACKAGECONFIG[asyncio_client] = ",,,${PYTHON_PN}-aiohttp ${PYTHON_PN}-websockets"
+PACKAGECONFIG[client] = ",,,${PYTHON_PN}-requests ${PYTHON_PN}-websocket-client"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-engineio \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-attrs \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb
new file mode 100644
index 0000000..df69e00
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb
@@ -0,0 +1,12 @@
+SUMMARY = "CSS selector library for python-beautifulsoup4"
+HOMEPAGE = "https://github.com/facelessuser/soupsieve"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=5a6fd3b0c24fc5a041a3d1bbb22c81b5"
+
+SRC_URI[md5sum] = "43d8ea20c58494446aa65ba5cc6320fe"
+SRC_URI[sha256sum] = "605f89ad5fdbfefe30cdc293303665eff2d188865d4dbe4eb510bba1edfbfce3"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb
new file mode 100644
index 0000000..5948dc8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Media asset management for Python, with glue code for various frameworks"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b810770075a29bf44b96607440e7c801"
+
+SRC_URI[md5sum] = "e8d5dbe36e53d5a35cff227e795e8bbf"
+SRC_URI[sha256sum] = "59fea336d0eed38c1f0bf3181ee1222d0ef45f3a9dd34ebe65e6bfffdd6a65a9"
+
+PYPI_PACKAGE = "speaklater"
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speedtest-cli_2.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speedtest-cli_2.1.2.bb
new file mode 100644
index 0000000..a901bba
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-speedtest-cli_2.1.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Command line interface for testing internet bandwidth using speedtest.net"
+HOMEPAGE = "https://github.com/sivel/speedtest-cli"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "543d38f8939e1716641cc7c00169ca03"
+SRC_URI[sha256sum] = "cf1d386222f94c324e3125ba9a0d187e46d4a13dca08c023bdb9a23096be2e54"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "${PYTHON_PN}-misc"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb
new file mode 100644
index 0000000..6567959
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python bindings for Linux SPI access through spidev"
+DESCRIPTION = "This project contains a python module for interfacing with SPI\
+devices from user space via the spidev linux kernel driver.\
+This is a modified version of the code originally found\
+[here](http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/py-spi)\
+All code is GPLv2 licensed unless explicitly stated otherwise."
+HOMEPAGE = "http://github.com/doceme/py-spidev"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=54bdb9022ebb75ab68399cdaab97da60"
+SRCNAME = "spidev"
+
+SRC_URI[md5sum] = "f601676f1bb48b9aa3b3897f95216365"
+SRC_URI[sha256sum] = "09d2b5122f0dd79910713a11f9a0020f71537224bf829916def4fffc0ea59456"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.4.bb
new file mode 100644
index 0000000..334d658
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python bindings for Linux SPI access through spidev"
+DESCRIPTION = "This project contains a python module for interfacing with SPI\
+devices from user space via the spidev linux kernel driver.\
+This is a modified version of the code originally found\
+[here](http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/py-spi)\
+All code is GPLv2 licensed unless explicitly stated otherwise."
+HOMEPAGE = "http://github.com/doceme/py-spidev"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+SRCNAME = "spidev"
+
+SRC_URI[md5sum] = "bbab6352449f1d572cc9eefeafc58bd1"
+SRC_URI[sha256sum] = "4314e52f573d95233c907f307558893313a8a606e197e77bb711526b0e179e80"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.3.17.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.3.17.bb
new file mode 100644
index 0000000..b9c58e5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.3.17.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
+application developers the full power and flexibility of SQL"
+HOMEPAGE = "http://www.sqlalchemy.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c19467890539ff718c00a019c9c7a7b2"
+
+SRC_URI[md5sum] = "478214152b9293bf5652815d7312c890"
+SRC_URI[sha256sum] = "156a27548ba4e1fed944ff9fcdc150633e61d350d673ae7baaf6c25c04ac1f71"
+
+PYPI_PACKAGE = "SQLAlchemy"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-threading \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/0001-sqlparse-change-shebang-to-python3.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/0001-sqlparse-change-shebang-to-python3.patch
new file mode 100644
index 0000000..ad6c50f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/0001-sqlparse-change-shebang-to-python3.patch
@@ -0,0 +1,51 @@
+From 10c9d3341d64d697f678a64ae707f6bda21565bb Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 9 Mar 2020 13:10:37 +0800
+Subject: [PATCH] sqlparse: change shebang to python3
+
+Upstream-Status: Pending
+
+Don't send upstream since upstream still support python2,
+we can only make this change after python2 is offcially
+dropped.
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ setup.py             | 2 +-
+ sqlparse/__main__.py | 2 +-
+ sqlparse/cli.py      | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 345d0ce..ce3abc3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ #
+ # Copyright (C) 2009-2018 the sqlparse authors and contributors
+diff --git a/sqlparse/__main__.py b/sqlparse/__main__.py
+index 867d75d..dd0c074 100644
+--- a/sqlparse/__main__.py
++++ b/sqlparse/__main__.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ #
+ # Copyright (C) 2009-2018 the sqlparse authors and contributors
+diff --git a/sqlparse/cli.py b/sqlparse/cli.py
+index 25555a5..8bf050a 100755
+--- a/sqlparse/cli.py
++++ b/sqlparse/cli.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ #
+ # Copyright (C) 2009-2018 the sqlparse authors and contributors
+-- 
+2.7.4
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse_0.3.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse_0.3.1.bb
new file mode 100644
index 0000000..1aef28b
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlparse_0.3.1.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Non-validating SQL parser module"
+HOMEPAGE = "http://pypi.python.org/pypi/sqlparse"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2b136f573f5386001ea3b7b9016222fc"
+
+SRC_URI += "file://0001-sqlparse-change-shebang-to-python3.patch \
+            file://run-ptest \
+	    "
+
+SRC_URI[md5sum] = "423047887a3590b04dd18f8caf843a2f"
+SRC_URI[sha256sum] = "e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548"
+
+export BUILD_SYS
+export HOST_SYS
+
+inherit pypi ptest setuptools3
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-unixadmin \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_1.31.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_1.31.0.bb
new file mode 100644
index 0000000..b985ca5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_1.31.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Manage dynamic plugins for Python applications"
+HOMEPAGE = "https://github.com/dreamhost/stevedore"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "42fa2bf0251c96b543765c5ce13f37c9"
+SRC_URI[sha256sum] = "e0739f9739a681c7a1fda76a102b65295e96a144ccdb552f2ae03c5f0abe8a14"
+
+DEPENDS += "${PYTHON_PN}-pbr-native"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pbr ${PYTHON_PN}-six"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
new file mode 100644
index 0000000..52ae9eb
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Strict, simple, lightweight RFC3339 function.s"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SRC_URI[md5sum] = "4d9b635b4df885bc37bc1189d66c9abc"
+SRC_URI[sha256sum] = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisor.service b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisor.service
new file mode 100644
index 0000000..e9d3f70
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisor.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Supervisor process control system for UNIX
+Documentation=http://supervisord.org
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
+ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
+ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
+KillMode=process
+Restart=on-failure
+RestartSec=50s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisord.conf b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisord.conf
new file mode 100644
index 0000000..3fb9b49
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor/supervisord.conf
@@ -0,0 +1,31 @@
+; supervisor config file
+
+[unix_http_server]
+file=/var/run/supervisor.sock   ; (the path to the socket file)
+chmod=0700                       ; sockef file mode (default 0700)
+
+[supervisord]
+logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
+pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
+childlogdir=/var/log/            ; ('AUTO' child log dir, default $TEMP)
+
+; the below section must remain in the config file for RPC
+; (supervisorctl/web interface) to work, additional interfaces may be
+; added by defining them in separate rpcinterface: sections
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
+
+; The [include] section can just contain the "files" setting.  This
+; setting can list multiple files (separated by whitespace or
+; newlines).  It can also contain wildcards.  The filenames are
+; interpreted as relative to this file.  Included files *cannot*
+; include files themselves.
+
+[include]
+files = /etc/supervisor/conf.d/*.conf
+
+;[inet_http_server]
+;port=127.0.0.1:9001
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.1.0.bb
new file mode 100644
index 0000000..56ab27e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-supervisor_4.1.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Supervisor: A Process Control System"
+DESCRIPTION = "\
+Supervisor is a client/server system that allows its users \
+to monitorand control a number of processes on UNIX-like \
+operating systems."
+HOMEPAGE = "https://github.com/Supervisor/supervisor"
+LICENSE = "BSD-4-Clause"
+LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=5b4e3a2172bba4c47cded5885e7e507e"
+
+SRC_URI[md5sum] = "ecea94eedc70ba5127fdeb0665bcca0d"
+SRC_URI[sha256sum] = "2dc86fe0476e945e61483d614ceb2cf4f93b95282eb243bdf792621994360383"
+
+PYPI_PACKAGE = "supervisor"
+inherit pypi systemd setuptools3
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-meld3 \
+"
+
+SRC_URI += "file://supervisord.conf \
+	    file://supervisor.service \
+	"
+SYSTEMD_SERVICE_${PN} = "supervisor.service"
+
+do_install_append() {
+	install -d ${D}${sysconfdir}/supervisor
+	install -d ${D}${systemd_system_unitdir}
+
+	install -m 0644 ${WORKDIR}/supervisord.conf ${D}${sysconfdir}/supervisor
+	install -m 0644 ${WORKDIR}/supervisor.service ${D}${systemd_system_unitdir}
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.5.1.bb
new file mode 100644
index 0000000..c0c382a
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.5.1.bb
@@ -0,0 +1,16 @@
+# This recipe is adapted from one in meta-jupyter:
+# https://github.com/Xilinx/meta-jupyter/blob/master/recipes-python/python3-sympy_1.1.bb
+
+SUMMARY = "Computer algebra system (CAS) in Python"
+HOMEPAGE = "https://pypi.org/project/sympy/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=611b41534dbf5aa01d7c827bf667ef66"
+
+SRC_URI[md5sum] = "b11b310c3e1642bf66e51038cb3c0021"
+SRC_URI[sha256sum] = "d77901d748287d15281f5ffe5b0fef62dd38f357c2b827c44ff07f35695f4e7e"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-mpmath"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
new file mode 100644
index 0000000..78ec431
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
@@ -0,0 +1,3 @@
+require python-systemd.inc
+RDEPENDS_${PN} += "python3-syslog"
+inherit setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb
new file mode 100644
index 0000000..723f1db
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb
@@ -0,0 +1,11 @@
+SUMMARY = "An enhanced version of the tty module"
+SECTION = "devel/python"
+LICENSE = "Python-2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d90e2d280a4836c607520383d1639be1"
+
+SRC_URI[md5sum] = "ab0c1bce381b1109fe4390c56aa06237"
+SRC_URI[sha256sum] = "3dcc8c212e04700784e5c1c5b601916ba0549ae6025b35b64fd62144899e7180"
+
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb
new file mode 100644
index 0000000..17df7f98
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "ANSII Color formatting for output in terminal"
+HOMEPAGE = "https://pypi.python.org/pypi/termcolor"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=809e8749b63567978acfbd81d9f6a27d"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "043e89644f8909d462fbbfa511c768df"
+SRC_URI[sha256sum] = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb
new file mode 100644
index 0000000..14943a4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Generator is a helper for generating test methods for nose while still using unittest."
+DESCRIPTION = "Python package with modified subclasses of all stdlib XML \
+parsers that prevent any potentially malicious operation."
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=041a2bff595d40ccb4b36356f89dab00"
+
+SRC_URI[md5sum] = "6c69e73ba5b4b3ed62f7bcda071c64f1"
+SRC_URI[sha256sum] = "ad5925c814bfe79497b43df096e3bb52c166d1577f7aff160137301676232f4a"
+
+inherit pypi setuptools3
+
+DEPENDS += "python3-nose-native"
+
+RDEPENDS_${PN} += "python3-six"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tinyrecord_0.1.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tinyrecord_0.1.5.bb
new file mode 100644
index 0000000..65df2e1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tinyrecord_0.1.5.bb
@@ -0,0 +1,15 @@
+SUMMARY = "transaction support for TinyDB"
+DESCRIPTION = "\
+Tinyrecord is a library which implements atomic transaction \
+support for the TinyDB NoSQL database. It uses a record-first \
+then execute architecture which allows us to minimize the time \
+that we are within a thread lock."
+HOMEPAGE = "https://github.com/eugene-eeo/tinyrecord"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README;md5=31c1dc11b4ae83546538de4c16bceabc"
+
+SRC_URI[md5sum] = "e47dcfe299686cd3fa7ffaa7cb2ee8b1"
+SRC_URI[sha256sum] = "bc7e6a8e78600df234d7a85c2f5d584130f2c6ffd7cd310f9d3a1d976d3373c8"
+
+PYPI_PACKAGE = "tinyrecord"
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-toml_0.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-toml_0.10.0.bb
new file mode 100644
index 0000000..5a7b04c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-toml_0.10.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python Library for Tom's Obvious, Minimal Language"
+HOMEPAGE = "https://github.com/uiri/toml"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d6012eea477117abf51c31262a152f8"
+
+SRC_URI[md5sum] = "63fffbe2d632865ec29cd69bfdf36682"
+SRC_URI[sha256sum] = "229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-misc \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.0.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.0.3.bb
new file mode 100644
index 0000000..77c9fb5
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_6.0.3.bb
@@ -0,0 +1,7 @@
+inherit pypi setuptools3
+require python-tornado.inc
+
+# Requires _compression which is currently located in misc
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-misc \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.43.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.43.0.bb
new file mode 100644
index 0000000..642246c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.43.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Fast, Extensible Progress Meter"
+HOMEPAGE = "http://tqdm.github.io/"
+SECTION = "devel/python"
+
+LICENSE = "MIT & MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=7ea57584e3f8bbde2ae3e1537551de25"
+
+SRC_URI[md5sum] = "81454c26572e4e47911596ea065eb1b7"
+SRC_URI[sha256sum] = "f35fb121bafa030bd94e74fcfd44f3c2830039a2ddef7fc87ef1c2d205237b24"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_1.13.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_1.13.0.bb
new file mode 100644
index 0000000..f5cc70f
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_1.13.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Six is a Python 2 and 3 compatibility library"
+HOMEPAGE = "https://github.com/benjaminp/six"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.rst;md5=3963bdcee7562bedae1effa09e7542b2"
+
+SRC_URI[md5sum] = "6fb4da0c7d81ddfd48f619b8caa1493c"
+SRC_URI[sha256sum] = "d6c29c933ecfc74e9b1d9fa13aa1f87c5d5770e119f5a4ce032092f0ff5b14dc"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.10.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.10.0.bb
new file mode 100644
index 0000000..c12d1cc
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.10.0.bb
@@ -0,0 +1,65 @@
+inherit pypi setuptools3
+require python-twisted.inc
+
+FILES_${PN}-core_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/__pycache__ \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__pycache__/*pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/__init__*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/notestplugin*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/testplugin*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_ftp*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_inet*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_manhole*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_portforward*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_socks*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_telnet*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_trial*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_core*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_qtstub*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_reactors*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/cred*.pyc \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/dropin*.cache \
+"
+
+FILES_${PN}-names_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_names*.pyc \
+"
+
+FILES_${PN}-news_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_news*.pyc \
+"
+
+FILES_${PN}-protocols_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/__pycache__/*pyc \
+"
+
+FILES_${PN}-conch_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_conch*.pyc \
+"
+
+FILES_${PN}-lore_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_lore*.pyc \
+"
+FILES_${PN}-mail_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_mail*.pyc \
+"
+
+FILES_${PN}-web_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_web*.pyc \
+"
+
+FILES_${PN}-words_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_words*.pyc \
+"
+
+FILES_${PN}-flow_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_flow*.pyc \
+"
+
+FILES_${PN}-pair_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_pair*.pyc \
+"
+
+FILES_${PN}-runner_append = " \
+  ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_runner*.pyc \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.8.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.8.0.bb
new file mode 100644
index 0000000..78f66a4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.8.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Twitter for Python"
+DESCRIPTION = "Python module to support twitter API"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=8f702b489acb6863cec8b261a55931d8"
+
+SRC_URI[md5sum] = "8aeff278b7cefcd384c65929bc921e2c"
+SRC_URI[sha256sum] = "8abd828ba51a85a2b5bb7373715d6d3bb32d18ac624e3a4db02e4ef8ab48316b"
+
+PYPI_PACKAGE = "tweepy"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-pip \
+    ${PYTHON_PN}-pysocks \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-six \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0001-Fix-missing-return-statements-in-module-stubs.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0001-Fix-missing-return-statements-in-module-stubs.patch
new file mode 100644
index 0000000..c25b245
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0001-Fix-missing-return-statements-in-module-stubs.patch
@@ -0,0 +1,38 @@
+From 5704610f4b3aed5210e9c5b7c05ff8b5b2364c9c Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 12 Aug 2019 08:18:21 +0000
+Subject: [PATCH] Fix missing return statements in module stubs
+
+* fixes build with -Werror=return-type
+  twofish.c: In function 'init_twofish':
+  twofish.c:45:1: error: control reaches end of non-void function [-Werror=return-type]
+     45 | PyMODINIT_FUNC init_twofish(void) { }
+        | ^~~~~~~~~~~~~~
+  twofish.c: In function 'PyInit__twofish':
+  twofish.c:46:1: error: control reaches end of non-void function [-Werror=return-type]
+     46 | PyMODINIT_FUNC PyInit__twofish(void) { }
+        | ^~~~~~~~~~~~~~
+  cc1: some warnings being treated as errors
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Upstream-Status: Submitted [https://github.com/keybase/python-twofish/pull/6]
+---
+ twofish.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/twofish.c b/twofish.c
+index e324c34..d4487d8 100644
+--- a/twofish.c
++++ b/twofish.c
+@@ -42,5 +42,5 @@ DL_EXPORT(void) exp_Twofish_decrypt(Twofish_key * xkey, uint8_t c[16], uint8_t p
+ We need a stub init_twofish function so the module will link as a proper module.
+ Do not import _twofish from python; it will not work since _twofish is not a *real* module
+ */
+-PyMODINIT_FUNC init_twofish(void) { }
+-PyMODINIT_FUNC PyInit__twofish(void) { }
++PyMODINIT_FUNC init_twofish(void) { return NULL; }
++PyMODINIT_FUNC PyInit__twofish(void) { return NULL; }
+-- 
+2.17.1
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
new file mode 100644
index 0000000..94fb710
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Bindings for the Twofish implementation by Niels Ferguson"
+DESCRIPTION = "Bindings for the Twofish implementation by Niels Ferguson\
+ libtwofish-dev."
+HOMEPAGE = "http://github.com/keybase/python-twofish"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=33a63abf6d7567b1689d8ce69f00e43b"
+
+SRC_URI += "file://0001-Fix-missing-return-statements-in-module-stubs.patch"
+
+SRC_URI[md5sum] = "d7d22f16dc4ffa0e3ae2200654033abe"
+SRC_URI[sha256sum] = "b09d8bb50d33b23ff34cafb1f9209f858f752935c6a5c901efb92a41acb830fa"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.7.1.bb
new file mode 100644
index 0000000..b62b605
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.7.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Run-time type checker for Python"
+HOMEPAGE = "https://pypi.org/project/typeguard/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f0e423eea5c91e7aa21bdb70184b3e53"
+
+SRC_URI[md5sum] = "ef743359de59f8fe17e7c5e3af70e2c5"
+SRC_URI[sha256sum] = "2d545c71e9439c21bcd7c28f5f55b3606e6106f7031ab58375656a1aed483ef2"
+
+inherit pypi setuptools3
+
+DEPENDS += "\
+    python3-distutils-extra-native \
+    python3-setuptools-scm-native \
+"
+
+RDEPENDS_${PN} += "python3-typing"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.2.bb
new file mode 100644
index 0000000..51e9eda
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.2.bb
@@ -0,0 +1,13 @@
+HOMEPAGE = "https://github.com/python/typing"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f"
+
+# The name on PyPi is slightly different.
+PYPI_PACKAGE = "typing_extensions"
+
+SRC_URI[md5sum] = "f2674282966dc088d10170c2347431cc"
+SRC_URI[sha256sum] = "79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_2.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_2.0.0.bb
new file mode 100644
index 0000000..3573b29
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_2.0.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Library to return tzinfo with the local timezone information"
+HOMEPAGE = "https://pypi.org/project/tzlocal/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=57e0bd61643d81d05683cdce65b11d10"
+
+SRC_URI[md5sum] = "b14262cecca16ec9220ca8dff2ca7c5d"
+SRC_URI[sha256sum] = "949b9dd5ba4be17190a80c0268167d7e6c92c62b30026cf9764caf3e308e5590"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson/run-ptest
new file mode 100644
index 0000000..1b39146
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+python3 tests/tests.py
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb
new file mode 100644
index 0000000..36abb7e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb
@@ -0,0 +1,30 @@
+SUMMARY  = "Ultra fast JSON encoder and decoder for Python"
+DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3."
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
+
+SRC_URI[md5sum] = "42f77b0cce686dfa4da2e68480b1dd24"
+SRC_URI[sha256sum] = "f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86"
+
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-numbers \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytz \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb
new file mode 100644
index 0000000..ded66f0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Unified diff parsing/metadata extraction library"
+HOMEPAGE = "http://github.com/matiasb/python-unidiff"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4c434b08ef42fea235bb019b5e5a97b3"
+
+SRC_URI[md5sum] = "47f669d7273541fec45e4cc0fba8d8e9"
+SRC_URI[sha256sum] = "9c9ab5fb96b6988b4cd5def6b275492442c04a570900d33aa6373105780025bc"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-io \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_3.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_3.0.1.bb
new file mode 100644
index 0000000..952e954
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_3.0.1.bb
@@ -0,0 +1,14 @@
+# This recipe is originally from meta-openstack:
+# https://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python3-uritemplate_3.0.0.bb?h=master
+
+SUMMARY = "Simple python library to deal with URI Templates."
+AUTHOR = "Ian Cordasco"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f6d769bdcfacac3c1a1ffa568937fe0"
+
+SRC_URI[md5sum] = "869fb44fbd56713490db7272eb36c8ae"
+SRC_URI[sha256sum] = "5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3/CVE-2020-7212.patch b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3/CVE-2020-7212.patch
new file mode 100644
index 0000000..df234e4
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3/CVE-2020-7212.patch
@@ -0,0 +1,55 @@
+From aff951b7a41eb5b958b32c49eaa00da02adc9c2d Mon Sep 17 00:00:00 2001
+From: Quentin Pradet <quentin.pradet@gmail.com>
+Date: Tue, 21 Jan 2020 22:32:56 +0400
+Subject: [PATCH] Optimize _encode_invalid_chars (#1787)
+
+Co-authored-by: Seth Michael Larson <sethmichaellarson@gmail.com>
+
+Upstream-Status: Backport
+[from git://github.com/urllib3/urllib3.git commit:a2697e7c6b]
+CVE: CVE-2020-7212
+Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
+---
+ src/urllib3/util/url.py | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/src/urllib3/util/url.py b/src/urllib3/util/url.py
+index 9675f74..e353937 100644
+--- a/src/urllib3/util/url.py
++++ b/src/urllib3/util/url.py
+@@ -216,18 +216,15 @@ def _encode_invalid_chars(component, allowed_chars, encoding="utf-8"):
+
+     component = six.ensure_text(component)
+
++    # Normalize existing percent-encoded bytes.
+     # Try to see if the component we're encoding is already percent-encoded
+     # so we can skip all '%' characters but still encode all others.
+-    percent_encodings = PERCENT_RE.findall(component)
+-
+-    # Normalize existing percent-encoded bytes.
+-    for enc in percent_encodings:
+-        if not enc.isupper():
+-            component = component.replace(enc, enc.upper())
++    component, percent_encodings = PERCENT_RE.subn(
++        lambda match: match.group(0).upper(), component
++    )
+
+     uri_bytes = component.encode("utf-8", "surrogatepass")
+-    is_percent_encoded = len(percent_encodings) == uri_bytes.count(b"%")
+-
++    is_percent_encoded = percent_encodings == uri_bytes.count(b"%")
+     encoded_component = bytearray()
+
+     for i in range(0, len(uri_bytes)):
+@@ -237,7 +234,7 @@ def _encode_invalid_chars(component, allowed_chars, encoding="utf-8"):
+         if (is_percent_encoded and byte == b"%") or (
+             byte_ord < 128 and byte.decode() in allowed_chars
+         ):
+-            encoded_component.extend(byte)
++            encoded_component += byte
+             continue
+         encoded_component.extend(b"%" + (hex(byte_ord)[2:].encode().zfill(2).upper()))
+
+--
+2.23.0
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.25.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.25.7.bb
new file mode 100644
index 0000000..8d987a1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.25.7.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
+HOMEPAGE = "https://github.com/shazow/urllib3"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=65715c2eb961313d71b297dd5a04f85e"
+
+SRC_URI[md5sum] = "85e1e3925f8c1095172bff343f3312ed"
+SRC_URI[sha256sum] = "f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"
+
+inherit pypi setuptools3
+
+SRC_URI += "file://CVE-2020-7212.patch"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-certifi \
+    ${PYTHON_PN}-cryptography \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pyopenssl \
+    ${PYTHON_PN}-threading \
+"
+
+CVE_PRODUCT = "urllib3"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
new file mode 100644
index 0000000..149078c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Python vcversioner, automagically update the project's version"
+HOMEPAGE = "https://github.com/habnabit/vcversioner"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3"
+
+SRC_URI[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d"
+SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb
new file mode 100644
index 0000000..cf0fa30
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Smart replacement for plain tuple used in __version__"
+SECTION = "devel/python"
+HOMEPAGE = "https://launchpad.net/versiontools"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=3;endline=20;md5=02193721a38fd8a05a4ddeb7df8e294d"
+
+SRC_URI[md5sum] = "602b7db8eea30dd29a1d451997adf251"
+SRC_URI[sha256sum] = "a969332887a18a9c98b0df0ea4d4ca75972f24ca94f06fb87d591377e83414f6"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb
new file mode 100644
index 0000000..ac3a90e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb
@@ -0,0 +1,8 @@
+SUMMARY = "A tiny pythonic visitor implementation."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "94a024ed0ec1b02b4497c15267d319ca"
+SRC_URI[sha256sum] = "2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.4.3.bb
new file mode 100644
index 0000000..8ac3e92
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.4.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "A WSGI server for Python"
+DESCRIPTION = "Waitress is meant to be a production-quality pure-Python WSGI \
+    server with very acceptable performance."
+HOMEPAGE = "https://github.com/Pylons/waitress"
+SECTION = "devel/python"
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=78ccb3640dc841e1baecb3e27a6966b2"
+
+SRC_URI[md5sum] = "4bffad7009d3824ae61ea6c0696e45f6"
+SRC_URI[sha256sum] = "045b3efc3d97c93362173ab1dfc159b52cfa22b46c3334ffc805dbdbf0e4309e"
+
+inherit setuptools3 pypi
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.8.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.8.bb
new file mode 100644
index 0000000..f9f6474
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.8.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=11fba47286258744a6bc6e43530c32a1"
+
+SRC_URI[md5sum] = "dc6677d099e6f49c0f6fbc310de261e9"
+SRC_URI[sha256sum] = "f28b3e8a6483e5d49e7f8949ac1a78314e740333ae305b4ba5defd3e74fb37a8"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb
new file mode 100644
index 0000000..65eed9e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Simple Python module for working with HTML/CSS color definitions."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=197add016087e6884a012b0f185d44ad"
+
+SRC_URI[md5sum] = "40890db38b2a856e526a568864025fe6"
+SRC_URI[sha256sum] = "030562f624467a9901f0b455fef05486a88cfb5daa1e356bd4aacea043850b59"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS_${PN}_class-target = "\
+    ${PYTHON_PN}-stringold \
+"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb
new file mode 100644
index 0000000..aa5b8c7
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Character encoding aliases for legacy web content"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+SRC_URI[md5sum] = "32f6e261d52e57bf7e1c4d41546d15b8"
+SRC_URI[sha256sum] = "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-codecs \
+    ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_0.56.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_0.56.0.bb
new file mode 100644
index 0000000..a3e1bcf
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_0.56.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "websocket client for python"
+DESCRIPTION = "\
+websocket-client module is WebSocket client for python. \
+This provide the low level APIs for WebSocket. All APIs \
+are the synchronous functions."
+HOMEPAGE = "https://github.com/websocket-client/websocket-client"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c4c4a98fbc4836b81c8c64d6ecb01fc1"
+
+SRC_URI[md5sum] = "89484bd5dac71123ae6a09b2f90fe62c"
+SRC_URI[sha256sum] = "1fd5520878b68b84b5748bb30e592b10d0a91529d5383f74f4964e72b297fd3a"
+
+PYPI_PACKAGE = "websocket_client"
+inherit pypi setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-six \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_8.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_8.1.bb
new file mode 100644
index 0000000..b09e978
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_8.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)"
+HOMEPAGE = "https://github.com/aaugustin/websockets"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ad5c6d36b3d0098b2f33a5ab69a9e750"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "f12d7f31fe8d0b3e65c12f845bcd0ad8"
+SRC_URI[sha256sum] = "5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.0.bb
new file mode 100644
index 0000000..3e4374e
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.0.bb
@@ -0,0 +1,50 @@
+SUMMARY = "The Swiss Army knife of Python web development"
+DESCRIPTION = "\
+Werkzeug started as simple collection of various utilities for WSGI \
+applications and has become one of the most advanced WSGI utility modules. \
+It includes a powerful debugger, full featured request and response objects, \
+HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
+cookie handling, file uploads, a powerful URL routing system and a bunch \
+of community contributed addon modules."
+HOMEPAGE = "http://werkzeug.pocoo.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+SRC_URI[md5sum] = "305f75c4a88c96dcdc5654bf2d01bc05"
+SRC_URI[sha256sum] = "169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096"
+
+PYPI_PACKAGE = "Werkzeug"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests+= " \
+    ${PYTHON_SITEPACKAGES_DIR}/werkzeug/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/werkzeug/__pycache__/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/werkzeug/contrib/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/werkzeug/contrib/__pycache__/test* \
+"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unixadmin \
+"
+
+RDEPENDS_${PN}-tests = " \
+    ${PN} \
+    ${PYTHON_PN}-unittest \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.1.bb
new file mode 100644
index 0000000..58735c1
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_1.0.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "The Swiss Army knife of Python web development"
+DESCRIPTION = "\
+Werkzeug started as simple collection of various utilities for WSGI \
+applications and has become one of the most advanced WSGI utility modules. \
+It includes a powerful debugger, full featured request and response objects, \
+HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
+cookie handling, file uploads, a powerful URL routing system and a bunch \
+of community contributed addon modules."
+HOMEPAGE = "http://werkzeug.pocoo.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+PYPI_PACKAGE = "Werkzeug"
+
+SRC_URI[md5sum] = "5d499cfdd30de5d9c946994783772efd"
+SRC_URI[sha256sum] = "6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-simplejson \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unixadmin \
+    ${PYTHON_PN}-misc \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wheel_0.33.6.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wheel_0.33.6.bb
new file mode 100644
index 0000000..025b2ee
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wheel_0.33.6.bb
@@ -0,0 +1,16 @@
+SUMMARY = "The official binary distribution format for Python "
+HOMEPAGE = "https://github.com/pypa/wheel"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9d66b41bc2a080e7174acc5dffecd752"
+
+SRC_URI = "git://github.com/pypa/wheel.git"
+SRCREV ?= "b227ddd5beaba49294017d061d501f6d433393b0"
+
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
new file mode 100644
index 0000000..3ae4f91
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Fast, pure-Python full text indexing, search, and spell checking library."
+DESCRIPTION = "\
+Whoosh is a fast, featureful full-text indexing and searching library \
+implemented in pure Python. Programmers can use it to easily add search \
+functionality to their applications and websites. Every part of how \
+Whoosh works can be extended or replaced to meet your needs exactly."
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05303186defc6141143629961c7c8a60"
+
+SRC_URI[md5sum] = "893433e9c0525ac043df33e6e04caab2"
+SRC_URI[sha256sum] = "e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69"
+
+PYPI_PACKAGE = "Whoosh"
+PYPI_PACKAGE_EXT = "zip"
+
+inherit ptest pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-stringold \
+"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-fcntl \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb
new file mode 100644
index 0000000..49fde10
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A Python module for decorators, wrappers and monkey patching."
+HOMEPAGE = "http://wrapt.readthedocs.org/"
+LICENSE = "BSD-2-Clause"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fdfc019b57affbe1d7a32e3d34e83db4"
+
+SRC_URI[md5sum] = "6d56ed0de4336462a73350341462f45e"
+SRC_URI[sha256sum] = "b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
+
+inherit pypi setuptools3 
+
+RDEPENDS_${PN}_class-target += "\
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.2.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.2.1.bb
new file mode 100644
index 0000000..2b7af62
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.2.1.bb
@@ -0,0 +1,17 @@
+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;md5=c4660c132770d5d0a5757541f6b79493"
+
+SRC_URI[md5sum] = "41c0008dbe7bd98892c58f7457a46a4a"
+SRC_URI[sha256sum] = "0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61"
+
+PYPI_PACKAGE = "WTForms"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    "
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.2.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.2.0.bb
new file mode 100644
index 0000000..571dba6
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.2.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files"
+DESCRIPTION = "Extract data from Excel spreadsheets (.xls and .xlsx,\
+ versions 2.0 onwards) on any platform. Pure Python (2.6, 2.7, 3.2+). \
+Strong support for Excel dates. Unicode-aware."
+HOMEPAGE = "http://www.python-excel.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=5f4244d51fcc1e7cc2d43e96891b2f80"
+
+SRC_URI[md5sum] = "e5d5b96924d791b22898b622eb3e918e"
+SRC_URI[sha256sum] = "546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+inherit ptest pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    install -d ${D}${PTEST_PATH}/examples
+    cp -rf ${S}/examples/* ${D}${PTEST_PATH}/examples/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
new file mode 100644
index 0000000..7e7b523
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
@@ -0,0 +1,9 @@
+SUMMARY = "unittest-based test runner with Ant/JUnit like XML reporting"
+HOMEPAGE = "https://github.com/pycontribs/xmlrunner"
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=fa964f202b6ae067ed5828fe43c77c1a"
+
+SRC_URI[md5sum] = "7b0b152ed2d278516aedbc0cac22dfb3"
+SRC_URI[sha256sum] = "5a6113d049eca7646111ee657266966e5bbfb0b5ceb2e83ee0772e16d7110f39"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb
new file mode 100644
index 0000000..d078883
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Makes working with XML feel like you are working with JSON"
+AUTHOR = "Martin Blech"
+HOMEPAGE = "https://github.com/martinblech/xmltodict"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=01441d50dc74476db58a41ac10cb9fa2"
+
+SRC_URI[md5sum] = "ddb2bd078cef4f7e3021a578034ad941"
+SRC_URI[sha256sum] = "50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"
+
+PYPI_PACKAGE = "xmltodict"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS_${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
new file mode 100644
index 0000000..b45e96d
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Font Awesome icons packaged for setuptools (easy_install) / pip."
+HOMEPAGE = "https://pypi.python.org/pypi/XStatic-Font-Awesome"
+SECTION = "devel/python"
+LICENSE = "Apache-2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=313d021898694cd2b0ea6508bdfe51a2"
+
+PYPI_PACKAGE = "XStatic-Font-Awesome"
+
+SRC_URI[md5sum] = "141a0e9a7e21e82f922573a00ae0c166"
+SRC_URI[sha256sum] = "e01fb480caaa7c7963dcb3328a4700e631bef6070db0e8b685816d220e685f6c"
+
+DEPENDS += " \
+    ${PYTHON_PN}-xstatic \
+    ${PYTHON_PN}-pip \
+"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.2.bb
new file mode 100644
index 0000000..8de3959
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.2.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "XStatic base package with minimal support code"
+HOMEPAGE = "https://pypi.python.org/pypi/XStatic"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.txt;md5=1418684272f85f400cebf1b1a255c5cd"
+
+PYPI_PACKAGE = "XStatic"
+
+SRC_URI[md5sum] = "dea172b7b14b0dbcd5ed63075221af4b"
+SRC_URI[sha256sum] = "80b78dfe37bce6dee4343d64c65375a80bcf399b46dd47c0c7d56161568a23a8"
+
+DEPENDS += " \
+    ${PYTHON_PN}-pip \
+"
+
+inherit pypi setuptools3
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash/run-ptest
new file mode 100644
index 0000000..e398fa8
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest tests/test.py -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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.3.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.3.bb
new file mode 100644
index 0000000..c114a6c
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.3.bb
@@ -0,0 +1,22 @@
+SUMMARY = "xxhash is a Python binding for the xxHash library by Yann Collet."
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5a8d76283514a1b7e6a414aba38629b5"
+
+SRC_URI[md5sum] = "ce9cbbcc89620fd47a2468badd08dcf0"
+SRC_URI[sha256sum] = "8b6b1afe7731d7d9cbb0398b4a811ebb5e6be5c174f72c68abf81f919a435de9"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.0.bb
new file mode 100644
index 0000000..75de4df
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.0.bb
@@ -0,0 +1,32 @@
+SUMMARY  = "Yet Another Python Profiler"
+HOMEPAGE = "http://yappi.googlecode.com/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=9a193c13f346884e597acdcac7fe9ac8"
+
+SRC_URI[md5sum] = "a545101aa8a435b0780f06f4723f58c8"
+SRC_URI[sha256sum] = "7f814131515d51db62b1a3468bcb84de30499124752806a5a6e11caf0b4344bf"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-threading \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-profile \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    cp -f ${S}/yappi.py ${D}/${PTEST_PATH}/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/run-ptest b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/run-ptest
new file mode 100644
index 0000000..3385d68
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/run-ptest
@@ -0,0 +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}}'
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.4.2.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.4.2.bb
new file mode 100644
index 0000000..15d9206
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.4.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "The module provides handy URL class for url parsing and changing"
+HOMEPAGE = "https://github.com/aio-libs/yarl/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b334fc90d45983db318f54fd5bf6c90b"
+
+SRC_URI[md5sum] = "08ba0d6e18f460b44d9e5459f3d217ba"
+SRC_URI[sha256sum] = "58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b"
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+PYPI_PACKAGE = "yarl"
+
+inherit pypi ptest setuptools3
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-multidict \
+    ${PYTHON_PN}-idna \
+"
+
+RDEPENDS_${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zipp_0.6.0.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zipp_0.6.0.bb
new file mode 100644
index 0000000..40db3c0
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zipp_0.6.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
+HOMEPAGE = "https://github.com/jaraco/zipp"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a33f38bbf47d48c70fe0d40e5f77498e"
+
+SRC_URI[md5sum] = "d4451a749d8a7c3c392a9edd1864a937"
+SRC_URI[sha256sum] = "3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression \
+                   ${PYTHON_PN}-math \
+                   ${PYTHON_PN}-more-itertools"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.7.1.bb b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.7.1.bb
new file mode 100644
index 0000000..6b65924
--- /dev/null
+++ b/cap/zx297520v3/sources/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.7.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Interface definitions for Zope products"
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e54fd776274c1b7423ec128974bd9d46"
+
+SRC_URI[md5sum] = "1bc66758275c5eb66d169acba3c8e50e"
+SRC_URI[sha256sum] = "4bb937e998be9d5e345f486693e477ba79e4344674484001a0b646be1d530487"
+
+PYPI_PACKAGE = "zope.interface"
+
+inherit pypi setuptools3
+
+PACKAGES =. "${PN}-test "
+
+RPROVIDES_${PN} += "zope-interfaces"
+
+RDEPENDS_${PN}_class-target += "${PYTHON_PN}-datetime"
+RDEPENDS_${PN}-test += "python3-unittest python3-doctest"
+
+FILES_${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*.egg/*/*/.debug"
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.c"
+FILES_${PN}-doc += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.txt"
+FILES_${PN}-test += " \
+        ${PYTHON_SITEPACKAGES_DIR}/zope/interface/tests \
+        ${PYTHON_SITEPACKAGES_DIR}/zope/interface/common/tests \
+"