openepd 6.11.0__tar.gz → 6.12.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.
Files changed (142) hide show
  1. {openepd-6.11.0 → openepd-6.12.0}/PKG-INFO +1 -1
  2. {openepd-6.11.0 → openepd-6.12.0}/pyproject.toml +1 -1
  3. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/__version__.py +1 -1
  4. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/furnishings.py +21 -1
  5. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/furnishings.py +34 -1
  6. {openepd-6.11.0 → openepd-6.12.0}/LICENSE +0 -0
  7. {openepd-6.11.0 → openepd-6.12.0}/README.md +0 -0
  8. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/__init__.py +0 -0
  9. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/__init__.py +0 -0
  10. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/average_dataset/__init__.py +0 -0
  11. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
  12. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
  13. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/base_sync_client.py +0 -0
  14. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/category/__init__.py +0 -0
  15. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/category/dto.py +0 -0
  16. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/category/sync_api.py +0 -0
  17. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/common.py +0 -0
  18. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/__init__.py +0 -0
  19. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/base.py +0 -0
  20. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/common.py +0 -0
  21. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/meta.py +0 -0
  22. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/mf.py +0 -0
  23. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/dto/params.py +0 -0
  24. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/epd/__init__.py +0 -0
  25. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/epd/dto.py +0 -0
  26. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/epd/sync_api.py +0 -0
  27. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/errors.py +0 -0
  28. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/pcr/__init__.py +0 -0
  29. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/pcr/sync_api.py +0 -0
  30. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/sync_client.py +0 -0
  31. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/test/__init__.py +0 -0
  32. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/api/utils.py +0 -0
  33. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/bundle/__init__.py +0 -0
  34. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/bundle/base.py +0 -0
  35. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/bundle/model.py +0 -0
  36. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/bundle/reader.py +0 -0
  37. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/bundle/writer.py +0 -0
  38. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/compat/__init__.py +0 -0
  39. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/compat/compat_functional_validators.py +0 -0
  40. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/compat/pydantic.py +0 -0
  41. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/__init__.py +0 -0
  42. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/base.py +0 -0
  43. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/category.py +0 -0
  44. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/common.py +0 -0
  45. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/declaration.py +0 -0
  46. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/epd.py +0 -0
  47. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/factory.py +0 -0
  48. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/generic_estimate.py +0 -0
  49. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/geography.py +0 -0
  50. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/industry_epd.py +0 -0
  51. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/lcia.py +0 -0
  52. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/org.py +0 -0
  53. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/pcr.py +0 -0
  54. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/README.md +0 -0
  55. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/__init__.py +0 -0
  56. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/asphalt.py +0 -0
  57. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/base.py +0 -0
  58. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/concrete.py +0 -0
  59. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/enums.py +0 -0
  60. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/__init__.py +0 -0
  61. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/accessories.py +0 -0
  62. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/aggregates.py +0 -0
  63. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/aluminium.py +0 -0
  64. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/asphalt.py +0 -0
  65. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/bulk_materials.py +0 -0
  66. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
  67. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/cladding.py +0 -0
  68. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/cmu.py +0 -0
  69. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/concrete.py +0 -0
  70. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
  71. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/electrical.py +0 -0
  72. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
  73. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/electricity.py +0 -0
  74. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/finishes.py +0 -0
  75. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
  76. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/grouting.py +0 -0
  77. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/manufacturing_inputs.py +0 -0
  78. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/masonry.py +0 -0
  79. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/material_handling.py +0 -0
  80. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/mechanical.py +0 -0
  81. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
  82. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
  83. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/openings.py +0 -0
  84. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/other_electrical_equipment.py +0 -0
  85. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/other_materials.py +0 -0
  86. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/plumbing.py +0 -0
  87. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/precast_concrete.py +0 -0
  88. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/sheathing.py +0 -0
  89. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/steel.py +0 -0
  90. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
  91. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/utility_piping.py +0 -0
  92. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/wood.py +0 -0
  93. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/range/wood_joists.py +0 -0
  94. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/__init__.py +0 -0
  95. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/accessories.py +0 -0
  96. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/aggregates.py +0 -0
  97. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/aluminium.py +0 -0
  98. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/asphalt.py +0 -0
  99. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
  100. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
  101. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/cladding.py +0 -0
  102. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/cmu.py +0 -0
  103. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/common.py +0 -0
  104. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/concrete.py +0 -0
  105. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
  106. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
  107. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
  108. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
  109. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/electrical.py +0 -0
  110. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
  111. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/electricity.py +0 -0
  112. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/finishes.py +0 -0
  113. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
  114. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/grouting.py +0 -0
  115. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/manufacturing_inputs.py +0 -0
  116. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/masonry.py +0 -0
  117. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/material_handling.py +0 -0
  118. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/mechanical.py +0 -0
  119. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
  120. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
  121. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
  122. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
  123. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/openings.py +0 -0
  124. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/other_electrical_equipment.py +0 -0
  125. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/other_materials.py +0 -0
  126. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/plumbing.py +0 -0
  127. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
  128. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/sheathing.py +0 -0
  129. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/steel.py +0 -0
  130. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
  131. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/utility_piping.py +0 -0
  132. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/wood.py +0 -0
  133. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/specs/singular/wood_joists.py +0 -0
  134. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/standard.py +0 -0
  135. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/validation/__init__.py +0 -0
  136. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/validation/common.py +0 -0
  137. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/validation/enum.py +0 -0
  138. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/validation/numbers.py +0 -0
  139. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/validation/quantity.py +0 -0
  140. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/model/versioning.py +0 -0
  141. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/patch_pydantic.py +0 -0
  142. {openepd-6.11.0 → openepd-6.12.0}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 6.11.0
3
+ Version: 6.12.0
4
4
  Summary: Python library to work with OpenEPD format
5
5
  Home-page: https://github.com/cchangelabs/openepd
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openepd"
3
- version = "6.11.0"
3
+ version = "6.12.0"
4
4
  license = "Apache-2.0"
5
5
  description = "Python library to work with OpenEPD format"
6
6
  authors = ["C-Change Labs <support@c-change-labs.com>"]
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- VERSION = "6.11.0"
16
+ VERSION = "6.12.0"
@@ -36,9 +36,10 @@ __all__ = (
36
36
 
37
37
 
38
38
  from openepd.compat.pydantic import pyd
39
+ from openepd.model.common import RangeInt, RangeRatioFloat
39
40
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
40
41
  from openepd.model.specs.enums import CountertopMaterial
41
- from openepd.model.validation.quantity import AmountRangeLengthMm
42
+ from openepd.model.validation.quantity import AmountRangeAreaM2, AmountRangeLengthMm, AmountRangeVolume
42
43
 
43
44
 
44
45
  class DemountablePartitionTrackRangeV1(BaseOpenEpdHierarchicalSpec):
@@ -225,6 +226,25 @@ class FurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
225
226
 
226
227
  _EXT_VERSION = "1.1"
227
228
 
229
+ functional_floor_area_m2: AmountRangeAreaM2 | None = pyd.Field(
230
+ default=None, title="Functional Floor Area", description="The floor area that the product occupies."
231
+ )
232
+ work_surface_area_m2: AmountRangeAreaM2 | None = pyd.Field(
233
+ default=None, title="Work Surface Area", description="The usable work surface area that the product provides."
234
+ )
235
+ functional_storage_volume_m3: AmountRangeVolume | None = pyd.Field(
236
+ default=None, title="Functional Storage Volume", description=""
237
+ )
238
+ functional_seating_capacity: RangeInt | None = pyd.Field(
239
+ default=1,
240
+ title="Functional Seating Capacity",
241
+ description="Intended number of individuals the product seats. This value is used in calculating impact per functional unit.",
242
+ )
243
+ installation_waste_factor: RangeRatioFloat | None = pyd.Field(
244
+ default=0.01,
245
+ title="Installation Waste Factor",
246
+ description="Typical increase in impacts to account for installation waste.",
247
+ )
228
248
  Chairs: ChairsRangeV1 | None = None
229
249
  Countertops: CountertopsRangeV1 | None = None
230
250
  DemountablePartitions: DemountablePartitionsRangeV1 | None = None
@@ -16,7 +16,8 @@
16
16
  from openepd.compat.pydantic import pyd
17
17
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
18
  from openepd.model.specs.enums import CountertopMaterial
19
- from openepd.model.validation.quantity import LengthMmStr
19
+ from openepd.model.validation.numbers import RatioFloat
20
+ from openepd.model.validation.quantity import AreaM2Str, LengthMmStr, VolumeStr
20
21
 
21
22
 
22
23
  class DemountablePartitionTrackV1(BaseOpenEpdHierarchicalSpec):
@@ -154,6 +155,38 @@ class FurnishingsV1(BaseOpenEpdHierarchicalSpec):
154
155
 
155
156
  _EXT_VERSION = "1.1"
156
157
 
158
+ # Own fields:
159
+ functional_floor_area_m2: AreaM2Str | None = pyd.Field(
160
+ default=None,
161
+ title="Functional Floor Area",
162
+ description="The floor area that the product occupies.",
163
+ example="1 m2",
164
+ )
165
+ work_surface_area_m2: AreaM2Str | None = pyd.Field(
166
+ default=None,
167
+ title="Work Surface Area",
168
+ description="The usable work surface area that the product provides.",
169
+ example="1 m2",
170
+ )
171
+ functional_storage_volume_m3: VolumeStr | None = pyd.Field(
172
+ default=None,
173
+ title="Functional Storage Volume",
174
+ description="",
175
+ example="1 m3",
176
+ )
177
+ functional_seating_capacity: pyd.NonNegativeInt | None = pyd.Field(
178
+ default=1,
179
+ title="Functional Seating Capacity",
180
+ description="Intended number of individuals the product seats. This value is used in calculating impact per functional unit.",
181
+ example=1,
182
+ )
183
+ installation_waste_factor: RatioFloat | None = pyd.Field(
184
+ default=0.01,
185
+ title="Installation Waste Factor",
186
+ description="Typical increase in impacts to account for installation waste.",
187
+ example=0.01,
188
+ )
189
+
157
190
  # Nested specs:
158
191
  Chairs: ChairsV1 | None = None
159
192
  Countertops: CountertopsV1 | None = None
File without changes
File without changes
File without changes