epyt-flow 0.8.1__tar.gz → 0.10.0__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.
Files changed (157) hide show
  1. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/LICENSE +1 -1
  2. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/PKG-INFO +7 -6
  3. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/README.md +3 -3
  4. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/REQUIREMENTS.txt +1 -1
  5. epyt_flow-0.10.0/epyt_flow/VERSION +1 -0
  6. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/__init__.py +1 -0
  7. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/batadal.py +1 -1
  8. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/battledim.py +4 -3
  9. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/gecco_water_quality.py +4 -4
  10. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/leakdb.py +7 -7
  11. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/water_usage.py +2 -2
  12. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/networks.py +1 -1
  13. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/gym/control_gyms.py +2 -2
  14. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/gym/scenario_control_env.py +9 -1
  15. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/metrics.py +28 -28
  16. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/models/sensor_interpolation_detector.py +3 -3
  17. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/base_handler.py +4 -4
  18. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scada_data/data_handlers.py +11 -11
  19. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scada_data/export_handlers.py +2 -2
  20. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scada_data/handlers.py +9 -9
  21. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scenario/event_handlers.py +6 -6
  22. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scenario/handlers.py +15 -15
  23. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scenario/simulation_handlers.py +7 -7
  24. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scenario/uncertainty_handlers.py +6 -6
  25. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/serialization.py +8 -2
  26. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/actuator_events.py +1 -1
  27. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/leakages.py +1 -1
  28. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/quality_events.py +16 -5
  29. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/sensor_reading_attack.py +17 -4
  30. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/sensor_reading_event.py +21 -6
  31. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/system_event.py +1 -1
  32. epyt_flow-0.10.0/epyt_flow/simulation/scada/__init__.py +5 -0
  33. epyt_flow-0.10.0/epyt_flow/simulation/scada/advanced_control.py +138 -0
  34. epyt_flow-0.10.0/epyt_flow/simulation/scada/complex_control.py +625 -0
  35. epyt_flow-0.8.1/epyt_flow/simulation/scada/advanced_control.py → epyt_flow-0.10.0/epyt_flow/simulation/scada/custom_control.py +5 -5
  36. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/scada/scada_data.py +133 -130
  37. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/scada/scada_data_export.py +1 -1
  38. epyt_flow-0.10.0/epyt_flow/simulation/scada/simple_control.py +317 -0
  39. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/scenario_config.py +124 -24
  40. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/scenario_simulator.py +514 -49
  41. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/scenario_visualizer.py +9 -9
  42. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/sensor_config.py +38 -28
  43. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/topology.py +2 -2
  44. epyt_flow-0.10.0/epyt_flow/uncertainty/model_uncertainty.py +792 -0
  45. epyt_flow-0.10.0/epyt_flow/uncertainty/sensor_noise.py +148 -0
  46. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/uncertainty/uncertainties.py +4 -4
  47. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/uncertainty/utils.py +7 -7
  48. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/utils.py +9 -8
  49. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow.egg-info/PKG-INFO +7 -6
  50. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow.egg-info/SOURCES.txt +3 -0
  51. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow.egg-info/requires.txt +1 -1
  52. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow.egg-info/top_level.txt +1 -0
  53. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/pyproject.toml +2 -1
  54. epyt_flow-0.8.1/epyt_flow/VERSION +0 -1
  55. epyt_flow-0.8.1/epyt_flow/simulation/scada/__init__.py +0 -3
  56. epyt_flow-0.8.1/epyt_flow/uncertainty/model_uncertainty.py +0 -315
  57. epyt_flow-0.8.1/epyt_flow/uncertainty/sensor_noise.py +0 -73
  58. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/CITATION.cff +0 -0
  59. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/CODE_OF_CONDUCT.md +0 -0
  60. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/MANIFEST.in +0 -0
  61. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/AUTHORS +0 -0
  62. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/LICENSE +0 -0
  63. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/Readme_SRC_Engines.txt +0 -0
  64. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/enumstxt.h +0 -0
  65. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet.c +0 -0
  66. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet2.c +0 -0
  67. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet2.def +0 -0
  68. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/errors.dat +0 -0
  69. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/funcs.h +0 -0
  70. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/genmmd.c +0 -0
  71. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hash.c +0 -0
  72. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hash.h +0 -0
  73. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydcoeffs.c +0 -0
  74. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydraul.c +0 -0
  75. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydsolver.c +0 -0
  76. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydstatus.c +0 -0
  77. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2.h +0 -0
  78. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_2.h +0 -0
  79. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_enums.h +0 -0
  80. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/inpfile.c +0 -0
  81. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/input1.c +0 -0
  82. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/input2.c +0 -0
  83. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/input3.c +0 -0
  84. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/main.c +0 -0
  85. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/mempool.c +0 -0
  86. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/mempool.h +0 -0
  87. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/output.c +0 -0
  88. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/project.c +0 -0
  89. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/quality.c +0 -0
  90. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/qualreact.c +0 -0
  91. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/qualroute.c +0 -0
  92. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/report.c +0 -0
  93. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/rules.c +0 -0
  94. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/smatrix.c +0 -0
  95. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/text.h +0 -0
  96. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET/SRC_engines/types.h +0 -0
  97. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/MSX_Updates.txt +0 -0
  98. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/dispersion.h +0 -0
  99. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/hash.c +0 -0
  100. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/hash.h +0 -0
  101. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx.h +0 -0
  102. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx_export.h +0 -0
  103. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/mathexpr.c +0 -0
  104. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/mathexpr.h +0 -0
  105. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/mempool.c +0 -0
  106. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/mempool.h +0 -0
  107. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxchem.c +0 -0
  108. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxcompiler.c +0 -0
  109. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxdict.h +0 -0
  110. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxdispersion.c +0 -0
  111. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxerr.c +0 -0
  112. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfile.c +0 -0
  113. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfuncs.c +0 -0
  114. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfuncs.h +0 -0
  115. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxinp.c +0 -0
  116. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxout.c +0 -0
  117. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxproj.c +0 -0
  118. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxqual.c +0 -0
  119. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxrpt.c +0 -0
  120. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtank.c +0 -0
  121. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtoolkit.c +0 -0
  122. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtypes.h +0 -0
  123. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxutils.c +0 -0
  124. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxutils.h +0 -0
  125. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/newton.c +0 -0
  126. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/newton.h +0 -0
  127. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/rk5.c +0 -0
  128. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/rk5.h +0 -0
  129. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/ros2.c +0 -0
  130. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/ros2.h +0 -0
  131. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/smatrix.c +0 -0
  132. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/Src/smatrix.h +0 -0
  133. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/EPANET-MSX/readme.txt +0 -0
  134. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/compile_linux.sh +0 -0
  135. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/EPANET/compile_macos.sh +0 -0
  136. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/__init__.py +0 -0
  137. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/__init__.py +0 -0
  138. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/batadal_data.py +0 -0
  139. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/battledim_data.py +0 -0
  140. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/data/benchmarks/leakdb_data.py +0 -0
  141. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/gym/__init__.py +0 -0
  142. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/models/__init__.py +0 -0
  143. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/models/event_detector.py +0 -0
  144. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/__init__.py +0 -0
  145. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/res_manager.py +0 -0
  146. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scada_data/__init__.py +0 -0
  147. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/scenario/__init__.py +0 -0
  148. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/rest_api/server.py +0 -0
  149. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/__init__.py +0 -0
  150. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/__init__.py +0 -0
  151. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/event.py +0 -0
  152. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/events/sensor_faults.py +0 -0
  153. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/simulation/parallel_simulation.py +1 -1
  154. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow/uncertainty/__init__.py +0 -0
  155. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/epyt_flow.egg-info/dependency_links.txt +0 -0
  156. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/setup.cfg +0 -0
  157. {epyt_flow-0.8.1 → epyt_flow-0.10.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 EPyT-Flow Developers
3
+ Copyright (c) EPyT-Flow Developers
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: epyt-flow
3
- Version: 0.8.1
3
+ Version: 0.10.0
4
4
  Summary: EPyT-Flow -- EPANET Python Toolkit - Flow
5
5
  Author-email: André Artelt <aartelt@techfak.uni-bielefeld.de>, "Marios S. Kyriakou" <kiriakou.marios@ucy.ac.cy>, "Stelios G. Vrachimis" <vrachimis.stelios@ucy.ac.cy>
6
6
  License: MIT License
@@ -17,10 +17,11 @@ Classifier: Programming Language :: Python :: 3.9
17
17
  Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
20
21
  Requires-Python: >=3.9
21
22
  Description-Content-Type: text/markdown
22
23
  License-File: LICENSE
23
- Requires-Dist: epyt>=1.2.0
24
+ Requires-Dist: epyt>=1.2.1
24
25
  Requires-Dist: requests>=2.31.0
25
26
  Requires-Dist: scipy>=1.11.4
26
27
  Requires-Dist: u-msgpack-python>=2.8.0
@@ -66,8 +67,8 @@ Unique features of EPyT-Flow that make it superior to other (Python) toolboxes a
66
67
  - High- and low-level interface
67
68
  - Object-orientated design that is easy to extend and customize
68
69
  - Sensor configurations
69
- - Wide variety of pre-defined events (e.g. leakages, sensor faults, actuator events, cyber-attacks, etc.)
70
- - Wide variety of pre-defined types of uncertainties (e.g. model uncertainties)
70
+ - Wide variety of pre-defined events (e.g. leakages, sensor faults, actuator events, contamination, cyber-attacks, etc.)
71
+ - Wide variety of pre-defined types of global & local uncertainties (e.g. model uncertainties)
71
72
  - Step-wise simulation and environment for training and evaluating control strategies
72
73
  - Serialization module for easy exchange of data and (scenario) configurations
73
74
  - REST API to make EPyT-Flow accessible in other applications
@@ -76,7 +77,7 @@ Unique features of EPyT-Flow that make it superior to other (Python) toolboxes a
76
77
 
77
78
  ## Installation
78
79
 
79
- EPyT-Flow supports Python 3.9 - 3.12
80
+ EPyT-Flow supports Python 3.9 - 3.13
80
81
 
81
82
  Note that [EPANET and EPANET-MSX sources](epyt_flow/EPANET/) are compiled and overwrite the binaries
82
83
  shipped by EPyT **IF** EPyT-Flow is installed on a Unix system and the *gcc* compiler is available.
@@ -29,8 +29,8 @@ Unique features of EPyT-Flow that make it superior to other (Python) toolboxes a
29
29
  - High- and low-level interface
30
30
  - Object-orientated design that is easy to extend and customize
31
31
  - Sensor configurations
32
- - Wide variety of pre-defined events (e.g. leakages, sensor faults, actuator events, cyber-attacks, etc.)
33
- - Wide variety of pre-defined types of uncertainties (e.g. model uncertainties)
32
+ - Wide variety of pre-defined events (e.g. leakages, sensor faults, actuator events, contamination, cyber-attacks, etc.)
33
+ - Wide variety of pre-defined types of global & local uncertainties (e.g. model uncertainties)
34
34
  - Step-wise simulation and environment for training and evaluating control strategies
35
35
  - Serialization module for easy exchange of data and (scenario) configurations
36
36
  - REST API to make EPyT-Flow accessible in other applications
@@ -39,7 +39,7 @@ Unique features of EPyT-Flow that make it superior to other (Python) toolboxes a
39
39
 
40
40
  ## Installation
41
41
 
42
- EPyT-Flow supports Python 3.9 - 3.12
42
+ EPyT-Flow supports Python 3.9 - 3.13
43
43
 
44
44
  Note that [EPANET and EPANET-MSX sources](epyt_flow/EPANET/) are compiled and overwrite the binaries
45
45
  shipped by EPyT **IF** EPyT-Flow is installed on a Unix system and the *gcc* compiler is available.
@@ -1,4 +1,4 @@
1
- epyt>=1.2.0
1
+ epyt>=1.2.1
2
2
  requests>=2.31.0
3
3
  scipy>=1.11.4
4
4
  u-msgpack-python>=2.8.0
@@ -0,0 +1 @@
1
+ 0.10.0
@@ -6,6 +6,7 @@ import os
6
6
 
7
7
  with open(os.path.join(os.path.dirname(__file__), 'VERSION'), encoding="utf-8") as f:
8
8
  VERSION = f.read().strip()
9
+ __version__ = VERSION
9
10
 
10
11
 
11
12
  def compile_libraries_unix(lib_epanet_name: str, compile_script_name: str,
@@ -91,7 +91,7 @@ def load_data(download_dir: str = None, return_X_y: bool = False,
91
91
  `dict`
92
92
  Dictionary of the loaded benchmark data. The dictionary contains the two training
93
93
  data sets ("train_1" and "train_2"), as well as the test data set ("test").
94
- If `return_X_y` is False, each dictionary entry is a Pandas dataframe.
94
+ If `return_X_y` is False, each dictionary entry is a `Pandas dataframe <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_.
95
95
  Otherwise, it is a tuple of sensor readings and labels (except for the test set) --
96
96
  if `return_ground_truth` is True or `return_features_desc` is True, the corresponding
97
97
  data is appended to the tuple.
@@ -286,7 +286,7 @@ def load_data(return_test_scenario: bool, download_dir: str = None, return_X_y:
286
286
 
287
287
  Returns
288
288
  -------
289
- Either a `pandas.DataFrame` instance or a tuple of Numpy arrays.
289
+ Either a `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ instance or a tuple of `Numpy arrays <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_.
290
290
  Benchmark data set.
291
291
  """
292
292
  # Download data files if necessary
@@ -389,8 +389,9 @@ def load_scada_data(return_test_scenario: bool, download_dir: str = None,
389
389
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `list[tuple[numpy.ndarray, numpy.ndarray]]`
390
390
  The simulated benchmark scenario as either a
391
391
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` instance or as a tuple of
392
- (X, y) Numpy arrays. If 'return_leak_locations' is True, the leak locations are included
393
- as an instance of `scipy.sparse.bsr_array` as well.
392
+ (X, y) `Numpy arrays <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_.
393
+ If 'return_leak_locations' is True, the leak locations are included
394
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_ as well.
394
395
  """
395
396
  download_dir = download_dir if download_dir is not None else get_temp_folder()
396
397
 
@@ -31,9 +31,9 @@ def compute_evaluation_score(y_pred: np.ndarray, y: np.ndarray) -> float:
31
31
 
32
32
  Parameters
33
33
  ----------
34
- y_pred : `numpy.ndarray`
34
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
35
35
  Event indication prediction over time
36
- y : `numpy.ndarray`
36
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
37
37
  Ground truth event indication over time.
38
38
 
39
39
  Returns
@@ -85,7 +85,7 @@ def load_gecco2017_water_quality_data(download_dir: str = None, return_X_y: bool
85
85
 
86
86
  Returns
87
87
  -------
88
- `pandas.DataFrame` or `tuple[numpy.ndarray, numpy.ndarray]`
88
+ `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ or `tuple[numpy.ndarray, numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
89
89
  The benchmark data set as either a Pandas data frame or as a pair of (X, y) Numpy arrays.
90
90
  """
91
91
  url_data = "https://zenodo.org/records/3884465/files/1_gecco2017_water_quality.csv?download=1"
@@ -154,7 +154,7 @@ def load_gecco2018_water_quality_data(download_dir: str = None, return_X_y: bool
154
154
 
155
155
  Returns
156
156
  -------
157
- `pandas.DataFrame` or `tuple[numpy.ndarray, numpy.ndarray]`
157
+ `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ or `tuple[numpy.ndarray, numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
158
158
  The benchmark data set as either a Pandas data frame or as a pair of (X, y) Numpy arrays.
159
159
  """
160
160
  # Download data if necessary
@@ -97,7 +97,7 @@ def compute_evaluation_score(scenarios_id: list[int], use_net1: bool,
97
97
  List of scenarios ID that are to be evaluated -- there is a total number of 1000 scenarios.
98
98
  use_net1 : `bool`
99
99
  If True, Net1 LeakDB will be used for evaluation, otherwise the Hanoi LeakDB will be used.
100
- y_pred_labels_per_scenario : `list[numpy.ndarray]`
100
+ y_pred_labels_per_scenario : `list[numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
101
101
  Predicted binary labels (over time) for each scenario in `scenarios_id`.
102
102
 
103
103
  Returns
@@ -201,7 +201,7 @@ def load_data(scenarios_id: list[int], use_net1: bool, download_dir: str = None,
201
201
  The default is False.
202
202
  return_leak_locations : `bool`
203
203
  If True and if `return_X_y` is True, the leak locations are returned as well --
204
- as an instance of `scipy.sparse.bsr_array`.
204
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_.
205
205
 
206
206
  The default is False.
207
207
  verbose : `bool`, optional
@@ -327,7 +327,7 @@ def load_scada_data(scenarios_id: list[int], use_net1: bool = True, download_dir
327
327
  The default is False.
328
328
  return_leak_locations : `bool`
329
329
  If True, the leak locations are returned as well --
330
- as an instance of `scipy.sparse.bsr_array`.
330
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_.
331
331
 
332
332
  The default is False.
333
333
  verbose : `bool`, optional
@@ -341,7 +341,7 @@ def load_scada_data(scenarios_id: list[int], use_net1: bool = True, download_dir
341
341
  The simulated benchmark scenarios as either a list of
342
342
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` instances or as a list of
343
343
  (X, y) Numpy arrays. If 'return_leak_locations' is True, the leak locations are included
344
- as an instance of `scipy.sparse.bsr_array` as well.
344
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_ as well.
345
345
  """
346
346
  download_dir = download_dir if download_dir is not None else get_temp_folder()
347
347
 
@@ -544,9 +544,9 @@ def load_scenarios(scenarios_id: list[int], use_net1: bool = True,
544
544
  upper = data + z
545
545
  return lower + np.random.uniform() * (upper - lower)
546
546
 
547
- my_uncertainties = {"pipe_length_uncertainty": MyUniformUncertainty(low=0, high=0.25),
548
- "pipe_roughness_uncertainty": MyUniformUncertainty(low=0, high=0.25),
549
- "base_demand_uncertainty": MyUniformUncertainty(low=0, high=0.25)}
547
+ my_uncertainties = {"global_pipe_length_uncertainty": MyUniformUncertainty(low=0, high=0.25),
548
+ "global_pipe_roughness_uncertainty": MyUniformUncertainty(low=0, high=0.25),
549
+ "global_base_demand_uncertainty": MyUniformUncertainty(low=0, high=0.25)}
550
550
  model_uncertainty = ModelUncertainty(**my_uncertainties)
551
551
 
552
552
  # Create sensor config (place pressure and flow sensors everywhere)
@@ -22,9 +22,9 @@ def compute_evaluation_score(y_pred: np.ndarray, y: np.ndarray) -> dict:
22
22
 
23
23
  Parameters
24
24
  ----------
25
- y_pred : `numpy.ndarray`
25
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
26
26
  Event indication prediction over time
27
- y : `numpy.ndarray`
27
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
28
28
  Ground truth event indication over time.
29
29
 
30
30
  Returns
@@ -102,7 +102,7 @@ def load_inp(f_in: str, include_empty_sensor_config: bool = True,
102
102
  Scenario configuration for the .inp file.
103
103
  """
104
104
  if not os.path.isfile(f_in):
105
- raise ValueError("Can not find 'f_in'")
105
+ raise ValueError(f"Can not find {f_in}")
106
106
 
107
107
  if include_empty_sensor_config is True:
108
108
  return ScenarioConfig(f_inp_in=f_in, sensor_config=create_empty_sensor_config(f_inp=f_in),
@@ -15,7 +15,7 @@ def register(env_name: str, env: ScenarioControlEnv) -> None:
15
15
  ----------
16
16
  env_name : `str`
17
17
  Name of the environment -- must be unique among all environments.
18
- env : :class:`epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
18
+ env : :class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
19
19
  Environment.
20
20
  """
21
21
  if env_name in environments:
@@ -38,7 +38,7 @@ def make(env_name: str, **kwds) -> ScenarioControlEnv:
38
38
 
39
39
  Returns
40
40
  -------
41
- :class:`epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
41
+ :class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
42
42
  Environment.
43
43
  """
44
44
  if env_name not in environments:
@@ -107,6 +107,14 @@ class ScenarioControlEnv(ABC):
107
107
  Current SCADA data (i.e. sensor readings).
108
108
  """
109
109
  if self._scenario_sim is not None:
110
+ # Abort current simulation if any is runing
111
+ try:
112
+ next(self._sim_generator)
113
+ self._sim_generator.send(True)
114
+ except StopIteration:
115
+ pass
116
+
117
+ # Close scenario
110
118
  self._scenario_sim.close()
111
119
 
112
120
  self._scenario_sim = ScenarioSimulator(
@@ -194,7 +202,7 @@ class ScenarioControlEnv(ABC):
194
202
  if pattern_idx == 0:
195
203
  warnings.warn(f"No pattern for pump '{pump_id}' found -- a new pattern is created")
196
204
  pattern_idx = self._scenario_sim.epanet_api.addPattern(f"pump_speed_{pump_id}")
197
- self._scenario_sim.epanet_api.setLinkPumpPatternIndex(pattern_idx)
205
+ self._scenario_sim.epanet_api.setLinkPumpPatternIndex(pump_idx + 1, pattern_idx)
198
206
 
199
207
  self._scenario_sim.epanet_api.setPattern(pattern_idx, np.array([speed]))
200
208
 
@@ -12,9 +12,9 @@ def r2_score(y_pred: np.ndarray, y: np.ndarray) -> float:
12
12
 
13
13
  Parameters
14
14
  ----------
15
- y_pred : `numpy.ndarray`
15
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
16
16
  Predicted outputs.
17
- y : `numpy.ndarray`
17
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
18
18
  Ground truth outputs.
19
19
 
20
20
  Returns
@@ -31,9 +31,9 @@ def running_r2_score(y_pred: np.ndarray, y: np.ndarray) -> list[float]:
31
31
 
32
32
  Parameters
33
33
  ----------
34
- y_pred : `numpy.ndarray`
34
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
35
35
  Predicted outputs.
36
- y : `numpy.ndarray`
36
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
37
37
  Ground truth outputs.
38
38
 
39
39
  Returns
@@ -55,9 +55,9 @@ def mean_squared_error(y_pred: np.ndarray, y: np.ndarray) -> float:
55
55
 
56
56
  Parameters
57
57
  ----------
58
- y_pred : `numpy.ndarray`
58
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
59
59
  Predicted outputs.
60
- y : `numpy.ndarray`
60
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
61
61
  Ground truth outputs.
62
62
 
63
63
  Returns
@@ -74,9 +74,9 @@ def running_mse(y_pred: np.ndarray, y: np.ndarray) -> list[float]:
74
74
 
75
75
  Parameters
76
76
  ----------
77
- y_pred : `numpy.ndarray`
77
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
78
78
  Predicted outputs.
79
- y : `numpy.ndarray`
79
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
80
80
  Ground truth outputs.
81
81
 
82
82
  Returns
@@ -112,9 +112,9 @@ def mape(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
112
112
 
113
113
  Parameters
114
114
  ----------
115
- y_pred : `numpy.ndarray`
115
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
116
116
  Predicted outputs.
117
- y : `numpy.ndarray`
117
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
118
118
  Ground truth outputs.
119
119
  epsilon : `float`, optional
120
120
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -153,9 +153,9 @@ def smape(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
153
153
 
154
154
  Parameters
155
155
  ----------
156
- y_pred : `numpy.ndarray`
156
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
157
157
  Predicted outputs.
158
- y : `numpy.ndarray`
158
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
159
159
  Ground truth outputs.
160
160
  epsilon : `float`, optional
161
161
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -194,9 +194,9 @@ def mase(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
194
194
 
195
195
  Parameters
196
196
  ----------
197
- y_pred : `numpy.ndarray`
197
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
198
198
  Predicted outputs.
199
- y : `numpy.ndarray`
199
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
200
200
  Ground truth outputs.
201
201
  epsilon : `float`, optional
202
202
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -242,9 +242,9 @@ def f1_micro_score(y_pred: np.ndarray, y: np.ndarray) -> float:
242
242
 
243
243
  Parameters
244
244
  ----------
245
- y_pred : `numpy.ndarray`
245
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
246
246
  Predicted labels.
247
- y : `numpy.ndarray`
247
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
248
248
  Ground truth labels.
249
249
 
250
250
  Returns
@@ -270,9 +270,9 @@ def roc_auc_score(y_pred: np.ndarray, y: np.ndarray) -> float:
270
270
 
271
271
  Parameters
272
272
  ----------
273
- y_pred : `numpy.ndarray`
273
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
274
274
  Predicted labels.
275
- y : `numpy.ndarray`
275
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
276
276
  Ground truth labels.
277
277
 
278
278
  Returns
@@ -298,9 +298,9 @@ def true_positive_rate(y_pred: np.ndarray, y: np.ndarray) -> float:
298
298
 
299
299
  Parameters
300
300
  ----------
301
- y_pred : `numpy.ndarray`
301
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
302
302
  Predicted labels.
303
- y : `numpy.ndarray`
303
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
304
304
  Ground truth labels.
305
305
 
306
306
  Returns
@@ -335,9 +335,9 @@ def true_negative_rate(y_pred: np.ndarray, y: np.ndarray) -> float:
335
335
 
336
336
  Parameters
337
337
  ----------
338
- y_pred : `numpy.ndarray`
338
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
339
339
  Predicted labels.
340
- y : `numpy.ndarray`
340
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
341
341
  Ground truth labels.
342
342
 
343
343
  Returns
@@ -372,9 +372,9 @@ def precision_score(y_pred: np.ndarray, y: np.ndarray) -> float:
372
372
 
373
373
  Parameters
374
374
  ----------
375
- y_pred : `numpy.ndarray`
375
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
376
376
  Predicted labels.
377
- y : `numpy.ndarray`
377
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
378
378
  Ground truth labels.
379
379
 
380
380
  Returns
@@ -405,9 +405,9 @@ def accuracy_score(y_pred: np.ndarray, y: np.ndarray) -> float:
405
405
 
406
406
  Parameters
407
407
  ----------
408
- y_pred : `numpy.ndarray`
408
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
409
409
  Predicted labels.
410
- y : `numpy.ndarray`
410
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
411
411
  Ground truth labels.
412
412
 
413
413
  Returns
@@ -434,9 +434,9 @@ def f1_score(y_pred: np.ndarray, y: np.ndarray) -> float:
434
434
 
435
435
  Parameters
436
436
  ----------
437
- y_pred : `numpy.ndarray`
437
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
438
438
  Predicted labels.
439
- y : `numpy.ndarray`
439
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
440
440
  Ground truth labels.
441
441
 
442
442
  Returns
@@ -20,7 +20,7 @@ class SensorInterpolationDetector(EventDetector):
20
20
  Regressor class that will be used for the sensor interpolation.
21
21
  Must implement the usual `fit` and `predict` functions.
22
22
 
23
- The default is `sklearn.linear_model.LinearRegression`
23
+ The default is `sklearn.linear_model.LinearRegression <https://scikit-learn.org/dev/modules/generated/sklearn.linear_model.LinearRegression.html>`_
24
24
  """
25
25
  def __init__(self, regressor_type: Any = LinearRegression, **kwds):
26
26
  self.__regressor_type = regressor_type
@@ -63,7 +63,7 @@ class SensorInterpolationDetector(EventDetector):
63
63
 
64
64
  Parameters
65
65
  ----------
66
- scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray`
66
+ scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
67
67
  SCADA data to fit this detector.
68
68
  """
69
69
  if isinstance(scada_data, ScadaData):
@@ -93,7 +93,7 @@ class SensorInterpolationDetector(EventDetector):
93
93
 
94
94
  Parameters
95
95
  ----------
96
- scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray`
96
+ scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
97
97
  SCADA data in which to look for events/anomalies.
98
98
 
99
99
  Returns
@@ -17,7 +17,7 @@ class BaseHandler():
17
17
 
18
18
  Parameters
19
19
  ----------
20
- resp : `falcon.Response`
20
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
21
21
  Response instance.
22
22
  error_msg : `str`
23
23
  Error message.
@@ -43,7 +43,7 @@ class BaseHandler():
43
43
 
44
44
  Parameters
45
45
  ----------
46
- resp : `falcon.Response`
46
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
47
47
  Response instance.
48
48
  """
49
49
  resp.status = falcon.HTTP_BAD_REQUEST
@@ -55,7 +55,7 @@ class BaseHandler():
55
55
 
56
56
  Parameters
57
57
  ----------
58
- req : `falcon.Request`
58
+ req : `falcon.Request <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#request>`_
59
59
  Request instance.
60
60
 
61
61
  Returns
@@ -74,7 +74,7 @@ class BaseHandler():
74
74
 
75
75
  Parameters
76
76
  ----------
77
- resp : `falcon.Response`
77
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
78
78
  Response instance.
79
79
  data : `Any`
80
80
  Data to be sent.
@@ -18,7 +18,7 @@ class ScadaDataPressuresHandler(ScadaDataBaseHandler):
18
18
 
19
19
  Parameters
20
20
  ----------
21
- resp : `falcon.Response`
21
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
22
22
  Response instance.
23
23
  data_id : `str`
24
24
  UUID of the SCADA data.
@@ -45,7 +45,7 @@ class ScadaDataFlowsHandler(ScadaDataBaseHandler):
45
45
 
46
46
  Parameters
47
47
  ----------
48
- resp : `falcon.Response`
48
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
49
49
  Response instance.
50
50
  data_id : `str`
51
51
  UUID of the SCADA data.
@@ -72,7 +72,7 @@ class ScadaDataDemandsHandler(ScadaDataBaseHandler):
72
72
 
73
73
  Parameters
74
74
  ----------
75
- resp : `falcon.Response`
75
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
76
76
  Response instance.
77
77
  data_id : `str`
78
78
  UUID of the SCADA data.
@@ -100,7 +100,7 @@ class ScadaDataValveStatesHandler(ScadaDataBaseHandler):
100
100
 
101
101
  Parameters
102
102
  ----------
103
- resp : `falcon.Response`
103
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
104
104
  Response instance.
105
105
  data_id : `str`
106
106
  UUID of the SCADA data.
@@ -128,7 +128,7 @@ class ScadaDataPumpStatesHandler(ScadaDataBaseHandler):
128
128
 
129
129
  Parameters
130
130
  ----------
131
- resp : `falcon.Response`
131
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
132
132
  Response instance.
133
133
  data_id : `str`
134
134
  UUID of the SCADA data.
@@ -156,7 +156,7 @@ class ScadaDataTankVolumesHandler(ScadaDataBaseHandler):
156
156
 
157
157
  Parameters
158
158
  ----------
159
- resp : `falcon.Response`
159
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
160
160
  Response instance.
161
161
  data_id : `str`
162
162
  UUID of the SCADA data.
@@ -184,7 +184,7 @@ class ScadaDataNodesQualityHandler(ScadaDataBaseHandler):
184
184
 
185
185
  Parameters
186
186
  ----------
187
- resp : `falcon.Response`
187
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
188
188
  Response instance.
189
189
  data_id : `str`
190
190
  UUID of the SCADA data.
@@ -212,7 +212,7 @@ class ScadaDataLinksQualityHandler(ScadaDataBaseHandler):
212
212
 
213
213
  Parameters
214
214
  ----------
215
- resp : `falcon.Response`
215
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
216
216
  Response instance.
217
217
  data_id : `str`
218
218
  UUID of the SCADA data.
@@ -240,7 +240,7 @@ class ScadaDataNodeBulkSpeciesHandler(ScadaDataBaseHandler):
240
240
 
241
241
  Parameters
242
242
  ----------
243
- resp : `falcon.Response`
243
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
244
244
  Response instance.
245
245
  data_id : `str`
246
246
  UUID of the SCADA data.
@@ -270,7 +270,7 @@ class ScadaDataLinkBulkSpeciesHandler(ScadaDataBaseHandler):
270
270
 
271
271
  Parameters
272
272
  ----------
273
- resp : `falcon.Response`
273
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
274
274
  Response instance.
275
275
  data_id : `str`
276
276
  UUID of the SCADA data.
@@ -299,7 +299,7 @@ class ScadaDataSurfaceSpeciesHandler(ScadaDataBaseHandler):
299
299
 
300
300
  Parameters
301
301
  ----------
302
- resp : `falcon.Response`
302
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
303
303
  Response instance.
304
304
  data_id : `str`
305
305
  UUID of the SCADA data.
@@ -41,7 +41,7 @@ class ScadaDataBaseExportHandler(ScadaDataBaseHandler):
41
41
 
42
42
  Parameters
43
43
  ----------
44
- resp : `falcon.Response`
44
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
45
45
  Response instance.
46
46
  tmp_file : `str`
47
47
  Path to the temporary file to be send.
@@ -71,7 +71,7 @@ class ScadaDataBaseExportHandler(ScadaDataBaseHandler):
71
71
 
72
72
  Parameters
73
73
  ----------
74
- resp : `falcon.Response`
74
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
75
75
  Response instance.
76
76
  data_id : `str`
77
77
  UUID of the SCADA data.