s3dgraphy 1.6.0.dev111__tar.gz → 1.6.0.dev112__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.dev111/src/s3dgraphy.egg-info → s3dgraphy-1.6.0.dev112}/PKG-INFO +1 -1
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/pyproject.toml +1 -1
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/__init__.py +1 -1
- s3dgraphy-1.6.0.dev112/src/s3dgraphy/epoch_scope.py +513 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/alternatives.py +193 -42
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112/src/s3dgraphy.egg-info}/PKG-INFO +1 -1
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/SOURCES.txt +2 -0
- s3dgraphy-1.6.0.dev112/tests/test_epoch_scope.py +139 -0
- s3dgraphy-1.6.0.dev112/tests/test_spazio_container.py +92 -0
- s3dgraphy-1.6.0.dev111/tests/test_spazio_container.py +0 -52
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/LICENSE +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/MANIFEST.in +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/README.md +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/setup.cfg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_descriptor.schema.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/ercolano.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/fs.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/acquisition_mappings/uri.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/alternative_cases.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/datamodel_translations.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em.ttl +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_basemap_sources.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_document_types.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_extractor_types.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_palette_icons.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_qualia_types.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_qualia_types_additions.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_state_symbols.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/em_visual_rules.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/hdto_extension.ttl +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/new_qualia_template.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/node_registry.generated.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/outdated_s3dgraphy.ttl +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/outdated_s3dgraphy_nomapping.ttl +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_connections_datamodel.json.v155.bak +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/s3Dgraphy_node_datamodel.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/ActivityNodeGroup.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EMNarrative.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/EpochNode.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/ParadataNodeGroup.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/RSF.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/RSF.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE_old.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SE_old.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SF.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/SF.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/TSU.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/US.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/US.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USD.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USD.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVn.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVn.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVs.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/USVs.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/UTR.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/VSF.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/VSF.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author_ai.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/author_ai.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/UT.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/UT0.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/district.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/bozze/site.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/combiner.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/combiner.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/container.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/continuity.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/continuity.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/document.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/document.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/00_transformation.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/01_topographicnetwork.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/02_pointcloud.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/03_mesh.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/04_points.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/05_lines.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/06_polygons.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/07_DEM.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/08_ortophoto.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/09_photos.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/10_laserscanner.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_computer.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_drone.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_gnss.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_optical.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_scanner.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_sensor.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/11_device_station.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/12_gnss_survey.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/13_field_drawing.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/14_recording_sheet.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/15_decimation.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/16_georeferencing.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/17_format_conversion.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/18_classification.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/dtc/19_vectorization.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/embargo.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/embargo.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/extractor.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/extractor.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/gcp_set.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/generic_node.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/geo_position.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/graph.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/graph.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/hdt.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/heritage_entity.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/project.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/hdto/study.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/landscape_surface.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/license.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/license.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/link.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/narrative.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/narrative.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/play.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/property.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/property.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/proxy.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/registration_transform.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model_doc.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/representation_model_sf.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/resource_file.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/semantic_shape.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serSU.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serSU.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSD.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSV.png +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSVn.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/serUSVs.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/tileset.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_gltf.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_mesh.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_scene.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/2D/version_tiles.svg +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/RSF.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/SF.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/TSU.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/US.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USD.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USVn.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/USVs.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/VSF.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/combiner.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/continuity.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/document.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/extractor.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/property.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serSU.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serUSD.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/src/3D/serUSV.glb +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/version_for_cases.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/JSON_config/version_for_hardware_cases.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/__main__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/acquire.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/descriptor.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/acquisition/mapping.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/ai_validation.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/migrate_reading.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/paradata.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/annotation/reading.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/api.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/LICENSE +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/chronontology.jsonld +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/getty_aat.jsonld +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/getty_tgn.jsonld +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/periodo.jsonld +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/authorities/snapshots/provenance.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/classification.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/container.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/connector.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/consumer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/core.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/contract/reference.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/crdt.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/data/StratiMiner_Extraction_Prompt.md +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/datamodel.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/diagnostics.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dissemination.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/capture.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/corpus.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/devices.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/ingest.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/neighbourhood.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/dtc/residency.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/connection_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/connections_loader.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/edges/edge.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/editorial.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/docx_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/emjson_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/canvas_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/edge_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/epoch_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/graphml_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/graphml_patcher.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/group_node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/node_registry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/palette_resources.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_image_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/paradata_node_generators.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/table_node_generator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/graphml/utils.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/html_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/ipynb_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/json_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/latex_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/rdf_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/exporter/unified_xlsx_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/aton.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/frame.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/gltf.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/migrate.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/proxy.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/reading_glb.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/registration.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/store_backed.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/transform.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/geometry/wkt.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/contours.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/crs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/footprint.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geojson.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geopackage.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/geotiff.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/landscape.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/layer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/shapefile.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/site.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/spatialite.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/gis/wkb.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/graph.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/graph_removal.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/hdto.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/iiif.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/base_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/csv_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/emjson_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/fmpxml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/import_graphml.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/mapped_xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/metashape_chain.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/metashape_project.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/pyarchinit_footprints.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/pyarchinit_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/qualia_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/rdf_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/sheet_header.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/source_text.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/unified_xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/unit_numbers.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/xlsx_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/importer/xml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/indices.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/labels.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/landscape.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/language.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/links.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/authoring.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/generic_specialfind_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/site_properties_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/emdb/usm_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/generic/excel_to_graphml_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/pyarchinit/pyarchinit_us_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/registry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/source_list/em_sourcelist_it.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/source_list/source_list_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/template_emdb_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/mappings/template_pyarchinit_mapping.json +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/merge/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/merge/graph_merger.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/multigraph/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/multigraph/multigraph.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/bake.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/generation.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/query.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/registry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/narrative/site_story.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/annotation_region_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/author_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/base_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/combiner_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/document_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_acquisition_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_device_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/dtc_process_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/embargo_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/epoch_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/extractor_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/geo_position_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/georeferencing_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/graph_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/group_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/hdt_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/heritage_entity_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/landscape_surface_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/landscape_unit_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/license_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/narrative_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/paradata_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/periodization_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/project_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/property_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/representation_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/resource_file_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/resource_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/semantic_shape_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/stratigraphic_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/study_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/nodes/translation_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/ownership.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/paradata_view.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/periodization.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/photogrammetry/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/photogrammetry/delta.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/project_tree.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/property_source.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/publication.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/rapporti.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/builtin_rules.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resolvers/property_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/addresses.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/alignment.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/asset_list.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/blend_folder.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/blend_room.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/consolidate.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/detail.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/files.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/fs_backend.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/graph_compose.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/locate.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/master_stamp.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/moved.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/object_store.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/s3_backend.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/storage_rows.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/tiles3tz.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/tileset_fit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/use_profiles.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/resources/versions.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/rights.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/access.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/engine.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/errors.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/inventory.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/pack.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/room_import/trust.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/shelf/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/shelf/core.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/spatiotemporal.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/absorb.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/emit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/hints.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/stamp/identity.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/study.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_db_handle.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_legacy_paradata_svgs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/_workspace.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/conflict_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/edge_registry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graph_ingestor.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graph_projector.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/graphml_writer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/group_projector.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/group_store.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/ingest_result.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/paradata_store.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/pyarchinit_pg_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/rapporti.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/uuid7.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/vocab_provider_core.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/vocab_types.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_classifier.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_detector.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_group_walker.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_import_pipeline.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_rapporti_policy.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/sync/yed_table_parser.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/templates/em_data_template.xlsx +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/templates/em_palette_template.graphml +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/inference_engine.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/temporal/relative_chronology.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/consumer_drift.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/datamodel_i18n.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/deliverable_report.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/glyph_sheet.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/glyphs_from_svg.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/node_finder.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/ontology_html.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/sync_node_datamodel.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/tools/wheel_drift.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/aux_tracking.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/compact.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/transforms/materialize_continuity.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/translation.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/__init__.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/utils.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/utils/visual_layout.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy/zero_hour.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/dependency_links.txt +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/requires.txt +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/src/s3dgraphy.egg-info/top_level.txt +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_acquisition.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_acquisition_fs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_add_resource.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ai_validation_nodes.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternative_labels.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternative_sets.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_alternatives_hat.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_anastylosis_document_type.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_api_surface.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_dtc_protocol.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_list.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_asset_versions.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_assets_livelli.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_aton_shapes.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_attach_only.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_authority_projection.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_authority_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_folder.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_locator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_blend_room.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_bucket_alignment.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_canonical_document_rename.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_canvas_metadata_import.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_capture_acquisition.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_capture_rdf_class.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_chronology_on_request.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_cloud_placeholders.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_coating_unit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_composite_node_name.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_connection_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consolida_2.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consolidate_compose.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_consumer_drift.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_container.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_container_layouts.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_containment_tpq.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contemporaneity.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contract.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_contract_consumer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_convert_command.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_crdt.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_cycle_message_is_cheap.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datamodel_fingerprint.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datamodel_i18n.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_datum_operation.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_detail.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_deterministic_ids.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_em_sourcelist.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_file_set_stamp.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_graphml_without_a_database.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_image_set_texturing.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_not_georeferenced.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_one_act_n_outputs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev29_ttl_round_trip.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dev30_decisions.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_devices.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dissemination_tombstones.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dove_sta_il_testo.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_corpus.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_ingest.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_neighbourhood.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_projection.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_dtc_residency.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_edge_outside_graph.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_edge_ui_phrases.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_editorial.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_em_ttl_matches_the_datamodels.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_conformance.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_no_drawing_keys.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_emjson_schema_version.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_end_of_unit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_instances.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_properties_and_sub_epochs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_epoch_undated_import.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_explicit_node_type_marker.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_extracted_from_unit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_file_frame.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_filtered_import.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fit_affine_no_numpy.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fmpxml_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_foto_documenti.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_fs_backend.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_functional_units.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_georeference_scene.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gis_base.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gis_site.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_gltf_stitch.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_glyph_paths.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_header_code.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_helpers_indexed.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_indices_alive.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_indices_edges.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_removal.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_graph_scope_migration.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_glyphs.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_projection.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_hdto_study.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_header_key_aliases.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_i_generi_dei_passi.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_iiif.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_modo_d_accesso.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_modo_dal_relay.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_proprietario_si_legge.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_il_riallineamento.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_import_without_residues.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_importer_edge_hygiene.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_impronte_saggi_tagli.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ipynb_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_iri_extendedmatrix.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_issue27_small_points.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_alla_nascita.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_dei_dati.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_lingua_nell_op.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_la_riga_d_intestazione.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lab_orizzonti.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_landscape_ontology.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_latex_exporter.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_le_traduzioni.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lod_levels.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_lossless_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_mapping_authoring.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_mapping_csv_and_relations.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_masonry_unit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_material_color.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_merge_conflicts.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_metashape_project.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_migrate_legacy_proxy.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_authorship.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_bake_docx.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_figures.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_generation.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_mentions.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_query.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_scaffolder.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_site_place.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_narrative_unvalidated_export.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_datamodel_registry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_finder.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_node_type_map_integrity.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_one_resolver.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_one_spelling_writers.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ontology_html.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_op_vocabulary.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_part_twins.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_pg_importer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_photogrammetry_delta.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_physical_relation_spellings.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_piu_indirizzi.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_promote_keeps_proxy_type.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_promotion.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_property_as_source.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_property_owners.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_proxy_resource.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_proxy_retype.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_psx_locator.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_pyarchinit_tier2.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_qualia_dai_d7_d8.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_embedding.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_reverse_edges.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rdf_sub_epoch_direction.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_coords.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_glb.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_migration.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_place.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reading_rdf.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_recompute_warnings.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_registration.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_release.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reproject.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_file_node.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_files_implicit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_layer.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_representations.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_revision.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_resource_tier.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_reverse_edges.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_rm_container_node_group.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_access.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_inventory.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_room_import_trust.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_s3_backend.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_semantic_purity.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_series_vsf.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_facets.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_hatting.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shelf_role_uri_table.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_shipped_mappings.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_source_list_mapping.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_source_text.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_spatiotemporal_entities.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_special_find_definitions.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stable_study_code.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp_hints.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stamp_title_description.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_storage_rows.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_store_backed_geometry.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_stratiminer_api.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_study_metadata.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_threed_instances.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_threed_style.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_tileset_fit.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_tileset_resource.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_timbra_master.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_transform_form.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_ttl_roundtrip.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_unit_definition.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_unit_numbers.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_use_profiles.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_valore_proprieta_doppio.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_verifica_provenance.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_version_for.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_visual_assets.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_wheel_drift.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_containment_and_unknown_bounds.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_importer_graph_init.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/tests/test_xlsx_source_column.py +0 -0
- {s3dgraphy-1.6.0.dev111 → s3dgraphy-1.6.0.dev112}/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.dev112
|
|
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>
|
|
@@ -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.dev112"
|
|
8
8
|
description = "3D Stratigraphic Graph Management Library for archaeological and heritage applications"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
"""The epochs of anything, one rule (MICRO-TESTATE-COERENTI, E.D. 13 Nov 2026).
|
|
2
|
+
|
|
3
|
+
Three questions every client asks of the lanes, answered once here so the
|
|
4
|
+
Outliner, the scene, the counts and the table of EMStudio (and EM Tools) read
|
|
5
|
+
the same thing:
|
|
6
|
+
|
|
7
|
+
* **what is in an epoch** (:func:`epoch_presence`): what is BORN there
|
|
8
|
+
(``has_first_epoch``) and what SURVIVES there (``survive_in_epoch``) — «I
|
|
9
|
+
proxy di un'epoca sono quelli che nascono lì E quelli che ci sopravvivono»;
|
|
10
|
+
for a mother epoch the union of its sub-epochs (``has_sub_epoch``), so «XX
|
|
11
|
+
sec» gathers 2015, 2013 and Fine XX. The in-memory graph holds the derived
|
|
12
|
+
life of a unit as these very edges (the GraphML importer materialises the
|
|
13
|
+
continuity diamond as ``survive_in_epoch``, ``transforms.materialize_continuity``);
|
|
14
|
+
:meth:`Graph.chronology` gives years, not lanes, so it adds nothing here.
|
|
15
|
+
The models of an epoch are those an epoch reaches with
|
|
16
|
+
``has_representation_model``.
|
|
17
|
+
* **where a node is** (:func:`node_epochs`), by its ROAD to the lanes, read
|
|
18
|
+
from the connections datamodel: a unit, a document, a paradata or activity
|
|
19
|
+
group, an RMDoc or an RMSF go by ``has_first_epoch`` / ``survive_in_epoch``
|
|
20
|
+
(«lane»); an RM and an RM container are reached by an epoch with
|
|
21
|
+
``has_representation_model`` («rm»; an RM's old own ``has_first_epoch`` is
|
|
22
|
+
read too, and rewritten in the canonical form when moved).
|
|
23
|
+
* **move or extend a selection** (:func:`plan_epoch_move`,
|
|
24
|
+
:func:`move_to_epoch`): one command for any selection, mixed types
|
|
25
|
+
included; the plan says, for each node, from where to where and the edges
|
|
26
|
+
added and removed, the nodes the gesture does not apply to (with the
|
|
27
|
+
reason), and — for the stratigraphic units — the chronology warnings the
|
|
28
|
+
move would raise, BEFORE anything is written.
|
|
29
|
+
|
|
30
|
+
A container's epoch is the one it DECLARES (``container_own_epochs``: an
|
|
31
|
+
epoch reaching it, the Document publishing it): a member without an epoch
|
|
32
|
+
of its own follows it; a member with one lives there by its own choice
|
|
33
|
+
(E.D. 17:05, «come in EM Tools»). Moving a container moves its declared
|
|
34
|
+
epoch; its members with an epoch of their own are left where they are unless
|
|
35
|
+
``with_own`` asks to carry them too.
|
|
36
|
+
|
|
37
|
+
And :func:`convert_model_kind`: a model's kind (RM · RMDoc · RMSF) changed
|
|
38
|
+
with its edges, as the connections datamodel wants them for each class.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from __future__ import annotations
|
|
42
|
+
|
|
43
|
+
import copy
|
|
44
|
+
from typing import Any, Dict, List, Optional, Sequence
|
|
45
|
+
|
|
46
|
+
FIRST = "has_first_epoch"
|
|
47
|
+
SURVIVE = "survive_in_epoch"
|
|
48
|
+
RM_EDGE = "has_representation_model"
|
|
49
|
+
RMDOC_EDGE = "has_representation_model_doc"
|
|
50
|
+
RMSF_EDGE = "has_representation_model_sf"
|
|
51
|
+
SUB = "has_sub_epoch"
|
|
52
|
+
MEMBER = "is_in_representation_model_group"
|
|
53
|
+
GROUP = "RepresentationModelNodeGroup"
|
|
54
|
+
EPOCH = "EpochNode"
|
|
55
|
+
|
|
56
|
+
#: the three kinds of a model, by their node_type
|
|
57
|
+
MODEL_KINDS = {"RM": "representation_model", "RMDoc": "representation_model_doc",
|
|
58
|
+
"RMSF": "representation_model_sf"}
|
|
59
|
+
|
|
60
|
+
#: paradata that take the epoch of what they belong to: moved only when they
|
|
61
|
+
#: already carry an epoch of their own
|
|
62
|
+
_FOLLOWERS = ("extractor", "combiner", "property")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _node(graph, nid):
|
|
66
|
+
return graph.find_node_by_id(nid)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _nt(node) -> str:
|
|
70
|
+
return str(getattr(node, "node_type", "") or "")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _name(graph, nid) -> str:
|
|
74
|
+
n = _node(graph, nid)
|
|
75
|
+
return str(getattr(n, "name", "") or nid)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _is_epoch(graph, nid) -> bool:
|
|
79
|
+
return _nt(_node(graph, nid)) == EPOCH
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def epoch_family(graph, epoch_id: str) -> List[str]:
|
|
83
|
+
"""The epoch and its sub-epochs, deep (``has_sub_epoch``), the epoch first."""
|
|
84
|
+
out, todo = [], [epoch_id]
|
|
85
|
+
while todo:
|
|
86
|
+
cur = todo.pop(0)
|
|
87
|
+
if cur in out:
|
|
88
|
+
continue
|
|
89
|
+
out.append(cur)
|
|
90
|
+
todo.extend(e.edge_target for e in graph.edges
|
|
91
|
+
if e.edge_type == SUB and e.edge_source == cur and _is_epoch(graph, e.edge_target))
|
|
92
|
+
return out
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def epoch_presence(graph, epoch_id: str, *, family: bool = True) -> Dict[str, Any]:
|
|
96
|
+
"""What is in an epoch: ``{epoch, epochs, born, survive, models}``.
|
|
97
|
+
|
|
98
|
+
``born`` the nodes whose ``has_first_epoch`` is the epoch (or, with
|
|
99
|
+
``family``, one of its sub-epochs); ``survive`` the others that
|
|
100
|
+
``survive_in_epoch`` there, each ``{id, first}`` — ``first`` the epoch it
|
|
101
|
+
was born in, for «sopravvive da II A.D.»; ``models`` what an epoch of the
|
|
102
|
+
family reaches with ``has_representation_model`` (RMs and containers).
|
|
103
|
+
Any node type: the client keeps the units, the documents… it wants."""
|
|
104
|
+
if not _is_epoch(graph, epoch_id):
|
|
105
|
+
raise ValueError(f"{epoch_id!r} is not an epoch")
|
|
106
|
+
fam = epoch_family(graph, epoch_id) if family else [epoch_id]
|
|
107
|
+
inside = set(fam)
|
|
108
|
+
born, surv, models = [], [], []
|
|
109
|
+
firsts: Dict[str, str] = {}
|
|
110
|
+
for e in graph.edges:
|
|
111
|
+
if e.edge_type == FIRST and e.edge_source not in firsts:
|
|
112
|
+
firsts[e.edge_source] = e.edge_target
|
|
113
|
+
for e in graph.edges:
|
|
114
|
+
if e.edge_type == FIRST and e.edge_target in inside and e.edge_source not in born:
|
|
115
|
+
born.append(e.edge_source)
|
|
116
|
+
elif e.edge_type == RM_EDGE and e.edge_source in inside and e.edge_target not in models:
|
|
117
|
+
models.append(e.edge_target)
|
|
118
|
+
seen = set(born)
|
|
119
|
+
for e in graph.edges:
|
|
120
|
+
if e.edge_type == SURVIVE and e.edge_target in inside and e.edge_source not in seen:
|
|
121
|
+
seen.add(e.edge_source)
|
|
122
|
+
surv.append({"id": e.edge_source, "first": firsts.get(e.edge_source)})
|
|
123
|
+
return {"epoch": epoch_id, "epochs": fam, "born": born, "survive": surv, "models": models}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def epoch_road(graph, node_id: str) -> Optional[str]:
|
|
127
|
+
"""How a node reaches the lanes: ``"rm"`` (an epoch reaches it with
|
|
128
|
+
``has_representation_model``: an RM, an RM container), ``"lane"`` (it
|
|
129
|
+
points at the epoch with ``has_first_epoch`` / ``survive_in_epoch``), or
|
|
130
|
+
None (an epoch, or a node the datamodel puts in no lane)."""
|
|
131
|
+
from .edges.connection_resolver import connection_allowed
|
|
132
|
+
from .nodes.epoch_node import EpochNode
|
|
133
|
+
node = _node(graph, node_id)
|
|
134
|
+
if node is None or _nt(node) == EPOCH:
|
|
135
|
+
return None
|
|
136
|
+
if _nt(node) == GROUP or connection_allowed(EpochNode, node, RM_EDGE):
|
|
137
|
+
return "rm"
|
|
138
|
+
if connection_allowed(node, EpochNode, FIRST) or connection_allowed(node, EpochNode, SURVIVE):
|
|
139
|
+
return "lane"
|
|
140
|
+
return None
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def node_epochs(graph, node_id: str) -> Dict[str, Any]:
|
|
144
|
+
"""Where a node is: ``{road, first, epochs}`` — for a lane, ``first`` its
|
|
145
|
+
``has_first_epoch`` and ``epochs`` first + survived; for a model or a
|
|
146
|
+
container, the epochs reaching it (a container: those it DECLARES,
|
|
147
|
+
``container_own_epochs``); an RM's old own epoch edges are read too."""
|
|
148
|
+
road = epoch_road(graph, node_id)
|
|
149
|
+
first: List[str] = []
|
|
150
|
+
rest: List[str] = []
|
|
151
|
+
for e in graph.edges:
|
|
152
|
+
if road == "rm" and e.edge_type == RM_EDGE and e.edge_target == node_id and _is_epoch(graph, e.edge_source):
|
|
153
|
+
rest.append(e.edge_source)
|
|
154
|
+
elif e.edge_source == node_id and e.edge_type == FIRST and _is_epoch(graph, e.edge_target):
|
|
155
|
+
first.append(e.edge_target)
|
|
156
|
+
elif e.edge_source == node_id and e.edge_type == SURVIVE and _is_epoch(graph, e.edge_target):
|
|
157
|
+
rest.append(e.edge_target)
|
|
158
|
+
if road == "rm" and _nt(_node(graph, node_id)) == GROUP:
|
|
159
|
+
from .resources.alternatives import container_own_epochs
|
|
160
|
+
rest = container_own_epochs(graph, node_id)
|
|
161
|
+
first = []
|
|
162
|
+
epochs = list(dict.fromkeys(first + rest))
|
|
163
|
+
return {"road": road, "first": first[0] if first else (epochs[0] if road == "rm" and epochs else None),
|
|
164
|
+
"epochs": epochs}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _starts(graph) -> Dict[str, float]:
|
|
168
|
+
try:
|
|
169
|
+
iv = graph.epoch_intervals()
|
|
170
|
+
except Exception: # noqa: BLE001 — a graph without dated epochs
|
|
171
|
+
iv = {}
|
|
172
|
+
out = {}
|
|
173
|
+
for n in graph.nodes:
|
|
174
|
+
if _nt(n) != EPOCH:
|
|
175
|
+
continue
|
|
176
|
+
v = (iv.get(n.node_id) or {}).get("start")
|
|
177
|
+
if v is None:
|
|
178
|
+
v = getattr(n, "start_time", None)
|
|
179
|
+
try:
|
|
180
|
+
out[n.node_id] = float(v)
|
|
181
|
+
except (TypeError, ValueError):
|
|
182
|
+
pass
|
|
183
|
+
return out
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def _edge(src: str, tgt: str, et: str) -> Dict[str, str]:
|
|
187
|
+
return {"source": src, "target": tgt, "edge_type": et}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _members(graph, group_id: str) -> List[str]:
|
|
191
|
+
from .resources.alternatives import members_of
|
|
192
|
+
return members_of(graph, group_id, deep=True)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def _plan_one(graph, nid: str, target: str, mode: str, starts: Dict[str, float]) -> Dict[str, Any]:
|
|
196
|
+
"""One node's move: ``{id, name, node_type, road, from, to, add, remove}``
|
|
197
|
+
or ``{…, excluded: reason}``."""
|
|
198
|
+
node = _node(graph, nid)
|
|
199
|
+
rec: Dict[str, Any] = {"id": nid, "name": _name(graph, nid), "node_type": _nt(node)}
|
|
200
|
+
if node is None:
|
|
201
|
+
return {**rec, "excluded": "unknown"}
|
|
202
|
+
if _nt(node) == EPOCH:
|
|
203
|
+
return {**rec, "excluded": "epoch"}
|
|
204
|
+
road = epoch_road(graph, nid)
|
|
205
|
+
here = node_epochs(graph, nid)
|
|
206
|
+
if road is None:
|
|
207
|
+
return {**rec, "excluded": "no-lane"}
|
|
208
|
+
if _nt(node) in _FOLLOWERS and not here["epochs"]:
|
|
209
|
+
return {**rec, "excluded": "follows"}
|
|
210
|
+
rec["road"] = road
|
|
211
|
+
rec["from"] = list(here["epochs"])
|
|
212
|
+
add, rem = [], []
|
|
213
|
+
if road == "rm":
|
|
214
|
+
# the epochs reaching it; an RM's old own edges are rewritten canonical
|
|
215
|
+
own_old = [e for e in graph.edges if e.edge_source == nid and e.edge_type in (FIRST, SURVIVE)
|
|
216
|
+
and _is_epoch(graph, e.edge_target)]
|
|
217
|
+
reaching = [e for e in graph.edges if e.edge_target == nid and e.edge_type == RM_EDGE
|
|
218
|
+
and _is_epoch(graph, e.edge_source)]
|
|
219
|
+
if mode == "move":
|
|
220
|
+
if [e.edge_source for e in reaching] == [target] and not own_old:
|
|
221
|
+
return {**rec, "excluded": "already"}
|
|
222
|
+
rem += [_edge(e.edge_source, nid, RM_EDGE) for e in reaching if e.edge_source != target]
|
|
223
|
+
rem += [_edge(nid, e.edge_target, e.edge_type) for e in own_old]
|
|
224
|
+
if target not in [e.edge_source for e in reaching]:
|
|
225
|
+
add.append(_edge(target, nid, RM_EDGE))
|
|
226
|
+
rec["to"] = [target]
|
|
227
|
+
else:
|
|
228
|
+
if target in here["epochs"]:
|
|
229
|
+
return {**rec, "excluded": "already"}
|
|
230
|
+
add.append(_edge(target, nid, RM_EDGE))
|
|
231
|
+
rec["to"] = here["epochs"] + [target]
|
|
232
|
+
else:
|
|
233
|
+
firsts = [e.edge_target for e in graph.edges if e.edge_source == nid and e.edge_type == FIRST]
|
|
234
|
+
survs = [e.edge_target for e in graph.edges if e.edge_source == nid and e.edge_type == SURVIVE]
|
|
235
|
+
if mode == "move":
|
|
236
|
+
if firsts == [target]:
|
|
237
|
+
return {**rec, "excluded": "already"}
|
|
238
|
+
rem += [_edge(nid, f, FIRST) for f in firsts]
|
|
239
|
+
add.append(_edge(nid, target, FIRST))
|
|
240
|
+
t0 = starts.get(target)
|
|
241
|
+
keep = []
|
|
242
|
+
for s in survs:
|
|
243
|
+
# the epoch becomes the first; one that begins before the new
|
|
244
|
+
# first would be a survival before the birth
|
|
245
|
+
if s == target or (t0 is not None and starts.get(s) is not None and starts[s] < t0):
|
|
246
|
+
rem.append(_edge(nid, s, SURVIVE))
|
|
247
|
+
else:
|
|
248
|
+
keep.append(s)
|
|
249
|
+
rec["to"] = [target] + keep
|
|
250
|
+
else:
|
|
251
|
+
if target in firsts or target in survs:
|
|
252
|
+
return {**rec, "excluded": "already"}
|
|
253
|
+
add.append(_edge(nid, target, SURVIVE))
|
|
254
|
+
rec["to"] = list(dict.fromkeys(firsts + survs + [target]))
|
|
255
|
+
rec["add"], rec["remove"] = add, rem
|
|
256
|
+
return rec
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def _apply(graph, add: Sequence[Dict[str, str]], remove: Sequence[Dict[str, str]]) -> None:
|
|
260
|
+
gone = {(r["source"], r["target"], r["edge_type"]) for r in remove}
|
|
261
|
+
for e in list(graph.edges):
|
|
262
|
+
if (e.edge_source, e.edge_target, e.edge_type) in gone:
|
|
263
|
+
graph.remove_edge(e.edge_id)
|
|
264
|
+
have = {(e.edge_source, e.edge_target, e.edge_type) for e in graph.edges}
|
|
265
|
+
for a in add:
|
|
266
|
+
k = (a["source"], a["target"], a["edge_type"])
|
|
267
|
+
if k in have:
|
|
268
|
+
continue
|
|
269
|
+
eid = f"{a['source']}_{a['edge_type']}_{a['target']}"
|
|
270
|
+
while graph.find_edge_by_id(eid) is not None:
|
|
271
|
+
eid += "_"
|
|
272
|
+
graph.add_edge(eid, a["source"], a["target"], a["edge_type"])
|
|
273
|
+
have.add(k)
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def _chronology_warnings(graph, moved_units: Sequence[str], add, remove) -> List[Dict[str, Any]]:
|
|
277
|
+
"""What the move would break, said before it is done: a unit that is
|
|
278
|
+
AFTER another (``is_after``: it lies above, it is more recent) and would
|
|
279
|
+
begin in an older epoch than it, or the other way round; and the
|
|
280
|
+
chronology paradoxes :meth:`Graph.chronology` raises that it did not raise
|
|
281
|
+
before. Computed on a copy."""
|
|
282
|
+
if not moved_units:
|
|
283
|
+
return []
|
|
284
|
+
probe = copy.deepcopy(graph)
|
|
285
|
+
before: List[str] = []
|
|
286
|
+
try:
|
|
287
|
+
probe.chronology(warnings=before)
|
|
288
|
+
except Exception: # noqa: BLE001
|
|
289
|
+
before = []
|
|
290
|
+
_apply(probe, add, remove)
|
|
291
|
+
starts = _starts(probe)
|
|
292
|
+
|
|
293
|
+
def first_start(uid):
|
|
294
|
+
fs = [starts.get(e.edge_target) for e in probe.edges if e.edge_source == uid and e.edge_type == FIRST]
|
|
295
|
+
fs = [x for x in fs if x is not None]
|
|
296
|
+
return min(fs) if fs else None
|
|
297
|
+
|
|
298
|
+
out = []
|
|
299
|
+
moved = set(moved_units)
|
|
300
|
+
seen = set()
|
|
301
|
+
for e in probe.edges:
|
|
302
|
+
if e.edge_type != "is_after" or not (e.edge_source in moved or e.edge_target in moved):
|
|
303
|
+
continue
|
|
304
|
+
if (e.edge_source, e.edge_target) in seen:
|
|
305
|
+
continue
|
|
306
|
+
seen.add((e.edge_source, e.edge_target))
|
|
307
|
+
a, b = first_start(e.edge_source), first_start(e.edge_target)
|
|
308
|
+
if a is not None and b is not None and a < b:
|
|
309
|
+
out.append({"code": "after-in-older-epoch", "id": e.edge_source, "other": e.edge_target,
|
|
310
|
+
"text": f"{_name(probe, e.edge_source)} is after {_name(probe, e.edge_target)} "
|
|
311
|
+
f"but would begin in an older epoch"})
|
|
312
|
+
after: List[str] = []
|
|
313
|
+
try:
|
|
314
|
+
probe.chronology(warnings=after)
|
|
315
|
+
except Exception: # noqa: BLE001
|
|
316
|
+
after = []
|
|
317
|
+
for w in after:
|
|
318
|
+
if w not in before:
|
|
319
|
+
out.append({"code": "chronology", "text": str(w)})
|
|
320
|
+
return out
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
def plan_epoch_move(graph, ids: Sequence[str], epoch_id: str, *, mode: str = "move",
|
|
324
|
+
with_own: bool = False) -> Dict[str, Any]:
|
|
325
|
+
"""«Sposta in epoca…» / «Estendi a epoca…» for a SELECTION (any types,
|
|
326
|
+
mixed). A view: nothing is written.
|
|
327
|
+
|
|
328
|
+
→ ``{epoch, mode, items, excluded, counts, following, own_choice,
|
|
329
|
+
warnings, add, remove}``: ``items`` the nodes that change (``from``,
|
|
330
|
+
``to``, their edges); ``excluded`` ``{id, name, node_type, reason}`` —
|
|
331
|
+
``epoch`` (an epoch is not moved into an epoch: it is a phase by
|
|
332
|
+
``has_sub_epoch``), ``no-lane`` (the datamodel puts it in no lane),
|
|
333
|
+
``follows`` (an extractor, a combiner, a property without an epoch of its
|
|
334
|
+
own: it follows its document or unit), ``already``, ``unknown``;
|
|
335
|
+
``counts`` by node_type; for a container ``following`` its members
|
|
336
|
+
without an epoch (they follow it, nothing to write) and ``own_choice``
|
|
337
|
+
those with one (left where they are unless ``with_own``); ``warnings``
|
|
338
|
+
the chronology the move would break (:func:`_chronology_warnings`);
|
|
339
|
+
``add`` / ``remove`` every edge, ``{source, target, edge_type}``, for a
|
|
340
|
+
client that writes the plan in its own document in one step."""
|
|
341
|
+
if mode not in ("move", "extend"):
|
|
342
|
+
raise ValueError(f"unknown mode {mode!r}: move | extend")
|
|
343
|
+
if not _is_epoch(graph, epoch_id):
|
|
344
|
+
raise ValueError(f"{epoch_id!r} is not an epoch")
|
|
345
|
+
starts = _starts(graph)
|
|
346
|
+
items, excluded, following, own_choice = [], [], [], []
|
|
347
|
+
todo = list(dict.fromkeys(str(i) for i in ids if i))
|
|
348
|
+
done = set()
|
|
349
|
+
extra: List[str] = []
|
|
350
|
+
for nid in todo:
|
|
351
|
+
if _nt(_node(graph, nid)) == GROUP:
|
|
352
|
+
for m in _members(graph, nid):
|
|
353
|
+
if m in todo or m in extra:
|
|
354
|
+
continue
|
|
355
|
+
if node_epochs(graph, m)["epochs"]:
|
|
356
|
+
own_choice.append(m)
|
|
357
|
+
if with_own:
|
|
358
|
+
extra.append(m)
|
|
359
|
+
else:
|
|
360
|
+
following.append(m)
|
|
361
|
+
for nid in todo + extra:
|
|
362
|
+
if nid in done:
|
|
363
|
+
continue
|
|
364
|
+
done.add(nid)
|
|
365
|
+
rec = _plan_one(graph, nid, epoch_id, mode, starts)
|
|
366
|
+
if "excluded" in rec:
|
|
367
|
+
excluded.append({"id": rec["id"], "name": rec["name"], "node_type": rec["node_type"],
|
|
368
|
+
"reason": rec["excluded"]})
|
|
369
|
+
else:
|
|
370
|
+
items.append(rec)
|
|
371
|
+
add = [a for r in items for a in r["add"]]
|
|
372
|
+
remove = [x for r in items for x in r["remove"]]
|
|
373
|
+
from .nodes.stratigraphic_node import StratigraphicNode
|
|
374
|
+
units = [r["id"] for r in items if isinstance(_node(graph, r["id"]), StratigraphicNode)]
|
|
375
|
+
counts: Dict[str, int] = {}
|
|
376
|
+
for r in items:
|
|
377
|
+
counts[r["node_type"]] = counts.get(r["node_type"], 0) + 1
|
|
378
|
+
return {"epoch": epoch_id, "mode": mode, "with_own": with_own, "items": items, "excluded": excluded,
|
|
379
|
+
"counts": counts, "following": following, "own_choice": own_choice,
|
|
380
|
+
"warnings": _chronology_warnings(graph, units, add, remove), "add": add, "remove": remove}
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def move_to_epoch(graph, ids: Sequence[str], epoch_id: str, *, mode: str = "move",
|
|
384
|
+
with_own: bool = False, dry_run: bool = False) -> Dict[str, Any]:
|
|
385
|
+
""":func:`plan_epoch_move`, then written unless ``dry_run``."""
|
|
386
|
+
plan = plan_epoch_move(graph, ids, epoch_id, mode=mode, with_own=with_own)
|
|
387
|
+
if not dry_run:
|
|
388
|
+
_apply(graph, plan["add"], plan["remove"])
|
|
389
|
+
plan["dry_run"] = dry_run
|
|
390
|
+
return plan
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
# ── a model's kind: RM · RMDoc · RMSF ────────────────────────────────────────
|
|
394
|
+
|
|
395
|
+
def _cls_of(node_type: str):
|
|
396
|
+
from .nodes.base_node import Node
|
|
397
|
+
return Node.node_type_map.get(node_type)
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
def plan_model_kind(graph, rm_id: str, kind: str, *, document_id: Optional[str] = None,
|
|
401
|
+
unit_id: Optional[str] = None) -> Dict[str, Any]:
|
|
402
|
+
"""What changing a model's kind writes (a view). ``kind`` RM | RMDoc | RMSF.
|
|
403
|
+
|
|
404
|
+
The datamodel's criteria (node datamodel 1.6.44, scope_note): an RM when
|
|
405
|
+
the position is a datum of the object (in situ); an RMDoc for a movable
|
|
406
|
+
DOCUMENT placed by an act; an RMSF for a find moved and placed again.
|
|
407
|
+
The edges follow the connections datamodel for each class:
|
|
408
|
+
|
|
409
|
+
* who publishes it: a Document → ``has_representation_model`` (RM) or
|
|
410
|
+
``has_representation_model_doc`` (RMDoc, RMSF);
|
|
411
|
+
* whom it represents: a unit → ``has_representation_model`` (RM), a
|
|
412
|
+
special find → ``has_representation_model_sf`` (RMSF); an RMDoc
|
|
413
|
+
represents no unit (such an edge is dropped and said);
|
|
414
|
+
* its epochs: an epoch → ``has_representation_model`` → RM; an RMDoc or an
|
|
415
|
+
RMSF ``has_first_epoch`` (the first) / ``survive_in_epoch`` (the rest).
|
|
416
|
+
|
|
417
|
+
Its files, its containers, its transform stay. An RMDoc needs a document
|
|
418
|
+
(``document_id`` or one already publishing it), an RMSF a special find
|
|
419
|
+
(``unit_id`` or one already linked): without, ``needs`` says which.
|
|
420
|
+
→ ``{id, name, from, to, add, remove, dropped, needs}``."""
|
|
421
|
+
from .edges.connection_resolver import connection_allowed
|
|
422
|
+
node = _node(graph, rm_id)
|
|
423
|
+
if node is None or _nt(node) not in MODEL_KINDS.values():
|
|
424
|
+
raise ValueError(f"{rm_id!r} is not a model (RM, RMDoc, RMSF)")
|
|
425
|
+
if kind not in MODEL_KINDS:
|
|
426
|
+
raise ValueError(f"unknown kind {kind!r}: RM | RMDoc | RMSF")
|
|
427
|
+
to_nt = MODEL_KINDS[kind]
|
|
428
|
+
cls = _cls_of(to_nt)
|
|
429
|
+
rec: Dict[str, Any] = {"id": rm_id, "name": _name(graph, rm_id), "from": _nt(node), "to": to_nt,
|
|
430
|
+
"add": [], "remove": [], "dropped": [], "needs": None}
|
|
431
|
+
if to_nt == _nt(node):
|
|
432
|
+
return rec
|
|
433
|
+
here = node_epochs(graph, rm_id)["epochs"]
|
|
434
|
+
docs, units = [], []
|
|
435
|
+
for e in graph.edges:
|
|
436
|
+
if e.edge_target != rm_id or e.edge_type not in (RM_EDGE, RMDOC_EDGE, RMSF_EDGE):
|
|
437
|
+
continue
|
|
438
|
+
src = _node(graph, e.edge_source)
|
|
439
|
+
if _nt(src) == EPOCH:
|
|
440
|
+
rec["remove"].append(_edge(e.edge_source, rm_id, e.edge_type))
|
|
441
|
+
elif _nt(src) == "document":
|
|
442
|
+
docs.append(e.edge_source)
|
|
443
|
+
rec["remove"].append(_edge(e.edge_source, rm_id, e.edge_type))
|
|
444
|
+
else:
|
|
445
|
+
units.append(e.edge_source)
|
|
446
|
+
rec["remove"].append(_edge(e.edge_source, rm_id, e.edge_type))
|
|
447
|
+
for e in graph.edges:
|
|
448
|
+
if e.edge_source == rm_id and e.edge_type in (FIRST, SURVIVE):
|
|
449
|
+
rec["remove"].append(_edge(rm_id, e.edge_target, e.edge_type))
|
|
450
|
+
if document_id and document_id not in docs:
|
|
451
|
+
docs.append(document_id)
|
|
452
|
+
if unit_id and unit_id not in units:
|
|
453
|
+
units.append(unit_id)
|
|
454
|
+
if kind == "RMDoc" and not docs:
|
|
455
|
+
rec["needs"] = "document"
|
|
456
|
+
if kind == "RMSF" and not any(connection_allowed(_node(graph, u), cls, RMSF_EDGE) for u in units):
|
|
457
|
+
rec["needs"] = "unit"
|
|
458
|
+
# the new edges, each checked against the datamodel for the new class
|
|
459
|
+
for d in docs:
|
|
460
|
+
et = RM_EDGE if kind == "RM" else RMDOC_EDGE
|
|
461
|
+
if connection_allowed(_node(graph, d), cls, et):
|
|
462
|
+
rec["add"].append(_edge(d, rm_id, et))
|
|
463
|
+
else:
|
|
464
|
+
rec["dropped"].append({"edge": _edge(d, rm_id, et), "reason": "not-allowed"})
|
|
465
|
+
for u in units:
|
|
466
|
+
et = RM_EDGE if kind == "RM" else RMSF_EDGE
|
|
467
|
+
if kind == "RMDoc":
|
|
468
|
+
rec["dropped"].append({"edge": _edge(u, rm_id, RM_EDGE), "reason": "rmdoc-represents-no-unit"})
|
|
469
|
+
elif connection_allowed(_node(graph, u), cls, et):
|
|
470
|
+
rec["add"].append(_edge(u, rm_id, et))
|
|
471
|
+
else:
|
|
472
|
+
rec["dropped"].append({"edge": _edge(u, rm_id, et), "reason": "not-allowed"})
|
|
473
|
+
from .nodes.epoch_node import EpochNode
|
|
474
|
+
for i, ep in enumerate(here):
|
|
475
|
+
if kind == "RM":
|
|
476
|
+
rec["add"].append(_edge(ep, rm_id, RM_EDGE))
|
|
477
|
+
else:
|
|
478
|
+
et = FIRST if i == 0 else SURVIVE
|
|
479
|
+
if connection_allowed(cls, EpochNode, et):
|
|
480
|
+
rec["add"].append(_edge(rm_id, ep, et))
|
|
481
|
+
# an edge both removed and added again is no change
|
|
482
|
+
keys = {(a["source"], a["target"], a["edge_type"]) for a in rec["add"]}
|
|
483
|
+
rec["remove"] = [r for r in rec["remove"] if (r["source"], r["target"], r["edge_type"]) not in keys]
|
|
484
|
+
olds = {(r["source"], r["target"], r["edge_type"]) for r in rec["remove"]}
|
|
485
|
+
have = {(e.edge_source, e.edge_target, e.edge_type) for e in graph.edges}
|
|
486
|
+
rec["add"] = [a for a in rec["add"] if (a["source"], a["target"], a["edge_type"]) not in have
|
|
487
|
+
or (a["source"], a["target"], a["edge_type"]) in olds]
|
|
488
|
+
return rec
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
def convert_model_kind(graph, rm_id: str, kind: str, *, document_id: Optional[str] = None,
|
|
492
|
+
unit_id: Optional[str] = None, dry_run: bool = False) -> Dict[str, Any]:
|
|
493
|
+
""":func:`plan_model_kind`, then written unless ``dry_run`` (refused when
|
|
494
|
+
the plan ``needs`` a document or a unit). The node keeps its id, name,
|
|
495
|
+
data and description; its class becomes the new kind's."""
|
|
496
|
+
plan = plan_model_kind(graph, rm_id, kind, document_id=document_id, unit_id=unit_id)
|
|
497
|
+
plan["dry_run"] = dry_run
|
|
498
|
+
if dry_run or plan["from"] == plan["to"]:
|
|
499
|
+
return plan
|
|
500
|
+
if plan["needs"]:
|
|
501
|
+
raise ValueError(f"an {kind} needs a {plan['needs']}")
|
|
502
|
+
old = _node(graph, rm_id)
|
|
503
|
+
cls = _cls_of(plan["to"])
|
|
504
|
+
new = cls.__new__(cls)
|
|
505
|
+
new.__dict__.update(old.__dict__)
|
|
506
|
+
if "node_type" in new.__dict__:
|
|
507
|
+
new.__dict__["node_type"] = plan["to"]
|
|
508
|
+
nodes = list(graph.nodes)
|
|
509
|
+
nodes[nodes.index(old)] = new
|
|
510
|
+
graph.nodes = nodes
|
|
511
|
+
graph.invalidate_indices()
|
|
512
|
+
_apply(graph, plan["add"], plan["remove"])
|
|
513
|
+
return plan
|