Skip to content

Fix broken KnotInfo URL #40553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Aug 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build/pkgs/database_knotinfo/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=database_knotinfo-VERSION.tar.gz
sha1=d94335a4839946e73458064d6ad1def9595101c7
sha256=9065ec00e22bd1e43716b3e0c2d1bb9e2c32e504a24f11d81ab556428bb4aa7f
sha1=5d9d19ead2d50e7ab6d48fddadb0a7635a9c7ca6
sha256=5c005386d6f3ffdca3310a1721e377f570272f702a6c81f7d7215fe3935baaf7
upstream_url=https://files.pythonhosted.org/packages/source/d/database_knotinfo/database_knotinfo-VERSION.tar.gz
2 changes: 1 addition & 1 deletion build/pkgs/database_knotinfo/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024.10.1
2025.8.7
2 changes: 1 addition & 1 deletion src/sage/databases/cubic_hecke_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ def description(self):
Return a description of the link corresponding to this basis element.

In the case of knots it refers to the naming according to
`KnotInfo <https://knotinfo.math.indiana.edu/>`__.
`KnotInfo <https://knotinfo.org/>`__.

EXAMPLES::

Expand Down
28 changes: 14 additions & 14 deletions src/sage/databases/knotinfo_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

This module contains the class :class:`KnotInfoDataBase` and auxiliary classes
for it, which serves as an interface to the lists of named knots and links provided
at the web-pages `KnotInfo <https://knotinfo.math.indiana.edu/>`__ and
`LinkInfo <https://linkinfo.sitehost.iu.edu>`__.
at the web-pages `KnotInfo <https://knotinfo.org/>`__ and
`LinkInfo <https://link-info-repo.onrender.com/>`__.

To use the database, you need to install the optional :ref:`database_knotinfo
<spkg_database_knotinfo>` package by the Sage command ::
Expand Down Expand Up @@ -48,8 +48,8 @@
class KnotInfoColumnTypes(Enum):
r"""
Enum class to specify if a column from the table of knots and links provided
at the web-pages `KnotInfo <https://knotinfo.math.indiana.edu/>`__ and
`LinkInfo <https://linkinfo.sitehost.iu.edu>`__. is used for knots only,
at the web-pages `KnotInfo <https://knotinfo.org/>`__ and
`LinkInfo <https://link-info-repo.onrender.com/>`__. is used for knots only,
links only or both.

EXAMPLES::
Expand All @@ -68,8 +68,8 @@ class KnotInfoColumnTypes(Enum):
class KnotInfoColumns(Enum):
r"""
Enum class to select a column from the table of knots and links provided
at the web-pages `KnotInfo <https://knotinfo.math.indiana.edu/>`__ and
`LinkInfo <https://linkinfo.sitehost.iu.edu>`__.
at the web-pages `KnotInfo <https://knotinfo.org/>`__ and
`LinkInfo <https://link-info-repo.onrender.com/>`__.

EXAMPLES::

Expand Down Expand Up @@ -199,7 +199,7 @@ def url(self):
sage: from sage.databases.knotinfo_db import KnotInfoDataBase
sage: ki_db = KnotInfoDataBase()
sage: ki_db.filename.knots.url()
'https://knotinfo.math.indiana.edu/'
'https://knotinfo.org/'
"""
if self == KnotInfoFilename.knots:
return self.value[0]
Expand Down Expand Up @@ -304,7 +304,7 @@ def description_url(self, column):
sage: from sage.databases.knotinfo_db import KnotInfoDataBase
sage: ki_db = KnotInfoDataBase()
sage: ki_db.filename.knots.description_url(ki_db.columns().braid_notation)
'https://knotinfo.math.indiana.edu/descriptions/braid_notation.html'
'https://knotinfo.org/descriptions/braid_notation.html'
"""
return '%sdescriptions/%s.html' % (self.url(), column.name)

Expand All @@ -317,17 +317,17 @@ def diagram_url(self, fname, single=False):
sage: from sage.databases.knotinfo_db import KnotInfoDataBase
sage: ki_db = KnotInfoDataBase()
sage: ki_db.filename.knots.diagram_url('3_1-50.png')
'https://knotinfo.math.indiana.edu/diagram_display.php?3_1-50.png'
'https://knotinfo.org/diagram_display.php?3_1-50.png'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I try this link, I get a page with

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/diagram_display.php:1) in /var/www/html/diagram_display.php on line 11

Copy link
Member Author

@soehms soehms Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting! I checked

sage: KnotInfo.K3_1.diagram()
True

which launches the correct site: https://knotinfo.org/diagram_display.php?3_1. The wrong URL is just used on invocation of KnotInfo.K3_1.diagram(single=True). I think these are just outdated doctest and maybe an outdated option in diagram. I will check this later on. If this will lead to a deprecation of this option we should do that in a separate PR.

sage: ki_db.filename.knots.diagram_url('3_1', single=True)
'https://knotinfo.math.indiana.edu/diagrams/3_1'
'https://knotinfo.org/diagrams/3_1'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get

Not Found
The requested URL was not found on this server.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the previous issue.

"""
if single:
return '%sdiagrams/%s' % (self.url(), fname)
else:
return '%sdiagram_display.php?%s' % (self.url(), fname)

knots = ['https://knotinfo.math.indiana.edu/', 'knotinfo_data_complete']
links = ['https://linkinfo.sitehost.iu.edu/', 'linkinfo_data_complete']
knots = ['https://knotinfo.org/', 'knotinfo_data_complete']
links = ['https://link-info-repo.onrender.com/', 'linkinfo_data_complete']


#----------------------------------------------------------------------------------------------------------------------------
Expand All @@ -347,7 +347,7 @@ class KnotInfoDataBase(SageObject, UniqueRepresentation):
sage: from sage.databases.knotinfo_db import KnotInfoDataBase
sage: ki_db = KnotInfoDataBase()
sage: ki_db.filename.knots
<KnotInfoFilename.knots: ['https://knotinfo.math.indiana.edu/',
<KnotInfoFilename.knots: ['https://knotinfo.org/',
'knotinfo_data_complete']>
"""

Expand All @@ -362,7 +362,7 @@ def __init__(self, install=False):
sage: from sage.databases.knotinfo_db import KnotInfoDataBase
sage: ki_db = KnotInfoDataBase()
sage: ki_db.filename.links
<KnotInfoFilename.links: ['https://linkinfo.sitehost.iu.edu/',
<KnotInfoFilename.links: ['https://link-info-repo.onrender.com/',
'linkinfo_data_complete']>
"""
# some constants
Expand Down
4 changes: 2 additions & 2 deletions src/sage/features/databases.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,8 @@ class DatabaseKnotInfo(PythonModule):
:ref:`package providing the KnotInfo and LinkInfo databases <spkg_database_knotinfo>`.

The homes of these databases are the
web-pages `KnotInfo <https://knotinfo.math.indiana.edu/>`__ and
`LinkInfo <https://linkinfo.sitehost.iu.edu>`__.
web-pages `KnotInfo <https://knotinfo.org/>`__ and
`LinkInfo <https://link-info-repo.onrender.com/>`__.

EXAMPLES::

Expand Down
2 changes: 1 addition & 1 deletion src/sage/knots/free_knotinfo_monoid.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
:class:`~sage.knots.knotinfo.KnotInfoBase` class.

A generator of this free abelian monoid is a prime knot according to
the list at `KnotInfo <https://knotinfo.math.indiana.edu/>`__. A fully
the list at `KnotInfo <https://knotinfo.org/>`__. A fully
amphicheiral prime knot is represented by exactly one generator with
the corresponding name. For non-chiral prime knots, there are
additionally one or three generators with the suffixes ``m``, ``r``
Expand Down
20 changes: 10 additions & 10 deletions src/sage/knots/knotinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

This module contains the class :class:`KnotInfoBase` which is derived from
:class:`Enum` and provides knots and links listed in the databases at the
web-pages `KnotInfo <https://knotinfo.math.indiana.edu/>`__
and `LinkInfo <https://linkinfo.sitehost.iu.edu/>`__ as its items.
web-pages `KnotInfo <https://knotinfo.org/>`__
and `LinkInfo <https://link-info-repo.onrender.com/>`__ as its items.

This interface contains a set of about twenty knots and links statically as
demonstration cases. The complete database can be installed as an optional Sage
Expand Down Expand Up @@ -209,8 +209,8 @@

REFERENCES:

- `KnotInfo <https://knotinfo.math.indiana.edu/>`__
- `LinkInfo <https://linkinfo.sitehost.iu.edu/>`__
- `KnotInfo <https://knotinfo.org/>`__
- `LinkInfo <https://link-info-repo.onrender.com/>`__


AUTHORS:
Expand Down Expand Up @@ -469,7 +469,7 @@ def is_minimal(self, link) -> bool:
class KnotInfoBase(Enum):
r"""
Enum class to select the knots and links listed in the databases at the web-pages
`KnotInfo <https://knotinfo.math.indiana.edu/>`__ and `LinkInfo <https://linkinfo.sitehost.iu.edu/>`__.
`KnotInfo <https://knotinfo.org/>`__ and `LinkInfo <https://link-info-repo.onrender.com/>`__.

EXAMPLES::

Expand Down Expand Up @@ -1323,7 +1323,7 @@ def cosmetic_crossing_conjecture_verified(self):
Return whether the Cosmetic Crossing Conjecture has been verified
for ``self``.

From the KnotInfo `description page <https://knotinfo.math.indiana.edu/descriptions/cosmetic_crossing.html>`__:
From the KnotInfo `description page <https://knotinfo.org/descriptions/cosmetic_crossing.html>`__:

A crossing change in a diagram of a knot ``K`` is called cosmetic if
the resulting diagram also represents ``K``. The cosmetic crossing
Expand Down Expand Up @@ -1359,7 +1359,7 @@ def homfly_polynomial(self, var1='v', var2='z', original=False):

The HOMFLY-PT polynomial `P(L)` of a link `L` satisfies the following skein
relation (see the corresponding `KnotInfo description page
<https://knotinfo.math.indiana.edu/descriptions/jones_homfly_kauffman_description/polynomial_defn.html)>`__):
<https://knotinfo.org/descriptions/jones_homfly_kauffman_description/polynomial_defn.html>`__):

.. MATH::

Expand Down Expand Up @@ -1460,7 +1460,7 @@ def kauffman_polynomial(self, var1='a', var2='z', original=False):
under regular isotopy `\Delta (L) = a^{w(L)} F(L)` where `w(L)` is the
writhe of the link `L` satisfies the following skein relation
(see the corresponding `KnotInfo description page
<https://knotinfo.math.indiana.edu/descriptions/jones_homfly_kauffman_description/polynomial_defn.html)>`__):
<https://knotinfo.org/descriptions/jones_homfly_kauffman_description/polynomial_defn.html>`__):

.. MATH::

Expand Down Expand Up @@ -1547,7 +1547,7 @@ def jones_polynomial(self, variab=None, skein_normalization=False, puiseux=False

The Jones polynomial `V(L)` of a link `L` satisfies the following skein
relation (see the corresponding `KnotInfo description page
<https://knotinfo.math.indiana.edu/descriptions/jones_homfly_kauffman_description/polynomial_defn.html)>`__):
<https://knotinfo.org/descriptions/jones_homfly_kauffman_description/polynomial_defn.html>`__):

.. MATH::

Expand Down Expand Up @@ -2005,7 +2005,7 @@ def khovanov_polynomial(self, var1='q', var2='t', torsion='T', ring=None, origin
- :wikipedia:`Khovanov_homology`
- :wikipedia:`Reduced_homology`
- [ORS2013]_
- `KnotInfo <https://knotinfo.math.indiana.edu/descriptions/khovanov_unreduced_integral_polynomial.html>`__
- `KnotInfo <https://knotinfo.org/descriptions/khovanov_unreduced_integral_polynomial.html>`__
"""
if not ring:
if self.is_knot():
Expand Down
8 changes: 4 additions & 4 deletions src/sage/knots/link.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
.. SEEALSO::

There are also tables of link and knot invariants at web-pages
`KnotInfo <https://knotinfo.math.indiana.edu/>`__ and
`LinkInfo <https://linkinfo.sitehost.iu.edu>`__. These can be
`KnotInfo <https://knotinfo.org/>`__ and
`LinkInfo <https://link-info-repo.onrender.com>`__. These can be
used inside Sage after installing the optional package
``database_knotinfo`` (type ``sage -i database_knotinfo`` in a command shell,
see :mod:`~sage.knots.knotinfo`).
Expand Down Expand Up @@ -2071,7 +2071,7 @@ def khovanov_polynomial(self, var1='q', var2='t', torsion='T', ring=ZZ, base_rin
be transferred to :meth:`khovanov_homology`

Here we follow the conventions used in
`KnotInfo <https://knotinfo.math.indiana.edu/descriptions/khovanov_unreduced_integral_polynomial.html>`__
`KnotInfo <https://knotinfo.org/descriptions/khovanov_unreduced_integral_polynomial.html>`__

OUTPUT:

Expand Down Expand Up @@ -3004,7 +3004,7 @@ def homfly_polynomial(self, var1=None, var2=None, normalization='lm'):
in [KnotAtlas]_

Use the ``'vz'`` normalization to agree with the data
`KnotInfo <http://www.indiana.edu/~knotinfo/>`__.
`KnotInfo <https://knotinfo.org/>`__.

EXAMPLES:

Expand Down
Loading