pystac-ext-classification 2.0.1__tar.gz → 2.0.2__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 (19) hide show
  1. pystac_ext_classification-2.0.2/CHANGELOG.md +20 -0
  2. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/PKG-INFO +4 -4
  3. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/README.md +2 -2
  4. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/pyproject.toml +2 -1
  5. pystac_ext_classification-2.0.2/pystac/extensions/json-schema/classification/v1.0.0.json +223 -0
  6. pystac_ext_classification-2.0.2/pystac/extensions/json-schema/classification/v1.1.0.json +231 -0
  7. pystac_ext_classification-2.0.2/pystac/extensions/json-schema/classification/v2.0.0.json +242 -0
  8. pystac_ext_classification-2.0.2/tests/cassettes/test_classification/test_validate_classification.yaml +64 -0
  9. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/tests/test_classification.py +0 -1
  10. pystac_ext_classification-2.0.1/CHANGELOG.md +0 -8
  11. pystac_ext_classification-2.0.1/tests/cassettes/test_classification/test_apply_bitfields.yaml +0 -101
  12. pystac_ext_classification-2.0.1/tests/cassettes/test_classification/test_apply_classes.yaml +0 -101
  13. pystac_ext_classification-2.0.1/tests/cassettes/test_classification/test_validate_classification.yaml +0 -550
  14. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/.gitignore +0 -0
  15. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/pystac/extensions/classification.py +0 -0
  16. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/pystac/extensions/py.typed +0 -0
  17. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/tests/data-files/classification_landsat_example.json +0 -0
  18. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/tests/data-files/collection-item-assets-raster-bands.json +0 -0
  19. {pystac_ext_classification-2.0.1 → pystac_ext_classification-2.0.2}/tests/data-files/item/sample-item.json +0 -0
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ ## [2.0.2](https://github.com/stac-utils/pystac/compare/pystac-ext-classification-v2.0.1...pystac-ext-classification-v2.0.2) (2026-11-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * validate using local extension json schemas ([#1814](https://github.com/stac-utils/pystac/issues/1814)) ([9ef2186](https://github.com/stac-utils/pystac/commit/9ef2186b9d8d4aaab5f13cdccc947702adf11b93))
9
+
10
+
11
+ ### Documentation
12
+
13
+ * update versioning section of extension READMEs ([#1849](https://github.com/stac-utils/pystac/issues/1849)) ([64f85ac](https://github.com/stac-utils/pystac/commit/64f85ac80be4ebf395748a0d6bf512777e688e80))
14
+
15
+ ## [2.0.1](https://github.com/stac-utils/pystac/compare/pystac-ext-classification-v2.0.0...pystac-ext-classification-v2.0.1) (2026-08-10)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * circular imports for extensions ([#1764](https://github.com/stac-utils/pystac/issues/1764)) ([c82570e](https://github.com/stac-utils/pystac/commit/c82570e6d4695b5c4d49ed80b422ab2fcfad5e94))
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: pystac-ext-classification
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Classification extension for PySTAC
5
5
  Project-URL: Documentation, https://pystac.readthedocs.io
6
6
  Project-URL: Repository, https://github.com/stac-utils/pystac
@@ -36,5 +36,5 @@ This extension provides a way to describe categorical data and classification sc
36
36
 
37
37
  ## Versioning
38
38
 
39
- This package's version corresponds to the version of the extension specification it targets.
40
- When we release updates to the package code without changing the target extension version, we use [post releases](https://packaging.python.org/en/latest/discussions/versioning/#post-releases), e.g. `2.0.0.post1`.
39
+ This package's MAJOR and MINOR versions match the version of the extension itself, e.g. **pystac-ext-classification** v2.0.0 corresponds to the [v2.0.0](https://github.com/stac-extensions/classification/releases/tag/v2.0.0) release of the **classification** extension.
40
+ When we release updates to the package code without changing the target extension version, we use [PATCH releases](https://packaging.python.org/en/latest/discussions/versioning/#valid-version-numbers).
@@ -11,5 +11,5 @@ This extension provides a way to describe categorical data and classification sc
11
11
 
12
12
  ## Versioning
13
13
 
14
- This package's version corresponds to the version of the extension specification it targets.
15
- When we release updates to the package code without changing the target extension version, we use [post releases](https://packaging.python.org/en/latest/discussions/versioning/#post-releases), e.g. `2.0.0.post1`.
14
+ This package's MAJOR and MINOR versions match the version of the extension itself, e.g. **pystac-ext-classification** v2.0.0 corresponds to the [v2.0.0](https://github.com/stac-extensions/classification/releases/tag/v2.0.0) release of the **classification** extension.
15
+ When we release updates to the package code without changing the target extension version, we use [PATCH releases](https://packaging.python.org/en/latest/discussions/versioning/#valid-version-numbers).
@@ -2,7 +2,7 @@
2
2
  name = "pystac-ext-classification"
3
3
  description = "Classification extension for PySTAC"
4
4
  readme = "README.md"
5
- version = "2.0.1"
5
+ version = "2.0.2"
6
6
  authors = []
7
7
  maintainers = []
8
8
  keywords = ["pystac", "imagery", "raster", "catalog", "STAC", "classification"]
@@ -40,3 +40,4 @@ build-backend = "hatchling.build"
40
40
 
41
41
  [tool.hatch.build.targets.wheel]
42
42
  packages = ["pystac"]
43
+ include = ["pystac.extensions.json-schema/*.json"]
@@ -0,0 +1,223 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://stac-extensions.github.io/classification/v1.0.0/schema.json#",
4
+ "title": "Classification Extension",
5
+ "description": "STAC Classification Extension for STAC Items and STAC Collections.",
6
+ "oneOf": [
7
+ {
8
+ "$comment": "This is the schema for STAC Items.",
9
+ "allOf": [
10
+ {
11
+ "$ref": "#/definitions/stac_extensions"
12
+ },
13
+ {
14
+ "type": "object",
15
+ "required": [
16
+ "type",
17
+ "properties",
18
+ "assets"
19
+ ],
20
+ "properties": {
21
+ "type": {
22
+ "const": "Feature"
23
+ },
24
+ "properties": {
25
+ "$comment": "This validates the fields in Item Properties, but does not require them.",
26
+ "$ref": "#/definitions/fields"
27
+ },
28
+ "assets": {
29
+ "$comment": "This validates the fields in Item Assets (including in Raster Band Objects), but does not require them.",
30
+ "type": "object",
31
+ "additionalProperties": {
32
+ "allOf": [
33
+ {
34
+ "$ref": "#/definitions/fields"
35
+ },
36
+ {
37
+ "$ref": "#/definitions/raster_bands"
38
+ }
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "$comment": "This is the schema for STAC Collections.",
48
+ "allOf": [
49
+ {
50
+ "$ref": "#/definitions/stac_extensions"
51
+ },
52
+ {
53
+ "type": "object",
54
+ "required": [
55
+ "type"
56
+ ],
57
+ "properties": {
58
+ "type": {
59
+ "const": "Collection"
60
+ },
61
+ "assets": {
62
+ "$comment": "This validates the fields in Collection Assets, but does not require them.",
63
+ "type": "object",
64
+ "additionalProperties": {
65
+ "allOf": [
66
+ {
67
+ "$ref": "#/definitions/fields"
68
+ },
69
+ {
70
+ "$ref": "#/definitions/raster_bands"
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ "item_assets": {
76
+ "$comment": "This validates the fields in Item Asset Definitions, but does not require them.",
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "allOf": [
80
+ {
81
+ "$ref": "#/definitions/fields"
82
+ },
83
+ {
84
+ "$ref": "#/definitions/raster_bands"
85
+ }
86
+ ]
87
+ }
88
+ },
89
+ "summaries": {
90
+ "$comment": "This validates the fields in Summaries, but does not require them.",
91
+ "$ref": "#/definitions/fields"
92
+ }
93
+ }
94
+ }
95
+ ]
96
+ }
97
+ ],
98
+ "definitions": {
99
+ "stac_extensions": {
100
+ "type": "object",
101
+ "required": [
102
+ "stac_extensions"
103
+ ],
104
+ "properties": {
105
+ "stac_extensions": {
106
+ "type": "array",
107
+ "contains": {
108
+ "const": "https://stac-extensions.github.io/classification/v1.0.0/schema.json"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "require_any_field": {
114
+ "$comment": "Please list all fields here so that we can force the existance of one of them in other parts of the schemas.",
115
+ "anyOf": [
116
+ {"required": ["classification:bitfields"]},
117
+ {"required": ["classification:classes"]}
118
+ ]
119
+ },
120
+ "fields": {
121
+ "$comment": "Add your new fields here. Don't require them here, do that above in the corresponding schema.",
122
+ "type": "object",
123
+ "properties": {
124
+ "classification:bitfields": {
125
+ "type": "array",
126
+ "uniqueItems": true,
127
+ "minItems": 1,
128
+ "items": {
129
+ "$ref": "#/definitions/bit_field_object"
130
+ }
131
+ },
132
+ "classification:classes": {
133
+ "type": "array",
134
+ "uniqueItems": true,
135
+ "minItems": 1,
136
+ "items": {
137
+ "$ref": "#/definitions/class_object"
138
+ }
139
+ }
140
+ },
141
+ "patternProperties": {
142
+ "^(?!classification:)": {}
143
+ },
144
+ "additionalProperties": false
145
+ },
146
+ "class_object": {
147
+ "$comment": "Object for storing classes",
148
+ "type": "object",
149
+ "required": [
150
+ "value",
151
+ "description"
152
+ ],
153
+ "properties": {
154
+ "value": {
155
+ "type": "integer"
156
+ },
157
+ "description": {
158
+ "type": "string"
159
+ },
160
+ "name": {
161
+ "type": "string"
162
+ },
163
+ "color-hint": {
164
+ "type": "string",
165
+ "pattern": "^([0-9A-F]{6})$"
166
+ }
167
+ }
168
+ },
169
+ "bit_field_object": {
170
+ "$comment": "Object for storing bit fields",
171
+ "type": "object",
172
+ "required": [
173
+ "offset",
174
+ "length",
175
+ "classes"
176
+ ],
177
+ "properties": {
178
+ "offset": {
179
+ "type": "integer",
180
+ "minimum": 0
181
+ },
182
+ "length": {
183
+ "type": "integer",
184
+ "minimum": 1
185
+ },
186
+ "classes": {
187
+ "type": "array",
188
+ "uniqueItems": true,
189
+ "minItems": 1,
190
+ "items": {
191
+ "$ref": "#/definitions/class_object"
192
+ }
193
+ },
194
+ "roles": {
195
+ "type": "array",
196
+ "uniqueItems": true,
197
+ "minItems": 1,
198
+ "items": {
199
+ "type": "string"
200
+ }
201
+ },
202
+ "description": {
203
+ "type": "string"
204
+ },
205
+ "name": {
206
+ "type": "string"
207
+ }
208
+ }
209
+ },
210
+ "raster_bands": {
211
+ "$comment": "Classification fields on the Raster Extension raster:bands object",
212
+ "type": "object",
213
+ "properties": {
214
+ "raster:bands": {
215
+ "type": "array",
216
+ "items": {
217
+ "$ref": "#/definitions/fields"
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
@@ -0,0 +1,231 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://stac-extensions.github.io/classification/v1.1.0/schema.json#",
4
+ "title": "Classification Extension",
5
+ "description": "STAC Classification Extension for STAC Items and STAC Collections.",
6
+ "oneOf": [
7
+ {
8
+ "$comment": "This is the schema for STAC Items.",
9
+ "allOf": [
10
+ {
11
+ "$ref": "#/definitions/stac_extensions"
12
+ },
13
+ {
14
+ "type": "object",
15
+ "required": [
16
+ "type",
17
+ "properties",
18
+ "assets"
19
+ ],
20
+ "properties": {
21
+ "type": {
22
+ "const": "Feature"
23
+ },
24
+ "properties": {
25
+ "$comment": "This validates the fields in Item Properties, but does not require them.",
26
+ "$ref": "#/definitions/fields"
27
+ },
28
+ "assets": {
29
+ "$comment": "This validates the fields in Item Assets (including in Raster Band Objects), but does not require them.",
30
+ "type": "object",
31
+ "additionalProperties": {
32
+ "allOf": [
33
+ {
34
+ "$ref": "#/definitions/fields"
35
+ },
36
+ {
37
+ "$ref": "#/definitions/raster_bands"
38
+ }
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "$comment": "This is the schema for STAC Collections.",
48
+ "allOf": [
49
+ {
50
+ "$ref": "#/definitions/stac_extensions"
51
+ },
52
+ {
53
+ "type": "object",
54
+ "required": [
55
+ "type"
56
+ ],
57
+ "properties": {
58
+ "type": {
59
+ "const": "Collection"
60
+ },
61
+ "assets": {
62
+ "$comment": "This validates the fields in Collection Assets, but does not require them.",
63
+ "type": "object",
64
+ "additionalProperties": {
65
+ "allOf": [
66
+ {
67
+ "$ref": "#/definitions/fields"
68
+ },
69
+ {
70
+ "$ref": "#/definitions/raster_bands"
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ "item_assets": {
76
+ "$comment": "This validates the fields in Item Asset Definitions, but does not require them.",
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "allOf": [
80
+ {
81
+ "$ref": "#/definitions/fields"
82
+ },
83
+ {
84
+ "$ref": "#/definitions/raster_bands"
85
+ }
86
+ ]
87
+ }
88
+ },
89
+ "summaries": {
90
+ "$comment": "This validates the fields in Summaries, but does not require them.",
91
+ "$ref": "#/definitions/fields"
92
+ }
93
+ }
94
+ }
95
+ ]
96
+ }
97
+ ],
98
+ "definitions": {
99
+ "stac_extensions": {
100
+ "type": "object",
101
+ "required": [
102
+ "stac_extensions"
103
+ ],
104
+ "properties": {
105
+ "stac_extensions": {
106
+ "type": "array",
107
+ "contains": {
108
+ "const": "https://stac-extensions.github.io/classification/v1.1.0/schema.json"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "require_any_field": {
114
+ "$comment": "Please list all fields here so that we can force the existance of one of them in other parts of the schemas.",
115
+ "anyOf": [
116
+ {
117
+ "required": [
118
+ "classification:bitfields"
119
+ ]
120
+ },
121
+ {
122
+ "required": [
123
+ "classification:classes"
124
+ ]
125
+ }
126
+ ]
127
+ },
128
+ "fields": {
129
+ "$comment": "Add your new fields here. Don't require them here, do that above in the corresponding schema.",
130
+ "type": "object",
131
+ "properties": {
132
+ "classification:bitfields": {
133
+ "type": "array",
134
+ "uniqueItems": true,
135
+ "minItems": 1,
136
+ "items": {
137
+ "$ref": "#/definitions/bit_field_object"
138
+ }
139
+ },
140
+ "classification:classes": {
141
+ "type": "array",
142
+ "uniqueItems": true,
143
+ "minItems": 1,
144
+ "items": {
145
+ "$ref": "#/definitions/class_object"
146
+ }
147
+ }
148
+ },
149
+ "patternProperties": {
150
+ "^(?!classification:)": {}
151
+ },
152
+ "additionalProperties": false
153
+ },
154
+ "class_object": {
155
+ "$comment": "Object for storing classes",
156
+ "type": "object",
157
+ "required": [
158
+ "value",
159
+ "description"
160
+ ],
161
+ "properties": {
162
+ "value": {
163
+ "type": "integer"
164
+ },
165
+ "description": {
166
+ "type": "string"
167
+ },
168
+ "name": {
169
+ "type": "string"
170
+ },
171
+ "color_hint": {
172
+ "type": "string",
173
+ "pattern": "^([0-9A-Fa-f]{6})$"
174
+ }
175
+ }
176
+ },
177
+ "bit_field_object": {
178
+ "$comment": "Object for storing bit fields",
179
+ "type": "object",
180
+ "required": [
181
+ "offset",
182
+ "length",
183
+ "classes"
184
+ ],
185
+ "properties": {
186
+ "offset": {
187
+ "type": "integer",
188
+ "minimum": 0
189
+ },
190
+ "length": {
191
+ "type": "integer",
192
+ "minimum": 1
193
+ },
194
+ "classes": {
195
+ "type": "array",
196
+ "uniqueItems": true,
197
+ "minItems": 1,
198
+ "items": {
199
+ "$ref": "#/definitions/class_object"
200
+ }
201
+ },
202
+ "roles": {
203
+ "type": "array",
204
+ "uniqueItems": true,
205
+ "minItems": 1,
206
+ "items": {
207
+ "type": "string"
208
+ }
209
+ },
210
+ "description": {
211
+ "type": "string"
212
+ },
213
+ "name": {
214
+ "type": "string"
215
+ }
216
+ }
217
+ },
218
+ "raster_bands": {
219
+ "$comment": "Classification fields on the Raster Extension raster:bands object",
220
+ "type": "object",
221
+ "properties": {
222
+ "raster:bands": {
223
+ "type": "array",
224
+ "items": {
225
+ "$ref": "#/definitions/fields"
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ }