honeybee-schema 1.59.1__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.
- honeybee_schema/__init__.py +1 -0
- honeybee_schema/__main__.py +4 -0
- honeybee_schema/_base.py +42 -0
- honeybee_schema/altnumber.py +18 -0
- honeybee_schema/boundarycondition.py +81 -0
- honeybee_schema/cli.py +115 -0
- honeybee_schema/comparison.py +208 -0
- honeybee_schema/doe2/__init__.py +0 -0
- honeybee_schema/doe2/properties.py +75 -0
- honeybee_schema/energy/__init__.py +0 -0
- honeybee_schema/energy/_base.py +64 -0
- honeybee_schema/energy/construction.py +324 -0
- honeybee_schema/energy/constructionset.py +359 -0
- honeybee_schema/energy/daylight.py +62 -0
- honeybee_schema/energy/designday.py +212 -0
- honeybee_schema/energy/generator.py +140 -0
- honeybee_schema/energy/global_constructionset.py +129 -0
- honeybee_schema/energy/hvac/__init__.py +0 -0
- honeybee_schema/energy/hvac/_template.py +38 -0
- honeybee_schema/energy/hvac/allair.py +257 -0
- honeybee_schema/energy/hvac/detailed.py +20 -0
- honeybee_schema/energy/hvac/doas.py +248 -0
- honeybee_schema/energy/hvac/heatcool.py +309 -0
- honeybee_schema/energy/hvac/idealair.py +107 -0
- honeybee_schema/energy/internalmass.py +25 -0
- honeybee_schema/energy/load.py +627 -0
- honeybee_schema/energy/material.py +949 -0
- honeybee_schema/energy/programtype.py +117 -0
- honeybee_schema/energy/properties.py +382 -0
- honeybee_schema/energy/schedule.py +350 -0
- honeybee_schema/energy/shw.py +53 -0
- honeybee_schema/energy/simulation.py +440 -0
- honeybee_schema/energy/ventcool.py +337 -0
- honeybee_schema/geometry.py +161 -0
- honeybee_schema/model.py +473 -0
- honeybee_schema/projectinfo.py +94 -0
- honeybee_schema/radiance/__init__.py +0 -0
- honeybee_schema/radiance/_base.py +22 -0
- honeybee_schema/radiance/asset.py +191 -0
- honeybee_schema/radiance/global_modifierset.py +92 -0
- honeybee_schema/radiance/modifier.py +373 -0
- honeybee_schema/radiance/modifierset.py +296 -0
- honeybee_schema/radiance/properties.py +149 -0
- honeybee_schema/radiance/state.py +69 -0
- honeybee_schema/updater/__init__.py +0 -0
- honeybee_schema/updater/version_1_39_12.py +14 -0
- honeybee_schema/updater/version_1_40_1.py +153 -0
- honeybee_schema/updater/version_1_43_1.py +18 -0
- honeybee_schema/updater/version_1_43_2.py +12 -0
- honeybee_schema/updater/version_1_43_5.py +11 -0
- honeybee_schema/validation.py +205 -0
- honeybee_schema-1.59.1.dist-info/METADATA +108 -0
- honeybee_schema-1.59.1.dist-info/RECORD +57 -0
- honeybee_schema-1.59.1.dist-info/WHEEL +5 -0
- honeybee_schema-1.59.1.dist-info/entry_points.txt +2 -0
- honeybee_schema-1.59.1.dist-info/licenses/LICENSE +23 -0
- honeybee_schema-1.59.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
"""Changes associated with version Honeybee schema version 1.40.1."""
|
2
|
+
|
3
|
+
|
4
|
+
def version_1_40_1(model_dict):
|
5
|
+
"""Implement changes in a Model dict to make it compatible with version 1.40.1."""
|
6
|
+
if 'energy' in model_dict['properties']:
|
7
|
+
if 'hvacs' in model_dict['properties']['energy']:
|
8
|
+
for hvac in model_dict['properties']['energy']['hvacs']:
|
9
|
+
if hvac['type'] != 'IdealAirSystemAbridged': # it's detailed
|
10
|
+
hvac['vintage'] = VINTAGE_MAPPER[hvac['vintage']]
|
11
|
+
hvac['equipment_type'] = EQUIPMENT_MAPPER[hvac['equipment_type']]
|
12
|
+
return model_dict
|
13
|
+
|
14
|
+
|
15
|
+
# dictionary to map between old and new vintages
|
16
|
+
VINTAGE_MAPPER = {
|
17
|
+
'90.1-2013': 'ASHRAE_2013',
|
18
|
+
'90.1-2010': 'ASHRAE_2010',
|
19
|
+
'90.1-2007': 'ASHRAE_2007',
|
20
|
+
'90.1-2004': 'ASHRAE_2004',
|
21
|
+
'DOE Ref 1980-2004': 'DOE_Ref_1980_2004',
|
22
|
+
'DOE Ref Pre-1980': 'DOE_Ref_Pre_1980'
|
23
|
+
}
|
24
|
+
|
25
|
+
# dictionary to map between the old and new HVAC equipment enumerations
|
26
|
+
EQUIPMENT_MAPPER = {
|
27
|
+
'VAV chiller with gas boiler reheat': 'VAV_Chiller_Boiler',
|
28
|
+
'VAV chiller with central air source heat pump reheat': 'VAV_Chiller_ASHP',
|
29
|
+
'VAV chiller with district hot water reheat': 'VAV_Chiller_DHW',
|
30
|
+
'VAV chiller with PFP boxes': 'VAV_Chiller_PFP',
|
31
|
+
'VAV chiller with gas coil reheat': 'VAV_Chiller_GasCoil',
|
32
|
+
'VAV air-cooled chiller with gas boiler reheat': 'VAV_ACChiller_Boiler',
|
33
|
+
'VAV air-cooled chiller with central air source heat pump reheat': 'VAV_ACChiller_ASHP',
|
34
|
+
'VAV air-cooled chiller with district hot water reheat': 'VAV_ACChiller_DHW',
|
35
|
+
'VAV air-cooled chiller with PFP boxes': 'VAV_ACChiller_PFP',
|
36
|
+
'VAV air-cooled chiller with gas coil reheat': 'VAV_ACChiller_GasCoil',
|
37
|
+
'VAV district chilled water with gas boiler reheat': 'VAV_DCW_Boiler',
|
38
|
+
'VAV district chilled water with central air source heat pump reheat': 'VAV_DCW_ASHP',
|
39
|
+
'VAV district chilled water with district hot water reheat': 'VAV_DCW_DHW',
|
40
|
+
'VAV district chilled water with PFP boxes': 'VAV_DCW_PFP',
|
41
|
+
'VAV district chilled water with gas coil reheat': 'VAV_DCW_GasCoil',
|
42
|
+
'PVAV with gas boiler reheat': 'PVAV_Boiler',
|
43
|
+
'PVAV with central air source heat pump reheat': 'PVAV_ASHP',
|
44
|
+
'PVAV with district hot water reheat': 'PVAV_DHW',
|
45
|
+
'PVAV with PFP boxes': 'PVAV_PFP',
|
46
|
+
'PVAV with gas heat with electric reheat': 'PVAV_BoilerElectricReheat',
|
47
|
+
'PSZ-AC with baseboard electric': 'PSZAC_ElectricBaseboard',
|
48
|
+
'PSZ-AC with baseboard gas boiler': 'PSZAC_BoilerBaseboard',
|
49
|
+
'PSZ-AC with baseboard district hot water': 'PSZAC_DHWBaseboard',
|
50
|
+
'PSZ-AC with gas unit heaters': 'PSZAC_GasHeaters',
|
51
|
+
'PSZ-AC with electric coil': 'PSZAC_ElectricCoil',
|
52
|
+
'PSZ-AC with gas coil': 'PSZAC_GasCoil',
|
53
|
+
'PSZ-AC with gas boiler': 'PSZAC_Boiler',
|
54
|
+
'PSZ-AC with central air source heat pump': 'PSZAC_ASHP',
|
55
|
+
'PSZ-AC with district hot water': 'PSZAC_DHW',
|
56
|
+
'PSZ-AC with no heat': 'PSZAC',
|
57
|
+
'PSZ-AC district chilled water with baseboard electric': 'PSZAC_DCW_ElectricBaseboard',
|
58
|
+
'PSZ-AC district chilled water with baseboard gas boiler': 'PSZAC_DCW_BoilerBaseboard',
|
59
|
+
'PSZ-AC district chilled water with gas unit heaters': 'PSZAC_DCW_GasHeaters',
|
60
|
+
'PSZ-AC district chilled water with electric coil': 'PSZAC_DCW_ElectricCoil',
|
61
|
+
'PSZ-AC district chilled water with gas coil': 'PSZAC_DCW_GasCoil',
|
62
|
+
'PSZ-AC district chilled water with gas boiler': 'PSZAC_DCW_Boiler',
|
63
|
+
'PSZ-AC district chilled water with central air source heat pump': 'PSZAC_DCW_ASHP',
|
64
|
+
'PSZ-AC district chilled water with district hot water': 'PSZAC_DCW_DHW',
|
65
|
+
'PSZ-AC district chilled water with no heat': 'PSZAC_DCW',
|
66
|
+
'PSZ-HP': 'PSZHP',
|
67
|
+
'PTAC with baseboard electric': 'PTAC_ElectricBaseboard',
|
68
|
+
'PTAC with baseboard gas boiler': 'PTAC_BoilerBaseboard',
|
69
|
+
'PTAC with baseboard district hot water': 'PTAC_DHWBaseboard',
|
70
|
+
'PTAC with gas unit heaters': 'PTAC_GasHeaters',
|
71
|
+
'PTAC with electric coil': 'PTAC_ElectricCoil',
|
72
|
+
'PTAC with gas coil': 'PTAC_GasCoil',
|
73
|
+
'PTAC with gas boiler': 'PTAC_Boiler',
|
74
|
+
'PTAC with central air source heat pump': 'PTAC_ASHP',
|
75
|
+
'PTAC with district hot water': 'PTAC_DHW',
|
76
|
+
'PTAC with no heat': 'PTAC',
|
77
|
+
'PTHP': 'PTHP',
|
78
|
+
'Forced air furnace': 'Furnace',
|
79
|
+
'DOAS with fan coil chiller with boiler': 'DOAS_FCU_Chiller_Boiler',
|
80
|
+
'DOAS with fan coil chiller with central air source heat pump': 'DOAS_FCU_Chiller_ASHP',
|
81
|
+
'DOAS with fan coil chiller with district hot water': 'DOAS_FCU_Chiller_DHW',
|
82
|
+
'DOAS with fan coil chiller with baseboard electric': 'DOAS_FCU_Chiller_ElectricBaseboard',
|
83
|
+
'DOAS with fan coil chiller with gas unit heaters': 'DOAS_FCU_Chiller_GasHeaters',
|
84
|
+
'DOAS with fan coil chiller with no heat': 'DOAS_FCU_Chiller',
|
85
|
+
'DOAS with fan coil air-cooled chiller with boiler': 'DOAS_FCU_ACChiller_Boiler',
|
86
|
+
'DOAS with fan coil air-cooled chiller with central air source heat pump': 'DOAS_FCU_ACChiller_ASHP',
|
87
|
+
'DOAS with fan coil air-cooled chiller with district hot water': 'DOAS_FCU_ACChiller_DHW',
|
88
|
+
'DOAS with fan coil air-cooled chiller with baseboard electric': 'DOAS_FCU_ACChiller_ElectricBaseboard',
|
89
|
+
'DOAS with fan coil air-cooled chiller with gas unit heaters': 'DOAS_FCU_ACChiller_GasHeaters',
|
90
|
+
'DOAS with fan coil air-cooled chiller with no heat': 'DOAS_FCU_ACChiller',
|
91
|
+
'DOAS with fan coil district chilled water with boiler': 'DOAS_FCU_DCW_Boiler',
|
92
|
+
'DOAS with fan coil district chilled water with central air source heat pump': 'DOAS_FCU_DCW_ASHP',
|
93
|
+
'DOAS with fan coil district chilled water with district hot water': 'DOAS_FCU_DCW_DHW',
|
94
|
+
'DOAS with fan coil district chilled water with baseboard electric': 'DOAS_FCU_DCW_ElectricBaseboard',
|
95
|
+
'DOAS with fan coil district chilled water with gas unit heaters': 'DOAS_FCU_DCW_GasHeaters',
|
96
|
+
'DOAS with fan coil district chilled water with no heat': 'DOAS_FCU_DCW',
|
97
|
+
'DOAS with VRF': 'DOAS_VRF',
|
98
|
+
'DOAS with water source heat pumps fluid cooler with boiler': 'DOAS_WSHP_FluidCooler_Boiler',
|
99
|
+
'DOAS with water source heat pumps cooling tower with boiler': 'DOAS_WSHP_CoolingTower_Boiler',
|
100
|
+
'DOAS with water source heat pumps with ground source heat pump': 'DOAS_WSHP_GSHP',
|
101
|
+
'DOAS with water source heat pumps district chilled water with district hot water': 'DOAS_WSHP_DCW_DHW',
|
102
|
+
'Baseboard electric': 'ElectricBaseboard',
|
103
|
+
'Baseboard gas boiler': 'BoilerBaseboard',
|
104
|
+
'Baseboard central air source heat pump': 'ASHPBaseboard',
|
105
|
+
'Baseboard district hot water': 'DHWBaseboard',
|
106
|
+
'Direct evap coolers with baseboard electric': 'EvapCoolers_ElectricBaseboard',
|
107
|
+
'Direct evap coolers with baseboard gas boiler': 'EvapCoolers_BoilerBaseboard',
|
108
|
+
'Direct evap coolers with baseboard central air source heat pump': 'EvapCoolers_ASHPBaseboard',
|
109
|
+
'Direct evap coolers with baseboard district hot water': 'EvapCoolers_DHWBaseboard',
|
110
|
+
'Direct evap coolers with forced air furnace': 'EvapCoolers_Furnace',
|
111
|
+
'Direct evap coolers with gas unit heaters': 'EvapCoolers_UnitHeaters',
|
112
|
+
'Direct evap coolers with no heat': 'EvapCoolers',
|
113
|
+
'Fan coil chiller with boiler': 'FCU_Chiller_Boiler',
|
114
|
+
'Fan coil chiller with central air source heat pump': 'FCU_Chiller_ASHP',
|
115
|
+
'Fan coil chiller with district hot water': 'FCU_Chiller_DHW',
|
116
|
+
'Fan coil chiller with baseboard electric': 'FCU_Chiller_ElectricBaseboard',
|
117
|
+
'Fan coil chiller with gas unit heaters': 'FCU_Chiller_GasHeaters',
|
118
|
+
'Fan coil chiller with no heat': 'FCU_Chiller',
|
119
|
+
'Fan coil air-cooled chiller with boiler': 'FCU_ACChiller_Boiler',
|
120
|
+
'Fan coil air-cooled chiller with central air source heat pump': 'FCU_ACChiller_ASHP',
|
121
|
+
'Fan coil air-cooled chiller with district hot water': 'FCU_ACChiller_DHW',
|
122
|
+
'Fan coil air-cooled chiller with baseboard electric': 'FCU_ACChiller_ElectricBaseboard',
|
123
|
+
'Fan coil air-cooled chiller with gas unit heaters': 'FCU_ACChiller_GasHeaters',
|
124
|
+
'Fan coil air-cooled chiller with no heat': 'FCU_ACChiller',
|
125
|
+
'Fan coil district chilled water with boiler': 'FCU_DCW_Boiler',
|
126
|
+
'Fan coil district chilled water with central air source heat pump': 'FCU_DCW_ASHP',
|
127
|
+
'Fan coil district chilled water with district hot water': 'FCU_DCW_DHW',
|
128
|
+
'Fan coil district chilled water with baseboard electric': 'FCU_DCW_ElectricBaseboard',
|
129
|
+
'Fan coil district chilled water with gas unit heaters': 'FCU_DCW_GasHeaters',
|
130
|
+
'Fan coil district chilled water with no heat': 'FCU_DCW',
|
131
|
+
'Gas unit heaters': 'GasHeaters',
|
132
|
+
'Residential AC with baseboard electric': 'ResidentialAC_ElectricBaseboard',
|
133
|
+
'Residential AC with baseboard gas boiler': 'ResidentialAC_BoilerBaseboard',
|
134
|
+
'Residential AC with baseboard central air source heat pump': 'ResidentialAC_ASHPBaseboard',
|
135
|
+
'Residential AC with baseboard district hot water': 'ResidentialAC_DHWBaseboard',
|
136
|
+
'Residential AC with residential forced air furnace': 'ResidentialAC_ResidentialFurnace',
|
137
|
+
'Residential AC with no heat': 'ResidentialAC',
|
138
|
+
'Residential heat pump': 'ResidentialHP',
|
139
|
+
'Residential heat pump with no cooling': 'ResidentialHPNoCool',
|
140
|
+
'Residential forced air furnace': 'ResidentialFurnace',
|
141
|
+
'VRF': 'VRF',
|
142
|
+
'Water source heat pumps fluid cooler with boiler': 'WSHP_FluidCooler_Boiler',
|
143
|
+
'Water source heat pumps cooling tower with boiler': 'WSHP_CoolingTower_Boiler',
|
144
|
+
'Water source heat pumps with ground source heat pump': 'WSHP_GSHP',
|
145
|
+
'Water source heat pumps district chilled water with district hot water': 'WSHP_DCW_DHW',
|
146
|
+
'Window AC with baseboard electric': 'WindowAC_ElectricBaseboard',
|
147
|
+
'Window AC with baseboard gas boiler': 'WindowAC_BoilerBaseboard',
|
148
|
+
'Window AC with baseboard central air source heat pump': 'WindowAC_ASHPBaseboard',
|
149
|
+
'Window AC with baseboard district hot water': 'WindowAC_DHWBaseboard',
|
150
|
+
'Window AC with forced air furnace': 'WindowAC_Furnace',
|
151
|
+
'Window AC with unit heaters': 'WindowAC_GasHeaters',
|
152
|
+
'Window AC with no heat': 'WindowAC'
|
153
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"""Changes associated with version Honeybee schema version 1.43.1."""
|
2
|
+
|
3
|
+
NEW_ABRIDGED_CLASSES = ('FCUwithDOAS', 'VRFwithDOAS', 'WSHPwithDOAS')
|
4
|
+
|
5
|
+
|
6
|
+
def version_1_43_1(model_dict):
|
7
|
+
"""Implement changes in a Model dict to make it compatible with version 1.43.1."""
|
8
|
+
if 'energy' in model_dict['properties']:
|
9
|
+
if 'hvacs' in model_dict['properties']['energy']:
|
10
|
+
for hvac in model_dict['properties']['energy']['hvacs']:
|
11
|
+
if hvac['type'] in NEW_ABRIDGED_CLASSES:
|
12
|
+
hvac['type'] = '{}Abridged'.format(hvac['type'])
|
13
|
+
if 'economizer_type' in hvac and hvac['economizer_type'] == 'Inferred':
|
14
|
+
hvac['economizer_type'] = 'NoEconomizer'
|
15
|
+
for prop in ('sensible_heat_recovery', 'latent_heat_recovery'):
|
16
|
+
if prop in hvac and not isinstance(hvac[prop], (float, int)):
|
17
|
+
hvac[prop] = 0
|
18
|
+
return model_dict
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"""Changes associated with version Honeybee schema version 1.43.2."""
|
2
|
+
UPDATED_CONSTRUCTS = ('OpaqueConstructionAbridged', 'WindowConstructionAbridged')
|
3
|
+
|
4
|
+
|
5
|
+
def version_1_43_2(model_dict):
|
6
|
+
"""Implement changes in a Model dict to make it compatible with version 1.43.2."""
|
7
|
+
if 'energy' in model_dict['properties']:
|
8
|
+
if 'constructions' in model_dict['properties']['energy']:
|
9
|
+
for construct in model_dict['properties']['energy']['constructions']:
|
10
|
+
if construct['type'] in UPDATED_CONSTRUCTS:
|
11
|
+
construct['materials'] = construct.pop('layers')
|
12
|
+
return model_dict
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"""Changes associated with version Honeybee schema version 1.43.5."""
|
2
|
+
|
3
|
+
|
4
|
+
def version_1_43_5(model_dict):
|
5
|
+
"""Implement changes in a Model dict to make it compatible with version 1.43.5."""
|
6
|
+
if 'radiance' in model_dict['properties']:
|
7
|
+
if 'modifiers' in model_dict['properties']['radiance']:
|
8
|
+
for mod in model_dict['properties']['radiance']['modifiers']:
|
9
|
+
if mod['type'] != 'BSDF':
|
10
|
+
mod['type'] = mod['type'].capitalize()
|
11
|
+
return model_dict
|
@@ -0,0 +1,205 @@
|
|
1
|
+
"""Schema for the error objects returned by the validation command"""
|
2
|
+
from pydantic import BaseModel, Field, constr
|
3
|
+
from typing import List, Union
|
4
|
+
from enum import Enum
|
5
|
+
|
6
|
+
from .geometry import Point3D, LineSegment3D, Face3D
|
7
|
+
|
8
|
+
|
9
|
+
class ExtensionTypes(str, Enum):
|
10
|
+
"""Types of Honeybee/Dragonfly extensions."""
|
11
|
+
core = 'Core'
|
12
|
+
radiance = 'Radiance'
|
13
|
+
energy = 'Energy'
|
14
|
+
|
15
|
+
|
16
|
+
class ObjectTypes(str, Enum):
|
17
|
+
"""Types of Honeybee objects."""
|
18
|
+
shade = 'Shade'
|
19
|
+
aperture = 'Aperture'
|
20
|
+
door = 'Door'
|
21
|
+
sub_face = 'SubFace'
|
22
|
+
face = 'Face'
|
23
|
+
room = 'Room'
|
24
|
+
sensor_grid = 'SensorGrid'
|
25
|
+
view = 'View'
|
26
|
+
modifier = 'Modifier'
|
27
|
+
modifier_set = 'ModifierSet'
|
28
|
+
material = 'Material'
|
29
|
+
construction = 'Construction'
|
30
|
+
construction_set = 'ConstructionSet'
|
31
|
+
schedule_type_limit = 'ScheduleTypeLimit'
|
32
|
+
schedule = 'Schedule'
|
33
|
+
program_type = 'ProgramType'
|
34
|
+
hvac = 'HVAC'
|
35
|
+
shw = 'SHW'
|
36
|
+
roof_spec = 'RoofSpecification'
|
37
|
+
room_2d = 'Room2D'
|
38
|
+
story = 'Story'
|
39
|
+
building = 'Building'
|
40
|
+
|
41
|
+
|
42
|
+
class ParentTypes(str, Enum):
|
43
|
+
"""Types of Honeybee objects that can be parents."""
|
44
|
+
aperture = 'Aperture'
|
45
|
+
door = 'Door'
|
46
|
+
face = 'Face'
|
47
|
+
room = 'Room'
|
48
|
+
story = 'Story'
|
49
|
+
building = 'Building'
|
50
|
+
|
51
|
+
|
52
|
+
class ValidationParent(BaseModel):
|
53
|
+
|
54
|
+
type: constr(regex='^ValidationParent$') = 'ValidationParent'
|
55
|
+
|
56
|
+
parent_type: ParentTypes = Field(
|
57
|
+
...,
|
58
|
+
description='Text for the type of object that the parent is.'
|
59
|
+
)
|
60
|
+
|
61
|
+
id: str = Field(
|
62
|
+
...,
|
63
|
+
regex=r'^[.A-Za-z0-9_-]+$',
|
64
|
+
min_length=1,
|
65
|
+
max_length=100,
|
66
|
+
description='Text string for the unique ID of the parent object.'
|
67
|
+
)
|
68
|
+
|
69
|
+
name: str = Field(
|
70
|
+
default=None,
|
71
|
+
description='Display name of the parent object.'
|
72
|
+
)
|
73
|
+
|
74
|
+
|
75
|
+
class ValidationError(BaseModel):
|
76
|
+
|
77
|
+
type: constr(regex='^ValidationError$') = 'ValidationError'
|
78
|
+
|
79
|
+
code: str = Field(
|
80
|
+
...,
|
81
|
+
min_length=6,
|
82
|
+
max_length=6,
|
83
|
+
regex=r'([0-9]+)',
|
84
|
+
description='Text with 6 digits for the error code. The first two digits '
|
85
|
+
'indicate whether the error is a core honeybee error (00) vs. an extension '
|
86
|
+
'error (any non-zero number). The second two digits indicate the nature '
|
87
|
+
'of the error (00 is an identifier error, 01 is a geometry error, 02 is an '
|
88
|
+
'adjacency error). The third two digits are used to give a unique ID to '
|
89
|
+
'each condition moving upwards from more specific/detailed objects/errors '
|
90
|
+
'to coarser/more abstract objects/errors. A full list of error codes can '
|
91
|
+
'be found here: https://docs.pollination.solutions/user-manual/rhino-plugin/'
|
92
|
+
'troubleshooting/help-with-modeling-error-codes'
|
93
|
+
)
|
94
|
+
|
95
|
+
error_type: str = Field(
|
96
|
+
...,
|
97
|
+
description='A human-readable version of the error code, typically not more '
|
98
|
+
'than five words long.'
|
99
|
+
)
|
100
|
+
|
101
|
+
extension_type: ExtensionTypes = Field(
|
102
|
+
...,
|
103
|
+
description='Text for the Honeybee extension from which the error originated '
|
104
|
+
'(from the ExtensionTypes enumeration).'
|
105
|
+
)
|
106
|
+
|
107
|
+
element_type: ObjectTypes = Field(
|
108
|
+
...,
|
109
|
+
description='Text for the type of object that caused the error.'
|
110
|
+
)
|
111
|
+
|
112
|
+
element_id: List[
|
113
|
+
constr(min_length=1, max_length=100, regex=r'^[^,;!\n\t]+$')
|
114
|
+
] = Field(
|
115
|
+
...,
|
116
|
+
description='A list of text strings for the unique object IDs that caused '
|
117
|
+
'the error. The list typically contains a single item but there are some types '
|
118
|
+
'errors that stem from multiple objects like mis-matched area adjacencies '
|
119
|
+
'or overlapping Room geometries. Note that the IDs in this list can be the '
|
120
|
+
'identifier of a core object like a Room or a Face or it can be for an '
|
121
|
+
'extension object like a SensorGrid or a Construction.'
|
122
|
+
)
|
123
|
+
|
124
|
+
element_name: List[str] = Field(
|
125
|
+
default=None,
|
126
|
+
description='A list of text strings for the display names of the objects '
|
127
|
+
'that caused the error.'
|
128
|
+
)
|
129
|
+
|
130
|
+
message: str = Field(
|
131
|
+
...,
|
132
|
+
description='Text for the error message with a detailed description of '
|
133
|
+
'what exactly is invalid about the element.'
|
134
|
+
)
|
135
|
+
|
136
|
+
parents: List[List[ValidationParent]] = Field(
|
137
|
+
default=None,
|
138
|
+
description='A list lists where each sub-list corresponds to one of the '
|
139
|
+
'objects in the element_id property. Each sub-list contains information for '
|
140
|
+
'the parent objects of the object that caused the error. '
|
141
|
+
'This can be useful for locating the problematic object in the model. '
|
142
|
+
'This will contain 1 item for a Face with a parent Room. It will contain 2 '
|
143
|
+
'for an Aperture that has a parent Face with a parent Room.'
|
144
|
+
)
|
145
|
+
|
146
|
+
top_parents: List[ValidationParent] = Field(
|
147
|
+
default=None,
|
148
|
+
description='A list of top-level parent objects for the specific case of '
|
149
|
+
'duplicate child-object identifiers, where several top-level parents '
|
150
|
+
'are involved.'
|
151
|
+
)
|
152
|
+
|
153
|
+
helper_geometry: List[Union[Point3D, LineSegment3D, Face3D]] = Field(
|
154
|
+
default=None,
|
155
|
+
description='An optional list of geometry objects that helps illustrate '
|
156
|
+
'where exactly issues with invalid geometry exist within the Honeybee object. '
|
157
|
+
'Examples include the naked and non-manifold line segments for non-solid Room '
|
158
|
+
'geometries, the points of self-intersection for cases of self-intersecting '
|
159
|
+
'geometry and out-of-plane vertices for non-planar objects. Oftentimes, '
|
160
|
+
'zooming directly to these helper geometries will help end users understand '
|
161
|
+
'invalid situations in their model faster than simple zooming to the invalid '
|
162
|
+
'Honeybee object in its totality.'
|
163
|
+
)
|
164
|
+
|
165
|
+
|
166
|
+
class ValidationReport(BaseModel):
|
167
|
+
|
168
|
+
type: constr(regex='^ValidationReport$') = 'ValidationReport'
|
169
|
+
|
170
|
+
app_name: str = Field(
|
171
|
+
'Honeybee',
|
172
|
+
description='Text string for the name of the application that performed '
|
173
|
+
'the validation. This is typically either Honeybee or Dragonfly.'
|
174
|
+
)
|
175
|
+
|
176
|
+
app_version: str = Field(
|
177
|
+
...,
|
178
|
+
regex=r'([0-9]+)\.([0-9]+)\.([0-9]+)',
|
179
|
+
description='Text string for the version of honeybee-core or dragonfly-core '
|
180
|
+
'that performed the validation.'
|
181
|
+
)
|
182
|
+
|
183
|
+
schema_version: str = Field(
|
184
|
+
...,
|
185
|
+
regex=r'([0-9]+)\.([0-9]+)\.([0-9]+)',
|
186
|
+
description='Text string for the version of honeybee-schema or dragonfly-schema '
|
187
|
+
'that performed the validation.'
|
188
|
+
)
|
189
|
+
|
190
|
+
valid: bool = Field(
|
191
|
+
...,
|
192
|
+
description='Boolean to note whether the Model is valid or not.'
|
193
|
+
)
|
194
|
+
|
195
|
+
fatal_error: str = Field(
|
196
|
+
'',
|
197
|
+
description='A text string containing an exception if the Model failed to '
|
198
|
+
'serialize. It will be an empty string if serialization was successful.'
|
199
|
+
)
|
200
|
+
|
201
|
+
errors: List[ValidationError] = Field(
|
202
|
+
default=None,
|
203
|
+
description='A list of objects for each error that was discovered in the model. '
|
204
|
+
'This will be an empty list or None if no errors were found.'
|
205
|
+
)
|
@@ -0,0 +1,108 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: honeybee-schema
|
3
|
+
Version: 1.59.1
|
4
|
+
Summary: Honeybee Data-Model Objects
|
5
|
+
Home-page: https://github.com/ladybug-tools-in2/honeybee-schema
|
6
|
+
Author: Ladybug Tools
|
7
|
+
Author-email: info@ladybug.tools
|
8
|
+
License: BSD-3-Clause
|
9
|
+
Classifier: Programming Language :: Python :: 3.7
|
10
|
+
Classifier: Programming Language :: Python :: 3.8
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
15
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
16
|
+
Classifier: Operating System :: OS Independent
|
17
|
+
Description-Content-Type: text/markdown
|
18
|
+
License-File: LICENSE
|
19
|
+
Requires-Dist: pydantic-openapi-helper>=0.2.10
|
20
|
+
Requires-Dist: honeybee-standards==2.0.7
|
21
|
+
Provides-Extra: cli
|
22
|
+
Requires-Dist: click>=7.1.2; extra == "cli"
|
23
|
+
Dynamic: author
|
24
|
+
Dynamic: author-email
|
25
|
+
Dynamic: classifier
|
26
|
+
Dynamic: description
|
27
|
+
Dynamic: description-content-type
|
28
|
+
Dynamic: home-page
|
29
|
+
Dynamic: license
|
30
|
+
Dynamic: license-file
|
31
|
+
Dynamic: provides-extra
|
32
|
+
Dynamic: requires-dist
|
33
|
+
Dynamic: summary
|
34
|
+
|
35
|
+
[](https://travis-ci.com/ladybug-tools/honeybee-schema)
|
36
|
+
[](https://coveralls.io/github/ladybug-tools/honeybee-schema)
|
37
|
+
|
38
|
+
[](https://www.python.org/downloads/release/python-370/)
|
39
|
+
|
40
|
+
# honeybee-schema
|
41
|
+
|
42
|
+
Honeybee Data-Model Objects
|
43
|
+
|
44
|
+
This code was partially developed under the [Wells Fargo Innovation Incubator grant](https://newsroom.wf.com/press-release/community/five-clean-tech-startups-added-wells-fargo-innovation-incubator) with help from the
|
45
|
+
[OpenStudio Team](https://github.com/NREL/OpenStudio) at [NREL](https://www.nrel.gov/).
|
46
|
+
|
47
|
+
# Installation
|
48
|
+
|
49
|
+
To install the core library use:
|
50
|
+
|
51
|
+
`pip install -U honeybee-schema`
|
52
|
+
|
53
|
+
If you want to also include the command line interface use:
|
54
|
+
|
55
|
+
`pip install -U honeybee-schema[cli]`
|
56
|
+
|
57
|
+
## QuickStart
|
58
|
+
|
59
|
+
```python
|
60
|
+
import honeybee_schema
|
61
|
+
|
62
|
+
```
|
63
|
+
|
64
|
+
## API Documentation
|
65
|
+
|
66
|
+
[Schema Overview](https://github.com/ladybug-tools/honeybee-schema/wiki)
|
67
|
+
|
68
|
+
[Model Schema Specification](https://ladybug-tools.github.io/honeybee-schema/model.html)
|
69
|
+
|
70
|
+
[Energy Simulation Parameter Schema Specification](https://ladybug-tools.github.io/honeybee-schema/simulation-parameter.html)
|
71
|
+
|
72
|
+
## Local Development
|
73
|
+
|
74
|
+
1. Clone this repo locally
|
75
|
+
|
76
|
+
```console
|
77
|
+
git clone git@github.com:ladybug-tools/honeybee-schema
|
78
|
+
|
79
|
+
# or
|
80
|
+
|
81
|
+
git clone https://github.com/ladybug-tools/honeybee-schema
|
82
|
+
```
|
83
|
+
|
84
|
+
2. Install dependencies:
|
85
|
+
|
86
|
+
```console
|
87
|
+
cd honeybee-schema
|
88
|
+
pip install -r dev-requirements.txt
|
89
|
+
pip install -r requirements.txt
|
90
|
+
```
|
91
|
+
|
92
|
+
3. Run Tests:
|
93
|
+
|
94
|
+
```console
|
95
|
+
python -m pytest tests/
|
96
|
+
```
|
97
|
+
|
98
|
+
4. Generate Documentation:
|
99
|
+
|
100
|
+
```python
|
101
|
+
python ./docs.py
|
102
|
+
```
|
103
|
+
|
104
|
+
5. Generate Sample Files:
|
105
|
+
|
106
|
+
```python
|
107
|
+
python ./scripts/export_samples.py
|
108
|
+
```
|
@@ -0,0 +1,57 @@
|
|
1
|
+
honeybee_schema/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
2
|
+
honeybee_schema/__main__.py,sha256=nrssPcHvCjap2S-GPfz6tBTaUBSRsgJJDxyblqenu1s,76
|
3
|
+
honeybee_schema/_base.py,sha256=KfvJxFJzIVZkjjLB6R4og5ML0NbJ1BtdFqfiVSrgRfQ,1508
|
4
|
+
honeybee_schema/altnumber.py,sha256=QWlm5qBibEmwvQBy7lpmVue2jbZprSpf1LiB9M4OtMU,397
|
5
|
+
honeybee_schema/boundarycondition.py,sha256=hY6Oem5zNpnr42owbEzy3GIdfqvZJ4nme0qOA20JXXQ,2807
|
6
|
+
honeybee_schema/cli.py,sha256=QhhgNsgz55FBmJuHrg16nQoEmzD9ZIL6ugD2lofQqMg,4387
|
7
|
+
honeybee_schema/comparison.py,sha256=I2CCDmPLl-awBhGkSVd8b9yZncn8u2wUE-wBePrbB3c,8006
|
8
|
+
honeybee_schema/geometry.py,sha256=7oJQXdYYd3qECmIlKh7-XcwCibs1c2eLAS_SItJ7N10,4203
|
9
|
+
honeybee_schema/model.py,sha256=5Idl98dPPnXJAPPfMSEfZYjtS1ohKjwChJrpqHndlUk,14643
|
10
|
+
honeybee_schema/projectinfo.py,sha256=Jz9FYNSpWS282o4uNQxcL1Mo2J-fKT0gqBckk5h-Cio,2759
|
11
|
+
honeybee_schema/validation.py,sha256=Z3RCfZgyjE0f8rru7EM4xu7gunDFec0p62QGlkmaXbc,7081
|
12
|
+
honeybee_schema/doe2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
honeybee_schema/doe2/properties.py,sha256=h3GNDH3D7LojdlIdBSBG5OBXXkdSs0hyCW4ZJy9oOzE,2855
|
14
|
+
honeybee_schema/energy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
+
honeybee_schema/energy/_base.py,sha256=drAW-DguuwB2ahBGG1lboGcfJKJESnXjyAWicMtjQ-U,2305
|
16
|
+
honeybee_schema/energy/construction.py,sha256=1HldU4TO5vy4y4oCFt7GPsLBRaOJSbDPQgQX6OrWsWU,12742
|
17
|
+
honeybee_schema/energy/constructionset.py,sha256=6g9zncSAP3iGQsDpTYidqsTl4MXTT4Wwf4Ovy0CFwAA,11971
|
18
|
+
honeybee_schema/energy/daylight.py,sha256=gODnHpi3LL-HXFY4bbNBm66Gnb5IzmSZDI7Wobj-HUc,2108
|
19
|
+
honeybee_schema/energy/designday.py,sha256=as5OCxNAqU549NRlCQms10X1ylFr-oayTKH0wGUa9wY,5971
|
20
|
+
honeybee_schema/energy/generator.py,sha256=ap36GHtwkKTbJJV5SOP_bDSy4vm8hEU92BYQhK-nmrQ,7002
|
21
|
+
honeybee_schema/energy/global_constructionset.py,sha256=Dym_36OPtxSJof0_UMDB98zDio6ubh56j9nfbWIk6_c,4958
|
22
|
+
honeybee_schema/energy/internalmass.py,sha256=QBHGnoem9ZxwoU7Dii02HGCPDJt13Q6yIMEU9vcdZPc,771
|
23
|
+
honeybee_schema/energy/load.py,sha256=E106Pn-fn_4qCW8M1Y9RX6rG9iBeu0k7MY9x-dJi_3Q,21204
|
24
|
+
honeybee_schema/energy/material.py,sha256=vdfvTaTpMRDoomzb91ujLdbxOxFY_pHdTfXxiNbD91k,28276
|
25
|
+
honeybee_schema/energy/programtype.py,sha256=1keIS_BX8pKSUtjE4PJ1PP-Tbs5KQVwtsQ0RNdiACUE,4307
|
26
|
+
honeybee_schema/energy/properties.py,sha256=W8gBBGKKSnsKivG38QEe07vHk3zhwZ7sqVeNU5ewJV0,15074
|
27
|
+
honeybee_schema/energy/schedule.py,sha256=iVfKsWBcI3AL7g-P9bzaGcnrLUjzWQPxzXGg5LKfF9Q,12700
|
28
|
+
honeybee_schema/energy/shw.py,sha256=3ReuIgjm6RnLVFeB3MxfRf8vphr13uJr58aFlBu1OIs,2148
|
29
|
+
honeybee_schema/energy/simulation.py,sha256=aihALsF9GzgmBSH62IADL-OIm3l48XURVzqfqvI1AgU,14920
|
30
|
+
honeybee_schema/energy/ventcool.py,sha256=gm9pnXT0p8e2V_AkAJeNJUhFI4s2c3sLv7RkaF-olNk,14813
|
31
|
+
honeybee_schema/energy/hvac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
+
honeybee_schema/energy/hvac/_template.py,sha256=BlAP6FB1Da7ccVs8A-JPgSM2ubS2sWOXMrvXs-7LQek,1353
|
33
|
+
honeybee_schema/energy/hvac/allair.py,sha256=PT72Kdyk3gzxbrThZD7D12G3VGTwIVUScKXW0mxFHKE,9934
|
34
|
+
honeybee_schema/energy/hvac/detailed.py,sha256=LCuhwRWiq8D5fBKk4L9g3is04bMljC_2GjZ844NkFsg,919
|
35
|
+
honeybee_schema/energy/hvac/doas.py,sha256=PNZo4JHVtme4ZgycdfcGnEYZkwB9iBU3tHHLq6Wg22Y,11406
|
36
|
+
honeybee_schema/energy/hvac/heatcool.py,sha256=wS4H9y2_FuyPJVUqSbTWlGpkGPYMDJSaUsvFJ3B6xKE,11765
|
37
|
+
honeybee_schema/energy/hvac/idealair.py,sha256=xlFHasXsWeZvdVh3c5yCTl0t0Et73d6rpagJM7P21eU,3824
|
38
|
+
honeybee_schema/radiance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
+
honeybee_schema/radiance/_base.py,sha256=y6AzAQ4JANbvr-s7fFKqGqu9kZW1wtxbCKxzzNv2Ah8,756
|
40
|
+
honeybee_schema/radiance/asset.py,sha256=MLsgL0JRIKLG9qIzMiam8ohoni7n6DTEs0W1DpTnboE,6907
|
41
|
+
honeybee_schema/radiance/global_modifierset.py,sha256=gFb2Eny55pZNQ9-hTRKrbYQ9oEUDKC_kHzm8zpMlkUA,3195
|
42
|
+
honeybee_schema/radiance/modifier.py,sha256=QKst8qEb3r3gz77jQK1ngn9A-rj5yhLN8kS-I9LqaA8,11153
|
43
|
+
honeybee_schema/radiance/modifierset.py,sha256=uUWE3aVzHCh7OQw2lB4cu7sKwakfM2LBY77u4L9Nec0,10336
|
44
|
+
honeybee_schema/radiance/properties.py,sha256=afsKahr6ePtinq8xvnvKPOSlm6M48pK_mFLMzUkA4Lc,5299
|
45
|
+
honeybee_schema/radiance/state.py,sha256=xVwMR35ylrISJpfI8jkInJtlskGKj5koYArnTT4tXv0,2157
|
46
|
+
honeybee_schema/updater/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
honeybee_schema/updater/version_1_39_12.py,sha256=gmCU7z43NYnZJfhVudpATwau3zCCDqMzzuKFlkCwPMY,742
|
48
|
+
honeybee_schema/updater/version_1_40_1.py,sha256=Fx70M8H9HZ_apCkdFn6njEd6lG9ZWrld1b-_E9kKYMw,9999
|
49
|
+
honeybee_schema/updater/version_1_43_1.py,sha256=0kZ1z7MzBhToljgOUCGWaTW1mq2F72oS39jn9sEf5mU,932
|
50
|
+
honeybee_schema/updater/version_1_43_2.py,sha256=XnPCdpjVN3hFzZqIIEjX4BYTtCxuIYCuO96n_y64aVw,617
|
51
|
+
honeybee_schema/updater/version_1_43_5.py,sha256=ci790Qh7xtRtgMj_RdldBXCScwiBkvMt2K1Mpe7oWQE,499
|
52
|
+
honeybee_schema-1.59.1.dist-info/licenses/LICENSE,sha256=EwA6Jt85TmMNyAsFb5GWv-tZ0vGYo8hZHBMcI391qjw,1709
|
53
|
+
honeybee_schema-1.59.1.dist-info/METADATA,sha256=OwzXOHOJ7OfayFGZy5UJtuzHJkXp1kXoWETNcK2KZmw,2955
|
54
|
+
honeybee_schema-1.59.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
55
|
+
honeybee_schema-1.59.1.dist-info/entry_points.txt,sha256=suHpy6-iPhAylFCa-KopQHRJIwLhTCIVO2NHMzdEn8M,61
|
56
|
+
honeybee_schema-1.59.1.dist-info/top_level.txt,sha256=rTScYvlcOBkdc0is-F6Q3tRkmy-vf4bMTJGXzsxI2sA,16
|
57
|
+
honeybee_schema-1.59.1.dist-info/RECORD,,
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Honeybee Schema, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, Ladybug Tools LLC
|
2
|
+
and other contributors. All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
5
|
+
following conditions are met:
|
6
|
+
|
7
|
+
(1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
8
|
+
disclaimer.
|
9
|
+
|
10
|
+
(2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
11
|
+
disclaimer in the documentation and/or other materials provided with the distribution.
|
12
|
+
|
13
|
+
(3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
|
14
|
+
derived from this software without specific prior written permission from the respective party.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
17
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
|
19
|
+
STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
20
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
21
|
+
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
22
|
+
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
23
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1 @@
|
|
1
|
+
honeybee_schema
|