From 9aa0aff13425ab682f0898a4758bee5600244c0d Mon Sep 17 00:00:00 2001 From: GrahamSH Date: Tue, 12 Nov 2024 00:53:39 +0000 Subject: [PATCH] switch to furo --- poetry.lock | 125 +++++++++++--- pyproject.toml | 2 +- source/_extensions/post_process.py | 45 ----- .../post_process_tasks/fontawesome.py | 133 -------------- .../post_process_tasks/systemfonts.py | 62 ------- source/_static/css/frc-rtd.css | 162 +++++------------- source/_static/css/frc-rtl.css | 93 +++++++--- source/_templates/base.html | 57 ++++++ source/_templates/breadcrumbs.html | 11 -- source/_templates/layout.html | 85 --------- source/_templates/sidebar/brand.html | 37 ++++ source/conf.py | 1 - source/requirements.txt | 3 +- 13 files changed, 306 insertions(+), 510 deletions(-) delete mode 100644 source/_extensions/post_process.py delete mode 100644 source/_extensions/post_process_tasks/fontawesome.py delete mode 100644 source/_extensions/post_process_tasks/systemfonts.py create mode 100644 source/_templates/base.html delete mode 100644 source/_templates/breadcrumbs.html delete mode 100644 source/_templates/layout.html create mode 100644 source/_templates/sidebar/brand.html diff --git a/poetry.lock b/poetry.lock index fc8ebb62f4..734f48bfe2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -159,6 +159,10 @@ files = [ {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d"}, {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0"}, {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2"}, + {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec"}, {file = "Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2"}, {file = "Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128"}, {file = "Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc"}, @@ -171,8 +175,14 @@ files = [ {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9"}, {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265"}, {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0"}, + {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b"}, {file = "Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50"}, {file = "Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1"}, + {file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28"}, + {file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f"}, {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409"}, {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2"}, {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451"}, @@ -183,8 +193,24 @@ files = [ {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180"}, {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248"}, {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111"}, + {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839"}, {file = "Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0"}, {file = "Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951"}, + {file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5"}, + {file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8"}, + {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f"}, + {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648"}, + {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0"}, + {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089"}, + {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368"}, + {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c"}, + {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284"}, + {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7"}, + {file = "Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0"}, + {file = "Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b"}, {file = "Brotli-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a090ca607cbb6a34b0391776f0cb48062081f5f60ddcce5d11838e67a01928d1"}, {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de9d02f5bda03d27ede52e8cfe7b865b066fa49258cbab568720aa5be80a47d"}, {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2333e30a5e00fe0fe55903c8832e08ee9c3b1382aacf4db26664a16528d51b4b"}, @@ -194,6 +220,10 @@ files = [ {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2"}, {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354"}, {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e93dfc1a1165e385cc8239fab7c036fb2cd8093728cbd85097b284d7b99249a2"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:aea440a510e14e818e67bfc4027880e2fb500c2ccb20ab21c7a7c8b5b4703d75"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:6974f52a02321b36847cd19d1b8e381bf39939c21efd6ee2fc13a28b0d99348c"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:a7e53012d2853a07a4a79c00643832161a910674a893d296c9f1259859a289d2"}, + {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:d7702622a8b40c49bffb46e1e3ba2e81268d5c04a34f460978c6b5517a34dd52"}, {file = "Brotli-1.1.0-cp36-cp36m-win32.whl", hash = "sha256:a599669fd7c47233438a56936988a2478685e74854088ef5293802123b5b2460"}, {file = "Brotli-1.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d143fd47fad1db3d7c27a1b1d66162e855b5d50a89666af46e1679c496e8e579"}, {file = "Brotli-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:11d00ed0a83fa22d29bc6b64ef636c4552ebafcef57154b4ddd132f5638fbd1c"}, @@ -205,6 +235,10 @@ files = [ {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:919e32f147ae93a09fe064d77d5ebf4e35502a8df75c29fb05788528e330fe74"}, {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:23032ae55523cc7bccb4f6a0bf368cd25ad9bcdcc1990b64a647e7bbcce9cb5b"}, {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:224e57f6eac61cc449f498cc5f0e1725ba2071a3d4f48d5d9dffba42db196438"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:cb1dac1770878ade83f2ccdf7d25e494f05c9165f5246b46a621cc849341dc01"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:3ee8a80d67a4334482d9712b8e83ca6b1d9bc7e351931252ebef5d8f7335a547"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5e55da2c8724191e5b557f8e18943b1b4839b8efc3ef60d65985bcf6f587dd38"}, + {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:d342778ef319e1026af243ed0a07c97acf3bad33b9f29e7ae6a1f68fd083e90c"}, {file = "Brotli-1.1.0-cp37-cp37m-win32.whl", hash = "sha256:587ca6d3cef6e4e868102672d3bd9dc9698c309ba56d41c2b9c85bbb903cdb95"}, {file = "Brotli-1.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2954c1c23f81c2eaf0b0717d9380bd348578a94161a65b3a2afc62c86467dd68"}, {file = "Brotli-1.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:efa8b278894b14d6da122a72fefcebc28445f2d3f880ac59d46c90f4c13be9a3"}, @@ -217,6 +251,10 @@ files = [ {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ab4fbee0b2d9098c74f3057b2bc055a8bd92ccf02f65944a241b4349229185a"}, {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:141bd4d93984070e097521ed07e2575b46f817d08f9fa42b16b9b5f27b5ac088"}, {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d2b35ca2c7f81d173d2fadc2f4f31e88cc5f7a39ae5b6db5513cf3383b0e0ec7"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:af6fa6817889314555aede9a919612b23739395ce767fe7fcbea9a80bf140fe5"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:2feb1d960f760a575dbc5ab3b1c00504b24caaf6986e2dc2b01c09c87866a943"}, + {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4410f84b33374409552ac9b6903507cdb31cd30d2501fc5ca13d18f73548444a"}, {file = "Brotli-1.1.0-cp38-cp38-win32.whl", hash = "sha256:db85ecf4e609a48f4b29055f1e144231b90edc90af7481aa731ba2d059226b1b"}, {file = "Brotli-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3d7954194c36e304e1523f55d7042c59dc53ec20dd4e9ea9d151f1b62b4415c0"}, {file = "Brotli-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb2ce4b8045c78ebbc7b8f3c15062e435d47e7393cc57c25115cfd49883747a"}, @@ -229,6 +267,10 @@ files = [ {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:949f3b7c29912693cee0afcf09acd6ebc04c57af949d9bf77d6101ebb61e388c"}, {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:89f4988c7203739d48c6f806f1e87a1d96e0806d44f0fba61dba81392c9e474d"}, {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:de6551e370ef19f8de1807d0a9aa2cdfdce2e85ce88b122fe9f6b2b076837e59"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0737ddb3068957cf1b054899b0883830bb1fec522ec76b1098f9b6e0f02d9419"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4f3607b129417e111e30637af1b56f24f7a49e64763253bbc275c75fa887d4b2"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:6c6e0c425f22c1c719c42670d561ad682f7bfeeef918edea971a79ac5252437f"}, + {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:494994f807ba0b92092a163a0a283961369a65f6cbe01e8891132b7a320e61eb"}, {file = "Brotli-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f0d8a7a6b5983c2496e364b969f0e526647a06b075d034f3297dc66f3b360c64"}, {file = "Brotli-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467"}, {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"}, @@ -827,6 +869,23 @@ files = [ {file = "funcsigs-1.0.2.tar.gz", hash = "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"}, ] +[[package]] +name = "furo" +version = "2024.8.6" +description = "A clean customisable Sphinx documentation theme." +optional = false +python-versions = ">=3.8" +files = [ + {file = "furo-2024.8.6-py3-none-any.whl", hash = "sha256:6cd97c58b47813d3619e63e9081169880fbe331f0ca883c871ff1f3f11814f5c"}, + {file = "furo-2024.8.6.tar.gz", hash = "sha256:b63e4cee8abfc3136d3bc03a3d45a76a850bada4d6374d24c1716b0e01394a01"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +pygments = ">=2.7" +sphinx = ">=6.0,<9.0" +sphinx-basic-ng = ">=1.0.0.beta2" + [[package]] name = "future" version = "1.0.0" @@ -1704,37 +1763,51 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, @@ -1891,6 +1964,23 @@ docs = ["furo (>=2024.1.29)"] numpy = ["nptyping (>=2.5)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.4.4)", "defusedxml (>=0.7.1)", "diff-cover (>=9)", "pytest (>=8.1.1)", "pytest-cov (>=5)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.11)"] +[[package]] +name = "sphinx-basic-ng" +version = "1.0.0b2" +description = "A modern skeleton for Sphinx themes." +optional = false +python-versions = ">=3.7" +files = [ + {file = "sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b"}, + {file = "sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9"}, +] + +[package.dependencies] +sphinx = ">=4.0" + +[package.extras] +docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs"] + [[package]] name = "sphinx-copybutton" version = "0.5.2" @@ -2002,25 +2092,6 @@ docutils = "*" pygments = "*" Sphinx = ">=7.0.0,<8.0.0" -[[package]] -name = "sphinx-rtd-theme" -version = "3.0.0" -description = "Read the Docs theme for Sphinx" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinx_rtd_theme-3.0.0-py2.py3-none-any.whl", hash = "sha256:1ffe1539957775bfa0a7331370de7dc145b6eac705de23365dc55c5d94bb08e7"}, - {file = "sphinx_rtd_theme-3.0.0.tar.gz", hash = "sha256:905d67de03217fd3d76fbbdd992034ac8e77044ef8063a544dda1af74d409e08"}, -] - -[package.dependencies] -docutils = ">0.18,<0.22" -sphinx = ">=6,<9" -sphinxcontrib-jquery = ">=4,<5" - -[package.extras] -dev = ["bump2version", "transifex-client", "twine", "wheel"] - [[package]] name = "sphinx-tabs" version = "3.4.5" @@ -2538,4 +2609,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.13" -content-hash = "bbf6f8f139d7b2a04ab8cff68f692298f1281ff069978c55bc45e818bfa62675" +content-hash = "ae94f1f32312a704c8ee692ceaebb2ab8c5301adec5bcf42b47d0c898af28e33" diff --git a/pyproject.toml b/pyproject.toml index 81849003bf..1da575cf37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,6 @@ sphinx_design= "==0.6.1" sphinx_copybutton = "==0.5.2" sphinx-hoverxref = "==1.4.0" sphinx-notfound-page = "==1.0.4" -sphinx-rtd-theme = "==3.0.0" sphinx-tabs = "==3.4.5" sphinx-toolbox = "==3.8.0" modern-sphinx-version-warning = "==1.1.6" @@ -38,6 +37,7 @@ sphinxext-remoteliteralinclude = "==0.4.0" sphinxext-toptranslators = "==0.1.3" urllib3 = ">=1.26.6, <2.0.0" frccontrol = "==2023.28" +furo = "==2024.08.06" [tool.poetry.dev-dependencies] diff --git a/source/_extensions/post_process.py b/source/_extensions/post_process.py deleted file mode 100644 index f3f72fba37..0000000000 --- a/source/_extensions/post_process.py +++ /dev/null @@ -1,45 +0,0 @@ -# This file is the final sphinx extension that runs after a build is finished. -# Everything scheduled in do() is run sequentially and may need order preserved. -# Sphinx extensions can specify their execution priority but it's cumbersome to -# increment a value across files. - -from typing import Any, Dict, Union - -from sphinx.application import Sphinx -from sphinx.builders.dirhtml import DirectoryHTMLBuilder -from sphinx.builders.html import StandaloneHTMLBuilder - -from .post_process_tasks.fontawesome import ( - cleanup_fontawesome_css, - cleanup_fontawesome_font_files, -) - -from .post_process_tasks.systemfonts import switch_to_system_fonts - -READTHEDOCS_BUILDERS = ["readthedocs", "readthedocsdirhtml"] - - -def do(app: Sphinx, exception: Union[Exception, None]) -> None: - if exception: - return - if not ( - isinstance(app.builder, (StandaloneHTMLBuilder, DirectoryHTMLBuilder)) - or app.builder.name in READTHEDOCS_BUILDERS - ): - return - - print("Running custom post processing") - - # The two fontawesome functions must run in order - cleanup_fontawesome_css(app) - cleanup_fontawesome_font_files(app) - switch_to_system_fonts(app) - - -def setup(app: Sphinx) -> Dict[str, Any]: - app.connect("build-finished", do, float("inf")) - - return { - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/source/_extensions/post_process_tasks/fontawesome.py b/source/_extensions/post_process_tasks/fontawesome.py deleted file mode 100644 index 5c1b29259a..0000000000 --- a/source/_extensions/post_process_tasks/fontawesome.py +++ /dev/null @@ -1,133 +0,0 @@ -import inspect -import math -import re -from pathlib import Path - -from fontTools.subset import main as subset_font -from sphinx.application import Sphinx - - -def cleanup_fontawesome_css(app: Sphinx) -> None: - """ - This cleans up the fontawesome css that is in theme.css. - About 20% of our theme.css is just fontawesome icon definitions. - Execution: - 1. Find all fontawesome icons used in html files (overestimate) - 2. Find all safe-to-delete (not tied to other css selectors) icons in theme.css (underestimate) - 3. Delete all css definitions for icons that are safe-to-delete and not used in html files - By overestimating in step 1 and underestimating in step 2, we shouldn't ever delete icons that are used. - """ - _name = inspect.stack()[0][3] - print("Running", _name) - outdir = Path(app.outdir) - - # Matches to fontawesome uses in html - # Ex: fa fa-github - FA_REGEX = re.compile(r"fa (fa(?:-[a-z]+)+)") - - used_fa = set() - - for html_file in outdir.glob("**/*.html"): - text = html_file.read_text(encoding="utf-8") - used_fa.update(FA_REGEX.findall(text)) - - theme_css_file = outdir / "_static" / "css" / "theme.css" - - theme_text = theme_css_file.read_text(encoding="utf-8") - theme_size = theme_css_file.stat().st_size - - # Matches to pure fontawesome selectors in css - # Note: font awesome is not the first definition in theme.css - # Ex: }.fa-github:before{content:"q"} - # Ex: }.fa-goodbye:before,.fa-badbye:before{content:"q"} - FA_CSS_REGEX = re.compile( - r"}(?:\.(fa(?:-[a-z]+)+):before)(?:,\.(fa(?:-[a-z]+)+):before)*{content:\".\"}" - ) - - start_pos = 0 - while True: - m = FA_CSS_REGEX.search(theme_text, pos=start_pos) - if not m: - break - - fa_names = m.groups() - if not any(fa_name in used_fa for fa_name in fa_names): - theme_text = theme_text[: m.start() + 1] + theme_text[m.end() :] - start_pos = m.start() - else: - start_pos = m.end() - - theme_css_file.write_text(theme_text, encoding="utf-8") - new_theme_size = theme_css_file.stat().st_size - - print( - _name, - f": size diff : {new_theme_size - theme_size} bytes, {math.floor(((new_theme_size - theme_size) / theme_size) * 100)}%", - ) - - -def cleanup_fontawesome_font_files(app: Sphinx): - """ - This cleans up the fontawesome icons that are in font files. - Most icons are unused so can be stripped. - This runs after cleanup_fontawesome_css. - - Execution: - 1. Find all fontawesome icon definitions in theme.css (overestimate) - 2. Regenerate the font files keeping only these icons - - By overestimating in step 1, we shouldn't ever delete icons that are used. - """ - _name = inspect.stack()[0][3] - print("Running", _name) - - outdir = Path(app.outdir) - fonts_folder = outdir / "_static" / "css" / "fonts" - - theme_css_file = outdir / "_static" / "css" / "theme.css" - - theme_text = theme_css_file.read_text(encoding="utf-8") - - # Matches fontawesome icon definitions in css - # This doesn't match on the entire definition but on the actual icon ids fontawesome uses. - # Ex: content:"q" - FA_CSS_REGEX = re.compile(r"content:\"(.)\"") - - used_codepoints = set() - - for m in FA_CSS_REGEX.finditer(theme_text): - fa_char = m.group(1) - fa_codepoint = f"U+{ord(fa_char):04X}" - used_codepoints.add(fa_codepoint) - - unicodes = ",".join(used_codepoints) - - for fa_font_path in fonts_folder.glob("fontawesome*"): - if fa_font_path.suffix not in {".woff", ".woff2"}: - continue - font_size = fa_font_path.stat().st_size - - fa_dest = fa_font_path.with_suffix(fa_font_path.suffix + ".subset") - args = [ - str(fa_font_path), - f"--unicodes={unicodes}", - "--passthrough-tables", - f"--output-file={fa_dest}", - "--with-zopfli", - ] - if fa_font_path.suffix == ".woff": - args.append("--flavor=woff") - elif fa_font_path.suffix == ".woff2": - args.append("--flavor=woff2") - - # This runs fontTools's subset tool - subset_font(args) - - fa_dest.replace(fa_font_path) - new_font_size = fa_font_path.stat().st_size - - if fa_font_path.suffix == ".woff2": - print( - _name, - f": size diff : {new_font_size - font_size} bytes, {math.floor(((new_font_size - font_size) / font_size) * 100)}%", - ) diff --git a/source/_extensions/post_process_tasks/systemfonts.py b/source/_extensions/post_process_tasks/systemfonts.py deleted file mode 100644 index a42c8d15ee..0000000000 --- a/source/_extensions/post_process_tasks/systemfonts.py +++ /dev/null @@ -1,62 +0,0 @@ -import inspect -import math -import re -from pathlib import Path - -from sphinx.application import Sphinx - - -def switch_to_system_fonts(app: Sphinx) -> None: - """ - Removes custom fonts and replaces their usage with system fonts. - This can't be done in frc-rtd.css. frc-rtd.css is loaded in after the - rtd theme's css is loaded. The custom fonts seems to start downloading - before frc-rtd.css is parsed. - """ - - _name = inspect.stack()[0][3] - print("Running", _name) - outdir = Path(app.outdir) - - RE_FONT = re.compile(r"(@font-face\{)|(font-family:.*?(?:;|\}))") - - css_path = outdir / "_static" / "css" - theme_css_file = css_path / "theme.css" - - theme_text = theme_css_file.read_text(encoding="utf-8") - - def sub_font_faces(match: re.Match): - """ - Delete font faces we don't want - """ - text = match.group() - if "Roboto Slab" in text: - return "" - if "Lato" in text: - return "" - return text - - theme_text = re.sub(r"@font-face\{.*?\}", sub_font_faces, theme_text) - - def sub_font_usage(match: re.Match): - """ - Replace custom fonts with system fonts - """ - text, ending = match.groups() - - if "Roboto Slab" in text: - text = '-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display", "Segoe UI", Roboto,Tahoma,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol";' - elif "Lato" in text: - text = '-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text", "Segoe UI", Roboto,Tahoma,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol";' - - return f"font-family:{text}{ending}" - - theme_text = re.sub(r"font-family:(.*?)(;|\})", sub_font_usage, theme_text) - - theme_css_file.write_text(theme_text, encoding="utf-8") - - for path in css_path.glob("fonts/*"): - if path.name.lower().startswith("lato"): - path.unlink() - if path.name.lower().startswith("roboto"): - path.unlink() diff --git a/source/_static/css/frc-rtd.css b/source/_static/css/frc-rtd.css index caf08e9b8c..16704596d0 100644 --- a/source/_static/css/frc-rtd.css +++ b/source/_static/css/frc-rtd.css @@ -7,37 +7,6 @@ padding: 15px; } -.color-strip { - height: 10px; - margin :0; - padding: 0; - position: relative; - width: 100%; - z-index: 999; - display: table; -} - -.color-strip .fblue { - background: #009cd7; -} - -.color-strip .forange { - background: #f57e25; -} - -.color-strip .fred { - background: #ed1c24; -} - -.color-strip div { - height: 100%; - display: table-cell; -} - -.rst-versions { - width: 320px; -} - /* * Prevent video containers from spilling over the edges of the main panel. * This matches the built-in style for `.rst-content img` @@ -60,115 +29,68 @@ margin-left: 320px; } -.wy-nav-content { - background: #fcfcfc; -} -/* Tweaks for sphinx panels */ -/* Reduces the added margin to card footers due to a conflict in RTD CSS styles */ -.sd-card-footer > p.sd-card-text { - margin-bottom: 5px; -} - -/* Tweaks to make sidebar scroll look pretty */ -.wy-side-scroll { - width: auto; - overflow-y: auto; - margin-top: 10px; -} - -.wy-nav-side { - width: 320px; +/* ======================================== */ +/* ====== START SPHINX DETAILS CSS ======== */ +details { + border: 1px solid #aaa; + border-radius: 4px; + padding: .5em; + margin: .5em .5em 2em .5em; } -.wy-nav-content { - max-width: 1000px; +summary { + font-weight: bold; + margin: -.5em -.5em 0; + padding: .5em; } -.wy-nav-content-wrap { - margin-left: 320px; +code.py-class, code.py-func, code.py-meth { + all: unset!important; } -.wy-nav-content-wrap{ - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#003974',endColorstr='#003974',GradientType=1); - background:#003974; - background:-moz-linear-gradient(left,#6cc2c9,#003974); - background:-webkit-gradient(linear,left top,right top,color-stop(50%,#6cc2c9),color-stop(100%,#003974)); - background:-webkit-linear-gradient(left,#6cc2c9,#003974); - background:-o-linear-gradient(left,#6cc2c9,#003974); - background:-ms-linear-gradient(left,#6cc2c9,#003974); - background:linear-gradient(to right,#6cc2c9,#003974) -} +/* +* Top color bar +*/ -.wy-nav-side,.wy-side-nav-search,.wy-nav-top { - background: #003974; +.page::before { + background: linear-gradient(90deg, #ed1c24 0%,#ed1c24 33%, #f57e25 33%, #f57e25 67%,#009cd7 67%); + width: 100%; + height: 10px; + position: absolute; + top:0; + content: ''; } -.wy-menu-vertical li button.toctree-expand { - color: #d9d9d9 +body { + margin-top: 10px; } -/* Hide color bar on mobile */ -@media screen and (max-width: 768px) { - .header-bar { - display: none; - } - - .wy-nav-content-wrap { - margin-left: 0px; - } - - .wy-nav-side { - width: 300px; - } - - .wy-nav-side.shift { - max-width: 320px; - } +/* +* Sidebar styling +*/ - /* Fix sidebar adjust */ - .rst-versions { - width: 85%; - max-width: 320px; - } +.version { + margin-top: -.4045em; + margin-bottom: .809em; + font-weight: 400; + color: hsla(0, 0%, 100%, .3); } -/* Handle landscape */ -@media screen and (min-width: 377px) { - .wy-nav-content-wrap.shift { - left: 320px; - } +.sidebar-brand { + align-items: center; } -/* Fix table padding https://github.com/readthedocs/sphinx_rtd_theme/issues/117 */ -@media screen and (min-width: 768px) { - .wy-table-responsive table td, .wy-table-responsive table th { - white-space: normal !important; - } -} - -/* ===================================== */ -/* ====== START SPHINX TABS CSS ======== */ -.sphinx-tab img { - margin-bottom: 24px; +.sidebar-brand-text { + font-size: .85rem; } -/* ======================================== */ -/* ====== START SPHINX DETAILS CSS ======== */ -details { - border: 1px solid #aaa; - border-radius: 4px; - padding: .5em; - margin: .5em .5em 2em .5em; +aside.sidebar-drawer { + width: revert; } -summary { - font-weight: bold; - margin: -.5em -.5em 0; - padding: .5em; +.present svg { + height: 1.25rem; + width: 1.25rem; } - -code.py-class, code.py-func, code.py-meth { - all: unset!important; -} \ No newline at end of file diff --git a/source/_static/css/frc-rtl.css b/source/_static/css/frc-rtl.css index d67fb91a52..2e2e12a70a 100644 --- a/source/_static/css/frc-rtl.css +++ b/source/_static/css/frc-rtl.css @@ -1,7 +1,15 @@ -@import url('https://fonts.googleapis.com/css2?family=Heebo&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Heebo&display=swap"); -body, .rst-content .toctree-wrapper > p.caption, h1, h2, h3, h4, h5, h6, legend { - font-family: 'Heebo', sans-serif; +body, +.content .toctree-wrapper > p.caption, +h1, +h2, +h3, +h4, +h5, +h6, +legend { + font-family: "Heebo", sans-serif; } body { direction: rtl; @@ -9,10 +17,12 @@ body { .fa:before { transform: scale(-1, 1); } -.rst-content div[class^=highlight] pre, .highlighttable { +.content div[class^="highlight"] pre, +.highlighttable { direction: ltr; } -.rst-content code, .rst-content tt { +.content code, +.content tt { direction: ltr; unicode-bidi: bidi-override; } @@ -21,11 +31,13 @@ body { margin-right: 320px; margin-left: 0; } -#link-bar li, .wy-nav-top i { +#link-bar li, +.wy-nav-top i { float: right; } -.wy-nav-side, .rst-versions { +aside.sidebar-drawer, +.rst-versions { right: 0; left: unset; } @@ -33,43 +45,76 @@ body { margin-right: 320px; margin-left: 0; } -@media screen and (max-width: 768px) { - .wy-nav-side, .rst-versions { +@media screen and (max-width: 67em) { + aside.sidebar-drawer, + .rst-versions { right: -300px; + transition: right .25s ease-in-out; } - .wy-nav-content-wrap { - margin-right: 0; - } - .wy-nav-side.shift, .rst-versions.shift { + + #__navigation:checked ~ .page aside.sidebar-drawer { right: 0; - left: unset; + top: 0; + left: unset !important; + } + #__toc:checked~.page aside.toc-drawer { + left: 0; + right: unset; + top: 0; } - .wy-nav-content-wrap.shift { - right: 85%; - left: unset; + aside.toc-drawer { + left: -300px; + transition: left .25s ease-in-out; } } -.rst-content .admonition-title:before { +.content .admonition-title:before { margin-right: 0; margin-left: 4px; } -.wy-breadcrumbs li.wy-breadcrumbs-aside { - float: left; -} -.float-right { + +.float-right, +.related-pages a.next-page[href], +div.content-icon-container { float: left; + clear: left; } -.float-left { +.float-left, +.related-pages a.prev-page[href] { float: right; + clear: right; +} +.related-pages a.prev-page svg.furo-related-icon { + transform: revert; +} +.related-pages a.next-page svg.furo-related-icon { + transform: scaleX(-1); } .rst-versions .rst-current-version { text-align: left; } -.rst-versions .rst-current-version .fa-book, .rst-versions .rst-current-version .icon-book { +.rst-versions .rst-current-version .fa-book, +.rst-versions .rst-current-version .icon-book { float: right; } .rst-other-versions { text-align: right; } + +/* Furo uses padding-left in the heading TOC by default, which looks wrong on RTL */ +.toc-tree > ul > li:first-child > ul { + padding-inline-start: 0; + padding-left: initial; +} +.toc-tree ul { + padding-inline-start: var(--toc-item-spacing-horizontal); + padding-left: initial; +} +.toc-title { + padding-inline-start: var(--toc-item-spacing-horizontal); + padding-left: initial; +} +.page::before { + transform: scaleX(-1); +} \ No newline at end of file diff --git a/source/_templates/base.html b/source/_templates/base.html new file mode 100644 index 0000000000..76b7e25369 --- /dev/null +++ b/source/_templates/base.html @@ -0,0 +1,57 @@ +{% extends '!base.html' %} +{% block extrabody %} +
+ +
+{% endblock %} + +{%- block regular_scripts -%} +{% for path in script_files -%} + {{ js_tag(path) }} +{% endfor -%} +{%- if READTHEDOCS %} + +{%- endif %} + + + +{%- endblock regular_scripts -%} diff --git a/source/_templates/breadcrumbs.html b/source/_templates/breadcrumbs.html deleted file mode 100644 index 65b321f458..0000000000 --- a/source/_templates/breadcrumbs.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends '!breadcrumbs.html' %} - -{%- block breadcrumbs_aside %} -
  • - - Present - - -
  • -{{ super() }} -{%- endblock %} \ No newline at end of file diff --git a/source/_templates/layout.html b/source/_templates/layout.html deleted file mode 100644 index 18d5997e02..0000000000 --- a/source/_templates/layout.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends '!layout.html' %} - -{% block extrabody %} - - -
    - -
    -
    -
    -
    -
    - -
    -{% endblock %} - -{#- This block is mostly copied from the rtd version #} -{%- block sidebartitle %} - - {%- if logo and theme_logo_only %} - {%- else %} - {{ project }} - {%- endif %} - - {%- if logo_url %} - {#- sphinx version >= 4.0 only #} - - - - - {%- endif %} - - - {%- if theme_display_version %} - {%- set nav_version = version %} - {%- if READTHEDOCS and current_version %} - {%- set nav_version = current_version %} - {%- endif %} - {%- if nav_version %} -
    - {{ nav_version }} -
    - {%- endif %} - {%- endif %} - {%- include "searchbox.html" %} -{%- endblock %} - -{%- block footer %} - {%- if READTHEDOCS %} - - {%- endif %} -{%- endblock %} diff --git a/source/_templates/sidebar/brand.html b/source/_templates/sidebar/brand.html new file mode 100644 index 0000000000..117560d969 --- /dev/null +++ b/source/_templates/sidebar/brand.html @@ -0,0 +1,37 @@ +{% extends '!sidebar/brand.html' %} {# This is mostly copied from +https://github.com/pradyunsg/furo/blob/main/src/furo/theme/furo/sidebar/brand.html -#} +{% block brand_content %} +{% if not theme_sidebar_hide_name %} +{{ project }}{% endif %} +{%- if logo_url %} + +{%- endif %} +{%- if theme_light_logo and theme_dark_logo %} + +{%- endif %} + +{%- set nav_version = version %} +{% if READTHEDOCS and current_version %} + {%- set nav_version = current_version %} +{% endif %} +{% if nav_version %} +
    + {{ nav_version }} +
    +{% endif %} +{% endblock brand_content %} diff --git a/source/conf.py b/source/conf.py index ddacca26b4..9a4f073f6c 100644 --- a/source/conf.py +++ b/source/conf.py @@ -60,7 +60,6 @@ ] local_extensions = [ - "_extensions.post_process", "_extensions.rtd_patch", "_extensions.localization", "_extensions.controls_js_sim", diff --git a/source/requirements.txt b/source/requirements.txt index 9ec23e6f68..e68acdfd79 100644 --- a/source/requirements.txt +++ b/source/requirements.txt @@ -27,6 +27,7 @@ fonttools==4.43.0 ; python_version >= "3.9" and python_version < "3.13" fonttools[woff]==4.43.0 ; python_version >= "3.9" and python_version < "3.13" frccontrol==2023.28 ; python_version >= "3.9" and python_version < "3.13" funcsigs==1.0.2 ; python_version >= "3.9" and python_version < "3.13" +furo==2024.8.6 ; python_version >= "3.9" and python_version < "3.13" future==1.0.0 ; python_version >= "3.9" and python_version < "3.13" gitdb==4.0.11 ; python_version >= "3.9" and python_version < "3.13" gitpython==3.1.43 ; python_version >= "3.9" and python_version < "3.13" @@ -68,13 +69,13 @@ smmap==5.0.1 ; python_version >= "3.9" and python_version < "3.13" snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "3.13" soupsieve==2.6 ; python_version >= "3.9" and python_version < "3.13" sphinx-autodoc-typehints==2.3.0 ; python_version >= "3.9" and python_version < "3.13" +sphinx-basic-ng==1.0.0b2 ; python_version >= "3.9" and python_version < "3.13" sphinx-copybutton==0.5.2 ; python_version >= "3.9" and python_version < "3.13" sphinx-design==0.6.1 ; python_version >= "3.9" and python_version < "3.13" sphinx-hoverxref==1.4.0 ; python_version >= "3.9" and python_version < "3.13" sphinx-jinja2-compat==0.3.0 ; python_version >= "3.9" and python_version < "3.13" sphinx-notfound-page==1.0.4 ; python_version >= "3.9" and python_version < "3.13" sphinx-prompt==1.8.0 ; python_version >= "3.9" and python_version < "3.13" -sphinx-rtd-theme==3.0.0 ; python_version >= "3.9" and python_version < "3.13" sphinx-tabs==3.4.5 ; python_version >= "3.9" and python_version < "3.13" sphinx-toolbox==3.8.0 ; python_version >= "3.9" and python_version < "3.13" sphinx==7.4.7 ; python_version >= "3.9" and python_version < "3.13"