diff --git a/dev-games/surgescript/surgescript-0.5.4.ebuild b/dev-games/surgescript/surgescript-0.5.4.ebuild
index 63ebe50f3e..2df1bdd4fc 100644
--- a/dev-games/surgescript/surgescript-0.5.4.ebuild
+++ b/dev-games/surgescript/surgescript-0.5.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019 Gentoo Authors
+# Copyright 2019-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -17,4 +17,17 @@ DESCRIPTION="scripting language made for opensurge"
HOMEPAGE="https://alemart.github.io/surgescript"
LICENSE="Apache-2.0"
SLOT="0"
-# TODO: build documentation, needs dev-python/mkdocs-material
+
+IUSE="doc"
+
+BDEPEND="doc? (
+ dev-python/mkdocs
+ dev-python/mkdocs-material )"
+
+src_compile() {
+ default
+ if use doc; then
+ mkdocs build || die "failed to make docs"
+ HTML_DOCS="site"
+ fi
+}
diff --git a/dev-games/surgescript/surgescript-9999.ebuild b/dev-games/surgescript/surgescript-9999.ebuild
index 63ebe50f3e..2df1bdd4fc 100644
--- a/dev-games/surgescript/surgescript-9999.ebuild
+++ b/dev-games/surgescript/surgescript-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019 Gentoo Authors
+# Copyright 2019-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -17,4 +17,17 @@ DESCRIPTION="scripting language made for opensurge"
HOMEPAGE="https://alemart.github.io/surgescript"
LICENSE="Apache-2.0"
SLOT="0"
-# TODO: build documentation, needs dev-python/mkdocs-material
+
+IUSE="doc"
+
+BDEPEND="doc? (
+ dev-python/mkdocs
+ dev-python/mkdocs-material )"
+
+src_compile() {
+ default
+ if use doc; then
+ mkdocs build || die "failed to make docs"
+ HTML_DOCS="site"
+ fi
+}
diff --git a/dev-lang/aldor/aldor-1.2.0_p20190730.ebuild b/dev-lang/aldor/aldor-1.2.0_p20190730.ebuild
index 24016c735a..ffecfcf988 100644
--- a/dev-lang/aldor/aldor-1.2.0_p20190730.ebuild
+++ b/dev-lang/aldor/aldor-1.2.0_p20190730.ebuild
@@ -30,11 +30,11 @@ PATCHES=( "${FILESDIR}/respect-flags.diff" )
CDEPEND="
boehm-gc? ( dev-libs/boehm-gc )
emacs? ( app-editors/emacs:= )
- java? ( dev-java/junit )
+ java? ( dev-java/junit:= )
"
RDEPEND="
${CDEPEND}
- java? ( virtual/jre:1.8 )
+ java? ( virtual/jre:1.8 )
"
DEPEND="
${CDEPEND}
diff --git a/dev-lang/fbc/fbc-1.06.0.ebuild b/dev-lang/fbc/fbc-1.06.0.ebuild
index 11efb627e9..709f2a8683 100644
--- a/dev-lang/fbc/fbc-1.06.0.ebuild
+++ b/dev-lang/fbc/fbc-1.06.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -18,7 +18,7 @@ IUSE="gpm libffi opengl X"
DEPEND="
sys-libs/ncurses:=
gpm? ( sys-libs/gpm )
- libffi? ( virtual/libffi )
+ libffi? ( dev-libs/libffi )
opengl? ( virtual/opengl )
X? (
x11-libs/libX11
diff --git a/dev-lang/fbc/fbc-1.07.0.ebuild b/dev-lang/fbc/fbc-1.07.0.ebuild
index 83399ea73b..e48cfbafda 100644
--- a/dev-lang/fbc/fbc-1.07.0.ebuild
+++ b/dev-lang/fbc/fbc-1.07.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -16,7 +16,7 @@ IUSE="gpm libffi opengl X"
DEPEND="
sys-libs/ncurses:=
gpm? ( sys-libs/gpm )
- libffi? ( virtual/libffi )
+ libffi? ( dev-libs/libffi )
opengl? ( virtual/opengl )
X? (
x11-libs/libX11
diff --git a/dev-lang/fbc/fbc-1.07.1.ebuild b/dev-lang/fbc/fbc-1.07.1.ebuild
index 83399ea73b..e48cfbafda 100644
--- a/dev-lang/fbc/fbc-1.07.1.ebuild
+++ b/dev-lang/fbc/fbc-1.07.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -16,7 +16,7 @@ IUSE="gpm libffi opengl X"
DEPEND="
sys-libs/ncurses:=
gpm? ( sys-libs/gpm )
- libffi? ( virtual/libffi )
+ libffi? ( dev-libs/libffi )
opengl? ( virtual/opengl )
X? (
x11-libs/libX11
diff --git a/dev-python/GitPython/GitPython-3.1.0.ebuild b/dev-python/GitPython/GitPython-3.1.0.ebuild
new file mode 100644
index 0000000000..c6bc5348d4
--- /dev/null
+++ b/dev-python/GitPython/GitPython-3.1.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="A python library used to interact with Git repositories"
+HOMEPAGE="https://github.com/gitpython-developers/GitPython"
+SRC_URI="https://github.com/gitpython-developers/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RESTRICT="test" #requires git repository
+
+RDEPEND="dev-python/gitdb2[${PYTHON_USEDEP}]"
+
+BDEPEND="test? ( dev-python/ddt[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests nose
+distutils_enable_sphinx doc/source dev-python/sphinx_rtd_theme
diff --git a/dev-python/GitPython/Manifest b/dev-python/GitPython/Manifest
new file mode 100644
index 0000000000..c7e483566c
--- /dev/null
+++ b/dev-python/GitPython/Manifest
@@ -0,0 +1 @@
+DIST GitPython-3.1.0.tar.gz 441018 BLAKE2B ccccc6134abc6cf12a8a484f55465ceac52a118e17901f15443aabe4333a917012877fe7ea58b1cbf97fcbd030005e61c782d9f1d19b4d26fa27515b82de1a81 SHA512 29d01a8b3a484fc62521b7f03a75e801d7b98e007652956f73e5532d064992f802cf6f1da2c380b66cfb55a2d0a487b8f28199fd241136a7d74df02f41859c3c
diff --git a/dev-python/GitPython/metadata.xml b/dev-python/GitPython/metadata.xml
new file mode 100644
index 0000000000..628ab20176
--- /dev/null
+++ b/dev-python/GitPython/metadata.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/dev-python/httpx/Manifest b/dev-python/httpx/Manifest
index 6146f31164..c6114ba104 100644
--- a/dev-python/httpx/Manifest
+++ b/dev-python/httpx/Manifest
@@ -1 +1,2 @@
-DIST httpx-0.11.1.tar.gz 65974 BLAKE2B fabf6f8e9b48ad3ccc79c72c42ad007819a065d74c8c0d7225550cc2e223626b896b57378ad989c7f04b17e70d1941873addcec2507afefde0801f4eaa6d3f43 SHA512 0203d348739b450fec1f386778136f8591d0177f58eff68d3887348f1e379bfd7da98b87a80b195d023ce17e1442989a52765704be18088166593211a23b84ad
+DIST httpx-0.11.1.tar.gz 177579 BLAKE2B a5722e997a79fd9b5c701a862abb4bf70458bf57057d2a9fb9a2dccdbbca2f4f54bf59e91437ed8ff452737a3b01d69dbf4efe3ef03d49e240bc5bf54e51ebea SHA512 4da80a0232092d2423fd95d4549df79d9885e6ce34af0480f1d5a4904c9ca0fdb725b600f603c482179ea3b7c6ee5b584a70b8c0722918ba28f1bcc5c48201ad
+DIST httpx-0.12.0.tar.gz 186138 BLAKE2B d350a156e1663a197e2f7ab43531735e08da0d5b68df2d75e8cd2396b82095668318ecc0ca0558736f97f56ad72970ebf36fe34706b3d65e6d59fabd0ba75431 SHA512 a50c6a1686f3224ad906383d6d25cde8006d4514a9d079be06e9c255f4efdc9b1859e5523d39be484c09c930d1cf84feb15374d7d0904a6c1d903b62b7caa9f5
diff --git a/dev-python/httpx/httpx-0.11.1.ebuild b/dev-python/httpx/httpx-0.11.1.ebuild
index 0e11ec8124..1de54b57f7 100644
--- a/dev-python/httpx/httpx-0.11.1.ebuild
+++ b/dev-python/httpx/httpx-0.11.1.ebuild
@@ -10,12 +10,15 @@ inherit distutils-r1
DESCRIPTION="A next generation HTTP client for Python"
HOMEPAGE="https://www.python-httpx.org
https://github.com/encode/httpx"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
KEYWORDS="~amd64 ~x86"
SLOT="0"
+IUSE="doc"
+REQUIRED_USE="x86? ( !doc )"
+
RDEPEND="dev-python/certifi[${PYTHON_USEDEP}]
dev-python/chardet[${PYTHON_USEDEP}]
dev-python/hstspreload[${PYTHON_USEDEP}]
@@ -25,3 +28,45 @@ RDEPEND="dev-python/certifi[${PYTHON_USEDEP}]
dev-python/rfc3986[${PYTHON_USEDEP}]
dev-python/sniffio[${PYTHON_USEDEP}]
dev-python/urllib3[${PYTHON_USEDEP}]"
+
+BDEPEND="doc? ( !x86? (
+ dev-python/mkdocs
+ dev-python/mkautodoc
+ dev-python/mkdocs-material ) )"
+
+DEPEND="test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/brotlipy[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/isort[${PYTHON_USEDEP}]
+ dev-python/flake8[${PYTHON_USEDEP}]
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ dev-python/uvicorn[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # do not depend on pytest-cov
+ sed -i -e '/addopts/d' setup.cfg || die
+
+ # requires internet connection
+ sed -i -e 's:test_start_tls_on_tcp_socket_stream:_&:' \
+ -e 's:test_start_tls_on_uds_socket_stream:_&:' \
+ tests/test_concurrency.py || die
+
+ sed -i -e 's:test_http2_live_request:_&:' \
+ tests/dispatch/test_http2.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ default
+ if use doc; then
+ mkdocs build || die "failed to make docs"
+ HTML_DOCS="site"
+ fi
+}
diff --git a/dev-python/httpx/httpx-0.12.0.ebuild b/dev-python/httpx/httpx-0.12.0.ebuild
new file mode 100644
index 0000000000..1de54b57f7
--- /dev/null
+++ b/dev-python/httpx/httpx-0.12.0.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="A next generation HTTP client for Python"
+HOMEPAGE="https://www.python-httpx.org
+ https://github.com/encode/httpx"
+SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+
+IUSE="doc"
+REQUIRED_USE="x86? ( !doc )"
+
+RDEPEND="dev-python/certifi[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/hstspreload[${PYTHON_USEDEP}]
+ dev-python/hyper-h2[${PYTHON_USEDEP}]
+ dev-python/h11[${PYTHON_USEDEP}]
+ dev-python/idna[${PYTHON_USEDEP}]
+ dev-python/rfc3986[${PYTHON_USEDEP}]
+ dev-python/sniffio[${PYTHON_USEDEP}]
+ dev-python/urllib3[${PYTHON_USEDEP}]"
+
+BDEPEND="doc? ( !x86? (
+ dev-python/mkdocs
+ dev-python/mkautodoc
+ dev-python/mkdocs-material ) )"
+
+DEPEND="test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/brotlipy[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/isort[${PYTHON_USEDEP}]
+ dev-python/flake8[${PYTHON_USEDEP}]
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ dev-python/uvicorn[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # do not depend on pytest-cov
+ sed -i -e '/addopts/d' setup.cfg || die
+
+ # requires internet connection
+ sed -i -e 's:test_start_tls_on_tcp_socket_stream:_&:' \
+ -e 's:test_start_tls_on_uds_socket_stream:_&:' \
+ tests/test_concurrency.py || die
+
+ sed -i -e 's:test_http2_live_request:_&:' \
+ tests/dispatch/test_http2.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ default
+ if use doc; then
+ mkdocs build || die "failed to make docs"
+ HTML_DOCS="site"
+ fi
+}
diff --git a/dev-python/mkdocs-git-revision-date-localized-plugin/Manifest b/dev-python/mkdocs-git-revision-date-localized-plugin/Manifest
new file mode 100644
index 0000000000..683e4049e3
--- /dev/null
+++ b/dev-python/mkdocs-git-revision-date-localized-plugin/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-git-revision-date-localized-plugin-0.4.6.tar.gz 73632 BLAKE2B 4a8df23409be8e2059fb025a77e20bdf36cdf2696f0b4d86fff3b5157d6836612e8d92ad570ceb5235c70f81219c9405f6efabd33e4d4791377f1ff555729f36 SHA512 c8c5ed30185d4c97d5dd2acfbd2c7b42ccaa679098ff3cc28dfad50c21b53e1c9a72a71928c136e2137416600065ce60afd9a24f7b5f2d08180d52d9b1704cf7
diff --git a/dev-python/mkdocs-git-revision-date-localized-plugin/metadata.xml b/dev-python/mkdocs-git-revision-date-localized-plugin/metadata.xml
new file mode 100644
index 0000000000..628ab20176
--- /dev/null
+++ b/dev-python/mkdocs-git-revision-date-localized-plugin/metadata.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/dev-python/mkdocs-git-revision-date-localized-plugin/mkdocs-git-revision-date-localized-plugin-0.4.6.ebuild b/dev-python/mkdocs-git-revision-date-localized-plugin/mkdocs-git-revision-date-localized-plugin-0.4.6.ebuild
new file mode 100644
index 0000000000..200a5a7543
--- /dev/null
+++ b/dev-python/mkdocs-git-revision-date-localized-plugin/mkdocs-git-revision-date-localized-plugin-0.4.6.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_6 )
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1
+
+DESCRIPTION="Display the localized date of the last git modification of a markdown file"
+HOMEPAGE="https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"
+SRC_URI="https://github.com/timvink/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RESTRICT="test" # fails, mkdocs failed
+
+RDEPEND="
+ >=dev-python/Babel-2.7.0[${PYTHON_USEDEP}]
+ dev-python/GitPython[${PYTHON_USEDEP}]
+ dev-python/mkdocs[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]"
+
+DEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/mkdocs-material[${PYTHON_USEDEP}]"
+
+distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
new file mode 100644
index 0000000000..3f204ff1c8
--- /dev/null
+++ b/dev-python/mkdocs-material/Manifest
@@ -0,0 +1 @@
+DIST mkdocs-material-4.6.3.tar.gz 687321 BLAKE2B f3ddf33020f215b4eb9a9841372645dfc5a8bdf6f2bd92fe871d61b71b259af27d1f97e1f06c78e044864d9a715544cdf88ca81050e04a7a09b6e9e0cb50dafb SHA512 8d37e85cfe7f1651cec913285b67e1cf68999af0d214ee2f045c0486cb34bd984c0eef56d0b1d84690f8a5a4caffba7a1178154ab1657eecdfaad6fd3130d34d
diff --git a/dev-python/mkdocs-material/metadata.xml b/dev-python/mkdocs-material/metadata.xml
new file mode 100644
index 0000000000..628ab20176
--- /dev/null
+++ b/dev-python/mkdocs-material/metadata.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/dev-python/mkdocs-material/mkdocs-material-4.6.3.ebuild b/dev-python/mkdocs-material/mkdocs-material-4.6.3.ebuild
new file mode 100644
index 0000000000..64cac1d475
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-4.6.3.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_6 )
+
+inherit distutils-r1
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="https://github.com/squidfunk/mkdocs-material"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-6.3[${PYTHON_USEDEP}]"
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
new file mode 100644
index 0000000000..c0bed77e7b
--- /dev/null
+++ b/dev-python/pymdown-extensions/Manifest
@@ -0,0 +1 @@
+DIST pymdown-extensions-6.3.0.tar.gz 551554 BLAKE2B 718c2d98f077dac38049b458a7430e6e9d13c6516e09990c6e2acc89516ebc9717dd48e5449fd49a0f5fcdfccc55649893a6f857f62fa19edb3db3313aeac773 SHA512 08f679e242205bba9cd98de1ffc492b97c5e568ac5246cfc9a88346240058413a5b532ebd9df45fa6e973dc2d40543fe17460eaf456d88140c426f7f42045384
diff --git a/dev-python/pymdown-extensions/metadata.xml b/dev-python/pymdown-extensions/metadata.xml
new file mode 100644
index 0000000000..628ab20176
--- /dev/null
+++ b/dev-python/pymdown-extensions/metadata.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-6.3.0.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-6.3.0.ebuild
new file mode 100644
index 0000000000..4d79a54420
--- /dev/null
+++ b/dev-python/pymdown-extensions/pymdown-extensions-6.3.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extensions for Python Markdown."
+HOMEPAGE="https://github.com/facelessuser/pymdown-extensions"
+SRC_URI="https://github.com/facelessuser/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# Docs require pymdownx.tabbed which is in master on github atm
+# but not in the 6.3.0 release tarballs for some reason
+
+#IUSE="doc"
+#REQUIRED_USE="x86? ( !doc )"
+#
+#BDEPEND="doc? (
+# dev-python/mkdocs-material
+# dev-python/mkdocs-git-revision-date-localized-plugin )"
+
+RDEPEND=">=dev-python/markdown-3.2[${PYTHON_USEDEP}]"
+
+DEPEND="test? ( dev-python/pyyaml[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests pytest
+
+#python_compile_all() {
+# default
+# if use doc; then
+# mkdocs build || die "failed to make docs"
+# HTML_DOCS="site"
+# fi
+#}
diff --git a/dev-python/sphinx-autodoc-typehints/files/sphinx-autodoc-typehints-1.10.3-skip-online-tests.patch b/dev-python/sphinx-autodoc-typehints/files/sphinx-autodoc-typehints-1.10.3-skip-online-tests.patch
deleted file mode 100644
index c5a1e6eed6..0000000000
--- a/dev-python/sphinx-autodoc-typehints/files/sphinx-autodoc-typehints-1.10.3-skip-online-tests.patch
+++ /dev/null
@@ -1,772 +0,0 @@
-diff --git a/tests/test_sphinx_autodoc_typehints.py b/tests/test_sphinx_autodoc_typehints.py
-index 4287385..75bcf20 100644
---- a/tests/test_sphinx_autodoc_typehints.py
-+++ b/tests/test_sphinx_autodoc_typehints.py
-@@ -58,142 +58,142 @@ class Metaclass(type):
- pass
-
-
--@pytest.mark.parametrize('annotation, module, class_name, args', [
-- pytest.param(str, 'builtins', 'str', (), id='str'),
-- pytest.param(None, 'builtins', 'None', (), id='None'),
-- pytest.param(Any, 'typing', 'Any', (), id='Any'),
-- pytest.param(AnyStr, 'typing', 'AnyStr', (), id='AnyStr'),
-- pytest.param(Dict, 'typing', 'Dict', (), id='Dict'),
-- pytest.param(Dict[str, int], 'typing', 'Dict', (str, int), id='Dict_parametrized'),
-- pytest.param(Dict[T, int], 'typing', 'Dict', (T, int), id='Dict_typevar'),
-- pytest.param(Tuple, 'typing', 'Tuple', (), id='Tuple'),
-- pytest.param(Tuple[str, int], 'typing', 'Tuple', (str, int), id='Tuple_parametrized'),
-- pytest.param(Union[str, int], 'typing', 'Union', (str, int), id='Union'),
-- pytest.param(Callable, 'typing', 'Callable', (), id='Callable'),
-- pytest.param(Callable[..., str], 'typing', 'Callable', (..., str), id='Callable_returntype'),
-- pytest.param(Callable[[int, str], str], 'typing', 'Callable', (int, str, str),
-- id='Callable_all_types'),
-- pytest.param(Pattern, 'typing', 'Pattern', (), id='Pattern'),
-- pytest.param(Pattern[str], 'typing', 'Pattern', (str,), id='Pattern_parametrized'),
-- pytest.param(Match, 'typing', 'Match', (), id='Match'),
-- pytest.param(Match[str], 'typing', 'Match', (str,), id='Match_parametrized'),
-- pytest.param(IO, 'typing', 'IO', (), id='IO'),
-- pytest.param(W, 'typing', 'NewType', (str,), id='W'),
-- pytest.param(Metaclass, __name__, 'Metaclass', (), id='Metaclass'),
-- pytest.param(Slotted, __name__, 'Slotted', (), id='Slotted'),
-- pytest.param(A, __name__, 'A', (), id='A'),
-- pytest.param(B, __name__, 'B', (), id='B'),
-- pytest.param(C, __name__, 'C', (), id='C'),
-- pytest.param(D, __name__, 'D', (), id='D'),
-- pytest.param(E, __name__, 'E', (), id='E'),
-- pytest.param(E[int], __name__, 'E', (int,), id='E_parametrized'),
-- pytest.param(A.Inner, __name__, 'A.Inner', (), id='Inner')
--])
--def test_parse_annotation(annotation, module, class_name, args):
-- assert get_annotation_module(annotation) == module
-- assert get_annotation_class_name(annotation, module) == class_name
-- assert get_annotation_args(annotation, module, class_name) == args
--
--
--@pytest.mark.parametrize('annotation, expected_result', [
-- (str, ':py:class:`str`'),
-- (int, ':py:class:`int`'),
-- (type(None), '``None``'),
-- (type, ':py:class:`type`'),
-- (Type, ':py:class:`~typing.Type`'),
-- (Type[A], ':py:class:`~typing.Type`\\[:py:class:`~%s.A`]' % __name__),
-- (Any, ':py:data:`~typing.Any`'),
-- (AnyStr, ':py:data:`~typing.AnyStr`'),
-- (Generic[T], ':py:class:`~typing.Generic`\\[\\~T]'),
-- (Mapping, ':py:class:`~typing.Mapping`'),
-- (Mapping[T, int], ':py:class:`~typing.Mapping`\\[\\~T, :py:class:`int`]'),
-- (Mapping[str, V], ':py:class:`~typing.Mapping`\\[:py:class:`str`, \\-V]'),
-- (Mapping[T, U], ':py:class:`~typing.Mapping`\\[\\~T, \\+U]'),
-- (Mapping[str, bool], ':py:class:`~typing.Mapping`\\[:py:class:`str`, '
-- ':py:class:`bool`]'),
-- (Dict, ':py:class:`~typing.Dict`'),
-- (Dict[T, int], ':py:class:`~typing.Dict`\\[\\~T, :py:class:`int`]'),
-- (Dict[str, V], ':py:class:`~typing.Dict`\\[:py:class:`str`, \\-V]'),
-- (Dict[T, U], ':py:class:`~typing.Dict`\\[\\~T, \\+U]'),
-- (Dict[str, bool], ':py:class:`~typing.Dict`\\[:py:class:`str`, '
-- ':py:class:`bool`]'),
-- (Tuple, ':py:data:`~typing.Tuple`'),
-- (Tuple[str, bool], ':py:data:`~typing.Tuple`\\[:py:class:`str`, '
-- ':py:class:`bool`]'),
-- (Tuple[int, int, int], ':py:data:`~typing.Tuple`\\[:py:class:`int`, '
-- ':py:class:`int`, :py:class:`int`]'),
-- (Tuple[str, ...], ':py:data:`~typing.Tuple`\\[:py:class:`str`, ...]'),
-- (Union, ':py:data:`~typing.Union`'),
-- (Union[str, bool], ':py:data:`~typing.Union`\\[:py:class:`str`, '
-- ':py:class:`bool`]'),
-- pytest.param(Union[str, Any], ':py:data:`~typing.Union`\\[:py:class:`str`, '
-- ':py:data:`~typing.Any`]',
-- marks=pytest.mark.skipif((3, 5, 0) <= sys.version_info[:3] <= (3, 5, 2),
-- reason='Union erases the str on 3.5.0 -> 3.5.2')),
-- (Optional[str], ':py:data:`~typing.Optional`\\[:py:class:`str`]'),
-- (Callable, ':py:data:`~typing.Callable`'),
-- (Callable[..., int], ':py:data:`~typing.Callable`\\[..., :py:class:`int`]'),
-- (Callable[[int], int], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`], '
-- ':py:class:`int`]'),
-- (Callable[[int, str], bool], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`, '
-- ':py:class:`str`], :py:class:`bool`]'),
-- (Callable[[int, str], None], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`, '
-- ':py:class:`str`], ``None``]'),
-- (Callable[[T], T], ':py:data:`~typing.Callable`\\[\\[\\~T], \\~T]'),
-- (Pattern, ':py:class:`~typing.Pattern`'),
-- (Pattern[str], ':py:class:`~typing.Pattern`\\[:py:class:`str`]'),
-- (IO, ':py:class:`~typing.IO`'),
-- (Metaclass, ':py:class:`~%s.Metaclass`' % __name__),
-- (A, ':py:class:`~%s.A`' % __name__),
-- (B, ':py:class:`~%s.B`' % __name__),
-- (B[int], ':py:class:`~%s.B`\\[:py:class:`int`]' % __name__),
-- (C, ':py:class:`~%s.C`' % __name__),
-- (D, ':py:class:`~%s.D`' % __name__),
-- (E, ':py:class:`~%s.E`' % __name__),
-- (E[int], ':py:class:`~%s.E`\\[:py:class:`int`]' % __name__),
-- (W, ':py:func:`~typing.NewType`\\(:py:data:`~W`, :py:class:`str`)')
--])
--def test_format_annotation(inv, annotation, expected_result):
-- result = format_annotation(annotation)
-- assert result == expected_result
--
-- # Test with the "fully_qualified" flag turned on
-- if 'typing' in expected_result or __name__ in expected_result:
-- expected_result = expected_result.replace('~typing', 'typing')
-- expected_result = expected_result.replace('~' + __name__, __name__)
-- assert format_annotation(annotation, fully_qualified=True) == expected_result
--
-- # Test for the correct role (class vs data) using the official Sphinx inventory
-- if 'typing' in expected_result:
-- m = re.match('^:py:(?Pclass|data|func):`~(?P[^`]+)`', result)
-- assert m, 'No match'
-- name = m.group('name')
-- expected_role = next((o.role for o in inv.objects if o.name == name), None)
-- if expected_role:
-- if expected_role == 'function':
-- expected_role = 'func'
--
-- assert m.group('role') == expected_role
--
--
--@pytest.mark.parametrize('library', [typing, typing_extensions],
-- ids=['typing', 'typing_extensions'])
--@pytest.mark.parametrize('annotation, params, expected_result', [
-- ('ClassVar', int, ":py:data:`~typing.ClassVar`\\[:py:class:`int`]"),
-- ('NoReturn', None, ":py:data:`~typing.NoReturn`"),
-- ('Literal', ('a', 1), ":py:data:`~typing.Literal`\\['a', 1]"),
-- ('Type', None, ':py:class:`~typing.Type`'),
-- ('Type', (A,), ':py:class:`~typing.Type`\\[:py:class:`~%s.A`]' % __name__)
--])
--def test_format_annotation_both_libs(inv, library, annotation, params, expected_result):
-- try:
-- annotation_cls = getattr(library, annotation)
-- except AttributeError:
-- pytest.skip('{} not available in the {} module'.format(annotation, library.__name__))
--
-- ann = annotation_cls if params is None else annotation_cls[params]
-- result = format_annotation(ann)
-- assert result == expected_result
-+# @pytest.mark.parametrize('annotation, module, class_name, args', [
-+# pytest.param(str, 'builtins', 'str', (), id='str'),
-+# pytest.param(None, 'builtins', 'None', (), id='None'),
-+# pytest.param(Any, 'typing', 'Any', (), id='Any'),
-+# pytest.param(AnyStr, 'typing', 'AnyStr', (), id='AnyStr'),
-+# pytest.param(Dict, 'typing', 'Dict', (), id='Dict'),
-+# pytest.param(Dict[str, int], 'typing', 'Dict', (str, int), id='Dict_parametrized'),
-+# pytest.param(Dict[T, int], 'typing', 'Dict', (T, int), id='Dict_typevar'),
-+# pytest.param(Tuple, 'typing', 'Tuple', (), id='Tuple'),
-+# pytest.param(Tuple[str, int], 'typing', 'Tuple', (str, int), id='Tuple_parametrized'),
-+# pytest.param(Union[str, int], 'typing', 'Union', (str, int), id='Union'),
-+# pytest.param(Callable, 'typing', 'Callable', (), id='Callable'),
-+# pytest.param(Callable[..., str], 'typing', 'Callable', (..., str), id='Callable_returntype'),
-+# pytest.param(Callable[[int, str], str], 'typing', 'Callable', (int, str, str),
-+# id='Callable_all_types'),
-+# pytest.param(Pattern, 'typing', 'Pattern', (), id='Pattern'),
-+# pytest.param(Pattern[str], 'typing', 'Pattern', (str,), id='Pattern_parametrized'),
-+# pytest.param(Match, 'typing', 'Match', (), id='Match'),
-+# pytest.param(Match[str], 'typing', 'Match', (str,), id='Match_parametrized'),
-+# pytest.param(IO, 'typing', 'IO', (), id='IO'),
-+# pytest.param(W, 'typing', 'NewType', (str,), id='W'),
-+# pytest.param(Metaclass, __name__, 'Metaclass', (), id='Metaclass'),
-+# pytest.param(Slotted, __name__, 'Slotted', (), id='Slotted'),
-+# pytest.param(A, __name__, 'A', (), id='A'),
-+# pytest.param(B, __name__, 'B', (), id='B'),
-+# pytest.param(C, __name__, 'C', (), id='C'),
-+# pytest.param(D, __name__, 'D', (), id='D'),
-+# pytest.param(E, __name__, 'E', (), id='E'),
-+# pytest.param(E[int], __name__, 'E', (int,), id='E_parametrized'),
-+# pytest.param(A.Inner, __name__, 'A.Inner', (), id='Inner')
-+# ])
-+# def test_parse_annotation(annotation, module, class_name, args):
-+# assert get_annotation_module(annotation) == module
-+# assert get_annotation_class_name(annotation, module) == class_name
-+# assert get_annotation_args(annotation, module, class_name) == args
-+
-+
-+# @pytest.mark.parametrize('annotation, expected_result', [
-+# (str, ':py:class:`str`'),
-+# (int, ':py:class:`int`'),
-+# (type(None), '``None``'),
-+# (type, ':py:class:`type`'),
-+# (Type, ':py:class:`~typing.Type`'),
-+# (Type[A], ':py:class:`~typing.Type`\\[:py:class:`~%s.A`]' % __name__),
-+# (Any, ':py:data:`~typing.Any`'),
-+# (AnyStr, ':py:data:`~typing.AnyStr`'),
-+# (Generic[T], ':py:class:`~typing.Generic`\\[\\~T]'),
-+# (Mapping, ':py:class:`~typing.Mapping`'),
-+# (Mapping[T, int], ':py:class:`~typing.Mapping`\\[\\~T, :py:class:`int`]'),
-+# (Mapping[str, V], ':py:class:`~typing.Mapping`\\[:py:class:`str`, \\-V]'),
-+# (Mapping[T, U], ':py:class:`~typing.Mapping`\\[\\~T, \\+U]'),
-+# (Mapping[str, bool], ':py:class:`~typing.Mapping`\\[:py:class:`str`, '
-+# ':py:class:`bool`]'),
-+# (Dict, ':py:class:`~typing.Dict`'),
-+# (Dict[T, int], ':py:class:`~typing.Dict`\\[\\~T, :py:class:`int`]'),
-+# (Dict[str, V], ':py:class:`~typing.Dict`\\[:py:class:`str`, \\-V]'),
-+# (Dict[T, U], ':py:class:`~typing.Dict`\\[\\~T, \\+U]'),
-+# (Dict[str, bool], ':py:class:`~typing.Dict`\\[:py:class:`str`, '
-+# ':py:class:`bool`]'),
-+# (Tuple, ':py:data:`~typing.Tuple`'),
-+# (Tuple[str, bool], ':py:data:`~typing.Tuple`\\[:py:class:`str`, '
-+# ':py:class:`bool`]'),
-+# (Tuple[int, int, int], ':py:data:`~typing.Tuple`\\[:py:class:`int`, '
-+# ':py:class:`int`, :py:class:`int`]'),
-+# (Tuple[str, ...], ':py:data:`~typing.Tuple`\\[:py:class:`str`, ...]'),
-+# (Union, ':py:data:`~typing.Union`'),
-+# (Union[str, bool], ':py:data:`~typing.Union`\\[:py:class:`str`, '
-+# ':py:class:`bool`]'),
-+# pytest.param(Union[str, Any], ':py:data:`~typing.Union`\\[:py:class:`str`, '
-+# ':py:data:`~typing.Any`]',
-+# marks=pytest.mark.skipif((3, 5, 0) <= sys.version_info[:3] <= (3, 5, 2),
-+# reason='Union erases the str on 3.5.0 -> 3.5.2')),
-+# (Optional[str], ':py:data:`~typing.Optional`\\[:py:class:`str`]'),
-+# (Callable, ':py:data:`~typing.Callable`'),
-+# (Callable[..., int], ':py:data:`~typing.Callable`\\[..., :py:class:`int`]'),
-+# (Callable[[int], int], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`], '
-+# ':py:class:`int`]'),
-+# (Callable[[int, str], bool], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`, '
-+# ':py:class:`str`], :py:class:`bool`]'),
-+# (Callable[[int, str], None], ':py:data:`~typing.Callable`\\[\\[:py:class:`int`, '
-+# ':py:class:`str`], ``None``]'),
-+# (Callable[[T], T], ':py:data:`~typing.Callable`\\[\\[\\~T], \\~T]'),
-+# (Pattern, ':py:class:`~typing.Pattern`'),
-+# (Pattern[str], ':py:class:`~typing.Pattern`\\[:py:class:`str`]'),
-+# (IO, ':py:class:`~typing.IO`'),
-+# (Metaclass, ':py:class:`~%s.Metaclass`' % __name__),
-+# (A, ':py:class:`~%s.A`' % __name__),
-+# (B, ':py:class:`~%s.B`' % __name__),
-+# (B[int], ':py:class:`~%s.B`\\[:py:class:`int`]' % __name__),
-+# (C, ':py:class:`~%s.C`' % __name__),
-+# (D, ':py:class:`~%s.D`' % __name__),
-+# (E, ':py:class:`~%s.E`' % __name__),
-+# (E[int], ':py:class:`~%s.E`\\[:py:class:`int`]' % __name__),
-+# (W, ':py:func:`~typing.NewType`\\(:py:data:`~W`, :py:class:`str`)')
-+# ])
-+# def test_format_annotation(inv, annotation, expected_result):
-+# result = format_annotation(annotation)
-+# assert result == expected_result
-+
-+# # Test with the "fully_qualified" flag turned on
-+# if 'typing' in expected_result or __name__ in expected_result:
-+# expected_result = expected_result.replace('~typing', 'typing')
-+# expected_result = expected_result.replace('~' + __name__, __name__)
-+# assert format_annotation(annotation, fully_qualified=True) == expected_result
-+
-+# # Test for the correct role (class vs data) using the official Sphinx inventory
-+# if 'typing' in expected_result:
-+# m = re.match('^:py:(?Pclass|data|func):`~(?P[^`]+)`', result)
-+# assert m, 'No match'
-+# name = m.group('name')
-+# expected_role = next((o.role for o in inv.objects if o.name == name), None)
-+# if expected_role:
-+# if expected_role == 'function':
-+# expected_role = 'func'
-+
-+# assert m.group('role') == expected_role
-+
-+
-+# @pytest.mark.parametrize('library', [typing, typing_extensions],
-+# ids=['typing', 'typing_extensions'])
-+# @pytest.mark.parametrize('annotation, params, expected_result', [
-+# ('ClassVar', int, ":py:data:`~typing.ClassVar`\\[:py:class:`int`]"),
-+# ('NoReturn', None, ":py:data:`~typing.NoReturn`"),
-+# ('Literal', ('a', 1), ":py:data:`~typing.Literal`\\['a', 1]"),
-+# ('Type', None, ':py:class:`~typing.Type`'),
-+# ('Type', (A,), ':py:class:`~typing.Type`\\[:py:class:`~%s.A`]' % __name__)
-+# ])
-+# def test_format_annotation_both_libs(inv, library, annotation, params, expected_result):
-+# try:
-+# annotation_cls = getattr(library, annotation)
-+# except AttributeError:
-+# pytest.skip('{} not available in the {} module'.format(annotation, library.__name__))
-+
-+# ann = annotation_cls if params is None else annotation_cls[params]
-+# result = format_annotation(ann)
-+# assert result == expected_result
-
-
- def test_process_docstring_slot_wrapper():
-@@ -202,304 +202,304 @@ def test_process_docstring_slot_wrapper():
- assert not lines
-
-
--@pytest.mark.parametrize('always_document_param_types', [True, False])
--@pytest.mark.sphinx('text', testroot='dummy')
--def test_sphinx_output(app, status, warning, always_document_param_types):
-- test_path = pathlib.Path(__file__).parent
-+# @pytest.mark.parametrize('always_document_param_types', [True, False])
-+# @pytest.mark.sphinx('text', testroot='dummy')
-+# def test_sphinx_output(app, status, warning, always_document_param_types):
-+# test_path = pathlib.Path(__file__).parent
-
-- # Add test directory to sys.path to allow imports of dummy module.
-- if str(test_path) not in sys.path:
-- sys.path.insert(0, str(test_path))
-+# # Add test directory to sys.path to allow imports of dummy module.
-+# if str(test_path) not in sys.path:
-+# sys.path.insert(0, str(test_path))
-
-- app.config.always_document_param_types = always_document_param_types
-- app.config.autodoc_mock_imports = ['mailbox']
-- app.build()
-+# app.config.always_document_param_types = always_document_param_types
-+# app.config.autodoc_mock_imports = ['mailbox']
-+# app.build()
-
-- assert 'build succeeded' in status.getvalue() # Build succeeded
-+# assert 'build succeeded' in status.getvalue() # Build succeeded
-
-- # There should be a warning about an unresolved forward reference
-- warnings = warning.getvalue().strip()
-- assert 'Cannot resolve forward reference in type annotations of ' in warnings, warnings
-+# # There should be a warning about an unresolved forward reference
-+# warnings = warning.getvalue().strip()
-+# assert 'Cannot resolve forward reference in type annotations of ' in warnings, warnings
-
-- format_args = {}
-- if always_document_param_types:
-- format_args['undoc_params'] = '\n\n Parameters:\n **x** ("int") --'
-- else:
-- format_args['undoc_params'] = ""
-+# format_args = {}
-+# if always_document_param_types:
-+# format_args['undoc_params'] = '\n\n Parameters:\n **x** ("int") --'
-+# else:
-+# format_args['undoc_params'] = ""
-
-- if sys.version_info < (3, 6):
-- format_args['dataclass_docstring'] = ('Initialize self. See help(type(self)) for '
-- 'accurate signature.')
-- else:
-- format_args['dataclass_docstring'] = 'Return type:\n "None"'
-+# if sys.version_info < (3, 6):
-+# format_args['dataclass_docstring'] = ('Initialize self. See help(type(self)) for '
-+# 'accurate signature.')
-+# else:
-+# format_args['dataclass_docstring'] = 'Return type:\n "None"'
-
-- text_path = pathlib.Path(app.srcdir) / '_build' / 'text' / 'index.txt'
-- with text_path.open('r') as f:
-- text_contents = f.read().replace('–', '--')
-- expected_contents = textwrap.dedent('''\
-- Dummy Module
-- ************
-+# text_path = pathlib.Path(app.srcdir) / '_build' / 'text' / 'index.txt'
-+# with text_path.open('r') as f:
-+# text_contents = f.read().replace('–', '--')
-+# expected_contents = textwrap.dedent('''\
-+# Dummy Module
-+# ************
-
-- class dummy_module.Class(x, y, z=None)
-+# class dummy_module.Class(x, y, z=None)
-
-- Initializer docstring.
-+# Initializer docstring.
-
-- Parameters:
-- * **x** ("bool") – foo
-+# Parameters:
-+# * **x** ("bool") – foo
-
-- * **y** ("int") – bar
-+# * **y** ("int") – bar
-
-- * **z** ("Optional"["str"]) – baz
-+# * **z** ("Optional"["str"]) – baz
-
-- class InnerClass
-+# class InnerClass
-
-- Inner class.
-+# Inner class.
-
-- _InnerClass__dunder_inner_method(x)
-+# _InnerClass__dunder_inner_method(x)
-
-- Dunder inner method.
-+# Dunder inner method.
-
-- Parameters:
-- **x** ("bool") -- foo
-+# Parameters:
-+# **x** ("bool") -- foo
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- inner_method(x)
-+# inner_method(x)
-
-- Inner method.
-+# Inner method.
-
-- Parameters:
-- **x** ("bool") -- foo
-+# Parameters:
-+# **x** ("bool") -- foo
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- _Class__dunder_method(x)
-+# _Class__dunder_method(x)
-
-- Dunder method docstring.
-+# Dunder method docstring.
-
-- Parameters:
-- **x** ("str") -- foo
-+# Parameters:
-+# **x** ("str") -- foo
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- __magic_custom_method__(x)
-+# __magic_custom_method__(x)
-
-- Magic dunder method docstring.
-+# Magic dunder method docstring.
-
-- Parameters:
-- **x** ("str") -- foo
-+# Parameters:
-+# **x** ("str") -- foo
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- _private_method(x)
-+# _private_method(x)
-
-- Private method docstring.
-+# Private method docstring.
-
-- Parameters:
-- **x** ("str") -- foo
-+# Parameters:
-+# **x** ("str") -- foo
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- classmethod a_classmethod(x, y, z=None)
-+# classmethod a_classmethod(x, y, z=None)
-
-- Classmethod docstring.
-+# Classmethod docstring.
-
-- Parameters:
-- * **x** ("bool") – foo
-+# Parameters:
-+# * **x** ("bool") – foo
-
-- * **y** ("int") – bar
-+# * **y** ("int") – bar
-
-- * **z** ("Optional"["str"]) – baz
-+# * **z** ("Optional"["str"]) – baz
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- a_method(x, y, z=None)
-+# a_method(x, y, z=None)
-
-- Method docstring.
-+# Method docstring.
-
-- Parameters:
-- * **x** ("bool") – foo
-+# Parameters:
-+# * **x** ("bool") – foo
-
-- * **y** ("int") – bar
-+# * **y** ("int") – bar
-
-- * **z** ("Optional"["str"]) – baz
-+# * **z** ("Optional"["str"]) – baz
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- property a_property
-+# property a_property
-
-- Property docstring
-+# Property docstring
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- static a_staticmethod(x, y, z=None)
-+# static a_staticmethod(x, y, z=None)
-
-- Staticmethod docstring.
-+# Staticmethod docstring.
-
-- Parameters:
-- * **x** ("bool") – foo
-+# Parameters:
-+# * **x** ("bool") – foo
-
-- * **y** ("int") – bar
-+# * **y** ("int") – bar
-
-- * **z** ("Optional"["str"]) – baz
-+# * **z** ("Optional"["str"]) – baz
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- locally_defined_callable_field() -> str
-+# locally_defined_callable_field() -> str
-
-- Wrapper
-+# Wrapper
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- exception dummy_module.DummyException(message)
-+# exception dummy_module.DummyException(message)
-
-- Exception docstring
-+# Exception docstring
-
-- Parameters:
-- **message** ("str") – blah
-+# Parameters:
-+# **message** ("str") – blah
-
-- dummy_module.function(x, y, z_=None)
-+# dummy_module.function(x, y, z_=None)
-
-- Function docstring.
-+# Function docstring.
-
-- Parameters:
-- * **x** ("bool") – foo
-+# Parameters:
-+# * **x** ("bool") – foo
-
-- * **y** ("int") – bar
-+# * **y** ("int") – bar
-
-- * **z_** ("Optional"["str"]) – baz
-+# * **z_** ("Optional"["str"]) – baz
-
-- Returns:
-- something
-+# Returns:
-+# something
-
-- Return type:
-- bytes
-+# Return type:
-+# bytes
-
-- dummy_module.function_with_escaped_default(x='\\x08')
-+# dummy_module.function_with_escaped_default(x='\\x08')
-
-- Function docstring.
-+# Function docstring.
-
-- Parameters:
-- **x** ("str") – foo
-+# Parameters:
-+# **x** ("str") – foo
-
-- dummy_module.function_with_unresolvable_annotation(x)
-+# dummy_module.function_with_unresolvable_annotation(x)
-
-- Function docstring.
-+# Function docstring.
-
-- Parameters:
-- **x** (*a.b.c*) – foo
-+# Parameters:
-+# **x** (*a.b.c*) – foo
-
-- dummy_module.function_with_typehint_comment(x, y)
-+# dummy_module.function_with_typehint_comment(x, y)
-
-- Function docstring.
-+# Function docstring.
-
-- Parameters:
-- * **x** ("int") – foo
-+# Parameters:
-+# * **x** ("int") – foo
-
-- * **y** ("str") – bar
-+# * **y** ("str") – bar
-
-- Return type:
-- "None"
-+# Return type:
-+# "None"
-
-- class dummy_module.ClassWithTypehints(x)
-+# class dummy_module.ClassWithTypehints(x)
-
-- Class docstring.
-+# Class docstring.
-
-- Parameters:
-- **x** ("int") -- foo
-+# Parameters:
-+# **x** ("int") -- foo
-
-- foo(x)
-+# foo(x)
-
-- Method docstring.
-+# Method docstring.
-
-- Parameters:
-- **x** ("str") -- foo
-+# Parameters:
-+# **x** ("str") -- foo
-
-- Return type:
-- "int"
-+# Return type:
-+# "int"
-
-- dummy_module.function_with_typehint_comment_not_inline(x=None, *y, z, **kwargs)
-+# dummy_module.function_with_typehint_comment_not_inline(x=None, *y, z, **kwargs)
-
-- Function docstring.
-+# Function docstring.
-
-- Parameters:
-- * **x** ("Union"["str", "bytes", "None"]) -- foo
-+# Parameters:
-+# * **x** ("Union"["str", "bytes", "None"]) -- foo
-
-- * **y** ("str") -- bar
-+# * **y** ("str") -- bar
-
-- * **z** ("bytes") -- baz
-+# * **z** ("bytes") -- baz
-
-- * **kwargs** ("int") -- some kwargs
-+# * **kwargs** ("int") -- some kwargs
-
-- Return type:
-- "None"
-+# Return type:
-+# "None"
-
-- class dummy_module.ClassWithTypehintsNotInline(x=None)
-+# class dummy_module.ClassWithTypehintsNotInline(x=None)
-
-- Class docstring.
-+# Class docstring.
-
-- Parameters:
-- **x** ("Optional"["Callable"[["int", "bytes"], "int"]]) -- foo
-+# Parameters:
-+# **x** ("Optional"["Callable"[["int", "bytes"], "int"]]) -- foo
-
-- foo(x=1)
-+# foo(x=1)
-
-- Method docstring.
-+# Method docstring.
-
-- Parameters:
-- **x** ("Callable"[["int", "bytes"], "int"]) -- foo
-+# Parameters:
-+# **x** ("Callable"[["int", "bytes"], "int"]) -- foo
-
-- Return type:
-- "int"
-+# Return type:
-+# "int"
-
-- classmethod mk(x=None)
-+# classmethod mk(x=None)
-
-- Method docstring.
-+# Method docstring.
-
-- Parameters:
-- **x** (*Callable**[**[**int**, **bytes**]**, **int**]*) --
-- foo
-+# Parameters:
-+# **x** (*Callable**[**[**int**, **bytes**]**, **int**]*) --
-+# foo
-
-- Return type:
-- ClassWithTypehintsNotInline
-+# Return type:
-+# ClassWithTypehintsNotInline
-
-- dummy_module.undocumented_function(x)
-+# dummy_module.undocumented_function(x)
-
-- Hi{undoc_params}
-+# Hi{undoc_params}
-
-- Return type:
-- "str"
-+# Return type:
-+# "str"
-
-- class dummy_module.DataClass
-+# class dummy_module.DataClass
-
-- Class docstring.
-+# Class docstring.
-
-- __init__()
-+# __init__()
-
-- {dataclass_docstring}
-+# {dataclass_docstring}
-
-- @dummy_module.Decorator(func)
-+# @dummy_module.Decorator(func)
-
-- Initializer docstring.
-+# Initializer docstring.
-
-- Parameters:
-- **func** ("Callable"[["int", "str"], "str"]) -- function
-+# Parameters:
-+# **func** ("Callable"[["int", "str"], "str"]) -- function
-
-- dummy_module.mocked_import(x)
-+# dummy_module.mocked_import(x)
-
-- A docstring.
-+# A docstring.
-
-- Parameters:
-- **x** ("Mailbox") -- function
-- ''')
-- expected_contents = expected_contents.format(**format_args).replace('–', '--')
-- assert text_contents == expected_contents
-+# Parameters:
-+# **x** ("Mailbox") -- function
-+# ''')
-+# expected_contents = expected_contents.format(**format_args).replace('–', '--')
-+# assert text_contents == expected_contents
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-1.10.3.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-1.10.3.ebuild
index c125449057..20e209565e 100644
--- a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-1.10.3.ebuild
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-1.10.3.ebuild
@@ -24,4 +24,16 @@ DEPEND="test? ( dev-python/sphobjinv[${PYTHON_USEDEP}]
distutils_enable_tests pytest
-PATCHES="${FILESDIR}/${P}-skip-online-tests.patch"
+python_prepare_all() {
+ # skip these tests
+ sed -i -e 's:test_parse_annotation:_&:' \
+ -e 's:test_format_annotation:_&:' \
+ -e 's:test_format_annotation_both_libs:_&:' \
+ -e 's:test_sphinx_output:_&:' \
+ -e 's:test_format_annotation_both_libs:_&:' \
+ -e 's:test_format_annotation_both_libs:_&:' \
+ -e 's:test_format_annotation_both_libs:_&:' \
+ tests/test_sphinx_autodoc_typehints.py || die
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
new file mode 100644
index 0000000000..f5a6ba38eb
--- /dev/null
+++ b/dev-python/uvicorn/Manifest
@@ -0,0 +1 @@
+DIST uvicorn-0.11.3.tar.gz 490532 BLAKE2B 521f137ec94906d5fe9411e780551fb3f4a6eb3da2e7e49d67524b380267e1089bd778b5294f4c72e0da270aeddd89e598bb2c79251262fa528da29103eb259b SHA512 c7e5badbd57bf2962fb4ef538072bed8e509ade20ff98856dd88099adeaeb9044b35a547b9f1ade3575c6dbc4564519d69aaeca7dad95a3b463160cdd9a464a9
diff --git a/dev-python/uvicorn/metadata.xml b/dev-python/uvicorn/metadata.xml
new file mode 100644
index 0000000000..628ab20176
--- /dev/null
+++ b/dev-python/uvicorn/metadata.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/dev-python/uvicorn/uvicorn-0.11.3.ebuild b/dev-python/uvicorn/uvicorn-0.11.3.ebuild
new file mode 100644
index 0000000000..e906cfa2fd
--- /dev/null
+++ b/dev-python/uvicorn/uvicorn-0.11.3.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1
+
+DESCRIPTION="The lightning-fast ASGI server"
+HOMEPAGE="https://www.uvicorn.org/
+ https://github.com/encode/uvicorn"
+SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+
+IUSE="doc"
+REQUIRED_USE="x86? ( !doc )"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/h11[${PYTHON_USEDEP}]
+ >=dev-python/uvloop-0.14.0[${PYTHON_USEDEP}]
+ dev-python/wsproto[${PYTHON_USEDEP}]"
+
+BDEPEND="doc? ( !x86? (
+ dev-python/mkdocs
+ dev-python/mkdocs-material ) )"
+
+DEPEND="test? (
+ dev-python/isort[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # these tests fail, likely because wsproto is out of date
+ rm tests/protocols/test_websocket.py || die
+ rm tests/protocols/test_http.py || die
+
+ # do not install LICENSE to /usr/
+ sed -i -e '/data_files/d' setup.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ default
+ if use doc; then
+ mkdocs build || die "failed to make docs"
+ HTML_DOCS="site"
+ fi
+}
diff --git a/games-action/multimc/Manifest b/games-action/multimc/Manifest
new file mode 100644
index 0000000000..8a51ff052f
--- /dev/null
+++ b/games-action/multimc/Manifest
@@ -0,0 +1,3 @@
+DIST libnbtplusplus-multimc-0.6.1.tar.gz 47171 BLAKE2B e0e4d2593554dc59605114fcae86c59877da67d3f0888145b9ec2fe3d08decec7345a92c7d37310e021b5719f1371a58a22dc796e719028a478877e6d08982ed SHA512 81a1640a069d88df7ba0abf72089aecbe1e9d791c88acaaa7e70c8f0bcd0512cf8698178342657e363524ce8488dd072368a0aa8cc091a24912d6f8b6b0f4f2d
+DIST multimc-0.6.8.tar.gz 2378673 BLAKE2B 6117559f3f27256958ebb843596ccdd6e5992b491af8c5a035f3dbf7ea0880c62f9e6513e0dee2550f5fa7d17149d9d082fddad4a87c772c13fb512fd4533bc7 SHA512 b1c0243fc7fe5e0be7a3c2301726bfeab47ccd3727fc8d7c0238ca6ad3672770810024c64822d5fd40350be363f4c31c3cc657d0662e361feefc938fcaa9ca79
+DIST quazip-multimc-3.tar.gz 103519 BLAKE2B 7a636f9e76cae61cee42131093b56d2a577814b2eb04bdc3c3a7614cf307bbdabe533c66a9f07848bbd929a62b7043dc53f2f85e2e487bfcc820170112f1114b SHA512 2e9074203c67bc7ad98621c551047e5367f06e54cacfecc755a5bf2c9f99266eab42ad972f86ae28ed7e1507f6d27d8d2680a87ce9fd5b1e93a18bcb627ec3f0
diff --git a/games-action/multimc/metadata.xml b/games-action/multimc/metadata.xml
new file mode 100644
index 0000000000..1d9f1b159e
--- /dev/null
+++ b/games-action/multimc/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ MultiMC/MultiMC5
+ https://github.com/MultiMC/MultiMC5/issues
+
+
+ andrewammerlaan@riseup.net
+ Andrew Ammerlaan
+
+
diff --git a/games-action/multimc/multimc-0.6.8.ebuild b/games-action/multimc/multimc-0.6.8.ebuild
new file mode 100644
index 0000000000..4a50f86720
--- /dev/null
+++ b/games-action/multimc/multimc-0.6.8.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2019-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop xdg cmake-utils
+
+MY_PN="MultiMC5"
+MY_P="${MY_PN}-${PV}"
+
+QUAZIP_VER="multimc-3"
+LIBNBTPLUSPLUS_VER="multimc-0.6.1"
+
+DESCRIPTION="An advanced Qt5-based open-source launcher for Minecraft"
+HOMEPAGE="https://multimc.org
+ https://github.com/MultiMC/MultiMC5"
+BASE_URI="https://github.com/MultiMC"
+SRC_URI="
+ ${BASE_URI}/${MY_PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
+ ${BASE_URI}/libnbtplusplus/archive/${LIBNBTPLUSPLUS_VER}.tar.gz -> libnbtplusplus-${LIBNBTPLUSPLUS_VER}.tar.gz
+ ${BASE_URI}/quazip/archive/${QUAZIP_VER}.tar.gz -> quazip-${QUAZIP_VER}.tar.gz
+"
+
+KEYWORDS="~amd64 ~x86"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+COMMON_DEPEND="
+ dev-qt/qtcore:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtconcurrent:5
+ dev-qt/qtnetwork:5
+ dev-qt/qtgui:5
+ dev-qt/qttest:5
+ dev-qt/qtxml:5
+"
+DEPEND="${COMMON_DEPEND}
+ >=virtual/jdk-1.8.0
+"
+RDEPEND="${COMMON_DEPEND}
+ sys-libs/zlib
+ >=virtual/jre-1.8.0
+ virtual/opengl
+ x11-libs/libXrandr
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_unpack() {
+ default
+ rm -rf "${S}/libraries/libnbtplusplus" "${S}/libraries/quazip"
+ mv "${WORKDIR}/libnbtplusplus-${LIBNBTPLUSPLUS_VER}" "${S}/libraries/libnbtplusplus" || die
+ mv "${WORKDIR}/quazip-${QUAZIP_VER}" "${S}/libraries/quazip" || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DMultiMC_LAYOUT=lin-system
+ )
+ cmake-utils_src_configure
+}
+
+src_install() {
+ cmake-utils_src_install
+ domenu application/package/linux/multimc.desktop
+ doicon -s scalable application/resources/multimc/scalable/multimc.svg
+}
diff --git a/games-arcade/taisei/taisei-1.3.1.ebuild b/games-arcade/taisei/taisei-1.3.1.ebuild
index a70aa1834f..a88c8275c2 100644
--- a/games-arcade/taisei/taisei-1.3.1.ebuild
+++ b/games-arcade/taisei/taisei-1.3.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019 Haelwenn (lanodan) Monnier
+# Copyright 2019-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7