Skip to content

Commit

Permalink
Merge v1.2.6 into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Teque5 committed Jan 13, 2025
2 parents fcf6f7e + c497d9e commit 90a2ef8
Show file tree
Hide file tree
Showing 7 changed files with 423 additions and 455 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["3.7", "3.9", "3.12"]
Expand Down
4 changes: 2 additions & 2 deletions sigmf/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
# SPDX-License-Identifier: LGPL-3.0-or-later

# version of this python module
__version__ = "1.2.5"
__version__ = "1.2.6"
# matching version of the SigMF specification
__specification__ = "1.2.0"
__specification__ = "1.2.3"

from . import archive, archivereader, error, schema, sigmffile, utils, validate
from .archive import SigMFArchive
Expand Down
277 changes: 116 additions & 161 deletions sigmf/schema-collection.json
Original file line number Diff line number Diff line change
@@ -1,171 +1,126 @@
{
"$id": "https://github.com/sigmf/SigMF",
"$schema": "http://json-schema.org/draft-07/schema",
"default": {},
"required": [
"collection"
],
"type": "object",
"properties": {
"collection": {
"$id": "#/properties/collection",
"default": {},
"description": "This field is used to indicate that this Recording is part of a SigMF Collection (described later in this document). It is strongly RECOMMENDED that if you are building a Collection, that each Recording referenced by that Collection use this field to associate up to the relevant sigmf-collection file.",
"required": [
"core:version"
],
"type": "object",
"properties": {
"core:version": {
"$id": "#/properties/collection/properties/core%3Aversion",
"description": "The version of the SigMF specification used to create the Collection file.",
"examples": [
"1.2.0"
],
"type": "string"
},
"core:description": {
"$id": "#/properties/collection/properties/core%3Adescription",
"default": "",
"description": "A text description of the SigMF Collection.",
"type": "string"
},
"core:author": {
"$id": "#/properties/collection/properties/core%3Aauthor",
"$id": "https://github.com/sigmf/SigMF/spec/1.2.0/collection-schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"default": {},
"required": ["collection"],
"type": "object",
"properties": {
"collection": {
"default": {},
"description": "The `sigmf-collection` file contains metadata in a single top-level Object called a `collection`. The Collection Object contains key/value pairs that describe relationships between SigMF Recordings.\\nn The Collection Object associates SigMF Recordings together by specifying `SigMF Recording Objects` in the `core:streams` JSON array. Each Object describes a specific associated SigMF Recording.\\nn The following rules apply to SigMF Collections:\n\n 1. The Collection Object MUST be the only top-level Object in the file.\n\n 2. Keys in the Collection Object SHOULD use SigMF Recording Objects when referencing SigMF Recordings.\n\n 3. SigMF Recording Objects MUST contain both a `name` field, which is the base-name of a SigMF Recording, and a `hash` which is the SHA512 hash of the Recording Metadata file `[base-name].sigmf-meta`.\n\n 4. SigMF Recording Objects MUST appear in a JSON array.\\nn Example `top-level.sigmf-collection` file:\\begin{verbatim}{\n\"collection\": {\n \"core:version\": \"1.2.0\",\n \"core:extensions\" : [\n {\n \"name\": \"antenna\",\n \"version\": \"1.0.0\",\n \"optional\": true\n }\n ],\n \"antenna:hagl\": 120,\n \"antenna:azimuth_angle\": 98,\n \"core:streams\": [\n {\n \"name\": \"example-channel-0-basename\",\n \"hash\": \"b4071db26f5c7b0c70f5066eb9bc3a8b506df0f5af09991ba481f63f97f7f48e9396584bc1c296650cd3d47bc4ad2c5b72d2561078fb6eb16151d2898c9f84c4\"\n },\n {\n \"name\": \"example-channel-1-basename\",\n \"hash\": \"7132aa240e4d8505471cded716073141ae190f763bfca3c27edd8484348d6693d0e8d3427d0bf1990e687a6a40242d514e5d1995642bc39384e9a37a211655d7\"\n }\n ]\n }\n}\\end{verbatim}",
"required": ["core:version"],
"type": "object",
"properties": {
"core:version": {
"description": "The version of the SigMF specification used to create the Collection file.",
"examples": ["1.2.0"],
"type": "string"
},
"core:description": {
"default": "",
"description": "A text description of the SigMF Collection.",
"type": "string"
},
"core:author": {
"default": "",
"description": "A text identifier for the author potentially including name, handle, email, and/or other ID like Amateur Call Sign.",
"examples": ["Bruce Wayne [email protected]", "Bruce (K3X)"],
"type": "string"
},
"core:collection_doi": {
"default": "",
"description": "The registered DOI (ISO 26324) for a Collection.",
"type": "string"
},
"core:license": {
"default": "",
"description": "A URL for the license document under which this Collection metadata is offered.",
"examples": ["https://creativecommons.org/licenses/by-sa/4.0/"],
"type": "string"
},
"core:extensions": {
"default": [],
"description": "The `core:extensions` field in the Global Object is an array of extension objects that describe SigMF extensions. Extension Objects MUST contain the three key/value pairs defined in Table (FIX REF), and MUST NOT contain any other fields.",
"type": "array",
"additionalItems": true,
"items": {
"anyOf": [
{
"type": "object",
"title": "The first anyOf schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"name": "capture_details",
"version": "1.0.0",
"optional": false
}
],
"required": ["name", "version", "optional"],
"properties": {
"name": {
"default": "",
"description": "A text identifier for the author potentially including name, handle, email, and/or other ID like Amateur Call Sign.",
"examples": [
"Bruce Wayne [email protected]",
"Bruce (K3X)"
],
"description": "The name of the SigMF extension namespace.",
"type": "string"
},
"core:collection_doi": {
"$id": "#/properties/collection/properties/core%3Acollection_doi",
},
"version": {
"default": "",
"description": "The registered DOI (ISO 26324) for a Collection.",
"description": "The version of the extension namespace specification used.",
"type": "string"
},
"optional": {
"default": false,
"description": "If this field is `true`, the extension is REQUIRED to parse this Recording.",
"type": "boolean"
}
},
"core:license": {
"$id": "#/properties/collection/properties/core%3Alicense",
"default": "",
"description": "A URL for the license document under which this Collection metadata is offered.",
"examples": [
"https://creativecommons.org/licenses/by-sa/4.0/"
],
"type": "string"
},
"core:extensions": {
"$id": "#/properties/collection/properties/core%3Aextensions",
"default": [],
"description": "The `core:extensions` field in the Global Object is an array of extension objects that describe SigMF extensions. Extension Objects MUST contain the three key/value pairs defined below, and MUST NOT contain any other fields.",
"type": "array",
"additionalItems": true,
"items": {
"$id": "#/properties/collection/properties/core%3Aextensions/items",
"anyOf": [
{
"$id": "#/properties/collection/properties/core%3Aextensions/items/anyOf/0",
"type": "object",
"title": "The first anyOf schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"name": "capture_details",
"version": "1.0.0",
"optional": false
}
],
"required": [
"name",
"version",
"optional"
],
"properties": {
"name": {
"$id": "#/properties/collection/properties/core%3Aextensions/items/anyOf/0/properties/name",
"default": "",
"description": "The name of the SigMF extension namespace.",
"type": "string"
},
"version": {
"$id": "#/properties/collection/properties/core%3Aextensions/items/anyOf/0/properties/version",
"default": "",
"description": "The version of the extension namespace specification used.",
"type": "string"
},
"optional": {
"$id": "#/properties/collection/properties/core%3Aextensions/items/anyOf/0/properties/optional",
"default": false,
"description": "If this field is `true`, the extension is REQUIRED to parse this Recording.",
"type": "boolean"
}
},
"additionalProperties": true
}
]
"additionalProperties": true
}
]
}
},
"core:streams": {
"default": [],
"description": "An ordered array of SigMF Recording Tuples, indicating multiple recorded streams of data (e.g., channels from a phased array).",
"type": "array",
"additionalItems": true,
"items": {
"anyOf": [
{
"default": [],
"examples": [["example-channel-0-basename", "hash"]],
"type": "array",
"additionalItems": true,
"items": {
"anyOf": [
{
"default": "",
"type": "string"
}
},
"core:streams": {
"$id": "#/properties/collection/properties/core%3Astreams",
"default": [],
"description": "An ordered array of SigMF Recording Tuples, indicating multiple recorded streams of data (e.g., channels from a phased array).",
"type": "array",
"additionalItems": true,
"items": {
"$id": "#/properties/collection/properties/core%3Astreams/items",
"anyOf": [
{
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/0",
"default": [],
"examples": [
[
"example-channel-0-basename",
"hash"
]
],
"type": "array",
"additionalItems": true,
"items": {
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/0/items",
"anyOf": [
{
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/0/items/anyOf/0",
"default": "",
"type": "string"
}
]
}
},
{
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/1",
"default": [],
"examples": [
[
"example-channel-1-basename",
"hash"
]
],
"type": "array",
"additionalItems": true,
"items": {
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/1/items",
"anyOf": [
{
"$id": "#/properties/collection/properties/core%3Astreams/items/anyOf/1/items/anyOf/0",
"default": "",
"type": "string"
}
]
}
}
]
]
}
},
{
"default": [],
"examples": [["example-channel-1-basename", "hash"]],
"type": "array",
"additionalItems": true,
"items": {
"anyOf": [
{
"default": "",
"type": "string"
}
]
}
},
"additionalProperties": true
}
]
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Loading

0 comments on commit 90a2ef8

Please sign in to comment.