openepd 6.5.1__tar.gz → 6.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 (142) hide show
  1. {openepd-6.5.1 → openepd-6.7.0}/PKG-INFO +1 -1
  2. {openepd-6.5.1 → openepd-6.7.0}/pyproject.toml +1 -1
  3. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/__version__.py +1 -1
  4. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/industry_epd.py +21 -1
  5. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/org.py +18 -8
  6. {openepd-6.5.1 → openepd-6.7.0}/LICENSE +0 -0
  7. {openepd-6.5.1 → openepd-6.7.0}/README.md +0 -0
  8. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/__init__.py +0 -0
  9. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/__init__.py +0 -0
  10. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/average_dataset/__init__.py +0 -0
  11. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
  12. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
  13. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/base_sync_client.py +0 -0
  14. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/category/__init__.py +0 -0
  15. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/category/dto.py +0 -0
  16. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/category/sync_api.py +0 -0
  17. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/common.py +0 -0
  18. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/__init__.py +0 -0
  19. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/base.py +0 -0
  20. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/common.py +0 -0
  21. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/meta.py +0 -0
  22. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/mf.py +0 -0
  23. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/dto/params.py +0 -0
  24. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/epd/__init__.py +0 -0
  25. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/epd/dto.py +0 -0
  26. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/epd/sync_api.py +0 -0
  27. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/errors.py +0 -0
  28. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/pcr/__init__.py +0 -0
  29. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/pcr/sync_api.py +0 -0
  30. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/sync_client.py +0 -0
  31. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/test/__init__.py +0 -0
  32. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/api/utils.py +0 -0
  33. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/bundle/__init__.py +0 -0
  34. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/bundle/base.py +0 -0
  35. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/bundle/model.py +0 -0
  36. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/bundle/reader.py +0 -0
  37. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/bundle/writer.py +0 -0
  38. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/compat/__init__.py +0 -0
  39. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/compat/compat_functional_validators.py +0 -0
  40. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/compat/pydantic.py +0 -0
  41. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/__init__.py +0 -0
  42. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/base.py +0 -0
  43. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/category.py +0 -0
  44. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/common.py +0 -0
  45. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/declaration.py +0 -0
  46. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/epd.py +0 -0
  47. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/factory.py +0 -0
  48. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/generic_estimate.py +0 -0
  49. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/geography.py +0 -0
  50. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/lcia.py +0 -0
  51. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/pcr.py +0 -0
  52. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/README.md +0 -0
  53. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/__init__.py +0 -0
  54. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/asphalt.py +0 -0
  55. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/base.py +0 -0
  56. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/concrete.py +0 -0
  57. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/enums.py +0 -0
  58. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/__init__.py +0 -0
  59. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/accessories.py +0 -0
  60. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/aggregates.py +0 -0
  61. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/aluminium.py +0 -0
  62. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/asphalt.py +0 -0
  63. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/bulk_materials.py +0 -0
  64. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
  65. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/cladding.py +0 -0
  66. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/cmu.py +0 -0
  67. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/concrete.py +0 -0
  68. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
  69. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/electrical.py +0 -0
  70. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
  71. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/electricity.py +0 -0
  72. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/finishes.py +0 -0
  73. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
  74. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/furnishings.py +0 -0
  75. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/grouting.py +0 -0
  76. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/manufacturing_inputs.py +0 -0
  77. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/masonry.py +0 -0
  78. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/material_handling.py +0 -0
  79. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/mechanical.py +0 -0
  80. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
  81. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
  82. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/openings.py +0 -0
  83. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/other_electrical_equipment.py +0 -0
  84. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/other_materials.py +0 -0
  85. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/plumbing.py +0 -0
  86. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/precast_concrete.py +0 -0
  87. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/sheathing.py +0 -0
  88. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/steel.py +0 -0
  89. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
  90. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/utility_piping.py +0 -0
  91. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/wood.py +0 -0
  92. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/range/wood_joists.py +0 -0
  93. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/__init__.py +0 -0
  94. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/accessories.py +0 -0
  95. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/aggregates.py +0 -0
  96. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/aluminium.py +0 -0
  97. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/asphalt.py +0 -0
  98. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
  99. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
  100. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/cladding.py +0 -0
  101. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/cmu.py +0 -0
  102. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/common.py +0 -0
  103. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/concrete.py +0 -0
  104. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
  105. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
  106. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
  107. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
  108. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/electrical.py +0 -0
  109. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
  110. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/electricity.py +0 -0
  111. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/finishes.py +0 -0
  112. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
  113. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/furnishings.py +0 -0
  114. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/grouting.py +0 -0
  115. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/manufacturing_inputs.py +0 -0
  116. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/masonry.py +0 -0
  117. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/material_handling.py +0 -0
  118. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/mechanical.py +0 -0
  119. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
  120. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
  121. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
  122. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
  123. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/openings.py +0 -0
  124. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/other_electrical_equipment.py +0 -0
  125. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/other_materials.py +0 -0
  126. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/plumbing.py +0 -0
  127. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
  128. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/sheathing.py +0 -0
  129. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/steel.py +0 -0
  130. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
  131. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/utility_piping.py +0 -0
  132. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/wood.py +0 -0
  133. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/specs/singular/wood_joists.py +0 -0
  134. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/standard.py +0 -0
  135. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/validation/__init__.py +0 -0
  136. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/validation/common.py +0 -0
  137. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/validation/enum.py +0 -0
  138. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/validation/numbers.py +0 -0
  139. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/validation/quantity.py +0 -0
  140. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/model/versioning.py +0 -0
  141. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/patch_pydantic.py +0 -0
  142. {openepd-6.5.1 → openepd-6.7.0}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 6.5.1
3
+ Version: 6.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 = "6.5.1"
3
+ version = "6.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 = "6.5.1"
16
+ VERSION = "6.7.0"
@@ -15,8 +15,10 @@
15
15
  #
16
16
  from typing import Literal
17
17
 
18
+ from pydantic.v1 import NonNegativeInt
19
+
18
20
  from openepd.compat.pydantic import pyd
19
- from openepd.model.base import BaseDocumentFactory, OpenEpdDoctypes
21
+ from openepd.model.base import BaseDocumentFactory, BaseOpenEpdSchema, OpenEpdDoctypes
20
22
  from openepd.model.common import WithAltIdsMixin, WithAttachmentsMixin
21
23
  from openepd.model.declaration import (
22
24
  AverageDatasetMixin,
@@ -31,6 +33,22 @@ from openepd.model.org import Org
31
33
  from openepd.model.versioning import OpenEpdVersions, Version
32
34
 
33
35
 
36
+ class SampleSize(BaseOpenEpdSchema):
37
+ """Sample size."""
38
+
39
+ products: NonNegativeInt | None = pyd.Field(
40
+ default=None,
41
+ description="Count of separate products or results that were included in this industry EPD, "
42
+ "and over which the standard deviation was calculated",
43
+ )
44
+ plants: NonNegativeInt | None = pyd.Field(
45
+ default=None, description="Count of unique manufacturing plants that submitted data for this Industry EPD"
46
+ )
47
+ manufacturers: NonNegativeInt | None = pyd.Field(
48
+ default=None, description="Count of unique manufacturing companies that submitted data for this Industry EPD"
49
+ )
50
+
51
+
34
52
  class IndustryEpdRef(RefBase, title="Industry EPD (Ref)"):
35
53
  """Reference (short) version of Industry average EPD object."""
36
54
 
@@ -58,6 +76,8 @@ class IndustryEpdPreviewV0(
58
76
  default="openIndustryEpd",
59
77
  )
60
78
 
79
+ sample_size: SampleSize | None = None
80
+
61
81
  publishers: list[Org] | None = pyd.Field(description="")
62
82
  manufacturers: list[Org] | None = pyd.Field(description="Participating manufacturers")
63
83
 
@@ -63,8 +63,8 @@ class Org(WithAttachmentsMixin, WithAltIdsMixin, OrgRef):
63
63
  )
64
64
 
65
65
 
66
- class Plant(WithAttachmentsMixin, WithAltIdsMixin, BaseOpenEpdSchema):
67
- """Represent a manufacturing plant."""
66
+ class PlantRef(BaseOpenEpdSchema):
67
+ """Represents Plant with minimal data."""
68
68
 
69
69
  id: str | None = pyd.Field(
70
70
  description="Plus code (aka Open Location Code) of plant's location and "
@@ -72,6 +72,22 @@ class Plant(WithAttachmentsMixin, WithAltIdsMixin, BaseOpenEpdSchema):
72
72
  example="865P2W3V+3W.interface.com",
73
73
  default=None,
74
74
  )
75
+ name: str | None = pyd.Field(
76
+ max_length=200,
77
+ description="Manufacturer's name for plant. Recommended < 40 chars",
78
+ example="Dalton, GA",
79
+ default=None,
80
+ )
81
+ ref: ReferenceStr | None = pyd.Field(
82
+ default=None,
83
+ example="https://openepd.buildingtransparency.org/api/orgs/c-change-labs.com",
84
+ description="Reference to this Plant's JSON object",
85
+ )
86
+
87
+
88
+ class Plant(PlantRef, WithAttachmentsMixin, WithAltIdsMixin):
89
+ """Represent a manufacturing plant."""
90
+
75
91
  pluscode: str | None = pyd.Field(
76
92
  default=None,
77
93
  description="(deprecated) Plus code (aka Open Location Code) of plant's location",
@@ -85,12 +101,6 @@ class Plant(WithAttachmentsMixin, WithAltIdsMixin, BaseOpenEpdSchema):
85
101
  default=None, description="(deprecated) Longitude of the plant location. Use 'location' fields instead."
86
102
  )
87
103
  owner: Org | None = pyd.Field(description="Organization that owns the plant", default=None)
88
- name: str | None = pyd.Field(
89
- max_length=200,
90
- description="Manufacturer's name for plant. Recommended < 40 chars",
91
- example="Dalton, GA",
92
- default=None,
93
- )
94
104
  address: str | None = pyd.Field(
95
105
  max_length=200,
96
106
  default=None,
File without changes
File without changes
File without changes
File without changes