honeybee-radiance-postprocess 0.4.462__py2.py3-none-any.whl → 0.4.464__py2.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.
@@ -0,0 +1 @@
1
+ """honeybee-radiance-postprocess library."""
@@ -0,0 +1,474 @@
1
+ """Functions for BREEAM post-processing."""
2
+ from typing import Union
3
+ from pathlib import Path
4
+ import json
5
+ import numpy as np
6
+
7
+ from honeybee.model import Model
8
+ from honeybee_radiance.writer import _filter_by_pattern
9
+
10
+ from ..results.annual_daylight import AnnualDaylight
11
+
12
+
13
+ program_type_metrics = {
14
+ 'BREEAM::Education_buildings::Preschools': [
15
+ {
16
+ 'type': 'Education buildings',
17
+ 'credits': 2,
18
+ 'area': 80,
19
+ 'average_daylight_illuminance': {
20
+ 'illuminance': 300,
21
+ 'hours': 2000
22
+ },
23
+ 'minimum_daylight_illuminance': {
24
+ 'illuminance': 90,
25
+ 'hours': 2000
26
+ }
27
+ }
28
+ ],
29
+ 'BREEAM::Education_buildings::Higher_education': [
30
+ {
31
+ 'type': 'Education buildings',
32
+ 'credits': 2,
33
+ 'area': 80,
34
+ 'average_daylight_illuminance': {
35
+ 'illuminance': 300,
36
+ 'hours': 2000
37
+ },
38
+ 'minimum_daylight_illuminance': {
39
+ 'illuminance': 90,
40
+ 'hours': 2000
41
+ }
42
+ },
43
+ {
44
+ 'type': 'Education buildings',
45
+ 'credits': 1,
46
+ 'area': 60,
47
+ 'average_daylight_illuminance': {
48
+ 'illuminance': 300,
49
+ 'hours': 2000
50
+ },
51
+ 'minimum_daylight_illuminance': {
52
+ 'illuminance': 90,
53
+ 'hours': 2000
54
+ }
55
+ }
56
+ ],
57
+ 'BREEAM::Healthcare_buildings::Staff_and_public_areas': [
58
+ {
59
+ 'type': 'Healthcare buildings',
60
+ 'credits': 2,
61
+ 'area': 80,
62
+ 'average_daylight_illuminance': {
63
+ 'illuminance': 300,
64
+ 'hours': 2650
65
+ },
66
+ 'minimum_daylight_illuminance': {
67
+ 'illuminance': 90,
68
+ 'hours': 2650
69
+ }
70
+ },
71
+ {
72
+ 'type': 'Healthcare buildings',
73
+ 'credits': 1,
74
+ 'area': 80,
75
+ 'average_daylight_illuminance': {
76
+ 'illuminance': 300,
77
+ 'hours': 2000
78
+ },
79
+ 'minimum_daylight_illuminance': {
80
+ 'illuminance': 90,
81
+ 'hours': 2000
82
+ }
83
+ }
84
+ ],
85
+ 'BREEAM::Healthcare_buildings::Patients_areas_and_consulting_rooms': [
86
+ {
87
+ 'type': 'Healthcare buildings',
88
+ 'credits': 2,
89
+ 'area': 80,
90
+ 'average_daylight_illuminance': {
91
+ 'illuminance': 300,
92
+ 'hours': 2650
93
+ },
94
+ 'minimum_daylight_illuminance': {
95
+ 'illuminance': 90,
96
+ 'hours': 2650
97
+ }
98
+ },
99
+ {
100
+ 'type': 'Healthcare buildings',
101
+ 'credits': 1,
102
+ 'area': 80,
103
+ 'average_daylight_illuminance': {
104
+ 'illuminance': 300,
105
+ 'hours': 2000
106
+ },
107
+ 'minimum_daylight_illuminance': {
108
+ 'illuminance': 90,
109
+ 'hours': 2000
110
+ }
111
+ }
112
+ ],
113
+ 'BREEAM::Multi_residential_buildings::Kitchen': [
114
+ {
115
+ 'type': 'Multi-residential buildings',
116
+ 'credits': 2,
117
+ 'area': 100,
118
+ 'average_daylight_illuminance': {
119
+ 'illuminance': 100,
120
+ 'hours': 3450
121
+ },
122
+ 'minimum_daylight_illuminance': {
123
+ 'illuminance': 30,
124
+ 'hours': 3450
125
+ }
126
+ }
127
+ ],
128
+ 'BREEAM::Multi_residential_buildings::Living_rooms_dining_rooms_studies': [
129
+ {
130
+ 'type': 'Multi-residential buildings',
131
+ 'credits': 2,
132
+ 'area': 100,
133
+ 'average_daylight_illuminance': {
134
+ 'illuminance': 100,
135
+ 'hours': 3450
136
+ },
137
+ 'minimum_daylight_illuminance': {
138
+ 'illuminance': 30,
139
+ 'hours': 3450
140
+ }
141
+ }
142
+ ],
143
+ 'BREEAM::Multi_residential_buildings::Non_residential_or_communal_spaces': [
144
+ {
145
+ 'type': 'Multi-residential buildings',
146
+ 'credits': 2,
147
+ 'area': 80,
148
+ 'average_daylight_illuminance': {
149
+ 'illuminance': 200,
150
+ 'hours': 2650
151
+ },
152
+ 'minimum_daylight_illuminance': {
153
+ 'illuminance': 60,
154
+ 'hours': 2650
155
+ }
156
+ }
157
+ ],
158
+ 'BREEAM::Retail_buildings::Sales_areas': [
159
+ {
160
+ 'type': 'Retail buildings',
161
+ 'credits': 1,
162
+ 'area': 35,
163
+ 'average_daylight_illuminance': {
164
+ 'illuminance': 200,
165
+ 'hours': 2650
166
+ },
167
+ 'minimum_daylight_illuminance': {
168
+ 'illuminance': 200,
169
+ 'hours': 2650
170
+ }
171
+ }
172
+ ],
173
+ 'BREEAM::Retail_buildings::Other_occupied_areas': [
174
+ {
175
+ 'type': 'Retail buildings',
176
+ 'credits': 1,
177
+ 'area': 80,
178
+ 'average_daylight_illuminance': {
179
+ 'illuminance': 200,
180
+ 'hours': 2650
181
+ },
182
+ 'minimum_daylight_illuminance': {
183
+ 'illuminance': 60,
184
+ 'hours': 2650
185
+ }
186
+ }
187
+ ],
188
+ 'BREEAM::Prison_buildings::Cells_and_custody_cells': [
189
+ {
190
+ 'type': 'Prison buildings',
191
+ 'credits': 2,
192
+ 'area': 80,
193
+ 'average_daylight_illuminance': {
194
+ 'illuminance': 100,
195
+ 'hours': 3150
196
+ },
197
+ 'minimum_daylight_illuminance': None
198
+ }
199
+ ],
200
+ 'BREEAM::Prison_buildings::Internal_association_or_atrium': [
201
+ {
202
+ 'type': 'Prison buildings',
203
+ 'credits': 2,
204
+ 'area': 80,
205
+ 'average_daylight_illuminance': {
206
+ 'illuminance': 300,
207
+ 'hours': 2650
208
+ },
209
+ 'minimum_daylight_illuminance': {
210
+ 'illuminance': 210,
211
+ 'hours': 2650
212
+ }
213
+ }
214
+ ],
215
+ 'BREEAM::Prison_buildings::Patient_care_spaces': [
216
+ {
217
+ 'type': 'Prison buildings',
218
+ 'credits': 2,
219
+ 'area': 80,
220
+ 'average_daylight_illuminance': {
221
+ 'illuminance': 300,
222
+ 'hours': 2650
223
+ },
224
+ 'minimum_daylight_illuminance': {
225
+ 'illuminance': 210,
226
+ 'hours': 2650
227
+ }
228
+ }
229
+ ],
230
+ 'BREEAM::Prison_buildings::Teaching_lecture_and_seminar_spaces': [
231
+ {
232
+ 'type': 'Prison buildings',
233
+ 'credits': 2,
234
+ 'area': 80,
235
+ 'average_daylight_illuminance': {
236
+ 'illuminance': 300,
237
+ 'hours': 2000
238
+ },
239
+ 'minimum_daylight_illuminance': {
240
+ 'illuminance': 90,
241
+ 'hours': 2000
242
+ }
243
+ }
244
+ ],
245
+ 'BREEAM::Office_buildings::Occupied_spaces': [
246
+ {
247
+ 'type': 'Office buildings',
248
+ 'credits': 2,
249
+ 'area': 80,
250
+ 'average_daylight_illuminance': {
251
+ 'illuminance': 300,
252
+ 'hours': 2000
253
+ },
254
+ 'minimum_daylight_illuminance': {
255
+ 'illuminance': 90,
256
+ 'hours': 2000
257
+ }
258
+ }
259
+ ],
260
+ 'BREEAM::Crèche_buildings::Occupied_spaces': [
261
+ {
262
+ 'type': 'Crèche buildings',
263
+ 'credits': 2,
264
+ 'area': 80,
265
+ 'average_daylight_illuminance': {
266
+ 'illuminance': 300,
267
+ 'hours': 2000
268
+ },
269
+ 'minimum_daylight_illuminance': {
270
+ 'illuminance': 90,
271
+ 'hours': 2000
272
+ }
273
+ }
274
+ ],
275
+ 'BREEAM::Other_buildings::Occupied_spaces': [
276
+ {
277
+ 'type': 'Other buildings',
278
+ 'credits': 1,
279
+ 'area': 80,
280
+ 'average_daylight_illuminance': {
281
+ 'illuminance': 300,
282
+ 'hours': 2000
283
+ },
284
+ 'minimum_daylight_illuminance': {
285
+ 'illuminance': 90,
286
+ 'hours': 2000
287
+ }
288
+ }
289
+ ]
290
+ }
291
+
292
+
293
+ def breeam_daylight_assessment_4b(
294
+ results: Union[str, AnnualDaylight], model: Union[str, Path, Model] = None,
295
+ grids_filter: str = '*', sub_folder: str = None):
296
+ """Calculate credits for BREEAM 4b.
297
+
298
+ Args:
299
+ results: Path to results folder or a Results class object.
300
+ model: A model as a path or a HB Model object. If None, the function
301
+ will look for a model in the parent of the results folder. If a model
302
+ does not exist in this directory the function will raise an error.
303
+ Defaults to None.
304
+ grids_filter: The name of a grid or a pattern to filter the grids.
305
+ Defaults to '*'.
306
+ sub_folder: Relative path for a subfolder to write the output. If None,
307
+ the files will not be written. Defaults to None.
308
+
309
+ Returns:
310
+ Tuple:
311
+ - credit_summary: Summary of each building type.
312
+ - program_summary: Summary of program type / space type.
313
+ """
314
+ if not isinstance(results, AnnualDaylight):
315
+ results = AnnualDaylight(results)
316
+
317
+ grids_info = results._filter_grids(grids_filter=grids_filter)
318
+
319
+ # check to see if there is a HBJSON with sensor grid meshes for areas
320
+ grid_areas = {}
321
+ grid_program_types = {}
322
+ if model is None:
323
+ found_file = False
324
+ for base_file in Path(results.folder).parent.iterdir():
325
+ if base_file.suffix in ('.hbjson', '.hbpkl'):
326
+ hb_model: Model = Model.from_file(base_file)
327
+ found_file = True
328
+ break
329
+ if not found_file:
330
+ raise FileNotFoundError(
331
+ 'Found no hbjson or hbpkl file in parent of results folder.')
332
+ else:
333
+ if isinstance(model, Model):
334
+ hb_model = model
335
+ else:
336
+ hb_model = Model.from_file(model)
337
+
338
+ filt_grids = _filter_by_pattern(
339
+ hb_model.properties.radiance.sensor_grids, filter=grids_filter)
340
+ for s_grid in filt_grids:
341
+ if s_grid.mesh is not None:
342
+ grid_areas[s_grid.identifier] = np.array(s_grid.mesh.face_areas).sum()
343
+ else:
344
+ grid_areas[s_grid.identifier] = None
345
+ hb_room = hb_model.rooms_by_identifier([s_grid.room_identifier])[0]
346
+ try:
347
+ program_type_id = hb_room.properties.energy.program_type.identifier
348
+ except AttributeError as e:
349
+ raise ImportError('honeybee_energy library must be installed to use '
350
+ 'breeam_daylight_assessment method. {}'.format(e))
351
+ if program_type_id not in program_type_metrics:
352
+ program_type_id = 'BREEAM::Office_buildings::Occupied_spaces'
353
+ grid_program_types[s_grid.identifier] = program_type_id
354
+
355
+ if not grid_areas:
356
+ grid_areas = {grid_info['full_id']: None for grid_info in grids_info}
357
+
358
+ type_summary = {}
359
+ for grid_info in grids_info:
360
+ program_type = grid_program_types[grid_info['full_id']]
361
+ if program_type not in type_summary:
362
+ type_summary[program_type] = {}
363
+ type_summary[program_type][grid_info['full_id']] = []
364
+
365
+ array = results._array_from_states(grid_info)
366
+ # calculate average along axis 0 (average for each hour)
367
+ avg_ill = array.mean(axis=0)
368
+
369
+ metrics_list = program_type_metrics[program_type]
370
+ for metrics in metrics_list:
371
+ metrics_summary = {}
372
+ metrics_summary['type'] = metrics['type']
373
+ metrics_summary['area'] = grid_areas[grid_info['full_id']]
374
+ # calculate number of hours where avg. illuminance > target illuminance
375
+ target_ill = metrics['average_daylight_illuminance']['illuminance']
376
+ hrs_abv = (avg_ill >= target_ill).sum()
377
+ # check if value is >= target hours
378
+ target_hrs = metrics['average_daylight_illuminance']['hours']
379
+ avg_comply = hrs_abv >= target_hrs
380
+
381
+ # calculate number of hours where illuminance > target illuminance
382
+ if program_type == 'BREEAM::Prison_buildings::Cells_and_custody_cells':
383
+ minimum_comply = True
384
+ else:
385
+ target_ill = metrics['minimum_daylight_illuminance']['illuminance']
386
+ hrs_abv_target = (array >= target_ill).sum(axis=1)
387
+ # get the minimum, i.e., worst lit point
388
+ worst_lit_point = np.min(hrs_abv_target)
389
+ # check if values is >= target hours
390
+ target_hrs = metrics['minimum_daylight_illuminance']['hours']
391
+ minimum_comply = worst_lit_point >= target_hrs
392
+
393
+ metrics_summary['credits'] = metrics['credits']
394
+ if avg_comply and minimum_comply:
395
+ metrics_summary['comply'] = True
396
+ else:
397
+ metrics_summary['comply'] = False
398
+
399
+ type_summary[program_type][grid_info['full_id']].append(metrics_summary)
400
+
401
+ program_summary = {}
402
+ for program_type, grid_summary in type_summary.items():
403
+ program_summary[program_type] = {}
404
+ program_summary[program_type]['credits'] = 0 # set 0 by default
405
+ program_summary[program_type]['comply'] = False # set False by default
406
+
407
+ metrics_summary = {}
408
+ for grid_id, metrics_list in grid_summary.items():
409
+ for metric in metrics_list:
410
+ if metric['credits'] not in metrics_summary:
411
+ metrics_summary[metric['credits']] = {}
412
+ metrics_summary[metric['credits']]['type'] = metric['type']
413
+ if 'total_area' not in metrics_summary[metric['credits']]:
414
+ metrics_summary[metric['credits']]['total_area'] = 0
415
+ metrics_summary[metric['credits']]['total_area'] += metric['area']
416
+ if 'area_comply' not in metrics_summary[metric['credits']]:
417
+ metrics_summary[metric['credits']]['area_comply'] = 0
418
+ if metric['comply']:
419
+ metrics_summary[metric['credits']]['area_comply'] += metric['area']
420
+
421
+ for credit, metric_summary in metrics_summary.items():
422
+ area_comply_pct = metric_summary['area_comply'] / metric_summary['total_area'] * 100
423
+ metric_summary['area_comply_%'] = area_comply_pct
424
+ for metric in program_type_metrics[program_type]:
425
+ if credit == metric['credits']:
426
+ if area_comply_pct >= metric['area']:
427
+ metric_summary['comply'] = True
428
+ else:
429
+ metric_summary['comply'] = False
430
+
431
+ for credit, metric_summary in metrics_summary.items():
432
+ if metric_summary['comply'] and credit > program_summary[program_type]['credits']:
433
+ program_summary[program_type]['comply'] = True
434
+ program_summary[program_type]['credits'] = credit
435
+ program_summary[program_type]['total_area'] = metric_summary['total_area']
436
+ program_summary[program_type]['area_comply'] = metric_summary['area_comply']
437
+ program_summary[program_type]['area_comply_%'] = metric_summary['area_comply_%']
438
+ program_summary[program_type]['type'] = metric_summary['type']
439
+ else:
440
+ program_summary[program_type]['total_area'] = metric_summary['total_area']
441
+ program_summary[program_type]['area_comply'] = metric_summary['area_comply']
442
+ program_summary[program_type]['area_comply_%'] = metric_summary['area_comply_%']
443
+ program_summary[program_type]['type'] = metric_summary['type']
444
+
445
+ building_type_summary = {}
446
+ for program_type, summary in program_summary.items():
447
+ if summary['type'] not in building_type_summary:
448
+ building_type_summary[summary['type']] = []
449
+ building_type_summary[summary['type']].append(summary)
450
+
451
+ credit_summary = []
452
+ for building_type, summary in building_type_summary.items():
453
+ _building_type_summary = {}
454
+ _building_type_summary['type'] = building_type
455
+ if all([v['comply'] for v in summary]):
456
+ _building_type_summary['comply'] = True
457
+ _building_type_summary['credits'] = min([v['credits'] for v in summary])
458
+ else:
459
+ _building_type_summary['comply'] = False
460
+ _building_type_summary['credits'] = 0
461
+ _building_type_summary['total_area'] = sum([v['total_area'] for v in summary])
462
+
463
+ credit_summary.append(_building_type_summary)
464
+
465
+ if sub_folder:
466
+ folder = Path(sub_folder)
467
+ folder.mkdir(parents=True, exist_ok=True)
468
+
469
+ credit_summary_file = folder.joinpath('summary.json')
470
+ credit_summary_file.write_text(json.dumps(credit_summary, indent=2))
471
+ program_summary_file = folder.joinpath('program_summary.json')
472
+ program_summary_file.write_text(json.dumps(program_summary, indent=2))
473
+
474
+ return credit_summary, program_summary
@@ -0,0 +1,47 @@
1
+ """Commands for BREEAM post-processing."""
2
+ import sys
3
+ import logging
4
+ from pathlib import Path
5
+ import click
6
+
7
+ from honeybee_radiance_postprocess.breeam.breeam import breeam_daylight_assessment_4b
8
+
9
+ _logger = logging.getLogger(__name__)
10
+
11
+
12
+ @click.group(help='Commands for BREEAM post-processing of Radiance results.')
13
+ def breeam():
14
+ pass
15
+
16
+
17
+ @breeam.command('breeam-4b')
18
+ @click.argument(
19
+ 'folder',
20
+ type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True)
21
+ )
22
+ @click.option('--model-file', '-m', help='A Honeybee Model file that was used '
23
+ 'in the simulation.', type=click.Path(
24
+ exists=False, file_okay=True, dir_okay=False, resolve_path=True))
25
+ @click.option(
26
+ '--sub-folder', '-sf', help='Relative path for subfolder to write output '
27
+ 'files.', default='breeam_summary', type=click.Path(
28
+ exists=False, file_okay=False, dir_okay=True, resolve_path=True, path_type=Path)
29
+ )
30
+ def breeam_4b(
31
+ folder, model_file, sub_folder
32
+ ):
33
+ """Calculate metrics for BREEAM.
34
+
35
+ \b
36
+ Args:
37
+ folder: Results folder. This folder is an output folder of annual daylight
38
+ recipe.
39
+ model-file: A Honeybee Model file that was used in the simulation.
40
+ """
41
+ try:
42
+ breeam_daylight_assessment_4b(folder, model=model_file, sub_folder=sub_folder)
43
+ except Exception:
44
+ _logger.exception('Failed to calculate BREEAM metrics.')
45
+ sys.exit(1)
46
+ else:
47
+ sys.exit(0)
@@ -23,6 +23,7 @@ from .two_phase import two_phase
23
23
  from .leed import leed
24
24
  from .abnt import abnt
25
25
  from .well import well
26
+ from .breeam import breeam
26
27
  from ..helper import model_grid_areas, grid_summary
27
28
 
28
29
  _logger = logging.getLogger(__name__)
@@ -36,6 +37,8 @@ post_process.add_command(two_phase)
36
37
  post_process.add_command(leed)
37
38
  post_process.add_command(abnt)
38
39
  post_process.add_command(well)
40
+ post_process.add_command(breeam)
41
+
39
42
 
40
43
  @post_process.command('annual-daylight')
41
44
  @click.argument(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-radiance-postprocess
3
- Version: 0.4.462
3
+ Version: 0.4.464
4
4
  Summary: Postprocessing of Radiance results and matrices
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-radiance-postprocess
6
6
  Author: Ladybug Tools
@@ -13,8 +13,7 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
13
13
  Classifier: Operating System :: OS Independent
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: honeybee-radiance>=1.66.124
17
- Requires-Dist: honeybee-energy>=1.109.14
16
+ Requires-Dist: honeybee-radiance==1.66.125
18
17
  Requires-Dist: numpy>=1.21.6
19
18
 
20
19
  [![Build Status](https://github.com/ladybug-tools/honeybee-radiance-postprocess/actions/workflows/ci.yaml/badge.svg)](https://github.com/ladybug-tools/honeybee-radiance-postprocess/actions)
@@ -13,14 +13,17 @@ honeybee_radiance_postprocess/reader.py,sha256=p4A91amyCI16lRRn0bhZdInsg-qJV0Jas
13
13
  honeybee_radiance_postprocess/type_hints.py,sha256=4R0kZgacQrqzoh8Tq7f8MVzUDzynV-C_jlh80UV6GPE,1122
14
14
  honeybee_radiance_postprocess/util.py,sha256=uxqop4TsUMp8l8iLQf784NJINprHCgj00GZHvTth1C0,5603
15
15
  honeybee_radiance_postprocess/vis_metadata.py,sha256=7ywIgdiuNKcctxifhpy7-Q2oaSX2ngQBeA0Kh7q1Gg0,1780
16
+ honeybee_radiance_postprocess/breeam/__init__.py,sha256=kQXElEqFnLGNnrMSpA51XDHoqBup849FHeAqWASIy6w,45
17
+ honeybee_radiance_postprocess/breeam/breeam.py,sha256=DfxyYPgfxNIbPSFTvIpH4bSMtJ70XPhC_3K87KlcZyM,17100
16
18
  honeybee_radiance_postprocess/cli/__init__.py,sha256=_mYHnIOpH0qJ4QK56SB3qUT2Duuts2GR2U_0t_uE-2s,958
17
19
  honeybee_radiance_postprocess/cli/abnt.py,sha256=RmEjhxdEK6Uks3S10rQs6n8cup9qv036qRwh_wj1taA,15705
20
+ honeybee_radiance_postprocess/cli/breeam.py,sha256=kBe36uCLcbk-y-hmZwKXquG-wVeFJbU9bEGv2x3bgm4,1442
18
21
  honeybee_radiance_postprocess/cli/datacollection.py,sha256=Wb3UX03uW4OUZP7jWHftKfdf3aO_FSXjrnrziR3taf0,4541
19
22
  honeybee_radiance_postprocess/cli/grid.py,sha256=gqnU3-HdggWCUg9mA1RLZJYHM7tH0v6r2E_X2SSkAig,11256
20
23
  honeybee_radiance_postprocess/cli/leed.py,sha256=bxGX2UBehYNcaPJWHL2yEasSP6dATD7B0aNNQOflqqM,3712
21
24
  honeybee_radiance_postprocess/cli/merge.py,sha256=oOqqud3VSo-3f3coDoUILcp78OI4DKxXLWCS1bi3PC4,5752
22
25
  honeybee_radiance_postprocess/cli/mtxop.py,sha256=UZJnjNpPjDmShy1-Mxos4H2vTUqk_yP3ZyaC1_LLFeI,5015
23
- honeybee_radiance_postprocess/cli/postprocess.py,sha256=yUR0J3EQyLRiINcjFfxb-9mUeEm3U-lZefjwq--lvtU,39256
26
+ honeybee_radiance_postprocess/cli/postprocess.py,sha256=ZN7G79gDq3Dag2vUwliFWxxZp-gk3ON2sIm9RSwCXDw,39317
24
27
  honeybee_radiance_postprocess/cli/schedule.py,sha256=6uIy98Co4zm-ZRcELo4Lfx_aN3lNiqPe-BSimXwt1F8,3877
25
28
  honeybee_radiance_postprocess/cli/translate.py,sha256=rwUjjDK_Ttjen4ooAMvugyDN5xfltEEFURDZ_Tb1w-g,7308
26
29
  honeybee_radiance_postprocess/cli/two_phase.py,sha256=xA6ayPv26DM5fuMkLhBMYGklf_j5ymowmncwJGXRgo8,7034
@@ -39,9 +42,9 @@ honeybee_radiance_postprocess/results/annual_irradiance.py,sha256=5zwrr4MNeHUebb
39
42
  honeybee_radiance_postprocess/results/results.py,sha256=ABb_S8kDPruhGkDsfREXMg6K0p8FRhAZ3QIRUZCQPAI,54888
40
43
  honeybee_radiance_postprocess/well/__init__.py,sha256=kQXElEqFnLGNnrMSpA51XDHoqBup849FHeAqWASIy6w,45
41
44
  honeybee_radiance_postprocess/well/well.py,sha256=hsicVYFl-2DR4mtVANzUPu9NKA760elfYoIpOKc9bkQ,17501
42
- honeybee_radiance_postprocess-0.4.462.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
43
- honeybee_radiance_postprocess-0.4.462.dist-info/METADATA,sha256=qmYmfrxTcXr-IeqbvH4yTK6JWv3qRnjG1L5KAUWRK4E,2281
44
- honeybee_radiance_postprocess-0.4.462.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
45
- honeybee_radiance_postprocess-0.4.462.dist-info/entry_points.txt,sha256=gFtVPx6UItXt27GfEZZO00eOZChJJEL6JwGSAB_O3rs,96
46
- honeybee_radiance_postprocess-0.4.462.dist-info/top_level.txt,sha256=4-sFbzy7ewP2EDqJV3jeFlAFx7SuxtoBBELWaKAnLdA,30
47
- honeybee_radiance_postprocess-0.4.462.dist-info/RECORD,,
45
+ honeybee_radiance_postprocess-0.4.464.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
46
+ honeybee_radiance_postprocess-0.4.464.dist-info/METADATA,sha256=IpF1ctFMUawS44zNAyg1BNB0IJnczzo4Vyd3POzLRqE,2240
47
+ honeybee_radiance_postprocess-0.4.464.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
48
+ honeybee_radiance_postprocess-0.4.464.dist-info/entry_points.txt,sha256=gFtVPx6UItXt27GfEZZO00eOZChJJEL6JwGSAB_O3rs,96
49
+ honeybee_radiance_postprocess-0.4.464.dist-info/top_level.txt,sha256=4-sFbzy7ewP2EDqJV3jeFlAFx7SuxtoBBELWaKAnLdA,30
50
+ honeybee_radiance_postprocess-0.4.464.dist-info/RECORD,,