Skip to main content

Sphinx Extension that redirects non-existent pages to working pages.

Project description

sphinxext-rediraffe

ci Code style: black

Sphinx Extension to redirect files

Rediraffe

This sphinx extension redirects non-existent pages to working pages. Rediraffe can also check that deleted/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

python -m pip install sphinxext-rediraffe

Usage

Add sphinxext.rediraffe to your extensions list in your conf.py

extensions = [
   "sphinxext.rediraffe",
]

Set rediraffe_redirects to a dict or file of redirects in your conf.py

Diff Checker

The diff checker ensures that deleted/renamed files in your git repo are in your redirects.

To run the diff checker,

  1. Set rediraffe_branch and rediraffe_redirects in 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 rediraffe_branch and rediraffe_redirects in conf.py.
  2. Run the redireaffewritediff 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 conf.py of your sphinx project.

  • rediraffe_branch

    • Required for the rediraffecheckdiff and rediraffewritediff builders. The branch or commit to diff against.
  • rediraffe_redirects

    • Required. A filename or dict containing redirects
  • rediraffe_template

    • Optional. 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; Therefore, this file may be generated as part of your build.
    • variables available to rediraffe_template:
      • from_file - the file being redirected as written in rediraffe_redirects.
      • to_file - the destination file that from_file is redirected to as written in rediraffe_redirects.
      • from_url - the path to from_url's html file (built by rediraffe) relative to the outdir.
      • to_url - the path to to_url's built html file relative to the outdir.
      • rel_url - the relative path from from_url to to_url.
  • rediraffe_auto_redirect_perc

    • Optional. Only used by the rediraffewritediff builder. The percentage as an integer representing the accuracy required before auto redirecting with the rediraffewritediff builder. The default is 100.

Example Config

redirects only (file)

conf.py:

rediraffe_redirects = "redirects.txt"

redirects.txt:

# 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)

conf.py:

rediraffe_redirects = {
    "another.rst": "index.rst",
    "another2.rst": "another.rst",
}

redirects + diff checker

conf.py:

rediraffe_redirects = "redirects.txt"
rediraffe_branch = "master~1"

redirects with jinja template

conf.py:

rediraffe_redirects = "redirects.txt"
rediraffe_template = "template.html"

template.html:

<html>
    <body>
        <p>Your destination is {{to_url}}</p>
    </body>
</html>

A complex example can be found at tests/roots/ext/.

Testing

Rediraffe uses pytest for testing. To run tests:

  1. Install this package
  2. Install test dependencies
    python -m pip install -r test-requirements.txt
    
  3. Navigate to the tests directory and run
    python -m pytest --headless
    

The --headless flag ensures that a browser window does not open during browser backed selenium testing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinxext-rediraffe-0.2.5.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

sphinxext_rediraffe-0.2.5-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file sphinxext-rediraffe-0.2.5.tar.gz.

File metadata

  • Download URL: sphinxext-rediraffe-0.2.5.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for sphinxext-rediraffe-0.2.5.tar.gz
Algorithm Hash digest
SHA256 a17287cdee7763341b91762879e042b33a4916d6a2fc6d2f97a18107325bd2cc
MD5 d9b79b360aa29832fc3c90e338c5469d
BLAKE2b-256 e20b3b1b222600326fd8c249bacbf971316625bb0a8457738ee067b875e8f702

See more details on using hashes here.

File details

Details for the file sphinxext_rediraffe-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: sphinxext_rediraffe-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for sphinxext_rediraffe-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7b706284d20602acecc1783cc58c8d0543937af1ee53f912bfdc4b258a7e649a
MD5 1104094814d76c3e54c0bec0d27aac33
BLAKE2b-256 f0416ef2c6710c15eacf4e1fb469d0dbff73c6034cde1b0c5c66ac845c0160a7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page