spatialdds 0.3.0__tar.gz → 0.3.1__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.
- {spatialdds-0.3.0 → spatialdds-0.3.1}/PKG-INFO +56 -24
- {spatialdds-0.3.0 → spatialdds-0.3.1}/README.md +55 -23
- {spatialdds-0.3.0 → spatialdds-0.3.1}/pyproject.toml +1 -1
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/__init__.py +1 -1
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/PKG-INFO +56 -24
- {spatialdds-0.3.0 → spatialdds-0.3.1}/setup.cfg +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/idl/core.idl +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/idl/discovery.idl +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/idl/types.idl +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/builtin_Time.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorDelta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorEntry.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorSetRequest.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorSetResponse.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_NodeGeo.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_QualityRequirements.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_VpsRequest.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_VpsResponse.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_AssetRef.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_FrameRef.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_KV.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_MetaKV.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_Vec2.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_Aabb3.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_BlobChunk.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_BlobRef.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_ComponentRef.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_Edge.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_EntityBinding.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_FrameTransform.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_FramedPose.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_GeoAnchor.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_GeoPose.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_NavSatStatus.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_Node.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_PlannedTrajectory.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_PlannedWaypoint.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_PoseSE3.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_SnapshotRequest.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_SnapshotResponse.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TileKey.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TileMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TilePatch.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Announce.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Capabilities.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ContentAnnounce.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageElement.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageFilter.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageHint.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageQuery.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageResponse.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Depart.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_KV.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ProfileSupport.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ServiceSummary.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_TopicMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Transform.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ValidityWindow.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_CrossingLine.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_SpatialEvent.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_SpatialZone.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_ZoneState.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_Edge.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapAlignment.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapEvent.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapQuality.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_owm_Entity.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_owm_ModelCommand.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_owm_ModelPose.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Detection2D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Detection2DSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Detection3D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Detection3DSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_FusedTrack.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_FusedTrackSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Keypoint3D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_KeypointLink.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_Axis.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_FrameHeader.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_FrameQuality.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_Linspace.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_ROI.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_ROIReply.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_ROIRequest.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_StreamMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_lidar_LidarDetection.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_lidar_LidarDetectionSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_lidar_LidarFrame.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_lidar_LidarMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rad_RadDetection.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rad_RadDetectionSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rad_RadSensorMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rad_RadTensorFrame.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rad_RadTensorMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_radio_RadioObservation.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_radio_RadioScan.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_radio_RadioSensorMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rf_beam_RfBeamArraySet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rf_beam_RfBeamFrame.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_rf_beam_RfBeamMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_CamIntrinsics.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_Keypoint2D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_Track2D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_VisionDetections.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_VisionFrame.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_vision_VisionMeta.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_CameraInfo.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_Feature2D.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_FeatureMatch.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_KeyframeFeatures.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_Landmark.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_MatchSet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_TrackObs.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_slam_frontend_Tracklet.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_FusedState.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_ImuInfo.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_ImuSample.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_MagnetometerSample.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_SensorFusionSample.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/serializer_tables.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/canonical.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/canonjson.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/client.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/assets/duck.gltf +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/assets/fountain-label.txt +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/assets/fountain-marker.gltf +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/fountain-anchors.mcap +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/manifests/content-fountain-label.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/manifests/content-fountain-marker.json +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/errors.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/records.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/serve.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/__init__.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/gateway.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/gw_http.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/idlmodel.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/pin.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/publish.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/webjson.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/server/xcdr2.py +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/SOURCES.txt +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/dependency_links.txt +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/entry_points.txt +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/requires.txt +0 -0
- {spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spatialdds
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: SpatialDDS over plain HTTPS and a WebSocket: a client for the web binding (Appendix N), and the reference registry behind one command.
|
|
5
5
|
Author: Open AR Cloud
|
|
6
6
|
License: Apache-2.0
|
|
@@ -43,6 +43,10 @@ not have to assemble member by member.
|
|
|
43
43
|
specification versions move independently; `spatialdds.SPEC_COMMIT` is the one
|
|
44
44
|
that says what the wire looks like.
|
|
45
45
|
|
|
46
|
+
The source, the reference gateway, the recordings and every gate behind the
|
|
47
|
+
claims on this page are at [https://github.com/OpenArCloud/spatialdds-web](https://github.com/OpenArCloud/spatialdds-web). Every code block below is executed
|
|
48
|
+
by one of those gates on every run, against an endpoint started for it.
|
|
49
|
+
|
|
46
50
|
## Your own registry, in one command
|
|
47
51
|
|
|
48
52
|
```sh
|
|
@@ -72,17 +76,26 @@ Appendix N's schemas make every member of a record required, so an `Announce`
|
|
|
72
76
|
is eighteen members, a `ContentAnnounce` sixteen, a `GeoAnchor` nine. The
|
|
73
77
|
builders take the arguments you actually have:
|
|
74
78
|
|
|
79
|
+
<!-- bar: verbs -->
|
|
75
80
|
```python
|
|
76
81
|
import spatialdds as sd
|
|
82
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
83
|
+
a = ep.publish_service(service_id="mytown-vps", kind="VPS",
|
|
84
|
+
coverage=sd.circle(30.2849, -97.7393, 500))
|
|
85
|
+
b = ep.publish_content(
|
|
86
|
+
content_id="duck", title="A duck", position=(30.2849, -97.7393),
|
|
87
|
+
asset=sd.asset_ref("https://cdn.example/duck.gltf",
|
|
88
|
+
media_type="model/gltf+json"))
|
|
89
|
+
c = ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
90
|
+
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
91
|
+
content="duck")
|
|
92
|
+
print("service", a.created, "| content", b.created, "| anchor", c.created)
|
|
93
|
+
print("manifest", b.manifest.doc["id"])
|
|
94
|
+
```
|
|
77
95
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
ep.publish_content(content_id="duck", title="Duck", position=(30.2849, -97.7393),
|
|
82
|
-
asset="https://cdn.example/duck.gltf", sha256=digest)
|
|
83
|
-
ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
84
|
-
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
85
|
-
content="duck")
|
|
96
|
+
```console
|
|
97
|
+
service True | content True | anchor True
|
|
98
|
+
manifest spatialdds://demo.spatialdds.org/mytown/content/duck
|
|
86
99
|
```
|
|
87
100
|
|
|
88
101
|
`publish_service` and `publish_content` are two PUTs each -- the manifest
|
|
@@ -91,9 +104,12 @@ with the manifest's own result on `.manifest`.
|
|
|
91
104
|
|
|
92
105
|
A full service contract is the same one call, with the claims stated:
|
|
93
106
|
|
|
107
|
+
<!-- bar: contract -->
|
|
94
108
|
```python
|
|
109
|
+
import spatialdds as sd
|
|
110
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
95
111
|
area = sd.circle(30.2849, -97.7393, 500)
|
|
96
|
-
ep.publish_service(
|
|
112
|
+
w = ep.publish_service(
|
|
97
113
|
service_id="mytown-vps", kind="VPS", coverage=area,
|
|
98
114
|
caps=sd.capabilities(
|
|
99
115
|
supported=[sd.profile("spatial.core", minor=8)],
|
|
@@ -101,19 +117,28 @@ ep.publish_service(
|
|
|
101
117
|
manifest=sd.service_manifest(
|
|
102
118
|
"mytown-vps", "VPS", authority=ep.authority, scene="mytown",
|
|
103
119
|
profiles=["Core", "AR+Geo"],
|
|
104
|
-
request={
|
|
105
|
-
response={
|
|
106
|
-
limits={
|
|
107
|
-
auth={
|
|
120
|
+
request={"features_topic": "feat.keyframe"},
|
|
121
|
+
response={"minimal": "geo.fix"},
|
|
122
|
+
limits={"max_fps": 10},
|
|
123
|
+
auth={"scheme": "bearer",
|
|
124
|
+
"issuer": "https://registry.mytown.example"},
|
|
108
125
|
coverage=area, cells=sd.cells(area)))
|
|
126
|
+
print("profiles", w.manifest.doc["profiles"])
|
|
127
|
+
print("limits ", w.manifest.doc["limits"])
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```console
|
|
131
|
+
profiles ['Core', 'AR+Geo']
|
|
132
|
+
limits {'max_fps': 10}
|
|
109
133
|
```
|
|
110
134
|
|
|
111
135
|
Every one of those is something a service operator knows and a library cannot
|
|
112
|
-
guess. [
|
|
113
|
-
whole served document;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
136
|
+
guess. [The mytown walkthrough](https://github.com/OpenArCloud/spatialdds-web/blob/main/docs/MYTOWN.md) publishes that
|
|
137
|
+
and prints the whole served document;
|
|
138
|
+
[`gates/builders.py`](https://github.com/OpenArCloud/spatialdds-web/blob/main/gates/builders.py) rebuilds that
|
|
139
|
+
repository's hand-authored `austin-vps` and duck records through these calls
|
|
140
|
+
and compares them member by member, which is what makes "every member is
|
|
141
|
+
reachable from an argument" a check rather than a claim.
|
|
117
142
|
|
|
118
143
|
**Two forms for an asset, because there are two situations.**
|
|
119
144
|
`sd.asset(path_or_bytes, media_type=...)` reads the data and computes the hash
|
|
@@ -122,7 +147,8 @@ and the byte count itself: a hash nobody typed is a hash a reader can trust.
|
|
|
122
147
|
else hosts, and the hash comes from whoever has the bytes. Pass no hash and
|
|
123
148
|
the reference carries no integrity claim, which costs a reader one thing:
|
|
124
149
|
`fetch_asset()` raises rather than reporting a check it could not perform
|
|
125
|
-
(finding 31).
|
|
150
|
+
([finding 31](https://github.com/OpenArCloud/spatialdds-web/blob/main/WEB-BINDING-FINDINGS.md)).
|
|
151
|
+
`publish_content` takes either, or a path, or bytes, or a URL.
|
|
126
152
|
|
|
127
153
|
The builders are also usable on their own: `sd.service_announce`,
|
|
128
154
|
`sd.service_manifest`, `sd.content_announce`, `sd.content_manifest`,
|
|
@@ -258,7 +284,7 @@ call goes away and the bar is one line.
|
|
|
258
284
|
|
|
259
285
|
## The surface
|
|
260
286
|
|
|
261
|
-
| | |
|
|
287
|
+
| call | what it does |
|
|
262
288
|
| --- | --- |
|
|
263
289
|
| `sd.connect(base, token=None, verify_integrity=True, timeout=15.0, lifted=True, scene="default", authority=None)` | an `Endpoint`; nothing is fetched until you ask |
|
|
264
290
|
| `ep.search(geohash=None, kinds=None)` | §3.3.0 search → a list of `Hit` |
|
|
@@ -309,7 +335,7 @@ One family, built from the endpoint's own N.8 problem documents — `status`,
|
|
|
309
335
|
`type`, `detail` carried, not re-invented. Everything below derives from
|
|
310
336
|
`SpatialDDSError`, so one `except` catches the lot.
|
|
311
337
|
|
|
312
|
-
| | |
|
|
338
|
+
| exception | raised when |
|
|
313
339
|
| --- | --- |
|
|
314
340
|
| `Unreachable` | the endpoint did not answer; names the URL and the serve line |
|
|
315
341
|
| `Unauthorized` | 401; says to pass `token=` and where the token is printed |
|
|
@@ -330,13 +356,19 @@ Latched reads revalidate with the ETag the endpoint gave; `fetch_asset` checks
|
|
|
330
356
|
the bytes. Opting out exists and is loud: `verify_integrity=False`, at the call
|
|
331
357
|
site, nowhere else.
|
|
332
358
|
|
|
333
|
-
## Not in 0.3.
|
|
359
|
+
## Not in 0.3.1
|
|
334
360
|
|
|
335
361
|
Stated so nobody waits for them: no async API, no caching beyond ETag
|
|
336
362
|
revalidation, no retry policy, no MCAP tooling beyond the journal the server
|
|
337
363
|
writes, and no DDS dependency of any kind. The wire is HTTP and a WebSocket.
|
|
338
364
|
|
|
339
|
-
|
|
365
|
+
0.3.1 is this page: two code blocks on it had no gate behind them and both
|
|
366
|
+
were broken, and a long description is baked into the artifact, so the page on
|
|
367
|
+
PyPI only heals with a release. Every block here is executed by a gate now,
|
|
368
|
+
and the gate also refuses a relative link, an empty table header and a serve
|
|
369
|
+
line naming a flag that does not exist.
|
|
370
|
+
|
|
371
|
+
`sd.asset` changed meaning in 0.3.0, which is why that version moved: it now
|
|
340
372
|
reads bytes and computes a hash, where in 0.2.0 it took a URL and a hash you
|
|
341
373
|
supplied. That second form is `sd.asset_ref`. A published release has to stay
|
|
342
374
|
reproducible from a public commit, so the API could not change under the same
|
|
@@ -19,6 +19,10 @@ not have to assemble member by member.
|
|
|
19
19
|
specification versions move independently; `spatialdds.SPEC_COMMIT` is the one
|
|
20
20
|
that says what the wire looks like.
|
|
21
21
|
|
|
22
|
+
The source, the reference gateway, the recordings and every gate behind the
|
|
23
|
+
claims on this page are at [https://github.com/OpenArCloud/spatialdds-web](https://github.com/OpenArCloud/spatialdds-web). Every code block below is executed
|
|
24
|
+
by one of those gates on every run, against an endpoint started for it.
|
|
25
|
+
|
|
22
26
|
## Your own registry, in one command
|
|
23
27
|
|
|
24
28
|
```sh
|
|
@@ -48,17 +52,26 @@ Appendix N's schemas make every member of a record required, so an `Announce`
|
|
|
48
52
|
is eighteen members, a `ContentAnnounce` sixteen, a `GeoAnchor` nine. The
|
|
49
53
|
builders take the arguments you actually have:
|
|
50
54
|
|
|
55
|
+
<!-- bar: verbs -->
|
|
51
56
|
```python
|
|
52
57
|
import spatialdds as sd
|
|
58
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
59
|
+
a = ep.publish_service(service_id="mytown-vps", kind="VPS",
|
|
60
|
+
coverage=sd.circle(30.2849, -97.7393, 500))
|
|
61
|
+
b = ep.publish_content(
|
|
62
|
+
content_id="duck", title="A duck", position=(30.2849, -97.7393),
|
|
63
|
+
asset=sd.asset_ref("https://cdn.example/duck.gltf",
|
|
64
|
+
media_type="model/gltf+json"))
|
|
65
|
+
c = ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
66
|
+
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
67
|
+
content="duck")
|
|
68
|
+
print("service", a.created, "| content", b.created, "| anchor", c.created)
|
|
69
|
+
print("manifest", b.manifest.doc["id"])
|
|
70
|
+
```
|
|
53
71
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
ep.publish_content(content_id="duck", title="Duck", position=(30.2849, -97.7393),
|
|
58
|
-
asset="https://cdn.example/duck.gltf", sha256=digest)
|
|
59
|
-
ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
60
|
-
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
61
|
-
content="duck")
|
|
72
|
+
```console
|
|
73
|
+
service True | content True | anchor True
|
|
74
|
+
manifest spatialdds://demo.spatialdds.org/mytown/content/duck
|
|
62
75
|
```
|
|
63
76
|
|
|
64
77
|
`publish_service` and `publish_content` are two PUTs each -- the manifest
|
|
@@ -67,9 +80,12 @@ with the manifest's own result on `.manifest`.
|
|
|
67
80
|
|
|
68
81
|
A full service contract is the same one call, with the claims stated:
|
|
69
82
|
|
|
83
|
+
<!-- bar: contract -->
|
|
70
84
|
```python
|
|
85
|
+
import spatialdds as sd
|
|
86
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
71
87
|
area = sd.circle(30.2849, -97.7393, 500)
|
|
72
|
-
ep.publish_service(
|
|
88
|
+
w = ep.publish_service(
|
|
73
89
|
service_id="mytown-vps", kind="VPS", coverage=area,
|
|
74
90
|
caps=sd.capabilities(
|
|
75
91
|
supported=[sd.profile("spatial.core", minor=8)],
|
|
@@ -77,19 +93,28 @@ ep.publish_service(
|
|
|
77
93
|
manifest=sd.service_manifest(
|
|
78
94
|
"mytown-vps", "VPS", authority=ep.authority, scene="mytown",
|
|
79
95
|
profiles=["Core", "AR+Geo"],
|
|
80
|
-
request={
|
|
81
|
-
response={
|
|
82
|
-
limits={
|
|
83
|
-
auth={
|
|
96
|
+
request={"features_topic": "feat.keyframe"},
|
|
97
|
+
response={"minimal": "geo.fix"},
|
|
98
|
+
limits={"max_fps": 10},
|
|
99
|
+
auth={"scheme": "bearer",
|
|
100
|
+
"issuer": "https://registry.mytown.example"},
|
|
84
101
|
coverage=area, cells=sd.cells(area)))
|
|
102
|
+
print("profiles", w.manifest.doc["profiles"])
|
|
103
|
+
print("limits ", w.manifest.doc["limits"])
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
```console
|
|
107
|
+
profiles ['Core', 'AR+Geo']
|
|
108
|
+
limits {'max_fps': 10}
|
|
85
109
|
```
|
|
86
110
|
|
|
87
111
|
Every one of those is something a service operator knows and a library cannot
|
|
88
|
-
guess. [
|
|
89
|
-
whole served document;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
112
|
+
guess. [The mytown walkthrough](https://github.com/OpenArCloud/spatialdds-web/blob/main/docs/MYTOWN.md) publishes that
|
|
113
|
+
and prints the whole served document;
|
|
114
|
+
[`gates/builders.py`](https://github.com/OpenArCloud/spatialdds-web/blob/main/gates/builders.py) rebuilds that
|
|
115
|
+
repository's hand-authored `austin-vps` and duck records through these calls
|
|
116
|
+
and compares them member by member, which is what makes "every member is
|
|
117
|
+
reachable from an argument" a check rather than a claim.
|
|
93
118
|
|
|
94
119
|
**Two forms for an asset, because there are two situations.**
|
|
95
120
|
`sd.asset(path_or_bytes, media_type=...)` reads the data and computes the hash
|
|
@@ -98,7 +123,8 @@ and the byte count itself: a hash nobody typed is a hash a reader can trust.
|
|
|
98
123
|
else hosts, and the hash comes from whoever has the bytes. Pass no hash and
|
|
99
124
|
the reference carries no integrity claim, which costs a reader one thing:
|
|
100
125
|
`fetch_asset()` raises rather than reporting a check it could not perform
|
|
101
|
-
(finding 31).
|
|
126
|
+
([finding 31](https://github.com/OpenArCloud/spatialdds-web/blob/main/WEB-BINDING-FINDINGS.md)).
|
|
127
|
+
`publish_content` takes either, or a path, or bytes, or a URL.
|
|
102
128
|
|
|
103
129
|
The builders are also usable on their own: `sd.service_announce`,
|
|
104
130
|
`sd.service_manifest`, `sd.content_announce`, `sd.content_manifest`,
|
|
@@ -234,7 +260,7 @@ call goes away and the bar is one line.
|
|
|
234
260
|
|
|
235
261
|
## The surface
|
|
236
262
|
|
|
237
|
-
| | |
|
|
263
|
+
| call | what it does |
|
|
238
264
|
| --- | --- |
|
|
239
265
|
| `sd.connect(base, token=None, verify_integrity=True, timeout=15.0, lifted=True, scene="default", authority=None)` | an `Endpoint`; nothing is fetched until you ask |
|
|
240
266
|
| `ep.search(geohash=None, kinds=None)` | §3.3.0 search → a list of `Hit` |
|
|
@@ -285,7 +311,7 @@ One family, built from the endpoint's own N.8 problem documents — `status`,
|
|
|
285
311
|
`type`, `detail` carried, not re-invented. Everything below derives from
|
|
286
312
|
`SpatialDDSError`, so one `except` catches the lot.
|
|
287
313
|
|
|
288
|
-
| | |
|
|
314
|
+
| exception | raised when |
|
|
289
315
|
| --- | --- |
|
|
290
316
|
| `Unreachable` | the endpoint did not answer; names the URL and the serve line |
|
|
291
317
|
| `Unauthorized` | 401; says to pass `token=` and where the token is printed |
|
|
@@ -306,13 +332,19 @@ Latched reads revalidate with the ETag the endpoint gave; `fetch_asset` checks
|
|
|
306
332
|
the bytes. Opting out exists and is loud: `verify_integrity=False`, at the call
|
|
307
333
|
site, nowhere else.
|
|
308
334
|
|
|
309
|
-
## Not in 0.3.
|
|
335
|
+
## Not in 0.3.1
|
|
310
336
|
|
|
311
337
|
Stated so nobody waits for them: no async API, no caching beyond ETag
|
|
312
338
|
revalidation, no retry policy, no MCAP tooling beyond the journal the server
|
|
313
339
|
writes, and no DDS dependency of any kind. The wire is HTTP and a WebSocket.
|
|
314
340
|
|
|
315
|
-
|
|
341
|
+
0.3.1 is this page: two code blocks on it had no gate behind them and both
|
|
342
|
+
were broken, and a long description is baked into the artifact, so the page on
|
|
343
|
+
PyPI only heals with a release. Every block here is executed by a gate now,
|
|
344
|
+
and the gate also refuses a relative link, an empty table header and a serve
|
|
345
|
+
line naming a flag that does not exist.
|
|
346
|
+
|
|
347
|
+
`sd.asset` changed meaning in 0.3.0, which is why that version moved: it now
|
|
316
348
|
reads bytes and computes a hash, where in 0.2.0 it took a URL and a hash you
|
|
317
349
|
supplied. That second form is `sd.asset_ref`. A published release has to stay
|
|
318
350
|
reproducible from a public commit, so the API could not change under the same
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "spatialdds"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.1"
|
|
8
8
|
description = "SpatialDDS over plain HTTPS and a WebSocket: a client for the web binding (Appendix N), and the reference registry behind one command."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -37,7 +37,7 @@ __all__ = [
|
|
|
37
37
|
"content_manifest", "geo_anchor", "service_uri", "content_uri",
|
|
38
38
|
]
|
|
39
39
|
|
|
40
|
-
__version__ = "0.3.
|
|
40
|
+
__version__ = "0.3.1"
|
|
41
41
|
#: The SpatialDDS-spec commit whose Appendix N and generated artifacts this
|
|
42
42
|
#: package implements. Package versions and specification versions move
|
|
43
43
|
#: independently; this is the one that says what the wire looks like.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spatialdds
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: SpatialDDS over plain HTTPS and a WebSocket: a client for the web binding (Appendix N), and the reference registry behind one command.
|
|
5
5
|
Author: Open AR Cloud
|
|
6
6
|
License: Apache-2.0
|
|
@@ -43,6 +43,10 @@ not have to assemble member by member.
|
|
|
43
43
|
specification versions move independently; `spatialdds.SPEC_COMMIT` is the one
|
|
44
44
|
that says what the wire looks like.
|
|
45
45
|
|
|
46
|
+
The source, the reference gateway, the recordings and every gate behind the
|
|
47
|
+
claims on this page are at [https://github.com/OpenArCloud/spatialdds-web](https://github.com/OpenArCloud/spatialdds-web). Every code block below is executed
|
|
48
|
+
by one of those gates on every run, against an endpoint started for it.
|
|
49
|
+
|
|
46
50
|
## Your own registry, in one command
|
|
47
51
|
|
|
48
52
|
```sh
|
|
@@ -72,17 +76,26 @@ Appendix N's schemas make every member of a record required, so an `Announce`
|
|
|
72
76
|
is eighteen members, a `ContentAnnounce` sixteen, a `GeoAnchor` nine. The
|
|
73
77
|
builders take the arguments you actually have:
|
|
74
78
|
|
|
79
|
+
<!-- bar: verbs -->
|
|
75
80
|
```python
|
|
76
81
|
import spatialdds as sd
|
|
82
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
83
|
+
a = ep.publish_service(service_id="mytown-vps", kind="VPS",
|
|
84
|
+
coverage=sd.circle(30.2849, -97.7393, 500))
|
|
85
|
+
b = ep.publish_content(
|
|
86
|
+
content_id="duck", title="A duck", position=(30.2849, -97.7393),
|
|
87
|
+
asset=sd.asset_ref("https://cdn.example/duck.gltf",
|
|
88
|
+
media_type="model/gltf+json"))
|
|
89
|
+
c = ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
90
|
+
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
91
|
+
content="duck")
|
|
92
|
+
print("service", a.created, "| content", b.created, "| anchor", c.created)
|
|
93
|
+
print("manifest", b.manifest.doc["id"])
|
|
94
|
+
```
|
|
77
95
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
ep.publish_content(content_id="duck", title="Duck", position=(30.2849, -97.7393),
|
|
82
|
-
asset="https://cdn.example/duck.gltf", sha256=digest)
|
|
83
|
-
ep.publish_anchor("anchor/duck-perch", lat=30.2849, lon=-97.7393,
|
|
84
|
-
method="VisualFix", sigma_enu_m=(0.25, 0.25, 0.5),
|
|
85
|
-
content="duck")
|
|
96
|
+
```console
|
|
97
|
+
service True | content True | anchor True
|
|
98
|
+
manifest spatialdds://demo.spatialdds.org/mytown/content/duck
|
|
86
99
|
```
|
|
87
100
|
|
|
88
101
|
`publish_service` and `publish_content` are two PUTs each -- the manifest
|
|
@@ -91,9 +104,12 @@ with the manifest's own result on `.manifest`.
|
|
|
91
104
|
|
|
92
105
|
A full service contract is the same one call, with the claims stated:
|
|
93
106
|
|
|
107
|
+
<!-- bar: contract -->
|
|
94
108
|
```python
|
|
109
|
+
import spatialdds as sd
|
|
110
|
+
ep = sd.connect("http://127.0.0.1:8787", token="not-a-secret", scene="mytown")
|
|
95
111
|
area = sd.circle(30.2849, -97.7393, 500)
|
|
96
|
-
ep.publish_service(
|
|
112
|
+
w = ep.publish_service(
|
|
97
113
|
service_id="mytown-vps", kind="VPS", coverage=area,
|
|
98
114
|
caps=sd.capabilities(
|
|
99
115
|
supported=[sd.profile("spatial.core", minor=8)],
|
|
@@ -101,19 +117,28 @@ ep.publish_service(
|
|
|
101
117
|
manifest=sd.service_manifest(
|
|
102
118
|
"mytown-vps", "VPS", authority=ep.authority, scene="mytown",
|
|
103
119
|
profiles=["Core", "AR+Geo"],
|
|
104
|
-
request={
|
|
105
|
-
response={
|
|
106
|
-
limits={
|
|
107
|
-
auth={
|
|
120
|
+
request={"features_topic": "feat.keyframe"},
|
|
121
|
+
response={"minimal": "geo.fix"},
|
|
122
|
+
limits={"max_fps": 10},
|
|
123
|
+
auth={"scheme": "bearer",
|
|
124
|
+
"issuer": "https://registry.mytown.example"},
|
|
108
125
|
coverage=area, cells=sd.cells(area)))
|
|
126
|
+
print("profiles", w.manifest.doc["profiles"])
|
|
127
|
+
print("limits ", w.manifest.doc["limits"])
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```console
|
|
131
|
+
profiles ['Core', 'AR+Geo']
|
|
132
|
+
limits {'max_fps': 10}
|
|
109
133
|
```
|
|
110
134
|
|
|
111
135
|
Every one of those is something a service operator knows and a library cannot
|
|
112
|
-
guess. [
|
|
113
|
-
whole served document;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
136
|
+
guess. [The mytown walkthrough](https://github.com/OpenArCloud/spatialdds-web/blob/main/docs/MYTOWN.md) publishes that
|
|
137
|
+
and prints the whole served document;
|
|
138
|
+
[`gates/builders.py`](https://github.com/OpenArCloud/spatialdds-web/blob/main/gates/builders.py) rebuilds that
|
|
139
|
+
repository's hand-authored `austin-vps` and duck records through these calls
|
|
140
|
+
and compares them member by member, which is what makes "every member is
|
|
141
|
+
reachable from an argument" a check rather than a claim.
|
|
117
142
|
|
|
118
143
|
**Two forms for an asset, because there are two situations.**
|
|
119
144
|
`sd.asset(path_or_bytes, media_type=...)` reads the data and computes the hash
|
|
@@ -122,7 +147,8 @@ and the byte count itself: a hash nobody typed is a hash a reader can trust.
|
|
|
122
147
|
else hosts, and the hash comes from whoever has the bytes. Pass no hash and
|
|
123
148
|
the reference carries no integrity claim, which costs a reader one thing:
|
|
124
149
|
`fetch_asset()` raises rather than reporting a check it could not perform
|
|
125
|
-
(finding 31).
|
|
150
|
+
([finding 31](https://github.com/OpenArCloud/spatialdds-web/blob/main/WEB-BINDING-FINDINGS.md)).
|
|
151
|
+
`publish_content` takes either, or a path, or bytes, or a URL.
|
|
126
152
|
|
|
127
153
|
The builders are also usable on their own: `sd.service_announce`,
|
|
128
154
|
`sd.service_manifest`, `sd.content_announce`, `sd.content_manifest`,
|
|
@@ -258,7 +284,7 @@ call goes away and the bar is one line.
|
|
|
258
284
|
|
|
259
285
|
## The surface
|
|
260
286
|
|
|
261
|
-
| | |
|
|
287
|
+
| call | what it does |
|
|
262
288
|
| --- | --- |
|
|
263
289
|
| `sd.connect(base, token=None, verify_integrity=True, timeout=15.0, lifted=True, scene="default", authority=None)` | an `Endpoint`; nothing is fetched until you ask |
|
|
264
290
|
| `ep.search(geohash=None, kinds=None)` | §3.3.0 search → a list of `Hit` |
|
|
@@ -309,7 +335,7 @@ One family, built from the endpoint's own N.8 problem documents — `status`,
|
|
|
309
335
|
`type`, `detail` carried, not re-invented. Everything below derives from
|
|
310
336
|
`SpatialDDSError`, so one `except` catches the lot.
|
|
311
337
|
|
|
312
|
-
| | |
|
|
338
|
+
| exception | raised when |
|
|
313
339
|
| --- | --- |
|
|
314
340
|
| `Unreachable` | the endpoint did not answer; names the URL and the serve line |
|
|
315
341
|
| `Unauthorized` | 401; says to pass `token=` and where the token is printed |
|
|
@@ -330,13 +356,19 @@ Latched reads revalidate with the ETag the endpoint gave; `fetch_asset` checks
|
|
|
330
356
|
the bytes. Opting out exists and is loud: `verify_integrity=False`, at the call
|
|
331
357
|
site, nowhere else.
|
|
332
358
|
|
|
333
|
-
## Not in 0.3.
|
|
359
|
+
## Not in 0.3.1
|
|
334
360
|
|
|
335
361
|
Stated so nobody waits for them: no async API, no caching beyond ETag
|
|
336
362
|
revalidation, no retry policy, no MCAP tooling beyond the journal the server
|
|
337
363
|
writes, and no DDS dependency of any kind. The wire is HTTP and a WebSocket.
|
|
338
364
|
|
|
339
|
-
|
|
365
|
+
0.3.1 is this page: two code blocks on it had no gate behind them and both
|
|
366
|
+
were broken, and a long description is baked into the artifact, so the page on
|
|
367
|
+
PyPI only heals with a release. Every block here is executed by a gate now,
|
|
368
|
+
and the gate also refuses a relative link, an empty table header and a serve
|
|
369
|
+
line naming a flag that does not exist.
|
|
370
|
+
|
|
371
|
+
`sd.asset` changed meaning in 0.3.0, which is why that version moved: it now
|
|
340
372
|
reads bytes and computes a hash, where in 0.2.0 it took a URL and a hash you
|
|
341
373
|
supplied. That second form is `sd.asset_ref`. A published release has to stay
|
|
342
374
|
reproducible from a public commit, so the API could not change under the same
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorDelta.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorEntry.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_anchors_AnchorSet.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_NodeGeo.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_VpsRequest.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_argeo_VpsResponse.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_AssetRef.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_FrameRef.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_common_MetaKV.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_BlobChunk.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_BlobRef.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_ComponentRef.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_EntityBinding.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_FrameTransform.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_FramedPose.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_GeoAnchor.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_GeoPose.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_NavSatStatus.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_PlannedWaypoint.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_PoseSE3.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_SnapshotRequest.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TileKey.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TileMeta.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_core_TilePatch.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Announce.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Capabilities.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageFilter.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageHint.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_CoverageQuery.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Depart.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ProfileSupport.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ServiceSummary.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_TopicMeta.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_Transform.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_disco_ValidityWindow.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_CrossingLine.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_SpatialEvent.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_SpatialZone.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_events_ZoneState.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_Edge.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapAlignment.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapEvent.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapMeta.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_mapping_MapQuality.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_owm_ModelCommand.json
RENAMED
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_owm_ModelPose.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_FusedTrack.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_semantics_Keypoint3D.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_Axis.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_sensing_common_ROI.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_FusedState.json
RENAMED
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/artifacts/schemas/spatial_vio_ImuSample.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spatialdds-0.3.0 → spatialdds-0.3.1}/spatialdds/demo/manifests/content-fountain-marker.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|