epyt-flow 0.10.0__py3-none-any.whl → 0.12.0__py3-none-any.whl
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.
- epyt_flow/VERSION +1 -1
- epyt_flow/data/benchmarks/gecco_water_quality.py +2 -2
- epyt_flow/data/benchmarks/leakdb.py +40 -5
- epyt_flow/data/benchmarks/water_usage.py +4 -3
- epyt_flow/data/networks.py +27 -14
- epyt_flow/gym/__init__.py +0 -3
- epyt_flow/gym/scenario_control_env.py +11 -13
- epyt_flow/rest_api/scenario/control_handlers.py +118 -0
- epyt_flow/rest_api/scenario/event_handlers.py +114 -1
- epyt_flow/rest_api/scenario/handlers.py +33 -0
- epyt_flow/rest_api/server.py +14 -2
- epyt_flow/serialization.py +1 -0
- epyt_flow/simulation/__init__.py +0 -1
- epyt_flow/simulation/backend/__init__.py +1 -0
- epyt_flow/simulation/backend/my_epyt.py +1056 -0
- epyt_flow/simulation/events/actuator_events.py +7 -1
- epyt_flow/simulation/events/quality_events.py +3 -1
- epyt_flow/simulation/scada/scada_data.py +716 -5
- epyt_flow/simulation/scenario_config.py +1 -40
- epyt_flow/simulation/scenario_simulator.py +645 -119
- epyt_flow/simulation/sensor_config.py +18 -2
- epyt_flow/topology.py +24 -7
- epyt_flow/uncertainty/model_uncertainty.py +80 -62
- epyt_flow/uncertainty/sensor_noise.py +15 -4
- epyt_flow/uncertainty/uncertainties.py +71 -18
- epyt_flow/uncertainty/utils.py +40 -13
- epyt_flow/utils.py +45 -1
- epyt_flow/visualization/__init__.py +2 -0
- epyt_flow/visualization/scenario_visualizer.py +1240 -0
- epyt_flow/visualization/visualization_utils.py +738 -0
- {epyt_flow-0.10.0.dist-info → epyt_flow-0.12.0.dist-info}/METADATA +15 -4
- {epyt_flow-0.10.0.dist-info → epyt_flow-0.12.0.dist-info}/RECORD +35 -36
- {epyt_flow-0.10.0.dist-info → epyt_flow-0.12.0.dist-info}/WHEEL +1 -1
- epyt_flow/gym/control_gyms.py +0 -47
- epyt_flow/metrics.py +0 -466
- epyt_flow/models/__init__.py +0 -2
- epyt_flow/models/event_detector.py +0 -31
- epyt_flow/models/sensor_interpolation_detector.py +0 -118
- epyt_flow/simulation/scada/advanced_control.py +0 -138
- epyt_flow/simulation/scenario_visualizer.py +0 -1307
- {epyt_flow-0.10.0.dist-info → epyt_flow-0.12.0.dist-info/licenses}/LICENSE +0 -0
- {epyt_flow-0.10.0.dist-info → epyt_flow-0.12.0.dist-info}/top_level.txt +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: epyt-flow
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.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
|
-
License: MIT
|
|
6
|
+
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/WaterFutures/EPyT-Flow
|
|
8
8
|
Project-URL: Documentation, https://epyt-flow.readthedocs.io/en/stable/
|
|
9
9
|
Project-URL: Repository, https://github.com/WaterFutures/EPyT-Flow.git
|
|
@@ -11,7 +11,6 @@ Project-URL: Issues, https://github.com/WaterFutures/EPyT-Flow/issues
|
|
|
11
11
|
Keywords: epanet,water,networks,hydraulics,quality,simulations
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Intended Audience :: Science/Research
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
14
|
Classifier: Programming Language :: Python :: 3
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -35,6 +34,7 @@ Requires-Dist: geopandas>=0.14.4
|
|
|
35
34
|
Requires-Dist: svgpath2mpl>=1.0.0
|
|
36
35
|
Requires-Dist: Deprecated>=1.2.14
|
|
37
36
|
Requires-Dist: psutil
|
|
37
|
+
Dynamic: license-file
|
|
38
38
|
|
|
39
39
|
[](https://pypi.org/project/epyt-flow/)
|
|
40
40
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -184,6 +184,17 @@ Besides that, you can read in-depth about the different functionalities of EPyT-
|
|
|
184
184
|
we recommend reading the chapters in the order in which they are presented;
|
|
185
185
|
you might decide to skip some of the last chapters if their content is not relevant to you.
|
|
186
186
|
|
|
187
|
+
## More Networks and Benchmarks
|
|
188
|
+
|
|
189
|
+
More Water Distribution Networks (WDNs) and benchmarks are available on the
|
|
190
|
+
[WaterBenchmarkHub](https://waterfutures.github.io/WaterBenchmarkHub) platform.
|
|
191
|
+
|
|
192
|
+
## More on Control
|
|
193
|
+
|
|
194
|
+
We recommend checking out [EPyT-Control](https://github.com/WaterFutures/EPyT-Control)
|
|
195
|
+
if you are intersted in (data-driven) control and relates tasks such as state estimation
|
|
196
|
+
and event diagnosis in Water Distribution Networks.
|
|
197
|
+
|
|
187
198
|
## License
|
|
188
199
|
|
|
189
200
|
MIT license -- see [LICENSE](LICENSE)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
epyt_flow/VERSION,sha256=
|
|
1
|
+
epyt_flow/VERSION,sha256=ipMkE9QvlQgvgyNEdlI3mkiF4ygynvyjpn7Jx5PAmUA,7
|
|
2
2
|
epyt_flow/__init__.py,sha256=n-zI5G3DUofs_pNC5YNWopNPCPUtpL-jYi8RPH6eakw,1768
|
|
3
|
-
epyt_flow/
|
|
4
|
-
epyt_flow/
|
|
5
|
-
epyt_flow/
|
|
6
|
-
epyt_flow/utils.py,sha256=FWbmnfBoZOQG5cFkls4aQ4Y67H-PvtrK-wmOXtyc-Cg,15833
|
|
3
|
+
epyt_flow/serialization.py,sha256=uGGN1iZ21ek1u6Xzs4z2xum5Qt8554Wem-wEMGEaa7I,14574
|
|
4
|
+
epyt_flow/topology.py,sha256=Ih6m_tMT1JlPOJv8rHDVBtNayFOarPyAmCbMyojJtQg,26037
|
|
5
|
+
epyt_flow/utils.py,sha256=R_IE6uuTF2MRjUkgWDEa3xOYk8iorieHCqqQ0tDUZ40,17476
|
|
7
6
|
epyt_flow/EPANET/compile_linux.sh,sha256=wcrDyiB8NkivmaC-X9FI2WxhY3IJqDLiyIbVTv2XEPY,489
|
|
8
7
|
epyt_flow/EPANET/compile_macos.sh,sha256=1K33-bPdgr01EIf87YUvmOFHXyOkBWI6mKXQ8x1Hzmo,504
|
|
9
8
|
epyt_flow/EPANET/EPANET/SRC_engines/AUTHORS,sha256=yie5yAsEEPY0984PmkSRUdqEU9rVvRSGGWmjxdwCYMU,925
|
|
@@ -80,64 +79,64 @@ epyt_flow/EPANET/EPANET-MSX/Src/smatrix.h,sha256=heHTNgQNNDTs_Jx0YBts7_B7dPg8VUF
|
|
|
80
79
|
epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx.h,sha256=L9y0VKHk5Fg1JZxID9uBzcvLZWOb1xuQP-MkmHH_LD4,3429
|
|
81
80
|
epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx_export.h,sha256=h5UMaf6pH_0asRJOmhWUGAZhyA180ui2Cz8_y5h1FKw,1054
|
|
82
81
|
epyt_flow/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
epyt_flow/data/networks.py,sha256=
|
|
82
|
+
epyt_flow/data/networks.py,sha256=fZLv3yv_iDS23H-7KNMxNhCvfvrr9WdO7VNR5K3e94U,39842
|
|
84
83
|
epyt_flow/data/benchmarks/__init__.py,sha256=nJ6hqPaPNp8YMizniev3fwOWpzvvNUBMoRF16wACUkE,754
|
|
85
84
|
epyt_flow/data/benchmarks/batadal.py,sha256=E9kl0gI5HyL6LZ9ZoLZwdQBNHXKblWW1QV4E8ucr99s,11247
|
|
86
85
|
epyt_flow/data/benchmarks/batadal_data.py,sha256=oIzcysGivMPAgrfzrk5l8i-j6Ii96DPcFa6sL4TSaw8,880
|
|
87
86
|
epyt_flow/data/benchmarks/battledim.py,sha256=JS8nYZVTAhNhhUber_m3_rK-_J94Jqx9B-0DHBc_NfA,20756
|
|
88
87
|
epyt_flow/data/benchmarks/battledim_data.py,sha256=0vHm-2eAiLv6U-n5dqUUWS1o_szFRy9mVJ3eqDRp4PE,3373
|
|
89
|
-
epyt_flow/data/benchmarks/gecco_water_quality.py,sha256=
|
|
90
|
-
epyt_flow/data/benchmarks/leakdb.py,sha256=
|
|
88
|
+
epyt_flow/data/benchmarks/gecco_water_quality.py,sha256=xYN-xrcx409IhTJjvaMbZABORru3XQNnble76aAOKQ8,11414
|
|
89
|
+
epyt_flow/data/benchmarks/leakdb.py,sha256=IEP6-bx9il65kX5mlGK1M9cevQPvAwLaDxg9YaX9qVg,26690
|
|
91
90
|
epyt_flow/data/benchmarks/leakdb_data.py,sha256=FNssgMkC1wqWVlaOrrihr4Od9trEZY7KeK5KuBeRMvM,507058
|
|
92
|
-
epyt_flow/data/benchmarks/water_usage.py,sha256=
|
|
93
|
-
epyt_flow/gym/__init__.py,sha256=
|
|
94
|
-
epyt_flow/gym/
|
|
95
|
-
epyt_flow/gym/scenario_control_env.py,sha256=vjgyuMev4O2bw7U806nIpaDN1s6UlFHQ24JocvZybx4,12610
|
|
96
|
-
epyt_flow/models/__init__.py,sha256=be5s08y1Tg66SuNYKGz5GnNMHThnQJo8SWJdT9493Kc,75
|
|
97
|
-
epyt_flow/models/event_detector.py,sha256=idR7byBgloo07XEJEyMIwi49VW4wxJErLQtI-tJXWPs,789
|
|
98
|
-
epyt_flow/models/sensor_interpolation_detector.py,sha256=WNuaiS_sUBvMAkHifpCIvx1gz2NEMQeT7kgLsVmXYCQ,3859
|
|
91
|
+
epyt_flow/data/benchmarks/water_usage.py,sha256=RiLGLof1HT0luwn7_dG11_nP5U5r9B3L8vDLuwsIKTM,4962
|
|
92
|
+
epyt_flow/gym/__init__.py,sha256=gDIP9VGjKraajsJo6MnPN-TaEUTLnnJNj2c_7jrb8Bg,36
|
|
93
|
+
epyt_flow/gym/scenario_control_env.py,sha256=-sydXb7x6765dfZyqpThXF9BnIVcMLyzshMlbpXuZng,12618
|
|
99
94
|
epyt_flow/rest_api/__init__.py,sha256=4HilmXhdh6H56UHJBB2WUSULlEBUDnI1FPTP11ft3HE,126
|
|
100
95
|
epyt_flow/rest_api/base_handler.py,sha256=HDLXrMXqgWvxWAsB-3G4plyTyCv27_eBbq4eRl_FeBo,2609
|
|
101
96
|
epyt_flow/rest_api/res_manager.py,sha256=j6-3FUBZNLKM9bCsIDZzSytfDYJbDLRwjn1mIPstTqI,2342
|
|
102
|
-
epyt_flow/rest_api/server.py,sha256=
|
|
97
|
+
epyt_flow/rest_api/server.py,sha256=cPQM17rdbXLFlPRePb0Y7OcCyfJUN9SX7cv0etHtfvo,8727
|
|
103
98
|
epyt_flow/rest_api/scada_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
99
|
epyt_flow/rest_api/scada_data/data_handlers.py,sha256=VGw3uakxhFgqLMYRC5OaAuCbp0SnGxdPXWruUVEBiJc,11895
|
|
105
100
|
epyt_flow/rest_api/scada_data/export_handlers.py,sha256=W-T2WgPuG8cNVzA8h3e0lwi-nSKFi11PPyuNQWTMwzg,4624
|
|
106
101
|
epyt_flow/rest_api/scada_data/handlers.py,sha256=jcGw91TjjhRQm_hJvjbWvSTBLpvMJDOA4bQw5iOpSUw,7673
|
|
107
102
|
epyt_flow/rest_api/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
|
-
epyt_flow/rest_api/scenario/
|
|
109
|
-
epyt_flow/rest_api/scenario/
|
|
103
|
+
epyt_flow/rest_api/scenario/control_handlers.py,sha256=ouxc54V_yJyoO2yPJEJqcPbZs7CXgM_CWKGj5RvkABQ,4585
|
|
104
|
+
epyt_flow/rest_api/scenario/event_handlers.py,sha256=wgKWFHJPwF4celetSb-_jTlrcicoxDbC7GpZ9uw-BJY,8969
|
|
105
|
+
epyt_flow/rest_api/scenario/handlers.py,sha256=v1V6gsBh2HLtPTnl9_53W13Awo5YjG681Urp24yXelY,14993
|
|
110
106
|
epyt_flow/rest_api/scenario/simulation_handlers.py,sha256=A59Iv-6k7SlGF_RDQgoFlvHWM1mScvfCobXBW4Rhh6E,6511
|
|
111
107
|
epyt_flow/rest_api/scenario/uncertainty_handlers.py,sha256=Pdo2YmiawOqKXWcLs2P-lv5qN-OKHS3sDgkAFQeRzK8,4568
|
|
112
|
-
epyt_flow/simulation/__init__.py,sha256=
|
|
108
|
+
epyt_flow/simulation/__init__.py,sha256=nihvZ8O2rJjYQkv7JhtVMqNacO5bA38VtS8Y_0BWrVQ,129
|
|
113
109
|
epyt_flow/simulation/parallel_simulation.py,sha256=ph4KXw9jCt-hiJFJbmC6fNvEsrbQoWV-tFKE5-qSfoQ,6523
|
|
114
|
-
epyt_flow/simulation/scenario_config.py,sha256=
|
|
115
|
-
epyt_flow/simulation/scenario_simulator.py,sha256=
|
|
116
|
-
epyt_flow/simulation/
|
|
117
|
-
epyt_flow/simulation/
|
|
110
|
+
epyt_flow/simulation/scenario_config.py,sha256=uHHwwzCRwooVdODxDNoCOUgfrlol1K-TS8P8_Ja9Coc,30435
|
|
111
|
+
epyt_flow/simulation/scenario_simulator.py,sha256=qdGGrHGytbSOLtzM8KSOfOyJQ6fbx84R2JF-YEWCAu8,160443
|
|
112
|
+
epyt_flow/simulation/sensor_config.py,sha256=AGAIC5vqcu2UZsglSCwv2pvZ3E0kbTtdaqtFPEMBwSw,94262
|
|
113
|
+
epyt_flow/simulation/backend/__init__.py,sha256=tkJb2NB_hruTv39sYHAq9ffazyA-UzZzFmiy2nYVTqA,23
|
|
114
|
+
epyt_flow/simulation/backend/my_epyt.py,sha256=edkhDDOZBtYSpaQmnui_opdetebaS9ZzBwngnIpkc3s,32040
|
|
118
115
|
epyt_flow/simulation/events/__init__.py,sha256=gv8ZcvwjJN0Z5MwRXEOVFRNq4X5NPyyqXIQnhBxszQ0,215
|
|
119
|
-
epyt_flow/simulation/events/actuator_events.py,sha256=
|
|
116
|
+
epyt_flow/simulation/events/actuator_events.py,sha256=gNOIZL9WNiIhEANi8yEyGxKx4vSMBZiRpiSJ4BbDL60,8171
|
|
120
117
|
epyt_flow/simulation/events/event.py,sha256=kARPV20XCAl6zxnJwI9U7ICtZUPACO_rgAmtHm1mGCs,2603
|
|
121
118
|
epyt_flow/simulation/events/leakages.py,sha256=pFSbOiKeGeHPZhLAgo2DFFI1QYImd7m167lMW6B-n-U,17838
|
|
122
|
-
epyt_flow/simulation/events/quality_events.py,sha256=
|
|
119
|
+
epyt_flow/simulation/events/quality_events.py,sha256=b0tClag6ln0eJtEfJ-HTvkD5nn7bjmyS-x_b1bfeqGQ,8053
|
|
123
120
|
epyt_flow/simulation/events/sensor_faults.py,sha256=XX6k-GJh9RWZ4x54eGj9um-Ir9Eq41tY_9pRSCeYeqc,8447
|
|
124
121
|
epyt_flow/simulation/events/sensor_reading_attack.py,sha256=2E8q6yWnLxeLgYxW0MHw0GSjlUDjIIZ2GybVRLA7FJQ,7967
|
|
125
122
|
epyt_flow/simulation/events/sensor_reading_event.py,sha256=OWMRWPsvgMgaynMayJ-hQotP9zV5sDIYrOfY0fOCuvc,7586
|
|
126
123
|
epyt_flow/simulation/events/system_event.py,sha256=IGypfTL-miosmwKd4DGTYvByyBcl8__0Asiifw-SzUQ,2606
|
|
127
124
|
epyt_flow/simulation/scada/__init__.py,sha256=pfJhg-tM5DaiZTXs0_1qJsY2R6Py_LwSz6BUFJexfQM,150
|
|
128
|
-
epyt_flow/simulation/scada/advanced_control.py,sha256=t0dlEHsnUE0T-du2_5YBYUzMW4a3-Qxw0tT_e9Z9g8Y,4883
|
|
129
125
|
epyt_flow/simulation/scada/complex_control.py,sha256=p2ehLyScJbj2jbyevXf7T3Ot8jnBYWgRR3Cz-m3boB0,22107
|
|
130
126
|
epyt_flow/simulation/scada/custom_control.py,sha256=QzkKcn7t53GcTaRofRDbY-HErcDReMF4utWkck6bN60,4681
|
|
131
|
-
epyt_flow/simulation/scada/scada_data.py,sha256=
|
|
127
|
+
epyt_flow/simulation/scada/scada_data.py,sha256=vzhTUoUIdmqTj9rP2w00q1dAaT90rY5vY2S6Sgo04jg,203434
|
|
132
128
|
epyt_flow/simulation/scada/scada_data_export.py,sha256=WNAFn_WNfzYAEFbl2Al-cOIx-A0ozY4AI60-i_qEHdc,11643
|
|
133
129
|
epyt_flow/simulation/scada/simple_control.py,sha256=wUsxsrgqmYxXR93_atcKbV9E-t3hgqj60ZeTvoBBnoQ,12215
|
|
134
130
|
epyt_flow/uncertainty/__init__.py,sha256=ZRjuJL9rDpWVSdPwObPxFpEmMTcgAl3VmPOsS6cIyGg,89
|
|
135
|
-
epyt_flow/uncertainty/model_uncertainty.py,sha256=
|
|
136
|
-
epyt_flow/uncertainty/sensor_noise.py,sha256
|
|
137
|
-
epyt_flow/uncertainty/uncertainties.py,sha256=
|
|
138
|
-
epyt_flow/uncertainty/utils.py,sha256=
|
|
139
|
-
epyt_flow
|
|
140
|
-
epyt_flow
|
|
141
|
-
epyt_flow
|
|
142
|
-
epyt_flow-0.
|
|
143
|
-
epyt_flow-0.
|
|
131
|
+
epyt_flow/uncertainty/model_uncertainty.py,sha256=Bfc9OgecJbX2qOiANhTSKdK_m95aRuXkIGyc22b8d30,41183
|
|
132
|
+
epyt_flow/uncertainty/sensor_noise.py,sha256=AYtc6YOfzIfBq3zTBWT5s_A4EFthqfLcpXwJZZO0wIY,6789
|
|
133
|
+
epyt_flow/uncertainty/uncertainties.py,sha256=5bZu1Zx8RZ6ESzJSvjtPogNkft3eemTojRsYdi_i1Qo,20495
|
|
134
|
+
epyt_flow/uncertainty/utils.py,sha256=K-ZhyO6Bg7UmNPgpfND0JLa_wRwyrtUUgGTWyWwy-fo,8029
|
|
135
|
+
epyt_flow/visualization/__init__.py,sha256=uQ7lO6AsgLc88X48Te3QhBQY-iDKGvdPtxKCl4b-Mfw,70
|
|
136
|
+
epyt_flow/visualization/scenario_visualizer.py,sha256=vkP0J_OfjvePUz_HehXJkH4CGKR3chAHe_UTx4hQ6XI,57860
|
|
137
|
+
epyt_flow/visualization/visualization_utils.py,sha256=l-EQ9UlY9MDBcOhK-uUZ9c-tX9emVqlo4xSqR-Sg17M,27525
|
|
138
|
+
epyt_flow-0.12.0.dist-info/licenses/LICENSE,sha256=YRJC2kcAhMlpEeHwUF0lzE-GRXLFyAjXNErI8L5UwYk,1071
|
|
139
|
+
epyt_flow-0.12.0.dist-info/METADATA,sha256=UDnqvbPrbiLm6Ni2ywj80vXIKx3MWBCeFIJ-c4cKW18,9713
|
|
140
|
+
epyt_flow-0.12.0.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
|
|
141
|
+
epyt_flow-0.12.0.dist-info/top_level.txt,sha256=Wh_kd7TRL8ownCw3Y3dxx-9C0iTSk6wNauv_NX9JcrY,10
|
|
142
|
+
epyt_flow-0.12.0.dist-info/RECORD,,
|
epyt_flow/gym/control_gyms.py
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Module provides functions for registering and creating control environments.
|
|
3
|
-
"""
|
|
4
|
-
from .scenario_control_env import ScenarioControlEnv
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
environments = {}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def register(env_name: str, env: ScenarioControlEnv) -> None:
|
|
11
|
-
"""
|
|
12
|
-
Registers a new environment under a given name.
|
|
13
|
-
|
|
14
|
-
Parameters
|
|
15
|
-
----------
|
|
16
|
-
env_name : `str`
|
|
17
|
-
Name of the environment -- must be unique among all environments.
|
|
18
|
-
env : :class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
|
|
19
|
-
Environment.
|
|
20
|
-
"""
|
|
21
|
-
if env_name in environments:
|
|
22
|
-
raise ValueError(f"Environment '{env_name}' already exists.")
|
|
23
|
-
if not issubclass(env, ScenarioControlEnv):
|
|
24
|
-
raise TypeError("'env' must be a subclass of " +
|
|
25
|
-
"'epyt_flow.gym.ScenarioControlEnv'")
|
|
26
|
-
|
|
27
|
-
environments[env_name] = env
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def make(env_name: str, **kwds) -> ScenarioControlEnv:
|
|
31
|
-
"""
|
|
32
|
-
Creates an instance of a registered environment.
|
|
33
|
-
|
|
34
|
-
Parameters
|
|
35
|
-
----------
|
|
36
|
-
env_name : `str`
|
|
37
|
-
Name of the environment.
|
|
38
|
-
|
|
39
|
-
Returns
|
|
40
|
-
-------
|
|
41
|
-
:class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
|
|
42
|
-
Environment.
|
|
43
|
-
"""
|
|
44
|
-
if env_name not in environments:
|
|
45
|
-
raise ValueError(f"Unknown environment '{env_name}'.")
|
|
46
|
-
|
|
47
|
-
return environments[env_name](**kwds)
|