openepd 6.8.0__tar.gz → 6.9.1__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.8.0 → openepd-6.9.1}/PKG-INFO +1 -1
  2. {openepd-6.8.0 → openepd-6.9.1}/pyproject.toml +1 -1
  3. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/__version__.py +1 -1
  4. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/base.py +3 -3
  5. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/asphalt.py +4 -1
  6. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/enums.py +2 -0
  7. {openepd-6.8.0 → openepd-6.9.1}/LICENSE +0 -0
  8. {openepd-6.8.0 → openepd-6.9.1}/README.md +0 -0
  9. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/__init__.py +0 -0
  10. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/__init__.py +0 -0
  11. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/average_dataset/__init__.py +0 -0
  12. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
  13. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
  14. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/base_sync_client.py +0 -0
  15. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/category/__init__.py +0 -0
  16. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/category/dto.py +0 -0
  17. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/category/sync_api.py +0 -0
  18. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/common.py +0 -0
  19. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/__init__.py +0 -0
  20. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/base.py +0 -0
  21. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/common.py +0 -0
  22. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/meta.py +0 -0
  23. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/mf.py +0 -0
  24. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/dto/params.py +0 -0
  25. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/epd/__init__.py +0 -0
  26. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/epd/dto.py +0 -0
  27. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/epd/sync_api.py +0 -0
  28. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/errors.py +0 -0
  29. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/pcr/__init__.py +0 -0
  30. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/pcr/sync_api.py +0 -0
  31. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/sync_client.py +0 -0
  32. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/test/__init__.py +0 -0
  33. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/api/utils.py +0 -0
  34. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/bundle/__init__.py +0 -0
  35. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/bundle/base.py +0 -0
  36. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/bundle/model.py +0 -0
  37. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/bundle/reader.py +0 -0
  38. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/bundle/writer.py +0 -0
  39. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/compat/__init__.py +0 -0
  40. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/compat/compat_functional_validators.py +0 -0
  41. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/compat/pydantic.py +0 -0
  42. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/__init__.py +0 -0
  43. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/category.py +0 -0
  44. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/common.py +0 -0
  45. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/declaration.py +0 -0
  46. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/epd.py +0 -0
  47. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/factory.py +0 -0
  48. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/generic_estimate.py +0 -0
  49. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/geography.py +0 -0
  50. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/industry_epd.py +0 -0
  51. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/lcia.py +0 -0
  52. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/org.py +0 -0
  53. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/pcr.py +0 -0
  54. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/README.md +0 -0
  55. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/__init__.py +0 -0
  56. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/base.py +0 -0
  57. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/concrete.py +0 -0
  58. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/__init__.py +0 -0
  59. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/accessories.py +0 -0
  60. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/aggregates.py +0 -0
  61. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/aluminium.py +0 -0
  62. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/asphalt.py +0 -0
  63. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/bulk_materials.py +0 -0
  64. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
  65. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/cladding.py +0 -0
  66. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/cmu.py +0 -0
  67. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/concrete.py +0 -0
  68. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
  69. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/electrical.py +0 -0
  70. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
  71. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/electricity.py +0 -0
  72. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/finishes.py +0 -0
  73. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
  74. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/furnishings.py +0 -0
  75. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/grouting.py +0 -0
  76. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/manufacturing_inputs.py +0 -0
  77. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/masonry.py +0 -0
  78. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/material_handling.py +0 -0
  79. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/mechanical.py +0 -0
  80. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
  81. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
  82. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/openings.py +0 -0
  83. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/other_electrical_equipment.py +0 -0
  84. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/other_materials.py +0 -0
  85. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/plumbing.py +0 -0
  86. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/precast_concrete.py +0 -0
  87. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/sheathing.py +0 -0
  88. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/steel.py +0 -0
  89. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
  90. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/utility_piping.py +0 -0
  91. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/wood.py +0 -0
  92. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/range/wood_joists.py +0 -0
  93. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/__init__.py +0 -0
  94. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/accessories.py +0 -0
  95. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/aggregates.py +0 -0
  96. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/aluminium.py +0 -0
  97. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/asphalt.py +0 -0
  98. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
  99. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
  100. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/cladding.py +0 -0
  101. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/cmu.py +0 -0
  102. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/common.py +0 -0
  103. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/concrete.py +0 -0
  104. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
  105. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
  106. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
  107. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
  108. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/electrical.py +0 -0
  109. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
  110. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/electricity.py +0 -0
  111. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/finishes.py +0 -0
  112. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
  113. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/furnishings.py +0 -0
  114. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/grouting.py +0 -0
  115. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/manufacturing_inputs.py +0 -0
  116. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/masonry.py +0 -0
  117. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/material_handling.py +0 -0
  118. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/mechanical.py +0 -0
  119. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
  120. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
  121. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
  122. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
  123. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/openings.py +0 -0
  124. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/other_electrical_equipment.py +0 -0
  125. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/other_materials.py +0 -0
  126. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/plumbing.py +0 -0
  127. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
  128. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/sheathing.py +0 -0
  129. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/steel.py +0 -0
  130. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
  131. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/utility_piping.py +0 -0
  132. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/wood.py +0 -0
  133. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/specs/singular/wood_joists.py +0 -0
  134. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/standard.py +0 -0
  135. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/validation/__init__.py +0 -0
  136. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/validation/common.py +0 -0
  137. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/validation/enum.py +0 -0
  138. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/validation/numbers.py +0 -0
  139. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/validation/quantity.py +0 -0
  140. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/model/versioning.py +0 -0
  141. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/patch_pydantic.py +0 -0
  142. {openepd-6.8.0 → openepd-6.9.1}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 6.8.0
3
+ Version: 6.9.1
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.8.0"
3
+ version = "6.9.1"
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.8.0"
16
+ VERSION = "6.9.1"
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright 2024 by C Change Labs Inc. www.c-change-labs.com
2
+ # Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
5
5
  # you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ from enum import StrEnum
18
18
  import json
19
19
  from typing import Any, Callable, ClassVar, Generic, Optional, Type, TypeAlias, TypeVar
20
20
 
21
- from cqd import open_xpd_uuid # type:ignore[import-untyped]
21
+ from cqd import open_xpd_uuid # type:ignore[import-untyped,ignore-not-found]
22
22
 
23
23
  from openepd.compat.pydantic import pyd, pyd_generics
24
24
  from openepd.model.validation.common import validate_version_compatibility, validate_version_format
@@ -117,7 +117,7 @@ class BaseOpenEpdSchema(pyd.BaseModel):
117
117
  if value is None:
118
118
  return None # type: ignore
119
119
  if issubclass(target_type, pyd.BaseModel) and isinstance(value, dict):
120
- return target_type.construct(**value) # type: ignore
120
+ return target_type.parse_obj(value) # type: ignore[return-value]
121
121
  elif isinstance(value, target_type):
122
122
  return value
123
123
  raise ValueError(f"Cannot convert {value} to {target_type}")
@@ -35,12 +35,15 @@ class AsphaltGradation(StrEnum):
35
35
  Dense_graded = "Dense-graded"
36
36
  Open_graded = "Open-graded"
37
37
  Gap_graded = "Gap-graded"
38
+ Permeable = "Permeable"
39
+ Porous = "Porous"
40
+ Other = "Other"
38
41
 
39
42
 
40
43
  class AsphaltV1(BaseOpenEpdHierarchicalSpec):
41
44
  """Asphalt spec."""
42
45
 
43
- _EXT_VERSION = "1.0"
46
+ _EXT_VERSION = "1.1"
44
47
 
45
48
  asphalt_aggregate_size_max: LengthMmStr | None = pyd.Field(
46
49
  default=None, example="5mm", description="Max aggregate size"
@@ -1479,11 +1479,13 @@ class AsphaltMixType(StrEnum):
1479
1479
 
1480
1480
  - WMA: WMA
1481
1481
  - HMA: HMA
1482
+ - CCPR: CCPR
1482
1483
 
1483
1484
  """
1484
1485
 
1485
1486
  WMA = "WMA"
1486
1487
  HMA = "HMA"
1488
+ CCPR = "CCPR"
1487
1489
 
1488
1490
 
1489
1491
  class EngineeredTimberSpecies(StrEnum):
File without changes
File without changes
File without changes
File without changes