Patch release
Changes:
- [1665] Sieve URLs from gwosc client before fetch
- [1669] Handle reading `LIGO_LW` XML files that are missing the `_ns` timing columns.
- [1672] Fix bug in `TimeSeriesDict.find`
- [1685] Fix array indexing of `Series.xindex`
- [1688] Silence LAL `LIGOTimeGPS` warnings when parsing a cache
- [1691] Use class fixtures to download GWOSC data that is used many times
- [1694] Fix missing sample when reading with non-exact sample times using LALFrame
- [1695] Replace `maya` with `dateparser` in `gwpy.time`
- [1698] Fix coherene test fixture
- [1699] Fix the Zenodo RST utility module
- [1712] Drop `HAS_TEX` for faster startup time
- [1713] Track LALSuite rebrand in docs
- [1714] Add support for Python 3.12
- [1715] Avoid python-framel 8.46.0
- [1716] Migrate test requirement to pytest-freezer
- [1718] Remove all use of distutils
- [1719] Replace `datetime.utcnow()` with `datetime.now(UTC)`
- [1721] Add aliases for LIGO and Virgo's 'time' units
- [1722] Read the unitX from a GWF with frameCPP
- [1723] Allow localhost sockets during dist testing
- [1728] Fix bugs in inverse FFT normalisation
- [1730] Propagate source keyword in `DataQualityDict.populate`
- [1733] Update documentation references for lscsoft-glue and LALSuite
- [1734] Replace `sphinx-panels` tabs with `sphinx-immaterial` tabs
The full details of this milestone can be seen at
<https://github.com/gwpy/gwpy/milestone/67>