From 69b8dcf35cabd83af7ffbde8229cfd590ee19524 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sat, 26 Jul 2025 20:10:24 -0500 Subject: [PATCH] docs: fix links that redirect permanently --- CONTRIBUTING.md | 2 +- conf.py | 2 ++ documentation/hosting-tools/publish-documentation-online.md | 2 +- .../hosting-tools/website-hosting-optimizing-your-docs.md | 2 +- documentation/repository-files/license-files.md | 2 +- .../repository-files/readme-file-best-practices.md | 4 ++-- locales/es/LC_MESSAGES/documentation.po | 2 +- locales/ja/LC_MESSAGES/documentation.po | 4 ++-- package-structure-code/python-package-build-tools.md | 6 +++--- .../python-package-distribution-files-sdist-wheel.md | 2 +- tests/code-cov.md | 2 +- tests/run-tests.md | 2 +- tests/write-tests.md | 2 +- tutorials/get-to-know-hatch.md | 2 +- tutorials/intro.md | 4 ++-- 15 files changed, 21 insertions(+), 19 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef6b6a7d9..92d2a538b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,7 @@ To fork a repo, 1. Make sure you are logged into GitHub. -2. Go to the repo you would like to fork, in this case the [Python Packaging Guide](https://www.github.com/pyopensci/python-package-guide) repo. +2. Go to the repo you would like to fork, in this case the [Python Packaging Guide](https://github.com/pyopensci/python-package-guide) repo. 3. In the top right-hand corner of the page there is a 'Fork' button. Click that button. You will be brought to a new page where you will 'Create a new fork'. Feel free to keep all the default inputs and click 'Create fork'. This will create a copy of the repo at `https://github.com//python-package-guide`, where `` is your GitHub username. diff --git a/conf.py b/conf.py index 131220831..3b8360576 100644 --- a/conf.py +++ b/conf.py @@ -217,6 +217,8 @@ linkcheck_ignore = [ # gnu.org is so strictly rate-limited that retries to it really slow down link-checking... just assume they're fine r"https:\/\/.*gnu\.org.*", + # this discord link is correct, but unauthenticated it redirects to a sign-up page + r"https:\/\/discord\.gg/NQtTTqtv", ] def _post_build(app: "Sphinx", exception: Exception | None) -> None: diff --git a/documentation/hosting-tools/publish-documentation-online.md b/documentation/hosting-tools/publish-documentation-online.md index 2201bcdb0..d595736c4 100644 --- a/documentation/hosting-tools/publish-documentation-online.md +++ b/documentation/hosting-tools/publish-documentation-online.md @@ -22,7 +22,7 @@ service. Some of its many features include: ## What is GitHub Pages? -[GitHub Pages](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages) is a free web +[GitHub Pages](https://docs.github.com/en/pages/getting-started-with-github-pages/what-is-github-pages) is a free web hosting service offered by GitHub. Using GitHub pages, you can build your documentation locally or using a Continuous Integration setup, and then push to a branch in your GitHub repository that is setup to run the GitHub Pages diff --git a/documentation/hosting-tools/website-hosting-optimizing-your-docs.md b/documentation/hosting-tools/website-hosting-optimizing-your-docs.md index 0e6f7f609..d2833455c 100644 --- a/documentation/hosting-tools/website-hosting-optimizing-your-docs.md +++ b/documentation/hosting-tools/website-hosting-optimizing-your-docs.md @@ -37,7 +37,7 @@ This extension is lightweight. It [requires that you to add it to your Sphinx `conf.py` extension list and site your documentation base url](https://sphinx-sitemap.readthedocs.io/en/latest/getting-started.html). -### [sphinxext.opengraph](https://github.com/wpilibsuite/sphinxext-opengraph) +### [sphinxext.opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) OpenGraph is an extension that allows you to add metadata to your documentation content pages. [The OpenGraph protocol allows other websites to provide a diff --git a/documentation/repository-files/license-files.md b/documentation/repository-files/license-files.md index e98f54a05..106dd9b72 100644 --- a/documentation/repository-files/license-files.md +++ b/documentation/repository-files/license-files.md @@ -43,7 +43,7 @@ Licenses are legally binding, as such you should avoid trying to create your own ### Use open permissive licenses when possible -We generally suggest that you use a permissive, license that is [Open Software Initiative (OSI) approved](https://opensource.org/licenses/). If you are +We generally suggest that you use a permissive, license that is [Open Software Initiative (OSI) approved](https://opensource.org/license). If you are [submitting your package to pyOpenSci for peer review](https://www.pyopensci.org/about-peer-review/index.html), then we require an OSI approved license. diff --git a/documentation/repository-files/readme-file-best-practices.md b/documentation/repository-files/readme-file-best-practices.md index e3694d9fb..c12b5dfed 100644 --- a/documentation/repository-files/readme-file-best-practices.md +++ b/documentation/repository-files/readme-file-best-practices.md @@ -75,7 +75,7 @@ Some badges that you might consider adding to your README file include: Example: [![PyPI version shields.io](https://img.shields.io/pypi/v/pandera.svg)](https://pypi.org/project/pandera/) -* Status of tests (pass or fail) - Example: [![CI Build](https://github.com/pandera-dev/pandera/workflows/CI%20Tests/badge.svg?branch=main)](https://github.com/pandera-dev/pandera/actions?query=workflow%3A%22CI+Tests%22+branch%3Amain) +* Status of tests (pass or fail) - Example: [![CI Build](https://github.com/unionai-oss/pandera/workflows/CI%20Tests/badge.svg?branch=main)](https://github.com/unionai-oss/pandera/actions?query=workflow%3A%22CI+Tests%22+branch%3Amain) * Documentation build - Example: ![Docs Building](https://github.com/pyOpenSci/python-package-guide/actions/workflows/build-book.yml/badge.svg) @@ -84,7 +84,7 @@ Example: [![PyPI version shields.io](https://img.shields.io/pypi/v/pandera.svg)] ```{tip} Once you package is accepted to pyOpenSci, we will provide you with a badge to add to your repository that shows that it has been reviewed. -[![pyOpenSci](https://pyopensci.org/badges/peer-reviewed.svg)](https://github.com/pyOpenSci/software-submission/issues/12) +[![pyOpenSci](https://www.pyopensci.org/badges/peer-reviewed.svg)](https://github.com/pyOpenSci/software-submission/issues/12) ``` diff --git a/locales/es/LC_MESSAGES/documentation.po b/locales/es/LC_MESSAGES/documentation.po index dd9d56593..eb15633c2 100644 --- a/locales/es/LC_MESSAGES/documentation.po +++ b/locales/es/LC_MESSAGES/documentation.po @@ -548,7 +548,7 @@ msgid "" msgstr "" #: ../../documentation/hosting-tools/website-hosting-optimizing-your-docs.md:40 -msgid "[sphinxext.opengraph](https://github.com/wpilibsuite/sphinxext-opengraph)" +msgid "[sphinxext.opengraph](https://github.com/sphinx-doc/sphinxext-opengraph)" msgstr "" #: ../../documentation/hosting-tools/website-hosting-optimizing-your-docs.md:42 diff --git a/locales/ja/LC_MESSAGES/documentation.po b/locales/ja/LC_MESSAGES/documentation.po index d358a5582..dd3c68f18 100644 --- a/locales/ja/LC_MESSAGES/documentation.po +++ b/locales/ja/LC_MESSAGES/documentation.po @@ -515,8 +515,8 @@ msgstr "" "://sphinx-sitemap.readthedocs.io/en/latest/getting-started.html) 。" #: ../../documentation/hosting-tools/website-hosting-optimizing-your-docs.md:40 -msgid "[sphinxext.opengraph](https://github.com/wpilibsuite/sphinxext-opengraph)" -msgstr "[sphinxext.opengraph](https://github.com/wpilibsuite/sphinxext-opengraph)" +msgid "[sphinxext.opengraph](https://github.com/sphinx-doc/sphinxext-opengraph)" +msgstr "[sphinxext.opengraph](https://github.com/sphinx-doc/sphinxext-opengraph)" #: ../../documentation/hosting-tools/website-hosting-optimizing-your-docs.md:42 msgid "" diff --git a/package-structure-code/python-package-build-tools.md b/package-structure-code/python-package-build-tools.md index 7fef8a13d..81958e1f6 100644 --- a/package-structure-code/python-package-build-tools.md +++ b/package-structure-code/python-package-build-tools.md @@ -27,7 +27,7 @@ You will learn more about the following tools on this page: - [Twine](https://twine.readthedocs.io/en/stable/), [Build](https://pypa-build.readthedocs.io/en/stable/) + [setuptools](https://setuptools.pypa.io/en/latest/) - [Flit](https://flit.pypa.io/en/stable/) - [Hatch](https://hatch.pypa.io/latest/) -- [PDM](https://pdm.fming.dev/latest/) +- [PDM](https://pdm-project.org/latest/) - [Poetry](https://python-poetry.org/docs/) ## Summary of tools Hatch vs. PDM vs. Poetry (and setuptools) @@ -229,7 +229,7 @@ Notes: ## PDM -[PDM is a Python packaging and dependency management tool](https://pdm.fming.dev/latest/). +[PDM is a Python packaging and dependency management tool](https://pdm-project.org/latest/). PDM supports builds for pure Python projects. It also provides multiple layers of support for projects that have C and C++ extensions. @@ -249,7 +249,7 @@ packages them with the pure Python files. :delim: "|" Use Other Build Backends| ✅| When you setup PDM it allows you to select one of several build back ends including: PDM-core, flit-core and hatchling. PDM also can work with Meson-Python which supports move complex python builds. -Dependency specifications |✅|PDM has flexible support for managing dependencies. PDM defaults to using an open bound (e.g. `requests >=1.2`) approach to dependencies. However you can [customize how you want to add dependencies in case you prefer another approach such as that of Poetry which uses an upper bound limit](https://pdm.fming.dev/latest/usage/dependency/#about-update-strategy).** +Dependency specifications |✅|PDM has flexible support for managing dependencies. PDM defaults to using an open bound (e.g. `requests >=1.2`) approach to dependencies. However you can [customize how you want to add dependencies in case you prefer another approach such as that of Poetry which uses an upper bound limit](https://pdm-project.org/en/latest/usage/dependency/#about-update-strategy).** Environment lock files |✅|PDM and Poetry are currently the only tools that create environment lock files. Lock files are often most useful to developers creating web apps where locking the environment is critical for consistent user experience. For community-used packages, you will likely never want to use a lock file. Environment management |✅ | PDM provides environment management support. It supports Python virtual environments, conda and a local `__pypackages__` environment which is a newer option in the Python ecosystem. No extensions are needed for this support. Select your environment type on install |✅ | When you run `PDM init`, PDM will discover environments that are already on your system and allow you to select one to use for your project. diff --git a/package-structure-code/python-package-distribution-files-sdist-wheel.md b/package-structure-code/python-package-distribution-files-sdist-wheel.md index 00fbe346b..174378cee 100644 --- a/package-structure-code/python-package-distribution-files-sdist-wheel.md +++ b/package-structure-code/python-package-distribution-files-sdist-wheel.md @@ -148,7 +148,7 @@ similar content. However if your package has extensions in other languages or is more complex in its build, the two distributions will be very different. Also note that we are not discussing conda build workflows in this section. -[You can learn more about conda builds here.](https://conda.io/projects/conda-build/en/latest/user-guide/tutorials/index.html) +[You can learn more about conda builds here.](https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/index.html) ``` (python-source-distribution)= diff --git a/tests/code-cov.md b/tests/code-cov.md index b08e7b728..3e4d2b97e 100644 --- a/tests/code-cov.md +++ b/tests/code-cov.md @@ -28,7 +28,7 @@ tests cover those scenarios adequately. ## Tools for analyzing Python package code coverage -Some common services for analyzing code coverage are [codecov.io](https://codecov.io/) and [coveralls.io](https://coveralls.io/). These projects are free for open source tools and will provide dashboards that tell you how much of your codebase is covered during your tests. We recommend setting up an account (on either CodeCov or Coveralls) and using it to keep track of your code coverage. +Some common services for analyzing code coverage are [codecov.io](https://about.codecov.io/) and [coveralls.io](https://coveralls.io/). These projects are free for open source tools and will provide dashboards that tell you how much of your codebase is covered during your tests. We recommend setting up an account (on either CodeCov or Coveralls) and using it to keep track of your code coverage. :::{figure} ../images/code-cov-stravalib.png :height: 450px diff --git a/tests/run-tests.md b/tests/run-tests.md index aff17a419..275c28136 100644 --- a/tests/run-tests.md +++ b/tests/run-tests.md @@ -77,7 +77,7 @@ We recommend using `Pytest` to build and run your package tests. Pytest is the m [The Pytest package](https://docs.pytest.org/en/latest/) also has a number of extensions that can be used to add functionality such as: -- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/) allows you to analyze the code coverage of your package during your tests, and generates a report that you can [upload to codecov](https://codecov.io/). +- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/) allows you to analyze the code coverage of your package during your tests, and generates a report that you can [upload to codecov](https://about.codecov.io/). :::{todo} Learn more about code coverage here. (add link) diff --git a/tests/write-tests.md b/tests/write-tests.md index 56d2bbb19..760f3c1c4 100644 --- a/tests/write-tests.md +++ b/tests/write-tests.md @@ -74,7 +74,7 @@ test_add_numbers() ### How do I know what type of tests to write? :::{note} -This section has been adapted from [a presentation by Nick Murphy](https://zenodo.org/record/8185113). +This section has been adapted from [a presentation by Nick Murphy](https://zenodo.org/records/8185113). ::: At this point, you may be wondering - what should you be testing in your package? Below are a few examples: diff --git a/tutorials/get-to-know-hatch.md b/tutorials/get-to-know-hatch.md index a3ab5ce64..5151f3749 100644 --- a/tutorials/get-to-know-hatch.md +++ b/tutorials/get-to-know-hatch.md @@ -189,7 +189,7 @@ src-layout = true Also notice that the default license option is MIT. While we will discuss license in more detail in a later lesson, the MIT license is the recommended permissive license from -[choosealicense.com](https://www.choosealicense.com) and as such we will +[choosealicense.com](https://choosealicense.com/) and as such we will use it for this tutorial series. You are of course welcome to select another license. diff --git a/tutorials/intro.md b/tutorials/intro.md index 351cf66a9..fe0cc07e5 100644 --- a/tutorials/intro.md +++ b/tutorials/intro.md @@ -161,7 +161,7 @@ The core elements of Python package include: - Contributor Documentation in the form of a **CONTRIBUTING.md** file is useful to help people to contribute to your package. - Development Documentation helps both maintainers and contributors understand how to maintain a package's infrastructure. - **Tests:** that make sure your code works as it should and makes it easier for you and others to contribute to, modify and update the code in the future -- **License:** An open source license, or license that is [OSI approved](https://opensource.org/licenses/), refers to an license that allows others to use your package. It also provides legal direction regarding how elements of the package can and can't be reused. +- **License:** An open source license, or license that is [OSI approved](https://opensource.org/license/), refers to an license that allows others to use your package. It also provides legal direction regarding how elements of the package can and can't be reused. - **Infrastructure** that automates updates, publication workflows and runs test suites. Infrastructure includes a suite of things such as platforms like GitHub and GitLab, tools to run tests and tools locally such as nox and tox and continuous integration that automates package maintenance steps. :::{admonition} What pyOpenSci looks for in a package @@ -257,7 +257,7 @@ It can be tricky to decide when your code becomes something that might be more b :::{admonition} How does this relate to code for a research project? :class: note -A [Research Compendium](https://the-turing-way.netlify.app/reproducible-research/compendia.html) is an organized set of code, data and documentation that +A [Research Compendium](https://book.the-turing-way.org/reproducible-research/compendia.html) is an organized set of code, data and documentation that supports a specific research project. It aims to enhance the reproducibility and transparency of research by providing a comprehensive record of the methods, data, and analyses used in a study.