setup.py: use readme_renderer to check rst syntax errors on release

This commit is contained in:
Cosimo Lupo 2024-05-28 12:00:47 +01:00
parent 353f3808f2
commit 2ab0707c6a

View File

@ -8,6 +8,7 @@ from os.path import isfile, join as pjoin
from glob import glob from glob import glob
from setuptools import setup, find_packages, Command, Extension from setuptools import setup, find_packages, Command, Extension
from setuptools.command.build_ext import build_ext as _build_ext from setuptools.command.build_ext import build_ext as _build_ext
from setuptools.errors import SetupError
from distutils import log from distutils import log
from distutils.util import convert_path from distutils.util import convert_path
import subprocess as sp import subprocess as sp
@ -33,7 +34,7 @@ if {"bdist_wheel"}.intersection(sys.argv):
setup_requires.append("wheel") setup_requires.append("wheel")
if {"release"}.intersection(sys.argv): if {"release"}.intersection(sys.argv):
setup_requires.append("bump2version") setup_requires.extend(["bump2version", "readme_renderer"])
try: try:
__import__("cython") __import__("cython")
@ -266,7 +267,19 @@ class release(Command):
raise DistutilsOptionError("--major/--minor are mutually exclusive") raise DistutilsOptionError("--major/--minor are mutually exclusive")
self.part = "major" if self.major else "minor" if self.minor else None self.part = "major" if self.major else "minor" if self.minor else None
def check_long_description_syntax(self):
import readme_renderer.rst
result = readme_renderer.rst.render(long_description, stream=sys.stderr)
if result is None:
raise SetupError(
"`long_description` has syntax errors in markup"
" and would not be rendered on PyPI."
)
def run(self): def run(self):
self.check_long_description_syntax()
if self.part is not None: if self.part is not None:
log.info("bumping '%s' version" % self.part) log.info("bumping '%s' version" % self.part)
self.bumpversion(self.part, commit=False) self.bumpversion(self.part, commit=False)