././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4471574 sphinxext_rediraffe-0.3.0/LICENCE.rst 0000644 0000000 0000000 00000002115 15066252326 014303 0 ustar 00 Copyright (c) 2020, Vasista Vovveti Copyright (c) 2025, the Sphinx developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4471574 sphinxext_rediraffe-0.3.0/README.rst 0000644 0000000 0000000 00000002527 15066252326 014205 0 ustar 00 =================== sphinxext-rediraffe =================== .. image:: https://img.shields.io/pypi/v/sphinxext-rediraffe.svg :target: https://pypi.org/project/sphinxext-rediraffe/ :alt: Package on PyPI .. image:: https://github.com/sphinx-doc/sphinxext-rediraffe/actions/workflows/test.yml/badge.svg :target: https://github.com/sphinx-doc/sphinxext-rediraffe/actions :alt: Build Status .. image:: https://img.shields.io/badge/License-MIT-blue.svg :target: https://opensource.org/licenses/MIT :alt: MIT Sphinx extension to redirect files .. image:: ./assets/rediraffe_logo.svg :align: center This Sphinx extension redirects non-existent pages to working pages. Rediraffe can also check that deleted or renamed files in your git repo are redirected. Rediraffe creates a graph of all specified redirects and traverses it to point all internal urls to leaf urls. This means that chained redirects will be resolved. For example, if a config has 6 chained redirects, all 6 links will redirect directly to the final link. The end user will never experience more than 1 redirection. Note: Rediraffe supports the html and dirhtml builders. Installation ============ .. code-block:: sh python -m pip install sphinxext-rediraffe Usage ===== See the `documentation`_. .. _documentation: https://sphinxext-rediraffe.readthedocs.io/en/latest/ ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/docs/Makefile 0000644 0000000 0000000 00000001172 15066252326 015101 0 ustar 00 # Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/docs/conf.py 0000644 0000000 0000000 00000001133 15066252326 014735 0 ustar 00 from __future__ import annotations import sphinxext.rediraffe copyright = ( '2020, FIRST', '2025-%Y, the Sphinx developers', ) version = release = sphinxext.rediraffe.__version__ master_doc = 'index' project = 'sphinxext-rediraffe' exclude_patterns = ['_build'] nitpicky = True html_theme = 'furo' html_logo = '../assets/rediraffe_logo_128.png' extensions = [ 'sphinx.ext.intersphinx', 'sphinxext.rediraffe', ] intersphinx_mapping = { 'sphinx': ('https://www.sphinx-doc.org/', None), } rediraffe_redirects = { 'other.rst': 'index.rst', 'other2.rst': 'other.rst', } ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/docs/index.rst 0000644 0000000 0000000 00000011540 15066252326 015302 0 ustar 00 =================== sphinxext-rediraffe =================== .. role:: code-py(code) :language: Python This Sphinx extension redirects non-existent pages to working pages. Rediraffe can also check that deleted or renamed files in your git repo are redirected. Rediraffe creates a graph of all specified redirects and traverses it to point all internal urls to leaf urls. This means that chained redirects will be resolved. For example, if a config has 6 chained redirects, all 6 links will redirect directly to the final link. The end user will never experience more than 1 redirection. Note: Rediraffe supports the html and dirhtml builders. Installation ============ .. code-block:: sh python -m pip install sphinxext-rediraffe Usage ===== Just add ``sphinxext.rediraffe`` to the extensions list in :file:`conf.py`, .. code-block:: python extensions = [ 'sphinxext.rediraffe', ] and set :confval:`rediraffe_redirects` to a dict or file of redirects. Diff Checker ------------ The diff checker ensures that deleted or renamed files in your git repo are in your redirects. To run the diff checker: 1. Set :confval:`rediraffe_branch` and :confval:`rediraffe_redirects` in :file:`conf.py`. 2. Run the ``rediraffecheckdiff`` builder. Auto Redirect builder --------------------- The auto redirect builder can be used to automatically add renamed files to your redirects file. Simply run the ``rediraffewritediff`` builder. To run the auto redirecter: 1. Set :confval:`rediraffe_branch` and :confval:`rediraffe_redirects` in :file:`conf.py`. 2. Run the ``rediraffewritediff`` builder. Note: The auto redirect builder only works with a configuration file. Note: Deleted files cannot be added to your redirects file automatically. Options ======= These values are placed in the :file:`conf.py` of your Sphinx project. .. confval:: rediraffe_branch :type: :code-py:`str` :default: :code-py:`''` **Required** for the ``rediraffecheckdiff`` & ``rediraffewritediff`` builders. The branch or commit to diff against. .. confval:: rediraffe_redirects :type: :code-py:`str | dict[str, str]` A filename or dict containing redirects. .. confval:: rediraffe_template :type: :code-py:`str` :default: :code-py:`None` A jinja template to use to render the inserted redirecting files. If not specified, a default template will be used. This template will only be accessed after the html/htmldir builder is finished, meaning that this file may be generated as part of your build. Variables available to :confval:`!rediraffe_template`: ``from_file`` the file being redirected as written in :confval:`rediraffe_redirects`. ``to_file`` the destination file that from_file is redirected to as written in :confval:`rediraffe_redirects`. ``from_url`` the path to ``from_url``'s html file (built by rediraffe) relative to the :confval:`!outdir`. ``to_url`` the path to ``to_url``'s built html file relative to the :confval:`!outdir`. ``rel_url`` the relative path from ``from_url`` to ``to_url``. .. confval:: rediraffe_auto_redirect_perc :type: :code-py:`int` :default: :code-py:`100` Only used by the ``rediraffewritediff`` builder. The percentage as an integer representing the accuracy required before auto redirecting with the ``rediraffewritediff`` builder. Example Config ============== redirects only (file) --------------------- :file:`conf.py`: .. code-block:: python rediraffe_redirects = 'redirects.txt' :file:`redirects.txt`: .. code-block:: text # comments start with '#' 'another file.rst' index.rst another2.rst "another file.rst" Note: Filepaths can be wrapped in quotes (single or double). This is especially useful for filepaths containing spaces. redirects only (dict) --------------------- :file:`conf.py`: .. code-block:: python rediraffe_redirects = { 'another.rst': 'index.rst', 'another2.rst': 'another.rst', } redirects + diff checker ------------------------ :file:`conf.py`: .. code-block:: python rediraffe_redirects = 'redirects.txt' rediraffe_branch = 'main~1' redirects with jinja template ----------------------------- :file:`conf.py`: .. code-block:: python rediraffe_redirects = 'redirects.txt' rediraffe_template = 'template.html' :file:`template.html`: .. code-block:: html
Your destination is {{to_url}}
A complex example can be found at :file:`tests/roots/ext/`. Testing ======= Rediraffe uses pytest for testing. To run tests: 1. Install this package 2. Install test dependencies .. code-block:: sh python -m pip install --group test 3. Navigate to the tests directory and run .. code-block:: sh python -m pytest --headless The ``--headless`` flag ensures that a browser window does not open during browser backed selenium testing. ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/docs/make.bat 0000644 0000000 0000000 00000001433 15066252326 015046 0 ustar 00 @ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/pyproject.toml 0000644 0000000 0000000 00000004116 15066252326 015426 0 ustar 00 [build-system] requires = ["flit_core>=3.12"] build-backend = "flit_core.buildapi" # project metadata [project] name = "sphinxext-rediraffe" description = "Sphinx Extension that redirects non-existent pages to working pages" readme = "README.rst" urls.Code = "https://github.com/sphinx-doc/sphinxext-rediraffe/" urls.Documentation = "https://sphinxext-rediraffe.readthedocs.io/" urls.Download = "https://pypi.org/project/sphinxext-rediraffe/" urls.Homepage = "https://github.com/sphinx-doc/sphinxext-rediraffe/" urls."Issue tracker" = "https://github.com/sphinx-doc/sphinxext-rediraffe/issues" license = "MIT" license-files = [ "LICENCE.rst", ] requires-python = ">=3.9" # Classifiers list: https://pypi.org/classifiers/ classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Plugins", "Environment :: Web Environment", "Framework :: Sphinx :: Extension", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Documentation :: Sphinx", "Topic :: Documentation", "Topic :: Software Development :: Documentation", "Topic :: Text Processing", "Topic :: Utilities", ] dependencies = [ "Sphinx>=6.0", ] dynamic = ["version"] [[project.authors]] name = "Vasista Vovveti" email = "vasistavovveti@gmail.com" [dependency-groups] docs = [ "furo>=2024", "sphinx~=8.2.0", ] lint = [ "ruff==0.13.2", ] package = [ "betterproto==2.0.0b6", # resolution fails without betterproto "build", "pypi-attestations==0.0.27", "twine>=6.1", ] test = [ "pytest", "seleniumbase", ] [tool.flit.module] name = "sphinxext.rediraffe" [tool.flit.sdist] include = [ # Documentation "docs/", # Tests "tests/", "tox.ini", ] exclude = [ "docs/_build", ] [tool.uv] default-groups = "all" ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/sphinxext/rediraffe.py 0000644 0000000 0000000 00000040726 15066252326 017054 0 ustar 00 from __future__ import annotations import json import re import subprocess from os.path import relpath from pathlib import Path, PurePosixPath, PureWindowsPath from jinja2 import Environment, FileSystemLoader, Template from sphinx.builders import Builder from sphinx.builders.dirhtml import DirectoryHTMLBuilder from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.builders.linkcheck import CheckExternalLinksBuilder from sphinx.errors import ExtensionError from sphinx.util import logging from sphinx.util.console import green, red, yellow # pylint: disable=no-name-in-module TYPE_CHECKING = False if TYPE_CHECKING: from sphinx.application import Sphinx from sphinx.util.typing import ExtensionMetadata __version__ = '0.3.0' version_info = (0, 3, 0) logger = logging.getLogger(__name__) DEFAULT_REDIRAFFE_TEMPLATE = Template( """You should have been redirected.
If not, click here to continue. """ ) REDIRECT_JSON_NAME = '_rediraffe_redirected.json' RE_OBJ = re.compile(r"(?:(\"|')(.*?)\1|(\S+))\s+(?:(\"|')(.*?)\4|(\S+))") READTHEDOCS_BUILDERS = ['readthedocs', 'readthedocsdirhtml'] def create_graph(path: Path) -> dict[str, str]: """ Convert a file containing a whitespace delimited edge list (key value pairs) to a dict. Throws error on duplicate keys. """ graph_edges = {} broken = False with path.open(encoding='utf-8') as file: lines = file.readlines() for line_num, line in enumerate(lines, start=1): line = line.strip() if len(line) == 0 or line.startswith('#'): continue match = RE_OBJ.fullmatch(line) if match is None: logger.error( red(f'rediraffe: line {line_num} of the redirects is invalid!') ) broken = True continue edge_from = match.group(2) or match.group(3) edge_to = match.group(5) or match.group(6) if edge_from in graph_edges: # Duplicate vertices not allowed / Vertices can only have 1 outgoing edge logger.error( red( f'rediraffe: {edge_from} is redirected multiple times in the rediraffe_redirects file!' ) ) broken = True graph_edges[edge_from] = edge_to if broken: err_msg = 'rediraffe: Error(s) in parsing the redirects file.' logger.error(err_msg) raise ExtensionError(err_msg) return graph_edges def create_simple_redirects(graph_edges: dict) -> dict: """ Ensures that a graph is a acyclic and reconnects every vertex to its leaf vertex. """ redirects = {} broken_vertices = set() for vertex in graph_edges: if vertex in broken_vertices: continue visited = [] while vertex in graph_edges: if vertex in visited: # Ensure graph is a DAG logger.error( red( 'rediraffe: A circular redirect exists. Links involved: ' + ' -> '.join(visited + [vertex]) ) ) broken_vertices.update(visited) break visited.append(vertex) vertex = graph_edges[vertex] # vertex is now a leaf for visited_vertex in visited: redirects[visited_vertex] = vertex if broken_vertices: err_msg = ( 'rediraffe: At least 1 circular redirect detected. All involved links: ' + ', '.join(broken_vertices) ) logger.error(err_msg) raise ExtensionError(err_msg) return redirects def remove_suffix(docname: str, suffixes: list[str]) -> str: """Remove any known suffixes for a file path.""" for suffix in suffixes: if docname.endswith(suffix): return docname[: -len(suffix)] return docname def build_redirects(app: Sphinx, exception: Exception | None) -> None: """ Build amd write redirects """ redirect_json_file = Path(app.outdir) / REDIRECT_JSON_NAME if redirect_json_file.exists(): redirect_record = json.loads(redirect_json_file.read_bytes()) else: redirect_record = {} if exception is not None: return if isinstance(app.builder, CheckExternalLinksBuilder): logger.info('rediraffe: Redirect generation skipped for linkcheck builders.') return if ( type(app.builder) not in (StandaloneHTMLBuilder, DirectoryHTMLBuilder) and app.builder.name not in READTHEDOCS_BUILDERS ): logger.info( 'rediraffe: Redirect generation skipped for unsupported builders. Supported builders: html, dirhtml, readthedocs, readthedocsdirhtml.' ) return rediraffe_template = app.config.rediraffe_template if isinstance(rediraffe_template, str): # path template_path = Path(app.srcdir) / rediraffe_template if template_path.exists(): file_loader = FileSystemLoader(template_path.parent) env = Environment(loader=file_loader) rediraffe_template = env.get_template(template_path.name) else: logger.warning( 'rediraffe: rediraffe_template does not exist. The default will be used.' ) rediraffe_template = DEFAULT_REDIRAFFE_TEMPLATE else: rediraffe_template = DEFAULT_REDIRAFFE_TEMPLATE graph_edges = {} rediraffe_redirects = app.config.rediraffe_redirects if isinstance(rediraffe_redirects, dict): # dict in conf.py graph_edges = rediraffe_redirects elif isinstance(rediraffe_redirects, str): # filename path = Path(app.srcdir) / rediraffe_redirects if not path.is_file(): logger.error( red( 'rediraffe: rediraffe_redirects file does not exist. Redirects will not be generated.' ) ) app.statuscode = 1 return try: graph_edges = create_graph(path) except ExtensionError as e: app.statuscode = 1 raise e else: logger.warning( 'rediraffe: rediraffe was not given redirects to process. Redirects will not be generated.' ) return try: redirects = create_simple_redirects(graph_edges) except ExtensionError as e: app.statuscode = 1 raise e logger.info('Writing redirects...') # write redirects for src_redirect_from, src_redirect_to in redirects.items(): # Normalize path - src_redirect_.* is relative so drive letters aren't an issue. src_redirect_from = Path(PureWindowsPath(src_redirect_from)) src_redirect_to = Path(PureWindowsPath(src_redirect_to)) # remove extensions redirect_from_name = remove_suffix( src_redirect_from.name, app.config.source_suffix ) redirect_to_name = remove_suffix(src_redirect_to.name, app.config.source_suffix) redirect_from = src_redirect_from.parent / f'{redirect_from_name}.html' redirect_to = src_redirect_to.parent / f'{redirect_to_name}.html' if type(app.builder) is DirectoryHTMLBuilder: if redirect_from_name != 'index': redirect_from = ( src_redirect_from.parent / redirect_from_name / 'index.html' ) if redirect_to_name != 'index': redirect_to = src_redirect_to.parent / redirect_to_name / 'index.html' # absolute paths into the build dir build_redirect_from = Path(app.outdir) / redirect_from build_redirect_to = Path(app.outdir) / redirect_to if ( build_redirect_from.exists() and src_redirect_from.as_posix() in redirect_record ): # if it is still pointing to the same source, continue if ( redirect_record[src_redirect_from.as_posix()] == src_redirect_to.as_posix() ): continue # otherwise remove and rewrite build_redirect_from.unlink() if build_redirect_from.exists(): logger.warning( '%s %s redirects to %s but %s already exists!', yellow('(broken)'), redirect_from, redirect_to, build_redirect_from, ) app.statuscode = 1 continue if not build_redirect_to.exists(): logger.warning( '%s %s redirects to %s but %s does not exist!', yellow('(broken)'), redirect_from, redirect_to, build_redirect_to, ) app.statuscode = 1 continue build_redirect_from.parent.mkdir(parents=True, exist_ok=True) with build_redirect_from.open('w', encoding='utf-8') as f: f.write( rediraffe_template.render( rel_url=str( PurePosixPath( PureWindowsPath( relpath(build_redirect_to, build_redirect_from.parent) ) ) ), from_file=src_redirect_from, to_file=src_redirect_to, from_url=redirect_from, to_url=redirect_to, ) ) logger.info( '%s %s %s %s', green('(good)'), redirect_from, green('-->'), redirect_to ) redirect_record[src_redirect_from.as_posix()] = src_redirect_to.as_posix() redirect_json_file.write_text(json.dumps(redirect_record), encoding='utf8') class CheckRedirectsDiffBuilder(Builder): name = 'rediraffecheckdiff' def init(self) -> None: super().init() source_suffixes = set(self.app.config.source_suffix) src_path = Path(self.app.srcdir) rediraffe_redirects = self.app.config.rediraffe_redirects redirects_path = None if isinstance(rediraffe_redirects, dict): pass elif isinstance(rediraffe_redirects, str): redirects_path = Path(src_path) / rediraffe_redirects if not redirects_path.is_file(): logger.error(red('rediraffe: rediraffe_redirects file does not exist.')) self.app.statuscode = 1 return try: rediraffe_redirects = create_graph(redirects_path) except ExtensionError: self.app.statuscode = 1 return else: logger.error('rediraffe: rediraffe was not given redirects to process.') self.app.statuscode = 1 return absolute_redirects = { (src_path / redirect_from).resolve(): (src_path / redirect_to).resolve() for redirect_from, redirect_to in rediraffe_redirects.items() } path_to_git_repo = subprocess.check_output( ('git', 'rev-parse', '--show-toplevel'), cwd=self.app.srcdir, encoding='utf-8', ) def abs_path_in_src_dir_w_src_suffix(filename: str) -> Path | None: abs_path = (Path(path_to_git_repo.strip()) / filename.strip()).resolve() if not str(abs_path).startswith(str(src_path)): return None if abs_path.suffix not in source_suffixes: return None return abs_path # run git diff cmd = ('git', 'diff', '--name-status', '--diff-filter=R') if rediraffe_branch := self.app.config.rediraffe_branch: cmd += (rediraffe_branch.strip(),) renamed_files_out = subprocess.check_output( cmd, cwd=self.app.srcdir, encoding='utf-8' ).splitlines() rename_hints = {} for line in renamed_files_out: line = line.strip() r_perc, rename_from, rename_to = re.split(r'\t', line) perc = int(r_perc[1:]) path_rename_from = abs_path_in_src_dir_w_src_suffix(rename_from) path_rename_to = abs_path_in_src_dir_w_src_suffix(rename_to) if path_rename_from is None: continue if path_rename_to is None: continue rename_hints[path_rename_from] = (path_rename_to, perc) # run git diff cmd = ('git', 'diff', '--diff-filter=D', '--name-only') if rediraffe_branch := self.app.config.rediraffe_branch: cmd += (rediraffe_branch.strip(),) deleted_files = subprocess.check_output( cmd, cwd=self.app.srcdir, encoding='utf-8' ).splitlines() # to absolute path + filter out deleted_files = [ abs_path_in_src_dir_w_src_suffix(filename) for filename in deleted_files ] deleted_files = list(filter(lambda x: x is not None, deleted_files)) for deleted_file in deleted_files: if deleted_file in absolute_redirects: logger.info( 'deleted file %s redirects to %s.', deleted_file, absolute_redirects[deleted_file], ) else: err_msg = f'{red("(broken)")} {deleted_file} was deleted but is not redirected!' logger.error(err_msg) self.app.statuscode = 1 for renamed_file in rename_hints: hint_to, perc = rename_hints[renamed_file] if renamed_file in absolute_redirects: logger.info( 'renamed file %s redirects to %s.', renamed_file, absolute_redirects[renamed_file], ) continue if self.name == 'rediraffewritediff': if perc >= self.app.config.rediraffe_auto_redirect_perc: rel_rename_from = ( f'"{str(PurePosixPath(renamed_file.relative_to(src_path)))}"' ) rel_rename_to = ( f'"{str(PurePosixPath(hint_to.relative_to(src_path)))}"' ) with redirects_path.open('a', encoding='utf-8') as redirects_file: redirects_file.write(f'{rel_rename_from} {rel_rename_to}\n') logger.info( '%s Renamed file %s has been redirected to %s in your redirects file!', green('(okay)'), rel_rename_from, rel_rename_to, ) continue err_msg = ( f'{red("(broken)")} {renamed_file} was deleted but is not redirected!' f' Hint: This file was renamed to {hint_to} with a similarity of {perc}%.' ) logger.error(err_msg) self.app.statuscode = 1 def get_outdated_docs(self): return [] def prepare_writing(self=None, docnames=None): pass def write_doc(self, docname=None, doctree=None): pass def get_target_uri(self, docname=None, typ=None): return '' def read(self): return [] class WriteRedirectsDiffBuilder(CheckRedirectsDiffBuilder): name = 'rediraffewritediff' def init(self) -> None: rediraffe_redirects = self.app.config.rediraffe_redirects if not isinstance(rediraffe_redirects, str): logger.error( '%s Automatic redirects is only available with a redirects file.', red('(broken)'), ) self.app.statuscode = 1 return super().init() def setup(app: Sphinx) -> ExtensionMetadata: app.add_config_value('rediraffe_redirects', None, None) app.add_config_value('rediraffe_branch', '', None) app.add_config_value('rediraffe_template', None, None) app.add_config_value('rediraffe_auto_redirect_perc', 100, None) app.add_builder(CheckRedirectsDiffBuilder) app.add_builder(WriteRedirectsDiffBuilder) app.connect('build-finished', build_redirects) return { 'version': __version__, 'env_version': 1, 'parallel_read_safe': True, 'parallel_write_safe': True, } ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/conftest.py 0000644 0000000 0000000 00000011000 15066252326 016041 0 ustar 00 from __future__ import annotations import os import shutil import stat import subprocess from contextlib import suppress from pathlib import Path import pytest import sphinx from seleniumbase import config as sb_config if sphinx.version_info[:2] >= (7, 2): TESTS_ROOT = Path(__file__).resolve().parent else: from sphinx.testing.path import path TESTS_ROOT = path(__file__).abspath().parent pytest_plugins = ['sphinx.testing.fixtures'] def del_rw(action, name, exc): os.chmod(name, stat.S_IWRITE) os.remove(name) def delete(path: str | Path): path = Path(path).resolve() if path.exists(): if path.is_dir(): shutil.rmtree(path, onerror=del_rw) else: try: path.unlink() except Exception: del_rw(None, path, None) # @pytest.fixture(scope="session") # def rootdir(): # return TESTS_ROOT / "roots" @pytest.fixture def content(app): app.build() return app @pytest.fixture def outdir(app): return app.outdir @pytest.fixture def app_init_repo(make_app, app_params): """ Initializes a git repo before returning the app. The files in the specified test root are converted into a git repo. For example, in a test root with folders: HEAD, HEAD~1, HEAD~2, the files in each folder are treated as a snapshot of a git repo at their respective revs. A git repo is created and in order: 1. HEAD~2's files are moved to the parent and are commited 2. HEAD~1's files are moved to the parent and are commited 3. HEAD's files are moved to the parent and are commited Returns: app: Sphinx app; same as the `app` fixture """ args, kwargs = app_params srcdir = None if 'srcdir' in kwargs: srcdir = kwargs['srcdir'] elif 'buildername' in kwargs: srcdir = args[1] else: srcdir = args[0] print(srcdir) src_path = Path(srcdir) def git(*cmd: str): with suppress(subprocess.CalledProcessError): subprocess.check_output( ( 'git', '-c', 'user.name="sphinxext-linkcheckdiff test runner"', '-c', 'user.email="NONE"', *cmd, ), cwd=src_path, ) git('init') src_item_paths = list(src_path.glob('*')) commits = [] for item_path in src_item_paths: if not item_path.name.startswith('HEAD'): continue commit_num = None sq_idx = item_path.name.find('~') if sq_idx != -1: commit_num = int(item_path.name[sq_idx + 1 :]) else: commit_num = 0 commits.append((item_path, commit_num)) commits.sort(key=lambda tup: tup[1], reverse=True) for commit in commits: files = list(src_path.glob('*')) for file in files: if file not in src_item_paths: delete(file) for file in (src_path / commit[0]).glob('*'): new_path = file.parent.parent / file.name file.rename(new_path) git('add', '.') for path in src_item_paths: git('rm', '--cached', '-r', path) git('commit', '-m', f'Apply {commit[0]}') delete(src_path / commit[0]) return make_app(*args, **kwargs) def pytest_configure(config): config.addinivalue_line('markers', 'sphinx') def rel2url(outdir, path): return 'file://' + str((Path(outdir) / path).resolve()) @pytest.fixture(scope='session') def sb_(request): """Same as the sb fixture but with a session scope""" from seleniumbase import BaseCase class BaseClass(BaseCase): def setUp(self): super().setUp() def tearDown(self): self.save_teardown_screenshot() super().tearDown() def base_method(self): pass sb = BaseClass('base_method') sb.setUp() sb._needs_tearDown = True sb_config._sb_node[request.node.nodeid] = sb yield sb if sb._needs_tearDown: sb.tearDown() sb._needs_tearDown = False @pytest.fixture def ensure_redirect(outdir, sb_): # outdir = app.outdir def _ensure_redirect(before: str, expected_after: str): before_url = rel2url(outdir, before) sb_.open(before_url) expected_after_path = Path(rel2url(outdir, expected_after)) actual_after_path = Path(sb_.get_current_url()) assert actual_after_path == expected_after_path return _ensure_redirect ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 025723 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 025725 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 024241 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD/redirects.txt 0000644 0000000 0000000 00000000343 15066252326 025134 0 ustar 00 tof1.rst docs\folder1\f1.rst docs\folder1\tof1.rst docs\folder1\f1.rst docs\folder1\tof2.rst docs\folder2\f2.rst docs\folder2\toindex.rst index.rst totoindex.rst docs\folder2\toindex.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4531574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 026202 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/docs/folder1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 026547 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/docs/folder1/tof2.rst 0000644 0000000 0000000 00000000004 15066252326 026550 0 ustar 00 tof2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 026204 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/docs/folder2/toindex.rst 0000644 0000000 0000000 00000000007 15066252326 027354 0 ustar 00 toindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 024520 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 025401 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 024263 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/HEAD~1/totoindex.rst 0000644 0000000 0000000 00000000011 15066252326 025425 0 ustar 00 totoindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-backslashes/conf.py 0000644 0000000 0000000 00000000272 15066252326 023206 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD/another2.rst 0000644 0000000 0000000 00000000014 15066252326 026127 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 025512 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD/redirects.txt 0000644 0000000 0000000 00000000030 15066252326 026376 0 ustar 00 another.rst another2.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 026324 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 025771 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 026652 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-bad_rediraffe_file/conf.py 0000644 0000000 0000000 00000000334 15066252326 024456 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'not-a-redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 027435 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/HEAD/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 030316 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 030247 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 027714 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 030575 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected/conf.py 0000644 0000000 0000000 00000000326 15066252326 026402 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD/index.rst0000644 0000000 0000000 00000000012 15066252326 031005 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000216 00000000000 010214 x ustar 00 114 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD/redirects.txt 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD/redirects0000644 0000000 0000000 00000000000 15066252326 031050 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000216 00000000000 010214 x ustar 00 114 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/another.rst 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/another0000644 0000000 0000000 00000000014 15066252326 031010 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/index.rst 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/index.r0000644 0000000 0000000 00000000012 15066252326 030715 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000220 00000000000 010207 x ustar 00 116 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/redirects.txt 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/HEAD~1/redirec0000644 0000000 0000000 00000000000 15066252326 030760 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4541574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_not_redirected_commit/conf.py 0000644 0000000 0000000 00000000543 15066252326 027753 0 ustar 00 from __future__ import annotations import subprocess from pathlib import Path extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' rediraffe_branch = subprocess.check_output( ('git', 'rev-parse', 'HEAD~1'), cwd=Path(__file__).parent ).decode('utf-8') ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 026555 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/HEAD/redirects.txt 0000644 0000000 0000000 00000000025 15066252326 027445 0 ustar 00 another.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 027367 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 027034 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 027715 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected/conf.py 0000644 0000000 0000000 00000000326 15066252326 025522 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 030125 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD/redirects.txt0000644 0000000 0000000 00000000025 15066252326 031015 0 ustar 00 another.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD~1/another.rst0000644 0000000 0000000 00000000014 15066252326 030737 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 030404 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD~1/redirects.txt 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/HEAD~1/redirects.t0000644 0000000 0000000 00000000000 15066252326 030711 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_commit/conf.py 0000644 0000000 0000000 00000000543 15066252326 027073 0 ustar 00 from __future__ import annotations import subprocess from pathlib import Path extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' rediraffe_branch = subprocess.check_output( ('git', 'rev-parse', 'HEAD~1'), cwd=Path(__file__).parent ).decode('utf-8') ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_dict/HEAD/conf.py 0000644 0000000 0000000 00000000352 15066252326 027225 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = { 'another.rst': 'index.rst', } ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_dict/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 027560 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_dict/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 030372 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_dict/HEAD~1/conf.py 0000644 0000000 0000000 00000000311 15066252326 027477 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = {} ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-deleted_file_redirected_dict/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 030037 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-file_changed/HEAD/index.rst 0000644 0000000 0000000 00000000026 15066252326 024353 0 ustar 00 index file but changed ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-file_changed/HEAD/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 025227 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-file_changed/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 024625 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-file_changed/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 025506 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-file_changed/conf.py 0000644 0000000 0000000 00000000326 15066252326 023313 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 026751 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4551575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD/redirects.txt 0000644 0000000 0000000 00000000057 15066252326 027646 0 ustar 00 another.rst another2.rst another2.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 027563 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD~1/another2.rst 0000644 0000000 0000000 00000000014 15066252326 027645 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 027230 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 030111 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_to_chain/conf.py 0000644 0000000 0000000 00000000326 15066252326 025716 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD/another2.rst 0000644 0000000 0000000 00000000011 15066252326 026712 0 ustar 00 another 2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 026300 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD/redirects.txt 0000644 0000000 0000000 00000000056 15066252326 027174 0 ustar 00 another.rst index.rst another.rst another2.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD~1/another2.rst 0000644 0000000 0000000 00000000011 15066252326 027171 0 ustar 00 another 2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 026557 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000025 15066252326 027447 0 ustar 00 another.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-link_redirected_twice/conf.py 0000644 0000000 0000000 00000000326 15066252326 025245 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 026270 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 026272 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 024606 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD/redirects.txt 0000644 0000000 0000000 00000000343 15066252326 025501 0 ustar 00 tof1.rst docs\folder1\f1.rst docs\folder1\tof1.rst docs/folder1\f1.rst docs/folder1/tof2.rst docs\folder2/f2.rst docs\folder2/toindex.rst index.rst totoindex.rst docs/folder2/toindex.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 026547 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/docs/folder1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 027114 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/docs/folder1/tof2.rst 0000644 0000000 0000000 00000000004 15066252326 027115 0 ustar 00 tof2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 026551 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/docs/folder2/toindex.rst 0000644 0000000 0000000 00000000007 15066252326 027721 0 ustar 00 toindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 025065 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 025746 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 024630 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/HEAD~1/totoindex.rst 0000644 0000000 0000000 00000000011 15066252326 025772 0 ustar 00 totoindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4561574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-mixed_slashes/conf.py 0000644 0000000 0000000 00000000272 15066252326 023553 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 024722 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 024724 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 023240 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD/redirects.txt 0000644 0000000 0000000 00000000343 15066252326 024133 0 ustar 00 tof1.rst docs/folder1/f1.rst docs/folder1/tof1.rst docs/folder1/f1.rst docs/folder1/tof2.rst docs/folder2/f2.rst docs/folder2/toindex.rst index.rst totoindex.rst docs/folder2/toindex.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 025201 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/docs/folder1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 025546 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/docs/folder1/tof2.rst 0000644 0000000 0000000 00000000004 15066252326 025547 0 ustar 00 tof2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 025203 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/docs/folder2/toindex.rst 0000644 0000000 0000000 00000000007 15066252326 026353 0 ustar 00 toindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 023517 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 024400 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/tof1.rst 0000644 0000000 0000000 00000000004 15066252326 023262 0 ustar 00 tof1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/HEAD~1/totoindex.rst 0000644 0000000 0000000 00000000011 15066252326 024424 0 ustar 00 totoindex ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-nested/conf.py 0000644 0000000 0000000 00000000272 15066252326 022205 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD/another2.rst 0000644 0000000 0000000 00000000014 15066252326 030057 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 027442 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 030323 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 030254 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 027721 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 030602 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_not_redirected/conf.py 0000644 0000000 0000000 00000000326 15066252326 026407 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD/another2.rst 0000644 0000000 0000000 00000000014 15066252326 027177 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4571574 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 026562 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD/redirects.txt 0000644 0000000 0000000 00000000030 15066252326 027446 0 ustar 00 another.rst another2.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD~1/another.rst 0000644 0000000 0000000 00000000014 15066252326 027374 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD~1/index.rst 0000644 0000000 0000000 00000000012 15066252326 027041 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/HEAD~1/redirects.txt 0000644 0000000 0000000 00000000000 15066252326 027722 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_file_redirected/conf.py 0000644 0000000 0000000 00000000326 15066252326 025527 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD/another2.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD/another2.r0000644 0000000 0000000 00000000014 15066252326 030722 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 030654 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000215 00000000000 010213 x ustar 00 113 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD/redirects.0000644 0000000 0000000 00000000000 15066252326 030775 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000215 00000000000 010213 x ustar 00 113 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/another.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/another.0000644 0000000 0000000 00000000014 15066252326 030735 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 111 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/index.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/index.rs0000644 0000000 0000000 00000000012 15066252326 030747 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000217 00000000000 010215 x ustar 00 115 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/HEAD~1/redirect0000644 0000000 0000000 00000000000 15066252326 031013 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_not_redirected/conf.py 0000644 0000000 0000000 00000000326 15066252326 027621 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 111 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD/another2.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD/another2.rs0000644 0000000 0000000 00000000027 15066252326 030724 0 ustar 00 another file but more! ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 030467 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD/redirects.t0000644 0000000 0000000 00000000000 15066252326 030774 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD~1/another.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD~1/another.r0000644 0000000 0000000 00000000014 15066252326 030732 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD~1/index.rst0000644 0000000 0000000 00000000012 15066252326 030746 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000216 00000000000 010214 x ustar 00 114 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD~1/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/HEAD~1/redirects0000644 0000000 0000000 00000000000 15066252326 031011 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_fail/conf.py 0000644 0000000 0000000 00000000326 15066252326 027434 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 111 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD/another2.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD/another2.rs0000644 0000000 0000000 00000000060 15066252326 030754 0 ustar 00 another file and this is some additional content ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD/index.rst 0000644 0000000 0000000 00000000012 15066252326 030522 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD/redirects.t0000644 0000000 0000000 00000000000 15066252326 031027 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD~1/another.rst 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD~1/another.r0000644 0000000 0000000 00000000045 15066252326 030771 0 ustar 00 another file and this is some content ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD~1/index.rst0000644 0000000 0000000 00000000012 15066252326 031001 0 ustar 00 index file ././@PaxHeader 0000000 0000000 0000000 00000000216 00000000000 010214 x ustar 00 114 path=sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD~1/redirects.txt 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/HEAD~1/redirects0000644 0000000 0000000 00000000000 15066252326 031044 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4581575 sphinxext_rediraffe-0.3.0/tests/roots/builder/test-renamed_write_file_perc_low_pass/conf.py 0000644 0000000 0000000 00000000370 15066252326 027466 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_branch = 'HEAD~1' rediraffe_redirects = 'redirects.txt' rediraffe_auto_redirect_perc = 50 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-backslashes/conf.py 0000644 0000000 0000000 00000000272 15066252326 022360 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-backslashes/docs/folder1/f1.rst 0000644 0000000 0000000 00000000002 15066252326 024374 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-backslashes/docs/folder2/f2.rst 0000644 0000000 0000000 00000000002 15066252326 024376 0 ustar 00 f2 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-backslashes/index.rst 0000644 0000000 0000000 00000000012 15066252326 022712 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-backslashes/redirects.txt 0000644 0000000 0000000 00000000343 15066252326 023605 0 ustar 00 tof1.rst docs\folder1\f1.rst docs\folder1\tof1.rst docs\folder1\f1.rst docs\folder1\tof2.rst docs\folder2\f2.rst docs\folder2\toindex.rst index.rst totoindex.rst docs\folder2\toindex.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-bad_rediraffe_file/conf.py 0000644 0000000 0000000 00000000277 15066252326 023636 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'fake-redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-bad_rediraffe_file/index.rst 0000644 0000000 0000000 00000000012 15066252326 024163 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/conf.py 0000644 0000000 0000000 00000000272 15066252326 021544 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/e.rst 0000644 0000000 0000000 00000000001 15066252326 021211 0 ustar 00 e ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/index.rst 0000644 0000000 0000000 00000000012 15066252326 022076 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/j.rst 0000644 0000000 0000000 00000000001 15066252326 021216 0 ustar 00 j ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/l.rst 0000644 0000000 0000000 00000000001 15066252326 021220 0 ustar 00 l ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/o.rst 0000644 0000000 0000000 00000000001 15066252326 021223 0 ustar 00 o ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/redirects.txt 0000644 0000000 0000000 00000000777 15066252326 023004 0 ustar 00 f.rst c.rst q.rst w.rst F2/1.rst x.rst c.rst d.rst i.rst j.rst k.rst l.rst r.rst w.rst m.rst n.rst n.rst o.rst u.rst w.rst F1/1.rst F1/2.rst t.rst w.rst b.rst c.rst g.rst d.rst h.rst g.rst p.rst z.rst a.rst b.rst d.rst e.rst w.rst x.rst y.rst x.rst x.rst z.rst v.rst u.rst F1/2.rst F2/1.rst s.rst w.rst F5/F4/F3/F2/F1/1.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex/z.rst 0000644 0000000 0000000 00000000001 15066252326 021236 0 ustar 00 z ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/conf.py 0000644 0000000 0000000 00000001366 15066252326 022554 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = { 'f.rst': 'c.rst', 'q.rst': 'w.rst', 'F2/1.rst': 'x.rst', 'c.rst': 'd.rst', 'i.rst': 'j.rst', 'k.rst': 'l.rst', 'r.rst': 'w.rst', 'm.rst': 'n.rst', 'n.rst': 'o.rst', 'u.rst': 'w.rst', 'F1/1.rst': 'F1/2.rst', 't.rst': 'w.rst', 'b.rst': 'c.rst', 'g.rst': 'd.rst', 'h.rst': 'g.rst', 'p.rst': 'z.rst', 'a.rst': 'b.rst', 'd.rst': 'e.rst', 'w.rst': 'x.rst', 'y.rst': 'x.rst', 'x.rst': 'z.rst', 'v.rst': 'u.rst', 'F1/2.rst': 'F2/1.rst', 's.rst': 'w.rst', 'F5/F4/F3/F2/F1/1.rst': 'index.rst', } ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/e.rst 0000644 0000000 0000000 00000000001 15066252326 022214 0 ustar 00 e ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/index.rst 0000644 0000000 0000000 00000000012 15066252326 023101 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/j.rst 0000644 0000000 0000000 00000000001 15066252326 022221 0 ustar 00 j ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/l.rst 0000644 0000000 0000000 00000000001 15066252326 022223 0 ustar 00 l ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/o.rst 0000644 0000000 0000000 00000000001 15066252326 022226 0 ustar 00 o ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/redirects.txt 0000644 0000000 0000000 00000000777 15066252326 024007 0 ustar 00 f.rst c.rst q.rst w.rst F2/1.rst x.rst c.rst d.rst i.rst j.rst k.rst l.rst r.rst w.rst m.rst n.rst n.rst o.rst u.rst w.rst F1/1.rst F1/2.rst t.rst w.rst b.rst c.rst g.rst d.rst h.rst g.rst p.rst z.rst a.rst b.rst d.rst e.rst w.rst x.rst y.rst x.rst x.rst z.rst v.rst u.rst F1/2.rst F2/1.rst s.rst w.rst F5/F4/F3/F2/F1/1.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-complex_dict/z.rst 0000644 0000000 0000000 00000000001 15066252326 022241 0 ustar 00 z ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-cycle/conf.py 0000644 0000000 0000000 00000000272 15066252326 021174 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-cycle/index.rst 0000644 0000000 0000000 00000000012 15066252326 021526 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-cycle/redirects.txt 0000644 0000000 0000000 00000000027 15066252326 022420 0 ustar 00 a.rst b.rst b.rst a.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dirhtml_user_index_files/conf.py 0000644 0000000 0000000 00000000272 15066252326 025147 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4591575 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dirhtml_user_index_files/index.rst 0000644 0000000 0000000 00000000012 15066252326 025501 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dirhtml_user_index_files/mydir/index.rst 0000644 0000000 0000000 00000000002 15066252326 026624 0 ustar 00 qq ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dirhtml_user_index_files/redirects.txt 0000644 0000000 0000000 00000000033 15066252326 026370 0 ustar 00 another.rst mydir/index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dot_in_filename/conf.py 0000644 0000000 0000000 00000000272 15066252326 023211 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dot_in_filename/docs/a.b.c.rst 0000644 0000000 0000000 00000000002 15066252326 024244 0 ustar 00 f1 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dot_in_filename/index.rst 0000644 0000000 0000000 00000000012 15066252326 023543 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-dot_in_filename/redirects.txt 0000644 0000000 0000000 00000000040 15066252326 024430 0 ustar 00 docs/x.y.z.rst docs/a.b.c.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-existing_link_redirected/another.rst 0000644 0000000 0000000 00000000014 15066252326 026023 0 ustar 00 another file ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-existing_link_redirected/conf.py 0000644 0000000 0000000 00000000272 15066252326 025136 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-existing_link_redirected/index.rst 0000644 0000000 0000000 00000000012 15066252326 025470 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-existing_link_redirected/redirects.txt 0000644 0000000 0000000 00000000025 15066252326 026360 0 ustar 00 another.rst index.rst ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-jinja/conf.py 0000644 0000000 0000000 00000000351 15066252326 021166 0 ustar 00 from __future__ import annotations extensions = ['sphinxext.rediraffe'] master_doc = 'index' exclude_patterns = ['_build'] html_theme = 'basic' rediraffe_redirects = 'redirects.txt' rediraffe_template = 'rediraffe_template.html' ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-jinja/index.rst 0000644 0000000 0000000 00000000012 15066252326 021522 0 ustar 00 Index File ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1759073494.4601574 sphinxext_rediraffe-0.3.0/tests/roots/ext/test-jinja/rediraffe_template.html 0000644 0000000 0000000 00000000335 15066252326 024401 0 ustar 00rel_url: {{rel_url}}
from_file: {{from_file}}
to_file: {{to_file}}
from_url: {{from_url}}
to_url: {{to_url}}