GWpy 3.0.8 - 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>