s3dgraphy 1.6.0.dev58__tar.gz → 1.6.0.dev59__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.
- {s3dgraphy-1.6.0.dev58/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev59}/PKG-INFO +4 -4
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/pyproject.toml +7 -6
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em.ttl +1 -1
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/__init__.py +1 -1
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/api.py +21 -20
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/__init__.py +9 -9
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/addresses.py +1 -1
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/object_store.py +29 -39
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/resolver.py +1 -1
- s3dgraphy-1.6.0.dev58/src/s3dgraphy/resources/minio_backend.py → s3dgraphy-1.6.0.dev59/src/s3dgraphy/resources/s3_backend.py +139 -51
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/shelf/core.py +5 -5
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59/src/s3dgraphy.egg-info}/PKG-INFO +4 -4
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy.egg-info/SOURCES.txt +2 -2
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy.egg-info/requires.txt +4 -4
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_blend_locator.py +3 -2
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_bucket_alignment.py +18 -17
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_release.py +1 -1
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_layer.py +1 -1
- s3dgraphy-1.6.0.dev58/tests/test_minio_backend.py → s3dgraphy-1.6.0.dev59/tests/test_s3_backend.py +62 -51
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_semantic_purity.py +2 -2
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_shelf_role_uri_table.py +4 -4
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/LICENSE +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/MANIFEST.in +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/README.md +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/setup.cfg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/alternative_cases.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_state_symbols.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/container.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/proxy.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/tileset.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/version_gltf.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/version_mesh.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/version_scene.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/2D/version_tiles.svg +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/JSON_config/version_for_cases.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/__main__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/acquisition/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/acquisition/acquire.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/acquisition/descriptor.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/acquisition/mapping.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/ai_validation.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/annotation/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/annotation/paradata.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/annotation/reading.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/classification.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/container.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/contract/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/contract/connector.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/contract/consumer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/contract/core.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/contract/reference.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/crdt.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/datamodel.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/diagnostics.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dissemination.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/capture.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/corpus.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/devices.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/ingest.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/dtc/residency.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/edges/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/edges/connection_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/edges/connections_loader.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/edges/edge.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/editorial.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/html_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/json_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/aton.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/gltf.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/migrate.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/proxy.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/reading_glb.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/store_backed.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/transform.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/geometry/wkt.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/graph.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/hdto.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/iiif.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/base_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/csv_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/emjson_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/import_graphml.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/metashape_project.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/qualia_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/rdf_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/sheet_header.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/source_text.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/importer/xml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/indices.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/labels.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/language.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/links.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/authoring.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/registry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/merge/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/merge/graph_merger.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/multigraph/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/multigraph/multigraph.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/bake.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/generation.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/query.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/registry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/narrative/site_story.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/author_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/base_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/combiner_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/document_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/dtc_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/embargo_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/epoch_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/extractor_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/graph_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/group_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/hdt_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/license_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/narrative_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/paradata_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/project_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/property_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/representation_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/resource_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/study_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/nodes/translation_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/ownership.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/paradata_view.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/photogrammetry/delta.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/project_tree.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/property_source.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/publication.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/rapporti.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resolvers/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/alignment.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/alternatives.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/files.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/fs_backend.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/locate.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/moved.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/storage_rows.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/tiles3tz.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/resources/versions.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/rights.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/access.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/engine.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/errors.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/inventory.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/pack.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/room_import/trust.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/shelf/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/spatiotemporal.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/stamp/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/stamp/absorb.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/stamp/emit.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/stamp/hints.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/stamp/identity.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/study.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/_db_handle.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/_workspace.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/edge_registry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/graph_projector.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/graphml_writer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/group_projector.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/group_store.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/ingest_result.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/paradata_store.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/rapporti.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/uuid7.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/vocab_types.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_classifier.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_detector.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/temporal/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/temporal/inference_engine.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/consumer_drift.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/deliverable_report.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/node_finder.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/tools/wheel_drift.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/transforms/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/transforms/compact.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/translation.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/utils/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/utils/utils.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/utils/visual_layout.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy/zero_hour.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/src/s3dgraphy.egg-info/top_level.txt +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_acquisition.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_acquisition_fs.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_add_resource.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_ai_validation_nodes.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_alternative_labels.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_alternative_sets.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_alternatives_hat.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_api_surface.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_asset_dtc_protocol.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_asset_versions.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_aton_shapes.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_attach_only.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_authority_projection.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_authority_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_canonical_document_rename.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_canvas_metadata_import.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_capture_acquisition.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_capture_rdf_class.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_chronology_on_request.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_coating_unit.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_composite_node_name.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_connection_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_consumer_drift.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_container.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_container_layouts.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_containment_tpq.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_contract.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_contract_consumer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_convert_command.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_crdt.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_cycle_message_is_cheap.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_datamodel_fingerprint.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_datamodel_i18n.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_deterministic_ids.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_em_sourcelist.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_file_set_stamp.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_graphml_without_a_database.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_image_set_texturing.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_not_georeferenced.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_one_act_n_outputs.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev29_ttl_round_trip.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dev30_decisions.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_devices.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dissemination_tombstones.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dove_sta_il_testo.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dtc_corpus.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dtc_ingest.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dtc_neighbourhood.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dtc_projection.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_dtc_residency.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_edge_outside_graph.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_edge_ui_phrases.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_editorial.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_emjson_no_drawing_keys.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_emjson_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_emjson_schema_version.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_epoch_undated_import.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_explicit_node_type_marker.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_extracted_from_unit.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_filtered_import.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_fmpxml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_fs_backend.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_functional_units.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_georeference_scene.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_gltf_stitch.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_glyph_paths.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_graph_header_code.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_graph_helpers_indexed.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_graph_indices_alive.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_graph_indices_edges.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_graph_scope_migration.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_hdto_projection.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_hdto_study.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_header_key_aliases.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_i_generi_dei_passi.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_iiif.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_il_modo_d_accesso.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_il_modo_dal_relay.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_il_proprietario_si_legge.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_il_riallineamento.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_importer_edge_hygiene.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_ipynb_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_issue27_small_points.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_la_lingua_alla_nascita.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_la_lingua_dei_dati.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_la_lingua_nell_op.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_la_riga_d_intestazione.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_latex_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_le_traduzioni.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_lod_levels.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_lossless_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_mapping_authoring.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_mapping_csv_and_relations.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_masonry_unit.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_material_color.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_merge_conflicts.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_metashape_project.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_migrate_legacy_proxy.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_authorship.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_bake_docx.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_figures.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_generation.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_mentions.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_query.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_scaffolder.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_site_place.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_narrative_unvalidated_export.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_node_datamodel_registry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_node_finder.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_node_type_map_integrity.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_one_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_one_spelling_writers.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_op_vocabulary.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_pg_importer.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_photogrammetry_delta.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_physical_relation_spellings.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_piu_indirizzi.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_promote_keeps_proxy_type.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_promotion.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_property_as_source.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_property_owners.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_proxy_resource.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_proxy_retype.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_psx_locator.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_pyarchinit_tier2.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_qualia_dai_d7_d8.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_rdf_embedding.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_rdf_reverse_edges.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_rdf_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reading_coords.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reading_glb.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reading_migration.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reading_place.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reading_rdf.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_recompute_warnings.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reproject.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_file_node.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_files_implicit.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_representations.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_revision.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_resource_tier.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_reverse_edges.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_rm_container_node_group.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_room_import.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_room_import_access.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_room_import_inventory.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_room_import_trust.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_shelf.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_shelf_facets.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_shelf_hatting.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_shipped_mappings.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_source_list_mapping.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_source_text.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_spatiotemporal_entities.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_stable_study_code.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_stamp.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_stamp_hints.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_stamp_title_description.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_storage_rows.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_store_backed_geometry.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_stratiminer_api.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_study_metadata.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_threed_instances.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_tileset_resource.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_transform_form.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_ttl_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_unit_definition.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_verifica_provenance.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_version_for.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_visual_assets.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_wheel_drift.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_xlsx_importer_graph_init.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_xlsx_source_column.py +0 -0
- {s3dgraphy-1.6.0.dev58 → s3dgraphy-1.6.0.dev59}/tests/test_zero_hour.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: s3dgraphy
|
|
3
|
-
Version: 1.6.0.
|
|
3
|
+
Version: 1.6.0.dev59
|
|
4
4
|
Summary: 3D Stratigraphic Graph Management Library for archaeological and heritage applications
|
|
5
5
|
Author-email: Emanuel Demetrescu <emanuel.demetrescu@cnr.it>
|
|
6
6
|
Maintainer-email: Emanuel Demetrescu <emanuel.demetrescu@cnr.it>
|
|
@@ -48,8 +48,8 @@ Provides-Extra: sync
|
|
|
48
48
|
Requires-Dist: sqlalchemy>=2.0; extra == "sync"
|
|
49
49
|
Provides-Extra: postgres
|
|
50
50
|
Requires-Dist: psycopg2-binary>=2.9; extra == "postgres"
|
|
51
|
-
Provides-Extra:
|
|
52
|
-
Requires-Dist:
|
|
51
|
+
Provides-Extra: s3
|
|
52
|
+
Requires-Dist: boto3>=1.34; extra == "s3"
|
|
53
53
|
Provides-Extra: geo
|
|
54
54
|
Requires-Dist: pyproj>=3.4; extra == "geo"
|
|
55
55
|
Provides-Extra: pdf
|
|
@@ -70,7 +70,7 @@ Requires-Dist: sphinx>=5.0; extra == "docs"
|
|
|
70
70
|
Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
|
71
71
|
Requires-Dist: myst-parser; extra == "docs"
|
|
72
72
|
Provides-Extra: full
|
|
73
|
-
Requires-Dist: s3dgraphy[geo,
|
|
73
|
+
Requires-Dist: s3dgraphy[geo,rdf-embedded,s3,sync,visualization]; extra == "full"
|
|
74
74
|
Provides-Extra: all
|
|
75
75
|
Requires-Dist: s3dgraphy[dev,docs,full,postgres]; extra == "all"
|
|
76
76
|
Dynamic: license-file
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "s3dgraphy"
|
|
7
|
-
version = "1.6.0.
|
|
7
|
+
version = "1.6.0.dev59"
|
|
8
8
|
description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -113,12 +113,13 @@ postgres = [
|
|
|
113
113
|
# the PG path of PyArchInitImporter when that lands.
|
|
114
114
|
"psycopg2-binary>=2.9",
|
|
115
115
|
]
|
|
116
|
-
|
|
117
|
-
#
|
|
118
|
-
# (
|
|
116
|
+
s3 = [
|
|
117
|
+
# S3 object-storage backend for the Resource layer, any S3-compatible
|
|
118
|
+
# endpoint (RustFS in the dev stack) through boto3
|
|
119
|
+
# (s3dgraphy.resources.s3_backend, R2). Without this extra, constructing
|
|
119
120
|
# a client / ingesting raises MissingDependency (like rdflib for TTL);
|
|
120
121
|
# resolve()/manifest work dep-free on an already-populated index.
|
|
121
|
-
"
|
|
122
|
+
"boto3>=1.34",
|
|
122
123
|
]
|
|
123
124
|
geo = [
|
|
124
125
|
# Coordinate reprojection for api.reproject / api.georeference_scene (G1).
|
|
@@ -178,7 +179,7 @@ docs = [
|
|
|
178
179
|
# without the dev/docs tooling. The dev/docs/test stacks stay separate
|
|
179
180
|
# so CI-style installs don't pull editor/QA deps.
|
|
180
181
|
full = [
|
|
181
|
-
"s3dgraphy[rdf-embedded,visualization,sync,
|
|
182
|
+
"s3dgraphy[rdf-embedded,visualization,sync,s3,geo]",
|
|
182
183
|
]
|
|
183
184
|
all = [
|
|
184
185
|
"s3dgraphy[full,dev,docs,postgres]",
|
|
@@ -874,7 +874,7 @@ em:hasAddress
|
|
|
874
874
|
a owl:ObjectProperty ;
|
|
875
875
|
rdfs:label "has address"@en ;
|
|
876
876
|
rdfs:domain crm:E73_Information_Object ;
|
|
877
|
-
rdfs:comment "One of the places where the SAME bytes of a resource can be fetched — the same digest on the disk,
|
|
877
|
+
rdfs:comment "One of the places where the SAME bytes of a resource can be fetched — the same digest on the disk, in the S3 store, on Zenodo: identical copies are one resource with several addresses, and losing one address does not lose the resource. The object is a derived IRI <resource>/address/<i>, number 0 being the resource's url; every locator is also an rdfs:seeAlso of the resource, so a reader that knows nothing of EM finds every copy. Different manifestations are not addresses but sister resources. Maps to: node_datamodel ResourceNode.properties.addresses (data.addresses)."@en .
|
|
878
878
|
|
|
879
879
|
em:locator
|
|
880
880
|
a owl:DatatypeProperty ;
|
|
@@ -3150,7 +3150,7 @@ def find_moved_files(graph: Graph, results: Sequence[Dict[str, Any]],
|
|
|
3150
3150
|
|
|
3151
3151
|
# ── B1 · disk ↔ bucket: the two copies, and what may be let go (E.D., 11 Oct 2026) ──
|
|
3152
3152
|
def open_object_store(name: Optional[str] = None, config: Any = None):
|
|
3153
|
-
"""The object store of the Resource layer — any S3-compatible one (
|
|
3153
|
+
"""The object store of the Resource layer — any S3-compatible one (RustFS
|
|
3154
3154
|
today). ``S3_*`` environment, ``EM_OBJECT_STORE`` to choose another
|
|
3155
3155
|
implementation (:func:`s3dgraphy.resources.object_store.register_store`)."""
|
|
3156
3156
|
from .resources.object_store import open_store
|
|
@@ -3345,7 +3345,7 @@ def register_resource(graph: Graph, locator: str, *, name: Optional[str] = None,
|
|
|
3345
3345
|
Creates a ResourceNode carrying a new stable ID (a UUID unless ``resource_id`` is
|
|
3346
3346
|
given) and the ``locator`` as its current ``url``, and adds it to the graph.
|
|
3347
3347
|
This is the *identity + locator* half only — real ingest (copying bytes into
|
|
3348
|
-
an FS-index or
|
|
3348
|
+
an FS-index or S3 store) is R1/R2, which will resolve the same ID through
|
|
3349
3349
|
their backends. Returns ``{id, locator, kind}``."""
|
|
3350
3350
|
import uuid
|
|
3351
3351
|
from .resources import classify_locator
|
|
@@ -3371,37 +3371,38 @@ def scan_fs_resources(folder: str) -> List[Dict[str, Any]]:
|
|
|
3371
3371
|
return [e.to_dict() for e in backend.entries()]
|
|
3372
3372
|
|
|
3373
3373
|
|
|
3374
|
-
def
|
|
3375
|
-
|
|
3376
|
-
"""Ingest a file into the SHARED
|
|
3374
|
+
def ingest_s3_resource(path: str, *, resource_id: Optional[str] = None,
|
|
3375
|
+
config: Any = None) -> Dict[str, Any]:
|
|
3376
|
+
"""Ingest a file into the SHARED S3 store (R2) and return
|
|
3377
3377
|
``{id, object_key, s3_uri}``.
|
|
3378
3378
|
|
|
3379
3379
|
``resource_id`` (optional): reuse an EXISTING stable ID instead of minting a
|
|
3380
|
-
fresh one — this is how "promote to
|
|
3381
|
-
SAME id whether it lives on the file system or in
|
|
3380
|
+
fresh one — this is how "promote to the S3 store" keeps a resource's identity
|
|
3381
|
+
(the SAME id whether it lives on the file system or in the bucket — one ID
|
|
3382
|
+
space).
|
|
3382
3383
|
|
|
3383
3384
|
By default the connection is read from the ``S3_*`` environment (the SAME
|
|
3384
3385
|
vars Heriverse-Server uses → one shared object store); pass an explicit
|
|
3385
|
-
:class:`~s3dgraphy.resources.
|
|
3386
|
-
``
|
|
3386
|
+
:class:`~s3dgraphy.resources.S3Config` to override. Needs the optional
|
|
3387
|
+
``boto3`` SDK (``pip install s3dgraphy[s3]``) AND a reachable server —
|
|
3387
3388
|
raises :class:`MissingDependency` if the SDK is absent."""
|
|
3388
|
-
from .resources import
|
|
3389
|
-
cfg = config or
|
|
3390
|
-
backend =
|
|
3389
|
+
from .resources import S3Backend, S3Config
|
|
3390
|
+
cfg = config or S3Config.from_env()
|
|
3391
|
+
backend = S3Backend(cfg)
|
|
3391
3392
|
rid, key = backend.ingest(path, resource_id=resource_id)
|
|
3392
3393
|
return {"id": rid, "object_key": key, "s3_uri": f"s3://{cfg.bucket}/{key}"}
|
|
3393
3394
|
|
|
3394
3395
|
|
|
3395
|
-
def
|
|
3396
|
-
|
|
3397
|
-
"""Presign a shared-
|
|
3398
|
-
:func:`
|
|
3396
|
+
def presign_s3_resource(object_key: str, *, config: Any = None,
|
|
3397
|
+
expires_seconds: int = 3600) -> Dict[str, Any]:
|
|
3398
|
+
"""Presign a shared-S3 ``object_key`` (as returned by
|
|
3399
|
+
:func:`ingest_s3_resource`) into a short-lived fetchable
|
|
3399
3400
|
``{object_key, http_url}``. Stateless (presign by key, no manifest). Connection
|
|
3400
3401
|
from the ``S3_*`` env by default. Raises :class:`MissingDependency` without the
|
|
3401
|
-
``
|
|
3402
|
-
from .resources import
|
|
3403
|
-
cfg = config or
|
|
3404
|
-
loc =
|
|
3402
|
+
``boto3`` SDK."""
|
|
3403
|
+
from .resources import S3Backend, S3Config
|
|
3404
|
+
cfg = config or S3Config.from_env()
|
|
3405
|
+
loc = S3Backend(cfg).presign_key(object_key, expires_seconds=expires_seconds)
|
|
3405
3406
|
return {"object_key": object_key, "http_url": loc.value}
|
|
3406
3407
|
|
|
3407
3408
|
|
|
@@ -15,7 +15,7 @@ R0 establishes the SEAM only:
|
|
|
15
15
|
* A pluggable **backend registry** (:class:`ResolverRegistry`) with ONE
|
|
16
16
|
default backend, :class:`PassthroughBackend`, which resolves a resource to
|
|
17
17
|
its stored locator (the ResourceNode ``url``) — so existing graphs resolve
|
|
18
|
-
unchanged. Real storage backends (R1 FS-index, R2
|
|
18
|
+
unchanged. Real storage backends (R1 FS-index, R2 S3) plug in later by
|
|
19
19
|
registering ahead of the passthrough fallback.
|
|
20
20
|
|
|
21
21
|
No web framework, no network, no hardcoded EM vocab lists here. See
|
|
@@ -41,10 +41,10 @@ from .fs_backend import (
|
|
|
41
41
|
classify_resource_type,
|
|
42
42
|
em_id_of,
|
|
43
43
|
)
|
|
44
|
-
from .
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
from .s3_backend import (
|
|
45
|
+
S3Backend,
|
|
46
|
+
S3Config,
|
|
47
|
+
S3Entry,
|
|
48
48
|
)
|
|
49
49
|
|
|
50
50
|
__all__ = [
|
|
@@ -64,8 +64,8 @@ __all__ = [
|
|
|
64
64
|
"classify_resource_type",
|
|
65
65
|
"DOSCO_NODE_TYPES",
|
|
66
66
|
"em_id_of",
|
|
67
|
-
# R2 —
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
67
|
+
# R2 — S3 backend (optional 's3' extra: boto3)
|
|
68
|
+
"S3Backend",
|
|
69
|
+
"S3Config",
|
|
70
|
+
"S3Entry",
|
|
71
71
|
]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
la risorsa e la selezione*, «Più risorse per un documento»).
|
|
3
3
|
|
|
4
4
|
* **The same bytes — the same digest — are ONE resource with several
|
|
5
|
-
addresses**: the same PDF on the disk,
|
|
5
|
+
addresses**: the same PDF on the disk, in the S3 store, on Zenodo. It is redundancy:
|
|
6
6
|
if an address dies, the resource stays.
|
|
7
7
|
* **Different manifestations** (the scan and the online transcription, two
|
|
8
8
|
editions) are sister ResourceNodes, each with its digest — as before.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""The object store the Resource layer keeps its bucket in — any S3-compatible one.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
RustFS today, tomorrow another (Ceph, Garage, SeaweedFS, AWS S3, a cloud
|
|
4
4
|
provider's): what the rest of s3Dgraphy needs from a bucket is five small things,
|
|
5
5
|
and nothing here names a vendor.
|
|
6
6
|
|
|
@@ -12,9 +12,10 @@ and nothing here names a vendor.
|
|
|
12
12
|
multipart upload, not of the file);
|
|
13
13
|
* ``put(path, key)`` and ``delete(key)``.
|
|
14
14
|
|
|
15
|
-
:class:`S3Store` implements them over the S3 API through
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
:class:`S3Store` implements them over the S3 API through ``boto3`` — plain S3
|
|
16
|
+
operations (HeadBucket, CreateBucket, HeadObject, GetObject, PutObject,
|
|
17
|
+
DeleteObject), path-style, which any S3-compatible endpoint speaks. A store that
|
|
18
|
+
needs another client (a provider's SDK) is one more class with the same
|
|
18
19
|
five methods, registered with :func:`register_store`; the connection is read
|
|
19
20
|
from the ``S3_*`` environment (the SAME variables Heriverse-Server uses), and
|
|
20
21
|
``EM_OBJECT_STORE`` names which implementation opens it (default ``s3``).
|
|
@@ -29,10 +30,7 @@ import hashlib
|
|
|
29
30
|
import os
|
|
30
31
|
from typing import Any, Callable, Dict, Optional
|
|
31
32
|
|
|
32
|
-
from .
|
|
33
|
-
|
|
34
|
-
#: the errors an S3 server answers for «no such object»
|
|
35
|
-
_ABSENT = {"NoSuchKey", "NoSuchObject", "NotFound", "404"}
|
|
33
|
+
from .s3_backend import S3Config, ensure_bucket, is_not_found, make_client
|
|
36
34
|
|
|
37
35
|
|
|
38
36
|
class StoreError(RuntimeError):
|
|
@@ -56,7 +54,7 @@ class ObjectStore:
|
|
|
56
54
|
|
|
57
55
|
def key_for(self, resource_id: str, filename: str) -> str:
|
|
58
56
|
"""The key a resource's file is kept under: ``<prefix>/<id>/<filename>``
|
|
59
|
-
(the same layout ``
|
|
57
|
+
(the same layout ``S3Backend.ingest`` writes and Heriverse reads)."""
|
|
60
58
|
raise NotImplementedError
|
|
61
59
|
|
|
62
60
|
def stat(self, key: str) -> Optional[Dict[str, Any]]:
|
|
@@ -75,27 +73,24 @@ class ObjectStore:
|
|
|
75
73
|
|
|
76
74
|
|
|
77
75
|
class S3Store(ObjectStore):
|
|
78
|
-
"""Any S3-compatible endpoint, through
|
|
79
|
-
client with the same ``
|
|
80
|
-
``
|
|
76
|
+
"""Any S3-compatible endpoint, through a ``boto3`` S3 client (or an injected
|
|
77
|
+
client with the same ``head_object`` / ``get_object`` / ``upload_file`` /
|
|
78
|
+
``delete_object`` / ``head_bucket`` / ``create_bucket`` methods)."""
|
|
81
79
|
|
|
82
80
|
name = "s3"
|
|
83
81
|
|
|
84
|
-
def __init__(self, config: Optional[
|
|
85
|
-
self.config = config or
|
|
82
|
+
def __init__(self, config: Optional[S3Config] = None, client: Any = None):
|
|
83
|
+
self.config = config or S3Config.from_env()
|
|
86
84
|
self._client = client
|
|
87
85
|
|
|
88
86
|
def _get_client(self):
|
|
89
87
|
if self._client is None:
|
|
90
88
|
try:
|
|
91
|
-
|
|
89
|
+
self._client = make_client(self.config)
|
|
92
90
|
except ImportError as exc:
|
|
93
91
|
raise StoreUnavailable(
|
|
94
|
-
"the object store needs the '
|
|
95
|
-
f"S3-compatible server): pip install
|
|
96
|
-
c = self.config
|
|
97
|
-
self._client = Minio(c.endpoint, access_key=c.access_key,
|
|
98
|
-
secret_key=c.secret_key, secure=c.secure, region=c.region)
|
|
92
|
+
"the object store needs the 'boto3' SDK (it speaks to any "
|
|
93
|
+
f"S3-compatible server): pip install s3dgraphy[s3] ({exc})") from exc
|
|
99
94
|
return self._client
|
|
100
95
|
|
|
101
96
|
def locator(self, key: str) -> str:
|
|
@@ -111,61 +106,56 @@ class S3Store(ObjectStore):
|
|
|
111
106
|
|
|
112
107
|
def stat(self, key: str) -> Optional[Dict[str, Any]]:
|
|
113
108
|
try:
|
|
114
|
-
|
|
109
|
+
head = self._get_client().head_object(Bucket=self.config.bucket, Key=key)
|
|
115
110
|
except StoreError:
|
|
116
111
|
raise
|
|
117
|
-
except Exception as exc: # noqa: BLE001 —
|
|
118
|
-
if
|
|
112
|
+
except Exception as exc: # noqa: BLE001 — botocore's ClientError & co.
|
|
113
|
+
if is_not_found(exc):
|
|
119
114
|
return None
|
|
120
115
|
raise StoreError(f"{self.locator(key)}: {exc}") from exc
|
|
121
|
-
return {"size": int(
|
|
122
|
-
"etag": str(
|
|
116
|
+
return {"size": int(head.get("ContentLength") or 0),
|
|
117
|
+
"etag": str(head.get("ETag") or "").strip('"')}
|
|
123
118
|
|
|
124
119
|
def sha256(self, key: str) -> str:
|
|
125
120
|
client = self._get_client()
|
|
126
121
|
try:
|
|
127
|
-
|
|
122
|
+
body = client.get_object(Bucket=self.config.bucket, Key=key)["Body"]
|
|
128
123
|
except Exception as exc: # noqa: BLE001
|
|
129
124
|
raise StoreError(f"{self.locator(key)}: {exc}") from exc
|
|
130
125
|
h = hashlib.sha256()
|
|
131
126
|
try:
|
|
132
|
-
for chunk in
|
|
127
|
+
for chunk in iter(lambda: body.read(1 << 20), b""):
|
|
133
128
|
h.update(chunk)
|
|
134
129
|
finally:
|
|
135
|
-
|
|
136
|
-
fn = getattr(resp, closer, None)
|
|
137
|
-
if fn:
|
|
138
|
-
fn()
|
|
130
|
+
body.close() # a stream left open is a connection the pool loses
|
|
139
131
|
return h.hexdigest()
|
|
140
132
|
|
|
141
133
|
def put(self, path: str, key: str) -> None:
|
|
142
134
|
client = self._get_client()
|
|
143
135
|
try:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
client.fput_object(self.config.bucket, key, path)
|
|
136
|
+
ensure_bucket(client, self.config.bucket)
|
|
137
|
+
client.upload_file(path, self.config.bucket, key)
|
|
147
138
|
except Exception as exc: # noqa: BLE001
|
|
148
139
|
raise StoreError(f"{self.locator(key)}: {exc}") from exc
|
|
149
140
|
|
|
150
141
|
def delete(self, key: str) -> None:
|
|
151
142
|
try:
|
|
152
|
-
self._get_client().
|
|
143
|
+
self._get_client().delete_object(Bucket=self.config.bucket, Key=key)
|
|
153
144
|
except Exception as exc: # noqa: BLE001
|
|
154
145
|
raise StoreError(f"{self.locator(key)}: {exc}") from exc
|
|
155
146
|
|
|
156
147
|
|
|
157
|
-
_FACTORIES: Dict[str, Callable[[Optional[
|
|
148
|
+
_FACTORIES: Dict[str, Callable[[Optional[S3Config]], ObjectStore]] = {
|
|
158
149
|
"s3": lambda cfg: S3Store(cfg),
|
|
159
|
-
"minio": lambda cfg: S3Store(cfg), # the name it had
|
|
160
150
|
}
|
|
161
151
|
|
|
162
152
|
|
|
163
|
-
def register_store(name: str, factory: Callable[[Optional[
|
|
153
|
+
def register_store(name: str, factory: Callable[[Optional[S3Config]], ObjectStore]) -> None:
|
|
164
154
|
"""Plug in another implementation: ``factory(config) -> ObjectStore``."""
|
|
165
155
|
_FACTORIES[str(name).lower()] = factory
|
|
166
156
|
|
|
167
157
|
|
|
168
|
-
def open_store(name: Optional[str] = None, config: Optional[
|
|
158
|
+
def open_store(name: Optional[str] = None, config: Optional[S3Config] = None) -> ObjectStore:
|
|
169
159
|
"""The store the environment names (``EM_OBJECT_STORE``, default ``s3``),
|
|
170
160
|
connected as the ``S3_*`` variables say."""
|
|
171
161
|
chosen = str(name or os.environ.get("EM_OBJECT_STORE") or "s3").lower()
|
|
@@ -4,7 +4,7 @@ Pure Python, no web framework, no network. The resolver maps a **stable
|
|
|
4
4
|
resource ID** to a concrete :class:`Location`. Storage backends are pluggable
|
|
5
5
|
via :class:`ResolverRegistry`; R0 ships exactly one — :class:`PassthroughBackend`
|
|
6
6
|
— which classifies a resource's *current locator* (a ResourceNode ``url``) into a
|
|
7
|
-
Location without touching bytes. R1 (FS-index) and R2 (
|
|
7
|
+
Location without touching bytes. R1 (FS-index) and R2 (S3) will register
|
|
8
8
|
richer backends ahead of the passthrough fallback.
|
|
9
9
|
"""
|
|
10
10
|
|