foxes 1.2.1__tar.gz → 1.2.2__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.

Potentially problematic release.


This version of foxes might be problematic. Click here for more details.

Files changed (317) hide show
  1. {foxes-1.2.1/foxes.egg-info → foxes-1.2.2}/PKG-INFO +1 -1
  2. foxes-1.2.2/foxes/input/yaml/__init__.py +3 -0
  3. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/dict.py +191 -95
  4. {foxes-1.2.1 → foxes-1.2.2/foxes.egg-info}/PKG-INFO +1 -1
  5. {foxes-1.2.1 → foxes-1.2.2}/pyproject.toml +1 -1
  6. foxes-1.2.1/foxes/input/yaml/__init__.py +0 -3
  7. {foxes-1.2.1 → foxes-1.2.2}/LICENSE +0 -0
  8. {foxes-1.2.1 → foxes-1.2.2}/Logo_FOXES.svg +0 -0
  9. {foxes-1.2.1 → foxes-1.2.2}/MANIFEST.in +0 -0
  10. {foxes-1.2.1 → foxes-1.2.2}/README.md +0 -0
  11. {foxes-1.2.1 → foxes-1.2.2}/docs/source/conf.py +0 -0
  12. {foxes-1.2.1 → foxes-1.2.2}/examples/abl_states/run.py +0 -0
  13. {foxes-1.2.1 → foxes-1.2.2}/examples/compare_rotors_pwakes/run.py +0 -0
  14. {foxes-1.2.1 → foxes-1.2.2}/examples/compare_wakes/run.py +0 -0
  15. {foxes-1.2.1 → foxes-1.2.2}/examples/dyn_wakes/run.py +0 -0
  16. {foxes-1.2.1 → foxes-1.2.2}/examples/field_data_nc/run.py +0 -0
  17. {foxes-1.2.1 → foxes-1.2.2}/examples/induction/run.py +0 -0
  18. {foxes-1.2.1 → foxes-1.2.2}/examples/multi_height/run.py +0 -0
  19. {foxes-1.2.1 → foxes-1.2.2}/examples/power_mask/run.py +0 -0
  20. {foxes-1.2.1 → foxes-1.2.2}/examples/random_timeseries/run.py +0 -0
  21. {foxes-1.2.1 → foxes-1.2.2}/examples/scan_row/run.py +0 -0
  22. {foxes-1.2.1 → foxes-1.2.2}/examples/sector_management/run.py +0 -0
  23. {foxes-1.2.1 → foxes-1.2.2}/examples/sequential/run.py +0 -0
  24. {foxes-1.2.1 → foxes-1.2.2}/examples/single_state/run.py +0 -0
  25. {foxes-1.2.1 → foxes-1.2.2}/examples/states_lookup_table/run.py +0 -0
  26. {foxes-1.2.1 → foxes-1.2.2}/examples/streamline_wakes/run.py +0 -0
  27. {foxes-1.2.1 → foxes-1.2.2}/examples/tab_file/run.py +0 -0
  28. {foxes-1.2.1 → foxes-1.2.2}/examples/timelines/run.py +0 -0
  29. {foxes-1.2.1 → foxes-1.2.2}/examples/timeseries/run.py +0 -0
  30. {foxes-1.2.1 → foxes-1.2.2}/examples/timeseries_slurm/run.py +0 -0
  31. {foxes-1.2.1 → foxes-1.2.2}/examples/wind_rose/run.py +0 -0
  32. {foxes-1.2.1 → foxes-1.2.2}/examples/yawed_wake/run.py +0 -0
  33. {foxes-1.2.1 → foxes-1.2.2}/foxes/__init__.py +0 -0
  34. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/__init__.py +0 -0
  35. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/__init__.py +0 -0
  36. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/downwind.py +0 -0
  37. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/__init__.py +0 -0
  38. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/farm_wakes_calc.py +0 -0
  39. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/init_farm_data.py +0 -0
  40. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/point_wakes_calc.py +0 -0
  41. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/reorder_farm_output.py +0 -0
  42. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/set_amb_farm_results.py +0 -0
  43. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/downwind/models/set_amb_point_results.py +0 -0
  44. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/__init__.py +0 -0
  45. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/iterative.py +0 -0
  46. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/models/__init__.py +0 -0
  47. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/models/convergence.py +0 -0
  48. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/models/farm_wakes_calc.py +0 -0
  49. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/iterative/models/urelax.py +0 -0
  50. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/sequential/__init__.py +0 -0
  51. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/sequential/models/__init__.py +0 -0
  52. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/sequential/models/plugin.py +0 -0
  53. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/sequential/models/seq_state.py +0 -0
  54. {foxes-1.2.1 → foxes-1.2.2}/foxes/algorithms/sequential/sequential.py +0 -0
  55. {foxes-1.2.1 → foxes-1.2.2}/foxes/config/__init__.py +0 -0
  56. {foxes-1.2.1 → foxes-1.2.2}/foxes/config/config.py +0 -0
  57. {foxes-1.2.1 → foxes-1.2.2}/foxes/constants.py +0 -0
  58. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/__init__.py +0 -0
  59. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/algorithm.py +0 -0
  60. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/axial_induction_model.py +0 -0
  61. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/data.py +0 -0
  62. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/data_calc_model.py +0 -0
  63. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/engine.py +0 -0
  64. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/farm_controller.py +0 -0
  65. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/farm_data_model.py +0 -0
  66. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/farm_model.py +0 -0
  67. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/ground_model.py +0 -0
  68. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/model.py +0 -0
  69. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/partial_wakes_model.py +0 -0
  70. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/point_data_model.py +0 -0
  71. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/rotor_model.py +0 -0
  72. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/states.py +0 -0
  73. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/turbine.py +0 -0
  74. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/turbine_model.py +0 -0
  75. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/turbine_type.py +0 -0
  76. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/vertical_profile.py +0 -0
  77. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/wake_frame.py +0 -0
  78. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/wake_model.py +0 -0
  79. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/wake_superposition.py +0 -0
  80. {foxes-1.2.1 → foxes-1.2.2}/foxes/core/wind_farm.py +0 -0
  81. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/__init__.py +0 -0
  82. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/farms/__init__.py +0 -0
  83. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/farms/test_farm_67.csv +0 -0
  84. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/parse.py +0 -0
  85. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv +0 -0
  86. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv +0 -0
  87. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv +0 -0
  88. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv +0 -0
  89. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/power_ct_curves/__init__.py +0 -0
  90. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/WRF-Timeseries-3000.nc +0 -0
  91. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/WRF-Timeseries-4464.csv.gz +0 -0
  92. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/__init__.py +0 -0
  93. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/abl_states_6000.csv.gz +0 -0
  94. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/timeseries_100.csv.gz +0 -0
  95. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/timeseries_3000.csv.gz +0 -0
  96. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/timeseries_8000.csv.gz +0 -0
  97. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/wind_rose_bremen.csv +0 -0
  98. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/wind_rotation.nc +0 -0
  99. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/states/winds100.tab +0 -0
  100. {foxes-1.2.1 → foxes-1.2.2}/foxes/data/static_data.py +0 -0
  101. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/__init__.py +0 -0
  102. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/dask.py +0 -0
  103. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/default.py +0 -0
  104. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/futures.py +0 -0
  105. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/mpi.py +0 -0
  106. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/multiprocess.py +0 -0
  107. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/numpy.py +0 -0
  108. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/pool.py +0 -0
  109. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/ray.py +0 -0
  110. {foxes-1.2.1 → foxes-1.2.2}/foxes/engines/single.py +0 -0
  111. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/__init__.py +0 -0
  112. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/__init__.py +0 -0
  113. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/from_csv.py +0 -0
  114. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/from_df.py +0 -0
  115. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/from_file.py +0 -0
  116. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/from_json.py +0 -0
  117. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/from_random.py +0 -0
  118. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/grid.py +0 -0
  119. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/ring.py +0 -0
  120. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/farm_layout/row.py +0 -0
  121. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/__init__.py +0 -0
  122. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/create/__init__.py +0 -0
  123. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/create/random_abl_states.py +0 -0
  124. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/create/random_timeseries.py +0 -0
  125. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/field_data_nc.py +0 -0
  126. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/multi_height.py +0 -0
  127. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/one_point_flow.py +0 -0
  128. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/scan.py +0 -0
  129. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/single.py +0 -0
  130. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/slice_data_nc.py +0 -0
  131. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/states/states_table.py +0 -0
  132. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/__init__.py +0 -0
  133. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/get_states.py +0 -0
  134. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/read_attributes.py +0 -0
  135. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/read_farm.py +0 -0
  136. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/read_fields.py +0 -0
  137. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/read_outputs.py +0 -0
  138. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/windio/windio.py +0 -0
  139. {foxes-1.2.1 → foxes-1.2.2}/foxes/input/yaml/yaml.py +0 -0
  140. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/__init__.py +0 -0
  141. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/axial_induction/__init__.py +0 -0
  142. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/axial_induction/betz.py +0 -0
  143. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/axial_induction/madsen.py +0 -0
  144. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/farm_controllers/__init__.py +0 -0
  145. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/farm_controllers/basic.py +0 -0
  146. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/farm_models/__init__.py +0 -0
  147. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/farm_models/turbine2farm.py +0 -0
  148. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/ground_models/__init__.py +0 -0
  149. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/ground_models/no_ground.py +0 -0
  150. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/ground_models/wake_mirror.py +0 -0
  151. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/model_book.py +0 -0
  152. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/__init__.py +0 -0
  153. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/axiwake.py +0 -0
  154. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/centre.py +0 -0
  155. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/grid.py +0 -0
  156. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/rotor_points.py +0 -0
  157. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/segregated.py +0 -0
  158. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/partial_wakes/top_hat.py +0 -0
  159. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/point_models/__init__.py +0 -0
  160. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/point_models/set_uniform_data.py +0 -0
  161. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/point_models/tke2ti.py +0 -0
  162. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/point_models/wake_deltas.py +0 -0
  163. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/rotor_models/__init__.py +0 -0
  164. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/rotor_models/centre.py +0 -0
  165. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/rotor_models/grid.py +0 -0
  166. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/rotor_models/levels.py +0 -0
  167. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/__init__.py +0 -0
  168. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/calculator.py +0 -0
  169. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/kTI_model.py +0 -0
  170. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/lookup_table.py +0 -0
  171. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/power_mask.py +0 -0
  172. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/rotor_centre_calc.py +0 -0
  173. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/sector_management.py +0 -0
  174. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/set_farm_vars.py +0 -0
  175. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/table_factors.py +0 -0
  176. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/thrust2ct.py +0 -0
  177. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/yaw2yawm.py +0 -0
  178. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_models/yawm2yaw.py +0 -0
  179. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/CpCt_file.py +0 -0
  180. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/CpCt_from_two.py +0 -0
  181. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/PCt_file.py +0 -0
  182. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/PCt_from_two.py +0 -0
  183. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/TBL_file.py +0 -0
  184. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/__init__.py +0 -0
  185. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/lookup.py +0 -0
  186. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/null_type.py +0 -0
  187. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/wsrho2PCt_from_two.py +0 -0
  188. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/turbine_types/wsti2PCt_from_two.py +0 -0
  189. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/__init__.py +0 -0
  190. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/abl_log_neutral_ws.py +0 -0
  191. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/abl_log_stable_ws.py +0 -0
  192. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/abl_log_unstable_ws.py +0 -0
  193. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/abl_log_ws.py +0 -0
  194. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/data_profile.py +0 -0
  195. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/sheared_ws.py +0 -0
  196. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/vertical_profiles/uniform.py +0 -0
  197. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/__init__.py +0 -0
  198. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/dynamic_wakes.py +0 -0
  199. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/farm_order.py +0 -0
  200. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/rotor_wd.py +0 -0
  201. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/seq_dynamic_wakes.py +0 -0
  202. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/streamlines.py +0 -0
  203. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/timelines.py +0 -0
  204. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_frames/yawed_wakes.py +0 -0
  205. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/__init__.py +0 -0
  206. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/axisymmetric.py +0 -0
  207. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/dist_sliced.py +0 -0
  208. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/gaussian.py +0 -0
  209. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/__init__.py +0 -0
  210. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/rankine_half_body.py +0 -0
  211. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/rathmann.py +0 -0
  212. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/self_similar.py +0 -0
  213. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/self_similar2020.py +0 -0
  214. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/induction/vortex_sheet.py +0 -0
  215. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/ti/__init__.py +0 -0
  216. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/ti/crespo_hernandez.py +0 -0
  217. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/ti/iec_ti.py +0 -0
  218. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/top_hat.py +0 -0
  219. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/wind/__init__.py +0 -0
  220. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/wind/bastankhah14.py +0 -0
  221. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/wind/bastankhah16.py +0 -0
  222. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/wind/jensen.py +0 -0
  223. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_models/wind/turbopark.py +0 -0
  224. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/__init__.py +0 -0
  225. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ti_linear.py +0 -0
  226. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ti_max.py +0 -0
  227. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ti_pow.py +0 -0
  228. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ti_quadratic.py +0 -0
  229. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ws_linear.py +0 -0
  230. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ws_max.py +0 -0
  231. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ws_pow.py +0 -0
  232. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ws_product.py +0 -0
  233. {foxes-1.2.1 → foxes-1.2.2}/foxes/models/wake_superpositions/ws_quadratic.py +0 -0
  234. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/__init__.py +0 -0
  235. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/animation.py +0 -0
  236. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/calc_points.py +0 -0
  237. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/farm_layout.py +0 -0
  238. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/farm_results_eval.py +0 -0
  239. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/flow_plots_2d/__init__.py +0 -0
  240. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/flow_plots_2d/flow_plots.py +0 -0
  241. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/flow_plots_2d/get_fig.py +0 -0
  242. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/grids.py +0 -0
  243. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/output.py +0 -0
  244. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/plt.py +0 -0
  245. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/results_writer.py +0 -0
  246. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/rose_plot.py +0 -0
  247. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/rotor_point_plots.py +0 -0
  248. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/round.py +0 -0
  249. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/seq_plugins/__init__.py +0 -0
  250. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/seq_plugins/seq_flow_ani_plugin.py +0 -0
  251. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/seq_plugins/seq_wake_debug_plugin.py +0 -0
  252. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/slice_data.py +0 -0
  253. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/state_turbine_map.py +0 -0
  254. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/state_turbine_table.py +0 -0
  255. {foxes-1.2.1 → foxes-1.2.2}/foxes/output/turbine_type_curves.py +0 -0
  256. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/__init__.py +0 -0
  257. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/abl/__init__.py +0 -0
  258. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/abl/neutral.py +0 -0
  259. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/abl/sheared.py +0 -0
  260. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/abl/stable.py +0 -0
  261. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/abl/unstable.py +0 -0
  262. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/cubic_roots.py +0 -0
  263. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/data_book.py +0 -0
  264. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/dev_utils.py +0 -0
  265. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/dict.py +0 -0
  266. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/exec_python.py +0 -0
  267. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/factory.py +0 -0
  268. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/__init__.py +0 -0
  269. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/area_geometry.py +0 -0
  270. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/circle.py +0 -0
  271. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/example_intersection.py +0 -0
  272. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/example_union.py +0 -0
  273. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/half_plane.py +0 -0
  274. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geom2d/polygon.py +0 -0
  275. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/geopandas_utils.py +0 -0
  276. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/load.py +0 -0
  277. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/pandas_helpers.py +0 -0
  278. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/pandas_utils.py +0 -0
  279. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/random_xy.py +0 -0
  280. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/regularize.py +0 -0
  281. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/subclasses.py +0 -0
  282. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/tab_files.py +0 -0
  283. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/two_circles.py +0 -0
  284. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/wind_dir.py +0 -0
  285. {foxes-1.2.1 → foxes-1.2.2}/foxes/utils/xarray_utils.py +0 -0
  286. {foxes-1.2.1 → foxes-1.2.2}/foxes/variables.py +0 -0
  287. {foxes-1.2.1 → foxes-1.2.2}/foxes.egg-info/SOURCES.txt +0 -0
  288. {foxes-1.2.1 → foxes-1.2.2}/foxes.egg-info/dependency_links.txt +0 -0
  289. {foxes-1.2.1 → foxes-1.2.2}/foxes.egg-info/entry_points.txt +0 -0
  290. {foxes-1.2.1 → foxes-1.2.2}/foxes.egg-info/requires.txt +0 -0
  291. {foxes-1.2.1 → foxes-1.2.2}/foxes.egg-info/top_level.txt +0 -0
  292. {foxes-1.2.1 → foxes-1.2.2}/setup.cfg +0 -0
  293. {foxes-1.2.1 → foxes-1.2.2}/tests/0_consistency/iterative/test_iterative.py +0 -0
  294. {foxes-1.2.1 → foxes-1.2.2}/tests/0_consistency/partial_wakes/test_partial_wakes.py +0 -0
  295. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/PCt_files/flappy/run.py +0 -0
  296. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py +0 -0
  297. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/abl_states/flappy/run.py +0 -0
  298. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/abl_states/test_abl_states.py +0 -0
  299. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py +0 -0
  300. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py +0 -0
  301. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py +0 -0
  302. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py +0 -0
  303. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py +0 -0
  304. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py +0 -0
  305. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py +0 -0
  306. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py +0 -0
  307. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py +0 -0
  308. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py +0 -0
  309. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py +0 -0
  310. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py +0 -0
  311. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py +0 -0
  312. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py +0 -0
  313. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py +0 -0
  314. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py +0 -0
  315. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py +0 -0
  316. {foxes-1.2.1 → foxes-1.2.2}/tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py +0 -0
  317. {foxes-1.2.1 → foxes-1.2.2}/tests/3_examples/test_examples.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foxes
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
5
  Author: Jonas Schulte
6
6
  Maintainer: Jonas Schulte
@@ -0,0 +1,3 @@
1
+ from .dict import read_dict, run_dict, run_outputs, run_obj_function, get_output_obj
2
+ from .yaml import foxes_yaml
3
+ from .windio.windio import read_windio, foxes_windio
@@ -141,11 +141,176 @@ def read_dict(
141
141
  return algo, engine
142
142
 
143
143
 
144
+ def get_output_obj(
145
+ ocls,
146
+ odict,
147
+ algo,
148
+ farm_results=None,
149
+ point_results=None,
150
+ base_class=Output,
151
+ extra_sig={},
152
+ ):
153
+ """
154
+ Create the output object
155
+
156
+ Parameters
157
+ ----------
158
+ ocls: str
159
+ Name of the output class
160
+ odict: dict
161
+ The output dict
162
+ algo: foxes.core.Algorithm
163
+ The algorithm
164
+ farm_results: xarray.Dataset, optional
165
+ The farm results
166
+ point_results: xarray.Dataset, optional
167
+ The point results
168
+ base_class: object
169
+ The output's base class
170
+ extra_sig: dict
171
+ Extra function signature check, sets
172
+ arguments (key) with data (value)
173
+
174
+ Returns
175
+ -------
176
+ obj: object or None
177
+ The output object
178
+
179
+ :group: input.yaml
180
+
181
+ """
182
+ cls = new_cls(base_class, ocls)
183
+ prs = list(signature(cls.__init__).parameters.keys())
184
+ if "algo" in prs:
185
+ assert algo is not None, f"Output of type '{ocls}' requires algo"
186
+ odict["algo"] = algo
187
+ if "farm" in prs:
188
+ odict["farm"] = algo.farm
189
+ if "farm_results" in prs:
190
+ if farm_results is None:
191
+ print(f"No farm results; skipping output {ocls}")
192
+ return None
193
+ odict["farm_results"] = farm_results
194
+ if "point_results" in prs:
195
+ odict["point_results"] = point_results
196
+ for k, v in extra_sig.items():
197
+ if k in prs:
198
+ odict[k] = v
199
+
200
+ return cls(**odict)
201
+
202
+
203
+ def _get_object(rlabels, d):
204
+ """Helper function for object extraction"""
205
+ d = d.replace("]", "")
206
+ i0 = d.find("[")
207
+ if i0 > 0:
208
+ inds = tuple([int(x) for x in d[i0 + 1 :].split(",")])
209
+ return rlabels[d[:i0]][inds]
210
+ else:
211
+ return rlabels[d]
212
+
213
+
214
+ def run_obj_function(
215
+ obj,
216
+ fdict,
217
+ algo,
218
+ rlabels,
219
+ verbosity=None,
220
+ ):
221
+ """
222
+ Runs a function of an object
223
+
224
+ Parameters
225
+ ----------
226
+ obj: object
227
+ The object
228
+ fdict: dict
229
+ The function call dict
230
+ algo: foxes.core.Algorithm
231
+ The algorithm
232
+ rlabels: dict
233
+ Storage for result variables
234
+ verbosity: int, optional
235
+ The verbosity level, 0 = silent
236
+
237
+ Returns
238
+ -------
239
+ results: object
240
+ The returns of the function
241
+
242
+ :group: input.yaml
243
+
244
+ """
245
+
246
+ def _print(*args, level=1, **kwargs):
247
+ if verbosity is None or verbosity >= level:
248
+ print(*args, **kwargs)
249
+
250
+ fname = fdict.pop_item("function")
251
+ _print(f" - {fname}")
252
+ plt_show = fdict.pop("plt_show", False)
253
+ plt_close = fdict.pop("plt_close", False)
254
+ rlbs = fdict.pop("result_labels", None)
255
+
256
+ # grab function:
257
+ ocls = type(obj).__name__
258
+ assert hasattr(obj, fname), f"Output of type '{ocls}': Function '{fname}' not found"
259
+ f = getattr(obj, fname)
260
+
261
+ # add required input data objects:
262
+ prs = list(signature(f).parameters.keys())
263
+ if "algo" in prs:
264
+ fdict["algo"] = algo
265
+ if "farm" in prs:
266
+ fdict["farm"] = algo.farm
267
+
268
+ # replace result labels by objects:
269
+ for k, d in fdict.items():
270
+ if isinstance(d, str) and d[0] == "$":
271
+ fdict[k] = _get_object(rlabels, d)
272
+
273
+ # run function:
274
+ args = fdict.pop("args", tuple())
275
+ results = f(*args, **fdict)
276
+
277
+ # pyplot shortcuts:
278
+ if plt_show:
279
+ plt.show()
280
+ if plt_close:
281
+ results = None
282
+ plt.close()
283
+
284
+ # store results under result labels:
285
+ if rlbs is not None:
286
+
287
+ def _set_label(rlabels, k, r):
288
+ if k not in ["", "none", "None", "_", "__"]:
289
+ assert (
290
+ k[0] == "$"
291
+ ), f"Output {i} of type '{ocls}', function '{fname}': result labels must start with '$', got '{k}'"
292
+ assert (
293
+ "[" not in k and "]" not in k and "," not in k
294
+ ), f"Output {i} of type '{ocls}', function '{fname}': result labels cannot contain '[' or ']' or comma, got '{k}'"
295
+ _print(f" result label {k}: {type(r).__name__}")
296
+ rlabels[k] = r
297
+
298
+ if isinstance(rlbs, (list, tuple)):
299
+ for i, k in enumerate(rlbs):
300
+ _set_label(rlabels, k, results[i])
301
+ else:
302
+ _set_label(rlabels, rlbs, results)
303
+
304
+ return results
305
+
306
+
144
307
  def run_outputs(
145
308
  idict,
146
309
  algo=None,
147
310
  farm_results=None,
148
311
  point_results=None,
312
+ extra_sig={},
313
+ ret_rlabels=False,
149
314
  verbosity=None,
150
315
  ):
151
316
  """
@@ -161,9 +326,13 @@ def run_outputs(
161
326
  The farm results
162
327
  point_results: xarray.Dataset, optional
163
328
  The point results
329
+ extra_sig: dict
330
+ Extra function signature check, sets
331
+ arguments (key) with data (value)
332
+ ret_rlabels: bool
333
+ Flag for returning results variables
164
334
  verbosity: int, optional
165
- Force a verbosity level, 0 = silent, overrules
166
- settings from idict
335
+ The verbosity level, 0 = silent
167
336
 
168
337
  Returns
169
338
  -------
@@ -171,6 +340,8 @@ def run_outputs(
171
340
  For each output enty, a tuple (dict, results),
172
341
  where results is a tuple that represents one
173
342
  entry per function call
343
+ rlabels: dict, optional
344
+ The results variables
174
345
 
175
346
  :group: input.yaml
176
347
 
@@ -181,6 +352,7 @@ def run_outputs(
181
352
  print(*args, **kwargs)
182
353
 
183
354
  out = []
355
+ rlabels = Dict(name="result_labels")
184
356
  if "outputs" in idict:
185
357
  _print("Running outputs")
186
358
  odicts = [
@@ -188,124 +360,48 @@ def run_outputs(
188
360
  for i, odict in enumerate(idict["outputs"])
189
361
  ]
190
362
 
191
- rlabels = Dict(name="result_labels")
192
-
193
- def _get_object(rlabels, d):
194
- d = d.replace("]", "")
195
- i0 = d.find("[")
196
- if i0 > 0:
197
- inds = tuple([int(x) for x in d[i0 + 1 :].split(",")])
198
- return rlabels[d[:i0]][inds]
199
- else:
200
- return rlabels[d]
201
-
202
363
  for i, d in enumerate(odicts):
203
-
204
364
  if "output_type" in d:
205
365
  ocls = d.pop_item("output_type")
206
366
  _print(f" Output {i}: {ocls}")
207
367
  d0 = dict(output_type=ocls)
208
368
  d0.update(d)
369
+
209
370
  flist = [
210
- Dict(f, name=f"{d.name}.function{i}")
211
- for i, f in enumerate(d.pop_item("functions"))
371
+ Dict(f, name=f"{d.name}.function{j}")
372
+ for j, f in enumerate(d.pop_item("functions"))
212
373
  ]
213
- cls = new_cls(Output, ocls)
214
- prs = list(signature(cls.__init__).parameters.keys())
215
- if "algo" in prs:
216
- assert (
217
- algo is not None
218
- ), f"Output {i} of type '{ocls}' requires algo"
219
- d["algo"] = algo
220
- if "farm" in prs:
221
- d["farm"] = algo.farm
222
- if "farm_results" in prs:
223
- if farm_results is None:
224
- print(f"No farm results; skipping output {ocls}")
225
- for fdict in flist:
226
- out += (d0, None)
227
- continue
228
- d["farm_results"] = farm_results
229
- if "point_results" in prs:
230
- d["point_results"] = point_results
231
- o = cls(**d)
374
+
375
+ o = get_output_obj(
376
+ ocls, d, algo, farm_results, point_results, extra_sig=extra_sig
377
+ )
378
+ if o is None:
379
+ out.append((d0, None))
380
+ continue
232
381
 
233
382
  elif "object" in d:
234
383
  ocls = d.pop("object")
384
+ _print(f" Output {i}: Object {ocls}")
235
385
  o = _get_object(rlabels, ocls)
236
386
  d0 = dict(object=ocls)
237
387
  d0.update(d)
238
388
  flist = [
239
- Dict(f, name=f"{d.name}.function{i}")
240
- for i, f in enumerate(d.pop_item("functions"))
389
+ Dict(f, name=f"{d.name}.function{j}")
390
+ for j, f in enumerate(d.pop_item("functions"))
241
391
  ]
242
392
 
243
393
  else:
244
394
  raise KeyError(
245
- f"Output {i} of type '{ocls}': Please specify either 'output_type' or 'object'"
395
+ f"Output {i}: Please specify either 'output_type' or 'object'"
246
396
  )
247
397
 
248
398
  fres = []
249
399
  for fdict in flist:
250
- fname = fdict.pop_item("function")
251
- _print(f" - {fname}")
252
- plt_show = fdict.pop("plt_show", False)
253
- plt_close = fdict.pop("plt_close", False)
254
- rlbs = fdict.pop("result_labels", None)
255
-
256
- # grab function:
257
- assert hasattr(
258
- o, fname
259
- ), f"Output {i} of type '{ocls}': Function '{fname}' not found"
260
- f = getattr(o, fname)
261
-
262
- # add required input data objects:
263
- prs = list(signature(f).parameters.keys())
264
- if "algo" in prs:
265
- fdict["algo"] = algo
266
- if "farm" in prs:
267
- fdict["farm"] = algo.farm
268
-
269
- # replace result labels by objects:
270
- for k, d in fdict.items():
271
- if isinstance(d, str) and d[0] == "$":
272
- fdict[k] = _get_object(rlabels, d)
273
-
274
- # run function:
275
- args = fdict.pop("args", tuple())
276
- results = f(*args, **fdict)
277
-
278
- # pyplot shortcuts:
279
- if plt_show:
280
- plt.show()
281
- if plt_close:
282
- results = None
283
- plt.close()
284
-
285
- # store results under result labels:
286
- if rlbs is not None:
287
-
288
- def _set_label(rlabels, k, r):
289
- if k not in ["", "none", "None", "_", "__"]:
290
- assert (
291
- k[0] == "$"
292
- ), f"Output {i} of type '{ocls}', function '{fname}': result labels must start with '$', got '{k}'"
293
- assert (
294
- "[" not in k and "]" not in k and "," not in k
295
- ), f"Output {i} of type '{ocls}', function '{fname}': result labels cannot contain '[' or ']' or comma, got '{k}'"
296
- _print(f" result label {k}: {type(r).__name__}")
297
- rlabels[k] = r
298
-
299
- if isinstance(rlbs, (list, tuple)):
300
- for i, k in enumerate(rlbs):
301
- _set_label(rlabels, k, results[i])
302
- else:
303
- _set_label(rlabels, rlbs, results)
304
-
400
+ results = run_obj_function(o, fdict, algo, rlabels, verbosity)
305
401
  fres.append(results)
306
402
  out.append((d0, fres))
307
403
 
308
- return out
404
+ return out if not ret_rlabels else out, rlabels
309
405
 
310
406
 
311
407
  def run_dict(idict, *args, verbosity=None, **kwargs):
@@ -371,7 +467,7 @@ def run_dict(idict, *args, verbosity=None, **kwargs):
371
467
  out += (point_results,)
372
468
 
373
469
  # run outputs:
374
- out += (run_outputs(idict, algo, farm_results, point_results, verbosity),)
470
+ out += (run_outputs(idict, algo, farm_results, point_results, verbosity=verbosity),)
375
471
 
376
472
  # shutdown engine, if created above:
377
473
  if engine is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foxes
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
5
  Author: Jonas Schulte
6
6
  Maintainer: Jonas Schulte
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "foxes"
9
- version = "1.2.1"
9
+ version = "1.2.2"
10
10
  authors = [
11
11
  {name = "Jonas Schulte"},
12
12
  ]
@@ -1,3 +0,0 @@
1
- from .dict import read_dict, run_dict, run_outputs
2
- from .yaml import foxes_yaml
3
- from .windio.windio import read_windio, foxes_windio
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes