openepd 4.6.1__tar.gz → 4.7.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 (97) hide show
  1. {openepd-4.6.1 → openepd-4.7.0}/PKG-INFO +1 -1
  2. {openepd-4.6.1 → openepd-4.7.0}/pyproject.toml +1 -1
  3. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/__version__.py +1 -1
  4. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/enums.py +59 -0
  5. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/mechanical.py +17 -1
  6. {openepd-4.6.1 → openepd-4.7.0}/LICENSE +0 -0
  7. {openepd-4.6.1 → openepd-4.7.0}/README.md +0 -0
  8. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/__init__.py +0 -0
  9. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/__init__.py +0 -0
  10. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/base_sync_client.py +0 -0
  11. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/category/__init__.py +0 -0
  12. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/category/dto.py +0 -0
  13. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/category/sync_api.py +0 -0
  14. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/common.py +0 -0
  15. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/__init__.py +0 -0
  16. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/base.py +0 -0
  17. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/common.py +0 -0
  18. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/meta.py +0 -0
  19. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/mf.py +0 -0
  20. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/dto/params.py +0 -0
  21. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/epd/__init__.py +0 -0
  22. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/epd/dto.py +0 -0
  23. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/epd/sync_api.py +0 -0
  24. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/errors.py +0 -0
  25. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/pcr/__init__.py +0 -0
  26. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/pcr/sync_api.py +0 -0
  27. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/sync_client.py +0 -0
  28. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/test/__init__.py +0 -0
  29. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/api/utils.py +0 -0
  30. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/bundle/__init__.py +0 -0
  31. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/bundle/base.py +0 -0
  32. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/bundle/model.py +0 -0
  33. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/bundle/reader.py +0 -0
  34. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/bundle/writer.py +0 -0
  35. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/compat/__init__.py +0 -0
  36. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/compat/compat_functional_validators.py +0 -0
  37. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/compat/pydantic.py +0 -0
  38. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/__init__.py +0 -0
  39. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/base.py +0 -0
  40. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/category.py +0 -0
  41. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/common.py +0 -0
  42. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/declaration.py +0 -0
  43. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/epd.py +0 -0
  44. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/factory.py +0 -0
  45. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/generic_estimate.py +0 -0
  46. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/geography.py +0 -0
  47. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/lcia.py +0 -0
  48. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/org.py +0 -0
  49. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/pcr.py +0 -0
  50. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/README.md +0 -0
  51. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/__init__.py +0 -0
  52. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/asphalt.py +0 -0
  53. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/base.py +0 -0
  54. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/concrete.py +0 -0
  55. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/__init__.py +0 -0
  56. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/accessories.py +0 -0
  57. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/aggregates.py +0 -0
  58. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/aluminium.py +0 -0
  59. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/asphalt.py +0 -0
  60. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/bulk_materials.py +0 -0
  61. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/cast_decks_and_underlayment.py +0 -0
  62. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/cladding.py +0 -0
  63. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/cmu.py +0 -0
  64. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/common.py +0 -0
  65. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/concrete.py +0 -0
  66. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/conveying_equipment.py +0 -0
  67. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/electrical.py +0 -0
  68. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py +0 -0
  69. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/electricity.py +0 -0
  70. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/finishes.py +0 -0
  71. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/fire_and_smoke_protection.py +0 -0
  72. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/furnishings.py +0 -0
  73. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/grouting.py +0 -0
  74. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/manufacturing_inputs.py +0 -0
  75. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/masonry.py +0 -0
  76. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/material_handling.py +0 -0
  77. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/mechanical_insulation.py +0 -0
  78. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/network_infrastructure.py +0 -0
  79. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/openings.py +0 -0
  80. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/other_electrical_equipment.py +0 -0
  81. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/other_materials.py +0 -0
  82. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/plumbing.py +0 -0
  83. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/precast_concrete.py +0 -0
  84. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/sheathing.py +0 -0
  85. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/steel.py +0 -0
  86. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/thermal_moisture_protection.py +0 -0
  87. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/utility_piping.py +0 -0
  88. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/wood.py +0 -0
  89. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/specs/generated/wood_joists.py +0 -0
  90. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/standard.py +0 -0
  91. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/validation/__init__.py +0 -0
  92. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/validation/common.py +0 -0
  93. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/validation/numbers.py +0 -0
  94. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/validation/quantity.py +0 -0
  95. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/model/versioning.py +0 -0
  96. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/patch_pydantic.py +0 -0
  97. {openepd-4.6.1 → openepd-4.7.0}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 4.6.1
3
+ Version: 4.7.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 = "4.6.1"
3
+ version = "4.7.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 = "4.6.1"
16
+ VERSION = "4.7.0"
@@ -982,6 +982,65 @@ class HvacHeatExchangersType(StrEnum):
982
982
  SPIRAL = "Spiral"
983
983
 
984
984
 
985
+ class HvacDuctType(StrEnum):
986
+ """
987
+ Hvac duct type.
988
+
989
+ - Flexible: Duckwork that can be bent or adjusted easily. Suitable for tricky, tight spaces where rigid
990
+ ducts cannot be used.
991
+ - Rigid: Stiff ductwork, typically in fixed shapes. Commonly used for main duct runs due to its durability
992
+ and airflow efficiency.
993
+ - Semi-rigid: Less flexible than flexible ducts but not fixed. Balances flexibility and sturdiness,
994
+ useful for certain architectural constraints. Used mostly in residential applications.
995
+ - Ductboard: Insulated panel-type ductwork made from fiberglass or other materials. It provides thermal insulation
996
+ and is used where space is not a constraint.
997
+ """
998
+
999
+ FLEXIBLE = "Flexible"
1000
+ RIGID = "Rigid"
1001
+ SEMI_RIGID = "Semi-rigid"
1002
+ DUCTBOARD = "Ductboard"
1003
+
1004
+
1005
+ class HvacDuctMaterial(StrEnum):
1006
+ """
1007
+ Hvac duct material.
1008
+
1009
+ - Galvanized Steel: coated with a layer of zinc to prevent rust. Very durable and common for both residential
1010
+ and commercial HVAC systems.
1011
+ - Aluminum: lightweight and resistant to corrosion. Uncommon but preferred for special applications due
1012
+ to its ease of handling and installation.
1013
+ - PVC: Plastic ducts suitable for specific environments. Uncommon but used where moisture or chemical resistance
1014
+ is needed. Not for high temperatures.
1015
+ - Fiberglass: Insulated ducts that also absorb sound. Reduces noise and heat loss. Uncommon but suitable
1016
+ for sensitive environments.
1017
+ - Fabric: Ducts made from specialized fabric materials. Used for distributing air uniformly, and in places
1018
+ requiring diffused airflow.
1019
+ """
1020
+
1021
+ GALVANIZED_STEEL = "Galvanized Steel"
1022
+ ALUMINUM = "Aluminum"
1023
+ PVC = "PVC"
1024
+ FIBERGLASS = "Fiberglass"
1025
+ FABRIC = "Fabric"
1026
+
1027
+
1028
+ class HvacDuctShape(StrEnum):
1029
+ """
1030
+ Hvac duct shape.
1031
+
1032
+ - Round: Cylindrical ducts providing efficient airflow. Minimizes friction losses, making it effective for long runs.
1033
+ - Rectangular: Square or rectangular ducts, versatile installation. Common in commercial settings, easier
1034
+ to install in flat spaces.
1035
+ - Oval: Combines attributes of round and rectangular shapes. Provides the benefits of round ducts
1036
+ where space is limited.
1037
+ """
1038
+
1039
+ ROUND = "Round"
1040
+ RECTANGULAR = "Rectangular"
1041
+ OVAL = "Oval"
1042
+
1043
+
985
1044
  class HeatPumpType(StrEnum):
986
1045
  """
987
1046
  Heat pump type.
@@ -23,6 +23,9 @@ from openepd.model.specs.generated.enums import (
23
23
  BoilerConfiguration,
24
24
  BoilerEquipmentFuelType,
25
25
  HeatPumpType,
26
+ HvacDuctMaterial,
27
+ HvacDuctShape,
28
+ HvacDuctType,
26
29
  HvacHeatExchangersType,
27
30
  MechanicalInstallation,
28
31
  MechanicalRefrigerants,
@@ -205,10 +208,22 @@ class HvacVrfSystemsV1(BaseOpenEpdHierarchicalSpec):
205
208
  HvacVrfOutdoor: HvacVrfOutdoorV1 | None = None
206
209
 
207
210
 
211
+ class HvacDuctsV1(BaseOpenEpdHierarchicalSpec):
212
+ """Ducts for HVAC systems performance specification."""
213
+
214
+ _EXT_VERSION = "1.0"
215
+
216
+ shape: HvacDuctShape | None = pyd.Field(default=None, description="Hvac duct shape", example="Rectangular")
217
+ material: HvacDuctMaterial | None = pyd.Field(
218
+ default=None, description="Hvac duct material", example="Galvanized Steel"
219
+ )
220
+ type: HvacDuctType | None = pyd.Field(default=None, description="Hvac duct type", example="Flexible")
221
+
222
+
208
223
  class MechanicalV1(BaseOpenEpdHierarchicalSpec):
209
224
  """Mechanical performance specification."""
210
225
 
211
- _EXT_VERSION = "1.0"
226
+ _EXT_VERSION = "1.1"
212
227
 
213
228
  # Nested specs:
214
229
  HvacAirDiffusers: HvacAirDiffusersV1 | None = None
@@ -222,3 +237,4 @@ class MechanicalV1(BaseOpenEpdHierarchicalSpec):
222
237
  HvacPumps: HvacPumpsV1 | None = None
223
238
  HvacRTUs: HvacRTUsV1 | None = None
224
239
  HvacVrfSystems: HvacVrfSystemsV1 | None = None
240
+ HvacDucts: HvacDuctsV1 | None = None
File without changes
File without changes
File without changes
File without changes