openepd 1.8.0__py3-none-any.whl → 1.9.0__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.
openepd/__version__.py CHANGED
@@ -17,4 +17,4 @@
17
17
  # Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
18
18
  # Find out more at www.BuildingTransparency.org
19
19
  #
20
- VERSION = "1.8.0"
20
+ VERSION = "1.9.0"
@@ -372,7 +372,7 @@ class ConcreteV1Options(BaseOpenEpdSchema):
372
372
  class ReadyMixV1(BaseOpenEpdHierarchicalSpec):
373
373
  """Concretes to be mixed and then poured on-site."""
374
374
 
375
- pass
375
+ _EXT_VERSION = "1.0"
376
376
 
377
377
 
378
378
  class FlowableFillV1(BaseOpenEpdHierarchicalSpec):
@@ -387,7 +387,7 @@ class FlowableFillV1(BaseOpenEpdHierarchicalSpec):
387
387
  under 1200 psi.
388
388
  """
389
389
 
390
- pass
390
+ _EXT_VERSION = "1.0"
391
391
 
392
392
 
393
393
  class OilPatchV1(BaseOpenEpdHierarchicalSpec):
@@ -398,19 +398,19 @@ class OilPatchV1(BaseOpenEpdHierarchicalSpec):
398
398
  flowable fill and grout in that it contains no sand or other aggregates.
399
399
  """
400
400
 
401
- pass
401
+ _EXT_VERSION = "1.0"
402
402
 
403
403
 
404
404
  class ConcretePavingV1(BaseOpenEpdHierarchicalSpec):
405
405
  """Concrete paving."""
406
406
 
407
- pass
407
+ _EXT_VERSION = "1.0"
408
408
 
409
409
 
410
410
  class ShotcreteV1(BaseOpenEpdHierarchicalSpec):
411
411
  """Concretes sprayed on a target."""
412
412
 
413
- pass
413
+ _EXT_VERSION = "1.0"
414
414
 
415
415
 
416
416
  class CementGroutV1(BaseOpenEpdHierarchicalSpec):
@@ -423,6 +423,8 @@ class CementGroutV1(BaseOpenEpdHierarchicalSpec):
423
423
 
424
424
  """
425
425
 
426
+ _EXT_VERSION = "1.0"
427
+
426
428
 
427
429
  class ConcreteV1(BaseOpenEpdHierarchicalSpec):
428
430
  """Concrete spec."""
@@ -21,12 +21,13 @@ from enum import StrEnum
21
21
 
22
22
  import pydantic as pyd
23
23
 
24
+ from openepd.model.base import BaseOpenEpdSchema
24
25
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
25
26
  from openepd.model.validation.numbers import PositiveInt, RatioFloat
26
27
  from openepd.model.validation.quantity import HeatConductanceUCIStr, LengthMmStr, PressureMPaStr, QuantityStr
27
28
 
28
29
 
29
- class SolarHeatGainMixin(BaseOpenEpdHierarchicalSpec):
30
+ class SolarHeatGainMixin(BaseOpenEpdSchema):
30
31
  """Solar heat gain mixin."""
31
32
 
32
33
  solar_heat_gain: RatioFloat | None = pyd.Field(
@@ -38,7 +39,7 @@ class SolarHeatGainMixin(BaseOpenEpdHierarchicalSpec):
38
39
  )
39
40
 
40
41
 
41
- class GlazingOptionsMixin(BaseOpenEpdHierarchicalSpec):
42
+ class GlazingOptionsMixin(BaseOpenEpdSchema):
42
43
  """Glazing options mixin."""
43
44
 
44
45
  low_emissivity: bool | None = pyd.Field(default=None, description="Low Emissivity coatings")
@@ -80,7 +81,7 @@ class GlazingOptionsMixin(BaseOpenEpdHierarchicalSpec):
80
81
  )
81
82
 
82
83
 
83
- class GlassPanesMixin(BaseOpenEpdHierarchicalSpec):
84
+ class GlassPanesMixin(BaseOpenEpdSchema):
84
85
  """Glass panes mixin."""
85
86
 
86
87
  glass_panes: PositiveInt | None = pyd.Field(
@@ -90,7 +91,7 @@ class GlassPanesMixin(BaseOpenEpdHierarchicalSpec):
90
91
  )
91
92
 
92
93
 
93
- class DPRatingMixin(BaseOpenEpdHierarchicalSpec):
94
+ class DPRatingMixin(BaseOpenEpdSchema):
94
95
  """Differential pressure rating mixin."""
95
96
 
96
97
  dp_rating: PressureMPaStr | None = pyd.Field(
@@ -98,7 +99,7 @@ class DPRatingMixin(BaseOpenEpdHierarchicalSpec):
98
99
  )
99
100
 
100
101
 
101
- class AirInfiltrationMixin(BaseOpenEpdHierarchicalSpec):
102
+ class AirInfiltrationMixin(BaseOpenEpdSchema):
102
103
  """Air infiltration mixin."""
103
104
 
104
105
  air_infiltration: QuantityStr | None = pyd.Field(
@@ -108,7 +109,7 @@ class AirInfiltrationMixin(BaseOpenEpdHierarchicalSpec):
108
109
  )
109
110
 
110
111
 
111
- class AssemblyUFactorMixin(BaseOpenEpdHierarchicalSpec):
112
+ class AssemblyUFactorMixin(BaseOpenEpdSchema):
112
113
  """Assembly U factor mixin."""
113
114
 
114
115
  assembly_u_factor: HeatConductanceUCIStr | None = pyd.Field(
@@ -118,7 +119,7 @@ class AssemblyUFactorMixin(BaseOpenEpdHierarchicalSpec):
118
119
  )
119
120
 
120
121
 
121
- class GlassIntendedApplicationMixin(BaseOpenEpdHierarchicalSpec):
122
+ class GlassIntendedApplicationMixin(BaseOpenEpdSchema):
122
123
  """Glass intended application mixin."""
123
124
 
124
125
  glazing_intended_application_curtain_wall: bool | None = pyd.Field(
@@ -165,13 +166,13 @@ class ThermalSeparationEnum(StrEnum):
165
166
  NON_METAL = "Nonmetal"
166
167
 
167
168
 
168
- class ThermalSeparationMixin(BaseOpenEpdHierarchicalSpec):
169
+ class ThermalSeparationMixin(BaseOpenEpdSchema):
169
170
  """Thermal separation mixin."""
170
171
 
171
172
  thermal_separation: ThermalSeparationEnum | None = pyd.Field(default=None, description="Thermal separation.")
172
173
 
173
174
 
174
- class HurricaneResistantMixin(BaseOpenEpdHierarchicalSpec):
175
+ class HurricaneResistantMixin(BaseOpenEpdSchema):
175
176
  """Hurricane resistant mixin."""
176
177
 
177
178
  hurricane_resistant: bool | None = pyd.Field(
@@ -50,12 +50,16 @@ class SteelComposition(StrEnum):
50
50
  class FabricatedOptionsMixin(pyd.BaseModel):
51
51
  """Fabricated options mixin."""
52
52
 
53
+ _EXT_VERSION = "1.0"
54
+
53
55
  fabricated: bool | None = pyd.Field(default=None, description="Fabricated")
54
56
 
55
57
 
56
58
  class WireMeshSteelV1(BaseOpenEpdHierarchicalSpec):
57
59
  """Spec for wire mesh steel."""
58
60
 
61
+ _EXT_VERSION = "1.0"
62
+
59
63
  class Options(BaseOpenEpdSchema, FabricatedOptionsMixin):
60
64
  """Wire Mesh Options."""
61
65
 
@@ -115,6 +119,8 @@ class RebarSteelV1(BaseOpenEpdHierarchicalSpec):
115
119
  class PlateSteelV1(BaseOpenEpdHierarchicalSpec):
116
120
  """Plate Steel Spec."""
117
121
 
122
+ _EXT_VERSION = "1.0"
123
+
118
124
  class Options(BaseOpenEpdSchema, FabricatedOptionsMixin):
119
125
  """Plate Steel Options."""
120
126
 
@@ -126,6 +132,8 @@ class PlateSteelV1(BaseOpenEpdHierarchicalSpec):
126
132
  class HollowV1(BaseOpenEpdHierarchicalSpec):
127
133
  """Hollow Sections Spec."""
128
134
 
135
+ _EXT_VERSION = "1.0"
136
+
129
137
  class Options(FabricatedOptionsMixin, BaseOpenEpdSchema):
130
138
  """Hollow Sections Options."""
131
139
 
@@ -137,6 +145,8 @@ class HollowV1(BaseOpenEpdHierarchicalSpec):
137
145
  class HotRolledV1(BaseOpenEpdHierarchicalSpec):
138
146
  """Hot Rolled spec."""
139
147
 
148
+ _EXT_VERSION = "1.0"
149
+
140
150
  class Options(FabricatedOptionsMixin, BaseOpenEpdSchema):
141
151
  """Hot Rolled options."""
142
152
 
@@ -69,7 +69,9 @@ def validate_unit_factory(dimensionality: OpenEPDUnit | str):
69
69
  # for abitrary non-standard quantity
70
70
  QuantityStr: TypeAlias = Annotated[str, pyd.Field()]
71
71
  PressureMPaStr: TypeAlias = Annotated[str, pyd.Field(example="30 MPa")]
72
+ MassKgStr: TypeAlias = Annotated[str, pyd.Field(example="30 kg")]
72
73
  LengthMmStr: TypeAlias = Annotated[str, pyd.Field(example="30 mm")]
74
+ AreaM2Str: TypeAlias = Annotated[str, pyd.Field(example="12 m2")]
73
75
  LengthMStr: TypeAlias = Annotated[str, pyd.Field(example="30 m")]
74
76
  TemperatureCStr: TypeAlias = Annotated[str, pyd.Field(example="45 C")]
75
77
  HeatConductanceUCIStr: TypeAlias = Annotated[str, pyd.Field(example="0.3 U")]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 1.8.0
3
+ Version: 1.9.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,5 +1,5 @@
1
1
  openepd/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
2
- openepd/__version__.py,sha256=6YlL51CiEXjMXGC4aYqdXMGp923puMgij54LxJ2lhek,855
2
+ openepd/__version__.py,sha256=jnF1KQQH-oe7r7Nthg1ws4gaTnagjiXOX84RVcGM0XA,855
3
3
  openepd/api/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
4
4
  openepd/api/base_sync_client.py,sha256=JcNpWsGoIK_1Eg27CAQd7nIjbcfD56jQ1nS6B48Q0cI,21142
5
5
  openepd/api/category/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
@@ -40,18 +40,18 @@ openepd/model/specs/__init__.py,sha256=nNs2nu1DIKyFC2A-Wc6Zk2VguSti3bC0gMpjop692
40
40
  openepd/model/specs/aluminium.py,sha256=UqTX1gigGNgR9jWi4TEM-bKVGlZ_MBkdsLx4H1-H7KA,2246
41
41
  openepd/model/specs/asphalt.py,sha256=lBHTultMZqWXe9u-inGzcZRBkvW6axFZ10REZv-OBys,3533
42
42
  openepd/model/specs/base.py,sha256=S2KmHpBjjZnJ67FS3VJBA3aQ0a440OmhFFTqM8ZEOMM,2681
43
- openepd/model/specs/concrete.py,sha256=Hu6PxoyfRAeDGInMfHayOc8FZc8w5FS3tUCKxdBpOxM,23097
44
- openepd/model/specs/glass.py,sha256=Zn8cKTGxhoQujtv4F7HtfMkZugV5DMt_HQ6dw0sUugs,14865
45
- openepd/model/specs/steel.py,sha256=n9hnOwJ8ZixVdd9M-R_wHego35qWinGe8W184EwHASo,6334
43
+ openepd/model/specs/concrete.py,sha256=I5_KVLkHeMvOrdJRY3TOeSVQ9lQZXcaLu0zHP1RJO1M,23203
44
+ openepd/model/specs/glass.py,sha256=gsqTTylaDZTi1U1GQDvmIV08m3h-1uq3iQIm1rvWpJI,14824
45
+ openepd/model/specs/steel.py,sha256=u2Lyu69y0bewghfz3JcrKVjKc5bZJKAljA356_EKgWc,6464
46
46
  openepd/model/specs/wood.py,sha256=ehKJqqW9VfNKgM1S3gazfNNL4Af4SKZBm7HttAjokZQ,5128
47
47
  openepd/model/standard.py,sha256=YjxpC9nyz6LM8m3z1s5S0exJ1qvA3n59-FBoScg-FL0,1519
48
48
  openepd/model/validation/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
49
49
  openepd/model/validation/common.py,sha256=afJrWSvxMf8s9Y80-bG67Fp6W5siqtciMJ3Z6nUOPAI,2636
50
50
  openepd/model/validation/numbers.py,sha256=60Z9hT8nQwJHvUL7k5nBZsHxxWhaIxNKVbW3BnHS8zM,1088
51
- openepd/model/validation/quantity.py,sha256=-JGwdeSWuBSgtUizoSOg-6t3NFaGuumn5Ngd01rYxPs,2873
51
+ openepd/model/validation/quantity.py,sha256=yYI-vJzhZTTMlHfZqZzxTgEziXp_WeIouIo7etntFfI,3005
52
52
  openepd/model/versioning.py,sha256=fpj45RmphEI5u9fKZLI8FWa83cjH-wkeIU1RLLLwmX8,4700
53
53
  openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- openepd-1.8.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
55
- openepd-1.8.0.dist-info/METADATA,sha256=r3C2sR1Zz5kmEkaZQbnYg6LKvXK3HFidysHpUOPepcU,7762
56
- openepd-1.8.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
57
- openepd-1.8.0.dist-info/RECORD,,
54
+ openepd-1.9.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
55
+ openepd-1.9.0.dist-info/METADATA,sha256=RnFS7P2ijW63ly6LP2-dvJeYC07V1fh8dQwBoJVmf-k,7762
56
+ openepd-1.9.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
57
+ openepd-1.9.0.dist-info/RECORD,,