floodmodeller-api 0.4.4.post1__tar.gz → 0.5.0.post1__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.
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/MANIFEST.in +1 -0
- {floodmodeller_api-0.4.4.post1/floodmodeller_api.egg-info → floodmodeller_api-0.5.0.post1}/PKG-INFO +2 -1
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/__init__.py +1 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/dat.py +117 -96
- floodmodeller_api-0.5.0.post1/floodmodeller_api/hydrology_plus/__init__.py +2 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/hydrology_plus/helper.py +23 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/hydrology_plus/hydrology_plus_export.py +333 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/ied.py +93 -90
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/ief.py +233 -50
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/ief_flags.py +1 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/logs/lf.py +5 -1
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/mapping.py +2 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_conveyance.py +23 -32
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/7082.ief +28 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/BaseModel_2D_Q100.ief +28 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/Baseline_unchecked.csv +77 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/Constant QT.ief +19 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_Q_xml_expected.json +7 -7
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX18_DAT_expected.json +54 -38
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX3_DAT_expected.json +246 -166
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX3_IEF_expected.json +25 -20
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX6_DAT_expected.json +522 -350
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/FEH boundary.ief +23 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Linked1D2D_xml_expected.json +7 -7
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/P3Panels_UNsteady.ief +25 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/QT in dat file.ief +20 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/T10.ief +25 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/T2.ief +25 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/T5.ief +25 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/df_flows_hplus.csv +56 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/event_hplus.csv +56 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/ex4.ief +20 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/ex6.ief +21 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/example_h+_export.csv +77 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_1.csv +72 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_10.csv +77 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_2.csv +79 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_3.csv +77 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_4.csv +131 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_5.csv +77 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_6.csv +131 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_7.csv +131 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_8.csv +131 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/hplus_export_example_9.csv +131 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network_dat_expected.json +312 -210
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network_ied_expected.json +6 -6
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_data/network_with_comments.ied +55 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_flowtimeprofile.py +133 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_hydrology_plus_export.py +210 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_ied.py +12 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_ief.py +49 -9
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_json.py +6 -1
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_read_file.py +27 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/test/test_river.py +246 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/to_from_json.py +7 -1
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/tool.py +6 -10
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/__init__.py +11 -1
- floodmodeller_api-0.5.0.post1/floodmodeller_api/units/conveyance.py +192 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/sections.py +120 -39
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/util.py +2 -0
- floodmodeller_api-0.5.0.post1/floodmodeller_api/version.py +1 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/xml2d.py +20 -13
- floodmodeller_api-0.5.0.post1/floodmodeller_api/xsd_backup.xml +738 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1/floodmodeller_api.egg-info}/PKG-INFO +2 -1
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api.egg-info/SOURCES.txt +34 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api.egg-info/requires.txt +1 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/pyproject.toml +3 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/requirements.txt +8 -5
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/setup.py +4 -1
- floodmodeller_api-0.4.4.post1/floodmodeller_api/units/conveyance.py +0 -301
- floodmodeller_api-0.4.4.post1/floodmodeller_api/version.py +0 -1
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/LICENSE.txt +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/README.md +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/_base.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/backup.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/diff.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/inp.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libifcoremd.dll +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libifcoremt.so.5 +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libifport.so.5 +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libimf.so +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libintlc.so.5 +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libmmd.dll +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libsvml.so +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/libzzn_read.so +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/libs/zzn_read.dll +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/logs/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/logs/lf_helpers.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/logs/lf_params.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/conftest.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_backup.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_dat.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/All Units 4_6.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/All Units 4_6.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/BRIDGE.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Culvert_Inlet_Outlet.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Culvert_Inlet_Outlet.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DamBreakADI.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DamBreakFAST.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DamBreakFAST_dy.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DamBreakTVD.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DefenceBreach.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DefenceBreachFAST.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/DefenceBreachFAST_dy.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1+2_QH.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_H.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_Q.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_Q_FAST.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_Q_FAST_dy.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Domain1_W.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX1.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX1.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX1.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX1.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX17.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX17.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX17.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX18.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX2.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX3.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX6.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX6.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/EX6.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Event Data Example.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Event Data Example.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Event Data Example.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Linked1D2D.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Linked1D2DFAST.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/Linked1D2DFAST_dy.xml +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/blockage.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/blockage.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/blockage.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/blockage.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/conveyance_test.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/conveyance_test.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/conveyance_test.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/defaultUnits.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/defaultUnits.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/defaultUnits.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/defaultUnits.fmpx +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/defaultUnits.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/ex3.ief +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/ex3.lf1 +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/ex4.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/ex4_changed.DAT +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example1.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example2.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example3.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example4.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example5.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/example6.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/expected_conveyance.csv +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/jump.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.exy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.ied +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.ief +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.inp +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.mmm +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.pxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.uic +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.zzd +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.zzl +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.zzn +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.zzu +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network.zzx +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/network_from_tabularCSV.csv +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir_default.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir_default.ext +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir_default.feb +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir_default.fmpx +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/rnweir_default.gxy +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_data/unit checks.dat +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_inp.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_logs_lf.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_tool.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_toolbox_structure_log.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_xml2d.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/test/test_zzn.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/example_tool.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/gui/bg.PNG +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/gui/logo.PNG +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_build/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_build/add_siltation_definition.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_build/structure_log/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_build/structure_log/structure_log.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_build/structure_log_definition.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_conversion/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/model_review/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/toolbox/results_analysis/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/_base.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/boundaries.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/comment.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/conduits.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/helpers.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/iic.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/losses.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/structures.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/units.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/unsupported.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/units/variables.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/_base.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/conduits.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/general_parameters.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/junctions.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/losses.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/outfalls.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/raingauges.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/subsections.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/urban1d/xsections.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/validation/__init__.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/validation/parameters.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/validation/urban_parameters.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/validation/validation.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/xml2d_template.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api/zzn.py +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api.egg-info/dependency_links.txt +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api.egg-info/entry_points.txt +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/floodmodeller_api.egg-info/top_level.txt +0 -0
- {floodmodeller_api-0.4.4.post1 → floodmodeller_api-0.5.0.post1}/setup.cfg +0 -0
{floodmodeller_api-0.4.4.post1/floodmodeller_api.egg-info → floodmodeller_api-0.5.0.post1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: floodmodeller_api
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0.post1
|
|
4
4
|
Summary: Extends the functionality of Flood Modeller to python users
|
|
5
5
|
Author: Jacobs
|
|
6
6
|
Author-email: joe.pierce@jacobs.com
|
|
@@ -18,6 +18,7 @@ Requires-Dist: pytest-mock==3.*
|
|
|
18
18
|
Requires-Dist: shapely==2.*
|
|
19
19
|
Requires-Dist: scipy==1.*
|
|
20
20
|
Requires-Dist: freezegun==1.*
|
|
21
|
+
Requires-Dist: requests>2.23
|
|
21
22
|
|
|
22
23
|

|
|
23
24
|
|
|
@@ -292,10 +292,10 @@ class DAT(FMFile):
|
|
|
292
292
|
return _name_list[0]
|
|
293
293
|
return _name_list
|
|
294
294
|
|
|
295
|
-
def _read(self):
|
|
295
|
+
def _read(self) -> None:
|
|
296
296
|
# Read DAT data
|
|
297
297
|
with open(self._filepath) as dat_file:
|
|
298
|
-
self._raw_data = [line.rstrip("\n") for line in dat_file.readlines()]
|
|
298
|
+
self._raw_data: list[str] = [line.rstrip("\n") for line in dat_file.readlines()]
|
|
299
299
|
|
|
300
300
|
# Generate DAT structure
|
|
301
301
|
self._update_dat_struct()
|
|
@@ -305,7 +305,7 @@ class DAT(FMFile):
|
|
|
305
305
|
if gxy_path.exists():
|
|
306
306
|
self._gxy_filepath = gxy_path
|
|
307
307
|
with open(self._gxy_filepath) as gxy_file:
|
|
308
|
-
self._gxy_data = gxy_file.read()
|
|
308
|
+
self._gxy_data: str | None = gxy_file.read()
|
|
309
309
|
else:
|
|
310
310
|
self._gxy_filepath = None
|
|
311
311
|
self._gxy_data = None
|
|
@@ -327,7 +327,7 @@ class DAT(FMFile):
|
|
|
327
327
|
def _create_from_blank(self, with_gxy: bool = False) -> None:
|
|
328
328
|
# No filepath specified, create new 'blank' DAT in memory
|
|
329
329
|
# ** Update these to have minimal data needed (general header, empty IC header)
|
|
330
|
-
self._dat_struct = [
|
|
330
|
+
self._dat_struct: list[dict[str, Any]] = [
|
|
331
331
|
{"start": 0, "Type": "GENERAL", "end": 6},
|
|
332
332
|
{"Type": "INITIAL CONDITIONS", "start": 7, "end": 8},
|
|
333
333
|
]
|
|
@@ -517,8 +517,21 @@ class DAT(FMFile):
|
|
|
517
517
|
block["end"] + block_shift
|
|
518
518
|
) # add in to keep a record of the last block read in
|
|
519
519
|
|
|
520
|
-
def _get_unit_definitions(self):
|
|
521
|
-
|
|
520
|
+
def _get_unit_definitions(self):
|
|
521
|
+
self._initialize_collections()
|
|
522
|
+
for block in self._dat_struct:
|
|
523
|
+
unit_data = self._raw_data[block["start"] : block["end"] + 1]
|
|
524
|
+
unit_type = block["Type"]
|
|
525
|
+
|
|
526
|
+
if unit_type in units.SUPPORTED_UNIT_TYPES:
|
|
527
|
+
self._process_supported_unit(unit_type, unit_data)
|
|
528
|
+
elif unit_type in units.UNSUPPORTED_UNIT_TYPES:
|
|
529
|
+
self._process_unsupported_unit(unit_type, unit_data)
|
|
530
|
+
elif unit_type not in ("GENERAL", "GISINFO"):
|
|
531
|
+
raise Exception(f"Unexpected unit type encountered: {unit_type}")
|
|
532
|
+
|
|
533
|
+
def _initialize_collections(self):
|
|
534
|
+
# Initialize unit collections
|
|
522
535
|
self.sections = {}
|
|
523
536
|
self.boundaries = {}
|
|
524
537
|
self.structures = {}
|
|
@@ -526,96 +539,90 @@ class DAT(FMFile):
|
|
|
526
539
|
self.losses = {}
|
|
527
540
|
self._unsupported = {}
|
|
528
541
|
self._all_units = []
|
|
529
|
-
for block in self._dat_struct:
|
|
530
|
-
unit_data = self._raw_data[block["start"] : block["end"] + 1]
|
|
531
|
-
if block["Type"] in units.SUPPORTED_UNIT_TYPES:
|
|
532
|
-
# Deal with initial conditions block
|
|
533
|
-
if block["Type"] == "INITIAL CONDITIONS":
|
|
534
|
-
self.initial_conditions = units.IIC(unit_data, n=self._label_len)
|
|
535
|
-
continue
|
|
536
|
-
|
|
537
|
-
if block["Type"] == "COMMENT":
|
|
538
|
-
self._all_units.append(units.COMMENT(unit_data, n=self._label_len))
|
|
539
|
-
continue
|
|
540
|
-
|
|
541
|
-
if block["Type"] == "VARIABLES":
|
|
542
|
-
self.variables = units.Variables(unit_data)
|
|
543
|
-
continue
|
|
544
|
-
|
|
545
|
-
# Check to see whether unit type has associated subtypes so that unit name can be correctly assigned
|
|
546
|
-
if units.SUPPORTED_UNIT_TYPES[block["Type"]]["has_subtype"]:
|
|
547
|
-
unit_name = unit_data[2][: self._label_len].strip()
|
|
548
|
-
else:
|
|
549
|
-
unit_name = unit_data[1][: self._label_len].strip()
|
|
550
542
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
543
|
+
def _process_supported_unit(self, unit_type, unit_data):
|
|
544
|
+
# Handle initial conditions block
|
|
545
|
+
if unit_type == "INITIAL CONDITIONS":
|
|
546
|
+
self.initial_conditions = units.IIC(unit_data, n=self._label_len)
|
|
547
|
+
elif unit_type == "COMMENT":
|
|
548
|
+
self._all_units.append(units.COMMENT(unit_data, n=self._label_len))
|
|
549
|
+
elif unit_type == "VARIABLES":
|
|
550
|
+
self.variables = units.Variables(unit_data)
|
|
551
|
+
else:
|
|
552
|
+
# Check to see whether unit type has associated subtypes so that unit name can be correctly assigned
|
|
553
|
+
unit_name = self._get_unit_name(unit_type, unit_data)
|
|
554
|
+
# Create instance of unit and add to relevant group
|
|
555
|
+
unit_group = getattr(self, units.SUPPORTED_UNIT_TYPES[unit_type]["group"])
|
|
556
|
+
self._add_unit_to_group(unit_group, unit_type, unit_name, unit_data)
|
|
557
|
+
|
|
558
|
+
def _get_unit_name(self, unit_type, unit_data):
|
|
559
|
+
# Check if the unit type has associated subtypes
|
|
560
|
+
if units.SUPPORTED_UNIT_TYPES[unit_type]["has_subtype"]:
|
|
561
|
+
return unit_data[2][: self._label_len].strip()
|
|
562
|
+
return unit_data[1][: self._label_len].strip()
|
|
563
|
+
|
|
564
|
+
def _add_unit_to_group(self, unit_group, unit_type, unit_name, unit_data):
|
|
565
|
+
# Raise exception if a duplicate label is encountered
|
|
566
|
+
if unit_name in unit_group:
|
|
567
|
+
raise Exception(
|
|
568
|
+
f'Duplicate label ({unit_name}) encountered within category: {units.SUPPORTED_UNIT_TYPES[unit_type]["group"]}',
|
|
569
|
+
)
|
|
570
|
+
# Changes done to account for unit types with spaces/dashes eg Flat-V Weir
|
|
571
|
+
unit_type_safe = unit_type.replace(" ", "_").replace("-", "_")
|
|
572
|
+
unit_group[unit_name] = eval(
|
|
573
|
+
f"units.{unit_type_safe}({unit_data}, {self._label_len})",
|
|
574
|
+
)
|
|
575
|
+
self._all_units.append(unit_group[unit_name])
|
|
563
576
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
self._label_len,
|
|
576
|
-
unit_name=unit_name,
|
|
577
|
-
unit_type=block["Type"],
|
|
578
|
-
subtype=subtype,
|
|
579
|
-
)
|
|
580
|
-
self._all_units.append(self._unsupported[f"{unit_name} ({block['Type']})"])
|
|
577
|
+
def _process_unsupported_unit(self, unit_type, unit_data):
|
|
578
|
+
# Check to see whether unit type has associated subtypes so that unit name can be correctly assigned
|
|
579
|
+
unit_name, subtype = self._get_unsupported_unit_name(unit_type, unit_data)
|
|
580
|
+
self._unsupported[f"{unit_name} ({unit_type})"] = units.UNSUPPORTED(
|
|
581
|
+
unit_data,
|
|
582
|
+
self._label_len,
|
|
583
|
+
unit_name=unit_name,
|
|
584
|
+
unit_type=unit_type,
|
|
585
|
+
subtype=subtype,
|
|
586
|
+
)
|
|
587
|
+
self._all_units.append(self._unsupported[f"{unit_name} ({unit_type})"])
|
|
581
588
|
|
|
582
|
-
|
|
583
|
-
|
|
589
|
+
def _get_unsupported_unit_name(self, unit_type, unit_data):
|
|
590
|
+
# Check if the unit type has associated subtypes
|
|
591
|
+
if units.UNSUPPORTED_UNIT_TYPES[unit_type]["has_subtype"]:
|
|
592
|
+
return unit_data[2][: self._label_len].strip(), True
|
|
593
|
+
return unit_data[1][: self._label_len].strip(), False
|
|
584
594
|
|
|
585
|
-
def _update_dat_struct(self) -> None:
|
|
595
|
+
def _update_dat_struct(self) -> None:
|
|
586
596
|
"""Internal method used to update self._dat_struct which details the overall structure of the dat file as a list of blocks, each of which
|
|
587
597
|
are a dictionary containing the 'start', 'end' and 'type' of the block.
|
|
588
|
-
|
|
589
598
|
"""
|
|
590
|
-
|
|
591
|
-
dat_struct = []
|
|
599
|
+
self._dat_struct = []
|
|
592
600
|
in_block = False
|
|
593
601
|
in_general = True
|
|
594
602
|
in_comment = False
|
|
595
|
-
comment_n = None # Used as counter for number of lines in a comment block
|
|
603
|
+
comment_n: int | None = None # Used as counter for number of lines in a comment block
|
|
596
604
|
gisinfo_block = False
|
|
597
605
|
general_block = {"start": 0, "Type": "GENERAL"}
|
|
598
606
|
unit_block: dict[str, Any] = {}
|
|
607
|
+
|
|
599
608
|
for idx, line in enumerate(self._raw_data):
|
|
600
609
|
# Deal with 'general' header
|
|
601
|
-
if in_general
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
dat_struct.append(general_block)
|
|
605
|
-
in_general = False
|
|
610
|
+
if in_general:
|
|
611
|
+
self._process_general_block(line, idx, general_block)
|
|
612
|
+
in_general = False if line == "END GENERAL" else in_general
|
|
606
613
|
continue
|
|
607
614
|
|
|
608
615
|
# Deal with comment blocks explicitly as they could contain unit keywords
|
|
609
616
|
if in_comment and comment_n is None:
|
|
610
617
|
comment_n = int(line.strip())
|
|
611
618
|
continue
|
|
612
|
-
if in_comment:
|
|
619
|
+
if in_comment and comment_n is not None:
|
|
613
620
|
comment_n -= 1
|
|
614
621
|
if comment_n <= 0:
|
|
615
622
|
unit_block["end"] = idx + comment_n # add ending index
|
|
616
|
-
# append existing
|
|
617
|
-
|
|
618
|
-
unit_block = {} # reset
|
|
623
|
+
# append existing block to the dat_struct
|
|
624
|
+
self._dat_struct.append(unit_block)
|
|
625
|
+
unit_block = {} # reset block
|
|
619
626
|
in_comment = False
|
|
620
627
|
in_block = False
|
|
621
628
|
comment_n = None
|
|
@@ -624,7 +631,6 @@ class DAT(FMFile):
|
|
|
624
631
|
if line == "COMMENT":
|
|
625
632
|
in_comment = True
|
|
626
633
|
unit_block, in_block = self._close_struct_block(
|
|
627
|
-
dat_struct,
|
|
628
634
|
"COMMENT",
|
|
629
635
|
unit_block,
|
|
630
636
|
in_block,
|
|
@@ -635,7 +641,6 @@ class DAT(FMFile):
|
|
|
635
641
|
if line == "GISINFO":
|
|
636
642
|
gisinfo_block = True
|
|
637
643
|
unit_block, in_block = self._close_struct_block(
|
|
638
|
-
dat_struct,
|
|
639
644
|
"GISINFO",
|
|
640
645
|
unit_block,
|
|
641
646
|
in_block,
|
|
@@ -643,33 +648,49 @@ class DAT(FMFile):
|
|
|
643
648
|
)
|
|
644
649
|
|
|
645
650
|
if not gisinfo_block:
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
651
|
+
unit_type = self._identify_unit_type(line)
|
|
652
|
+
if unit_type:
|
|
653
|
+
unit_block, in_block = self._close_struct_block(
|
|
654
|
+
unit_type,
|
|
655
|
+
unit_block,
|
|
656
|
+
in_block,
|
|
657
|
+
idx,
|
|
658
|
+
)
|
|
653
659
|
|
|
654
|
-
|
|
655
|
-
dat_struct,
|
|
656
|
-
unit_type,
|
|
657
|
-
unit_block,
|
|
658
|
-
in_block,
|
|
659
|
-
idx,
|
|
660
|
-
)
|
|
660
|
+
self._finalize_last_block(unit_block)
|
|
661
661
|
|
|
662
|
+
def _process_general_block(
|
|
663
|
+
self,
|
|
664
|
+
line: str,
|
|
665
|
+
idx: int,
|
|
666
|
+
general_block: dict[str, Any],
|
|
667
|
+
) -> None:
|
|
668
|
+
# Deal with 'general' header
|
|
669
|
+
if line == "END GENERAL":
|
|
670
|
+
general_block["end"] = idx
|
|
671
|
+
self._dat_struct.append(general_block)
|
|
672
|
+
|
|
673
|
+
def _identify_unit_type(self, line: str) -> str | None:
|
|
674
|
+
# Check to see whether unit type has associated subtypes so that unit name can be correctly assigned
|
|
675
|
+
if line.split(" ")[0] in units.ALL_UNIT_TYPES:
|
|
676
|
+
# The " " is needed here in case of empty string
|
|
677
|
+
return line.split()[0]
|
|
678
|
+
if " ".join(line.split()[:2]) in units.ALL_UNIT_TYPES:
|
|
679
|
+
return " ".join(line.split()[:2])
|
|
680
|
+
return None
|
|
681
|
+
|
|
682
|
+
def _finalize_last_block(
|
|
683
|
+
self,
|
|
684
|
+
unit_block: dict[str, Any],
|
|
685
|
+
) -> None:
|
|
662
686
|
if len(unit_block) != 0:
|
|
663
687
|
# Only adds end block if there is a block present (i.e. an empty DAT stays empty)
|
|
664
688
|
# add ending index for final block
|
|
665
689
|
unit_block["end"] = len(self._raw_data) - 1
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
self._dat_struct = dat_struct
|
|
690
|
+
self._dat_struct.append(unit_block) # add final block
|
|
669
691
|
|
|
670
|
-
def _close_struct_block(
|
|
692
|
+
def _close_struct_block(
|
|
671
693
|
self,
|
|
672
|
-
dat_struct: list[dict],
|
|
673
694
|
unit_type: str,
|
|
674
695
|
unit_block: dict,
|
|
675
696
|
in_block: bool,
|
|
@@ -679,7 +700,7 @@ class DAT(FMFile):
|
|
|
679
700
|
if in_block is True:
|
|
680
701
|
unit_block["end"] = idx - 1 # add ending index
|
|
681
702
|
# append existing bdy block to the dat_struct
|
|
682
|
-
|
|
703
|
+
self._dat_struct.append(unit_block)
|
|
683
704
|
unit_block = {} # reset bdy block
|
|
684
705
|
in_block = True
|
|
685
706
|
unit_block["Type"] = unit_type # start new bdy block
|
|
@@ -722,7 +743,7 @@ class DAT(FMFile):
|
|
|
722
743
|
self.general_parameters["Node Count"] -= 1
|
|
723
744
|
|
|
724
745
|
@handle_exception(when="insert unit into")
|
|
725
|
-
def insert_unit( # noqa: C901, PLR0912
|
|
746
|
+
def insert_unit( # noqa: C901, PLR0912
|
|
726
747
|
self,
|
|
727
748
|
unit: Unit,
|
|
728
749
|
add_before: Unit | None = None,
|
|
@@ -833,7 +854,7 @@ class DAT(FMFile):
|
|
|
833
854
|
self._update_raw_data()
|
|
834
855
|
self._update_dat_struct()
|
|
835
856
|
|
|
836
|
-
def _update_gisinfo_label(
|
|
857
|
+
def _update_gisinfo_label(
|
|
837
858
|
self,
|
|
838
859
|
unit_type,
|
|
839
860
|
unit_subtype,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Helps to create the class for the hydrology plus"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from .hydrology_plus_export import HydrologyPlusExport
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def load_hydrology_plus_csv_export(file: str | Path) -> HydrologyPlusExport:
|
|
14
|
+
"""
|
|
15
|
+
Loads a CSV containing exported Hydrology+ flow data and returns a HydrologyPlusExport object.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
file (str | Path): The path to the Hydrology+ export CSV file.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
HydrologyPlusExport: An object representing the data from the Hydrology+ export.
|
|
22
|
+
"""
|
|
23
|
+
return HydrologyPlusExport(file)
|