honeybee-energy 1.115.2__tar.gz → 1.116.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.

Potentially problematic release.


This version of honeybee-energy might be problematic. Click here for more details.

Files changed (175) hide show
  1. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/PKG-INFO +2 -2
  2. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/translate.py +143 -1
  3. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/run.py +27 -26
  4. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/PKG-INFO +2 -2
  5. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/requires.txt +1 -1
  6. honeybee_energy-1.116.0/openstudio-requirements.txt +1 -0
  7. honeybee_energy-1.115.2/openstudio-requirements.txt +0 -1
  8. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/CODE_OF_CONDUCT.md +0 -0
  9. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/CONTRIBUTING.md +0 -0
  10. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/LICENSE +0 -0
  11. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/MANIFEST.in +0 -0
  12. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/README.md +0 -0
  13. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/dev-requirements.txt +0 -0
  14. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/__init__.py +0 -0
  15. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/__main__.py +0 -0
  16. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/_extend_honeybee.py +0 -0
  17. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/altnumber.py +0 -0
  18. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/__init__.py +0 -0
  19. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/create.py +0 -0
  20. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/__init__.py +0 -0
  21. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/constructions.csv +0 -0
  22. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/fen_ratios.csv +0 -0
  23. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/lpd_building.csv +0 -0
  24. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/pci_2016.csv +0 -0
  25. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/pci_2019.csv +0 -0
  26. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/pci_2022.csv +0 -0
  27. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/data/shw.csv +0 -0
  28. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/pci.py +0 -0
  29. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/baseline/result.py +0 -0
  30. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/boundarycondition.py +0 -0
  31. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/__init__.py +0 -0
  32. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/baseline.py +0 -0
  33. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/edit.py +0 -0
  34. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/lib.py +0 -0
  35. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/result.py +0 -0
  36. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/setconfig.py +0 -0
  37. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/settings.py +0 -0
  38. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/simulate.py +0 -0
  39. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/cli/validate.py +0 -0
  40. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/config.json +0 -0
  41. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/config.py +0 -0
  42. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/__init__.py +0 -0
  43. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/_base.py +0 -0
  44. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/air.py +0 -0
  45. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/dictutil.py +0 -0
  46. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/dynamic.py +0 -0
  47. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/opaque.py +0 -0
  48. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/shade.py +0 -0
  49. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/window.py +0 -0
  50. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/construction/windowshade.py +0 -0
  51. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/constructionset.py +0 -0
  52. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/dictutil.py +0 -0
  53. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/generator/__init__.py +0 -0
  54. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/generator/loadcenter.py +0 -0
  55. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/generator/pv.py +0 -0
  56. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/__init__.py +0 -0
  57. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/_base.py +0 -0
  58. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/_template.py +0 -0
  59. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/__init__.py +0 -0
  60. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/_base.py +0 -0
  61. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/furnace.py +0 -0
  62. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/psz.py +0 -0
  63. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/ptac.py +0 -0
  64. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/pvav.py +0 -0
  65. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/allair/vav.py +0 -0
  66. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/detailed.py +0 -0
  67. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/__init__.py +0 -0
  68. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/_base.py +0 -0
  69. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/fcu.py +0 -0
  70. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/radiant.py +0 -0
  71. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/vrf.py +0 -0
  72. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/doas/wshp.py +0 -0
  73. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/__init__.py +0 -0
  74. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/_base.py +0 -0
  75. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/baseboard.py +0 -0
  76. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/evapcool.py +0 -0
  77. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/fcu.py +0 -0
  78. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/gasunit.py +0 -0
  79. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/radiant.py +0 -0
  80. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/residential.py +0 -0
  81. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/vrf.py +0 -0
  82. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/windowac.py +0 -0
  83. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/heatcool/wshp.py +0 -0
  84. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/hvac/idealair.py +0 -0
  85. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/internalmass.py +0 -0
  86. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/__init__.py +0 -0
  87. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadconstructions.py +0 -0
  88. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadconstructionsets.py +0 -0
  89. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadmaterials.py +0 -0
  90. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadprogramtypes.py +0 -0
  91. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadschedules.py +0 -0
  92. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/_loadtypelimits.py +0 -0
  93. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/constructions.py +0 -0
  94. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/constructionsets.py +0 -0
  95. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/materials.py +0 -0
  96. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/programtypes.py +0 -0
  97. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/schedules.py +0 -0
  98. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/lib/scheduletypelimits.py +0 -0
  99. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/__init__.py +0 -0
  100. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/_base.py +0 -0
  101. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/daylight.py +0 -0
  102. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/dictutil.py +0 -0
  103. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/equipment.py +0 -0
  104. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/hotwater.py +0 -0
  105. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/infiltration.py +0 -0
  106. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/lighting.py +0 -0
  107. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/people.py +0 -0
  108. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/process.py +0 -0
  109. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/setpoint.py +0 -0
  110. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/load/ventilation.py +0 -0
  111. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/__init__.py +0 -0
  112. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/_base.py +0 -0
  113. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/dictutil.py +0 -0
  114. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/frame.py +0 -0
  115. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/gas.py +0 -0
  116. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/glazing.py +0 -0
  117. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/opaque.py +0 -0
  118. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/material/shade.py +0 -0
  119. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/measure.py +0 -0
  120. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/programtype.py +0 -0
  121. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/__init__.py +0 -0
  122. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/aperture.py +0 -0
  123. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/door.py +0 -0
  124. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/extension.py +0 -0
  125. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/face.py +0 -0
  126. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/model.py +0 -0
  127. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/room.py +0 -0
  128. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/shade.py +0 -0
  129. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/properties/shademesh.py +0 -0
  130. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/reader.py +0 -0
  131. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/__init__.py +0 -0
  132. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/colorobj.py +0 -0
  133. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/emissions.py +0 -0
  134. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/err.py +0 -0
  135. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/eui.py +0 -0
  136. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/generation.py +0 -0
  137. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/loadbalance.py +0 -0
  138. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/match.py +0 -0
  139. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/osw.py +0 -0
  140. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/rdd.py +0 -0
  141. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/result/zsz.py +0 -0
  142. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/__init__.py +0 -0
  143. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/day.py +0 -0
  144. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/dictutil.py +0 -0
  145. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/fixedinterval.py +0 -0
  146. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/rule.py +0 -0
  147. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/ruleset.py +0 -0
  148. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/schedule/typelimit.py +0 -0
  149. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/shw.py +0 -0
  150. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/__init__.py +0 -0
  151. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/control.py +0 -0
  152. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/daylightsaving.py +0 -0
  153. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/dictutil.py +0 -0
  154. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/output.py +0 -0
  155. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/parameter.py +0 -0
  156. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/runperiod.py +0 -0
  157. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/shadowcalculation.py +0 -0
  158. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/simulation/sizing.py +0 -0
  159. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/__init__.py +0 -0
  160. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/_crack_data.py +0 -0
  161. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/afn.py +0 -0
  162. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/control.py +0 -0
  163. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/crack.py +0 -0
  164. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/fan.py +0 -0
  165. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/opening.py +0 -0
  166. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/ventcool/simulation.py +0 -0
  167. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy/writer.py +0 -0
  168. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/SOURCES.txt +0 -0
  169. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/dependency_links.txt +0 -0
  170. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/entry_points.txt +0 -0
  171. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/honeybee_energy.egg-info/top_level.txt +0 -0
  172. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/requirements.txt +0 -0
  173. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/setup.cfg +0 -0
  174. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/setup.py +0 -0
  175. {honeybee_energy-1.115.2 → honeybee_energy-1.116.0}/standards-requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-energy
3
- Version: 1.115.2
3
+ Version: 1.116.0
4
4
  Summary: Energy simulation library for honeybee.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-energy
6
6
  Author: Ladybug Tools
@@ -19,7 +19,7 @@ Requires-Dist: honeybee-standards==2.0.7
19
19
  Provides-Extra: standards
20
20
  Requires-Dist: honeybee-energy-standards==2.3.0; extra == "standards"
21
21
  Provides-Extra: openstudio
22
- Requires-Dist: honeybee-openstudio==0.2.2; extra == "openstudio"
22
+ Requires-Dist: honeybee-openstudio==0.2.3; extra == "openstudio"
23
23
 
24
24
  ![Honeybee](http://www.ladybug.tools/assets/img/honeybee.png)
25
25
 
@@ -11,6 +11,7 @@ from ladybug.commandutil import process_content_to_output
11
11
  from ladybug.analysisperiod import AnalysisPeriod
12
12
  from ladybug.epw import EPW
13
13
  from ladybug.stat import STAT
14
+ from ladybug.futil import preparedir
14
15
  from honeybee.model import Model
15
16
  from honeybee.typing import clean_rad_string
16
17
  from honeybee.config import folders as hb_folders
@@ -22,7 +23,8 @@ from honeybee_energy.construction.window import WindowConstruction
22
23
  from honeybee_energy.schedule.dictutil import dict_to_schedule
23
24
  from honeybee_energy.schedule.ruleset import ScheduleRuleset
24
25
  from honeybee_energy.properties.model import ModelEnergyProperties
25
- from honeybee_energy.run import run_osw, from_gbxml_osw, from_osm_osw, from_idf_osw, \
26
+ from honeybee_energy.run import to_openstudio_sim_folder, run_osw, \
27
+ from_gbxml_osw, from_osm_osw, from_idf_osw, \
26
28
  _parse_os_cli_failure, HB_OS_MSG
27
29
  from honeybee_energy.writer import energyplus_idf_version, _preprocess_model_for_trace
28
30
  from honeybee_energy.config import folders
@@ -35,6 +37,146 @@ def translate():
35
37
  pass
36
38
 
37
39
 
40
+ @translate.command('model-to-sim-folder')
41
+ @click.argument('model-file', type=click.Path(
42
+ exists=True, file_okay=True, dir_okay=False, resolve_path=True))
43
+ @click.argument('epw-file', type=click.Path(
44
+ exists=True, file_okay=True, dir_okay=False, resolve_path=True))
45
+ @click.option('--sim-par-json', '-sp', help='Full path to a honeybee energy '
46
+ 'SimulationParameter JSON that describes all of the settings for '
47
+ 'the simulation. This will be ignored if the input model-file is '
48
+ 'an OSM or IDF.', default=None, show_default=True,
49
+ type=click.Path(exists=False, file_okay=True, dir_okay=False,
50
+ resolve_path=True))
51
+ @click.option('--measures', '-m', help='Full path to a folder containing an OSW JSON '
52
+ 'be used as the base for the execution of the OpenStudio CLI. While this '
53
+ 'OSW can contain paths to measures that exist anywhere on the machine, '
54
+ 'the best practice is to copy the measures into this measures '
55
+ 'folder and use relative paths within the OSW. '
56
+ 'This makes it easier to move the inputs for this command from one '
57
+ 'machine to another.', default=None, show_default=True,
58
+ type=click.Path(file_okay=False, dir_okay=True, resolve_path=True))
59
+ @click.option('--additional-string', '-as', help='An additional IDF text string to get '
60
+ 'appended to the IDF before simulation. The input should include '
61
+ 'complete EnergyPlus objects as a single string following the IDF '
62
+ 'format. This input can be used to include small EnergyPlus objects that '
63
+ 'are not currently supported by honeybee.', default=None, type=str)
64
+ @click.option('--additional-idf', '-ai', help='An IDF file with text to be '
65
+ 'appended before simulation. This input can be used to include '
66
+ 'large EnergyPlus objects that are not currently supported by honeybee.',
67
+ default=None, show_default=True,
68
+ type=click.Path(exists=False, file_okay=True, dir_okay=False,
69
+ resolve_path=True))
70
+ @click.option('--folder', '-f', help='Folder on this computer, into which the IDF '
71
+ 'and result files will be written. If None, the files will be output '
72
+ 'to the honeybee default simulation folder and placed in a project '
73
+ 'folder with the same name as the model-file.',
74
+ default=None, show_default=True,
75
+ type=click.Path(file_okay=False, dir_okay=True, resolve_path=True))
76
+ @click.option('--log-file', '-log', help='Optional log file to output the paths of the '
77
+ 'generated files (osw, osm, idf) if successfully'
78
+ ' created. By default the list will be printed out to stdout',
79
+ type=click.File('w'), default='-', show_default=True)
80
+ def simulate_model(
81
+ model_file, epw_file, sim_par_json, measures, additional_string, additional_idf,
82
+ folder, log_file
83
+ ):
84
+ """Simulate a Model in EnergyPlus.
85
+
86
+ \b
87
+ Args:
88
+ model_file: Full path to a Model file as a HBJSON or HBPkl.
89
+ epw_file: Full path to an .epw file.
90
+ """
91
+ try:
92
+ # get a ddy variable that might get used later
93
+ epw_folder, epw_file_name = os.path.split(epw_file)
94
+ ddy_file = os.path.join(epw_folder, epw_file_name.replace('.epw', '.ddy'))
95
+ stat_file = os.path.join(epw_folder, epw_file_name.replace('.epw', '.stat'))
96
+
97
+ # sense what type of file has been input
98
+ proj_name = os.path.basename(model_file).lower()
99
+
100
+ # set the default folder to the default if it's not specified
101
+ if folder is None:
102
+ for ext in ('.hbjson', '.json', '.hbpkl', '.pkl'):
103
+ proj_name = proj_name.replace(ext, '')
104
+ folder = os.path.join(folders.default_simulation_folder, proj_name)
105
+ folder = os.path.join(folder, 'openstudio')
106
+ preparedir(folder, remove_content=False)
107
+
108
+ # process the simulation parameters and write new ones if necessary
109
+ def ddy_from_epw(epw_file, sim_par):
110
+ """Produce a DDY from an EPW file."""
111
+ epw_obj = EPW(epw_file)
112
+ des_days = [epw_obj.approximate_design_day('WinterDesignDay'),
113
+ epw_obj.approximate_design_day('SummerDesignDay')]
114
+ sim_par.sizing_parameter.design_days = des_days
115
+
116
+ if sim_par_json is None or not os.path.isfile(sim_par_json):
117
+ sim_par = SimulationParameter()
118
+ sim_par.output.add_zone_energy_use()
119
+ sim_par.output.add_hvac_energy_use()
120
+ sim_par.output.add_electricity_generation()
121
+ sim_par.output.reporting_frequency = 'Monthly'
122
+ else:
123
+ with open(sim_par_json) as json_file:
124
+ data = json.load(json_file)
125
+ sim_par = SimulationParameter.from_dict(data)
126
+ if len(sim_par.sizing_parameter.design_days) == 0 and \
127
+ os.path.isfile(ddy_file):
128
+ try:
129
+ sim_par.sizing_parameter.add_from_ddy_996_004(ddy_file)
130
+ except AssertionError: # no design days within the DDY file
131
+ ddy_from_epw(epw_file, sim_par)
132
+ elif len(sim_par.sizing_parameter.design_days) == 0:
133
+ ddy_from_epw(epw_file, sim_par)
134
+ if sim_par.sizing_parameter.climate_zone is None and \
135
+ os.path.isfile(stat_file):
136
+ stat_obj = STAT(stat_file)
137
+ sim_par.sizing_parameter.climate_zone = stat_obj.ashrae_climate_zone
138
+
139
+ # process the measures input if it is specified
140
+ base_osw = None
141
+ if measures is not None and measures != '' and os.path.isdir(measures):
142
+ for f_name in os.listdir(measures):
143
+ if f_name.lower().endswith('.osw'):
144
+ base_osw = os.path.join(measures, f_name)
145
+ # write the path of the measures folder into the OSW
146
+ with open(base_osw) as json_file:
147
+ osw_dict = json.load(json_file)
148
+ osw_dict['measure_paths'] = [os.path.abspath(measures)]
149
+ with open(base_osw, 'w') as fp:
150
+ json.dump(osw_dict, fp)
151
+ break
152
+
153
+ # Write the osw file to translate the model to osm
154
+ strings_to_inject = additional_string if additional_string is not None else ''
155
+ if additional_idf is not None and os.path.isfile(additional_idf):
156
+ with open(additional_idf, "r") as add_idf_file:
157
+ strings_to_inject = strings_to_inject + '\n' + add_idf_file.read()
158
+
159
+ # run the Model re-serialization and convert to OSM, OSW, and IDF
160
+ osm, osw, idf = None, None, None
161
+ model = Model.from_file(model_file)
162
+ osm, osw, idf = to_openstudio_sim_folder(
163
+ model, folder, epw_file=epw_file, sim_par=sim_par, enforce_rooms=True,
164
+ base_osw=base_osw, strings_to_inject=strings_to_inject,
165
+ print_progress=True)
166
+ gen_files = [osm]
167
+ if osw is not None:
168
+ gen_files.append(osw)
169
+ if idf is not None:
170
+ gen_files.append(idf)
171
+
172
+ log_file.write(json.dumps(gen_files, indent=4))
173
+ except Exception as e:
174
+ _logger.exception('Model simulation failed.\n{}'.format(e))
175
+ sys.exit(1)
176
+ else:
177
+ sys.exit(0)
178
+
179
+
38
180
  @translate.command('model-to-osm')
39
181
  @click.argument('model-file', type=click.Path(
40
182
  exists=True, file_okay=True, dir_okay=False, resolve_path=True))
@@ -239,32 +239,33 @@ def to_openstudio_sim_folder(
239
239
  osw_dict['file_paths'].append(schedule_directory)
240
240
  if epw_file is not None:
241
241
  osw_dict['weather_file'] = epw_file
242
- if 'measure_paths' not in osw_dict:
243
- osw_dict['measure_paths'] = []
244
- measure_paths = set() # set of all unique measure paths
245
- # ensure measures are correctly ordered
246
- m_dict = {'ModelMeasure': [], 'EnergyPlusMeasure': [], 'ReportingMeasure': []}
247
- for measure in additional_measures:
248
- m_dict[measure.type].append(measure)
249
- sorted_measures = m_dict['ModelMeasure'] + m_dict['EnergyPlusMeasure'] + \
250
- m_dict['ReportingMeasure']
251
- # add the measures and the measure paths to the OSW
252
- for measure in sorted_measures:
253
- measure.validate() # ensure that all required arguments have values
254
- measure_paths.add(os.path.dirname(measure.folder))
255
- osw_dict['steps'].append(measure.to_osw_dict()) # add measure to workflow
256
- for m_path in measure_paths:
257
- osw_dict['measure_paths'].append(m_path)
258
- # if there were reporting measures, add the ladybug adapter to get sim progress
259
- adapter = folders.honeybee_adapter_path
260
- if adapter is not None:
261
- if 'run_options' not in osw_dict:
262
- osw_dict['run_options'] = {}
263
- osw_dict['run_options']['output_adapter'] = {
264
- 'custom_file_name': adapter,
265
- 'class_name': 'HoneybeeAdapter',
266
- 'options': {}
267
- }
242
+ if additional_measures is not None:
243
+ if 'measure_paths' not in osw_dict:
244
+ osw_dict['measure_paths'] = []
245
+ measure_paths = set() # set of all unique measure paths
246
+ # ensure measures are correctly ordered
247
+ m_dict = {'ModelMeasure': [], 'EnergyPlusMeasure': [], 'ReportingMeasure': []}
248
+ for measure in additional_measures:
249
+ m_dict[measure.type].append(measure)
250
+ sorted_measures = m_dict['ModelMeasure'] + m_dict['EnergyPlusMeasure'] + \
251
+ m_dict['ReportingMeasure']
252
+ # add the measures and the measure paths to the OSW
253
+ for measure in sorted_measures:
254
+ measure.validate() # ensure that all required arguments have values
255
+ measure_paths.add(os.path.dirname(measure.folder))
256
+ osw_dict['steps'].append(measure.to_osw_dict()) # add measure to workflow
257
+ for m_path in measure_paths:
258
+ osw_dict['measure_paths'].append(m_path)
259
+ # if there were reporting measures, add the ladybug adapter to get sim progress
260
+ adapter = folders.honeybee_adapter_path
261
+ if adapter is not None:
262
+ if 'run_options' not in osw_dict:
263
+ osw_dict['run_options'] = {}
264
+ osw_dict['run_options']['output_adapter'] = {
265
+ 'custom_file_name': adapter,
266
+ 'class_name': 'HoneybeeAdapter',
267
+ 'options': {}
268
+ }
268
269
  # write the dictionary to a workflow.osw
269
270
  osw = os.path.abspath(os.path.join(directory, 'workflow.osw'))
270
271
  if (sys.version_info < (3, 0)): # we need to manually encode it as UTF-8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-energy
3
- Version: 1.115.2
3
+ Version: 1.116.0
4
4
  Summary: Energy simulation library for honeybee.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-energy
6
6
  Author: Ladybug Tools
@@ -19,7 +19,7 @@ Requires-Dist: honeybee-standards==2.0.7
19
19
  Provides-Extra: standards
20
20
  Requires-Dist: honeybee-energy-standards==2.3.0; extra == "standards"
21
21
  Provides-Extra: openstudio
22
- Requires-Dist: honeybee-openstudio==0.2.2; extra == "openstudio"
22
+ Requires-Dist: honeybee-openstudio==0.2.3; extra == "openstudio"
23
23
 
24
24
  ![Honeybee](http://www.ladybug.tools/assets/img/honeybee.png)
25
25
 
@@ -2,7 +2,7 @@ honeybee-core==1.61.12
2
2
  honeybee-standards==2.0.7
3
3
 
4
4
  [openstudio]
5
- honeybee-openstudio==0.2.2
5
+ honeybee-openstudio==0.2.3
6
6
 
7
7
  [standards]
8
8
  honeybee-energy-standards==2.3.0
@@ -0,0 +1 @@
1
+ honeybee-openstudio==0.2.3
@@ -1 +0,0 @@
1
- honeybee-openstudio==0.2.2