mat3ra-esse 2025.8.6.post1__py3-none-any.whl → 2025.8.9.post0__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.

Potentially problematic release.


This version of mat3ra-esse might be problematic. Click here for more details.

Files changed (27) hide show
  1. mat3ra/esse/data/examples.py +1 -1
  2. mat3ra/esse/data/schemas.py +1 -1
  3. mat3ra/esse/models/core/reusable/coordinate_conditions/__init__.py +54 -5
  4. mat3ra/esse/models/core/reusable/coordinate_conditions/box.py +1 -1
  5. mat3ra/esse/models/core/reusable/coordinate_conditions/cylinder.py +25 -0
  6. mat3ra/esse/models/core/reusable/coordinate_conditions/plane.py +24 -0
  7. mat3ra/esse/models/core/reusable/coordinate_conditions/sphere.py +23 -0
  8. mat3ra/esse/models/core/reusable/coordinate_conditions/triangular_prism.py +33 -0
  9. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/configuration.py +15 -12
  10. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +15 -12
  11. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/configuration.py +9 -6
  12. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +15 -12
  13. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/configuration.py +52 -10
  14. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/configuration.py +52 -10
  15. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanoribbon.py +9 -6
  16. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanotape.py +7 -4
  17. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab.py +7 -4
  18. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell.py +7 -4
  19. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_region.py +41 -2
  20. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/void.py +43 -4
  21. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_stack_configuration.py +9 -6
  22. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack.py +8 -5
  23. {mat3ra_esse-2025.8.6.post1.dist-info → mat3ra_esse-2025.8.9.post0.dist-info}/METADATA +1 -1
  24. {mat3ra_esse-2025.8.6.post1.dist-info → mat3ra_esse-2025.8.9.post0.dist-info}/RECORD +27 -23
  25. {mat3ra_esse-2025.8.6.post1.dist-info → mat3ra_esse-2025.8.9.post0.dist-info}/WHEEL +0 -0
  26. {mat3ra_esse-2025.8.6.post1.dist-info → mat3ra_esse-2025.8.9.post0.dist-info}/licenses/LICENSE.md +0 -0
  27. {mat3ra_esse-2025.8.6.post1.dist-info → mat3ra_esse-2025.8.9.post0.dist-info}/top_level.txt +0 -0
@@ -5,9 +5,9 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  from enum import Enum
8
- from typing import List, Literal
8
+ from typing import List, Literal, Union
9
9
 
10
- from pydantic import BaseModel, Field, RootModel
10
+ from pydantic import BaseModel, Field, RootModel, confloat
11
11
 
12
12
 
13
13
  class CoordinateShapeEnum(Enum):
@@ -19,13 +19,62 @@ class CoordinateShapeEnum(Enum):
19
19
 
20
20
 
21
21
  class BoxCoordinateConditionSchema(BaseModel):
22
- shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
22
+ shape: Literal["box"] = Field("box", title="Coordinate Shape Enum")
23
23
  min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
24
24
  max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
25
25
 
26
26
 
27
- class ESSE(RootModel[BoxCoordinateConditionSchema]):
28
- root: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
27
+ class SphereCoordinateConditionSchema(BaseModel):
28
+ shape: Literal["sphere"] = Field("sphere", title="Coordinate Shape Enum")
29
+ radius: confloat(ge=0.0)
30
+
31
+
32
+ class CylinderCoordinateConditionSchema(BaseModel):
33
+ shape: Literal["cylinder"] = Field("cylinder", title="Coordinate Shape Enum")
34
+ radius: confloat(ge=0.0)
35
+ min_z: float
36
+ max_z: float
37
+
38
+
39
+ class TriangularPrismCoordinateConditionSchema(BaseModel):
40
+ shape: Literal["triangular_prism"] = Field("triangular_prism", title="Coordinate Shape Enum")
41
+ position_on_surface_1: List[float] = Field(
42
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
43
+ )
44
+ position_on_surface_2: List[float] = Field(
45
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
46
+ )
47
+ position_on_surface_3: List[float] = Field(
48
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
49
+ )
50
+ min_z: float
51
+ max_z: float
52
+
53
+
54
+ class PlaneCoordinateConditionSchema(BaseModel):
55
+ shape: Literal["plane"] = Field("plane", title="Coordinate Shape Enum")
56
+ plane_normal: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
57
+ plane_point_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
58
+
59
+
60
+ class ESSE(
61
+ RootModel[
62
+ Union[
63
+ BoxCoordinateConditionSchema,
64
+ SphereCoordinateConditionSchema,
65
+ CylinderCoordinateConditionSchema,
66
+ TriangularPrismCoordinateConditionSchema,
67
+ PlaneCoordinateConditionSchema,
68
+ ]
69
+ ]
70
+ ):
71
+ root: Union[
72
+ BoxCoordinateConditionSchema,
73
+ SphereCoordinateConditionSchema,
74
+ CylinderCoordinateConditionSchema,
75
+ TriangularPrismCoordinateConditionSchema,
76
+ PlaneCoordinateConditionSchema,
77
+ ] = Field(..., title="Coordinate Conditions Schema")
29
78
  """
30
79
  Combined schema for all coordinate condition types
31
80
  """
@@ -19,6 +19,6 @@ class CoordinateShapeEnum(Enum):
19
19
 
20
20
 
21
21
  class BoxCoordinateConditionSchema(BaseModel):
22
- shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
22
+ shape: Literal["box"] = Field("box", title="Coordinate Shape Enum")
23
23
  min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
24
24
  max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
@@ -0,0 +1,25 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: core/reusable/coordinate_conditions/cylinder.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import Literal
9
+
10
+ from pydantic import BaseModel, Field, confloat
11
+
12
+
13
+ class CoordinateShapeEnum(Enum):
14
+ cylinder = "cylinder"
15
+ sphere = "sphere"
16
+ box = "box"
17
+ triangular_prism = "triangular_prism"
18
+ plane = "plane"
19
+
20
+
21
+ class CylinderCoordinateConditionSchema(BaseModel):
22
+ shape: Literal["cylinder"] = Field("cylinder", title="Coordinate Shape Enum")
23
+ radius: confloat(ge=0.0)
24
+ min_z: float
25
+ max_z: float
@@ -0,0 +1,24 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: core/reusable/coordinate_conditions/plane.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import List, Literal
9
+
10
+ from pydantic import BaseModel, Field
11
+
12
+
13
+ class CoordinateShapeEnum(Enum):
14
+ cylinder = "cylinder"
15
+ sphere = "sphere"
16
+ box = "box"
17
+ triangular_prism = "triangular_prism"
18
+ plane = "plane"
19
+
20
+
21
+ class PlaneCoordinateConditionSchema(BaseModel):
22
+ shape: Literal["plane"] = Field("plane", title="Coordinate Shape Enum")
23
+ plane_normal: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
24
+ plane_point_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
@@ -0,0 +1,23 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: core/reusable/coordinate_conditions/sphere.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import Literal
9
+
10
+ from pydantic import BaseModel, Field, confloat
11
+
12
+
13
+ class CoordinateShapeEnum(Enum):
14
+ cylinder = "cylinder"
15
+ sphere = "sphere"
16
+ box = "box"
17
+ triangular_prism = "triangular_prism"
18
+ plane = "plane"
19
+
20
+
21
+ class SphereCoordinateConditionSchema(BaseModel):
22
+ shape: Literal["sphere"] = Field("sphere", title="Coordinate Shape Enum")
23
+ radius: confloat(ge=0.0)
@@ -0,0 +1,33 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: core/reusable/coordinate_conditions/triangular_prism.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import List, Literal
9
+
10
+ from pydantic import BaseModel, Field
11
+
12
+
13
+ class CoordinateShapeEnum(Enum):
14
+ cylinder = "cylinder"
15
+ sphere = "sphere"
16
+ box = "box"
17
+ triangular_prism = "triangular_prism"
18
+ plane = "plane"
19
+
20
+
21
+ class TriangularPrismCoordinateConditionSchema(BaseModel):
22
+ shape: Literal["triangular_prism"] = Field("triangular_prism", title="Coordinate Shape Enum")
23
+ position_on_surface_1: List[float] = Field(
24
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
25
+ )
26
+ position_on_surface_2: List[float] = Field(
27
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
28
+ )
29
+ position_on_surface_3: List[float] = Field(
30
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
31
+ )
32
+ min_z: float
33
+ max_z: float
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2036,9 +2039,9 @@ class SlabStrainedSupercellConfigurationSchema(BaseModel):
2036
2039
  """
2037
2040
  Enum for axis types
2038
2041
  """
2039
- gaps: Optional[List[ObjectWithId]] = None
2042
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2040
2043
  """
2041
- Gap distances between stack components as an array of objects with id and value
2044
+ Gap distances between stack components as array of objects with id and value
2042
2045
  """
2043
2046
 
2044
2047
 
@@ -2919,9 +2922,9 @@ class SlabConfigurationSchema10(BaseModel):
2919
2922
  """
2920
2923
  Enum for axis types
2921
2924
  """
2922
- gaps: Optional[List[ObjectWithId]] = None
2925
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2923
2926
  """
2924
- Gap distances between stack components as an array of objects with id and value
2927
+ Gap distances between stack components as array of objects with id and value
2925
2928
  """
2926
2929
 
2927
2930
 
@@ -3814,9 +3817,9 @@ class SlabStrainedSupercellConfigurationSchema5(BaseModel):
3814
3817
  """
3815
3818
  Enum for axis types
3816
3819
  """
3817
- gaps: Optional[List[ObjectWithId]] = None
3820
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
3818
3821
  """
3819
- Gap distances between stack components as an array of objects with id and value
3822
+ Gap distances between stack components as array of objects with id and value
3820
3823
  """
3821
3824
 
3822
3825
 
@@ -4263,7 +4266,7 @@ class InterfaceConfigurationSchema(BaseModel):
4263
4266
  """
4264
4267
  xy shift for the film as cartesian 2D vector on the xy plane.
4265
4268
  """
4266
- gaps: Optional[List[ObjectWithId]] = None
4269
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
4267
4270
  """
4268
- Gap distances between stack components as an array of objects with id and value
4271
+ Gap distances between stack components as array of objects with id and value
4269
4272
  """
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2036,9 +2039,9 @@ class SlabStrainedSupercellConfigurationSchema(BaseModel):
2036
2039
  """
2037
2040
  Enum for axis types
2038
2041
  """
2039
- gaps: Optional[List[ObjectWithId]] = None
2042
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2040
2043
  """
2041
- Gap distances between stack components as an array of objects with id and value
2044
+ Gap distances between stack components as array of objects with id and value
2042
2045
  """
2043
2046
 
2044
2047
 
@@ -2919,9 +2922,9 @@ class SlabConfigurationSchema8(BaseModel):
2919
2922
  """
2920
2923
  Enum for axis types
2921
2924
  """
2922
- gaps: Optional[List[ObjectWithId]] = None
2925
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2923
2926
  """
2924
- Gap distances between stack components as an array of objects with id and value
2927
+ Gap distances between stack components as array of objects with id and value
2925
2928
  """
2926
2929
 
2927
2930
 
@@ -3814,9 +3817,9 @@ class SlabStrainedSupercellConfigurationSchema3(BaseModel):
3814
3817
  """
3815
3818
  Enum for axis types
3816
3819
  """
3817
- gaps: Optional[List[ObjectWithId]] = None
3820
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
3818
3821
  """
3819
- Gap distances between stack components as an array of objects with id and value
3822
+ Gap distances between stack components as array of objects with id and value
3820
3823
  """
3821
3824
 
3822
3825
 
@@ -4267,7 +4270,7 @@ class GrainBoundaryLinearConfigurationSchema(BaseModel):
4267
4270
  """
4268
4271
  xy shift for the film as cartesian 2D vector on the xy plane.
4269
4272
  """
4270
- gaps: Optional[List[ObjectWithId]] = None
4273
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
4271
4274
  """
4272
- Gap distances between stack components as an array of objects with id and value
4275
+ Gap distances between stack components as array of objects with id and value
4273
4276
  """
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2126,7 +2129,7 @@ class AdatomDefectConfigurationSchema(BaseModel):
2126
2129
  """
2127
2130
  Enum for axis types
2128
2131
  """
2129
- gaps: Optional[List[ObjectWithId]] = None
2132
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2130
2133
  """
2131
- Gap distances between stack components as an array of objects with id and value
2134
+ Gap distances between stack components as array of objects with id and value
2132
2135
  """
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2036,9 +2039,9 @@ class SlabStrainedSupercellConfigurationSchema(BaseModel):
2036
2039
  """
2037
2040
  Enum for axis types
2038
2041
  """
2039
- gaps: Optional[List[ObjectWithId]] = None
2042
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2040
2043
  """
2041
- Gap distances between stack components as an array of objects with id and value
2044
+ Gap distances between stack components as array of objects with id and value
2042
2045
  """
2043
2046
 
2044
2047
 
@@ -2919,9 +2922,9 @@ class SlabConfigurationSchema1(BaseModel):
2919
2922
  """
2920
2923
  Enum for axis types
2921
2924
  """
2922
- gaps: Optional[List[ObjectWithId]] = None
2925
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2923
2926
  """
2924
- Gap distances between stack components as an array of objects with id and value
2927
+ Gap distances between stack components as array of objects with id and value
2925
2928
  """
2926
2929
 
2927
2930
 
@@ -3814,9 +3817,9 @@ class SlabStrainedSupercellConfigurationSchema1(BaseModel):
3814
3817
  """
3815
3818
  Enum for axis types
3816
3819
  """
3817
- gaps: Optional[List[ObjectWithId]] = None
3820
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
3818
3821
  """
3819
- Gap distances between stack components as an array of objects with id and value
3822
+ Gap distances between stack components as array of objects with id and value
3820
3823
  """
3821
3824
 
3822
3825
 
@@ -4263,7 +4266,7 @@ class GrainBoundaryPlanarConfigurationSchema(BaseModel):
4263
4266
  """
4264
4267
  xy shift for the film as cartesian 2D vector on the xy plane.
4265
4268
  """
4266
- gaps: Optional[List[ObjectWithId]] = None
4269
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
4267
4270
  """
4268
- Gap distances between stack components as an array of objects with id and value
4271
+ Gap distances between stack components as array of objects with id and value
4269
4272
  """
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2016,9 +2019,9 @@ class SlabConfigurationSchema6(BaseModel):
2016
2019
  """
2017
2020
  Enum for axis types
2018
2021
  """
2019
- gaps: Optional[List[ObjectWithId]] = None
2022
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2020
2023
  """
2021
- Gap distances between stack components as an array of objects with id and value
2024
+ Gap distances between stack components as array of objects with id and value
2022
2025
  """
2023
2026
 
2024
2027
 
@@ -2440,17 +2443,56 @@ class CoordinateShapeEnum(Enum):
2440
2443
 
2441
2444
 
2442
2445
  class BoxCoordinateConditionSchema(BaseModel):
2443
- shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
2446
+ shape: Literal["box"] = Field("box", title="Coordinate Shape Enum")
2444
2447
  min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2445
2448
  max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2446
2449
 
2447
2450
 
2451
+ class SphereCoordinateConditionSchema(BaseModel):
2452
+ shape: Literal["sphere"] = Field("sphere", title="Coordinate Shape Enum")
2453
+ radius: confloat(ge=0.0)
2454
+
2455
+
2456
+ class CylinderCoordinateConditionSchema(BaseModel):
2457
+ shape: Literal["cylinder"] = Field("cylinder", title="Coordinate Shape Enum")
2458
+ radius: confloat(ge=0.0)
2459
+ min_z: float
2460
+ max_z: float
2461
+
2462
+
2463
+ class TriangularPrismCoordinateConditionSchema(BaseModel):
2464
+ shape: Literal["triangular_prism"] = Field("triangular_prism", title="Coordinate Shape Enum")
2465
+ position_on_surface_1: List[float] = Field(
2466
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2467
+ )
2468
+ position_on_surface_2: List[float] = Field(
2469
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2470
+ )
2471
+ position_on_surface_3: List[float] = Field(
2472
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2473
+ )
2474
+ min_z: float
2475
+ max_z: float
2476
+
2477
+
2478
+ class PlaneCoordinateConditionSchema(BaseModel):
2479
+ shape: Literal["plane"] = Field("plane", title="Coordinate Shape Enum")
2480
+ plane_normal: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2481
+ plane_point_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2482
+
2483
+
2448
2484
  class VoidRegionSchema(BaseModel):
2449
2485
  crystal: CrystalSchema27 = Field(..., title="Crystal Schema")
2450
2486
  """
2451
2487
  A crystal structure, referencing the base material schema
2452
2488
  """
2453
- coordinate_condition: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
2489
+ coordinate_condition: Union[
2490
+ BoxCoordinateConditionSchema,
2491
+ SphereCoordinateConditionSchema,
2492
+ CylinderCoordinateConditionSchema,
2493
+ TriangularPrismCoordinateConditionSchema,
2494
+ PlaneCoordinateConditionSchema,
2495
+ ] = Field(..., title="Coordinate Conditions Schema")
2454
2496
  """
2455
2497
  Combined schema for all coordinate condition types
2456
2498
  """
@@ -2902,7 +2944,7 @@ class IslandDefectConfigurationSchema(BaseModel):
2902
2944
  """
2903
2945
  Enum for axis types
2904
2946
  """
2905
- gaps: Optional[List[ObjectWithId]] = None
2947
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2906
2948
  """
2907
- Gap distances between stack components as an array of objects with id and value
2949
+ Gap distances between stack components as array of objects with id and value
2908
2950
  """
@@ -1117,8 +1117,11 @@ class VacuumConfigurationSchema(BaseModel):
1117
1117
  """
1118
1118
 
1119
1119
 
1120
- class ObjectWithId(BaseModel):
1121
- value: Optional[confloat(ge=0.0)] = None
1120
+ class ObjectWithIdAndValueSchema(BaseModel):
1121
+ value: float
1122
+ """
1123
+ value of this entry
1124
+ """
1122
1125
  id: int
1123
1126
  """
1124
1127
  integer id of this entry
@@ -1133,9 +1136,9 @@ class SlabConfigurationSchema(BaseModel):
1133
1136
  """
1134
1137
  Enum for axis types
1135
1138
  """
1136
- gaps: Optional[List[ObjectWithId]] = None
1139
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
1137
1140
  """
1138
- Gap distances between stack components as an array of objects with id and value
1141
+ Gap distances between stack components as array of objects with id and value
1139
1142
  """
1140
1143
 
1141
1144
 
@@ -2016,9 +2019,9 @@ class SlabConfigurationSchema3(BaseModel):
2016
2019
  """
2017
2020
  Enum for axis types
2018
2021
  """
2019
- gaps: Optional[List[ObjectWithId]] = None
2022
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2020
2023
  """
2021
- Gap distances between stack components as an array of objects with id and value
2024
+ Gap distances between stack components as array of objects with id and value
2022
2025
  """
2023
2026
 
2024
2027
 
@@ -2440,17 +2443,56 @@ class CoordinateShapeEnum(Enum):
2440
2443
 
2441
2444
 
2442
2445
  class BoxCoordinateConditionSchema(BaseModel):
2443
- shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
2446
+ shape: Literal["box"] = Field("box", title="Coordinate Shape Enum")
2444
2447
  min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2445
2448
  max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2446
2449
 
2447
2450
 
2451
+ class SphereCoordinateConditionSchema(BaseModel):
2452
+ shape: Literal["sphere"] = Field("sphere", title="Coordinate Shape Enum")
2453
+ radius: confloat(ge=0.0)
2454
+
2455
+
2456
+ class CylinderCoordinateConditionSchema(BaseModel):
2457
+ shape: Literal["cylinder"] = Field("cylinder", title="Coordinate Shape Enum")
2458
+ radius: confloat(ge=0.0)
2459
+ min_z: float
2460
+ max_z: float
2461
+
2462
+
2463
+ class TriangularPrismCoordinateConditionSchema(BaseModel):
2464
+ shape: Literal["triangular_prism"] = Field("triangular_prism", title="Coordinate Shape Enum")
2465
+ position_on_surface_1: List[float] = Field(
2466
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2467
+ )
2468
+ position_on_surface_2: List[float] = Field(
2469
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2470
+ )
2471
+ position_on_surface_3: List[float] = Field(
2472
+ ..., max_length=2, min_length=2, title="array of 2 number elements schema"
2473
+ )
2474
+ min_z: float
2475
+ max_z: float
2476
+
2477
+
2478
+ class PlaneCoordinateConditionSchema(BaseModel):
2479
+ shape: Literal["plane"] = Field("plane", title="Coordinate Shape Enum")
2480
+ plane_normal: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2481
+ plane_point_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2482
+
2483
+
2448
2484
  class VoidRegionSchema(BaseModel):
2449
2485
  crystal: CrystalSchema17 = Field(..., title="Crystal Schema")
2450
2486
  """
2451
2487
  A crystal structure, referencing the base material schema
2452
2488
  """
2453
- coordinate_condition: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
2489
+ coordinate_condition: Union[
2490
+ BoxCoordinateConditionSchema,
2491
+ SphereCoordinateConditionSchema,
2492
+ CylinderCoordinateConditionSchema,
2493
+ TriangularPrismCoordinateConditionSchema,
2494
+ PlaneCoordinateConditionSchema,
2495
+ ] = Field(..., title="Coordinate Conditions Schema")
2454
2496
  """
2455
2497
  Combined schema for all coordinate condition types
2456
2498
  """
@@ -2906,7 +2948,7 @@ class TerraceDefectConfigurationSchema(BaseModel):
2906
2948
  """
2907
2949
  Enum for axis types
2908
2950
  """
2909
- gaps: Optional[List[ObjectWithId]] = None
2951
+ gaps: Optional[List[ObjectWithIdAndValueSchema]] = None
2910
2952
  """
2911
- Gap distances between stack components as an array of objects with id and value
2953
+ Gap distances between stack components as array of objects with id and value
2912
2954
  """