Skip to content
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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ The Jupyter [explorer](https://fdsreader.readthedocs.io/en/latest/guide/explorer
`pip install "fdsreader[notebook]"`. Its command line counterpart needs nothing beyond
numpy and is always installed.

fdsreader needs Python 3.10 or newer and reads output of FDS 6.7.5 and later; it is tested
fdsreader needs Python 3.11 or newer and reads output of FDS 6.7.5 and later; it is tested
against the latest FDS release. For complex geometry (`&GEOM`) from FDS 6.10 or newer, use fdsreader 1.12.1 or
later. Details are in the [compatibility table](https://fdsreader.readthedocs.io/en/latest/guide/compatibility.html);
if something does not read correctly, please [open an issue](https://github.com/FireDynamics/fdsreader/issues).
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/installation.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Installation
============

fdsreader is on `PyPI <https://pypi.org/project/fdsreader/>`_ and needs Python 3.10 or
fdsreader is on `PyPI <https://pypi.org/project/fdsreader/>`_ and needs Python 3.11 or
newer. Its only dependencies are numpy and typing_extensions.

.. code-block:: sh
Expand Down
4 changes: 2 additions & 2 deletions fdsreader/simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import pickle
import re
import warnings
from datetime import datetime, timezone
from datetime import UTC, datetime
from typing import AnyStr, Dict, List, Sequence, TextIO, Tuple, Union

import numpy as np
Expand Down Expand Up @@ -49,7 +49,7 @@ def _wall_times_to_utc(stamps: Sequence[str]) -> np.ndarray:
for stamp in stamps:
time = datetime.fromisoformat(stamp.strip())
# Without an offset the stamp stays as written; astimezone would assume the local time zone
utc.append(time.astimezone(timezone.utc).replace(tzinfo=None) if time.tzinfo else time)
utc.append(time.astimezone(UTC).replace(tzinfo=None) if time.tzinfo else time)
return np.array(utc, dtype="datetime64[ms]")


Expand Down
5 changes: 2 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name = "fdsreader"
dynamic = ["version"]
description = "Fast and easy-to-use Python reader for Fire Dynamics Simulator (FDS) output."
readme = "README.md"
requires-python = ">=3.10"
requires-python = ">=3.11"
license = "LGPL-3.0-only"
license-files = ["LICENSE", "LICENSE.LESSER"]
authors = [
Expand All @@ -26,7 +26,6 @@ maintainers = [
keywords = ["FDS", "Fire Dynamics Simulator", "fire", "fire safety", "CFD", "Smokeview", "simulation", "numpy"]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
Expand Down Expand Up @@ -101,7 +100,7 @@ testpaths = ["tests"]

[tool.ruff]
line-length = 120
target-version = "py310"
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP"]
Expand Down
10 changes: 3 additions & 7 deletions tests/test_crash_regressions.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""Regression tests for small crashes and warnings found while writing the example notebooks."""

import os
import sys
import warnings
from pathlib import Path

Expand All @@ -14,9 +13,6 @@

CASES_DIR = Path(__file__).parent / "cases"

# datetime.fromisoformat accepts every ISO 8601 offset only from Python 3.11 on
_NEEDS_PY311 = pytest.mark.skipif(sys.version_info < (3, 11), reason="fromisoformat needs Python 3.11")


@pytest.mark.parametrize("case", ["bndf_data", "bndf_data_fds6100"])
@pytest.mark.parametrize("obst_id", ["Wand_r", "Golf_brandfläche"])
Expand Down Expand Up @@ -63,9 +59,9 @@ def test_steps_load_without_timezone_warning(monkeypatch):
("2024-03-14T09:39:53.199-05:30", "2024-03-14T15:09:53.199"),
(" 2024-03-14T09:39:53.199", "2024-03-14T09:39:53.199"),
("2024-03-14", "2024-03-14T00:00:00.000"),
pytest.param("2024-03-14T09:39:53.199+0100", "2024-03-14T08:39:53.199", marks=_NEEDS_PY311),
pytest.param("2024-03-14T09:39:53.199+01", "2024-03-14T08:39:53.199", marks=_NEEDS_PY311),
pytest.param("2024-03-14T09:39:53.199Z", "2024-03-14T09:39:53.199", marks=_NEEDS_PY311),
("2024-03-14T09:39:53.199+0100", "2024-03-14T08:39:53.199"),
("2024-03-14T09:39:53.199+01", "2024-03-14T08:39:53.199"),
("2024-03-14T09:39:53.199Z", "2024-03-14T09:39:53.199"),
],
)
def test_wall_times_to_utc(stamp, utc):
Expand Down
Loading