From 0b42c35b327c8db53b4ca9cdb92ab3ce4b7cf8b0 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 10 Oct 2025 23:36:01 +0100 Subject: [PATCH] Link dependency notices to crates.io It's the canonical location for all dependencies, and from there people can browse to the repositories or elsewhere. --- docs/api/copyright/dependency-notices.rst | 202 +++++++++++----------- docs/scripts/licenses.py | 10 +- 2 files changed, 105 insertions(+), 107 deletions(-) diff --git a/docs/api/copyright/dependency-notices.rst b/docs/api/copyright/dependency-notices.rst index ea16305a..7da4d18a 100644 --- a/docs/api/copyright/dependency-notices.rst +++ b/docs/api/copyright/dependency-notices.rst @@ -1,150 +1,150 @@ -.. This file was generated by scripts/licenses.py at 2025-10-10T23:31:18.143353. +.. This file was generated by scripts/licenses.py at 2025-10-10T23:35:16.003615. Dependency Copyright Notices ============================ -`arraydeque v0.5.1 `_ +`arraydeque v0.5.1 `_ ---------------------------------------------------------------- :: Copyright (c) 2018 Andy Lok -`cfg-if v1.0.0 `_ ---------------------------------------------------------- +`cfg-if v1.0.0 `_ +-------------------------------------------------------- :: Copyright (c) 2014 Alex Crichton -`const-random v0.1.18 `_ -------------------------------------------------------------------- +`const-random v0.1.18 `_ +---------------------------------------------------------------------- :: Copyright (c) 2016 Amanieu d'Antras -`const-random-macro v0.1.16 `_ -------------------------------------------------------------------------- +`const-random-macro v0.1.16 `_ +---------------------------------------------------------------------------------- :: Copyright (c) 2016 Amanieu d'Antras -`crc32fast v1.5.0 `_ -------------------------------------------------------------- +`crc32fast v1.5.0 `_ +-------------------------------------------------------------- :: Copyright (c) 2018 Sam Rijs, Alex Crichton and contributors -`crossbeam-deque v0.8.6 `_ ---------------------------------------------------------------------- +`crossbeam-deque v0.8.6 `_ +-------------------------------------------------------------------------- :: Copyright (c) 2019 The Crossbeam Project Developers -`crossbeam-epoch v0.9.18 `_ ----------------------------------------------------------------------- +`crossbeam-epoch v0.9.18 `_ +---------------------------------------------------------------------------- :: Copyright (c) 2019 The Crossbeam Project Developers -`crossbeam-utils v0.8.21 `_ ----------------------------------------------------------------------- +`crossbeam-utils v0.8.21 `_ +---------------------------------------------------------------------------- :: Copyright (c) 2019 The Crossbeam Project Developers -`crunchy v0.2.3 `_ ------------------------------------------------------------- +`crunchy v0.2.3 `_ +---------------------------------------------------------- :: Copyright 2017-2023 Eira Fransham. -`dataview v1.0.1 `_ --------------------------------------------------------- +`dataview v1.0.1 `_ +------------------------------------------------------------ :: Copyright (c) 2020 Casper -`derive_pod v0.1.2 `_ ----------------------------------------------------------- +`derive_pod v0.1.2 `_ +---------------------------------------------------------------- :: Copyright (c) 2020 Casper -`dirs v6.0.0 `_ ------------------------------------------------ +`dirs v6.0.0 `_ +---------------------------------------------------- :: Copyright (c) 2018-2019 dirs-rs contributors -`dirs-sys v0.5.0 `_ +`dirs-sys v0.5.0 `_ ------------------------------------------------------------ :: Copyright (c) 2018-2019 dirs-rs contributors -`dlv-list v0.5.2 `_ -------------------------------------------------------------- +`dlv-list v0.5.2 `_ +------------------------------------------------------------ :: Copyright (c) 2022 Scott Godwin -`either v1.15.0 `_ ------------------------------------------------------- +`either v1.15.0 `_ +---------------------------------------------------------- :: Copyright (c) 2015 -`encoding_rs v0.8.35 `_ ----------------------------------------------------------------- +`encoding_rs v0.8.35 `_ +-------------------------------------------------------------------- :: Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). -`equivalent v1.0.2 `_ +`equivalent v1.0.2 `_ ---------------------------------------------------------------- :: Copyright (c) 2016--2023 -`esplugin v6.1.4 `_ ------------------------------------------------------------ +`esplugin v6.1.4 `_ +------------------------------------------------------------ :: Copyright (C) 2017 Oliver Hamlet -`fixedbitset v0.5.7 `_ ---------------------------------------------------------------- +`fixedbitset v0.5.7 `_ +------------------------------------------------------------------ :: Copyright (c) 2015-2017 -`getrandom v0.2.15 `_ ---------------------------------------------------------------- +`getrandom v0.2.15 `_ +---------------------------------------------------------------- :: Copyright (c) 2014 The Rust Project Developers Copyright (c) 2018-2024 The rust-random Project Developers -`getrandom v0.3.2 `_ +`getrandom v0.3.2 `_ -------------------------------------------------------------- :: @@ -152,235 +152,235 @@ Dependency Copyright Notices Copyright (c) 2014 The Rust Project Developers Copyright (c) 2018-2025 The rust-random Project Developers -`hashbrown v0.14.5 `_ -------------------------------------------------------------- +`hashbrown v0.14.5 `_ +---------------------------------------------------------------- :: Copyright (c) 2016 Amanieu d'Antras -`hashbrown v0.15.2 `_ -------------------------------------------------------------- +`hashbrown v0.15.2 `_ +---------------------------------------------------------------- :: Copyright (c) 2016 Amanieu d'Antras -`hashlink v0.10.0 `_ -------------------------------------------------------- +`hashlink v0.10.0 `_ +-------------------------------------------------------------- :: Copyright (c) 2015 The Rust Project Developers -`indexmap v2.9.0 `_ +`indexmap v2.9.0 `_ ------------------------------------------------------------ :: Copyright (c) 2016--2017 -`keyvalues-parser v0.2.1 `_ ----------------------------------------------------------------------- +`keyvalues-parser v0.2.1 `_ +---------------------------------------------------------------------------- :: Copyright 2021 The vdf-rs devs -`libc v0.2.171 `_ ----------------------------------------------------- +`libc v0.2.171 `_ +-------------------------------------------------------- :: Copyright (c) 2014-2020 The Rust Project Developers -`libloadorder v18.5.1 `_ --------------------------------------------------------------------- +`libloadorder v18.5.1 `_ +---------------------------------------------------------------------- :: Copyright (C) 2017 Oliver Hamlet -`log v0.4.28 `_ -------------------------------------------------- +`log v0.4.28 `_ +---------------------------------------------------- :: Copyright (c) 2014 The Rust Project Developers -`loot-condition-interpreter v5.3.3 `_ ---------------------------------------------------------------------------------------------- +`loot-condition-interpreter v5.3.3 `_ +------------------------------------------------------------------------------------------------ :: Copyright (c) 2018 Oliver Hamlet -`no-std-compat v0.4.1 `_ -------------------------------------------------------------------- +`no-std-compat v0.4.1 `_ +---------------------------------------------------------------------- :: Copyright (c) 2019 jD91mZM2 -`nom v8.0.0 `_ +`nom v8.0.0 `_ -------------------------------------------------- :: Copyright (c) 2014-2019 Geoffroy Couprie -`num-traits v0.2.19 `_ --------------------------------------------------------------- +`num-traits v0.2.19 `_ +------------------------------------------------------------------ :: Copyright (c) 2014 The Rust Project Developers -`ordered-float v5.0.0 `_ --------------------------------------------------------------------- +`ordered-float v5.0.0 `_ +---------------------------------------------------------------------- :: Copyright (c) 2015 Jonathan Reem -`ordered-multimap v0.7.3 `_ ------------------------------------------------------------------------------ +`ordered-multimap v0.7.3 `_ +---------------------------------------------------------------------------- :: Copyright (c) 2018 sgodwincs -`pelite v0.10.0 `_ ------------------------------------------------------ +`pelite v0.10.0 `_ +---------------------------------------------------------- :: Copyright (c) 2016-2018 Casper -`petgraph v0.8.2 `_ ---------------------------------------------------------- +`petgraph v0.8.2 `_ +------------------------------------------------------------ :: Copyright (c) 2015 -`rayon v1.11.0 `_ ----------------------------------------------------- +`rayon v1.11.0 `_ +-------------------------------------------------------- :: Copyright (c) 2010 The Rust Project Developers -`rayon-core v1.13.0 `_ ---------------------------------------------------------- +`rayon-core v1.13.0 `_ +------------------------------------------------------------------ :: Copyright (c) 2010 The Rust Project Developers -`regex v1.11.1 `_ ------------------------------------------------------ +`regex v1.11.1 `_ +-------------------------------------------------------- :: Copyright (c) 2014 The Rust Project Developers -`regex-automata v0.4.9 `_ ----------------------------------------------------------------------------------------- +`regex-automata v0.4.9 `_ +------------------------------------------------------------------------ :: Copyright (c) 2014 The Rust Project Developers -`regex-syntax v0.8.5 `_ ------------------------------------------------------------------------------------- +`regex-syntax v0.8.5 `_ +-------------------------------------------------------------------- :: Copyright (c) 2014 The Rust Project Developers -`regress v0.10.4 `_ --------------------------------------------------------------- +`regress v0.10.4 `_ +------------------------------------------------------------ :: Copyright (c) 2020 ridiculous_fish Copyright 2020 ridiculous_fish -`rust-ini v0.21.1 `_ ----------------------------------------------------------- +`rust-ini v0.21.1 `_ +-------------------------------------------------------------- :: Copyright (c) 2014 Y. T. CHUNG -`saphyr v0.0.6 `_ ------------------------------------------------------- +`saphyr v0.0.6 `_ +-------------------------------------------------------- :: Copyright (c) 2015 Chen Yuheng Copyright (c) 2023 Ethiraric -`saphyr-parser v0.0.6 `_ -------------------------------------------------------------- +`saphyr-parser v0.0.6 `_ +---------------------------------------------------------------------- :: Copyright (c) 2015 Chen Yuheng Copyright (c) 2023 Ethiraric -`trim-in-place v0.1.7 `_ -------------------------------------------------------------------- +`trim-in-place v0.1.7 `_ +---------------------------------------------------------------------- :: Copyright (c) 2020 magiclen.org (Ron Li) -`ucd-trie v0.1.7 `_ ---------------------------------------------------------------- +`ucd-trie v0.1.7 `_ +------------------------------------------------------------ :: Copyright (c) 2015 Andrew Gallant -`unicase v2.8.1 `_ +`unicase v2.8.1 `_ ---------------------------------------------------------- :: Copyright (c) 2014-2017 Sean McArthur -`unicode-ident v1.0.18 `_ -------------------------------------------------------------------- +`unicode-ident v1.0.18 `_ +------------------------------------------------------------------------ :: Copyright © 1991-2023 Unicode, Inc. -`winapi v0.3.9 `_ +`winapi v0.3.9 `_ -------------------------------------------------------- :: Copyright (c) 2015-2018 The winapi-rs Developers -`windows-link v0.2.0 `_ ----------------------------------------------------------------- +`windows-link v0.2.0 `_ +-------------------------------------------------------------------- :: Copyright (c) Microsoft Corporation. -`windows-result v0.4.0 `_ ------------------------------------------------------------------- +`windows-result v0.4.0 `_ +------------------------------------------------------------------------ :: Copyright (c) Microsoft Corporation. -`windows-sys v0.61.1 `_ ----------------------------------------------------------------- +`windows-sys v0.61.1 `_ +-------------------------------------------------------------------- :: diff --git a/docs/scripts/licenses.py b/docs/scripts/licenses.py index d69eb320..4c675b65 100644 --- a/docs/scripts/licenses.py +++ b/docs/scripts/licenses.py @@ -91,11 +91,13 @@ def get_package_dependencies(cargo_toml_path, package_name): 'version': package['version'], 'license': package['license'], 'manifest_path': package['manifest_path'], - 'repository': package['repository'], }) return dependencies +def get_url(dependency): + return f'https://crates.io/crates/{dependency['name']}/{dependency['version']}' + def parse_licenses(dependency): # This is not robust, but it's good enough with a couple of specific workarounds. @@ -227,11 +229,7 @@ if __name__ == "__main__": print(f'Skipping dependency with no notices: {dependency['name']}') continue - if 'repository' not in dependency: - print(f'Found dependency with no repository: {dependency['name']}') - exit(1) - - link_rst = f'`{dependency['name']} v{dependency['version']} <{dependency['repository']}>`_' + link_rst = f'`{dependency['name']} v{dependency['version']} <{get_url(dependency)}>`_' underline_rst = '-' * len(link_rst) dep_notices_rst = '\n '.join(notices)