diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 6b89530c3..4ef741c36 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -100,5 +100,5 @@ jobs: - name: Documentation run: | - pip install -r doc/requirements.txt + pip install ".[doc]" make -C doc html diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 0b83e20ea..9bce80fd2 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -32,4 +32,5 @@ python: install: - method: pip path: . - - requirements: doc/requirements.txt + extra_requirements: + - doc diff --git a/setup.py b/setup.py index 73d1ae952..143206653 100755 --- a/setup.py +++ b/setup.py @@ -1,23 +1,24 @@ #!/usr/bin/env python +import os +import sys +from pathlib import Path from typing import Sequence + from setuptools import setup, find_packages from setuptools.command.build_py import build_py as _build_py from setuptools.command.sdist import sdist as _sdist -import os -import sys -with open(os.path.join(os.path.dirname(__file__), "VERSION"), encoding="utf-8") as ver_file: - VERSION = ver_file.readline().strip() -with open("requirements.txt", encoding="utf-8") as reqs_file: - requirements = reqs_file.read().splitlines() +def _read_content(path: str) -> str: + return (Path(__file__).parent / path).read_text(encoding="utf-8") -with open("test-requirements.txt", encoding="utf-8") as reqs_file: - test_requirements = reqs_file.read().splitlines() -with open("README.md", encoding="utf-8") as rm_file: - long_description = rm_file.read() +version = _read_content("VERSION").strip() +requirements = _read_content("requirements.txt").splitlines() +test_requirements = _read_content("test-requirements.txt").splitlines() +doc_requirements = _read_content("doc/requirements.txt").splitlines() +long_description = _read_content("README.md") class build_py(_build_py): @@ -48,7 +49,7 @@ def _stamp_version(filename: str) -> None: with open(filename) as f: for line in f: if "__version__ =" in line: - line = line.replace('"git"', "'%s'" % VERSION) + line = line.replace('"git"', "'%s'" % version) found = True out.append(line) except OSError: @@ -64,7 +65,7 @@ def _stamp_version(filename: str) -> None: setup( name="GitPython", cmdclass={"build_py": build_py, "sdist": sdist}, - version=VERSION, + version=version, description="GitPython is a Python library used to interact with Git repositories", author="Sebastian Thiel, Michael Trier", author_email="byronimo@gmail.com, mtrier@gmail.com", @@ -75,7 +76,10 @@ def _stamp_version(filename: str) -> None: package_dir={"git": "git"}, python_requires=">=3.7", install_requires=requirements, - extras_require={"test": test_requirements}, + extras_require={ + "test": test_requirements, + "doc": doc_requirements, + }, zip_safe=False, long_description=long_description, long_description_content_type="text/markdown", diff --git a/tox.ini b/tox.ini index 6e02e5aee..dfcb5ed8f 100644 --- a/tox.ini +++ b/tox.ini @@ -23,7 +23,7 @@ ignore_outcome = true [testenv:html] description = Build HTML documentation base_python = py{39,310,311,312,38,37} -deps = -r doc/requirements.txt +extras = doc allowlist_externals = make commands = make BUILDDIR={env_tmp_dir}/doc/build -C doc clean