Skip to content

Commit cb8539b

Browse files
committed
docs: Generate redirects for autoapi renaming
1 parent f83b0c2 commit cb8539b

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-0
lines changed

conf.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# serve to show the default.
1515

1616
import json
17+
import logging
1718
import os
1819
import subprocess
1920
import sys
@@ -82,6 +83,8 @@
8283
autoapi_python_use_implicit_namespaces = True
8384
autoapi_root = "shared-bindings"
8485

86+
redirects_file = 'docs/redirects.txt'
87+
8588
# The encoding of source files.
8689
#source_encoding = 'utf-8-sig'
8790

@@ -376,5 +379,47 @@
376379
"bus_device": ('https://circuitpython.readthedocs.io/projects/busdevice/en/latest/', None),
377380
"register": ('https://circuitpython.readthedocs.io/projects/register/en/latest/', None)}
378381

382+
# Adapted from sphinxcontrib-redirects
383+
from sphinx.builders import html as builders
384+
385+
TEMPLATE = """<html>
386+
<head><meta http-equiv="refresh" content="0; url=%s"/></head>
387+
</html>
388+
"""
389+
390+
391+
def generate_redirects(app):
392+
path = os.path.join(app.srcdir, app.config.redirects_file)
393+
if not os.path.exists(path):
394+
app.info("Could not find redirects file at '%s'" % path)
395+
return
396+
397+
# TODO(stephenfin): Add support for DirectoryHTMLBuilder
398+
if not type(app.builder) == builders.StandaloneHTMLBuilder:
399+
logging.warn("The 'sphinxcontib-redirects' plugin is only supported "
400+
"by the 'html' builder. Skipping...")
401+
return
402+
403+
with open(path) as redirects:
404+
for line in redirects.readlines():
405+
from_path, to_path = line.rstrip().split(' ')
406+
407+
logging.debug("Redirecting '%s' to '%s'" % (from_path, to_path))
408+
409+
from_path = os.path.splitext(from_path)[0] + ".html"
410+
to_path_prefix = '..%s' % os.path.sep * (
411+
len(from_path.split(os.path.sep)) - 1)
412+
to_path = to_path_prefix + to_path
413+
414+
redirected_filename = os.path.join(app.builder.outdir, from_path)
415+
redirected_directory = os.path.dirname(redirected_filename)
416+
if not os.path.exists(redirected_directory):
417+
os.makedirs(redirected_directory)
418+
419+
with open(redirected_filename, 'w') as f:
420+
f.write(TEMPLATE % urllib.parse.quote(to_path, '#/'))
421+
379422
def setup(app):
380423
app.add_css_file("customstyle.css")
424+
app.add_config_value('redirects_file', 'redirects', 'env')
425+
app.connect('builder-inited', generate_redirects)

docs/redirects.txt

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
shared-bindings/frequencyio/FrequencyIn.rst shared-bindings/frequencyio/#frequencyio.FrequencyIn
2+
shared-bindings/fontio/BuiltinFont.rst shared-bindings/fontio/#fontio.BuiltinFont
3+
shared-bindings/fontio/Glyph.rst shared-bindings/fontio/#fontio.Glyph
4+
shared-bindings/aesio/AES.rst shared-bindings/aesio/#aesio.AES
5+
shared-bindings/supervisor/Runtime.rst shared-bindings/supervisor/#supervisor.Runtime
6+
shared-bindings/terminalio/Terminal.rst shared-bindings/terminalio/#terminalio.Terminal
7+
shared-bindings/audiopwmio/PWMAudioOut.rst shared-bindings/audiopwmio/#audiopwmio.PWMAudioOut
8+
shared-bindings/gamepadshift/GamePadShift.rst shared-bindings/gamepadshift/#gamepadshift.GamePadShift
9+
shared-bindings/vectorio/Circle.rst shared-bindings/vectorio/#vectorio.Circle
10+
shared-bindings/vectorio/Polygon.rst shared-bindings/vectorio/#vectorio.Polygon
11+
shared-bindings/vectorio/Rectangle.rst shared-bindings/vectorio/#vectorio.Rectangle
12+
shared-bindings/vectorio/VectorShape.rst shared-bindings/vectorio/#vectorio.VectorShape
13+
shared-bindings/displayio/Bitmap.rst shared-bindings/displayio/#displayio.Bitmap
14+
shared-bindings/displayio/ColorConverter.rst shared-bindings/displayio/#displayio.ColorConverter
15+
shared-bindings/displayio/Display.rst shared-bindings/displayio/#displayio.Display
16+
shared-bindings/displayio/EPaperDisplay.rst shared-bindings/displayio/#displayio.EPaperDisplay
17+
shared-bindings/displayio/FourWire.rst shared-bindings/displayio/#displayio.FourWire
18+
shared-bindings/displayio/Group.rst shared-bindings/displayio/#displayio.Group
19+
shared-bindings/displayio/I2CDisplay.rst shared-bindings/displayio/#displayio.I2CDisplay
20+
shared-bindings/displayio/OnDiskBitmap.rst shared-bindings/displayio/#displayio.OnDiskBitmap
21+
shared-bindings/displayio/Palette.rst shared-bindings/displayio/#displayio.Palette
22+
shared-bindings/displayio/ParallelBus.rst shared-bindings/displayio/#displayio.ParallelBus
23+
shared-bindings/displayio/Shape.rst shared-bindings/displayio/#displayio.Shape
24+
shared-bindings/displayio/TileGrid.rst shared-bindings/displayio/#displayio.TileGrid
25+
shared-bindings/_pixelbuf/PixelBuf.rst shared-bindings/_pixelbuf/#_pixelbuf.PixelBuf
26+
shared-bindings/gamepad/GamePad.rst shared-bindings/gamepad/#gamepad.GamePad
27+
shared-bindings/_pew/PewPew.rst shared-bindings/_pew/#_pew.PewPew
28+
shared-bindings/rotaryio/IncrementalEncoder.rst shared-bindings/rotaryio/#rotaryio.IncrementalEncoder
29+
shared-bindings/audiomixer/Mixer.rst shared-bindings/audiomixer/#audiomixer.Mixer
30+
shared-bindings/audiomixer/MixerVoice.rst shared-bindings/audiomixer/#audiomixer.MixerVoice
31+
shared-bindings/pulseio/PWMOut.rst shared-bindings/pulseio/#pulseio.PWMOut
32+
shared-bindings/pulseio/PulseIn.rst shared-bindings/pulseio/#pulseio.PulseIn
33+
shared-bindings/pulseio/PulseOut.rst shared-bindings/pulseio/#pulseio.PulseOut
34+
shared-bindings/time/struct_time.rst shared-bindings/time/#time.struct_time
35+
shared-bindings/i2cslave/I2CSlave.rst shared-bindings/i2cslave/#i2cslave.I2CSlave
36+
shared-bindings/i2cslave/I2CSlaveRequest.rst shared-bindings/i2cslave/#i2cslave.I2CSlaveRequest
37+
shared-bindings/nvm/ByteArray.rst shared-bindings/nvm/#nvm.ByteArray
38+
shared-bindings/busio/I2C.rst shared-bindings/busio/#busio.I2C
39+
shared-bindings/busio/OneWire.rst shared-bindings/busio/#busio.OneWire
40+
shared-bindings/busio/SPI.rst shared-bindings/busio/#busio.SPI
41+
shared-bindings/busio/UART.rst shared-bindings/busio/#busio.UART
42+
shared-bindings/busio/Parity.rst shared-bindings/busio/#busio.Parity
43+
shared-bindings/ulab/array.rst shared-bindings/ulab/#ulab.array
44+
shared-bindings/watchdog/WatchDogMode.rst shared-bindings/watchdog/#watchdog.WatchDogMode
45+
shared-bindings/watchdog/WatchDogTimer.rst shared-bindings/watchdog/#watchdog.WatchDogTimer
46+
shared-bindings/audioio/AudioOut.rst shared-bindings/audioio/#audioio.AudioOut
47+
shared-bindings/ps2io/Ps2.rst shared-bindings/ps2io/#ps2io.Ps2
48+
shared-bindings/touchio/TouchIn.rst shared-bindings/touchio/#touchio.TouchIn
49+
shared-bindings/rgbmatrix/RGBMatrix.rst shared-bindings/rgbmatrix/#rgbmatrix.RGBMatrix
50+
shared-bindings/audiomp3/MP3.rst shared-bindings/audiomp3/#audiomp3.MP3
51+
shared-bindings/usb_midi/PortIn.rst shared-bindings/usb_midi/#usb_midi.PortIn
52+
shared-bindings/usb_midi/PortOut.rst shared-bindings/usb_midi/#usb_midi.PortOut
53+
shared-bindings/usb_hid/Device.rst shared-bindings/usb_hid/#usb_hid.Device
54+
shared-bindings/wiznet/WIZNET5K.rst shared-bindings/wiznet/#wiznet.WIZNET5K
55+
shared-bindings/_bleio/BluetoothError.rst shared-bindings/_bleio/#_bleio.BluetoothError
56+
shared-bindings/_bleio/ConnectionError.rst shared-bindings/_bleio/#_bleio.ConnectionError
57+
shared-bindings/_bleio/RoleError.rst shared-bindings/_bleio/#_bleio.RoleError
58+
shared-bindings/_bleio/SecurityError.rst shared-bindings/_bleio/#_bleio.SecurityError
59+
shared-bindings/_bleio/Adapter.rst shared-bindings/_bleio/#_bleio.Adapter
60+
shared-bindings/_bleio/Address.rst shared-bindings/_bleio/#_bleio.Address
61+
shared-bindings/_bleio/Attribute.rst shared-bindings/_bleio/#_bleio.Attribute
62+
shared-bindings/_bleio/Characteristic.rst shared-bindings/_bleio/#_bleio.Characteristic
63+
shared-bindings/_bleio/CharacteristicBuffer.rst shared-bindings/_bleio/#_bleio.CharacteristicBuffer
64+
shared-bindings/_bleio/Connection.rst shared-bindings/_bleio/#_bleio.Connection
65+
shared-bindings/_bleio/Descriptor.rst shared-bindings/_bleio/#_bleio.Descriptor
66+
shared-bindings/_bleio/PacketBuffer.rst shared-bindings/_bleio/#_bleio.PacketBuffer
67+
shared-bindings/_bleio/ScanEntry.rst shared-bindings/_bleio/#_bleio.ScanEntry
68+
shared-bindings/_bleio/ScanResults.rst shared-bindings/_bleio/#_bleio.ScanResults
69+
shared-bindings/_bleio/Service.rst shared-bindings/_bleio/#_bleio.Service
70+
shared-bindings/_bleio/UUID.rst shared-bindings/_bleio/#_bleio.UUID
71+
shared-bindings/socket/socket.rst shared-bindings/socket/#socket.socket
72+
shared-bindings/microcontroller/Pin.rst shared-bindings/microcontroller/#microcontroller.Pin
73+
shared-bindings/microcontroller/Processor.rst shared-bindings/microcontroller/#microcontroller.Processor
74+
shared-bindings/microcontroller/RunMode.rst shared-bindings/microcontroller/#microcontroller.RunMode
75+
shared-bindings/audiocore/RawSample.rst shared-bindings/audiocore/#audiocore.RawSample
76+
shared-bindings/audiocore/WaveFile.rst shared-bindings/audiocore/#audiocore.WaveFile
77+
shared-bindings/framebufferio/FramebufferDisplay.rst shared-bindings/framebufferio/#framebufferio.FramebufferDisplay
78+
shared-bindings/audiobusio/I2SOut.rst shared-bindings/audiobusio/#audiobusio.I2SOut
79+
shared-bindings/audiobusio/PDMIn.rst shared-bindings/audiobusio/#audiobusio.PDMIn
80+
shared-bindings/countio/Counter.rst shared-bindings/countio/#countio.Counter
81+
shared-bindings/storage/VfsFat.rst shared-bindings/storage/#storage.VfsFat
82+
shared-bindings/digitalio/DigitalInOut.rst shared-bindings/digitalio/#digitalio.DigitalInOut
83+
shared-bindings/digitalio/Direction.rst shared-bindings/digitalio/#digitalio.Direction
84+
shared-bindings/digitalio/DriveMode.rst shared-bindings/digitalio/#digitalio.DriveMode
85+
shared-bindings/digitalio/Pull.rst shared-bindings/digitalio/#digitalio.Pull
86+
shared-bindings/bitbangio/I2C.rst shared-bindings/bitbangio/#bitbangio.I2C
87+
shared-bindings/bitbangio/OneWire.rst shared-bindings/bitbangio/#bitbangio.OneWire
88+
shared-bindings/bitbangio/SPI.rst shared-bindings/bitbangio/#bitbangio.SPI
89+
shared-bindings/rtc/RTC.rst shared-bindings/rtc/#rtc.RTC
90+
shared-bindings/analogio/AnalogIn.rst shared-bindings/analogio/#analogio.AnalogIn
91+
shared-bindings/analogio/AnalogOut.rst shared-bindings/analogio/#analogio.AnalogOut
92+
shared-bindings/_stage/Layer.rst shared-bindings/_stage/#_stage.Layer
93+
shared-bindings/_stage/Text.rst shared-bindings/_stage/#_stage.Text
94+
shared-bindings/samd/Clock.rst shared-bindings/samd/#samd.Clock

0 commit comments

Comments
 (0)