diff --git a/dev-libs/or-tools/Manifest b/dev-libs/or-tools/Manifest
new file mode 100644
index 0000000..71ccc44
--- /dev/null
+++ b/dev-libs/or-tools/Manifest
@@ -0,0 +1,2 @@
+DIST or-tools-9.4.tar.gz 14411489 BLAKE2B 9fe09798071f8ed2aa9634ad566ef00a68fd64892cf7169762108c2dc86a4fd144cfa70d78b69d73f645802318b1a20f2f8fc0ded32638260a122cdc857e6a7f SHA512 578f1e18ab0467ca686539768f7d881542a2815577e2f5aed962ae2a4a8f9c1c9a30b59ff4bd5ed9819115d4e7b6f455352d50097d7b0d0ef6870d7525258cd5
+EBUILD or-tools-9.4.ebuild 2265 BLAKE2B a30b57553a4004392bbbc2cd6f5f9320e7e3f571f5c14a76144e72ddf793b5b02dcc2369ba1004bcd3bda341a70853a2bfc11bc79a91e88b2993e90633797fce SHA512 3628dcb29d15bd56d05961e7875e07c671f7f3cc7577f34847f9f5534a34cfd046b082b6c6845e9541811d8d7926fecf9b9a5cc3700cd20357c13a7a5f78a53b
diff --git a/dev-libs/or-tools/or-tools-9.4.ebuild b/dev-libs/or-tools/or-tools-9.4.ebuild
new file mode 100644
index 0000000..768f4e4
--- /dev/null
+++ b/dev-libs/or-tools/or-tools-9.4.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8,9,10,11} )
+
+inherit cmake python-single-r1
+
+DESCRIPTION="Google's Operations Research tools"
+HOMEPAGE="https://developers.google.com/optimization/"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="https://github.com/google/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/google/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+# BSD for bundled pybind
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="+python"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="sci-libs/coinor-cbc
+ sci-libs/scipoptsuite
+ $(python_gen_cond_dep '
+ >=dev-python/absl-py-0.13[${PYTHON_USEDEP}]
+ >=dev-python/contourpy-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/cycler-0.10[${PYTHON_USEDEP}]
+ >=dev-python/fonttools-4.22.0[${PYTHON_USEDEP}]
+ >=dev-python/kiwisolver-1.0.1[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/mypy-protobuf[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ >=dev-python/pillow-6.2.0[${PYTHON_USEDEP}]
+ >=dev-python/protobuf-python-3.19.4[${PYTHON_USEDEP}]
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-2.2.1[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2020.1[${PYTHON_USEDEP}]
+ >=dev-python/six-1.5[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ ')
+ ${PYTHON_DEPS}"
+RDEPEND=""
+BDEPEND=""
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ default_src_unpack
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i -e 's@ABSL_MUST_USE_RESULT @@' \
+ "${S}"/ortools/linear_solver/linear_solver.h \
+ "${S}"/ortools/constraint_solver/constraint_solver.h \
+ || die "sed failed"
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_DEPS=OFF
+ -DCMAKE_SKIP_RPATH="ON"
+ )
+ use python && mycmakeargs+=(
+ -DBUILD_PYTHON=ON
+ -DBUILD_pybind11=OFF
+ -DPython3_EXECUTABLE="${PYTHON}"
+ -DFETCH_PYTHON_DEPS=OFF
+ -DVENV_USE_SYSTEM_SITE_PACKAGES=ON
+ )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+}
+
+src_install() {
+ cmake_src_install
+ python_optimize
+}
diff --git a/dev-python/affine/Manifest b/dev-python/affine/Manifest
new file mode 100644
index 0000000..04a98c5
--- /dev/null
+++ b/dev-python/affine/Manifest
@@ -0,0 +1,3 @@
+DIST affine-2.3.0.tar.gz 14860 BLAKE2B 3f1f2bf69e26bc7c73ad7d4fc2fa0a51b3cb5ccea3e88982dd682f377df0c6fde00e037893aa466d89955e7800fa99580b02108ce7acb68fb1b38cb67e4753e6 SHA512 25e3671542a4bcb45c04a3e4a1c312f7e427091470b30b115dd8d0c7a1f3ac008e1b1f9222ca60b08b4717cab90fc224f2e70fc0184ca371ccf918f8c04a23ce
+EBUILD affine-2.3.0.ebuild 488 BLAKE2B f74796a9ef6b6fc10bd7272dee8d598603367b04895e58ae1cafb8aea1d8aafbd14a0e7f0541ab65ee306def8e98f7fe788a60e364bca314d17431dd18ee8b74 SHA512 09b6bebe40890ce5071486cfd8775c2f2a98b6587a3e32d79ff7648faf8c2771d02ce4ea55d5f2838ed14fdd292e182a71505f0679df75b3b6407c873432ad00
+MISC metadata.xml 633 BLAKE2B 031dedeb1a7714b178a9fe5874c18457a6b8128a1612eb226ce1227c9e4bd2b84d6a1ac6bdea94382f79db111640adeb3a13137479eee488471bb722a3b21093 SHA512 d6b13124bbc17fcaabafebb7334578df068090b93423ef00f8f0ac015561ec37470fb6e5edb96f0fd175889237aa3cd03d0fcbe70db9b304deb44a6bf13431a9
diff --git a/dev-python/affine/affine-2.3.0.ebuild b/dev-python/affine/affine-2.3.0.ebuild
new file mode 100644
index 0000000..a298cec
--- /dev/null
+++ b/dev-python/affine/affine-2.3.0.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+DISTUTILS_USE_PEP517="setuptools"
+inherit distutils-r1
+
+DESCRIPTION="Library for handling affine transformations of the plane"
+HOMEPAGE="https://github.com/rasterio/affine"
+SRC_URI="https://github.com/rasterio/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+distutils_enable_tests pytest
diff --git a/dev-python/affine/metadata.xml b/dev-python/affine/metadata.xml
new file mode 100644
index 0000000..298f915
--- /dev/null
+++ b/dev-python/affine/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ sci@gentoo.org
+ Gentoo Science Project
+
+
+ Affine is a python library for handling affine transformations of the plane.
+ Georeferenced raster datasets use affine transformations to map from image
+ coordinates to world coordinates.
+
+
+ rasterio/affine
+ affine
+
+
diff --git a/dev-python/cligj/Manifest b/dev-python/cligj/Manifest
new file mode 100644
index 0000000..5ebdcf9
--- /dev/null
+++ b/dev-python/cligj/Manifest
@@ -0,0 +1,3 @@
+DIST cligj-0.7.2.tar.gz 9894 BLAKE2B ebd187a6a7108a8d0a7d348fcb1d617402041d050a89209cb6c242bc47a87be953b679101656af9af31fd40947f1a5b3ded567dce9f3e64f425cce7f0f3036c1 SHA512 292c1a6de4ed5d4926ccd71802d369db383d310a3a8590729233448cebe5e9ad9dd6bff0d0c861890102bc9f23e90fe1b9db62275a9263765e3d77436a0b38b4
+EBUILD cligj-0.7.2.ebuild 512 BLAKE2B 5a2e31960435d601924cdfc49745ad85a63807e963359325d2f6fb3c2d02277a44f9e82c2297141467a771f229d0f073a616be0845e49d3dbac792a74cc98607 SHA512 442ec013e25d63effae3616b8f6176d608952e343409b6e56a633990d5f8401189fcf8883142850218266f984215a2631b30ca78e37a470b2cdd3d93d93ce8ee
+MISC metadata.xml 633 BLAKE2B 1374186c2fcaf9ca9593c6a014ad22038b26dcaed0dccca7b7bc392e44bbe557dd19411e86ec9c714737f9bc6563dc9da9103c29db14e508dd3da274943bf989 SHA512 d9f76c457068058e618c91aa0dcdcaa3b1dd8ba5a1ee363f4f2d50dc11d651e86a56285b475d4f5dac7736ec3d00e75d6970c543ce266645ed136c2d842c72f3
diff --git a/dev-python/cligj/cligj-0.7.2.ebuild b/dev-python/cligj/cligj-0.7.2.ebuild
new file mode 100644
index 0000000..c90584b
--- /dev/null
+++ b/dev-python/cligj/cligj-0.7.2.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+DISTUTILS_USE_PEP517="setuptools"
+inherit distutils-r1
+
+DESCRIPTION="Library for processing GeoJSON commands"
+HOMEPAGE="https://github.com/mapbox/cligj"
+SRC_URI="https://github.com/mapbox/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="dev-python/click[${PYTHON_USEDEP}]"
+
+distutils_enable_tests pytest
diff --git a/dev-python/cligj/metadata.xml b/dev-python/cligj/metadata.xml
new file mode 100644
index 0000000..9afaefe
--- /dev/null
+++ b/dev-python/cligj/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ sci@gentoo.org
+ Gentoo Science Project
+
+
+ cligj is for Python developers who create command line interfaces for
+ geospatial data. cligj allows you to quickly build consistent,
+ well-tested and interoperable CLIs for handling GeoJSON.
+
+
+ mapbox/cligj
+ cligj
+
+
diff --git a/dev-python/ezdxf/Manifest b/dev-python/ezdxf/Manifest
new file mode 100644
index 0000000..fff7af0
--- /dev/null
+++ b/dev-python/ezdxf/Manifest
@@ -0,0 +1,3 @@
+DIST ezdxf-0.16.5.zip 1552408 BLAKE2B d52131c776c5560da659db67b87a5403a0a0f44aa21781d9599555cc71a3a91cd4e92574f985079456bfd6c844fb693cdef5d16277e83dbd6ca378013d5423ca SHA512 1e35aea16bf169bc2fe3bc3accf83f42189371a80cea259f46dcee1e9c75b613f9c09e6e300a2f331510722a1eefa1550052b7d58c08c4e3a0868cebdfe7b330
+EBUILD ezdxf-0.16.5.ebuild 858 BLAKE2B 6ce64f20f6281f302a3e439f4d9729caa32c345a0d0e4a4adb25d8fc27531fdf12332befbbb06e5fde7158a233a48ea16e80c9a7d0b53b6f00714f4dba184e29 SHA512 11e2e0f73d621d31dfdcbc998a8308aa84eb80315071606a3f6ed0a130bfe522899091efefd193bbefcd0338e540066aa54de09652aa86e5dbe4eb210ba9849c
+MISC metadata.xml 579 BLAKE2B 27fe800a2725df00787a668d79eeffc21cacf86bc4cc464aa8be45e62b8f9ab1bacb0cb6556972c270d0f22186cb280fdd1a6efbd541172d9addcfebb03489c3 SHA512 b557483acbf1e002873cce2da94115dacea94009236e62b409701eb6c82a5073bbb2e4de4ad0697e1194f07faf7d376a5dc26d3c37a408a74d837762ebf24f00
diff --git a/dev-python/ezdxf/ezdxf-0.16.5.ebuild b/dev-python/ezdxf/ezdxf-0.16.5.ebuild
new file mode 100644
index 0000000..43bf7c3
--- /dev/null
+++ b/dev-python/ezdxf/ezdxf-0.16.5.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+#FIXME: Upstream explicitly supports "pypy3", but Gentoo dependencies do not.
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python interface to DXF"
+HOMEPAGE="https://pypi.org/project/ezdxf"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.zip"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="cython matplotlib qt5"
+
+BDEPEND="
+ cython? ( dev-python/cython[${PYTHON_USEDEP}] )
+ app-arch/unzip
+"
+DEPEND="
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-2.0.1[${PYTHON_USEDEP}]
+"
+RDEPEND="${DEPEND}
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+ qt5? ( dev-python/PyQt5[${PYTHON_USEDEP}] )
+"
+
+#FIXME: Enabling tests requires packaging additional packages (e.g., "geomdl").
+RESTRICT="test"
diff --git a/dev-python/ezdxf/metadata.xml b/dev-python/ezdxf/metadata.xml
new file mode 100644
index 0000000..768dc78
--- /dev/null
+++ b/dev-python/ezdxf/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ sci@gentoo.org
+ Gentoo Science Project
+
+
+ ezdxf
+ mozman/ezdxf
+
+
+
diff --git a/dev-python/freetype-py/Manifest b/dev-python/freetype-py/Manifest
new file mode 100644
index 0000000..3323e09
--- /dev/null
+++ b/dev-python/freetype-py/Manifest
@@ -0,0 +1,3 @@
+DIST freetype-py-2.3.0.zip 830613 BLAKE2B a4da0183749559059031e9f7e10bbbaca4d5cfca8f1d4a562cbd4ca49032f4feae235065336d7af2706e71c99525c5f263fb37d490c0c12c197f9359f5698a72 SHA512 f00754415e6b10e4cc62f96b6c52b437041ad1aaedae206aa8fedbe583243f38703b24e53b791e9afdcea66d67d108b492d55f4c7fdd31cec9542a8398191bb7
+EBUILD freetype-py-2.3.0.ebuild 603 BLAKE2B c147e1c75854541111735d4bb9198c3f0ac3554c5e07758caff13a40a6d842273a25d0fc94853ea13a429a2caea6b404ba4f9c5afc6ffb5800506d826bd04c62 SHA512 f8a306fa34ba3105bc16e5b632040c2eb316573065f4c69325d54af29bc26256fb03d464f5ad238f7786cf61e1be1c0323d3a9ab737d8c06b983d407b5fbb502
+MISC metadata.xml 387 BLAKE2B f40affe629064429995e522511ec5b5943bf5ea62715198e316e59184c30c468e8584774361fcc3600a0c2e463baeb63d67731487781cdfefcfc002a9e7d6862 SHA512 46705f6d50a5daefbf3e5721e3ebe018b6d1dc0b1a58e2aefadef69048b9463cd6c507ff5c908f2f98a08ef1e0d52c4c62dae4dce36b234bec7d42be5f801458
diff --git a/dev-python/freetype-py/freetype-py-2.3.0.ebuild b/dev-python/freetype-py/freetype-py-2.3.0.ebuild
new file mode 100644
index 0000000..3f96dc9
--- /dev/null
+++ b/dev-python/freetype-py/freetype-py-2.3.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python binding for the freetype library"
+HOMEPAGE="http://freetype-py.readthedocs.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/freetype:2"
+RDEPEND="${DEPEND}"
+BDEPEND="dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ app-arch/unzip
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc dev-python/sphinx_rtd_theme
diff --git a/dev-python/freetype-py/metadata.xml b/dev-python/freetype-py/metadata.xml
new file mode 100644
index 0000000..2cb3a70
--- /dev/null
+++ b/dev-python/freetype-py/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ universebenzene@sina.com
+ Astro Benzene
+
+
+ freetype-py
+ rougier/freetype-py
+
+
diff --git a/dev-python/hsluv/Manifest b/dev-python/hsluv/Manifest
new file mode 100644
index 0000000..9fb03f2
--- /dev/null
+++ b/dev-python/hsluv/Manifest
@@ -0,0 +1,3 @@
+DIST hsluv-5.0.3.tar.gz 541164 BLAKE2B 2f2681a820c4253c2a443f448bf607fd0feaab3e183dfe53577f27a727b1142ccc4d7dd3827e1cc57bcfdffc49ce118413619cbfac2d6cbca25d1915c1df2fda SHA512 18fef949ca1e6607f5053340f368679224f5870590c95de7afa750c3e6bde62dd467b538e7264dd5854918024e06511fe314eedb52882dc09fa99a1fc25d3a59
+EBUILD hsluv-5.0.3.ebuild 424 BLAKE2B 34ea6b6cd6e7bdbb6210027462e931d33f8f415a2b63985fb0cfa9afa972fa4a109850cdbf727c6b19d42e0cc3aad825cfb8986194819ce6459cb0ddcde5e69f SHA512 d3dfcd22b8ac17cf3802e33384a594475490f77dbf0f0e88e88f380114a9c0294905c4ace5a21b558c274c62885b08c2fe931f49fd20411f2a3048b46e4574a0
+MISC metadata.xml 380 BLAKE2B a55297e5be7d90d57fdbae6449cb69e92168100242d207bc00c926c80f006340eb11bce5ffe21c4c0418dcf3f4bce29a14a51e55c27ac7a72ea54a3addfe0511 SHA512 2d64734687118c9605a1ef9484a08b407c539712bbd16cd6ff6c8c54afc46dae5ded440a56f9c0e7f4e8d2394fc139eff6b7a445f09e49728cbd92c5adabab6a
diff --git a/dev-python/hsluv/hsluv-5.0.3.ebuild b/dev-python/hsluv/hsluv-5.0.3.ebuild
new file mode 100644
index 0000000..f4d36e7
--- /dev/null
+++ b/dev-python/hsluv/hsluv-5.0.3.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+#DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python implementation of HSLuv (revision 4)"
+HOMEPAGE="https://www.hsluv.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+distutils_enable_tests pytest
diff --git a/dev-python/hsluv/metadata.xml b/dev-python/hsluv/metadata.xml
new file mode 100644
index 0000000..13de016
--- /dev/null
+++ b/dev-python/hsluv/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ universebenzene@sina.com
+ Astro Benzene
+
+
+ hsluv
+ hsluv/hsluv-python
+
+
diff --git a/dev-python/mypy-protobuf/Manifest b/dev-python/mypy-protobuf/Manifest
new file mode 100644
index 0000000..ca8ec31
--- /dev/null
+++ b/dev-python/mypy-protobuf/Manifest
@@ -0,0 +1,2 @@
+DIST mypy-protobuf-3.4.0.tar.gz 52119 BLAKE2B 052ea11fef079cf87803ea1893cdefd4b5c1be9510b485818b0cec9e56465f2e5bcea38d43c302735134bd83355414e8577906f83989887565e707680163514a SHA512 ca58351c71d0ff2a7b81b01ac5fd603fbb1892466a8f5c835a66994a5085e46f940bfac9c97d343a9e73850bca68ac9b5a5139f9626cd2e3ce1a0ead8ea2e914
+EBUILD mypy-protobuf-3.4.0.ebuild 688 BLAKE2B 4ed5a77d8aaaac7d18c716ffa0167e685bca35a44379993da18ba5889dcd27f13cf42001506fd2f4809cc4b34b3f3169fff62f9a243a0d0a97131111798d4f9a SHA512 3d52f1240f4aed9755377ee7accc809e1a30193770b5f191ec69174a26554146a5f0beebe0a95fe17e170de3c1ab92afc58623273b93af169bc33eb1455cd7ef
diff --git a/dev-python/mypy-protobuf/mypy-protobuf-3.4.0.ebuild b/dev-python/mypy-protobuf/mypy-protobuf-3.4.0.ebuild
new file mode 100644
index 0000000..d7f5c88
--- /dev/null
+++ b/dev-python/mypy-protobuf/mypy-protobuf-3.4.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..11} pypy3 )
+DISTUTILS_USE_PEP517=setuptools
+inherit distutils-r1
+
+DESCRIPTION="open source tools to generate mypy stubs from protobufs"
+HOMEPAGE="
+ http://www.mypy-lang.org/
+ https://github.com/nipunn1313/mypy-protobuf/"
+SRC_URI="
+ https://github.com/nipunn1313/${PN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+
+RDEPEND="
+ dev-python/mypy[${PYTHON_USEDEP}]
+ >=dev-python/protobuf-python-4.21.8[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/rasterio/Manifest b/dev-python/rasterio/Manifest
new file mode 100644
index 0000000..633a4e0
--- /dev/null
+++ b/dev-python/rasterio/Manifest
@@ -0,0 +1,3 @@
+DIST rasterio-1.2.10.tar.gz 12888995 BLAKE2B e6e4e55ae2fc7c10839625331f52a3366815672412dee7ee2332d32ce842c35ebbbb81e446d03a92a1cb6f877ecc377de1509d2d8c857ab7034dd246996b0318 SHA512 97559778163a36982b733137f6b5a879649c9591583cf80ccb38739f6565bf65c6b198d499242811ebb7342a3a4ef3756451bc3c7d1b431f8d1e568c6bae41d5
+EBUILD rasterio-1.2.10-r1.ebuild 3731 BLAKE2B 336c3be9da0038c07e1fb64414753d872925a27c827e330c9a54aaccbdf5b0b82f8ddbe378b8f6e7c69bf9b3d307a868fac63304f3c7d7e262eb05c22b017107 SHA512 bd7d87a55ee0c184cc155ebc0c7401da8a422e058032a7430c3ca8ad5c9460186b9d3d5263f75ebee5e32e64647147252f003b0f09e9a2f7aa19e7b27cae592f
+MISC metadata.xml 704 BLAKE2B dbbe8c83942cbaba85998b1223b41574f8436e2bf682e862f5bb423285d1cc0f6f0ae5a52a2cc157c111279cf434261e25d8c7d89c024df1785200f991dec723 SHA512 2937e52e2e7998f690557be4233a232a98b11c049b000c0491671b4cb1f000b5c8b3e289847a277a371b505f29117fee8ffb18562f34e449fd4404ff7e630865
diff --git a/dev-python/rasterio/metadata.xml b/dev-python/rasterio/metadata.xml
new file mode 100644
index 0000000..88f92bb
--- /dev/null
+++ b/dev-python/rasterio/metadata.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ sci@gentoo.org
+ Gentoo Science Project
+
+
+ Rasterio reads and writes geospatial raster data. Geographic information
+ systems use GeoTIFF and other formats to organize and store gridded,
+ or raster, datasets. Rasterio reads and writes these formats and
+ provides a Python API based on N-D arrays.
+
+
+ rasterio/rasterio
+ rasterio
+
+
diff --git a/dev-python/rasterio/rasterio-1.2.10-r1.ebuild b/dev-python/rasterio/rasterio-1.2.10-r1.ebuild
new file mode 100644
index 0000000..7ae9776
--- /dev/null
+++ b/dev-python/rasterio/rasterio-1.2.10-r1.ebuild
@@ -0,0 +1,109 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+DISTUTILS_USE_PEP517="setuptools"
+inherit distutils-r1
+
+DESCRIPTION="Command line tool and API for geospatial raster data"
+HOMEPAGE="https://github.com/rasterio/rasterio"
+SRC_URI="https://github.com/rasterio/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ sci-libs/gdal:=[aux-xml(+),jpeg,png,threads(+)]
+ dev-python/affine[${PYTHON_USEDEP}]
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/certifi[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/cligj[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/click-plugins[${PYTHON_USEDEP}]
+ dev-python/snuggs[${PYTHON_USEDEP}]
+"
+
+#DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ dev-python/boto3[${PYTHON_USEDEP}]
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/shapely[${PYTHON_USEDEP}]
+ sci-libs/gdal:=[aux-xml(+),jpeg,png,threads(+)]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local deselect=(
+ # disable tests failing for unknown reason
+ tests/test_env.py::test_rio_env_no_credentials
+ tests/test_rio_info.py::test_info_azure_unsigned
+
+ tests/test__env.py::test_search_debian_gdal_data
+ tests/test__env.py::test_search_gdal_data_debian
+ tests/test_warp.py::test_reproject_resampling[Resampling.cubic]
+ tests/test_warp.py::test_reproject_resampling[Resampling.lanczos]
+ tests/test_warp.py::test_reproject_resampling_alpha[Resampling.cubic]
+ tests/test_warp.py::test_reproject_resampling_alpha[Resampling.lanczos]
+
+ #tests/test_warp.py::test_warp_from_to_file_multi
+
+ # aux-xml
+ #tests/test_dataset.py::test_files
+ #tests/test_gcps.py::test_write_read_gcps_buffereddatasetwriter
+ #tests/test_rio_edit_info.py::test_delete_nodata
+ #tests/test_update.py::test_update_nodatavals_none
+
+ # curl
+ #tests/test_warp.py::test_reproject_error_propagation
+
+ # geos
+ #tests/test_warp.py::test_transform_geom_polygon_offset
+ #tests/test_warp.py::test_transform_geom_polygon_cutting
+
+ # png
+ #tests/test_colormap.py::test_write_colormap
+ #tests/test_no_georef.py::test_write
+ #tests/test_png.py::test_write_ubyte
+ #tests/test_rio_convert.py::test_autodetect_format
+ #tests/test_rio_merge.py::test_merge_output_dataset
+ #tests/test_shutil.py::test_delete[None-png]
+ #tests/test_shutil.py::test_delete[PNG-png]
+ #tests/test_write.py::test_write__autodetect_driver[png-PNG]
+ #tests/test_write.py::test_issue2088[PNG]
+
+ # jpeg
+ #tests/test_blocks.py::test_block_size_exception
+ #tests/test_crs.py::test_read_no_crs
+ #tests/test_memoryfile.py::test_zip_file_object_read
+ #tests/test_memoryfile.py::test_vrt_memfile
+ #tests/test_memoryfile.py::test_write_plus_model_jpeg
+ #tests/test_rio_convert.py::test_format
+ #tests/test_rio_convert.py::test_format_short
+ #tests/test_rio_convert.py::test_output_opt
+ #tests/test_rio_convert.py::test_convert_overwrite_without_option
+ #tests/test_rio_convert.py::test_convert_overwrite_with_option
+ #tests/test_rio_stack.py::test_format_jpeg
+ #tests/test_rio_warp.py::test_warp_vrt_gcps
+ #tests/test_shutil.py::test_copy_strict_failure
+ #tests/test_shutil.py::test_copy_strict_silent_failure
+ #tests/test_write.py::test_write__autodetect_driver[jpg-JPEG]
+ #tests/test_write.py::test_write__autodetect_driver[jpeg-JPEG]
+ #tests/test_write.py::test_issue2088[JPEG]
+
+ # threads
+ #tests/test_thread_pool_executor.py::test_threads_main_env
+ #tests/test_threading.py::test_child_thread_inherits_env
+ )
+
+ mv rasterio{,.bak} || die # Avoid non-working local import
+ epytest ${deselect[@]/#/--deselect }
+ mv rasterio{.bak,} || die
+}
diff --git a/dev-python/snuggs/Manifest b/dev-python/snuggs/Manifest
new file mode 100644
index 0000000..9a7f7dd
--- /dev/null
+++ b/dev-python/snuggs/Manifest
@@ -0,0 +1,3 @@
+DIST snuggs-1.4.7.tar.gz 7762 BLAKE2B fae10c4e6f759219cbecdbea4b8f49001980824fe1d43fba9d5b62837a88183d1ecb6f55e191b637048e03856b1c6466cb17a9c38dfa332537d8968c8510fc25 SHA512 c1f40e521d1b0cf15075b22b04000c74ecbd0522cdd820b8c159aac812924d877349b3f3bca93b09eed5b025a34c26665a41c7a52a8145419558b115cf8ef361
+EBUILD snuggs-1.4.7.ebuild 603 BLAKE2B 5f33a3a47380fabbdea0708f16f47afa6a96d9ef3e3f3253f831fbff444a1bbd29d49287b67e70199247f00600da3b5238060d0046dc9d7b9c7d0c7803cb9e6a SHA512 3a9ca3ac8c977fb4917f8972748237083622ff0af71a9303c036589880ce0b1e744b260d5db8ffe2e68aee6a2c79645e21624583e7c093ba86780732933713fa
+MISC metadata.xml 646 BLAKE2B 900fd067f2df4fcb89c6ed9fb25b9fa790f2f7885564bf75a97d3913eea50e2c3e3a5a0a21af25ad73ecfad2c8193a3233b3c02b5d1f7306203ea5135239cc0d SHA512 344a1a0b286e341768a72d931d047d0dc63fc752c4fe628acca7f89ae1c7c2c22a0f492abf8e28521838f55bf073980d1a531e4121531dfefb16f0b799883fd0
diff --git a/dev-python/snuggs/metadata.xml b/dev-python/snuggs/metadata.xml
new file mode 100644
index 0000000..1939015
--- /dev/null
+++ b/dev-python/snuggs/metadata.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ sci@gentoo.org
+ Gentoo Science Project
+
+
+ Snuggs library parses S-expressions using numpy. Available function
+ include arithmetic and logical operators. Also members of the numpy
+ module such as "asarray()", "mean()" and "where" are available.
+
+
+ mapbox/snuggs
+ snuggs
+
+
diff --git a/dev-python/snuggs/snuggs-1.4.7.ebuild b/dev-python/snuggs/snuggs-1.4.7.ebuild
new file mode 100644
index 0000000..ebae883
--- /dev/null
+++ b/dev-python/snuggs/snuggs-1.4.7.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+DISTUTILS_USE_PEP517="setuptools"
+inherit distutils-r1
+
+DESCRIPTION="S-expressions for numpy"
+HOMEPAGE="https://github.com/mapbox/snuggs"
+SRC_URI="https://github.com/mapbox/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? ( dev-python/hypothesis[${PYTHON_USEDEP}] )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/vispy/Manifest b/dev-python/vispy/Manifest
new file mode 100644
index 0000000..62fd665
--- /dev/null
+++ b/dev-python/vispy/Manifest
@@ -0,0 +1,11 @@
+AUX vispy-0.12.0-use-local-demo-data.patch 7304 BLAKE2B d35e9b7a919f10eb558c44e28b8ad6204a9e8eb9a43eaa70e097a3f30149bf38a2d9c71f9ac03336d24e1950430c931a8df220c57c23b1656eb850f29a08148b SHA512 7d0f7bf0f6471071ff091bee24f2fb9881119e926206d28f5a16d67ac556e61a34727769e7e0fedb488596fe2cc6776f434de335f77bfb6ec7e813eb8b12f82d
+DIST vispy-0.12.1.tar.gz 2461071 BLAKE2B 78198a1ced391e9b9f8c2f1cbfcd857276f33eba6575455672fd4caed420164dc66750313c9c0afd40c7217a3c513fb22b7d650068c7c2079d28a0de1163722d SHA512 e3988a843a7ce0c74a4d792c7ec848140f621b0db0ebc5d754ee016bc600b2e8ca33606a7463e2e61ed624c51952cd8745182f60a25928f6838fe27b67717b89
+DIST vispy-20190506-d-crate.npz 77690 BLAKE2B e7335331551ca263df9d266bd7f333d42ab31af5bf1472613e8f4b91c8f511d6bf260e8e6995523b3349d993ebdb12620a54aaa80669d120bb3c5acd0323de24 SHA512 fed07482ef2ce2471fee1f7d82ec8b07610b42749d913051c98b6b018853fe8536831f6685586731d122175a33621c81cb55faed3ed689e4d34821df85b79961
+DIST vispy-20190506-d-mona_lisa_sm.png 837399 BLAKE2B 1053de94a98fdfea51fd40bc27d550030e7da27605db517283cc3394323daa03f25d9b7c7d1e08032065f9ff6eae34db892f54601eb45f4efcd38b5279b92aa7 SHA512 91c09bafb5f87849b17fffe99736eb905a6778ad1fcfb29548149ad45f952a75668bec019dfc0b67989fed85bbf8c79ca9832bb4386b1082bc41f55e1e08d924
+DIST vispy-20190506-d-mri.npz 4074541 BLAKE2B 3e561213b34cff7e69e2606352f25c58ed3f9cb3158255826fdc54fd6ed71d607ce730547c03042c4668f99ae424348e1500cc42fb1d425f6b91d7f3f0d691a8 SHA512 d31eea95908429250f609fff56a4d6a5650117e5c868e99b3d087c12d098d238305d7bee31ebe2fb37dbbcd6cd347892a0421785c65801d46fc6bae79570972a
+DIST vispy-20190506-d-spot.obj.gz 108255 BLAKE2B 15ef6bd58fa1bc29414ca51cc4563ab4be73ccf961b253ae7afbaf3210fd432e968220f86e58672f92cef2ed525300fb0ff0365eb0c9597d684d7650bf218398 SHA512 c354258c48ca5a7fa2f0838a977cc46cc65f5a6b9c36ad70f16e992bac44ced1c1ea3c2a1fc61103288717b8b851e0f4a830bfaa904d1c806d2922c1c8c0894e
+DIST vispy-20190506-d-spot.png 78699 BLAKE2B 8188da450812f6f2457685915e7183c740cd6f0ce765122205eb85409c2645d18fd6be5236cb6d072a81e7674ebcbd3daa7efcbf1db7936ffabc021e10ef3dba SHA512 0a548d57a35c93cc95109111a4edeea8042f7e5b264a2ff10bf2610ed0d39a4f4c48e8d4e15ff9c663db9162d119044236309eb9679a9291790372872a7a4a06
+DIST vispy-20190506-d-stent.npz 824612 BLAKE2B 47d93e7f66937a39c17e8b4491977c072f35e0d459eb304c1dc0115345415a439c5bff92252d43452e98ad74c5cef16e80077b8aa826aa4cd50aea1b0f388f8d SHA512 00ba59177f5dd20687c56f549b3f24b312971202f9d641b54d33e5a1eb98f6a9635b5d17e89c00062755f669d1fa5a14fa88474f35bce7a7fea011f16e7b2fa9
+DIST vispy-20190506-d-triceratops.obj.gz 143970 BLAKE2B 932f7b655f6d200174f5081d66453bb2c36d6a97600b91e863f5172c4765bcc95c2b7e7e3c58a95735d6228096533c37f494b4b047d718f9d35d3a83fc269cc8 SHA512 6f2236e7f2c96b2055f60355979d766847b0b9c44f6a2a931a0bae4e56f50328260a54cc34c5bbf506f3c162684c581d54d67ec8389964c62645a2f3e721f0f0
+EBUILD vispy-0.12.1.ebuild 3811 BLAKE2B 5c86a4683dba59f52da8c66caa05c9ffa86148a4ef996aca43d7cc31b375d343a88d5bb2b596eb4690a047423bd10f98d0057f6964d56c6b422295644d9503b4 SHA512 166cd04aa3d07601bb27528e8f5d014ab554e54bffea113f639de9d9da9373010536f65acd8531cc3459a259ca0668269b064e577b28b89d3ba9556c9da83c93
+MISC metadata.xml 1456 BLAKE2B fc50e63b861486204d61e43f30da8482b9ed93aeaed63db6138f91e514b20c0253a3ecb0ae5a1fa91b4880efbce659403cd4f0022277c6cabba147ac0f799606 SHA512 e6b44279855e4f127e46a8953bc9a74b60f6a706a49f584de1a12e56f8d2994b5f8c13e36aeaa1dc7e713ae2299ef91a4e39c9c03325d3bb4bb3abd38c58c873
diff --git a/dev-python/vispy/files/vispy-0.12.0-use-local-demo-data.patch b/dev-python/vispy/files/vispy-0.12.0-use-local-demo-data.patch
new file mode 100644
index 0000000..ef6b97f
--- /dev/null
+++ b/dev-python/vispy/files/vispy-0.12.0-use-local-demo-data.patch
@@ -0,0 +1,180 @@
+--- a/examples/plotting/volume_plot.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/plotting/volume_plot.py 2022-07-26 20:45:34.932699691 +0800
+@@ -15,7 +15,8 @@
+
+ fig = vp.Fig(bgcolor='k', size=(800, 800), show=False)
+
+-vol_data = np.load(io.load_data_file('brain/mri.npz'))['data']
++try: vol_data = np.load(io.load_data_file('brain/mri.npz'))['data']
++except Exception: vol_data = np.load('mri.npz')['data']
+ vol_data = np.flipud(np.rollaxis(vol_data, 1))
+ vol_data = vol_data.astype(np.float32)
+
+--- a/examples/scene/clipping_planes.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/clipping_planes.py 2022-07-26 19:36:08.699950700 +0800
+@@ -24,7 +24,8 @@
+ view = canvas.central_widget.add_view()
+
+ # Create the visuals
+-vol = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++try: vol = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++except Exception: vol = np.load('stent.npz')['arr_0']
+ volume = scene.visuals.Volume(vol, parent=view.scene, threshold=0.225)
+
+ np.random.seed(1)
+--- a/examples/scene/contour.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/contour.py 2022-07-26 14:56:04.667132876 +0800
+@@ -24,7 +24,8 @@
+ view = canvas.central_widget.add_view()
+
+ interpolation = 'cubic'
+-img_data = read_png(load_data_file('mona_lisa/mona_lisa_sm.png'))
++try: img_data = read_png(load_data_file('mona_lisa/mona_lisa_sm.png'))
++except Exception: img_data = read_png('mona_lisa_sm.png')
+ image = scene.visuals.Image(img_data, interpolation=interpolation,
+ parent=view.scene, method='impostor')
+ level = 10
+--- a/examples/scene/flipped_axis.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/flipped_axis.py 2022-07-26 19:37:26.926953177 +0800
+@@ -27,7 +27,8 @@
+ from vispy import app, scene, io
+
+ # Read volume
+-vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++try: vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++except Exception: vol1 = np.load('stent.npz')['arr_0']
+
+ # Prepare canvas
+ canvas = scene.SceneCanvas(keys='interactive', size=(800, 600), show=True)
+--- a/examples/scene/image_custom_kernel.py 2022-11-08 17:13:28.000000000 +0800
++++ b/examples/scene/image_custom_kernel.py 2022-11-11 18:48:20.187045450 +0800
+@@ -32,10 +32,14 @@
+ view = canvas.central_widget.add_view()
+
+ # Load the image with a slight blur (so we can later show the sharpening filter)
+-img_data = gaussian_filter(
+- read_png(load_data_file('mona_lisa/mona_lisa_sm.png')),
+- sigma=1,
+-)
++try: img_data = gaussian_filter(
++ read_png(load_data_file('mona_lisa/mona_lisa_sm.png')),
++ sigma=1,
++ )
++except Exception: img_data = gaussian_filter(
++ read_png('mona_lisa_sm.png'),
++ sigma=1,
++ )
+
+ # build gaussian kernel
+ small_gaussian_window = gaussian(5, 1)
+--- a/examples/scene/image.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/image.py 2022-07-26 19:28:07.967807623 +0800
+@@ -25,7 +25,8 @@
+ view = canvas.central_widget.add_view()
+
+ # Create the image
+-img_data = read_png(load_data_file('mona_lisa/mona_lisa_sm.png'))
++try: img_data = read_png(load_data_file('mona_lisa/mona_lisa_sm.png'))
++except Exception: img_data = read_png('mona_lisa_sm.png')
+ interpolation = 'nearest'
+
+ image = scene.visuals.Image(img_data, interpolation=interpolation,
+--- a/examples/scene/mesh_normals.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/mesh_normals.py 2022-07-26 19:44:23.872044303 +0800
+@@ -17,7 +17,8 @@
+ from vispy.visuals.filters import WireframeFilter
+
+
+-mesh_file = load_data_file('orig/triceratops.obj.gz')
++try: mesh_file = load_data_file('orig/triceratops.obj.gz')
++except Exception: mesh_file = 'triceratops.obj.gz'
+ vertices, faces, _, _ = read_mesh(mesh_file)
+
+ mesh = Mesh(vertices, faces, shading='flat')
+--- a/examples/scene/mesh_shading.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/mesh_shading.py 2022-07-26 19:50:49.250307944 +0800
+@@ -21,7 +21,8 @@
+
+
+ parser = argparse.ArgumentParser()
+-default_mesh = load_data_file('orig/triceratops.obj.gz')
++try: default_mesh = load_data_file('orig/triceratops.obj.gz')
++except Exception: default_mesh = 'triceratops.obj.gz'
+ parser.add_argument('--mesh', default=default_mesh)
+ parser.add_argument('--shininess', default=100)
+ parser.add_argument('--wireframe-width', default=1)
+--- a/examples/scene/mesh_texture.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/mesh_texture.py 2022-07-26 19:30:50.795219791 +0800
+@@ -27,8 +27,10 @@
+ help="shading mode")
+ args, _ = parser.parse_known_args()
+
+-mesh_path = load_data_file('spot/spot.obj.gz')
+-texture_path = load_data_file('spot/spot.png')
++try: mesh_path = load_data_file('spot/spot.obj.gz')
++except Exception: mesh_path = 'spot.obj.gz'
++try: texture_path = load_data_file('spot/spot.png')
++except Exception: texture_path = 'spot.png'
+ vertices, faces, normals, texcoords = read_mesh(mesh_path)
+ texture = np.flipud(imread(texture_path))
+
+--- a/examples/scene/one_cam_two_scenes.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/one_cam_two_scenes.py 2022-07-26 20:29:47.386543725 +0800
+@@ -31,7 +31,8 @@
+ grid.add_widget(vb2, 0, 1)
+
+ # Create the image
+-im1 = io.load_crate().astype('float32') / 255
++try: im1 = io.load_crate().astype('float32') / 255
++except Exception: im1 = np.load('crate.npz')['crate'].astype('float32') / 255
+ # Make gray, smooth, and take derivatives: edge enhancement
+ im2 = im1[:, :, 1]
+ im2 = (im2[1:-1, 1:-1] + im2[0:-2, 1:-1] + im2[2:, 1:-1] +
+--- a/examples/scene/one_scene_four_cams.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/one_scene_four_cams.py 2022-07-26 20:31:14.493566153 +0800
+@@ -20,6 +20,8 @@
+
+ import sys
+
++import numpy as np
++
+ from vispy import app, scene, io
+
+ canvas = scene.SceneCanvas(keys='interactive')
+@@ -42,7 +44,8 @@
+ grid.add_widget(vb4, 1, 1)
+
+ # Create some visuals to show
+-im1 = io.load_crate().astype('float32') / 255
++try: im1 = io.load_crate().astype('float32') / 255
++except Exception: im1 = np.load('crate.npz')['crate'].astype('float32') / 255
+ for par in scenes:
+ image = scene.visuals.Image(im1, grid=(20, 20), parent=par)
+
+--- a/examples/scene/volume_plane.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/volume_plane.py 2022-07-26 20:30:56.050157494 +0800
+@@ -25,7 +25,8 @@
+ from vispy.visuals.transforms import STTransform
+
+ # Read volume
+-vol = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++try: vol = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++except Exception: vol = np.load('stent.npz')['arr_0']
+
+ # Prepare canvas
+ canvas = scene.SceneCanvas(keys='interactive', show=True)
+--- a/examples/scene/volume.py 2022-07-04 22:38:36.000000000 +0800
++++ b/examples/scene/volume.py 2022-07-26 20:22:35.644780291 +0800
+@@ -39,8 +39,10 @@
+ from vispy.visuals.transforms import STTransform
+
+ # Read volume
+-vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
+-vol2 = np.load(io.load_data_file('brain/mri.npz'))['data']
++try: vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
++except Exception: vol1 = np.load('stent.npz')['arr_0']
++try: vol2 = np.load(io.load_data_file('brain/mri.npz'))['data']
++except Exception: vol2 = np.load('mri.npz')['data']
+ vol2 = np.flipud(np.rollaxis(vol2, 1))
+
+ # Prepare canvas
diff --git a/dev-python/vispy/metadata.xml b/dev-python/vispy/metadata.xml
new file mode 100644
index 0000000..bce7cf3
--- /dev/null
+++ b/dev-python/vispy/metadata.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ universebenzene@sina.com
+ Astro Benzene
+
+
+ VisPy is a high-performance interactive 2D/3D data visualization library.
+ VisPy leverages the computational power of modern Graphics Processing Units (GPUs)
+ through the OpenGL library to display very large datasets.
+
+
+ vispy
+ vispy/vispy
+
+
+
diff --git a/dev-python/vispy/vispy-0.12.1.ebuild b/dev-python/vispy/vispy-0.12.1.ebuild
new file mode 100644
index 0000000..048ea3f
--- /dev/null
+++ b/dev-python/vispy/vispy-0.12.1.ebuild
@@ -0,0 +1,113 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..10} )
+
+DATA_COM="5a3db8447d3e13ed402545662f20f5ff191a6d42"
+DATA_DATE="20190506"
+
+inherit distutils-r1 virtualx xdg-utils
+
+DESCRIPTION="Interactive visualization in Python"
+HOMEPAGE="http://vispy.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz
+ doc? (
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/mona_lisa/mona_lisa_sm.png -> ${PN}-${DATA_DATE}-d-mona_lisa_sm.png
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/spot/spot.obj.gz -> ${PN}-${DATA_DATE}-d-spot.obj.gz
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/spot/spot.png -> ${PN}-${DATA_DATE}-d-spot.png
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/volume/stent.npz -> ${PN}-${DATA_DATE}-d-stent.npz
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/orig/triceratops.obj.gz -> ${PN}-${DATA_DATE}-d-triceratops.obj.gz
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/orig/crate.npz -> ${PN}-${DATA_DATE}-d-crate.npz
+ https://github.com/vispy/demo-data/raw/${DATA_COM}/brain/mri.npz -> ${PN}-${DATA_DATE}-d-mri.npz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64" # no x86 KEYWORD for meshio PyQt6 pyside6
+IUSE="examples io ipython-static pyglet +pyqt5 pyqt6 pyside2 pyside6 sdl2 wx"
+PROPERTIES="test_network"
+RESTRICT="test"
+REQUIRED_USE="|| ( pyglet pyqt5 pyqt6 pyside2 pyside6 sdl2 wx )"
+
+DEPEND="dev-python/numpy[${PYTHON_USEDEP}]"
+RDEPEND="${DEPEND}
+ dev-python/freetype-py[${PYTHON_USEDEP}]
+ dev-python/hsluv[${PYTHON_USEDEP}]
+ dev-python/kiwisolver[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ io? (
+ dev-python/meshio[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ )
+ ipython-static? ( dev-python/ipython[${PYTHON_USEDEP}] )
+ pyglet? ( >=dev-python/pyglet-1.2[${PYTHON_USEDEP}] )
+ pyqt5? ( dev-python/PyQt5[${PYTHON_USEDEP},gui,testlib,widgets] )
+ pyqt6? ( dev-python/PyQt6[${PYTHON_USEDEP},gui,testlib,widgets] )
+ pyside2? ( dev-python/pyside2[${PYTHON_USEDEP},gui,testlib,widgets] )
+ pyside6? ( dev-python/pyside6[${PYTHON_USEDEP},gui,testlib,widgets] )
+ sdl2? ( dev-python/PySDL2[${PYTHON_USEDEP}] )
+ wx? ( dev-python/wxpython[${PYTHON_USEDEP}] )
+"
+BDEPEND="dev-python/setuptools_scm_git_archive[${PYTHON_USEDEP}]
+ >=dev-python/cython-0.29.2[${PYTHON_USEDEP}]
+ doc? (
+ media-libs/fontconfig
+ virtual/opengl
+ )
+ test? (
+ dev-python/imageio[${PYTHON_USEDEP}]
+ dev-python/meshio[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ dev-python/numpydoc[${PYTHON_USEDEP}]
+ dev-python/pyopengl[${PYTHON_USEDEP}]
+ dev-python/sphinx-gallery[${PYTHON_USEDEP}]
+ media-libs/fontconfig
+ virtual/opengl
+ )
+"
+
+distutils_enable_tests pytest
+# QThread: Destroyed while thread is still running
+distutils_enable_sphinx doc dev-python/sphinx-gallery \
+ dev-python/sphinxcontrib-apidoc \
+ dev-python/pydata-sphinx-theme \
+ dev-python/imageio \
+ dev-python/myst_parser \
+ dev-python/networkx \
+ dev-python/numpydoc \
+ dev-python/pyopengl \
+ dev-python/pytest
+
+python_prepare_all() {
+ use doc && { eapply "${FILESDIR}"/${PN}-0.12.0-use-local-demo-data.patch ; \
+ for dat in "${DISTDIR}"/*-d-*; do { cp ${dat} "${S}"/examples/scene/${dat##*-d-} || die ; } ; done ; \
+ cp {"${DISTDIR}"/${PN}-${DATA_DATE}-d-,"${S}"/examples/plotting/}mri.npz || die ; }
+ xdg_environment_reset
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ if use doc; then
+ cp "${BUILD_DIR}"/install/$(python_get_sitedir)/${PN}/visuals/text/*.cpython*so ${PN}/visuals/text || die
+ virtx sphinx_compile_all
+ fi
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ docinto examples
+ dodoc -r examples/.
+ fi
+
+ distutils-r1_python_install_all
+}
+
+python_test() {
+ virtx epytest "${BUILD_DIR}"
+}
diff --git a/gnome-extra/gnome-shell-extension-gsconnect/Manifest b/gnome-extra/gnome-shell-extension-gsconnect/Manifest
index 8f623aa..1387ad2 100644
--- a/gnome-extra/gnome-shell-extension-gsconnect/Manifest
+++ b/gnome-extra/gnome-shell-extension-gsconnect/Manifest
@@ -1,4 +1,6 @@
DIST gnome-shell-extension-gsconnect-53.tar.gz 729500 BLAKE2B 5cb841d67ee9021b3402420104dd8f74d94c2ed50c45182aec24fd2a39a4f30bab2167192c6cd701e211c3fa12b3a92a5dc18e92867eaee5dd233f107ddf6e42 SHA512 fa2ed1755180446b7e5a203f70a8fa098771380296ceb7f72c9c862a71e0baa8c8b9d34294e6608d6dad149bb98ff9fc224fd0b37bf8f532397df6f7587102c0
+DIST gnome-shell-extension-gsconnect-54.tar.gz 879104 BLAKE2B 7d666775fc1ddf3ca76f59d2047b85cbc35f9953883941d1bca93f8711dcbf7ed5b8be697c300c13edf2195ffab10aa8f7edc7cbc6fde3d09797155f47349706 SHA512 9a3cae1cfaf3cc66dde3de1d74f68df7817abce86a8f68d6f93151f9e750d797ad75667bcf532f818c1b6d5ddc57d2721225aa6bc499b46593f87c5721e98622
EBUILD gnome-shell-extension-gsconnect-53.ebuild 1613 BLAKE2B 256af71a27da58c575b4f32818aa1a956dca48a9aaba40be0f51d6aa38cf0d83cc6dfea30b5f0f4315c5cc1c0802046cb17176e68c266a701a67a5cf948e4db8 SHA512 91d8197acdd565c4c64ab8035c57cbd45698b9e7a4646c4c195b6ad1681526885d0011fca6e9a8f716e94f77293ed2d5d44c6130e3dad280dab78e026c25e6e9
-EBUILD gnome-shell-extension-gsconnect-9999.ebuild 1772 BLAKE2B 1a5a047879e31b5ed85e149659c1ce14608455db8f086fe77071a5ed470ec714f484551929e1594183f576abf0486f1d98205d90f8340d398da47497513b094c SHA512 2b2b38128cd1f7e8f7fd82ed7add56e3e7252a71915116292a83036adc7097060da2ca50456dbac72c876247905f510eadc0a7508c9edca491e710d54eb33057
+EBUILD gnome-shell-extension-gsconnect-54.ebuild 1612 BLAKE2B ac48425772f28ed7dce83d309597dd1323f5b67cb2eec8d04f11fdcf91ad2f5284f372e1de5117272ebcfc0be333ee722c2b79b923e1faea0183976b899900f0 SHA512 7d215384fb4c8e67e4cddbc1f3534d1c829d1aa597991d682f0134c97e79db4233f001f2d658c32538b1c5d1a1cb384fe8b251bdf34ee2100e54daf626224287
+EBUILD gnome-shell-extension-gsconnect-9999.ebuild 1750 BLAKE2B b97888ace4d269e1163b05210b0f4f1062c568643f699b8e07aca774b754993bef201124a5d3a6b1698d4a72ee97d7eb971f91cbf2672f55d61f78e301205ee6 SHA512 e90d8a28c5a98ae6dae27b5c68fd8988372238d704ac37b5448addc1dd38bebbadbc4d333baea58718bd3944816d6d19d349ffed5771b0ec282a54a193ce7ef0
MISC metadata.xml 346 BLAKE2B d1e2c79cae69a58f7af962316046f4620238b88d42e0f211a28ba271633993bae4df79956ab9dde4f4e94e7e77233288657d5b3c1876c9192118a11ee5ee678f SHA512 00b2e45892280f1a042b3ec03d66c3fcc7a2b95f94534d22fb8df936976384bb78433337b339ae023ae9850f2e4c0cfb8b12fae28ae7863d2ebe93a47784a77a
diff --git a/gnome-extra/gnome-shell-extension-gsconnect/gnome-shell-extension-gsconnect-54.ebuild b/gnome-extra/gnome-shell-extension-gsconnect/gnome-shell-extension-gsconnect-54.ebuild
new file mode 100644
index 0000000..8e62cd4
--- /dev/null
+++ b/gnome-extra/gnome-shell-extension-gsconnect/gnome-shell-extension-gsconnect-54.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit gnome2-utils meson readme.gentoo-r1 xdg
+
+DESCRIPTION="KDE Connect implementation for Gnome Shell"
+HOMEPAGE="https://github.com/GSConnect/gnome-shell-extension-gsconnect"
+SRC_URI="https://github.com/GSConnect/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="nautilus"
+
+COMMON_DEPEND="dev-libs/glib:2"
+RDEPEND="${COMMON_DEPEND}
+ app-eselect/eselect-gnome-shell-extensions
+ >=dev-libs/gjs-1.68
+