public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/psycopg/
Date: Sun, 23 Feb 2025 03:23:22 +0000 (UTC)	[thread overview]
Message-ID: <1740280992.0007fcd4a900849e97ee1fe24b62e2816ec2f968.mgorny@gentoo> (raw)

commit:     0007fcd4a900849e97ee1fe24b62e2816ec2f968
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 23 02:46:25 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Feb 23 03:23:12 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0007fcd4

dev-python/psycopg: Bump to 3.2.5

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/psycopg/Manifest             |   1 +
 dev-python/psycopg/psycopg-3.2.5.ebuild | 119 ++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+)

diff --git a/dev-python/psycopg/Manifest b/dev-python/psycopg/Manifest
index 1cc36e6d9a74..c7dc9481c62b 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -2,6 +2,7 @@ DIST psycopg-3.1.19.gh.tar.gz 507073 BLAKE2B c10e2ba83f4a3bb0646d86c0f1311ae43e3
 DIST psycopg-3.2.2.gh.tar.gz 550226 BLAKE2B 2731190da5b044f16eb0f90fb5417244e46fc0906dde6ee9bd1ee4d91613f59ef1943da6662ad1f3db1487b8cc2b4ccb4e0a79ecc056a8f72c7e2b7b70e39abd SHA512 48686101c9d568003ffbf90cf07bc4496fb161f599b60a2b2df41ac120f338bee7edbeae3786071969d6bbb9acdbe868fa568b9cfa3b7a17dec2d47e5d54f002
 DIST psycopg-3.2.3.gh.tar.gz 550802 BLAKE2B 1f748fc2dc915fd82b2bc557ae4263ecf1070d5ba08681cb6ae21570acf601b03a2bde7e4324cd506e0146c86db976b003c57e99cd1948a930c074f0674d6ba8 SHA512 cf543652cfd27cf1cad3b1e3b8b50802562cc49f8fbd9ae5bd85ffdf26e30dc470f1f3380261c8cad418945ade8dc4f199ebcba08968cb87fd0b6c241fd8040d
 DIST psycopg-3.2.4.gh.tar.gz 555758 BLAKE2B 1b74f8a6ee91266fb6c6a13ee51fd7d18514b4ce662f911f83baba652bb9198cae21636f6f1dad6eae916cc2c22f2322629dea346e61ce94a1d94a80c8e8b5be SHA512 026f4a74011c37e594903931da629fa0150834db0916bc02a45aa31eb79fbbcd9a0b6b59809d4db389e298101646409097d99c4950981ddb43413a7488e4f1ff
+DIST psycopg-3.2.5.gh.tar.gz 558069 BLAKE2B 1913db4e399d9e44e392019471d3b7a5fbbff1da67a87961b084ca2fa34ddf2af3c862093077bfe04503d16187abff4ab62e33b1a3505b7a8cafa836bcf33ba3 SHA512 f4c62e462f6fba04f7b07bf500cbf5ee3e0ffa570c682f507aae0fc5ee88a1eec3f98da05c9a2c957d018f12f53a9567565f8b81914eb36ca92992fa2ccd8156
 DIST psycopg2-2.9.10.tar.gz 385672 BLAKE2B 4a3ad64f406c427b785ffeb85f6520aa67ed04de2d1749eb22d8275146b71ba451f7c04c9ead401d6f7a273781492cd6a5a36beba68b36b1e5203ee75f7df503 SHA512 d0916f6a645b5e87f89f2463dc22fad78340a85fbff320d099bf429a42557f40d3a4eebdc670768469aef1e9fcee60123767bfe49e1186e8574f95bfd6f46900
 DIST psycopg2-2.9.4.tar.gz 384017 BLAKE2B 4bc0afcc890c8a257c1ccd5c6e4e5301857a80f8b1428aa46c1473c9e18f5d2914a2e592c13336b06106217bb334d9b0321835bdd123f1627cbeb29dedf97bf7 SHA512 259088e42e0ab0d8a1a0ccf04f5e560f32c6179b4a0a0059e91bcf269baa8f4b0f1f949c332c640a2438c927a29b2c144078a861f8e18ba9c764da7c93c73b8d
 DIST psycopg2-2.9.9.tar.gz 384926 BLAKE2B 8418fca1329703cedfc86be74d85cae5133a0604bb8a21fa43e5359a46626d38ef227d0cd8fbbeb497e2db517a469d7f3e86b74ef9163617a547e999073a6b4c SHA512 a691fd09762221e854861dedce37b05e5354e0701feea470a6d5046960056ef02a8c9ecfa751adeba485271ea7d5834643b7d3a3c3f3270087f5ed9c68509f5f

diff --git a/dev-python/psycopg/psycopg-3.2.5.ebuild b/dev-python/psycopg/psycopg-3.2.5.ebuild
new file mode 100644
index 000000000000..d5a124be5907
--- /dev/null
+++ b/dev-python/psycopg/psycopg-3.2.5.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 flag-o-matic
+
+DESCRIPTION="PostgreSQL database adapter for Python"
+HOMEPAGE="
+	https://www.psycopg.org/psycopg3/
+	https://github.com/psycopg/psycopg/
+	https://pypi.org/project/psycopg/
+"
+SRC_URI="
+	https://github.com/psycopg/psycopg/archive/${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="+native-extensions"
+
+DEPEND="
+	native-extensions? (
+		>=dev-db/postgresql-8.1:=
+	)
+	!native-extensions? (
+		>=dev-db/postgresql-8.1:*
+	)
+"
+RDEPEND="
+	${DEPEND}
+	>=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	native-extensions? (
+		dev-python/cython[${PYTHON_USEDEP}]
+		$(python_gen_cond_dep '
+			dev-python/tomli[${PYTHON_USEDEP}]
+		' 3.10)
+	)
+	test? (
+		>=dev-db/postgresql-8.1[server]
+		>=dev-python/anyio-4.0[${PYTHON_USEDEP}]
+		>=dev-python/dnspython-2.1[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests pytest
+
+python_compile() {
+	# -Werror=strict-aliasing
+	# https://bugs.gentoo.org/935401
+	# https://github.com/psycopg/psycopg/issues/867
+	#
+	# Do not trust with LTO either.
+	append-flags -fno-strict-aliasing
+	filter-lto
+
+	# Python code + ctypes backend
+	cd psycopg || die
+	distutils-r1_python_compile
+
+	# optional C backend
+	if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+		local DISTUTILS_USE_PEP517=standalone
+		cd ../psycopg_c || die
+		distutils-r1_python_compile
+	fi
+	cd .. || die
+}
+
+src_test() {
+	rm -r psycopg{,_c} || die
+
+	initdb -D "${T}"/pgsql || die
+	# TODO: random port
+	pg_ctl -w -D "${T}"/pgsql start \
+		-o "-h '' -k '${T}'" || die
+	createdb -h "${T}" test || die
+
+	local -x PSYCOPG_TEST_DSN="host=${T} dbname=test"
+	distutils-r1_src_test
+
+	pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# tests for the psycopg_pool package
+		tests/pool
+		# some broken mypy magic
+		tests/test_module.py::test_version
+		tests/test_module.py::test_version_c
+		tests/test_typing.py
+		tests/crdb/test_typing.py
+		# TODO, relying on undefined ordering in Python?
+		tests/test_dns_srv.py::test_srv
+	)
+
+	local impls=( python )
+	if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+		impls+=( c )
+	fi
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	local -x PSYCOPG_IMPL
+	for PSYCOPG_IMPL in "${impls[@]}"; do
+		einfo "Testing with ${PSYCOPG_IMPL} implementation ..."
+		# leak and timing tests are fragile whereas slow tests are slow
+		epytest -p anyio -k "not leak" \
+			-m "not timing and not slow and not flakey"
+	done
+}


             reply	other threads:[~2025-02-23  3:23 UTC|newest]

Thread overview: 298+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-23  3:23 Michał Górny [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-03-07 20:38 [gentoo-commits] repo/gentoo:master commit in: dev-python/psycopg/ Michał Górny
2025-02-25  7:28 Sam James
2025-02-04 14:17 Sam James
2025-02-01 13:12 Arthur Zamarin
2025-02-01 12:17 Arthur Zamarin
2025-01-16  5:11 Michał Górny
2025-01-16  5:11 Michał Górny
2024-10-30 17:53 Arthur Zamarin
2024-10-23 20:15 Arthur Zamarin
2024-10-19 10:03 Arthur Zamarin
2024-10-19 10:03 Arthur Zamarin
2024-10-19  9:21 Arthur Zamarin
2024-10-19  8:41 Arthur Zamarin
2024-10-19  8:16 Arthur Zamarin
2024-10-19  8:07 Arthur Zamarin
2024-10-19  7:55 Arthur Zamarin
2024-10-19  7:50 Arthur Zamarin
2024-10-16 17:53 Michał Górny
2024-10-08 19:48 Arthur Zamarin
2024-10-08 19:48 Arthur Zamarin
2024-10-08 19:48 Arthur Zamarin
2024-10-08 19:48 Arthur Zamarin
2024-10-05  9:21 Arthur Zamarin
2024-09-30  4:04 Michał Górny
2024-09-16  3:59 Michał Górny
2024-07-20 22:34 Sam James
2024-07-20 11:14 Arthur Zamarin
2024-07-20 11:14 Arthur Zamarin
2024-07-20 11:14 Arthur Zamarin
2024-07-20  8:14 Arthur Zamarin
2024-07-20  8:14 Arthur Zamarin
2024-07-20  7:39 Arthur Zamarin
2024-07-15  8:01 Eli Schwartz
2024-07-09 15:30 Michał Górny
2024-07-02  6:58 Michał Górny
2024-07-01  2:57 Michał Górny
2024-05-25 19:58 Michał Górny
2024-05-25 18:47 Arthur Zamarin
2024-05-25  6:38 Arthur Zamarin
2024-05-25  6:36 Arthur Zamarin
2024-05-25  6:19 Arthur Zamarin
2024-05-25  6:15 Arthur Zamarin
2024-05-25  6:15 Arthur Zamarin
2024-05-25  6:13 Arthur Zamarin
2024-05-18  7:47 Michał Górny
2024-05-11  5:19 Michał Górny
2024-04-04 16:23 Arthur Zamarin
2024-04-04 16:23 Arthur Zamarin
2024-03-02 18:18 Arthur Zamarin
2024-02-20 14:06 Jakov Smolić
2024-02-20 10:27 Sam James
2024-02-20  8:09 Sam James
2024-02-20  8:09 Sam James
2024-02-05  3:52 Michał Górny
2024-01-27 20:33 Michał Górny
2024-01-25  9:21 Sam James
2024-01-24 23:52 Sam James
2024-01-24 18:59 Michał Górny
2024-01-24 18:59 Michał Górny
2024-01-24 18:59 Michał Górny
2024-01-24 18:59 Michał Górny
2024-01-24  6:33 Michał Górny
2024-01-07 16:46 Michał Górny
2024-01-06 19:30 Viorel Munteanu
2024-01-06 11:54 Sam James
2024-01-06 10:52 Michał Górny
2024-01-06 10:52 Michał Górny
2024-01-06 10:08 Michał Górny
2024-01-06 10:08 Michał Górny
2024-01-06  9:50 Michał Górny
2023-12-24 17:21 Arthur Zamarin
2023-12-24 17:21 Arthur Zamarin
2023-12-24  1:02 Sam James
2023-12-24  1:02 Sam James
2023-12-24  1:02 Sam James
2023-12-24  1:02 Sam James
2023-12-22  8:30 Michał Górny
2023-12-22  5:14 Ionen Wolkens
2023-12-19 17:26 Michał Górny
2023-12-16  2:45 Sam James
2023-12-15 15:50 Arthur Zamarin
2023-12-15 12:32 Arthur Zamarin
2023-12-15 11:33 Arthur Zamarin
2023-12-15 10:53 Arthur Zamarin
2023-12-15 10:44 Arthur Zamarin
2023-12-14 13:58 Michał Górny
2023-12-02 13:11 Michał Górny
2023-11-18 15:47 Michał Górny
2023-11-18 15:47 Michał Górny
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:55 Arthur Zamarin
2023-10-27 19:32 Sam James
2023-10-27 19:32 Sam James
2023-10-27 19:32 Sam James
2023-10-27 19:32 Sam James
2023-10-27 19:32 Sam James
2023-10-24 17:16 Arthur Zamarin
2023-10-04  5:51 Michał Górny
2023-10-03 22:37 Sam James
2023-09-28 17:08 Michał Górny
2023-09-27 19:22 Arthur Zamarin
2023-09-27  7:18 Michał Górny
2023-09-26 15:23 Arthur Zamarin
2023-09-24  3:12 Michał Górny
2023-09-11 18:36 Sam James
2023-09-11 18:36 Sam James
2023-09-11 13:04 Arthur Zamarin
2023-09-11 12:37 Sam James
2023-09-07 19:52 Sam James
2023-09-07 19:52 Sam James
2023-08-05 14:53 Michał Górny
2023-08-05 14:53 Michał Górny
2023-07-20 12:19 Sam James
2023-07-11 14:02 Jakov Smolić
2023-06-27  7:58 Sam James
2023-06-27  7:14 Sam James
2023-06-27  7:14 Sam James
2023-06-27  6:55 Sam James
2023-06-18 17:07 Michał Górny
2023-06-03 17:45 Michał Górny
2023-06-01 13:40 Michał Górny
2023-05-04 16:22 Michał Górny
2023-05-03  7:51 Michał Górny
2023-04-01 17:43 Michał Górny
2023-04-01 16:34 Arthur Zamarin
2023-03-16 18:13 Michał Górny
2023-02-21 18:10 Arthur Zamarin
2023-02-16 22:50 Sam James
2023-02-16 22:50 Sam James
2023-02-16 20:58 Arthur Zamarin
2023-02-16 18:27 Arthur Zamarin
2023-02-16 17:22 Arthur Zamarin
2023-01-21 13:54 Arthur Zamarin
2023-01-17  5:08 Michał Górny
2023-01-14  9:18 Arthur Zamarin
2023-01-14  8:32 Arthur Zamarin
2023-01-13 19:33 Arthur Zamarin
2023-01-13 19:26 Arthur Zamarin
2023-01-13 16:31 Arthur Zamarin
2022-12-21  7:51 Michał Górny
2022-12-16 13:29 Michał Górny
2022-12-16 13:29 Michał Górny
2022-12-14  6:31 Michał Górny
2022-12-13 19:53 Arthur Zamarin
2022-12-11 20:50 Michał Górny
2022-12-11 18:24 Arthur Zamarin
2022-11-30  0:52 Sam James
2022-11-29 22:22 Jakov Smolić
2022-11-29  8:11 Arthur Zamarin
2022-11-29  7:51 Arthur Zamarin
2022-11-29  7:35 Arthur Zamarin
2022-11-29  7:33 Arthur Zamarin
2022-11-07 12:56 Michał Górny
2022-11-07 10:20 Sam James
2022-11-07 10:17 Sam James
2022-11-07  7:44 Sam James
2022-11-07  7:26 Sam James
2022-11-06  7:59 Michał Górny
2022-11-06  7:29 Sam James
2022-11-06  7:24 Sam James
2022-11-06  7:24 Sam James
2022-11-05 17:11 Agostino Sarubbo
2022-11-05 17:06 Agostino Sarubbo
2022-11-05 17:06 Agostino Sarubbo
2022-11-05 17:05 Agostino Sarubbo
2022-11-05 17:04 Agostino Sarubbo
2022-11-04 17:18 Sam James
2022-11-04 17:18 Sam James
2022-10-26 12:26 Michał Górny
2022-10-14 15:09 Andrew Ammerlaan
2022-10-09 10:10 Michał Górny
2022-10-09  8:55 Agostino Sarubbo
2022-10-08 19:28 Sam James
2022-10-08 16:36 Arthur Zamarin
2022-10-08 16:36 Arthur Zamarin
2022-10-08 16:36 Arthur Zamarin
2022-10-08 16:36 Arthur Zamarin
2022-10-08 16:26 Arthur Zamarin
2022-10-05 10:44 Michał Górny
2022-10-03  9:49 Michał Górny
2022-10-03  8:31 Agostino Sarubbo
2022-10-03  8:30 Agostino Sarubbo
2022-10-03  8:29 Agostino Sarubbo
2022-10-03  8:28 Agostino Sarubbo
2022-10-03  8:26 Agostino Sarubbo
2022-10-03  8:24 Agostino Sarubbo
2022-10-03  0:44 Sam James
2022-09-19 19:02 Arthur Zamarin
2022-09-06 17:54 Arthur Zamarin
2022-09-01 19:42 Arthur Zamarin
2022-09-01  8:49 Michał Górny
2022-09-01  8:45 Agostino Sarubbo
2022-08-31 12:06 Agostino Sarubbo
2022-08-31 12:05 Agostino Sarubbo
2022-08-31 12:05 Agostino Sarubbo
2022-08-31 12:04 Agostino Sarubbo
2022-08-31 12:03 Agostino Sarubbo
2022-08-31  5:16 Agostino Sarubbo
2022-07-29 10:59 Arthur Zamarin
2022-07-11  9:17 Michał Górny
2022-07-11  8:13 Agostino Sarubbo
2022-07-11  8:12 Agostino Sarubbo
2022-07-11  8:12 Agostino Sarubbo
2022-07-11  8:11 Agostino Sarubbo
2022-07-11  8:11 Agostino Sarubbo
2022-07-10 18:04 Arthur Zamarin
2022-07-10 18:04 Arthur Zamarin
2022-06-16  6:06 Michał Górny
2022-06-04  7:42 Michał Górny
2022-02-02  6:45 Michał Górny
2022-02-02  0:08 Sam James
2022-02-01  7:35 Agostino Sarubbo
2022-01-30 22:29 Sam James
2022-01-30  8:03 Agostino Sarubbo
2022-01-29 10:04 Jakov Smolić
2022-01-29 10:04 Jakov Smolić
2022-01-29  7:21 Arthur Zamarin
2021-12-29 23:14 Michał Górny
2021-12-13 19:56 Michał Górny
2021-12-13 19:55 Arthur Zamarin
2021-12-13  7:09 Agostino Sarubbo
2021-12-13  5:42 Sam James
2021-12-12 20:55 Jakov Smolić
2021-12-12 20:04 Arthur Zamarin
2021-12-12 20:04 Arthur Zamarin
2021-12-12 20:01 Jakov Smolić
2021-11-12  9:40 Michał Górny
2021-10-24  7:33 Sam James
2021-08-16 11:46 Marek Szuba
2021-08-03 11:37 Michał Górny
2021-07-27 20:35 Sam James
2021-07-27 17:14 Sam James
2021-07-25 20:09 Sam James
2021-07-25  7:52 Sergei Trofimovich
2021-07-25  1:04 Sam James
2021-07-24 17:10 Sam James
2021-06-17  6:40 Michał Górny
2021-06-16 19:33 Michał Górny
2021-05-07 10:33 Michał Górny
2021-02-12 14:00 Michał Górny
2021-02-12 13:47 Sam James
2020-12-16 16:12 Sam James
2020-12-16 15:42 Sam James
2020-12-11 23:12 Sergei Trofimovich
2020-12-10 21:41 Thomas Deutschmann
2020-12-06 23:25 Sam James
2020-12-06 18:46 Sam James
2020-09-20 13:11 Michał Górny
2020-09-07  6:17 Michał Górny
2020-08-05 15:10 Michał Górny
2020-08-03 16:34 Sergei Trofimovich
2020-08-01  9:01 Sergei Trofimovich
2020-07-31 17:53 Sergei Trofimovich
2020-07-31  2:38 Sam James
2020-07-30 23:56 Sam James
2020-07-27 20:06 Aaron Bauman
2020-06-12 10:59 Michał Górny
2020-06-12 10:59 Michał Górny
2020-06-12 10:59 Michał Górny
2020-05-04 11:39 Michał Górny
2020-04-01 17:13 Sergei Trofimovich
2020-03-30 13:40 Agostino Sarubbo
2020-03-30 13:36 Agostino Sarubbo
2020-03-29 14:45 Sergei Trofimovich
2020-03-29  9:40 Sergei Trofimovich
2020-03-29  9:34 Sergei Trofimovich
2020-01-26 21:19 William Hubbs
2019-12-03  4:18 Aaron Bauman
2019-11-19 15:40 Agostino Sarubbo
2019-11-18 12:03 Agostino Sarubbo
2019-11-17 18:24 Aaron W. Swenson
2019-03-21 18:58 William Hubbs
2019-02-14 22:09 Sergei Trofimovich
2018-11-05 14:26 Craig Andrews
2018-08-14 15:12 Aaron Swenson
2018-07-22 15:11 Mikle Kolyada
2018-07-20 15:53 Tobias Klausmann
2018-07-03  6:34 Sergei Trofimovich
2018-07-02  0:49 Thomas Deutschmann
2018-07-01 15:19 Pacho Ramos
2018-07-01  9:24 Sergei Trofimovich
2018-06-30 19:03 Sergei Trofimovich
2018-06-30 14:45 Sergei Trofimovich
2018-05-15 19:38 Aaron Swenson
2017-09-29 23:32 Matt Thode
2017-09-18 19:02 Patrick Lauer
2017-08-31 17:56 Matt Thode
2017-08-30 21:07 Matt Thode
2017-05-02 15:15 Michał Górny
2017-03-10 22:35 Zac Medico
2016-07-21 13:30 Patrick Lauer
2016-05-14  8:49 Michał Górny
2016-02-28  7:32 Matt Thode

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1740280992.0007fcd4a900849e97ee1fe24b62e2816ec2f968.mgorny@gentoo \
    --to=mgorny@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox