fdsreader 1.11.7__tar.gz → 1.11.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fdsreader-1.11.9/.gitattributes +1 -0
- fdsreader-1.11.9/.github/ISSUE_TEMPLATE/bug_report.yml +54 -0
- fdsreader-1.11.9/.github/ISSUE_TEMPLATE/config.yml +1 -0
- fdsreader-1.11.9/.github/last_tested_fds_version.txt +1 -0
- fdsreader-1.11.9/.github/workflows/ci.yml +94 -0
- fdsreader-1.11.9/.github/workflows/fds_compat.yml +85 -0
- fdsreader-1.11.9/.github/workflows/release.yml +65 -0
- fdsreader-1.11.9/.gitignore +536 -0
- fdsreader-1.11.9/.pre-commit-config.yaml +17 -0
- fdsreader-1.11.9/.readthedocs.yaml +17 -0
- fdsreader-1.11.9/CITATION.cff +27 -0
- fdsreader-1.11.9/CONTRIBUTING.md +102 -0
- fdsreader-1.11.9/MANIFEST.in +2 -0
- {fdsreader-1.11.7/fdsreader.egg-info → fdsreader-1.11.9}/PKG-INFO +44 -42
- {fdsreader-1.11.7 → fdsreader-1.11.9}/README.md +30 -38
- fdsreader-1.11.9/RELEASE.md +333 -0
- fdsreader-1.11.9/codecov.yml +13 -0
- fdsreader-1.11.9/docs/bndf.rst +20 -0
- fdsreader-1.11.9/docs/conf.py +54 -0
- fdsreader-1.11.9/docs/devc.rst +7 -0
- fdsreader-1.11.9/docs/evac.rst +14 -0
- fdsreader-1.11.9/docs/export.rst +22 -0
- fdsreader-1.11.9/docs/fds_classes.rst +17 -0
- fdsreader-1.11.9/docs/geom.rst +14 -0
- fdsreader-1.11.9/docs/img/data-structure.drawio +1 -0
- fdsreader-1.11.9/docs/img/data-structure.svg +3 -0
- fdsreader-1.11.9/docs/index.rst +50 -0
- fdsreader-1.11.9/docs/isof.rst +14 -0
- fdsreader-1.11.9/docs/part.rst +14 -0
- fdsreader-1.11.9/docs/pl3d.rst +14 -0
- fdsreader-1.11.9/docs/quantity.rst +7 -0
- fdsreader-1.11.9/docs/releasing.rst +91 -0
- fdsreader-1.11.9/docs/simulation.rst +7 -0
- fdsreader-1.11.9/docs/slcf.rst +26 -0
- fdsreader-1.11.9/docs/smoke3d.rst +14 -0
- fdsreader-1.11.9/docs/utils.rst +12 -0
- fdsreader-1.11.9/examples/bndf/bndf_example_anim.py +47 -0
- fdsreader-1.11.9/examples/bndf/fds_data/wall_005.fds +108 -0
- fdsreader-1.11.9/examples/devc/devc_example.py +17 -0
- fdsreader-1.11.9/examples/devc/fds_steckler/steckler.fds +43 -0
- fdsreader-1.11.9/examples/evac/evac_example.py +16 -0
- fdsreader-1.11.9/examples/evac/fds_fed/fed_verification_multi_mesh.fds +332 -0
- fdsreader-1.11.9/examples/evac/fds_no_fed/stairs_evss_meshes.fds +238 -0
- fdsreader-1.11.9/examples/export/export_all.py +14 -0
- fdsreader-1.11.9/examples/export/obst_export.py +17 -0
- fdsreader-1.11.9/examples/export/slcf_export.py +16 -0
- fdsreader-1.11.9/examples/export/smoke3d_export.py +17 -0
- fdsreader-1.11.9/examples/geom/fds_data/sphere_radiate.fds +1443 -0
- fdsreader-1.11.9/examples/geom/fds_geomslices/PWB01_GEOM.fds +361 -0
- fdsreader-1.11.9/examples/geom/geom_example.py +20 -0
- fdsreader-1.11.9/examples/geom/geom_slices.py +12 -0
- fdsreader-1.11.9/examples/isof/fds_steckler/input_steckler.fds +40 -0
- fdsreader-1.11.9/examples/isof/isof_example.py +30 -0
- fdsreader-1.11.9/examples/part/part_example.py +39 -0
- fdsreader-1.11.9/examples/pl3d/fds_data/vort3d_80.fds +49 -0
- fdsreader-1.11.9/examples/pl3d/pl3d_example.py +37 -0
- fdsreader-1.11.9/examples/slcf/fds_data/vort2d_80.fds +30 -0
- fdsreader-1.11.9/examples/slcf/fds_multimesh/multimesh.fds +71 -0
- fdsreader-1.11.9/examples/slcf/fds_steckler/input_steckler.fds +45 -0
- fdsreader-1.11.9/examples/slcf/slcf_example_global.py +26 -0
- fdsreader-1.11.9/examples/slcf/slcf_example_mask.py +34 -0
- fdsreader-1.11.9/examples/smoke3d/fds_steckler/input_steckler.fds +36 -0
- fdsreader-1.11.9/examples/smoke3d/smoke3d_example.py +43 -0
- fdsreader-1.11.9/fdsreader/__init__.py +9 -0
- fdsreader-1.11.9/fdsreader/bndf/__init__.py +5 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/bndf/obstruction.py +281 -198
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/bndf/obstruction_collection.py +7 -9
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/bndf/utils.py +2 -3
- fdsreader-1.11.9/fdsreader/devc/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/devc/device.py +35 -13
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/devc/device_collection.py +22 -12
- fdsreader-1.11.9/fdsreader/evac/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/evac/evac_collection.py +123 -114
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/evac/evacuation.py +15 -22
- fdsreader-1.11.9/fdsreader/export/__init__.py +4 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/export/obst_exporter.py +38 -22
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/export/sim_exporter.py +12 -5
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/export/slcf_exporter.py +36 -20
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/export/smoke3d_exporter.py +33 -18
- fdsreader-1.11.9/fdsreader/fds_classes/__init__.py +4 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/fds_classes/mesh.py +60 -35
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/fds_classes/mesh_collection.py +3 -4
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/fds_classes/surface.py +13 -4
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/fds_classes/ventilation.py +14 -9
- fdsreader-1.11.9/fdsreader/geom/__init__.py +3 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/geom/geometry.py +37 -38
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/geom/geometry_collection.py +10 -8
- fdsreader-1.11.9/fdsreader/isof/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/isof/isosurface.py +88 -88
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/isof/isosurface_collection.py +10 -8
- fdsreader-1.11.9/fdsreader/part/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/part/particle.py +6 -9
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/part/particle_collection.py +33 -26
- fdsreader-1.11.9/fdsreader/pl3d/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/pl3d/pl3d.py +87 -60
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/pl3d/plot3D_collection.py +11 -8
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/simulation.py +263 -190
- fdsreader-1.11.9/fdsreader/slcf/__init__.py +4 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/slcf/geomslice.py +62 -62
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/slcf/geomslice_collection.py +14 -13
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/slcf/slice.py +210 -200
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/slcf/slice_collection.py +14 -13
- fdsreader-1.11.9/fdsreader/smoke3d/__init__.py +2 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/smoke3d/smoke3D_collection.py +9 -7
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/smoke3d/smoke3d.py +93 -72
- fdsreader-1.11.9/fdsreader/utils/__init__.py +5 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/utils/data.py +13 -12
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/utils/dimension.py +9 -10
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/utils/extent.py +20 -26
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/utils/fortran_data.py +26 -17
- fdsreader-1.11.9/fdsreader/utils/misc.py +28 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9/fdsreader.egg-info}/PKG-INFO +44 -42
- fdsreader-1.11.9/fdsreader.egg-info/SOURCES.txt +157 -0
- fdsreader-1.11.9/fdsreader.egg-info/requires.txt +14 -0
- fdsreader-1.11.9/fdsreader.egg-info/scm_file_list.json +154 -0
- fdsreader-1.11.9/fdsreader.egg-info/scm_version.json +8 -0
- fdsreader-1.11.9/pyproject.toml +90 -0
- fdsreader-1.11.9/requirements-dev.txt +5 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_bndf.py +45 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_devc.py +58 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_geom.py +33 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_isof.py +39 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_part.py +43 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_pl3d.py +31 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_slcf.py +44 -0
- fdsreader-1.11.9/tests/acceptance_tests/test_smoke3d.py +42 -0
- fdsreader-1.11.9/tests/cases/bndf_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/bndf_data_fds6100.tgz +3 -0
- fdsreader-1.11.9/tests/cases/devc_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/devc_data_fds6100.tgz +3 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/input_steckler.fds +49 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/sphere_radiate.fds +1443 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/steckler.fds +40 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/vort3d_80.fds +49 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/wall_005.fds +108 -0
- fdsreader-1.11.9/tests/cases/fds_inputs/water_droplets.fds +44 -0
- fdsreader-1.11.9/tests/cases/geom_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/part_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/part_data_fds6100.tgz +3 -0
- fdsreader-1.11.9/tests/cases/pl3d_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/pl3d_data_fds6100.tgz +3 -0
- fdsreader-1.11.9/tests/cases/steckler_data.tgz +3 -0
- fdsreader-1.11.9/tests/cases/steckler_data_fds6100.tgz +3 -0
- fdsreader-1.11.9/tests/conftest.py +9 -0
- fdsreader-1.11.9/tests/perf_verification.py +160 -0
- fdsreader-1.11.9/tests/run_tests.sh +54 -0
- fdsreader-1.11.9/tests/test.smv +334 -0
- fdsreader-1.11.9/tests/test_basic_read.py +45 -0
- fdsreader-1.11.9/tests/test_devc_csv_parsing.py +49 -0
- fdsreader-1.11.9/tests/test_obstruction_subobstructions.py +26 -0
- fdsreader-1.11.9/tests/test_particle_quantity_reshape.py +67 -0
- fdsreader-1.11.9/tests/test_slice_3d_ghost_points.py +41 -0
- fdsreader-1.11.9/tests/test_slice_coordinates.py +36 -0
- fdsreader-1.11.9/tests/test_smoke3d_multires.py +47 -0
- fdsreader-1.11.7/MANIFEST.in +0 -2
- fdsreader-1.11.7/fdsreader/__init__.py +0 -6
- fdsreader-1.11.7/fdsreader/_version.py +0 -11
- fdsreader-1.11.7/fdsreader/bndf/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/devc/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/evac/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/export/__init__.py +0 -4
- fdsreader-1.11.7/fdsreader/fds_classes/__init__.py +0 -7
- fdsreader-1.11.7/fdsreader/geom/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/isof/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/part/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/pl3d/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/slcf/__init__.py +0 -7
- fdsreader-1.11.7/fdsreader/smoke3d/__init__.py +0 -3
- fdsreader-1.11.7/fdsreader/utils/__init__.py +0 -7
- fdsreader-1.11.7/fdsreader/utils/misc.py +0 -20
- fdsreader-1.11.7/fdsreader.egg-info/SOURCES.txt +0 -61
- fdsreader-1.11.7/fdsreader.egg-info/requires.txt +0 -6
- fdsreader-1.11.7/pyproject.toml +0 -44
- fdsreader-1.11.7/requirements.txt +0 -163
- fdsreader-1.11.7/tests/test_version_compatibility.py +0 -16
- {fdsreader-1.11.7 → fdsreader-1.11.9}/LICENSE +0 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader/settings.py +0 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader.egg-info/dependency_links.txt +0 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/fdsreader.egg-info/top_level.txt +0 -0
- {fdsreader-1.11.7 → fdsreader-1.11.9}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report an error or unexpected behavior
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: [bug]
|
|
5
|
+
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Welcome to the fdsreader GitHub repository!
|
|
11
|
+
We always appreciate feedback from our users.
|
|
12
|
+
Please fill out as many fields as possible to help us reproduce the bug
|
|
13
|
+
more easily.
|
|
14
|
+
|
|
15
|
+
Thank you for using fdsreader!
|
|
16
|
+
|
|
17
|
+
- type: textarea
|
|
18
|
+
id: what-happened
|
|
19
|
+
attributes:
|
|
20
|
+
label: What happened?
|
|
21
|
+
description: Also tell us, what did you expect to happen?
|
|
22
|
+
placeholder: Tell us what you see!
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
- type: textarea
|
|
27
|
+
attributes:
|
|
28
|
+
label: Steps to reproduce
|
|
29
|
+
description: |
|
|
30
|
+
Tell us how to reproduce this bug.
|
|
31
|
+
If possible, please include a minimal, fully reproducible example or a link to a Git repository.
|
|
32
|
+
placeholder: Put your code or a link here
|
|
33
|
+
|
|
34
|
+
- type: textarea
|
|
35
|
+
id: fds-version
|
|
36
|
+
attributes:
|
|
37
|
+
label: FDS version used
|
|
38
|
+
description: Please tell us what FDS version was used.
|
|
39
|
+
placeholder: Version
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: fdsreader-version
|
|
45
|
+
attributes:
|
|
46
|
+
label: fdsreader version used
|
|
47
|
+
description: Please tell us what fdsreader version was used.
|
|
48
|
+
placeholder: Version
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
|
|
52
|
+
- type: markdown
|
|
53
|
+
attributes:
|
|
54
|
+
value: "_Thanks for submitting this bug report!_"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
FDS-6.8.0
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
paths:
|
|
7
|
+
- "fdsreader/**"
|
|
8
|
+
- "tests/**"
|
|
9
|
+
- "pyproject.toml"
|
|
10
|
+
- "docs/**"
|
|
11
|
+
- ".readthedocs.yaml"
|
|
12
|
+
- ".github/workflows/ci.yml"
|
|
13
|
+
pull_request:
|
|
14
|
+
paths:
|
|
15
|
+
- "fdsreader/**"
|
|
16
|
+
- "tests/**"
|
|
17
|
+
- "pyproject.toml"
|
|
18
|
+
- "docs/**"
|
|
19
|
+
- ".readthedocs.yaml"
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
changes:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
outputs:
|
|
25
|
+
code: ${{ steps.filter.outputs.code }}
|
|
26
|
+
docs: ${{ steps.filter.outputs.docs }}
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- uses: dorny/paths-filter@v3
|
|
30
|
+
id: filter
|
|
31
|
+
with:
|
|
32
|
+
filters: |
|
|
33
|
+
code:
|
|
34
|
+
- "fdsreader/**"
|
|
35
|
+
- "tests/**"
|
|
36
|
+
- "pyproject.toml"
|
|
37
|
+
docs:
|
|
38
|
+
- "docs/**"
|
|
39
|
+
- ".readthedocs.yaml"
|
|
40
|
+
|
|
41
|
+
lint:
|
|
42
|
+
needs: changes
|
|
43
|
+
if: needs.changes.outputs.code == 'true'
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v4
|
|
47
|
+
- uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: "3.12"
|
|
50
|
+
- run: pip install ruff
|
|
51
|
+
- run: ruff check fdsreader/
|
|
52
|
+
- run: ruff format --check fdsreader/
|
|
53
|
+
|
|
54
|
+
test:
|
|
55
|
+
needs: changes
|
|
56
|
+
if: needs.changes.outputs.code == 'true'
|
|
57
|
+
runs-on: ubuntu-latest
|
|
58
|
+
strategy:
|
|
59
|
+
matrix:
|
|
60
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v4
|
|
63
|
+
with:
|
|
64
|
+
lfs: true
|
|
65
|
+
- uses: actions/setup-python@v5
|
|
66
|
+
with:
|
|
67
|
+
python-version: ${{ matrix.python-version }}
|
|
68
|
+
cache: pip
|
|
69
|
+
- name: Install dependencies
|
|
70
|
+
run: pip install -e ".[dev]"
|
|
71
|
+
- name: Prepare test cases
|
|
72
|
+
run: cd tests/cases && for f in *.tgz; do tar -xzvf "$f"; done
|
|
73
|
+
- name: Run tests
|
|
74
|
+
run: pytest tests/ --cov=fdsreader --cov-report=xml --cov-report=term-missing
|
|
75
|
+
- name: Upload coverage
|
|
76
|
+
if: matrix.python-version == '3.12'
|
|
77
|
+
uses: codecov/codecov-action@v5
|
|
78
|
+
with:
|
|
79
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
80
|
+
files: coverage.xml
|
|
81
|
+
|
|
82
|
+
docs-build:
|
|
83
|
+
needs: changes
|
|
84
|
+
if: needs.changes.outputs.docs == 'true'
|
|
85
|
+
runs-on: ubuntu-latest
|
|
86
|
+
steps:
|
|
87
|
+
- uses: actions/checkout@v4
|
|
88
|
+
- uses: actions/setup-python@v5
|
|
89
|
+
with:
|
|
90
|
+
python-version: "3.12"
|
|
91
|
+
- name: Install dependencies
|
|
92
|
+
run: pip install -e ".[docs]"
|
|
93
|
+
- name: Build docs
|
|
94
|
+
run: sphinx-build --keep-going -b html docs/ docs/_build/html
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: FDS Compatibility Check
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
fds_version:
|
|
7
|
+
description: "FDS version tag (e.g. FDS-6.10.1) — leave empty for latest"
|
|
8
|
+
required: false
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "0 6 * * 1" # Every Monday 06:00 UTC
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
detect-version:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
outputs:
|
|
16
|
+
run_compat: ${{ steps.check.outputs.run_compat }}
|
|
17
|
+
fds_version: ${{ steps.check.outputs.fds_version }}
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- id: check
|
|
21
|
+
run: |
|
|
22
|
+
if [ -n "${{ inputs.fds_version }}" ]; then
|
|
23
|
+
echo "fds_version=${{ inputs.fds_version }}" >> $GITHUB_OUTPUT
|
|
24
|
+
echo "run_compat=true" >> $GITHUB_OUTPUT
|
|
25
|
+
else
|
|
26
|
+
LATEST=$(gh api repos/firemodels/fds/releases/latest --jq '.tag_name')
|
|
27
|
+
LAST=$(cat .github/last_tested_fds_version.txt 2>/dev/null || echo "none")
|
|
28
|
+
echo "fds_version=$LATEST" >> $GITHUB_OUTPUT
|
|
29
|
+
if [ "$LATEST" != "$LAST" ]; then
|
|
30
|
+
echo "run_compat=true" >> $GITHUB_OUTPUT
|
|
31
|
+
else
|
|
32
|
+
echo "run_compat=false" >> $GITHUB_OUTPUT
|
|
33
|
+
fi
|
|
34
|
+
fi
|
|
35
|
+
env:
|
|
36
|
+
GH_TOKEN: ${{ github.token }}
|
|
37
|
+
|
|
38
|
+
check-compat:
|
|
39
|
+
needs: detect-version
|
|
40
|
+
if: needs.detect-version.outputs.run_compat == 'true'
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
lfs: true
|
|
46
|
+
- uses: actions/setup-python@v5
|
|
47
|
+
with:
|
|
48
|
+
python-version: "3.12"
|
|
49
|
+
- name: Download FDS
|
|
50
|
+
run: |
|
|
51
|
+
VERSION=${{ needs.detect-version.outputs.fds_version }}
|
|
52
|
+
ASSET_URL=$(gh api repos/firemodels/fds/releases/tags/${VERSION} --jq '.assets[] | select(.name | test("_lnx\\.sh$")) | .browser_download_url' | head -n1)
|
|
53
|
+
if [ -z "$ASSET_URL" ]; then
|
|
54
|
+
echo "No Linux installer asset found for release $VERSION" >&2
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
wget -q "$ASSET_URL" -O fds_install.sh
|
|
58
|
+
echo "" | bash fds_install.sh --prefix=$HOME/fds
|
|
59
|
+
env:
|
|
60
|
+
GH_TOKEN: ${{ github.token }}
|
|
61
|
+
- name: Run test simulations
|
|
62
|
+
run: |
|
|
63
|
+
FDS=$HOME/fds/bin/fds_openmp
|
|
64
|
+
for dir in tests/cases/fds_inputs/*.fds; do
|
|
65
|
+
name=$(basename "$dir" .fds)
|
|
66
|
+
mkdir -p /tmp/fds_out/$name
|
|
67
|
+
cd /tmp/fds_out/$name
|
|
68
|
+
$FDS "$GITHUB_WORKSPACE/$dir" || true
|
|
69
|
+
cd $GITHUB_WORKSPACE
|
|
70
|
+
done
|
|
71
|
+
- name: Install fdsreader and run tests
|
|
72
|
+
run: |
|
|
73
|
+
pip install ".[dev]"
|
|
74
|
+
cd tests/cases && for f in *.tgz; do tar -xzvf "$f"; done
|
|
75
|
+
cd ../..
|
|
76
|
+
pytest tests/ -v
|
|
77
|
+
- name: Update tracked FDS version
|
|
78
|
+
if: success()
|
|
79
|
+
run: |
|
|
80
|
+
echo "${{ needs.detect-version.outputs.fds_version }}" > .github/last_tested_fds_version.txt
|
|
81
|
+
git config user.name "github-actions[bot]"
|
|
82
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
83
|
+
git add .github/last_tested_fds_version.txt
|
|
84
|
+
git diff --staged --quiet || git commit -m "chore: update last tested FDS version to ${{ needs.detect-version.outputs.fds_version }}"
|
|
85
|
+
git push
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v7
|
|
13
|
+
with:
|
|
14
|
+
fetch-depth: 0
|
|
15
|
+
- uses: actions/setup-python@v7
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.x"
|
|
18
|
+
- run: pip install build
|
|
19
|
+
- run: python -m build
|
|
20
|
+
- uses: actions/upload-artifact@v7
|
|
21
|
+
with:
|
|
22
|
+
name: python-package-distributions
|
|
23
|
+
path: dist/
|
|
24
|
+
|
|
25
|
+
publish-testpypi:
|
|
26
|
+
if: contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc')
|
|
27
|
+
needs: build
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
environment:
|
|
30
|
+
name: testpypi
|
|
31
|
+
url: https://test.pypi.org/p/fdsreader
|
|
32
|
+
permissions:
|
|
33
|
+
id-token: write
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/download-artifact@v8
|
|
36
|
+
with:
|
|
37
|
+
name: python-package-distributions
|
|
38
|
+
path: dist/
|
|
39
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
40
|
+
with:
|
|
41
|
+
repository-url: https://test.pypi.org/legacy/
|
|
42
|
+
|
|
43
|
+
publish-pypi:
|
|
44
|
+
if: "!contains(github.ref_name, 'a') && !contains(github.ref_name, 'b') && !contains(github.ref_name, 'rc')"
|
|
45
|
+
needs: build
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
environment:
|
|
48
|
+
name: pypi
|
|
49
|
+
url: https://pypi.org/p/fdsreader
|
|
50
|
+
permissions:
|
|
51
|
+
id-token: write
|
|
52
|
+
contents: write
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/download-artifact@v8
|
|
55
|
+
with:
|
|
56
|
+
name: python-package-distributions
|
|
57
|
+
path: dist/
|
|
58
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
59
|
+
- name: Create GitHub Release
|
|
60
|
+
env:
|
|
61
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
62
|
+
run: |
|
|
63
|
+
gh release create '${{ github.ref_name }}' dist/** \
|
|
64
|
+
--repo '${{ github.repository }}' \
|
|
65
|
+
--generate-notes
|